diff --git a/.env b/.env index b1bbd9f67..5b4ee9aa0 100644 --- a/.env +++ b/.env @@ -1,7 +1,7 @@ #PORT NUMBERS: If any of these ports are already in use by a different app, please pick a new number between 1 and 50000. -WEB_SERVER_PORT=34247 -WEB_SOCKETS_SERVER_PORT=8080 +WEB_SERVER_PORT=34248 +WEB_SOCKETS_SERVER_PORT=8081 # TASK MANAGER VARIABLES: @@ -13,9 +13,14 @@ TASK_SERVER_PATH=./TaskServer INTER_PROCESS_FILES_PATH=./Inter-Process-Files STORAGE_PATH=./Data-Storage PLOTTERS_PATH=./Legacy-Code -DATA_MINES_PATH=./Data-Mines -TRADING_SYSTEMS_PATH=./Trading-Systems -SUPER_SCRIPTS_PATH=./Super-Scripts + +DATA_MINES_PATH=./Includes/Data-Mines +TRADING_MINES_PATH=./Includes/Trading-Mines +TRADING_SYSTEMS_PATH=./Includes/Trading-Systems +SUPER_SCRIPTS_PATH=./Includes/Super-Scripts +TRADING_ENGINES_PATH=./Includes/Trading-Engines +TUTORIALS_PATH=./Includes/Tutorials +WORKSPACES_PATH=./Includes/Workspaces WRITE_LOGS_TO_FILES=true BOTS_PATH=./Legacy-Code @@ -34,5 +39,8 @@ PATH_TO_FILES_COMPONENT=./Files-Component/src PATH_TO_WEB_SERVER=./BackendServers/ APP_SCHEMA_PATH=./ -WORKSPACE_PATH=./ -MY_WORKSPACES_PATH=./My-Workspaces \ No newline at end of file +DOC_SCHEMA_PATH=./ +CONCEPT_SCHEMA_PATH=./ +DEFAULT_WORKSPACE_PATH=./Includes/Workspaces +MY_WORKSPACES_PATH=./My-Workspaces +PATH_TO_FONTS=./BackendServers/WebServer/Fonts \ No newline at end of file diff --git a/.gitignore b/.gitignore index fc4a02769..b6723d2d5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ Data-Storage -Log-Files \ No newline at end of file +Log-Files +My-Workspaces \ No newline at end of file diff --git a/AppSchema.json b/AppSchema.json index 6b8ec9ff6..e8358efc1 100644 --- a/AppSchema.json +++ b/AppSchema.json @@ -1,7 +1,6 @@ [ { "type": "Plotter Module", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#plotter-module", "properties": [ { "name": "javascriptCode", @@ -19,15 +18,75 @@ "type": "array", "childType": "Plotter Panel", "autoAdd": true + }, + { + "name": "nodesValues", + "type": "node", + "childType": "Nodes Values", + "autoAdd": false + }, + { + "name": "nodesHighlights", + "type": "node", + "childType": "Nodes Highlights", + "autoAdd": false + }, + { + "name": "nodesErrors", + "type": "node", + "childType": "Nodes Errors", + "autoAdd": false + }, + { + "name": "nodesWarnings", + "type": "node", + "childType": "Nodes Warnings", + "autoAdd": false + }, + { + "name": "nodesInfos", + "type": "node", + "childType": "Nodes Infos", + "autoAdd": false + }, + { + "name": "nodesStatus", + "type": "node", + "childType": "Nodes Status", + "autoAdd": false + }, + { + "name": "nodesProgress", + "type": "node", + "childType": "Nodes Progress", + "autoAdd": false + }, + { + "name": "nodesRunning", + "type": "node", + "childType": "Nodes Running", + "autoAdd": false + }, + { + "name": "nodesAnnouncements", + "type": "node", + "childType": "Nodes Announcements", + "autoAdd": false + }, + { + "name": "recordValues", + "type": "node", + "childType": "Record Values", + "autoAdd": false } ], "menuItems": [ { - "action": "Config Plotter Module", + "action": "Configure", "actionFunction": "uiObject.configEditor.activate", - "label": "Config Plotter Module", - "iconPathOn": "html", - "iconPathOff": "html" + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" }, { "action": "Add UI Object", @@ -51,12 +110,18 @@ "label": "Add Plotter Panel", "relatedUiObject": "Plotter Panel" }, + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", "actionFunction": "payload.onMenuItemClick", - "label": "Delete Plotter Panel", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete" } @@ -64,7 +129,7 @@ "isTitleAllwaysVisible": true, "addLeftIcons": true, "initialValues": { - "code": "{ \n\"codeName\": \"\"\n}" + "config": "{ \n \"codeName\": \"Module-Name\", \n \"icon\": \"histogram|band|moving-average|oscillator|trend\"\n}" }, "editors": { "config": true @@ -73,13 +138,220 @@ "chainAttachesTo": { "compatibleTypes": "->Plotter->" }, - "icon": "plotter-module", "propertyNameAtParent": "modules" }, + { + "type": "Nodes Values", + "menuItems": [ + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.onMenuItemClick", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Plotter Module->" + }, + "icon": "expand", + "propertyNameAtParent": "nodesValues" + }, + { + "type": "Nodes Highlights", + "menuItems": [ + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.onMenuItemClick", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Plotter Module->" + }, + "icon": "expand", + "propertyNameAtParent": "nodesHighlights" + }, + { + "type": "Nodes Errors", + "menuItems": [ + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.onMenuItemClick", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Plotter Module->" + }, + "icon": "expand", + "propertyNameAtParent": "nodesErrors" + }, + { + "type": "Nodes Warnings", + "menuItems": [ + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.onMenuItemClick", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Plotter Module->" + }, + "icon": "expand", + "propertyNameAtParent": "nodesWarnings" + }, + { + "type": "Nodes Infos", + "menuItems": [ + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.onMenuItemClick", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Plotter Module->" + }, + "icon": "expand", + "propertyNameAtParent": "nodesInfos" + }, + { + "type": "Nodes Status", + "menuItems": [ + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.onMenuItemClick", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Plotter Module->" + }, + "icon": "expand", + "propertyNameAtParent": "nodesStatus" + }, + { + "type": "Nodes Progress", + "menuItems": [ + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.onMenuItemClick", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Plotter Module->" + }, + "icon": "expand", + "propertyNameAtParent": "nodesProgress" + }, + { + "type": "Nodes Running", + "menuItems": [ + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.onMenuItemClick", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Plotter Module->" + }, + "icon": "expand", + "propertyNameAtParent": "nodesRunning" + }, + { + "type": "Nodes Announcements", + "menuItems": [ + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.onMenuItemClick", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Plotter Module->" + }, + "icon": "expand", + "propertyNameAtParent": "nodesAnnouncements" + }, + { + "type": "Record Values", + "menuItems": [ + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.onMenuItemClick", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Plotter Module->" + }, + "icon": "expand", + "propertyNameAtParent": "recordValues" + }, { "type": "Shapes", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#shapes", - "icon": "shapes", "level": 4, "propertyNameAtParent": "shapes", "chainAttachesTo": { @@ -97,6 +369,18 @@ "type": "array", "childType": "Polygon", "autoAdd": true + }, + { + "name": "images", + "type": "array", + "childType": "Image", + "autoAdd": false + }, + { + "name": "texts", + "type": "array", + "childType": "Text", + "autoAdd": false } ], "menuItems": [ @@ -112,12 +396,24 @@ "label": "Add Polygon", "relatedUiObject": "Polygon" }, + { + "action": "Add UI Object", + "actionFunction": "payload.onMenuItemClick", + "label": "Add Image", + "relatedUiObject": "Image" + }, + { + "action": "Add UI Object", + "actionFunction": "payload.onMenuItemClick", + "label": "Add Text", + "relatedUiObject": "Text" + }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", "actionFunction": "payload.onMenuItemClick", - "label": "Delete Shapes", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete" } @@ -126,16 +422,13 @@ }, { "type": "Plotter Panel", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#plotter-panel", - "icon": "plotter-panel", "level": 4, - "isTitleAllwaysVisible": true, "propertyNameAtParent": "panels", "chainAttachesTo": { "compatibleTypes": "->Plotter Module->" }, "initialValues": { - "code": "{ \n\"codeName\": \"\"\n}" + "config": "{ \n \"codeName\": \"\"\n}" }, "editors": { "config": true @@ -155,11 +448,11 @@ ], "menuItems": [ { - "action": "Config Plotter Panel", + "action": "Configure", "actionFunction": "uiObject.configEditor.activate", - "label": "Config Plotter Panel", - "iconPathOn": "html", - "iconPathOff": "html" + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" }, { "action": "Add UI Object", @@ -180,7 +473,7 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Delete", "actionFunction": "payload.onMenuItemClick", - "label": "Delete Plotter Panel", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete" } @@ -189,11 +482,8 @@ }, { "type": "Panel Data", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#panel-data", - "icon": "data-entry", "level": 4, "propertyNameAtParent": "panelData", - "isTitleAllwaysVisible": true, "editors": { "config": true }, @@ -201,7 +491,7 @@ "compatibleTypes": "->Plotter Panel->" }, "initialValues": { - "code": "{\n \"valueDecimals\": 2\n}" + "config": "{\n \"valueDecimals\": 2\n}" }, "properties": [ { @@ -209,15 +499,21 @@ "type": "node", "childType": "Data Formula", "autoAdd": true + }, + { + "name": "textStyle", + "type": "node", + "childType": "Text Style", + "autoAdd": true } ], "menuItems": [ { - "action": "Config Panel Data", + "action": "Configure", "actionFunction": "uiObject.configEditor.activate", - "label": "Config Panel Data", - "iconPathOn": "html", - "iconPathOff": "html" + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" }, { "action": "Add UI Object", @@ -227,12 +523,20 @@ "label": "Add Data Formula", "relatedUiObject": "Data Formula" }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "textStyle", + "actionFunction": "payload.onMenuItemClick", + "label": "Add Text Style", + "relatedUiObject": "Text Style" + }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", "actionFunction": "payload.onMenuItemClick", - "label": "Delete Panel Data", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete" } @@ -241,33 +545,31 @@ }, { "type": "Data Formula", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#data-formula", - "icon": "data-formula", "level": 4, "propertyNameAtParent": "dataFormula", "editors": { "formula": true }, "initialValues": { - "code": "// Type you code here" + "code": "// Type you code" }, "chainAttachesTo": { "compatibleTypes": "->Panel Data->" }, "menuItems": [ { - "action": "Edit Formula", + "action": "Edit", "actionFunction": "uiObject.formulaEditor.activate", - "label": "Edit Formula", - "iconPathOn": "html", - "iconPathOff": "html" + "label": "Edit", + "iconPathOn": "javascript-code", + "iconPathOff": "javascript-code" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", "actionFunction": "payload.onMenuItemClick", - "label": "Delete Data Formula", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete" } @@ -276,33 +578,31 @@ }, { "type": "Javascript Code", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#javascript-code", - "icon": "html", "level": 4, "propertyNameAtParent": "javascriptCode", "editors": { "code": true }, "initialValues": { - "code": "// Type you code here" + "code": "// Type you code" }, "chainAttachesTo": { "compatibleTypes": "->Condition->Procedure Initialization->Procedure Loop->Plotter Module->Plotter Panel->Master Script->" }, "menuItems": [ { - "action": "Edit Code", + "action": "Edit", "actionFunction": "uiObject.codeEditor.activate", - "label": "Edit Code", - "iconPathOn": "html", - "iconPathOff": "html" + "label": "Edit", + "iconPathOn": "javascript-code", + "iconPathOff": "javascript-code" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", "actionFunction": "payload.onMenuItemClick", - "label": "Delete Javascript Code", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete" } @@ -311,11 +611,8 @@ }, { "type": "Chart Points", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#chart-points", - "icon": "chart-points", "level": 4, "propertyNameAtParent": "chartPoints", - "isTitleAllwaysVisible": true, "chainAttachesTo": { "compatibleTypes": "->Shapes->" }, @@ -339,7 +636,7 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Delete", "actionFunction": "payload.onMenuItemClick", - "label": "Delete Chart Points", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete" } @@ -348,12 +645,8 @@ }, { "type": "Point", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#point", - "icon": "chart-point", "level": 4, "propertyNameAtParent": "points", - "isTitleAllwaysVisible": true, - "isReferenceParent": true, "chainAttachesTo": { "compatibleTypes": "->Chart Points->" }, @@ -379,7 +672,7 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Delete", "actionFunction": "payload.onMenuItemClick", - "label": "Delete Point", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete" } @@ -388,8 +681,6 @@ }, { "type": "Point Formula", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#point-formula", - "icon": "chart-point-formula", "level": 4, "propertyNameAtParent": "pointFormula", "chainAttachesTo": { @@ -399,22 +690,377 @@ "formula": true }, "initialValues": { - "code": "x = record.begin\ny = record.propertyA" + "code": "x = record.begin\ny = record.property" }, "menuItems": [ { - "action": "Edit Formula", + "action": "Edit", "actionFunction": "uiObject.formulaEditor.activate", - "label": "Edit Formula", - "iconPathOn": "html", - "iconPathOff": "html" + "label": "Edit", + "iconPathOn": "javascript-code", + "iconPathOff": "javascript-code" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", "actionFunction": "payload.onMenuItemClick", - "label": "Delete Point", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete" + } + ], + "addLeftIcons": true + }, + { + "type": "Image", + "level": 3, + "propertyNameAtParent": "images", + "chainAttachesTo": { + "compatibleTypes": "->Shapes->" + }, + "editors": { + "config": true + }, + "initialValues": { + "config": "{ \n\"codeName\": \"\", \n\"size\": 10\n}" + }, + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "imageCondition", + "actionFunction": "payload.onMenuItemClick", + "label": "Add Image Condition", + "relatedUiObject": "Image Condition" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "imagePosition", + "actionFunction": "payload.onMenuItemClick", + "label": "Add Image Position", + "relatedUiObject": "Image Position" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.onMenuItemClick", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete" + } + ], + "properties": [ + { + "name": "imageCondition", + "type": "node", + "childType": "Image Condition", + "autoAdd": true + }, + { + "name": "imagePosition", + "type": "node", + "childType": "Image Position", + "autoAdd": true + } + ], + "addLeftIcons": true + }, + { + "type": "Image Condition", + "level": 4, + "propertyNameAtParent": "imageCondition", + "chainAttachesTo": { + "compatibleTypes": "->Image->" + }, + "editors": { + "code": true + }, + "initialValues": { + "code": "" + }, + "properties": [], + "menuItems": [ + { + "action": "Edit", + "actionFunction": "uiObject.codeEditor.activate", + "label": "Edit", + "iconPathOn": "javascript-code", + "iconPathOff": "javascript-code" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.onMenuItemClick", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete" + } + ], + "addLeftIcons": true + }, + { + "type": "Image Position", + "level": 4, + "propertyNameAtParent": "imagePosition", + "chainAttachesTo": { + "compatibleTypes": "->Image->" + }, + "properties": [], + "referenceAttachesTo": { + "compatibleTypes": "->Point->" + }, + "editors": { + "config": true + }, + "title": [ + "Use Reference Parent" + ], + "initialValues": { + "config": "{ \n\"offsetX\": 0,\n \"offsetY\": 0\n }" + }, + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.onMenuItemClick", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete" + } + ], + "addLeftIcons": true + }, + { + "type": "Text", + "level": 3, + "propertyNameAtParent": "texts", + "chainAttachesTo": { + "compatibleTypes": "->Shapes->" + }, + "menuItems": [ + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "textCondition", + "actionFunction": "payload.onMenuItemClick", + "label": "Add Text Condition", + "relatedUiObject": "Text Condition" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "textPosition", + "actionFunction": "payload.onMenuItemClick", + "label": "Add Text Position", + "relatedUiObject": "Text Position" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "textFormula", + "actionFunction": "payload.onMenuItemClick", + "label": "Add Text Formula", + "relatedUiObject": "Text Formula" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "textStyle", + "actionFunction": "payload.onMenuItemClick", + "label": "Add Text Style", + "relatedUiObject": "Text Style" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.onMenuItemClick", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete" + } + ], + "properties": [ + { + "name": "textCondition", + "type": "node", + "childType": "Text Condition", + "autoAdd": true + }, + { + "name": "textPosition", + "type": "node", + "childType": "Text Position", + "autoAdd": true + }, + { + "name": "textFormula", + "type": "node", + "childType": "Text Formula", + "autoAdd": true + }, + { + "name": "textStyle", + "type": "node", + "childType": "Text Style", + "autoAdd": true + } + ], + "addLeftIcons": true + }, + { + "type": "Text Style", + "level": 4, + "propertyNameAtParent": "textStyle", + "chainAttachesTo": { + "compatibleTypes": "->Text->Panel Data->" + }, + "editors": { + "config": true + }, + "initialValues": { + "config": "{ \n\"configuration\": \"Get the appropriate configuration from the documentation\"\n}" + }, + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.onMenuItemClick", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete" + } + ], + "addLeftIcons": true + }, + { + "type": "Text Condition", + "level": 4, + "propertyNameAtParent": "textCondition", + "chainAttachesTo": { + "compatibleTypes": "->Text->" + }, + "editors": { + "code": true + }, + "initialValues": { + "code": "" + }, + "properties": [], + "menuItems": [ + { + "action": "Edit", + "actionFunction": "uiObject.codeEditor.activate", + "label": "Edit", + "iconPathOn": "javascript-code", + "iconPathOff": "javascript-code" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.onMenuItemClick", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete" + } + ], + "addLeftIcons": true + }, + { + "type": "Text Position", + "level": 4, + "propertyNameAtParent": "textPosition", + "chainAttachesTo": { + "compatibleTypes": "->Text->" + }, + "properties": [], + "referenceAttachesTo": { + "compatibleTypes": "->Point->" + }, + "editors": { + "config": true + }, + "title": [ + "Use Reference Parent" + ], + "initialValues": { + "config": "{ \n\"offsetX\": 0,\n \"offsetY\": 0\n }" + }, + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.onMenuItemClick", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete" + } + ], + "addLeftIcons": true + }, + { + "type": "Text Formula", + "level": 4, + "propertyNameAtParent": "textFormula", + "chainAttachesTo": { + "compatibleTypes": "->Text->" + }, + "editors": { + "formula": true + }, + "initialValues": { + "code": "record.property" + }, + "menuItems": [ + { + "action": "Edit", + "actionFunction": "uiObject.formulaEditor.activate", + "label": "Edit", + "iconPathOn": "javascript-code", + "iconPathOff": "javascript-code" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.onMenuItemClick", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete" } @@ -423,11 +1069,8 @@ }, { "type": "Polygon", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#polygon", - "icon": "shapes-polygon", "level": 3, "propertyNameAtParent": "polygons", - "isTitleAllwaysVisible": true, "chainAttachesTo": { "compatibleTypes": "->Shapes->" }, @@ -435,7 +1078,8 @@ { "name": "polygonCondition", "type": "node", - "childType": "Polygon Condition" + "childType": "Polygon Condition", + "autoAdd": false }, { "name": "polygonBody", @@ -492,7 +1136,7 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Delete", "actionFunction": "payload.onMenuItemClick", - "label": "Delete Polygon", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete" } @@ -501,7 +1145,6 @@ }, { "type": "Polygon Condition", - "icon": "style-condition", "level": 4, "propertyNameAtParent": "polygonCondition", "chainAttachesTo": { @@ -516,18 +1159,18 @@ "properties": [], "menuItems": [ { - "action": "Edit Condition", + "action": "Edit", "actionFunction": "uiObject.codeEditor.activate", - "label": "Edit Condition", - "iconPathOn": "html", - "iconPathOff": "html" + "label": "Edit", + "iconPathOn": "javascript-code", + "iconPathOff": "javascript-code" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", "actionFunction": "payload.onMenuItemClick", - "label": "Delete Style Condition", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete" } @@ -536,8 +1179,6 @@ }, { "type": "Polygon Body", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#polygon-body", - "icon": "shapes-polygon-body", "level": 4, "propertyNameAtParent": "polygonBody", "chainAttachesTo": { @@ -576,7 +1217,7 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Delete", "actionFunction": "payload.onMenuItemClick", - "label": "Delete Polygon Body", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete" } @@ -585,8 +1226,6 @@ }, { "type": "Polygon Border", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#polygon-border", - "icon": "shapes-polygon-border", "level": 4, "propertyNameAtParent": "polygonBorder", "chainAttachesTo": { @@ -625,7 +1264,7 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Delete", "actionFunction": "payload.onMenuItemClick", - "label": "Delete Polygon Border", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete" } @@ -634,8 +1273,6 @@ }, { "type": "Style Condition", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#style-condition", - "icon": "style-condition", "level": 4, "propertyNameAtParent": "styleConditions", "chainAttachesTo": { @@ -657,11 +1294,11 @@ ], "menuItems": [ { - "action": "Edit Condition", + "action": "Edit", "actionFunction": "uiObject.codeEditor.activate", - "label": "Edit Condition", - "iconPathOn": "html", - "iconPathOff": "html" + "label": "Edit", + "iconPathOn": "javascript-code", + "iconPathOff": "javascript-code" }, { "action": "Add UI Object", @@ -676,7 +1313,7 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Delete", "actionFunction": "payload.onMenuItemClick", - "label": "Delete Style Condition", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete" } @@ -685,8 +1322,6 @@ }, { "type": "Style", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#style", - "icon": "style", "level": 4, "propertyNameAtParent": "style", "chainAttachesTo": { @@ -696,22 +1331,22 @@ "config": true }, "initialValues": { - "code": "{}" + "config": "{ \n\"configuration\": \"Get the appropriate configuration from the documentation\"\n}" }, "menuItems": [ { - "action": "Configure Style", + "action": "Configure", "actionFunction": "uiObject.configEditor.activate", - "label": "Configure Style", - "iconPathOn": "html", - "iconPathOff": "html" + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", "actionFunction": "payload.onMenuItemClick", - "label": "Delete Style", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete" } @@ -720,8 +1355,6 @@ }, { "type": "Polygon Vertex", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#polygon-vertex", - "icon": "shapes-polygon-vertex", "level": 4, "propertyNameAtParent": "polygonVertexes", "isReferenceChildren": true, @@ -740,7 +1373,7 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Delete", "actionFunction": "payload.onMenuItemClick", - "label": "Delete Polygon Edge", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete" } @@ -753,25 +1386,25 @@ { "action": "Pin / Unpin", "currentStatus": true, - "iconPathOn": "menu-fix-unpinned", - "iconPathOff": "menu-fix-pinned", + "iconPathOn": "unpinned", + "iconPathOff": "pinned", + "actionFunction": "payload.onMenuItemClick", + "ring": 1 + }, + { + "action": "Share Workspace", + "iconPathOn": "share", + "iconPathOff": "share", "actionFunction": "payload.onMenuItemClick", "ring": 1 }, { "action": "Backup Workspace", - "iconPathOn": "menu-backup", - "iconPathOff": "menu-backup", + "iconPathOn": "backup", + "iconPathOff": "backup", "actionFunction": "payload.onMenuItemClick", "ring": 1 }, - { - "action": "Configure Workspace", - "actionFunction": "uiObject.configEditor.activate", - "label": "Configure Workspace", - "iconPathOn": "html", - "iconPathOff": "html" - }, { "action": "Add UI Object", "label": "Add Trading System", @@ -790,6 +1423,12 @@ "relatedUiObject": "Data Mine", "actionFunction": "payload.onMenuItemClick" }, + { + "action": "Add UI Object", + "label": "Add Trading Mine", + "relatedUiObject": "Trading Mine", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Add UI Object", "label": "Add Super Scripts", @@ -797,25 +1436,31 @@ "actionFunction": "payload.onMenuItemClick" }, { - "action": "Share Workspace", - "label": "Share", - "iconPathOn": "menu-share", - "iconPathOff": "menu-share", + "action": "Add UI Object", + "label": "Add Trading Engine", + "relatedUiObject": "Trading Engine", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Tutorial", + "relatedUiObject": "Tutorial", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Includes", + "relatedUiObject": "Includes", "actionFunction": "payload.onMenuItemClick" } ], "isTitleAllwaysVisible": true, "addLeftIcons": false, "isPinned": true, - "positionLocked": true, - "icon": "design-tool", - "editors": { - "config": true - } + "positionLocked": true }, { "type": "Situation", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#situation", "menuItems": [ { "action": "Add UI Object", @@ -823,40 +1468,51 @@ "relatedUiObject": "Condition", "actionFunction": "payload.onMenuItemClick" }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "formula", + "label": "Add Formula", + "relatedUiObject": "Formula", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This Situation", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], "addLeftIcons": true, - "level": 0, + "level": 1, "chainAttachesTo": { - "compatibleTypes": "->Take Position Event->Trigger On Event->Trigger Off Event->Next Phase Event->Move to Phase Event->" + "compatibleTypes": "->Take Position Event->Trigger On Event->Trigger Off Event->Next Phase Event->Move To Phase Event->" }, - "icon": "pyramid", "properties": [ { "name": "conditions", "type": "array", "childType": "Condition", "autoAdd": true + }, + { + "name": "formula", + "type": "node", + "childType": "Formula" } ], "propertyNameAtParent": "situations" }, { "type": "Condition", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#condition", "menuItems": [ { - "action": "Edit Condition", + "action": "Edit", "actionFunction": "uiObject.conditionEditor.activate", - "label": "Edit Condition", + "label": "Edit", "relatedUiObject": "Condition" }, { @@ -883,7 +1539,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This Condition", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -897,7 +1553,6 @@ "chainAttachesTo": { "compatibleTypes": "->Situation->" }, - "icon": "testing", "properties": [ { "name": "javascriptCode", @@ -910,14 +1565,13 @@ }, { "type": "Super Scripts", - "docURL": "https://docs.superalgos.org/suite-hierarchy-super-scripts.html#super-scripts", "menuItems": [ { - "action": "Configure Super Scripts", + "action": "Configure", "actionFunction": "uiObject.configEditor.activate", - "label": "Configure Super Scripts", - "iconPathOn": "html", - "iconPathOff": "html" + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" }, { "action": "Add UI Object", @@ -931,7 +1585,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Super Scripts", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -940,13 +1594,12 @@ "isTitleAllwaysVisible": true, "isHierarchyHead": true, "addLeftIcons": true, - "level": 1, - "icon": "super-scripts", + "level": 0, "editors": { "config": true }, "initialValues": { - "code": "{ \n\"codeName\": \"\"\n}" + "config": "{ \n \"codeName\": \"\"\n}" }, "properties": [ { @@ -959,7 +1612,6 @@ }, { "type": "Scripts Library", - "docURL": "https://docs.superalgos.org/suite-hierarchy-super-scripts.html#scripts-library", "menuItems": [ { "action": "Add UI Object", @@ -971,7 +1623,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Scripts Library", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -984,7 +1636,6 @@ "chainAttachesTo": { "compatibleTypes": "->Super Scripts->" }, - "icon": "scripts-library", "properties": [ { "name": "masterScripts", @@ -996,7 +1647,6 @@ }, { "type": "Master Script", - "docURL": "https://docs.superalgos.org/suite-hierarchy-super-scripts.html#master-script", "menuItems": [ { "action": "Add UI Object", @@ -1016,7 +1666,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Master Script", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -1029,7 +1679,6 @@ "chainAttachesTo": { "compatibleTypes": "->Scripts Library->" }, - "icon": "master-script", "properties": [ { "name": "templateScripts", @@ -1046,7 +1695,6 @@ }, { "type": "Template Script", - "docURL": "https://docs.superalgos.org/suite-hierarchy-super-scripts.html#template-script", "menuItems": [ { "action": "Add UI Object", @@ -1076,7 +1724,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Template Script", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -1089,7 +1737,6 @@ "chainAttachesTo": { "compatibleTypes": "->Master Script->" }, - "icon": "template-script", "properties": [ { "name": "templateStructure", @@ -1113,13 +1760,12 @@ }, { "type": "Template Structure", - "docURL": "https://docs.superalgos.org/suite-hierarchy-super-scripts.html#template-structure", "menuItems": [ { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Template Structure", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -1132,7 +1778,6 @@ "chainAttachesTo": { "compatibleTypes": "->Template Script->" }, - "icon": "template-structure", "properties": [ { "name": "taskManagers", @@ -1140,9 +1785,9 @@ "childType": "Task Manager" }, { - "name": "singleMarketData", + "name": "marketDataProducts", "type": "node", - "childType": "Single Market Data" + "childType": "Market Data Products" }, { "name": "sessionReferences", @@ -1158,13 +1803,12 @@ }, { "type": "Template Target", - "docURL": "https://docs.superalgos.org/suite-hierarchy-super-scripts.html#template-target", "menuItems": [ { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Template Target", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -1178,14 +1822,12 @@ "compatibleTypes": "->Template Script->" }, "referenceAttachesTo": { - "compatibleTypes": "->Dashboard->Session Independent Data->Session Based Data->Data Mining->Testing Environment->Production Environment->" + "compatibleTypes": "->Dashboard->Data Mines Data->Trading Mines Data->Data Mining->Testing Environment->Production Environment->" }, - "icon": "template-target", "properties": [] }, { "type": "Super Action", - "docURL": "https://docs.superalgos.org/suite-hierarchy-super-scripts.html#super-action", "menuItems": [ { "action": "Run Super Action", @@ -1193,15 +1835,15 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Run", "workDoneLabel": "Super Action Executed", - "iconPathOn": "paper-plane", - "iconPathOff": "paper-plane", + "iconPathOn": "run", + "iconPathOff": "run", "actionFunction": "payload.onMenuItemClick" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Super Action", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -1217,12 +1859,10 @@ "referenceAttachesTo": { "compatibleTypes": "->Master Script->" }, - "icon": "super-action", "properties": [] }, { "type": "Network", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#network", "menuItems": [ { "action": "Add UI Object", @@ -1234,17 +1874,15 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Network", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], - "isTitleAllwaysVisible": true, "isHierarchyHead": true, "addLeftIcons": true, - "level": 1, - "icon": "network", + "level": 0, "properties": [ { "name": "networkNodes", @@ -1255,24 +1893,15 @@ }, { "type": "Network Node", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#network-node", "menuItems": [ { - "action": "Configure Network Node", - "label": "Configure Network Node", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, - { - "action": "Add UI Object", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "dataStorage", - "label": "Add Data Storage", - "relatedUiObject": "Data Storage", - "actionFunction": "payload.onMenuItemClick" - }, { "action": "Add UI Object", "disableIfPropertyIsDefined": true, @@ -1297,11 +1926,19 @@ "relatedUiObject": "Production Environment", "actionFunction": "payload.onMenuItemClick" }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "dataStorage", + "label": "Add Data Storage", + "relatedUiObject": "Data Storage", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Network Node", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -1311,7 +1948,7 @@ "config": true }, "initialValues": { - "code": "{ \n\"host\": \"localhost\", \n\"webPort\": \"34247\", \n\"webSocketsPort\": \"8080\"\n}" + "config": "{ \n\"host\": \"localhost\", \n\"webPort\": \"34248\", \n\"webSocketsPort\": \"8081\"\n}" }, "isTitleAllwaysVisible": true, "addLeftIcons": true, @@ -1319,14 +1956,7 @@ "chainAttachesTo": { "compatibleTypes": "->Network->" }, - "icon": "network-node", "properties": [ - { - "name": "dataStorage", - "type": "node", - "childType": "Data Storage", - "autoAdd": true - }, { "name": "dataMining", "type": "node", @@ -1344,13 +1974,18 @@ "type": "node", "childType": "Production Environment", "autoAdd": true + }, + { + "name": "dataStorage", + "type": "node", + "childType": "Data Storage", + "autoAdd": true } ], "propertyNameAtParent": "networkNodes" }, { "type": "Task Manager", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#task-manager", "menuItems": [ { "action": "Run All Tasks", @@ -1358,8 +1993,8 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Run", "workDoneLabel": "Run Request Sent", - "iconPathOn": "paper-plane", - "iconPathOff": "paper-plane", + "iconPathOn": "run", + "iconPathOff": "run", "actionFunction": "payload.onMenuItemClick" }, { @@ -1382,24 +2017,23 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Task Manager", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], "addLeftIcons": true, - "level": 1, + "level": 2, "chainAttachesTo": { - "compatibleTypes": "->Exchange Tasks->Template Structure->" + "compatibleTypes": "->Data Mine Tasks->Trading Mine Tasks->" }, - "icon": "task-manager", "properties": [ { "name": "tasks", "type": "array", "childType": "Task", - "autoAdd": true, + "autoAdd": false, "monitorChildrenRunning": true } ], @@ -1407,7 +2041,6 @@ }, { "type": "Task", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#task", "menuItems": [ { "action": "Run Task", @@ -1421,8 +2054,8 @@ "secondaryWorkDoneLabel": "Task Stopped", "secondaryWorkFailedLabel": "Task Cannot be Stopped", "secondaryIcon": "stop", - "iconPathOn": "paper-plane", - "iconPathOff": "paper-plane", + "iconPathOn": "run", + "iconPathOff": "run", "actionFunction": "payload.onMenuItemClick" }, { @@ -1459,11 +2092,19 @@ "relatedUiObject": "Trading Bot Instance", "actionFunction": "payload.onMenuItemClick" }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "keyReference", + "label": "Add Key Reference", + "relatedUiObject": "Key Reference", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Task", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -1471,11 +2112,10 @@ ], "isTitleAllwaysVisible": true, "addLeftIcons": true, - "level": 1, + "level": 0, "chainAttachesTo": { "compatibleTypes": "->Task Manager->" }, - "icon": "timeline", "properties": [ { "name": "bot", @@ -1491,19 +2131,23 @@ "name": "bot", "type": "node", "childType": "Indicator Bot Instance" + }, + { + "name": "keyReference", + "type": "node", + "childType": "Key Reference" } ], "propertyNameAtParent": "tasks" }, { "type": "Trading Bot Instance", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#trading-bot-instance", "menuItems": [ { - "action": "Configure Bot Instance", - "label": "Configure Bot Instance", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, @@ -1517,7 +2161,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Bot Instance", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -1528,40 +2172,30 @@ "config": true }, "initialValues": { - "code": "{}" + "config": "{}" }, "level": 3, "chainAttachesTo": { "compatibleTypes": "->Task->" }, - "icon": "bot-trading", "properties": [ { "name": "processes", "type": "array", "childType": "Trading Process Instance", - "autoAdd": true + "autoAdd": false } ], "propertyNameAtParent": "bot" }, { "type": "Sensor Process Instance", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#sensor-process-instance", "menuItems": [ - { - "action": "Add UI Object", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "marketReference", - "label": "Add Market Reference", - "relatedUiObject": "Market Reference", - "actionFunction": "payload.onMenuItemClick" - }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Process Instance", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -1573,41 +2207,25 @@ "Use Reference Parent" ], "addLeftIcons": true, - "level": 3, + "level": 2, "referenceAttachesTo": { "compatibleTypes": "->Process Definition->" }, "chainAttachesTo": { "compatibleTypes": "->Sensor Bot Instance->" }, - "icon": "process", "properties": [ - { - "name": "marketReference", - "type": "node", - "childType": "Market Reference", - "autoAdd": true - } ], "propertyNameAtParent": "processes" }, { "type": "Indicator Process Instance", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#indicator-process-instance", "menuItems": [ - { - "action": "Add UI Object", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "marketReference", - "label": "Add Market Reference", - "relatedUiObject": "Market Reference", - "actionFunction": "payload.onMenuItemClick" - }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Process Instance", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -1619,36 +2237,20 @@ "Use Reference Parent" ], "addLeftIcons": true, - "level": 3, + "level": 2, "referenceAttachesTo": { "compatibleTypes": "->Process Definition->" }, "chainAttachesTo": { "compatibleTypes": "->Indicator Bot Instance->" }, - "icon": "process", "properties": [ - { - "name": "marketReference", - "type": "node", - "childType": "Market Reference", - "autoAdd": true - } ], "propertyNameAtParent": "processes" }, { "type": "Trading Process Instance", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#trading-process-instance", "menuItems": [ - { - "action": "Add UI Object", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "marketReference", - "label": "Add Market Reference", - "relatedUiObject": "Market Reference", - "actionFunction": "payload.onMenuItemClick" - }, { "action": "Add UI Object", "disableIfPropertyIsDefined": true, @@ -1681,11 +2283,19 @@ "relatedUiObject": "Paper Trading Session", "actionFunction": "payload.onMenuItemClick" }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "executionStartedEvent", + "label": "Add Execution Started Event", + "relatedUiObject": "Execution Started Event", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Process Instance", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -1697,14 +2307,13 @@ "Use Reference Parent" ], "addLeftIcons": true, - "level": 3, + "level": 2, "referenceAttachesTo": { "compatibleTypes": "->Process Definition->" }, "chainAttachesTo": { "compatibleTypes": "->Trading Bot Instance->" }, - "icon": "process", "properties": [ { "name": "session", @@ -1727,63 +2336,68 @@ "childType": "Live Trading Session" }, { - "name": "marketReference", + "name": "executionStartedEvent", "type": "node", - "childType": "Market Reference", - "autoAdd": true + "childType": "Execution Started Event", + "autoAdd": false } ], "propertyNameAtParent": "processes" }, { "type": "Backtesting Session", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#backtesting-session", "menuItems": [ { "action": "Run Session", "label": "Run", "workingLabel": "Run Request Sent", "workDoneLabel": "Session Running", - "workFailedLabel": "Session Cannot be Run", + "workFailedLabel": "Session Cannot be Ran", "secondaryAction": "Stop Session", "secondaryLabel": "Stop", "secondaryWorkingLabel": "Stopping...", "secondaryWorkDoneLabel": "Session Stopped", "secondaryWorkFailedLabel": "Session Cannot be Stopped", "secondaryIcon": "stop", - "iconPathOn": "paper-plane", - "iconPathOff": "paper-plane", + "iconPathOn": "run", + "iconPathOff": "run", "actionFunction": "payload.onMenuItemClick" }, { - "action": "Add UI Object", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "parameters", - "label": "Add Parameters", - "relatedUiObject": "Parameters", + "action": "Resume Session", + "label": "Resume", + "workingLabel": "Resume Request Sent", + "workDoneLabel": "Session Running", + "workFailedLabel": "Session Cannot be Resumed", + "secondaryAction": "Stop Session", + "secondaryLabel": "Stop", + "secondaryWorkingLabel": "Stopping...", + "secondaryWorkDoneLabel": "Session Stopped", + "secondaryWorkFailedLabel": "Session Cannot be Stopped", + "secondaryIcon": "stop", + "iconPathOn": "resume", + "iconPathOff": "resume", "actionFunction": "payload.onMenuItemClick" }, { - "action": "Add UI Object", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "socialBots", - "label": "Add Social Bots", - "relatedUiObject": "Social Bots", - "actionFunction": "payload.onMenuItemClick" - }, - { - "action": "Configure Session", - "label": "Configure Session", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Session", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -1791,20 +2405,16 @@ ], "isTitleAllwaysVisible": true, "initialValues": { - "code": "{ \n\"folderName\": \"Type here the folder name where you want the logs of this process to be stored to.\"\n}" + "config": "{ \n\"folderName\": \"\"\n}" }, "addLeftIcons": true, "editors": { "config": true }, "level": 2, - "referenceAttachesTo": { - "compatibleTypes": "->Trading System->" - }, "chainAttachesTo": { "compatibleTypes": "->Trading Process Instance->" }, - "icon": "session-backtesting", "properties": [ { "name": "parameters", @@ -1812,6 +2422,18 @@ "childType": "Parameters", "autoAdd": true }, + { + "name": "tradingSystemReference", + "type": "node", + "childType": "Trading System Reference", + "autoAdd": true + }, + { + "name": "tradingEngineReference", + "type": "node", + "childType": "Trading Engine Reference", + "autoAdd": true + }, { "name": "socialBots", "type": "node", @@ -1820,9 +2442,5138 @@ ], "propertyNameAtParent": "session" }, + { + "type": "Trading Engine", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Trading Engine", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "isHierarchyHead": true, + "addLeftIcons": true, + "level": 0, + "properties": [ + { + "name": "current", + "type": "node", + "childType": "Current", + "autoAdd": true + }, + { + "name": "last", + "type": "node", + "childType": "Last", + "autoAdd": true + }, + { + "name": "exchangeOrders", + "type": "node", + "childType": "Exchange Orders", + "autoAdd": true + } + ] + }, + { + "type": "Dynamic Indicators", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Indicator Function", + "relatedUiObject": "Indicator Function", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Trading System->" + }, + "propertyNameAtParent": "dynamicIndicators", + "properties": [ + { + "name": "indicatorFunctions", + "type": "array", + "childType": "Indicator Function", + "autoAdd": true + } + ], + "icon": "bitcoin" + }, + { + "type": "Indicator Function", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "formula", + "label": "Add Formula", + "relatedUiObject": "Formula", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{ \n \"codeName\": \"\"\n}" + }, + "addLeftIcons": true, + "level": 2, + "chainAttachesTo": { + "compatibleTypes": "->Dynamic Indicators->" + }, + "propertyNameAtParent": "indicatorFunctions", + "properties": [ + { + "name": "formula", + "type": "node", + "childType": "Formula", + "autoAdd": true + } + ] + }, + { + "type": "Episode", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Current->" + }, + "propertyNameAtParent": "episode", + "properties": [ + { + "name": "serialNumber", + "type": "node", + "childType": "Serial Number", + "autoAdd": true + }, + { + "name": "identifier", + "type": "node", + "childType": "Identifier", + "autoAdd": true + }, + { + "name": "begin", + "type": "node", + "childType": "Begin", + "autoAdd": true + }, + { + "name": "end", + "type": "node", + "childType": "End", + "autoAdd": true + }, + { + "name": "beginRate", + "type": "node", + "childType": "Begin Rate", + "autoAdd": true + }, + { + "name": "endRate", + "type": "node", + "childType": "End Rate", + "autoAdd": true + }, + { + "name": "status", + "type": "node", + "childType": "Status", + "autoAdd": true + }, + { + "name": "exitType", + "type": "node", + "childType": "Exit Type", + "autoAdd": true + }, + { + "name": "headOfTheMarket", + "type": "node", + "childType": "Head Of The Market", + "autoAdd": true + }, + { + "name": "processDate", + "type": "node", + "childType": "Process Date", + "autoAdd": true + }, + { + "name": "episodeBaseAsset", + "type": "node", + "childType": "Episode Base Asset", + "autoAdd": true + }, + { + "name": "episodeQuotedAsset", + "type": "node", + "childType": "Episode Quoted Asset", + "autoAdd": true + }, + { + "name": "episodeCounters", + "type": "node", + "childType": "Episode Counters", + "autoAdd": true + }, + { + "name": "episodeStatistics", + "type": "node", + "childType": "Episode Statistics", + "autoAdd": true + }, + { + "name": "distanceToEvent", + "type": "node", + "childType": "Distance To Event", + "autoAdd": true + }, + { + "name": "candle", + "type": "node", + "childType": "Candle", + "autoAdd": true + }, + { + "name": "cycle", + "type": "node", + "childType": "Cycle", + "autoAdd": true + } + ] + }, + { + "type": "Episode Counters", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add User Defined Counter", + "relatedUiObject": "User Defined Counter", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode->" + }, + "propertyNameAtParent": "episodeCounters", + "properties": [ + { + "name": "periods", + "type": "node", + "childType": "Periods", + "autoAdd": true + }, + { + "name": "strategies", + "type": "node", + "childType": "Strategies", + "autoAdd": true + }, + { + "name": "positions", + "type": "node", + "childType": "Positions", + "autoAdd": true + }, + { + "name": "orders", + "type": "node", + "childType": "Orders", + "autoAdd": true + }, + { + "name": "hits", + "type": "node", + "childType": "Hits", + "autoAdd": true + }, + { + "name": "fails", + "type": "node", + "childType": "Fails", + "autoAdd": true + }, + { + "name": "userDefinedCounters", + "type": "array", + "childType": "User Defined Counter", + "autoAdd": false + } + ] + }, + { + "type": "Position Counters", + "menuItems": [ + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "periods", + "label": "Add Periods", + "relatedUiObject": "Periods", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add User Defined Counter", + "relatedUiObject": "User Defined Counter", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Position->" + }, + "propertyNameAtParent": "positionCounters", + "properties": [ + { + "name": "periods", + "type": "node", + "childType": "Periods", + "autoAdd": true + }, + { + "name": "userDefinedCounters", + "type": "array", + "childType": "User Defined Counter", + "autoAdd": false + } + ] + }, + { + "type": "Strategy Counters", + "menuItems": [ + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "periods", + "label": "Add Periods", + "relatedUiObject": "Periods", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add User Defined Counter", + "relatedUiObject": "User Defined Counter", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Strategy->" + }, + "propertyNameAtParent": "strategyCounters", + "properties": [ + { + "name": "periods", + "type": "node", + "childType": "Periods", + "autoAdd": true + }, + { + "name": "userDefinedCounters", + "type": "array", + "childType": "User Defined Counter", + "autoAdd": false + } + ] + }, + { + "type": "Order Counters", + "menuItems": [ + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "periods", + "label": "Add Periods", + "relatedUiObject": "Periods", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add User Defined Counter", + "relatedUiObject": "User Defined Counter", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Market Order->Limit Order->" + }, + "propertyNameAtParent": "orderCounters", + "properties": [ + { + "name": "periods", + "type": "node", + "childType": "Periods", + "autoAdd": true + }, + { + "name": "userDefinedCounters", + "type": "array", + "childType": "User Defined Counter", + "autoAdd": false + } + ] + }, + { + "type": "Positions", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode Counters->" + }, + "propertyNameAtParent": "positions" + }, + { + "type": "Strategies", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode Counters->" + }, + "propertyNameAtParent": "strategies" + }, + { + "type": "Orders", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode Counters->" + }, + "propertyNameAtParent": "orders" + }, + { + "type": "Fails", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode Counters->Episode Base Asset->Episode Quoted Asset->" + }, + "propertyNameAtParent": "fails" + }, + { + "type": "Hits", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode Counters->Episode Base Asset->Episode Quoted Asset->" + }, + "propertyNameAtParent": "hits" + }, + { + "type": "Periods", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode Counters->Position Counters->Strategy Counters->Order Counters->" + }, + "propertyNameAtParent": "periods" + }, + { + "type": "User Defined Counter", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode Counters->Position Counters->Strategy Counters->" + }, + "propertyNameAtParent": "userDefinedCounters" + }, + { + "type": "Episode Statistics", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add User Defined Statistic", + "relatedUiObject": "User Defined Statistic", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode->" + }, + "propertyNameAtParent": "episodeStatistics", + "properties": [ + { + "name": "profitLoss", + "type": "node", + "childType": "Profit Loss", + "autoAdd": true + }, + { + "name": "ROI", + "type": "node", + "childType": "ROI", + "autoAdd": true + }, + { + "name": "hitFail", + "type": "node", + "childType": "Hit Fail", + "autoAdd": true + }, + { + "name": "days", + "type": "node", + "childType": "Days", + "autoAdd": true + }, + { + "name": "annualizedRateOfReturn", + "type": "node", + "childType": "Annualized Rate Of Return", + "autoAdd": true + }, + { + "name": "userDefinedStatistics", + "type": "array", + "childType": "User Defined Statistic", + "autoAdd": true + } + ] + }, + { + "type": "Stop Loss", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Position->" + }, + "propertyNameAtParent": "stopLoss", + "properties": [ + { + "name": "stopLossPhase", + "type": "node", + "childType": "Stop Loss Phase", + "autoAdd": true + }, + { + "name": "stopLossPosition", + "type": "node", + "childType": "Stop Loss Position", + "autoAdd": true + } + ] + }, + { + "type": "Take Profit", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Position->" + }, + "propertyNameAtParent": "stopLoss", + "properties": [ + { + "name": "takeProfitPhase", + "type": "node", + "childType": "Take Profit Phase", + "autoAdd": true + }, + { + "name": "takeProfitPosition", + "type": "node", + "childType": "Take Profit Position", + "autoAdd": true + } + ] + }, + { + "type": "Stop Loss Phase", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Stop Loss->" + }, + "propertyNameAtParent": "stopLossPhase" + }, + { + "type": "Take Profit Phase", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Take Profit->" + }, + "propertyNameAtParent": "takeProfitPhase" + }, + { + "type": "Take Profit Position", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": \"\"\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Take Profit->" + }, + "propertyNameAtParent": "takeProfitPosition" + }, + { + "type": "Stop Loss Position", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": \"\"\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Stop Loss->" + }, + "propertyNameAtParent": "stopLossPosition" + }, + { + "type": "Position Statistics", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add User Defined Statistic", + "relatedUiObject": "User Defined Statistic", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Position->" + }, + "propertyNameAtParent": "positionStatistics", + "properties": [ + { + "name": "profitLoss", + "type": "node", + "childType": "Profit Loss", + "autoAdd": true + }, + { + "name": "ROI", + "type": "node", + "childType": "ROI", + "autoAdd": true + }, + { + "name": "hitFail", + "type": "node", + "childType": "Hit Fail", + "autoAdd": true + }, + { + "name": "days", + "type": "node", + "childType": "Days", + "autoAdd": true + }, + { + "name": "userDefinedStatistics", + "type": "array", + "childType": "User Defined Statistic", + "autoAdd": true + } + ] + }, + { + "type": "Stage Base Asset", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Strategy Open Stage->Strategy Close Stage->" + }, + "propertyNameAtParent": "stageBaseAsset", + "properties": [ + { + "name": "targetSize", + "type": "node", + "childType": "Target Size", + "autoAdd": true + }, + { + "name": "sizePlaced", + "type": "node", + "childType": "Size Placed", + "autoAdd": true + }, + { + "name": "sizeFilled", + "type": "node", + "childType": "Size Filled", + "autoAdd": true + }, + { + "name": "feesPaid", + "type": "node", + "childType": "Fees Paid", + "autoAdd": true + } + ] + }, + { + "type": "Stage Quoted Asset", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Strategy Open Stage->Strategy Close Stage->" + }, + "propertyNameAtParent": "stageQuotedAsset", + "properties": [ + { + "name": "targetSize", + "type": "node", + "childType": "Target Size", + "autoAdd": true + }, + { + "name": "sizePlaced", + "type": "node", + "childType": "Size Placed", + "autoAdd": true + }, + { + "name": "sizeFilled", + "type": "node", + "childType": "Size Filled", + "autoAdd": true + }, + { + "name": "feesPaid", + "type": "node", + "childType": "Fees Paid", + "autoAdd": true + } + ] + }, + { + "type": "Episode Base Asset", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode->" + }, + "propertyNameAtParent": "episodeBaseAsset", + "properties": [ + { + "name": "balance", + "type": "node", + "childType": "Balance", + "autoAdd": true + }, + { + "name": "beginBalance", + "type": "node", + "childType": "Begin Balance", + "autoAdd": true + }, + { + "name": "endBalance", + "type": "node", + "childType": "End Balance", + "autoAdd": true + }, + { + "name": "hits", + "type": "node", + "childType": "Hits", + "autoAdd": true + }, + { + "name": "fails", + "type": "node", + "childType": "Fails", + "autoAdd": true + }, + { + "name": "hitRatio", + "type": "node", + "childType": "Hit Ratio", + "autoAdd": true + }, + { + "name": "profitLoss", + "type": "node", + "childType": "Profit Loss", + "autoAdd": true + }, + { + "name": "ROI", + "type": "node", + "childType": "ROI", + "autoAdd": true + }, + { + "name": "annualizedRateOfReturn", + "type": "node", + "childType": "Annualized Rate Of Return", + "autoAdd": true + }, + { + "name": "hitFail", + "type": "node", + "childType": "Hit Fail", + "autoAdd": true + } + ] + }, + { + "type": "Episode Quoted Asset", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode->" + }, + "propertyNameAtParent": "episodeQuotedAsset", + "properties": [ + { + "name": "balance", + "type": "node", + "childType": "Balance", + "autoAdd": true + }, + { + "name": "beginBalance", + "type": "node", + "childType": "Begin Balance", + "autoAdd": true + }, + { + "name": "endBalance", + "type": "node", + "childType": "End Balance", + "autoAdd": true + }, + { + "name": "hits", + "type": "node", + "childType": "Hits", + "autoAdd": true + }, + { + "name": "fails", + "type": "node", + "childType": "Fails", + "autoAdd": true + }, + { + "name": "hitRatio", + "type": "node", + "childType": "Hit Ratio", + "autoAdd": true + }, + { + "name": "profitLoss", + "type": "node", + "childType": "Profit Loss", + "autoAdd": true + }, + { + "name": "ROI", + "type": "node", + "childType": "ROI", + "autoAdd": true + }, + { + "name": "annualizedRateOfReturn", + "type": "node", + "childType": "Annualized Rate Of Return", + "autoAdd": true + }, + { + "name": "hitFail", + "type": "node", + "childType": "Hit Fail", + "autoAdd": true + } + ] + }, + { + "type": "Position Base Asset", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Position->" + }, + "propertyNameAtParent": "positionBaseAsset", + "properties": [ + { + "name": "beginBalance", + "type": "node", + "childType": "Begin Balance", + "autoAdd": true + }, + { + "name": "endBalance", + "type": "node", + "childType": "End Balance", + "autoAdd": true + }, + { + "name": "entryTargetSize", + "type": "node", + "childType": "Entry Target Size", + "autoAdd": true + }, + { + "name": "exitTargetSize", + "type": "node", + "childType": "Exit Target Size", + "autoAdd": true + }, + { + "name": "profitLoss", + "type": "node", + "childType": "Profit Loss", + "autoAdd": true + }, + { + "name": "ROI", + "type": "node", + "childType": "ROI", + "autoAdd": true + }, + { + "name": "hitFail", + "type": "node", + "childType": "Hit Fail", + "autoAdd": true + } + ] + }, + { + "type": "Position Quoted Asset", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Position->" + }, + "propertyNameAtParent": "positionQuotedAsset", + "properties": [ + { + "name": "beginBalance", + "type": "node", + "childType": "Begin Balance", + "autoAdd": true + }, + { + "name": "endBalance", + "type": "node", + "childType": "End Balance", + "autoAdd": true + }, + { + "name": "entryTargetSize", + "type": "node", + "childType": "Entry Target Size", + "autoAdd": true + }, + { + "name": "exitTargetSize", + "type": "node", + "childType": "Exit Target Size", + "autoAdd": true + }, + { + "name": "profitLoss", + "type": "node", + "childType": "Profit Loss", + "autoAdd": true + }, + { + "name": "ROI", + "type": "node", + "childType": "ROI", + "autoAdd": true + }, + { + "name": "hitFail", + "type": "node", + "childType": "Hit Fail", + "autoAdd": true + } + ] + }, + { + "type": "Order Statistics", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add User Defined Statistic", + "relatedUiObject": "User Defined Statistic", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Market Order->Limit Order->" + }, + "propertyNameAtParent": "orderStatistics", + "properties": [ + { + "name": "percentageFilled", + "type": "node", + "childType": "Percentage Filled", + "autoAdd": true + }, + { + "name": "actualRate", + "type": "node", + "childType": "Actual Rate", + "autoAdd": true + }, + { + "name": "days", + "type": "node", + "childType": "Days", + "autoAdd": true + }, + { + "name": "userDefinedStatistics", + "type": "array", + "childType": "User Defined Statistic", + "autoAdd": true + } + ] + }, + { + "type": "Order Base Asset", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Market Order->Limit Order->" + }, + "propertyNameAtParent": "orderBaseAsset", + "properties": [ + { + "name": "size", + "type": "node", + "childType": "Size", + "autoAdd": true + }, + { + "name": "sizeFilled", + "type": "node", + "childType": "Size Filled", + "autoAdd": true + }, + { + "name": "feesPaid", + "type": "node", + "childType": "Fees Paid", + "autoAdd": true + } + ] + }, + { + "type": "Order Quoted Asset", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Market Order->Limit Order->" + }, + "propertyNameAtParent": "orderQuotedAsset", + "properties": [ + { + "name": "size", + "type": "node", + "childType": "Size", + "autoAdd": true + }, + { + "name": "sizeFilled", + "type": "node", + "childType": "Size Filled", + "autoAdd": true + }, + { + "name": "feesPaid", + "type": "node", + "childType": "Fees Paid", + "autoAdd": true + } + ] + }, + { + "type": "User Defined Statistic", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "formula", + "label": "Add Formula", + "relatedUiObject": "Formula", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "This", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode Statistics->Position Statistics->" + }, + "propertyNameAtParent": "userDefinedStatistics", + "properties": [ + { + "name": "formula", + "type": "node", + "childType": "Formula", + "autoAdd": true + } + ] + }, + { + "type": "Profit Loss", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode Statistics->Position Statistics->Position Base Asset->Position Quoted Asset->Episode Base Asset->Episode Quoted Asset->" + }, + "propertyNameAtParent": "profitLoss" + }, + { + "type": "Hit Ratio", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode Base Asset->Episode Quoted Asset->" + }, + "propertyNameAtParent": "hitRatio" + }, + { + "type": "Days", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode Statistics->Position Statistics->Order Statistics->" + }, + "propertyNameAtParent": "days" + }, + { + "type": "Size Filled", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Order Base Asset->Order Quoted Asset->Stage Base Asset->Stage Quoted Asset->" + }, + "propertyNameAtParent": "sizeFilled" + }, + { + "type": "Percentage Filled", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Order Statistics->" + }, + "propertyNameAtParent": "percentageFilled" + }, + { + "type": "Actual Rate", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Order Statistics->" + }, + "propertyNameAtParent": "search" + }, + { + "type": "Fees Paid", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Order Base Asset->Order Quoted Asset->Stage Base Asset->Stage Quoted Asset->" + }, + "propertyNameAtParent": "feesPaid" + }, + { + "type": "ROI", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode Statistics->Position Statistics->Position Base Asset->Position Quoted Asset->Episode Base Asset->Episode Quoted Asset->" + }, + "propertyNameAtParent": "ROI" + }, + { + "type": "Annualized Rate Of Return", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode Statistics->Episode Base Asset->Episode Quoted Asset->" + }, + "propertyNameAtParent": "annualizedRateOfReturn" + }, + { + "type": "Hit Fail", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": \"\"\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode Statistics->Position Statistics->Position Base Asset->Position Quoted Asset->Episode Base Asset->Episode Quoted Asset->" + }, + "propertyNameAtParent": "hitFail" + }, + { + "type": "Current", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Trading Engine->" + }, + "propertyNameAtParent": "current", + "properties": [ + { + "name": "episode", + "type": "node", + "childType": "Episode", + "autoAdd": true + }, + { + "name": "strategy", + "type": "node", + "childType": "Strategy", + "autoAdd": true + }, + { + "name": "position", + "type": "node", + "childType": "Position", + "autoAdd": true + }, + { + "name": "strategyTriggerStage", + "type": "node", + "childType": "Strategy Trigger Stage", + "autoAdd": true + }, + { + "name": "strategyOpenStage", + "type": "node", + "childType": "Strategy Open Stage", + "autoAdd": true + }, + { + "name": "strategyManageStage", + "type": "node", + "childType": "Strategy Manage Stage", + "autoAdd": true + }, + { + "name": "strategyCloseStage", + "type": "node", + "childType": "Strategy Close Stage", + "autoAdd": true + } + ] + }, + { + "type": "Balance", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode->" + }, + "propertyNameAtParent": "balance" + }, + { + "type": "Begin Balance", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode Base Asset->Episode Quoted Asset->" + }, + "propertyNameAtParent": "beginBalance" + }, + { + "type": "End Balance", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode Base Asset->Episode Quoted Asset->" + }, + "propertyNameAtParent": "endBalance" + }, + { + "type": "Distance To Event", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode->" + }, + "propertyNameAtParent": "distanceToEvent", + "properties": [ + { + "name": "triggerOn", + "type": "node", + "childType": "Trigger On", + "autoAdd": true + }, + { + "name": "triggerOff", + "type": "node", + "childType": "Trigger Off", + "autoAdd": true + }, + { + "name": "takePosition", + "type": "node", + "childType": "Take Position", + "autoAdd": true + }, + { + "name": "closePosition", + "type": "node", + "childType": "Close Position", + "autoAdd": true + }, + { + "name": "nextPhase", + "type": "node", + "childType": "Next Phase", + "autoAdd": true + }, + { + "name": "moveToPhase", + "type": "node", + "childType": "Move To Phase", + "autoAdd": true + }, + { + "name": "createOrder", + "type": "node", + "childType": "Create Order", + "autoAdd": true + }, + { + "name": "cancelOrder", + "type": "node", + "childType": "Cancel Order", + "autoAdd": true + }, + { + "name": "closeOrder", + "type": "node", + "childType": "Close Order", + "autoAdd": true + } + ] + }, + { + "type": "Trigger On", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Distance To Event->" + }, + "propertyNameAtParent": "triggerOn" + }, + { + "type": "Trigger Off", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Distance To Event->" + }, + "propertyNameAtParent": "triggerOff" + }, + { + "type": "Take Position", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Distance To Event->" + }, + "propertyNameAtParent": "takePosition" + }, + { + "type": "Close Position", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Distance To Event->" + }, + "propertyNameAtParent": "closePosition" + }, + { + "type": "Next Phase", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Distance To Event->" + }, + "propertyNameAtParent": "nextPhase" + }, + { + "type": "Move To Phase", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Distance To Event->" + }, + "propertyNameAtParent": "moveToPhase" + }, + { + "type": "Create Order", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Distance To Event->" + }, + "propertyNameAtParent": "createOrder" + }, + { + "type": "Cancel Order", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Distance To Event->" + }, + "propertyNameAtParent": "cancelOrder" + }, + { + "type": "Close Order", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Distance To Event->" + }, + "propertyNameAtParent": "closeOrder" + }, + { + "type": "Strategy Trigger Stage", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Current->" + }, + "propertyNameAtParent": "strategyTriggerStage", + "properties": [ + { + "name": "begin", + "type": "node", + "childType": "Begin", + "autoAdd": true + }, + { + "name": "end", + "type": "node", + "childType": "End", + "autoAdd": true + }, + { + "name": "exitType", + "type": "node", + "childType": "Exit Type", + "autoAdd": true + }, + { + "name": "status", + "type": "node", + "childType": "Status", + "autoAdd": true + }, + { + "name": "beginRate", + "type": "node", + "childType": "Begin Rate", + "autoAdd": true + }, + { + "name": "endRate", + "type": "node", + "childType": "End Rate", + "autoAdd": true + } + ] + }, + { + "type": "Strategy Manage Stage", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Current->" + }, + "propertyNameAtParent": "strategyManageStage", + "properties": [ + { + "name": "begin", + "type": "node", + "childType": "Begin", + "autoAdd": true + }, + { + "name": "end", + "type": "node", + "childType": "End", + "autoAdd": true + }, + { + "name": "exitType", + "type": "node", + "childType": "Exit Type", + "autoAdd": true + }, + { + "name": "status", + "type": "node", + "childType": "Status", + "autoAdd": true + }, + { + "name": "beginRate", + "type": "node", + "childType": "Begin Rate", + "autoAdd": true + }, + { + "name": "endRate", + "type": "node", + "childType": "End Rate", + "autoAdd": true + } + ] + }, + { + "type": "Strategy Open Stage", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Current->" + }, + "propertyNameAtParent": "strategyOpenStage", + "properties": [ + { + "name": "begin", + "type": "node", + "childType": "Begin", + "autoAdd": true + }, + { + "name": "end", + "type": "node", + "childType": "End", + "autoAdd": true + }, + { + "name": "exitType", + "type": "node", + "childType": "Exit Type", + "autoAdd": true + }, + { + "name": "status", + "type": "node", + "childType": "Status", + "autoAdd": true + }, + { + "name": "beginRate", + "type": "node", + "childType": "Begin Rate", + "autoAdd": true + }, + { + "name": "endRate", + "type": "node", + "childType": "End Rate", + "autoAdd": true + }, + { + "name": "stageDefinedIn", + "type": "node", + "childType": "Stage Defined In", + "autoAdd": true + }, + { + "name": "stageBaseAsset", + "type": "node", + "childType": "Stage Base Asset", + "autoAdd": true + }, + { + "name": "stageQuotedAsset", + "type": "node", + "childType": "Stage Quoted Asset", + "autoAdd": true + } + ] + }, + { + "type": "Strategy Close Stage", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Current->" + }, + "propertyNameAtParent": "strategyCloseStage", + "properties": [ + { + "name": "begin", + "type": "node", + "childType": "Begin", + "autoAdd": true + }, + { + "name": "end", + "type": "node", + "childType": "End", + "autoAdd": true + }, + { + "name": "exitType", + "type": "node", + "childType": "Exit Type", + "autoAdd": true + }, + { + "name": "status", + "type": "node", + "childType": "Status", + "autoAdd": true + }, + { + "name": "beginRate", + "type": "node", + "childType": "Begin Rate", + "autoAdd": true + }, + { + "name": "endRate", + "type": "node", + "childType": "End Rate", + "autoAdd": true + }, + { + "name": "stageDefinedIn", + "type": "node", + "childType": "Stage Defined In", + "autoAdd": true + }, + { + "name": "stageBaseAsset", + "type": "node", + "childType": "Stage Base Asset", + "autoAdd": true + }, + { + "name": "stageQuotedAsset", + "type": "node", + "childType": "Stage Quoted Asset", + "autoAdd": true + } + ] + }, + { + "type": "Strategy", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Current->Last->" + }, + "propertyNameAtParent": "strategy", + "properties": [ + { + "name": "serialNumber", + "type": "node", + "childType": "Serial Number", + "autoAdd": true + }, + { + "name": "identifier", + "type": "node", + "childType": "Identifier", + "autoAdd": true + }, + { + "name": "begin", + "type": "node", + "childType": "Begin", + "autoAdd": true + }, + { + "name": "end", + "type": "node", + "childType": "End", + "autoAdd": true + }, + { + "name": "beginRate", + "type": "node", + "childType": "Begin Rate", + "autoAdd": true + }, + { + "name": "endRate", + "type": "node", + "childType": "End Rate", + "autoAdd": true + }, + { + "name": "status", + "type": "node", + "childType": "Status", + "autoAdd": true + }, + { + "name": "exitType", + "type": "node", + "childType": "Exit Type", + "autoAdd": true + }, + { + "name": "situationName", + "type": "node", + "childType": "Situation Name", + "autoAdd": true + }, + { + "name": "index", + "type": "node", + "childType": "Index", + "autoAdd": true + }, + { + "name": "strategyName", + "type": "node", + "childType": "Strategy Name", + "autoAdd": true + }, + { + "name": "strategyCounters", + "type": "node", + "childType": "Strategy Counters", + "autoAdd": true + } + ] + }, + { + "type": "Strategy Name", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": \"\"\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Strategy->" + }, + "propertyNameAtParent": "strategyName" + }, + { + "type": "Index", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Strategy->Candle->" + }, + "propertyNameAtParent": "index" + }, + { + "type": "Status", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": \"Not Open\"\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode->Strategy->Position->Market Order->Limit Order->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->" + }, + "propertyNameAtParent": "status" + }, + { + "type": "Situation Name", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": \"\"\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Strategy->Position->" + }, + "propertyNameAtParent": "situationName" + }, + { + "type": "Algorithm Name", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": \"\"\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Market Order->Limit Order->" + }, + "propertyNameAtParent": "algorithmName" + }, + { + "type": "Order Name", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": \"\"\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Market Order->Limit Order->" + }, + "propertyNameAtParent": "orderName" + }, + { + "type": "Serial Number", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode->Strategy->Position->Market Order->Limit Order->" + }, + "propertyNameAtParent": "serialNumber" + }, + { + "type": "Identifier", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": \"\"\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode->Strategy->Position->Market Order->Limit Order->" + }, + "propertyNameAtParent": "identifier" + }, + { + "type": "Exchange Id", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": \"\"\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Market Order->Limit Order->" + }, + "propertyNameAtParent": "exchangeId" + }, + { + "type": "Lock", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": \"Open\"\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Market Order->Limit Order->" + }, + "propertyNameAtParent": "lock" + }, + { + "type": "Begin", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode->Strategy->Position->Candle->Cycle->Market Order->Limit Order->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->" + }, + "propertyNameAtParent": "begin" + }, + { + "type": "End", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode->Strategy->Position->Candle->Cycle->Market Order->Limit Order->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->" + }, + "propertyNameAtParent": "end" + }, + { + "type": "Open", + "menuItems": [ + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Candle->" + }, + "propertyNameAtParent": "open" + }, + { + "type": "Close", + "menuItems": [ + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Candle->" + }, + "propertyNameAtParent": "close" + }, + { + "type": "Min", + "menuItems": [ + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Candle->" + }, + "propertyNameAtParent": "min" + }, + { + "type": "Max", + "menuItems": [ + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Candle->" + }, + "propertyNameAtParent": "max" + }, + { + "type": "Begin Rate", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode->Strategy->Position->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->" + }, + "propertyNameAtParent": "beginRate" + }, + { + "type": "End Rate", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode->Strategy->Position->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->" + }, + "propertyNameAtParent": "endRate" + }, + { + "type": "Position", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Current->Last->" + }, + "propertyNameAtParent": "position", + "properties": [ + { + "name": "serialNumber", + "type": "node", + "childType": "Serial Number", + "autoAdd": true + }, + { + "name": "identifier", + "type": "node", + "childType": "Identifier", + "autoAdd": true + }, + { + "name": "begin", + "type": "node", + "childType": "Begin", + "autoAdd": true + }, + { + "name": "end", + "type": "node", + "childType": "End", + "autoAdd": true + }, + { + "name": "beginRate", + "type": "node", + "childType": "Begin Rate", + "autoAdd": true + }, + { + "name": "endRate", + "type": "node", + "childType": "End Rate", + "autoAdd": true + }, + { + "name": "status", + "type": "node", + "childType": "Status", + "autoAdd": true + }, + { + "name": "exitType", + "type": "node", + "childType": "Exit Type", + "autoAdd": true + }, + { + "name": "situationName", + "type": "node", + "childType": "Situation Name", + "autoAdd": true + }, + { + "name": "entryTargetRate", + "type": "node", + "childType": "Entry Target Rate", + "autoAdd": true + }, + { + "name": "exitTargetRate", + "type": "node", + "childType": "Exit Target Rate", + "autoAdd": true + }, + { + "name": "stopLoss", + "type": "node", + "childType": "Stop Loss", + "autoAdd": true + }, + { + "name": "takeProfit", + "type": "node", + "childType": "Take Profit", + "autoAdd": true + }, + { + "name": "positionCounters", + "type": "node", + "childType": "Position Counters", + "autoAdd": true + }, + { + "name": "positionStatistics", + "type": "node", + "childType": "Position Statistics", + "autoAdd": true + }, + { + "name": "positionBaseAsset", + "type": "node", + "childType": "Position Base Asset", + "autoAdd": true + }, + { + "name": "positionQuotedAsset", + "type": "node", + "childType": "Position Quoted Asset", + "autoAdd": true + } + ] + }, + { + "type": "Rate", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Market Order->Limit Order->" + }, + "propertyNameAtParent": "rate" + }, + { + "type": "Entry Target Rate", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Position->" + }, + "propertyNameAtParent": "entryTargetRate" + }, + { + "type": "Exit Target Rate", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Position->" + }, + "propertyNameAtParent": "exitTargetRate" + }, + { + "type": "Stage Defined In", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": \"\"\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Strategy Open Stage->Strategy Close Stage->" + }, + "propertyNameAtParent": "stageDefinedIn" + }, + { + "type": "Size", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Order Base Asset->Order Quoted Asset->" + }, + "propertyNameAtParent": "size" + }, + { + "type": "Entry Target Size", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Position Base Asset->Position Quoted Asset->" + }, + "propertyNameAtParent": "entryTargetSize" + }, + { + "type": "Exit Target Size", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Position Base Asset->Position Quoted Asset->" + }, + "propertyNameAtParent": "exitTargetSize" + }, + { + "type": "Size Placed", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Stage Base Asset->Stage Quoted Asset->" + }, + "propertyNameAtParent": "sizePlaced" + }, + { + "type": "Target Size", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Stage Base Asset->Stage Quoted Asset->" + }, + "propertyNameAtParent": "targetSize" + }, + { + "type": "Exit Type", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": \"No Exit\"\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode->Strategy->->Position->Market Order->Limit Order->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->" + }, + "propertyNameAtParent": "exitType" + }, + { + "type": "Process Date", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": 0\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode->" + }, + "propertyNameAtParent": "processDate" + }, + { + "type": "Head Of The Market", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{\n\"initialValue\": false\n}" + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode->" + }, + "propertyNameAtParent": "headOfTheMarket" + }, + { + "type": "Last", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Trading Engine->" + }, + "propertyNameAtParent": "last", + "properties": [ + { + "name": "position", + "type": "node", + "childType": "Position", + "autoAdd": true + }, + { + "name": "strategy", + "type": "node", + "childType": "Strategy", + "autoAdd": true + }, + { + "name": "limitOrders", + "type": "node", + "childType": "Limit Order", + "autoAdd": true + }, + { + "name": "marketOrders", + "type": "node", + "childType": "Market Order", + "autoAdd": true + } + ] + }, + { + "type": "Candle", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode->" + }, + "propertyNameAtParent": "candle", + "properties": [ + { + "name": "begin", + "type": "node", + "childType": "Begin", + "autoAdd": true + }, + { + "name": "end", + "type": "node", + "childType": "End", + "autoAdd": true + }, + { + "name": "open", + "type": "node", + "childType": "Open", + "autoAdd": true + }, + { + "name": "close", + "type": "node", + "childType": "Close", + "autoAdd": true + }, + { + "name": "min", + "type": "node", + "childType": "Min", + "autoAdd": true + }, + { + "name": "max", + "type": "node", + "childType": "Max", + "autoAdd": true + }, + { + "name": "index", + "type": "node", + "childType": "Index", + "autoAdd": true + } + ] + }, + { + "type": "Cycle", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Copy Node Path", + "label": "Copy Node Path", + "iconPathOn": "copy-path", + "iconPathOff": "copy-path", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Episode->" + }, + "propertyNameAtParent": "cycle", + "properties": [ + { + "name": "begin", + "type": "node", + "childType": "Begin", + "autoAdd": true + }, + { + "name": "end", + "type": "node", + "childType": "End", + "autoAdd": true + } + ] + }, + { + "type": "Exchange Orders", + "menuItems": [ + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "marketBuyOrders", + "label": "Add Market Buy Orders", + "relatedUiObject": "Market Buy Orders", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "marketSellOrders", + "label": "Add Market Sell Orders", + "relatedUiObject": "Market Sell Orders", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "limitBuyOrders", + "label": "Add Limit Buy Orders", + "relatedUiObject": "Limit Buy Orders", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "limitSellOrders", + "label": "Add Limit Sell Orders", + "relatedUiObject": "Limit Sell Orders", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Trading Engine->" + }, + "propertyNameAtParent": "exchangeOrders", + "properties": [ + { + "name": "marketBuyOrders", + "type": "node", + "childType": "Market Buy Orders", + "autoAdd": true + }, + { + "name": "marketSellOrders", + "type": "node", + "childType": "Market Sell Orders", + "autoAdd": true + }, + { + "name": "limitBuyOrders", + "type": "node", + "childType": "Limit Buy Orders", + "autoAdd": true + }, + { + "name": "limitSellOrders", + "type": "node", + "childType": "Limit Sell Orders", + "autoAdd": true + } + ] + }, + { + "type": "Market Buy Orders", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Market Order", + "relatedUiObject": "Market Order", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Exchange Orders->" + }, + "propertyNameAtParent": "marketBuyOrders", + "properties": [ + { + "name": "marketOrders", + "type": "array", + "childType": "Market Order", + "autoAdd": false + } + ] + }, + { + "type": "Market Order", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Trading Engine", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Market Buy Orders->Market Sell Orders->Last->" + }, + "propertyNameAtParent": "marketOrders", + "properties": [ + { + "name": "serialNumber", + "type": "node", + "childType": "Serial Number", + "autoAdd": true + }, + { + "name": "identifier", + "type": "node", + "childType": "Identifier", + "autoAdd": true + }, + { + "name": "exchangeId", + "type": "node", + "childType": "Exchange Id", + "autoAdd": true + }, + { + "name": "begin", + "type": "node", + "childType": "Begin", + "autoAdd": true + }, + { + "name": "end", + "type": "node", + "childType": "End", + "autoAdd": true + }, + { + "name": "rate", + "type": "node", + "childType": "Rate", + "autoAdd": true + }, + { + "name": "exitType", + "type": "node", + "childType": "Exit Type", + "autoAdd": true + }, + { + "name": "status", + "type": "node", + "childType": "Status", + "autoAdd": true + }, + { + "name": "orderName", + "type": "node", + "childType": "Order Name", + "autoAdd": true + }, + { + "name": "algorithmName", + "type": "node", + "childType": "Algorithm Name", + "autoAdd": true + }, + { + "name": "situationName", + "type": "node", + "childType": "Situation Name", + "autoAdd": true + }, + { + "name": "orderCounters", + "type": "node", + "childType": "Order Counters", + "autoAdd": true + }, + { + "name": "lock", + "type": "node", + "childType": "Lock", + "autoAdd": true + }, + { + "name": "orderBaseAsset", + "type": "node", + "childType": "Order Base Asset", + "autoAdd": true + }, + { + "name": "orderQuotedAsset", + "type": "node", + "childType": "Order Quoted Asset", + "autoAdd": true + }, + { + "name": "orderStatistics", + "type": "node", + "childType": "Order Statistics", + "autoAdd": true + } + ] + }, + { + "type": "Market Sell Orders", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Market Order", + "relatedUiObject": "Market Order", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Exchange Orders->" + }, + "propertyNameAtParent": "marketSellOrders", + "properties": [ + { + "name": "marketOrders", + "type": "array", + "childType": "Market Order", + "autoAdd": false + } + ] + }, + { + "type": "Limit Buy Orders", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Limit Order", + "relatedUiObject": "Limit Order", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Exchange Orders->" + }, + "propertyNameAtParent": "limitBuyOrders", + "properties": [ + { + "name": "limitOrders", + "type": "array", + "childType": "Limit Order", + "autoAdd": false + } + ] + }, + { + "type": "Limit Sell Orders", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Limit Order", + "relatedUiObject": "Limit Order", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Exchange Orders->" + }, + "propertyNameAtParent": "limitSellOrders", + "properties": [ + { + "name": "limitOrders", + "type": "array", + "childType": "Limit Order", + "autoAdd": false + } + ] + }, + { + "type": "Limit Order", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Trading Engine", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Limit Buy Orders->Limit Sell Orders->Last->" + }, + "propertyNameAtParent": "limitOrders", + "properties": [ + { + "name": "serialNumber", + "type": "node", + "childType": "Serial Number", + "autoAdd": true + }, + { + "name": "identifier", + "type": "node", + "childType": "Identifier", + "autoAdd": true + }, + { + "name": "exchangeId", + "type": "node", + "childType": "Exchange Id", + "autoAdd": true + }, + { + "name": "begin", + "type": "node", + "childType": "Begin", + "autoAdd": true + }, + { + "name": "end", + "type": "node", + "childType": "End", + "autoAdd": true + }, + { + "name": "rate", + "type": "node", + "childType": "Rate", + "autoAdd": true + }, + { + "name": "exitType", + "type": "node", + "childType": "Exit Type", + "autoAdd": true + }, + { + "name": "status", + "type": "node", + "childType": "Status", + "autoAdd": true + }, + { + "name": "orderName", + "type": "node", + "childType": "Order Name", + "autoAdd": true + }, + { + "name": "algorithmName", + "type": "node", + "childType": "Algorithm Name", + "autoAdd": true + }, + { + "name": "situationName", + "type": "node", + "childType": "Situation Name", + "autoAdd": true + }, + { + "name": "orderCounters", + "type": "node", + "childType": "Order Counters", + "autoAdd": true + }, + { + "name": "lock", + "type": "node", + "childType": "Lock", + "autoAdd": true + }, + { + "name": "orderBaseAsset", + "type": "node", + "childType": "Order Base Asset", + "autoAdd": true + }, + { + "name": "orderQuotedAsset", + "type": "node", + "childType": "Order Quoted Asset", + "autoAdd": true + }, + { + "name": "orderStatistics", + "type": "node", + "childType": "Order Statistics", + "autoAdd": true + } + ] + }, { "type": "Parameters", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#parameters", "menuItems": [ { "action": "Add Missing Children", @@ -1834,7 +7585,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Parameters", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -1843,20 +7594,19 @@ "addLeftIcons": true, "level": 2, "chainAttachesTo": { - "compatibleTypes": "->Trading System->Backtesting Session->Live Trading Session->Paper Trading Session->Forward Testing Session->" + "compatibleTypes": "->Backtesting Session->Live Trading Session->Paper Trading Session->Forward Testing Session->" }, - "icon": "settings", "properties": [ { - "name": "baseAsset", + "name": "sessionBaseAsset", "type": "node", - "childType": "Base Asset", + "childType": "Session Base Asset", "autoAdd": true }, { - "name": "quotedAsset", + "name": "sessionQuotedAsset", "type": "node", - "childType": "Quoted Asset", + "childType": "Session Quoted Asset", "autoAdd": true }, { @@ -1882,68 +7632,95 @@ "type": "node", "childType": "Fee Structure", "autoAdd": true + }, + { + "name": "snapshots", + "type": "node", + "childType": "Snapshots", + "autoAdd": true + }, + { + "name": "heartbeats", + "type": "node", + "childType": "Heartbeats", + "autoAdd": true + }, + { + "name": "userDefinedParameters", + "type": "node", + "childType": "User Defined Parameters", + "autoAdd": true } ], "propertyNameAtParent": "parameters" }, { - "type": "Base Asset", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#base-asset", + "type": "Trading System Reference", "menuItems": [ - { - "action": "Configure Base Asset", - "label": "Configure Base Asset", - "iconPathOn": "settings", - "iconPathOff": "settings", - "actionFunction": "uiObject.configEditor.activate" - }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Base Asset", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], - "isTitleAllwaysVisible": true, - "initialValues": { - "code": "{\n\"initialBalance\": 1,\n\"minimumBalance\": 0.5\n}" - }, - "addLeftIcons": true, - "editors": { - "config": true - }, - "level": 3, - "referenceAttachesTo": { - "compatibleTypes": "->Exchange Account Asset->" - }, - "chainAttachesTo": { - "compatibleTypes": "->Parameters->" - }, - "icon": "asset", - "alternativeIcons": "Use Reference Grandparent", "title": [ - "Use Reference Grandparent" + "Use Reference Parent" ], - "propertyNameAtParent": "baseAsset" + "addLeftIcons": true, + "level": 2, + "chainAttachesTo": { + "compatibleTypes": "->Backtesting Session->Live Trading Session->Paper Trading Session->Forward Testing Session->" + }, + "referenceAttachesTo": { + "compatibleTypes": "->Trading System->" + }, + "propertyNameAtParent": "tradingSystemReference" }, { - "type": "Quoted Asset", + "type": "Trading Engine Reference", "menuItems": [ { - "action": "Configure Quoted Asset", - "label": "Configure Quoted Asset", - "iconPathOn": "settings", - "iconPathOff": "settings", + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "title": [ + "Use Reference Parent" + ], + "addLeftIcons": true, + "level": 2, + "chainAttachesTo": { + "compatibleTypes": "->Backtesting Session->Live Trading Session->Paper Trading Session->Forward Testing Session->" + }, + "referenceAttachesTo": { + "compatibleTypes": "->Trading Engine->" + }, + "propertyNameAtParent": "tradingEngineReference" + }, + { + "type": "Session Base Asset", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "actionFunction": "uiObject.configEditor.activate" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Quoted Asset", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -1951,7 +7728,7 @@ ], "isTitleAllwaysVisible": true, "initialValues": { - "code": "{\n\"initialBalance\": 0\n}" + "config": "{\n\"initialBalance\": 1,\n\"minimumBalance\": 0.5\n}" }, "addLeftIcons": true, "editors": { @@ -1964,22 +7741,61 @@ "chainAttachesTo": { "compatibleTypes": "->Parameters->" }, - "icon": "asset", "alternativeIcons": "Use Reference Grandparent", "title": [ "Use Reference Grandparent" ], - "propertyNameAtParent": "quotedAsset" + "propertyNameAtParent": "sessionBaseAsset" + }, + { + "type": "Session Quoted Asset", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "isTitleAllwaysVisible": true, + "initialValues": { + "config": "{\n\"initialBalance\": 0\n}" + }, + "addLeftIcons": true, + "editors": { + "config": true + }, + "level": 3, + "referenceAttachesTo": { + "compatibleTypes": "->Exchange Account Asset->" + }, + "chainAttachesTo": { + "compatibleTypes": "->Parameters->" + }, + "alternativeIcons": "Use Reference Grandparent", + "title": [ + "Use Reference Grandparent" + ], + "propertyNameAtParent": "sessionQuotedAsset" }, { "type": "Market Base Asset", - "docURL": "https://docs.superalgos.org/suite-hierarchy-crypto-ecosystem.html#market-base-asset", "menuItems": [ { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Base Asset", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -1994,7 +7810,6 @@ "chainAttachesTo": { "compatibleTypes": "->Market->" }, - "icon": "asset", "alternativeIcons": "Use Reference Parent", "title": [ "Use Reference Parent" @@ -2003,13 +7818,12 @@ }, { "type": "Market Quoted Asset", - "docURL": "https://docs.superalgos.org/suite-hierarchy-crypto-ecosystem.html#market-quoted-asset", "menuItems": [ { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Base Asset", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -2024,81 +7838,34 @@ "chainAttachesTo": { "compatibleTypes": "->Market->" }, - "icon": "asset", "alternativeIcons": "Use Reference Parent", "title": [ "Use Reference Parent" ], "propertyNameAtParent": "quotedAsset" }, - { - "type": "Market Reference", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#market-reference", - "menuItems": [ - { - "action": "Add UI Object", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "keyInstance", - "label": "Add Key Instance", - "relatedUiObject": "Key Instance", - "actionFunction": "payload.onMenuItemClick" - }, - { - "action": "Delete UI Object", - "askConfirmation": true, - "confirmationLabel": "Confirm to Delete", - "label": "Delete Base Asset", - "iconPathOn": "delete", - "iconPathOff": "delete", - "actionFunction": "payload.onMenuItemClick" - } - ], - "isTitleAllwaysVisible": true, - "title": [ - "Use Reference Parent Parent Parent", - "Use Reference Parent" - ], - "addLeftIcons": true, - "level": 3, - "referenceAttachesTo": { - "compatibleTypes": "->Market->" - }, - "chainAttachesTo": { - "compatibleTypes": "->Sensor Process Instance->Indicator Process Instance->Trading Process Instance->" - }, - "properties": [ - { - "name": "keyInstance", - "type": "node", - "childType": "Key Instance" - } - ], - "icon": "market", - "propertyNameAtParent": "marketReference" - }, { "type": "Time Range", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#time-range", "menuItems": [ { - "action": "Configure Time Range", - "label": "Configure Time Range", - "iconPathOn": "settings", - "iconPathOff": "settings", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "actionFunction": "uiObject.configEditor.activate" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Time Range", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], "initialValues": { - "code": "{ \n\"initialDatetime\": \"2019-07-01T00:00:00.000Z\",\n\"finalDatetime\": \"2019-09-01T00:00:00.000Z\"\n}" + "config": "{ \n\"initialDatetime\": \"2020-09-01\",\n\"finalDatetime\": \"2020-09-02\" \n}" }, "addLeftIcons": true, "editors": { @@ -2108,32 +7875,30 @@ "chainAttachesTo": { "compatibleTypes": "->Parameters->" }, - "icon": "schedule", "propertyNameAtParent": "timeRange" }, { "type": "Time Frame", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#time-frame", "menuItems": [ { - "action": "Configure Time Frame", - "label": "Configure Time Frame", - "iconPathOn": "settings", - "iconPathOff": "settings", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "actionFunction": "uiObject.configEditor.activate" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Time Frame", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], "initialValues": { - "code": "{ \n\"value\": \"01-hs\"\n}" + "config": "{ \n\"label\": \"01-hs\"\n}" }, "addLeftIcons": true, "editors": { @@ -2143,32 +7908,30 @@ "chainAttachesTo": { "compatibleTypes": "->Parameters->" }, - "icon": "time-period", "propertyNameAtParent": "timeFrame" }, { "type": "Slippage", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#slippage", "menuItems": [ { - "action": "Configure Slippage", - "label": "Configure Slippage", - "iconPathOn": "settings", - "iconPathOff": "settings", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "actionFunction": "uiObject.configEditor.activate" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Slippage", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], "initialValues": { - "code": "{ \n\"positionRate\": 0.1,\n\"stopLoss\": 0.2,\n\"takeProfit\": 0.3\n}" + "config": "{ \n\"positionRate\": 0.1,\n\"stopLoss\": 0.2,\n\"takeProfit\": 0.3\n}" }, "addLeftIcons": true, "editors": { @@ -2178,32 +7941,30 @@ "chainAttachesTo": { "compatibleTypes": "->Parameters->" }, - "icon": "support", "propertyNameAtParent": "slippage" }, { "type": "Fee Structure", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#fee-structure", "menuItems": [ { - "action": "Configure Fee Structure", - "label": "Configure Fee Structure", - "iconPathOn": "settings", - "iconPathOff": "settings", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "actionFunction": "uiObject.configEditor.activate" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Fee Structure", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], "initialValues": { - "code": "{ \n\"maker\": 0.15,\n\"taker\": 0.25\n}" + "config": "{ \n\"maker\": 0.1,\n\"taker\": 0.1\n}" }, "addLeftIcons": true, "editors": { @@ -2213,12 +7974,142 @@ "chainAttachesTo": { "compatibleTypes": "->Parameters->" }, - "icon": "sitemap", "propertyNameAtParent": "feeStructure" }, + { + "type": "Snapshots", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "initialValues": { + "config": "{ \n\"strategy\": true,\n\"position\": true\n}" + }, + "addLeftIcons": true, + "editors": { + "config": true + }, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Parameters->" + }, + "propertyNameAtParent": "snapshots" + }, + { + "type": "Heartbeats", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "initialValues": { + "config": "{ \n\"date\": true,\n\"candleIndex\": false\n}" + }, + "addLeftIcons": true, + "editors": { + "config": true + }, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Parameters->" + }, + "propertyNameAtParent": "heartbeats" + }, + { + "type": "User Defined Parameters", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "initialValues": { + "config": "{ \n\"param1Name\": \"A text string value example\",\n\"param2Name\": 0\n}" + }, + "addLeftIcons": true, + "editors": { + "config": true + }, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Parameters->" + }, + "propertyNameAtParent": "userDefinedParameters" + }, + { + "type": "Time Frames Filter", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "initialValues": { + "config": "{ \n\"dailyTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n\"marketTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\"]\n}" + }, + "addLeftIcons": true, + "editors": { + "config": true + }, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Indicator Bot Instance->" + }, + "propertyNameAtParent": "timeFramesFilter" + }, { "type": "Paper Trading Session", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#paper-trading-session", "menuItems": [ { "action": "Run Session", @@ -2232,39 +8123,45 @@ "secondaryWorkDoneLabel": "Session Stopped", "secondaryWorkFailedLabel": "Session Cannot be Stopped", "secondaryIcon": "stop", - "iconPathOn": "paper-plane", - "iconPathOff": "paper-plane", + "iconPathOn": "run", + "iconPathOff": "run", "actionFunction": "payload.onMenuItemClick" }, { - "action": "Add UI Object", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "parameters", - "label": "Add Parameters", - "relatedUiObject": "Parameters", + "action": "Resume Session", + "label": "Resume", + "workingLabel": "Resume Request Sent", + "workDoneLabel": "Session Running", + "workFailedLabel": "Session Cannot be Resumed", + "secondaryAction": "Stop Session", + "secondaryLabel": "Stop", + "secondaryWorkingLabel": "Stopping...", + "secondaryWorkDoneLabel": "Session Stopped", + "secondaryWorkFailedLabel": "Session Cannot be Stopped", + "secondaryIcon": "stop", + "iconPathOn": "resume", + "iconPathOff": "resume", "actionFunction": "payload.onMenuItemClick" }, { - "action": "Add UI Object", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "socialBots", - "label": "Add Social Bots", - "relatedUiObject": "Social Bots", - "actionFunction": "payload.onMenuItemClick" - }, - { - "action": "Configure Session", - "label": "Configure Session", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Session", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -2272,7 +8169,7 @@ ], "isTitleAllwaysVisible": true, "initialValues": { - "code": "{ \n\"folderName\": \"Type here the folder name where you want the logs of this process to be stored to.\"\n}" + "config": "{ \n\"folderName\": \"\"\n}" }, "addLeftIcons": true, "editors": { @@ -2285,7 +8182,6 @@ "chainAttachesTo": { "compatibleTypes": "->Trading Process Instance->" }, - "icon": "session-paper-trading", "properties": [ { "name": "parameters", @@ -2293,6 +8189,18 @@ "childType": "Parameters", "autoAdd": true }, + { + "name": "tradingSystemReference", + "type": "node", + "childType": "Trading System Reference", + "autoAdd": true + }, + { + "name": "tradingEngineReference", + "type": "node", + "childType": "Trading Engine Reference", + "autoAdd": true + }, { "name": "socialBots", "type": "node", @@ -2303,7 +8211,6 @@ }, { "type": "Forward Testing Session", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#forward-testing-session", "menuItems": [ { "action": "Run Session", @@ -2317,39 +8224,45 @@ "secondaryWorkDoneLabel": "Session Stopped", "secondaryWorkFailedLabel": "Session Cannot be Stopped", "secondaryIcon": "stop", - "iconPathOn": "paper-plane", - "iconPathOff": "paper-plane", + "iconPathOn": "run", + "iconPathOff": "run", "actionFunction": "payload.onMenuItemClick" }, { - "action": "Add UI Object", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "parameters", - "label": "Add Parameters", - "relatedUiObject": "Parameters", + "action": "Resume Session", + "label": "Resume", + "workingLabel": "Resume Request Sent", + "workDoneLabel": "Session Running", + "workFailedLabel": "Session Cannot be Resumed", + "secondaryAction": "Stop Session", + "secondaryLabel": "Stop", + "secondaryWorkingLabel": "Stopping...", + "secondaryWorkDoneLabel": "Session Stopped", + "secondaryWorkFailedLabel": "Session Cannot be Stopped", + "secondaryIcon": "stop", + "iconPathOn": "resume", + "iconPathOff": "resume", "actionFunction": "payload.onMenuItemClick" }, { - "action": "Add UI Object", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "socialBots", - "label": "Add Social Bots", - "relatedUiObject": "Social Bots", - "actionFunction": "payload.onMenuItemClick" - }, - { - "action": "Configure Session", - "label": "Configure Session", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Session", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -2357,7 +8270,7 @@ ], "isTitleAllwaysVisible": true, "initialValues": { - "code": "{ \n\"folderName\": \"Type here the folder name where you want the logs of this process to be stored to.\",\n\"balancePercentage\": \"Type here the the % of the balance to be used in this test.\"\n}" + "config": "{ \n\"folderName\": \"Type the name of the folder where you wish to store the logs of this session\",\n\"balancePercentage\": \"Type the percentage of the balance to be used in this test\"\n}" }, "addLeftIcons": true, "editors": { @@ -2370,7 +8283,6 @@ "chainAttachesTo": { "compatibleTypes": "->Trading Process Instance->" }, - "icon": "session-forward-testing", "properties": [ { "name": "parameters", @@ -2378,6 +8290,18 @@ "childType": "Parameters", "autoAdd": true }, + { + "name": "tradingSystemReference", + "type": "node", + "childType": "Trading System Reference", + "autoAdd": true + }, + { + "name": "tradingEngineReference", + "type": "node", + "childType": "Trading Engine Reference", + "autoAdd": true + }, { "name": "socialBots", "type": "node", @@ -2387,14 +8311,13 @@ "propertyNameAtParent": "session" }, { - "type": "Key Instance", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#key-instance", + "type": "Key Reference", "menuItems": [ { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This Key Instance", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -2406,17 +8329,15 @@ "addLeftIcons": true, "level": 5, "chainAttachesTo": { - "compatibleTypes": "->Market Reference->" + "compatibleTypes": "->Task->" }, "referenceAttachesTo": { "compatibleTypes": "->Exchange Account Key->" }, - "icon": "login", - "propertyNameAtParent": "keyInstance" + "propertyNameAtParent": "keyReference" }, { "type": "Live Trading Session", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#live-trading-session", "menuItems": [ { "action": "Run Session", @@ -2430,39 +8351,45 @@ "secondaryWorkDoneLabel": "Session Stopped", "secondaryWorkFailedLabel": "Session Cannot be Stopped", "secondaryIcon": "stop", - "iconPathOn": "paper-plane", - "iconPathOff": "paper-plane", + "iconPathOn": "run", + "iconPathOff": "run", "actionFunction": "payload.onMenuItemClick" }, { - "action": "Add UI Object", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "parameters", - "label": "Add Parameters", - "relatedUiObject": "Parameters", + "action": "Resume Session", + "label": "Resume", + "workingLabel": "Resume Request Sent", + "workDoneLabel": "Session Running", + "workFailedLabel": "Session Cannot be Resumed", + "secondaryAction": "Stop Session", + "secondaryLabel": "Stop", + "secondaryWorkingLabel": "Stopping...", + "secondaryWorkDoneLabel": "Session Stopped", + "secondaryWorkFailedLabel": "Session Cannot be Stopped", + "secondaryIcon": "stop", + "iconPathOn": "resume", + "iconPathOff": "resume", "actionFunction": "payload.onMenuItemClick" }, { - "action": "Add UI Object", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "socialBots", - "label": "Add Social Bots", - "relatedUiObject": "Social Bots", - "actionFunction": "payload.onMenuItemClick" - }, - { - "action": "Configure Session", - "label": "Configure Session", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Parameters", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Session", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -2473,6 +8400,9 @@ "editors": { "config": true }, + "initialValues": { + "config": "{ \n\"folderName\": \"Your-Session-Folder-Name\"\n}" + }, "level": 2, "referenceAttachesTo": { "compatibleTypes": "->Trading System->" @@ -2480,7 +8410,6 @@ "chainAttachesTo": { "compatibleTypes": "->Trading Process Instance->" }, - "icon": "session-live-trading", "properties": [ { "name": "parameters", @@ -2488,6 +8417,18 @@ "childType": "Parameters", "autoAdd": true }, + { + "name": "tradingSystemReference", + "type": "node", + "childType": "Trading System Reference", + "autoAdd": true + }, + { + "name": "tradingEngineReference", + "type": "node", + "childType": "Trading Engine Reference", + "autoAdd": true + }, { "name": "socialBots", "type": "node", @@ -2498,13 +8439,12 @@ }, { "type": "Sensor Bot Instance", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#sensor-bot-instance", "menuItems": [ { - "action": "Configure Bot Instance", - "label": "Configure Bot Instance", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, @@ -2518,7 +8458,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Bot Instance", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -2530,35 +8470,41 @@ "config": true }, "initialValues": { - "code": "{ \n\"startDate\": \"2020-01-01\"\n}" + "config": "{ \n\"startDate\": \"2020-01-01\"\n}" }, "level": 3, "chainAttachesTo": { "compatibleTypes": "->Task->" }, - "icon": "bot-sensor", "properties": [ { "name": "processes", "type": "array", "childType": "Sensor Process Instance", - "autoAdd": true + "autoAdd": false } ], "propertyNameAtParent": "bot" }, { "type": "Indicator Bot Instance", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#indicator-bot-instance", "menuItems": [ { - "action": "Configure Bot Instance", - "label": "Configure Bot Instance", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "timeFramesFilter", + "label": "Add Time Frames Filter", + "relatedUiObject": "Time Frames Filter", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Add UI Object", "label": "Add Process Instance", @@ -2569,7 +8515,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Bot Instance", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -2581,32 +8527,35 @@ "config": true }, "initialValues": { - "code": "{}" + "config": "{}" }, "level": 3, "chainAttachesTo": { "compatibleTypes": "->Task->" }, - "icon": "bot-indicator", "properties": [ { "name": "processes", "type": "array", "childType": "Indicator Process Instance", - "autoAdd": true + "autoAdd": false + }, + { + "name": "timeFramesFilter", + "type": "node", + "childType": "Time Frames Filter" } ], "propertyNameAtParent": "bot" }, { "type": "Data Mine", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#data-mine", "menuItems": [ { - "action": "Configure Data Mine", - "label": "Configure Data Mine", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, @@ -2622,6 +8571,61 @@ "relatedUiObject": "Indicator Bot", "actionFunction": "payload.onMenuItemClick" }, + { + "action": "Add UI Object", + "label": "Add Plotter", + "relatedUiObject": "Plotter", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "isTitleAllwaysVisible": true, + "isHierarchyHead": true, + "addLeftIcons": true, + "editors": { + "config": true + }, + "level": 0, + "initialValues": { + "config": "{ \n\"codeName\": \"Type a name with no spaces or dashes\"\n}" + }, + "properties": [ + { + "name": "sensorBots", + "type": "array", + "childType": "Sensor Bot" + }, + { + "name": "indicatorBots", + "type": "array", + "childType": "Indicator Bot" + }, + { + "name": "plotters", + "type": "array", + "childType": "Plotter" + } + ] + }, + { + "type": "Trading Mine", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "dontShowAtFullscreen": true, + "actionFunction": "uiObject.configEditor.activate" + }, { "action": "Add UI Object", "label": "Add Trading Bot", @@ -2638,7 +8642,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Data Mine", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -2650,22 +8654,11 @@ "editors": { "config": true }, - "level": 2, - "icon": "data-mine", + "level": 0, "initialValues": { - "code": "{ \n\"codeName\": \"Write here a name with no spaces or dashes.\"\n}" + "config": "{ \n\"codeName\": \"Type a name with no spaces or dashes\"\n}" }, "properties": [ - { - "name": "sensorBots", - "type": "array", - "childType": "Sensor Bot" - }, - { - "name": "indicatorBots", - "type": "array", - "childType": "Indicator Bot" - }, { "name": "tradingBots", "type": "array", @@ -2676,16 +8669,16 @@ "type": "array", "childType": "Plotter" } - ] + ] }, { "type": "Sensor Bot", "menuItems": [ { - "action": "Configure Bot", - "label": "Configure Bot", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, @@ -2705,7 +8698,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Sensor Bot", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -2717,13 +8710,12 @@ "config": true }, "initialValues": { - "code": "{ \n\"codeName\": \"\"\n}" + "config": "{ \n \"codeName\": \"\"\n}" }, - "level": 0, + "level": 1, "chainAttachesTo": { "compatibleTypes": "->Data Mine->" }, - "icon": "bot-sensor", "properties": [ { "name": "processes", @@ -2742,13 +8734,12 @@ }, { "type": "Process Definition", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#process-definition", "menuItems": [ { - "action": "Configure Process", - "label": "Configure Process", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, @@ -2762,7 +8753,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Process Definition", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -2774,13 +8765,12 @@ "config": true }, "initialValues": { - "code": "{ \n\"codeName\": \"\"\n}" + "config": "{ \n \"codeName\": \"Multi-Period-Market|Daily\", \n \"normalWaitTime\": 0, \n \"retryWaitTime\": 10000, \n \"framework\": { \n \"name\": \"Multi-Period-Market|Daily\" \n }\n}" }, "level": 1, "chainAttachesTo": { "compatibleTypes": "->Sensor Bot->Indicator Bot->Trading Bot->" }, - "icon": "process-definition", "properties": [ { "name": "processOutput", @@ -2817,7 +8807,6 @@ }, { "type": "Process Output", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#process-output", "menuItems": [ { "action": "Add UI Object", @@ -2825,11 +8814,26 @@ "relatedUiObject": "Output Dataset", "actionFunction": "payload.onMenuItemClick" }, + { + "action": "Add UI Object", + "label": "Add Output Dataset Folder", + "relatedUiObject": "Output Dataset Folder", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add All Output Datasets", + "label": "Add All Output Datasets", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Output Dataset", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Process Output", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -2840,20 +8844,24 @@ "chainAttachesTo": { "compatibleTypes": "->Process Definition->" }, - "icon": "process-output", "properties": [ { "name": "outputDatasets", "type": "array", "childType": "Output Dataset", - "autoAdd": true + "autoAdd": false + }, + { + "name": "outputDatasetFolders", + "type": "array", + "childType": "Output Dataset Folder", + "autoAdd": false } ], "propertyNameAtParent": "processOutput" }, { "type": "Process Dependencies", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#process-dependencies", "menuItems": [ { "action": "Add UI Object", @@ -2861,6 +8869,21 @@ "relatedUiObject": "Status Dependency", "actionFunction": "payload.onMenuItemClick" }, + { + "action": "Add UI Object", + "label": "Add Data Mine Dependencies", + "relatedUiObject": "Data Mine Data Dependencies", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add All Data Mine Dependencies", + "label": "Add All Data Mine Dependencies", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Data Mine Data Dependencies", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Add UI Object", "label": "Add Data Dependency", @@ -2871,7 +8894,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Dependencies", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -2882,7 +8905,6 @@ "chainAttachesTo": { "compatibleTypes": "->Process Definition->" }, - "icon": "process-dependencies", "properties": [ { "name": "statusDependencies", @@ -2894,20 +8916,25 @@ "name": "dataDependencies", "type": "array", "childType": "Data Dependency", - "autoAdd": true + "autoAdd": false + }, + { + "name": "dataMineDataDependencies", + "type": "array", + "childType": "Data Mine Data Dependencies", + "autoAdd": false } ], "propertyNameAtParent": "processDependencies" }, { "type": "Status Dependency", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#status-dependency", "menuItems": [ { - "action": "Configure Status Dependency", - "label": "Config Status Dependency", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, @@ -2915,14 +8942,14 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Status Dependency", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], "initialValues": { - "code": "{ \n\"mainUtility\": \"Self Reference|Market Starting Point|Market Ending Point\"\n}" + "config": "{ \n\"mainUtility\": \"Self Reference|Market Starting Point|Market Ending Point\"\n}" }, "addLeftIcons": true, "editors": { @@ -2940,18 +8967,16 @@ "chainAttachesTo": { "compatibleTypes": "->Process Dependencies->" }, - "icon": "status-dependency", "propertyNameAtParent": "statusDependencies" }, { "type": "Status Report", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#status-report", "menuItems": [ { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Status Report", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -2962,18 +8987,16 @@ "chainAttachesTo": { "compatibleTypes": "->Process Definition->" }, - "icon": "status-report", "propertyNameAtParent": "statusReport" }, { "type": "Execution Started Event", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#execution-started-event", "menuItems": [ { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Event", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -2990,20 +9013,18 @@ "compatibleTypes": "->Execution Finished Event->" }, "chainAttachesTo": { - "compatibleTypes": "->Process Definition->" + "compatibleTypes": "->Process Definition->Trading Process Instance->" }, - "icon": "execution-started-event", "propertyNameAtParent": "executionStartedEvent" }, { "type": "Execution Finished Event", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#execution-finished-event", "menuItems": [ { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Event", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3014,18 +9035,108 @@ "chainAttachesTo": { "compatibleTypes": "->Process Definition->" }, - "icon": "execution-finished-event", "propertyNameAtParent": "executionFinishedEvent" }, { - "type": "Product Definition", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#product-definition", + "type": "Output Dataset Folder", "menuItems": [ { - "action": "Configure Product", - "label": "Configure Product", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Add UI Object", + "label": "Add Output Dataset", + "relatedUiObject": "Output Dataset", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Output Dataset Folder", + "relatedUiObject": "Output Dataset Folder", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Process Output->Output Dataset Folder->" + }, + "properties": [ + { + "name": "outputDatasets", + "type": "array", + "childType": "Output Dataset", + "autoAdd": false + }, + { + "name": "outputDatasetFolders", + "type": "array", + "childType": "Output Dataset Folder", + "autoAdd": false + } + ], + "propertyNameAtParent": "outputDatasetFolders" + }, + { + "type": "Product Definition Folder", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Product Definition", + "relatedUiObject": "Product Definition", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Product Definition Folder", + "relatedUiObject": "Product Definition Folder", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Trading Bot->Product Definition Folder->" + }, + "properties": [ + { + "name": "products", + "type": "array", + "childType": "Product Definition", + "autoAdd": false + }, + { + "name": "productDefinitionFolders", + "type": "array", + "childType": "Product Definition Folder", + "autoAdd": false + } + ], + "propertyNameAtParent": "productDefinitionFolders" + }, + { + "type": "Product Definition", + "menuItems": [ + { + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, @@ -3053,7 +9164,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Product Definition", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3065,16 +9176,15 @@ "config": true }, "initialValues": { - "code": "{ \n\"codeName\": \"\"\n}" + "config": "{ \n \"codeName\": \"Product-Name\", \n \"singularVariableName\": \"productName\", \n \"pluralVariableName\": \"productNames\"\n}" }, "level": 3, "referenceAttachesTo": { "compatibleTypes": "->Plotter Module->" }, "chainAttachesTo": { - "compatibleTypes": "->Sensor Bot->Indicator Bot->Trading Bot->" + "compatibleTypes": "->Sensor Bot->Indicator Bot->Trading Bot->Product Definition Folder->" }, - "icon": "product-definition", "properties": [ { "name": "datasets", @@ -3103,13 +9213,12 @@ }, { "type": "Dataset Definition", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#dataset-definition", "menuItems": [ { - "action": "Configure Definition", - "label": "Configure Definition", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, @@ -3117,7 +9226,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Dataset", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3129,24 +9238,22 @@ "config": true }, "initialValues": { - "code": "{ \n\"codeName\": \"\"\n}" + "config": "{ \n\"configuration\": \"Get the appropriate configuration from the documentation\"\n}" }, "level": 2, "chainAttachesTo": { "compatibleTypes": "->Product Definition->" }, - "icon": "dataset-definition", "propertyNameAtParent": "datasets" }, { "type": "Indicator Bot", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#indicator-bot", "menuItems": [ { - "action": "Configure Bot", - "label": "Configure Bot", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, @@ -3166,7 +9273,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Indicator Bot", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3178,13 +9285,12 @@ "config": true }, "initialValues": { - "code": "{ \n\"codeName\": \"\"\n}" + "config": "{ \n \"codeName\": \"\"\n}" }, "level": 3, "chainAttachesTo": { "compatibleTypes": "->Data Mine->" }, - "icon": "bot-indicator", "properties": [ { "name": "processes", @@ -3203,13 +9309,12 @@ }, { "type": "Output Dataset", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#output-dataset", "menuItems": [ { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Output Dataset", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3218,7 +9323,7 @@ "isTitleAllwaysVisible": true, "title": [ "Use Reference Parent", - "Use Reference Parent Parent", + "Use Reference Parent Parent" ], "addLeftIcons": true, "level": 3, @@ -3226,20 +9331,18 @@ "compatibleTypes": "->Dataset Definition->" }, "chainAttachesTo": { - "compatibleTypes": "->Process Output->" + "compatibleTypes": "->Process Output->Output Dataset Folder->" }, - "icon": "output-dataset", "propertyNameAtParent": "outputDatasets" }, { "type": "Data Dependency", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#data-dependency", "menuItems": [ { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Data Dependency", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3258,12 +9361,10 @@ "chainAttachesTo": { "compatibleTypes": "->Process Dependencies->" }, - "icon": "data-dependency", "propertyNameAtParent": "dataDependencies" }, { "type": "Record Definition", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#record-definition", "menuItems": [ { "action": "Add UI Object", @@ -3275,7 +9376,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Record Definition", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3286,7 +9387,6 @@ "chainAttachesTo": { "compatibleTypes": "->Product Definition->" }, - "icon": "record-definition", "properties": [ { "name": "properties", @@ -3299,13 +9399,12 @@ }, { "type": "Record Property", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#record-property", "menuItems": [ { - "action": "Configure Property", - "label": "Configure Property", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, @@ -3321,14 +9420,14 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Record Property", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], "initialValues": { - "code": "{ \n\"codeName\": \"\",\n\"isString\": false,\n\"isCalculated\": false\n}" + "config": "{ \n \"codeName\": \"\",\n \"isString\": false,\n \"isCalculated\": false\n}" }, "isTitleAllwaysVisible": true, "addLeftIcons": true, @@ -3339,7 +9438,6 @@ "chainAttachesTo": { "compatibleTypes": "->Record Definition->" }, - "icon": "record-property", "properties": [ { "name": "formula", @@ -3351,13 +9449,12 @@ }, { "type": "Formula", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#formula", "menuItems": [ { - "action": "Edit Formula", - "label": "Edit Formula", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Edit", + "label": "Edit", + "iconPathOn": "javascript-code", + "iconPathOff": "javascript-code", "dontShowAtFullscreen": true, "actionFunction": "uiObject.formulaEditor.activate" }, @@ -3365,7 +9462,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This Formula", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3376,18 +9473,50 @@ "formula": true }, "initialValues": { - "code": "// Write your Formula code here." + "code": "// Type your formula" }, "level": 4, "chainAttachesTo": { - "compatibleTypes": "->Position Size->Position Rate->Phase->Announcement->Record Property->" + "compatibleTypes": "->Target Size In Base Asset->Target Size In Quoted Asset->Target Rate->Phase->Record Property->Simulated Actual Rate->Situation->Indicator Function->" }, - "icon": "pipette", "propertyNameAtParent": "formula" }, + { + "type": "Announcement Formula", + "menuItems": [ + { + "action": "Edit", + "label": "Edit", + "iconPathOn": "javascript-code", + "iconPathOff": "javascript-code", + "dontShowAtFullscreen": true, + "actionFunction": "uiObject.formulaEditor.activate" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "editors": { + "formula": true + }, + "initialValues": { + "code": "// Type your formula" + }, + "level": 4, + "chainAttachesTo": { + "compatibleTypes": "->Announcement->" + }, + "propertyNameAtParent": "announcementFormula" + }, { "type": "Calculations Procedure", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#calculations-procedure", "menuItems": [ { "action": "Add UI Object", @@ -3409,7 +9538,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Procedure", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3420,7 +9549,6 @@ "chainAttachesTo": { "compatibleTypes": "->Product Definition->" }, - "icon": "calculations-procedure", "properties": [ { "name": "initialization", @@ -3439,7 +9567,6 @@ }, { "type": "Procedure Initialization", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#procedure-initialization", "menuItems": [ { "action": "Add UI Object", @@ -3453,7 +9580,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Initialization", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3464,7 +9591,6 @@ "chainAttachesTo": { "compatibleTypes": "->Calculations Procedure->Data Building Procedure->" }, - "icon": "procedure-initialization", "properties": [ { "name": "javascriptCode", @@ -3477,7 +9603,6 @@ }, { "type": "Procedure Loop", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#procedure-loop", "menuItems": [ { "action": "Add UI Object", @@ -3491,7 +9616,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Procedure Loop", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3502,7 +9627,6 @@ "chainAttachesTo": { "compatibleTypes": "->Calculations Procedure->Data Building Procedure->" }, - "icon": "procedure-loop", "properties": [ { "name": "javascriptCode", @@ -3515,7 +9639,6 @@ }, { "type": "Data Building Procedure", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#data-building-procedure", "menuItems": [ { "action": "Add UI Object", @@ -3537,7 +9660,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Procedure", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3548,7 +9671,6 @@ "chainAttachesTo": { "compatibleTypes": "->Product Definition->" }, - "icon": "data-building-procedure", "properties": [ { "name": "loop", @@ -3569,10 +9691,10 @@ "type": "Trading Bot", "menuItems": [ { - "action": "Configure Bot", - "label": "Configure Bot", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, @@ -3588,11 +9710,17 @@ "relatedUiObject": "Product Definition", "actionFunction": "payload.onMenuItemClick" }, + { + "action": "Add UI Object", + "label": "Add Product Definition Folder", + "relatedUiObject": "Product Definition Folder", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Trading Bot", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3604,13 +9732,12 @@ "config": true }, "initialValues": { - "code": "{ \n\"codeName\": \"\"\n}" + "config": "{ \n \"codeName\": \"\"\n}" }, "level": 3, "chainAttachesTo": { "compatibleTypes": "->Data Mine->" }, - "icon": "bot-trading", "properties": [ { "name": "processes", @@ -3623,19 +9750,24 @@ "type": "array", "childType": "Product Definition", "autoAdd": true + }, + { + "name": "productDefinitionFolders", + "type": "array", + "childType": "Product Definition Folder", + "autoAdd": true } ], "propertyNameAtParent": "tradingBots" }, { "type": "Plotter", - "docURL": "https://docs.superalgos.org/suite-hierarchy-data-mine.html#plotter", "menuItems": [ { - "action": "Configure Plotter", - "label": "Configure Plotter", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, @@ -3649,7 +9781,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Plotter", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3661,10 +9793,9 @@ "config": true }, "initialValues": { - "code": "{ \n\"codeName\": \"\"\n}" + "config": "{ \n \"codeName\": \"\"\n}" }, "level": 2, - "icon": "plotter", "chainAttachesTo": { "compatibleTypes": "->Data Mine->" }, @@ -3680,26 +9811,33 @@ }, { "type": "Trading System", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#trading-system", "menuItems": [ { - "action": "Configure Trading System", + "action": "Configure", "actionFunction": "uiObject.configEditor.activate", - "label": "Configure Trading System", - "iconPathOn": "html", - "iconPathOff": "html" + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" }, { "action": "Add UI Object", - "label": "Add Strategy", - "relatedUiObject": "Strategy", + "label": "Add Trading Strategy", + "relatedUiObject": "Trading Strategy", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "dynamicIndicators", + "label": "Add Dynamic Indicators", + "relatedUiObject": "Dynamic Indicators", "actionFunction": "payload.onMenuItemClick" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Trading System", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3709,38 +9847,42 @@ "isHierarchyHead": true, "addLeftIcons": true, "level": 0, - "icon": "analysis", "editors": { "config": true }, "initialValues": { - "code": "{ \n\"codeName\": \"\"\n}" + "config": "{ \n \"codeName\": \"\"\n}" }, "properties": [ { - "name": "strategies", + "name": "tradingStrategies", "type": "array", - "childType": "Strategy", + "childType": "Trading Strategy", + "autoAdd": true + }, + { + "name": "dynamicIndicators", + "type": "node", + "childType": "Dynamic Indicators", "autoAdd": true } ], "propertyNameAtParent": "tradingSystem" }, { - "type": "Strategy", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#strategy", + "type": "Trading Strategy", "menuItems": [ { "action": "Add Missing Children", "label": "Add Missing Stages", - "relatedUiObject": "Strategy", + "relatedUiObject": "Trading Strategy", "actionFunction": "payload.onMenuItemClick" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This Strategy", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3752,7 +9894,6 @@ "chainAttachesTo": { "compatibleTypes": "->Trading System->" }, - "icon": "quality", "properties": [ { "name": "triggerStage", @@ -3779,11 +9920,10 @@ "autoAdd": true } ], - "propertyNameAtParent": "strategies" + "propertyNameAtParent": "tradingStrategies" }, { "type": "Trigger Stage", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#trigger-stage", "menuItems": [ { "action": "Add Missing Children", @@ -3801,7 +9941,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This Stage", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3810,9 +9950,8 @@ "addLeftIcons": true, "level": 2, "chainAttachesTo": { - "compatibleTypes": "->Strategy->" + "compatibleTypes": "->Trading Strategy->" }, - "icon": "stage-trigger", "properties": [ { "name": "triggerOn", @@ -3842,7 +9981,6 @@ }, { "type": "Trigger On Event", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#trigger-on-event", "menuItems": [ { "action": "Add UI Object", @@ -3860,7 +9998,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This Event", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3871,7 +10009,6 @@ "chainAttachesTo": { "compatibleTypes": "->Trigger Stage->" }, - "icon": "stage-trigger-trigger-on", "properties": [ { "name": "situations", @@ -3889,7 +10026,6 @@ }, { "type": "Trigger Off Event", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#trigger-off-event", "menuItems": [ { "action": "Add UI Object", @@ -3907,7 +10043,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This Event", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3918,7 +10054,6 @@ "chainAttachesTo": { "compatibleTypes": "->Trigger Stage->" }, - "icon": "stage-trigger-trigger-off", "properties": [ { "name": "situations", @@ -3936,7 +10071,6 @@ }, { "type": "Take Position Event", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#take-position-event", "menuItems": [ { "action": "Add UI Object", @@ -3954,7 +10088,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This Event", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -3965,7 +10099,6 @@ "chainAttachesTo": { "compatibleTypes": "->Trigger Stage->" }, - "icon": "stage-trigger-take-position", "properties": [ { "name": "situations", @@ -3983,22 +10116,11 @@ }, { "type": "Open Stage", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#open-stage", "menuItems": [ { - "action": "Add UI Object", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "initialDefinition", - "label": "Add Initial Definition", - "relatedUiObject": "Initial Definition", - "actionFunction": "payload.onMenuItemClick" - }, - { - "action": "Add UI Object", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "openExecution", - "label": "Add Open Execution", - "relatedUiObject": "Open Execution", + "action": "Add Missing Children", + "label": "Add Missing Items", + "relatedUiObject": "Open Stage", "actionFunction": "payload.onMenuItemClick" }, { @@ -4011,7 +10133,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This Stage", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -4020,14 +10142,13 @@ "addLeftIcons": true, "level": 1, "chainAttachesTo": { - "compatibleTypes": "->Strategy->" + "compatibleTypes": "->Trading Strategy->" }, - "icon": "stage-open", "properties": [ { - "name": "initialDefinition", + "name": "initialTargets", "type": "node", - "childType": "Initial Definition", + "childType": "Initial Targets", "autoAdd": true }, { @@ -4036,6 +10157,12 @@ "childType": "Open Execution", "autoAdd": true }, + { + "name": "closeStageEvent", + "type": "node", + "childType": "Close Stage Event", + "autoAdd": true + }, { "name": "announcements", "type": "array", @@ -4045,20 +10172,64 @@ "propertyNameAtParent": "openStage" }, { - "type": "Initial Definition", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#initial-definition", + "type": "Close Stage Event", "menuItems": [ { - "action": "Add Missing Children", - "label": "Add Missing Items", - "relatedUiObject": "Initial Definition", + "action": "Add UI Object", + "label": "Add Situation", + "relatedUiObject": "Situation", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Announcement", + "relatedUiObject": "Announcement", "actionFunction": "payload.onMenuItemClick" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This Definition", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Open Stage->Close Stage->" + }, + "properties": [ + { + "name": "situations", + "type": "array", + "childType": "Situation", + "autoAdd": true + }, + { + "name": "announcements", + "type": "array", + "childType": "Announcement" + } + ], + "propertyNameAtParent": "closeStageEvent" + }, + { + "type": "Initial Targets", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Items", + "relatedUiObject": "Initial Targets", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -4067,40 +10238,32 @@ "addLeftIcons": true, "level": 2, "chainAttachesTo": { - "compatibleTypes": "->Open Stage->" + "compatibleTypes": "->Open Stage->Close Stage->" }, - "icon": "initial-definition", "properties": [ { - "name": "stopLoss", + "name": "targetRate", "type": "node", - "childType": "Initial Stop", + "childType": "Target Rate", "autoAdd": true }, { - "name": "takeProfit", + "name": "targetSizeInBaseAsset", "type": "node", - "childType": "Initial Take Profit", + "childType": "Target Size In Base Asset", "autoAdd": true }, { - "name": "positionSize", + "name": "targetSizeInQuotedAsset", "type": "node", - "childType": "Position Size", - "autoAdd": true - }, - { - "name": "positionRate", - "type": "node", - "childType": "Position Rate", + "childType": "Target Size In Quoted Asset", "autoAdd": true } ], - "propertyNameAtParent": "initialDefinition" + "propertyNameAtParent": "initialTargets" }, { - "type": "Stop", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#stop", + "type": "Managed Stop Loss", "menuItems": [ { "action": "Add UI Object", @@ -4112,7 +10275,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This Item", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -4123,7 +10286,6 @@ "chainAttachesTo": { "compatibleTypes": "->Manage Stage->Initial Definition->" }, - "icon": "stop", "properties": [ { "name": "phases", @@ -4132,48 +10294,10 @@ "autoAdd": true } ], - "propertyNameAtParent": "stopLoss" - }, - { - "type": "Initial Stop", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#initial-stop", - "menuItems": [ - { - "action": "Add UI Object", - "label": "Add Phase", - "relatedUiObject": "Phase", - "actionFunction": "payload.onMenuItemClick" - }, - { - "action": "Delete UI Object", - "askConfirmation": true, - "confirmationLabel": "Confirm to Delete", - "label": "Delete This Item", - "iconPathOn": "delete", - "iconPathOff": "delete", - "actionFunction": "payload.onMenuItemClick" - } - ], - "addLeftIcons": true, - "level": 3, - "chainAttachesTo": { - "compatibleTypes": "->Manage Stage->Initial Definition->" - }, - "icon": "stop", - "properties": [ - { - "name": "phases", - "type": "array", - "maxItems": 1, - "childType": "Phase", - "autoAdd": true - } - ], - "propertyNameAtParent": "stopLoss" + "propertyNameAtParent": "managedStopLoss" }, { "type": "Phase", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#phase-0", "menuItems": [ { "action": "Add UI Object", @@ -4193,8 +10317,8 @@ }, { "action": "Add UI Object", - "label": "Add Move to Phase Event", - "relatedUiObject": "Move to Phase Event", + "label": "Add Move To Phase Event", + "relatedUiObject": "Move To Phase Event", "actionFunction": "payload.onMenuItemClick" }, { @@ -4207,7 +10331,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This Phase", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -4217,9 +10341,8 @@ "level": 1, "chainedToSameType": true, "chainAttachesTo": { - "compatibleTypes": "->Stop->Take Profit->Initial Stop->Initial Take Profit->Phase->" + "compatibleTypes": "->Managed Stop->Managed Take Profit->Phase->" }, - "icon": "placeholder", "properties": [ { "name": "formula", @@ -4235,7 +10358,7 @@ { "name": "moveToPhaseEvents", "type": "array", - "childType": "Move to Phase Event" + "childType": "Move To Phase Event" }, { "name": "announcements", @@ -4247,7 +10370,6 @@ }, { "type": "Next Phase Event", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#next-phase-event", "menuItems": [ { "action": "Add UI Object", @@ -4265,7 +10387,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This Event", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -4276,7 +10398,6 @@ "chainAttachesTo": { "compatibleTypes": "->Phase->" }, - "icon": "next-phase-event", "properties": [ { "name": "situations", @@ -4293,7 +10414,7 @@ "propertyNameAtParent": "nextPhaseEvent" }, { - "type": "Move to Phase Event", + "type": "Move To Phase Event", "docURL": "", "menuItems": [ { @@ -4312,7 +10433,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This Event", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -4326,7 +10447,6 @@ "referenceAttachesTo": { "compatibleTypes": "->Phase->" }, - "icon": "move-to-phase-event", "properties": [ { "name": "situations", @@ -4343,8 +10463,7 @@ "propertyNameAtParent": "moveToPhaseEvents" }, { - "type": "Take Profit", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#take-profit", + "type": "Managed Take Profit", "menuItems": [ { "action": "Add UI Object", @@ -4356,7 +10475,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This Item", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -4367,7 +10486,6 @@ "chainAttachesTo": { "compatibleTypes": "->Manage Stage->Initial Definition->" }, - "icon": "stage-open-take-profit", "properties": [ { "name": "phases", @@ -4376,48 +10494,10 @@ "autoAdd": true } ], - "propertyNameAtParent": "takeProfit" + "propertyNameAtParent": "managedTakeProfit" }, { - "type": "Initial Take Profit", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#initial-take-profit", - "menuItems": [ - { - "action": "Add UI Object", - "label": "Add Phase", - "relatedUiObject": "Phase", - "actionFunction": "payload.onMenuItemClick" - }, - { - "action": "Delete UI Object", - "askConfirmation": true, - "confirmationLabel": "Confirm to Delete", - "label": "Delete This Item", - "iconPathOn": "delete", - "iconPathOff": "delete", - "actionFunction": "payload.onMenuItemClick" - } - ], - "addLeftIcons": true, - "level": 3, - "chainAttachesTo": { - "compatibleTypes": "->Manage Stage->Initial Definition->" - }, - "icon": "stage-open-take-profit", - "properties": [ - { - "name": "phases", - "type": "array", - "maxItems": 1, - "childType": "Phase", - "autoAdd": true - } - ], - "propertyNameAtParent": "takeProfit" - }, - { - "type": "Position Size", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#position-size", + "type": "Target Size In Base Asset", "menuItems": [ { "action": "Add UI Object", @@ -4431,7 +10511,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Position Size", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -4440,9 +10520,8 @@ "addLeftIcons": true, "level": 4, "chainAttachesTo": { - "compatibleTypes": "->Initial Definition->" + "compatibleTypes": "->Initial Targets->" }, - "icon": "stage-open-position-size", "properties": [ { "name": "formula", @@ -4451,11 +10530,10 @@ "autoAdd": true } ], - "propertyNameAtParent": "positionSize" + "propertyNameAtParent": "targetSizeInBaseAsset" }, { - "type": "Position Rate", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#position-rate", + "type": "Target Size In Quoted Asset", "menuItems": [ { "action": "Add UI Object", @@ -4469,18 +10547,17 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Position Rate", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], "addLeftIcons": true, - "level": 5, + "level": 4, "chainAttachesTo": { - "compatibleTypes": "->Initial Definition->" + "compatibleTypes": "->Initial Targets->" }, - "icon": "stage-open-postion-rate", "properties": [ { "name": "formula", @@ -4489,17 +10566,94 @@ "autoAdd": true } ], - "propertyNameAtParent": "positionRate" + "propertyNameAtParent": "targetSizeInQuotedAsset" }, { - "type": "Open Execution", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#open-execution", + "type": "Target Rate", "menuItems": [ + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "formula", + "label": "Add Formula", + "relatedUiObject": "Formula", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 5, + "chainAttachesTo": { + "compatibleTypes": "->Initial Targets->" + }, + "properties": [ + { + "name": "formula", + "type": "node", + "childType": "Formula", + "autoAdd": true + } + ], + "propertyNameAtParent": "targetRate" + }, + { + "type": "Order Rate", + "menuItems": [ + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "formula", + "label": "Add Formula", + "relatedUiObject": "Formula", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 5, + "chainAttachesTo": { + "compatibleTypes": "->Limit Buy Order->Limit Sell Order->" + }, + "properties": [ + { + "name": "formula", + "type": "node", + "childType": "Formula", + "autoAdd": true + } + ], + "propertyNameAtParent": "orderRate" + }, + { + "type": "Open Execution", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Execution Algorithm", + "relatedUiObject": "Execution Algorithm", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -4510,12 +10664,670 @@ "chainAttachesTo": { "compatibleTypes": "->Open Stage->" }, - "icon": "piggy-bank", - "propertyNameAtParent": "openExecution" + "propertyNameAtParent": "openExecution", + "properties": [ + { + "name": "executionAlgorithms", + "type": "array", + "childType": "Execution Algorithm" + } + ] + }, + { + "type": "Execution Algorithm", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "label": "Add Market Buy Order", + "relatedUiObject": "Market Buy Order", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Market Sell Order", + "relatedUiObject": "Market Sell Order", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Limit Buy Order", + "relatedUiObject": "Limit Buy Order", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Limit Sell Order", + "relatedUiObject": "Limit Sell Order", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "initialValues": { + "config": "{\n\"percentageOfStageTargetSize\": 100 \n}" + }, + "editors": { + "config": true + }, + "addLeftIcons": true, + "level": 4, + "chainAttachesTo": { + "compatibleTypes": "->Open Execution->Close Execution->" + }, + "propertyNameAtParent": "executionAlgorithms", + "properties": [ + { + "name": "marketBuyOrders", + "type": "array", + "childType": "Market Buy Order" + }, + { + "name": "marketSellOrders", + "type": "array", + "childType": "Market Sell Order" + }, + { + "name": "limitBuyOrders", + "type": "array", + "childType": "Limit Buy Order" + }, + { + "name": "limitSellOrders", + "type": "array", + "childType": "Limit Sell Order" + } + ] + }, + { + "type": "Market Buy Order", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "createOrderEvent", + "label": "Add Create Order Event", + "relatedUiObject": "Create Order Event", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "simulatedExchangeEvents", + "label": "Add Simulated Events", + "relatedUiObject": "Simulated Exchange Events", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "initialValues": { + "config": "{\n\"percentageOfAlgorithmSize\": 100, \n\"spawnMultipleOrders\": false \n}" + }, + "editors": { + "config": true + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Execution Algorithm->" + }, + "referenceAttachesTo": { + "compatibleTypes": "->Market Order->" + }, + "propertyNameAtParent": "marketBuyOrders", + "properties": [ + { + "name": "createOrderEvent", + "type": "node", + "childType": "Create Order Event", + "autoAdd": true + }, + { + "name": "simulatedExchangeEvents", + "type": "node", + "childType": "Simulated Exchange Events", + "autoAdd": true + } + ] + }, + { + "type": "Market Sell Order", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "createOrderEvent", + "label": "Add Create Order Event", + "relatedUiObject": "Create Order Event", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "simulatedExchangeEvents", + "label": "Add Simulated Events", + "relatedUiObject": "Simulated Exchange Events", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "initialValues": { + "config": "{\n\"percentageOfAlgorithmSize\": 100, \n\"spawnMultipleOrders\": false \n}" + }, + "editors": { + "config": true + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Execution Algorithm->" + }, + "referenceAttachesTo": { + "compatibleTypes": "->Market Order->" + }, + "propertyNameAtParent": "marketSellOrders", + "properties": [ + { + "name": "createOrderEvent", + "type": "node", + "childType": "Create Order Event", + "autoAdd": true + }, + { + "name": "simulatedExchangeEvents", + "type": "node", + "childType": "Simulated Exchange Events", + "autoAdd": true + } + ] + }, + { + "type": "Limit Buy Order", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "orderRate", + "label": "Add Order Rate", + "relatedUiObject": "Order Rate", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "createOrderEvent", + "label": "Add Create Order Event", + "relatedUiObject": "Create Order Event", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "cancelOrderEvent", + "label": "Add Cancel Order Event", + "relatedUiObject": "Cancel Order Event", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "simulatedExchangeEvents", + "label": "Add Simulated Events", + "relatedUiObject": "Simulated Exchange Events", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "initialValues": { + "config": "{\n\"percentageOfAlgorithmSize\": 100, \n\"spawnMultipleOrders\": false \n}" + }, + "editors": { + "config": true + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Execution Algorithm->" + }, + "referenceAttachesTo": { + "compatibleTypes": "->Limit Order->" + }, + "propertyNameAtParent": "limitBuyOrders", + "properties": [ + { + "name": "orderRate", + "type": "node", + "childType": "Order Rate", + "autoAdd": true + }, + { + "name": "createOrderEvent", + "type": "node", + "childType": "Create Order Event", + "autoAdd": true + }, + { + "name": "cancelOrderEvent", + "type": "node", + "childType": "Cancel Order Event" + }, + { + "name": "simulatedExchangeEvents", + "type": "node", + "childType": "Simulated Exchange Events", + "autoAdd": true + } + ] + }, + { + "type": "Limit Sell Order", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "orderRate", + "label": "Add Order Rate", + "relatedUiObject": "Order Rate", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "createOrderEvent", + "label": "Add Create Order Event", + "relatedUiObject": "Create Order Event", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "cancelOrderEvent", + "label": "Add Cancel Order Event", + "relatedUiObject": "Cancel Order Event", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "simulatedExchangeEvents", + "label": "Add Simulated Events", + "relatedUiObject": "Simulated Exchange Events", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "initialValues": { + "config": "{\n\"percentageOfAlgorithmSize\": 100, \n\"spawnMultipleOrders\": false \n}" + }, + "editors": { + "config": true + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Execution Algorithm->" + }, + "referenceAttachesTo": { + "compatibleTypes": "->Limit Order->" + }, + "propertyNameAtParent": "limitSellOrders", + "properties": [ + { + "name": "orderRate", + "type": "node", + "childType": "Order Rate", + "autoAdd": true + }, + { + "name": "createOrderEvent", + "type": "node", + "childType": "Create Order Event", + "autoAdd": true + }, + { + "name": "cancelOrderEvent", + "type": "node", + "childType": "Cancel Order Event" + }, + { + "name": "simulatedExchangeEvents", + "type": "node", + "childType": "Simulated Exchange Events", + "autoAdd": true + } + ] + }, + { + "type": "Create Order Event", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Situation", + "relatedUiObject": "Situation", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Announcement", + "relatedUiObject": "Announcement", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Market Buy Order->Market Sell Order->Limit Buy Order->Limit Sell Order->" + }, + "properties": [ + { + "name": "situations", + "type": "array", + "childType": "Situation", + "autoAdd": true + }, + { + "name": "announcements", + "type": "array", + "childType": "Announcement" + } + ], + "propertyNameAtParent": "createOrderEvent" + }, + { + "type": "Cancel Order Event", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Situation", + "relatedUiObject": "Situation", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Announcement", + "relatedUiObject": "Announcement", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Market Buy Order->Market Sell Order->Limit Buy Order->Limit Sell Order->" + }, + "properties": [ + { + "name": "situations", + "type": "array", + "childType": "Situation", + "autoAdd": true + }, + { + "name": "announcements", + "type": "array", + "childType": "Announcement" + } + ], + "propertyNameAtParent": "cancelOrderEvent" + }, + { + "type": "Simulated Exchange Events", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Simulated Partial Fill", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "simulatedPartialFill", + "relatedUiObject": "Simulated Partial Fill", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Simulated Actual Rate", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "simulatedActualRate", + "relatedUiObject": "Simulated Actual Rate", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Simulated Fees Paid", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "simulatedFeesPaid", + "relatedUiObject": "Simulated Fees Paid", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Market Buy Order->Market Sell Order->Limit Buy Order->Limit Sell Order->" + }, + "properties": [ + { + "name": "simulatedPartialFill", + "type": "node", + "childType": "Simulated Partial Fill", + "autoAdd": true + }, + { + "name": "simulatedActualRate", + "type": "node", + "childType": "Simulated Actual Rate", + "autoAdd": true + }, + { + "name": "simulatedFeesPaid", + "type": "node", + "childType": "Simulated Fees Paid", + "autoAdd": true + } + ], + "propertyNameAtParent": "simulatedExchangeEvents" + }, + { + "type": "Simulated Partial Fill", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "initialValues": { + "config": "{ \n\"fillProbability\": 1\n}" + }, + "editors": { + "config": true + }, + "addLeftIcons": true, + "level": 4, + "chainAttachesTo": { + "compatibleTypes": "->Simulated Exchange Events->" + }, + "propertyNameAtParent": "simulatedPartialFill" + }, + { + "type": "Simulated Actual Rate", + "menuItems": [ + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "formula", + "label": "Add Formula", + "relatedUiObject": "Formula", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 4, + "chainAttachesTo": { + "compatibleTypes": "->Simulated Exchange Events->" + }, + "properties": [ + { + "name": "formula", + "type": "node", + "childType": "Formula", + "autoAdd": true + } + ], + "propertyNameAtParent": "simulatedActualRate" + }, + { + "type": "Simulated Fees Paid", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "initialValues": { + "config": "{ \n\"percentage\": 0.1\n}" + }, + "editors": { + "config": true + }, + "addLeftIcons": true, + "level": 4, + "chainAttachesTo": { + "compatibleTypes": "->Simulated Exchange Events->" + }, + "propertyNameAtParent": "simulatedFeesPaid" }, { "type": "Manage Stage", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#manage-stage", "menuItems": [ { "action": "Add Missing Children", @@ -4533,7 +11345,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This Stage", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -4542,20 +11354,19 @@ "addLeftIcons": true, "level": 1, "chainAttachesTo": { - "compatibleTypes": "->Strategy->" + "compatibleTypes": "->Trading Strategy->" }, - "icon": "video-player", "properties": [ { - "name": "stopLoss", + "name": "managedStopLoss", "type": "node", - "childType": "Stop", + "childType": "Managed Stop Loss", "autoAdd": true }, { - "name": "takeProfit", + "name": "managedTakeProfit", "type": "node", - "childType": "Take Profit", + "childType": "Managed Take Profit", "autoAdd": true }, { @@ -4568,14 +11379,11 @@ }, { "type": "Close Stage", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#close-stage", "menuItems": [ { - "action": "Add UI Object", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "closeExecution", - "label": "Add Close Execution", - "relatedUiObject": "Close Execution", + "action": "Add Missing Children", + "label": "Add Missing Items", + "relatedUiObject": "Close Stage", "actionFunction": "payload.onMenuItemClick" }, { @@ -4588,7 +11396,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This Stage", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -4597,16 +11405,27 @@ "addLeftIcons": true, "level": 2, "chainAttachesTo": { - "compatibleTypes": "->Strategy->" + "compatibleTypes": "->Trading Strategy->" }, - "icon": "stage-close", "properties": [ + { + "name": "initialTargets", + "type": "node", + "childType": "Initial Targets", + "autoAdd": true + }, { "name": "closeExecution", "type": "node", "childType": "Close Execution", "autoAdd": true }, + { + "name": "closeStageEvent", + "type": "node", + "childType": "Close Stage Event", + "autoAdd": true + }, { "name": "announcements", "type": "array", @@ -4617,13 +11436,18 @@ }, { "type": "Close Execution", - "docURL": "https://docs.superalgos.org/suite-hierarchy-trading-system.html#close-execution", "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Execution Algorithm", + "relatedUiObject": "Execution Algorithm", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -4634,8 +11458,14 @@ "chainAttachesTo": { "compatibleTypes": "->Close Stage->" }, - "icon": "piggy-bank", - "propertyNameAtParent": "closeExecution" + "propertyNameAtParent": "closeExecution", + "properties": [ + { + "name": "executionAlgorithms", + "type": "array", + "childType": "Execution Algorithm" + } + ] }, { "type": "Social Bots", @@ -4650,7 +11480,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Social Bots", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -4661,7 +11491,6 @@ "chainAttachesTo": { "compatibleTypes": "->Backtesting Session->Live Trading Session->Paper Trading Session->Forward Testing Session->" }, - "icon": "social-bot", "properties": [ { "name": "bots", @@ -4679,31 +11508,30 @@ }, "menuItems": [ { - "action": "Config Telegram Bot", + "action": "Configure", "actionFunction": "uiObject.configEditor.activate", - "label": "Config Telegram Bot", - "iconPathOn": "html", - "iconPathOff": "html" + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Telegram Bot", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], "initialValues": { - "code": "{ \n\"botToken\": \"Paste here the bot token obtained from Telegram Bot Father\",\n\"chatId\": \"Write here the chat or group id where the announcements are going to be sent to, as it is a number with no quotes please.\"\n}" + "config": "{ \n\"botToken\": \"Paste the bot token obtained from Telegram Bot Father\",\n\"chatId\": \"Type or paste the chat or group id -a number with no quotes- where announcements are going to be sent to\"\n}" }, "addLeftIcons": true, "level": 4, "chainAttachesTo": { "compatibleTypes": "->Social Bots->" }, - "icon": "paper-plane", "properties": [], "propertyNameAtParent": "bots" }, @@ -4714,52 +11542,97 @@ }, "menuItems": [ { - "action": "Config Announcement", + "action": "Configure", "actionFunction": "uiObject.configEditor.activate", - "label": "Config Announcement", - "iconPathOn": "html", - "iconPathOff": "html" + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" }, { "action": "Add UI Object", "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "formula", - "label": "Add Formula", - "relatedUiObject": "Formula", + "propertyToCheckFor": "announcementFormula", + "label": "Add Announcement Formula", + "relatedUiObject": "Announcement Formula", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "announcementCondition", + "label": "Add Condition", + "relatedUiObject": "Announcement Condition", "actionFunction": "payload.onMenuItemClick" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Announcement", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], "initialValues": { - "code": "{ \n\"text\": \"Write here what you want to announce when there is no Formula.\"\n}" + "config": "{ \n\"text\": \"Type the message you wish to announce when there is no formula\"\n}" }, "addLeftIcons": true, "level": 4, "chainAttachesTo": { - "compatibleTypes": "->Trigger On Event->Trigger Off Event->Take Position Event->Next Phase Event->Move to Phase Event->Phase->Trigger Stage->Open Stage->Manage Stage->Close Stage->" + "compatibleTypes": "->Trigger On Event->Trigger Off Event->Take Position Event->Next Phase Event->Move To Phase Event->Phase->Trigger Stage->Open Stage->Manage Stage->Close Stage->Create Order Event->Cancel Order Event->" }, "properties": [ { - "name": "formula", + "name": "announcementFormula", "type": "node", - "childType": "Formula", + "childType": "Announcement Formula", + "autoAdd": true + }, + { + "name": "announcementCondition", + "type": "node", + "childType": "Announcement Condition", "autoAdd": true } ], - "icon": "promotion", "propertyNameAtParent": "announcements" }, + { + "type": "Announcement Condition", + "editors": { + "code": true + }, + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.codeEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "initialValues": { + "code": "// Type here a condition that needs to be met in order to make the announcement." + }, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Announcement->" + }, + "propertyNameAtParent": "announcementCondition" + }, { "type": "Crypto Ecosystem", - "docURL": "https://docs.superalgos.org/suite-hierarchy-crypto-ecosystem.html#crypto-ecosystem", "menuItems": [ { "action": "Add UI Object", @@ -4772,20 +11645,11 @@ "label": "Add Signals Providers", "relatedUiObject": "Signals Providers", "actionFunction": "payload.onMenuItemClick" - }, - { - "action": "Add UI Object", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "superActions", - "label": "Add Super Actions", - "relatedUiObject": "Super Actions", - "actionFunction": "payload.onMenuItemClick" - } + } ], "isHierarchyHead": true, "addLeftIcons": true, - "level": 1, - "icon": "image", + "level": 0, "properties": [ { "name": "cryptoExchanges", @@ -4796,17 +11660,11 @@ "name": "signalsProviders", "type": "array", "childType": "Signals Providers" - }, - { - "name": "superActions", - "type": "node", - "childType": "Super Actions" - } + } ] }, { "type": "Super Actions", - "docURL": "https://docs.superalgos.org/suite-hierarchy-super-scripts.html#super-actions", "menuItems": [ { "action": "Add UI Object", @@ -4818,7 +11676,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Super Actions", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -4831,7 +11689,6 @@ "chainAttachesTo": { "compatibleTypes": "->Crypto Ecosystem->" }, - "icon": "super-action", "properties": [ { "name": "superActions", @@ -4853,7 +11710,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Signals Providers", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -4861,7 +11718,6 @@ ], "addLeftIcons": true, "level": 1, - "icon": "targeting", "chainAttachesTo": { "compatibleTypes": "->Crypto Ecosystem->" }, @@ -4879,11 +11735,11 @@ "type": "Signals Provider", "menuItems": [ { - "action": "Config Signals Provider", + "action": "Configure", "actionFunction": "uiObject.configEditor.activate", - "label": "Config Signals Provider", - "iconPathOn": "html", - "iconPathOff": "html" + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" }, { "action": "Send Webhook Test Message", @@ -4891,15 +11747,15 @@ "workingLabel": "Sending Message", "workDoneLabel": "Message Sent", "workFailedLabel": "Message not Delived", - "iconPathOn": "paper-plane", - "iconPathOff": "paper-plane", + "iconPathOn": "run", + "iconPathOff": "run", "actionFunction": "payload.onMenuItemClick" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Signals Provider", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -4907,7 +11763,6 @@ ], "addLeftIcons": true, "level": 2, - "icon": "template-target", "chainAttachesTo": { "compatibleTypes": "->Signals Providers->" }, @@ -4915,14 +11770,13 @@ "config": true }, "initialValues": { - "code": "{ \n\"webhookURL\": \"Webhook/New-Message/Trading-View/Binance/BTC-USDT\",\n\"testMessage\": \"\" \n}" + "config": "{ \n\"webhookURL\": \"Webhook/New-Message/Trading-View/Binance/BTC-USDT\",\n\"testMessage\": \"\" \n}" }, "propertyNameAtParent": "signalsProviders", "properties": [] }, { "type": "Crypto Exchanges", - "docURL": "https://docs.superalgos.org/suite-hierarchy-crypto-ecosystem.html#crypto-exchanges", "menuItems": [ { "action": "Add UI Object", @@ -4943,7 +11797,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Crypto Exchanges", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -4952,7 +11806,6 @@ "isTitleAllwaysVisible": true, "addLeftIcons": true, "level": 1, - "icon": "crypto-exchanges", "chainAttachesTo": { "compatibleTypes": "->Crypto Ecosystem->" }, @@ -4968,14 +11821,13 @@ }, { "type": "Crypto Exchange", - "docURL": "https://docs.superalgos.org/suite-hierarchy-crypto-ecosystem.html#crypto-exchange", "menuItems": [ { - "action": "Config Crypto Exchange", + "action": "Configure Thise", "actionFunction": "uiObject.configEditor.activate", - "label": "Config Crypto Exchange", - "iconPathOn": "html", - "iconPathOff": "html" + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" }, { "action": "Add UI Object", @@ -5005,7 +11857,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Crypto Exchange", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -5014,12 +11866,11 @@ "isTitleAllwaysVisible": true, "addLeftIcons": true, "level": 2, - "icon": "crypto-exchange", "editors": { "config": true }, "initialValues": { - "code": "{ \n\"codeName\": \"Write here the name of the exchange here.\"\n}" + "config": "{ \n\"codeName\": \"Type the name of the exchange\"\n}" }, "chainAttachesTo": { "compatibleTypes": "->Crypto Exchanges->" @@ -5090,14 +11941,13 @@ }, { "type": "Exchange Assets", - "docURL": "https://docs.superalgos.org/suite-hierarchy-crypto-ecosystem.html#exchange-assets", "menuItems": [ { - "action": "Config Exchange Assets", + "action": "Configure", "actionFunction": "uiObject.configEditor.activate", - "label": "Config Exchange Assets", - "iconPathOn": "html", - "iconPathOff": "html" + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" }, { "action": "Add UI Object", @@ -5118,7 +11968,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Exchange Assets", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -5128,11 +11978,10 @@ "config": true }, "initialValues": { - "code": "{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}" + "config": "{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}" }, "addLeftIcons": true, "level": 3, - "icon": "exchange-assets", "chainAttachesTo": { "compatibleTypes": "->Crypto Exchange->" }, @@ -5147,20 +11996,19 @@ }, { "type": "Asset", - "docURL": "https://docs.superalgos.org/suite-hierarchy-crypto-ecosystem.html#asset", "menuItems": [ { - "action": "Config Asset", + "action": "Configure", "actionFunction": "uiObject.configEditor.activate", - "label": "Config Asset", - "iconPathOn": "html", - "iconPathOff": "html" + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Asset", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -5169,12 +12017,11 @@ "isTitleAllwaysVisible": true, "addLeftIcons": true, "level": 4, - "icon": "asset", "editors": { "config": true }, "initialValues": { - "code": "{ \n\"codeName\": \"Write here the code name of the asset here.\"\n}" + "config": "{ \n\"codeName\": \"Type the code name of the asset\"\n}" }, "chainAttachesTo": { "compatibleTypes": "->Exchange Assets->" @@ -5249,7 +12096,6 @@ }, { "type": "Exchange Markets", - "docURL": "https://docs.superalgos.org/suite-hierarchy-crypto-ecosystem.html#exchange-markets", "menuItems": [ { "action": "Add UI Object", @@ -5270,7 +12116,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Exchange Markets", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -5278,7 +12124,6 @@ ], "addLeftIcons": true, "level": 3, - "icon": "exchange-markets", "chainAttachesTo": { "compatibleTypes": "->Crypto Exchange->" }, @@ -5293,14 +12138,13 @@ }, { "type": "Market", - "docURL": "https://docs.superalgos.org/suite-hierarchy-crypto-ecosystem.html#market", "menuItems": [ { - "action": "Config Market", + "action": "Configure", "actionFunction": "uiObject.configEditor.activate", - "label": "Config Market", - "iconPathOn": "html", - "iconPathOff": "html" + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" }, { "action": "Add UI Object", @@ -5319,16 +12163,28 @@ "actionFunction": "payload.onMenuItemClick" }, { - "action": "Add UI Object", - "label": "Add Super Action", - "relatedUiObject": "Super Action", + "action": "Install Market", + "label": "Install Market", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Market", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Uninstall Market", + "label": "Uninstall Market", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Market", "actionFunction": "payload.onMenuItemClick" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Market", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -5346,22 +12202,16 @@ "type": "node", "childType": "Market Quoted Asset", "autoAdd": true - }, - { - "name": "superActions", - "type": "array", - "childType": "Super Action" } ], "addLeftIcons": true, "isTitleAllwaysVisible": true, "level": 4, - "icon": "market", "editors": { "config": true }, "initialValues": { - "code": "{ \n\"codeName\": \"Write here the name of the market.\"\n}" + "config": "{ \n\"codeName\": \"Type the name of the market\"\n}" }, "chainAttachesTo": { "compatibleTypes": "->Exchange Markets->" @@ -5370,7 +12220,6 @@ }, { "type": "Exchange Accounts", - "docURL": "https://docs.superalgos.org/suite-hierarchy-crypto-ecosystem.html#exchange-accounts", "menuItems": [ { "action": "Add UI Object", @@ -5382,7 +12231,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Exchange Accounts", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -5390,7 +12239,6 @@ ], "addLeftIcons": true, "level": 3, - "icon": "exchange-accounts", "chainAttachesTo": { "compatibleTypes": "->Crypto Exchange->" }, @@ -5407,7 +12255,6 @@ }, { "type": "User Account", - "docURL": "https://docs.superalgos.org/suite-hierarchy-crypto-ecosystem.html#user-account", "menuItems": [ { "action": "Add UI Object", @@ -5429,7 +12276,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Account", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -5437,7 +12284,6 @@ ], "addLeftIcons": true, "level": 3, - "icon": "user-account", "chainAttachesTo": { "compatibleTypes": "->Exchange Accounts->" }, @@ -5460,7 +12306,6 @@ }, { "type": "User Assets", - "docURL": "https://docs.superalgos.org/suite-hierarchy-crypto-ecosystem.html#user-assets", "menuItems": [ { "action": "Add UI Object", @@ -5472,7 +12317,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete User Assets", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -5480,7 +12325,6 @@ ], "addLeftIcons": true, "level": 3, - "icon": "user-assets", "chainAttachesTo": { "compatibleTypes": "->User Account->" }, @@ -5496,7 +12340,6 @@ }, { "type": "User Keys", - "docURL": "https://docs.superalgos.org/suite-hierarchy-crypto-ecosystem.html#user-keys", "menuItems": [ { "action": "Add UI Object", @@ -5508,7 +12351,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete User Keys", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -5516,7 +12359,6 @@ ], "addLeftIcons": true, "level": 3, - "icon": "user-keys", "chainAttachesTo": { "compatibleTypes": "->User Account->" }, @@ -5533,13 +12375,12 @@ }, { "type": "Exchange Account Asset", - "docURL": "https://docs.superalgos.org/suite-hierarchy-crypto-ecosystem.html#exchange-account-asset", "menuItems": [ { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Asset", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -5554,7 +12395,6 @@ "chainAttachesTo": { "compatibleTypes": "->User Assets->" }, - "icon": "exchange-account-asset", "title": [ "Use Reference Parent" ], @@ -5564,13 +12404,12 @@ }, { "type": "Exchange Account Key", - "docURL": "https://docs.superalgos.org/suite-hierarchy-crypto-ecosystem.html#exchange-account-key", "menuItems": [ { - "action": "Configure Key", - "label": "Configure Key", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, @@ -5578,14 +12417,14 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete This Key", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], "initialValues": { - "code": "{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}" + "config": "{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}" }, "addLeftIcons": true, "editors": { @@ -5595,13 +12434,11 @@ "chainAttachesTo": { "compatibleTypes": "->User Keys->" }, - "icon": "exchange-account-key", "propertyNameAtParent": "keys", "isPersonalData": true }, { "type": "Charting Space", - "docURL": "https://docs.superalgos.org/suite-hierarchy-charting-space.html#charting-space", "menuItems": [ { "action": "Add UI Object", @@ -5616,12 +12453,20 @@ "label": "Add Dashboard", "relatedUiObject": "Dashboard", "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add Missing Dashboards", + "label": "Add Missing Dashboards", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Dashboard", + "actionFunction": "payload.onMenuItemClick" } ], "isHierarchyHead": true, "addLeftIcons": true, - "level": 1, - "icon": "charting-space", + "level": 0, "properties": [ { "name": "viewport", @@ -5638,7 +12483,6 @@ }, { "type": "Dashboard", - "docURL": "https://docs.superalgos.org/suite-hierarchy-charting-space.html#dashboard", "menuItems": [ { "action": "Add UI Object", @@ -5646,20 +12490,30 @@ "relatedUiObject": "Time Machine", "actionFunction": "payload.onMenuItemClick" }, + { + "action": "Add Missing Time Machines", + "label": "Add Missing Time Machines", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Time Machine", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Dashboard", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], - "isTitleAllwaysVisible": true, "addLeftIcons": true, "level": 1, - "icon": "dashboard", + "referenceAttachesTo": { + "compatibleTypes": "->Testing Environment->Production Environment->" + }, "chainAttachesTo": { "compatibleTypes": "->Charting Space->" }, @@ -5674,13 +12528,12 @@ }, { "type": "Time Machine", - "docURL": "https://docs.superalgos.org/suite-hierarchy-charting-space.html#time-machine", "menuItems": [ { - "action": "Configure Time Machine", - "label": "Configure Time Machine", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, @@ -5718,14 +12571,14 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Crypto Exchange", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], "initialValues": { - "code": "{}" + "config": "{}" }, "addLeftIcons": true, "editors": { @@ -5733,7 +12586,9 @@ }, "level": 1, "isTitleAllwaysVisible": true, - "icon": "time-machine", + "referenceAttachesTo": { + "compatibleTypes": "->Backtesting Session->Paper Trading Session->Forward Testing Session->Live Trading Session->" + }, "chainAttachesTo": { "compatibleTypes": "->Dashboard->Template Structure->" }, @@ -5761,32 +12616,30 @@ "name": "timelineCharts", "type": "array", "childType": "Timeline Chart", - "autoAdd": true + "autoAdd": false } ] }, { "type": "Viewport", - "docURL": "https://docs.superalgos.org/suite-hierarchy-charting-space.html#viewport", "menuItems": [ { - "action": "Configure Viewport", - "label": "Configure Viewport", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" } ], "initialValues": { - "code": "{ \n\"topMargin\": 40,\n\"bottomMargin\": 40\n}" + "config": "{ \n\"topMargin\": 40,\n\"bottomMargin\": 40\n}" }, "addLeftIcons": true, "editors": { "config": true }, "level": 2, - "icon": "viewport", "chainAttachesTo": { "compatibleTypes": "->Charting Space->" }, @@ -5794,13 +12647,12 @@ }, { "type": "Time Scale", - "docURL": "https://docs.superalgos.org/suite-hierarchy-charting-space.html#time-scale", "menuItems": [ { - "action": "Configure Time Scale", - "label": "Configure Time Scale", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, @@ -5808,21 +12660,20 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Time Scale", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], "initialValues": { - "code": "{ \n\"autoMinScale\": true,\n\"autoMaxScale\": true,\n\"fromDate\": \"2018-01-01\",\n\"toDate\": \"2020-12-31\"\n}" + "config": "{ \n\"autoMinScale\": true,\n\"autoMaxScale\": true,\n\"fromDate\": \"2018-01-01\",\n\"toDate\": \"2020-12-31\"\n}" }, "addLeftIcons": true, "editors": { "config": true }, "level": 2, - "icon": "time-scale", "chainAttachesTo": { "compatibleTypes": "->Time Machine->" }, @@ -5830,13 +12681,12 @@ }, { "type": "Rate Scale", - "docURL": "https://docs.superalgos.org/suite-hierarchy-charting-space.html#rate-scale", "menuItems": [ { - "action": "Configure Rate Scale", - "label": "Configure Rate Scale", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, @@ -5844,21 +12694,20 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Rate Scale", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], "initialValues": { - "code": "{ \n\"autoMinScale\": true,\n\"autoMaxScale\": true,\n\"minValue\": 0,\n\"maxValue\": 25000\n}" + "config": "{ \n\"autoMinScale\": true,\n\"autoMaxScale\": true,\n\"minValue\": 0,\n\"maxValue\": 25000\n}" }, "addLeftIcons": true, "editors": { "config": true }, "level": 2, - "icon": "rate-scale", "chainAttachesTo": { "compatibleTypes": "->Time Machine->Timeline Chart->" }, @@ -5866,13 +12715,12 @@ }, { "type": "Time Frame Scale", - "docURL": "https://docs.superalgos.org/suite-hierarchy-charting-space.html#time-frame-scale", "menuItems": [ { - "action": "Configure Frame Scale", - "label": "Configure Frame Scale", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, @@ -5880,21 +12728,20 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Time Frame Scale", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], "initialValues": { - "code": "{ \n\"value\": \"24-hs\"\n}" + "config": "{ \n\"value\": \"24-hs\"\n}" }, "addLeftIcons": true, "editors": { "config": true }, "level": 2, - "icon": "time-frame-scale", "chainAttachesTo": { "compatibleTypes": "->Time Machine->Timeline Chart->" }, @@ -5902,7 +12749,6 @@ }, { "type": "Timeline Chart", - "docURL": "https://docs.superalgos.org/suite-hierarchy-charting-space.html#timeline-chart", "menuItems": [ { "action": "Add UI Object", @@ -5932,7 +12778,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Time Timeline Chart", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -5941,7 +12787,6 @@ "addLeftIcons": true, "level": 2, "isTitleAllwaysVisible": true, - "icon": "time-line-chart", "referenceAttachesTo": { "compatibleTypes": "->Market->" }, @@ -5970,13 +12815,12 @@ }, { "type": "Layers Manager", - "docURL": "https://docs.superalgos.org/suite-hierarchy-charting-space.html#layers-manager", "menuItems": [ { - "action": "Configure Layers Manager", - "label": "Configure Layers Manager", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, @@ -5986,11 +12830,20 @@ "relatedUiObject": "Layer", "actionFunction": "payload.onMenuItemClick" }, + { + "action": "Add All Mine Layers", + "label": "Add All Mine Layers", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Data Mine Products", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Layers Manager", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -6000,33 +12853,43 @@ "editors": { "config": true }, + "title": [ + "Use Reference Parent" + ], "initialValues": { - "code": "{ \n\"visibleLayers\": 5\n}" + "config": "{ \n\"visibleLayers\": 5\n}" }, "level": 3, - "icon": "layer-manager", "chainAttachesTo": { "compatibleTypes": "->Timeline Chart->" }, + "referenceAttachesTo": { + "compatibleTypes": "->Data Mine Products->" + }, "propertyNameAtParent": "layersManager", "properties": [ { "name": "layers", "type": "array", "childType": "Layer", - "autoAdd": true + "autoAdd": false + }, + { + "name": "botLayers", + "type": "array", + "childType": "Bot Layers", + "autoAdd": false } ] }, { "type": "Layer", - "docURL": "https://docs.superalgos.org/suite-hierarchy-charting-space.html#layer", "menuItems": [ { - "action": "Configure Layer", - "label": "Configure Layer", - "iconPathOn": "html", - "iconPathOff": "html", + "action": "Configure", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", "dontShowAtFullscreen": true, "actionFunction": "uiObject.configEditor.activate" }, @@ -6042,7 +12905,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Layer", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -6050,7 +12913,7 @@ ], "isTitleAllwaysVisible": true, "initialValues": { - "code": "{ \n\"status\": \"off\"\n}" + "config": "{ \n\"status\": \"off\"\n}" }, "addLeftIcons": true, "editors": { @@ -6064,9 +12927,8 @@ "compatibleTypes": "->Data Product->" }, "chainAttachesTo": { - "compatibleTypes": "->Layer Manager->Layers Manager->" + "compatibleTypes": "->Layers Manager->Bot Layers->Layer Folder->" }, - "icon": "attractive", "propertyNameAtParent": "layers", "properties": [ { @@ -6077,30 +12939,121 @@ ] }, { - "type": "Data Storage", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#data-storage", + "type": "Bot Layers", "menuItems": [ { "action": "Add UI Object", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "sessionIndependentData", - "label": "Add Session Ind Data", - "relatedUiObject": "Session Independent Data", + "label": "Add Layer", + "relatedUiObject": "Layer", "actionFunction": "payload.onMenuItemClick" }, { "action": "Add UI Object", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "sessionBasedData", - "label": "Add Session Based Data", - "relatedUiObject": "Session Based Data", + "label": "Add Layer Folder", + "relatedUiObject": "Layer Folder", "actionFunction": "payload.onMenuItemClick" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Data Storage", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Layers Manager->" + }, + "propertyNameAtParent": "botLayers", + "properties": [ + { + "name": "layers", + "type": "array", + "childType": "Layer", + "autoAdd": false + }, + { + "name": "layerFolders", + "type": "array", + "childType": "Layer Folder", + "autoAdd": false + } + ] + }, + { + "type": "Layer Folder", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Layer", + "relatedUiObject": "Layer", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Layer Folder", + "relatedUiObject": "Layer Folder", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Layer Folder->Bot Layers->" + }, + "propertyNameAtParent": "layerFolders", + "properties": [ + { + "name": "layers", + "type": "array", + "childType": "Layer", + "autoAdd": false + }, + { + "name": "layerFolders", + "type": "array", + "childType": "Layer Folder", + "autoAdd": false + } + ] + }, + { + "type": "Data Storage", + "menuItems": [ + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "dataMinesData", + "label": "Add Session Ind Data", + "relatedUiObject": "Data Mines Data", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "tradingMinesData", + "label": "Add Trading Mines Data", + "relatedUiObject": "Trading Mines Data", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -6108,28 +13061,27 @@ ], "addLeftIcons": true, "level": 2, - "icon": "data-storage", "chainAttachesTo": { "compatibleTypes": "->Network Node->" }, "propertyNameAtParent": "dataStorage", "properties": [ { - "name": "sessionIndependentData", + "name": "dataMinesData", "type": "node", - "childType": "Session Independent Data", + "childType": "Data Mines Data", "autoAdd": true }, { - "name": "sessionBasedData", + "name": "tradingMinesData", "type": "node", - "childType": "Session Based Data", + "childType": "Trading Mines Data", "autoAdd": true } ] }, { - "type": "Exchange Tasks", + "type": "Data Mine Tasks", "menuItems": [ { "action": "Run All Task Managers", @@ -6137,8 +13089,8 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Run", "workDoneLabel": "Run Request Sent", - "iconPathOn": "paper-plane", - "iconPathOff": "paper-plane", + "iconPathOn": "run", + "iconPathOff": "run", "actionFunction": "payload.onMenuItemClick" }, { @@ -6157,11 +13109,20 @@ "relatedUiObject": "Task Manager", "actionFunction": "payload.onMenuItemClick" }, + { + "action": "Add All Tasks", + "label": "Add All Tasks", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Task", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Exchange Tasks", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -6169,19 +13130,18 @@ ], "addLeftIcons": true, "level": 2, - "icon": "crypto-exchange", "referenceAttachesTo": { - "compatibleTypes": "->Crypto Exchange->" + "compatibleTypes": "->Data Mine->" }, "chainAttachesTo": { - "compatibleTypes": "->Data Mining->Testing Environment->Production Environment->Template Structure->" + "compatibleTypes": "->Market Data Tasks->" }, "alternativeIcons": "Use Reference Parent", "title": [ "Use Reference Parent" ], "isTitleAllwaysVisible": true, - "propertyNameAtParent": "exchangeTasks", + "propertyNameAtParent": "dataMineTasks", "properties": [ { "name": "taskManagers", @@ -6189,25 +13149,24 @@ "childType": "Task Manager", "monitorChildrenRunning": true } - ] + ] }, { - "type": "Data Mining", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#data-mining", + "type": "Trading Mine Tasks", "menuItems": [ { - "action": "Run All Exchange Tasks", - "label": "Run All Exchange Tasks", + "action": "Run All Task Managers", + "label": "Run All Task Managers", "askConfirmation": true, "confirmationLabel": "Confirm to Run", "workDoneLabel": "Run Request Sent", - "iconPathOn": "paper-plane", - "iconPathOff": "paper-plane", + "iconPathOn": "run", + "iconPathOff": "run", "actionFunction": "payload.onMenuItemClick" }, { - "action": "Stop All Exchange Tasks", - "label": "Stop All Exchange Tasks", + "action": "Stop All Task Managers", + "label": "Stop All Task Managers", "askConfirmation": true, "confirmationLabel": "Confirm to Stop", "workDoneLabel": "Stop Request Sent", @@ -6217,15 +13176,381 @@ }, { "action": "Add UI Object", - "label": "Add Exchange Tasks", - "relatedUiObject": "Exchange Tasks", + "label": "Add Task Manager", + "relatedUiObject": "Task Manager", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add All Tasks", + "label": "Add All Tasks", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Task", "actionFunction": "payload.onMenuItemClick" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Data Mining", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 2, + "referenceAttachesTo": { + "compatibleTypes": "->Trading Mine->" + }, + "chainAttachesTo": { + "compatibleTypes": "->Market Trading Tasks->" + }, + "alternativeIcons": "Use Reference Parent", + "title": [ + "Use Reference Parent" + ], + "isTitleAllwaysVisible": true, + "propertyNameAtParent": "tradingMineTasks", + "properties": [ + { + "name": "taskManagers", + "type": "array", + "childType": "Task Manager", + "monitorChildrenRunning": true + } + ] + }, + { + "type": "Market Data Tasks", + "menuItems": [ + { + "action": "Run All Data Mine Tasks", + "label": "Run All Data Mine Tasks", + "askConfirmation": true, + "confirmationLabel": "Confirm to Run", + "workDoneLabel": "Run Request Sent", + "iconPathOn": "run", + "iconPathOff": "run", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Stop All Data Mine Tasks", + "label": "Stop All Data Mine Tasks", + "askConfirmation": true, + "confirmationLabel": "Confirm to Stop", + "workDoneLabel": "Stop Request Sent", + "iconPathOn": "stop", + "iconPathOff": "stop", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Data Mine Tasks", + "relatedUiObject": "Data Mine Tasks", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add Missing Data Mine Tasks", + "label": "Add Missing Data Mine Tasks", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Data Mine Tasks", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 2, + "referenceAttachesTo": { + "compatibleTypes": "->Market->" + }, + "chainAttachesTo": { + "compatibleTypes": "->Exchange Data Tasks->" + }, + "alternativeIcons": "Use Reference Parent", + "title": [ + "Use Reference Parent Parent Parent", + "Use Reference Parent" + ], + "isTitleAllwaysVisible": true, + "propertyNameAtParent": "marketDataTasks", + "properties": [ + { + "name": "dataMineTasks", + "type": "array", + "childType": "Data Mine Tasks", + "monitorChildrenRunning": true + } + ] + }, + { + "type": "Market Trading Tasks", + "menuItems": [ + { + "action": "Run All Trading Mine Tasks", + "label": "Run All Trading Mine Tasks", + "askConfirmation": true, + "confirmationLabel": "Confirm to Run", + "workDoneLabel": "Run Request Sent", + "iconPathOn": "run", + "iconPathOff": "run", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Stop All Trading Mine Tasks", + "label": "Stop All Trading Mine Tasks", + "askConfirmation": true, + "confirmationLabel": "Confirm to Stop", + "workDoneLabel": "Stop Request Sent", + "iconPathOn": "stop", + "iconPathOff": "stop", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Trading Mine Tasks", + "relatedUiObject": "Trading Mine Tasks", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add Missing Trading Mine Tasks", + "label": "Add Missing Trading Mine Tasks", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Trading Mine Tasks", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 2, + "referenceAttachesTo": { + "compatibleTypes": "->Market->" + }, + "chainAttachesTo": { + "compatibleTypes": "->Exchange Trading Tasks->" + }, + "alternativeIcons": "Use Reference Parent", + "title": [ + "Use Reference Parent Parent Parent", + "Use Reference Parent" + ], + "isTitleAllwaysVisible": true, + "propertyNameAtParent": "marketTradingTasks", + "properties": [ + { + "name": "tradingMineTasks", + "type": "array", + "childType": "Trading Mine Tasks", + "monitorChildrenRunning": true + } + ] + }, + { + "type": "Exchange Data Tasks", + "menuItems": [ + { + "action": "Run All Market Data Tasks", + "label": "Run All Market Data Tasks", + "askConfirmation": true, + "confirmationLabel": "Confirm to Run", + "workDoneLabel": "Run Request Sent", + "iconPathOn": "run", + "iconPathOff": "run", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Stop All Market Data Tasks", + "label": "Stop All Market Data Tasks", + "askConfirmation": true, + "confirmationLabel": "Confirm to Stop", + "workDoneLabel": "Stop Request Sent", + "iconPathOn": "stop", + "iconPathOff": "stop", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Market Data Tasks", + "relatedUiObject": "Market Data Tasks", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add Missing Market Data Tasks", + "label": "Add Missing Markets", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Market Data Tasks", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 2, + "referenceAttachesTo": { + "compatibleTypes": "->Crypto Exchange->" + }, + "chainAttachesTo": { + "compatibleTypes": "->Data Mining->" + }, + "alternativeIcons": "Use Reference Parent", + "title": [ + "Use Reference Parent" + ], + "isTitleAllwaysVisible": true, + "propertyNameAtParent": "exchangeDataTasks", + "properties": [ + { + "name": "marketDataTasks", + "type": "array", + "childType": "Market Data Tasks", + "monitorChildrenRunning": true + } + ] + }, + { + "type": "Exchange Trading Tasks", + "menuItems": [ + { + "action": "Run All Market Trading Tasks", + "label": "Run All Market Trading Tasks", + "askConfirmation": true, + "confirmationLabel": "Confirm to Run", + "workDoneLabel": "Run Request Sent", + "iconPathOn": "run", + "iconPathOff": "run", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Stop All Market Trading Tasks", + "label": "Stop All Market Trading Tasks", + "askConfirmation": true, + "confirmationLabel": "Confirm to Stop", + "workDoneLabel": "Stop Request Sent", + "iconPathOn": "stop", + "iconPathOff": "stop", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Market Trading Tasks", + "relatedUiObject": "Market Trading Tasks", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add Missing Market Trading Tasks", + "label": "Add Missing Markets", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Market Trading Tasks", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 2, + "referenceAttachesTo": { + "compatibleTypes": "->Crypto Exchange->" + }, + "chainAttachesTo": { + "compatibleTypes": "->Testing Environment->Production Environment->" + }, + "alternativeIcons": "Use Reference Parent", + "title": [ + "Use Reference Parent" + ], + "isTitleAllwaysVisible": true, + "propertyNameAtParent": "exchangeTradingTasks", + "properties": [ + { + "name": "marketTradingTasks", + "type": "array", + "childType": "Market Trading Tasks", + "monitorChildrenRunning": true + } + ] + }, + { + "type": "Data Mining", + "menuItems": [ + { + "action": "Run All Exchange Data Tasks", + "label": "Run All Exchange Data Tasks", + "askConfirmation": true, + "confirmationLabel": "Confirm to Run", + "workDoneLabel": "Run Request Sent", + "iconPathOn": "run", + "iconPathOff": "run", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Stop All Exchange Data Tasks", + "label": "Stop All Exchange Data Tasks", + "askConfirmation": true, + "confirmationLabel": "Confirm to Stop", + "workDoneLabel": "Stop Request Sent", + "iconPathOn": "stop", + "iconPathOff": "stop", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Exchange Data Tasks", + "relatedUiObject": "Exchange Data Tasks", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add Missing Exchange Data Tasks", + "label": "Add Missing Exchanges", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Exchange Data Tasks", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -6233,37 +13558,35 @@ ], "addLeftIcons": true, "level": 2, - "icon": "data-mining", "chainAttachesTo": { "compatibleTypes": "->Network Node->" }, "propertyNameAtParent": "dataMining", "properties": [ { - "name": "exchangeTasks", + "name": "exchangeDataTasks", "type": "array", - "childType": "Exchange Tasks", + "childType": "Exchange Data Tasks", "monitorChildrenRunning": true } ] }, { "type": "Testing Environment", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#testing-environment", "menuItems": [ { - "action": "Run All Exchange Tasks", - "label": "Run All Exchange Tasks", + "action": "Run All Exchange Trading Tasks", + "label": "Run All Exchange Trading Tasks", "askConfirmation": true, "confirmationLabel": "Confirm to Run", "workDoneLabel": "Run Request Sent", - "iconPathOn": "paper-plane", - "iconPathOff": "paper-plane", + "iconPathOn": "run", + "iconPathOff": "run", "actionFunction": "payload.onMenuItemClick" }, { - "action": "Stop All Exchange Tasks", - "label": "Stop All Exchange Tasks", + "action": "Stop All Exchange Trading Tasks", + "label": "Stop All Exchange Trading Tasks", "askConfirmation": true, "confirmationLabel": "Confirm to Stop", "workDoneLabel": "Stop Request Sent", @@ -6273,53 +13596,60 @@ }, { "action": "Add UI Object", - "label": "Add Exchange Tasks", - "relatedUiObject": "Exchange Tasks", + "label": "Add Exchange Trading Tasks", + "relatedUiObject": "Exchange Trading Tasks", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add Missing Exchange Trading Tasks", + "label": "Add Missing Exchanges", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Exchange Trading Tasks", "actionFunction": "payload.onMenuItemClick" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Environment", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], "addLeftIcons": true, - "level": 2, - "icon": "testing-environment", + "level": 0, "chainAttachesTo": { "compatibleTypes": "->Network Node->" }, "propertyNameAtParent": "testingEnvironment", "properties": [ { - "name": "exchangeTasks", + "name": "exchangeTradingTasks", "type": "array", - "childType": "Exchange Tasks", + "childType": "Exchange Trading Tasks", "monitorChildrenRunning": true } ] }, { "type": "Production Environment", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#production-environment", "menuItems": [ { - "action": "Run All Exchange Tasks", - "label": "Run All Exchange Tasks", + "action": "Run All Exchange Trading Tasks", + "label": "Run All Exchange Trading Tasks", "askConfirmation": true, "confirmationLabel": "Confirm to Run", "workDoneLabel": "Run Request Sent", - "iconPathOn": "paper-plane", - "iconPathOff": "paper-plane", + "iconPathOn": "run", + "iconPathOff": "run", "actionFunction": "payload.onMenuItemClick" }, { - "action": "Stop All Exchange Tasks", - "label": "Stop All Exchange Tasks", + "action": "Stop All Exchange Trading Tasks", + "label": "Stop All Exchange Trading Tasks", "askConfirmation": true, "confirmationLabel": "Confirm to Stop", "workDoneLabel": "Stop Request Sent", @@ -6329,32 +13659,40 @@ }, { "action": "Add UI Object", - "label": "Add Exchange Tasks", - "relatedUiObject": "Exchange Tasks", + "label": "Add Exchange Trading Tasks", + "relatedUiObject": "Exchange Trading Tasks", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add Missing Exchange Trading Tasks", + "label": "Add Missing Exchanges", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Exchange Trading Tasks", "actionFunction": "payload.onMenuItemClick" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Environment", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" } ], "addLeftIcons": true, - "level": 2, - "icon": "production-environment", + "level": 0, "chainAttachesTo": { "compatibleTypes": "->Network Node->" }, "propertyNameAtParent": "productionEnvironment", "properties": [ { - "name": "exchangeTasks", + "name": "exchangeTradingTasks", "type": "array", - "childType": "Exchange Tasks", + "childType": "Exchange Trading Tasks", "monitorChildrenRunning": true } ] @@ -6364,15 +13702,24 @@ "menuItems": [ { "action": "Add UI Object", - "label": "Add Single Market Data", - "relatedUiObject": "Single Market Data", + "label": "Add Market Data Products", + "relatedUiObject": "Market Data Products", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add Missing Market Data Products", + "label": "Add Missing Markets", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Market Data Products", "actionFunction": "payload.onMenuItemClick" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Data Storage", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -6385,29 +13732,36 @@ "isTitleAllwaysVisible": true, "addLeftIcons": true, "level": 3, - "icon": "crypto-exchange", "referenceAttachesTo": { "compatibleTypes": "->Crypto Exchange->" }, "chainAttachesTo": { - "compatibleTypes": "->Session Independent Data->" + "compatibleTypes": "->Data Mines Data->" }, "propertyNameAtParent": "exchangeDataProducts", "properties": [ { - "name": "singleMarketData", + "name": "marketDataProducts", "type": "array", - "childType": "Single Market Data" + "childType": "Market Data Products" } ] }, { - "type": "Session Independent Data", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#session-independent-data", + "type": "Data Mines Data", "menuItems": [ { "action": "Add UI Object", - "label": "Add Exchange", + "label": "Add Exchange Data Products", + "relatedUiObject": "Exchange Data Products", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add Missing Exchange Data Products", + "label": "Add Missing Exchanges", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", "relatedUiObject": "Exchange Data Products", "actionFunction": "payload.onMenuItemClick" }, @@ -6415,7 +13769,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Data Storage", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -6423,11 +13777,10 @@ ], "addLeftIcons": true, "level": 3, - "icon": "session-independent-data", "chainAttachesTo": { "compatibleTypes": "->Data Storage->" }, - "propertyNameAtParent": "sessionIndependentData", + "propertyNameAtParent": "dataMinesData", "properties": [ { "name": "exchangeDataProducts", @@ -6437,19 +13790,30 @@ ] }, { - "type": "Exchange Sessions", + "type": "Exchange Trading Products", "menuItems": [ { "action": "Add UI Object", - "label": "Add Session Reference", - "relatedUiObject": "Session Reference", + "label": "Add Market Trading Products", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "marketTradingProducts", + "relatedUiObject": "Market Trading Products", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add Missing Market Trading Products", + "label": "Add Missing Markets", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Market Trading Products", "actionFunction": "payload.onMenuItemClick" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Exchange Sessions", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -6462,37 +13826,45 @@ "isTitleAllwaysVisible": true, "addLeftIcons": true, "level": 3, - "icon": "crypto-exchange", "referenceAttachesTo": { "compatibleTypes": "->Crypto Exchange->" }, "chainAttachesTo": { - "compatibleTypes": "->Session Based Data->" + "compatibleTypes": "->Trading Mines Data->" }, - "propertyNameAtParent": "exchangeSessions", + "propertyNameAtParent": "exchangeTradingProducts", "properties": [ { - "name": "sessionReferences", + "name": "marketTradingProducts", "type": "array", - "childType": "Session Reference" + "childType": "Market Trading Products", + "autoAdd": false } ] }, { - "type": "Session Based Data", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#session-based-data", + "type": "Trading Mines Data", "menuItems": [ { "action": "Add UI Object", - "label": "Add Exchange Sessions", - "relatedUiObject": "Exchange Sessions", + "label": "Add Exchange Trading Products", + "relatedUiObject": "Exchange Trading Products", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add Missing Exchange Trading Products", + "label": "Add Missing Exchanges", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Exchange Trading Products", "actionFunction": "payload.onMenuItemClick" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Data Storage", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -6500,36 +13872,47 @@ ], "addLeftIcons": true, "level": 3, - "icon": "session-based-data", "chainAttachesTo": { "compatibleTypes": "->Data Storage->" }, - "propertyNameAtParent": "sessionBasedData", + "propertyNameAtParent": "tradingMinesData", "properties": [ { - "name": "exchangeSessions", + "name": "exchangeTradingProducts", "type": "array", - "childType": "Exchange Sessions" + "childType": "Exchange Trading Products" } ] }, { "type": "Session Reference", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#session-reference", "menuItems": [ { "action": "Add UI Object", - "label": "Add Single Market Data", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "singleMarketData", - "relatedUiObject": "Single Market Data", + "label": "Add Data Product", + "relatedUiObject": "Data Product", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Trading Mine Products", + "relatedUiObject": "Trading Mine Products", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add All Trading Mine Products", + "label": "Add All Trading Mine Products", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Trading Mine Products", "actionFunction": "payload.onMenuItemClick" }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Data Storage", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -6538,32 +13921,52 @@ "isTitleAllwaysVisible": true, "title": [ "Use Reference Parent", - "Use Child @singleMarketData" + "Use Reference Parent Type", + "Use Child @marketDataProducts" ], "addLeftIcons": true, "level": 3, - "icon": "session-reference", "alternativeIcons": "Use Reference Parent", "referenceAttachesTo": { "compatibleTypes": "->Backtesting Session->Paper Trading Session->Forward Testing Session->Live Trading Session->" }, "chainAttachesTo": { - "compatibleTypes": "->Exchange Sessions->Template Structure->" + "compatibleTypes": "->Market Trading Products->" }, "propertyNameAtParent": "sessionReferences", "properties": [ { - "name": "singleMarketData", - "type": "node", - "childType": "Single Market Data", - "autoAdd": true + "name": "dataProducts", + "type": "array", + "childType": "Data Product", + "autoAdd": false + }, + { + "name": "tradingMineProducts", + "type": "array", + "childType": "Trading Mine Products", + "autoAdd": false } ] }, { - "type": "Single Market Data", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#single-market-data", + "type": "Market Data Products", "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Data Mine Products", + "relatedUiObject": "Data Mine Products", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add All Data Mine Products", + "label": "Add All Data Mine Products", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Data Mine Products", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Add UI Object", "label": "Add Data Product", @@ -6574,7 +13977,7 @@ "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Single Market Data", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -6587,32 +13990,86 @@ "Use Reference Parent Parent Parent", "Use Reference Parent" ], - "icon": "single-market-data", "referenceAttachesTo": { "compatibleTypes": "->Market->" }, "chainAttachesTo": { - "compatibleTypes": "->Exchange Data Products->Session Reference->Template Structure->" + "compatibleTypes": "->Exchange Data Products->" }, - "propertyNameAtParent": "singleMarketData", + "propertyNameAtParent": "marketDataProducts", "properties": [ { "name": "dataProducts", "type": "array", "childType": "Data Product", - "autoAdd": true + "autoAdd": false + }, + { + "name": "dataMineProducts", + "type": "array", + "childType": "Data Mine Products", + "autoAdd": false } ] }, { - "type": "Data Product", - "docURL": "https://docs.superalgos.org/suite-hierarchy-network.html#data-product", + "type": "Market Trading Products", "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Session Reference", + "relatedUiObject": "Session Reference", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add Missing Session References", + "label": "Add Missing Sessions", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Session Reference", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Delete UI Object", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", - "label": "Delete Data Product", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "isTitleAllwaysVisible": true, + "title": [ + "Use Reference Parent Parent Parent", + "Use Reference Parent" + ], + "referenceAttachesTo": { + "compatibleTypes": "->Market->" + }, + "chainAttachesTo": { + "compatibleTypes": "->Exchange Trading Products->" + }, + "propertyNameAtParent": "marketTradingProducts", + "properties": [ + { + "name": "sessionReferences", + "type": "array", + "childType": "Session Reference" + } + ] + }, + { + "type": "Data Product", + "menuItems": [ + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", "iconPathOn": "delete", "iconPathOff": "delete", "actionFunction": "payload.onMenuItemClick" @@ -6620,7 +14077,6 @@ ], "addLeftIcons": true, "level": 3, - "icon": "data-product", "isTitleAllwaysVisible": true, "title": [ "Use Reference Parent" @@ -6629,9 +14085,884 @@ "compatibleTypes": "->Product Definition->" }, "chainAttachesTo": { - "compatibleTypes": "->Single Market Data->" + "compatibleTypes": "->Market Data Products->Data Product Folder->Bot Products->Session Reference->" }, "propertyNameAtParent": "dataProducts", "properties": [] + }, + { + "type": "Data Mine Products", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Bot Products", + "relatedUiObject": "Bot Products", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add All Data Products", + "label": "Add All Data Products", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Data Product", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "isTitleAllwaysVisible": true, + "title": [ + "Use Reference Parent" + ], + "referenceAttachesTo": { + "compatibleTypes": "->Data Mine->" + }, + "chainAttachesTo": { + "compatibleTypes": "->Market Data Products->" + }, + "propertyNameAtParent": "dataMineProducts", + "properties": [ + { + "name": "botProducts", + "type": "array", + "childType": "Bot Products", + "autoAdd": false + } + ] + }, + { + "type": "Trading Mine Products", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Bot Products", + "relatedUiObject": "Bot Products", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add All Data Products", + "label": "Add All Data Products", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Data Product", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "isTitleAllwaysVisible": true, + "title": [ + "Use Reference Parent" + ], + "referenceAttachesTo": { + "compatibleTypes": "->Trading Mine->" + }, + "chainAttachesTo": { + "compatibleTypes": "->Session Reference->" + }, + "propertyNameAtParent": "tradingMineProducts", + "properties": [ + { + "name": "botProducts", + "type": "array", + "childType": "Bot Products", + "autoAdd": false + } + ] + }, + { + "type": "Bot Products", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Data Product", + "relatedUiObject": "Data Product", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Data Product Folder", + "relatedUiObject": "Data Product Folder", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Data Mine Products->" + }, + "propertyNameAtParent": "botProducts", + "properties": [ + { + "name": "dataProducts", + "type": "array", + "childType": "Data Product", + "autoAdd": false + }, + { + "name": "dataProductFolders", + "type": "array", + "childType": "Data Product Folder", + "autoAdd": false + } + ] + }, + { + "type": "Data Product Folder", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Data Product", + "relatedUiObject": "Data Product", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Data Product Folder", + "relatedUiObject": "Data Product Folder", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Data Product Folder->Bot Products->" + }, + "propertyNameAtParent": "dataProductFolders", + "properties": [ + { + "name": "dataProducts", + "type": "array", + "childType": "Data Product", + "autoAdd": false + }, + { + "name": "dataProductFolders", + "type": "array", + "childType": "Data Product Folder", + "autoAdd": false + } + ] + }, + { + "type": "Includes", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Includes", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "isHierarchyHead": true, + "addLeftIcons": true, + "level": 0, + "propertyNameAtParent": "includes", + "properties": [ + { + "name": "includedDataMines", + "type": "node", + "childType": "Included Data Mines", + "autoAdd": false + }, + { + "name": "includedTradingMines", + "type": "node", + "childType": "Included Trading Mines", + "autoAdd": false + }, + { + "name": "includedTradingSystems", + "type": "node", + "childType": "Included Trading Systems", + "autoAdd": false + }, + { + "name": "includedTradingEngines", + "type": "node", + "childType": "Included Trading Engines", + "autoAdd": false + }, + { + "name": "includedSuperScripts", + "type": "node", + "childType": "Included Super Scripts", + "autoAdd": false + }, + { + "name": "includedTutorials", + "type": "node", + "childType": "Included Tutorials", + "autoAdd": false + } + ], + "icon": "bitcoin" + }, + { + "type": "Included Data Mines", + "menuItems": [ + { + "action": "Include Missing Data Mines", + "label": "Include Missing Data Mines", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Data Mine", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 1, + "propertyNameAtParent": "includedDataMines", + "properties": [ + { + "name": "includedFiles", + "type": "array", + "childType": "Included File", + "autoAdd": false + } + ], + "icon": "bitcoin" + }, + { + "type": "Included Trading Mines", + "menuItems": [ + { + "action": "Include Missing Trading Mines", + "label": "Include Missing Trading Mines", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Trading Mine", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 1, + "propertyNameAtParent": "includedTradingMines", + "properties": [ + { + "name": "includedFiles", + "type": "array", + "childType": "Included File", + "autoAdd": false + } + ], + "icon": "bitcoin" + }, + { + "type": "Included Trading Systems", + "menuItems": [ + { + "action": "Include Missing Trading Systems", + "label": "Include Missing Trading Systems", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Trading System", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 1, + "propertyNameAtParent": "includedTradingSystems", + "properties": [ + { + "name": "includedFiles", + "type": "array", + "childType": "Included File", + "autoAdd": false + } + ], + "icon": "bitcoin" + }, + { + "type": "Included Trading Engines", + "menuItems": [ + { + "action": "Include Missing Trading Engines", + "label": "Include Missing Trading Engines", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Trading Engine", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 1, + "propertyNameAtParent": "includedTradingEngines", + "properties": [ + { + "name": "includedFiles", + "type": "array", + "childType": "Included File", + "autoAdd": false + } + ], + "icon": "bitcoin" + }, + { + "type": "Included Super Scripts", + "menuItems": [ + { + "action": "Include Missing Super Scripts", + "label": "Include Missing Super Scripts", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Super Scripts", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 1, + "propertyNameAtParent": "includedSuperScripts", + "properties": [ + { + "name": "includedFiles", + "type": "array", + "childType": "Included File", + "autoAdd": false + } + ], + "icon": "bitcoin" + }, + { + "type": "Included Tutorials", + "menuItems": [ + { + "action": "Include Missing Tutorials", + "label": "Include Missing Tutorials", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Tutorial", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 1, + "propertyNameAtParent": "includedTutorials", + "properties": [ + { + "name": "includedFiles", + "type": "array", + "childType": "Included File", + "autoAdd": false + } + ], + "icon": "bitcoin" + }, + { + "type": "Included File", + "menuItems": [ + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "includedFilePosition", + "actionFunction": "payload.onMenuItemClick", + "label": "Add Included File Position", + "relatedUiObject": "Included File Position", + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 2, + "propertyNameAtParent": "includedFiles", + "properties": [ + { + "name": "includedFilePosition", + "type": "node", + "childType": "Included File Position", + "autoAdd": false + } + ], + "icon": "bitcoin" + }, + { + "type": "Included File Position", + "menuItems": [ + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "title": [ + "Use Parent" + ], + "addLeftIcons": true, + "level": 3, + "propertyNameAtParent": "includedFilePosition", + "properties": [ + ], + "icon": "bitcoin" + }, + { + "type": "Tutorial", + "menuItems": [ + { + "action": "Play Tutorial", + "label": "Play", + "iconPathOn": "play", + "iconPathOff": "play", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Resume Tutorial", + "label": "Resume", + "iconPathOn": "resume", + "iconPathOff": "resume", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "label": "Add Tutorial Step", + "relatedUiObject": "Tutorial Step", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Tutorial Topic", + "relatedUiObject": "Tutorial Topic", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Reset Tutorial Progress", + "askConfirmation": true, + "confirmationLabel": "Confirm to Reset", + "label": "Reset Tutorial Progress", + "iconPathOn": "reset", + "iconPathOff": "reset", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{ \n\"title\": \"\",\n \"summary\": \"\",\n \"subTitle\": \"\",\n \"gif\": \"\",\n \"image\": \"\",\n \"definition\": \"\",\n \"bulletListIntro\": \"\",\n \"bulletArray\": \n[\n [\"\", \"\"], \n[\"\", \"\"], \n[\"\", \"\"] \n],\n \"paragraph1\": \"\",\n \"callOut\": \"\",\n \"externalLink\": [\"\", \"\"],\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\", \n \"position\": \"\",\n \"slider\": \"toTop\",\n \"pressButton\": \"\",\n \"documentationURL\": \"\" \n}" + }, + "isTitleAllwaysVisible": true, + "isHierarchyHead": true, + "addLeftIcons": true, + "level": 0, + "propertyNameAtParent": "tutorials", + "properties": [ + { + "name": "tutorialSteps", + "type": "array", + "childType": "Tutorial Step", + "autoAdd": false + }, + { + "name": "tutorialTopics", + "type": "array", + "childType": "Tutorial Topic", + "autoAdd": false + } + ] + }, + { + "type": "Tutorial Topic", + "menuItems": [ + { + "action": "Play Tutorial Topic", + "label": "Play", + "iconPathOn": "play", + "iconPathOff": "play", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Resume Tutorial Topic", + "label": "Resume", + "iconPathOn": "resume", + "iconPathOff": "resume", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "label": "Add Tutorial Step", + "relatedUiObject": "Tutorial Step", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Tutorial Topic", + "relatedUiObject": "Tutorial Topic", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{ \n\"title\": \"\",\n \"summary\": \"\",\n \"gif\": \"\",\n \"image\": \"\",\n \"definition\": \"\",\n \"bulletListIntro\": \"\",\n \"bulletArray\": \n[\n [\"\", \"\"], \n[\"\", \"\"], \n[\"\", \"\"] \n],\n \"paragraph1\": \"\",\n \"callOut\": \"\",\n \"externalLink\": [\"\", \"\"],\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\", \n \"position\": \"\",\n \"slider\": \"toTop\",\n \"pressButton\": \"\",\n \"documentationURL\": \"\" \n}" + }, + "referenceAttachesTo": { + "compatibleTypes": "->*Any Node*->", + "incompatibleTypes": "->Tutorial->Tutorial Topic->Tutorial Step->" + }, + "chainAttachesTo": { + "compatibleTypes": "->Tutorial->" + }, + "addLeftIcons": true, + "level": 1, + "propertyNameAtParent": "tutorialTopics", + "properties": [ + { + "name": "tutorialSteps", + "type": "array", + "childType": "Tutorial Step", + "autoAdd": false + }, + { + "name": "tutorialTopics", + "type": "array", + "childType": "Tutorial Topic", + "autoAdd": false + } + ] + }, + { + "type": "Tutorial Step", + "menuItems": [ + { + "action": "Play Tutorial Step", + "label": "Play", + "iconPathOn": "play", + "iconPathOff": "play", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Resume Tutorial Step", + "label": "Resume", + "iconPathOn": "resume", + "iconPathOff": "resume", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{ \n \"subTitle\": \"\",\n \"gif\": \"\",\n \"image\": \"\",\n \"definition\": \"\",\n \"bulletListIntro\": \"\",\n \"bulletArray\": \n[\n [\"\", \"\"], \n[\"\", \"\"], \n[\"\", \"\"] \n],\n \"paragraph1\": \"\",\n \"callOut\": \"\",\n \"externalLink\": [\"\", \"\"],\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\", \n \"position\": \"\",\n \"slider\": \"toTop\",\n \"pressButton\": \"\",\n \"documentationURL\": \"\" \n}" + }, + "referenceAttachesTo": { + "compatibleTypes": "->*Any Node*->", + "incompatibleTypes": "->Tutorial Topic->Tutorial Step->" + }, + "chainAttachesTo": { + "compatibleTypes": "->Tutorial->Tutorial Topic->" + }, + "addLeftIcons": true, + "level": 2, + "propertyNameAtParent": "tutorialSteps", + "properties": [ + ] + }, + { + "type": "Data Mine Data Dependencies", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Bot Data Dependencies", + "relatedUiObject": "Bot Data Dependencies", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add All Data Dependencies", + "label": "Add All Data Dependencies", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Data Dependency", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "isTitleAllwaysVisible": true, + "title": [ + "Use Reference Parent" + ], + "referenceAttachesTo": { + "compatibleTypes": "->Data Mine->" + }, + "chainAttachesTo": { + "compatibleTypes": "->Process Dependencies->" + }, + "propertyNameAtParent": "dataMineDataDependencies", + "properties": [ + { + "name": "botDataDependencies", + "type": "array", + "childType": "Bot Data Dependencies", + "autoAdd": false + } + ] + }, + { + "type": "Bot Data Dependencies", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Data Dependency", + "relatedUiObject": "Data Dependency", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Dependency Product Folder", + "relatedUiObject": "Dependency Product Folder", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Data Mine Data Dependencies->" + }, + "propertyNameAtParent": "botDataDependencies", + "properties": [ + { + "name": "dataDependencies", + "type": "array", + "childType": "Data Dependency", + "autoAdd": false + }, + { + "name": "dataDependencyFolders", + "type": "array", + "childType": "Data Dependency Folder", + "autoAdd": false + } + ] + }, + { + "type": "Data Dependency Folder", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Data Dependency", + "relatedUiObject": "Data Dependency", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Data Dependency Folder", + "relatedUiObject": "Data Dependency Folder", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Data Dependency Folder->Bot Data Dependencies->" + }, + "propertyNameAtParent": "dataDependencyFolders", + "properties": [ + { + "name": "dataDependencies", + "type": "array", + "childType": "Data Dependency", + "autoAdd": false + }, + { + "name": "dataDependencyFolders", + "type": "array", + "childType": "Data Dependency Folder", + "autoAdd": false + } + ] } ] \ No newline at end of file diff --git a/BackendServers/.env b/BackendServers/.env index 4df3b114e..1e532c64c 100644 --- a/BackendServers/.env +++ b/BackendServers/.env @@ -8,6 +8,6 @@ WRITE_LOGS_TO_FILES=true BOTS_PATH=../Legacy-Code LOG_PATH=../Log-Files -WEB_SOCKETS_SERVER_PORT=8080 -WEB_SERVER_PORT=34247 +WEB_SOCKETS_SERVER_PORT=8081 +WEB_SERVER_PORT=34248 WEB_SERVER_URL=localhost diff --git a/BackendServers/WebServer/AppLoader.js b/BackendServers/WebServer/AppLoader.js index f038011dc..d1925874c 100644 --- a/BackendServers/WebServer/AppLoader.js +++ b/BackendServers/WebServer/AppLoader.js @@ -19,15 +19,17 @@ function newAppLoader() { let plotters let modulesArray = [] - + plotters = defaultPlotters() - + modulesArray = modulesArray.concat([ 'ChartingSpace/Viewport.js', - + 'Globals.js', - + 'AppSchema.js', + 'DocSchema.js', + 'ConceptSchema.js', 'Workspace.js', 'ChartingSpace/EdgeEditor.js', @@ -44,17 +46,37 @@ function newAppLoader() { 'DesignSpace/Workspace/FunctionLibraries/NodeDeleter.js', 'DesignSpace/Workspace/FunctionLibraries/ProtocolNode.js', 'DesignSpace/Workspace/FunctionLibraries/NodeCloning.js', - 'DesignSpace/Workspace/FunctionLibraries/NodeChildren.js', + 'DesignSpace/Workspace/FunctionLibraries/NodeChildren.js', 'DesignSpace/Workspace/FunctionLibraries/TaskFunctions.js', 'DesignSpace/Workspace/FunctionLibraries/SessionFunctions.js', 'DesignSpace/Workspace/FunctionLibraries/ShortcutKeys.js', 'DesignSpace/Workspace/FunctionLibraries/OnFocus.js', 'DesignSpace/Workspace/FunctionLibraries/SuperScripts.js', - 'DesignSpace/Workspace/FunctionLibraries/CCXTFunctions.js', - 'DesignSpace/Workspace/FunctionLibraries/WebhookFunctions.js', + 'DesignSpace/Workspace/FunctionLibraries/CryptoEcosystemFunctions.js', + 'DesignSpace/Workspace/FunctionLibraries/WebhookFunctions.js', 'DesignSpace/Workspace/FunctionLibraries/DependenciesFilter.js', - - 'Utilities/RoundedCornersBackground.js', + 'DesignSpace/Workspace/FunctionLibraries/NodePath.js', + 'DesignSpace/Workspace/FunctionLibraries/DataMineFunctions.js', + 'DesignSpace/Workspace/FunctionLibraries/DataStorageFunctions.js', + 'DesignSpace/Workspace/FunctionLibraries/ChartingSpaceFunctions.js', + 'DesignSpace/Workspace/FunctionLibraries/TutorialFunctions.js', + 'DesignSpace/Workspace/FunctionLibraries/IncludesFunctions.js', + + 'Utilities/CoordinateTransformations.js', + 'Utilities/DateRateTransformations.js', + 'Utilities/Download.js', + 'Utilities/Clipboard.js', + 'Utilities/DrawPrint.js', + 'Utilities/LoadSaveFrame.js', + 'Utilities/LoadSaveTutorial.js', + 'Utilities/NodeConfig.js', + 'Utilities/Hiriarchy.js', + 'Utilities/Folders.js', + 'Utilities/Branches.js', + 'Utilities/Meshes.js', + 'Utilities/NodeChildren.js', + 'Utilities/Menu.js', + 'Utilities/Dates.js', 'Panels/LayersPanel.js', 'Panels/UpDownButton.js', @@ -62,7 +84,7 @@ function newAppLoader() { 'Panels/Layer.js', 'Panels/PlotterPanel.js', 'Panels/PanelsVisibleButton.js', - + 'SideSpace/SidePanelTab.js', 'SideSpace/ListView.js', 'SideSpace/ListItem.js', @@ -74,6 +96,9 @@ function newAppLoader() { 'Spaces/FloatingSpace.js', 'Spaces/DesignSpace.js', 'Spaces/SideSpace.js', + 'Spaces/DocSpace.js', + 'Spaces/ChatSpace.js', + 'Spaces/TutorialSpace.js', 'Files/SingleFile.js', 'Files/FileCloud.js', @@ -92,7 +117,7 @@ function newAppLoader() { 'FloatingSpace/CircularMenuItem.js', 'FloatingSpace/CircularProgressBar.js', 'FloatingSpace/BusyProgressBar.js', - 'FloatingSpace/CodeEditor.js', + 'FloatingSpace/CodeEditor.js', 'FloatingSpace/ConfigEditor.js', 'FloatingSpace/ConditionEditor.js', 'FloatingSpace/FormulaEditor.js', @@ -103,29 +128,36 @@ function newAppLoader() { 'Scales/TimeFrameScale.js', 'Scales/Commons.js', 'Scales/AutoScaleButton.js', - + 'CockpitSpace/AssetBalances.js', 'CockpitSpace/Speedometer.js', 'CockpitSpace/FullScreen.js', 'EventsServerClient.js', - 'VideoRecorder.js', - 'Plotter.js', + 'Plotting/Plotter.js', + 'Plotting/NodesHighlights.js', + 'Plotting/NodesErrors.js', + 'Plotting/NodesWarnings.js', + 'Plotting/NodesInfos.js', + 'Plotting/NodesValues.js', + 'Plotting/NodesStatus.js', + 'Plotting/NodesProgress.js', + 'Plotting/NodesRunning.js', + 'Plotting/NodesAnnouncements.js', + 'Plotting/RecordValues.js', + 'LegacyPlotter.js', 'PlotterPanel.js', + 'VideoRecorder.js', 'ProductStorage.js', - 'SplashScreen.js', 'Canvas.js', 'EventHandler.js', 'Frame.js', - 'Animation.js', - 'Container.js', - 'Utilities.js', 'PostLoader.js' ]) @@ -133,13 +165,9 @@ function newAppLoader() { modulesArray = modulesArray.concat(plotters) let downloadedCounter = 0 - let versionParam = window.canvasApp.version - if (versionParam === undefined) { versionParam = '' } else { - versionParam = '?' + versionParam - } for (let i = 0; i < modulesArray.length; i++) { - let path = window.canvasApp.urlPrefix + modulesArray[i] + versionParam + let path = modulesArray[i] REQUIREJS([path], onRequired) @@ -176,23 +204,14 @@ function newAppLoader() { } function defaultPlotters() { - return [ + return [ 'Plotters/Masters/Plotters-Candles-Volumes/Candles.js', 'Plotters/Masters/Plotters-Candles-Volumes/CandlePanel.js', 'Plotters/Masters/Plotters-Candles-Volumes/Volumes.js', 'Plotters/Masters/Plotters-Candles-Volumes/VolumePanel.js', 'Plotters/Masters/Plotters-Bollinger-Bands/BollingerBands.js', 'Plotters/Masters/Plotters-Bollinger-Bands/BollingerBandsPanel.js', - 'Plotters/Masters/Plotters-Bollinger-Bands/PercentageBandwidth.js', - 'Plotters/TradingEngines/Plotters-Trading-Simulation/TradingSimulation.js', - 'Plotters/TradingEngines/Plotters-Trading-Simulation/TradingSimulationAssetBalancesPanel.js', - 'Plotters/TradingEngines/Plotters-Trading-Simulation/TradingSimulationCurrentPositionPanel.js', - 'Plotters/TradingEngines/Plotters-Trading-Simulation/TradingSimulationPartialResultsPanel.js', - 'Plotters/TradingEngines/Plotters-Trading-Simulation/Conditions.js', - 'Plotters/TradingEngines/Plotters-Trading-Simulation/Strategies.js', - 'Plotters/TradingEngines/Plotters-Trading-Simulation/Trades.js', - 'Plotters/TradingEngines/Plotters-Trading-Simulation/SimulationExecution.js', - 'Plotters/TradingEngines/Plotters-Trading-Simulation/SimulationExecutionPanel.js' + 'Plotters/Masters/Plotters-Bollinger-Bands/PercentageBandwidth.js' ] } diff --git a/BackendServers/WebServer/AppPreLoader.js b/BackendServers/WebServer/AppPreLoader.js index 2e150a408..07238ef7b 100644 --- a/BackendServers/WebServer/AppPreLoader.js +++ b/BackendServers/WebServer/AppPreLoader.js @@ -39,109 +39,83 @@ function loadSuperalgos() { const MODULE_NAME = "App Pre-Loader"; const INFO_LOG = false; - const ERROR_LOG = true; - if (INFO_LOG === true) { console.log(spacePad(MODULE_NAME, 50) + " : " + "[INFO] loadSuperalgos -> Entering function."); } + setupHTMLTextArea() + setupHTMLInput() + setupHTMLCanvas() + loadDebugModule() - /* The first thing to do here is to add the canvas where all the action is going to happen. */ + function setupHTMLTextArea() { + let textArea = document.createElement('textarea'); + textArea.id = "textArea"; + textArea.spellcheck = false; + textArea.style = 'resize: none;' + + ' border: none;' + + ' outline: none;' + + 'box-shadow: none;' + + 'overflow:hidden;' + + 'font-family: ' + 'Saira' + ';' + + 'font-size: 12px;' + + 'background-color: rgb(255, 255, 255);' + + 'color:rgb(255, 255, 255);' + + 'width: ' + 600 + 'px;' + + 'height: ' + 400 + 'px' + let textAreaDiv = document.getElementById('textAreaDiv'); + textAreaDiv.appendChild(textArea); + textAreaDiv.style = 'position:fixed; top:' + -1500 + 'px; left:' + 500 + 'px; z-index:10; ' + } - let textArea = document.createElement('textarea'); - textArea.id = "textArea"; - textArea.spellcheck = false; - textArea.style = 'resize: none;' + - ' border: none;' + - ' outline: none;' + - 'box-shadow: none;' + - 'overflow:hidden;' + - 'font-family: ' + 'Saira' + ';' + - 'font-size: 12px;' + - 'background-color: rgb(255, 255, 255);' + - 'color:rgb(255, 255, 255);' + - 'width: ' + 800 + 'px;' + - 'height: ' + 600 + 'px' + function setupHTMLInput() { + let input = document.createElement('input'); + input.id = "input"; + input.spellcheck = false; + input.style = "border: none; outline: none; box-shadow: none; overflow:hidden; width: 0px; height: 0px;"; - let textAreaDiv = document.getElementById('textAreaDiv'); - textAreaDiv.appendChild(textArea); - textAreaDiv.style = 'position:fixed; top:' + -1500 + 'px; left:' + 500 + 'px; z-index:10; ' + let inputDiv = document.getElementById('inputDiv'); + inputDiv.appendChild(input); + } - let input = document.createElement('input'); - input.id = "input"; - input.spellcheck = false; - input.style = "border: none; outline: none; box-shadow: none; overflow:hidden; width: 0px; height: 0px;"; + function setupHTMLCanvas() { + let canvas = document.createElement('canvas'); - let inputDiv = document.getElementById('inputDiv'); - inputDiv.appendChild(input); + canvas.id = "canvas"; + canvas.width = 1400; + canvas.height = 600; + canvas.style.border = "0"; + canvas.style = "position:absolute; top:0px; left:0px; z-index:1"; + let canvasApp = document.getElementById('canvasApp'); + canvasApp.appendChild(canvas); - let canvas = document.createElement('canvas'); + browserCanvas = document.getElementById('canvas'); - canvas.id = "canvas"; - canvas.width = 1400; - canvas.height = 600; - canvas.style.border = "0"; - canvas.style = "position:absolute; top:0px; left:0px; z-index:1"; + browserCanvas.width = window.innerWidth; + browserCanvas.height = window.innerHeight; + browserCanvas.style.border = "none"; - let canvasApp = document.getElementById('canvasApp'); - canvasApp.appendChild(canvas); - - browserCanvas = document.getElementById('canvas'); - - browserCanvas.width = window.innerWidth; - browserCanvas.height = window.innerHeight - window.canvasApp.topMargin; - browserCanvas.style.border = "none"; - - browserCanvas.style.top = window.canvasApp.topMargin + 'px'; - - - - loadDebugModule(); + browserCanvas.style.top = 0 + 'px'; + } function loadDebugModule() { + let path = "WebDebugLog.js"; + REQUIREJS([path], onRequired); - try { - if (INFO_LOG === true) { console.log(spacePad(MODULE_NAME, 50) + " : " + "[INFO] loadDebugModule -> Entering function."); } - - let path = window.canvasApp.urlPrefix + "WebDebugLog.js"; - - REQUIREJS([path], onRequired); - - function onRequired(pModule) { - - if (INFO_LOG === true) { console.log(spacePad(MODULE_NAME, 50) + " : " + "[INFO] " + path + " downloaded."); } - - loadModules(); - - } - } - catch (err) { - console.log(spacePad(MODULE_NAME, 50) + " : " + "[ERROR] loadDebugModule --> " + path + " --> err = " + err.stack); + function onRequired(pModule) { + if (INFO_LOG === true) { console.log(spacePad(MODULE_NAME, 50) + " : " + "[INFO] " + path + " downloaded."); } + loadModules(); } } /* And Finally, we start loading all the scripts we will inmediatelly need. */ - function loadModules() { + let path = "WebServer/AppLoader.js"; + REQUIREJS([path], onRequired); - try { - - if (INFO_LOG === true) { console.log(spacePad(MODULE_NAME, 50) + " : " + "[INFO] loadModules -> Entering function."); } - - let path = window.canvasApp.urlPrefix + "WebServer/AppLoader.js"; - - REQUIREJS([path], onRequired); - - function onRequired(pModule) { - - if (INFO_LOG === true) { console.log(spacePad(MODULE_NAME, 50) + " : " + "[INFO] " + path + " downloaded."); } - - let APP_LOADER_MODULE = newAppLoader(); - APP_LOADER_MODULE.loadModules(); - - } - } - catch (err) { - console.log(spacePad(MODULE_NAME, 50) + " : " + "[ERROR] loadModules --> " + path + " --> err = " + err.stack); + function onRequired(pModule) { + if (INFO_LOG === true) { console.log(spacePad(MODULE_NAME, 50) + " : " + "[INFO] " + path + " downloaded."); } + let APP_LOADER_MODULE = newAppLoader(); + APP_LOADER_MODULE.loadModules(); } } } diff --git a/BackendServers/WebServer/Fonts/Saira-Condensed.woff2 b/BackendServers/WebServer/Fonts/Saira-Condensed.woff2 new file mode 100644 index 000000000..8a7ff57d0 Binary files /dev/null and b/BackendServers/WebServer/Fonts/Saira-Condensed.woff2 differ diff --git a/BackendServers/WebServer/Fonts/Saira.woff2 b/BackendServers/WebServer/Fonts/Saira.woff2 new file mode 100644 index 000000000..5c1b242e1 Binary files /dev/null and b/BackendServers/WebServer/Fonts/Saira.woff2 differ diff --git a/BackendServers/WebServer/Fonts/fontawesome-webfont.ttf b/BackendServers/WebServer/Fonts/fontawesome-webfont.ttf new file mode 100644 index 000000000..35acda2fa Binary files /dev/null and b/BackendServers/WebServer/Fonts/fontawesome-webfont.ttf differ diff --git a/BackendServers/WebServer/Fonts/fontawesome-webfont.woff b/BackendServers/WebServer/Fonts/fontawesome-webfont.woff new file mode 100644 index 000000000..400014a4b Binary files /dev/null and b/BackendServers/WebServer/Fonts/fontawesome-webfont.woff differ diff --git a/BackendServers/WebServer/Fonts/fontawesome-webfont.woff2 b/BackendServers/WebServer/Fonts/fontawesome-webfont.woff2 new file mode 100644 index 000000000..4d13fc604 Binary files /dev/null and b/BackendServers/WebServer/Fonts/fontawesome-webfont.woff2 differ diff --git a/BackendServers/WebServer/Fonts/segoeui.woff b/BackendServers/WebServer/Fonts/segoeui.woff new file mode 100644 index 000000000..afe528bc7 Binary files /dev/null and b/BackendServers/WebServer/Fonts/segoeui.woff differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/150-next-phase-event.png b/BackendServers/WebServer/Images/Icons/style-01/150-next-phase-event.png deleted file mode 100644 index fe469f85f..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/150-next-phase-event.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/actual-rate.png b/BackendServers/WebServer/Images/Icons/style-01/actual-rate.png new file mode 100644 index 000000000..4c36b4bc3 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/actual-rate.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/algorithm-name.png b/BackendServers/WebServer/Images/Icons/style-01/algorithm-name.png new file mode 100644 index 000000000..7146ced5b Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/algorithm-name.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/analysis-1.png b/BackendServers/WebServer/Images/Icons/style-01/analysis-1.png deleted file mode 100644 index 8b3d61b9e..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/analysis-1.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/analysis.png b/BackendServers/WebServer/Images/Icons/style-01/analysis.png deleted file mode 100644 index 80ede07af..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/analysis.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/announcement.png b/BackendServers/WebServer/Images/Icons/style-01/announcement.png new file mode 100644 index 000000000..a19527b12 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/announcement.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/annualized-rate-of-return.png b/BackendServers/WebServer/Images/Icons/style-01/annualized-rate-of-return.png new file mode 100644 index 000000000..278adc3a4 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/annualized-rate-of-return.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/approve.png b/BackendServers/WebServer/Images/Icons/style-01/approve.png deleted file mode 100644 index 2145a1626..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/approve.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/attach.png b/BackendServers/WebServer/Images/Icons/style-01/attach.png deleted file mode 100644 index 678806e32..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/attach.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/session-backtesting.png b/BackendServers/WebServer/Images/Icons/style-01/backtesting-session.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/session-backtesting.png rename to BackendServers/WebServer/Images/Icons/style-01/backtesting-session.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/menu-backup.png b/BackendServers/WebServer/Images/Icons/style-01/backup.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/menu-backup.png rename to BackendServers/WebServer/Images/Icons/style-01/backup.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/balance.png b/BackendServers/WebServer/Images/Icons/style-01/balance.png new file mode 100644 index 000000000..a5c57b4b9 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/balance.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/band.png b/BackendServers/WebServer/Images/Icons/style-01/band.png deleted file mode 100644 index de6aa8c55..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/band.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/base-asset.png b/BackendServers/WebServer/Images/Icons/style-01/base-asset.png new file mode 100644 index 000000000..ce6d5b5d8 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/base-asset.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/begin-balance.png b/BackendServers/WebServer/Images/Icons/style-01/begin-balance.png new file mode 100644 index 000000000..b8e150248 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/begin-balance.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/begin-rate.png b/BackendServers/WebServer/Images/Icons/style-01/begin-rate.png new file mode 100644 index 000000000..45ea57dee Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/begin-rate.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/begin.png b/BackendServers/WebServer/Images/Icons/style-01/begin.png new file mode 100644 index 000000000..987caba2c Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/begin.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/bot-data-dependencies.png b/BackendServers/WebServer/Images/Icons/style-01/bot-data-dependencies.png new file mode 100644 index 000000000..476d5f8e8 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/bot-data-dependencies.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/bot-layers.png b/BackendServers/WebServer/Images/Icons/style-01/bot-layers.png new file mode 100644 index 000000000..6f1185b9f Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/bot-layers.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/bot-products.png b/BackendServers/WebServer/Images/Icons/style-01/bot-products.png new file mode 100644 index 000000000..5bd381b2b Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/bot-products.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/brainstorming.png b/BackendServers/WebServer/Images/Icons/style-01/brainstorming.png deleted file mode 100644 index 993bf0ec2..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/brainstorming.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/broken-link.png b/BackendServers/WebServer/Images/Icons/style-01/broken-link.png deleted file mode 100644 index 1d13ad8ac..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/broken-link.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/bullet-cancelled-order.png b/BackendServers/WebServer/Images/Icons/style-01/bullet-cancelled-order.png new file mode 100644 index 000000000..4034707bf Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/bullet-cancelled-order.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/bullet-error.png b/BackendServers/WebServer/Images/Icons/style-01/bullet-error.png new file mode 100644 index 000000000..8607ac4e7 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/bullet-error.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/bullet-info.png b/BackendServers/WebServer/Images/Icons/style-01/bullet-info.png new file mode 100644 index 000000000..af5a698d1 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/bullet-info.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/bullet-limit-buy-order-filled.png b/BackendServers/WebServer/Images/Icons/style-01/bullet-limit-buy-order-filled.png new file mode 100644 index 000000000..4de65d3f4 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/bullet-limit-buy-order-filled.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/bullet-limit-buy-order.png b/BackendServers/WebServer/Images/Icons/style-01/bullet-limit-buy-order.png new file mode 100644 index 000000000..31305169d Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/bullet-limit-buy-order.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/bullet-limit-sell-order-filled.png b/BackendServers/WebServer/Images/Icons/style-01/bullet-limit-sell-order-filled.png new file mode 100644 index 000000000..a95a47f44 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/bullet-limit-sell-order-filled.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/bullet-limit-sell-order.png b/BackendServers/WebServer/Images/Icons/style-01/bullet-limit-sell-order.png new file mode 100644 index 000000000..58a410544 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/bullet-limit-sell-order.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/bullet-market-buy-order-filled.png b/BackendServers/WebServer/Images/Icons/style-01/bullet-market-buy-order-filled.png new file mode 100644 index 000000000..de96a44e8 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/bullet-market-buy-order-filled.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/bullet-market-buy-order.png b/BackendServers/WebServer/Images/Icons/style-01/bullet-market-buy-order.png new file mode 100644 index 000000000..ae3cb45a9 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/bullet-market-buy-order.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/bullet-market-sell-order-filled.png b/BackendServers/WebServer/Images/Icons/style-01/bullet-market-sell-order-filled.png new file mode 100644 index 000000000..b131de218 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/bullet-market-sell-order-filled.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/bullet-market-sell-order.png b/BackendServers/WebServer/Images/Icons/style-01/bullet-market-sell-order.png new file mode 100644 index 000000000..cbec30b38 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/bullet-market-sell-order.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/bullet-warning.png b/BackendServers/WebServer/Images/Icons/style-01/bullet-warning.png new file mode 100644 index 000000000..2719f8ac2 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/bullet-warning.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/cancel-order-event.png b/BackendServers/WebServer/Images/Icons/style-01/cancel-order-event.png new file mode 100644 index 000000000..341ee7e42 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/cancel-order-event.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/cancel-order.png b/BackendServers/WebServer/Images/Icons/style-01/cancel-order.png new file mode 100644 index 000000000..4ac0a2ad1 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/cancel-order.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/candle.png b/BackendServers/WebServer/Images/Icons/style-01/candle.png new file mode 100644 index 000000000..64546a5ab Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/candle.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/candles.png b/BackendServers/WebServer/Images/Icons/style-01/candles.png deleted file mode 100644 index 8db4abd30..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/candles.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/chat.png b/BackendServers/WebServer/Images/Icons/style-01/chat.png deleted file mode 100644 index 0b424a267..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/chat.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/close-execution.png b/BackendServers/WebServer/Images/Icons/style-01/close-execution.png new file mode 100644 index 000000000..c8508470c Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/close-execution.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/close-order.png b/BackendServers/WebServer/Images/Icons/style-01/close-order.png new file mode 100644 index 000000000..a318696d7 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/close-order.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/close-position.png b/BackendServers/WebServer/Images/Icons/style-01/close-position.png new file mode 100644 index 000000000..8c769f44f Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/close-position.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/close-stage-event.png b/BackendServers/WebServer/Images/Icons/style-01/close-stage-event.png new file mode 100644 index 000000000..dbc9d5cfb Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/close-stage-event.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/close-stage.png b/BackendServers/WebServer/Images/Icons/style-01/close-stage.png new file mode 100644 index 000000000..cb64d4f3d Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/close-stage.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/close.png b/BackendServers/WebServer/Images/Icons/style-01/close.png new file mode 100644 index 000000000..43c923667 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/close.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/menu-tree-minus.png b/BackendServers/WebServer/Images/Icons/style-01/collapse.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/menu-tree-minus.png rename to BackendServers/WebServer/Images/Icons/style-01/collapse.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/compass.png b/BackendServers/WebServer/Images/Icons/style-01/compass.png deleted file mode 100644 index e9b80e7b7..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/compass.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/competition.png b/BackendServers/WebServer/Images/Icons/style-01/competition.png deleted file mode 100644 index 96082a10d..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/competition.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/testing.png b/BackendServers/WebServer/Images/Icons/style-01/condition.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/testing.png rename to BackendServers/WebServer/Images/Icons/style-01/condition.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/configuration.png b/BackendServers/WebServer/Images/Icons/style-01/configuration.png new file mode 100644 index 000000000..b9edd20c9 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/configuration.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/content.png b/BackendServers/WebServer/Images/Icons/style-01/content.png deleted file mode 100644 index b46362501..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/content.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/copy-path.png b/BackendServers/WebServer/Images/Icons/style-01/copy-path.png new file mode 100644 index 000000000..ca02cd314 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/copy-path.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/counters.png b/BackendServers/WebServer/Images/Icons/style-01/counters.png new file mode 100644 index 000000000..3a02b018a Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/counters.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/create-order-event.png b/BackendServers/WebServer/Images/Icons/style-01/create-order-event.png new file mode 100644 index 000000000..aac91c298 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/create-order-event.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/create-order.png b/BackendServers/WebServer/Images/Icons/style-01/create-order.png new file mode 100644 index 000000000..4eb5942c7 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/create-order.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/crypto-ecosystem.png b/BackendServers/WebServer/Images/Icons/style-01/crypto-ecosystem.png new file mode 100644 index 000000000..60b436b12 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/crypto-ecosystem.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/current.png b/BackendServers/WebServer/Images/Icons/style-01/current.png new file mode 100644 index 000000000..9c0f63baf Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/current.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/cycle.png b/BackendServers/WebServer/Images/Icons/style-01/cycle.png new file mode 100644 index 000000000..26e0af5f9 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/cycle.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/data-dependency-folder.png b/BackendServers/WebServer/Images/Icons/style-01/data-dependency-folder.png new file mode 100644 index 000000000..6bcf4558e Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/data-dependency-folder.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/data-mine-data-dependencies.png b/BackendServers/WebServer/Images/Icons/style-01/data-mine-data-dependencies.png new file mode 100644 index 000000000..53d09b64a Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/data-mine-data-dependencies.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/data-mine-products.png b/BackendServers/WebServer/Images/Icons/style-01/data-mine-products.png new file mode 100644 index 000000000..af676213e Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/data-mine-products.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/data-mine-tasks.png b/BackendServers/WebServer/Images/Icons/style-01/data-mine-tasks.png new file mode 100644 index 000000000..9bc5e1d7f Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/data-mine-tasks.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/session-independent-data.png b/BackendServers/WebServer/Images/Icons/style-01/data-mines-data.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/session-independent-data.png rename to BackendServers/WebServer/Images/Icons/style-01/data-mines-data.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/data-mining.png b/BackendServers/WebServer/Images/Icons/style-01/data-mining.png index 069479644..30c298ab4 100644 Binary files a/BackendServers/WebServer/Images/Icons/style-01/data-mining.png and b/BackendServers/WebServer/Images/Icons/style-01/data-mining.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/data-product-folder.png b/BackendServers/WebServer/Images/Icons/style-01/data-product-folder.png new file mode 100644 index 000000000..4e1c96544 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/data-product-folder.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/days.png b/BackendServers/WebServer/Images/Icons/style-01/days.png new file mode 100644 index 000000000..20d706f8a Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/days.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/delete.png b/BackendServers/WebServer/Images/Icons/style-01/delete.png index a26ebea98..2c31a2f3e 100644 Binary files a/BackendServers/WebServer/Images/Icons/style-01/delete.png and b/BackendServers/WebServer/Images/Icons/style-01/delete.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/design-tool.png b/BackendServers/WebServer/Images/Icons/style-01/design-tool.png deleted file mode 100644 index 7eb24f192..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/design-tool.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/distance-to-event.png b/BackendServers/WebServer/Images/Icons/style-01/distance-to-event.png new file mode 100644 index 000000000..4289fb186 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/distance-to-event.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/down.png b/BackendServers/WebServer/Images/Icons/style-01/down.png new file mode 100644 index 000000000..e6a4c776a Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/down.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/dynamic-indicator.png b/BackendServers/WebServer/Images/Icons/style-01/dynamic-indicator.png new file mode 100644 index 000000000..0ff75a16f Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/dynamic-indicator.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/end-balance.png b/BackendServers/WebServer/Images/Icons/style-01/end-balance.png new file mode 100644 index 000000000..10fee7632 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/end-balance.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/end-rate.png b/BackendServers/WebServer/Images/Icons/style-01/end-rate.png new file mode 100644 index 000000000..5eac98536 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/end-rate.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/end.png b/BackendServers/WebServer/Images/Icons/style-01/end.png new file mode 100644 index 000000000..b448a95ad Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/end.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/entry-target-rate.png b/BackendServers/WebServer/Images/Icons/style-01/entry-target-rate.png new file mode 100644 index 000000000..94564f194 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/entry-target-rate.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/entry-target-size.png b/BackendServers/WebServer/Images/Icons/style-01/entry-target-size.png new file mode 100644 index 000000000..d2087eefb Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/entry-target-size.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/episode-base-asset.png b/BackendServers/WebServer/Images/Icons/style-01/episode-base-asset.png new file mode 100644 index 000000000..286ed367c Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/episode-base-asset.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/episode-counters.png b/BackendServers/WebServer/Images/Icons/style-01/episode-counters.png new file mode 100644 index 000000000..a747a1b42 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/episode-counters.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/episode-quoted-asset.png b/BackendServers/WebServer/Images/Icons/style-01/episode-quoted-asset.png new file mode 100644 index 000000000..c2ef7c9ef Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/episode-quoted-asset.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/episode-statistics.png b/BackendServers/WebServer/Images/Icons/style-01/episode-statistics.png new file mode 100644 index 000000000..842566530 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/episode-statistics.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/episode.png b/BackendServers/WebServer/Images/Icons/style-01/episode.png new file mode 100644 index 000000000..dd5ad4592 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/episode.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/exchange-data-products.png b/BackendServers/WebServer/Images/Icons/style-01/exchange-data-products.png new file mode 100644 index 000000000..ce0ee40d9 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/exchange-data-products.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/exchange-data-tasks.png b/BackendServers/WebServer/Images/Icons/style-01/exchange-data-tasks.png new file mode 100644 index 000000000..1170f2d22 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/exchange-data-tasks.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/exchange-id.png b/BackendServers/WebServer/Images/Icons/style-01/exchange-id.png new file mode 100644 index 000000000..204ea68e4 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/exchange-id.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/exchange-orders.png b/BackendServers/WebServer/Images/Icons/style-01/exchange-orders.png new file mode 100644 index 000000000..43fa83f42 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/exchange-orders.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/exchange-tasks.png b/BackendServers/WebServer/Images/Icons/style-01/exchange-tasks.png new file mode 100644 index 000000000..72357c43a Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/exchange-tasks.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/exchange-trading-products.png b/BackendServers/WebServer/Images/Icons/style-01/exchange-trading-products.png new file mode 100644 index 000000000..e352bca8d Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/exchange-trading-products.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/exchange-trading-tasks.png b/BackendServers/WebServer/Images/Icons/style-01/exchange-trading-tasks.png new file mode 100644 index 000000000..adc788876 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/exchange-trading-tasks.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/execution-algorithm.png b/BackendServers/WebServer/Images/Icons/style-01/execution-algorithm.png new file mode 100644 index 000000000..7b0bce8a5 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/execution-algorithm.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/exit-target-rate.png b/BackendServers/WebServer/Images/Icons/style-01/exit-target-rate.png new file mode 100644 index 000000000..969ed0808 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/exit-target-rate.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/exit-target-size.png b/BackendServers/WebServer/Images/Icons/style-01/exit-target-size.png new file mode 100644 index 000000000..c7ea2f902 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/exit-target-size.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/exit-type.png b/BackendServers/WebServer/Images/Icons/style-01/exit-type.png new file mode 100644 index 000000000..0fd16e71d Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/exit-type.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/menu-tree-plus.png b/BackendServers/WebServer/Images/Icons/style-01/expand.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/menu-tree-plus.png rename to BackendServers/WebServer/Images/Icons/style-01/expand.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/fails.png b/BackendServers/WebServer/Images/Icons/style-01/fails.png new file mode 100644 index 000000000..bd0b988a3 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/fails.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/sitemap.png b/BackendServers/WebServer/Images/Icons/style-01/fee-structure.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/sitemap.png rename to BackendServers/WebServer/Images/Icons/style-01/fee-structure.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/fees-paid.png b/BackendServers/WebServer/Images/Icons/style-01/fees-paid.png new file mode 100644 index 000000000..f1f6de8ad Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/fees-paid.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/pipette.png b/BackendServers/WebServer/Images/Icons/style-01/formula.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/pipette.png rename to BackendServers/WebServer/Images/Icons/style-01/formula.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/session-paper-trading.png b/BackendServers/WebServer/Images/Icons/style-01/forward-testing-session.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/session-paper-trading.png rename to BackendServers/WebServer/Images/Icons/style-01/forward-testing-session.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/menu-mobility-freeze.png b/BackendServers/WebServer/Images/Icons/style-01/freeze.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/menu-mobility-freeze.png rename to BackendServers/WebServer/Images/Icons/style-01/freeze.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/full-board.png b/BackendServers/WebServer/Images/Icons/style-01/full-board.png new file mode 100644 index 000000000..aa13435b8 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/full-board.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/grid.png b/BackendServers/WebServer/Images/Icons/style-01/grid.png deleted file mode 100644 index b68f70a44..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/grid.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/headphones.png b/BackendServers/WebServer/Images/Icons/style-01/headphones.png deleted file mode 100644 index d7c099510..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/headphones.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/heartbeats.png b/BackendServers/WebServer/Images/Icons/style-01/heartbeats.png new file mode 100644 index 000000000..ef69b801e Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/heartbeats.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/histogram.png b/BackendServers/WebServer/Images/Icons/style-01/histogram.png deleted file mode 100644 index 6c5711764..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/histogram.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/hit-fail.png b/BackendServers/WebServer/Images/Icons/style-01/hit-fail.png new file mode 100644 index 000000000..dbf6e4cf0 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/hit-fail.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/hit-ratio.png b/BackendServers/WebServer/Images/Icons/style-01/hit-ratio.png new file mode 100644 index 000000000..b7b436c11 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/hit-ratio.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/hits.png b/BackendServers/WebServer/Images/Icons/style-01/hits.png new file mode 100644 index 000000000..0ed6d54cb Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/hits.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/html-code.png b/BackendServers/WebServer/Images/Icons/style-01/html-code.png new file mode 100644 index 000000000..ed3776799 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/html-code.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/html.png b/BackendServers/WebServer/Images/Icons/style-01/html.png deleted file mode 100644 index fa46b2b7b..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/html.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/identifier.png b/BackendServers/WebServer/Images/Icons/style-01/identifier.png new file mode 100644 index 000000000..eaa4605bb Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/identifier.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/image-condition.png b/BackendServers/WebServer/Images/Icons/style-01/image-condition.png new file mode 100644 index 000000000..1791f9c5d Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/image-condition.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/image-position.png b/BackendServers/WebServer/Images/Icons/style-01/image-position.png new file mode 100644 index 000000000..e46dd330f Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/image-position.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/image.png b/BackendServers/WebServer/Images/Icons/style-01/image.png index 60b436b12..41d647283 100644 Binary files a/BackendServers/WebServer/Images/Icons/style-01/image.png and b/BackendServers/WebServer/Images/Icons/style-01/image.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/index.png b/BackendServers/WebServer/Images/Icons/style-01/index.png new file mode 100644 index 000000000..ea03df35b Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/index.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/bot-indicator.png b/BackendServers/WebServer/Images/Icons/style-01/indicator-bot-instance.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/bot-indicator.png rename to BackendServers/WebServer/Images/Icons/style-01/indicator-bot-instance.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/indicator-bot.png b/BackendServers/WebServer/Images/Icons/style-01/indicator-bot.png new file mode 100644 index 000000000..96a7d7fd1 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/indicator-bot.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/indicator-function.png b/BackendServers/WebServer/Images/Icons/style-01/indicator-function.png new file mode 100644 index 000000000..3f02bd8f4 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/indicator-function.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/process.png b/BackendServers/WebServer/Images/Icons/style-01/indicator-process-instance.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/process.png rename to BackendServers/WebServer/Images/Icons/style-01/indicator-process-instance.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/initial-targets.png b/BackendServers/WebServer/Images/Icons/style-01/initial-targets.png new file mode 100644 index 000000000..7c5c96d16 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/initial-targets.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/javascript-code.png b/BackendServers/WebServer/Images/Icons/style-01/javascript-code.png new file mode 100644 index 000000000..43f82c782 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/javascript-code.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/key-arrows.png b/BackendServers/WebServer/Images/Icons/style-01/key-arrows.png new file mode 100644 index 000000000..2bf524627 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/key-arrows.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/login.png b/BackendServers/WebServer/Images/Icons/style-01/key-reference.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/login.png rename to BackendServers/WebServer/Images/Icons/style-01/key-reference.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/last.png b/BackendServers/WebServer/Images/Icons/style-01/last.png new file mode 100644 index 000000000..ef4a328be Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/last.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/layer-bands.png b/BackendServers/WebServer/Images/Icons/style-01/layer-bands.png new file mode 100644 index 000000000..4c11d52ac Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/layer-bands.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/layer-candles.png b/BackendServers/WebServer/Images/Icons/style-01/layer-candles.png new file mode 100644 index 000000000..d571f45b0 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/layer-candles.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/layer-folder.png b/BackendServers/WebServer/Images/Icons/style-01/layer-folder.png new file mode 100644 index 000000000..9db1e6ebb Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/layer-folder.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/layer-histogram.png b/BackendServers/WebServer/Images/Icons/style-01/layer-histogram.png new file mode 100644 index 000000000..ebc921a13 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/layer-histogram.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/layer-moving-averages.png b/BackendServers/WebServer/Images/Icons/style-01/layer-moving-averages.png new file mode 100644 index 000000000..b5be71cad Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/layer-moving-averages.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/layer-oscilator.png b/BackendServers/WebServer/Images/Icons/style-01/layer-oscilator.png new file mode 100644 index 000000000..f294c55f1 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/layer-oscilator.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/layer-resistance.png b/BackendServers/WebServer/Images/Icons/style-01/layer-resistance.png new file mode 100644 index 000000000..2bf34ab99 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/layer-resistance.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/layer-support.png b/BackendServers/WebServer/Images/Icons/style-01/layer-support.png new file mode 100644 index 000000000..fe1b5e107 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/layer-support.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/layer-trends.png b/BackendServers/WebServer/Images/Icons/style-01/layer-trends.png new file mode 100644 index 000000000..54d5922f9 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/layer-trends.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/layer-volume.png b/BackendServers/WebServer/Images/Icons/style-01/layer-volume.png new file mode 100644 index 000000000..3fd663f9f Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/layer-volume.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/attractive.png b/BackendServers/WebServer/Images/Icons/style-01/layer.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/attractive.png rename to BackendServers/WebServer/Images/Icons/style-01/layer.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/layer-manager.png b/BackendServers/WebServer/Images/Icons/style-01/layers-manager.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/layer-manager.png rename to BackendServers/WebServer/Images/Icons/style-01/layers-manager.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/layout.png b/BackendServers/WebServer/Images/Icons/style-01/layout.png deleted file mode 100644 index eb93ce845..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/layout.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/limit-buy-order.png b/BackendServers/WebServer/Images/Icons/style-01/limit-buy-order.png new file mode 100644 index 000000000..0adb6de55 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/limit-buy-order.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/limit-buy-orders.png b/BackendServers/WebServer/Images/Icons/style-01/limit-buy-orders.png new file mode 100644 index 000000000..a1eac1979 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/limit-buy-orders.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/limit-order.png b/BackendServers/WebServer/Images/Icons/style-01/limit-order.png new file mode 100644 index 000000000..fdcbd2a61 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/limit-order.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/limit-sell-order.png b/BackendServers/WebServer/Images/Icons/style-01/limit-sell-order.png new file mode 100644 index 000000000..164c86c42 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/limit-sell-order.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/limit-sell-orders.png b/BackendServers/WebServer/Images/Icons/style-01/limit-sell-orders.png new file mode 100644 index 000000000..ca6bba333 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/limit-sell-orders.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/session-live-trading.png b/BackendServers/WebServer/Images/Icons/style-01/live-trading-session.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/session-live-trading.png rename to BackendServers/WebServer/Images/Icons/style-01/live-trading-session.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/loading.png b/BackendServers/WebServer/Images/Icons/style-01/loading.png deleted file mode 100644 index 845c02cbd..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/loading.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/lock.png b/BackendServers/WebServer/Images/Icons/style-01/lock.png new file mode 100644 index 000000000..c84abdce4 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/lock.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/manage-stage.png b/BackendServers/WebServer/Images/Icons/style-01/manage-stage.png new file mode 100644 index 000000000..b3cd204b5 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/manage-stage.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/managed-stop-loss.png b/BackendServers/WebServer/Images/Icons/style-01/managed-stop-loss.png new file mode 100644 index 000000000..4b0ed532a Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/managed-stop-loss.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/managed-take-profit.png b/BackendServers/WebServer/Images/Icons/style-01/managed-take-profit.png new file mode 100644 index 000000000..cd36856e7 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/managed-take-profit.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/market-base-asset.png b/BackendServers/WebServer/Images/Icons/style-01/market-base-asset.png new file mode 100644 index 000000000..ce6d5b5d8 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/market-base-asset.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/market-buy-order.png b/BackendServers/WebServer/Images/Icons/style-01/market-buy-order.png new file mode 100644 index 000000000..efc7c70d1 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/market-buy-order.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/market-buy-orders.png b/BackendServers/WebServer/Images/Icons/style-01/market-buy-orders.png new file mode 100644 index 000000000..0b3b7893d Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/market-buy-orders.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/single-market-data.png b/BackendServers/WebServer/Images/Icons/style-01/market-data-products.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/single-market-data.png rename to BackendServers/WebServer/Images/Icons/style-01/market-data-products.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/market-data-tasks.png b/BackendServers/WebServer/Images/Icons/style-01/market-data-tasks.png new file mode 100644 index 000000000..196e690b2 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/market-data-tasks.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/market-order.png b/BackendServers/WebServer/Images/Icons/style-01/market-order.png new file mode 100644 index 000000000..eb9296d01 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/market-order.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/market-quoted-asset.png b/BackendServers/WebServer/Images/Icons/style-01/market-quoted-asset.png new file mode 100644 index 000000000..ce6d5b5d8 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/market-quoted-asset.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/market-reference.png b/BackendServers/WebServer/Images/Icons/style-01/market-reference.png new file mode 100644 index 000000000..ba224734d Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/market-reference.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/market-sell-order.png b/BackendServers/WebServer/Images/Icons/style-01/market-sell-order.png new file mode 100644 index 000000000..c76356b46 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/market-sell-order.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/market-sell-orders.png b/BackendServers/WebServer/Images/Icons/style-01/market-sell-orders.png new file mode 100644 index 000000000..37f6f2363 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/market-sell-orders.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/market-trading-products.png b/BackendServers/WebServer/Images/Icons/style-01/market-trading-products.png new file mode 100644 index 000000000..be8812962 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/market-trading-products.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/market-trading-tasks.png b/BackendServers/WebServer/Images/Icons/style-01/market-trading-tasks.png new file mode 100644 index 000000000..8da1ec3ed Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/market-trading-tasks.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/max.png b/BackendServers/WebServer/Images/Icons/style-01/max.png new file mode 100644 index 000000000..4e11b9d64 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/max.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/menu-tensor-fixed-angles.png b/BackendServers/WebServer/Images/Icons/style-01/menu-tensor-fixed-angles.png deleted file mode 100644 index 9fe32b7a2..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/menu-tensor-fixed-angles.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/menu-tensor-free-angles.png b/BackendServers/WebServer/Images/Icons/style-01/menu-tensor-free-angles.png deleted file mode 100644 index 2fdd02cca..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/menu-tensor-free-angles.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/min.png b/BackendServers/WebServer/Images/Icons/style-01/min.png new file mode 100644 index 000000000..28214e197 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/min.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/mouse-wheel.png b/BackendServers/WebServer/Images/Icons/style-01/mouse-wheel.png deleted file mode 100644 index c26a3517a..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/mouse-wheel.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/move-to-phase.png b/BackendServers/WebServer/Images/Icons/style-01/move-to-phase.png new file mode 100644 index 000000000..e149ee484 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/move-to-phase.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/moving-average.png b/BackendServers/WebServer/Images/Icons/style-01/moving-average.png deleted file mode 100644 index 5d62c67e3..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/moving-average.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/next-phase.png b/BackendServers/WebServer/Images/Icons/style-01/next-phase.png new file mode 100644 index 000000000..efc14dbd0 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/next-phase.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/open-execution.png b/BackendServers/WebServer/Images/Icons/style-01/open-execution.png new file mode 100644 index 000000000..bcf9cfcf7 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/open-execution.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/open-stage.png b/BackendServers/WebServer/Images/Icons/style-01/open-stage.png new file mode 100644 index 000000000..7b81b1619 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/open-stage.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/open.png b/BackendServers/WebServer/Images/Icons/style-01/open.png new file mode 100644 index 000000000..67e31d7f7 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/open.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/order-base-asset.png b/BackendServers/WebServer/Images/Icons/style-01/order-base-asset.png new file mode 100644 index 000000000..9e5161b03 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/order-base-asset.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/order-counters.png b/BackendServers/WebServer/Images/Icons/style-01/order-counters.png new file mode 100644 index 000000000..3a02b018a Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/order-counters.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/order-name.png b/BackendServers/WebServer/Images/Icons/style-01/order-name.png new file mode 100644 index 000000000..01ee8a09c Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/order-name.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/order-quoted-asset.png b/BackendServers/WebServer/Images/Icons/style-01/order-quoted-asset.png new file mode 100644 index 000000000..c2ef7c9ef Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/order-quoted-asset.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/order-rate.png b/BackendServers/WebServer/Images/Icons/style-01/order-rate.png new file mode 100644 index 000000000..9504cb870 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/order-rate.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/order-statistics.png b/BackendServers/WebServer/Images/Icons/style-01/order-statistics.png new file mode 100644 index 000000000..842566530 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/order-statistics.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/orders.png b/BackendServers/WebServer/Images/Icons/style-01/orders.png new file mode 100644 index 000000000..6ba5b11cf Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/orders.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/oscillator.png b/BackendServers/WebServer/Images/Icons/style-01/oscillator.png deleted file mode 100644 index 7c4f9445a..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/oscillator.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/output-dataset-folder.png b/BackendServers/WebServer/Images/Icons/style-01/output-dataset-folder.png new file mode 100644 index 000000000..2312a20ff Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/output-dataset-folder.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/data-entry.png b/BackendServers/WebServer/Images/Icons/style-01/panel-data.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/data-entry.png rename to BackendServers/WebServer/Images/Icons/style-01/panel-data.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/pantone.png b/BackendServers/WebServer/Images/Icons/style-01/pantone.png deleted file mode 100644 index 0ea9cae40..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/pantone.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/paper-plane.png b/BackendServers/WebServer/Images/Icons/style-01/paper-plane.png deleted file mode 100644 index b61292bbc..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/paper-plane.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/session-forward-testing.png b/BackendServers/WebServer/Images/Icons/style-01/paper-trading-session.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/session-forward-testing.png rename to BackendServers/WebServer/Images/Icons/style-01/paper-trading-session.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/settings.png b/BackendServers/WebServer/Images/Icons/style-01/parameters.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/settings.png rename to BackendServers/WebServer/Images/Icons/style-01/parameters.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/percentage-filled.png b/BackendServers/WebServer/Images/Icons/style-01/percentage-filled.png new file mode 100644 index 000000000..861ce4807 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/percentage-filled.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/periods.png b/BackendServers/WebServer/Images/Icons/style-01/periods.png new file mode 100644 index 000000000..497b9a286 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/periods.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/placeholder.png b/BackendServers/WebServer/Images/Icons/style-01/phase-0.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/placeholder.png rename to BackendServers/WebServer/Images/Icons/style-01/phase-0.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/phase-1.png b/BackendServers/WebServer/Images/Icons/style-01/phase-1.png new file mode 100644 index 000000000..b9d3765cf Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/phase-1.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/phase.png b/BackendServers/WebServer/Images/Icons/style-01/phase.png new file mode 100644 index 000000000..b9d3765cf Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/phase.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/photo-camera.png b/BackendServers/WebServer/Images/Icons/style-01/photo-camera.png deleted file mode 100644 index 77336bdff..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/photo-camera.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/piggy-bank.png b/BackendServers/WebServer/Images/Icons/style-01/piggy-bank.png deleted file mode 100644 index 5fe9f5062..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/piggy-bank.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/menu-fix-pinned.png b/BackendServers/WebServer/Images/Icons/style-01/pinned.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/menu-fix-pinned.png rename to BackendServers/WebServer/Images/Icons/style-01/pinned.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/pixel.png b/BackendServers/WebServer/Images/Icons/style-01/pixel.png deleted file mode 100644 index 0dd36069e..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/pixel.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/planning.png b/BackendServers/WebServer/Images/Icons/style-01/planning.png deleted file mode 100644 index d6e3db3d5..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/planning.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/play.png b/BackendServers/WebServer/Images/Icons/style-01/play.png new file mode 100644 index 000000000..b6f5da755 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/play.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/chart-point-formula.png b/BackendServers/WebServer/Images/Icons/style-01/point-formula.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/chart-point-formula.png rename to BackendServers/WebServer/Images/Icons/style-01/point-formula.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/chart-point.png b/BackendServers/WebServer/Images/Icons/style-01/point.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/chart-point.png rename to BackendServers/WebServer/Images/Icons/style-01/point.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/shapes-polygon-body.png b/BackendServers/WebServer/Images/Icons/style-01/polygon-body.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/shapes-polygon-body.png rename to BackendServers/WebServer/Images/Icons/style-01/polygon-body.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/shapes-polygon-border.png b/BackendServers/WebServer/Images/Icons/style-01/polygon-border.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/shapes-polygon-border.png rename to BackendServers/WebServer/Images/Icons/style-01/polygon-border.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/polygon-condition.png b/BackendServers/WebServer/Images/Icons/style-01/polygon-condition.png new file mode 100644 index 000000000..bb5d9dc0d Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/polygon-condition.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/shapes-polygon-vertex.png b/BackendServers/WebServer/Images/Icons/style-01/polygon-vertex.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/shapes-polygon-vertex.png rename to BackendServers/WebServer/Images/Icons/style-01/polygon-vertex.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/shapes-polygon.png b/BackendServers/WebServer/Images/Icons/style-01/polygon.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/shapes-polygon.png rename to BackendServers/WebServer/Images/Icons/style-01/polygon.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/position-base-asset.png b/BackendServers/WebServer/Images/Icons/style-01/position-base-asset.png new file mode 100644 index 000000000..286ed367c Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/position-base-asset.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/position-counters.png b/BackendServers/WebServer/Images/Icons/style-01/position-counters.png new file mode 100644 index 000000000..3a02b018a Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/position-counters.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/position-quoted-asset.png b/BackendServers/WebServer/Images/Icons/style-01/position-quoted-asset.png new file mode 100644 index 000000000..c2ef7c9ef Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/position-quoted-asset.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/stage-open-postion-rate.png b/BackendServers/WebServer/Images/Icons/style-01/position-rate.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/stage-open-postion-rate.png rename to BackendServers/WebServer/Images/Icons/style-01/position-rate.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/stage-open-position-size.png b/BackendServers/WebServer/Images/Icons/style-01/position-size.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/stage-open-position-size.png rename to BackendServers/WebServer/Images/Icons/style-01/position-size.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/position-statistics.png b/BackendServers/WebServer/Images/Icons/style-01/position-statistics.png new file mode 100644 index 000000000..842566530 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/position-statistics.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/position.png b/BackendServers/WebServer/Images/Icons/style-01/position.png new file mode 100644 index 000000000..c97dd7e0c Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/position.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/positions.png b/BackendServers/WebServer/Images/Icons/style-01/positions.png new file mode 100644 index 000000000..c97dd7e0c Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/positions.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/procedure-loop.png b/BackendServers/WebServer/Images/Icons/style-01/procedure-loop.png index bd5b5990a..01ca63c75 100644 Binary files a/BackendServers/WebServer/Images/Icons/style-01/procedure-loop.png and b/BackendServers/WebServer/Images/Icons/style-01/procedure-loop.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/product-definition-folder.png b/BackendServers/WebServer/Images/Icons/style-01/product-definition-folder.png new file mode 100644 index 000000000..d2ea60300 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/product-definition-folder.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/profit-loss.png b/BackendServers/WebServer/Images/Icons/style-01/profit-loss.png new file mode 100644 index 000000000..a7ae65adc Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/profit-loss.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/promotion.png b/BackendServers/WebServer/Images/Icons/style-01/promotion.png deleted file mode 100644 index 2d38a607d..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/promotion.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/quality.png b/BackendServers/WebServer/Images/Icons/style-01/quality.png deleted file mode 100644 index 10ee8b6bd..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/quality.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/quoted-asset.png b/BackendServers/WebServer/Images/Icons/style-01/quoted-asset.png new file mode 100644 index 000000000..ce6d5b5d8 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/quoted-asset.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/rate.png b/BackendServers/WebServer/Images/Icons/style-01/rate.png new file mode 100644 index 000000000..9504cb870 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/rate.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/reset.png b/BackendServers/WebServer/Images/Icons/style-01/reset.png new file mode 100644 index 000000000..8f1a8de04 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/reset.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/responsive.png b/BackendServers/WebServer/Images/Icons/style-01/responsive.png deleted file mode 100644 index 3de364530..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/responsive.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/resume.png b/BackendServers/WebServer/Images/Icons/style-01/resume.png new file mode 100644 index 000000000..d9b831b93 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/resume.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/roi.png b/BackendServers/WebServer/Images/Icons/style-01/roi.png new file mode 100644 index 000000000..10ef69bb9 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/roi.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/run.png b/BackendServers/WebServer/Images/Icons/style-01/run.png new file mode 100644 index 000000000..b6f5da755 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/run.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/search.png b/BackendServers/WebServer/Images/Icons/style-01/search.png deleted file mode 100644 index 595845f03..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/search.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/security.png b/BackendServers/WebServer/Images/Icons/style-01/security.png deleted file mode 100644 index cc32f2462..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/security.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/bot-sensor.png b/BackendServers/WebServer/Images/Icons/style-01/sensor-bot-instance.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/bot-sensor.png rename to BackendServers/WebServer/Images/Icons/style-01/sensor-bot-instance.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/sensor-bot.png b/BackendServers/WebServer/Images/Icons/style-01/sensor-bot.png new file mode 100644 index 000000000..650a239d6 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/sensor-bot.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/sensor-process-instance.png b/BackendServers/WebServer/Images/Icons/style-01/sensor-process-instance.png new file mode 100644 index 000000000..bf6e71161 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/sensor-process-instance.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/serial-number.png b/BackendServers/WebServer/Images/Icons/style-01/serial-number.png new file mode 100644 index 000000000..0b813a476 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/serial-number.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/session-base-asset.png b/BackendServers/WebServer/Images/Icons/style-01/session-base-asset.png new file mode 100644 index 000000000..e3a799cc0 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/session-base-asset.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/session-quoted-asset.png b/BackendServers/WebServer/Images/Icons/style-01/session-quoted-asset.png new file mode 100644 index 000000000..c2ef7c9ef Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/session-quoted-asset.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/session-reference.png b/BackendServers/WebServer/Images/Icons/style-01/session-reference.png index d3c017532..8753ae7bc 100644 Binary files a/BackendServers/WebServer/Images/Icons/style-01/session-reference.png and b/BackendServers/WebServer/Images/Icons/style-01/session-reference.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/menu-share.png b/BackendServers/WebServer/Images/Icons/style-01/share.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/menu-share.png rename to BackendServers/WebServer/Images/Icons/style-01/share.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/simulated-actual-rate.png b/BackendServers/WebServer/Images/Icons/style-01/simulated-actual-rate.png new file mode 100644 index 000000000..8ea6b98af Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/simulated-actual-rate.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/simulated-exchange-events.png b/BackendServers/WebServer/Images/Icons/style-01/simulated-exchange-events.png new file mode 100644 index 000000000..21c1014a2 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/simulated-exchange-events.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/simulated-fees-paid.png b/BackendServers/WebServer/Images/Icons/style-01/simulated-fees-paid.png new file mode 100644 index 000000000..c26c2ad85 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/simulated-fees-paid.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/simulated-partial-fill.png b/BackendServers/WebServer/Images/Icons/style-01/simulated-partial-fill.png new file mode 100644 index 000000000..196efe4a3 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/simulated-partial-fill.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/situation-name.png b/BackendServers/WebServer/Images/Icons/style-01/situation-name.png new file mode 100644 index 000000000..2f287ae43 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/situation-name.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/pyramid.png b/BackendServers/WebServer/Images/Icons/style-01/situation.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/pyramid.png rename to BackendServers/WebServer/Images/Icons/style-01/situation.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/size-filled.png b/BackendServers/WebServer/Images/Icons/style-01/size-filled.png new file mode 100644 index 000000000..e0a6c5002 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/size-filled.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/size-placed.png b/BackendServers/WebServer/Images/Icons/style-01/size-placed.png new file mode 100644 index 000000000..cb7c3df05 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/size-placed.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/size.png b/BackendServers/WebServer/Images/Icons/style-01/size.png new file mode 100644 index 000000000..cf57e7c55 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/size.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/support.png b/BackendServers/WebServer/Images/Icons/style-01/slippage.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/support.png rename to BackendServers/WebServer/Images/Icons/style-01/slippage.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/snapshots.png b/BackendServers/WebServer/Images/Icons/style-01/snapshots.png new file mode 100644 index 000000000..0a70abbd5 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/snapshots.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/social-bot.png b/BackendServers/WebServer/Images/Icons/style-01/social-bot.png deleted file mode 100644 index 1df5bcc28..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/social-bot.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/stage-base-asset.png b/BackendServers/WebServer/Images/Icons/style-01/stage-base-asset.png new file mode 100644 index 000000000..286ed367c Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/stage-base-asset.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/stage-close.png b/BackendServers/WebServer/Images/Icons/style-01/stage-close.png deleted file mode 100644 index beb6dc1bd..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/stage-close.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/stage-open-take-profit.png b/BackendServers/WebServer/Images/Icons/style-01/stage-open-take-profit.png deleted file mode 100644 index c3db5908e..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/stage-open-take-profit.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/stage-quoted-asset.png b/BackendServers/WebServer/Images/Icons/style-01/stage-quoted-asset.png new file mode 100644 index 000000000..c2ef7c9ef Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/stage-quoted-asset.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/stage-trigger-take-position.png b/BackendServers/WebServer/Images/Icons/style-01/stage-trigger-take-position.png deleted file mode 100644 index 5e03218d2..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/stage-trigger-take-position.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/stage-trigger-trigger-on.png b/BackendServers/WebServer/Images/Icons/style-01/stage-trigger-trigger-on.png deleted file mode 100644 index e56d56f64..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/stage-trigger-trigger-on.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/startup.png b/BackendServers/WebServer/Images/Icons/style-01/startup.png deleted file mode 100644 index 7ed8d6cb0..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/startup.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/statistics.png b/BackendServers/WebServer/Images/Icons/style-01/statistics.png new file mode 100644 index 000000000..61232f2f3 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/statistics.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/status.png b/BackendServers/WebServer/Images/Icons/style-01/status.png new file mode 100644 index 000000000..ffa7254ad Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/status.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/stop-loss-phase.png b/BackendServers/WebServer/Images/Icons/style-01/stop-loss-phase.png new file mode 100644 index 000000000..2c028a362 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/stop-loss-phase.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/stop-loss-position.png b/BackendServers/WebServer/Images/Icons/style-01/stop-loss-position.png new file mode 100644 index 000000000..197710052 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/stop-loss-position.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/stop-loss.png b/BackendServers/WebServer/Images/Icons/style-01/stop-loss.png new file mode 100644 index 000000000..4b0ed532a Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/stop-loss.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/stop.png b/BackendServers/WebServer/Images/Icons/style-01/stop.png index 65fff4f18..9ab9dadd6 100644 Binary files a/BackendServers/WebServer/Images/Icons/style-01/stop.png and b/BackendServers/WebServer/Images/Icons/style-01/stop.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/strategies.png b/BackendServers/WebServer/Images/Icons/style-01/strategies.png new file mode 100644 index 000000000..7036ea65a Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/strategies.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/strategy-close-stage.png b/BackendServers/WebServer/Images/Icons/style-01/strategy-close-stage.png new file mode 100644 index 000000000..512e4223e Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/strategy-close-stage.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/strategy-counters.png b/BackendServers/WebServer/Images/Icons/style-01/strategy-counters.png new file mode 100644 index 000000000..ffe21fcde Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/strategy-counters.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/strategy-manage-stage.png b/BackendServers/WebServer/Images/Icons/style-01/strategy-manage-stage.png new file mode 100644 index 000000000..0a5917259 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/strategy-manage-stage.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/strategy-name.png b/BackendServers/WebServer/Images/Icons/style-01/strategy-name.png new file mode 100644 index 000000000..99abc01af Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/strategy-name.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/stage-open.png b/BackendServers/WebServer/Images/Icons/style-01/strategy-open-stage.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/stage-open.png rename to BackendServers/WebServer/Images/Icons/style-01/strategy-open-stage.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/stage-trigger.png b/BackendServers/WebServer/Images/Icons/style-01/strategy-trigger-stage.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/stage-trigger.png rename to BackendServers/WebServer/Images/Icons/style-01/strategy-trigger-stage.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/strategy.png b/BackendServers/WebServer/Images/Icons/style-01/strategy.png new file mode 100644 index 000000000..de7cad2cb Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/strategy.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/super-actions.png b/BackendServers/WebServer/Images/Icons/style-01/super-actions.png new file mode 100644 index 000000000..bd4a29da9 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/super-actions.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/take-position-event.png b/BackendServers/WebServer/Images/Icons/style-01/take-position-event.png new file mode 100644 index 000000000..1e552cd8c Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/take-position-event.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/take-position.png b/BackendServers/WebServer/Images/Icons/style-01/take-position.png new file mode 100644 index 000000000..1e552cd8c Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/take-position.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/take-profit-phase.png b/BackendServers/WebServer/Images/Icons/style-01/take-profit-phase.png new file mode 100644 index 000000000..e0c331046 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/take-profit-phase.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/take-profit-position.png b/BackendServers/WebServer/Images/Icons/style-01/take-profit-position.png new file mode 100644 index 000000000..89797528e Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/take-profit-position.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/take-profit.png b/BackendServers/WebServer/Images/Icons/style-01/take-profit.png new file mode 100644 index 000000000..ec35d6df6 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/take-profit.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/tap.png b/BackendServers/WebServer/Images/Icons/style-01/tap.png deleted file mode 100644 index 7f958daf5..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/tap.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/target-rate.png b/BackendServers/WebServer/Images/Icons/style-01/target-rate.png new file mode 100644 index 000000000..f90f28e84 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/target-rate.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/target-size-in-base-asset.png b/BackendServers/WebServer/Images/Icons/style-01/target-size-in-base-asset.png new file mode 100644 index 000000000..c647b1c60 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/target-size-in-base-asset.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/target-size-in-quoted-asset.png b/BackendServers/WebServer/Images/Icons/style-01/target-size-in-quoted-asset.png new file mode 100644 index 000000000..7afd7fe81 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/target-size-in-quoted-asset.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/target-size.png b/BackendServers/WebServer/Images/Icons/style-01/target-size.png new file mode 100644 index 000000000..bb0822363 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/target-size.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/targeting.png b/BackendServers/WebServer/Images/Icons/style-01/targeting.png deleted file mode 100644 index ef53bb1e6..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/targeting.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/task.png b/BackendServers/WebServer/Images/Icons/style-01/task.png index e85e1ba2b..8a7051d9f 100644 Binary files a/BackendServers/WebServer/Images/Icons/style-01/task.png and b/BackendServers/WebServer/Images/Icons/style-01/task.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/text-condition.png b/BackendServers/WebServer/Images/Icons/style-01/text-condition.png new file mode 100644 index 000000000..cc0ad2239 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/text-condition.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/text-formula.png b/BackendServers/WebServer/Images/Icons/style-01/text-formula.png new file mode 100644 index 000000000..de0196867 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/text-formula.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/text-position.png b/BackendServers/WebServer/Images/Icons/style-01/text-position.png new file mode 100644 index 000000000..592c32a3e Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/text-position.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/text-style.png b/BackendServers/WebServer/Images/Icons/style-01/text-style.png new file mode 100644 index 000000000..a9ee3d7b4 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/text-style.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/text.png b/BackendServers/WebServer/Images/Icons/style-01/text.png index 959e64e90..ab4ac4e40 100644 Binary files a/BackendServers/WebServer/Images/Icons/style-01/text.png and b/BackendServers/WebServer/Images/Icons/style-01/text.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/time-period.png b/BackendServers/WebServer/Images/Icons/style-01/time-frame.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/time-period.png rename to BackendServers/WebServer/Images/Icons/style-01/time-frame.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/time-frames-filter.png b/BackendServers/WebServer/Images/Icons/style-01/time-frames-filter.png new file mode 100644 index 000000000..00f2e12e9 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/time-frames-filter.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/schedule.png b/BackendServers/WebServer/Images/Icons/style-01/time-range.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/schedule.png rename to BackendServers/WebServer/Images/Icons/style-01/time-range.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/time-line-chart.png b/BackendServers/WebServer/Images/Icons/style-01/timeline-chart.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/time-line-chart.png rename to BackendServers/WebServer/Images/Icons/style-01/timeline-chart.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/timeline.png b/BackendServers/WebServer/Images/Icons/style-01/timeline.png deleted file mode 100644 index 8a7051d9f..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/timeline.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/toggle-panel-off.png b/BackendServers/WebServer/Images/Icons/style-01/toggle-panel-off.png index 032a33409..820109293 100644 Binary files a/BackendServers/WebServer/Images/Icons/style-01/toggle-panel-off.png and b/BackendServers/WebServer/Images/Icons/style-01/toggle-panel-off.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/toggle-panel-on.png b/BackendServers/WebServer/Images/Icons/style-01/toggle-panel-on.png new file mode 100644 index 000000000..001875359 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/toggle-panel-on.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/tools.png b/BackendServers/WebServer/Images/Icons/style-01/tools.png deleted file mode 100644 index a22d7f0a3..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/tools.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/trading-bot-instance.png b/BackendServers/WebServer/Images/Icons/style-01/trading-bot-instance.png new file mode 100644 index 000000000..7783471df Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/trading-bot-instance.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/trading-bot.png b/BackendServers/WebServer/Images/Icons/style-01/trading-bot.png new file mode 100644 index 000000000..7783471df Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/trading-bot.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/trading-engine-reference.png b/BackendServers/WebServer/Images/Icons/style-01/trading-engine-reference.png new file mode 100644 index 000000000..2d3393503 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/trading-engine-reference.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/bot-trading.png b/BackendServers/WebServer/Images/Icons/style-01/trading-engine.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/bot-trading.png rename to BackendServers/WebServer/Images/Icons/style-01/trading-engine.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/trading-mine-products.png b/BackendServers/WebServer/Images/Icons/style-01/trading-mine-products.png new file mode 100644 index 000000000..84957c842 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/trading-mine-products.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/trading-mine-tasks.png b/BackendServers/WebServer/Images/Icons/style-01/trading-mine-tasks.png new file mode 100644 index 000000000..f27e13d53 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/trading-mine-tasks.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/trading-mine.png b/BackendServers/WebServer/Images/Icons/style-01/trading-mine.png new file mode 100644 index 000000000..9c5299e7f Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/trading-mine.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/session-based-data.png b/BackendServers/WebServer/Images/Icons/style-01/trading-mines-data.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/session-based-data.png rename to BackendServers/WebServer/Images/Icons/style-01/trading-mines-data.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/trading-process-instance.png b/BackendServers/WebServer/Images/Icons/style-01/trading-process-instance.png new file mode 100644 index 000000000..bf6e71161 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/trading-process-instance.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/trading-strategy.png b/BackendServers/WebServer/Images/Icons/style-01/trading-strategy.png new file mode 100644 index 000000000..7036ea65a Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/trading-strategy.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/trading-system-reference.png b/BackendServers/WebServer/Images/Icons/style-01/trading-system-reference.png new file mode 100644 index 000000000..0bdf45019 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/trading-system-reference.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/trading-system.png b/BackendServers/WebServer/Images/Icons/style-01/trading-system.png new file mode 100644 index 000000000..e0ab51d3c Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/trading-system.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/trend.png b/BackendServers/WebServer/Images/Icons/style-01/trend.png deleted file mode 100644 index 1a57bb1a1..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/trend.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/stage-trigger-trigger-off.png b/BackendServers/WebServer/Images/Icons/style-01/trigger-off-event.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/stage-trigger-trigger-off.png rename to BackendServers/WebServer/Images/Icons/style-01/trigger-off-event.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/trigger-off.png b/BackendServers/WebServer/Images/Icons/style-01/trigger-off.png new file mode 100644 index 000000000..cb1076837 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/trigger-off.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/chronometer.png b/BackendServers/WebServer/Images/Icons/style-01/trigger-on-event.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/chronometer.png rename to BackendServers/WebServer/Images/Icons/style-01/trigger-on-event.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/trigger-on.png b/BackendServers/WebServer/Images/Icons/style-01/trigger-on.png new file mode 100644 index 000000000..9f4821359 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/trigger-on.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/trigger-stage.png b/BackendServers/WebServer/Images/Icons/style-01/trigger-stage.png new file mode 100644 index 000000000..83a87e2d6 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/trigger-stage.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/tutorial-step.png b/BackendServers/WebServer/Images/Icons/style-01/tutorial-step.png new file mode 100644 index 000000000..fc38a62ba Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/tutorial-step.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/tutorial-topic.png b/BackendServers/WebServer/Images/Icons/style-01/tutorial-topic.png new file mode 100644 index 000000000..e80e242f3 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/tutorial-topic.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/tutorial.png b/BackendServers/WebServer/Images/Icons/style-01/tutorial.png new file mode 100644 index 000000000..3112320cd Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/tutorial.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/menu-mobility-unfreeze.png b/BackendServers/WebServer/Images/Icons/style-01/unfreeze.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/menu-mobility-unfreeze.png rename to BackendServers/WebServer/Images/Icons/style-01/unfreeze.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/menu-fix-unpinned.png b/BackendServers/WebServer/Images/Icons/style-01/unpinned.png similarity index 100% rename from BackendServers/WebServer/Images/Icons/style-01/menu-fix-unpinned.png rename to BackendServers/WebServer/Images/Icons/style-01/unpinned.png diff --git a/BackendServers/WebServer/Images/Icons/style-01/upload.png b/BackendServers/WebServer/Images/Icons/style-01/upload.png deleted file mode 100644 index 50e4d79c2..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/upload.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/user-defined-counter.png b/BackendServers/WebServer/Images/Icons/style-01/user-defined-counter.png new file mode 100644 index 000000000..67b24ce0c Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/user-defined-counter.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/user-defined-parameters.png b/BackendServers/WebServer/Images/Icons/style-01/user-defined-parameters.png new file mode 100644 index 000000000..52d568cb7 Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/user-defined-parameters.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/user-defined-statistic.png b/BackendServers/WebServer/Images/Icons/style-01/user-defined-statistic.png new file mode 100644 index 000000000..ac3a2100d Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/user-defined-statistic.png differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/vector.png b/BackendServers/WebServer/Images/Icons/style-01/vector.png deleted file mode 100644 index b9b1e7a02..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/vector.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/video-player.png b/BackendServers/WebServer/Images/Icons/style-01/video-player.png deleted file mode 100644 index b382fe80e..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/video-player.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/volume.png b/BackendServers/WebServer/Images/Icons/style-01/volume.png deleted file mode 100644 index 60d213b6d..000000000 Binary files a/BackendServers/WebServer/Images/Icons/style-01/volume.png and /dev/null differ diff --git a/BackendServers/WebServer/Images/Icons/style-01/workspace.png b/BackendServers/WebServer/Images/Icons/style-01/workspace.png new file mode 100644 index 000000000..45045251a Binary files /dev/null and b/BackendServers/WebServer/Images/Icons/style-01/workspace.png differ diff --git a/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-backtesting-trading-engine-visualization-01.gif b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-backtesting-trading-engine-visualization-01.gif new file mode 100644 index 000000000..dcb17d828 Binary files /dev/null and b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-backtesting-trading-engine-visualization-01.gif differ diff --git a/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-backtesting-trading-engine-visualization-02.gif b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-backtesting-trading-engine-visualization-02.gif new file mode 100644 index 000000000..d8c45e3e4 Binary files /dev/null and b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-backtesting-trading-engine-visualization-02.gif differ diff --git a/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-layer-managers-scroll.gif b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-layer-managers-scroll.gif new file mode 100644 index 000000000..c735fe627 Binary files /dev/null and b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-layer-managers-scroll.gif differ diff --git a/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-layer-on.gif b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-layer-on.gif new file mode 100644 index 000000000..1d5702d00 Binary files /dev/null and b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-layer-on.gif differ diff --git a/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-layer-panels.gif b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-layer-panels.gif new file mode 100644 index 000000000..5dea3f194 Binary files /dev/null and b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-layer-panels.gif differ diff --git a/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-scales-auto-locked.gif b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-scales-auto-locked.gif new file mode 100644 index 000000000..bb52b737e Binary files /dev/null and b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-scales-auto-locked.gif differ diff --git a/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-scales-time-frame-scale.gif b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-scales-time-frame-scale.gif new file mode 100644 index 000000000..b8a03adf7 Binary files /dev/null and b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-scales-time-frame-scale.gif differ diff --git a/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-scales-unlock-rate-scale.gif b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-scales-unlock-rate-scale.gif new file mode 100644 index 000000000..702577d28 Binary files /dev/null and b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-scales-unlock-rate-scale.gif differ diff --git a/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-scales-unlock-time-scale.gif b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-scales-unlock-time-scale.gif new file mode 100644 index 000000000..9ae03e1b3 Binary files /dev/null and b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-charts-scales-unlock-time-scale.gif differ diff --git a/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-live-trading-binance-orders.gif b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-live-trading-binance-orders.gif new file mode 100644 index 000000000..f90ecd636 Binary files /dev/null and b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-live-trading-binance-orders.gif differ diff --git a/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-live-trading-console.gif b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-live-trading-console.gif new file mode 100644 index 000000000..3e641bc7e Binary files /dev/null and b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-live-trading-console.gif differ diff --git a/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-live-trading-process-progress.gif b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-live-trading-process-progress.gif new file mode 100644 index 000000000..464b6bdd0 Binary files /dev/null and b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-live-trading-process-progress.gif differ diff --git a/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-live-trading-run.gif b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-live-trading-run.gif new file mode 100644 index 000000000..d346eea22 Binary files /dev/null and b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-live-trading-run.gif differ diff --git a/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-start-data-mining-console.gif b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-start-data-mining-console.gif new file mode 100644 index 000000000..15938d5ee Binary files /dev/null and b/BackendServers/WebServer/Images/Tutorial/Gifs/welcome-start-data-mining-console.gif differ diff --git a/BackendServers/WebServer/Images/favicon.ico b/BackendServers/WebServer/Images/favicon.ico new file mode 100644 index 000000000..cd2c5d6af Binary files /dev/null and b/BackendServers/WebServer/Images/favicon.ico differ diff --git a/BackendServers/WebServer/Images/superalgos-logo-for-color-background.png b/BackendServers/WebServer/Images/superalgos-logo-for-color-background.png index 40f8de2ab..b92430f37 100644 Binary files a/BackendServers/WebServer/Images/superalgos-logo-for-color-background.png and b/BackendServers/WebServer/Images/superalgos-logo-for-color-background.png differ diff --git a/BackendServers/WebServer/Images/superalgos-platform.jpg b/BackendServers/WebServer/Images/superalgos-platform.jpg index 7aecf4958..d091da9ef 100644 Binary files a/BackendServers/WebServer/Images/superalgos-platform.jpg and b/BackendServers/WebServer/Images/superalgos-platform.jpg differ diff --git a/BackendServers/WebServer/PlotterPanel.js b/BackendServers/WebServer/PlotterPanel.js index 75e63863e..40fad93d6 100644 --- a/BackendServers/WebServer/PlotterPanel.js +++ b/BackendServers/WebServer/PlotterPanel.js @@ -2,5 +2,10 @@ let functionName = pDataMineOrHost + pPlotter + pModule + pPanel; functionName = functionName.replace(/-/g, ""); functionName = 'new' + functionName - return window[functionName](); + try { + return window[functionName](); + } catch (err) { + console.log('[ERROR] getNewPlotterPanel -> Error trying to Load a Plotter Panel. err = ' + err.stack) + console.log('[ERROR] getNewPlotterPanel -> functionName = ' + functionName) + } } diff --git a/BackendServers/WebServer/font-awasome.css b/BackendServers/WebServer/font-awasome.css new file mode 100644 index 000000000..865522cd8 --- /dev/null +++ b/BackendServers/WebServer/font-awasome.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../Fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../Fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../Fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../Fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../Fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../Fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} \ No newline at end of file diff --git a/BackendServers/WebServer/index.html b/BackendServers/WebServer/index.html index 40277d726..eafb392e1 100644 --- a/BackendServers/WebServer/index.html +++ b/BackendServers/WebServer/index.html @@ -1,45 +1,34 @@ - - + Superalgos - - - - - - - + + + - + + + - + style="overflow:hidden; background: url(Images/superalgos-platform.jpg); background-size: cover;" + onresize="onResize()"> +
+

Superalgos is open-source and free thanks to the generosity of contributors:

+

Luis Fernando Molina, Julian Molina, Andreja Cobeljic, Matías Benitez, Ira Miller, Eduardo Remis, Jeff Braun, rico4dev, Barry Low, Nikola Bjelogrlic, Hirajin Koizuko, and Francisco J. Santillán.

+

Help us keep Superalgos free for all. Become a contributor!

+
+
+ +
+
+ +
 
+ + +
+
+
+ + + + + + + +
+ + + + + + + +
+
+
- + \ No newline at end of file diff --git a/BackendServers/WebServer/main.css b/BackendServers/WebServer/main.css new file mode 100644 index 000000000..18421d890 --- /dev/null +++ b/BackendServers/WebServer/main.css @@ -0,0 +1,346 @@ +/* latin */ +@font-face { + font-family: 'Saira'; + font-style: normal; + font-weight: 300; + src: local('Saira Light'), local('Saira-Light'), url(Fonts/Saira.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* latin */ +@font-face { + font-family: 'Saira Condensed'; + font-style: normal; + font-weight: 300; + src: local('Saira Condensed Light'), local('SairaCondensed-Light'), url(Fonts/Saira-Condensed.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +@font-face { + font-family: segoeui; + src: url(Fonts/segoeui.woff) format('woff'); + font-weight: normal; + font-style: normal; +} + +.credits { + width: 100%; + margin: auto; + margin-bottom: 50; + text-align: center; + position:absolute; + bottom:0; +} + +.credits p { + font-family: 'Saira Condensed'; + font-size: 140%; + color: whitesmoke; + padding: 0 100; +} + +.red { + color: #e3493c; + font-weight: 700; +} + +.tutorial-step { + padding: 15px; + margin-bottom: 20px; + border: 2px solid; + border-color: #1b998b; + border-radius: 8px; + background-color: #fdfdfd; +} + +.tutorial-summary { + font-size:120%; + color: #808080; + margin:20px 0px 20px 0px; + border-left: 5px solid #fd6a33; + padding-left: 10px; + +} + +.tutorial-summary:before { + content: "Summary: "; + font-weight: bold; +} + +.tutorial-definitionTable { + background-color: #f3f3f3; + border-top-color: #a6e1ec; + padding: 15px; + margin: 20px 0; + border: solid 0px; + vertical-align: middle; + min-width: 100px; + width: 100%; +} + +.tutorial-alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; + padding: 15px; + border: 1px solid transparent; + border-radius: 4px; + margin: 20px 0; + border-top-color: #a6e1ec; + width: 90%; +} + +.tutorial-alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; + padding: 15px; + border: 1px solid transparent; + border-radius: 4px; + margin: 20px 0; + border-top-color: #c9e2b3; + width: 90%; +} + +.tutorial-alert-important { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; + padding: 15px; + border: 1px solid transparent; + border-radius: 4px; + margin: 20px 0; + border-top-color: #f7e1b5; + width: 90%; +} + +.tutorial-alert-warning { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; + padding: 15px; + border: 1px solid transparent; + border-radius: 4px; + margin: 20px 0; + border-top-color: #e4b9c0; + width: 90%; +} + +.tutorial-callout { + padding: 20px; + margin: 20px 0; + border: 1px solid #eee; + border-left-width: 5px; + border-radius: 3px; + border-left-color: #bcd643; + font-weight: 500; + width: 90%; +} + +.tutorial-info-circle:before { + content:"\f05a" +} + +.tutorial-check-square-o:before { + content:"\f046" +} + +.tutorial-exclamation-circle:before { + content:"\f06a" +} + +.tutorial-warning:before,.fa-exclamation-triangle:before { + content:"\f06a" +} + +.tutorial-fa { + + font:normal normal normal 14px/1 FontAwesome; + font-size:inherit; + text-rendering:auto; + -webkit-font-smoothing:antialiased; + -moz-osx-font-smoothing:grayscale +} + +.tutorial-font-small { + + font:normal normal normal 14px/1 "segoeui"; + font-size:inherit; + text-rendering:auto; + -webkit-font-smoothing:antialiased; + -moz-osx-font-smoothing:grayscale; + line-height: 150% +} + +li > .tutorial-font-small { + margin-bottom:7px; +} + +div.tutorial-font-small { + margin-bottom:7px; +} + +.tutorial-font-medium { + + font:normal normal normal 32px/1 "segoeui"; + text-rendering:auto; + -webkit-font-smoothing:antialiased; + -moz-osx-font-smoothing:grayscale; + line-height: 150% +} + +.tutorial-font-large { + + font:bold normal normal 40px/1 "segoeui"; + text-rendering:auto; + -webkit-font-smoothing:antialiased; + -moz-osx-font-smoothing:grayscale; + line-height: 150% +} + +.tutorial-font-bold-small { + + font:bold normal normal 14px/1 "segoeui"; + font-size:inherit; + text-rendering:auto; + -webkit-font-smoothing:antialiased; + -moz-osx-font-smoothing:grayscale; + line-height: 150% +} + +.tutorial-stop-button { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; + padding: 12px; + border: 1px solid transparent; + border-radius: 4px; + margin: 20px 0; + border-top-color: #e4b9c0; + min-width: 100px; +} + +.tutorial-skip-button { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; + padding: 12px; + border: 1px solid transparent; + border-radius: 4px; + margin: 20px 0; + border-top-color: #f7e1b5; + min-width: 100px; +} + +.tutorial-previous-button { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; + padding: 12px; + border: 1px solid transparent; + border-radius: 4px; + margin: 20px 0; + border-top-color: #c9e2b3; + min-width: 100px; +} + +.tutorial-next-button { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; + padding: 12px; + border: 1px solid transparent; + border-radius: 4px; + margin: 20px 0; + border-top-color: #c9e2b3; + min-width: 100px; +} + +.tutorial-form { + padding: 5px; + border: solid 0px; + margin-left: auto; + margin-right: auto; + margin-bottom: 20px; + width: 100%; +} + +.tutorial-buttonsTable { + border-top-color: #a6e1ec; + border: solid 0px; + vertical-align: middle; + min-width: 100px; + width: 95%; + margin-left: auto; + margin-right: auto; +} + +.tutorial-image-container { + padding: 5px 15px 5px 5px; + border: solid 0px; + margin-left: auto; + margin-right: auto; + width: 100%; +} + +/* Tooltip container */ +.tooltip { + position: relative; + display: inline-block; + border-bottom: 1px dotted black; /* If you want dots under the hoverable text */ +} + +/* Tooltip text */ +.tooltip .tooltiptext { + visibility: hidden; + width: 240px; + background-color: #0295aa; + color: #fff; + font-weight: normal; + font-size: 92%; + line-height: 130%; + text-align: center; + padding: 15px; + border-radius: 6px; + + /* Position the tooltip text */ + position: absolute; + z-index: 1; + bottom: 125%; + left: 50%; + margin-left: -120px; + + + /* Fade in tooltip */ + opacity: 0; + transition: opacity 0.3s; +} + +/* Tooltip arrow */ +.tooltip .tooltiptext::after { + content: ""; + position: absolute; + top: 100%; + left: 50%; + margin-left: -5px; + border-width: 5px; + border-style: solid; + border-color: #0295aa transparent transparent transparent; +} + +/* Show the tooltip text when you mouse over the tooltip container */ +.tooltip:hover .tooltiptext { + visibility: visible; + opacity: 1; +} + +kbd { + padding: 2px 8px; + font-size: 125%; + font-weight: 500; + color: #000; + background-color: #bcd643; + border-radius: 5px; + border-style: outset; + border-width: 1px; +} + diff --git a/BackendServers/WebServer/suite-dummy.html b/BackendServers/WebServer/suite-dummy.html new file mode 100644 index 000000000..78b108803 --- /dev/null +++ b/BackendServers/WebServer/suite-dummy.html @@ -0,0 +1,54 @@ +

Trading Engine

+ +
+ + + + + +The trading engine hierarchy is the data structure used by the trading bot to keep runtime information highly accessible and exposed to others. + +
+ +

You will use this hierarchy for two main purposes:

+ +

The hierarchy exposes—literally—all the information processed by the trading bot, providing a comprehensive feedback loop to trading systems and analysis capabilities to users. The hierarchy exposes—literally—all the information processed by the trading bot, providing a comprehensive feedback loop to trading systems and analysis capabilities to users.

+ + + +

The hierarchy exposes—literally—all the information processed by the trading bot, providing a comprehensive feedback loop to trading systems and analysis capabilities to users.

+ +
Este callout se usa para resaltar una idea particularmente importante. Algo se sobresale, como una conclusion, o algo por el estilo.
+ +

The hierarchy exposes all the information processed by the trading bot, providing a comprehensive feedback loop to trading systems and analysis capabilities to users. The hierarchy exposes all the information processed by the trading bot, providing a comprehensive feedback loop to trading systems and analysis capabilities to users.

+ + + + + + + + + +

Adding a Trading Engine Node

+ +

Calculo que con este segundo nivel de titulo alcanza.

+ +

Este es otro formato tipico de la doc: Trading Engine

+ +
+ + + + + +The trading engine hierarchy is the data structure used by the trading bot to keep runtime information highly accessible and exposed to others. + +
diff --git a/BackendServers/server.js b/BackendServers/server.js index 4a9cf0c44..7878b134f 100644 --- a/BackendServers/server.js +++ b/BackendServers/server.js @@ -65,6 +65,8 @@ try { WEB_SERVER.initialize() WEB_SERVER.run() + console.log("You are running Superalgos Backend Beta 6.") + } catch (err) { console.log('[ERROR] BackendServers -> Task Manager -> server -> Error = ' + err.stack) } diff --git a/BackendServers/taskManagerServer.js b/BackendServers/taskManagerServer.js index 7fa44ce01..7ab879449 100644 --- a/BackendServers/taskManagerServer.js +++ b/BackendServers/taskManagerServer.js @@ -9,16 +9,14 @@ } /* - This server creates and destroys Task Servers according to what is going on at the UI. Each of these created servers will do their own work. The responsibility of this server is to manage those children processes in order to be in sync with what the end user want and is defining at the user interface. - */ const { fork } = require('child_process') require('dotenv').config() - tasks = new Map() + tasksMap = new Map() return thisObject @@ -31,22 +29,19 @@ } function run() { - /* - Here we will create an Event Handler for this server. After that we will listen to events happening here. Elements of the UI will raise events here, as a way to communicate what is going on with the user interacting with UI components. That is the way this server will know for example when a new task needs to be created or destroyed. - */ - let eventsServerClient = newEventsServerClient() eventsServerClient.createEventHandler('Task Manager') eventsServerClient.listenToEvent('Task Manager', 'Run Task', undefined, undefined, undefined, runTask) eventsServerClient.listenToEvent('Task Manager', 'Stop Task', undefined, undefined, undefined, stopTask) + eventsServerClient.listenToEvent('Task Manager', 'Task Status', undefined, undefined, undefined, taskStatus) console.log('Task Manager Server Started.') - + function runTask(message) { //console.log('[INFO] BackendServers -> Task Manager Server -> runTask -> Entering function.') @@ -65,7 +60,7 @@ return } - if (tasks.get(message.event.taskId) !== undefined) { + if (tasksMap.get(message.event.taskId) !== undefined) { let key = message.event.taskName + '-' + 'Task' + '-' + message.event.taskId eventsServerClient.raiseEvent(key, 'Running') // Meaning Task Running return @@ -82,29 +77,45 @@ process.execArgv[i] = '' } } + /* + Forking this process: - /* Forking this process. */ + The Task Server is going to run at a fork of this process. In this way we have a some communication capabilities + between processes, which is kind of limited but good enough for what we need. We send to the forked process + the taskId and taskName at the same time we create the process. Once the process is up and running it will + emit an event that is ready, and at that point we will send all the information needed to run the task. + */ let task = { childProcess: fork(path, [message.event.taskId], { stdio: 'inherit' }), id: message.event.taskId, name: message.event.taskName } - - tasks.set(message.event.taskId, task) - + /* Remember this is a running task now */ + tasksMap.set(message.event.taskId, task) + /* If the Task Server crashes, we remove it from our task map */ task.childProcess.on('error', (err) => { console.log('[ERROR] BackendServers -> Task Manager Server -> runTask -> Problem with Task Name = ' + task.name) console.log('[ERROR] BackendServers -> Task Manager Server -> runTask -> Problem with Task Id = ' + task.id) - console.log(`[ERROR] BackendServers -> Task Manager Server -> runTask -> Task Manager exited with error ${err}`) + console.log(`[ERROR] BackendServers -> Task Manager Server -> runTask -> Task Server exited with error ${err}`) + tasksMap.delete(task.id) }) + /* If the Tast Server stops, we remove it from our task map */ task.childProcess.on('close', (code, signal) => { //console.log('[INFO] BackendServers -> Task Manager Server -> runTask -> Task Terminated. -> Task Name = ' + task.name) //console.log('[INFO] BackendServers -> Task Manager Server -> runTask -> Task Terminated. -> Task Id = ' + task.id) - tasks.delete(task.id) + tasksMap.delete(task.id) }) - + /* + We listen to the newly created Task Server events, waiting until it is up and ready to receive all the Task specific + instruction, to know what kind of task to execute. + */ eventsServerClient.listenToEvent('Task Manager - ' + message.event.taskId, 'Nodejs Process Ready for Task', undefined, undefined, undefined, sendStartingEvent) - + /* + Here we do send the rest of the task information we have, which is what defines what the Task Server is actually + going to do. From there on, here at the Task Manager, we have nothing to do until either the Task Server crashes or exit, + or the end users requests to stop it. Note that the due to the size of the instructions can not be sent via + intra-process communications. + */ function sendStartingEvent() { //console.log('[INFO] BackendServers -> Task Manager Server -> runTask -> Emitting Event -> key = ' + 'Task Server - ' + task.id) eventsServerClient.raiseEvent('Task Server - ' + task.id, 'Run Task', message.event) @@ -112,9 +123,7 @@ } function stopTask(message) { - //console.log('[INFO] BackendServers -> Task Manager Server -> stopTask -> Entering function.') - if (message.event === undefined) { console.log('[WARN] BackendServers -> Task Manager Server -> stopTask -> Message Received Without Event -> message = ' + JSON.stringify(message).substring(0, 1000)) return @@ -124,12 +133,15 @@ console.log('[WARN] BackendServers -> Task Manager Server -> stopTask -> Message Received Without taskId -> message = ' + JSON.stringify(message).substring(0, 1000)) return } - //console.log('[INFO] BackendServers -> Task Manager Server -> stopTask -> Task Name = ' + message.event.taskName) //console.log('[INFO] BackendServers -> Task Manager Server -> stopTask -> Task Id = ' + message.event.taskId) - let task = tasks.get(message.event.taskId) + let task = tasksMap.get(message.event.taskId) + /* + The instruction to stop the Task Server process is sent via intra-process messaging. We will remove this task from + our map once we received the onClose event of our forked process. + */ if (task) { task.childProcess.send('Stop this Task'); //console.log('[INFO] BackendServers -> Task Manager Server -> stopTask -> Child Process instructed to finish.') @@ -137,6 +149,31 @@ console.log('[WARN] BackendServers -> Task Manager Server -> stopTask -> Cannot delete Task that does not exist.') } } + + function taskStatus(message) { + //console.log('[INFO] BackendServers -> Task Manager Server -> taskStatus -> Entering function.') + if (message.event === undefined) { + console.log('[WARN] BackendServers -> Task Manager Server -> taskStatus -> Message Received Without Event -> message = ' + JSON.stringify(message).substring(0, 1000)) + return + } + + if (message.event.taskId === undefined) { + console.log('[WARN] BackendServers -> Task Manager Server -> taskStatus -> Message Received Without taskId -> message = ' + JSON.stringify(message).substring(0, 1000)) + return + } + //console.log('[INFO] BackendServers -> Task Manager Server -> taskStatus -> Task Name = ' + message.event.taskName) + //console.log('[INFO] BackendServers -> Task Manager Server -> taskStatus -> Task Id = ' + message.event.taskId) + + let task = tasksMap.get(message.event.taskId) + let event = {} + if (task) { + event.status = 'Task Process Running' + eventsServerClient.raiseEvent('Task Client - ' + message.event.taskId, 'Task Status', event) + } else { + event.status = 'Task Process Not Running' + eventsServerClient.raiseEvent('Task Client - ' + message.event.taskId, 'Task Status', event) + } + } } function newEventsServerClient() { diff --git a/BackendServers/webServer.js b/BackendServers/webServer.js index a09892e33..c1eeb99ba 100644 --- a/BackendServers/webServer.js +++ b/BackendServers/webServer.js @@ -43,7 +43,13 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) { if (isHttpServerStarted === false) { gWebServer = http.createServer(onBrowserRequest).listen(port) isHttpServerStarted = true - open('http://localhost:' + port) + /* Starting the browser now is optional */ + if (process.argv.includes("noBrowser")) { + console.log('Running Backend only with no UI.') + } else { + open('http://localhost:' + port) + } + console.log('Web Server Started.') } } catch (err) { @@ -83,22 +89,6 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) { let requestParameters = request.url.split('/') - if (requestParameters[1].indexOf('index.html') >= 0) { - /* - We use this to solve the problem when someone is arriving to the site with a sessionToken in the queryString. We extract here that - token, that will be sent later embedded into the HTML code, so that it can enter into the stardard circuit where any site can put - the sessionToken into their HTML code and from there the Browser app will log the user in. - */ - - let queryString = requestParameters[1].split('?') - - requestParameters[1] = '' - requestParameters[2] = queryString[1] - homePage() - - return - } - requestParameters = request.url.split('?') // Remove version information requestParameters = requestParameters[0].split('/') @@ -185,58 +175,19 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) { case 'Webhook': { - switch (requestParameters[2]) { // switch by command - case 'Fetch-Messages': { - let exchange = requestParameters[3] - let market = requestParameters[4] - - /* Some validations */ - if (exchange === undefined) { - console.log('[WARN] webServer -> Webhook -> Fetch-Messages -> Message with no Exchange received -> messageReceived = ' + messageReceived) - respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response) - return - } - if (market === undefined) { - console.log('[WARN] webServer -> Webhook -> Fetch-Messages -> Message with no market received -> messageReceived = ' + messageReceived) - respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response) - return - } - - let key = exchange + '-' + market - - let webhookMessages = webhook.get(key) - if (webhookMessages === undefined) { - webhookMessages = [] - } - - respondWithContent(JSON.stringify(webhookMessages), response) - webhookMessages = [] - - webhook.set(key, webhookMessages) - break - } - case 'New-Message': { - getBody(processRequest) - - function processRequest(messageReceived) { - let timestamp = (new Date()).valueOf() - let source = requestParameters[3] - let exchange = requestParameters[4] - let market = requestParameters[5] + switch (requestParameters[2]) { // switch by command + case 'Fetch-Messages': { + let exchange = requestParameters[3] + let market = requestParameters[4] /* Some validations */ - if (source === undefined) { - console.log('[WARN] webServer -> Webhook -> New-Message -> Message with no Source received -> messageReceived = ' + messageReceived) - respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response) - return - } if (exchange === undefined) { - console.log('[WARN] webServer -> Webhook -> New-Message -> Message with no Exchange received -> messageReceived = ' + messageReceived) + console.log('[WARN] webServer -> Webhook -> Fetch-Messages -> Message with no Exchange received -> messageReceived = ' + messageReceived) respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response) return } if (market === undefined) { - console.log('[WARN] webServer -> Webhook -> New-Message -> Message with no market received -> messageReceived = ' + messageReceived) + console.log('[WARN] webServer -> Webhook -> Fetch-Messages -> Message with no market received -> messageReceived = ' + messageReceived) respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response) return } @@ -248,17 +199,56 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) { webhookMessages = [] } - webhookMessages.push([timestamp, source, messageReceived]) - webhook.set(key, webhookMessages) + respondWithContent(JSON.stringify(webhookMessages), response) + webhookMessages = [] - respondWithContent(JSON.stringify(global.DEFAULT_OK_RESPONSE), response) + webhook.set(key, webhookMessages) + break + } + case 'New-Message': { + getBody(processRequest) + + function processRequest(messageReceived) { + let timestamp = (new Date()).valueOf() + let source = requestParameters[3] + let exchange = requestParameters[4] + let market = requestParameters[5] + + /* Some validations */ + if (source === undefined) { + console.log('[WARN] webServer -> Webhook -> New-Message -> Message with no Source received -> messageReceived = ' + messageReceived) + respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response) + return + } + if (exchange === undefined) { + console.log('[WARN] webServer -> Webhook -> New-Message -> Message with no Exchange received -> messageReceived = ' + messageReceived) + respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response) + return + } + if (market === undefined) { + console.log('[WARN] webServer -> Webhook -> New-Message -> Message with no market received -> messageReceived = ' + messageReceived) + respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response) + return + } + + let key = exchange + '-' + market + + let webhookMessages = webhook.get(key) + if (webhookMessages === undefined) { + webhookMessages = [] + } + + webhookMessages.push([timestamp, source, messageReceived]) + webhook.set(key, webhookMessages) + + respondWithContent(JSON.stringify(global.DEFAULT_OK_RESPONSE), response) + } + break } - break } + break } break - } - break case 'ResetLogsAndData': { @@ -325,6 +315,12 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) { } break + case 'Plotting': // This means the Plotting folder. + { + respondWithFile(process.env.PATH_TO_CANVAS_APP + '/Plotting/' + requestParameters[2], response) + } + break + case 'TopSpace': // This means the TopSpace folder. { respondWithFile(process.env.PATH_TO_CANVAS_APP + '/TopSpace/' + requestParameters[2], response) @@ -423,6 +419,12 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) { } break + case 'Fonts': + { + respondWithFont(process.env.PATH_TO_FONTS + '/' + requestParameters[2], response) + } + break + case 'FloatingSpace': { respondWithFile(process.env.PATH_TO_CANVAS_APP + '/' + requestParameters[1] + '/' + requestParameters[2], response) @@ -441,25 +443,69 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) { } break - case 'AppSchema.js': + case 'ImagesNames': { - let fs = require('fs') + const folder = process.env.PATH_TO_WEB_SERVER + 'WebServer/Images/Icons/style-01/' + const fs = require('fs') - try { - let filePath = process.env.APP_SCHEMA_PATH + 'AppSchema.json' - fs.readFile(filePath, onFileRead) - } catch (e) { - console.log('[ERROR] Error reading the App Schema.', e) - } + fs.readdir(folder, (err, files) => { + respondWithContent(JSON.stringify(files), response) + }) + } + break - function onFileRead(err, appSchema) { - if (err) { - respondWithContent(undefined, response) - } else { - let responseContent = 'function getAppSchema(){ return ' + appSchema + '}' - respondWithContent(responseContent, response) + case 'IncludedFileNames': + { + const fs = require('fs') + let folder + switch (requestParameters[2]) { + case 'Data-Mines': { + folder = process.env.DATA_MINES_PATH + '/' + break + } + case 'Trading-Mines': { + folder = process.env.TRADING_MINES_PATH + '/' + break + } + case 'Trading-Systems': { + folder = process.env.TRADING_SYSTEMS_PATH + '/' + break + } + case 'Trading-Engines': { + folder = process.env.TRADING_ENGINES_PATH + '/' + break + } + case 'Super-Scripts': { + folder = process.env.SUPER_SCRIPTS_PATH + '/' + break + } + case 'Tutorials': { + folder = process.env.TUTORIALS_PATH + '/' + break } } + + fs.readdir(folder, (err, files) => { + respondWithContent(JSON.stringify(files), response) + }) + } + break + + case 'AppSchema.js': + { + sendSchema(process.env.APP_SCHEMA_PATH, 'AppSchema', 'getAppSchema') + } + break + + case 'DocSchema.js': + { + sendSchema(process.env.DOC_SCHEMA_PATH, 'DocSchema', 'getDocSchema') + } + break + + case 'ConceptSchema.js': + { + sendSchema(process.env.CONCEPT_SCHEMA_PATH, 'ConceptSchema', 'getConceptSchema') } break @@ -468,7 +514,7 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) { let fs = require('fs') try { - let filePath = process.env.WORKSPACE_PATH + 'Workspace.json' + let filePath = process.env.DEFAULT_WORKSPACE_PATH + '/Default.json' fs.readFile(filePath, onFileRead) } catch (e) { console.log('[ERROR] Error reading the Workspace.', e) @@ -487,30 +533,60 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) { case 'ListWorkspaces': { - let dirPath = process.env.MY_WORKSPACES_PATH + let allWorkspaces = [] + readIncludedWorkspaces() + function readIncludedWorkspaces() { + let dirPath = process.env.WORKSPACES_PATH + try { + let fs = require('fs') + fs.readdir(dirPath, onDirRead) - try { - let fs = require('fs') - - fs.readdir(dirPath, onDirRead) - - function onDirRead(err, fileList) { - if (err) { - if (CONSOLE_LOG === true) { console.log('[ERROR] Error reading a directory content. filePath = ' + dirPath) } - respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response) - return - } else { - respondWithContent(JSON.stringify(fileList), response) - return + function onDirRead(err, fileList) { + if (err) { + if (CONSOLE_LOG === true) { console.log('[ERROR] Error reading a directory content. filePath = ' + dirPath) } + respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response) + return + } else { + let updatedFileList = [] + for (let i = 0; i < fileList.length; i++) { + let name = 'Included -> ' + fileList[i] + updatedFileList.push(name) + } + allWorkspaces = allWorkspaces.concat(updatedFileList) + readMyWorkspaces() + return + } } + } catch (err) { + if (CONSOLE_LOG === true) { console.log('[ERROR] Error reading a directory content. filePath = ' + dirPath) } + respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response) + return + } + } + + function readMyWorkspaces() { + let dirPath = process.env.MY_WORKSPACES_PATH + try { + let fs = require('fs') + fs.readdir(dirPath, onDirRead) + + function onDirRead(err, fileList) { + if (err) { + if (CONSOLE_LOG === true) { console.log('[ERROR] Error reading a directory content. filePath = ' + dirPath) } + respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response) + return + } else { + allWorkspaces = allWorkspaces.concat(fileList) + respondWithContent(JSON.stringify(allWorkspaces), response) + return + } + } + } catch (err) { + if (CONSOLE_LOG === true) { console.log('[ERROR] Error reading a directory content. filePath = ' + dirPath) } + respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response) + return } - - } catch (err) { - if (CONSOLE_LOG === true) { console.log('[ERROR] Error reading a directory content. filePath = ' + dirPath) } - respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response) - return } - } break @@ -522,6 +598,14 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) { } break + case 'LoadIncludedWorkspace': + { + let fileName = unescape(requestParameters[2]) + let filePath = process.env.WORKSPACES_PATH + '/' + fileName + '.json' + respondWithFile(filePath, response) + } + break + case 'SaveWorkspace': { getBody(processRequest) @@ -560,21 +644,39 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) { } break - case 'DataMines': + case 'Data-Mines': { - respondWithFile(process.env.DATA_MINES_PATH + '/' + requestParameters[2] + '.json', response) + respondWithFile(process.env.DATA_MINES_PATH + '/' + requestParameters[2], response) } break - case 'TradingSystems': + case 'Trading-Mines': { - respondWithFile(process.env.TRADING_SYSTEMS_PATH + '/' + requestParameters[2] + '.json', response) + respondWithFile(process.env.TRADING_MINES_PATH + '/' + requestParameters[2], response) } break - case 'SuperScripts': + case 'Trading-Systems': { - respondWithFile(process.env.SUPER_SCRIPTS_PATH + '/' + requestParameters[2] + '.json', response) + respondWithFile(process.env.TRADING_SYSTEMS_PATH + '/' + requestParameters[2], response) + } + break + + case 'Super-Scripts': + { + respondWithFile(process.env.SUPER_SCRIPTS_PATH + '/' + requestParameters[2], response) + } + break + + case 'Trading-Engines': + { + respondWithFile(process.env.TRADING_ENGINES_PATH + '/' + requestParameters[2], response) + } + break + + case 'Tutorials': + { + respondWithFile(process.env.TUTORIALS_PATH + '/' + requestParameters[2], response) } break @@ -584,43 +686,15 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) { } break - case 'GetDefinition': + case 'main.css': { - respondWithFile(process.env.INTER_PROCESS_FILES_PATH + '/definition.json', response) + sendStyleSheet('main.css') } break - case 'SaveDefinition': + case 'font-awasome.css': { - let fs = require('fs') - let body = '' - - request.on('data', function (data) { - body += data - // Too much POST data - if (body.length > 1e6) { - request.connection.destroy() - } - }) - - request.on('end', function () { - try { - let filePath = process.env.INTER_PROCESS_FILES_PATH + '/definition.json' - fs.writeFile(filePath, body, onFileWrite) - } catch (e) { - console.log('[ERROR] Error writing user config.', e) - respondWithContent(undefined, response) - } - - function onFileWrite(err) { - if (err) { - respondWithContent(undefined, response) - } else { - let responseContent = 'User config updated.' - respondWithContent(responseContent, response) - } - } - }) + sendStyleSheet('font-awasome.css') } break @@ -630,6 +704,49 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) { } } + function sendSchema(filePath, fileName, functionName) { + let fs = require('fs') + + try { + filePath = filePath + fileName + '.json' + fs.readFile(filePath, onFileRead) + } catch (e) { + console.log('[ERROR] Error reading the ' + fileName, e) + } + + function onFileRead(err, schema) { + if (err) { + respondWithContent(undefined, response) + } else { + let responseContent = 'function ' + functionName + '(){ return ' + schema + '}' + respondWithContent(responseContent, response) + } + } + } + + function sendStyleSheet(fileName) { + let fs = require('fs') + try { + let filePath = process.env.PATH_TO_WEB_SERVER + 'WebServer/' + fileName + fs.readFile(filePath, onFileRead) + + function onFileRead(err, file) { + try { + let fileContent = file.toString() + + fileContent = fileContent.replace('WEB_SERVER_PORT', process.env.WEB_SERVER_PORT) + fileContent = fileContent.replace('WEB_SERVER_PORT', process.env.WEB_SERVER_PORT) + fileContent = fileContent.replace('WEB_SERVER_PORT', process.env.WEB_SERVER_PORT) + respondWithContent(fileContent, response, 'text/css') + } catch (err) { + console.log('[ERROR] webServer -> mainCSS -> File Not Found: ' + fileName + ' or Error = ' + err.stack) + } + } + } catch (err) { + console.log(err) + } + } + function homePage() { if (requestParameters[1] === '') { let fs = require('fs') @@ -638,15 +755,13 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) { fs.readFile(fileName, onFileRead) function onFileRead(err, file) { - if (CONSOLE_LOG === true) { console.log('[INFO] webServer -> onBrowserRequest -> onFileRead -> Entering function.') } - try { let fileContent = file.toString() fileContent = fileContent.replace('WEB_SERVER_PORT', process.env.WEB_SERVER_PORT) respondWithContent(fileContent, response) } catch (err) { - console.log('[ERROR] webServer -> onBrowserRequest -> File Not Found: ' + fileName + ' or Error = ' + err.stack) + console.log('[ERROR] webServer -> homePage -> File Not Found: ' + fileName + ' or Error = ' + err.stack) } } } catch (err) { @@ -674,6 +789,7 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) { if (!err) { respondWithContent(file.toString(), response) } else { + //console.log('File requested not found: ' + fileName) respondWithContent(undefined, response) } } @@ -683,7 +799,7 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) { } } - function respondWithContent(content, response) { + function respondWithContent(content, response, contentType) { if (CONSOLE_LOG === true) { console.log('[INFO] webServer -> respondWithContent -> Entering function.') } try { @@ -693,7 +809,11 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) { response.setHeader('Access-Control-Allow-Origin', '*') // Allows to access data from other domains. if (content !== undefined) { - response.writeHead(200, { 'Content-Type': 'text/html' }) + if (contentType !== undefined) { + response.writeHead(200, { 'Content-Type': contentType }) + } else { + response.writeHead(200, { 'Content-Type': 'text/html' }) + } response.write(content) } else { response.writeHead(404, { 'Content-Type': 'text/html' }) @@ -713,8 +833,10 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) { fs.readFile(fileName, onFileRead) function onFileRead(err, file) { - if (CONSOLE_LOG === true) { console.log('[INFO] webServer -> respondWithImage -> onFileRead -> Entering function.') } - + if (err) { + console.log('[ERROR] webServer -> respondWithImage -> onFileRead -> File Not Found: ' + fileName + ' or Error = ' + err.stack) + return + } try { response.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate') // HTTP 1.1. response.setHeader('Pragma', 'no-cache') // HTTP 1.0. @@ -732,6 +854,41 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) { } } + function respondWithFont(fileName, response) { + if (CONSOLE_LOG === true) { console.log('[INFO] webServer -> respondWithBinary -> Entering function.') } + + let fs = require('fs') + try { + fs.readFile(fileName, onFileRead) + + function onFileRead(err, file) { + if (CONSOLE_LOG === true) { console.log('[INFO] webServer -> respondWithBinary -> onFileRead -> Entering function.') } + + try { + if (err) { + console.log('[ERROR] webServer -> respondWithBinary -> onFileRead -> File Not Found: ' + fileName + ' or Error = ' + err.stack) + return + } + response.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate') // HTTP 1.1. + response.setHeader('Pragma', 'no-cache') // HTTP 1.0. + response.setHeader('Expires', '0') // Proxies. + response.setHeader('Access-Control-Allow-Origin', '*') // Allows to access data from other domains. + + if (fileName.indexOf('2') < 0) { + response.writeHead(200, { 'Content-Type': 'font/woff' }) + } else { + response.writeHead(200, { 'Content-Type': 'font/woff2' }) + } + response.end(file, 'binary') + } catch (err) { + console.log('[ERROR] webServer -> respondWithBinary -> onFileRead -> File Not Found: ' + fileName + ' or Error = ' + err.stack) + } + } + } catch (err) { + console.log('[ERROR] webServer -> respondWithBinary -> err = ' + err.stack) + } + } + function returnEmptyArray(response) { try { if (CONSOLE_LOG === true) { console.log('[INFO] webServer -> respondWithFile -> returnEmptyArray -> Entering function.') } diff --git a/CanvasApp/.vscode/settings.json b/CanvasApp/.vscode/settings.json new file mode 100644 index 000000000..1bcba0f85 --- /dev/null +++ b/CanvasApp/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "editor.detectIndentation": false +} \ No newline at end of file diff --git a/CanvasApp/Animation.js b/CanvasApp/Animation.js index cab8a470c..3be427501 100644 --- a/CanvasApp/Animation.js +++ b/CanvasApp/Animation.js @@ -1,9 +1,9 @@ -function newAnimation () { - const MODULE_NAME = 'Animation' - const ERROR_LOG = true - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME +function newAnimation() { + const MODULE_NAME = 'Animation' + const ERROR_LOG = true + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME /* @@ -13,171 +13,162 @@ function newAnimation () { */ - let animationLoopHandle // This is the handle to the animation loop. With this handle we can cancel the loop, for instance. - let callBackFunctions = new Map() + let animationLoopHandle // This is the handle to the animation loop. With this handle we can cancel the loop, for instance. + let callBackFunctions = new Map() - let thisObject = { - start: start, - stop: stop, - addCallBackFunction: addCallBackFunction, - removeCallBackFunction: removeCallBackFunction, - initialize: initialize, - finalize: finalize - } - - let totalConsumption = 0 - let totalCounter = 0 - let pointerIcon - let videoRecorder - return thisObject - - function finalize () { - thisObject.stop() - pointerIcon = undefined - videoRecorder = undefined - } - - function initialize () { - videoRecorder = newVideoRecorder() - } - - function start () { - animationLoop() // Inside this function the animation process is started, and at the same time it creates a loop. - } - - function stop () { - window.cancelAnimationFrame(animationLoopHandle) - } - - function addCallBackFunction (key, callBack) { - callBackFunctions.set(key, callBack) - } - - function removeCallBackFunction (key) { - callBackFunctions.delete(key) - } - - function animationLoop () { - try { - if (window.canvasApp.visible === true) { - /* We set the canvas to its normal width and height */ - // browserCanvas.width = window.innerWidth - // browserCanvas.height = window.innerHeight - CURRENT_TOP_MARGIN - - /* First thing is to clear the actual canvas */ - clearBrowserCanvas() - - /* We loop through the callback functions collections and execute them all. */ - let performanceMap = new Map() - let totalTimeConsumed = 0 - let totalElements = 0 - let chanceToExecute - let randomNumber - let mustExecute - - // console.clear() - let row = 0 - for (const [key, callBackFunction] of callBackFunctions.entries()) { - row++ - switch (key) { - case 'Floating Space Physics': - chanceToExecute = 50 - randomNumber = Math.random() * 100 * chanceToExecute - if (randomNumber > 100 - chanceToExecute) { mustExecute = true } else { mustExecute = false } - break - default: { - mustExecute = true - } - - } - let timeConsumed = 0 - if (mustExecute === true) { - let t0 = performance.now() - callBackFunction() - let t1 = performance.now() - timeConsumed = t1 - t0 - if (key === 'Charting Space Draw') { - if (Math.random() * 100 > 99) { - totalConsumption = 0 - totalCounter = 0 - } - - totalConsumption = totalConsumption + timeConsumed - totalCounter = totalCounter + 1 - } - performanceMap.set(key, timeConsumed) - totalTimeConsumed = totalTimeConsumed + timeConsumed - totalElements++ - } - } - - /* Frame per Seconds */ - - ANIMATION_FRAME_PER_SECONDS = Math.trunc(1000 / totalTimeConsumed) - - /* Performance Check */ - if (SHOW_ANIMATION_PERFORMACE === true) { - row = 0 - for (const [key, timeConsumed] of performanceMap.entries()) { - row++ - labelToPrint = key + ' ' + timeConsumed.toFixed(4) - printLabel(labelToPrint, 10, 100 + row * 30, 1, 20, UI_COLOR.RED) - let percentage = timeConsumed * 100 / totalTimeConsumed - labelToPrint = key + ' ' + percentage.toFixed(1) + '%' - printLabel(labelToPrint, 300, 100 + row * 30, 1, 20, UI_COLOR.RED) - } - - /* Other Variables */ - row++ - printLabel(DEBUG.variable1, 300, 100 + row * 30, 1, 20, UI_COLOR.RED) - row++ - printLabel(DEBUG.variable2, 300, 100 + row * 30, 1, 20, UI_COLOR.RED) - row++ - printLabel(DEBUG.variable3, 300, 100 + row * 30, 1, 20, UI_COLOR.RED) - row++ - printLabel(DEBUG.variable4, 300, 100 + row * 30, 1, 20, UI_COLOR.RED) - row++ - printLabel('Animation Frame Per Seconds: ' + ANIMATION_FRAME_PER_SECONDS, 300, 100 + row * 30, 1, 20, UI_COLOR.TITANIUM_YELLOW) - } - } else { - browserCanvas.width = 1 - browserCanvas.height = 1 - } - - /* Video Recording */ - videoRecorder.physics() - if (ARE_WE_RECORDING_A_VIDEO === true) { - videoRecorder.recordCanvas() - } - - /* Panorama Recording */ - if (ARE_WE_RECORDING_A_MARKET_PANORAMA === true) { - if (PANORAMA_WAS_PANNED === true) { - addToMarketPanorama() - PANORAMA_WAS_PANNED = false - } - } - - /* We request the next frame to be drawn, and stablishing a loop */ - - /* Use this code for full animation speed. */ - animationLoopHandle = window.requestAnimationFrame(animationLoop) - - /* Use this code for max 10 frames per second animation speed, if the app is consumming too much of your CPU. */ - /* - setTimeout(nextLoop, 100) - function nextLoop () { - animationLoopHandle = window.requestAnimationFrame(animationLoop) - } - */ - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] animationLoop -> err = ' + err.stack) } + let thisObject = { + start: start, + stop: stop, + addCallBackFunction: addCallBackFunction, + removeCallBackFunction: removeCallBackFunction, + initialize: initialize, + finalize: finalize } - } - function clearBrowserCanvas () { - if (canWeDraw === false) { return } - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' - browserCanvasContext.clearRect(0, 0, browserCanvas.width, browserCanvas.height) - } + let totalConsumption = 0 + let totalCounter = 0 + let pointerIcon + let videoRecorder + return thisObject + + function finalize() { + thisObject.stop() + pointerIcon = undefined + videoRecorder = undefined + } + + function initialize() { + videoRecorder = newVideoRecorder() + } + + function start() { + animationLoop() // Inside this function the animation process is started, and at the same time it creates a loop. + } + + function stop() { + window.cancelAnimationFrame(animationLoopHandle) + } + + function addCallBackFunction(key, callBack) { + callBackFunctions.set(key, callBack) + } + + function removeCallBackFunction(key) { + callBackFunctions.delete(key) + } + + function animationLoop() { + try { + /* First thing is to clear the actual canvas */ + clearBrowserCanvas() + + /* We loop through the callback functions collections and execute them all. */ + let performanceMap = new Map() + let totalTimeConsumed = 0 + let totalElements = 0 + let chanceToExecute + let randomNumber + let mustExecute + + // console.clear() + let row = 0 + for (const [key, callBackFunction] of callBackFunctions.entries()) { + row++ + switch (key) { + case 'Floating Space Physics': + chanceToExecute = 50 + randomNumber = Math.random() * 100 * chanceToExecute + if (randomNumber > 100 - chanceToExecute) { mustExecute = true } else { mustExecute = false } + break + default: { + mustExecute = true + } + + } + let timeConsumed = 0 + if (mustExecute === true) { + let t0 = performance.now() + callBackFunction() + let t1 = performance.now() + timeConsumed = t1 - t0 + if (key === 'Charting Space Draw') { + if (Math.random() * 100 > 99) { + totalConsumption = 0 + totalCounter = 0 + } + + totalConsumption = totalConsumption + timeConsumed + totalCounter = totalCounter + 1 + } + performanceMap.set(key, timeConsumed) + totalTimeConsumed = totalTimeConsumed + timeConsumed + totalElements++ + } + } + + /* Frame per Seconds */ + + ANIMATION_FRAME_PER_SECONDS = Math.trunc(1000 / totalTimeConsumed) + + /* Performance Check */ + if (SHOW_ANIMATION_PERFORMACE === true) { + row = 0 + for (const [key, timeConsumed] of performanceMap.entries()) { + row++ + labelToPrint = key + ' ' + timeConsumed.toFixed(4) + printLabel(labelToPrint, 10, 100 + row * 30, 1, 20, UI_COLOR.RED) + let percentage = timeConsumed * 100 / totalTimeConsumed + labelToPrint = key + ' ' + percentage.toFixed(1) + '%' + printLabel(labelToPrint, 300, 100 + row * 30, 1, 20, UI_COLOR.RED) + } + + /* Other Variables */ + row++ + printLabel(DEBUG.variable1, 300, 100 + row * 30, 1, 20, UI_COLOR.RED) + row++ + printLabel(DEBUG.variable2, 300, 100 + row * 30, 1, 20, UI_COLOR.RED) + row++ + printLabel(DEBUG.variable3, 300, 100 + row * 30, 1, 20, UI_COLOR.RED) + row++ + printLabel(DEBUG.variable4, 300, 100 + row * 30, 1, 20, UI_COLOR.RED) + row++ + printLabel('Animation Frame Per Seconds: ' + ANIMATION_FRAME_PER_SECONDS, 300, 100 + row * 30, 1, 20, UI_COLOR.TITANIUM_YELLOW) + } + + /* Video Recording */ + videoRecorder.physics() + if (ARE_WE_RECORDING_A_VIDEO === true) { + videoRecorder.recordCanvas() + } + + /* Panorama Recording */ + if (ARE_WE_RECORDING_A_MARKET_PANORAMA === true) { + if (PANORAMA_WAS_PANNED === true) { + addToMarketPanorama() + PANORAMA_WAS_PANNED = false + } + } + + /* We request the next frame to be drawn, and stablishing a loop */ + + /* Use this code for full animation speed. */ + animationLoopHandle = window.requestAnimationFrame(animationLoop) + + /* Use this code for max 10 frames per second animation speed, if the app is consumming too much of your CPU. */ + /* + setTimeout(nextLoop, 100) + function nextLoop () { + animationLoopHandle = window.requestAnimationFrame(animationLoop) + } + */ + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] animationLoop -> err = ' + err.stack) } + } + } + + function clearBrowserCanvas() { + if (canWeDraw === false) { return } + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' + browserCanvasContext.clearRect(0, 0, browserCanvas.width, browserCanvas.height) + } } diff --git a/CanvasApp/Canvas.js b/CanvasApp/Canvas.js index af920101a..148ba2160 100644 --- a/CanvasApp/Canvas.js +++ b/CanvasApp/Canvas.js @@ -4,1110 +4,1292 @@ let browserCanvasContext // The context of the canvas object. let stepsInitializationCounter = 0 // This counter the initialization steps required to be able to turn off the splash screen. let marketInitializationCounter = 0 // This counter the initialization of markets required to be able to turn off the splash screen. -function newCanvas () { - const MODULE_NAME = 'Canvas' - const ERROR_LOG = true - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME +function newCanvas() { + const MODULE_NAME = 'Canvas' + const ERROR_LOG = true + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME - /* Mouse event related variables. */ + /* Mouse event related variables. */ - let containerDragStarted = false - let floatingObjectDragStarted = false - let floatingObjectBeingDragged - let containerBeingDragged - let viewPortBeingDragged = false - let ignoreNextClick = false + let containerDragStarted = false + let floatingObjectDragStarted = false + let floatingObjectBeingDragged + let containerBeingDragged + let viewPortBeingDragged = false + let ignoreNextClick = false - let dragVector = { - downX: 0, - downY: 0, - upX: 0, - upY: 0 - } - - /* canvas object */ - - let thisObject = { - eventHandler: undefined, - topSpace: undefined, - sideSpace: undefined, - chartingSpace: undefined, - floatingSpace: undefined, - panelsSpace: undefined, - cockpitSpace: undefined, - designSpace: undefined, - splashScreen: undefined, - animation: undefined, - mouse: undefined, - shorcutNumbers: new Map(), - initialize: initialize, - finalize: finalize - } - - thisObject.eventHandler = newEventHandler() - - let lastContainerMouseOver - let lastShortcutKeyRejection - - thisObject.mouse = { - position: { - x: 0, - y: 0 - }, - action: '' - } - - return thisObject - - function finalize () { - try { - thisObject.sideSpace.finalize() - thisObject.chartingSpace.finalize() - thisObject.floatingSpace.finalize() - thisObject.shorcutNumbers = undefined - - browserCanvas.removeEventListener('mousedown', onMouseDown, false) - browserCanvas.removeEventListener('mouseup', onMouseUp, false) - browserCanvas.removeEventListener('mousemove', onMouseMove, false) - browserCanvas.removeEventListener('click', onMouseClick, false) - browserCanvas.removeEventListener('mouseout', onMouseOut, false) - - if (browserCanvas.removeEventListener) { - browserCanvas.removeEventListener('mousewheel', onMouseWheel, false)// IE9, Chrome, Safari, Opera - browserCanvas.removeEventListener('DOMMouseScroll', onMouseWheel, false) // Firefox - } else browserCanvas.detachEvent('onmousewheel', onMouseWheel) // IE 6/7/8 - - browserCanvas.removeEventListener('dragenter', onDragEnter, false) - browserCanvas.removeEventListener('dragleave', onDragLeave, false) - browserCanvas.removeEventListener('dragover', onDragOver, false) - browserCanvas.removeEventListener('drop', onDragDrop, false) - - browserCanvas.removeEventListener('keydown', onKeyDown, false) - browserCanvas.removeEventListener('keyup', onKeyUp, false) - - thisObject.splashScreen = undefined - lastContainerMouseOver = undefined - - hisObject.mouse = undefined - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] finalize -> err = ' + err.stack) } + let dragVector = { + downX: 0, + downY: 0, + upX: 0, + upY: 0 } - } - function initialize () { - try { - initializeBrowserCanvas() + /* canvas object */ - addCanvasEvents() - - /* Instantiate all the children spaces of Canvas object */ - - thisObject.floatingSpace = newFloatingSpace() - thisObject.floatingSpace.initialize() - - thisObject.topSpace = newTopSpace() - thisObject.topSpace.initialize() - - thisObject.cockpitSpace = newCockpitSpace() - thisObject.cockpitSpace.initialize() - - thisObject.designSpace = newDesignSpace() - thisObject.designSpace.initialize() - - thisObject.panelsSpace = newPanelsSpace() - thisObject.panelsSpace.initialize() - - thisObject.chartingSpace = newChartingSpace() - thisObject.chartingSpace.initialize() - - thisObject.sideSpace = newSideSpace() - thisObject.sideSpace.initialize() - - thisObject.splashScreen = newSplashScreen() - - let animation = newAnimation() - animation.initialize() - - thisObject.animation = animation - - /* Spcaces Physics */ - animation.addCallBackFunction('CockpitSpace Physics', thisObject.cockpitSpace.physics) - animation.addCallBackFunction('Floating Space Physics', thisObject.floatingSpace.physics) - animation.addCallBackFunction('Charting Space Physics', thisObject.chartingSpace.physics) - animation.addCallBackFunction('Design Space Physics', thisObject.designSpace.physics) - animation.addCallBackFunction('Panels Space Physics', thisObject.panelsSpace.physics) - animation.addCallBackFunction('Side Space Physics', thisObject.sideSpace.physics) - - /* Spcaces Drawing */ - animation.addCallBackFunction('Floating Space Draw', thisObject.floatingSpace.draw) - animation.addCallBackFunction('Charting Space Draw', thisObject.chartingSpace.draw) - animation.addCallBackFunction('Panels Space', thisObject.panelsSpace.draw) - animation.addCallBackFunction('CockpitSpace Draw', thisObject.cockpitSpace.draw) - animation.addCallBackFunction('Design Space Draw', thisObject.designSpace.draw) - animation.addCallBackFunction('Top Space Draw', thisObject.topSpace.draw) - animation.addCallBackFunction('Side Space Draw', thisObject.sideSpace.draw) - animation.addCallBackFunction('Splash Screen Draw', thisObject.splashScreen.draw) - animation.start() - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> err = ' + err.stack) } + let thisObject = { + eventHandler: undefined, + topSpace: undefined, + sideSpace: undefined, + docSpace: undefined, + chatSpace: undefined, + tutorialSpace: undefined, + chartingSpace: undefined, + floatingSpace: undefined, + panelsSpace: undefined, + cockpitSpace: undefined, + designSpace: undefined, + splashScreen: undefined, + animation: undefined, + mouse: undefined, + shorcutNumbers: new Map(), + onKeyDown: onKeyDown, + initialize: initialize, + finalize: finalize } - } - function initializeBrowserCanvas () { - try { - browserCanvasContext = browserCanvas.getContext('2d') - browserCanvasContext.font = 'Saira Condensed' - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] initializeBrowserCanvas -> err = ' + err.stack) } + thisObject.eventHandler = newEventHandler() + + let lastContainerMouseOver + + thisObject.mouse = { + position: { + x: 0, + y: 0 + }, + action: '' } - } - function addCanvasEvents () { - try { - canvas.eventHandler.listenToEvent('Browser Resized', browserResized) + return thisObject - /* Keyboard events */ - window.addEventListener('keydown', onKeyDown, true) - window.addEventListener('keyup', onKeyUp, true) + function finalize() { + try { + thisObject.tutorialSpace.finalize() + thisObject.docSpace.finalize() + //thisObject.chatSpace.finalize() + thisObject.sideSpace.finalize() + thisObject.chartingSpace.finalize() + thisObject.floatingSpace.finalize() + thisObject.shorcutNumbers = undefined - /* Mouse Events */ - browserCanvas.addEventListener('mousedown', onMouseDown, false) - browserCanvas.addEventListener('mouseup', onMouseUp, false) - browserCanvas.addEventListener('mousemove', onMouseMove, false) - browserCanvas.addEventListener('click', onMouseClick, false) - browserCanvas.addEventListener('mouseout', onMouseOut, false) + browserCanvas.removeEventListener('mousedown', onMouseDown, false) + browserCanvas.removeEventListener('mouseup', onMouseUp, false) + browserCanvas.removeEventListener('mousemove', onMouseMove, false) + browserCanvas.removeEventListener('click', onMouseClick, false) + browserCanvas.removeEventListener('mouseout', onMouseOut, false) - if (browserCanvas.addEventListener) { - browserCanvas.addEventListener('mousewheel', onMouseWheel, false) // IE9, Chrome, Safari, Opera - browserCanvas.addEventListener('DOMMouseScroll', onMouseWheel, false) // Firefox - } else browserCanvas.attachEvent('onmousewheel', onMouseWheel)// IE 6/7/8 + if (browserCanvas.removeEventListener) { + browserCanvas.removeEventListener('mousewheel', onMouseWheel, false)// IE9, Chrome, Safari, Opera + browserCanvas.removeEventListener('DOMMouseScroll', onMouseWheel, false) // Firefox + } else browserCanvas.detachEvent('onmousewheel', onMouseWheel) // IE 6/7/8 - /* Dragging Files Over the Canvas */ - browserCanvas.addEventListener('dragenter', onDragEnter, false) - browserCanvas.addEventListener('dragleave', onDragLeave, false) - browserCanvas.addEventListener('dragover', onDragOver, false) - browserCanvas.addEventListener('drop', onDragDrop, false) + browserCanvas.removeEventListener('dragenter', onDragEnter, false) + browserCanvas.removeEventListener('dragleave', onDragLeave, false) + browserCanvas.removeEventListener('dragover', onDragOver, false) + browserCanvas.removeEventListener('drop', onDragDrop, false) - // Disables the context menu when you right mouse click the canvas. - browserCanvas.oncontextmenu = function (e) { - e.preventDefault() - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] addCanvasEvents -> err = ' + err.stack) } - } - } + browserCanvas.removeEventListener('keydown', onKeyDown, false) + browserCanvas.removeEventListener('keyup', onKeyUp, false) - function browserResized () { - try { - browserCanvas = document.getElementById('canvas') + thisObject.splashScreen = undefined + lastContainerMouseOver = undefined - browserCanvas.width = window.innerWidth - browserCanvas.height = window.innerHeight - CURRENT_TOP_MARGIN - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] browserResized -> err = ' + err.stack) } - } - } - - function checkMediaRecording (event) { - if ((event.ctrlKey === true || event.metaKey === true)) { - let constructorParams - switch (event.keyCode) { - case 118: { // F7 - downloadPanorama('Superalgos.Market.Panorama') - return - break + hisObject.mouse = undefined + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] finalize -> err = ' + err.stack) } } - case 119: { // F8 - downloadCanvas('Superalgos.Image.Capture', browserCanvas) - return - break + } + + function initialize() { + try { + browserResized() + initializeBrowserCanvas() + addCanvasEvents() + + /* Instantiate all the children spaces of Canvas object */ + thisObject.floatingSpace = newFloatingSpace() + thisObject.floatingSpace.initialize() + + thisObject.topSpace = newTopSpace() + thisObject.topSpace.initialize() + + thisObject.cockpitSpace = newCockpitSpace() + thisObject.cockpitSpace.initialize() + + thisObject.designSpace = newDesignSpace() + thisObject.designSpace.initialize() + + thisObject.panelsSpace = newPanelsSpace() + thisObject.panelsSpace.initialize() + + thisObject.chartingSpace = newChartingSpace() + thisObject.chartingSpace.initialize() + + thisObject.sideSpace = newSideSpace() + thisObject.sideSpace.initialize() + + thisObject.docSpace = newDocSpace() + thisObject.docSpace.initialize() + + //thisObject.chatSpace = newChatSpace() + //thisObject.chatSpace.initialize() + + thisObject.tutorialSpace = newTutorialSpace() + thisObject.tutorialSpace.initialize() + + thisObject.splashScreen = newSplashScreen() + + let animation = newAnimation() + animation.initialize() + + thisObject.animation = animation + + /* Spcaces Physics */ + animation.addCallBackFunction('CockpitSpace Physics', thisObject.cockpitSpace.physics) + animation.addCallBackFunction('Floating Space Physics', thisObject.floatingSpace.physics) + animation.addCallBackFunction('Charting Space Physics', thisObject.chartingSpace.physics) + animation.addCallBackFunction('Design Space Physics', thisObject.designSpace.physics) + animation.addCallBackFunction('Panels Space Physics', thisObject.panelsSpace.physics) + animation.addCallBackFunction('Side Space Physics', thisObject.sideSpace.physics) + animation.addCallBackFunction('Doc Space Physics', thisObject.docSpace.physics) + //animation.addCallBackFunction('Chat Space Physics', thisObject.chatSpace.physics) + animation.addCallBackFunction('Tutorial Space Physics', thisObject.tutorialSpace.physics) + + /* Spcaces Drawing */ + animation.addCallBackFunction('Floating Space Draw', thisObject.floatingSpace.draw) + animation.addCallBackFunction('Charting Space Draw', thisObject.chartingSpace.draw) + animation.addCallBackFunction('Panels Space', thisObject.panelsSpace.draw) + animation.addCallBackFunction('CockpitSpace Draw', thisObject.cockpitSpace.draw) + animation.addCallBackFunction('Design Space Draw', thisObject.designSpace.draw) + animation.addCallBackFunction('Top Space Draw', thisObject.topSpace.draw) + animation.addCallBackFunction('Side Space Draw', thisObject.sideSpace.draw) + animation.addCallBackFunction('Doc Space Draw', thisObject.docSpace.draw) + //animation.addCallBackFunction('Chat Space Draw', thisObject.chatSpace.draw) + animation.addCallBackFunction('Tutorial Space Draw', thisObject.tutorialSpace.draw) + animation.addCallBackFunction('Splash Screen Draw', thisObject.splashScreen.draw) + animation.start() + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> err = ' + err.stack) } } - case 120: { // F9 - constructorParams = { format: 'gif', workersPath: 'externalScripts/', framerate: 8, name: 'Superalgos.Video.Capture'} - break + } + + function initializeBrowserCanvas() { + try { + browserCanvasContext = browserCanvas.getContext('2d') + browserCanvasContext.font = 'Saira Condensed' + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] initializeBrowserCanvas -> err = ' + err.stack) } } - case 121: { // F10 - constructorParams = { format: 'webm', framerate: 8, name: 'Superalgos.Video.Capture' } - break + } + + function addCanvasEvents() { + try { + canvas.eventHandler.listenToEvent('Browser Resized', browserResized) + + /* Keyboard events */ + window.addEventListener('keydown', onKeyDown, true) + window.addEventListener('keyup', onKeyUp, true) + + /* Mouse Events */ + browserCanvas.addEventListener('mousedown', onMouseDown, false) + browserCanvas.addEventListener('mouseup', onMouseUp, false) + browserCanvas.addEventListener('mousemove', onMouseMove, false) + browserCanvas.addEventListener('click', onMouseClick, false) + browserCanvas.addEventListener('mouseout', onMouseOut, false) + + if (browserCanvas.addEventListener) { + browserCanvas.addEventListener('mousewheel', onMouseWheel, false) // IE9, Chrome, Safari, Opera + browserCanvas.addEventListener('DOMMouseScroll', onMouseWheel, false) // Firefox + } else browserCanvas.attachEvent('onmousewheel', onMouseWheel)// IE 6/7/8 + + /* Dragging Files Over the Canvas */ + browserCanvas.addEventListener('dragenter', onDragEnter, false) + browserCanvas.addEventListener('dragleave', onDragLeave, false) + browserCanvas.addEventListener('dragover', onDragOver, false) + browserCanvas.addEventListener('drop', onDragDrop, false) + + // Disables the context menu when you right mouse click the canvas. + browserCanvas.oncontextmenu = function (e) { + e.preventDefault() + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] addCanvasEvents -> err = ' + err.stack) } } - default: return - } - - if (ARE_WE_RECORDING_A_VIDEO === false) { - console.log('RECORDING', constructorParams.format) - mediaRecorder = new CCapture(constructorParams) - mediaRecorder.start() - ARE_WE_RECORDING_A_VIDEO = true - } else { - console.log('SAVING', constructorParams.format) - ARE_WE_RECORDING_A_VIDEO = false - mediaRecorder.stop() - mediaRecorder.save() - } - } - } - - function onKeyUp (event) { - thisObject.mouse.event = event - thisObject.mouse.action = 'key up' - } - - function onKeyDown (event) { - if (EDITOR_ON_FOCUS === true) { return } - thisObject.mouse.event = event - thisObject.mouse.action = 'key down' - - checkMediaRecording(event) - canvas.chartingSpace.onKeyPressed(event) - - /* Shourcuts to Menu Items */ - if ((event.keyCode >= 48 && event.keyCode <= 57)) { - let number = event.key - if (MENU_ITEM_ON_FOCUS !== undefined) { - let menuItem = thisObject.shorcutNumbers.get(number) - if (menuItem !== undefined) { - menuItem.shorcutNumber = undefined - } - thisObject.shorcutNumbers.set(number, MENU_ITEM_ON_FOCUS) - MENU_ITEM_ON_FOCUS.shorcutNumber = number - } else { - let menuItem = thisObject.shorcutNumbers.get(number) - if (menuItem !== undefined) { - menuItem.internalClick() - } - } } - if (event.key === 'Escape' && canvas.floatingSpace.inMapMode === true) { - canvas.floatingSpace.exitMapMode() + function browserResized() { + browserCanvas = document.getElementById('canvas') + + browserCanvas.width = window.innerWidth + browserCanvas.height = window.innerHeight - CURRENT_TOP_MARGIN + browserCanvas.style = "position:absolute; top:0px; left:0px; z-index:1" } - if (event.shiftKey === true && (event.ctrlKey === true || event.metaKey === true) && (event.key === 'M' || event.key === 'm')) { - canvas.floatingSpace.toggleMapMode() - event.preventDefault() - return - } + function checkMediaRecording(event) { + if ((event.ctrlKey === true || event.metaKey === true)) { + let constructorParams + switch (event.keyCode) { + case 113: { // F2 + browserCanvas.width = 400 * 3 + browserCanvas.height = 580 * 3 + centerCanvas() + DISABLE_BROWSER_RESIZE_EVENT = true + return + break + } + case 114: { // F2 + browserCanvas.width = 400 * 2 + browserCanvas.height = 580 * 2 + centerCanvas() + DISABLE_BROWSER_RESIZE_EVENT = true + return + break + } + case 115: { // F3 + browserCanvas.width = 400 * 1.5 + browserCanvas.height = 580 * 1.5 + centerCanvas() + DISABLE_BROWSER_RESIZE_EVENT = true + return + break + } + case 116: { // F5 + browserCanvas.width = 400 * 1 + browserCanvas.height = 580 * 1 + centerCanvas() + DISABLE_BROWSER_RESIZE_EVENT = true + return + break + } + case 117: { // F6 + browserCanvas.width = window.innerWidth + browserCanvas.height = window.innerHeight - CURRENT_TOP_MARGIN + centerCanvas() + DISABLE_BROWSER_RESIZE_EVENT = false + return + break + } + case 118: { // F7 + downloadPanorama('Superalgos.Market.Panorama') + return + break + } + case 119: { // F8 + downloadCanvas('Superalgos.Image.Capture', browserCanvas) + return + break + } + case 120: { // F9 + console.log('Recording gid with framerate = ' + 24) + constructorParams = { format: 'gif', workersPath: 'externalScripts/', framerate: 24, name: 'Superalgos.Video.Capture' } + break + } + case 121: { // F10 + console.log('Recording gid with framerate = ' + 24) + constructorParams = { format: 'webm', framerate: 24, name: 'Superalgos.Video.Capture' } + break + } + default: return + } - if (event.shiftKey === true && (event.ctrlKey === true || event.metaKey === true) && (event.key === 'R' || event.key === 'r')) { - canvas.floatingSpace.toggleDrawReferenceLines() - event.preventDefault() - return - } - - if (event.shiftKey === true && (event.ctrlKey === true || event.metaKey === true) && (event.key === 'C' || event.key === 'c')) { - canvas.floatingSpace.toggleDrawChainLines() - event.preventDefault() - return - } - - if (event.shiftKey === true && (event.ctrlKey === true || event.metaKey === true) && (event.key === 'S' || event.key === 's')) { - canvas.designSpace.workspace.save() - event.preventDefault() - return - } - - let nodeOnFocus = canvas.designSpace.workspace.getNodeThatIsOnFocus() - if (nodeOnFocus !== undefined) { - if (nodeOnFocus.payload.uiObject.codeEditor !== undefined) { - if (nodeOnFocus.payload.uiObject.codeEditor.visible === true) { - return - } - } - if (nodeOnFocus.payload.uiObject.configEditor !== undefined) { - if (nodeOnFocus.payload.uiObject.configEditor.visible === true) { - return - } - } - if (nodeOnFocus.payload.uiObject.formulaEditor !== undefined) { - if (nodeOnFocus.payload.uiObject.formulaEditor.visible === true) { - return - } - } - if (nodeOnFocus.payload.uiObject.conditionEditor !== undefined) { - if (nodeOnFocus.payload.uiObject.conditionEditor.visible === true) { - return - } - } - if (nodeOnFocus.payload.uiObject.uiObjectTitle !== undefined) { - if (nodeOnFocus.payload.uiObject.uiObjectTitle.editMode === true) { - return - } - } - } - - if ((event.ctrlKey === true || event.metaKey === true) && event.altKey === true && event.shiftKey === true && event.keyCode === 123) { // Dev Tool when used with F12 - if (nodeOnFocus !== undefined) { - console.log(nodeOnFocus) - return - } - } - - if ((event.ctrlKey === true || event.metaKey === true) && event.altKey === true && event.shiftKey === true && event.keyCode === 122) { // Dev Tool when used with F11 - if (SHOW_ANIMATION_PERFORMACE === false) { - SHOW_ANIMATION_PERFORMACE = true - } else { - SHOW_ANIMATION_PERFORMACE = false - } - return - } - - if (event.shiftKey === true && (event.ctrlKey === true || event.metaKey === true) && event.code === 'ArrowUp') { - thisObject.cockpitSpace.toTop() - event.preventDefault() - return - } - - if (event.shiftKey === true && (event.ctrlKey === true || event.metaKey === true) && event.code === 'ArrowDown') { - thisObject.cockpitSpace.toBottom() - event.preventDefault() - return - } - - if (event.shiftKey === true && (event.ctrlKey === true || event.metaKey === true) && event.code === 'ArrowLeft') { - thisObject.cockpitSpace.moveUp() - event.preventDefault() - return - } - - if (event.shiftKey === true && (event.ctrlKey === true || event.metaKey === true) && event.code === 'ArrowRight') { - thisObject.cockpitSpace.moveDown() - event.preventDefault() - return - } - - if (event.shiftKey === true && (event.ctrlKey === false && event.metaKey === false) && event.code === 'ArrowLeft') { - canvas.chartingSpace.oneScreenLeft() - event.preventDefault() - return - } - - if (event.shiftKey === true && (event.ctrlKey === false && event.metaKey === false) && event.code === 'ArrowRight') { - canvas.chartingSpace.oneScreenRight() - event.preventDefault() - return - } - - if (event.shiftKey === true && (event.ctrlKey === false && event.metaKey === false) && event.code === 'ArrowUp') { - canvas.chartingSpace.oneScreenUp() - event.preventDefault() - return - } - - if (event.shiftKey === true && (event.ctrlKey === false && event.metaKey === false) && event.code === 'ArrowDown') { - canvas.chartingSpace.oneScreenDown() - event.preventDefault() - return - } - - if ((event.ctrlKey === true || event.metaKey === true) && event.shiftKey === false && event.code === 'ArrowLeft') { - let displaceVector = canvas.floatingSpace.oneScreenLeft() - if (displaceVector !== undefined) { - dragVector.downX = dragVector.downX + displaceVector.x - dragVector.downY = dragVector.downY + displaceVector.y - checkDrag() - } - event.preventDefault() - return - } - - if ((event.ctrlKey === true || event.metaKey === true) && event.shiftKey === false && event.code === 'ArrowRight') { - let displaceVector = canvas.floatingSpace.oneScreenRight() - if (displaceVector !== undefined) { - dragVector.downX = dragVector.downX + displaceVector.x - dragVector.downY = dragVector.downY + displaceVector.y - checkDrag() - } - event.preventDefault() - return - } - - if ((event.ctrlKey === true || event.metaKey === true) && event.shiftKey === false && event.code === 'ArrowUp') { - let displaceVector = canvas.floatingSpace.oneScreenUp() - if (displaceVector !== undefined) { - dragVector.downX = dragVector.downX + displaceVector.x - dragVector.downY = dragVector.downY + displaceVector.y - checkDrag() - } - event.preventDefault() - return - } - - if ((event.ctrlKey === true || event.metaKey === true) && event.shiftKey === false && event.code === 'ArrowDown') { - let displaceVector = canvas.floatingSpace.oneScreenDown() - if (displaceVector !== undefined) { - dragVector.downX = dragVector.downX + displaceVector.x - dragVector.downY = dragVector.downY + displaceVector.y - checkDrag() - } - event.preventDefault() - return - } - - if (event.code === 'Period') { - if (nodeOnFocus !== undefined) { - nodeOnFocus.payload.uiObject.setValue('Id: ' + nodeOnFocus.id) - return - } - } - - if ((event.ctrlKey === true || event.metaKey === true) && event.altKey === true) { - /* Shortcuts to nodes */ - if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 65 && event.keyCode <= 90)) { - /* From here we prevent the default behaviour. Putting it earlier prevents imput box and text area to receive keystrokes */ - event.preventDefault() - - let nodeUsingThisKey = canvas.designSpace.workspace.getNodeByShortcutKey(event.key) - - if (nodeOnFocus === undefined && nodeUsingThisKey !== undefined) { - /* Then we displace the whole workspace to center it at the node using this key */ - nodeUsingThisKey = canvas.floatingSpace.positionAtNode(nodeUsingThisKey) - return - } - - /* If there is a node in focus, we try to assign the key to it. */ - if (nodeUsingThisKey !== undefined && nodeOnFocus !== undefined) { - if (nodeUsingThisKey.id === nodeOnFocus.id) { - nodeOnFocus.payload.uiObject.shortcutKey = '' - nodeOnFocus.payload.uiObject.setValue('Shortcut Key Removed ') - return - } else { - if (lastShortcutKeyRejection !== event.key + nodeUsingThisKey.type + ' ' + nodeUsingThisKey.name) { - /* The first time we show a warning that this key is in use. */ - nodeOnFocus.payload.uiObject.setErrorMessage('Key already in use by ' + nodeUsingThisKey.type + ' ' + nodeUsingThisKey.name) - lastShortcutKeyRejection = event.key + nodeUsingThisKey.type + ' ' + nodeUsingThisKey.name - return + if (ARE_WE_RECORDING_A_VIDEO === false) { + console.log('RECORDING', constructorParams.format) + mediaRecorder = new CCapture(constructorParams) + mediaRecorder.start() + ARE_WE_RECORDING_A_VIDEO = true } else { - /* After the warning, we allow the key to be re-assigned */ - nodeUsingThisKey.payload.uiObject.shortcutKey = '' - nodeUsingThisKey === undefined + console.log('SAVING', constructorParams.format) + ARE_WE_RECORDING_A_VIDEO = false + mediaRecorder.stop() + mediaRecorder.save() } - } } - /* If there is not node using this key and a node in focus, we assign this key to this node */ - if (nodeUsingThisKey === undefined && nodeOnFocus !== undefined) { - nodeOnFocus.payload.uiObject.shortcutKey = event.key - nodeOnFocus.payload.uiObject.setValue('Shortcut Key: Ctrl + Alt + ' + event.key) + + function centerCanvas() { + return + let top = (window.innerHeight - browserCanvas.height) / 2 + let left = (window.innerWidth - browserCanvas.width) / 2 + browserCanvas.style = "position:absolute; top:" + top + "px; left:" + left + "px; z-index:1" } - return - } } - if (event.ctrlKey === true && event.altKey === true && nodeOnFocus !== undefined) { - if (nodeOnFocus.payload.uiObject.shortcutKey !== undefined && nodeOnFocus.payload.uiObject.shortcutKey !== '') { - nodeOnFocus.payload.uiObject.setValue('Shortcut Key: Ctrl + Alt + ' + nodeOnFocus.payload.uiObject.shortcutKey) - } + function onKeyUp(event) { + thisObject.mouse.event = event + thisObject.mouse.action = 'key up' } - } - function onDragEnter (event) { - try { - event.preventDefault() - event.stopPropagation() - thisObject.cockpitSpace.toTop() - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] onDragEnter -> err = ' + err.stack) } - } - } + function onKeyDown(event) { + if (EDITOR_ON_FOCUS === true) { return } + thisObject.mouse.event = event + thisObject.mouse.action = 'key down' - function onDragLeave (event) { - try { - event.preventDefault() - event.stopPropagation() - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] onDragLeave -> err = ' + err.stack) } - } - } + checkMediaRecording(event) + canvas.chartingSpace.onKeyPressed(event) - function onDragOver (event) { - try { - event.preventDefault() - event.stopPropagation() - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] onDragOver -> err = ' + err.stack) } - } - } - - function onDragDrop (event) { - try { - event.preventDefault() - event.stopPropagation() - - let files = event.dataTransfer.files - - handleFiles(files) - function handleFiles (files) { - ([...files]).forEach(loadFileData) - } - - function loadFileData (file) { - let reader = new FileReader() - reader.readAsText(file) - reader.onloadend = function () { - let mousePosition = { - x: event.x, - y: event.y - } - thisObject.designSpace.workspace.spawn(reader.result, mousePosition) - } - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] onDragDrop -> err = ' + err.stack) } - } - } - - function onMouseDown (event) { - try { - thisObject.mouse.event = event - thisObject.mouse.position.x = event.pageX - thisObject.mouse.position.y = event.pageY - CURRENT_TOP_MARGIN - switch (event.buttons) { - case 1: { - thisObject.mouse.action = 'clicking with left button' - break - } - case 2: { - thisObject.mouse.action = 'clicking with right button' - break - } - } - - let point = event - point.x = event.pageX - point.y = event.pageY - CURRENT_TOP_MARGIN - - dragVector.downX = point.x - dragVector.downY = point.y - - let container - - /* We check if the mouse is over an element of the Side Space / */ - container = thisObject.sideSpace.getContainer(point) - - if (container !== undefined && container.isDraggeable === true) { - containerBeingDragged = container - containerDragStarted = true - containerBeingDragged.eventHandler.raiseEvent('onDragStarted', point) - return - } - - if (container !== undefined && container.isDraggeable === false) { - return - } - - /* We check if the mouse is over an element of the Design Space / */ - container = thisObject.designSpace.getContainer(point) - - if (container !== undefined && container.isDraggeable === true) { - containerBeingDragged = container - containerDragStarted = true - containerBeingDragged.eventHandler.raiseEvent('onDragStarted', point) - return - } - - if (container !== undefined && container.isDraggeable === false) { - return - } - - /* We check if the mouse is over an element of the Top Space / */ - container = thisObject.topSpace.getContainer(point) - - if (container !== undefined && container.isDraggeable === true) { - containerBeingDragged = container - containerDragStarted = true - containerBeingDragged.eventHandler.raiseEvent('onDragStarted', point) - return - } - - /* We check if the mouse is over an element of the CockpitSpace / */ - container = thisObject.cockpitSpace.getContainer(point) - - if (container !== undefined && container.isDraggeable === true) { - containerBeingDragged = container - containerDragStarted = true - containerBeingDragged.eventHandler.raiseEvent('onDragStarted', point) - return - } - - if (container !== undefined && container.isClickeable === true) { - /* We dont want to mess up with the click */ - return - } - - /* We check if the mouse is over a panel/ */ - container = thisObject.panelsSpace.getContainer(point, GET_CONTAINER_PURPOSE.DRAGGING) - - if (container !== undefined && event.shiftKey === false) { - if (container.isDraggeable === true) { - containerBeingDragged = container - containerDragStarted = true - containerBeingDragged.eventHandler.raiseEvent('onDragStarted', point) - return - } else { - return - } - } - - if (container !== undefined && container.isClickeable === true) { - /* We dont want to mess up with the click */ - return - } - - /* we check if it is over any of the existing containers at the Charting Space. */ - container = thisObject.chartingSpace.getContainer(point, GET_CONTAINER_PURPOSE.DRAGGING) - - if (container !== undefined) { - if (container.isDraggeable === true) { - containerBeingDragged = container - containerDragStarted = true - containerBeingDragged.eventHandler.raiseEvent('onDragStarted', point) - return - } else { - if (container.isClickeable === false) { - if (event.buttons === 2) { - viewPortBeingDragged = true + /* Shourcuts to Menu Items */ + if ((event.keyCode >= 48 && event.keyCode <= 57)) { + let number = event.key + if (MENU_ITEM_ON_FOCUS !== undefined) { + let menuItem = thisObject.shorcutNumbers.get(number) + if (menuItem !== undefined) { + menuItem.shorcutNumber = undefined + } + thisObject.shorcutNumbers.set(number, MENU_ITEM_ON_FOCUS) + MENU_ITEM_ON_FOCUS.shorcutNumber = number + } else { + let menuItem = thisObject.shorcutNumbers.get(number) + if (menuItem !== undefined) { + menuItem.internalClick() + } } - } - return } - } - container = thisObject.floatingSpace.getContainer(point) - - if (container !== undefined && container.isDraggeable === true) { - containerBeingDragged = container - containerDragStarted = true - floatingObjectDragStarted = true - containerBeingDragged.eventHandler.raiseEvent('onDragStarted', point) - - if (event.candelDragging === true) { - containerBeingDragged = undefined - containerDragStarted = false - floatingObjectDragStarted = false + if (event.key === 'Escape' && canvas.floatingSpace.inMapMode === true) { + canvas.floatingSpace.exitMapMode() } - return - } - if (container !== undefined && container.isClickeable === true) { - /* We dont want to mess up with the click */ - return - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] onMouseDown -> err = ' + err.stack) } - } - } + if (event.shiftKey === true && (event.ctrlKey === true || event.metaKey === true) && (event.key === 'M' || event.key === 'm')) { + canvas.floatingSpace.toggleMapMode() + event.preventDefault() + return + } - function onMouseClick (event) { - try { - if (ignoreNextClick === true) { - ignoreNextClick = false - return - } + if (event.shiftKey === true && (event.ctrlKey === true || event.metaKey === true) && (event.key === 'R' || event.key === 'r')) { + canvas.floatingSpace.toggleDrawReferenceLines() + event.preventDefault() + return + } - let point = event - point.x = event.pageX - point.y = event.pageY - CURRENT_TOP_MARGIN + if (event.shiftKey === true && (event.ctrlKey === true || event.metaKey === true) && (event.key === 'C' || event.key === 'c')) { + canvas.floatingSpace.toggleDrawChainLines() + event.preventDefault() + return + } - let container - - /* We check if the mouse is over an element of the Side Space / */ - container = thisObject.sideSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_CLICK) - - if (container !== undefined && container.isClickeable === true) { - container.eventHandler.raiseEvent('onMouseClick', point) - return - } - - /* We check if the mouse is over an element of the Design Space / */ - container = thisObject.designSpace.getContainer(point) - - if (container !== undefined && container.isClickeable === true) { - container.eventHandler.raiseEvent('onMouseClick', point) - return - } - - /* We check if the mouse is over an element of the Top Space / */ - container = thisObject.topSpace.getContainer(point) - - if (container !== undefined && container.isClickeable === true) { - container.eventHandler.raiseEvent('onMouseClick', point) - return - } - - /* We check if the mouse is over an element of the CockpitSpace / */ - container = thisObject.cockpitSpace.getContainer(point) - - if (container !== undefined && container.isClickeable === true) { - container.eventHandler.raiseEvent('onMouseClick', point) - return - } - - /* We check if the mouse is over a panel/ */ - container = thisObject.panelsSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_CLICK) - - if (container !== undefined && container.isClickeable === true) { - container.eventHandler.raiseEvent('onMouseClick', point) - return - } - - /* If it is not, then we check if it is over any of the existing containers at the Charting Space. */ - container = thisObject.chartingSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_CLICK) - - if (container !== undefined && container.isClickeable === true) { - container.eventHandler.raiseEvent('onMouseClick', point) - return - } - - /* We check if the mouse is over a floatingObject/ */ - container = thisObject.floatingSpace.getContainer(point) - - if (container !== undefined && container.isClickeable === true) { - container.eventHandler.raiseEvent('onMouseClick', point) - return - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] onMouseClick -> err = ' + err.stack) } - } - } - - function onMouseOut (event) { - deactivateDragging(event) - - /* When the mouse leaves the canvas, our elements needs to react to the fact that the mouse is over a far away place */ - let thisEvent = { - pageX: VERY_LARGE_NUMBER, - pageY: VERY_LARGE_NUMBER - } - onMouseOver(thisEvent) - } - - function onMouseUp (event) { - deactivateDragging(event) - } - - function onMouseMove (event) { - try { - thisObject.mouse.event = event - thisObject.mouse.position.x = event.pageX - thisObject.mouse.position.y = event.pageY - CURRENT_TOP_MARGIN - thisObject.mouse.action = 'moving' - - /* Processing the event */ - let point = event - point.x = event.pageX - point.y = event.pageY - CURRENT_TOP_MARGIN - - if (canvas.chartingSpace.viewport !== undefined) { - canvas.chartingSpace.viewport.mousePosition.x = point.x - canvas.chartingSpace.viewport.mousePosition.y = point.y - } - - if (containerDragStarted === true || floatingObjectDragStarted === true || viewPortBeingDragged === true) { - if (floatingObjectDragStarted === true) { - let targetContainer = thisObject.floatingSpace.getContainer(point) - if (targetContainer !== undefined) { - if (targetContainer.id !== containerBeingDragged.id) { - containerBeingDragged.eventHandler.raiseEvent('onDragFinished', point) - containerBeingDragged = undefined - containerDragStarted = false - floatingObjectDragStarted = false - browserCanvas.style.cursor = 'auto' - ignoreNextClick = true - return + if (event.shiftKey === true && (event.ctrlKey === true || event.metaKey === true) && (event.key === 'S' || event.key === 's')) { + canvas.designSpace.workspace.save() + if (event.preventDefault !== undefined) { + event.preventDefault() } - } else { - containerBeingDragged.eventHandler.raiseEvent('onDragFinished', point) + return + } + + let nodeOnFocus = canvas.designSpace.workspace.getNodeThatIsOnFocus() + if (nodeOnFocus !== undefined) { + if (nodeOnFocus.payload.uiObject.codeEditor !== undefined) { + if (nodeOnFocus.payload.uiObject.codeEditor.visible === true) { + return + } + } + if (nodeOnFocus.payload.uiObject.configEditor !== undefined) { + if (nodeOnFocus.payload.uiObject.configEditor.visible === true) { + return + } + } + if (nodeOnFocus.payload.uiObject.formulaEditor !== undefined) { + if (nodeOnFocus.payload.uiObject.formulaEditor.visible === true) { + return + } + } + if (nodeOnFocus.payload.uiObject.conditionEditor !== undefined) { + if (nodeOnFocus.payload.uiObject.conditionEditor.visible === true) { + return + } + } + if (nodeOnFocus.payload.uiObject.uiObjectTitle !== undefined) { + if (nodeOnFocus.payload.uiObject.uiObjectTitle.editMode === true) { + return + } + } + } + + if ((event.ctrlKey === true || event.metaKey === true) && event.altKey === true && event.shiftKey === true && event.keyCode === 123) { // Dev Tool when used with F12 + if (nodeOnFocus !== undefined) { + console.log(nodeOnFocus) + return + } + } + + if ((event.ctrlKey === true || event.metaKey === true) && event.altKey === true && event.shiftKey === true && event.keyCode === 122) { // Dev Tool when used with F11 + if (SHOW_ANIMATION_PERFORMACE === false) { + SHOW_ANIMATION_PERFORMACE = true + } else { + SHOW_ANIMATION_PERFORMACE = false + } + return + } + + if (event.shiftKey === true && (event.ctrlKey === true || event.metaKey === true) && event.code === 'ArrowUp') { + thisObject.cockpitSpace.toTop() + event.preventDefault() + return + } + + if (event.shiftKey === true && (event.ctrlKey === true || event.metaKey === true) && event.code === 'ArrowDown') { + thisObject.cockpitSpace.toBottom() + event.preventDefault() + return + } + + if (event.shiftKey === true && (event.ctrlKey === true || event.metaKey === true) && event.code === 'ArrowLeft') { + thisObject.cockpitSpace.moveUp() + event.preventDefault() + return + } + + if (event.shiftKey === true && (event.ctrlKey === true || event.metaKey === true) && event.code === 'ArrowRight') { + thisObject.cockpitSpace.moveDown() + event.preventDefault() + return + } + + if (event.shiftKey === true && (event.ctrlKey === false && event.metaKey === false) && event.code === 'ArrowLeft') { + canvas.chartingSpace.oneScreenLeft() + event.preventDefault() + return + } + + if (event.shiftKey === true && (event.ctrlKey === false && event.metaKey === false) && event.code === 'ArrowRight') { + canvas.chartingSpace.oneScreenRight() + event.preventDefault() + return + } + + if (event.shiftKey === true && (event.ctrlKey === false && event.metaKey === false) && event.code === 'ArrowUp') { + canvas.chartingSpace.oneScreenUp() + event.preventDefault() + return + } + + if (event.shiftKey === true && (event.ctrlKey === false && event.metaKey === false) && event.code === 'ArrowDown') { + canvas.chartingSpace.oneScreenDown() + event.preventDefault() + return + } + + if ((event.ctrlKey === true || event.metaKey === true) && event.shiftKey === false && event.code === 'ArrowLeft') { + let displaceVector = canvas.floatingSpace.oneScreenLeft() + if (displaceVector !== undefined) { + dragVector.downX = dragVector.downX + displaceVector.x + dragVector.downY = dragVector.downY + displaceVector.y + checkDrag() + } + event.preventDefault() + return + } + + if ((event.ctrlKey === true || event.metaKey === true) && event.shiftKey === false && event.code === 'ArrowRight') { + let displaceVector = canvas.floatingSpace.oneScreenRight() + if (displaceVector !== undefined) { + dragVector.downX = dragVector.downX + displaceVector.x + dragVector.downY = dragVector.downY + displaceVector.y + checkDrag() + } + event.preventDefault() + return + } + + if ((event.ctrlKey === true || event.metaKey === true) && event.shiftKey === false && event.code === 'ArrowUp') { + let displaceVector = canvas.floatingSpace.oneScreenUp() + if (displaceVector !== undefined) { + dragVector.downX = dragVector.downX + displaceVector.x + dragVector.downY = dragVector.downY + displaceVector.y + checkDrag() + } + event.preventDefault() + return + } + + if ((event.ctrlKey === true || event.metaKey === true) && event.shiftKey === false && event.code === 'ArrowDown') { + let displaceVector = canvas.floatingSpace.oneScreenDown() + if (displaceVector !== undefined) { + dragVector.downX = dragVector.downX + displaceVector.x + dragVector.downY = dragVector.downY + displaceVector.y + checkDrag() + } + event.preventDefault() + return + } + + if (event.code === 'Period') { + if (nodeOnFocus !== undefined) { + nodeOnFocus.payload.uiObject.valueAtAngle = false + nodeOnFocus.payload.uiObject.setValue('Id: ' + nodeOnFocus.id) + return + } + } + + if ((event.ctrlKey === true || event.metaKey === true) && event.altKey === true) { + /* Shortcuts to nodes */ + if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 65 && event.keyCode <= 90)) { + /* From here we prevent the default behaviour. Putting it earlier prevents imput box and text area to receive keystrokes */ + event.preventDefault() + + let nodeUsingThisKey = canvas.designSpace.workspace.getNodeByShortcutKey(event.key) + + if (nodeOnFocus === undefined && nodeUsingThisKey !== undefined) { + /* Then we displace the whole workspace to center it at the node using this key */ + nodeUsingThisKey = canvas.floatingSpace.positionAtNode(nodeUsingThisKey) + return + } + + /* If there is a node in focus, we try to assign the key to it. */ + if (nodeUsingThisKey !== undefined && nodeOnFocus !== undefined) { + if (nodeUsingThisKey.id === nodeOnFocus.id) { + nodeOnFocus.payload.uiObject.shortcutKey = '' + nodeOnFocus.payload.uiObject.valueAtAngle = false + nodeOnFocus.payload.uiObject.setValue('Shortcut Key Removed ') + return + } else { + /* After the warning, we allow the key to be re-assigned */ + nodeUsingThisKey.payload.uiObject.shortcutKey = '' + nodeUsingThisKey === undefined + nodeOnFocus.payload.uiObject.shortcutKey = event.key + nodeOnFocus.payload.uiObject.valueAtAngle = false + nodeOnFocus.payload.uiObject.setValue('Shortcut Key: Ctrl + Alt + ' + event.key) + } + } + return + } + } + + if (event.ctrlKey === true && event.altKey === true && nodeOnFocus !== undefined) { + if (nodeOnFocus.payload.uiObject.shortcutKey !== undefined && nodeOnFocus.payload.uiObject.shortcutKey !== '') { + nodeOnFocus.payload.uiObject.valueAtAngle = false + nodeOnFocus.payload.uiObject.setValue('Shortcut Key: Ctrl + Alt + ' + nodeOnFocus.payload.uiObject.shortcutKey) + } + } + } + + function onDragEnter(event) { + try { + event.preventDefault() + event.stopPropagation() + thisObject.cockpitSpace.toTop() + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] onDragEnter -> err = ' + err.stack) } + } + } + + function onDragLeave(event) { + try { + event.preventDefault() + event.stopPropagation() + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] onDragLeave -> err = ' + err.stack) } + } + } + + function onDragOver(event) { + try { + event.preventDefault() + event.stopPropagation() + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] onDragOver -> err = ' + err.stack) } + } + } + + function onDragDrop(event) { + try { + event.preventDefault() + event.stopPropagation() + + let files = event.dataTransfer.files + + handleFiles(files) + function handleFiles(files) { + ([...files]).forEach(loadFileData) + } + + function loadFileData(file) { + let reader = new FileReader() + reader.readAsText(file) + reader.onloadend = function () { + let mousePosition = { + x: event.x, + y: event.y + } + thisObject.designSpace.workspace.spawn(reader.result, mousePosition) + } + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] onDragDrop -> err = ' + err.stack) } + } + } + + function onMouseDown(event) { + try { + thisObject.mouse.event = event + thisObject.mouse.position.x = event.pageX + thisObject.mouse.position.y = event.pageY - CURRENT_TOP_MARGIN + switch (event.buttons) { + case 1: { + thisObject.mouse.action = 'clicking with left button' + break + } + case 2: { + thisObject.mouse.action = 'clicking with right button' + break + } + } + + let point = event + point.x = event.pageX + point.y = event.pageY - CURRENT_TOP_MARGIN + + dragVector.downX = point.x + dragVector.downY = point.y + + let container + + /* We check if the mouse is over an element of the Doc Space / */ + container = thisObject.tutorialSpace.getContainer(point) + + if (container !== undefined && container.isDraggeable === true) { + containerBeingDragged = container + containerDragStarted = true + containerBeingDragged.eventHandler.raiseEvent('onDragStarted', point) + return + } + + if (container !== undefined && container.isDraggeable === false) { + return + } + + /* We check if the mouse is over an element of the Doc Space / */ + container = thisObject.docSpace.getContainer(point) + + if (container !== undefined && container.isDraggeable === true) { + containerBeingDragged = container + containerDragStarted = true + containerBeingDragged.eventHandler.raiseEvent('onDragStarted', point) + return + } + + if (container !== undefined && container.isDraggeable === false) { + return + } + + /* We check if the mouse is over an element of the Chat Space / */ + //container = thisObject.chatSpace.getContainer(point) + + if (container !== undefined && container.isDraggeable === true) { + containerBeingDragged = container + containerDragStarted = true + containerBeingDragged.eventHandler.raiseEvent('onDragStarted', point) + return + } + + if (container !== undefined && container.isDraggeable === false) { + return + } + + /* We check if the mouse is over an element of the Side Space / */ + container = thisObject.sideSpace.getContainer(point) + + if (container !== undefined && container.isDraggeable === true) { + containerBeingDragged = container + containerDragStarted = true + containerBeingDragged.eventHandler.raiseEvent('onDragStarted', point) + return + } + + if (container !== undefined && container.isDraggeable === false) { + return + } + + /* We check if the mouse is over an element of the Design Space / */ + container = thisObject.designSpace.getContainer(point) + + if (container !== undefined && container.isDraggeable === true) { + containerBeingDragged = container + containerDragStarted = true + containerBeingDragged.eventHandler.raiseEvent('onDragStarted', point) + return + } + + if (container !== undefined && container.isDraggeable === false) { + return + } + + /* We check if the mouse is over an element of the Top Space / */ + container = thisObject.topSpace.getContainer(point) + + if (container !== undefined && container.isDraggeable === true) { + containerBeingDragged = container + containerDragStarted = true + containerBeingDragged.eventHandler.raiseEvent('onDragStarted', point) + return + } + + /* We check if the mouse is over an element of the CockpitSpace / */ + container = thisObject.cockpitSpace.getContainer(point) + + if (container !== undefined && container.isDraggeable === true) { + containerBeingDragged = container + containerDragStarted = true + containerBeingDragged.eventHandler.raiseEvent('onDragStarted', point) + return + } + + if (container !== undefined && container.isClickeable === true) { + /* We dont want to mess up with the click */ + return + } + + /* We check if the mouse is over a panel/ */ + container = thisObject.panelsSpace.getContainer(point, GET_CONTAINER_PURPOSE.DRAGGING) + + if (container !== undefined && event.shiftKey === false) { + if (container.isDraggeable === true) { + containerBeingDragged = container + containerDragStarted = true + containerBeingDragged.eventHandler.raiseEvent('onDragStarted', point) + return + } else { + return + } + } + + if (container !== undefined && container.isClickeable === true) { + /* We dont want to mess up with the click */ + return + } + + /* we check if it is over any of the existing containers at the Charting Space. */ + container = thisObject.chartingSpace.getContainer(point, GET_CONTAINER_PURPOSE.DRAGGING) + + if (container !== undefined) { + if (container.isDraggeable === true) { + containerBeingDragged = container + containerDragStarted = true + containerBeingDragged.eventHandler.raiseEvent('onDragStarted', point) + return + } else { + if (container.isClickeable === false) { + if (event.buttons === 2) { + viewPortBeingDragged = true + } + } + return + } + } + + container = thisObject.floatingSpace.getContainer(point) + + if (container !== undefined && container.isDraggeable === true) { + containerBeingDragged = container + containerDragStarted = true + floatingObjectDragStarted = true + containerBeingDragged.eventHandler.raiseEvent('onDragStarted', point) + + if (event.candelDragging === true) { + containerBeingDragged = undefined + containerDragStarted = false + floatingObjectDragStarted = false + } + return + } + + if (container !== undefined && container.isClickeable === true) { + /* We dont want to mess up with the click */ + return + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] onMouseDown -> err = ' + err.stack) } + } + } + + function onMouseClick(event) { + try { + if (ignoreNextClick === true) { + ignoreNextClick = false + return + } + + let point = event + point.x = event.pageX + point.y = event.pageY - CURRENT_TOP_MARGIN + + let container + + /* We check if the mouse is over an element of the Tutorial Space / */ + container = thisObject.tutorialSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_CLICK) + + if (container !== undefined && container.isClickeable === true) { + container.eventHandler.raiseEvent('onMouseClick', point) + return + } + + /* We check if the mouse is over an element of the Doc Space / */ + container = thisObject.docSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_CLICK) + + if (container !== undefined && container.isClickeable === true) { + container.eventHandler.raiseEvent('onMouseClick', point) + return + } + + /* We check if the mouse is over an element of the Chat Space / */ + //container = thisObject.chatSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_CLICK) + + if (container !== undefined && container.isClickeable === true) { + container.eventHandler.raiseEvent('onMouseClick', point) + return + } + + /* We check if the mouse is over an element of the Side Space / */ + container = thisObject.sideSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_CLICK) + + if (container !== undefined && container.isClickeable === true) { + container.eventHandler.raiseEvent('onMouseClick', point) + return + } + + /* We check if the mouse is over an element of the Design Space / */ + container = thisObject.designSpace.getContainer(point) + + if (container !== undefined && container.isClickeable === true) { + container.eventHandler.raiseEvent('onMouseClick', point) + return + } + + /* We check if the mouse is over an element of the Top Space / */ + container = thisObject.topSpace.getContainer(point) + + if (container !== undefined && container.isClickeable === true) { + container.eventHandler.raiseEvent('onMouseClick', point) + return + } + + /* We check if the mouse is over an element of the CockpitSpace / */ + container = thisObject.cockpitSpace.getContainer(point) + + if (container !== undefined && container.isClickeable === true) { + container.eventHandler.raiseEvent('onMouseClick', point) + return + } + + /* We check if the mouse is over a panel/ */ + container = thisObject.panelsSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_CLICK) + + if (container !== undefined && container.isClickeable === true) { + container.eventHandler.raiseEvent('onMouseClick', point) + return + } + + /* If it is not, then we check if it is over any of the existing containers at the Charting Space. */ + container = thisObject.chartingSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_CLICK) + + if (container !== undefined && container.isClickeable === true) { + container.eventHandler.raiseEvent('onMouseClick', point) + return + } + + /* We check if the mouse is over a floatingObject/ */ + container = thisObject.floatingSpace.getContainer(point) + + if (container !== undefined && container.isClickeable === true) { + container.eventHandler.raiseEvent('onMouseClick', point) + return + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] onMouseClick -> err = ' + err.stack) } + } + } + + function onMouseOut(event) { + deactivateDragging(event) + + /* When the mouse leaves the canvas, our elements needs to react to the fact that the mouse is over a far away place */ + let thisEvent = { + pageX: VERY_LARGE_NUMBER, + pageY: VERY_LARGE_NUMBER + } + onMouseOver(thisEvent) + } + + function onMouseUp(event) { + deactivateDragging(event) + } + + function onMouseMove(event) { + try { + thisObject.mouse.event = event + thisObject.mouse.position.x = event.pageX + thisObject.mouse.position.y = event.pageY - CURRENT_TOP_MARGIN + thisObject.mouse.action = 'moving' + + /* Processing the event */ + let point = event + point.x = event.pageX + point.y = event.pageY - CURRENT_TOP_MARGIN + + if (canvas.chartingSpace.viewport !== undefined) { + canvas.chartingSpace.viewport.mousePosition.x = point.x + canvas.chartingSpace.viewport.mousePosition.y = point.y + } + + if (containerDragStarted === true || floatingObjectDragStarted === true || viewPortBeingDragged === true) { + if (floatingObjectDragStarted === true) { + let targetContainer = thisObject.floatingSpace.getContainer(point) + if (targetContainer !== undefined) { + if (targetContainer.id !== containerBeingDragged.id) { + containerBeingDragged.eventHandler.raiseEvent('onDragFinished', point) + containerBeingDragged = undefined + containerDragStarted = false + floatingObjectDragStarted = false + browserCanvas.style.cursor = 'auto' + ignoreNextClick = true + return + } + } else { + containerBeingDragged.eventHandler.raiseEvent('onDragFinished', point) + containerDragStarted = false + containerBeingDragged = undefined + floatingObjectDragStarted = false + browserCanvas.style.cursor = 'auto' + ignoreNextClick = true + return + } + } + + dragVector.upX = point.x + dragVector.upY = point.y + + checkDrag(event) + } + onMouseOver(event) + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] onMouseMove -> err = ' + err.stack) } + } + } + + function onMouseOver(event) { + try { + let point = event + point.x = event.pageX + point.y = event.pageY - CURRENT_TOP_MARGIN + + if (containerDragStarted === true) { + containerBeingDragged.eventHandler.raiseEvent('onMouseOver', point) + return + } + + /* Then we check who is the current object underneeth the mounse. */ + + let container + + /* We check if the mouse is over an element of the Tutorial Space / */ + if (thisObject.tutorialSpace !== undefined) { + container = thisObject.tutorialSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_OVER) + + if (container !== undefined && container.detectMouseOver === true) { + containerFound() + return + } + } + + /* We check if the mouse is over an element of the Doc Space / */ + if (thisObject.docSpace !== undefined) { + container = thisObject.docSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_OVER) + + if (container !== undefined && container.detectMouseOver === true) { + containerFound() + return + } + } + + /* We check if the mouse is over an element of the Chat Space / */ + if (thisObject.chatSpace !== undefined) { + //container = thisObject.chatSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_OVER) + + if (container !== undefined && container.detectMouseOver === true) { + containerFound() + return + } + } + + /* We check if the mouse is over an element of the Side Space / */ + if (thisObject.sideSpace !== undefined) { + container = thisObject.sideSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_OVER) + + if (container !== undefined && container.detectMouseOver === true) { + containerFound() + return + } + } + + /* We check if the mouse is over an element of the Designe Space / */ + if (thisObject.designSpace !== undefined) { + container = thisObject.designSpace.getContainer(point) + + if (container !== undefined && container.detectMouseOver === true) { + containerFound() + return + } + } + + /* We check if the mouse is over an element of the Top Space / */ + if (thisObject.topSpace !== undefined) { + container = thisObject.topSpace.getContainer(point) + + if (container !== undefined && container.detectMouseOver === true) { + containerFound() + return + } + } + + /* We check if the mouse is over an element of the CockpitSpace / */ + if (thisObject.cockpitSpace !== undefined) { + container = thisObject.cockpitSpace.getContainer(point) + + if (container !== undefined && container.detectMouseOver === true) { + containerFound() + return + } + } + + /* We check if the mouse is over a panel/ */ + if (thisObject.panelsSpace !== undefined) { + container = thisObject.panelsSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_OVER) + + if (container !== undefined && container.detectMouseOver === true) { + containerFound() + return + } + } + + /* If it is not, then we check if it is over any of the existing containers at the Charting Space. */ + if (thisObject.chartingSpace !== undefined) { + container = thisObject.chartingSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_OVER) + + if (container !== undefined && container.detectMouseOver === true) { + containerFound() + return + } + } + + /* We check if the mouse is over a floatingObject/ */ + if (thisObject.floatingSpace !== undefined) { + container = thisObject.floatingSpace.getContainer(point) + + if (container !== undefined && container.detectMouseOver === true) { + containerFound() + return + } + } + + function containerFound() { + if (lastContainerMouseOver !== undefined) { + if (container.id !== lastContainerMouseOver.id) { + lastContainerMouseOver.eventHandler.raiseEvent('onMouseNotOver', point) + } + } + container.eventHandler.raiseEvent('onMouseOver', point) + lastContainerMouseOver = container + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] onMouseOver -> err = ' + err.stack) } + } + } + + function onMouseWheel(event) { + try { + thisObject.mouse.event = event + thisObject.mouse.position.x = event.pageX + thisObject.mouse.position.y = event.pageY - CURRENT_TOP_MARGIN + thisObject.mouse.action = 'wheel' + + // cross-browser wheel delta + var event = window.event || event // old IE support + event.delta = Math.max(-1, Math.min(1, event.wheelDelta || -event.detail)) + if (IS_MAC) { + event.delta = event.delta / MAC_AMOUNT_FACTOR + } + + /* We try first with panels. */ + + let point = { + x: event.pageX, + y: event.pageY - CURRENT_TOP_MARGIN + } + + event.mousePosition = point + let container + + /* Doc Space */ + container = canvas.tutorialSpace.getContainer({ x: point.x, y: point.y }) + + if (container !== undefined && container.isWheelable === true) { + container.eventHandler.raiseEvent('onMouseWheel', event) + return false // This instructs the browser not to take the event and scroll the page. + } + + /* Doc Space */ + container = canvas.docSpace.getContainer({ x: point.x, y: point.y }) + + if (container !== undefined && container.isWheelable === true) { + container.eventHandler.raiseEvent('onMouseWheel', event) + return false // This instructs the browser not to take the event and scroll the page. + } + + /* Chat Space */ + //container = canvas.chatSpace.getContainer({ x: point.x, y: point.y }) + + if (container !== undefined && container.isWheelable === true) { + container.eventHandler.raiseEvent('onMouseWheel', event) + return false // This instructs the browser not to take the event and scroll the page. + } + + /* Side Space */ + container = canvas.sideSpace.getContainer({ x: point.x, y: point.y }) + + if (container !== undefined && container.isWheelable === true) { + container.eventHandler.raiseEvent('onMouseWheel', event) + return false // This instructs the browser not to take the event and scroll the page. + } + + /* Panel Space */ + container = canvas.panelsSpace.getContainer({ x: point.x, y: point.y }) + + if (container !== undefined && container.isWheelable === true) { + container.eventHandler.raiseEvent('onMouseWheel', event) + return false // This instructs the browser not to take the event and scroll the page. + } + + /* We try the CockpitSpace. */ + container = canvas.cockpitSpace.getContainer({ x: point.x, y: point.y }) + + if (container !== undefined && container.isWheelable === true) { + container.eventHandler.raiseEvent('onMouseWheel', event) + return false // This instructs the browser not to take the event and scroll the page. + } + + /* Charting Space. */ + container = canvas.chartingSpace.getContainer({ x: point.x, y: point.y }, GET_CONTAINER_PURPOSE.MOUSE_WHEEL) + if (container !== undefined && container.isWheelable === true) { + container.eventHandler.raiseEvent('onMouseWheel', event) + return false // This instructs the browser not to take the event and scroll the page. + } + + if (container !== undefined) { + canvas.chartingSpace.viewport.onMouseWheel(event) + return false + } + + /* We try second with floating objects. */ + container = canvas.floatingSpace.getContainer({ x: point.x, y: point.y }) + + if (container !== undefined && container.isWheelable === true) { + container.eventHandler.raiseEvent('onMouseWheel', event) + return false // This instructs the browser not to take the event and scroll the page. + } + + return false + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] onMouseWheel -> err = ' + err.stack) } + } + } + + function deactivateDragging(event) { + try { + if (containerDragStarted || viewPortBeingDragged || floatingObjectDragStarted) { + thisObject.eventHandler.raiseEvent('Drag Finished', undefined) + } + + if ( + containerDragStarted || + floatingObjectDragStarted || + viewPortBeingDragged + ) { + ignoreNextClick = false + } + /* Turn off all the possible things that can be dragged. */ + containerDragStarted = false - containerBeingDragged = undefined floatingObjectDragStarted = false - browserCanvas.style.cursor = 'auto' - ignoreNextClick = true - return - } - } + viewPortBeingDragged = false - dragVector.upX = point.x - dragVector.upY = point.y - - checkDrag(event) - } - onMouseOver(event) - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] onMouseMove -> err = ' + err.stack) } - } - } - - function onMouseOver (event) { - try { - let point = event - point.x = event.pageX - point.y = event.pageY - CURRENT_TOP_MARGIN - - if (containerDragStarted === true) { - containerBeingDragged.eventHandler.raiseEvent('onMouseOver', point) - return - } - - /* Then we check who is the current object underneeth the mounse. */ - - let container - - /* We check if the mouse is over an element of the Designe Space / */ - if (thisObject.sideSpace !== undefined) { - container = thisObject.sideSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_OVER) - - if (container !== undefined && container.detectMouseOver === true) { - containerFound() - return - } - } - - /* We check if the mouse is over an element of the Designe Space / */ - if (thisObject.designSpace !== undefined) { - container = thisObject.designSpace.getContainer(point) - - if (container !== undefined && container.detectMouseOver === true) { - containerFound() - return - } - } - - /* We check if the mouse is over an element of the Top Space / */ - if (thisObject.topSpace !== undefined) { - container = thisObject.topSpace.getContainer(point) - - if (container !== undefined && container.detectMouseOver === true) { - containerFound() - return - } - } - - /* We check if the mouse is over an element of the CockpitSpace / */ - if (thisObject.cockpitSpace !== undefined) { - container = thisObject.cockpitSpace.getContainer(point) - - if (container !== undefined && container.detectMouseOver === true) { - containerFound() - return - } - } - - /* We check if the mouse is over a panel/ */ - if (thisObject.panelsSpace !== undefined) { - container = thisObject.panelsSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_OVER) - - if (container !== undefined && container.detectMouseOver === true) { - containerFound() - return - } - } - - /* If it is not, then we check if it is over any of the existing containers at the Charting Space. */ - if (thisObject.chartingSpace !== undefined) { - container = thisObject.chartingSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_OVER) - - if (container !== undefined && container.detectMouseOver === true) { - containerFound() - return - } - } - - /* We check if the mouse is over a floatingObject/ */ - if (thisObject.floatingSpace !== undefined) { - container = thisObject.floatingSpace.getContainer(point) - - if (container !== undefined && container.detectMouseOver === true) { - containerFound() - return - } - } - - function containerFound () { - if (lastContainerMouseOver !== undefined) { - if (container.id !== lastContainerMouseOver.id) { - lastContainerMouseOver.eventHandler.raiseEvent('onMouseNotOver', point) - } - } - container.eventHandler.raiseEvent('onMouseOver', point) - lastContainerMouseOver = container - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] onMouseOver -> err = ' + err.stack) } - } - } - - function onMouseWheel (event) { - try { - thisObject.mouse.event = event - thisObject.mouse.position.x = event.pageX - thisObject.mouse.position.y = event.pageY - CURRENT_TOP_MARGIN - thisObject.mouse.action = 'wheel' - - // cross-browser wheel delta - var event = window.event || event // old IE support - event.delta = Math.max(-1, Math.min(1, event.wheelDelta || -event.detail)) - if (IS_MAC) { - event.delta = event.delta / MAC_AMOUNT_FACTOR - } - - /* We try first with panels. */ - - let point = { - x: event.pageX, - y: event.pageY - CURRENT_TOP_MARGIN - } - - event.mousePosition = point - let container - - /* Side Space */ - container = canvas.sideSpace.getContainer({ x: point.x, y: point.y }) - - if (container !== undefined && container.isWheelable === true) { - container.eventHandler.raiseEvent('onMouseWheel', event) - return false // This instructs the browser not to take the event and scroll the page. - } - - /* Panel Space */ - container = canvas.panelsSpace.getContainer({ x: point.x, y: point.y }) - - if (container !== undefined && container.isWheelable === true) { - container.eventHandler.raiseEvent('onMouseWheel', event) - return false // This instructs the browser not to take the event and scroll the page. - } - - /* We try the CockpitSpace. */ - container = canvas.cockpitSpace.getContainer({ x: point.x, y: point.y }) - - if (container !== undefined && container.isWheelable === true) { - container.eventHandler.raiseEvent('onMouseWheel', event) - return false // This instructs the browser not to take the event and scroll the page. - } - - /* Charting Space. */ - container = canvas.chartingSpace.getContainer({ x: point.x, y: point.y }, GET_CONTAINER_PURPOSE.MOUSE_WHEEL) - if (container !== undefined && container.isWheelable === true) { - container.eventHandler.raiseEvent('onMouseWheel', event) - return false // This instructs the browser not to take the event and scroll the page. - } - - if (container !== undefined) { - canvas.chartingSpace.viewport.onMouseWheel(event) - return false - } - - /* We try second with floating objects. */ - container = canvas.floatingSpace.getContainer({ x: point.x, y: point.y }) - - if (container !== undefined && container.isWheelable === true) { - container.eventHandler.raiseEvent('onMouseWheel', event) - return false // This instructs the browser not to take the event and scroll the page. - } - - return false - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] onMouseWheel -> err = ' + err.stack) } - } - } - - function deactivateDragging (event) { - try { - if (containerDragStarted || viewPortBeingDragged || floatingObjectDragStarted) { - thisObject.eventHandler.raiseEvent('Drag Finished', undefined) - } - - if ( - containerDragStarted || - floatingObjectDragStarted || - viewPortBeingDragged - ) { - ignoreNextClick = false - } - /* Turn off all the possible things that can be dragged. */ - - containerDragStarted = false - floatingObjectDragStarted = false - viewPortBeingDragged = false - - if (containerBeingDragged !== undefined) { - containerBeingDragged.eventHandler.raiseEvent('onDragFinished', event) - containerBeingDragged = undefined - } - - browserCanvas.style.cursor = 'auto' - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] deactivateDragging -> err = ' + err.stack) } - } - } - - function checkDrag (event) { - try { - if (containerDragStarted === true || floatingObjectDragStarted === true || viewPortBeingDragged === true) { - if (event !== undefined) { - thisObject.mouse.event = event - thisObject.mouse.position.x = event.pageX - thisObject.mouse.position.y = event.pageY - CURRENT_TOP_MARGIN - thisObject.mouse.action = 'dragging' - } - - browserCanvas.style.cursor = 'grabbing' - thisObject.eventHandler.raiseEvent('Dragging', undefined) - - if (viewPortBeingDragged) { - let displaceVector = { - x: dragVector.upX - dragVector.downX, - y: dragVector.upY - dragVector.downY - } - - canvas.chartingSpace.viewport.displace(displaceVector) - } - if (containerDragStarted) { - if (containerBeingDragged !== undefined) { - if (containerBeingDragged.space === 'Charting Space') { - let downCopy = { - x: dragVector.downX, - y: dragVector.downY - } - - let downNoZoom - downNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(downCopy) - - let upCopy = { - x: dragVector.upX, - y: dragVector.upY - } - - let upNoZoom - upNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(upCopy) - - displaceVector = { - x: upNoZoom.x - downNoZoom.x, - y: upNoZoom.y - downNoZoom.y - } - - let moveSucceed = containerBeingDragged.displace(displaceVector) - if (moveSucceed === false) { - deactivateDragging(event) - } - } else { - let displaceVector = { - x: dragVector.upX - dragVector.downX, - y: dragVector.upY - dragVector.downY - } - let moveSucceed = containerBeingDragged.displace(displaceVector) - if (moveSucceed === false) { - deactivateDragging(event) - } + if (containerBeingDragged !== undefined) { + containerBeingDragged.eventHandler.raiseEvent('onDragFinished', event) + containerBeingDragged = undefined } - } - } - /* Finally we set the starting point of the new dragVector at this current point. */ - dragVector.downX = dragVector.upX - dragVector.downY = dragVector.upY - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] checkDrag -> err = ' + err.stack) } + browserCanvas.style.cursor = 'auto' + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] deactivateDragging -> err = ' + err.stack) } + } + } + + function checkDrag(event) { + try { + if (containerDragStarted === true || floatingObjectDragStarted === true || viewPortBeingDragged === true) { + if (event !== undefined) { + thisObject.mouse.event = event + thisObject.mouse.position.x = event.pageX + thisObject.mouse.position.y = event.pageY - CURRENT_TOP_MARGIN + thisObject.mouse.action = 'dragging' + } + + browserCanvas.style.cursor = 'grabbing' + thisObject.eventHandler.raiseEvent('Dragging', undefined) + + if (viewPortBeingDragged) { + let displaceVector = { + x: dragVector.upX - dragVector.downX, + y: dragVector.upY - dragVector.downY + } + + canvas.chartingSpace.viewport.displace(displaceVector) + } + if (containerDragStarted) { + if (containerBeingDragged !== undefined) { + if (containerBeingDragged.space === 'Charting Space') { + let downCopy = { + x: dragVector.downX, + y: dragVector.downY + } + + let downNoZoom + downNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(downCopy) + + let upCopy = { + x: dragVector.upX, + y: dragVector.upY + } + + let upNoZoom + upNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(upCopy) + + displaceVector = { + x: upNoZoom.x - downNoZoom.x, + y: upNoZoom.y - downNoZoom.y + } + + let moveSucceed = containerBeingDragged.displace(displaceVector) + if (moveSucceed === false) { + deactivateDragging(event) + } + } else { + let displaceVector = { + x: dragVector.upX - dragVector.downX, + y: dragVector.upY - dragVector.downY + } + let moveSucceed = containerBeingDragged.displace(displaceVector) + if (moveSucceed === false) { + deactivateDragging(event) + } + } + } + } + + /* Finally we set the starting point of the new dragVector at this current point. */ + dragVector.downX = dragVector.upX + dragVector.downY = dragVector.upY + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] checkDrag -> err = ' + err.stack) } + } } - } } diff --git a/CanvasApp/ChartingSpace/ChartUtilities.js b/CanvasApp/ChartingSpace/ChartUtilities.js index cdc205ec2..ca778df72 100644 --- a/CanvasApp/ChartingSpace/ChartUtilities.js +++ b/CanvasApp/ChartingSpace/ChartUtilities.js @@ -1,139 +1,139 @@ -function getSideDays (timeFrame) { - let daysOnSides +function getSideDays(timeFrame) { + let daysOnSides - if (timeFrame < _1_HOUR_IN_MILISECONDS) { - daysOnSides = 1 - } + if (timeFrame < _1_HOUR_IN_MILISECONDS) { + daysOnSides = 1 + } - if (timeFrame === _1_HOUR_IN_MILISECONDS) { - daysOnSides = 9 - } + if (timeFrame === _1_HOUR_IN_MILISECONDS) { + daysOnSides = 9 + } - if (timeFrame === _2_HOURS_IN_MILISECONDS) { - daysOnSides = 10 - } + if (timeFrame === _2_HOURS_IN_MILISECONDS) { + daysOnSides = 10 + } - if (timeFrame === _3_HOURS_IN_MILISECONDS) { - daysOnSides = 12 - } + if (timeFrame === _3_HOURS_IN_MILISECONDS) { + daysOnSides = 12 + } - if (timeFrame === _4_HOURS_IN_MILISECONDS) { - daysOnSides = 20 - } + if (timeFrame === _4_HOURS_IN_MILISECONDS) { + daysOnSides = 20 + } - if (timeFrame === _6_HOURS_IN_MILISECONDS) { - daysOnSides = 35 - } + if (timeFrame === _6_HOURS_IN_MILISECONDS) { + daysOnSides = 35 + } - if (timeFrame === _8_HOURS_IN_MILISECONDS) { - daysOnSides = 44 - } + if (timeFrame === _8_HOURS_IN_MILISECONDS) { + daysOnSides = 44 + } - if (timeFrame === _12_HOURS_IN_MILISECONDS) { - daysOnSides = 56 - } + if (timeFrame === _12_HOURS_IN_MILISECONDS) { + daysOnSides = 56 + } - if (timeFrame === ONE_DAY_IN_MILISECONDS) { - daysOnSides = 154 - } + if (timeFrame === ONE_DAY_IN_MILISECONDS) { + daysOnSides = 154 + } - return daysOnSides + return daysOnSides } -function getCondenseFactor (timeFrame) { - switch (timeFrame) { - case _1_MINUTE_IN_MILISECONDS: return 1 - case _5_MINUTES_IN_MILISECONDS: return 5 - case _10_MINUTES_IN_MILISECONDS: return 10 - case _30_MINUTES_IN_MILISECONDS: return 50 - case _1_HOUR_IN_MILISECONDS: return 100 - } +function getCondenseFactor(timeFrame) { + switch (timeFrame) { + case _1_MINUTE_IN_MILISECONDS: return 1 + case _5_MINUTES_IN_MILISECONDS: return 5 + case _10_MINUTES_IN_MILISECONDS: return 10 + case _30_MINUTES_IN_MILISECONDS: return 50 + case _1_HOUR_IN_MILISECONDS: return 100 + } } -function getTransparenceFactor (timeFrame) { - switch (timeFrame) { - case _1_MINUTE_IN_MILISECONDS: return '0.12' - case _5_MINUTES_IN_MILISECONDS: return '0.10' - case _10_MINUTES_IN_MILISECONDS: return '0.08' - case _30_MINUTES_IN_MILISECONDS: return '0.06' - case _1_HOUR_IN_MILISECONDS: return '0.04' - } +function getTransparenceFactor(timeFrame) { + switch (timeFrame) { + case _1_MINUTE_IN_MILISECONDS: return '0.12' + case _5_MINUTES_IN_MILISECONDS: return '0.10' + case _10_MINUTES_IN_MILISECONDS: return '0.08' + case _30_MINUTES_IN_MILISECONDS: return '0.06' + case _1_HOUR_IN_MILISECONDS: return '0.04' + } } -function recalculatePeriod (zoomLevel) { - // console.log('NEW ZOOM LEVEL', zoomLevel) - if (zoomLevel > 400) { - return _1_MINUTE_IN_MILISECONDS - } +function recalculatePeriod(zoomLevel) { + // console.log('NEW ZOOM LEVEL', zoomLevel) + if (zoomLevel > 400) { + return _1_MINUTE_IN_MILISECONDS + } - if (zoomLevel > 360) { - return _2_MINUTES_IN_MILISECONDS - } + if (zoomLevel > 360) { + return _2_MINUTES_IN_MILISECONDS + } - if (zoomLevel > 330) { - return _3_MINUTES_IN_MILISECONDS - } + if (zoomLevel > 330) { + return _3_MINUTES_IN_MILISECONDS + } - if (zoomLevel > 300) { - return _4_MINUTES_IN_MILISECONDS - } + if (zoomLevel > 300) { + return _4_MINUTES_IN_MILISECONDS + } - if (zoomLevel > 270) { - return _5_MINUTES_IN_MILISECONDS - } + if (zoomLevel > 270) { + return _5_MINUTES_IN_MILISECONDS + } - if (zoomLevel > 250) { - return _10_MINUTES_IN_MILISECONDS - } + if (zoomLevel > 250) { + return _10_MINUTES_IN_MILISECONDS + } - if (zoomLevel > 230) { - return _15_MINUTES_IN_MILISECONDS - } + if (zoomLevel > 230) { + return _15_MINUTES_IN_MILISECONDS + } - if (zoomLevel > 210) { - return _20_MINUTES_IN_MILISECONDS - } + if (zoomLevel > 210) { + return _20_MINUTES_IN_MILISECONDS + } - if (zoomLevel > 190) { - return _30_MINUTES_IN_MILISECONDS - } + if (zoomLevel > 190) { + return _30_MINUTES_IN_MILISECONDS + } - if (zoomLevel > 170) { - return _40_MINUTES_IN_MILISECONDS - } + if (zoomLevel > 170) { + return _40_MINUTES_IN_MILISECONDS + } - if (zoomLevel > 150) { - return _45_MINUTES_IN_MILISECONDS - } + if (zoomLevel > 150) { + return _45_MINUTES_IN_MILISECONDS + } - if (zoomLevel > 130) { - return _1_HOUR_IN_MILISECONDS - } + if (zoomLevel > 130) { + return _1_HOUR_IN_MILISECONDS + } - if (zoomLevel > 110) { - return _2_HOURS_IN_MILISECONDS - } + if (zoomLevel > 110) { + return _2_HOURS_IN_MILISECONDS + } - if (zoomLevel > 80) { - return _3_HOURS_IN_MILISECONDS - } + if (zoomLevel > 80) { + return _3_HOURS_IN_MILISECONDS + } - if (zoomLevel > 50) { - return _4_HOURS_IN_MILISECONDS - } + if (zoomLevel > 50) { + return _4_HOURS_IN_MILISECONDS + } - if (zoomLevel > 35) { - return _6_HOURS_IN_MILISECONDS - } + if (zoomLevel > 35) { + return _6_HOURS_IN_MILISECONDS + } - if (zoomLevel > 20) { - return _8_HOURS_IN_MILISECONDS - } + if (zoomLevel > 20) { + return _8_HOURS_IN_MILISECONDS + } - if (zoomLevel > 10) { - return _12_HOURS_IN_MILISECONDS - } + if (zoomLevel > 10) { + return _12_HOURS_IN_MILISECONDS + } - return ONE_DAY_IN_MILISECONDS + return ONE_DAY_IN_MILISECONDS } diff --git a/CanvasApp/ChartingSpace/CoordinateSystem.js b/CanvasApp/ChartingSpace/CoordinateSystem.js index 830cef1ac..de7f0eacf 100644 --- a/CanvasApp/ChartingSpace/CoordinateSystem.js +++ b/CanvasApp/ChartingSpace/CoordinateSystem.js @@ -1,4 +1,4 @@ - /* +/* This Object object is responsible for defining the coordinate system in a TimeLine. @@ -7,320 +7,320 @@ The scale on the Y axis depends on the data that wants to be plotted. Usually we */ -function newCoordinateSystem () { - let thisObject = { - min: undefined, - max: undefined, - parentMin: undefined, - parentMax: undefined, - childrenMin: undefined, - childrenMax: undefined, - maxHeight: undefined, - maxWidth: undefined, - scale: undefined, - eventHandler: undefined, - autoMinXScale: true, - autoMaxXScale: true, - autoMinYScale: true, - autoMaxYScale: true, - HORIZONTAL_MARGIN_FACTOR: 0.80, - VERTICAL_MARGIN_FACTOR: 0.90, - HORIZONTAL_MARGIN_INVERSE_FACTOR: 0.20, - VERTICAL_MARGIN_INVERSE_FACTOR: 0.10, - physics: physics, - reportParentXValue: reportParentXValue, - reportParentYValue: reportParentYValue, - reportXValue: reportXValue, - reportYValue: reportYValue, - zoomX: zoomX, - zoomY: zoomY, - recalculateScale: recalculateScale, - transformThisPoint: transformThisPoint, - transformThisPoint2: transformThisPoint2, - unInverseTransform: unInverseTransform, - inverseTransformUncappedY: inverseTransformUncappedY, - initializeX: initializeX, - initializeY: initializeY, - initialize: initialize, - finalize: finalize - } - - thisObject.min = { - x: 0, - y: 0 - } - thisObject.max = { - x: 0, - y: 0 - } - thisObject.parentMin = { - x: 0, - y: 0 - } - thisObject.parentMax = { - x: 0, - y: 0 - } - thisObject.childrenMin = { - x: 0, - y: 0 - } - thisObject.childrenMax = { - x: 0, - y: 0 - } - - thisObject.scale = { - x: 0, - y: 0 - } - - thisObject.eventHandler = newEventHandler() - thisObject.eventHandler.name = 'Coordinate System' - - let newXMax = -VERY_LARGE_NUMBER - let newXMin = VERY_LARGE_NUMBER - - let newYMax = -VERY_LARGE_NUMBER - let newYMin = VERY_LARGE_NUMBER - - let parentMinChanged = false - let parentMaxChanged = false - - return thisObject - - function finalize () { - thisObject.eventHandler.finalize() - thisObject.eventHandler = undefined - } - - function initialize (minValue, maxValue, pMaxWidth, pMaxHeight) { - /* Defines the min and max value of rate that we are going to transport to the available screen at the center position. */ - thisObject.min.x = minValue.x - thisObject.max.x = maxValue.x - - thisObject.min.y = minValue.y - thisObject.max.y = maxValue.y - - thisObject.maxWidth = pMaxWidth - thisObject.maxHeight = pMaxHeight - - recalculateScale() - } - - function reportXValue (value) { - if (thisObject.autoMinXScale === true) { - if (value < newXMin && value !== 0) { - newXMin = value - } - } - if (thisObject.autoMaxXScale === true) { - if (value > newXMax && value !== 0) { - newXMax = value - } - } - } - - function reportYValue (value) { - if (thisObject.autoMinYScale === true) { - if (value < newYMin) { - newYMin = value - } - } - if (thisObject.autoMaxYScale === true) { - if (value > newYMax) { - newYMax = value - } - } - } - - function reportParentXValue (min, max) { - if (thisObject.autoMinXScale === true) { - if (thisObject.parentMin.x !== min) { - thisObject.parentMin.x = min - } - } - if (thisObject.autoMaxXScale === true) { - if (thisObject.parentMax.x !== max) { - thisObject.parentMax.x = max - } - } - } - - function reportParentYValue (min, max) { - if (thisObject.autoMinYScale === true) { - if (thisObject.parentMin.y !== min) { - thisObject.parentMin.y = min - } - } - if (thisObject.autoMaxYScale === true) { - if (thisObject.parentMax.y !== max) { - thisObject.parentMax.y = max - } - } - } - - function physics () { - let mustRecalculate = false - - if ((thisObject.autoMinXScale === true || thisObject.autoMaxXScale === true)) { - if (thisObject.autoMaxXScale === true && thisObject.childrenMax.x !== newXMax && newXMax !== -VERY_LARGE_NUMBER) { - thisObject.childrenMax.x = newXMax - } - - if (thisObject.autoMaxXScale === true) { - newXMax = -VERY_LARGE_NUMBER - } - - if (thisObject.autoMinXScale === true && thisObject.childrenMin.x !== newXMin && newXMin !== VERY_LARGE_NUMBER) { - thisObject.childrenMin.x = newXMin - newXMin = VERY_LARGE_NUMBER - } - - if (thisObject.autoMinXScale === true) { - newXMin = VERY_LARGE_NUMBER - } +function newCoordinateSystem() { + let thisObject = { + min: undefined, + max: undefined, + parentMin: undefined, + parentMax: undefined, + childrenMin: undefined, + childrenMax: undefined, + maxHeight: undefined, + maxWidth: undefined, + scale: undefined, + eventHandler: undefined, + autoMinXScale: true, + autoMaxXScale: true, + autoMinYScale: true, + autoMaxYScale: true, + HORIZONTAL_MARGIN_FACTOR: 1, + VERTICAL_MARGIN_FACTOR: 1, + HORIZONTAL_MARGIN_INVERSE_FACTOR: 0, + VERTICAL_MARGIN_INVERSE_FACTOR: 0, + physics: physics, + reportParentXValue: reportParentXValue, + reportParentYValue: reportParentYValue, + reportXValue: reportXValue, + reportYValue: reportYValue, + zoomX: zoomX, + zoomY: zoomY, + recalculateScale: recalculateScale, + transformThisPoint: transformThisPoint, + transformThisPoint2: transformThisPoint2, + unInverseTransform: unInverseTransform, + inverseTransformUncappedY: inverseTransformUncappedY, + initializeX: initializeX, + initializeY: initializeY, + initialize: initialize, + finalize: finalize } - if ((thisObject.autoMinYScale === true || thisObject.autoMaxYScale === true)) { - if (thisObject.autoMaxYScale === true && thisObject.childrenMax.y !== newYMax && newYMax !== -VERY_LARGE_NUMBER) { - thisObject.childrenMax.y = newYMax - } - - if (thisObject.autoMaxYScale === true) { - newYMax = -VERY_LARGE_NUMBER - } - - if (thisObject.autoMinYScale === true && thisObject.childrenMin.y !== newYMin && newYMin !== VERY_LARGE_NUMBER) { - thisObject.childrenMin.y = newYMin - newYMin = VERY_LARGE_NUMBER - } - - if (thisObject.autoMinYScale === true) { - newYMin = VERY_LARGE_NUMBER - } + thisObject.min = { + x: 0, + y: 0 + } + thisObject.max = { + x: 0, + y: 0 + } + thisObject.parentMin = { + x: 0, + y: 0 + } + thisObject.parentMax = { + x: 0, + y: 0 + } + thisObject.childrenMin = { + x: 0, + y: 0 + } + thisObject.childrenMax = { + x: 0, + y: 0 } - /* Here we will see if any of the children or parent values modify the current status quo */ - /* Min */ - let minX = Math.min(thisObject.childrenMin.x, thisObject.parentMin.x) - let minY = Math.min(thisObject.childrenMin.y, thisObject.parentMin.y) - let maxX = Math.max(thisObject.childrenMax.x, thisObject.parentMax.x) - let maxY = Math.max(thisObject.childrenMax.y, thisObject.parentMax.y) - - if (thisObject.parentMin.x === 0) { - minX = thisObject.childrenMin.x + thisObject.scale = { + x: 0, + y: 0 } - if (thisObject.parentMin.y === 0) { - minY = thisObject.childrenMin.y + thisObject.eventHandler = newEventHandler() + thisObject.eventHandler.name = 'Coordinate System' + + let newXMax = -VERY_LARGE_NUMBER + let newXMin = VERY_LARGE_NUMBER + + let newYMax = -VERY_LARGE_NUMBER + let newYMin = VERY_LARGE_NUMBER + + let parentMinChanged = false + let parentMaxChanged = false + + return thisObject + + function finalize() { + thisObject.eventHandler.finalize() + thisObject.eventHandler = undefined } - if (thisObject.parentMax.x === 0) { - maxX = thisObject.childrenMax.x + function initialize(minValue, maxValue, pMaxWidth, pMaxHeight) { + /* Defines the min and max value of rate that we are going to transport to the available screen at the center position. */ + thisObject.min.x = minValue.x + thisObject.max.x = maxValue.x + + thisObject.min.y = minValue.y + thisObject.max.y = maxValue.y + + thisObject.maxWidth = pMaxWidth + thisObject.maxHeight = pMaxHeight + + recalculateScale() } - if (thisObject.parentMax.y === 0) { - maxY = thisObject.childrenMax.y + function reportXValue(value) { + if (thisObject.autoMinXScale === true) { + if (value < newXMin && value !== 0) { + newXMin = value + } + } + if (thisObject.autoMaxXScale === true) { + if (value > newXMax && value !== 0) { + newXMax = value + } + } } - if (minX !== 0 && thisObject.min.x !== minX && thisObject.autoMinXScale === true) { - thisObject.min.x = minX - mustRecalculate = true + function reportYValue(value) { + if (thisObject.autoMinYScale === true) { + if (value < newYMin) { + newYMin = value + } + } + if (thisObject.autoMaxYScale === true) { + if (value > newYMax) { + newYMax = value + } + } } - if (minY !== 0 && thisObject.min.y !== minY && thisObject.autoMinYScale === true) { - thisObject.min.y = minY - mustRecalculate = true + function reportParentXValue(min, max) { + if (thisObject.autoMinXScale === true) { + if (thisObject.parentMin.x !== min) { + thisObject.parentMin.x = min + } + } + if (thisObject.autoMaxXScale === true) { + if (thisObject.parentMax.x !== max) { + thisObject.parentMax.x = max + } + } } - if (maxX !== 0 && thisObject.max.x !== maxX && thisObject.autoMaxXScale === true) { - thisObject.max.x = maxX - mustRecalculate = true + function reportParentYValue(min, max) { + if (thisObject.autoMinYScale === true) { + if (thisObject.parentMin.y !== min) { + thisObject.parentMin.y = min + } + } + if (thisObject.autoMaxYScale === true) { + if (thisObject.parentMax.y !== max) { + thisObject.parentMax.y = max + } + } } - if (maxY !== 0 && thisObject.max.y !== maxY && thisObject.autoMaxYScale === true) { - thisObject.max.y = maxY - mustRecalculate = true + function physics() { + let mustRecalculate = false + + if ((thisObject.autoMinXScale === true || thisObject.autoMaxXScale === true)) { + if (thisObject.autoMaxXScale === true && thisObject.childrenMax.x !== newXMax && newXMax !== -VERY_LARGE_NUMBER) { + thisObject.childrenMax.x = newXMax + } + + if (thisObject.autoMaxXScale === true) { + newXMax = -VERY_LARGE_NUMBER + } + + if (thisObject.autoMinXScale === true && thisObject.childrenMin.x !== newXMin && newXMin !== VERY_LARGE_NUMBER) { + thisObject.childrenMin.x = newXMin + newXMin = VERY_LARGE_NUMBER + } + + if (thisObject.autoMinXScale === true) { + newXMin = VERY_LARGE_NUMBER + } + } + + if ((thisObject.autoMinYScale === true || thisObject.autoMaxYScale === true)) { + if (thisObject.autoMaxYScale === true && thisObject.childrenMax.y !== newYMax && newYMax !== -VERY_LARGE_NUMBER) { + thisObject.childrenMax.y = newYMax + } + + if (thisObject.autoMaxYScale === true) { + newYMax = -VERY_LARGE_NUMBER + } + + if (thisObject.autoMinYScale === true && thisObject.childrenMin.y !== newYMin && newYMin !== VERY_LARGE_NUMBER) { + thisObject.childrenMin.y = newYMin + newYMin = VERY_LARGE_NUMBER + } + + if (thisObject.autoMinYScale === true) { + newYMin = VERY_LARGE_NUMBER + } + } + + /* Here we will see if any of the children or parent values modify the current status quo */ + /* Min */ + let minX = Math.min(thisObject.childrenMin.x, thisObject.parentMin.x) + let minY = Math.min(thisObject.childrenMin.y, thisObject.parentMin.y) + let maxX = Math.max(thisObject.childrenMax.x, thisObject.parentMax.x) + let maxY = Math.max(thisObject.childrenMax.y, thisObject.parentMax.y) + + if (thisObject.parentMin.x === 0) { + minX = thisObject.childrenMin.x + } + + if (thisObject.parentMin.y === 0) { + minY = thisObject.childrenMin.y + } + + if (thisObject.parentMax.x === 0) { + maxX = thisObject.childrenMax.x + } + + if (thisObject.parentMax.y === 0) { + maxY = thisObject.childrenMax.y + } + + if (minX !== 0 && thisObject.min.x !== minX && thisObject.autoMinXScale === true) { + thisObject.min.x = minX + mustRecalculate = true + } + + if (minY !== 0 && thisObject.min.y !== minY && thisObject.autoMinYScale === true) { + thisObject.min.y = minY + mustRecalculate = true + } + + if (maxX !== 0 && thisObject.max.x !== maxX && thisObject.autoMaxXScale === true) { + thisObject.max.x = maxX + mustRecalculate = true + } + + if (maxY !== 0 && thisObject.max.y !== maxY && thisObject.autoMaxYScale === true) { + thisObject.max.y = maxY + mustRecalculate = true + } + + if (mustRecalculate === true) { + recalculateScale() + } } - if (mustRecalculate === true) { - recalculateScale() + function recalculateScale(event) { + thisObject.scale.x = thisObject.maxWidth * thisObject.HORIZONTAL_MARGIN_FACTOR / (thisObject.max.x - thisObject.min.x) + thisObject.scale.y = thisObject.maxHeight * thisObject.VERTICAL_MARGIN_FACTOR / (thisObject.max.y - thisObject.min.y) + + thisObject.eventHandler.raiseEvent('Scale Changed', event) } - } - function recalculateScale (event) { - thisObject.scale.x = thisObject.maxWidth * thisObject.HORIZONTAL_MARGIN_FACTOR / (thisObject.max.x - thisObject.min.x) - thisObject.scale.y = thisObject.maxHeight * thisObject.VERTICAL_MARGIN_FACTOR / (thisObject.max.y - thisObject.min.y) + function zoomX(factor, mousePosition, container) { + let mouseAtCointainer = unTransformThisPoint(mousePosition, container) + let leftDistance = mouseAtCointainer.x + let rightDistance = container.frame.width - mouseAtCointainer.x + let diff = thisObject.max.x - thisObject.min.x + let min = thisObject.min.x + diff * factor * leftDistance / (container.frame.width / 2) + let max = thisObject.max.x - diff * factor * rightDistance / (container.frame.width / 2) - thisObject.eventHandler.raiseEvent('Scale Changed', event) - } - - function zoomX (factor, mousePosition, container) { - let mouseAtCointainer = unTransformThisPoint(mousePosition, container) - let leftDistance = mouseAtCointainer.x - let rightDistance = container.frame.width - mouseAtCointainer.x - let diff = thisObject.max.x - thisObject.min.x - let min = thisObject.min.x + diff * factor * leftDistance / (container.frame.width / 2) - let max = thisObject.max.x - diff * factor * rightDistance / (container.frame.width / 2) - - if (min < max) { - let mustRecalculate = false - if (thisObject.autoMinXScale === false) { - thisObject.min.x = min - mustRecalculate = true - } - if (thisObject.autoMaxXScale === false) { - thisObject.max.x = max - mustRecalculate = true - } - if (mustRecalculate === true) { - thisObject.recalculateScale() - } + if (min < max) { + let mustRecalculate = false + if (thisObject.autoMinXScale === false) { + thisObject.min.x = min + mustRecalculate = true + } + if (thisObject.autoMaxXScale === false) { + thisObject.max.x = max + mustRecalculate = true + } + if (mustRecalculate === true) { + thisObject.recalculateScale() + } + } } - } - function zoomY (factor, mousePosition, container) { - let mouseAtCointainer = unTransformThisPoint(mousePosition, container) - let topDistance = mouseAtCointainer.y - let bottomDistance = container.frame.height - mouseAtCointainer.y - let diff = thisObject.max.y - thisObject.min.y - let min = thisObject.min.y + diff * factor * bottomDistance / (container.frame.height / 2) - let max = thisObject.max.y - diff * factor * topDistance / (container.frame.height / 2) + function zoomY(factor, mousePosition, container) { + let mouseAtCointainer = unTransformThisPoint(mousePosition, container) + let topDistance = mouseAtCointainer.y + let bottomDistance = container.frame.height - mouseAtCointainer.y + let diff = thisObject.max.y - thisObject.min.y + let min = thisObject.min.y + diff * factor * bottomDistance / (container.frame.height / 2) + let max = thisObject.max.y - diff * factor * topDistance / (container.frame.height / 2) - if (min < max) { - let mustRecalculate = false - if (thisObject.autoMinYScale === false) { - thisObject.min.y = min - mustRecalculate = true - } - if (thisObject.autoMaxYScale === false) { - thisObject.max.y = max - mustRecalculate = true - } - if (mustRecalculate === true) { - thisObject.recalculateScale() - } + if (min < max) { + let mustRecalculate = false + if (thisObject.autoMinYScale === false) { + thisObject.min.y = min + mustRecalculate = true + } + if (thisObject.autoMaxYScale === false) { + thisObject.max.y = max + mustRecalculate = true + } + if (mustRecalculate === true) { + thisObject.recalculateScale() + } + } } - } - function initializeX (minValue, maxValue, maxWidth) { - thisObject.min.x = minValue.x // * 0.999; // 0.1% less - thisObject.max.x = maxValue.x // * 1.001; // 0.1% more + function initializeX(minValue, maxValue, maxWidth) { + thisObject.min.x = minValue.x // * 0.999; // 0.1% less + thisObject.max.x = maxValue.x // * 1.001; // 0.1% more - thisObject.scale.x = thisObject.maxWidth / (thisObject.max.x - thisObject.min.x) - } + thisObject.scale.x = thisObject.maxWidth / (thisObject.max.x - thisObject.min.x) + } - function initializeY (minValue, maxValue, pMaxHeight) { - thisObject.min.y = minValue.y // * 0.999; // 0.1% less - thisObject.max.y = maxValue.y // * 1.001; // 0.1% more + function initializeY(minValue, maxValue, pMaxHeight) { + thisObject.min.y = minValue.y // * 0.999; // 0.1% less + thisObject.max.y = maxValue.y // * 1.001; // 0.1% more - thisObject.scale.y = pMaxHeight / (thisObject.max.y - thisObject.min.y) + thisObject.scale.y = pMaxHeight / (thisObject.max.y - thisObject.min.y) - thisObject.maxHeight = pMaxHeight - } + thisObject.maxHeight = pMaxHeight + } - function transformThisPoint (point) { + function transformThisPoint(point) { /* This is the straigh fordward transformation this object provides. The input is a point on the data set that wants to be plotted in a timeline. @@ -334,38 +334,38 @@ function newCoordinateSystem () { */ - point = { - x: (point.x - thisObject.min.x) * thisObject.scale.x + thisObject.maxWidth * thisObject.HORIZONTAL_MARGIN_INVERSE_FACTOR / 2, - y: thisObject.maxHeight - (point.y - thisObject.min.y) * thisObject.scale.y - thisObject.maxHeight * thisObject.VERTICAL_MARGIN_INVERSE_FACTOR / 2 + point = { + x: (point.x - thisObject.min.x) * thisObject.scale.x + thisObject.maxWidth * thisObject.HORIZONTAL_MARGIN_INVERSE_FACTOR / 2, + y: thisObject.maxHeight - (point.y - thisObject.min.y) * thisObject.scale.y - thisObject.maxHeight * thisObject.VERTICAL_MARGIN_INVERSE_FACTOR / 2 + } + + return point } - return point - } + function transformThisPoint2(point) { + point = { + x: (point.x - thisObject.min.x) * thisObject.scale.x + thisObject.maxWidth * thisObject.HORIZONTAL_MARGIN_INVERSE_FACTOR / 2, + y: (thisObject.maxHeight - point.y - thisObject.min.y) * thisObject.scale.y - thisObject.maxHeight * thisObject.VERTICAL_MARGIN_INVERSE_FACTOR / 2 + } - function transformThisPoint2 (point) { - point = { - x: (point.x - thisObject.min.x) * thisObject.scale.x + thisObject.maxWidth * thisObject.HORIZONTAL_MARGIN_INVERSE_FACTOR / 2, - y: (thisObject.maxHeight - point.y - thisObject.min.y) * thisObject.scale.y - thisObject.maxHeight * thisObject.VERTICAL_MARGIN_INVERSE_FACTOR / 2 + return point } - return point - } + function unInverseTransform(point, inverseY) { + point = { + x: ((point.x - thisObject.maxWidth * thisObject.HORIZONTAL_MARGIN_INVERSE_FACTOR / 2) / thisObject.scale.x) + thisObject.min.x, + y: (inverseY * thisObject.VERTICAL_MARGIN_FACTOR - point.y + thisObject.maxHeight * thisObject.VERTICAL_MARGIN_INVERSE_FACTOR / 2) / thisObject.scale.y + thisObject.min.y + } - function unInverseTransform (point, inverseY) { - point = { - x: ((point.x - thisObject.maxWidth * thisObject.HORIZONTAL_MARGIN_INVERSE_FACTOR / 2) / thisObject.scale.x) + thisObject.min.x, - y: (inverseY * thisObject.VERTICAL_MARGIN_FACTOR - point.y + thisObject.maxHeight * thisObject.VERTICAL_MARGIN_INVERSE_FACTOR / 2) / thisObject.scale.y + thisObject.min.y + return point } - return point - } + function inverseTransformUncappedY(point, inverseY) { + point = { + x: (point.x - thisObject.min.x) * thisObject.scale.x + thisObject.maxWidth * thisObject.HORIZONTAL_MARGIN_INVERSE_FACTOR / 2, + y: (inverseY * thisObject.VERTICAL_MARGIN_FACTOR - point.y) * thisObject.scale.y - thisObject.maxHeight * thisObject.VERTICAL_MARGIN_INVERSE_FACTOR / 2 + } - function inverseTransformUncappedY (point, inverseY) { - point = { - x: (point.x - thisObject.min.x) * thisObject.scale.x + thisObject.maxWidth * thisObject.HORIZONTAL_MARGIN_INVERSE_FACTOR / 2, - y: (inverseY * thisObject.VERTICAL_MARGIN_FACTOR - point.y) * thisObject.scale.y - thisObject.maxHeight * thisObject.VERTICAL_MARGIN_INVERSE_FACTOR / 2 + return point } - - return point - } } diff --git a/CanvasApp/ChartingSpace/EdgeEditor.js b/CanvasApp/ChartingSpace/EdgeEditor.js index 134d0006f..1d85768ac 100644 --- a/CanvasApp/ChartingSpace/EdgeEditor.js +++ b/CanvasApp/ChartingSpace/EdgeEditor.js @@ -1,725 +1,729 @@ -function newEdgeEditor () { - const MODULE_NAME = 'Edge Editor' +function newEdgeEditor() { + const MODULE_NAME = 'Edge Editor' - let thisObject = { - container: undefined, - fitFunction: undefined, - isVisible: true, - isMouseOver: undefined, - resetAspectRatio: resetAspectRatio, - onKeyPressed: onKeyPressed, - physics: physics, - drawForeground: drawForeground, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - } - - const EDGE_SIZE = 6 - - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) - - thisObject.container.isDraggeable = true - thisObject.container.isClickeable = false - thisObject.container.isWheelable = false - thisObject.container.detectMouseOver = true - - let whatHappened - let whereIsMouseOver = 'outside' - - let coordinateSystem - let coordinateSystemWhenDragStarted - - let onMouseOverEventSubscriptionId - let onMouseNotOverEventSubscriptionId - let onDragStartedEventSubscriptionId - - let mouse = { - position: { - x: 0, - y: 0 - } - } - - mouseWhenDragStarted = { - position: { - x: 0, - y: 0 - } - } - - parentFrameWhenDragStarted = { - position: { - x: 0, - y: 0 - }, - width: 0, - height: 0 - } - - let doubleClickCounter = 0 - - return thisObject - - function finalize () { - thisObject.container.eventHandler.stopListening(onMouseOverEventSubscriptionId) - thisObject.container.eventHandler.stopListening(onMouseNotOverEventSubscriptionId) - thisObject.container.eventHandler.stopListening(onDragStartedEventSubscriptionId) - - thisObject.container.finalize() - thisObject.container = undefined - thisObject.fitFunction = undefined - mouse = undefined - mouseWhenDragStarted = undefined - parentFrameWhenDragStarted = undefined - - coordinateSystem = undefined - - if (coordinateSystemWhenDragStarted !== undefined) { - coordinateSystemWhenDragStarted.finalize() + let thisObject = { + container: undefined, + fitFunction: undefined, + isVisible: true, + isMouseOver: undefined, + resetAspectRatio: resetAspectRatio, + onKeyPressed: onKeyPressed, + physics: physics, + drawForeground: drawForeground, + getContainer: getContainer, + initialize: initialize, + finalize: finalize } - coordinateSystemWhenDragStarted = undefined - } + const EDGE_SIZE = 6 - function initialize (pCoordinateSystem) { - coordinateSystem = pCoordinateSystem + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) - onMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) - onMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) - onDragStartedEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onDragStarted', onDragStarted) - } + thisObject.container.isDraggeable = true + thisObject.container.isClickeable = false + thisObject.container.isWheelable = false + thisObject.container.detectMouseOver = true - function onMouseOver (event) { - thisObject.isMouseOver = true - mouse = { - position: { - x: event.x, - y: event.y - } - } - } + let whatHappened + let whereIsMouseOver = 'outside' - function onMouseNotOver () { - thisObject.isMouseOver = false - } + let coordinateSystem + let coordinateSystemWhenDragStarted - function resetAspectRatio () { - /* Resize the Time Machine to match the current screen aspect ration */ + let onMouseOverEventSubscriptionId + let onMouseNotOverEventSubscriptionId + let onDragStartedEventSubscriptionId - thisObject.container.parentContainer.frame.width = browserCanvas.width / TIME_MACHINE_WIDTH - thisObject.container.parentContainer.frame.height = (COCKPIT_SPACE_POSITION - TOP_SPACE_HEIGHT) / TIME_MACHINE_HEIGHT - coordinateSystem.maxHeight = thisObject.container.parentContainer.frame.height - coordinateSystem.maxWidth = thisObject.container.parentContainer.frame.width - coordinateSystem.recalculateScale() - thisObject.container.parentContainer.eventHandler.raiseEvent('Dimmensions Changed', event) - } - - function onDoubleClick (event) { - doubleClickCounter = 0 - if (canvas.chartingSpace.viewport.zoomLevel === DOUBLE_CLICK_ZOOM_OUT_LEVEL) { - canvas.chartingSpace.viewport.displaceToContainer(thisObject.container.parentContainer) - canvas.chartingSpace.viewport.zoomAtCenter(DOUBLE_CLICK_ZOOM_IN_LEVEL) - return - } - if (canvas.chartingSpace.viewport.zoomLevel === DOUBLE_CLICK_ZOOM_IN_LEVEL) { - canvas.chartingSpace.viewport.zoomAtCenter(DOUBLE_CLICK_ZOOM_IN_IN_LEVEL) - return - } - } - - function onDragStarted (event) { - if (event.buttons === 1) { - if (doubleClickCounter > 0) { - onDoubleClick(event) - return - } else { - doubleClickCounter = 50 - } + let mouse = { + position: { + x: 0, + y: 0 + } } mouseWhenDragStarted = { - position: { - x: event.x, - y: event.y - } + position: { + x: 0, + y: 0 + } } parentFrameWhenDragStarted = { - position: { - x: thisObject.container.parentContainer.frame.position.x, - y: thisObject.container.parentContainer.frame.position.y - }, - width: thisObject.container.parentContainer.frame.width, - height: thisObject.container.parentContainer.frame.height + position: { + x: 0, + y: 0 + }, + width: 0, + height: 0 } - coordinateSystemWhenDragStarted = newCoordinateSystem() + let doubleClickCounter = 0 - let minValue = { - x: coordinateSystem.min.x, - y: coordinateSystem.min.y - } + return thisObject - let maxValue = { - x: coordinateSystem.max.x, - y: coordinateSystem.max.y - } + function finalize() { + thisObject.container.eventHandler.stopListening(onMouseOverEventSubscriptionId) + thisObject.container.eventHandler.stopListening(onMouseNotOverEventSubscriptionId) + thisObject.container.eventHandler.stopListening(onDragStartedEventSubscriptionId) - coordinateSystemWhenDragStarted.initialize(minValue, maxValue, coordinateSystem.maxWidth, coordinateSystem.maxHeight) + thisObject.container.finalize() + thisObject.container = undefined + thisObject.fitFunction = undefined + mouse = undefined + mouseWhenDragStarted = undefined + parentFrameWhenDragStarted = undefined - switch (event.buttons) { - case 1: { - whatHappened = 'left mouse button' - if (event.shiftKey === true) { - whatHappened = 'left mouse button + SHIFT' + coordinateSystem = undefined + + if (coordinateSystemWhenDragStarted !== undefined) { + coordinateSystemWhenDragStarted.finalize() } - break - } - case 2: { - whatHappened = 'right mouse button' // this will never happen as of today - break - } - } - } - function onKeyPressed (event) { - 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 + coordinateSystemWhenDragStarted = undefined } - if (event.shiftKey === false && event.ctrlKey === false && event.code === 'ArrowRight') { - if (ARE_WE_RECORDING_A_MARKET_PANORAMA === true) { - if (PANORAMA_WAS_PANNED === false) { - PANORAMA_WAS_PANNED = true - onDragStarted(event) - thisObject.container.frame.position.x = thisObject.container.frame.position.x - STEP * 2 - whatHappened = 'left or right arrow key pressed' + function initialize(pCoordinateSystem) { + coordinateSystem = pCoordinateSystem + + onMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) + onMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) + onDragStartedEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onDragStarted', onDragStarted) + } + + function onMouseOver(event) { + thisObject.isMouseOver = true + mouse = { + position: { + x: event.x, + y: event.y + } } - } else { - 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 + function onMouseNotOver() { + thisObject.isMouseOver = false } - 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 + function resetAspectRatio() { + /* Resize the Time Machine to match the current screen aspect ration */ + + thisObject.container.parentContainer.frame.width = browserCanvas.width / TIME_MACHINE_WIDTH + thisObject.container.parentContainer.frame.height = (COCKPIT_SPACE_POSITION - TOP_SPACE_HEIGHT) / TIME_MACHINE_HEIGHT + coordinateSystem.maxHeight = thisObject.container.parentContainer.frame.height + coordinateSystem.maxWidth = thisObject.container.parentContainer.frame.width + coordinateSystem.recalculateScale() + thisObject.container.parentContainer.eventHandler.raiseEvent('Dimmensions Changed', event) } - if (event.shiftKey === true && (event.ctrlKey === true || event.metaKey === true) && (event.key === 'A' || event.key === 'a')) { - resetAspectRatio() - return - } - } - - function getContainer (event, purpose) { - if (thisObject.container.frame.isThisPointHere(event, undefined, undefined, -EDGE_SIZE) === true && event.buttons !== 2) { - let point = { - x: event.x, - y: event.y - } - point = unTransformThisPoint(point, thisObject.container) - - if (point.x <= 0) { - whereIsMouseOver = 'left' - return thisObject.container - } - - if (point.x >= thisObject.container.frame.width) { - whereIsMouseOver = 'right' - return thisObject.container - } - - if (point.y <= 0) { - whereIsMouseOver = 'top' - return thisObject.container - } - - if (point.y >= thisObject.container.frame.height) { - whereIsMouseOver = 'bottom' - return thisObject.container - } - - whereIsMouseOver = 'center' - switch (purpose) { - case GET_CONTAINER_PURPOSE.MOUSE_OVER: - return // We will let the Time Machine to handle this situation. - break - case GET_CONTAINER_PURPOSE.DRAGGING: - return thisObject.container - break - } - } - } - - function physics () { - draggingPhysics() - doubleClickPhysics() - } - - function doubleClickPhysics () { - doubleClickCounter-- - if (doubleClickCounter < 0) { - doubleClickCounter = 0 - } - } - - function draggingPhysics () { - if (coordinateSystemWhenDragStarted === undefined) { return } - if (thisObject.container.frame.position.x === 0 && thisObject.container.frame.position.y === 0) { return } - - let mouseNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(mouse.position) - let mouseWhenDragStartedNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(mouseWhenDragStarted.position) - - let dragVectorWhenDragStarted = { - x: mouseNoZoom.x - mouseWhenDragStartedNoZoom.x, - y: mouseNoZoom.y - mouseWhenDragStartedNoZoom.y + function onDoubleClick(event) { + doubleClickCounter = 0 + if (canvas.chartingSpace.viewport.zoomLevel === DOUBLE_CLICK_ZOOM_OUT_LEVEL) { + canvas.chartingSpace.viewport.displaceToContainer(thisObject.container.parentContainer) + canvas.chartingSpace.viewport.zoomAtCenter(DOUBLE_CLICK_ZOOM_IN_LEVEL) + return + } + if (canvas.chartingSpace.viewport.zoomLevel === DOUBLE_CLICK_ZOOM_IN_LEVEL) { + canvas.chartingSpace.viewport.zoomAtCenter(DOUBLE_CLICK_ZOOM_IN_IN_LEVEL) + return + } } - let dragVector = { - x: thisObject.container.frame.position.x, - y: thisObject.container.frame.position.y + function onDragStarted(event) { + if (event.buttons === 1) { + if (doubleClickCounter > 0) { + onDoubleClick(event) + return + } else { + doubleClickCounter = 50 + } + } + + mouseWhenDragStarted = { + position: { + x: event.x, + y: event.y + } + } + + parentFrameWhenDragStarted = { + position: { + x: thisObject.container.parentContainer.frame.position.x, + y: thisObject.container.parentContainer.frame.position.y + }, + width: thisObject.container.parentContainer.frame.width, + height: thisObject.container.parentContainer.frame.height + } + + coordinateSystemWhenDragStarted = newCoordinateSystem() + + let minValue = { + x: coordinateSystem.min.x, + y: coordinateSystem.min.y + } + + let maxValue = { + x: coordinateSystem.max.x, + y: coordinateSystem.max.y + } + + coordinateSystemWhenDragStarted.initialize(minValue, maxValue, coordinateSystem.maxWidth, coordinateSystem.maxHeight) + + switch (event.buttons) { + case 1: { + whatHappened = 'left mouse button' + if (event.shiftKey === true) { + whatHappened = 'left mouse button + SHIFT' + } + break + } + case 2: { + whatHappened = 'right mouse button' // this will never happen as of today + break + } + } } - thisObject.container.frame.position.x = 0 - thisObject.container.frame.position.y = 0 + function onKeyPressed(event, forceExecution) { + if (forceExecution !== true) { + if (whereIsMouseOver !== 'center' ) {return} + } + + const STEP = 10 - const MIN_WIDTH = 200 - const MIN_HEIGHT = 100 + 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 + } - switch (whereIsMouseOver) { - case 'center': { - switch (whatHappened) { - case 'left mouse button + SHIFT': { - /* This is equivalent to drag the whole Time Machine, so we will apply the translation received onto the Time Machine container. */ - thisObject.container.parentContainer.frame.position.x = parentFrameWhenDragStarted.position.x + dragVectorWhenDragStarted.x - thisObject.container.parentContainer.frame.position.y = parentFrameWhenDragStarted.position.y + dragVectorWhenDragStarted.y - snapPointToGrid(thisObject.container.parentContainer.frame.position) - thisObject.container.parentContainer.eventHandler.raiseEvent('onDisplace') - break - } - case 'left mouse button': { + if (event.shiftKey === false && event.ctrlKey === false && event.code === 'ArrowRight') { + if (ARE_WE_RECORDING_A_MARKET_PANORAMA === true) { + if (PANORAMA_WAS_PANNED === false) { + PANORAMA_WAS_PANNED = true + onDragStarted(event) + thisObject.container.frame.position.x = thisObject.container.frame.position.x - STEP * 2 + whatHappened = 'left or right arrow key pressed' + } + } else { + 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 + } + + if (event.shiftKey === true && (event.ctrlKey === true || event.metaKey === true) && (event.key === 'A' || event.key === 'a')) { + resetAspectRatio() + return + } + } + + function getContainer(event, purpose) { + if (thisObject.container.frame.isThisPointHere(event, undefined, undefined, -EDGE_SIZE) === true && event.buttons !== 2) { let point = { - x: (-dragVectorWhenDragStarted.x), - y: (-dragVectorWhenDragStarted.y) + x: event.x, + y: event.y + } + point = unTransformThisPoint(point, thisObject.container) + + if (point.x <= 0) { + whereIsMouseOver = 'left' + return thisObject.container } - let newMinDate = getDateFromPointAtContainer(point, thisObject.container.parentContainer, coordinateSystemWhenDragStarted) - let newMaxRate = getRateFromPointAtContainer(point, thisObject.container.parentContainer, coordinateSystemWhenDragStarted) - - let xDifferenceMaxMin = coordinateSystemWhenDragStarted.max.x - coordinateSystemWhenDragStarted.min.x - let yDifferenceMaxMin = coordinateSystemWhenDragStarted.max.y - coordinateSystemWhenDragStarted.min.y - coordinateSystem.min.x = newMinDate.valueOf() - coordinateSystem.max.x = newMinDate.valueOf() + xDifferenceMaxMin - coordinateSystem.min.y = newMaxRate - yDifferenceMaxMin - coordinateSystem.max.y = newMaxRate - let event = { - type: 'center dragged', - dragVector: dragVector - } - coordinateSystem.recalculateScale(event) - } - break - case 'left or right arrow key pressed': { - let point = { - x: -dragVector.x + thisObject.container.frame.width * coordinateSystem.HORIZONTAL_MARGIN_INVERSE_FACTOR / 2, - y: 0 + if (point.x >= thisObject.container.frame.width) { + whereIsMouseOver = 'right' + return thisObject.container } - let newMinDate = getDateFromPointAtContainer(point, thisObject.container.parentContainer, coordinateSystem) - let xDifferenceMaxMin = coordinateSystem.max.x - coordinateSystem.min.x - coordinateSystem.min.x = newMinDate.valueOf() - coordinateSystem.max.x = newMinDate.valueOf() + xDifferenceMaxMin - let event = { - type: 'center dragged', - dragVector: dragVector - } - coordinateSystem.recalculateScale(event) - } - break - case 'up or down arrow key pressed': { - let point = { - x: 0, - y: -dragVector.y + thisObject.container.frame.height * coordinateSystem.VERTICAL_MARGIN_INVERSE_FACTOR / 2 + if (point.y <= 0) { + whereIsMouseOver = 'top' + return thisObject.container } - let newMaxRate = getRateFromPointAtContainer(point, thisObject.container.parentContainer, coordinateSystem) - let yDifferenceMaxMin = coordinateSystem.max.y - coordinateSystem.min.y - coordinateSystem.min.y = newMaxRate - yDifferenceMaxMin - coordinateSystem.max.y = newMaxRate - let event = { - type: 'center dragged', - dragVector: dragVector + if (point.y >= thisObject.container.frame.height) { + whereIsMouseOver = 'bottom' + return thisObject.container } - coordinateSystem.recalculateScale(event) - } - break - } - thisObject.container.parentContainer.eventHandler.raiseEvent('onMouseOver', mouse.position) - break - } - case 'top' : { - dragVectorWhenDragStarted.x = 0 - let newHight = parentFrameWhenDragStarted.height - dragVectorWhenDragStarted.y - if (newHight < MIN_HEIGHT && dragVectorWhenDragStarted.y > 0) { - dragVectorWhenDragStarted.y = parentFrameWhenDragStarted.height - MIN_HEIGHT - } - - thisObject.container.parentContainer.frame.position.y = parentFrameWhenDragStarted.position.y + dragVectorWhenDragStarted.y - snapPointToGrid(thisObject.container.parentContainer.frame.position) - thisObject.container.parentContainer.frame.height = parentFrameWhenDragStarted.height + (parentFrameWhenDragStarted.position.y - thisObject.container.parentContainer.frame.position.y) - - let point = { - x: 0, - y: (thisObject.container.parentContainer.frame.position.y - parentFrameWhenDragStarted.position.y) - } - - /* This is equivalent to getRateFromPointAtContainer, but as we do not have a container anymore because we already change it, we do it like this. */ - point = coordinateSystemWhenDragStarted.unInverseTransform(point, parentFrameWhenDragStarted.height) - let newMaxRate = point.y - - switch (whatHappened) { - case 'left mouse button': { - coordinateSystem.max.y = newMaxRate - coordinateSystem.maxHeight = thisObject.container.parentContainer.frame.height - let event = { - type: 'top dragged', - dragVector: dragVector + whereIsMouseOver = 'center' + switch (purpose) { + case GET_CONTAINER_PURPOSE.MOUSE_OVER: + return // We will let the Time Machine to handle this situation. + break + case GET_CONTAINER_PURPOSE.DRAGGING: + return thisObject.container + break } - coordinateSystem.recalculateScale(event) - break - } - case 'left mouse button + SHIFT': { - coordinateSystem.maxHeight = thisObject.container.parentContainer.frame.height - coordinateSystem.recalculateScale() - break - } } - thisObject.container.parentContainer.eventHandler.raiseEvent('Dimmensions Changed', event) - break - } - case 'bottom' : { - dragVectorWhenDragStarted.x = 0 + } - let newHight = dragVectorWhenDragStarted.y + parentFrameWhenDragStarted.height - if (newHight < MIN_HEIGHT && dragVectorWhenDragStarted.y < 0) { - dragVectorWhenDragStarted.y = MIN_HEIGHT - parentFrameWhenDragStarted.height + function physics() { + draggingPhysics() + doubleClickPhysics() + } + + function doubleClickPhysics() { + doubleClickCounter-- + if (doubleClickCounter < 0) { + doubleClickCounter = 0 + } + } + + function draggingPhysics() { + if (coordinateSystemWhenDragStarted === undefined) { return } + if (thisObject.container.frame.position.x === 0 && thisObject.container.frame.position.y === 0) { return } + + let mouseNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(mouse.position) + let mouseWhenDragStartedNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(mouseWhenDragStarted.position) + + let dragVectorWhenDragStarted = { + x: mouseNoZoom.x - mouseWhenDragStartedNoZoom.x, + y: mouseNoZoom.y - mouseWhenDragStartedNoZoom.y } - let point = { - x: 0, - y: dragVectorWhenDragStarted.y + parentFrameWhenDragStarted.height + parentFrameWhenDragStarted.position.y + let dragVector = { + x: thisObject.container.frame.position.x, + y: thisObject.container.frame.position.y } - snapPointToGrid(point) - point.y = point.y - parentFrameWhenDragStarted.position.y - thisObject.container.parentContainer.frame.height = point.y + thisObject.container.frame.position.x = 0 + thisObject.container.frame.position.y = 0 - /* This is equivalent to getRateFromPointAtContainer, but as we do not have a container anymore because we already change it, we do it like this. */ - point = coordinateSystemWhenDragStarted.unInverseTransform(point, parentFrameWhenDragStarted.height) - let newMinRate = point.y + const MIN_WIDTH = 200 + const MIN_HEIGHT = 100 - switch (whatHappened) { - case 'left mouse button': { - coordinateSystem.min.y = newMinRate - coordinateSystem.maxHeight = thisObject.container.parentContainer.frame.height - let event = { - type: 'bottom dragged', - dragVector: dragVector + switch (whereIsMouseOver) { + case 'center': { + switch (whatHappened) { + case 'left mouse button + SHIFT': { + /* This is equivalent to drag the whole Time Machine, so we will apply the translation received onto the Time Machine container. */ + thisObject.container.parentContainer.frame.position.x = parentFrameWhenDragStarted.position.x + dragVectorWhenDragStarted.x + thisObject.container.parentContainer.frame.position.y = parentFrameWhenDragStarted.position.y + dragVectorWhenDragStarted.y + snapPointToGrid(thisObject.container.parentContainer.frame.position) + thisObject.container.parentContainer.eventHandler.raiseEvent('onDisplace') + break + } + case 'left mouse button': { + let point = { + x: (-dragVectorWhenDragStarted.x), + y: (-dragVectorWhenDragStarted.y) + } + + let newMinDate = getDateFromPointAtContainer(point, thisObject.container.parentContainer, coordinateSystemWhenDragStarted) + let newMaxRate = getRateFromPointAtContainer(point, thisObject.container.parentContainer, coordinateSystemWhenDragStarted) + + let xDifferenceMaxMin = coordinateSystemWhenDragStarted.max.x - coordinateSystemWhenDragStarted.min.x + let yDifferenceMaxMin = coordinateSystemWhenDragStarted.max.y - coordinateSystemWhenDragStarted.min.y + coordinateSystem.min.x = newMinDate.valueOf() + coordinateSystem.max.x = newMinDate.valueOf() + xDifferenceMaxMin + coordinateSystem.min.y = newMaxRate - yDifferenceMaxMin + coordinateSystem.max.y = newMaxRate + let event = { + type: 'center dragged', + dragVector: dragVector + } + coordinateSystem.recalculateScale(event) + } + break + case 'left or right arrow key pressed': { + let point = { + x: -dragVector.x + thisObject.container.frame.width * coordinateSystem.HORIZONTAL_MARGIN_INVERSE_FACTOR / 2, + y: 0 + } + + let newMinDate = getDateFromPointAtContainer(point, thisObject.container.parentContainer, coordinateSystem) + let xDifferenceMaxMin = coordinateSystem.max.x - coordinateSystem.min.x + coordinateSystem.min.x = newMinDate.valueOf() + coordinateSystem.max.x = newMinDate.valueOf() + xDifferenceMaxMin + let event = { + type: 'center dragged', + dragVector: dragVector + } + coordinateSystem.recalculateScale(event) + } + break + case 'up or down arrow key pressed': { + let point = { + x: 0, + y: -dragVector.y + thisObject.container.frame.height * coordinateSystem.VERTICAL_MARGIN_INVERSE_FACTOR / 2 + } + + let newMaxRate = getRateFromPointAtContainer(point, thisObject.container.parentContainer, coordinateSystem) + let yDifferenceMaxMin = coordinateSystem.max.y - coordinateSystem.min.y + coordinateSystem.min.y = newMaxRate - yDifferenceMaxMin + coordinateSystem.max.y = newMaxRate + let event = { + type: 'center dragged', + dragVector: dragVector + } + coordinateSystem.recalculateScale(event) + } + break + } + thisObject.container.parentContainer.eventHandler.raiseEvent('onMouseOver', mouse.position) + break } - coordinateSystem.recalculateScale(event) - break - } - case 'left mouse button + SHIFT': { - coordinateSystem.maxHeight = thisObject.container.parentContainer.frame.height - coordinateSystem.recalculateScale() - break - } - } - thisObject.container.parentContainer.eventHandler.raiseEvent('Dimmensions Changed', event) - break - } - case 'left' : { - dragVectorWhenDragStarted.y = 0 + case 'top': { + dragVectorWhenDragStarted.x = 0 - let newWidth = parentFrameWhenDragStarted.width - dragVectorWhenDragStarted.x - if (newWidth < MIN_WIDTH && dragVectorWhenDragStarted.x > 0) { - dragVectorWhenDragStarted.x = parentFrameWhenDragStarted.width - MIN_WIDTH + let newHight = parentFrameWhenDragStarted.height - dragVectorWhenDragStarted.y + if (newHight < MIN_HEIGHT && dragVectorWhenDragStarted.y > 0) { + dragVectorWhenDragStarted.y = parentFrameWhenDragStarted.height - MIN_HEIGHT + } + + thisObject.container.parentContainer.frame.position.y = parentFrameWhenDragStarted.position.y + dragVectorWhenDragStarted.y + snapPointToGrid(thisObject.container.parentContainer.frame.position) + thisObject.container.parentContainer.frame.height = parentFrameWhenDragStarted.height + (parentFrameWhenDragStarted.position.y - thisObject.container.parentContainer.frame.position.y) + + let point = { + x: 0, + y: (thisObject.container.parentContainer.frame.position.y - parentFrameWhenDragStarted.position.y) + } + + /* This is equivalent to getRateFromPointAtContainer, but as we do not have a container anymore because we already change it, we do it like this. */ + point = coordinateSystemWhenDragStarted.unInverseTransform(point, parentFrameWhenDragStarted.height) + let newMaxRate = point.y + + switch (whatHappened) { + case 'left mouse button': { + coordinateSystem.max.y = newMaxRate + coordinateSystem.maxHeight = thisObject.container.parentContainer.frame.height + let event = { + type: 'top dragged', + dragVector: dragVector + } + coordinateSystem.recalculateScale(event) + break + } + case 'left mouse button + SHIFT': { + coordinateSystem.maxHeight = thisObject.container.parentContainer.frame.height + coordinateSystem.recalculateScale() + break + } + } + thisObject.container.parentContainer.eventHandler.raiseEvent('Dimmensions Changed', event) + break + } + case 'bottom': { + dragVectorWhenDragStarted.x = 0 + + let newHight = dragVectorWhenDragStarted.y + parentFrameWhenDragStarted.height + if (newHight < MIN_HEIGHT && dragVectorWhenDragStarted.y < 0) { + dragVectorWhenDragStarted.y = MIN_HEIGHT - parentFrameWhenDragStarted.height + } + + let point = { + x: 0, + y: dragVectorWhenDragStarted.y + parentFrameWhenDragStarted.height + parentFrameWhenDragStarted.position.y + } + snapPointToGrid(point) + point.y = point.y - parentFrameWhenDragStarted.position.y + + thisObject.container.parentContainer.frame.height = point.y + + /* This is equivalent to getRateFromPointAtContainer, but as we do not have a container anymore because we already change it, we do it like this. */ + point = coordinateSystemWhenDragStarted.unInverseTransform(point, parentFrameWhenDragStarted.height) + let newMinRate = point.y + + switch (whatHappened) { + case 'left mouse button': { + coordinateSystem.min.y = newMinRate + coordinateSystem.maxHeight = thisObject.container.parentContainer.frame.height + let event = { + type: 'bottom dragged', + dragVector: dragVector + } + coordinateSystem.recalculateScale(event) + break + } + case 'left mouse button + SHIFT': { + coordinateSystem.maxHeight = thisObject.container.parentContainer.frame.height + coordinateSystem.recalculateScale() + break + } + } + thisObject.container.parentContainer.eventHandler.raiseEvent('Dimmensions Changed', event) + break + } + case 'left': { + dragVectorWhenDragStarted.y = 0 + + let newWidth = parentFrameWhenDragStarted.width - dragVectorWhenDragStarted.x + if (newWidth < MIN_WIDTH && dragVectorWhenDragStarted.x > 0) { + dragVectorWhenDragStarted.x = parentFrameWhenDragStarted.width - MIN_WIDTH + } + + thisObject.container.parentContainer.frame.position.x = parentFrameWhenDragStarted.position.x + dragVectorWhenDragStarted.x + snapPointToGrid(thisObject.container.parentContainer.frame.position) + thisObject.container.parentContainer.frame.width = parentFrameWhenDragStarted.width + (parentFrameWhenDragStarted.position.x - thisObject.container.parentContainer.frame.position.x) + + let point = { + x: (thisObject.container.parentContainer.frame.position.x - parentFrameWhenDragStarted.position.x), + y: 0 + } + + /* This is equivalent to getDateFromPointAtContainer, but as we do not have a container anymore because we already change it, we do it like this. */ + point = coordinateSystemWhenDragStarted.unInverseTransform(point, parentFrameWhenDragStarted.width) + let newMinDate = point.x + + switch (whatHappened) { + case 'left mouse button': { + coordinateSystem.min.x = newMinDate.valueOf() + coordinateSystem.maxWidth = thisObject.container.parentContainer.frame.width + coordinateSystem.recalculateScale() + break + } + case 'left mouse button + SHIFT': { + coordinateSystem.maxWidth = thisObject.container.parentContainer.frame.width + coordinateSystem.recalculateScale() + break + } + } + thisObject.container.parentContainer.eventHandler.raiseEvent('Dimmensions Changed', event) + break + } + case 'right': { + dragVectorWhenDragStarted.y = 0 + + let newWidth = dragVectorWhenDragStarted.x + parentFrameWhenDragStarted.width + if (newWidth < MIN_WIDTH && dragVectorWhenDragStarted.x < 0) { + dragVectorWhenDragStarted.x = MIN_WIDTH - parentFrameWhenDragStarted.width + } + + let point = { + x: dragVectorWhenDragStarted.x + parentFrameWhenDragStarted.width + parentFrameWhenDragStarted.position.x, + y: 0 + } + snapPointToGrid(point) + point.x = point.x - parentFrameWhenDragStarted.position.x + + thisObject.container.parentContainer.frame.width = point.x + + /* This is equivalent to getRateFromPointAtContainer, but as we do not have a container anymore because we already change it, we do it like this. */ + point = coordinateSystemWhenDragStarted.unInverseTransform(point, parentFrameWhenDragStarted.width) + let newMaxDate = point.x + + switch (whatHappened) { + case 'left mouse button': { + coordinateSystem.max.x = newMaxDate.valueOf() + coordinateSystem.maxWidth = thisObject.container.parentContainer.frame.width + coordinateSystem.recalculateScale() + break + } + case 'left mouse button + SHIFT': { + coordinateSystem.maxWidth = thisObject.container.parentContainer.frame.width + coordinateSystem.recalculateScale() + break + } + } + thisObject.container.parentContainer.eventHandler.raiseEvent('Dimmensions Changed', event) + break + } } - thisObject.container.parentContainer.frame.position.x = parentFrameWhenDragStarted.position.x + dragVectorWhenDragStarted.x - snapPointToGrid(thisObject.container.parentContainer.frame.position) - thisObject.container.parentContainer.frame.width = parentFrameWhenDragStarted.width + (parentFrameWhenDragStarted.position.x - thisObject.container.parentContainer.frame.position.x) - - let point = { - x: (thisObject.container.parentContainer.frame.position.x - parentFrameWhenDragStarted.position.x), - y: 0 + function snapPointToGrid(point) { + point.x = snapScalarToGrid(point.x) + point.y = snapScalarToGrid(point.y) } - /* This is equivalent to getDateFromPointAtContainer, but as we do not have a container anymore because we already change it, we do it like this. */ - point = coordinateSystemWhenDragStarted.unInverseTransform(point, parentFrameWhenDragStarted.width) - let newMinDate = point.x - - switch (whatHappened) { - case 'left mouse button': { - coordinateSystem.min.x = newMinDate.valueOf() - coordinateSystem.maxWidth = thisObject.container.parentContainer.frame.width - coordinateSystem.recalculateScale() - break - } - case 'left mouse button + SHIFT': { - coordinateSystem.maxWidth = thisObject.container.parentContainer.frame.width - coordinateSystem.recalculateScale() - break - } + function snapScalarToGrid(scalar) { + let sign + if (scalar < 0) { + sign = -1 + } else { + sign = 1 + } + const GRID_SIZE = 10 + return Math.trunc(scalar / GRID_SIZE) * GRID_SIZE + GRID_SIZE / 2 * sign } - thisObject.container.parentContainer.eventHandler.raiseEvent('Dimmensions Changed', event) - break - } - case 'right' : { - dragVectorWhenDragStarted.y = 0 + } - let newWidth = dragVectorWhenDragStarted.x + parentFrameWhenDragStarted.width - if (newWidth < MIN_WIDTH && dragVectorWhenDragStarted.x < 0) { - dragVectorWhenDragStarted.x = MIN_WIDTH - parentFrameWhenDragStarted.width + function drawForeground() { + let MARGIN = 1 + let edgeSize + let lineWidth + + if (whereIsMouseOver === 'outside' || thisObject.isMouseOver === false) { + edgeSize = 2 + lineWidth = 0.1 + } else { + edgeSize = EDGE_SIZE + lineWidth = 0.5 } - let point = { - x: dragVectorWhenDragStarted.x + parentFrameWhenDragStarted.width + parentFrameWhenDragStarted.position.x, - y: 0 + const OPACITY = 1 + + pointA1 = { + x: 0, + y: 0 } - snapPointToGrid(point) - point.x = point.x - parentFrameWhenDragStarted.position.x - thisObject.container.parentContainer.frame.width = point.x - - /* This is equivalent to getRateFromPointAtContainer, but as we do not have a container anymore because we already change it, we do it like this. */ - point = coordinateSystemWhenDragStarted.unInverseTransform(point, parentFrameWhenDragStarted.width) - let newMaxDate = point.x - - switch (whatHappened) { - case 'left mouse button': { - coordinateSystem.max.x = newMaxDate.valueOf() - coordinateSystem.maxWidth = thisObject.container.parentContainer.frame.width - coordinateSystem.recalculateScale() - break - } - case 'left mouse button + SHIFT': { - coordinateSystem.maxWidth = thisObject.container.parentContainer.frame.width - coordinateSystem.recalculateScale() - break - } + pointA2 = { + x: thisObject.container.frame.width, + y: 0 + } + + pointA3 = { + x: thisObject.container.frame.width, + y: thisObject.container.frame.height + } + + pointA4 = { + x: 0, + y: thisObject.container.frame.height + } + + pointB1 = { + x: 0, + y: 0 + } + + pointB2 = { + x: thisObject.container.frame.width, + y: 0 + } + + pointB3 = { + x: thisObject.container.frame.width, + y: thisObject.container.frame.height + } + + pointB4 = { + x: 0, + y: thisObject.container.frame.height + } + + pointA1 = transformThisPoint(pointA1, thisObject.container) + pointA2 = transformThisPoint(pointA2, thisObject.container) + pointA3 = transformThisPoint(pointA3, thisObject.container) + pointA4 = transformThisPoint(pointA4, thisObject.container) + + pointB1 = transformThisPoint(pointB1, thisObject.container) + pointB2 = transformThisPoint(pointB2, thisObject.container) + pointB3 = transformThisPoint(pointB3, thisObject.container) + pointB4 = transformThisPoint(pointB4, thisObject.container) + + pointA1 = { + x: pointA1.x - MARGIN, + y: pointA1.y - MARGIN + } + + pointA2 = { + x: pointA2.x + MARGIN, + y: pointA2.y - MARGIN + } + + pointA3 = { + x: pointA3.x + MARGIN, + y: pointA3.y + MARGIN + } + + pointA4 = { + x: pointA4.x - MARGIN, + y: pointA4.y + MARGIN + } + + pointB1 = { + x: pointB1.x - edgeSize, + y: pointB1.y - edgeSize + } + + pointB2 = { + x: pointB2.x + edgeSize, + y: pointB2.y - edgeSize + } + + pointB3 = { + x: pointB3.x + edgeSize, + y: pointB3.y + edgeSize + } + + pointB4 = { + x: pointB4.x - edgeSize, + y: pointB4.y + edgeSize + } + + pointA1 = canvas.chartingSpace.viewport.fitIntoViewport(pointA1) + pointA2 = canvas.chartingSpace.viewport.fitIntoViewport(pointA2) + pointA3 = canvas.chartingSpace.viewport.fitIntoViewport(pointA3) + pointA4 = canvas.chartingSpace.viewport.fitIntoViewport(pointA4) + + pointB1 = canvas.chartingSpace.viewport.fitIntoViewport(pointB1) + pointB2 = canvas.chartingSpace.viewport.fitIntoViewport(pointB2) + pointB3 = canvas.chartingSpace.viewport.fitIntoViewport(pointB3) + pointB4 = canvas.chartingSpace.viewport.fitIntoViewport(pointB4) + + browserCanvasContext.setLineDash([0, 0]) + + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(pointA1.x, pointA1.y) + browserCanvasContext.lineTo(pointA2.x, pointA2.y) + browserCanvasContext.lineTo(pointB2.x, pointB2.y) + browserCanvasContext.lineTo(pointB1.x, pointB1.y) + browserCanvasContext.lineTo(pointA1.x, pointA1.y) + browserCanvasContext.closePath() + + drawEdge('top') + + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(pointA2.x, pointA2.y) + browserCanvasContext.lineTo(pointA3.x, pointA3.y) + browserCanvasContext.lineTo(pointB3.x, pointB3.y) + browserCanvasContext.lineTo(pointB2.x, pointB2.y) + browserCanvasContext.lineTo(pointA2.x, pointA2.y) + browserCanvasContext.closePath() + + drawEdge('right') + + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(pointA3.x, pointA3.y) + browserCanvasContext.lineTo(pointA4.x, pointA4.y) + browserCanvasContext.lineTo(pointB4.x, pointB4.y) + browserCanvasContext.lineTo(pointB3.x, pointB3.y) + browserCanvasContext.lineTo(pointA3.x, pointA3.y) + browserCanvasContext.closePath() + + drawEdge('bottom') + + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(pointA4.x, pointA4.y) + browserCanvasContext.lineTo(pointA1.x, pointA1.y) + browserCanvasContext.lineTo(pointB1.x, pointB1.y) + browserCanvasContext.lineTo(pointB4.x, pointB4.y) + browserCanvasContext.lineTo(pointA4.x, pointA4.y) + browserCanvasContext.closePath() + + drawEdge('left') + + function drawEdge(edgeType) { + if (whereIsMouseOver === edgeType && thisObject.isMouseOver === true) { + browserCanvasContext.lineWidth = lineWidth + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + OPACITY + ')' + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + OPACITY + ')' + } else { + browserCanvasContext.lineWidth = lineWidth + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + OPACITY + ')' + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.DARK_TURQUOISE + ', ' + OPACITY + ')' + } + browserCanvasContext.fill() + browserCanvasContext.stroke() } - thisObject.container.parentContainer.eventHandler.raiseEvent('Dimmensions Changed', event) - break - } } - - function snapPointToGrid (point) { - point.x = snapScalarToGrid(point.x) - point.y = snapScalarToGrid(point.y) - } - - function snapScalarToGrid (scalar) { - let sign - if (scalar < 0) { - sign = -1 - } else { - sign = 1 - } - const GRID_SIZE = 10 - return Math.trunc(scalar / GRID_SIZE) * GRID_SIZE + GRID_SIZE / 2 * sign - } - } - - function drawForeground () { - let MARGIN = 1 - let edgeSize - let lineWidth - - if (whereIsMouseOver === 'outside' || thisObject.isMouseOver === false) { - edgeSize = 2 - lineWidth = 0.1 - } else { - edgeSize = EDGE_SIZE - lineWidth = 0.5 - } - - const OPACITY = 1 - - pointA1 = { - x: 0, - y: 0 - } - - pointA2 = { - x: thisObject.container.frame.width, - y: 0 - } - - pointA3 = { - x: thisObject.container.frame.width, - y: thisObject.container.frame.height - } - - pointA4 = { - x: 0, - y: thisObject.container.frame.height - } - - pointB1 = { - x: 0, - y: 0 - } - - pointB2 = { - x: thisObject.container.frame.width, - y: 0 - } - - pointB3 = { - x: thisObject.container.frame.width, - y: thisObject.container.frame.height - } - - pointB4 = { - x: 0, - y: thisObject.container.frame.height - } - - pointA1 = transformThisPoint(pointA1, thisObject.container) - pointA2 = transformThisPoint(pointA2, thisObject.container) - pointA3 = transformThisPoint(pointA3, thisObject.container) - pointA4 = transformThisPoint(pointA4, thisObject.container) - - pointB1 = transformThisPoint(pointB1, thisObject.container) - pointB2 = transformThisPoint(pointB2, thisObject.container) - pointB3 = transformThisPoint(pointB3, thisObject.container) - pointB4 = transformThisPoint(pointB4, thisObject.container) - - pointA1 = { - x: pointA1.x - MARGIN, - y: pointA1.y - MARGIN - } - - pointA2 = { - x: pointA2.x + MARGIN, - y: pointA2.y - MARGIN - } - - pointA3 = { - x: pointA3.x + MARGIN, - y: pointA3.y + MARGIN - } - - pointA4 = { - x: pointA4.x - MARGIN, - y: pointA4.y + MARGIN - } - - pointB1 = { - x: pointB1.x - edgeSize, - y: pointB1.y - edgeSize - } - - pointB2 = { - x: pointB2.x + edgeSize, - y: pointB2.y - edgeSize - } - - pointB3 = { - x: pointB3.x + edgeSize, - y: pointB3.y + edgeSize - } - - pointB4 = { - x: pointB4.x - edgeSize, - y: pointB4.y + edgeSize - } - - pointA1 = canvas.chartingSpace.viewport.fitIntoViewport(pointA1) - pointA2 = canvas.chartingSpace.viewport.fitIntoViewport(pointA2) - pointA3 = canvas.chartingSpace.viewport.fitIntoViewport(pointA3) - pointA4 = canvas.chartingSpace.viewport.fitIntoViewport(pointA4) - - pointB1 = canvas.chartingSpace.viewport.fitIntoViewport(pointB1) - pointB2 = canvas.chartingSpace.viewport.fitIntoViewport(pointB2) - pointB3 = canvas.chartingSpace.viewport.fitIntoViewport(pointB3) - pointB4 = canvas.chartingSpace.viewport.fitIntoViewport(pointB4) - - browserCanvasContext.setLineDash([0, 0]) - - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(pointA1.x, pointA1.y) - browserCanvasContext.lineTo(pointA2.x, pointA2.y) - browserCanvasContext.lineTo(pointB2.x, pointB2.y) - browserCanvasContext.lineTo(pointB1.x, pointB1.y) - browserCanvasContext.lineTo(pointA1.x, pointA1.y) - browserCanvasContext.closePath() - - drawEdge('top') - - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(pointA2.x, pointA2.y) - browserCanvasContext.lineTo(pointA3.x, pointA3.y) - browserCanvasContext.lineTo(pointB3.x, pointB3.y) - browserCanvasContext.lineTo(pointB2.x, pointB2.y) - browserCanvasContext.lineTo(pointA2.x, pointA2.y) - browserCanvasContext.closePath() - - drawEdge('right') - - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(pointA3.x, pointA3.y) - browserCanvasContext.lineTo(pointA4.x, pointA4.y) - browserCanvasContext.lineTo(pointB4.x, pointB4.y) - browserCanvasContext.lineTo(pointB3.x, pointB3.y) - browserCanvasContext.lineTo(pointA3.x, pointA3.y) - browserCanvasContext.closePath() - - drawEdge('bottom') - - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(pointA4.x, pointA4.y) - browserCanvasContext.lineTo(pointA1.x, pointA1.y) - browserCanvasContext.lineTo(pointB1.x, pointB1.y) - browserCanvasContext.lineTo(pointB4.x, pointB4.y) - browserCanvasContext.lineTo(pointA4.x, pointA4.y) - browserCanvasContext.closePath() - - drawEdge('left') - - function drawEdge (edgeType) { - if (whereIsMouseOver === edgeType && thisObject.isMouseOver === true) { - browserCanvasContext.lineWidth = lineWidth - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + OPACITY + ')' - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + OPACITY + ')' - } else { - browserCanvasContext.lineWidth = lineWidth - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + OPACITY + ')' - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.DARK_TURQUOISE + ', ' + OPACITY + ')' - } - browserCanvasContext.fill() - browserCanvasContext.stroke() - } - } } diff --git a/CanvasApp/ChartingSpace/PlottersManager.js b/CanvasApp/ChartingSpace/PlottersManager.js index a0002b6fa..aaf872484 100644 --- a/CanvasApp/ChartingSpace/PlottersManager.js +++ b/CanvasApp/ChartingSpace/PlottersManager.js @@ -1,326 +1,492 @@ -function newPlottersManager () { - const MODULE_NAME = 'Plotters Manager' - const ERROR_LOG = true - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME +function newPlottersManager() { + const MODULE_NAME = 'Plotters Manager' + const ERROR_LOG = true + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME - let timeFrame = INITIAL_TIME_PERIOD - let datetime = NEW_SESSION_INITIAL_DATE + let timeFrame = INITIAL_TIME_PERIOD + let datetime = NEW_SESSION_INITIAL_DATE - let thisObject = { - fitFunction: undefined, - container: undefined, - payload: undefined, - connectors: [], - setDatetime: setDatetime, - setTimeFrame: setTimeFrame, - setCoordinateSystem: setCoordinateSystem, - draw: draw, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - } - - thisObject.connectors = [] - - let initializationReady = false - let layersPanel - let onLayerStatusChangedEventSuscriptionId - let coordinateSystem - - setupContainer() - return thisObject - - function setupContainer () { - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) - } - - function finalize () { - layersPanel.container.eventHandler.stopListening(onLayerStatusChangedEventSuscriptionId) - layersPanel = undefined - - for (let i = 0; i < thisObject.connectors.length; i++) { - let connector = thisObject.connectors[i] - /* Then the panels. */ - for (let j = 0; j < connector.panels.length; j++) { - canvas.panelsSpace.destroyPanel(connector.panels[j]) - connector.panels[j] = undefined - } - connector.panels = undefined - - /* Finalize the plotters */ - if (connector.plotter.finalize !== undefined) { - connector.plotter.container.eventHandler.stopListening(connector.plotter.onRecordChangeEventsSubscriptionId) - connector.plotter.finalize() - } - connector.plotter = undefined - - /* Finally the Storage Objects */ - finalizeStorage(connector.storage) - connector.storage = undefined - - connector = undefined + let thisObject = { + fitFunction: undefined, + container: undefined, + payload: undefined, + connectors: [], + setDatetime: setDatetime, + setTimeFrame: setTimeFrame, + setCoordinateSystem: setCoordinateSystem, + draw: draw, + getContainer: getContainer, + initialize: initialize, + finalize: finalize } + thisObject.connectors = [] - coordinateSystem = undefined - thisObject.container.finalize() - thisObject.container = undefined - thisObject.payload = undefined - } + let initializationReady = false + let layersPanel + let onLayerStatusChangedEventSuscriptionId + let coordinateSystem - function finalizeStorage (storage) { - storage.eventHandler.stopListening(storage.onMarketFileLoadedLayerEventsSubscriptionId) - storage.eventHandler.stopListening(storage.onDailyFileLoadedLayerEventsSubscriptionId) - storage.eventHandler.stopListening(storage.onSingleFileLoadedLayerEventsSubscriptionId) - storage.eventHandler.stopListening(storage.onFileSequenceLoadedLayerEventsSubscriptionId) - storage.eventHandler.stopListening(storage.onDailyFileLoadedPlotterEventsSubscriptionId) - storage.finalize() - } + setupContainer() + return thisObject - function initialize (pLayersPanel) { - /* Remember this */ - layersPanel = pLayersPanel + function setupContainer() { + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) + } - /* Listen to the event of change of status */ - onLayerStatusChangedEventSuscriptionId = layersPanel.container.eventHandler.listenToEvent('Layer Status Changed', onLayerStatusChanged) - } + function finalize() { + layersPanel.container.eventHandler.stopListening(onLayerStatusChangedEventSuscriptionId) + layersPanel = undefined - function initializePlotter (layer) { - try { - /* Before Initializing a Plotter, we need the Storage it will use, loaded with the files it will initially need. */ - let storage = newProductStorage(layer.payload.node.id) - - /* - Before Initializing the Storage, we will put the Layer to listen to the events the storage will raise every time a file is loaded, - so that the UI can somehow show this. There are different types of events. - */ - for (let i = 0; i < layer.definition.referenceParent.referenceParent.datasets.length; i++) { - let dataset = layer.definition.referenceParent.referenceParent.datasets[i] - - switch (dataset.code.type) { - case 'Market Files': { - storage.onMarketFileLoadedLayerEventsSubscriptionId = storage.eventHandler.listenToEvent('Market File Loaded', layer.onMarketFileLoaded) - } - break - case 'Daily Files': { - storage.onDailyFileLoadedLayerEventsSubscriptionId = storage.eventHandler.listenToEvent('Daily File Loaded', layer.onDailyFileLoaded) - } - break - case 'Single File': { - storage.onSingleFileLoadedLayerEventsSubscriptionId = storage.eventHandler.listenToEvent('Single File Loaded', layer.onSingleFileLoaded) - } - break - case 'File Sequence': { - storage.onFileSequenceLoadedLayerEventsSubscriptionId = storage.eventHandler.listenToEvent('File Sequence Loaded', layer.onFileSequenceLoaded) - } - break - default: { - if (ERROR_LOG === true) { - logger.write('[ERROR] initializePlotter -> Dataset Type Incorrect or Undefined -> dataset.type = ' + dataset.type) + for (let i = 0; i < thisObject.connectors.length; i++) { + let connector = thisObject.connectors[i] + /* Then the panels. */ + for (let j = 0; j < connector.panels.length; j++) { + canvas.panelsSpace.destroyPanel(connector.panels[j]) + connector.panels[j] = undefined } - return - } + connector.panels = undefined + + /* Finalize the plotters */ + if (connector.plotter.finalize !== undefined) { + connector.plotter.container.eventHandler.stopListening(connector.plotter.onRecordChangeEventsSubscriptionId) + connector.plotter.finalize() + } + connector.plotter = undefined + + /* Finally the Storage Objects */ + finalizeStorage(connector.storage) + connector.storage = undefined + + connector = undefined } - } + thisObject.connectors = [] + coordinateSystem = undefined - let baseAsset = layer.definition.referenceParent.parentNode.referenceParent.baseAsset.referenceParent.code.codeName - let quotedAsset = layer.definition.referenceParent.parentNode.referenceParent.quotedAsset.referenceParent.code.codeName - let market = { - baseAsset: baseAsset, - quotedAsset: quotedAsset - } - let product = layer.definition.referenceParent.referenceParent - let bot = layer.definition.referenceParent.referenceParent.parentNode - let dataMine = layer.definition.referenceParent.referenceParent.parentNode.parentNode - let exchange = layer.definition.referenceParent.parentNode.referenceParent.parentNode.parentNode - let plotterModule = layer.definition.referenceParent.referenceParent.referenceParent - let session + thisObject.container.finalize() + thisObject.container = undefined + thisObject.payload = undefined + } - if (layer.definition.referenceParent.parentNode.parentNode !== undefined) { - if (layer.definition.referenceParent.parentNode.parentNode.type === 'Session Reference') { - if (layer.definition.referenceParent.parentNode.parentNode.referenceParent !== undefined) { - session = layer.definition.referenceParent.parentNode.parentNode.referenceParent - } - } - } + function finalizeStorage(storage) { + storage.eventHandler.stopListening(storage.onMarketFileLoadedLayerEventsSubscriptionId) + storage.eventHandler.stopListening(storage.onDailyFileLoadedLayerEventsSubscriptionId) + storage.eventHandler.stopListening(storage.onSingleFileLoadedLayerEventsSubscriptionId) + storage.eventHandler.stopListening(storage.onFileSequenceLoadedLayerEventsSubscriptionId) + storage.eventHandler.stopListening(storage.onDailyFileLoadedPlotterEventsSubscriptionId) + storage.finalize() + } - let host = layer.networkNode.code.host - let webPort = layer.networkNode.code.webPort - if (host === undefined) { host = 'localhost' } - if (webPort === undefined) { webPort = window.location.port } + function initialize(pLayersPanel) { + /* Remember this */ + layersPanel = pLayersPanel - let eventsServerClient = canvas.designSpace.workspace.eventsServerClients.get(layer.networkNode.id) + /* Listen to the event of change of status */ + onLayerStatusChangedEventSuscriptionId = layersPanel.container.eventHandler.listenToEvent('Layer Status Changed', onLayerStatusChanged) + } - storage.initialize( - dataMine, - bot, - session, - product, - exchange, - market, - datetime, - timeFrame, - host, - webPort, - eventsServerClient, - onProductStorageInitialized - ) - - function onProductStorageInitialized (err) { + function initializePlotter(layer) { try { - if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { - /* Now we have all the initial data loaded and ready to be delivered to the new instance of the plotter. */ - let plotter + /* Before Initializing a Plotter, we need the Storage it will use, loaded with the files it will initially need. */ + let storage = newProductStorage(layer.payload.node.id) - if (plotterModule.code.isLegacy !== true) { - plotter = newPlotter() - } else { - plotter = getNewPlotter(dataMine.code.codeName, plotterModule.parentNode.code.codeName, plotterModule.code.codeName) + /* + Before Initializing the Storage, we will put the Layer to listen to the events the storage will raise every time a file is loaded, + so that the UI can somehow show this. There are different types of events. + */ + for (let i = 0; i < layer.definition.referenceParent.referenceParent.datasets.length; i++) { + let dataset = layer.definition.referenceParent.referenceParent.datasets[i] + + switch (dataset.config.type) { + case 'Market Files': { + storage.onMarketFileLoadedLayerEventsSubscriptionId = storage.eventHandler.listenToEvent('Market File Loaded', layer.onMarketFileLoaded) + } + break + case 'Daily Files': { + storage.onDailyFileLoadedLayerEventsSubscriptionId = storage.eventHandler.listenToEvent('Daily File Loaded', layer.onDailyFileLoaded) + } + break + case 'Single File': { + storage.onSingleFileLoadedLayerEventsSubscriptionId = storage.eventHandler.listenToEvent('Single File Loaded', layer.onSingleFileLoaded) + } + break + case 'File Sequence': { + storage.onFileSequenceLoadedLayerEventsSubscriptionId = storage.eventHandler.listenToEvent('File Sequence Loaded', layer.onFileSequenceLoaded) + } + break + default: { + if (ERROR_LOG === true) { + logger.write('[ERROR] initializePlotter -> Dataset Type Incorrect or Undefined -> dataset.type = ' + dataset.type) + } + return + } + } } - plotter.container.connectToParent(thisObject.container, true, true, false, true, true, true, false, false, true) - plotter.container.frame.position.x = thisObject.container.frame.width / 2 - plotter.container.frame.width / 2 - plotter.container.frame.position.y = thisObject.container.frame.height / 2 - plotter.container.frame.height / 2 - plotter.fitFunction = thisObject.fitFunction - plotter.initialize(storage, datetime, timeFrame, coordinateSystem, onPlotterInizialized, product) + let baseAsset = layer.baseAsset.config.codeName + let quotedAsset = layer.quotedAsset.config.codeName + let market = { + baseAsset: baseAsset, + quotedAsset: quotedAsset + } + let productDefinition = layer.productDefinition + let bot = layer.bot + let dataMine = layer.dataMine + let exchange = layer.exchange + let plotterModule = layer.plotterModule + let session + let tradingSystem + let tradingEngine - function onPlotterInizialized () { - try { - let connector = { - layer: layer, - plotter: plotter, - storage: storage + /* + A layer can be referencing a Data Product in two different branches of the Network hiriatchy. + In one of those braches we can get the Session node, at the other we Cannot. + */ + let sessionReference = findNodeInNodeMesh(layer.definition, 'Session Reference', undefined, false, true, true, true) + + if (sessionReference !== undefined) { + session = sessionReference.referenceParent + if (session === undefined) { + logger.write('[ERROR] initializePlotter -> Sessioin is Undefined at Session Reference -> Plotter will not be loaded. ') + return } - /* Let the Plotter listen to the event of Cursor Files loaded, so that it can react recalculating if needed. */ - plotter.onDailyFileLoadedPlotterEventsSubscriptionId = storage.eventHandler.listenToEvent('Daily File Loaded', plotter.onDailyFileLoaded) - /* Lets load now this plotter panels. */ - connector.panels = [] + /* From the session we might be able to reach the Trading System or the Trading Engine */ + if (session.tradingSystemReference !== undefined) { + tradingSystem = session.tradingSystemReference.referenceParent + } + if (session.tradingEngineReference !== undefined) { + tradingEngine = session.tradingEngineReference.referenceParent + } + } - if (product !== undefined) { - for (let i = 0; i < plotterModule.panels.length; i++) { - let panel = plotterModule.panels[i] + let host = layer.networkNode.config.host + let webPort = layer.networkNode.config.webPort + if (host === undefined) { host = 'localhost' } + if (webPort === undefined) { webPort = window.location.port } - let parameters = { - dataMine: dataMine.code.codeName, - plotterCodeName: plotterModule.parentNode.code.codeName, - moduleCodeName: plotterModule.code.codeName, - panelNode: panel + let eventsServerClient = canvas.designSpace.workspace.eventsServerClients.get(layer.networkNode.id) + + storage.initialize( + dataMine, + bot, + session, + productDefinition, + exchange, + market, + datetime, + timeFrame, + host, + webPort, + eventsServerClient, + onProductStorageInitialized + ) + + function onProductStorageInitialized(err) { + if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { + /* Now we have all the initial data loaded and ready to be delivered to the new instance of the plotter. */ + let plotter + + if (plotterModule.config.isLegacy !== true) { + plotter = newPlotter() + } else { + plotter = getNewPlotter(dataMine.config.codeName, plotterModule.parentNode.config.codeName, plotterModule.config.codeName) } - let owner = thisObject.payload.node.payload.parentNode.id // Panels are owned by the time machine. - let plotterPanelHandle = canvas.panelsSpace.createNewPanel('Plotter Panel', parameters, owner, layer.session) - let plotterPanel = canvas.panelsSpace.getPanel(plotterPanelHandle) + plotter.container.connectToParent(thisObject.container, true, true, false, true, true, true, false, false, true) + plotter.container.frame.position.x = thisObject.container.frame.width / 2 - plotter.container.frame.width / 2 + plotter.container.frame.position.y = thisObject.container.frame.height / 2 - plotter.container.frame.height / 2 + plotter.fitFunction = thisObject.fitFunction + plotter.initialize(storage, datetime, timeFrame, coordinateSystem, onPlotterInizialized, productDefinition) - /* Connect Panel to the Plotter via an Event. */ - connector.plotter.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', plotterPanel.onRecordChange) - connector.panels.push(plotterPanelHandle) - } + function onPlotterInizialized() { + let connector = { + layer: layer, + plotter: plotter, + storage: storage + } + /* Let the Plotter listen to the event of Cursor Files loaded, so that it can react recalculating if needed. */ + plotter.onDailyFileLoadedPlotterEventsSubscriptionId = storage.eventHandler.listenToEvent('Daily File Loaded', plotter.onDailyFileLoaded) + /* Lets load now this plotter panels. */ + connector.panels = [] - connector.layer.panels = connector.panels + if (productDefinition !== undefined) { + /* Here we setup the panels associated with this plotter */ + for (let i = 0; i < plotterModule.panels.length; i++) { + let panel = plotterModule.panels[i] + + let parameters = { + dataMine: dataMine.config.codeName, + plotterCodeName: plotterModule.parentNode.config.codeName, + moduleCodeName: plotterModule.config.codeName, + panelNode: panel + } + + let owner = thisObject.payload.node.payload.parentNode.id // Panels are owned by the time machine. + let plotterPanelHandle = canvas.panelsSpace.createNewPanel('Plotter Panel', parameters, owner, layer.session) + let plotterPanel = canvas.panelsSpace.getPanel(plotterPanelHandle) + + /* Connect Panel to the Plotter via an Event. */ + connector.plotter.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', plotterPanel.onRecordChange) + connector.panels.push(plotterPanelHandle) + } + connector.layer.panels = connector.panels + + /* + Next we will check the different types of Plotting related to connecting to an existing node branch. + */ + if (plotterModule.nodesHighlights !== undefined && plotterModule.config.connectTo !== undefined) { + connector.nodesHighlights = newNodesHighlights() + switch (plotterModule.config.connectTo) { + case 'Trading System': + connector.nodesHighlights.initialize(tradingSystem) + break + case 'Trading Engine': + connector.nodesHighlights.initialize(tradingEngine) + break + } + connector.nodesHighlights.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.nodesHighlights.onRecordChange) + } + if (plotterModule.nodesValues !== undefined && plotterModule.config.connectTo !== undefined) { + connector.nodesValues = newNodesValues() + switch (plotterModule.config.connectTo) { + case 'Trading System': + connector.nodesValues.initialize(tradingSystem) + break + case 'Trading Engine': + connector.nodesValues.initialize(tradingEngine) + break + } + connector.nodesValues.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.nodesValues.onRecordChange) + } + if (plotterModule.nodesErrors !== undefined && plotterModule.config.connectTo !== undefined) { + connector.nodesErrors = newNodesErrors() + switch (plotterModule.config.connectTo) { + case 'Trading System': + connector.nodesErrors.initialize(tradingSystem) + break + case 'Trading Engine': + connector.nodesErrors.initialize(tradingEngine) + break + } + connector.nodesErrors.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.nodesErrors.onRecordChange) + } + if (plotterModule.nodesWarnings !== undefined && plotterModule.config.connectTo !== undefined) { + connector.nodesWarnings = newNodesWarnings() + switch (plotterModule.config.connectTo) { + case 'Trading System': + connector.nodesWarnings.initialize(tradingSystem) + break + case 'Trading Engine': + connector.nodesWarnings.initialize(tradingEngine) + break + } + connector.nodesWarnings.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.nodesWarnings.onRecordChange) + } + if (plotterModule.nodesInfos !== undefined && plotterModule.config.connectTo !== undefined) { + connector.nodesInfos = newNodesInfos() + switch (plotterModule.config.connectTo) { + case 'Trading System': + connector.nodesInfos.initialize(tradingSystem) + break + case 'Trading Engine': + connector.nodesInfos.initialize(tradingEngine) + break + } + connector.nodesInfos.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.nodesInfos.onRecordChange) + } + if (plotterModule.nodesRunning !== undefined && plotterModule.config.connectTo !== undefined) { + connector.nodesRunning = newNodesRunning() + switch (plotterModule.config.connectTo) { + case 'Trading System': + connector.nodesRunning.initialize(tradingSystem) + break + case 'Trading Engine': + connector.nodesRunning.initialize(tradingEngine) + break + } + connector.nodesRunning.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.nodesRunning.onRecordChange) + } + if (plotterModule.nodesStatus !== undefined && plotterModule.config.connectTo !== undefined) { + connector.nodesStatus = newNodesStatus() + switch (plotterModule.config.connectTo) { + case 'Trading System': + connector.nodesStatus.initialize(tradingSystem) + break + case 'Trading Engine': + connector.nodesStatus.initialize(tradingEngine) + break + } + connector.nodesStatus.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.nodesStatus.onRecordChange) + } + if (plotterModule.nodesProgress !== undefined && plotterModule.config.connectTo !== undefined) { + connector.nodesProgress = newNodesProgress() + switch (plotterModule.config.connectTo) { + case 'Trading System': + connector.nodesProgress.initialize(tradingSystem) + break + case 'Trading Engine': + connector.nodesProgress.initialize(tradingEngine) + break + } + connector.nodesProgress.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.nodesProgress.onRecordChange) + } + if (plotterModule.nodesAnnouncements !== undefined && plotterModule.config.connectTo !== undefined) { + connector.nodesAnnounements = newNodesAnnouncements() + switch (plotterModule.config.connectTo) { + case 'Trading System': + connector.nodesAnnounements.initialize(tradingSystem) + break + case 'Trading Engine': + connector.nodesAnnounements.initialize(tradingEngine) + break + } + connector.nodesAnnounements.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.nodesAnnounements.onRecordChange) + } + /* + Another type of plotting is with Record Values. This method uses the record definition to find the target node + and from there is looks into its children all based on the Record Definition configuration. + */ + if (plotterModule.recordValues !== undefined) { + connector.recordValues = newRecordValues() + connector.recordValues.initialize(tradingSystem, tradingEngine, productDefinition) + connector.recordValues.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.recordValues.onRecordChange) + } + } + thisObject.connectors.push(connector) + } } - - thisObject.connectors.push(connector) - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] initializePlotter -> onProductStorageInitialized -> onPlotterInizialized -> err = ' + err.stack) } - } } - } } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] initializePlotter -> onProductStorageInitialized -> err = ' + err.stack) } + if (ERROR_LOG === true) { logger.write('[ERROR] initializePlotter -> err = ' + err.stack) } } - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] initializePlotter -> err = ' + err.stack) } } - } - function onLayerStatusChanged (layer) { - if (layer.status === LAYER_STATUS.LOADING) { + function onLayerStatusChanged(layer) { + if (layer.status === LAYER_STATUS.LOADING) { /* Lets see if we can find the Plotter of this card on our Active Plotters list, other wise we will initialize it */ - let found = false - for (let i = 0; i < thisObject.connectors.length; i++) { - let connector = thisObject.connectors[i] - if (connector.layer.payload.node.id === layer.payload.node.id) { - found = true - } - } - if (found === false) { - initializePlotter(layer, onProductPlotterInitialized) - function onProductPlotterInitialized (err) { + let found = false + for (let i = 0; i < thisObject.connectors.length; i++) { + let connector = thisObject.connectors[i] + if (connector.layer.payload.node.id === layer.payload.node.id) { + found = true + } + } + if (found === false) { + initializePlotter(layer, onProductPlotterInitialized) + function onProductPlotterInitialized(err) { /* There is no policy yet of what to do if this fails. */ + } + } } - } - } - if (layer.status === LAYER_STATUS.OFF) { - /* If the plotter of this card is not on our Active Plotters list, then we remove it. */ - for (let i = 0; i < thisObject.connectors.length; i++) { - let connector = thisObject.connectors[i] - if (connector.layer.payload.node.id === layer.payload.node.id) { + if (layer.status === LAYER_STATUS.OFF) { + /* If the plotter of this card is not on our Active Plotters list, then we remove it. */ + for (let i = 0; i < thisObject.connectors.length; i++) { + let connector = thisObject.connectors[i] + if (connector.layer.payload.node.id === layer.payload.node.id) { /* Then the panels. */ - for (let j = 0; j < connector.panels.length; j++) { - canvas.panelsSpace.destroyPanel(connector.panels[j]) - } + for (let j = 0; j < connector.panels.length; j++) { + canvas.panelsSpace.destroyPanel(connector.panels[j]) + } /* Finally the Storage Objects */ - - if (connector.plotter.finalize !== undefined) { - connector.plotter.container.eventHandler.stopListening(connector.plotter.onRecordChangeEventsSubscriptionId) - connector.plotter.container.finalize() - connector.plotter.finalize() - } - finalizeStorage(connector.storage) - thisObject.connectors.splice(i, 1) // Delete item from array. - return // We already found the product woth changes and processed it. + finalizeNodesPlotting(connector) + if (connector.plotter.finalize !== undefined) { + connector.plotter.container.eventHandler.stopListening(connector.plotter.onRecordChangeEventsSubscriptionId) + connector.plotter.container.finalize() + connector.plotter.finalize() + } + finalizeStorage(connector.storage) + thisObject.connectors.splice(i, 1) // Delete item from array. + return // We already found the product woth changes and processed it. + } + } } - } } - } - function setTimeFrame (pTimeFrame) { - timeFrame = pTimeFrame - for (let i = 0; i < thisObject.connectors.length; i++) { - let connector = thisObject.connectors[i] - connector.layer.setTimeFrame(timeFrame) - connector.storage.setTimeFrame(timeFrame) - connector.plotter.setTimeFrame(timeFrame) + function finalizeNodesPlotting(connector) { + if (connector.nodesHighlights !== undefined) { + connector.plotter.container.eventHandler.stopListening(connector.nodesHighlights.onRecordChangeEventsSubscriptionId) + connector.nodesHighlights.finalize() + } + if (connector.nodesValues !== undefined) { + connector.plotter.container.eventHandler.stopListening(connector.nodesValues.onRecordChangeEventsSubscriptionId) + connector.nodesValues.finalize() + } + if (connector.nodesErrors !== undefined) { + connector.plotter.container.eventHandler.stopListening(connector.nodesErrors.onRecordChangeEventsSubscriptionId) + connector.nodesErrors.finalize() + } + if (connector.nodesWarnings !== undefined) { + connector.plotter.container.eventHandler.stopListening(connector.nodesWarnings.onRecordChangeEventsSubscriptionId) + connector.nodesWarnings.finalize() + } + if (connector.nodesInfos !== undefined) { + connector.plotter.container.eventHandler.stopListening(connector.nodesInfos.onRecordChangeEventsSubscriptionId) + connector.nodesInfos.finalize() + } + if (connector.nodesStatus !== undefined) { + connector.plotter.container.eventHandler.stopListening(connector.nodesStatus.onRecordChangeEventsSubscriptionId) + connector.nodesStatus.finalize() + } + if (connector.nodesProgress !== undefined) { + connector.plotter.container.eventHandler.stopListening(connector.Progress.onRecordChangeEventsSubscriptionId) + connector.Progress.finalize() + } + if (connector.nodesRunning !== undefined) { + connector.plotter.container.eventHandler.stopListening(connector.nodesRunning.onRecordChangeEventsSubscriptionId) + connector.nodesRunning.finalize() + } + if (connector.recordValues !== undefined) { + connector.plotter.container.eventHandler.stopListening(connector.recordValues.onRecordChangeEventsSubscriptionId) + connector.recordValues.finalize() + } } - } - function setDatetime (pDatetime) { - datetime = pDatetime - for (let i = 0; i < thisObject.connectors.length; i++) { - let connector = thisObject.connectors[i] - connector.layer.setDatetime(pDatetime) - connector.storage.setDatetime(pDatetime) - connector.plotter.setDatetime(pDatetime) + function setTimeFrame(pTimeFrame) { + timeFrame = pTimeFrame + for (let i = 0; i < thisObject.connectors.length; i++) { + let connector = thisObject.connectors[i] + connector.layer.setTimeFrame(timeFrame) + connector.storage.setTimeFrame(timeFrame) + connector.plotter.setTimeFrame(timeFrame) + } } - } - function setCoordinateSystem (pCoordinateSystem) { - coordinateSystem = pCoordinateSystem - for (let i = 0; i < thisObject.connectors.length; i++) { - let connector = thisObject.connectors[i] - connector.plotter.setCoordinateSystem(coordinateSystem) + function setDatetime(pDatetime) { + datetime = pDatetime + for (let i = 0; i < thisObject.connectors.length; i++) { + let connector = thisObject.connectors[i] + connector.layer.setDatetime(pDatetime) + connector.storage.setDatetime(pDatetime) + connector.plotter.setDatetime(pDatetime) + } } - } - function getContainer (point) { - } + function setCoordinateSystem(pCoordinateSystem) { + coordinateSystem = pCoordinateSystem + for (let i = 0; i < thisObject.connectors.length; i++) { + let connector = thisObject.connectors[i] + connector.plotter.setCoordinateSystem(coordinateSystem) + } + } - function draw () { - if (thisObject.connectors === undefined) { return } // We need to wait + function getContainer(point) { + } + + function draw() { + if (thisObject.connectors === undefined) { return } // We need to wait /* First the Product Plotters. */ - let maxElementsPlotted = 0 - for (let i = 0; i < thisObject.connectors.length; i++) { - let connector = thisObject.connectors[thisObject.connectors.length - i - 1] - let elementsPlotted = connector.plotter.draw() - if (elementsPlotted !== undefined) { - if (elementsPlotted > maxElementsPlotted) { - maxElementsPlotted = elementsPlotted + let maxElementsPlotted = 0 + for (let i = 0; i < thisObject.connectors.length; i++) { + let connector = thisObject.connectors[thisObject.connectors.length - i - 1] + let elementsPlotted = connector.plotter.draw() + if (elementsPlotted !== undefined) { + if (elementsPlotted > maxElementsPlotted) { + maxElementsPlotted = elementsPlotted + } + } } - } + return maxElementsPlotted } - return maxElementsPlotted - } } diff --git a/CanvasApp/ChartingSpace/TimeMachine.js b/CanvasApp/ChartingSpace/TimeMachine.js index ab252f437..5ca3031da 100644 --- a/CanvasApp/ChartingSpace/TimeMachine.js +++ b/CanvasApp/ChartingSpace/TimeMachine.js @@ -9,814 +9,827 @@ each one with it own timelineCharts, and each one positioned at an especific poi */ -function newTimeMachine () { - const MODULE_NAME = 'Time Machine' - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME +function newTimeMachine() { + const MODULE_NAME = 'Time Machine' + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME - let timeFrame = INITIAL_TIME_PERIOD + let timeFrame = INITIAL_TIME_PERIOD - let thisObject = { - container: undefined, - timeScale: undefined, - rateScale: undefined, - payload: undefined, - edgeEditor: undefined, - onFocus: undefined, - onKeyPressed: onKeyPressed, - timelineCharts: [], - fitFunction: fitFunction, - physics: physics, - draw: draw, - drawBackground: drawBackground, - drawForeground: drawForeground, - getContainer: getContainer, // returns the inner most container that holds the point received by parameter. - initialize: initialize, - finalize: finalize - } - - let timeMachineCoordinateSystem = newCoordinateSystem() - timeMachineCoordinateSystem.name = 'TIME MACHINE' - - let mouse = { - position: { - x: 0, - y: 0 - } - } - - let tabAnimation = 0 - let tabAnimationStatus = 'Close' - let tabAnimationCounter = 0 - let wasOnFocus = false - let drawScales = false - let syncWithDesignerLoop = 0 - let timelineChartsMap = new Map() - - let onMouseOverEventSuscriptionId - let onMouseNotOverEventSuscriptionId - let timeScaleMouseOverEventSuscriptionId - let rateScaleMouseOverEventSuscriptionId - let timeFrameScaleEventSuscriptionId - let timeFrameScaleMouseOverEventSuscriptionId - let onScaleChangedEventSubscriptionId - - setupContainer() - return thisObject - - function setupContainer () { - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) - thisObject.container.fitFunction = thisObject.fitFunction - thisObject.container.isDraggeable = false - thisObject.container.insideViewport = true - thisObject.container.detectMouseOver = true - - thisObject.container.frame.width = browserCanvas.width / TIME_MACHINE_WIDTH - thisObject.container.frame.height = (browserCanvas.height - TOP_SPACE_HEIGHT - COCKPIT_SPACE_HEIGHT) / TIME_MACHINE_HEIGHT - } - - function finalize () { - timeMachineCoordinateSystem.eventHandler.stopListening(onScaleChangedEventSubscriptionId) - - if (thisObject.timeScale !== undefined) { - finalizeTimeScale() + let thisObject = { + container: undefined, + timeScale: undefined, + rateScale: undefined, + payload: undefined, + edgeEditor: undefined, + onFocus: undefined, + onKeyPressed: onKeyPressed, + timelineCharts: [], + fitFunction: fitFunction, + physics: physics, + draw: draw, + drawBackground: drawBackground, + drawForeground: drawForeground, + getContainer: getContainer, // returns the inner most container that holds the point received by parameter. + initialize: initialize, + finalize: finalize } - if (thisObject.rateScale !== undefined) { - finalizeRateScale() + let timeMachineCoordinateSystem = newCoordinateSystem() + timeMachineCoordinateSystem.name = 'TIME MACHINE' + + let mouse = { + position: { + x: 0, + y: 0 + } } - if (thisObject.timeFrameScale !== undefined) { - finalizeTimeFrameScale() + let tabAnimation = 0 + let tabAnimationStatus = 'Close' + let tabAnimationCounter = 0 + let wasOnFocus = false + let drawScales = false + let syncWithDesignerLoop = 0 + let timelineChartsMap = new Map() + + let onMouseOverEventSuscriptionId + let onMouseNotOverEventSuscriptionId + let timeScaleMouseOverEventSuscriptionId + let rateScaleMouseOverEventSuscriptionId + let timeFrameScaleEventSuscriptionId + let timeFrameScaleMouseOverEventSuscriptionId + let onScaleChangedEventSubscriptionId + + setupContainer() + return thisObject + + function setupContainer() { + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) + thisObject.container.fitFunction = thisObject.fitFunction + thisObject.container.isDraggeable = false + thisObject.container.insideViewport = true + thisObject.container.detectMouseOver = true + + thisObject.container.frame.width = browserCanvas.width / TIME_MACHINE_WIDTH + thisObject.container.frame.height = (browserCanvas.height - TOP_SPACE_HEIGHT - COCKPIT_SPACE_HEIGHT) / TIME_MACHINE_HEIGHT } - thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId) - thisObject.container.eventHandler.stopListening(onMouseNotOverEventSuscriptionId) + function finalize() { + timeMachineCoordinateSystem.eventHandler.stopListening(onScaleChangedEventSubscriptionId) - for (let i = 0; i < thisObject.timelineCharts.length; i++) { - let timelineChart = thisObject.timelineCharts[i] - timelineChart.container.eventHandler.stopListening(timelineChart.onChildrenMouseOverEventSuscriptionId) - timelineChart.finalize() - } + if (thisObject.timeScale !== undefined) { + finalizeTimeScale() + } - thisObject.timelineCharts = undefined - thisObject.fitFunction = undefined - thisObject.container.finalize() - thisObject.container = undefined - thisObject.payload = undefined - thisObject.edgeEditor = undefined + if (thisObject.rateScale !== undefined) { + finalizeRateScale() + } - mouse = undefined - timelineChartsMap = undefined + if (thisObject.timeFrameScale !== undefined) { + finalizeTimeFrameScale() + } - timeMachineCoordinateSystem.finalize() - timeMachineCoordinateSystem = undefined - } + thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId) + thisObject.container.eventHandler.stopListening(onMouseNotOverEventSuscriptionId) - function finalizeTimeScale () { - if (thisObject.timeScale === undefined) { return } - - thisObject.timeScale.container.eventHandler.stopListening(timeScaleMouseOverEventSuscriptionId) - thisObject.timeScale.finalize() - thisObject.timeScale = undefined - } - - function finalizeRateScale () { - if (thisObject.rateScale === undefined) { return } - - thisObject.rateScale.container.eventHandler.stopListening(rateScaleMouseOverEventSuscriptionId) - thisObject.rateScale.finalize() - thisObject.rateScale = undefined - } - - function finalizeTimeFrameScale () { - if (thisObject.timeFrameScale === undefined) { return } - - thisObject.timeFrameScale.container.eventHandler.stopListening(timeFrameScaleEventSuscriptionId) - thisObject.timeFrameScale.container.eventHandler.stopListening(timeFrameScaleMouseOverEventSuscriptionId) - thisObject.timeFrameScale.finalize() - thisObject.timeFrameScale = undefined - } - - function initialize (callBackFunction) { - timeFrame = INITIAL_TIME_PERIOD - loadFrame(thisObject.payload, thisObject.container.frame) - saveFrame(thisObject.payload, thisObject.container.frame) - - recalculateCoordinateSystem() - recalculateCurrentDatetime() - - onMouseOverEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) - onMouseNotOverEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) - onScaleChangedEventSubscriptionId = timeMachineCoordinateSystem.eventHandler.listenToEvent('Scale Changed', onScaleChanged) - - thisObject.edgeEditor = newEdgeEditor() - thisObject.edgeEditor.initialize(timeMachineCoordinateSystem) - thisObject.edgeEditor.container.connectToParent(thisObject.container, true, true, false, true, true, true) - - callBackFunction() - } - - function onKeyPressed (event) { - thisObject.edgeEditor.onKeyPressed(event) - } - - function onMouseOver (event) { - drawScales = true - - mouse.position.x = event.x - mouse.position.y = event.y - - if (thisObject.timeScale !== undefined) { - thisObject.timeScale.onMouseOverSomeTimeMachineContainer(event) - } - if (thisObject.rateScale !== undefined) { - thisObject.rateScale.onMouseOverSomeTimeMachineContainer(event) - } - if (thisObject.timeFrameScale !== undefined) { - thisObject.timeFrameScale.onMouseOverSomeTimeMachineContainer(event) - } - } - - function onMouseNotOver (event) { - drawScales = false - - if (thisObject.timeScale !== undefined) { - thisObject.timeScale.visible = false - } - if (thisObject.rateScale !== undefined) { - thisObject.rateScale.visible = false - } - if (thisObject.timeFrameScale !== undefined) { - thisObject.timeFrameScale.visible = false - } - } - - function initializeTimeScale () { - thisObject.timeScale = newTimeScale() - thisObject.timeScale.fitFunction = thisObject.fitFunction - thisObject.timeScale.payload = thisObject.payload.node.timeScale.payload - - timeScaleMouseOverEventSuscriptionId = thisObject.timeScale.container.eventHandler.listenToEvent('onMouseOverScale', timeScaleMouseOver) - thisObject.timeScale.initialize(timeMachineCoordinateSystem, thisObject.container) - - function timeScaleMouseOver (event) { - thisObject.container.eventHandler.raiseEvent('onMouseOver', event) - } - } - - function initializeRateScale () { - thisObject.rateScale = newRateScale() - thisObject.rateScale.fitFunction = thisObject.fitFunction - thisObject.rateScale.payload = thisObject.payload.node.rateScale.payload - - rateScaleMouseOverEventSuscriptionId = thisObject.rateScale.container.eventHandler.listenToEvent('onMouseOverScale', rateScaleMouseOver) - thisObject.rateScale.initialize(timeMachineCoordinateSystem, thisObject.container, thisObject.container) - - function rateScaleMouseOver (event) { - thisObject.container.eventHandler.raiseEvent('onMouseOver', event) - } - } - - function initializeTimeFrameScale () { - thisObject.timeFrameScale = newTimeFrameScale() - thisObject.timeFrameScale.fitFunction = thisObject.fitFunction - thisObject.timeFrameScale.payload = thisObject.payload.node.timeFrameScale.payload - - timeFrameScaleEventSuscriptionId = thisObject.timeFrameScale.container.eventHandler.listenToEvent('Time Frame Value Changed', timeFrameScaleValueChanged) - timeFrameScaleMouseOverEventSuscriptionId = thisObject.timeFrameScale.container.eventHandler.listenToEvent('onMouseOverScale', timeFrameScaleMouseOver) - thisObject.timeFrameScale.initialize(thisObject.container) - - function timeFrameScaleValueChanged (event) { - let currentTimeFrame = timeFrame - timeFrame = event.timeFrame - if (timeFrame !== currentTimeFrame) { for (let i = 0; i < thisObject.timelineCharts.length; i++) { - let timelineChart = thisObject.timelineCharts[i] - timelineChart.upstreamTimeFrame = timeFrame - if (timelineChart.timeFrameScale === undefined) { - timelineChart.setTimeFrame(timeFrame) - } + let timelineChart = thisObject.timelineCharts[i] + timelineChart.container.eventHandler.stopListening(timelineChart.onChildrenMouseOverEventSuscriptionId) + timelineChart.finalize() } - } - } - function timeFrameScaleMouseOver (event) { - thisObject.container.eventHandler.raiseEvent('onMouseOver', event) - } - } - function getContainer (point, purpose) { - let container + thisObject.timelineCharts = undefined + thisObject.fitFunction = undefined + thisObject.container.finalize() + thisObject.container = undefined + thisObject.payload = undefined + thisObject.edgeEditor = undefined - if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) { - container = thisObject.rateScale.getContainer(point, purpose) - if (container !== undefined) { - if (container.isForThisPurpose(purpose)) { - return container - } else { - if (purpose === GET_CONTAINER_PURPOSE.DRAGGING && container.isClickeable === true) { - return container - } + mouse = undefined + timelineChartsMap = undefined + + timeMachineCoordinateSystem.finalize() + timeMachineCoordinateSystem = undefined + } + + function finalizeTimeScale() { + if (thisObject.timeScale === undefined) { return } + + thisObject.timeScale.container.eventHandler.stopListening(timeScaleMouseOverEventSuscriptionId) + thisObject.timeScale.finalize() + thisObject.timeScale = undefined + } + + function finalizeRateScale() { + if (thisObject.rateScale === undefined) { return } + + thisObject.rateScale.container.eventHandler.stopListening(rateScaleMouseOverEventSuscriptionId) + thisObject.rateScale.finalize() + thisObject.rateScale = undefined + } + + function finalizeTimeFrameScale() { + if (thisObject.timeFrameScale === undefined) { return } + + thisObject.timeFrameScale.container.eventHandler.stopListening(timeFrameScaleEventSuscriptionId) + thisObject.timeFrameScale.container.eventHandler.stopListening(timeFrameScaleMouseOverEventSuscriptionId) + thisObject.timeFrameScale.finalize() + thisObject.timeFrameScale = undefined + } + + function initialize(callBackFunction) { + timeFrame = INITIAL_TIME_PERIOD + loadFrame(thisObject.payload, thisObject.container.frame) + setInitialPosition() + saveFrame(thisObject.payload, thisObject.container.frame) + + recalculateCoordinateSystem() + recalculateCurrentDatetime() + + onMouseOverEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) + onMouseNotOverEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) + onScaleChangedEventSubscriptionId = timeMachineCoordinateSystem.eventHandler.listenToEvent('Scale Changed', onScaleChanged) + + thisObject.edgeEditor = newEdgeEditor() + thisObject.edgeEditor.initialize(timeMachineCoordinateSystem) + thisObject.edgeEditor.container.connectToParent(thisObject.container, true, true, false, true, true, true) + + callBackFunction() + } + + function setInitialPosition() { + + if (thisObject.container.frame.position.x === 0 && thisObject.container.frame.position.y === 0) { + let timeMachineIndex = findChildIndexAtParentNode(thisObject.payload.node) + let dashboardIndex = findChildIndexAtParentNode(thisObject.payload.parentNode) + + thisObject.container.frame.position.x = thisObject.container.frame.width * timeMachineIndex * 2 + thisObject.container.frame.position.y = thisObject.container.frame.height * dashboardIndex * 2 + } + } + + function onKeyPressed(event) { + thisObject.edgeEditor.onKeyPressed(event) + } + + function onMouseOver(event) { + drawScales = true + + mouse.position.x = event.x + mouse.position.y = event.y + + if (thisObject.timeScale !== undefined) { + thisObject.timeScale.onMouseOverSomeTimeMachineContainer(event) } - } - } - - if (thisObject.timeScale !== undefined && thisObject.timeScale.isVisible === true) { - container = thisObject.timeScale.getContainer(point, purpose) - if (container !== undefined) { - if (container.isForThisPurpose(purpose)) { - return container - } else { - if (purpose === GET_CONTAINER_PURPOSE.DRAGGING && container.isClickeable === true) { - return container - } + if (thisObject.rateScale !== undefined) { + thisObject.rateScale.onMouseOverSomeTimeMachineContainer(event) } - } - } - - if (thisObject.timeFrameScale !== undefined && thisObject.timeFrameScale.isVisible === true) { - container = thisObject.timeFrameScale.getContainer(point, purpose) - if (container !== undefined) { - if (container.isForThisPurpose(purpose)) { - return container + if (thisObject.timeFrameScale !== undefined) { + thisObject.timeFrameScale.onMouseOverSomeTimeMachineContainer(event) } - } } - for (let i = 0; i < thisObject.timelineCharts.length; i++) { - container = thisObject.timelineCharts[i].getContainer(point, purpose) - if (container !== undefined) { - if (container.isForThisPurpose(purpose)) { - if (thisObject.container.frame.isThisPointHere(point) === true) { - return container - } - } else { - if (purpose === GET_CONTAINER_PURPOSE.DRAGGING && container.isClickeable === true) { - if (thisObject.container.frame.isThisPointHere(point) === true) { - return container + function onMouseNotOver(event) { + drawScales = false + + if (thisObject.timeScale !== undefined) { + thisObject.timeScale.visible = false + } + if (thisObject.rateScale !== undefined) { + thisObject.rateScale.visible = false + } + if (thisObject.timeFrameScale !== undefined) { + thisObject.timeFrameScale.visible = false + } + } + + function initializeTimeScale() { + thisObject.timeScale = newTimeScale() + thisObject.timeScale.fitFunction = thisObject.fitFunction + thisObject.timeScale.payload = thisObject.payload.node.timeScale.payload + + timeScaleMouseOverEventSuscriptionId = thisObject.timeScale.container.eventHandler.listenToEvent('onMouseOverScale', timeScaleMouseOver) + thisObject.timeScale.initialize(timeMachineCoordinateSystem, thisObject.container) + + function timeScaleMouseOver(event) { + thisObject.container.eventHandler.raiseEvent('onMouseOver', event) + } + } + + function initializeRateScale() { + thisObject.rateScale = newRateScale() + thisObject.rateScale.fitFunction = thisObject.fitFunction + thisObject.rateScale.payload = thisObject.payload.node.rateScale.payload + + rateScaleMouseOverEventSuscriptionId = thisObject.rateScale.container.eventHandler.listenToEvent('onMouseOverScale', rateScaleMouseOver) + thisObject.rateScale.initialize(timeMachineCoordinateSystem, thisObject.container, thisObject.container) + + function rateScaleMouseOver(event) { + thisObject.container.eventHandler.raiseEvent('onMouseOver', event) + } + } + + function initializeTimeFrameScale() { + thisObject.timeFrameScale = newTimeFrameScale() + thisObject.timeFrameScale.fitFunction = thisObject.fitFunction + thisObject.timeFrameScale.payload = thisObject.payload.node.timeFrameScale.payload + + timeFrameScaleEventSuscriptionId = thisObject.timeFrameScale.container.eventHandler.listenToEvent('Time Frame Value Changed', timeFrameScaleValueChanged) + timeFrameScaleMouseOverEventSuscriptionId = thisObject.timeFrameScale.container.eventHandler.listenToEvent('onMouseOverScale', timeFrameScaleMouseOver) + thisObject.timeFrameScale.initialize(thisObject.container) + + function timeFrameScaleValueChanged(event) { + let currentTimeFrame = timeFrame + timeFrame = event.timeFrame + if (timeFrame !== currentTimeFrame) { + for (let i = 0; i < thisObject.timelineCharts.length; i++) { + let timelineChart = thisObject.timelineCharts[i] + timelineChart.upstreamTimeFrame = timeFrame + if (timelineChart.timeFrameScale === undefined) { + timelineChart.setTimeFrame(timeFrame) + } + } } - } } - } - } - - container = thisObject.edgeEditor.getContainer(point, purpose) - if (container !== undefined) { - return container - } else { - if (thisObject.container.isForThisPurpose(purpose)) { - if (thisObject.container.frame.isThisPointHere(point) === true) { - return thisObject.container + function timeFrameScaleMouseOver(event) { + thisObject.container.eventHandler.raiseEvent('onMouseOver', event) } - } - } - } - - function onScaleChanged () { - recalculateCurrentDatetime() - } - - function recalculateCurrentDatetime () { - let center = { - x: thisObject.container.frame.width / 2, - y: thisObject.container.frame.height / 2 } - datetime = new Date(getDateFromPointAtContainer(center, thisObject.container, timeMachineCoordinateSystem)) + function getContainer(point, purpose) { + let container - for (let i = 0; i < thisObject.timelineCharts.length; i++) { - let timelineChart = thisObject.timelineCharts[i] - timelineChart.setDatetime(datetime) - } - } - - function fitFunction (point, fullVisible, margin, topMargin, bottomMargin) { - /* We prevent a point to be out of the container AND out of the Charting Space in general */ - - let returnPoint = { - x: point.x, - y: point.y - } - - let upCorner = { - x: 0, - y: 0 - } - - let bottonCorner = { - x: thisObject.container.frame.width, - y: thisObject.container.frame.height - } - - upCorner = transformThisPoint(upCorner, thisObject.container) - bottonCorner = transformThisPoint(bottonCorner, thisObject.container) - - /* Checking against the container limits. */ - if (margin === undefined) { margin = 0 } - if (topMargin === undefined) { topMargin = 0 } - if (bottomMargin === undefined) { bottomMargin = 0 } - - if (returnPoint.x - margin < upCorner.x) { returnPoint.x = upCorner.x + margin } - if (returnPoint.x + margin > bottonCorner.x) { returnPoint.x = bottonCorner.x - margin } - if (returnPoint.y - margin - topMargin < upCorner.y) { returnPoint.y = upCorner.y + margin + topMargin } - if (returnPoint.y + margin + bottomMargin > bottonCorner.y) { returnPoint.y = bottonCorner.y - margin - bottomMargin } - - returnPoint = canvas.chartingSpace.fitFunction(returnPoint, fullVisible) - - return returnPoint - } - - function physics () { - thisObject.edgeEditor.physics() - timeMachineCoordinateSystem.physics() - - saveFrame(thisObject.payload, thisObject.container.frame) - if (thisObject.container.frame.isInViewPort()) { - childrenPhysics() - syncWithDesigner() - } - panelPhysics() - onFocusPhysics() - tabAnimationPhysics() - } - - function tabAnimationPhysics () { - const MAX_COUNTER_VALUE = 40 - const STEP = 10 - - if (wasOnFocus === true && thisObject.onFocus === false) { - tabAnimationStatus = 'Closing' - } - if (wasOnFocus === false && thisObject.onFocus === true) { - tabAnimationStatus = 'Opening' - } - - if (tabAnimationStatus === 'Closing') { - tabAnimationCounter = tabAnimationCounter - STEP - if (tabAnimationCounter <= 0) { - tabAnimationCounter = 0 - tabAnimationStatus = 'Closed' - } - } - if (tabAnimationStatus === 'Opening') { - tabAnimationCounter = tabAnimationCounter + STEP - if (tabAnimationCounter >= MAX_COUNTER_VALUE) { - tabAnimationCounter = MAX_COUNTER_VALUE - tabAnimationStatus = 'Open' - } - } - } - - function onFocusPhysics () { - wasOnFocus = thisObject.onFocus - if (thisObject.edgeEditor.isMouseOver === true) { - thisObject.onFocus = true - } else { - thisObject.onFocus = false - } - } - - function panelPhysics () { - if ( - thisObject.container.frame.isInViewPort() && - canvas.chartingSpace.viewport.zoomLevel >= ZOOM_OUT_THRESHOLD_FOR_NOT_HIDDING_PANELS) { - canvas.panelsSpace.unHide(thisObject.payload.node.id, 'Layers Panel') - canvas.panelsSpace.unHide(thisObject.payload.node.id, 'Plotter Panel') - return - } - - if ( - thisObject.container.frame.isCenterInViewPort() && - canvas.chartingSpace.viewport.zoomLevel >= ZOOM_OUT_THRESHOLD_FOR_HIDDING_PANELS - ) { - canvas.panelsSpace.unHide(thisObject.payload.node.id, 'Layers Panel') - canvas.panelsSpace.unHide(thisObject.payload.node.id, 'Plotter Panel') - } else { - canvas.panelsSpace.hide(thisObject.payload.node.id, 'Layers Panel') - canvas.panelsSpace.hide(thisObject.payload.node.id, 'Plotter Panel') - } - } - - function syncWithDesigner () { - syncWithDesignerTimelineCharts() - syncWithDesignerScales() - } - - function syncWithDesignerScales () { - if (thisObject.payload.node === undefined) { - finalizeTimeScale() - finalizeRateScale() - finalizeTimeFrameScale() - return - } - if (thisObject.payload.node.timeScale === undefined && thisObject.timeScale !== undefined) { - finalizeTimeScale() - } - if (thisObject.payload.node.timeScale !== undefined && thisObject.timeScale === undefined) { - initializeTimeScale() - } - if (thisObject.payload.node.rateScale === undefined && thisObject.rateScale !== undefined) { - finalizeRateScale() - } - if (thisObject.payload.node.rateScale !== undefined && thisObject.rateScale === undefined) { - initializeRateScale() - } - if (thisObject.payload.node.timeFrameScale === undefined && thisObject.timeFrameScale !== undefined) { - finalizeTimeFrameScale() - } - if (thisObject.payload.node.timeFrameScale !== undefined && thisObject.timeFrameScale === undefined) { - initializeTimeFrameScale() - } - } - - function syncWithDesignerTimelineCharts () { - syncWithDesignerLoop = syncWithDesignerLoop + 0.00000000001 - - for (let j = 0; j < thisObject.payload.node.timelineCharts.length; j++) { - let node = thisObject.payload.node.timelineCharts[j] - let timelineChart = timelineChartsMap.get(node.id) - if (timelineChart === undefined) { - /* The timeline timelineChart node is new, thus we need to initialize a new timelineChart */ - initializeTimelineChart(node, syncWithDesignerLoop) - } else { - /* The time machine already exists, we tag it as existing at the current loop. */ - timelineChart.syncWithDesignerLoop = syncWithDesignerLoop - } - } - - /* We check all the timeMachines we have to see if we need to remove any of them */ - for (let i = 0; i < thisObject.timelineCharts.length; i++) { - let timelineChart = thisObject.timelineCharts[i] - if (timelineChart.syncWithDesignerLoop < syncWithDesignerLoop) { - /* Must be removed */ - timelineChart.container.eventHandler.stopListening(timelineChart.onChildrenMouseOverEventSuscriptionId) - timelineChart.finalize() - timelineChartsMap.delete(timelineChart.nodeId) - thisObject.timelineCharts.splice(i, 1) - /* We remove one at the time */ - return - } - } - - function initializeTimelineChart (node, syncWithDesignerLoop) { - let timelineChart = newTimelineChart() - timelineChart.syncWithDesignerLoop = syncWithDesignerLoop - timelineChart.payload = node.payload - timelineChart.nodeId = node.id - timelineChartsMap.set(node.id, timelineChart) - timelineChart.payload.uiObject.setValue('Loading...') - - /* Setting up the new timeline timelineChart. */ - timelineChart.container.connectToParent(thisObject.container, true, true, false, true, true, true, false, false, true) - timelineChart.container.fitFunction = thisObject.container.fitFunction - timelineChart.fitFunction = thisObject.fitFunction - timelineChart.container.frame.width = thisObject.container.frame.width - timelineChart.container.frame.height = thisObject.container.frame.height - timelineChart.container.frame.position.x = 0 - timelineChart.container.frame.position.y = 0 - timelineChart.initialize(timeMachineCoordinateSystem, timeFrame) - - /* we will store the event suscription id as a property of the timelineChart, to avoid keeping it an a separate array */ - timelineChart.onChildrenMouseOverEventSuscriptionId = timelineChart.container.eventHandler.listenToEvent('onChildrenMouseOver', onChildrenMouseOver) - - thisObject.timelineCharts.push(timelineChart) - timelineChart.payload.uiObject.setValue('') - - function onChildrenMouseOver (event) { - thisObject.container.eventHandler.raiseEvent('onMouseOver', event) - } - } - } - - function childrenPhysics () { - if (thisObject.timeScale !== undefined) { - thisObject.timeScale.physics() - } - if (thisObject.rateScale !== undefined) { - thisObject.rateScale.physics() - } - if (thisObject.timeFrameScale !== undefined) { - thisObject.timeFrameScale.physics() - } - - for (let i = 0; i < thisObject.timelineCharts.length; i++) { - let timelineChart = thisObject.timelineCharts[i] - timelineChart.physics() - } - } - - function drawBackground () { - drawChartsBackground() - if (thisObject.container.frame.isInViewPort()) { - if (drawScales === true) { - if (thisObject.timeScale !== undefined && thisObject.timeScale.isVisible === true) { thisObject.timeScale.drawBackground() } - if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) { thisObject.rateScale.drawBackground() } - } - - let maxElementsPlotted = 0 - for (let i = 0; i < thisObject.timelineCharts.length; i++) { - let timelineChart = thisObject.timelineCharts[thisObject.timelineCharts.length - i - 1] - let elementsPlotted = timelineChart.drawBackground() - if (elementsPlotted !== undefined) { - if (elementsPlotted > maxElementsPlotted) { - maxElementsPlotted = elementsPlotted - } + if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) { + container = thisObject.rateScale.getContainer(point, purpose) + if (container !== undefined) { + if (container.isForThisPurpose(purpose)) { + return container + } else { + if (purpose === GET_CONTAINER_PURPOSE.DRAGGING && container.isClickeable === true) { + return container + } + } + } + } + + if (thisObject.timeScale !== undefined && thisObject.timeScale.isVisible === true) { + container = thisObject.timeScale.getContainer(point, purpose) + if (container !== undefined) { + if (container.isForThisPurpose(purpose)) { + return container + } else { + if (purpose === GET_CONTAINER_PURPOSE.DRAGGING && container.isClickeable === true) { + return container + } + } + } + } + + if (thisObject.timeFrameScale !== undefined && thisObject.timeFrameScale.isVisible === true) { + container = thisObject.timeFrameScale.getContainer(point, purpose) + if (container !== undefined) { + if (container.isForThisPurpose(purpose)) { + return container + } + } + } + + for (let i = 0; i < thisObject.timelineCharts.length; i++) { + container = thisObject.timelineCharts[i].getContainer(point, purpose) + if (container !== undefined) { + if (container.isForThisPurpose(purpose)) { + if (thisObject.container.frame.isThisPointHere(point) === true) { + return container + } + } else { + if (purpose === GET_CONTAINER_PURPOSE.DRAGGING && container.isClickeable === true) { + if (thisObject.container.frame.isThisPointHere(point) === true) { + return container + } + } + } + } + } + + container = thisObject.edgeEditor.getContainer(point, purpose) + if (container !== undefined) { + return container + } else { + if (thisObject.container.isForThisPurpose(purpose)) { + if (thisObject.container.frame.isThisPointHere(point) === true) { + return thisObject.container + } + } } - } - if (thisObject.timeFrameScale !== undefined) { - thisObject.timeFrameScale.adjustTimeFrame(maxElementsPlotted) - } } - } - function drawChartsBackground () { - drawContainerBackground(thisObject.container, UI_COLOR.WHITE, 0.5, thisObject.fitFunction) - } + function onScaleChanged() { + recalculateCurrentDatetime() + } - function draw () { - if (thisObject.payload === undefined) { return } - if (thisObject.payload.node === undefined) { return } - if (thisObject.container.frame.isInViewPort()) { - for (let i = 0; i < thisObject.timelineCharts.length; i++) { - let timelineChart = thisObject.timelineCharts[thisObject.timelineCharts.length - i - 1] - timelineChart.draw() - } + function recalculateCurrentDatetime() { + let center = { + x: thisObject.container.frame.width / 2, + y: thisObject.container.frame.height / 2 + } - if (drawScales === true) { - if (thisObject.timeScale !== undefined && thisObject.timeScale.isVisible === true) { thisObject.timeScale.draw() } - if (thisObject.timeFrameScale !== undefined && thisObject.timeFrameScale.isVisible === true) { thisObject.timeFrameScale.draw() } - if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) { thisObject.rateScale.draw() } - } - } else { - if (canvas.chartingSpace.viewport.zoomTargetLevel < ZOOM_OUT_THRESHOLD_FOR_DISPLAYING_TIME_MACHINES_ICONIZED) { + datetime = new Date(getDateFromPointAtContainer(center, thisObject.container, timeMachineCoordinateSystem)) + + for (let i = 0; i < thisObject.timelineCharts.length; i++) { + let timelineChart = thisObject.timelineCharts[i] + timelineChart.setDatetime(datetime) + } + } + + function fitFunction(point, fullVisible, margin, topMargin, bottomMargin) { + /* We prevent a point to be out of the container AND out of the Charting Space in general */ + + let returnPoint = { + x: point.x, + y: point.y + } + + let upCorner = { + x: 0, + y: 0 + } + + let bottonCorner = { + x: thisObject.container.frame.width, + y: thisObject.container.frame.height + } + + upCorner = transformThisPoint(upCorner, thisObject.container) + bottonCorner = transformThisPoint(bottonCorner, thisObject.container) + + /* Checking against the container limits. */ + if (margin === undefined) { margin = 0 } + if (topMargin === undefined) { topMargin = 0 } + if (bottomMargin === undefined) { bottomMargin = 0 } + + if (returnPoint.x - margin < upCorner.x) { returnPoint.x = upCorner.x + margin } + if (returnPoint.x + margin > bottonCorner.x) { returnPoint.x = bottonCorner.x - margin } + if (returnPoint.y - margin - topMargin < upCorner.y) { returnPoint.y = upCorner.y + margin + topMargin } + if (returnPoint.y + margin + bottomMargin > bottonCorner.y) { returnPoint.y = bottonCorner.y - margin - bottomMargin } + + returnPoint = canvas.chartingSpace.fitFunction(returnPoint, fullVisible) + + return returnPoint + } + + function physics() { + thisObject.edgeEditor.physics() + timeMachineCoordinateSystem.physics() + + saveFrame(thisObject.payload, thisObject.container.frame) + if (thisObject.container.frame.isInViewPort()) { + childrenPhysics() + syncWithDesigner() + } + panelPhysics() + onFocusPhysics() + tabAnimationPhysics() + } + + function tabAnimationPhysics() { + const MAX_COUNTER_VALUE = 40 + const STEP = 10 + + if (wasOnFocus === true && thisObject.onFocus === false) { + tabAnimationStatus = 'Closing' + } + if (wasOnFocus === false && thisObject.onFocus === true) { + tabAnimationStatus = 'Opening' + } + + if (tabAnimationStatus === 'Closing') { + tabAnimationCounter = tabAnimationCounter - STEP + if (tabAnimationCounter <= 0) { + tabAnimationCounter = 0 + tabAnimationStatus = 'Closed' + } + } + if (tabAnimationStatus === 'Opening') { + tabAnimationCounter = tabAnimationCounter + STEP + if (tabAnimationCounter >= MAX_COUNTER_VALUE) { + tabAnimationCounter = MAX_COUNTER_VALUE + tabAnimationStatus = 'Open' + } + } + } + + function onFocusPhysics() { + wasOnFocus = thisObject.onFocus + if (thisObject.edgeEditor.isMouseOver === true) { + thisObject.onFocus = true + } else { + thisObject.onFocus = false + } + } + + function panelPhysics() { + if ( + thisObject.container.frame.isInViewPort() && + canvas.chartingSpace.viewport.zoomLevel >= ZOOM_OUT_THRESHOLD_FOR_NOT_HIDDING_PANELS) { + canvas.panelsSpace.unHide(thisObject.payload.node.id, 'Layers Panel') + canvas.panelsSpace.unHide(thisObject.payload.node.id, 'Plotter Panel') + return + } + + if ( + thisObject.container.frame.isCenterInViewPort() && + canvas.chartingSpace.viewport.zoomLevel >= ZOOM_OUT_THRESHOLD_FOR_HIDDING_PANELS + ) { + canvas.panelsSpace.unHide(thisObject.payload.node.id, 'Layers Panel') + canvas.panelsSpace.unHide(thisObject.payload.node.id, 'Plotter Panel') + } else { + canvas.panelsSpace.hide(thisObject.payload.node.id, 'Layers Panel') + canvas.panelsSpace.hide(thisObject.payload.node.id, 'Plotter Panel') + } + } + + function syncWithDesigner() { + syncWithDesignerTimelineCharts() + syncWithDesignerScales() + } + + function syncWithDesignerScales() { + if (thisObject.payload.node === undefined) { + finalizeTimeScale() + finalizeRateScale() + finalizeTimeFrameScale() + return + } + if (thisObject.payload.node.timeScale === undefined && thisObject.timeScale !== undefined) { + finalizeTimeScale() + } + if (thisObject.payload.node.timeScale !== undefined && thisObject.timeScale === undefined) { + initializeTimeScale() + } + if (thisObject.payload.node.rateScale === undefined && thisObject.rateScale !== undefined) { + finalizeRateScale() + } + if (thisObject.payload.node.rateScale !== undefined && thisObject.rateScale === undefined) { + initializeRateScale() + } + if (thisObject.payload.node.timeFrameScale === undefined && thisObject.timeFrameScale !== undefined) { + finalizeTimeFrameScale() + } + if (thisObject.payload.node.timeFrameScale !== undefined && thisObject.timeFrameScale === undefined) { + initializeTimeFrameScale() + } + } + + function syncWithDesignerTimelineCharts() { + syncWithDesignerLoop = syncWithDesignerLoop + 0.00000000001 + + for (let j = 0; j < thisObject.payload.node.timelineCharts.length; j++) { + let node = thisObject.payload.node.timelineCharts[j] + let timelineChart = timelineChartsMap.get(node.id) + if (timelineChart === undefined) { + /* The timeline timelineChart node is new, thus we need to initialize a new timelineChart */ + initializeTimelineChart(node, syncWithDesignerLoop) + } else { + /* The time machine already exists, we tag it as existing at the current loop. */ + timelineChart.syncWithDesignerLoop = syncWithDesignerLoop + } + } + + /* We check all the timeMachines we have to see if we need to remove any of them */ + for (let i = 0; i < thisObject.timelineCharts.length; i++) { + let timelineChart = thisObject.timelineCharts[i] + if (timelineChart.syncWithDesignerLoop < syncWithDesignerLoop) { + /* Must be removed */ + timelineChart.container.eventHandler.stopListening(timelineChart.onChildrenMouseOverEventSuscriptionId) + timelineChart.finalize() + timelineChartsMap.delete(timelineChart.nodeId) + thisObject.timelineCharts.splice(i, 1) + /* We remove one at the time */ + return + } + } + + function initializeTimelineChart(node, syncWithDesignerLoop) { + let timelineChart = newTimelineChart() + timelineChart.syncWithDesignerLoop = syncWithDesignerLoop + timelineChart.payload = node.payload + timelineChart.nodeId = node.id + timelineChartsMap.set(node.id, timelineChart) + timelineChart.payload.uiObject.setValue('Loading...') + + /* Setting up the new timeline timelineChart. */ + timelineChart.container.connectToParent(thisObject.container, true, true, false, true, true, true, false, false, true) + timelineChart.container.fitFunction = thisObject.container.fitFunction + timelineChart.fitFunction = thisObject.fitFunction + timelineChart.container.frame.width = thisObject.container.frame.width + timelineChart.container.frame.height = thisObject.container.frame.height + timelineChart.container.frame.position.x = 0 + timelineChart.container.frame.position.y = 0 + timelineChart.initialize(timeMachineCoordinateSystem, timeFrame) + + /* we will store the event suscription id as a property of the timelineChart, to avoid keeping it an a separate array */ + timelineChart.onChildrenMouseOverEventSuscriptionId = timelineChart.container.eventHandler.listenToEvent('onChildrenMouseOver', onChildrenMouseOver) + + thisObject.timelineCharts.push(timelineChart) + timelineChart.payload.uiObject.setValue('') + + function onChildrenMouseOver(event) { + thisObject.container.eventHandler.raiseEvent('onMouseOver', event) + } + } + } + + function childrenPhysics() { + if (thisObject.timeScale !== undefined) { + thisObject.timeScale.physics() + } + if (thisObject.rateScale !== undefined) { + thisObject.rateScale.physics() + } + if (thisObject.timeFrameScale !== undefined) { + thisObject.timeFrameScale.physics() + } + + for (let i = 0; i < thisObject.timelineCharts.length; i++) { + let timelineChart = thisObject.timelineCharts[i] + timelineChart.physics() + } + } + + function drawBackground() { + drawChartsBackground() + if (thisObject.container.frame.isInViewPort()) { + if (drawScales === true) { + if (thisObject.timeScale !== undefined && thisObject.timeScale.isVisible === true) { thisObject.timeScale.drawBackground() } + if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) { thisObject.rateScale.drawBackground() } + } + + let maxElementsPlotted = 0 + for (let i = 0; i < thisObject.timelineCharts.length; i++) { + let timelineChart = thisObject.timelineCharts[thisObject.timelineCharts.length - i - 1] + let elementsPlotted = timelineChart.drawBackground() + if (elementsPlotted !== undefined) { + if (elementsPlotted > maxElementsPlotted) { + maxElementsPlotted = elementsPlotted + } + } + } + if (thisObject.timeFrameScale !== undefined) { + thisObject.timeFrameScale.adjustTimeFrame(maxElementsPlotted) + } + } + } + + function drawChartsBackground() { + drawContainerBackground(thisObject.container, UI_COLOR.WHITE, 0.5, thisObject.fitFunction) + } + + function draw() { + if (thisObject.payload === undefined) { return } + if (thisObject.payload.node === undefined) { return } + if (thisObject.container.frame.isInViewPort()) { + for (let i = 0; i < thisObject.timelineCharts.length; i++) { + let timelineChart = thisObject.timelineCharts[thisObject.timelineCharts.length - i - 1] + timelineChart.draw() + } + + if (drawScales === true) { + if (thisObject.timeScale !== undefined && thisObject.timeScale.isVisible === true) { thisObject.timeScale.draw() } + if (thisObject.timeFrameScale !== undefined && thisObject.timeFrameScale.isVisible === true) { thisObject.timeFrameScale.draw() } + if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) { thisObject.rateScale.draw() } + } + } else { + if (canvas.chartingSpace.viewport.zoomTargetLevel < ZOOM_OUT_THRESHOLD_FOR_DISPLAYING_TIME_MACHINES_ICONIZED) { + let icon = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.type) + if (icon !== undefined) { + if (icon.canDrawIcon === true) { + let imageSize = 40 + let imagePosition = { + x: thisObject.container.frame.width / 2, + y: thisObject.container.frame.height / 2 + } + + imagePosition = transformThisPoint(imagePosition, thisObject.container) + imagePosition = thisObject.fitFunction(imagePosition, true) + + browserCanvasContext.drawImage( + icon, + imagePosition.x - imageSize / 2, + imagePosition.y - imageSize / 2, + imageSize, + imageSize) + } + } + } + } + } + + function drawForeground() { + if (thisObject.container.frame.isInViewPort()) { + for (let i = 0; i < thisObject.timelineCharts.length; i++) { + let timelineChart = thisObject.timelineCharts[thisObject.timelineCharts.length - i - 1] + timelineChart.drawForeground() + } + + if (drawScales === true) { + if (thisObject.timeScale !== undefined && thisObject.timeScale.isVisible === true) { thisObject.timeScale.drawForeground() } + if (thisObject.timeFrameScale !== undefined && thisObject.timeFrameScale.isVisible === true) { thisObject.timeFrameScale.drawForeground() } + if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) { thisObject.rateScale.drawForeground() } + } + + drawLabel() + thisObject.edgeEditor.drawForeground() + } + } + + function drawLabel() { + if (thisObject.payload.node === undefined) { return } + if (thisObject.payload === undefined) { return } + /* Draw Title Above the Container */ + let position = { + x: 0, + y: 0 + } + let imageSize = 13 + let fontSize = 15 + let opacity = 1 let icon = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.type) + + position = transformThisPoint(position, thisObject.container) + + let label = thisObject.payload.node.name + let description = loadPropertyFromNodeConfig(thisObject.payload, 'description') + + if (description !== undefined) { + label = description + } + printLabel(label, position.x + 20, position.y - 10, opacity, fontSize) + if (icon !== undefined) { - if (icon.canDrawIcon === true) { - let imageSize = 40 - let imagePosition = { - x: thisObject.container.frame.width / 2, - y: thisObject.container.frame.height / 2 + if (icon.canDrawIcon === true) { + browserCanvasContext.drawImage( + icon, position.x + 5, + position.y - 22, + imageSize, + imageSize) + } + } + + imageSize = 13 + fontSize = 15 + let exchangeMarkets = new Map() + + for (let i = 0; i < thisObject.timelineCharts.length; i++) { + let timelinechart = thisObject.timelineCharts[i] + if (timelinechart.layersManager !== undefined) { + let layers = timelinechart.layersManager.layers + for (let j = 0; j < layers.length; j++) { + let layer = layers[j] + + exchangeMarket = { + exchangeName: layer.exchange.name, + marketName: layer.market, + exchangeIcon: layer.exchangeIcon, + baseAssetIcon: layer.baseAssetIcon, + quotedAssetIcon: layer.quotedAssetIcon + } + exchangeMarkets.set(exchangeMarket.exchangeName + '-' + exchangeMarket.marketName, exchangeMarket) + } + } + } + + drawTab(0, 0, exchangeMarkets.size * tabAnimationCounter, 90, thisObject.container) + + const INTER_EXCHANGE_SPACE = 60 + const INTER_MARKET_SPACE = -100 + + if (tabAnimationStatus === 'Open') { + drawMarketNames() + } + + function drawMarketNames() { + exchangeMarkets.forEach((exchangeMarket, i) => { + browserCanvasContext.save() + browserCanvasContext.translate(position.x, position.y) + browserCanvasContext.rotate(-Math.PI / 2) + + let xOffSet = -80 + + icon = exchangeMarket.exchangeIcon + + if (icon !== undefined) { + if (icon.canDrawIcon === true) { + browserCanvasContext.drawImage( + icon, + -20 + xOffSet, + -43, + imageSize, + imageSize) + } + } + + printLabel(exchangeMarket.exchangeName, -5 + xOffSet, -30, opacity, fontSize, UI_COLOR.GREY) + + position.x = position.x + INTER_EXCHANGE_SPACE + + icon = exchangeMarket.baseAssetIcon + if (icon !== undefined) { + if (icon.canDrawIcon === true) { + browserCanvasContext.drawImage( + icon, + -20 + xOffSet, + -22, + imageSize, + imageSize) + } + } + + printLabel(exchangeMarket.marketName, -5 + xOffSet, -10, opacity, fontSize, UI_COLOR.GREY) + + icon = exchangeMarket.quotedAssetIcon + if (icon !== undefined) { + if (icon.canDrawIcon === true) { + browserCanvasContext.drawImage( + icon, + +50 + xOffSet, + -22, + imageSize, + imageSize) + } + } + + position.x = position.x + INTER_MARKET_SPACE + + browserCanvasContext.restore() + }) + } + + function drawTab(x, y, width, height, container) { + const GRADIENT = 0 + const X_OFFSET = -3 + const Y_OFFSET = 13 + const TAB_CORNERS_RADIUS = 5 + + let point = { + x: x, + y: y + } + point = transformThisPoint(point, container) + + let point1 = { + x: point.x + X_OFFSET, + y: point.y + Y_OFFSET } - imagePosition = transformThisPoint(imagePosition, thisObject.container) - imagePosition = thisObject.fitFunction(imagePosition, true) + let point2 = { + x: point.x + X_OFFSET, + y: point.y + height + Y_OFFSET + } - browserCanvasContext.drawImage( - icon, - imagePosition.x - imageSize / 2, - imagePosition.y - imageSize / 2, - imageSize, - imageSize) - } + let point3 = { + x: point.x - width + X_OFFSET, + y: point.y + height - GRADIENT + Y_OFFSET + } + + let point4 = { + x: point.x - width + X_OFFSET, + y: point.y + GRADIENT + Y_OFFSET + } + + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(point1.x, point1.y) + browserCanvasContext.lineTo(point2.x, point2.y) + browserCanvasContext.lineTo(point3.x, point3.y) + browserCanvasContext.arc(point3.x, point3.y - TAB_CORNERS_RADIUS, TAB_CORNERS_RADIUS, 0.5 * Math.PI, 1.0 * Math.PI) + // browserCanvasContext.lineTo(point4.x, point4.y) + browserCanvasContext.arc(point4.x, point4.y + TAB_CORNERS_RADIUS, TAB_CORNERS_RADIUS, 1.0 * Math.PI, 1.5 * Math.PI) + browserCanvasContext.closePath() + browserCanvasContext.lineWidth = 1 + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + opacity + '' + browserCanvasContext.stroke() + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + opacity + '' + browserCanvasContext.fill() } - } - } - } - - function drawForeground () { - if (thisObject.container.frame.isInViewPort()) { - for (let i = 0; i < thisObject.timelineCharts.length; i++) { - let timelineChart = thisObject.timelineCharts[thisObject.timelineCharts.length - i - 1] - timelineChart.drawForeground() - } - - if (drawScales === true) { - if (thisObject.timeScale !== undefined && thisObject.timeScale.isVisible === true) { thisObject.timeScale.drawForeground() } - if (thisObject.timeFrameScale !== undefined && thisObject.timeFrameScale.isVisible === true) { thisObject.timeFrameScale.drawForeground() } - if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) { thisObject.rateScale.drawForeground() } - } - - drawLabel() - thisObject.edgeEditor.drawForeground() - } - } - - function drawLabel () { - if (thisObject.payload.node === undefined) { return } - if (thisObject.payload === undefined) { return } - /* Draw Title Above the Container */ - let position = { - x: 0, - y: 0 - } - let imageSize = 13 - let fontSize = 15 - let opacity = 1 - let icon = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.type) - - position = transformThisPoint(position, thisObject.container) - - let label = thisObject.payload.node.name - let description = loadPropertyFromNodeConfig(thisObject.payload, 'description') - - if (description !== undefined) { - label = description - } - printLabel(label, position.x + 20, position.y - 10, opacity, fontSize) - - if (icon !== undefined) { - if (icon.canDrawIcon === true) { - browserCanvasContext.drawImage( - icon, position.x + 5, - position.y - 22, - imageSize, - imageSize) - } } - imageSize = 13 - fontSize = 15 - let exchangeMarkets = new Map() - - for (let i = 0; i < thisObject.timelineCharts.length; i++) { - let timelinechart = thisObject.timelineCharts[i] - if (timelinechart.layersManager !== undefined) { - for (let j = 0; j < timelinechart.layersManager.layers.length; j++) { - let layer = timelinechart.layersManager.layers[j] - - exchangeMarket = { - exchangeName: layer.exchange.name, - marketName: layer.market, - exchangeIcon: layer.exchangeIcon, - baseAssetIcon: layer.baseAssetIcon, - quotedAssetIcon: layer.quotedAssetIcon - } - exchangeMarkets.set(exchangeMarket.exchangeName + '-' + exchangeMarket.marketName, exchangeMarket) - } - } - } - - drawTab(0, 0, exchangeMarkets.size * tabAnimationCounter, 90, thisObject.container) - - const INTER_EXCHANGE_SPACE = 60 - const INTER_MARKET_SPACE = -100 - - if (tabAnimationStatus === 'Open') { - drawMarketNames() - } - - function drawMarketNames () { - exchangeMarkets.forEach((exchangeMarket, i) => { - browserCanvasContext.save() - browserCanvasContext.translate(position.x, position.y) - browserCanvasContext.rotate(-Math.PI / 2) - - let xOffSet = -80 - - icon = exchangeMarket.exchangeIcon - - if (icon !== undefined) { - if (icon.canDrawIcon === true) { - browserCanvasContext.drawImage( - icon, - -20 + xOffSet, - -43, - imageSize, - imageSize) - } + function recalculateCoordinateSystem() { + let minValue = { + x: MIN_PLOTABLE_DATE.valueOf(), + y: 0 } - printLabel(exchangeMarket.exchangeName, -5 + xOffSet, -30, opacity, fontSize, UI_COLOR.GREY) - - position.x = position.x + INTER_EXCHANGE_SPACE - - icon = exchangeMarket.baseAssetIcon - if (icon !== undefined) { - if (icon.canDrawIcon === true) { - browserCanvasContext.drawImage( - icon, - -20 + xOffSet, - -22, - imageSize, - imageSize) - } + let maxValue = { + x: MAX_PLOTABLE_DATE.valueOf(), + y: nextPorwerOf10(MAX_DEFAULT_RATE_SCALE_VALUE) / 4 } - printLabel(exchangeMarket.marketName, -5 + xOffSet, -10, opacity, fontSize, UI_COLOR.GREY) - - icon = exchangeMarket.quotedAssetIcon - if (icon !== undefined) { - if (icon.canDrawIcon === true) { - browserCanvasContext.drawImage( - icon, - +50 + xOffSet, - -22, - imageSize, - imageSize) - } - } - - position.x = position.x + INTER_MARKET_SPACE - - browserCanvasContext.restore() - }) + timeMachineCoordinateSystem.initialize( + minValue, + maxValue, + thisObject.container.frame.width, + thisObject.container.frame.height + ) } - - function drawTab (x, y, width, height, container) { - const GRADIENT = 0 - const X_OFFSET = -3 - const Y_OFFSET = 13 - const TAB_CORNERS_RADIUS = 5 - - let point = { - x: x, - y: y - } - point = transformThisPoint(point, container) - - let point1 = { - x: point.x + X_OFFSET, - y: point.y + Y_OFFSET - } - - let point2 = { - x: point.x + X_OFFSET, - y: point.y + height + Y_OFFSET - } - - let point3 = { - x: point.x - width + X_OFFSET, - y: point.y + height - GRADIENT + Y_OFFSET - } - - let point4 = { - x: point.x - width + X_OFFSET, - y: point.y + GRADIENT + Y_OFFSET - } - - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(point1.x, point1.y) - browserCanvasContext.lineTo(point2.x, point2.y) - browserCanvasContext.lineTo(point3.x, point3.y) - browserCanvasContext.arc(point3.x, point3.y - TAB_CORNERS_RADIUS, TAB_CORNERS_RADIUS, 0.5 * Math.PI, 1.0 * Math.PI) - // browserCanvasContext.lineTo(point4.x, point4.y) - browserCanvasContext.arc(point4.x, point4.y + TAB_CORNERS_RADIUS, TAB_CORNERS_RADIUS, 1.0 * Math.PI, 1.5 * Math.PI) - browserCanvasContext.closePath() - browserCanvasContext.lineWidth = 1 - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + opacity + '' - browserCanvasContext.stroke() - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + opacity + '' - browserCanvasContext.fill() - } - } - - function recalculateCoordinateSystem () { - let minValue = { - x: MIN_PLOTABLE_DATE.valueOf(), - y: 0 - } - - let maxValue = { - x: MAX_PLOTABLE_DATE.valueOf(), - y: nextPorwerOf10(MAX_DEFAULT_RATE_SCALE_VALUE) / 4 - } - - timeMachineCoordinateSystem.initialize( - minValue, - maxValue, - thisObject.container.frame.width, - thisObject.container.frame.height - ) - } } diff --git a/CanvasApp/ChartingSpace/TimelineChart.js b/CanvasApp/ChartingSpace/TimelineChart.js index d270d7b9f..fffa40ad0 100644 --- a/CanvasApp/ChartingSpace/TimelineChart.js +++ b/CanvasApp/ChartingSpace/TimelineChart.js @@ -1,424 +1,424 @@ -function newTimelineChart () { - const MODULE_NAME = 'Timeline Chart' - const INFO_LOG = false - const INTENSIVE_LOG = false - const ERROR_LOG = true - let logger = newWebDebugLog() - logger.fileName = MODULE_NAME +function newTimelineChart() { + const MODULE_NAME = 'Timeline Chart' + const INFO_LOG = false + const INTENSIVE_LOG = false + const ERROR_LOG = true + let logger = newWebDebugLog() + logger.fileName = MODULE_NAME - let timeFrame = INITIAL_TIME_PERIOD - let datetime = NEW_SESSION_INITIAL_DATE + let timeFrame = INITIAL_TIME_PERIOD + let datetime = NEW_SESSION_INITIAL_DATE - let thisObject = { - container: undefined, - fitFunction: undefined, - rateScale: undefined, - timeFrameScale: undefined, - payload: undefined, - layersManager: undefined, - plotterManager: undefined, - upstreamTimeFrame: undefined, - setDatetime: setDatetime, - setTimeFrame: setTimeFrame, - physics: physics, - draw: draw, - drawBackground: drawBackground, - drawForeground: drawForeground, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - } - - let timeMachineCoordinateSystem - let timelineChartCoordinateSystem = newCoordinateSystem() - timelineChartCoordinateSystem.name = 'TIMELINE CHART' - - let coordinateSystem - - let layersPanel - let layersPanelHandle - - let onMouseOverEventSuscriptionId - let onMouseNotOverEventSuscriptionId - let rateScaleUpstreamEventSuscriptionId - let rateScaleMouseOverEventSuscriptionId - let timeFrameScaleEventSuscriptionId - let timeFrameScaleMouseOverEventSuscriptionId - let scaleChangedEventSubscriptionId - - let drawScales = false - let mouse = { - position: { - x: 0, - y: 0 - } - } - - setupContainer() - return thisObject - - function setupContainer () { - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) - thisObject.container.detectMouseOver = true - } - - function finalize () { - timeMachineCoordinateSystem.eventHandler.stopListening(scaleChangedEventSubscriptionId) - - if (thisObject.layersManager !== undefined) { - finalizeLayersManager() + let thisObject = { + container: undefined, + fitFunction: undefined, + rateScale: undefined, + timeFrameScale: undefined, + payload: undefined, + layersManager: undefined, + plotterManager: undefined, + upstreamTimeFrame: undefined, + setDatetime: setDatetime, + setTimeFrame: setTimeFrame, + physics: physics, + draw: draw, + drawBackground: drawBackground, + drawForeground: drawForeground, + getContainer: getContainer, + initialize: initialize, + finalize: finalize } - if (thisObject.rateScale !== undefined) { - finalizeRateScale() - } + let timeMachineCoordinateSystem + let timelineChartCoordinateSystem = newCoordinateSystem() + timelineChartCoordinateSystem.name = 'TIMELINE CHART' - if (thisObject.timeFrameScale !== undefined) { - finalizeTimeFrameScale() - } + let coordinateSystem - thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId) - thisObject.container.eventHandler.stopListening(onMouseNotOverEventSuscriptionId) - thisObject.container.finalize() - thisObject.container = undefined - thisObject.payload = undefined + let layersPanel + let layersPanelHandle - mouse = undefined - logger = undefined + let onMouseOverEventSuscriptionId + let onMouseNotOverEventSuscriptionId + let rateScaleUpstreamEventSuscriptionId + let rateScaleMouseOverEventSuscriptionId + let timeFrameScaleEventSuscriptionId + let timeFrameScaleMouseOverEventSuscriptionId + let scaleChangedEventSubscriptionId - timeMachineCoordinateSystem = undefined - timelineChartCoordinateSystem.finalize() - timelineChartCoordinateSystem = undefined - coordinateSystem = undefined - layersPanel = undefined - layersPanelHandle = undefined - } - - function finalizeLayersManager () { - if (thisObject.plotterManager !== undefined) { - thisObject.plotterManager.finalize() - } - thisObject.plotterManager = undefined - thisObject.layersManager = undefined - - canvas.panelsSpace.destroyPanel(layersPanelHandle) - } - - function finalizeTimeFrameScale () { - if (thisObject.timeFrameScale === undefined) { return } - - thisObject.timeFrameScale.container.eventHandler.stopListening(timeFrameScaleEventSuscriptionId) - thisObject.timeFrameScale.container.eventHandler.stopListening(timeFrameScaleMouseOverEventSuscriptionId) - thisObject.timeFrameScale.finalize() - thisObject.timeFrameScale = undefined - if (thisObject.upstreamTimeFrame !== undefined) { - timeFrame = thisObject.upstreamTimeFrame - if (thisObject.plotterManager !== undefined) { - thisObject.plotterManager.setTimeFrame(timeFrame) - } - } - } - - function finalizeRateScale () { - if (thisObject.rateScale === undefined) { return } - - thisObject.rateScale.container.eventHandler.stopListening(rateScaleMouseOverEventSuscriptionId) - thisObject.container.parentContainer.eventHandler.stopListening(rateScaleUpstreamEventSuscriptionId) - thisObject.rateScale.finalize() - thisObject.rateScale = undefined - - /* Resets the local container with the dimessions of its parent, the Time Machine */ - thisObject.container.frame.position.x = 0 - thisObject.container.frame.position.y = 0 - thisObject.container.frame.height = thisObject.container.parentContainer.frame.height - thisObject.container.frame.width = thisObject.container.parentContainer.frame.width - } - - function initialize (pTimeMachineCoordinateSystem, pTimeFrame) { - /* We load the logow we will need for the background. */ - - timeMachineCoordinateSystem = pTimeMachineCoordinateSystem - coordinateSystem = timeMachineCoordinateSystem - initializeCoordinateSystem() - - timeFrame = pTimeFrame - - onMouseOverEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) - onMouseNotOverEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) - scaleChangedEventSubscriptionId = timeMachineCoordinateSystem.eventHandler.listenToEvent('Scale Changed', onScaleChanged) - } - - function initializeCoordinateSystem () { - let minValue = { - x: timeMachineCoordinateSystem.min.x, - y: 0 - } - - let maxValue = { - x: timeMachineCoordinateSystem.max.x, - y: nextPorwerOf10(MAX_DEFAULT_RATE_SCALE_VALUE) / 4 - } - - if (thisObject.rateScale !== undefined) { - minValue.y = thisObject.rateScale.minValue - maxValue.y = thisObject.rateScale.maxValue - } - - timelineChartCoordinateSystem.initialize( - minValue, - maxValue, - thisObject.container.frame.width, - thisObject.container.frame.height - ) - } - - function initializeLayersManager () { - let owner = thisObject.payload.node.payload.parentNode.id // The real owner is the Time Machine - layersPanelHandle = canvas.panelsSpace.createNewPanel('Layers Panel', undefined, owner) - thisObject.layersManager = canvas.panelsSpace.getPanel(layersPanelHandle) - thisObject.layersManager.payload = thisObject.payload.node.layersManager.payload - thisObject.layersManager.initialize() - - /* Initialize the Plotter Manager */ - thisObject.plotterManager = newPlottersManager() - - thisObject.plotterManager.container.connectToParent(thisObject.container, true, true, false, true, true, true, false, false, true) - - thisObject.plotterManager.container.frame.position.x = 0 - thisObject.plotterManager.container.frame.position.y = 0 - - thisObject.plotterManager.fitFunction = thisObject.fitFunction - thisObject.plotterManager.payload = thisObject.payload - thisObject.plotterManager.initialize(thisObject.layersManager) - thisObject.plotterManager.setTimeFrame(timeFrame) - thisObject.plotterManager.setDatetime(datetime) - thisObject.plotterManager.setCoordinateSystem(coordinateSystem) - } - - function initializeRateScale () { - thisObject.rateScale = newRateScale() - thisObject.rateScale.fitFunction = thisObject.fitFunction - thisObject.rateScale.payload = thisObject.payload.node.rateScale.payload - - rateScaleMouseOverEventSuscriptionId = thisObject.rateScale.container.eventHandler.listenToEvent('onMouseOverScale', rateScaleMouseOver) - thisObject.rateScale.initialize(timelineChartCoordinateSystem, thisObject.container.parentContainer, thisObject.container) - - function rateScaleMouseOver (event) { - thisObject.container.eventHandler.raiseEvent('onChildrenMouseOver', event) - } - } - - function initializeTimeFrameScale () { - thisObject.timeFrameScale = newTimeFrameScale() - thisObject.timeFrameScale.fitFunction = thisObject.fitFunction - thisObject.timeFrameScale.payload = thisObject.payload.node.timeFrameScale.payload - - timeFrameScaleEventSuscriptionId = thisObject.timeFrameScale.container.eventHandler.listenToEvent('Time Frame Value Changed', timeFrameScaleValueChanged) - timeFrameScaleMouseOverEventSuscriptionId = thisObject.timeFrameScale.container.eventHandler.listenToEvent('onMouseOverScale', timeFrameScaleMouseOver) - thisObject.timeFrameScale.initialize(thisObject.container.parentContainer) - - function timeFrameScaleValueChanged (event) { - let currentTimeFrame = timeFrame - timeFrame = event.timeFrame - if (timeFrame !== currentTimeFrame) { - if (thisObject.plotterManager !== undefined) { - thisObject.plotterManager.setTimeFrame(timeFrame) + let drawScales = false + let mouse = { + position: { + x: 0, + y: 0 } - } } - function timeFrameScaleMouseOver (event) { - thisObject.container.eventHandler.raiseEvent('onChildrenMouseOver', event) - } - } + setupContainer() + return thisObject - function onScaleChanged (event) { - if (thisObject.rateScale !== undefined) { - thisObject.rateScale.onUpstreamScaleChanged(event) - } - timelineChartCoordinateSystem.min.x = timeMachineCoordinateSystem.min.x - timelineChartCoordinateSystem.max.x = timeMachineCoordinateSystem.max.x - timelineChartCoordinateSystem.maxHeight = timeMachineCoordinateSystem.maxHeight - timelineChartCoordinateSystem.maxWidth = timeMachineCoordinateSystem.maxWidth - timelineChartCoordinateSystem.autoMinXScale = timeMachineCoordinateSystem.autoMinXScale - timelineChartCoordinateSystem.autoMaxXScale = timeMachineCoordinateSystem.autoMaxXScale - timelineChartCoordinateSystem.recalculateScale() - } - - function setTimeFrame (pTimeFrame) { - timeFrame = pTimeFrame - if (thisObject.plotterManager !== undefined) { - thisObject.plotterManager.setTimeFrame(timeFrame) - } - } - - function setDatetime (pDatetime) { - datetime = pDatetime - if (thisObject.plotterManager !== undefined) { - thisObject.plotterManager.setDatetime(datetime) - } - } - - function onMouseOver (event) { - /* This event gets to the timelinechart container because it inherits it from the time machine container, which is the one raising Mouse Over and Mouse not Over Events to its children. */ - drawScales = true - - if (thisObject.rateScale !== undefined) { - thisObject.rateScale.onMouseOverSomeTimeMachineContainer(event) + function setupContainer() { + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) + thisObject.container.detectMouseOver = true } - if (thisObject.timeFrameScale !== undefined) { - thisObject.timeFrameScale.onMouseOverSomeTimeMachineContainer(event) - } + function finalize() { + timeMachineCoordinateSystem.eventHandler.stopListening(scaleChangedEventSubscriptionId) - mouse.position.x = event.x - mouse.position.y = event.y - } - - function onMouseNotOver (event) { - /* This event is inherited from the Time Machine */ - drawScales = false - - if (thisObject.rateScale !== undefined) { - thisObject.rateScale.visible = false - } - if (thisObject.timeFrameScale !== undefined) { - thisObject.timeFrameScale.visible = false - } - } - - function getContainer (point, purpose) { - let container - - if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) { - container = thisObject.rateScale.getContainer(point, purpose) - if (container !== undefined) { - if (container.isForThisPurpose(purpose)) { - return container + if (thisObject.layersManager !== undefined) { + finalizeLayersManager() } - } - } - if (thisObject.timeFrameScale !== undefined && thisObject.timeFrameScale.isVisible === true) { - container = thisObject.timeFrameScale.getContainer(point, purpose) - if (container !== undefined) { - if (container.isForThisPurpose(purpose)) { - return container + if (thisObject.rateScale !== undefined) { + finalizeRateScale() } - } - } - return container - } - - function physics () { - thisObjectPhysics() - childrenPhysics() - syncWithDesignerScales() - syncWithDesignerLayersManager() - } - - function thisObjectPhysics () { - /* Only if the plotter manager has some layer turned on, we will pass the min and max upstream. */ - if (thisObject.plotterManager !== undefined && thisObject.plotterManager.connectors.length > 0) { - timelineChartCoordinateSystem.reportParentXValue(timeMachineCoordinateSystem.min.x, timeMachineCoordinateSystem.max.x) - timelineChartCoordinateSystem.physics() - - timeMachineCoordinateSystem.reportXValue(timelineChartCoordinateSystem.childrenMin.x) - timeMachineCoordinateSystem.reportXValue(timelineChartCoordinateSystem.childrenMax.x) - } - } - - function syncWithDesignerLayersManager () { - if (thisObject.payload.node === undefined) { - finalizeLayersManager() - return - } - - if (thisObject.payload.node.layersManager === undefined && thisObject.layersManager !== undefined) { - finalizeLayersManager() - } - if (thisObject.payload.node.layersManager !== undefined && thisObject.layersManager === undefined) { - initializeLayersManager() - } - } - - function syncWithDesignerScales () { - if (thisObject.payload.node === undefined) { - finalizeRateScale() - finalizeTimeFrameScale() - return - } - if (thisObject.payload.node.rateScale === undefined && thisObject.rateScale !== undefined) { - finalizeRateScale() - coordinateSystem = timeMachineCoordinateSystem - if (thisObject.plotterManager !== undefined) { - thisObject.plotterManager.setCoordinateSystem(coordinateSystem) - } - } - if (thisObject.payload.node.rateScale !== undefined && thisObject.rateScale === undefined) { - initializeRateScale() - coordinateSystem = timelineChartCoordinateSystem - if (thisObject.plotterManager !== undefined) { - thisObject.plotterManager.setCoordinateSystem(coordinateSystem) - } - } - if (thisObject.payload.node.timeFrameScale === undefined && thisObject.timeFrameScale !== undefined) { - finalizeTimeFrameScale() - } - if (thisObject.payload.node.timeFrameScale !== undefined && thisObject.timeFrameScale === undefined) { - initializeTimeFrameScale() - } - } - - function childrenPhysics () { - if (thisObject.rateScale !== undefined) { - thisObject.rateScale.layersOn = thisObject.plotterManager.connectors.length - thisObject.rateScale.physics() - } - if (thisObject.timeFrameScale !== undefined) { - thisObject.timeFrameScale.layersOn = thisObject.plotterManager.connectors.length - thisObject.timeFrameScale.physics() - } - } - - function drawBackground () { - if (thisObject.container.frame.isInViewPort()) { - if (drawScales === true) { - if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) { thisObject.rateScale.drawBackground() } - } - drawChartsBackground() - if (thisObject.plotterManager !== undefined) { - let elementsPlotted = thisObject.plotterManager.draw() if (thisObject.timeFrameScale !== undefined) { - thisObject.timeFrameScale.adjustTimeFrame(elementsPlotted) - } else { - return elementsPlotted + finalizeTimeFrameScale() } - } - } - } - function draw () { - if (thisObject.container.frame.isInViewPort()) { - if (drawScales === true) { - if (thisObject.timeFrameScale !== undefined && thisObject.timeFrameScale.isVisible === true) { thisObject.timeFrameScale.draw() } - if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) { thisObject.rateScale.draw() } - } - } - } + thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId) + thisObject.container.eventHandler.stopListening(onMouseNotOverEventSuscriptionId) + thisObject.container.finalize() + thisObject.container = undefined + thisObject.payload = undefined - function drawForeground () { - if (thisObject.container.frame.isInViewPort()) { - if (drawScales === true) { - if (thisObject.timeFrameScale !== undefined && thisObject.timeFrameScale.isVisible === true) { thisObject.timeFrameScale.drawForeground() } - if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) { thisObject.rateScale.drawForeground() } - } - } - } + mouse = undefined + logger = undefined - function drawChartsBackground () { - drawContainerBackground(thisObject.container, UI_COLOR.WHITE, 0, thisObject.fitFunction) - } + timeMachineCoordinateSystem = undefined + timelineChartCoordinateSystem.finalize() + timelineChartCoordinateSystem = undefined + coordinateSystem = undefined + layersPanel = undefined + layersPanelHandle = undefined + } + + function finalizeLayersManager() { + if (thisObject.plotterManager !== undefined) { + thisObject.plotterManager.finalize() + } + thisObject.plotterManager = undefined + thisObject.layersManager = undefined + + canvas.panelsSpace.destroyPanel(layersPanelHandle) + } + + function finalizeTimeFrameScale() { + if (thisObject.timeFrameScale === undefined) { return } + + thisObject.timeFrameScale.container.eventHandler.stopListening(timeFrameScaleEventSuscriptionId) + thisObject.timeFrameScale.container.eventHandler.stopListening(timeFrameScaleMouseOverEventSuscriptionId) + thisObject.timeFrameScale.finalize() + thisObject.timeFrameScale = undefined + if (thisObject.upstreamTimeFrame !== undefined) { + timeFrame = thisObject.upstreamTimeFrame + if (thisObject.plotterManager !== undefined) { + thisObject.plotterManager.setTimeFrame(timeFrame) + } + } + } + + function finalizeRateScale() { + if (thisObject.rateScale === undefined) { return } + + thisObject.rateScale.container.eventHandler.stopListening(rateScaleMouseOverEventSuscriptionId) + thisObject.container.parentContainer.eventHandler.stopListening(rateScaleUpstreamEventSuscriptionId) + thisObject.rateScale.finalize() + thisObject.rateScale = undefined + + /* Resets the local container with the dimessions of its parent, the Time Machine */ + thisObject.container.frame.position.x = 0 + thisObject.container.frame.position.y = 0 + thisObject.container.frame.height = thisObject.container.parentContainer.frame.height + thisObject.container.frame.width = thisObject.container.parentContainer.frame.width + } + + function initialize(pTimeMachineCoordinateSystem, pTimeFrame) { + /* We load the logow we will need for the background. */ + + timeMachineCoordinateSystem = pTimeMachineCoordinateSystem + coordinateSystem = timeMachineCoordinateSystem + initializeCoordinateSystem() + + timeFrame = pTimeFrame + + onMouseOverEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) + onMouseNotOverEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) + scaleChangedEventSubscriptionId = timeMachineCoordinateSystem.eventHandler.listenToEvent('Scale Changed', onScaleChanged) + } + + function initializeCoordinateSystem() { + let minValue = { + x: timeMachineCoordinateSystem.min.x, + y: 0 + } + + let maxValue = { + x: timeMachineCoordinateSystem.max.x, + y: nextPorwerOf10(MAX_DEFAULT_RATE_SCALE_VALUE) / 4 + } + + if (thisObject.rateScale !== undefined) { + minValue.y = thisObject.rateScale.minValue + maxValue.y = thisObject.rateScale.maxValue + } + + timelineChartCoordinateSystem.initialize( + minValue, + maxValue, + thisObject.container.frame.width, + thisObject.container.frame.height + ) + } + + function initializeLayersManager() { + let owner = thisObject.payload.node.payload.parentNode.id // The real owner is the Time Machine + layersPanelHandle = canvas.panelsSpace.createNewPanel('Layers Panel', undefined, owner) + thisObject.layersManager = canvas.panelsSpace.getPanel(layersPanelHandle) + thisObject.layersManager.payload = thisObject.payload.node.layersManager.payload + thisObject.layersManager.initialize() + + /* Initialize the Plotter Manager */ + thisObject.plotterManager = newPlottersManager() + + thisObject.plotterManager.container.connectToParent(thisObject.container, true, true, false, true, true, true, false, false, true) + + thisObject.plotterManager.container.frame.position.x = 0 + thisObject.plotterManager.container.frame.position.y = 0 + + thisObject.plotterManager.fitFunction = thisObject.fitFunction + thisObject.plotterManager.payload = thisObject.payload + thisObject.plotterManager.initialize(thisObject.layersManager) + thisObject.plotterManager.setTimeFrame(timeFrame) + thisObject.plotterManager.setDatetime(datetime) + thisObject.plotterManager.setCoordinateSystem(coordinateSystem) + } + + function initializeRateScale() { + thisObject.rateScale = newRateScale() + thisObject.rateScale.fitFunction = thisObject.fitFunction + thisObject.rateScale.payload = thisObject.payload.node.rateScale.payload + + rateScaleMouseOverEventSuscriptionId = thisObject.rateScale.container.eventHandler.listenToEvent('onMouseOverScale', rateScaleMouseOver) + thisObject.rateScale.initialize(timelineChartCoordinateSystem, thisObject.container.parentContainer, thisObject.container) + + function rateScaleMouseOver(event) { + thisObject.container.eventHandler.raiseEvent('onChildrenMouseOver', event) + } + } + + function initializeTimeFrameScale() { + thisObject.timeFrameScale = newTimeFrameScale() + thisObject.timeFrameScale.fitFunction = thisObject.fitFunction + thisObject.timeFrameScale.payload = thisObject.payload.node.timeFrameScale.payload + + timeFrameScaleEventSuscriptionId = thisObject.timeFrameScale.container.eventHandler.listenToEvent('Time Frame Value Changed', timeFrameScaleValueChanged) + timeFrameScaleMouseOverEventSuscriptionId = thisObject.timeFrameScale.container.eventHandler.listenToEvent('onMouseOverScale', timeFrameScaleMouseOver) + thisObject.timeFrameScale.initialize(thisObject.container.parentContainer) + + function timeFrameScaleValueChanged(event) { + let currentTimeFrame = timeFrame + timeFrame = event.timeFrame + if (timeFrame !== currentTimeFrame) { + if (thisObject.plotterManager !== undefined) { + thisObject.plotterManager.setTimeFrame(timeFrame) + } + } + } + + function timeFrameScaleMouseOver(event) { + thisObject.container.eventHandler.raiseEvent('onChildrenMouseOver', event) + } + } + + function onScaleChanged(event) { + if (thisObject.rateScale !== undefined) { + thisObject.rateScale.onUpstreamScaleChanged(event) + } + timelineChartCoordinateSystem.min.x = timeMachineCoordinateSystem.min.x + timelineChartCoordinateSystem.max.x = timeMachineCoordinateSystem.max.x + timelineChartCoordinateSystem.maxHeight = timeMachineCoordinateSystem.maxHeight + timelineChartCoordinateSystem.maxWidth = timeMachineCoordinateSystem.maxWidth + timelineChartCoordinateSystem.autoMinXScale = timeMachineCoordinateSystem.autoMinXScale + timelineChartCoordinateSystem.autoMaxXScale = timeMachineCoordinateSystem.autoMaxXScale + timelineChartCoordinateSystem.recalculateScale() + } + + function setTimeFrame(pTimeFrame) { + timeFrame = pTimeFrame + if (thisObject.plotterManager !== undefined) { + thisObject.plotterManager.setTimeFrame(timeFrame) + } + } + + function setDatetime(pDatetime) { + datetime = pDatetime + if (thisObject.plotterManager !== undefined) { + thisObject.plotterManager.setDatetime(datetime) + } + } + + function onMouseOver(event) { + /* This event gets to the timelinechart container because it inherits it from the time machine container, which is the one raising Mouse Over and Mouse not Over Events to its children. */ + drawScales = true + + if (thisObject.rateScale !== undefined) { + thisObject.rateScale.onMouseOverSomeTimeMachineContainer(event) + } + + if (thisObject.timeFrameScale !== undefined) { + thisObject.timeFrameScale.onMouseOverSomeTimeMachineContainer(event) + } + + mouse.position.x = event.x + mouse.position.y = event.y + } + + function onMouseNotOver(event) { + /* This event is inherited from the Time Machine */ + drawScales = false + + if (thisObject.rateScale !== undefined) { + thisObject.rateScale.visible = false + } + if (thisObject.timeFrameScale !== undefined) { + thisObject.timeFrameScale.visible = false + } + } + + function getContainer(point, purpose) { + let container + + if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) { + container = thisObject.rateScale.getContainer(point, purpose) + if (container !== undefined) { + if (container.isForThisPurpose(purpose)) { + return container + } + } + } + + if (thisObject.timeFrameScale !== undefined && thisObject.timeFrameScale.isVisible === true) { + container = thisObject.timeFrameScale.getContainer(point, purpose) + if (container !== undefined) { + if (container.isForThisPurpose(purpose)) { + return container + } + } + } + + return container + } + + function physics() { + thisObjectPhysics() + childrenPhysics() + syncWithDesignerScales() + syncWithDesignerLayersManager() + } + + function thisObjectPhysics() { + /* Only if the plotter manager has some layer turned on, we will pass the min and max upstream. */ + if (thisObject.plotterManager !== undefined && thisObject.plotterManager.connectors.length > 0) { + timelineChartCoordinateSystem.reportParentXValue(timeMachineCoordinateSystem.min.x, timeMachineCoordinateSystem.max.x) + timelineChartCoordinateSystem.physics() + + timeMachineCoordinateSystem.reportXValue(timelineChartCoordinateSystem.childrenMin.x) + timeMachineCoordinateSystem.reportXValue(timelineChartCoordinateSystem.childrenMax.x) + } + } + + function syncWithDesignerLayersManager() { + if (thisObject.payload.node === undefined) { + finalizeLayersManager() + return + } + + if (thisObject.payload.node.layersManager === undefined && thisObject.layersManager !== undefined) { + finalizeLayersManager() + } + if (thisObject.payload.node.layersManager !== undefined && thisObject.layersManager === undefined) { + initializeLayersManager() + } + } + + function syncWithDesignerScales() { + if (thisObject.payload.node === undefined) { + finalizeRateScale() + finalizeTimeFrameScale() + return + } + if (thisObject.payload.node.rateScale === undefined && thisObject.rateScale !== undefined) { + finalizeRateScale() + coordinateSystem = timeMachineCoordinateSystem + if (thisObject.plotterManager !== undefined) { + thisObject.plotterManager.setCoordinateSystem(coordinateSystem) + } + } + if (thisObject.payload.node.rateScale !== undefined && thisObject.rateScale === undefined) { + initializeRateScale() + coordinateSystem = timelineChartCoordinateSystem + if (thisObject.plotterManager !== undefined) { + thisObject.plotterManager.setCoordinateSystem(coordinateSystem) + } + } + if (thisObject.payload.node.timeFrameScale === undefined && thisObject.timeFrameScale !== undefined) { + finalizeTimeFrameScale() + } + if (thisObject.payload.node.timeFrameScale !== undefined && thisObject.timeFrameScale === undefined) { + initializeTimeFrameScale() + } + } + + function childrenPhysics() { + if (thisObject.rateScale !== undefined) { + thisObject.rateScale.layersOn = thisObject.plotterManager.connectors.length + thisObject.rateScale.physics() + } + if (thisObject.timeFrameScale !== undefined) { + thisObject.timeFrameScale.layersOn = thisObject.plotterManager.connectors.length + thisObject.timeFrameScale.physics() + } + } + + function drawBackground() { + if (thisObject.container.frame.isInViewPort()) { + if (drawScales === true) { + if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) { thisObject.rateScale.drawBackground() } + } + drawChartsBackground() + if (thisObject.plotterManager !== undefined) { + let elementsPlotted = thisObject.plotterManager.draw() + if (thisObject.timeFrameScale !== undefined) { + thisObject.timeFrameScale.adjustTimeFrame(elementsPlotted) + } else { + return elementsPlotted + } + } + } + } + + function draw() { + if (thisObject.container.frame.isInViewPort()) { + if (drawScales === true) { + if (thisObject.timeFrameScale !== undefined && thisObject.timeFrameScale.isVisible === true) { thisObject.timeFrameScale.draw() } + if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) { thisObject.rateScale.draw() } + } + } + } + + function drawForeground() { + if (thisObject.container.frame.isInViewPort()) { + if (drawScales === true) { + if (thisObject.timeFrameScale !== undefined && thisObject.timeFrameScale.isVisible === true) { thisObject.timeFrameScale.drawForeground() } + if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) { thisObject.rateScale.drawForeground() } + } + } + } + + function drawChartsBackground() { + drawContainerBackground(thisObject.container, UI_COLOR.WHITE, 0, thisObject.fitFunction) + } } diff --git a/CanvasApp/ChartingSpace/Viewport.js b/CanvasApp/ChartingSpace/Viewport.js index 4f60172be..393381514 100644 --- a/CanvasApp/ChartingSpace/Viewport.js +++ b/CanvasApp/ChartingSpace/Viewport.js @@ -1,421 +1,421 @@ -function newViewport () { - const MODULE_NAME = 'Viewport' +function newViewport() { + const MODULE_NAME = 'Viewport' - const MIN_ZOOM_LEVEL = 0 - const MAX_ZOOM_LEVEL = 500 + const MIN_ZOOM_LEVEL = 0 + const MAX_ZOOM_LEVEL = 500 - let ANIMATION_INCREMENT = 0.25 - let ANIMATION_STEPS = 5 + let ANIMATION_INCREMENT = 0.25 + let ANIMATION_STEPS = 5 - let TOP_MARGIN = 40 + TOP_SPACE_HEIGHT - let BOTTOM_MARGIN = 42 + COCKPIT_SPACE_HEIGHT - let LEFT_MARGIN = 0 - let RIGHT_MARGIN = 0 - let MARGINS = { - TOP: TOP_MARGIN, - BOTTOM: BOTTOM_MARGIN, - LEFT: LEFT_MARGIN, - RIGHT: RIGHT_MARGIN - } + let TOP_MARGIN = 40 + TOP_SPACE_HEIGHT + let BOTTOM_MARGIN = 10 + 2 + COCKPIT_SPACE_HEIGHT + let LEFT_MARGIN = 0 + let RIGHT_MARGIN = 0 + let MARGINS = { + TOP: TOP_MARGIN, + BOTTOM: BOTTOM_MARGIN, + LEFT: LEFT_MARGIN, + RIGHT: RIGHT_MARGIN + } - let thisObject = { - visible: false, - visibleArea: undefined, - width: undefined, - height: undefined, - eventHandler: undefined, - zoomTargetLevel: undefined, - zoomLevel: undefined, - mousePosition: undefined, - margins: MARGINS, - payload: undefined, - zoomAtCenter: zoomAtCenter, - changeZoom: changeZoom, - onMouseWheel: onMouseWheel, - transformThisPoint: transformThisPoint, - unTransformThisPoint: unTransformThisPoint, - isThisPointVisible: isThisPointVisible, - isThisPointInViewport: isThisPointInViewport, - fitIntoVisibleArea: fitIntoVisibleArea, - fitIntoViewport: fitIntoViewport, - displace: displace, - displaceToContainer: displaceToContainer, - physics: physics, - raiseEvents: raiseEvents, - resize: resize, - initialize: initialize, - finalize: finalize - } - let increment = 0.035 - let position = { - x: 0, - y: 0 - } + let thisObject = { + visible: false, + visibleArea: undefined, + width: undefined, + height: undefined, + eventHandler: undefined, + zoomTargetLevel: undefined, + zoomLevel: undefined, + mousePosition: undefined, + margins: MARGINS, + payload: undefined, + zoomAtCenter: zoomAtCenter, + changeZoom: changeZoom, + onMouseWheel: onMouseWheel, + transformThisPoint: transformThisPoint, + unTransformThisPoint: unTransformThisPoint, + isThisPointVisible: isThisPointVisible, + isThisPointInViewport: isThisPointInViewport, + fitIntoVisibleArea: fitIntoVisibleArea, + fitIntoViewport: fitIntoViewport, + displace: displace, + displaceToContainer: displaceToContainer, + physics: physics, + raiseEvents: raiseEvents, + resize: resize, + initialize: initialize, + finalize: finalize + } + let increment = 0.035 + let position = { + x: 0, + y: 0 + } - thisObject.mousePosition = { - x: 0, - y: 0 - } - thisObject.eventHandler = newEventHandler() + thisObject.mousePosition = { + x: 0, + y: 0 + } + thisObject.eventHandler = newEventHandler() -/* Initial default value */ - thisObject.zoomLevel = MIN_ZOOM_LEVEL - thisObject.zoomTargetLevel = Math.round(MIN_ZOOM_LEVEL) - INITIAL_TIME_PERIOD = recalculatePeriod(thisObject.zoomLevel) + /* Initial default value */ + thisObject.zoomLevel = MIN_ZOOM_LEVEL + thisObject.zoomTargetLevel = Math.round(MIN_ZOOM_LEVEL) + INITIAL_TIME_PERIOD = recalculatePeriod(thisObject.zoomLevel) - let overrideMousePositionCounter = 0 + let overrideMousePositionCounter = 0 - return thisObject + return thisObject - function finalize () { - thisObject.eventHandler.finalize() - thisObject.payload = undefined - thisObject = undefined - } + function finalize() { + thisObject.eventHandler.finalize() + thisObject.payload = undefined + thisObject = undefined + } - function initialize () { - if (thisObject.payload !== undefined) { - /* Read the position from the frame structure */ + function initialize() { + if (thisObject.payload !== undefined) { + /* Read the position from the frame structure */ - let frame = { - position: { - x: 0, - y: 0 + let frame = { + position: { + x: 0, + y: 0 + } + } + loadFrame(thisObject.payload, frame) + if (!isNaN(frame.position.x)) { + position.x = frame.position.x + } + if (!isNaN(frame.position.y)) { + position.y = frame.position.y + } } - } - loadFrame(thisObject.payload, frame) - if (!isNaN(frame.position.x)) { - position.x = frame.position.x - } - if (!isNaN(frame.position.y)) { - position.y = frame.position.y - } + + resize() + readObjectState() } - resize() - readObjectState() - } + function resize() { + TOP_MARGIN = 40 + TOP_SPACE_HEIGHT + BOTTOM_MARGIN = 10 + 2 + browserCanvas.height - COCKPIT_SPACE_POSITION + LEFT_MARGIN = 0 + RIGHT_MARGIN = 0 + MARGINS = { + TOP: TOP_MARGIN, + BOTTOM: BOTTOM_MARGIN, + LEFT: LEFT_MARGIN, + RIGHT: RIGHT_MARGIN + } - function resize () { - TOP_MARGIN = 40 + TOP_SPACE_HEIGHT - BOTTOM_MARGIN = 42 + browserCanvas.height - COCKPIT_SPACE_POSITION - LEFT_MARGIN = 0 - RIGHT_MARGIN = 0 - MARGINS = { - TOP: TOP_MARGIN, - BOTTOM: BOTTOM_MARGIN, - LEFT: LEFT_MARGIN, - RIGHT: RIGHT_MARGIN + thisObject.visibleArea = { + topLeft: { x: LEFT_MARGIN, y: TOP_MARGIN }, + topRight: { x: browserCanvas.width - RIGHT_MARGIN, y: TOP_MARGIN }, + bottomRight: { x: browserCanvas.width - RIGHT_MARGIN, y: browserCanvas.height - BOTTOM_MARGIN }, + bottomLeft: { x: LEFT_MARGIN, y: browserCanvas.height - BOTTOM_MARGIN } + } + + thisObject.width = thisObject.visibleArea.topRight.x - thisObject.visibleArea.topLeft.x + thisObject.height = thisObject.visibleArea.bottomRight.y - thisObject.visibleArea.topLeft.y + + thisObject.center = { + x: LEFT_MARGIN + thisObject.width / 2, + y: TOP_MARGIN + thisObject.height / 2 + } } - thisObject.visibleArea = { - topLeft: { x: LEFT_MARGIN, y: TOP_MARGIN }, - topRight: { x: browserCanvas.width - RIGHT_MARGIN, y: TOP_MARGIN }, - bottomRight: { x: browserCanvas.width - RIGHT_MARGIN, y: browserCanvas.height - BOTTOM_MARGIN}, - bottomLeft: { x: LEFT_MARGIN, y: browserCanvas.height - BOTTOM_MARGIN} + function raiseEvents() { + if (thisObject.visible === false) { return } + let event = { + newPosition: position + } + + thisObject.eventHandler.raiseEvent('Position Changed', event) } - thisObject.width = thisObject.visibleArea.topRight.x - thisObject.visibleArea.topLeft.x - thisObject.height = thisObject.visibleArea.bottomRight.y - thisObject.visibleArea.topLeft.y - - thisObject.center = { - x: LEFT_MARGIN + thisObject.width / 2, - y: TOP_MARGIN + thisObject.height / 2 - } - } - - function raiseEvents () { - if (thisObject.visible === false) { return } - let event = { - newPosition: position + function displaceToContainer(container) { + let targetPoint = { + x: -container.frame.position.x - container.frame.width / 2, + y: -container.frame.position.y - container.frame.height / 2 + } + position.x = targetPoint.x + browserCanvas.width / 2 + position.y = targetPoint.y + (COCKPIT_SPACE_POSITION - TOP_SPACE_HEIGHT) / 2 + TOP_SPACE_HEIGHT } - thisObject.eventHandler.raiseEvent('Position Changed', event) - } - - function displaceToContainer (container) { - let targetPoint = { - x: -container.frame.position.x - container.frame.width / 2, - y: -container.frame.position.y - container.frame.height / 2 - } - position.x = targetPoint.x + browserCanvas.width / 2 - position.y = targetPoint.y + (COCKPIT_SPACE_POSITION - TOP_SPACE_HEIGHT) / 2 + TOP_SPACE_HEIGHT - } - - function zoomAtCenter (level) { - thisObject.zoomTargetLevel = Math.round(level) - overrideMousePositionCounter = 50 - ANIMATION_INCREMENT = 0.5 - } - - function mousePositionPhysics () { - if (overrideMousePositionCounter > 0) { - thisObject.mousePosition.x = browserCanvas.width / 2 - thisObject.mousePosition.y = (COCKPIT_SPACE_POSITION - TOP_SPACE_HEIGHT) / 2 + TOP_SPACE_HEIGHT - - overrideMousePositionCounter-- - if (overrideMousePositionCounter < 0) { - overrideMousePositionCounter = 0 - } - } - } - - function physics () { - if (thisObject.visible === false) { return } - mousePositionPhysics() - animationPhysics() - positioningPhysics() - readObjectState() - } - - function positioningPhysics () { - if (thisObject.visible === false) { return } - if (thisObject.payload === undefined) { return } - /* Save the position at the frame lavel */ - let frame = {} - frame.position = position - saveFrame(thisObject.payload, frame) - } - - function animationPhysics () { - if (thisObject.zoomLevel < thisObject.zoomTargetLevel) { - if (thisObject.zoomTargetLevel - thisObject.zoomLevel < ANIMATION_INCREMENT) { - ANIMATION_INCREMENT = Math.round(Math.abs(thisObject.zoomTargetLevel - thisObject.zoomLevel) * 100) / 100 - } - thisObject.zoomLevel = Math.round((thisObject.zoomLevel + ANIMATION_INCREMENT) * 100) / 100 - changeZoom(thisObject.zoomLevel - ANIMATION_INCREMENT, thisObject.zoomLevel) + function zoomAtCenter(level) { + thisObject.zoomTargetLevel = Math.round(level) + overrideMousePositionCounter = 50 + ANIMATION_INCREMENT = 0.5 } - if (thisObject.zoomLevel > thisObject.zoomTargetLevel) { - if (thisObject.zoomLevel - thisObject.zoomTargetLevel < ANIMATION_INCREMENT) { - ANIMATION_INCREMENT = Math.round(Math.abs(thisObject.zoomTargetLevel - thisObject.zoomLevel) * 100) / 100 - } - thisObject.zoomLevel = Math.round((thisObject.zoomLevel - ANIMATION_INCREMENT) * 100) / 100 - changeZoom(thisObject.zoomLevel + ANIMATION_INCREMENT, thisObject.zoomLevel) - } - } + function mousePositionPhysics() { + if (overrideMousePositionCounter > 0) { + thisObject.mousePosition.x = browserCanvas.width / 2 + thisObject.mousePosition.y = (COCKPIT_SPACE_POSITION - TOP_SPACE_HEIGHT) / 2 + TOP_SPACE_HEIGHT - function onMouseWheel (event) { - if (thisObject.visible === false) { return } - if ((event.ctrlKey === true || event.metaKey === true)) { return } - let morePower = 1 - - if (IS_MAC) { - event.delta = event.delta * MAC_AMOUNT_FACTOR + overrideMousePositionCounter-- + if (overrideMousePositionCounter < 0) { + overrideMousePositionCounter = 0 + } + } } - let amount = event.delta - - if (event.buttons === 4) { morePower = 2 } // Mouse wheel pressed. - /* We adjust the sensitivity for Mac Users */ - - if (thisObject.zoomTargetLevel > 10) { - amount = amount * 2 - } - if (thisObject.zoomTargetLevel > 25) { - amount = amount * 3 - } - if (thisObject.zoomTargetLevel > 50) { - amount = amount * 3.5 + function physics() { + if (thisObject.visible === false) { return } + mousePositionPhysics() + animationPhysics() + positioningPhysics() + readObjectState() } - if (thisObject.zoomTargetLevel + amount * morePower > MAX_ZOOM_LEVEL) { - return false - } - if (thisObject.zoomTargetLevel + amount * morePower < MIN_ZOOM_LEVEL) { - return false - } - thisObject.zoomTargetLevel = Math.round(thisObject.zoomTargetLevel + amount * morePower) - - ANIMATION_INCREMENT = Math.round(Math.abs(thisObject.zoomTargetLevel - thisObject.zoomLevel) / ANIMATION_STEPS * 100) / 100 - - let newEvent = { - newLevel: thisObject.zoomTargetLevel, - newPosition: position, - type: undefined, - shiftKey: event.shiftKey + function positioningPhysics() { + if (thisObject.visible === false) { return } + if (thisObject.payload === undefined) { return } + /* Save the position at the frame lavel */ + let frame = {} + frame.position = position + saveFrame(thisObject.payload, frame) } - if (amount > 0) { - newEvent.type = 'Zoom In' - } else { - newEvent.type = 'Zoom Out' + function animationPhysics() { + if (thisObject.zoomLevel < thisObject.zoomTargetLevel) { + if (thisObject.zoomTargetLevel - thisObject.zoomLevel < ANIMATION_INCREMENT) { + ANIMATION_INCREMENT = Math.round(Math.abs(thisObject.zoomTargetLevel - thisObject.zoomLevel) * 100) / 100 + } + thisObject.zoomLevel = Math.round((thisObject.zoomLevel + ANIMATION_INCREMENT) * 100) / 100 + changeZoom(thisObject.zoomLevel - ANIMATION_INCREMENT, thisObject.zoomLevel) + } + + if (thisObject.zoomLevel > thisObject.zoomTargetLevel) { + if (thisObject.zoomLevel - thisObject.zoomTargetLevel < ANIMATION_INCREMENT) { + ANIMATION_INCREMENT = Math.round(Math.abs(thisObject.zoomTargetLevel - thisObject.zoomLevel) * 100) / 100 + } + thisObject.zoomLevel = Math.round((thisObject.zoomLevel - ANIMATION_INCREMENT) * 100) / 100 + changeZoom(thisObject.zoomLevel + ANIMATION_INCREMENT, thisObject.zoomLevel) + } } - thisObject.eventHandler.raiseEvent('Zoom Changed', newEvent) - return true - } + function onMouseWheel(event) { + if (thisObject.visible === false) { return } + if ((event.ctrlKey === true || event.metaKey === true)) { return } + let morePower = 1 - function fitIntoVisibleArea (point) { - let pointCopy = { - x: point.x, - y: point.y + if (IS_MAC) { + event.delta = event.delta * MAC_AMOUNT_FACTOR + } + + let amount = event.delta + + if (event.buttons === 4) { morePower = 2 } // Mouse wheel pressed. + /* We adjust the sensitivity for Mac Users */ + + if (thisObject.zoomTargetLevel > 10) { + amount = amount * 2 + } + if (thisObject.zoomTargetLevel > 25) { + amount = amount * 3 + } + if (thisObject.zoomTargetLevel > 50) { + amount = amount * 3.5 + } + + if (thisObject.zoomTargetLevel + amount * morePower > MAX_ZOOM_LEVEL) { + return false + } + if (thisObject.zoomTargetLevel + amount * morePower < MIN_ZOOM_LEVEL) { + return false + } + thisObject.zoomTargetLevel = Math.round(thisObject.zoomTargetLevel + amount * morePower) + + ANIMATION_INCREMENT = Math.round(Math.abs(thisObject.zoomTargetLevel - thisObject.zoomLevel) / ANIMATION_STEPS * 100) / 100 + + let newEvent = { + newLevel: thisObject.zoomTargetLevel, + newPosition: position, + type: undefined, + shiftKey: event.shiftKey + } + + if (amount > 0) { + newEvent.type = 'Zoom In' + } else { + newEvent.type = 'Zoom Out' + } + + thisObject.eventHandler.raiseEvent('Zoom Changed', newEvent) + return true } - /* Here we check the boundaries of the resulting points, so they dont go out of the visible area. */ - if (pointCopy.x > thisObject.visibleArea.bottomRight.x + 1) { - pointCopy.x = thisObject.visibleArea.bottomRight.x + 1 + function fitIntoVisibleArea(point) { + let pointCopy = { + x: point.x, + y: point.y + } + + /* Here we check the boundaries of the resulting points, so they dont go out of the visible area. */ + if (pointCopy.x > thisObject.visibleArea.bottomRight.x + 1) { + pointCopy.x = thisObject.visibleArea.bottomRight.x + 1 + } + + if (pointCopy.x < thisObject.visibleArea.topLeft.x - 1) { + pointCopy.x = thisObject.visibleArea.topLeft.x - 1 + } + + if (pointCopy.y > thisObject.visibleArea.bottomRight.y + 1) { + pointCopy.y = thisObject.visibleArea.bottomRight.y + 1 + } + + if (pointCopy.y < thisObject.visibleArea.topLeft.y - 1) { + pointCopy.y = thisObject.visibleArea.topLeft.y - 1 + } + + return pointCopy } - if (pointCopy.x < thisObject.visibleArea.topLeft.x - 1) { - pointCopy.x = thisObject.visibleArea.topLeft.x - 1 + function fitIntoViewport(point) { + let pointCopy = { + x: point.x, + y: point.y + } + if (pointCopy.y > COCKPIT_SPACE_POSITION) { + pointCopy.y = COCKPIT_SPACE_POSITION + } + return pointCopy } - if (pointCopy.y > thisObject.visibleArea.bottomRight.y + 1) { - pointCopy.y = thisObject.visibleArea.bottomRight.y + 1 - } + function displace(displaceVector, recalculate) { + if (thisObject.visible === false) { return } + position.x = position.x + displaceVector.x + position.y = position.y + displaceVector.y - if (pointCopy.y < thisObject.visibleArea.topLeft.y - 1) { - pointCopy.y = thisObject.visibleArea.topLeft.y - 1 - } - - return pointCopy - } - - function fitIntoViewport (point) { - let pointCopy = { - x: point.x, - y: point.y - } - if (pointCopy.y > COCKPIT_SPACE_POSITION) { - pointCopy.y = COCKPIT_SPACE_POSITION - } - return pointCopy - } - - function displace (displaceVector, recalculate) { - if (thisObject.visible === false) { return } - position.x = position.x + displaceVector.x - position.y = position.y + displaceVector.y - - saveObjectState() - - let event = { - newPosition: position, - recalculate: recalculate - } - - thisObject.eventHandler.raiseEvent('Position Changed', event) - } - - function changeZoom (oldLevel, newLevel) { - if (thisObject.visible === false) { return } - let oldMouse = unTransformThisPoint(thisObject.mousePosition, oldLevel) - let newMouse = transformThisPoint(oldMouse, newLevel) - - position.x = position.x - newMouse.x + thisObject.mousePosition.x - position.y = position.y - newMouse.y + thisObject.mousePosition.y - - saveObjectState() - - thisObject.eventHandler.raiseEvent('Zoom Changed') - } - - function transformThisPoint (point, level) { - if (thisObject.visible === false) { return } - let transformedPoint = { - x: 0, - y: 0 - } - - if (level === undefined) { - transformedPoint.x = point.x * (1 + thisObject.zoomLevel) + position.x - transformedPoint.y = point.y * (1 + thisObject.zoomLevel) + position.y - } else { - transformedPoint.x = point.x * (1 + level) + position.x - transformedPoint.y = point.y * (1 + level) + position.y - } - - return transformedPoint - } - - function unTransformThisPoint (point, level) { - let pointWithoutZoom = { - x: 0, - y: 0 - } - if (level === undefined) { - pointWithoutZoom.x = (point.x - position.x) / (1 + thisObject.zoomLevel) - pointWithoutZoom.y = (point.y - position.y) / (1 + thisObject.zoomLevel) - } else { - pointWithoutZoom.x = (point.x - position.x) / (1 + level) - pointWithoutZoom.y = (point.y - position.y) / (1 + level) - } - - return pointWithoutZoom - } - - function isThisPointVisible (point) { - if (thisObject.visible === false) { return } - if (point.x < thisObject.visibleArea.topLeft.x || point.x > thisObject.visibleArea.bottomRight.x || point.y < thisObject.visibleArea.topLeft.y || point.y > thisObject.visibleArea.bottomRight.y) { - return false - } else { - return true - } - } - - function isThisPointInViewport (point) { - if (thisObject.visible === false) { return } - if (point.y > COCKPIT_SPACE_POSITION) { - return false - } else { - return true - } - } - - function saveObjectState () { - if (thisObject.payload === undefined) { return } - - /* Save the zoom at the node config, so that the user can change it if he wishes to. */ - try { - let code = JSON.parse(thisObject.payload.node.code) - code.zoom = (thisObject.zoomTargetLevel - MIN_ZOOM_LEVEL) / (MAX_ZOOM_LEVEL - MIN_ZOOM_LEVEL) * 100 - code.zoom = code.zoom.toFixed(2) - thisObject.payload.node.code = JSON.stringify(code) - } catch (err) { - // we ignore errors here since most likely they will be parsing errors. - } - } - - function readObjectState () { - if (thisObject.payload === undefined) { return } - - /* Read the zoom level from the node config */ - try { - let code = JSON.parse(thisObject.payload.node.code) - - if (isNaN(code.zoom) || code.zoom === null || code.zoom === undefined) { saveObjectState() - return - } - code.zoom = code.zoom / 100 * (MAX_ZOOM_LEVEL - MIN_ZOOM_LEVEL) + MIN_ZOOM_LEVEL - if (code.zoom < MIN_ZOOM_LEVEL) { code.zoom = MIN_ZOOM_LEVEL } - if (code.zoom > MAX_ZOOM_LEVEL) { code.zoom = MAX_ZOOM_LEVEL } - if (code.zoom.toFixed(2) !== thisObject.zoomTargetLevel.toFixed(2)) { - newZoomLevel(code.zoom) - } else { + let event = { + newPosition: position, + recalculate: recalculate + } + + thisObject.eventHandler.raiseEvent('Position Changed', event) + } + + function changeZoom(oldLevel, newLevel) { + if (thisObject.visible === false) { return } + let oldMouse = unTransformThisPoint(thisObject.mousePosition, oldLevel) + let newMouse = transformThisPoint(oldMouse, newLevel) + + position.x = position.x - newMouse.x + thisObject.mousePosition.x + position.y = position.y - newMouse.y + thisObject.mousePosition.y + saveObjectState() - } - } catch (err) { - // we ignore errors here since most likely they will be parsing errors. + + thisObject.eventHandler.raiseEvent('Zoom Changed') } - function newZoomLevel (level) { - thisObject.zoomLevel = Math.round(level) - thisObject.zoomTargetLevel = Math.round(level) - INITIAL_TIME_PERIOD = recalculatePeriod(level) - saveObjectState() - ANIMATION_INCREMENT = 0 + function transformThisPoint(point, level) { + if (thisObject.visible === false) { return } + let transformedPoint = { + x: 0, + y: 0 + } - let event = { - newLevel: thisObject.zoomTargetLevel, - newPosition: position, - type: undefined - } - thisObject.eventHandler.raiseEvent('Zoom Changed', event) - return true + if (level === undefined) { + transformedPoint.x = point.x * (1 + thisObject.zoomLevel) + position.x + transformedPoint.y = point.y * (1 + thisObject.zoomLevel) + position.y + } else { + transformedPoint.x = point.x * (1 + level) + position.x + transformedPoint.y = point.y * (1 + level) + position.y + } + + return transformedPoint + } + + function unTransformThisPoint(point, level) { + let pointWithoutZoom = { + x: 0, + y: 0 + } + if (level === undefined) { + pointWithoutZoom.x = (point.x - position.x) / (1 + thisObject.zoomLevel) + pointWithoutZoom.y = (point.y - position.y) / (1 + thisObject.zoomLevel) + } else { + pointWithoutZoom.x = (point.x - position.x) / (1 + level) + pointWithoutZoom.y = (point.y - position.y) / (1 + level) + } + + return pointWithoutZoom + } + + function isThisPointVisible(point) { + if (thisObject.visible === false) { return } + if (point.x < thisObject.visibleArea.topLeft.x || point.x > thisObject.visibleArea.bottomRight.x || point.y < thisObject.visibleArea.topLeft.y || point.y > thisObject.visibleArea.bottomRight.y) { + return false + } else { + return true + } + } + + function isThisPointInViewport(point) { + if (thisObject.visible === false) { return } + if (point.y > COCKPIT_SPACE_POSITION) { + return false + } else { + return true + } + } + + function saveObjectState() { + if (thisObject.payload === undefined) { return } + + /* Save the zoom at the node config, so that the user can change it if he wishes to. */ + try { + let config = JSON.parse(thisObject.payload.node.config) + config.zoom = (thisObject.zoomTargetLevel - MIN_ZOOM_LEVEL) / (MAX_ZOOM_LEVEL - MIN_ZOOM_LEVEL) * 100 + config.zoom = config.zoom.toFixed(2) + thisObject.payload.node.config = JSON.stringify(config) + } catch (err) { + // we ignore errors here since most likely they will be parsing errors. + } + } + + function readObjectState() { + if (thisObject.payload === undefined) { return } + + /* Read the zoom level from the node config */ + try { + let config = JSON.parse(thisObject.payload.node.config) + + if (isNaN(config.zoom) || config.zoom === null || config.zoom === undefined) { + saveObjectState() + return + } + config.zoom = config.zoom / 100 * (MAX_ZOOM_LEVEL - MIN_ZOOM_LEVEL) + MIN_ZOOM_LEVEL + if (config.zoom < MIN_ZOOM_LEVEL) { config.zoom = MIN_ZOOM_LEVEL } + if (config.zoom > MAX_ZOOM_LEVEL) { config.zoom = MAX_ZOOM_LEVEL } + + if (config.zoom.toFixed(2) !== thisObject.zoomTargetLevel.toFixed(2)) { + newZoomLevel(config.zoom) + } else { + saveObjectState() + } + } catch (err) { + // we ignore errors here since most likely they will be parsing errors. + } + + function newZoomLevel(level) { + thisObject.zoomLevel = Math.round(level) + thisObject.zoomTargetLevel = Math.round(level) + INITIAL_TIME_PERIOD = recalculatePeriod(level) + saveObjectState() + ANIMATION_INCREMENT = 0 + + let event = { + newLevel: thisObject.zoomTargetLevel, + newPosition: position, + type: undefined + } + thisObject.eventHandler.raiseEvent('Zoom Changed', event) + return true + } } - } } diff --git a/CanvasApp/CockpitSpace/AssetBalances.js b/CanvasApp/CockpitSpace/AssetBalances.js index 166a68880..afcb65668 100644 --- a/CanvasApp/CockpitSpace/AssetBalances.js +++ b/CanvasApp/CockpitSpace/AssetBalances.js @@ -1,123 +1,123 @@ -function newAssetalances () { - const MODULE_NAME = 'Asset Balances' +function newAssetalances() { + const MODULE_NAME = 'Asset Balances' - let thisObject = { - visible: true, - container: undefined, - paramsArray: undefined, - setParamsArray: setParamsArray, - physics: physics, - draw: draw, - speedometers: [], - getContainer: getContainer, - initialize: initialize, - finalize: finalize - } - - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) - - thisObject.container.isDraggeable = false - thisObject.container.isWheelable = false - - return thisObject - - function finalize () { - for (let i = 0; i < thisObject.speedometers.length; i++) { - let speedometer = thisObject.speedometers[i] - speedometer.finalize() + let thisObject = { + visible: true, + container: undefined, + paramsArray: undefined, + setParamsArray: setParamsArray, + physics: physics, + draw: draw, + speedometers: [], + getContainer: getContainer, + initialize: initialize, + finalize: finalize } - thisObject.container.finalize() - thisObject.container = undefined - thisObject.paramsArray = undefined - } - function initialize () { - for (let i = 0; i < 2; i++) { - let speedometer = newSpeedometer() + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) - speedometer.initialize() - speedometer.container.connectToParent(thisObject.container) - speedometer.container.frame.position.x = thisObject.container.frame.width / 2 - speedometer.container.frame.position.y = thisObject.container.frame.height * (2 + i * 2) / 5 - thisObject.speedometers.push(speedometer) - } - } + thisObject.container.isDraggeable = false + thisObject.container.isWheelable = false - function getContainer (point, purpose) { - if (thisObject.visible !== true) { return } + return thisObject - let container - for (let i = 0; i < thisObject.speedometers.length; i++) { - container = thisObject.speedometers[i].getContainer(point, purpose) - if (container !== undefined) { - if (container.isForThisPurpose(purpose)) { - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - return container - } + function finalize() { + for (let i = 0; i < thisObject.speedometers.length; i++) { + let speedometer = thisObject.speedometers[i] + speedometer.finalize() } - } + thisObject.container.finalize() + thisObject.container = undefined + thisObject.paramsArray = undefined } - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - return thisObject.container - } else { - return undefined - } - } + function initialize() { + for (let i = 0; i < 2; i++) { + let speedometer = newSpeedometer() - function setParamsArray (paramsArray) { - thisObject.paramsArray = paramsArray - for (let i = 0; i < thisObject.speedometers.length; i++) { - let speedometer = thisObject.speedometers[i] - speedometer.params = paramsArray[i] - } - } - - function physics () { - - } - - function draw () { - if (thisObject.visible !== true) { return } - - for (let i = 0; i < thisObject.speedometers.length; i++) { - let speedometer = thisObject.speedometers[i] - speedometer.draw() + speedometer.initialize() + speedometer.container.connectToParent(thisObject.container) + speedometer.container.frame.position.x = thisObject.container.frame.width / 2 + speedometer.container.frame.position.y = thisObject.container.frame.height * (2 + i * 2) / 5 + thisObject.speedometers.push(speedometer) + } } - drawQuotedAssetalances() - } + function getContainer(point, purpose) { + if (thisObject.visible !== true) { return } - function drawQuotedAssetalances () { - if (thisObject.paramsArray === undefined) { return } + let container + for (let i = 0; i < thisObject.speedometers.length; i++) { + container = thisObject.speedometers[i].getContainer(point, purpose) + if (container !== undefined) { + if (container.isForThisPurpose(purpose)) { + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + return container + } + } + } + } - let fontSize - let label - let xOffset - let yOffset - - const OPACITY = 1 - - /* We put the params.VALUE in the middle */ - - fontSize = 15 - - browserCanvasContext.font = 'bold ' + fontSize + 'px ' + UI_FONT.PRIMARY - - label = 'ASSET BALANCES' - - xOffset = label.length / 2 * fontSize * FONT_ASPECT_RATIO - yOffset = -45 + 9 - - labelPoint = { - x: 0 - xOffset + (thisObject.paramsArray[1].LEFT_OFFSET - thisObject.paramsArray[0].LEFT_OFFSET) / 2 + thisObject.paramsArray[0].LEFT_OFFSET - 20, - y: COCKPIT_SPACE_POSITION - COCKPIT_SPACE_HEIGHT / 2 - yOffset + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + return thisObject.container + } else { + return undefined + } } - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + OPACITY + ')' - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) - } + function setParamsArray(paramsArray) { + thisObject.paramsArray = paramsArray + for (let i = 0; i < thisObject.speedometers.length; i++) { + let speedometer = thisObject.speedometers[i] + speedometer.params = paramsArray[i] + } + } + + function physics() { + + } + + function draw() { + if (thisObject.visible !== true) { return } + + for (let i = 0; i < thisObject.speedometers.length; i++) { + let speedometer = thisObject.speedometers[i] + speedometer.draw() + } + + drawQuotedAssetalances() + } + + function drawQuotedAssetalances() { + if (thisObject.paramsArray === undefined) { return } + + let fontSize + let label + let xOffset + let yOffset + + const OPACITY = 1 + + /* We put the params.VALUE in the middle */ + + fontSize = 15 + + browserCanvasContext.font = 'bold ' + fontSize + 'px ' + UI_FONT.PRIMARY + + label = 'ASSET BALANCES' + + xOffset = label.length / 2 * fontSize * FONT_ASPECT_RATIO + yOffset = -45 + 9 + + labelPoint = { + x: 0 - xOffset + (thisObject.paramsArray[1].LEFT_OFFSET - thisObject.paramsArray[0].LEFT_OFFSET) / 2 + thisObject.paramsArray[0].LEFT_OFFSET - 20, + y: COCKPIT_SPACE_POSITION - COCKPIT_SPACE_HEIGHT / 2 - yOffset + } + + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + OPACITY + ')' + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) + } } diff --git a/CanvasApp/CockpitSpace/FullScreen.js b/CanvasApp/CockpitSpace/FullScreen.js index 12951403f..4f0c8e5c8 100644 --- a/CanvasApp/CockpitSpace/FullScreen.js +++ b/CanvasApp/CockpitSpace/FullScreen.js @@ -1,169 +1,169 @@ -function newFullScreen () { - const MODULE_NAME = 'Fullscreen' +function newFullScreen() { + const MODULE_NAME = 'Fullscreen' - let thisObject = { - visible: true, - container: undefined, - status: undefined, - physics: physics, - draw: draw, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - } - - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) - - thisObject.container.isDraggeable = false - thisObject.container.isWheelable = false - thisObject.container.isClickeable = true - thisObject.container.detectMouseOver = true - - let selfMouseOverEventSubscriptionId - let selfMouseClickEventSubscriptionId - let selfMouseNotOverEventSubscriptionId - - let isMouseOver = false - let counterTillNextState = 0 - - let layersToTurnOn = [] - return thisObject - - function finalize () { - thisObject.container.eventHandler.stopListening(selfMouseOverEventSubscriptionId) - thisObject.container.eventHandler.stopListening(selfMouseClickEventSubscriptionId) - thisObject.container.eventHandler.stopListening(selfMouseNotOverEventSubscriptionId) - - thisObject.container.finalize() - thisObject.container = undefined - } - - function initialize () { - thisObject.container.frame.width = 50 - thisObject.container.frame.height = COCKPIT_SPACE_HEIGHT - 12 - - selfMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) - selfMouseClickEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) - selfMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) - - thisObject.status = 'Ready' - } - - function getContainer (point, purpose) { - if (thisObject.visible !== true) { return } - - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - return thisObject.container - } else { - return undefined - } - } - - function onMouseOver (point) { - if (thisObject.container.frame.isThisPointHere(point, true, false) === true) { - isMouseOver = true - } else { - isMouseOver = false - } - } - - function onMouseNotOver (point) { - isMouseOver = false - } - - function onMouseClick (event) { - if (thisObject.status !== 'On') { - thisObject.status = 'On' - goFullscreen() - CURRENT_TOP_MARGIN = 0 - AT_FULL_SCREEN_MODE = true - } else { - thisObject.status = 'Off' - goOutFullscreen() - CURRENT_TOP_MARGIN = window.canvasApp.topMargin - AT_FULL_SCREEN_MODE = false - } - } - - function goFullscreen () { - if (browserCanvas.requestFullscreen) { - browserCanvas.requestFullscreen() - } else if (browserCanvas.mozRequestFullScreen) { - browserCanvas.mozRequestFullScreen() - } else if (browserCanvas.webkitRequestFullscreen) { - browserCanvas.webkitRequestFullscreen() - } else if (browserCanvas.msRequestFullscreen) { browserCanvas.msRequestFullscreen() } - } - - function goOutFullscreen () { - if (document.exitFullscreen) { - document.exitFullscreen() - } else if (document.mozCancelFullScreen) { - document.mozCancelFullScreen() - } else if (document.webkitExitFullscreen) { - document.webkitExitFullscreen() - } else if (document.msExitFullscreen) { document.msExitFullscreen() } - } - - function physics () { - positionPhysics() - } - - function positionPhysics () { - thisObject.container.frame.position.x = thisObject.container.parentContainer.frame.width - thisObject.container.frame.width - thisObject.container.frame.position.y = 6 - } - - function draw () { - if (thisObject.visible !== true) { return } - drawBackground() - drawText() - } - - function drawBackground () { - let params = { - cornerRadius: 3, - lineWidth: 0.01, - container: thisObject.container, - borderColor: UI_COLOR.DARK, - castShadow: false, - opacity: 1 + let thisObject = { + visible: true, + container: undefined, + status: undefined, + physics: physics, + draw: draw, + getContainer: getContainer, + initialize: initialize, + finalize: finalize } - if (isMouseOver === true) { - params.backgroundColor = UI_COLOR.TURQUOISE - } else { - params.backgroundColor = UI_COLOR.DARK_TURQUOISE + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) + + thisObject.container.isDraggeable = false + thisObject.container.isWheelable = false + thisObject.container.isClickeable = true + thisObject.container.detectMouseOver = true + + let selfMouseOverEventSubscriptionId + let selfMouseClickEventSubscriptionId + let selfMouseNotOverEventSubscriptionId + + let isMouseOver = false + let counterTillNextState = 0 + + let layersToTurnOn = [] + return thisObject + + function finalize() { + thisObject.container.eventHandler.stopListening(selfMouseOverEventSubscriptionId) + thisObject.container.eventHandler.stopListening(selfMouseClickEventSubscriptionId) + thisObject.container.eventHandler.stopListening(selfMouseNotOverEventSubscriptionId) + + thisObject.container.finalize() + thisObject.container = undefined } - roundedCornersBackground(params) - } + function initialize() { + thisObject.container.frame.width = 50 + thisObject.container.frame.height = COCKPIT_SPACE_HEIGHT - 12 - function drawText () { - let fontSize - let label - let xOffset - let yOffset + selfMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) + selfMouseClickEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) + selfMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) - const OPACITY = 1 - - /* We put the params.VALUE in the middle */ - - fontSize = 15 - - browserCanvasContext.font = 'bold ' + fontSize + 'px ' + UI_FONT.PRIMARY - label = 'FS' - - let labelPoint = { - x: thisObject.container.frame.width / 2 - label.length / 2 * fontSize * FONT_ASPECT_RATIO, - y: thisObject.container.frame.height - 9 + thisObject.status = 'Ready' } - labelPoint = thisObject.container.frame.frameThisPoint(labelPoint) - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + OPACITY + ')' - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) - } + function getContainer(point, purpose) { + if (thisObject.visible !== true) { return } + + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + return thisObject.container + } else { + return undefined + } + } + + function onMouseOver(point) { + if (thisObject.container.frame.isThisPointHere(point, true, false) === true) { + isMouseOver = true + } else { + isMouseOver = false + } + } + + function onMouseNotOver(point) { + isMouseOver = false + } + + function onMouseClick(event) { + if (thisObject.status !== 'On') { + thisObject.status = 'On' + goFullscreen() + CURRENT_TOP_MARGIN = 0 + AT_FULL_SCREEN_MODE = true + } else { + thisObject.status = 'Off' + goOutFullscreen() + CURRENT_TOP_MARGIN = TOP_MARGIN + AT_FULL_SCREEN_MODE = false + } + } + + function goFullscreen() { + if (browserCanvas.requestFullscreen) { + browserCanvas.requestFullscreen() + } else if (browserCanvas.mozRequestFullScreen) { + browserCanvas.mozRequestFullScreen() + } else if (browserCanvas.webkitRequestFullscreen) { + browserCanvas.webkitRequestFullscreen() + } else if (browserCanvas.msRequestFullscreen) { browserCanvas.msRequestFullscreen() } + } + + function goOutFullscreen() { + if (document.exitFullscreen) { + document.exitFullscreen() + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen() + } else if (document.webkitExitFullscreen) { + document.webkitExitFullscreen() + } else if (document.msExitFullscreen) { document.msExitFullscreen() } + } + + function physics() { + positionPhysics() + } + + function positionPhysics() { + thisObject.container.frame.position.x = thisObject.container.parentContainer.frame.width - thisObject.container.frame.width + thisObject.container.frame.position.y = 6 + } + + function draw() { + if (thisObject.visible !== true) { return } + drawBackground() + drawText() + } + + function drawBackground() { + let params = { + cornerRadius: 3, + lineWidth: 0.01, + container: thisObject.container, + borderColor: UI_COLOR.DARK, + castShadow: false, + opacity: 1 + } + + if (isMouseOver === true) { + params.backgroundColor = UI_COLOR.TURQUOISE + } else { + params.backgroundColor = UI_COLOR.DARK_TURQUOISE + } + + roundedCornersBackground(params) + } + + function drawText() { + let fontSize + let label + let xOffset + let yOffset + + const OPACITY = 1 + + /* We put the params.VALUE in the middle */ + + fontSize = 15 + + browserCanvasContext.font = 'bold ' + fontSize + 'px ' + UI_FONT.PRIMARY + label = 'FS' + + let labelPoint = { + x: thisObject.container.frame.width / 2 - label.length / 2 * fontSize * FONT_ASPECT_RATIO, + y: thisObject.container.frame.height - 9 + } + labelPoint = thisObject.container.frame.frameThisPoint(labelPoint) + + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + OPACITY + ')' + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) + } } diff --git a/CanvasApp/CockpitSpace/Speedometer.js b/CanvasApp/CockpitSpace/Speedometer.js index b2e26df1f..7d64af030 100644 --- a/CanvasApp/CockpitSpace/Speedometer.js +++ b/CanvasApp/CockpitSpace/Speedometer.js @@ -1,265 +1,265 @@ -function newSpeedometer () { - const MODULE_NAME = 'Speedometer' +function newSpeedometer() { + const MODULE_NAME = 'Speedometer' - let thisObject = { - visible: true, - container: undefined, - params: undefined, - physics: physics, - draw: draw, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - } - - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) - - thisObject.container.isDraggeable = false - thisObject.container.isWheelable = false - - return thisObject - - function finalize () { - thisObject.container.finalize() - thisObject.container = undefined - thisObject.params = undefined - } - - function initialize () { - - } - - function getContainer (point, purpose) { - if (thisObject.visible !== true) { return } - - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - return thisObject.container - } else { - return undefined - } - } - - function physics () { - - } - - function draw () { - if (thisObject.params === undefined) { return } - drawAssetCircle() - } - - function drawAssetCircle () { - const RED_LINE_HIGHT = 2 - const RADIUS = 50 - const OPACITY = 1 - - let centerPoint = { - x: 0, - y: 0 + let thisObject = { + visible: true, + container: undefined, + params: undefined, + physics: physics, + draw: draw, + getContainer: getContainer, + initialize: initialize, + finalize: finalize } - centerPoint = thisObject.container.frame.frameThisPoint(centerPoint) + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) - browserCanvasContext.beginPath() - browserCanvasContext.arc(centerPoint.x, centerPoint.y, RADIUS + RED_LINE_HIGHT, 0 * Math.PI, 2.0 * Math.PI) - browserCanvasContext.closePath() + thisObject.container.isDraggeable = false + thisObject.container.isWheelable = false - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + OPACITY + ')' - browserCanvasContext.fill() + return thisObject - browserCanvasContext.beginPath() - browserCanvasContext.arc(centerPoint.x, centerPoint.y, RADIUS, 0.0 * Math.PI, 2.0 * Math.PI) - browserCanvasContext.closePath() + function finalize() { + thisObject.container.finalize() + thisObject.container = undefined + thisObject.params = undefined + } - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.DARK_TURQUOISE + ', ' + OPACITY + ')' - browserCanvasContext.fill() + function initialize() { - /* We draw the circle bar */ + } - const DEFAULT_THICKNESS = 2 - const VALUE_THICKNESS = 8 - const VALUE_BG_THICKNESS = 1 - const BAR_RADIUS = RADIUS * 0.85 + function getContainer(point, purpose) { + if (thisObject.visible !== true) { return } - let BAR_START_ANGLE = 0.85 * Math.PI - let BAR_END_ANGLE = 2.15 * Math.PI - let CURRENT_VALUE_ANGLE = thisObject.params.VALUE * (BAR_END_ANGLE - BAR_START_ANGLE) / thisObject.params.MAX_VALUE + BAR_START_ANGLE - let MIN_VALUE_ANGLE = thisObject.params.MIN_VALUE * (BAR_END_ANGLE - BAR_START_ANGLE) / thisObject.params.MAX_VALUE + BAR_START_ANGLE - let INIT_VALUE_ANGLE = thisObject.params.INIT_VALUE * (BAR_END_ANGLE - BAR_START_ANGLE) / thisObject.params.MAX_VALUE + BAR_START_ANGLE - let PROFIT_VALUE_ANGLE = CURRENT_VALUE_ANGLE + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + return thisObject.container + } else { + return undefined + } + } - if (CURRENT_VALUE_ANGLE > INIT_VALUE_ANGLE) { CURRENT_VALUE_ANGLE = INIT_VALUE_ANGLE } - if (CURRENT_VALUE_ANGLE < MIN_VALUE_ANGLE) { CURRENT_VALUE_ANGLE = MIN_VALUE_ANGLE } - if (PROFIT_VALUE_ANGLE > BAR_END_ANGLE) { PROFIT_VALUE_ANGLE = BAR_END_ANGLE } + function physics() { - if ( - thisObject.params.VALUE > 0 && - thisObject.params.ASSET_NAME === thisObject.params.BASE_ASSET && - thisObject.params.POSITION_TAKEN === false - ) { - browserCanvasContext.setLineDash([0, 0]) + } - browserCanvasContext.beginPath() - browserCanvasContext.arc(centerPoint.x, centerPoint.y, BAR_RADIUS, BAR_START_ANGLE, MIN_VALUE_ANGLE) + function draw() { + if (thisObject.params === undefined) { return } + drawAssetCircle() + } - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = VALUE_BG_THICKNESS - browserCanvasContext.stroke() - browserCanvasContext.closePath() + function drawAssetCircle() { + const RED_LINE_HIGHT = 2 + const RADIUS = 50 + const OPACITY = 1 - browserCanvasContext.beginPath() - browserCanvasContext.arc(centerPoint.x, centerPoint.y, BAR_RADIUS, MIN_VALUE_ANGLE, CURRENT_VALUE_ANGLE) + let centerPoint = { + x: 0, + y: 0 + } - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = VALUE_BG_THICKNESS - browserCanvasContext.stroke() - browserCanvasContext.closePath() + centerPoint = thisObject.container.frame.frameThisPoint(centerPoint) - browserCanvasContext.beginPath() - browserCanvasContext.arc(centerPoint.x, centerPoint.y, BAR_RADIUS, CURRENT_VALUE_ANGLE, INIT_VALUE_ANGLE) - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RED + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = VALUE_BG_THICKNESS - browserCanvasContext.stroke() - browserCanvasContext.closePath() - - if (PROFIT_VALUE_ANGLE > INIT_VALUE_ANGLE) { browserCanvasContext.beginPath() - browserCanvasContext.arc(centerPoint.x, centerPoint.y, BAR_RADIUS, INIT_VALUE_ANGLE, PROFIT_VALUE_ANGLE) - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GREEN + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = VALUE_BG_THICKNESS - browserCanvasContext.stroke() + browserCanvasContext.arc(centerPoint.x, centerPoint.y, RADIUS + RED_LINE_HIGHT, 0 * Math.PI, 2.0 * Math.PI) browserCanvasContext.closePath() - } - browserCanvasContext.setLineDash([2, 3]) + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + OPACITY + ')' + browserCanvasContext.fill() - browserCanvasContext.beginPath() - browserCanvasContext.arc(centerPoint.x, centerPoint.y, BAR_RADIUS, BAR_START_ANGLE, MIN_VALUE_ANGLE) - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = VALUE_THICKNESS - browserCanvasContext.stroke() - browserCanvasContext.closePath() - - browserCanvasContext.beginPath() - browserCanvasContext.arc(centerPoint.x, centerPoint.y, BAR_RADIUS, MIN_VALUE_ANGLE, CURRENT_VALUE_ANGLE) - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = VALUE_THICKNESS - browserCanvasContext.stroke() - browserCanvasContext.closePath() - - browserCanvasContext.beginPath() - browserCanvasContext.arc(centerPoint.x, centerPoint.y, BAR_RADIUS, CURRENT_VALUE_ANGLE, INIT_VALUE_ANGLE) - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RED + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = VALUE_THICKNESS - browserCanvasContext.stroke() - browserCanvasContext.closePath() - - if (PROFIT_VALUE_ANGLE > INIT_VALUE_ANGLE) { browserCanvasContext.beginPath() - browserCanvasContext.arc(centerPoint.x, centerPoint.y, BAR_RADIUS, INIT_VALUE_ANGLE, PROFIT_VALUE_ANGLE) - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GREEN + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = VALUE_THICKNESS - browserCanvasContext.stroke() + browserCanvasContext.arc(centerPoint.x, centerPoint.y, RADIUS, 0.0 * Math.PI, 2.0 * Math.PI) browserCanvasContext.closePath() - } + + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.DARK_TURQUOISE + ', ' + OPACITY + ')' + browserCanvasContext.fill() + + /* We draw the circle bar */ + + const DEFAULT_THICKNESS = 2 + const VALUE_THICKNESS = 8 + const VALUE_BG_THICKNESS = 1 + const BAR_RADIUS = RADIUS * 0.85 + + let BAR_START_ANGLE = 0.85 * Math.PI + let BAR_END_ANGLE = 2.15 * Math.PI + let CURRENT_VALUE_ANGLE = thisObject.params.VALUE * (BAR_END_ANGLE - BAR_START_ANGLE) / thisObject.params.MAX_VALUE + BAR_START_ANGLE + let MIN_VALUE_ANGLE = thisObject.params.MIN_VALUE * (BAR_END_ANGLE - BAR_START_ANGLE) / thisObject.params.MAX_VALUE + BAR_START_ANGLE + let INIT_VALUE_ANGLE = thisObject.params.INIT_VALUE * (BAR_END_ANGLE - BAR_START_ANGLE) / thisObject.params.MAX_VALUE + BAR_START_ANGLE + let PROFIT_VALUE_ANGLE = CURRENT_VALUE_ANGLE + + if (CURRENT_VALUE_ANGLE > INIT_VALUE_ANGLE) { CURRENT_VALUE_ANGLE = INIT_VALUE_ANGLE } + if (CURRENT_VALUE_ANGLE < MIN_VALUE_ANGLE) { CURRENT_VALUE_ANGLE = MIN_VALUE_ANGLE } + if (PROFIT_VALUE_ANGLE > BAR_END_ANGLE) { PROFIT_VALUE_ANGLE = BAR_END_ANGLE } + + if ( + thisObject.params.VALUE > 0 && + thisObject.params.ASSET_NAME === thisObject.params.BASE_ASSET && + thisObject.params.POSITION_TAKEN === false + ) { + browserCanvasContext.setLineDash([0, 0]) + + browserCanvasContext.beginPath() + browserCanvasContext.arc(centerPoint.x, centerPoint.y, BAR_RADIUS, BAR_START_ANGLE, MIN_VALUE_ANGLE) + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = VALUE_BG_THICKNESS + browserCanvasContext.stroke() + browserCanvasContext.closePath() + + browserCanvasContext.beginPath() + browserCanvasContext.arc(centerPoint.x, centerPoint.y, BAR_RADIUS, MIN_VALUE_ANGLE, CURRENT_VALUE_ANGLE) + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = VALUE_BG_THICKNESS + browserCanvasContext.stroke() + browserCanvasContext.closePath() + + browserCanvasContext.beginPath() + browserCanvasContext.arc(centerPoint.x, centerPoint.y, BAR_RADIUS, CURRENT_VALUE_ANGLE, INIT_VALUE_ANGLE) + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RED + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = VALUE_BG_THICKNESS + browserCanvasContext.stroke() + browserCanvasContext.closePath() + + if (PROFIT_VALUE_ANGLE > INIT_VALUE_ANGLE) { + browserCanvasContext.beginPath() + browserCanvasContext.arc(centerPoint.x, centerPoint.y, BAR_RADIUS, INIT_VALUE_ANGLE, PROFIT_VALUE_ANGLE) + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GREEN + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = VALUE_BG_THICKNESS + browserCanvasContext.stroke() + browserCanvasContext.closePath() + } + + browserCanvasContext.setLineDash([2, 3]) + + browserCanvasContext.beginPath() + browserCanvasContext.arc(centerPoint.x, centerPoint.y, BAR_RADIUS, BAR_START_ANGLE, MIN_VALUE_ANGLE) + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = VALUE_THICKNESS + browserCanvasContext.stroke() + browserCanvasContext.closePath() + + browserCanvasContext.beginPath() + browserCanvasContext.arc(centerPoint.x, centerPoint.y, BAR_RADIUS, MIN_VALUE_ANGLE, CURRENT_VALUE_ANGLE) + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = VALUE_THICKNESS + browserCanvasContext.stroke() + browserCanvasContext.closePath() + + browserCanvasContext.beginPath() + browserCanvasContext.arc(centerPoint.x, centerPoint.y, BAR_RADIUS, CURRENT_VALUE_ANGLE, INIT_VALUE_ANGLE) + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RED + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = VALUE_THICKNESS + browserCanvasContext.stroke() + browserCanvasContext.closePath() + + if (PROFIT_VALUE_ANGLE > INIT_VALUE_ANGLE) { + browserCanvasContext.beginPath() + browserCanvasContext.arc(centerPoint.x, centerPoint.y, BAR_RADIUS, INIT_VALUE_ANGLE, PROFIT_VALUE_ANGLE) + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GREEN + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = VALUE_THICKNESS + browserCanvasContext.stroke() + browserCanvasContext.closePath() + } + } + + /* Common Variables */ + + let fontSize + let label + let xOffset + let yOffset + + /* We put the thisObject.params.VALUE in the middle */ + + label = thisObject.params.VALUE + + if (isNaN(label) === false) { + label = Number(label) + + label = dynamicDecimals(label, 2) + if (label === 0) { label = label.toFixed(2) } + } + + fontSize = 22 + if (label.length > 8) { + fontSize = 18 + } + if (label.length > 10) { + fontSize = 14 + } + if (label.length > 12) { + fontSize = 10 + } + if (label.length > 14) { + fontSize = 8 + } + + browserCanvasContext.font = 'bold ' + fontSize + 'px ' + UI_FONT.PRIMARY + + // label = label.substring(0, 6) + + xOffset = label.length / 2 * fontSize * FONT_ASPECT_RATIO + 7 + + labelPoint = { + x: centerPoint.x - xOffset, + y: centerPoint.y + } + + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + OPACITY + ')' + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) + + /* We put the top label */ + + fontSize = 12 + + browserCanvasContext.font = 'bold ' + fontSize + 'px ' + UI_FONT.PRIMARY + + label = thisObject.params.ASSET_LABEL + + xOffset = label.length / 2 * fontSize * FONT_ASPECT_RATIO + 3 + yOffset = 22 + + labelPoint = { + x: centerPoint.x - xOffset, + y: centerPoint.y - yOffset + } + + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + OPACITY + ')' + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) + + /* We put the bottom label */ + + fontSize = 12 + + browserCanvasContext.font = 'bold ' + fontSize + 'px ' + UI_FONT.PRIMARY + + label = thisObject.params.ASSET_NAME + ' ' + + xOffset = label.length / 2 * fontSize * FONT_ASPECT_RATIO + 3 + yOffset = -15 + + labelPoint = { + x: centerPoint.x - xOffset, + y: centerPoint.y - yOffset + } + + if (thisObject.params.ASSET_NAME === thisObject.params.BASE_ASSET) { + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + OPACITY + ')' + } else { + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + OPACITY + ')' + } + + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) } - - /* Common Variables */ - - let fontSize - let label - let xOffset - let yOffset - - /* We put the thisObject.params.VALUE in the middle */ - - label = thisObject.params.VALUE - - if (isNaN(label) === false) { - label = Number(label) - - label = dynamicDecimals(label, 2) - if (label === 0) { label = label.toFixed(2) } - } - - fontSize = 22 - if (label.length > 8) { - fontSize = 18 - } - if (label.length > 10) { - fontSize = 14 - } - if (label.length > 12) { - fontSize = 10 - } - if (label.length > 14) { - fontSize = 8 - } - - browserCanvasContext.font = 'bold ' + fontSize + 'px ' + UI_FONT.PRIMARY - - // label = label.substring(0, 6) - - xOffset = label.length / 2 * fontSize * FONT_ASPECT_RATIO + 7 - - labelPoint = { - x: centerPoint.x - xOffset, - y: centerPoint.y - } - - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + OPACITY + ')' - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) - - /* We put the top label */ - - fontSize = 12 - - browserCanvasContext.font = 'bold ' + fontSize + 'px ' + UI_FONT.PRIMARY - - label = thisObject.params.ASSET_LABEL - - xOffset = label.length / 2 * fontSize * FONT_ASPECT_RATIO + 3 - yOffset = 22 - - labelPoint = { - x: centerPoint.x - xOffset, - y: centerPoint.y - yOffset - } - - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + OPACITY + ')' - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) - - /* We put the bottom label */ - - fontSize = 12 - - browserCanvasContext.font = 'bold ' + fontSize + 'px ' + UI_FONT.PRIMARY - - label = thisObject.params.ASSET_NAME + ' ' - - xOffset = label.length / 2 * fontSize * FONT_ASPECT_RATIO + 3 - yOffset = -15 - - labelPoint = { - x: centerPoint.x - xOffset, - y: centerPoint.y - yOffset - } - - if (thisObject.params.ASSET_NAME === thisObject.params.BASE_ASSET) { - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + OPACITY + ')' - } else { - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + OPACITY + ')' - } - - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) - } } diff --git a/CanvasApp/Container.js b/CanvasApp/Container.js index 56cf14085..f3afb66e5 100644 --- a/CanvasApp/Container.js +++ b/CanvasApp/Container.js @@ -1,262 +1,262 @@ -function newContainer () { - let thisObject = { - id: newUniqueId(), - type: 'Rectangle', - frame: undefined, - eventHandler: undefined, - parentContainer: undefined, - isDraggeable: true, - notDraggingOnX: false, - notDraggingOnY: false, - isClickeable: false, - isWheelable: false, - detectMouseOver: false, - name: undefined, - fitFunction: undefined, - isVisibleFunction: undefined, - displace: displace, - initialize: initialize, - finalize: finalize, - connectToParent: connectToParent, - isForThisPurpose: isForThisPurpose - } - - let connectedToParentWidth = false - let connectedToParentHeight = false - let connectedToParentRadius = false - - let onDimmensionsChangedParentEvent = false - let onMouseOverParentEvent = false - let onMouseNotOverParentEvent = false - let onFocusParentEvent = false - let onNotFocusParentEvent = false - let onDisplaceParentEvent = false - let onDragStartedParentEvent = false - let onDragFinishedParentEvent = false - - let isConnectedToParent = false - - let dimensionsChangedEventSubscriptionId - let onMouseOverEventSubscriptionId - let onMouseNotOverEventSubscriptionId - let onFocusEventSubscriptionId - let onNotFocusEventSubscriptionId - let onDisplaceEventSubscriptionId - let onDragStartedEventSubscriptionId - let onDragFinishedEventSubscriptionId - - return thisObject - - function finalize () { - if (isConnectedToParent === true) { - thisObject.parentContainer.eventHandler.stopListening(dimensionsChangedEventSubscriptionId) - thisObject.parentContainer.eventHandler.stopListening(onMouseOverEventSubscriptionId) - thisObject.parentContainer.eventHandler.stopListening(onMouseNotOverEventSubscriptionId) - thisObject.parentContainer.eventHandler.stopListening(onFocusEventSubscriptionId) - thisObject.parentContainer.eventHandler.stopListening(onNotFocusEventSubscriptionId) - thisObject.parentContainer.eventHandler.stopListening(onDisplaceEventSubscriptionId) - thisObject.parentContainer.eventHandler.stopListening(onDragStartedEventSubscriptionId) - thisObject.parentContainer.eventHandler.stopListening(onDragFinishedEventSubscriptionId) - - thisObject.parentContainer = undefined - thisObject.eventHandler.finalize() - - thisObject.frame.finalize() - } - } - - function initialize (pName, pType) { - thisObject.name = pName - thisObject.type = pType - - thisObject.frame = newFrame() - thisObject.frame.initialize(pType) - if (pName !== undefined) { - thisObject.frame.containerName = pName - } - thisObject.frame.container = thisObject - - thisObject.eventHandler = newEventHandler() - thisObject.eventHandler.name = pName - } - - function connectToParent ( - parentContainer, - onWidth, - onHeight, - onRadius, - onDimmensionsChangedEvent, - onMouseOverEvent, - onMouseNotOverEvent, - onFocusEvent, - onNotFocusEvent, - onDisplaceEvent, - onDragStartedEvent, - onDragFinishedEvent - ) { - connectedToParentWidth = onWidth - connectedToParentHeight = onHeight - connectedToParentRadius = onRadius - - onDimmensionsChangedParentEvent = onDimmensionsChangedEvent - onMouseOverParentEvent = onMouseOverEvent - onMouseNotOverParentEvent = onMouseNotOverEvent - onFocusParentEvent = onFocusEvent - onNotFocusParentEvent = onNotFocusEvent - onDisplaceParentEvent = onDisplaceEvent - onDragStartedParentEvent = onDragStartedEvent - onDragFinishedParentEvent = onDragFinishedEvent - - isConnectedToParent = true - - thisObject.frame.parentFrame = parentContainer.frame - thisObject.parentContainer = parentContainer - - if (onDimmensionsChangedParentEvent === true) { - dimensionsChangedEventSubscriptionId = thisObject.parentContainer.eventHandler.listenToEvent('Dimmensions Changed', onParentDimmensionsChanged) - } - if (onMouseOverParentEvent === true) { - onMouseOverEventSubscriptionId = thisObject.parentContainer.eventHandler.listenToEvent('onMouseOver', onMouseOver) - } - if (onMouseNotOverParentEvent === true) { - onMouseNotOverEventSubscriptionId = thisObject.parentContainer.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) - } - if (onFocusParentEvent === true) { - onFocusEventSubscriptionId = thisObject.parentContainer.eventHandler.listenToEvent('onFocus', onFocus) - } - if (onNotFocusParentEvent === true) { - onNotFocusEventSubscriptionId = thisObject.parentContainer.eventHandler.listenToEvent('onNotFocus', onNotFocus) - } - if (onDisplaceParentEvent === true) { - onDisplaceEventSubscriptionId = thisObject.parentContainer.eventHandler.listenToEvent('onDisplace', onDisplace) - } - if (onDragStartedParentEvent === true) { - onDragStartedEventSubscriptionId = thisObject.parentContainer.eventHandler.listenToEvent('onDragStarted', onDragStarted) - } - if (onDragFinishedParentEvent === true) { - onDragFinishedEventSubscriptionId = thisObject.parentContainer.eventHandler.listenToEvent('onDragFinished', onDragFinished) +function newContainer() { + let thisObject = { + id: newUniqueId(), + type: 'Rectangle', + frame: undefined, + eventHandler: undefined, + parentContainer: undefined, + isDraggeable: true, + notDraggingOnX: false, + notDraggingOnY: false, + isClickeable: false, + isWheelable: false, + detectMouseOver: false, + name: undefined, + fitFunction: undefined, + isVisibleFunction: undefined, + displace: displace, + initialize: initialize, + finalize: finalize, + connectToParent: connectToParent, + isForThisPurpose: isForThisPurpose } - if (connectedToParentWidth) { - thisObject.frame.width = thisObject.parentContainer.frame.width - } - if (connectedToParentHeight) { - thisObject.frame.height = thisObject.parentContainer.frame.height - } - if (connectedToParentRadius) { - thisObject.frame.radius = thisObject.parentContainer.frame.radius - } - } + let connectedToParentWidth = false + let connectedToParentHeight = false + let connectedToParentRadius = false - function onParentDimmensionsChanged (event) { - let dimmensionsChanged = false - if (connectedToParentWidth) { - thisObject.frame.width = thisObject.parentContainer.frame.width - dimmensionsChanged = true - } - if (connectedToParentHeight) { - thisObject.frame.height = thisObject.parentContainer.frame.height - dimmensionsChanged = true - } - if (connectedToParentRadius) { - thisObject.frame.radius = thisObject.parentContainer.frame.radius - dimmensionsChanged = true + let onDimmensionsChangedParentEvent = false + let onMouseOverParentEvent = false + let onMouseNotOverParentEvent = false + let onFocusParentEvent = false + let onNotFocusParentEvent = false + let onDisplaceParentEvent = false + let onDragStartedParentEvent = false + let onDragFinishedParentEvent = false + + let isConnectedToParent = false + + let dimensionsChangedEventSubscriptionId + let onMouseOverEventSubscriptionId + let onMouseNotOverEventSubscriptionId + let onFocusEventSubscriptionId + let onNotFocusEventSubscriptionId + let onDisplaceEventSubscriptionId + let onDragStartedEventSubscriptionId + let onDragFinishedEventSubscriptionId + + return thisObject + + function finalize() { + if (isConnectedToParent === true) { + thisObject.parentContainer.eventHandler.stopListening(dimensionsChangedEventSubscriptionId) + thisObject.parentContainer.eventHandler.stopListening(onMouseOverEventSubscriptionId) + thisObject.parentContainer.eventHandler.stopListening(onMouseNotOverEventSubscriptionId) + thisObject.parentContainer.eventHandler.stopListening(onFocusEventSubscriptionId) + thisObject.parentContainer.eventHandler.stopListening(onNotFocusEventSubscriptionId) + thisObject.parentContainer.eventHandler.stopListening(onDisplaceEventSubscriptionId) + thisObject.parentContainer.eventHandler.stopListening(onDragStartedEventSubscriptionId) + thisObject.parentContainer.eventHandler.stopListening(onDragFinishedEventSubscriptionId) + + thisObject.parentContainer = undefined + thisObject.eventHandler.finalize() + + thisObject.frame.finalize() + } } - if (dimmensionsChanged) { - thisObject.eventHandler.raiseEvent('Dimmensions Changed', event) + function initialize(pName, pType) { + thisObject.name = pName + thisObject.type = pType + + thisObject.frame = newFrame() + thisObject.frame.initialize(pType) + if (pName !== undefined) { + thisObject.frame.containerName = pName + } + thisObject.frame.container = thisObject + + thisObject.eventHandler = newEventHandler() + thisObject.eventHandler.name = pName } - } - function onMouseOver (event) { - thisObject.eventHandler.raiseEvent('onMouseOver', event) - } + function connectToParent( + parentContainer, + onWidth, + onHeight, + onRadius, + onDimmensionsChangedEvent, + onMouseOverEvent, + onMouseNotOverEvent, + onFocusEvent, + onNotFocusEvent, + onDisplaceEvent, + onDragStartedEvent, + onDragFinishedEvent + ) { + connectedToParentWidth = onWidth + connectedToParentHeight = onHeight + connectedToParentRadius = onRadius - function onMouseNotOver (event) { - thisObject.eventHandler.raiseEvent('onMouseNotOver', event) - } + onDimmensionsChangedParentEvent = onDimmensionsChangedEvent + onMouseOverParentEvent = onMouseOverEvent + onMouseNotOverParentEvent = onMouseNotOverEvent + onFocusParentEvent = onFocusEvent + onNotFocusParentEvent = onNotFocusEvent + onDisplaceParentEvent = onDisplaceEvent + onDragStartedParentEvent = onDragStartedEvent + onDragFinishedParentEvent = onDragFinishedEvent - function onFocus (event) { - thisObject.eventHandler.raiseEvent('onFocus', event) - } + isConnectedToParent = true - function onNotFocus (event) { - thisObject.eventHandler.raiseEvent('onNotFocus', event) - } + thisObject.frame.parentFrame = parentContainer.frame + thisObject.parentContainer = parentContainer - function onDisplace (event) { - thisObject.eventHandler.raiseEvent('onDisplace', event) - } + if (onDimmensionsChangedParentEvent === true) { + dimensionsChangedEventSubscriptionId = thisObject.parentContainer.eventHandler.listenToEvent('Dimmensions Changed', onParentDimmensionsChanged) + } + if (onMouseOverParentEvent === true) { + onMouseOverEventSubscriptionId = thisObject.parentContainer.eventHandler.listenToEvent('onMouseOver', onMouseOver) + } + if (onMouseNotOverParentEvent === true) { + onMouseNotOverEventSubscriptionId = thisObject.parentContainer.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) + } + if (onFocusParentEvent === true) { + onFocusEventSubscriptionId = thisObject.parentContainer.eventHandler.listenToEvent('onFocus', onFocus) + } + if (onNotFocusParentEvent === true) { + onNotFocusEventSubscriptionId = thisObject.parentContainer.eventHandler.listenToEvent('onNotFocus', onNotFocus) + } + if (onDisplaceParentEvent === true) { + onDisplaceEventSubscriptionId = thisObject.parentContainer.eventHandler.listenToEvent('onDisplace', onDisplace) + } + if (onDragStartedParentEvent === true) { + onDragStartedEventSubscriptionId = thisObject.parentContainer.eventHandler.listenToEvent('onDragStarted', onDragStarted) + } + if (onDragFinishedParentEvent === true) { + onDragFinishedEventSubscriptionId = thisObject.parentContainer.eventHandler.listenToEvent('onDragFinished', onDragFinished) + } - function onDragStarted (event) { - thisObject.eventHandler.raiseEvent('onDragStarted', event) - } - - function onDragFinished (event) { - thisObject.eventHandler.raiseEvent('onDragFinished', event) - } - - function isForThisPurpose (purpose) { - if (purpose !== undefined) { - switch (purpose) { - case GET_CONTAINER_PURPOSE.MOUSE_OVER: - if (thisObject.detectMouseOver === true) { - return true - } - break - case GET_CONTAINER_PURPOSE.MOUSE_WHEEL: - if (thisObject.isWheelable === true) { - return true - } - break - case GET_CONTAINER_PURPOSE.MOUSE_CLICK: - if (thisObject.isClickeable === true) { - return true - } - break - case GET_CONTAINER_PURPOSE.DRAGGING: - if (thisObject.isDraggeable === true) { - return true - } - break - default: { return false } - - } + if (connectedToParentWidth) { + thisObject.frame.width = thisObject.parentContainer.frame.width + } + if (connectedToParentHeight) { + thisObject.frame.height = thisObject.parentContainer.frame.height + } + if (connectedToParentRadius) { + thisObject.frame.radius = thisObject.parentContainer.frame.radius + } } - return false - } - function displace (point) { - /* This function will move the container according to the vector received. If it has a visible function will use it - to see if the container can be moved there or not. It wont if the center will not be visible. + function onParentDimmensionsChanged(event) { + let dimmensionsChanged = false + if (connectedToParentWidth) { + thisObject.frame.width = thisObject.parentContainer.frame.width + dimmensionsChanged = true + } + if (connectedToParentHeight) { + thisObject.frame.height = thisObject.parentContainer.frame.height + dimmensionsChanged = true + } + if (connectedToParentRadius) { + thisObject.frame.radius = thisObject.parentContainer.frame.radius + dimmensionsChanged = true + } - Returns true if move was possible, false if not. */ + if (dimmensionsChanged) { + thisObject.eventHandler.raiseEvent('Dimmensions Changed', event) + } + } - let checkPoint = {} + function onMouseOver(event) { + thisObject.eventHandler.raiseEvent('onMouseOver', event) + } - if (thisObject.isVisibleFunction === undefined) { - drag() - return true - } else { - checkPoint.x = thisObject.frame.position.x + point.x + thisObject.frame.width / 2 - checkPoint.y = thisObject.frame.position.y + point.y + thisObject.frame.height / 2 - let isVisible = thisObject.isVisibleFunction(checkPoint) - if (isVisible === true) { - drag() - return true - } else { + function onMouseNotOver(event) { + thisObject.eventHandler.raiseEvent('onMouseNotOver', event) + } + + function onFocus(event) { + thisObject.eventHandler.raiseEvent('onFocus', event) + } + + function onNotFocus(event) { + thisObject.eventHandler.raiseEvent('onNotFocus', event) + } + + function onDisplace(event) { + thisObject.eventHandler.raiseEvent('onDisplace', event) + } + + function onDragStarted(event) { + thisObject.eventHandler.raiseEvent('onDragStarted', event) + } + + function onDragFinished(event) { + thisObject.eventHandler.raiseEvent('onDragFinished', event) + } + + function isForThisPurpose(purpose) { + if (purpose !== undefined) { + switch (purpose) { + case GET_CONTAINER_PURPOSE.MOUSE_OVER: + if (thisObject.detectMouseOver === true) { + return true + } + break + case GET_CONTAINER_PURPOSE.MOUSE_WHEEL: + if (thisObject.isWheelable === true) { + return true + } + break + case GET_CONTAINER_PURPOSE.MOUSE_CLICK: + if (thisObject.isClickeable === true) { + return true + } + break + case GET_CONTAINER_PURPOSE.DRAGGING: + if (thisObject.isDraggeable === true) { + return true + } + break + default: { return false } + + } + } return false - } } - function drag () { - if (thisObject.notDraggingOnX === false) { - thisObject.frame.position.x = thisObject.frame.position.x + point.x - } - if (thisObject.notDraggingOnY === false) { - thisObject.frame.position.y = thisObject.frame.position.y + point.y - } - thisObject.eventHandler.raiseEvent('onDisplace', event) + + function displace(point) { + /* This function will move the container according to the vector received. If it has a visible function will use it + to see if the container can be moved there or not. It wont if the center will not be visible. + + Returns true if move was possible, false if not. */ + + let checkPoint = {} + + if (thisObject.isVisibleFunction === undefined) { + drag() + return true + } else { + checkPoint.x = thisObject.frame.position.x + point.x + thisObject.frame.width / 2 + checkPoint.y = thisObject.frame.position.y + point.y + thisObject.frame.height / 2 + let isVisible = thisObject.isVisibleFunction(checkPoint) + if (isVisible === true) { + drag() + return true + } else { + return false + } + } + function drag() { + if (thisObject.notDraggingOnX === false) { + thisObject.frame.position.x = thisObject.frame.position.x + point.x + } + if (thisObject.notDraggingOnY === false) { + thisObject.frame.position.y = thisObject.frame.position.y + point.y + } + thisObject.eventHandler.raiseEvent('onDisplace', event) + } } - } } diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/CCXTFunctions.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/CCXTFunctions.js deleted file mode 100644 index e89b15e3b..000000000 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/CCXTFunctions.js +++ /dev/null @@ -1,224 +0,0 @@ -function newCCXTFunctions () { - thisObject = { - addMissingExchanges: addMissingExchanges, - addMissingAssets: addMissingAssets, - addMissingMarkets: addMissingMarkets - } - - return thisObject - - function addMissingExchanges (node, functionLibraryUiObjectsFromNodes) { - currentExchanges = new Map() - let parent = node.payload.parentNode - if (parent !== undefined) { - for (let i = 0; i < parent.cryptoExchanges.length; i++) { - let cryptoExchanges = parent.cryptoExchanges[i] - for (let j = 0; j < cryptoExchanges.exchanges.length; j++) { - let exchange = cryptoExchanges.exchanges[j] - let codeName = loadPropertyFromNodeConfig(exchange.payload, 'codeName') - currentExchanges.set(codeName, exchange) - } - } - } - - let params = { - method: 'listExchanges', - has: { - fetchOHLCV: true, - fetchMarkets: true - } - } - - callServer(JSON.stringify(params), 'CCXT', onResponse) - - function onResponse (err, data) { - if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { - node.payload.uiObject.setErrorMessage('Failed to Fetch Assets from the Exchange') - return - } - - let exchanges = JSON.parse(data) - for (let i = 0; i < exchanges.length; i++) { - let exchange = exchanges[i] - let existingExchange = currentExchanges.get(exchange.id) - if (existingExchange === undefined) { - let newExchange = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Crypto Exchange') - newExchange.name = exchange.name - newExchange.code = '{ \n\"codeName\": \"' + exchange.id + '\"\n}' - newExchange.payload.floatingObject.collapseToggle() - newExchange.exchangeAssets.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 - newExchange.exchangeMarkets.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 - newExchange.exchangeAccounts.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 - newExchange.exchangeAssets.payload.floatingObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_050X - newExchange.exchangeMarkets.payload.floatingObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_100X - newExchange.exchangeAccounts.payload.floatingObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_025X - newExchange.exchangeAssets.payload.floatingObject.arrangementStyle = ARRANGEMENT_STYLE.CONCAVE - newExchange.exchangeMarkets.payload.floatingObject.arrangementStyle = ARRANGEMENT_STYLE.CONCAVE - newExchange.exchangeAccounts.payload.floatingObject.arrangementStyle = ARRANGEMENT_STYLE.CONCAVE - } - } - } - } - - function addMissingAssets (node, functionLibraryUiObjectsFromNodes) { - if (node.payload.parentNode === undefined) { return } - - let currentAssets = new Map() - for (let j = 0; j < node.assets.length; j++) { - let asset = node.assets[j] - let codeName = loadPropertyFromNodeConfig(asset.payload, 'codeName') - currentAssets.set(codeName, asset) - } - - let exchangeId = loadPropertyFromNodeConfig(node.payload.parentNode.payload, 'codeName') - - try { - let params = { - exchangeId: exchangeId, - method: 'fetchMarkets' - } - callServer(JSON.stringify(params), 'CCXT', onResponse) - - function onResponse (err, data) { - if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { - node.payload.uiObject.setErrorMessage('Failed to Fetch Assets from the Exchange') - return - } - let queryParams = loadPropertyFromNodeConfig(node.payload, 'addMissingAssets') - - let markets = JSON.parse(data) - for (let i = 0; i < markets.length; i++) { - let market = markets[i] - - if (queryParams !== undefined) { - if (queryParams.baseAsset !== undefined) { - if (market.base.indexOf(queryParams.baseAsset) < 0) { - continue - } - } - if (queryParams.quotedAsset !== undefined) { - if (market.quote.indexOf(queryParams.quotedAsset) < 0) { - continue - } - } - } - if (currentAssets.get(market.base) === undefined) { - addAsset(market.base) - currentAssets.set(market.base, market.base) - } - if (currentAssets.get(market.quote) === undefined) { - addAsset(market.quote) - currentAssets.set(market.quote, market.quote) - } - - function addAsset (name) { - let newAsseet = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Asset') - newAsseet.name = name - newAsseet.code = '{ \n\"codeName\": \"' + name + '\"\n}' - } - } - } - } catch (err) { - node.payload.uiObject.setErrorMessage('Failed to Fetch Assets from the Exchange') - console.log(err.stack) - } - } - - function addMissingMarkets (node, functionLibraryUiObjectsFromNodes, functionLibraryNodeCloning) { - if (node.payload.parentNode === undefined) { return } - if (node.payload.parentNode.exchangeAssets === undefined) { return } - if (node.payload.parentNode.payload.parentNode === undefined) { return } - if (node.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { return } - if (node.payload.parentNode.payload.parentNode.payload.parentNode.superActions === undefined) { return } - - let currentAssets = new Map() - let exchangeAssets = node.payload.parentNode.exchangeAssets - for (let j = 0; j < exchangeAssets.assets.length; j++) { - let asset = exchangeAssets.assets[j] - let codeName = loadPropertyFromNodeConfig(asset.payload, 'codeName') - currentAssets.set(codeName, asset) - } - - let currentMarkets = new Map() - let exchangeMarkets = node - for (let j = 0; j < exchangeMarkets.markets.length; j++) { - let asset = exchangeMarkets.markets[j] - let codeName = loadPropertyFromNodeConfig(asset.payload, 'codeName') - currentMarkets.set(codeName, asset) - } - - let exchangeId = loadPropertyFromNodeConfig(node.payload.parentNode.payload, 'codeName') - - try { - let params = { - exchangeId: exchangeId, - method: 'fetchMarkets' - } - callServer(JSON.stringify(params), 'CCXT', onResponse) - - function onResponse (err, data) { - if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { - node.payload.uiObject.setErrorMessage('Failed to Fetch Assets from the Exchange') - return - } - - let markets = JSON.parse(data) - for (let i = 0; i < markets.length; i++) { - let market = markets[i] - let baseAsset = currentAssets.get(market.base) - let quotedAsset = currentAssets.get(market.quote) - - if (baseAsset === undefined) { - continue - } - if (quotedAsset === undefined) { - continue - } - - if (currentMarkets.get(market.symbol) === undefined) { - addMarket(market.symbol, baseAsset, quotedAsset) - } - - function addMarket (name, baseAsset, quotedAsset) { - let newMarket = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Market') - newMarket.name = name - newMarket.code = '{ \n\"codeName\": \"' + name + '\"\n}' - newMarket.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 - newMarket.payload.floatingObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_050X - newMarket.payload.floatingObject.arrangementStyle = ARRANGEMENT_STYLE.CONCAVE - newMarket.baseAsset.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_45 - newMarket.quotedAsset.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_45 - newMarket.baseAsset.payload.floatingObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_100X - newMarket.quotedAsset.payload.floatingObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_150X - newMarket.baseAsset.payload.floatingObject.arrangementStyle = ARRANGEMENT_STYLE.CONCAVE - newMarket.quotedAsset.payload.floatingObject.arrangementStyle = ARRANGEMENT_STYLE.CONCAVE - newMarket.baseAsset.payload.referenceParent = baseAsset - newMarket.quotedAsset.payload.referenceParent = quotedAsset - - currentMarkets.set(name, newMarket) - - let superActions = node.payload.parentNode.payload.parentNode.payload.parentNode.superActions - - for (let j = 0; j < superActions.superActions.length; j++) { - let superAction = superActions.superActions[j] - let clone = functionLibraryNodeCloning.getNodeClone(superAction) - functionLibraryUiObjectsFromNodes.createUiObjectFromNode(clone, newMarket, newMarket) - newMarket.superActions.push(clone) - switch (j) { - case 0: - clone.payload.floatingObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_025X - break - case 1: - clone.payload.floatingObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_050X - break - } - } - } - } - } - } catch (err) { - node.payload.uiObject.setErrorMessage('Failed to Fetch Assets from the Exchange') - console.log(err.stack) - } - } -} diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ChainAttachDetach.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ChainAttachDetach.js index 44dd1e1db..faff8bafb 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ChainAttachDetach.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ChainAttachDetach.js @@ -1,221 +1,221 @@ -function newChainAttachDetach () { - thisObject = { - chainDetachNode: chainDetachNode, - chainAttachNode: chainAttachNode - } +function newChainAttachDetach() { + thisObject = { + chainDetachNode: chainDetachNode, + chainAttachNode: chainAttachNode + } - return thisObject + return thisObject - function chainDetachNode (node, rootNodes) { - if (node.payload.parentNode === undefined) { return } - switch (node.type) { - case 'Phase': { - let payload = node.payload - for (let i = 0; i < payload.parentNode.phases.length; i++) { - let phase = payload.parentNode.phases[i] - if (phase.id === node.id) { - if (i < payload.parentNode.phases.length - 1) { - let nextPhase = payload.parentNode.phases[i + 1] - if (i > 0) { - let previousPhase = payload.parentNode.phases[i - 1] - nextPhase.payload.chainParent = previousPhase - } else { - nextPhase.payload.chainParent = payload.parentNode - } - } - payload.parentNode.phases.splice(i, 1) - completeDetachment(node, rootNodes) - return - } - } - return - } - default: { - let nodeDefinition = APP_SCHEMA_MAP.get(node.type) - if (nodeDefinition !== undefined) { - /* Detach from parent */ - if (node.payload.parentNode !== undefined) { - let parentNodeDefinition = APP_SCHEMA_MAP.get(node.payload.parentNode.type) - if (parentNodeDefinition !== undefined) { - if (parentNodeDefinition.properties !== undefined) { - for (let i = 0; i < parentNodeDefinition.properties.length; i++) { - let property = parentNodeDefinition.properties[i] - if (nodeDefinition.propertyNameAtParent === property.name) { - switch (property.type) { - case 'node': { - node.payload.parentNode[property.name] = undefined - } - break - case 'array': { - let nodePropertyArray = node.payload.parentNode[property.name] - if (nodePropertyArray !== undefined) { - for (let j = 0; j < nodePropertyArray.length; j++) { - let arrayItem = nodePropertyArray[j] - if (arrayItem.id === node.id) { - nodePropertyArray.splice(j, 1) + function chainDetachNode(node, rootNodes) { + if (node.payload.parentNode === undefined) { return } + switch (node.type) { + case 'Phase': { + let payload = node.payload + for (let i = 0; i < payload.parentNode.phases.length; i++) { + let phase = payload.parentNode.phases[i] + if (phase.id === node.id) { + if (i < payload.parentNode.phases.length - 1) { + let nextPhase = payload.parentNode.phases[i + 1] + if (i > 0) { + let previousPhase = payload.parentNode.phases[i - 1] + nextPhase.payload.chainParent = previousPhase + } else { + nextPhase.payload.chainParent = payload.parentNode } - } } - } - break + payload.parentNode.phases.splice(i, 1) + completeDetachment(node, rootNodes) + return } - } } - } + return + } + default: { + let nodeDefinition = getNodeDefinition(node) + if (nodeDefinition !== undefined) { + /* Detach from parent */ + if (node.payload.parentNode !== undefined) { + let parentNodeDefinition = getNodeDefinition(node.payload.parentNode) + if (parentNodeDefinition !== undefined) { + if (parentNodeDefinition.properties !== undefined) { + for (let i = 0; i < parentNodeDefinition.properties.length; i++) { + let property = parentNodeDefinition.properties[i] + if (nodeDefinition.propertyNameAtParent === property.name) { + switch (property.type) { + case 'node': { + node.payload.parentNode[property.name] = undefined + } + break + case 'array': { + let nodePropertyArray = node.payload.parentNode[property.name] + if (nodePropertyArray !== undefined) { + for (let j = 0; j < nodePropertyArray.length; j++) { + let arrayItem = nodePropertyArray[j] + if (arrayItem.id === node.id) { + nodePropertyArray.splice(j, 1) + } + } + } + } + break + } + } + } + } + } + } + completeDetachment(node, rootNodes) + } } - } - completeDetachment(node, rootNodes) } - } } - } - function chainAttachNode (node, attachToNode, rootNodes) { - switch (node.type) { + function chainAttachNode(node, attachToNode, rootNodes) { + switch (node.type) { - case 'Exchange Account Key': { - node.payload.parentNode = attachToNode - node.payload.chainParent = attachToNode - if (node.payload.parentNode.keys !== undefined) { - node.payload.parentNode.keys.push(node) - } else { - node.payload.parentNode.key = node - } - completeAttachment(node, rootNodes) - } - break - - case 'Phase': { - switch (attachToNode.type) { - case 'Stop': { - node.payload.parentNode = attachToNode - if (attachToNode.phases.length > 0) { - let phase = attachToNode.phases[attachToNode.phases.length - 1] - node.payload.chainParent = phase - } else { - node.payload.chainParent = attachToNode - } - attachToNode.phases.push(node) - completeAttachment(node, rootNodes) - } - break - case 'Take Profit': { - node.payload.parentNode = attachToNode - if (attachToNode.phases.length > 0) { - let phase = attachToNode.phases[attachToNode.phases.length - 1] - node.payload.chainParent = phase - } else { - node.payload.chainParent = attachToNode - } - attachToNode.phases.push(node) - completeAttachment(node, rootNodes) - } - break - case 'Initial Stop': { - if (attachToNode.phases.length >= 1) { - return - } - - node.payload.parentNode = attachToNode - if (attachToNode.phases.length > 0) { - let phase = attachToNode.phases[attachToNode.phases.length - 1] - node.payload.chainParent = phase - } else { - node.payload.chainParent = attachToNode - } - attachToNode.phases.push(node) - completeAttachment(node, rootNodes) - } - break - case 'Initial Take Profit': { - if (attachToNode.phases.length >= 1) { - return - } - node.payload.parentNode = attachToNode - if (attachToNode.phases.length > 0) { - let phase = attachToNode.phases[attachToNode.phases.length - 1] - node.payload.chainParent = phase - } else { - node.payload.chainParent = attachToNode - } - attachToNode.phases.push(node) - completeAttachment(node, rootNodes) - } - break - case 'Phase': { - node.payload.parentNode = attachToNode.payload.parentNode - for (let i = 0; i < node.payload.parentNode.phases.length; i++) { - let phase = node.payload.parentNode.phases[i] - if (attachToNode.id === phase.id) { - if (i === node.payload.parentNode.phases.length - 1) { - node.payload.chainParent = attachToNode - node.payload.parentNode.phases.push(node) - completeAttachment(node, rootNodes) + case 'Exchange Account Key': { + node.payload.parentNode = attachToNode + node.payload.chainParent = attachToNode + if (node.payload.parentNode.keys !== undefined) { + node.payload.parentNode.keys.push(node) } else { - node.payload.chainParent = attachToNode - let nextPhase = node.payload.parentNode.phases[i + 1] - nextPhase.payload.chainParent = node - node.payload.parentNode.phases.splice(i + 1, 0, node) - completeAttachment(node, rootNodes) - return + node.payload.parentNode.key = node } - } + completeAttachment(node, rootNodes) } - } - } - } - break - default: { - let nodeDefinition = APP_SCHEMA_MAP.get(node.type) - if (nodeDefinition !== undefined) { - node.payload.parentNode = attachToNode - node.payload.chainParent = attachToNode - /* Attach to new parent */ - if (node.payload.parentNode !== undefined) { - let parentNodeDefinition = APP_SCHEMA_MAP.get(node.payload.parentNode.type) - if (parentNodeDefinition !== undefined) { - if (parentNodeDefinition.properties !== undefined) { - for (let i = 0; i < parentNodeDefinition.properties.length; i++) { - let property = parentNodeDefinition.properties[i] - if (nodeDefinition.propertyNameAtParent === property.name) { - switch (property.type) { - case 'node': { - node.payload.parentNode[property.name] = node - } + break + + case 'Phase': { + switch (attachToNode.type) { + case 'Stop': { + node.payload.parentNode = attachToNode + if (attachToNode.phases.length > 0) { + let phase = attachToNode.phases[attachToNode.phases.length - 1] + node.payload.chainParent = phase + } else { + node.payload.chainParent = attachToNode + } + attachToNode.phases.push(node) + completeAttachment(node, rootNodes) + } break - case 'array': { - if (node.payload.parentNode[property.name] === undefined) { - node.payload.parentNode[property.name] = [] + case 'Take Profit': { + node.payload.parentNode = attachToNode + if (attachToNode.phases.length > 0) { + let phase = attachToNode.phases[attachToNode.phases.length - 1] + node.payload.chainParent = phase + } else { + node.payload.chainParent = attachToNode + } + attachToNode.phases.push(node) + completeAttachment(node, rootNodes) + } + break + case 'Initial Stop': { + if (attachToNode.phases.length >= 1) { + return + } + + node.payload.parentNode = attachToNode + if (attachToNode.phases.length > 0) { + let phase = attachToNode.phases[attachToNode.phases.length - 1] + node.payload.chainParent = phase + } else { + node.payload.chainParent = attachToNode + } + attachToNode.phases.push(node) + completeAttachment(node, rootNodes) + } + break + case 'Initial Take Profit': { + if (attachToNode.phases.length >= 1) { + return + } + node.payload.parentNode = attachToNode + if (attachToNode.phases.length > 0) { + let phase = attachToNode.phases[attachToNode.phases.length - 1] + node.payload.chainParent = phase + } else { + node.payload.chainParent = attachToNode + } + attachToNode.phases.push(node) + completeAttachment(node, rootNodes) + } + break + case 'Phase': { + node.payload.parentNode = attachToNode.payload.parentNode + for (let i = 0; i < node.payload.parentNode.phases.length; i++) { + let phase = node.payload.parentNode.phases[i] + if (attachToNode.id === phase.id) { + if (i === node.payload.parentNode.phases.length - 1) { + node.payload.chainParent = attachToNode + node.payload.parentNode.phases.push(node) + completeAttachment(node, rootNodes) + } else { + node.payload.chainParent = attachToNode + let nextPhase = node.payload.parentNode.phases[i + 1] + nextPhase.payload.chainParent = node + node.payload.parentNode.phases.splice(i + 1, 0, node) + completeAttachment(node, rootNodes) + return + } + } } - let nodePropertyArray = node.payload.parentNode[property.name] - nodePropertyArray.push(node) - } - break } - } } - } } - } - completeAttachment(node, rootNodes) + break + default: { + let nodeDefinition = getNodeDefinition(node) + if (nodeDefinition !== undefined) { + node.payload.parentNode = attachToNode + node.payload.chainParent = attachToNode + /* Attach to new parent */ + if (node.payload.parentNode !== undefined) { + let parentNodeDefinition = getNodeDefinition(node.payload.parentNode) + if (parentNodeDefinition !== undefined) { + if (parentNodeDefinition.properties !== undefined) { + for (let i = 0; i < parentNodeDefinition.properties.length; i++) { + let property = parentNodeDefinition.properties[i] + if (nodeDefinition.propertyNameAtParent === property.name) { + switch (property.type) { + case 'node': { + node.payload.parentNode[property.name] = node + } + break + case 'array': { + if (node.payload.parentNode[property.name] === undefined) { + node.payload.parentNode[property.name] = [] + } + let nodePropertyArray = node.payload.parentNode[property.name] + nodePropertyArray.push(node) + } + break + } + } + } + } + } + } + completeAttachment(node, rootNodes) + } + } } - } } - } - function completeDetachment (node, rootNodes) { - node.payload.parentNode = undefined - node.payload.chainParent = undefined - rootNodes.push(node) - } + function completeDetachment(node, rootNodes) { + node.payload.parentNode = undefined + node.payload.chainParent = undefined + rootNodes.push(node) + } - function completeAttachment (node, rootNodes) { - for (let i = 0; i < rootNodes.length; i++) { - let rootNode = rootNodes[i] - if (rootNode.id === node.id) { - rootNodes.splice(i, 1) - return - } + function completeAttachment(node, rootNodes) { + for (let i = 0; i < rootNodes.length; i++) { + let rootNode = rootNodes[i] + if (rootNode.id === node.id) { + rootNodes.splice(i, 1) + return + } + } } - } } diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ChartingSpaceFunctions.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ChartingSpaceFunctions.js new file mode 100644 index 000000000..ded2d034d --- /dev/null +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ChartingSpaceFunctions.js @@ -0,0 +1,233 @@ +function newChartingSpaceFunctions() { + thisObject = { + addAllMineLayers: addAllMineLayers, + addMissingDashboards: addMissingDashboards, + addMissingTimeMachines: addMissingTimeMachines, + createTimeMachine: createTimeMachine + } + + return thisObject + + function addAllMineLayers(node, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) { + + /* Validations to see if we can do this or not. */ + if (node.payload === undefined) { return } + if (node.payload.uiObject === undefined) { return } + if (node.payload.referenceParent === undefined) { + node.payload.uiObject.setErrorMessage('You need to have a reference parent node to execute this action.') + return + } + if (node.payload.referenceParent.payload === undefined) { + node.payload.uiObject.setErrorMessage('You need to have a reference parent node to execute this action.') + return + } + + /* + We are going to go through the referenced branch and recreate the structure + we find there inside the layers manager. We will end up having at the end + all layers referencing the data products inside the referenced branch. + */ + let dataMine = node.payload.referenceParent + scanBotArray(dataMine.botProducts) + + function scanBotArray(botArray) { + for (let i = 0; i < botArray.length; i++) { + let bot = botArray[i] + let botLayers = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Bot Layers') + botLayers.name = bot.name + + asymetricalFolderStructureCloning( + bot, + botLayers, + 'dataProducts', + 'dataProductFolders', + 'layerFolders', + 'Layer', + 'Layer Folder', + undefined, + functionLibraryUiObjectsFromNodes + ) + /* + There are some layers that should not exist, for example the ones related to Data Products + that do not have a plotter module. Since our previous action created all layers no matter + what, we need now to delete all the ones that do not have a plotter module. + */ + let allLayers = nodeBranchToArray(botLayers, 'Layer') + for (let j = 0; j < allLayers.length; j++) { + let layer = allLayers[j] + + let plotterModule = findNodeInNodeMesh(layer, 'Plotter Module', undefined, true, false, false, true) + if (plotterModule === undefined) { + functionLibraryNodeDeleter.deleteUIObject(layer, rootNodes) + } + } + } + } + } + + function addMissingTimeMachines(node, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) { + if (node.payload.referenceParent === undefined) { + node.payload.uiObject.setErrorMessage('This node needs to have a Reference Parent for this command tu run.') + return + } + + for (let i = 0; i < rootNodes.length; i++) { + let rootNode = rootNodes[i] + if (rootNode.type === 'Network') { + let networkNode = rootNode + scanNetworkNode(networkNode) + } + } + + function scanNetworkNode(networkNode) { + if (networkNode === undefined) { return } + + let backtestingSessionsArray = nodeBranchToArray(networkNode, 'Backtesting Session') + let fordwardTestingSessionsArray = nodeBranchToArray(networkNode, 'Forward Testing Session') + let paperTradingSessionsArray = nodeBranchToArray(networkNode, 'Paper Trading Session') + let liveTradingSessionsArray = nodeBranchToArray(networkNode, 'Live Trading Session') + + scanSessionArray(backtestingSessionsArray) + scanSessionArray(fordwardTestingSessionsArray) + scanSessionArray(paperTradingSessionsArray) + scanSessionArray(liveTradingSessionsArray) + + function scanSessionArray(sessionsArray) { + for (let i = 0; i < sessionsArray.length; i++) { + let session = sessionsArray[i] + let environment = findNodeInNodeMesh(session, node.payload.referenceParent.type, undefined, true, false, true, false) + if (environment === undefined) { continue } + if (environment.id !== node.payload.referenceParent.id) { continue } + let market = findNodeInNodeMesh(session, 'Market Trading Tasks', undefined, true, false, true, false) + if (market.payload.referenceParent === undefined) { continue } + if (isMissingChildren(node, session, true) === true) { + createTimeMachine(node, session, market.payload.referenceParent, networkNode, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) + } + } + } + } + } + + function createTimeMachine(dashboard, session, market, networkNode, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) { + let mineProducts + let timeMachine = functionLibraryUiObjectsFromNodes.addUIObject(dashboard, 'Time Machine') + timeMachine.payload.referenceParent = session + timeMachine.name = session.name + ' ' + session.type + ' ' + networkNode.name + timeMachine.payload.floatingObject.collapseToggle() + timeMachine.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 + /* + We need to create a Timeline Chart for each Data Mine Indicators. + */ + mineProducts = nodeBranchToArray(networkNode, 'Data Mine Products') + for (let j = 0; j < mineProducts.length; j++) { + let mineProduct = mineProducts[j] + /* + We need to filter out the ones that do not belong to the market where + the session is running at. + */ + if (mineProduct.payload.parentNode.payload.referenceParent === undefined) { continue } + if (mineProduct.payload.parentNode.payload.referenceParent.id !== market.id) { continue } + + let timelineChart = functionLibraryUiObjectsFromNodes.addUIObject(timeMachine, 'Timeline Chart') + timelineChart.name = mineProduct.name + timelineChart.layersManager.payload.referenceParent = mineProduct + timelineChart.payload.floatingObject.collapseToggle() + timelineChart.layersManager.payload.floatingObject.collapseToggle() + + let menu = timelineChart.layersManager.payload.uiObject.menu + menu.internalClick('Add All Mine Layers') + menu.internalClick('Add All Mine Layers') + } + + mineProducts = nodeBranchToArray(networkNode, 'Trading Mine Products') + for (let j = 0; j < mineProducts.length; j++) { + let mineProduct = mineProducts[j] + /* + The mine products found so far, belongs to any session. To filer all the sessions + that are not the one we are interested in, we do the following: + */ + if (mineProduct.payload.parentNode === undefined) { continue } + if (mineProduct.payload.parentNode.payload.referenceParent.id !== session.id) { continue } + /* + At the current version of Superalgos, beta 6, there is only one Trading Mine, + with only one bot, and it has so many data products that we want to put them + in 3 different timeline charts. So we will create 3 charts, connect them, + and delete from each one 1/3 of the layers. We do all that next: + */ + + for (let k = 0; k < 3; k++) { + let timelineChart = functionLibraryUiObjectsFromNodes.addUIObject(timeMachine, 'Timeline Chart') + + timelineChart.layersManager.payload.referenceParent = mineProduct + timelineChart.payload.floatingObject.collapseToggle() + timelineChart.layersManager.payload.floatingObject.collapseToggle() + + let menu = timelineChart.layersManager.payload.uiObject.menu + menu.internalClick('Add All Mine Layers') + menu.internalClick('Add All Mine Layers') + + switch (k) { + case 0: { + timelineChart.name = 'Trading Engine' + deleteNodeByName('Trading System') + deleteNodeByName('Objects') + break + } + case 1: { + timelineChart.name = 'Trading System' + deleteNodeByName('Trading Engine') + deleteNodeByName('Objects') + break + } + case 2: { + timelineChart.name = 'Objects' + deleteNodeByName('Trading Engine') + deleteNodeByName('Trading System') + break + } + } + function deleteNodeByName(nodeName) { + let nodeToDelete = findNodeInNodeMesh(timelineChart.layersManager, undefined, nodeName, true, true, false, false) + if (nodeToDelete === undefined) { return } + functionLibraryNodeDeleter.deleteUIObject(nodeToDelete, rootNodes) + } + } + } + } + + function addMissingDashboards(node, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) { + for (let i = 0; i < rootNodes.length; i++) { + let rootNode = rootNodes[i] + if (rootNode.type === 'Network') { + let network = rootNode + scanNetwork(network) + } + } + + function scanNetwork(network) { + if (network === undefined) { return } + + for (let j = 0; j < network.networkNodes.length; j++) { + let networkNode = network.networkNodes[j] + scanNetworkNode(networkNode) + } + + function scanNetworkNode(networkNode) { + let testingEnvironment = findInBranch(networkNode, 'Testing Environment', node, true) + let productionEnvironment = findInBranch(networkNode, 'Production Environment', node, true) + + if (isMissingChildren(node, testingEnvironment, true) === true) { + let dashboard = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Dashboard') + dashboard.payload.referenceParent = testingEnvironment + dashboard.name = testingEnvironment.type + ' ' + networkNode.name + } + + if (isMissingChildren(node, productionEnvironment, true) === true) { + let dashboard = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Dashboard') + dashboard.payload.referenceParent = productionEnvironment + dashboard.name = productionEnvironment.type + ' ' + networkNode.name + } + } + } + } +} diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/CryptoEcosystemFunctions.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/CryptoEcosystemFunctions.js new file mode 100644 index 000000000..66b356307 --- /dev/null +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/CryptoEcosystemFunctions.js @@ -0,0 +1,460 @@ +function newCryptoEcosystemFunctions() { + thisObject = { + addMissingExchanges: addMissingExchanges, + addMissingAssets: addMissingAssets, + addMissingMarkets: addMissingMarkets, + installMarket: installMarket, + uninstallMarket: uninstallMarket + } + + return thisObject + + function addMissingExchanges(node, functionLibraryUiObjectsFromNodes) { + currentExchanges = new Map() + let parent = node.payload.parentNode + if (parent !== undefined) { + for (let i = 0; i < parent.cryptoExchanges.length; i++) { + let cryptoExchanges = parent.cryptoExchanges[i] + for (let j = 0; j < cryptoExchanges.exchanges.length; j++) { + let exchange = cryptoExchanges.exchanges[j] + let codeName = loadPropertyFromNodeConfig(exchange.payload, 'codeName') + currentExchanges.set(codeName, exchange) + } + } + } + + let params = { + method: 'listExchanges', + has: { + fetchOHLCV: true, + fetchMarkets: true + } + } + + callServer(JSON.stringify(params), 'CCXT', onResponse) + + function onResponse(err, data) { + if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + node.payload.uiObject.setErrorMessage('Failed to Fetch Assets from the Exchange') + return + } + + let exchanges = JSON.parse(data) + for (let i = 0; i < exchanges.length; i++) { + let exchange = exchanges[i] + let existingExchange = currentExchanges.get(exchange.id) + if (existingExchange === undefined) { + let newExchange = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Crypto Exchange') + newExchange.name = exchange.name + newExchange.config = '{ \n\"codeName\": \"' + exchange.id + '\"\n}' + newExchange.payload.floatingObject.collapseToggle() + newExchange.exchangeAssets.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 + newExchange.exchangeMarkets.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 + newExchange.exchangeAccounts.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 + newExchange.exchangeAssets.payload.floatingObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_050X + newExchange.exchangeMarkets.payload.floatingObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_100X + newExchange.exchangeAccounts.payload.floatingObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_025X + newExchange.exchangeAssets.payload.floatingObject.arrangementStyle = ARRANGEMENT_STYLE.CONCAVE + newExchange.exchangeMarkets.payload.floatingObject.arrangementStyle = ARRANGEMENT_STYLE.CONCAVE + newExchange.exchangeAccounts.payload.floatingObject.arrangementStyle = ARRANGEMENT_STYLE.CONCAVE + } + } + } + } + + function addMissingAssets(node, functionLibraryUiObjectsFromNodes) { + if (node.payload.parentNode === undefined) { return } + + let currentAssets = new Map() + for (let j = 0; j < node.assets.length; j++) { + let asset = node.assets[j] + let codeName = loadPropertyFromNodeConfig(asset.payload, 'codeName') + currentAssets.set(codeName, asset) + } + + let exchangeId = loadPropertyFromNodeConfig(node.payload.parentNode.payload, 'codeName') + + try { + let params = { + exchangeId: exchangeId, + method: 'fetchMarkets' + } + callServer(JSON.stringify(params), 'CCXT', onResponse) + + function onResponse(err, data) { + if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + node.payload.uiObject.setErrorMessage('Failed to Fetch Assets from the Exchange') + return + } + let queryParams = loadPropertyFromNodeConfig(node.payload, 'addMissingAssetsFilter') + + let markets = JSON.parse(data) + for (let i = 0; i < markets.length; i++) { + let market = markets[i] + + if (queryParams !== undefined) { + if (queryParams.baseAsset !== undefined) { + if (market.base.indexOf(queryParams.baseAsset) < 0) { + continue + } + } + if (queryParams.quotedAsset !== undefined) { + if (market.quote.indexOf(queryParams.quotedAsset) < 0) { + continue + } + } + } + if (currentAssets.get(market.base) === undefined) { + addAsset(market.base) + currentAssets.set(market.base, market.base) + } + if (currentAssets.get(market.quote) === undefined) { + addAsset(market.quote) + currentAssets.set(market.quote, market.quote) + } + + function addAsset(name) { + let newAsseet = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Asset') + newAsseet.name = name + newAsseet.config = '{ \n\"codeName\": \"' + name + '\"\n}' + } + } + } + } catch (err) { + node.payload.uiObject.setErrorMessage('Failed to Fetch Assets from the Exchange') + console.log(err.stack) + } + } + + function addMissingMarkets(node, functionLibraryUiObjectsFromNodes, functionLibraryNodeCloning) { + if (node.payload.parentNode === undefined) { return } + if (node.payload.parentNode.exchangeAssets === undefined) { return } + if (node.payload.parentNode.payload.parentNode === undefined) { return } + if (node.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { return } + + let currentAssets = new Map() + let exchangeAssets = node.payload.parentNode.exchangeAssets + for (let j = 0; j < exchangeAssets.assets.length; j++) { + let asset = exchangeAssets.assets[j] + let codeName = loadPropertyFromNodeConfig(asset.payload, 'codeName') + currentAssets.set(codeName, asset) + } + + let currentMarkets = new Map() + let exchangeMarkets = node + for (let j = 0; j < exchangeMarkets.markets.length; j++) { + let asset = exchangeMarkets.markets[j] + let codeName = loadPropertyFromNodeConfig(asset.payload, 'codeName') + currentMarkets.set(codeName, asset) + } + + let exchangeId = loadPropertyFromNodeConfig(node.payload.parentNode.payload, 'codeName') + + try { + let params = { + exchangeId: exchangeId, + method: 'fetchMarkets' + } + callServer(JSON.stringify(params), 'CCXT', onResponse) + + function onResponse(err, data) { + if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + node.payload.uiObject.setErrorMessage('Failed to Fetch Assets from the Exchange') + return + } + + let markets = JSON.parse(data) + for (let i = 0; i < markets.length; i++) { + let market = markets[i] + let baseAsset = currentAssets.get(market.base) + let quotedAsset = currentAssets.get(market.quote) + + if (baseAsset === undefined) { + continue + } + if (quotedAsset === undefined) { + continue + } + + if (currentMarkets.get(market.symbol) === undefined) { + addMarket(market.symbol, baseAsset, quotedAsset) + } + + function addMarket(name, baseAsset, quotedAsset) { + let newMarket = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Market') + newMarket.name = name + newMarket.config = '{ \n\"codeName\": \"' + name + '\"\n}' + newMarket.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 + newMarket.payload.floatingObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_100X + newMarket.payload.floatingObject.arrangementStyle = ARRANGEMENT_STYLE.CONCAVE + newMarket.baseAsset.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_45 + newMarket.quotedAsset.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_45 + newMarket.baseAsset.payload.floatingObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_100X + newMarket.quotedAsset.payload.floatingObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_100X + newMarket.baseAsset.payload.floatingObject.arrangementStyle = ARRANGEMENT_STYLE.CONCAVE + newMarket.quotedAsset.payload.floatingObject.arrangementStyle = ARRANGEMENT_STYLE.CONCAVE + newMarket.baseAsset.payload.referenceParent = baseAsset + newMarket.quotedAsset.payload.referenceParent = quotedAsset + + currentMarkets.set(name, newMarket) + } + } + } + } catch (err) { + node.payload.uiObject.setErrorMessage('Failed to Fetch Assets from the Exchange') + console.log(err.stack) + } + } + + function installMarket(node, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter, functionLibraryChartingSpaceFunctions, functionLibraryDataStorageFunctions) { + + let market = node + let cryptoExchange = findNodeInNodeMesh(node, 'Crypto Exchange', undefined, true, false, true, false) + if (cryptoExchange === undefined) { + node.payload.uiObject.setErrorMessage('Market must be a descendant of a Crypto Exchange') + return + } + let dashboardsArray = [] + + for (let i = 0; i < rootNodes.length; i++) { + let rootNode = rootNodes[i] + if (rootNode.type === 'Network') { + installInNetwork(rootNode) + } + } + + for (let i = 0; i < rootNodes.length; i++) { + let rootNode = rootNodes[i] + if (rootNode.type === 'Charting Space') { + installInChartingSpace(rootNode) + } + } + + function installInNetwork(network) { + + for (let j = 0; j < network.networkNodes.length; j++) { + let networkNode = network.networkNodes[j] + installInNetworkNode(networkNode) + } + + function installInNetworkNode(networkNode) { + /* + Here we complete the missing stuff at Data Mining + */ + let dataMining = findInBranch(networkNode, 'Data Mining', node, true) + if (dataMining === undefined) { + node.payload.uiObject.setErrorMessage('Data Mining node not found at Network Node ' + networkNode.name) + return + } + + let exchangeDataTasks = findOrCreateChildWithReference(dataMining, 'Exchange Data Tasks', cryptoExchange, functionLibraryUiObjectsFromNodes) + exchangeDataTasks.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 + let marketDataTask = findAndRecreateChildWithReference(exchangeDataTasks, 'Market Data Tasks', market, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) + + menuClick(marketDataTask, 'Add Missing Data Mine Tasks', true) + menuClickOfNodeArray(marketDataTask.dataMineTasks, 'Add All Tasks', true) + + let sessionsCreatedArray = [] + /* + Next we complete the missing stuff at Testing Environment + */ + installEnvironment('Testing Environment') + /* + Next we complete the missing stuff at Production Environment + */ + installEnvironment('Production Environment') + + function installEnvironment(environment) { + /* + Now we install the environmnet at the current Network Node + */ + let environmentFound = findInBranch(networkNode, environment, node, true) + if (environmentFound === undefined) { + node.payload.uiObject.setErrorMessage(environment + ' node not found at Network Node ' + networkNode.name) + return + } + + let exchangeTradingTasks = findOrCreateChildWithReference(environmentFound, 'Exchange Trading Tasks', cryptoExchange, functionLibraryUiObjectsFromNodes) + exchangeTradingTasks.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 + let marketTradingTask = findAndRecreateChildWithReference(exchangeTradingTasks, 'Market Trading Tasks', market, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) + + menuClick(marketTradingTask, 'Add Missing Trading Mine Tasks', true) + menuClickOfNodeArray(marketTradingTask.tradingMineTasks, 'Add All Tasks', true) + + /* This will be needed at the charging space, for creating Dashboards */ + let backtestingSessionsArray = nodeBranchToArray(marketTradingTask, 'Backtesting Session') + let liveTradingSessionsArray = nodeBranchToArray(marketTradingTask, 'Live Trading Session') + let allSessionsArray = backtestingSessionsArray.concat(liveTradingSessionsArray) + sessionsCreatedArray = sessionsCreatedArray.concat(allSessionsArray) + + dashboardsArray.push({ environmentNode: environmentFound, networkNode: networkNode, sessionsArray: allSessionsArray }) + } + /* + Here we complete the missing stuff at Data Mines Data + */ + let dataMinesData = findInBranch(networkNode, 'Data Mines Data', node, true) + if (dataMinesData === undefined) { + node.payload.uiObject.setErrorMessage('Data Mines Data node not found at Network Node ' + networkNode.name) + return + } + + let exchangeDataProducts = findOrCreateChildWithReference(dataMinesData, 'Exchange Data Products', cryptoExchange, functionLibraryUiObjectsFromNodes) + exchangeDataProducts.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 + let marketDataProducts = findAndRecreateChildWithReference(exchangeDataProducts, 'Market Data Products', market, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) + marketDataProducts.payload.floatingObject.collapseToggle() + + menuClick(marketDataProducts, 'Add All Data Mine Products', true) + menuClickOfNodeArray(marketDataProducts.dataMineProducts, 'Add All Data Products', true) + /* + Finally we complete the missing stuff at Trading Mines Data + */ + let tradingMinesData = findInBranch(networkNode, 'Trading Mines Data', node, true) + if (tradingMinesData === undefined) { + node.payload.uiObject.setErrorMessage('Trading Mines Data node not found at Network Node ' + networkNode.name) + return + } + + let exchangeTradingProducts = findOrCreateChildWithReference(tradingMinesData, 'Exchange Trading Products', cryptoExchange, functionLibraryUiObjectsFromNodes) + exchangeTradingProducts.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 + let marketTradingProducts = findAndRecreateChildWithReference(exchangeTradingProducts, 'Market Trading Products', market, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) + marketTradingProducts.payload.floatingObject.collapseToggle() + /* + Create the new session references. + */ + for (let i = 0; i < sessionsCreatedArray.length; i++) { + let session = sessionsCreatedArray[i] + if (isMissingChildren(marketTradingProducts, session, true) === true) { + functionLibraryDataStorageFunctions.createSessionReference(marketTradingProducts, session, functionLibraryUiObjectsFromNodes) + } + } + /* + Create everything inside the session references. + */ + for (let j = 0; j < marketTradingProducts.sessionReferences.length; j++) { + sessionReference = marketTradingProducts.sessionReferences[j] + menuClick(sessionReference, 'Add All Trading Mine Products', true) + menuClickOfNodeArray(sessionReference.tradingMineProducts, 'Add All Data Products', true) + sessionReference.payload.floatingObject.collapseToggle() + } + } + } + + function installInChartingSpace(chartingSpace) { + + for (let i = 0; i < dashboardsArray.length; i++) { + /* + If the Dashboard we need is not already there we create a new one. + */ + let arrayItem = dashboardsArray[i] + let dashboard = findOrCreateChildWithReference(chartingSpace, 'Dashboard', arrayItem.environmentNode, functionLibraryUiObjectsFromNodes) + dashboard.name = arrayItem.environmentNode.type + ' ' + arrayItem.networkNode.name + /* + We delete all the existing Time Machines related to the market we are currently installing. + For that, we make a new array with the existing Time Machines so that the deleting + of each node does not affect the proccessing of the whole set. + */ + let timeMachines = [] + for (let i = 0; i < dashboard.timeMachines.length; i++) { + let timeMachine = dashboard.timeMachines[i] + timeMachines.push(timeMachine) + } + for (let i = 0; i < timeMachines.length; i++) { + let timeMachine = timeMachines[i] + let session = timeMachine.payload.referenceParent + if (session === undefined || session.cleaned === true) { + /* + This is what usually happens, that the intall process make these + time machines to lose their reference parent since the install + process deletes them. + */ + functionLibraryNodeDeleter.deleteUIObject(timeMachine, rootNodes) + continue + } + let marketTradingTasks = findNodeInNodeMesh(session, 'Market Trading Tasks', undefined, true, false, true, false) + if (marketTradingTasks === undefined) { continue } + if (marketTradingTasks.payload === undefined) { continue } + if (marketTradingTasks.payload.referenceParent === undefined) { continue } + if (marketTradingTasks.payload.referenceParent.id === market.id) { + functionLibraryNodeDeleter.deleteUIObject(timeMachine, rootNodes) + } + } + /* + We create a time machine for each session added during the previous processing. + */ + for (let j = 0; j < arrayItem.sessionsArray.length; j++) { + let session = arrayItem.sessionsArray[j] + functionLibraryChartingSpaceFunctions.createTimeMachine(dashboard, session, node, arrayItem.networkNode, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) + } + } + } + } + + function uninstallMarket(node, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter, functionLibraryChartingSpaceFunctions, functionLibraryDataStorageFunctions) { + let market = node + for (let i = 0; i < rootNodes.length; i++) { + let rootNode = rootNodes[i] + if (rootNode.type === 'Charting Space') { + uninstallInChartingSpace(rootNode) + } + } + + function uninstallInChartingSpace(chartingSpace) { + + /* Delete all time machines which are referencing sessions inside the market being unistalled. */ + let timeMachines = nodeBranchToArray(chartingSpace, 'Time Machine') + for (let i = 0; i < timeMachines.length; i++) { + let timeMachine = timeMachines[i] + let session = timeMachine.payload.referenceParent + if (session === undefined) { continue } + let marketTradingTasks = findNodeInNodeMesh(session, 'Market Trading Tasks', undefined, true, false, true, false) + if (marketTradingTasks === undefined) { continue } + if (marketTradingTasks.payload === undefined) { continue } + if (marketTradingTasks.payload.referenceParent === undefined) { continue } + if (marketTradingTasks.payload.referenceParent.id === market.id) { + functionLibraryNodeDeleter.deleteUIObject(timeMachine, rootNodes) + } + } + + /* Delete all Dashboards that does not have time machines inside. */ + let dashboardArray = nodeBranchToArray(chartingSpace, 'Dashboard') + for (let i = 0; i < dashboardArray.length; i++) { + let dashboard = dashboardArray[i] + if (dashboard.timeMachines.length === 0) { + functionLibraryNodeDeleter.deleteUIObject(dashboard, rootNodes) + } + } + + /* Scan Networks for the market being unistalled to delete it. */ + for (let i = 0; i < rootNodes.length; i++) { + let rootNode = rootNodes[i] + if (rootNode.type === 'Network') { + uninstallInNetwork(rootNode) + } + } + } + + function uninstallInNetwork(network) { + + let marketDataTasksArray = nodeBranchToArray(network, 'Market Data Tasks') + let marketTradingTasksArray = nodeBranchToArray(network, 'Market Trading Tasks') + let marketDataProductsArray = nodeBranchToArray(network, 'Market Data Products') + let marketTradingProductsArray = nodeBranchToArray(network, 'Market Trading Products') + + uninstalMarketArray(marketDataTasksArray) + uninstalMarketArray(marketTradingTasksArray) + uninstalMarketArray(marketDataProductsArray) + uninstalMarketArray(marketTradingProductsArray) + + function uninstalMarketArray(marketArray) { + for (let i = 0; i < marketArray.length; i++) { + let marketReference = marketArray[i] + if (marketReference.payload === undefined) { continue } + if (marketReference.payload.referenceParent === undefined) { continue } + if (marketReference.payload.referenceParent.id === market.id) { + functionLibraryNodeDeleter.deleteUIObject(marketReference, rootNodes) + } + } + } + } + } +} diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/DataMineFunctions.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/DataMineFunctions.js new file mode 100644 index 000000000..13fae905b --- /dev/null +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/DataMineFunctions.js @@ -0,0 +1,103 @@ +function newDataMineFunctions() { + thisObject = { + addAllOutputDatasets: addAllOutputDatasets, + addAllDataDependencies: addAllDataDependencies, + addAllDataMineDataDependencies: addAllDataMineDataDependencies + } + + return thisObject + + function addAllOutputDatasets(node, functionLibraryUiObjectsFromNodes) { + + /* Validations to see if we can do this or not. */ + if (node.payload === undefined) { return } + if (node.payload.uiObject === undefined) { return } + if (node.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('You need to have a parent node to execute this action.') + return + } + if (node.payload.parentNode.payload === undefined) { + node.payload.uiObject.setErrorMessage('You need to have a parent node to execute this action.') + return + } + if (node.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('You need to have a grand parent node to execute this action.') + return + } + + /* + Next, we are going to scan recursively through all nodes of type Product Definition Folder + and Product Definition. For each Product Definition Folder we will create a counterpart + Output Dataset Folder, and for each Product Definition found we will create a Output Definition + for each Dataset defined inside the Product Definition. + */ + asymetricalFolderStructureCloning( + node.payload.parentNode.payload.parentNode, + node, + 'products', + 'productDefinitionFolders', + 'outputDatasetFolders', + 'Output Dataset', + 'Output Dataset Folder', + 'datasets', + functionLibraryUiObjectsFromNodes + ) + } + + function addAllDataDependencies(node, functionLibraryUiObjectsFromNodes) { + + /* Validations to see if we can do this or not. */ + if (node.payload === undefined) { return } + if (node.payload.uiObject === undefined) { return } + if (node.payload.referenceParent === undefined) { + node.payload.uiObject.setErrorMessage('You need to have a reference parent node to execute this action.') + return + } + if (node.payload.referenceParent.payload === undefined) { + node.payload.uiObject.setErrorMessage('You need to have a reference parent node to execute this action.') + return + } + + /* + Next, we are going to scan through all the bots of the Data Mine referenced, and for each bot we will + create a Bots Data Dependency node. Later we will scan all the Products Definitions of each bot, and for each + Dataset of each Product we will create a Data Dependency. In case we find Product Definition Folders, we will + recreate that structure too, using in this case Data Dependency Folders. + */ + let dataMine = node.payload.referenceParent + scanBotArray(dataMine.sensorBots) + scanBotArray(dataMine.indicatorBots) + scanBotArray(dataMine.tradingBots) + + function scanBotArray(botArray) { + for (let i = 0; i < botArray.length; i++) { + let bot = botArray[i] + let botProducts = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Bot Data Dependencies') + botProducts.name = bot.name + + asymetricalFolderStructureCloning( + bot, + botProducts, + 'products', + 'productDefinitionFolders', + 'dataDependencyFolders', + 'Data Dependency', + 'Data Dependency Folder', + 'datasets', + functionLibraryUiObjectsFromNodes + ) + } + } + } + + function addAllDataMineDataDependencies(node, rootNodes, functionLibraryUiObjectsFromNodes) { + for (let i = 0; i < rootNodes.length; i++) { + let rootNode = rootNodes[i] + + if (rootNode.type === 'Data Mine') { + let dataMineDataDependencies = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Data Mine Data Dependencies') + dataMineDataDependencies.payload.referenceParent = rootNode + } + } + } +} diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/DataStorageFunctions.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/DataStorageFunctions.js new file mode 100644 index 000000000..3eb4e3822 --- /dev/null +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/DataStorageFunctions.js @@ -0,0 +1,167 @@ +function newDataStorageFunctions() { + thisObject = { + addAllDataProducts: addAllDataProducts, + addAllDataMineProducts: addAllDataMineProducts, + addAllTradingMineProducts: addAllTradingMineProducts, + addMissingSessionReferences: addMissingSessionReferences, + addMissingMarketDataProducts: addMissingMarketDataProducts, + addMissingMarketTradingProducts: addMissingMarketTradingProducts, + addMissingExchangeTradingProducts: addMissingExchangeTradingProducts, + addMissingExchangeDataProducts: addMissingExchangeDataProducts, + createSessionReference: createSessionReference + } + + return thisObject + + function addAllDataProducts(node, functionLibraryUiObjectsFromNodes) { + + /* Validations to see if we can do this or not. */ + if (node.payload === undefined) { return } + if (node.payload.uiObject === undefined) { return } + if (node.payload.referenceParent === undefined) { + node.payload.uiObject.setErrorMessage('You need to have a reference parent node to execute this action.') + return + } + if (node.payload.referenceParent.payload === undefined) { + node.payload.uiObject.setErrorMessage('You need to have a reference parent node to execute this action.') + return + } + + /* + Next, we are going to scan through all the bots of the Data Mine referenced, and for each bot we will + create a Bots Products node. Later we will scan all the Products Definitions of each bot, and for each one + we will create a Data Product. In case we find Product Definition Folders, we will recreate that structure + too, using in this case Data Product Folders. + */ + let mine = node.payload.referenceParent + scanBotArray(mine.sensorBots) + scanBotArray(mine.indicatorBots) + scanBotArray(mine.tradingBots) + + function scanBotArray(botArray) { + if (botArray === undefined) { return } + + for (let i = 0; i < botArray.length; i++) { + let bot = botArray[i] + let botProducts = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Bot Products') + botProducts.name = bot.name + botProducts.payload.floatingObject.collapseToggle() + + asymetricalFolderStructureCloning( + bot, + botProducts, + 'products', + 'productDefinitionFolders', + 'dataProductFolders', + 'Data Product', + 'Data Product Folder', + undefined, + functionLibraryUiObjectsFromNodes + ) + } + } + } + + function addAllDataMineProducts(node, rootNodes, functionLibraryUiObjectsFromNodes) { + for (let i = 0; i < rootNodes.length; i++) { + let rootNode = rootNodes[i] + + if (rootNode.type === 'Data Mine') { + let dataMineProducts = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Data Mine Products') + dataMineProducts.payload.referenceParent = rootNode + } + } + } + + function addAllTradingMineProducts(node, rootNodes, functionLibraryUiObjectsFromNodes) { + for (let i = 0; i < rootNodes.length; i++) { + let rootNode = rootNodes[i] + + if (rootNode.type === 'Trading Mine') { + let tradingMineProducts = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Trading Mine Products') + tradingMineProducts.payload.referenceParent = rootNode + } + } + } + + function addMissingSessionReferences(node, rootNodes, functionLibraryUiObjectsFromNodes) { + let networkNode = findNodeInNodeMesh(node, 'Network Node', undefined, true, false, true, false) + if (networkNode === undefined) { return } + + let backtestingSessionsArray = nodeBranchToArray(networkNode, 'Backtesting Session') + let fordwardTestingSessionsArray = nodeBranchToArray(networkNode, 'Forward Testing Session') + let paperTradingSessionsArray = nodeBranchToArray(networkNode, 'Paper Trading Session') + let liveTradingSessionsArray = nodeBranchToArray(networkNode, 'Live Trading Session') + + addMissingSession(backtestingSessionsArray) + addMissingSession(fordwardTestingSessionsArray) + addMissingSession(paperTradingSessionsArray) + addMissingSession(liveTradingSessionsArray) + + function addMissingSession(sessionsArray) { + for (let i = 0; i < sessionsArray.length; i++) { + let session = sessionsArray[i] + /* We will filter out all the sessions that does not belong to the market we are in */ + let marketTradingTasks = findNodeInNodeMesh(session, 'Market Trading Tasks', undefined, true, false, true, false) + if (node.payload.referenceParent.id !== marketTradingTasks.payload.referenceParent.id) { continue } + if (isMissingChildren(node, session, true) === true) { + createSessionReference(node, session, functionLibraryUiObjectsFromNodes) + } + } + } + } + + function createSessionReference(node, session, functionLibraryUiObjectsFromNodes) { + let sessionReference = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Session Reference') + sessionReference.payload.referenceParent = session + } + + function addMissingMarketDataProducts(node, rootNodes, functionLibraryUiObjectsFromNodes) { + addMissingMarketProducts(node, rootNodes, 'Market Data Products', functionLibraryUiObjectsFromNodes) + } + + function addMissingMarketTradingProducts(node, rootNodes, functionLibraryUiObjectsFromNodes) { + addMissingMarketProducts(node, rootNodes, 'Market Trading Products', functionLibraryUiObjectsFromNodes) + } + + function addMissingMarketProducts(node, rootNodes, newNodeType, functionLibraryUiObjectsFromNodes) { + if (node.payload.referenceParent === undefined) { return } + if (node.payload.referenceParent.exchangeMarkets === undefined) { return } + let marketsArray = node.payload.referenceParent.exchangeMarkets.markets + + for (let i = 0; i < marketsArray.length; i++) { + let market = marketsArray[i] + if (isMissingChildren(node, market, true) === true) { + let marketDataProducts = functionLibraryUiObjectsFromNodes.addUIObject(node, newNodeType) + marketDataProducts.payload.referenceParent = market + } + } + } + + function addMissingExchangeTradingProducts(node, rootNodes, functionLibraryUiObjectsFromNodes) { + addMissingExchange(node, rootNodes, 'Exchange Trading Products', functionLibraryUiObjectsFromNodes) + } + + function addMissingExchangeDataProducts(node, rootNodes, functionLibraryUiObjectsFromNodes) { + addMissingExchange(node, rootNodes, 'Exchange Data Products', functionLibraryUiObjectsFromNodes) + } + + function addMissingExchange(node, rootNodes, newNodeType, functionLibraryUiObjectsFromNodes) { + for (let i = 0; i < rootNodes.length; i++) { + let rootNode = rootNodes[i] + if (rootNode.type === 'Crypto Ecosystem') { + let cryptoEcosystem = rootNode + for (let j = 0; j < cryptoEcosystem.cryptoExchanges.length; j++) { + let cryptoExchanges = cryptoEcosystem.cryptoExchanges[j] + for (let k = 0; k < cryptoExchanges.exchanges.length; k++) { + let cryptoExchange = cryptoExchanges.exchanges[k] + if (isMissingChildren(node, cryptoExchange, true) === true) { + let exchange = functionLibraryUiObjectsFromNodes.addUIObject(node, newNodeType) + exchange.payload.referenceParent = cryptoExchange + } + } + } + } + } + } +} diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/DependenciesFilter.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/DependenciesFilter.js index 2f88bf30d..88b9eb45d 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/DependenciesFilter.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/DependenciesFilter.js @@ -1,74 +1,74 @@ -function newDependenciesFilter () { - thisObject = { - createFilter: createFilter - } +function newDependenciesFilter() { + thisObject = { + createFilter: createFilter + } - return thisObject + return thisObject - function createFilter (node) { - let filters = new Map() - recursiveFilter(node) + function createFilter(node) { + let filters = new Map() + recursiveFilter(node) - return Array.from(filters.keys()) + return Array.from(filters.keys()) - function recursiveFilter (node) { - filter(node.code) + function recursiveFilter(node) { + filter(node.code) - let nodeDefinition = APP_SCHEMA_MAP.get(node.type) - if (nodeDefinition !== undefined) { - if (nodeDefinition.properties !== undefined) { - let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. - for (let i = 0; i < nodeDefinition.properties.length; i++) { - let property = nodeDefinition.properties[i] + let nodeDefinition = getNodeDefinition(node) + if (nodeDefinition !== undefined) { + if (nodeDefinition.properties !== undefined) { + let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] - switch (property.type) { - case 'node': { - if (property.name !== previousPropertyName) { - if (node[property.name] !== undefined) { - recursiveFilter(node[property.name]) - } - previousPropertyName = property.name + switch (property.type) { + case 'node': { + if (property.name !== previousPropertyName) { + if (node[property.name] !== undefined) { + recursiveFilter(node[property.name]) + } + previousPropertyName = property.name + } + } + break + case 'array': { + let nodePropertyArray = node[property.name] + if (nodePropertyArray !== undefined) { + for (let j = 0; j < nodePropertyArray.length; j++) { + let nodeProperty = nodePropertyArray[j] + recursiveFilter(nodeProperty) + } + } + } + break + } + } } - } - break - case 'array': { - let nodePropertyArray = node[property.name] - if (nodePropertyArray !== undefined) { - for (let j = 0; j < nodePropertyArray.length; j++) { - let nodeProperty = nodePropertyArray[j] - recursiveFilter(nodeProperty) - } - } - } - break } - } } - } - } - function filter (code) { - if (code === undefined) { return } + function filter(code) { + if (code === undefined) { return } - let instructionsArray = code.split(' ') - for (let i = 0; i < instructionsArray.length; i++) { - let instruction = instructionsArray[i] - if (instruction.indexOf('chart') >= 0) { - let parts = instruction.split('.') - let timeFrame = parts[1] - let product = parts[2] - let productParts = product.split(',') - product = productParts[0] - productParts = product.split(')') - product = productParts[0] + let instructionsArray = code.split(' ') + for (let i = 0; i < instructionsArray.length; i++) { + let instruction = instructionsArray[i] + if (instruction.indexOf('chart') >= 0) { + let parts = instruction.split('.') + let timeFrame = parts[1] + let product = parts[2] + let productParts = product.split(',') + product = productParts[0] + productParts = product.split(')') + product = productParts[0] - // Example: chart.at01hs.popularSMA.sma200 - chart.at01hs.popularSMA.sma100 < 10 - if (timeFrame !== 'atAnyTimeFrame') { - timeFrame = timeFrame.substring(2, 4) + '-' + timeFrame.substring(4, 7) - } - filters.set(timeFrame + '-' + product, true) + // Example: chart.at01hs.popularSMA.sma200 - chart.at01hs.popularSMA.sma100 < 10 + if (timeFrame !== 'atAnyTimeFrame') { + timeFrame = timeFrame.substring(2, 4) + '-' + timeFrame.substring(4, 7) + } + filters.set(timeFrame + '-' + product, true) + } + } } - } } - } } diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/IncludesFunctions.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/IncludesFunctions.js new file mode 100644 index 000000000..10d5f54a4 --- /dev/null +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/IncludesFunctions.js @@ -0,0 +1,84 @@ +function newIncludesFunctions() { + thisObject = { + includeMissingDataMines: includeMissingDataMines, + includeMissingTradingMines: includeMissingTradingMines, + includeMissingTradingSystems: includeMissingTradingSystems, + includeMissingTradingEngines: includeMissingTradingEngines, + includeMissingSuperScripts: includeMissingSuperScripts, + includeMissingTutorials: includeMissingTutorials + } + return thisObject + + function getIncludedFileNames(includeType, callBack) { + callServer(undefined, 'IncludedFileNames/' + includeType, onResponse) + + function onResponse(err, data) { + if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + console.log('Failed to Fetch Included ' + includeType + ' from the Backend') + return + } + + let includedFileNames = JSON.parse(data) + callBack(includedFileNames) + } + } + + function addIncludedFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes) { + for (let i = 0; i < fileNames.length; i++) { + let fileName = fileNames[i] + fileName = fileName.replace('.json', '') + if (isMissingChildrenByName(node, fileName) === true) { + let child = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Included File') + child.name = fileName + } + } + } + + function includeMissingDataMines(node, rootNodes, functionLibraryUiObjectsFromNodes) { + getIncludedFileNames('Data-Mines', onNamesArrived) + + function onNamesArrived(fileNames) { + addIncludedFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes) + } + } + + function includeMissingTradingMines(node, rootNodes, functionLibraryUiObjectsFromNodes) { + getIncludedFileNames('Trading-Mines', onNamesArrived) + + function onNamesArrived(fileNames) { + addIncludedFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes) + } + } + + function includeMissingTradingSystems(node, rootNodes, functionLibraryUiObjectsFromNodes) { + getIncludedFileNames('Trading-Systems', onNamesArrived) + + function onNamesArrived(fileNames) { + addIncludedFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes) + } + } + + function includeMissingTradingEngines(node, rootNodes, functionLibraryUiObjectsFromNodes) { + getIncludedFileNames('Trading-Engines', onNamesArrived) + + function onNamesArrived(fileNames) { + addIncludedFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes) + } + } + + function includeMissingSuperScripts(node, rootNodes, functionLibraryUiObjectsFromNodes) { + getIncludedFileNames('Super-Scripts', onNamesArrived) + + function onNamesArrived(fileNames) { + addIncludedFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes) + } + } + + function includeMissingTutorials(node, rootNodes, functionLibraryUiObjectsFromNodes) { + getIncludedFileNames('Tutorials', onNamesArrived) + + function onNamesArrived(fileNames) { + addIncludedFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes) + } + } +} diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/NodeChildren.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/NodeChildren.js index 894dd0623..30178d28f 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/NodeChildren.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/NodeChildren.js @@ -1,67 +1,67 @@ -function newNodeChildren () { - thisObject = { - childrenCount: childrenCount - } - - return thisObject - - function childrenCount (parentNode, childNode) { - return countChildrenUiObject(parentNode, childNode) - } - - function countChildrenUiObject (parentNode, childNode) { - let response = { - childrenCount: 0, - childIndex: undefined +function newNodeChildren() { + thisObject = { + childrenCount: childrenCount } - let parentNodeDefinition = APP_SCHEMA_MAP.get(parentNode.type) - if (parentNodeDefinition !== undefined) { - if (parentNodeDefinition.properties !== undefined) { - let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. - for (let i = 0; i < parentNodeDefinition.properties.length; i++) { - let property = parentNodeDefinition.properties[i] - if (parentNode[property.name] !== undefined) { - switch (property.type) { - case 'node': { - if (property.name !== previousPropertyName) { - response.childrenCount++ - if (parentNode[property.name].id === childNode.id) { - response.childIndex = response.childrenCount - } - previousPropertyName = property.name - } - } - break - case 'array': { - let nodeDefinition = APP_SCHEMA_MAP.get(childNode.type) - if (nodeDefinition !== undefined) { - let nodePropertyArray = parentNode[property.name] - for (let j = 0; j < nodePropertyArray.length; j++) { - let child = nodePropertyArray[j] - if (nodeDefinition.chainedToSameType === true) { - if (j < 1) { - response.childrenCount++ - if (child.id === childNode.id) { - response.childIndex = response.childrenCount - } - } - } else { - response.childrenCount++ - if (child.id === childNode.id) { - response.childIndex = response.childrenCount - } - } - } - } - } - break - } - } + return thisObject + + function childrenCount(parentNode, childNode) { + return countChildrenUiObject(parentNode, childNode) + } + + function countChildrenUiObject(parentNode, childNode) { + let response = { + childrenCount: 0, + childIndex: undefined } - } - } + let parentNodeDefinition = getNodeDefinition(parentNode) + if (parentNodeDefinition !== undefined) { + if (parentNodeDefinition.properties !== undefined) { + let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. - return response - } + for (let i = 0; i < parentNodeDefinition.properties.length; i++) { + let property = parentNodeDefinition.properties[i] + if (parentNode[property.name] !== undefined) { + switch (property.type) { + case 'node': { + if (property.name !== previousPropertyName) { + response.childrenCount++ + if (parentNode[property.name].id === childNode.id) { + response.childIndex = response.childrenCount + } + previousPropertyName = property.name + } + } + break + case 'array': { + let nodeDefinition = getNodeDefinition(childNode) + if (nodeDefinition !== undefined) { + let nodePropertyArray = parentNode[property.name] + for (let j = 0; j < nodePropertyArray.length; j++) { + let child = nodePropertyArray[j] + if (nodeDefinition.chainedToSameType === true) { + if (j < 1) { + response.childrenCount++ + if (child.id === childNode.id) { + response.childIndex = response.childrenCount + } + } + } else { + response.childrenCount++ + if (child.id === childNode.id) { + response.childIndex = response.childrenCount + } + } + } + } + } + break + } + } + } + } + } + + return response + } } diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/NodeCloning.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/NodeCloning.js index fce49b44f..d0f91677a 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/NodeCloning.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/NodeCloning.js @@ -1,174 +1,177 @@ -function newNodeCloning () { - const MODULE_NAME = 'Node Cloning' - const ERROR_LOG = true - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME +function newNodeCloning() { + const MODULE_NAME = 'Node Cloning' + const ERROR_LOG = true + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME - thisObject = { - getNodeClone: getNodeClone - } - return thisObject + thisObject = { + getNodeClone: getNodeClone + } + return thisObject - function getNodeClone (node) { - let idConversionMap = new Map() + function getNodeClone(node) { + let idConversionMap = new Map() - let inmatureClone = cloneNode(node) - let matureClone = redirectReferenceParents(inmatureClone) + let inmatureClone = cloneNode(node) + let matureClone = redirectReferenceParents(inmatureClone) - return matureClone + return matureClone - function cloneNode (node) { - if (node === undefined) { return } - let nodeDefinition = APP_SCHEMA_MAP.get(node.type) - if (nodeDefinition !== undefined) { - let object = { - type: node.type, - name: node.name, - code: node.code - } - - /* Children Nodes */ - if (nodeDefinition.properties !== undefined) { - let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. - for (let i = 0; i < nodeDefinition.properties.length; i++) { - let property = nodeDefinition.properties[i] - - switch (property.type) { - case 'node': { - if (property.name !== previousPropertyName) { - if (node[property.name] !== undefined) { - object[property.name] = cloneNode(node[property.name]) - } - previousPropertyName = property.name + function cloneNode(node) { + if (node === undefined) { return } + let nodeDefinition = getNodeDefinition(node) + if (nodeDefinition !== undefined) { + let object = { + type: node.type, + name: node.name, + code: node.code, + config: node.config } - break - } - case 'array': { - if (node[property.name] !== undefined) { - let nodePropertyArray = node[property.name] - object[property.name] = [] - for (let m = 0; m < nodePropertyArray.length; m++) { - let protocolNode = cloneNode(nodePropertyArray[m]) - if (protocolNode !== undefined) { - object[property.name].push(protocolNode) + + /* Children Nodes */ + if (nodeDefinition.properties !== undefined) { + let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.type) { + case 'node': { + if (property.name !== previousPropertyName) { + if (node[property.name] !== undefined) { + object[property.name] = cloneNode(node[property.name]) + } + previousPropertyName = property.name + } + break + } + case 'array': { + if (node[property.name] !== undefined) { + let nodePropertyArray = node[property.name] + object[property.name] = [] + for (let m = 0; m < nodePropertyArray.length; m++) { + let protocolNode = cloneNode(nodePropertyArray[m]) + if (protocolNode !== undefined) { + object[property.name].push(protocolNode) + } + } + } + break + } + } } - } } - break - } + + object.id = newUniqueId() + idConversionMap.set(node.id, object.id) + + object.savedPayload = getSavedPayload(node) + + return object } - } } - object.id = newUniqueId() - idConversionMap.set(node.id, object.id) - - object.savedPayload = getSavedPayload(node) - - return object - } - } - - function redirectReferenceParents (node) { - if (node === undefined) { return } - let nodeDefinition = APP_SCHEMA_MAP.get(node.type) - if (nodeDefinition !== undefined) { - let object = { - type: node.type, - name: node.name, - code: node.code - } - - /* Children Nodes */ - if (nodeDefinition.properties !== undefined) { - let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. - for (let i = 0; i < nodeDefinition.properties.length; i++) { - let property = nodeDefinition.properties[i] - - switch (property.type) { - case 'node': { - if (property.name !== previousPropertyName) { - if (node[property.name] !== undefined) { - object[property.name] = redirectReferenceParents(node[property.name]) - } - previousPropertyName = property.name + function redirectReferenceParents(node) { + if (node === undefined) { return } + let nodeDefinition = getNodeDefinition(node) + if (nodeDefinition !== undefined) { + let object = { + type: node.type, + name: node.name, + code: node.code, + config: node.config } - break - } - case 'array': { - if (node[property.name] !== undefined) { - let nodePropertyArray = node[property.name] - object[property.name] = [] - for (let m = 0; m < nodePropertyArray.length; m++) { - let protocolNode = redirectReferenceParents(nodePropertyArray[m]) - if (protocolNode !== undefined) { - object[property.name].push(protocolNode) + + /* Children Nodes */ + if (nodeDefinition.properties !== undefined) { + let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.type) { + case 'node': { + if (property.name !== previousPropertyName) { + if (node[property.name] !== undefined) { + object[property.name] = redirectReferenceParents(node[property.name]) + } + previousPropertyName = property.name + } + break + } + case 'array': { + if (node[property.name] !== undefined) { + let nodePropertyArray = node[property.name] + object[property.name] = [] + for (let m = 0; m < nodePropertyArray.length; m++) { + let protocolNode = redirectReferenceParents(nodePropertyArray[m]) + if (protocolNode !== undefined) { + object[property.name].push(protocolNode) + } + } + } + break + } + } } - } } - break - } + + object.id = node.id + + object.savedPayload = node.savedPayload + + if (object.savedPayload !== undefined) { + if (object.savedPayload.referenceParent !== undefined) { + let newId = idConversionMap.get(object.savedPayload.referenceParent.id) + if (newId !== undefined) { + object.savedPayload.referenceParent.id = newId + } + } + } + + return object + } + } + } + + function getSavedPayload(node) { + if (node.payload === undefined) { return } + let savedPayload = { + position: { + x: node.payload.position.x, + y: node.payload.position.y + }, + targetPosition: { + x: node.payload.targetPosition.x, + y: node.payload.targetPosition.y + }, + floatingObject: { + isPinned: node.payload.floatingObject.isPinned, + isFrozen: (node.payload.floatingObject.isFrozen && node.payload.floatingObject.frozenManually), + isCollapsed: (node.payload.floatingObject.isCollapsed && node.payload.floatingObject.collapsedManually), + angleToParent: (node.payload.floatingObject.angleToParent), + distanceToParent: (node.payload.floatingObject.distanceToParent), + arrangementStyle: (node.payload.floatingObject.arrangementStyle) + }, + uiObject: { + isPlaying: node.payload.uiObject.isPlaying, + isRunning: node.payload.uiObject.isRunning, + shortcutKey: node.payload.uiObject.shortcutKey } - } } - object.id = node.id - - object.savedPayload = node.savedPayload - - if (object.savedPayload !== undefined) { - if (object.savedPayload.referenceParent !== undefined) { - let newId = idConversionMap.get(object.savedPayload.referenceParent.id) - if (newId !== undefined) { - object.savedPayload.referenceParent.id = newId + /* Next for the ones that have a reference parent, we include it */ + if (node.payload.referenceParent !== undefined) { + savedPayload.referenceParent = { + type: node.payload.referenceParent.type, + name: node.payload.referenceParent.name, + id: node.payload.referenceParent.id + } + } else { + /* The referenceParent property can be inherited from the previous saved payload. */ + if (node.savedPayload !== undefined) { + savedPayload.referenceParent = node.savedPayload.referenceParent } - } } - return object - } + return savedPayload } - } - - function getSavedPayload (node) { - if (node.payload === undefined) { return } - let savedPayload = { - position: { - x: node.payload.position.x, - y: node.payload.position.y - }, - targetPosition: { - x: node.payload.targetPosition.x, - y: node.payload.targetPosition.y - }, - floatingObject: { - isPinned: node.payload.floatingObject.isPinned, - isFrozen: (node.payload.floatingObject.isFrozen && node.payload.floatingObject.frozenManually), - isCollapsed: (node.payload.floatingObject.isCollapsed && node.payload.floatingObject.collapsedManually), - angleToParent: (node.payload.floatingObject.angleToParent), - distanceToParent: (node.payload.floatingObject.distanceToParent), - arrangementStyle: (node.payload.floatingObject.arrangementStyle) - }, - uiObject: { - isRunning: node.payload.uiObject.isRunning, - shortcutKey: node.payload.uiObject.shortcutKey - } - } - - /* Next for the ones that have a reference parent, we include it */ - if (node.payload.referenceParent !== undefined) { - savedPayload.referenceParent = { - type: node.payload.referenceParent.type, - name: node.payload.referenceParent.name, - id: node.payload.referenceParent.id - } - } else { - /* The referenceParent property can be inherited from the previous saved payload. */ - if (node.savedPayload !== undefined) { - savedPayload.referenceParent = node.savedPayload.referenceParent - } - } - - return savedPayload - } } diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/NodeDeleter.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/NodeDeleter.js index c880ade46..99b1d656f 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/NodeDeleter.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/NodeDeleter.js @@ -1,138 +1,138 @@ -function newNodeDeleter () { - thisObject = { - deleteWorkspace: deleteWorkspace, - deleteUIObject: deleteUIObject - } - - return thisObject - - function destroyUiObject (node) { - canvas.floatingSpace.uiObjectConstructor.destroyUiObject(node.payload) - } - - function deleteWorkspace (node, rootNodes) { - if (node.rootNodes !== undefined) { - while (node.rootNodes.length > 0) { - let rootNode = node.rootNodes[0] - deleteUIObject(rootNode, rootNodes) - } +function newNodeDeleter() { + thisObject = { + deleteWorkspace: deleteWorkspace, + deleteUIObject: deleteUIObject } - completeDeletion(node, rootNodes) - destroyUiObject(node) - cleanNode(node) - } + return thisObject - function deleteUIObject (node, rootNodes) { - /* First we restore the reference parent to its default state */ - if (node.payload !== undefined && node.payload.referenceParent !== undefined && node.payload.referenceParent.payload !== undefined && node.payload.referenceParent.payload.uiObject !== undefined) { - node.payload.referenceParent.payload.uiObject.isShowing = false + function destroyUiObject(node) { + canvas.floatingSpace.uiObjectConstructor.destroyUiObject(node.payload) } - let nodeDefinition = APP_SCHEMA_MAP.get(node.type) - if (nodeDefinition !== undefined) { - /* Remove all of its own children nodes. */ - if (nodeDefinition.properties !== undefined) { - let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. - for (let i = 0; i < nodeDefinition.properties.length; i++) { - let property = nodeDefinition.properties[i] - - switch (property.type) { - case 'node': { - if (property.name !== previousPropertyName) { - if (node[property.name] !== undefined) { - deleteUIObject(node[property.name], rootNodes) - } - previousPropertyName = property.name - } + function deleteWorkspace(node, rootNodes) { + if (node.rootNodes !== undefined) { + while (node.rootNodes.length > 0) { + let rootNode = node.rootNodes[0] + deleteUIObject(rootNode, rootNodes) } - break - case 'array': { - let nodePropertyArray = node[property.name] - if (nodePropertyArray !== undefined) { - while (nodePropertyArray.length > 0) { - deleteUIObject(nodePropertyArray[0], rootNodes) - } - } - } - break - } } - } - /* Remove node from parent */ - if (node.payload !== undefined) { - if (node.payload.parentNode !== undefined) { - let parentNodeDefinition = APP_SCHEMA_MAP.get(node.payload.parentNode.type) - if (parentNodeDefinition !== undefined) { - if (parentNodeDefinition.properties !== undefined) { - for (let i = 0; i < parentNodeDefinition.properties.length; i++) { - let property = parentNodeDefinition.properties[i] - if (nodeDefinition.propertyNameAtParent === property.name) { - switch (property.type) { - case 'node': { - node.payload.parentNode[property.name] = undefined - } - break - case 'array': { - let nodePropertyArray = node.payload.parentNode[property.name] - if (nodePropertyArray !== undefined) { - for (let j = 0; j < nodePropertyArray.length; j++) { - let arrayItem = nodePropertyArray[j] - if (arrayItem.id === node.id) { - /* If this object is chained to the ones of the same type we need to give the next in the chain the reference to the current chain parent */ - if (nodeDefinition.chainedToSameType === true) { - if (j < nodePropertyArray.length - 1) { - let nextArrayItem = nodePropertyArray[j + 1] - nextArrayItem.payload.chainParent = node.payload.chainParent - } + completeDeletion(node, rootNodes) + destroyUiObject(node) + cleanNode(node) + } + + function deleteUIObject(node, rootNodes) { + /* First we restore the reference parent to its default state */ + if (node.payload !== undefined && node.payload.referenceParent !== undefined && node.payload.referenceParent.payload !== undefined && node.payload.referenceParent.payload.uiObject !== undefined) { + node.payload.referenceParent.payload.uiObject.isShowing = false + } + + let nodeDefinition = getNodeDefinition(node) + if (nodeDefinition !== undefined) { + /* Remove all of its own children nodes. */ + if (nodeDefinition.properties !== undefined) { + let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.type) { + case 'node': { + if (property.name !== previousPropertyName) { + if (node[property.name] !== undefined) { + deleteUIObject(node[property.name], rootNodes) + } + previousPropertyName = property.name } - - nodePropertyArray.splice(j, 1) - } } - } + break + case 'array': { + let nodePropertyArray = node[property.name] + if (nodePropertyArray !== undefined) { + while (nodePropertyArray.length > 0) { + deleteUIObject(nodePropertyArray[0], rootNodes) + } + } + } + break } - break - } } - } } - } + + /* Remove node from parent */ + if (node.payload !== undefined) { + if (node.payload.parentNode !== undefined) { + let parentNodeDefinition = getNodeDefinition(node.payload.parentNode) + if (parentNodeDefinition !== undefined) { + if (parentNodeDefinition.properties !== undefined) { + for (let i = 0; i < parentNodeDefinition.properties.length; i++) { + let property = parentNodeDefinition.properties[i] + if (nodeDefinition.propertyNameAtParent === property.name) { + switch (property.type) { + case 'node': { + node.payload.parentNode[property.name] = undefined + } + break + case 'array': { + let nodePropertyArray = node.payload.parentNode[property.name] + if (nodePropertyArray !== undefined) { + for (let j = 0; j < nodePropertyArray.length; j++) { + let arrayItem = nodePropertyArray[j] + if (arrayItem.id === node.id) { + /* If this object is chained to the ones of the same type we need to give the next in the chain the reference to the current chain parent */ + if (nodeDefinition.chainedToSameType === true) { + if (j < nodePropertyArray.length - 1) { + let nextArrayItem = nodePropertyArray[j + 1] + nextArrayItem.payload.chainParent = node.payload.chainParent + } + } + + nodePropertyArray.splice(j, 1) + } + } + } + } + break + } + } + } + } + } + } + } + + completeDeletion(node, rootNodes) + destroyUiObject(node) + cleanNode(node) } - } - - completeDeletion(node, rootNodes) - destroyUiObject(node) - cleanNode(node) } - } - function completeDeletion (node, rootNodes) { - for (let i = 0; i < rootNodes.length; i++) { - let rootNode = rootNodes[i] - if (rootNode.id === node.id) { - rootNodes.splice(i, 1) - return - } + function completeDeletion(node, rootNodes) { + for (let i = 0; i < rootNodes.length; i++) { + let rootNode = rootNodes[i] + if (rootNode.id === node.id) { + rootNodes.splice(i, 1) + return + } + } } - } - function cleanNode (node) { - if (node.payload === undefined) { return } - if (node === undefined) { return } + function cleanNode(node) { + if (node.payload === undefined) { return } + if (node === undefined) { return } - node.payload.targetPosition.x = undefined - node.payload.targetPosition.y = undefined - node.payload.visible = undefined - node.payload.subTitle = undefined - node.payload.title = undefined - node.payload.node = undefined - node.payload.parentNode = undefined - node.payload.chainParent = undefined - node.payload.onMenuItemClick = undefined - node.handle = undefined - node.payload = undefined - node.cleaned = true - } + node.payload.targetPosition.x = undefined + node.payload.targetPosition.y = undefined + node.payload.visible = undefined + node.payload.subTitle = undefined + node.payload.title = undefined + node.payload.node = undefined + node.payload.parentNode = undefined + node.payload.chainParent = undefined + node.payload.onMenuItemClick = undefined + node.handle = undefined + node.payload = undefined + node.cleaned = true + } } diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/NodePath.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/NodePath.js new file mode 100644 index 000000000..02dc6362c --- /dev/null +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/NodePath.js @@ -0,0 +1,56 @@ +function newNodePath() { + thisObject = { + getNodePath: getNodePath + } + + return thisObject + + function getNodePath(node) { + + let nodePath = 'value' + + recursiveGet(node) + + return 'tradingEngine.' + nodePath + + function recursiveGet(node) { + + if (node.payload === undefined) { return } + if (node.payload.parentNode === undefined) { return } + + let nodeDefinition = getNodeDefinition(node.payload.parentNode) + if (nodeDefinition === undefined) { return } + if (nodeDefinition.properties === undefined) { return } + + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + let parentProperty = node.payload.parentNode[property.name] + if (parentProperty === undefined) { continue } + + switch (property.type) { + case 'node': { + if (parentProperty.id === node.id) { + /* We found it */ + nodePath = property.name + '.' + nodePath + recursiveGet(node.payload.parentNode) + } + } + break + case 'array': { + for (let j = 0; j < parentProperty.length; j++) { + let arrayProperty = parentProperty[j] + if (arrayProperty === undefined) {continue} + if (arrayProperty.id === node.id) { + /* We found it */ + nodePath = property.name + '[' + j + ']' + '.' + nodePath + recursiveGet(node.payload.parentNode) + } + } + } + break + } + } + } + } +} diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/OnFocus.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/OnFocus.js index a45c9f76c..1b8bdff6e 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/OnFocus.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/OnFocus.js @@ -1,56 +1,56 @@ -function newOnFocus () { - thisObject = { - getNodeThatIsOnFocus: getNodeThatIsOnFocus - } - return thisObject +function newOnFocus() { + thisObject = { + getNodeThatIsOnFocus: getNodeThatIsOnFocus + } + return thisObject - function getNodeThatIsOnFocus (node) { - if (node === undefined) { return } - if (node.payload === undefined) { return } - let nodeDefinition = APP_SCHEMA_MAP.get(node.type) - if (nodeDefinition !== undefined) { - /* First we ask the question to ourself */ - if (node.payload.uiObject.isOnFocus === true) { - return node - } + function getNodeThatIsOnFocus(node) { + if (node === undefined || node === null) { return } + if (node.payload === undefined) { return } + let nodeDefinition = getNodeDefinition(node) + if (nodeDefinition !== undefined) { + /* First we ask the question to ourself */ + if (node.payload.uiObject.isOnFocus === true) { + return node + } - /* Then we check all of its own children nodes. */ - if (node.payload.floatingObject.isCollapsed !== true) { - if (nodeDefinition.properties !== undefined) { - let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. - for (let i = 0; i < nodeDefinition.properties.length; i++) { - let property = nodeDefinition.properties[i] + /* Then we check all of its own children nodes. */ + if (node.payload.floatingObject.isCollapsed !== true) { + if (nodeDefinition.properties !== undefined) { + let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] - switch (property.type) { - case 'node': { - if (property.name !== previousPropertyName) { - if (node[property.name] !== undefined) { - let child - child = getNodeThatIsOnFocus(node[property.name]) - if (child !== undefined) { - return child - } - } - previousPropertyName = property.name - } - } - break - case 'array': { - let nodePropertyArray = node[property.name] - if (nodePropertyArray !== undefined) { - for (let m = 0; m < nodePropertyArray.length; m++) { - child = getNodeThatIsOnFocus(nodePropertyArray[m]) - if (child !== undefined) { - return child + switch (property.type) { + case 'node': { + if (property.name !== previousPropertyName) { + if (node[property.name] !== undefined) { + let child + child = getNodeThatIsOnFocus(node[property.name]) + if (child !== undefined) { + return child + } + } + previousPropertyName = property.name + } + } + break + case 'array': { + let nodePropertyArray = node[property.name] + if (nodePropertyArray !== undefined) { + for (let m = 0; m < nodePropertyArray.length; m++) { + child = getNodeThatIsOnFocus(nodePropertyArray[m]) + if (child !== undefined) { + return child + } + } + } + } + break + } } - } } - } - break } - } } - } } - } } diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ProtocolNode.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ProtocolNode.js index 73d626530..04c7bf1cb 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ProtocolNode.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ProtocolNode.js @@ -1,186 +1,206 @@ -function newProtocolNode () { - const MODULE_NAME = 'Protocol Node' - const ERROR_LOG = true - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME +function newProtocolNode() { + const MODULE_NAME = 'Protocol Node' + const ERROR_LOG = true + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME - thisObject = { - getProtocolNode: getProtocolNode - } - return thisObject + thisObject = { + getProtocolNode: getProtocolNode + } + return thisObject - function getProtocolNode (node, removePersonalData, parseCode, includeIds, includePayload, includeReferencesInSavedPayload, lightingPath) { - if (node === undefined) { return } - if (node.payload === undefined) { return } + function getProtocolNode(node, removePersonalData, parseConfig, includeIds, includePayload, includeReferencesInSavedPayload, lightingPath) { + if (node === undefined) { return } + if (node.payload === undefined) { return } - let nodeDefinition = APP_SCHEMA_MAP.get(node.type) - if (nodeDefinition !== undefined) { - if (removePersonalData === true && nodeDefinition.isPersonalData === true) { return } - let object = { - type: node.type, - name: node.name, - code: node.code - } - - /* Children Nodes */ - if (nodeDefinition.properties !== undefined) { - for (let i = 0; i < nodeDefinition.properties.length; i++) { - let property = nodeDefinition.properties[i] - - switch (property.type) { - case 'node': { - if (node[property.name] !== undefined) { - if (lightingPath === undefined) { - object[property.name] = getProtocolNode(node[property.name], removePersonalData, parseCode, includeIds, includeReferencesInSavedPayload, includePayload) - } else { - let newLightingPath = getNewLightingPath(lightingPath, node.type, property.childType) - if (newLightingPath !== undefined) { - object[property.name] = getProtocolNode(node[property.name], removePersonalData, parseCode, includeIds, includePayload, includeReferencesInSavedPayload, newLightingPath) - } - } - } - break + let nodeDefinition = getNodeDefinition(node) + if (nodeDefinition !== undefined) { + if (removePersonalData === true && nodeDefinition.isPersonalData === true) { return } + let object = { + type: node.type, + name: node.name, + code: node.code, + config: node.config } - case 'array': { - if (node[property.name] !== undefined) { - if (lightingPath === undefined) { - let nodePropertyArray = node[property.name] - object[property.name] = [] - for (let m = 0; m < nodePropertyArray.length; m++) { - let protocolNode = getProtocolNode(nodePropertyArray[m], removePersonalData, parseCode, includeIds, includeReferencesInSavedPayload, includePayload) - if (protocolNode !== undefined) { - object[property.name].push(protocolNode) + + /* Children Nodes */ + if (nodeDefinition.properties !== undefined) { + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.type) { + case 'node': { + if (node[property.name] !== undefined) { + if (lightingPath === undefined) { + object[property.name] = getProtocolNode(node[property.name], removePersonalData, parseConfig, includeIds, includeReferencesInSavedPayload, includePayload) + } else { + let newLightingPath = getNewLightingPath(lightingPath, node.type, property.childType) + if (newLightingPath !== undefined) { + object[property.name] = getProtocolNode(node[property.name], removePersonalData, parseConfig, includeIds, includePayload, includeReferencesInSavedPayload, newLightingPath) + } + } + } + break + } + case 'array': { + if (node[property.name] !== undefined) { + if (lightingPath === undefined) { + let nodePropertyArray = node[property.name] + object[property.name] = [] + for (let m = 0; m < nodePropertyArray.length; m++) { + let protocolNode = getProtocolNode(nodePropertyArray[m], removePersonalData, parseConfig, includeIds, includeReferencesInSavedPayload, includePayload) + if (protocolNode !== undefined) { + object[property.name].push(protocolNode) + } + } + } else { + let newLightingPath = getNewLightingPath(lightingPath, node.type, property.childType) + if (newLightingPath !== undefined) { + let nodePropertyArray = node[property.name] + object[property.name] = [] + for (let m = 0; m < nodePropertyArray.length; m++) { + let protocolNode = getProtocolNode(nodePropertyArray[m], removePersonalData, parseConfig, includeIds, includePayload, includeReferencesInSavedPayload, newLightingPath) + if (protocolNode !== undefined) { + object[property.name].push(protocolNode) + } + } + } + } + } + break + } } - } - } else { - let newLightingPath = getNewLightingPath(lightingPath, node.type, property.childType) - if (newLightingPath !== undefined) { - let nodePropertyArray = node[property.name] - object[property.name] = [] - for (let m = 0; m < nodePropertyArray.length; m++) { - let protocolNode = getProtocolNode(nodePropertyArray[m], removePersonalData, parseCode, includeIds, includePayload, includeReferencesInSavedPayload, newLightingPath) - if (protocolNode !== undefined) { - object[property.name].push(protocolNode) - } - } - } } - } - break } - } + + /* Parent Nodes */ + if (node.payload.parentNode !== undefined) { + let newLightingPath = getNewLightingPath(lightingPath, node.type, node.payload.parentNode.type) + if (newLightingPath !== undefined) { + object.parentNode = getProtocolNode(node.payload.parentNode, removePersonalData, parseConfig, includeIds, includePayload, includeReferencesInSavedPayload, newLightingPath) + } else { + let newLightingPath = getNewLightingPath(lightingPath, node.type, node.payload.parentNode.type) + } + } + if (node.payload.referenceParent !== undefined) { + let newLightingPath = getNewLightingPath(lightingPath, node.type, node.payload.referenceParent.type) + if (newLightingPath !== undefined) { + object.referenceParent = getProtocolNode(node.payload.referenceParent, removePersonalData, parseConfig, includeIds, includePayload, includeReferencesInSavedPayload, newLightingPath) + } + } + + if (parseConfig && object.config !== undefined && nodeDefinition.editors !== undefined) { + if (nodeDefinition.editors.config === true) { + try { + object.config = JSON.parse(node.config) + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] getProtocolNode -> default -> err = ' + err.stack) } + if (ERROR_LOG === true) { logger.write('[ERROR] getProtocolNode -> default -> node.type = ' + node.type) } + if (ERROR_LOG === true) { logger.write('[ERROR] getProtocolNode -> default -> node.name = ' + node.name) } + if (ERROR_LOG === true) { logger.write('[ERROR] getProtocolNode -> default -> node.config = ' + node.config) } + if (ERROR_LOG === true) { logger.write('[ERROR] getProtocolNode -> default -> node.id = ' + node.id) } + } + } + } + + if (includeIds) { + object.id = node.id + } + if (includePayload) { + object.savedPayload = getSavedPayload(node, includeReferencesInSavedPayload) + } + + return object } - } - - /* Parent Nodes */ - if (node.payload.parentNode !== undefined) { - let newLightingPath = getNewLightingPath(lightingPath, node.type, node.payload.parentNode.type) - if (newLightingPath !== undefined) { - object.parentNode = getProtocolNode(node.payload.parentNode, removePersonalData, parseCode, includeIds, includePayload, includeReferencesInSavedPayload, newLightingPath) - } - } - if (node.payload.referenceParent !== undefined) { - let newLightingPath = getNewLightingPath(lightingPath, node.type, node.payload.referenceParent.type) - if (newLightingPath !== undefined) { - object.referenceParent = getProtocolNode(node.payload.referenceParent, removePersonalData, parseCode, includeIds, includePayload, includeReferencesInSavedPayload, newLightingPath) - } - } - - if (parseCode && object.code !== undefined && nodeDefinition.editors !== undefined) { - if (nodeDefinition.editors.config === true) { - try { - object.code = JSON.parse(node.code) - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] getProtocolNode -> default -> err = ' + err.stack) } - if (ERROR_LOG === true) { logger.write('[ERROR] getProtocolNode -> default -> node.type = ' + node.type) } - if (ERROR_LOG === true) { logger.write('[ERROR] getProtocolNode -> default -> node.name = ' + node.name) } - if (ERROR_LOG === true) { logger.write('[ERROR] getProtocolNode -> default -> node.code = ' + node.code) } - if (ERROR_LOG === true) { logger.write('[ERROR] getProtocolNode -> default -> node.id = ' + node.id) } - } - } - } - - if (includeIds) { - object.id = node.id - } - if (includePayload) { - object.savedPayload = getSavedPayload(node, includeReferencesInSavedPayload) - } - - return object - } - } - - function getNewLightingPath (lightingPath, currentNodeType, nextNodeType) { - if (lightingPath === undefined) { return } - - if (currentNodeType === undefined) { return } - if (nextNodeType === undefined) { return } - - let currentNodePosition = lightingPath.indexOf('->' + currentNodeType + '->') - let nextNodePosition = lightingPath.indexOf('->' + nextNodeType + '->') - - let newLightingPath = lightingPath.substring(nextNodePosition, lightingPath.length + 1) - - if (nextNodePosition > currentNodePosition) { - return newLightingPath - } else { - return - } - } - - function getSavedPayload (node, includeReferencesInSavedPayload) { - if (node.payload === undefined) { return } - let savedPayload = { - position: { - x: node.payload.position.x, - y: node.payload.position.y - }, - targetPosition: { - x: node.payload.targetPosition.x, - y: node.payload.targetPosition.y - }, - floatingObject: { - isPinned: node.payload.floatingObject.isPinned, - isFrozen: (node.payload.floatingObject.isFrozen && node.payload.floatingObject.frozenManually), - isCollapsed: (node.payload.floatingObject.isCollapsed && node.payload.floatingObject.collapsedManually), - angleToParent: (node.payload.floatingObject.angleToParent), - distanceToParent: (node.payload.floatingObject.distanceToParent), - arrangementStyle: (node.payload.floatingObject.arrangementStyle) - }, - uiObject: { - isRunning: node.payload.uiObject.isRunning, - shortcutKey: node.payload.uiObject.shortcutKey - } } - if (node.payload.frame !== undefined) { - savedPayload.frame = { - position: { - x: node.payload.frame.position.x, - y: node.payload.frame.position.y - }, - width: node.payload.frame.width, - height: node.payload.frame.height, - radius: node.payload.frame.radius - } + function getNewLightingPath(lightingPath, currentNodeType, nextNodeType) { + if (lightingPath === undefined) { return } + + if (currentNodeType === undefined) { return } + if (nextNodeType === undefined) { return } + + let currentNodePosition = lightingPath.indexOf('->' + currentNodeType + '->') + let nextNodePosition = lightingPath.indexOf('->' + nextNodeType + '->') + + /* + In some situations, the current and next node are of the same type. + When that happens, we need to search for the second instance of that type + at the lighting path. + */ + if (currentNodeType === nextNodeType) { + let tempLightingPath = lightingPath.substring(currentNodePosition + currentNodeType.length, lightingPath.length + 1) + nextNodePosition = tempLightingPath.indexOf('->' + nextNodeType + '->') + } + + let newLightingPath = lightingPath.substring(nextNodePosition, lightingPath.length + 1) + + if (nextNodePosition > currentNodePosition) { + return newLightingPath + } else { + return + } } - if (includeReferencesInSavedPayload) { - /* Next for the ones that have a reference parent, we include it */ - if (node.payload.referenceParent !== undefined) { - savedPayload.referenceParent = { - type: node.payload.referenceParent.type, - name: node.payload.referenceParent.name, - id: node.payload.referenceParent.id + function getSavedPayload(node, includeReferencesInSavedPayload) { + if (node.payload === undefined) { return } + let savedPayload = { + position: { + x: node.payload.position.x, + y: node.payload.position.y + }, + targetPosition: { + x: node.payload.targetPosition.x, + y: node.payload.targetPosition.y + }, + floatingObject: { + isPinned: node.payload.floatingObject.isPinned, + isFrozen: (node.payload.floatingObject.isFrozen && node.payload.floatingObject.frozenManually), + isCollapsed: (node.payload.floatingObject.isCollapsed && node.payload.floatingObject.collapsedManually), + angleToParent: (node.payload.floatingObject.angleToParent), + distanceToParent: (node.payload.floatingObject.distanceToParent), + arrangementStyle: (node.payload.floatingObject.arrangementStyle) + }, + uiObject: { + isPlaying: node.payload.uiObject.isPlaying, + isRunning: node.payload.uiObject.isRunning, + shortcutKey: node.payload.uiObject.shortcutKey + } } - } else { - /* The referenceParent property can be inherited from the previous saved payload. */ - if (node.savedPayload !== undefined) { - savedPayload.referenceParent = node.savedPayload.referenceParent + + if (node.payload.frame !== undefined) { + savedPayload.frame = { + position: { + x: node.payload.frame.position.x, + y: node.payload.frame.position.y + }, + width: node.payload.frame.width, + height: node.payload.frame.height, + radius: node.payload.frame.radius + } } - } + + if (node.payload.tutorial !== undefined) { + savedPayload.tutorial = { + status: node.payload.tutorial.status + } + } + + if (includeReferencesInSavedPayload) { + /* Next for the ones that have a reference parent, we include it */ + if (node.payload.referenceParent !== undefined) { + savedPayload.referenceParent = { + type: node.payload.referenceParent.type, + name: node.payload.referenceParent.name, + id: node.payload.referenceParent.id + } + } else { + /* The referenceParent property can be inherited from the previous saved payload. */ + if (node.savedPayload !== undefined) { + savedPayload.referenceParent = node.savedPayload.referenceParent + } + } + } + return savedPayload } - return savedPayload - } } diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ReferenceAttachDetach.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ReferenceAttachDetach.js index f9b6b3cd5..5b8ffe35a 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ReferenceAttachDetach.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ReferenceAttachDetach.js @@ -1,37 +1,37 @@ -function newReferenceAttachDetach () { - thisObject = { - referenceDetachNode: referenceDetachNode, - referenceAttachNode: referenceAttachNode - } +function newReferenceAttachDetach() { + thisObject = { + referenceDetachNode: referenceDetachNode, + referenceAttachNode: referenceAttachNode + } - return thisObject + return thisObject - function referenceDetachNode (node) { - completeDetachment(node) - } + function referenceDetachNode(node) { + completeDetachment(node) + } - function referenceAttachNode (node, attachToNode, rootNodes) { - completeAttachment(node, attachToNode) - } + function referenceAttachNode(node, attachToNode, rootNodes) { + completeAttachment(node, attachToNode) + } - function completeAttachment (node, attachToNode) { - node.payload.referenceParent = attachToNode - } + function completeAttachment(node, attachToNode) { + node.payload.referenceParent = attachToNode + } - function completeDetachment (node) { - if (node.payload !== undefined !== undefined) { - if (node.payload.referenceParent !== undefined) { - if (node.payload.referenceParent.payload !== undefined) { - if (node.payload.referenceParent.payload.uiObject !== undefined) { - node.payload.referenceParent.payload.uiObject.isShowing = false - } + function completeDetachment(node) { + if (node.payload !== undefined !== undefined) { + if (node.payload.referenceParent !== undefined) { + if (node.payload.referenceParent.payload !== undefined) { + if (node.payload.referenceParent.payload.uiObject !== undefined) { + node.payload.referenceParent.payload.uiObject.isShowing = false + } + } + } } - } - } - node.payload.referenceParent = undefined - if (node.savedPayload !== undefined) { - node.savedPayload.referenceParent = undefined + node.payload.referenceParent = undefined + if (node.savedPayload !== undefined) { + node.savedPayload.referenceParent = undefined + } } - } } diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/SessionFunctions.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/SessionFunctions.js index e1f7883e2..9bf6c6c14 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/SessionFunctions.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/SessionFunctions.js @@ -1,130 +1,235 @@ -function newSessionFunctions () { - thisObject = { - runSession: runSession, - stopSession: stopSession - } - - return thisObject - - function runSession (node, functionLibraryProtocolNode, functionLibraryDependenciesFilter, callBackFunction) { - if (validations(node) !== true) { - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - return +function newSessionFunctions() { + thisObject = { + syncronizeSessionWithBackEnd: syncronizeSessionWithBackEnd, + runSession: runSession, + stopSession: stopSession } - let networkNode = node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode - let eventsServerClient = canvas.designSpace.workspace.eventsServerClients.get(networkNode.id) + return thisObject - node.payload.uiObject.run(eventsServerClient, callBackFunction) + function syncronizeSessionWithBackEnd(node) { + let networkNode = validations(node) + if (networkNode === undefined) { + /* Nodes that do not belong to a network can not get ready. */ + return + } - let key = node.name + '-' + node.type + '-' + node.id + let eventsServerClient = canvas.designSpace.workspace.eventsServerClients.get(networkNode.id) - let lightingPath = '' + - 'Trading System->' + - 'Parameters->' + - 'Base Asset->Quoted Asset->Time Range->Time Frame->Slippage->Fee Structure->' + - 'Exchange Account Asset->Asset->' + - 'Strategy->' + - 'Trigger Stage->Trigger On Event->Trigger Off Event->Take Position Event->' + - 'Announcement->Formula->' + - 'Open Stage->Initial Definition->Open Execution->' + - 'Position Size->Position Rate->Formula->' + - 'Initial Stop->Initial Take Profit->' + - 'Manage Stage->' + - 'Stop->Take Profit->' + - 'Phase->Formula->Next Phase Event->Move to Phase Event->Phase->' + - 'Situation->Condition->Javascript Code->' + - 'Close Stage->Close Execution->' + - 'Announcement->Formula->' + /* First we setup everything so as to listen to the response from the Task Server */ + let eventSubscriptionIdOnStatus + let key = node.name + '-' + node.type + '-' + node.id + eventsServerClient.listenToEvent(key, 'Status Response', undefined, node.id, onResponse, onStatus) - let tradingSystem = functionLibraryProtocolNode.getProtocolNode(node.payload.referenceParent, false, true, true, false, false, lightingPath) + function onResponse(message) { + eventSubscriptionIdOnStatus = message.eventSubscriptionId + } - lightingPath = '' + - 'Backtesting Session->Paper Trading Session->Fordward Testing Session->Live Trading Session->' + - 'Parameters->' + - 'Base Asset->Quoted Asset->Time Range->Time Frame->Slippage->Fee Structure->' + - 'Exchange Account Asset->Asset->' + - 'Social Bots->Telegram Bot->' + function onStatus(message) { + eventsServerClient.stopListening(key, eventSubscriptionIdOnStatus, node.id) + if (message.event.status === 'Session Runnning' ) { + node.payload.uiObject.menu.internalClick('Run Session') + } + } - let session = functionLibraryProtocolNode.getProtocolNode(node, false, true, true, false, false, lightingPath) - - let dependencyFilter = functionLibraryDependenciesFilter.createFilter(node.payload.referenceParent) - - /* Raise event to run the session */ - let event = { - session: JSON.stringify(session), - tradingSystem: JSON.stringify(tradingSystem), - dependencyFilter: JSON.stringify(dependencyFilter) + /* Second we ask the Task Server if this Session is Running. */ + eventsServerClient.raiseEvent(key, 'Session Status') } - eventsServerClient.raiseEvent(key, 'Run Session', event) + function runSession(node, functionLibraryProtocolNode, functionLibraryDependenciesFilter, resume, callBackFunction) { + let networkNode = validations(node) + if (networkNode === undefined) { + /* This means that the validations failed. */ + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } - if (node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - return - } - } + let eventsServerClient = canvas.designSpace.workspace.eventsServerClients.get(networkNode.id) - function stopSession (node, functionLibraryProtocolNode, callBackFunction) { - if (validations(node) !== true) { - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - return + node.payload.uiObject.run(eventsServerClient, callBackFunction) + + let key = node.name + '-' + node.type + '-' + node.id + + let lightingPath = '' + + 'Trading System->' + + 'Dynamic Indicators->Indicator Function->Formula->' + + 'Trading Strategy->' + + 'Trigger Stage->Trigger On Event->Trigger Off Event->Take Position Event->' + + 'Announcement->Announcement Formula->' + + 'Open Stage->' + + 'Manage Stage->' + + 'Managed Stop Loss->Managed Take Profit->' + + 'Phase->Formula->Next Phase Event->Move To Phase Event->Phase->' + + 'Situation->Condition->Javascript Code->' + + 'Close Stage->' + + 'Initial Targets->Target Size In Base Asset->Target Size In Quoted Asset->Target Rate->Formula->' + + 'Announcement->Announcement Formula->' + + 'Open Execution->Close Execution->' + + 'Execution Algorithm->Market Buy Order->Market Sell Order->Limit Buy Order->Limit Sell Order->' + + 'Order Rate->Formula->' + + 'Create Order Event->Cancel Order Event->' + + 'Size In Base Asset->Size In Quoted Asset->Position Rate->Formula->' + + 'Situation->Condition->Javascript Code->' + + 'Market Order->Limit Order->' + + 'Simulated Exchange Events->Simulated Partial Fill->Simulated Actual Rate->Simulated Fees Paid->Formula->' + + let tradingSystem = functionLibraryProtocolNode.getProtocolNode(node.tradingSystemReference.payload.referenceParent, false, true, true, false, false, lightingPath) + + lightingPath = '' + + 'Trading Engine->' + + 'Dynamic Indicators->Indicator Function->' + + 'Current->Last->Previous->' + + 'Episode->' + + 'Episode Base Asset->Episode Quoted Asset->Episode Counters->Episode Statistics->' + + 'Strategies->Positions->Orders->Hits->Fails->' + + 'Profit Loss->Hit Ratio->Hit Fail->Days->ROI->Annualized Rate Of Return->User Defined Statistic->' + + 'Candle->Cycle->' + + 'Begin->End->Open->Close->Min->Max->Index->' + + 'Distance To Event->' + + 'Head Of The Market->Process Date->' + + 'Trigger On->Trigger Off->Take Position->Close Position->Next Phase->Move To Phase->Create Order->Cancel Order->Close Order->' + + 'Strategy->' + + 'Strategy Counters->' + + 'Position->' + + 'Entry Target Rate->Exit Target Rate->' + + 'Stop Loss->Stop Loss Phase->Stop Loss Position->' + + 'Take Profit->Take Profit Phase->Take Profit Position->' + + 'Position Counters->' + + 'Position Statistics->Days->User Defined Statistic->' + + 'Position Base Asset->Position Quoted Asset->Entry Target Size->Exit Target Size->' + + 'Profit Loss->ROI->Hit Fail->' + + 'Exchange Orders->Market Buy Orders->Market Sell Orders->Limit Buy Orders->Limit Sell Orders->' + + 'Market Order->Limit Order->' + + 'Exchange Id->Rate->Order Name->Algorithm Name->Lock->' + + 'Order Counters->' + + 'Order Base Asset->Order Quoted Asset->' + + 'Size->Size Filled->Fees Paid->' + + 'Order Statistics->Percentage Filled->Actual Rate->Days->User Defined Statistic->' + + 'Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->' + + 'Begin->End->Exit Type->Status->Begin Rate->End Rate->Stage Base Asset->Stage Quoted Asset->Size Placed->Target Size->Size Filled->Fees Paid->Stage Defined In->' + + 'Serial Number->Identifier->Begin->End->Begin Rate->End Rate->Strategy Name->Status->Exit Type->' + + 'Balance->Begin Balance->End Balance->' + + 'Index->Situation Name->Formula->Periods->' + + let tradingEngine = functionLibraryProtocolNode.getProtocolNode(node.tradingEngineReference.payload.referenceParent, false, true, true, false, false, lightingPath) + + lightingPath = '' + + 'Backtesting Session->Paper Trading Session->Forward Testing Session->Live Trading Session->' + + 'Parameters->' + + 'Session Base Asset->Session Quoted Asset->Time Range->Time Frame->Slippage->Fee Structure->Snapshots->Heartbeats->User Defined Parameters->' + + 'Exchange Account Asset->Asset->' + + 'Social Bots->Telegram Bot->' + + let session = functionLibraryProtocolNode.getProtocolNode(node, false, true, true, false, false, lightingPath) + + let dependencyFilter = functionLibraryDependenciesFilter.createFilter(node.tradingSystemReference.payload.referenceParent) + + /* Raise event to run the session */ + let event = { + session: JSON.stringify(session), + tradingSystem: JSON.stringify(tradingSystem), + tradingEngine: JSON.stringify(tradingEngine), + dependencyFilter: JSON.stringify(dependencyFilter), + resume: resume + } + + if (resume !== true) { + eventsServerClient.raiseEvent(key, 'Run Session', event) + } else { + eventsServerClient.raiseEvent(key, 'Resume Session', event) + } + + if (node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } } - let networkNode = node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode - let eventsServerClient = canvas.designSpace.workspace.eventsServerClients.get(networkNode.id) + function stopSession(node, functionLibraryProtocolNode, callBackFunction) { + let networkNode = validations(node) + if (networkNode === undefined) { + /* This means that the validations failed. */ + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } + + let eventsServerClient = canvas.designSpace.workspace.eventsServerClients.get(networkNode.id) - let key = node.name + '-' + node.type + '-' + node.id - eventsServerClient.raiseEvent(key, 'Stop Session') + let key = node.name + '-' + node.type + '-' + node.id + eventsServerClient.raiseEvent(key, 'Stop Session') - node.payload.uiObject.stop(callBackFunction) - } - - function validations (node) { - if (node.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs a Process Instance parent to be able to run.') - return + node.payload.uiObject.stop(callBackFunction) } - if (node.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside a Trading Process Instance.') - return - } + function validations(node) { + if (node.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs a Process Instance parent to be able to run.') + return + } - if (node.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside a Task.') - return - } + if (node.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside a Trading Process Instance.') + return + } - if (node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside a Task Manager.') - return - } + if (node.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside a Task.') + return + } - if (node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside Exchange Tasks.') - return - } + if (node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside a Task Manager.') + return + } - if (node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside a Testing or Production Environment.') - return - } + let taskManager = node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode - if (node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside a Network Node.') - return - } + if (taskManager.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside Mine Tasks.') + return + } - if (node.payload.parentNode.payload.uiObject.isRunning !== true) { - node.payload.uiObject.setErrorMessage('Session needs a Process Instance parent to be running.') - return - } + if (taskManager.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside Market Tasks.') + return + } - if (node.payload.referenceParent === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to reference a Trading System.') - return + if (taskManager.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside Exchange Tasks.') + return + } + + if (taskManager.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside a Testing or Production Environment.') + return + } + + if (taskManager.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside a Network Node.') + return + } + + let networkNode = taskManager.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode + + if (node.tradingSystemReference === undefined) { + node.payload.uiObject.setErrorMessage('Session needs a child Trading System Reference.') + return + } + + if (node.tradingEngineReference === undefined) { + node.payload.uiObject.setErrorMessage('Session needs a child Trading Engine Reference.') + return + } + + if (node.tradingSystemReference.payload.referenceParent === undefined) { + node.payload.uiObject.setErrorMessage('Trading System Reference needs to reference a Trading System.') + return + } + + if (node.tradingEngineReference.payload.referenceParent === undefined) { + node.payload.uiObject.setErrorMessage('Trading Engine Reference needs to reference a Trading Engine.') + return + } + return networkNode } - return true - } } diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ShortcutKeys.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ShortcutKeys.js index 28e6afc2a..94d7058eb 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ShortcutKeys.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ShortcutKeys.js @@ -1,55 +1,55 @@ -function newShortcutKeys () { - thisObject = { - getNodeByShortcutKey: getNodeByShortcutKey - } - return thisObject +function newShortcutKeys() { + thisObject = { + getNodeByShortcutKey: getNodeByShortcutKey + } + return thisObject - function getNodeByShortcutKey (node, searchingKey) { - if (node === undefined) { return } - let nodeDefinition = APP_SCHEMA_MAP.get(node.type) - if (nodeDefinition !== undefined) { - /* Check Self first */ - if (node.payload.uiObject.shortcutKey === searchingKey) { - return node - } + function getNodeByShortcutKey(node, searchingKey) { + if (node === undefined) { return } + let nodeDefinition = getNodeDefinition(node) + if (nodeDefinition !== undefined) { + /* Check Self first */ + if (node.payload.uiObject.shortcutKey === searchingKey) { + return node + } - /* Check all of its own children nodes. */ - if (node.payload.floatingObject.isCollapsed !== true) { - if (nodeDefinition.properties !== undefined) { - let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. - for (let i = 0; i < nodeDefinition.properties.length; i++) { - let property = nodeDefinition.properties[i] + /* Check all of its own children nodes. */ + if (node.payload.floatingObject.isCollapsed !== true) { + if (nodeDefinition.properties !== undefined) { + let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] - switch (property.type) { - case 'node': { - if (property.name !== previousPropertyName) { - if (node[property.name] !== undefined) { - let child - child = getNodeByShortcutKey(node[property.name], searchingKey) - if (child !== undefined) { - return child - } - } - previousPropertyName = property.name - } - } - break - case 'array': { - let nodePropertyArray = node[property.name] - if (nodePropertyArray !== undefined) { - for (let m = 0; m < nodePropertyArray.length; m++) { - child = getNodeByShortcutKey(nodePropertyArray[m], searchingKey) - if (child !== undefined) { - return child + switch (property.type) { + case 'node': { + if (property.name !== previousPropertyName) { + if (node[property.name] !== undefined) { + let child + child = getNodeByShortcutKey(node[property.name], searchingKey) + if (child !== undefined) { + return child + } + } + previousPropertyName = property.name + } + } + break + case 'array': { + let nodePropertyArray = node[property.name] + if (nodePropertyArray !== undefined) { + for (let m = 0; m < nodePropertyArray.length; m++) { + child = getNodeByShortcutKey(nodePropertyArray[m], searchingKey) + if (child !== undefined) { + return child + } + } + } + } + break + } } - } } - } - break } - } } - } } - } } diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/SuperScripts.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/SuperScripts.js index 3965fe328..bbb214083 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/SuperScripts.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/SuperScripts.js @@ -1,90 +1,90 @@ -function newSuperScriptsFunctions () { - thisObject = { - runSuperScript: runSuperScript - } +function newSuperScriptsFunctions() { + thisObject = { + runSuperScript: runSuperScript + } - return thisObject + return thisObject - function runSuperScript (node, rootNodes, functionLibraryNodeCloning, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) { - try { - let clone = functionLibraryNodeCloning.getNodeClone - let executionResult = true - let superAction = node + function runSuperScript(node, rootNodes, functionLibraryNodeCloning, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) { + try { + let clone = functionLibraryNodeCloning.getNodeClone + let executionResult = true + let superAction = node - function setup (templateClone, target, exchange, exchangeNodeType, arrayPropertyName) { - spawnPosition.x = target.payload.position.x - spawnPosition.y = target.payload.position.y + function setup(templateClone, target, exchange, exchangeNodeType, arrayPropertyName) { + spawnPosition.x = target.payload.position.x + spawnPosition.y = target.payload.position.y - if (exchange === undefined) { - functionLibraryUiObjectsFromNodes.createUiObjectFromNode(templateClone, target, target) - } else { - let definition = APP_SCHEMA_MAP.get(target.type) - for (let i = 0; i < definition.properties.length; i++) { - let property = definition.properties[i] - if (property.childType === exchangeNodeType) { - let exchanges = target[property.name] - if (exchanges === undefined) { - exchanges = [] - } - let targetExchange - for (let j = 0; j < exchanges.length; j++) { - let thisExchange = exchanges[j] - if (thisExchange.payload.referenceParent !== undefined) { - if (thisExchange.payload.referenceParent.id === exchange.id) { - targetExchange = thisExchange - } + if (exchange === undefined) { + functionLibraryUiObjectsFromNodes.createUiObjectFromNode(templateClone, target, target) + } else { + let definition = getNodeDefinition(target) + for (let i = 0; i < definition.properties.length; i++) { + let property = definition.properties[i] + if (property.childType === exchangeNodeType) { + let exchanges = target[property.name] + if (exchanges === undefined) { + exchanges = [] + } + let targetExchange + for (let j = 0; j < exchanges.length; j++) { + let thisExchange = exchanges[j] + if (thisExchange.payload.referenceParent !== undefined) { + if (thisExchange.payload.referenceParent.id === exchange.id) { + targetExchange = thisExchange + } + } + } + if (targetExchange === undefined) { + targetExchange = functionLibraryUiObjectsFromNodes.addUIObject(target, exchangeNodeType) + targetExchange.payload.referenceParent = exchange + } + let nodesArray = targetExchange[arrayPropertyName] + nodesArray.push(templateClone) + functionLibraryUiObjectsFromNodes.createUiObjectFromNode(templateClone, targetExchange, targetExchange) + } + } } - } - if (targetExchange === undefined) { - targetExchange = functionLibraryUiObjectsFromNodes.addUIObject(target, exchangeNodeType) - targetExchange.payload.referenceParent = exchange - } - let nodesArray = targetExchange[arrayPropertyName] - nodesArray.push(templateClone) - functionLibraryUiObjectsFromNodes.createUiObjectFromNode(templateClone, targetExchange, targetExchange) } - } - } - } - function deleteNode (node) { - functionLibraryNodeDeleter.deleteUIObject(node, rootNodes) - } + function deleteNode(node) { + functionLibraryNodeDeleter.deleteUIObject(node, rootNodes) + } - /* Validations */ - if (executionResult === true && node.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Super Action node needs a Parent Node.') - executionResult = false - } - if (executionResult === true && node.payload.referenceParent === undefined) { - node.payload.uiObject.setErrorMessage('Super Action node needs to reference a Master Script Node.') - executionResult = false - } - if (executionResult === true && node.payload.referenceParent.javascriptCode === undefined) { - node.payload.uiObject.setErrorMessage('Master Script Node needs to have a child Javascript Code Node.') - executionResult = false - } + /* Validations */ + if (executionResult === true && node.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Super Action node needs a Parent Node.') + executionResult = false + } + if (executionResult === true && node.payload.referenceParent === undefined) { + node.payload.uiObject.setErrorMessage('Super Action node needs to reference a Master Script Node.') + executionResult = false + } + if (executionResult === true && node.payload.referenceParent.javascriptCode === undefined) { + node.payload.uiObject.setErrorMessage('Master Script Node needs to have a child Javascript Code Node.') + executionResult = false + } - let masterScript = node.payload.referenceParent + let masterScript = node.payload.referenceParent - eval(masterScript.javascriptCode.code) + eval(masterScript.javascriptCode.code) - let masterScriptInstance = newNewMasterScriptInstance() + let masterScriptInstance = newNewMasterScriptInstance() - if (executionResult === true) { - executionResult = masterScriptInstance.runValidations(superAction, masterScript) - } - if (executionResult === true) { - executionResult = masterScriptInstance.runScript(superAction, masterScript) - } - if (executionResult === true) { - superAction.payload.uiObject.setValue('Execution Completed Successfully') - } else { - superAction.payload.uiObject.setValue('Execution Failed') - } - } catch (err) { - superAction.payload.uiObject.setErrorMessage(err.message) - superAction.payload.uiObject.setValue('Execution Failed') + if (executionResult === true) { + executionResult = masterScriptInstance.runValidations(superAction, masterScript) + } + if (executionResult === true) { + executionResult = masterScriptInstance.runScript(superAction, masterScript) + } + if (executionResult === true) { + superAction.payload.uiObject.setValue('Execution Completed Successfully') + } else { + superAction.payload.uiObject.setValue('Execution Failed') + } + } catch (err) { + superAction.payload.uiObject.setErrorMessage(err.message) + superAction.payload.uiObject.setValue('Execution Failed') + } } - } } diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/TaskFunctions.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/TaskFunctions.js index e364f9303..615c8dd2a 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/TaskFunctions.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/TaskFunctions.js @@ -1,228 +1,618 @@ -function newTaskFunctions () { - thisObject = { - runTask: runTask, - stopTask: stopTask, - runAllTasks: runAllTasks, - stopAllTasks: stopAllTasks, - runAllTaskManagers: runAllTaskManagers, - stopAllTaskManagers: stopAllTaskManagers, - runAllExchangeTasks: runAllExchangeTasks, - stopAllExchangeTasks: stopAllExchangeTasks - } +function newTaskFunctions() { + thisObject = { + syncronizeTaskWithBackEnd: syncronizeTaskWithBackEnd, - return thisObject + runTask: runTask, + stopTask: stopTask, + runAllTasks: runAllTasks, + stopAllTasks: stopAllTasks, + runAllTaskManagers: runAllTaskManagers, + stopAllTaskManagers: stopAllTaskManagers, - function runTask (node, functionLibraryProtocolNode, isDebugging, callBackFunction) { - if (validations(node) !== true) { - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - return + runAllExchangeDataTasks: runAllExchangeDataTasks, + stopAllExchangeDataTasks: stopAllExchangeDataTasks, + runAllExchangeTradingTasks: runAllExchangeTradingTasks, + stopAllExchangeTradingTasks: stopAllExchangeTradingTasks, + + runAllMarketDataTasks: runAllMarketDataTasks, + stopAllMarketDataTasks: stopAllMarketDataTasks, + runAllMarketTradingTasks: runAllMarketTradingTasks, + stopAllMarketTradingTasks: stopAllMarketTradingTasks, + + runAllDataMineTasks: runAllDataMineTasks, + stopAllDataMineTasks: stopAllDataMineTasks, + runAllTradingMineTasks: runAllTradingMineTasks, + stopAllTradingMineTasks: stopAllTradingMineTasks, + + addMissingExchangeDataTasks: addMissingExchangeDataTasks, + addMissingMarketDataTasks: addMissingMarketDataTasks, + addMissingDataMineTasks: addMissingDataMineTasks, + addMissingExchangeTradingTasks: addMissingExchangeTradingTasks, + addMissingMarketTradingTasks: addMissingMarketTradingTasks, + addMissingTradingMineTasks: addMissingTradingMineTasks, + addAllTasks: addAllTasks } - let networkNode = node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode - let eventsServerClient = canvas.designSpace.workspace.eventsServerClients.get(networkNode.id) + return thisObject - for (let i = 0; i < node.bot.processes.length; i++) { - let process = node.bot.processes[i] - process.payload.uiObject.run(eventsServerClient) + function syncronizeTaskWithBackEnd(node) { + let networkNode = validations(node) + if (networkNode === undefined) { + /* Nodes that do not belong to a network can not get ready. */ + return + } + + let eventsServerClient = canvas.designSpace.workspace.eventsServerClients.get(networkNode.id) + + /* First we setup everything so as to listen to the response from the Task Manger */ + let eventSubscriptionIdOnStatus + let key = 'Task Client - ' + node.id + eventsServerClient.listenToEvent(key, 'Task Status', undefined, node.id, onResponse, onStatus) + + function onResponse(message) { + eventSubscriptionIdOnStatus = message.eventSubscriptionId + } + + function onStatus(message) { + eventsServerClient.stopListening(key, eventSubscriptionIdOnStatus, node.id) + if (message.event.status === 'Task Process Running' ) { + node.payload.uiObject.menu.internalClick('Run Task') + } + } + + /* Second we ask the Task Manager if this Task has a process Running. */ + let event = { + taskId: node.id + } + + eventsServerClient.raiseEvent('Task Manager', 'Task Status', event) } - let taskLightingPath = '->Task->' + - 'Sensor Bot Instance->' + - 'Indicator Bot Instance->' + - 'Trading Bot Instance->' + - 'Sensor Process Instance->Indicator Process Instance->Trading Process Instance->' + - 'Market Reference->' + - 'Key Instance->Exchange Account Key->' + - 'Market->Exchange Markets->Crypto Exchange->' + - 'Market Base Asset->Market Quoted Asset->Asset->' + - 'Backtesting Session->Live Trading Session->Paper Trading Session->Fordward Testing Session->' + - 'Process Definition->' + - 'Process Output->Output Dataset->Dataset Definition->Product Definition->' + - 'Process Dependencies->' + - 'Status Dependency->Status Report->Process Definition->' + - 'Data Dependency->Dataset Definition->Product Definition->' + - 'Record Definition->Record Property->Formula->' + - 'Data Building Procedure->' + - 'Procedure Initialization->Javascript Code->' + - 'Procedure Loop->Javascript Code->' + - 'Calculations Procedure->' + - 'Procedure Initialization->Javascript Code->' + - 'Procedure Loop->Javascript Code->' + - 'Status Report->' + - 'Execution Finished Event->' + - 'Execution Started Event->Execution Finished Event->Process Definition->' + - 'Sensor Bot->' + - 'Indicator Bot->' + - 'Trading Bot->' + - 'Data Mine->' + function runTask(node, functionLibraryProtocolNode, isDebugging, callBackFunction) { - let taskDefinition = functionLibraryProtocolNode.getProtocolNode(node, false, true, true, false, false, taskLightingPath) + let networkNode = validations(node) + if (networkNode === undefined) { + /* This means that the validations failed. */ + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } - let networkLightingPath = '->Network->Network Node->' + - 'Data Storage->Session Independent Data->Exchange Data Products->' + - 'Single Market Data->Data Product->Product Definition->' + - 'Data Mining->Testing Environment->Production Environment->' + - 'Exchange Tasks->Crypto Exchange->' + - 'Task Manager->Task->' + - 'Indicator Bot Instance->Sensor Bot Instance->Trading Bot Instance->' + - 'Indicator Process Instance->Sensor Process Instance->Trading Process Instance->' + - 'Paper Trading Session->Forward Testing Session->Backtesting Session->Live Trading Session->' + - 'Market Reference->Market->' + - 'Process Definition->' + let eventsServerClient = canvas.designSpace.workspace.eventsServerClients.get(networkNode.id) - let networkDefinition = functionLibraryProtocolNode.getProtocolNode(networkNode.payload.parentNode, false, true, true, false, false, networkLightingPath) + for (let i = 0; i < node.bot.processes.length; i++) { + let process = node.bot.processes[i] + process.payload.uiObject.run(eventsServerClient) + } - let event = { - taskId: node.id, - taskName: node.name, - taskDefinition: JSON.stringify(taskDefinition), - networkDefinition: JSON.stringify(networkDefinition) + let taskLightingPath = '->Task->' + + 'Sensor Bot Instance->' + + 'Indicator Bot Instance->Time Frames Filter->' + + 'Trading Bot Instance->' + + 'Sensor Process Instance->Indicator Process Instance->Trading Process Instance->' + + 'Execution Started Event->' + + 'Key Reference->Exchange Account Key->' + + 'Task Manager->' + + 'Data Mine Tasks->Trading Mine Tasks->' + + 'Market Data Tasks->Market Trading Tasks->' + + 'Exchange Data Tasks->Exchange Trading Tasks->' + + 'Market->Exchange Markets->Crypto Exchange->' + + 'Market Base Asset->Market Quoted Asset->Asset->' + + 'Backtesting Session->Live Trading Session->Paper Trading Session->Forward Testing Session->' + + 'Process Definition->' + + 'Process Output->' + + 'Output Dataset Folder->Output Dataset Folder->Output Dataset Folder->Output Dataset Folder->Output Dataset Folder->' + + 'Output Dataset->Dataset Definition->Product Definition->' + + 'Process Dependencies->' + + 'Status Dependency->Status Report->Process Definition->' + + 'Data Mine Data Dependencies->Bot Data Dependencies->' + + 'Data Dependency Folder->Data Dependency Folder->Data Dependency Folder->Data Dependency Folder->Data Dependency Folder->' + + 'Data Dependency->Dataset Definition->Product Definition->' + + 'Record Definition->Record Property->Formula->' + + 'Data Building Procedure->' + + 'Procedure Initialization->Javascript Code->' + + 'Procedure Loop->Javascript Code->' + + 'Calculations Procedure->' + + 'Procedure Initialization->Javascript Code->' + + 'Procedure Loop->Javascript Code->' + + 'Status Report->' + + 'Execution Finished Event->' + + 'Execution Started Event->Execution Finished Event->Process Definition->' + + 'Sensor Bot->' + + 'Product Definition Folder->Product Definition Folder->Product Definition Folder->Product Definition Folder->Product Definition Folder->' + + 'Indicator Bot->' + + 'Trading Bot->' + + 'Data Mine->Trading Mine->' + + let taskDefinition = functionLibraryProtocolNode.getProtocolNode(node, false, true, true, false, false, taskLightingPath) + + let networkLightingPath = '->Network->Network Node->' + + 'Data Storage->Data Mines Data->Exchange Data Products->' + + 'Market Data Products->' + + 'Data Mine Products->Bot Products->' + + 'Data Product Folder->Data Product Folder->Data Product Folder->Data Product Folder->Data Product Folder->' + + 'Data Product->Product Definition->' + + 'Data Mining->Testing Environment->Production Environment->' + + 'Exchange Data Tasks->Exchange Trading Tasks->Crypto Exchange->' + + 'Market Data Tasks->Market Trading Tasks->Market->' + + 'Data Mine Tasks->Trading Mine Tasks->' + + 'Task Manager->Task->' + + 'Indicator Bot Instance->Sensor Bot Instance->Trading Bot Instance->' + + 'Indicator Process Instance->Sensor Process Instance->Trading Process Instance->' + + 'Paper Trading Session->Forward Testing Session->Backtesting Session->Live Trading Session->' + + 'Market->' + + 'Process Definition->' + + let networkDefinition = functionLibraryProtocolNode.getProtocolNode(networkNode.payload.parentNode, false, true, true, false, false, networkLightingPath) + + let event = { + appSchema: JSON.stringify(APP_SCHEMA_ARRAY), + taskId: node.id, + taskName: node.name, + taskDefinition: JSON.stringify(taskDefinition), + networkDefinition: JSON.stringify(networkDefinition) + } + + if (isDebugging === true) { + callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE) + eventsServerClient.raiseEvent('Task Server', 'Debug Task Started', event) + return + } + + node.payload.uiObject.run(eventsServerClient, callBackFunction) + eventsServerClient.raiseEvent('Task Manager', 'Run Task', event) } - if (isDebugging === true) { - callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE) - eventsServerClient.raiseEvent('Task Server', 'Debug Task Started', event) - return + function stopTask(node, functionLibraryProtocolNode, callBackFunction) { + let networkNode = validations(node) + if (networkNode === undefined) { + /* This means that the validations failed. */ + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } + let eventsServerClient = canvas.designSpace.workspace.eventsServerClients.get(networkNode.id) + + let event = { + taskId: node.id, + taskName: node.name + } + + node.payload.uiObject.stop(callBackFunction) + eventsServerClient.raiseEvent('Task Manager', 'Stop Task', event) + + if (node.bot === undefined) { return } + if (node.bot.processes.length === 0) { return } + + for (let i = 0; i < node.bot.processes.length; i++) { + let process = node.bot.processes[i] + process.payload.uiObject.stop() + } } - node.payload.uiObject.run(eventsServerClient, callBackFunction) - eventsServerClient.raiseEvent('Task Manager', 'Run Task', event) - } + function validations(node) { + if (node.bot === undefined) { + node.payload.uiObject.setErrorMessage('Task needs to have a Bot Instance.') + return + } + if (node.bot.processes.length === 0) { + node.payload.uiObject.setErrorMessage('Task Bot Instance needs to have al least once Process Instance.') + return + } - function stopTask (node, functionLibraryProtocolNode, callBackFunction) { - if (validations(node) !== true) { - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - return + if (node.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Task needs to be inside a Task Manager.') + return + } + + let taskManager = node.payload.parentNode + + if (taskManager.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Task needs to be inside Mine Tasks.') + return + } + + if (taskManager.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Task needs to be inside Market Tasks.') + return + } + + if (taskManager.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Task needs to be inside Exchange Tasks.') + return + } + + if (taskManager.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Task needs to be inside a Data Mining, Testing or Production Environment.') + return + } + + if (taskManager.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Task needs to be inside a Network Node.') + return + } + + let networkNode = taskManager.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode + if (loadPropertyFromNodeConfig(networkNode.payload, 'host') === undefined) { + node.payload.uiObject.setErrorMessage('Network Node needs to have a valid Host property at its config.') + return + } + + if (loadPropertyFromNodeConfig(networkNode.payload, 'webPort') === undefined) { + node.payload.uiObject.setErrorMessage('Network Node needs to have a valid webPort property at its config.') + return + } + + if (loadPropertyFromNodeConfig(networkNode.payload, 'webSocketsPort') === undefined) { + node.payload.uiObject.setErrorMessage('Network Node needs to have a valid webSocketsPort property at its config.') + return + } + + return networkNode } - let networkNode = node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode - let eventsServerClient = canvas.designSpace.workspace.eventsServerClients.get(networkNode.id) + function runAllTasks(taskManager, functionLibraryProtocolNode) { + for (let i = 0; i < taskManager.tasks.length; i++) { + let node = taskManager.tasks[i] + let menu = node.payload.uiObject.menu - let event = { - taskId: node.id, - taskName: node.name + menu.internalClick('Run Task') + } } - node.payload.uiObject.stop(callBackFunction) - eventsServerClient.raiseEvent('Task Manager', 'Stop Task', event) + function stopAllTasks(taskManager, functionLibraryProtocolNode) { + for (let i = 0; i < taskManager.tasks.length; i++) { + let node = taskManager.tasks[i] + let menu = node.payload.uiObject.menu - if (node.bot === undefined) { return } - if (node.bot.processes.length === 0) { return } - - for (let i = 0; i < node.bot.processes.length; i++) { - let process = node.bot.processes[i] - process.payload.uiObject.stop() - } - } - - function validations (node) { - if (node.bot === undefined) { - node.payload.uiObject.setErrorMessage('Task needs to have a Bot Instance.') - return - } - if (node.bot.processes.length === 0) { - node.payload.uiObject.setErrorMessage('Task Bot Instance needs to have al least once Process Instance.') - return + menu.internalClick('Stop Task') + } } - if (node.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Task needs to be inside a Task Manager.') - return + function runAllTaskManagers(parent, functionLibraryProtocolNode) { + for (let i = 0; i < parent.taskManagers.length; i++) { + let node = parent.taskManagers[i] + let menu = node.payload.uiObject.menu + + menu.internalClick('Run All Tasks') + menu.internalClick('Run All Tasks') + } } - if (node.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Task needs to be inside Exchange Tasks.') - return + function stopAllTaskManagers(parent, functionLibraryProtocolNode) { + for (let i = 0; i < parent.taskManagers.length; i++) { + let node = parent.taskManagers[i] + let menu = node.payload.uiObject.menu + + menu.internalClick('Stop All Tasks') + menu.internalClick('Stop All Tasks') + } } - if (node.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Task needs to be inside a Testing or Production Environment or a Data Mining node.') - return + function runAllExchangeDataTasks(parent, functionLibraryProtocolNode) { + for (let i = 0; i < parent.exchangeDataTasks.length; i++) { + let node = parent.exchangeDataTasks[i] + let menu = node.payload.uiObject.menu + + menu.internalClick('Run All Market Data Tasks') + menu.internalClick('Run All Market Data Tasks') + } } - if (node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Task needs to be inside a Network Node.') - return + function stopAllExchangeDataTasks(parent, functionLibraryProtocolNode) { + for (let i = 0; i < parent.exchangeDataTasks.length; i++) { + let node = parent.exchangeDataTasks[i] + let menu = node.payload.uiObject.menu + + menu.internalClick('Stop All Market Data Tasks') + menu.internalClick('Stop All Market Data Tasks') + } } - if (node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Task needs to be inside a Network.') - return + function runAllExchangeTradingTasks(parent, functionLibraryProtocolNode) { + for (let i = 0; i < parent.exchangeTradingTasks.length; i++) { + let node = parent.exchangeTradingTasks[i] + let menu = node.payload.uiObject.menu + + menu.internalClick('Run All Market Trading Tasks') + menu.internalClick('Run All Market Trading Tasks') + } } - let networkNode = node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode - if (loadPropertyFromNodeConfig(networkNode.payload, 'host') === undefined) { - node.payload.uiObject.setErrorMessage('Network Node needs to have a valid Host property at its config.') - return + function stopAllExchangeTradingTasks(parent, functionLibraryProtocolNode) { + for (let i = 0; i < parent.exchangeTradingTasks.length; i++) { + let node = parent.exchangeTradingTasks[i] + let menu = node.payload.uiObject.menu + + menu.internalClick('Stop All Market Trading Tasks') + menu.internalClick('Stop All Market Trading Tasks') + } } - if (loadPropertyFromNodeConfig(networkNode.payload, 'webPort') === undefined) { - node.payload.uiObject.setErrorMessage('Network Node needs to have a valid webPort property at its config.') - return + function runAllMarketDataTasks(parent, functionLibraryProtocolNode) { + for (let i = 0; i < parent.marketDataTasks.length; i++) { + let node = parent.marketDataTasks[i] + let menu = node.payload.uiObject.menu + + menu.internalClick('Run All Data Mine Tasks') + menu.internalClick('Run All Data Mine Tasks') + } } - if (loadPropertyFromNodeConfig(networkNode.payload, 'webSocketsPort') === undefined) { - node.payload.uiObject.setErrorMessage('Network Node needs to have a valid webSocketsPort property at its config.') - return + function stopAllMarketDataTasks(parent, functionLibraryProtocolNode) { + for (let i = 0; i < parent.marketDataTasks.length; i++) { + let node = parent.marketDataTasks[i] + let menu = node.payload.uiObject.menu + + menu.internalClick('Stop All Data Mine Tasks') + menu.internalClick('Stop All Data Mine Tasks') + } } - return true - } + function runAllMarketTradingTasks(parent, functionLibraryProtocolNode) { + for (let i = 0; i < parent.marketTradingTasks.length; i++) { + let node = parent.marketTradingTasks[i] + let menu = node.payload.uiObject.menu - function runAllTasks (taskManager, functionLibraryProtocolNode) { - for (let i = 0; i < taskManager.tasks.length; i++) { - let node = taskManager.tasks[i] - let menu = node.payload.uiObject.menu - - menu.internalClick('Run Task') + menu.internalClick('Run All Trading Mine Tasks') + menu.internalClick('Run All Trading Mine Tasks') + } } - } - function stopAllTasks (taskManager, functionLibraryProtocolNode) { - for (let i = 0; i < taskManager.tasks.length; i++) { - let node = taskManager.tasks[i] - let menu = node.payload.uiObject.menu + function stopAllMarketTradingTasks(parent, functionLibraryProtocolNode) { + for (let i = 0; i < parent.marketTradingTasks.length; i++) { + let node = parent.marketTradingTasks[i] + let menu = node.payload.uiObject.menu - menu.internalClick('Stop Task') + menu.internalClick('Stop All Trading Mine Tasks') + menu.internalClick('Stop All Trading Mine Tasks') + } } - } - function runAllTaskManagers (parent, functionLibraryProtocolNode) { - for (let i = 0; i < parent.taskManagers.length; i++) { - let node = parent.taskManagers[i] - let menu = node.payload.uiObject.menu + function runAllDataMineTasks(parent, functionLibraryProtocolNode) { + for (let i = 0; i < parent.dataMineTasks.length; i++) { + let node = parent.dataMineTasks[i] + let menu = node.payload.uiObject.menu - menu.internalClick('Run All Tasks') - menu.internalClick('Run All Tasks') + menu.internalClick('Run All Task Managers') + menu.internalClick('Run All Task Managers') + } } - } - function stopAllTaskManagers (parent, functionLibraryProtocolNode) { - for (let i = 0; i < parent.taskManagers.length; i++) { - let node = parent.taskManagers[i] - let menu = node.payload.uiObject.menu + function stopAllDataMineTasks(parent, functionLibraryProtocolNode) { + for (let i = 0; i < parent.dataMineTasks.length; i++) { + let node = parent.dataMineTasks[i] + let menu = node.payload.uiObject.menu - menu.internalClick('Stop All Tasks') - menu.internalClick('Stop All Tasks') + menu.internalClick('Stop All Task Managers') + menu.internalClick('Stop All Task Managers') + } } - } - function runAllExchangeTasks (parent, functionLibraryProtocolNode) { - for (let i = 0; i < parent.exchangeTasks.length; i++) { - let node = parent.exchangeTasks[i] - let menu = node.payload.uiObject.menu - menu.internalClick('Run All Task Managers') - menu.internalClick('Run All Task Managers') + function runAllTradingMineTasks(parent, functionLibraryProtocolNode) { + for (let i = 0; i < parent.tradingMineTasks.length; i++) { + let node = parent.tradingMineTasks[i] + let menu = node.payload.uiObject.menu + + menu.internalClick('Run All Task Managers') + menu.internalClick('Run All Task Managers') + } } - } - function stopAllExchangeTasks (parent, functionLibraryProtocolNode) { - for (let i = 0; i < parent.exchangeTasks.length; i++) { - let node = parent.exchangeTasks[i] - let menu = node.payload.uiObject.menu + function stopAllTradingMineTasks(parent, functionLibraryProtocolNode) { + for (let i = 0; i < parent.tradingMineTasks.length; i++) { + let node = parent.tradingMineTasks[i] + let menu = node.payload.uiObject.menu - menu.internalClick('Stop All Task Managers') - menu.internalClick('Stop All Task Managers') + menu.internalClick('Stop All Task Managers') + menu.internalClick('Stop All Task Managers') + } + } + + function addMissingExchangeDataTasks(node, rootNodes, functionLibraryUiObjectsFromNodes) { + addMissingExchangeTasks(node, rootNodes, 'Exchange Data Tasks', functionLibraryUiObjectsFromNodes) + } + + function addMissingExchangeTradingTasks(node, rootNodes, functionLibraryUiObjectsFromNodes) { + addMissingExchangeTasks(node, rootNodes, 'Exchange Trading Tasks', functionLibraryUiObjectsFromNodes) + } + + function addMissingExchangeTasks(node, rootNodes, newNodeType, functionLibraryUiObjectsFromNodes) { + for (let i = 0; i < rootNodes.length; i++) { + let rootNode = rootNodes[i] + if (rootNode.type === 'Crypto Ecosystem') { + let cryptoEcosystem = rootNode + for (let j = 0; j < cryptoEcosystem.cryptoExchanges.length; j++) { + let cryptoExchanges = cryptoEcosystem.cryptoExchanges[j] + for (let k = 0; k < cryptoExchanges.exchanges.length; k++) { + let cryptoExchange = cryptoExchanges.exchanges[k] + if (isMissingChildren(node, cryptoExchange, true) === true) { + let exchangeTasks = functionLibraryUiObjectsFromNodes.addUIObject(node, newNodeType) + exchangeTasks.payload.referenceParent = cryptoExchange + } + } + } + } + } + } + + function addMissingMarketDataTasks(node, rootNodes, functionLibraryUiObjectsFromNodes) { + addMissingMarketTasks(node, rootNodes, 'Market Data Tasks', functionLibraryUiObjectsFromNodes) + } + + function addMissingMarketTradingTasks(node, rootNodes, functionLibraryUiObjectsFromNodes) { + addMissingMarketTasks(node, rootNodes, 'Market Trading Tasks', functionLibraryUiObjectsFromNodes) + } + + function addMissingMarketTasks(node, rootNodes, newNodeType, functionLibraryUiObjectsFromNodes) { + if (node.payload === undefined) { return } + if (node.payload.referenceParent === undefined) { return } + if (node.payload.referenceParent.exchangeMarkets === undefined) { return } + + let markets = node.payload.referenceParent.exchangeMarkets.markets + + for (let i = 0; i < markets.length; i++) { + let market = markets[i] + + if (isMissingChildren(node, market, true) === true) { + let marketDataTasks = functionLibraryUiObjectsFromNodes.addUIObject(node, newNodeType) + marketDataTasks.payload.referenceParent = market + } + } + } + + function addMissingDataMineTasks(node, rootNodes, functionLibraryUiObjectsFromNodes) { + addMissingMineTasks(node, rootNodes, 'Data Mine', 'Data Mine Tasks', functionLibraryUiObjectsFromNodes) + } + + function addMissingTradingMineTasks(node, rootNodes, functionLibraryUiObjectsFromNodes) { + addMissingMineTasks(node, rootNodes, 'Trading Mine', 'Trading Mine Tasks', functionLibraryUiObjectsFromNodes) + } + + function addMissingMineTasks(node, rootNodes, rootNodeType, newNodeType, functionLibraryUiObjectsFromNodes) { + for (let i = 0; i < rootNodes.length; i++) { + let rootNode = rootNodes[i] + if (rootNode.type === rootNodeType) { + let dataMine = rootNode + + if (isMissingChildren(node, dataMine, true) === true) { + let dataMineTasks = functionLibraryUiObjectsFromNodes.addUIObject(node, newNodeType) + dataMineTasks.payload.referenceParent = dataMine + } + } + } + } + + function addAllTasks(node, rootNodes, functionLibraryUiObjectsFromNodes) { + if (node.payload === undefined) { return } + if (node.payload.referenceParent === undefined) { return } + + let taskManager = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Task Manager') + taskManager.name = node.payload.referenceParent.name + taskManager.payload.floatingObject.collapseToggle() + + switch (node.type) { + case 'Data Mine Tasks': { + addDataTasks() + break + } + case 'Trading Mine Tasks': { + addTradingTasks() + break + } + } + + function addDataTasks() { + addTaskForTradinSystem() + } + + function addTradingTasks() { + for (let i = 0; i < rootNodes.length; i++) { + let rootNode = rootNodes[i] + if (rootNode.type === 'Trading System') { + addTaskForTradinSystem(rootNode) + } + } + } + + function addTaskForTradinSystem(tradingSystem) { + let mine = node.payload.referenceParent + + addTasksForBotArray(mine.sensorBots) + addTasksForBotArray(mine.indicatorBots) + addTasksForBotArray(mine.tradingBots) + + function addTasksForBotArray(botsArray) { + if (botsArray === undefined) { return } + + for (let i = 0; i < botsArray.length; i++) { + let bot = botsArray[i] + + let task = functionLibraryUiObjectsFromNodes.addUIObject(taskManager, 'Task') + + if (tradingSystem !== undefined) { + task.name = tradingSystem.name + } else { + task.name = bot.name + } + + let botInstance + switch (bot.type) { + case 'Sensor Bot': { + botInstance = functionLibraryUiObjectsFromNodes.addUIObject(task, 'Sensor Bot Instance') + botInstance.name = bot.name + break + } + case 'Indicator Bot': { + botInstance = functionLibraryUiObjectsFromNodes.addUIObject(task, 'Indicator Bot Instance') + botInstance.name = bot.name + break + } + case 'Trading Bot': { + botInstance = functionLibraryUiObjectsFromNodes.addUIObject(task, 'Trading Bot Instance') + botInstance.name = bot.name + break + } + } + + for (let j = 0; j < bot.processes.length; j++) { + let process = bot.processes[j] + let processInstance + switch (bot.type) { + case 'Sensor Bot': { + processInstance = functionLibraryUiObjectsFromNodes.addUIObject(botInstance, 'Sensor Process Instance') + processInstance.payload.referenceParent = process + break + } + case 'Indicator Bot': { + processInstance = functionLibraryUiObjectsFromNodes.addUIObject(botInstance, 'Indicator Process Instance') + processInstance.payload.referenceParent = process + break + } + case 'Trading Bot': { + processInstance = functionLibraryUiObjectsFromNodes.addUIObject(botInstance, 'Trading Process Instance') + processInstance.payload.referenceParent = process + + if (node.payload.parentNode === undefined) { return } + if (node.payload.parentNode.payload === undefined) { return } + if (node.payload.parentNode.payload.parentNode === undefined) { return } + if (node.payload.parentNode.payload.parentNode.payload === undefined) { return } + if (node.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { return } + + let environment = node.payload.parentNode.payload.parentNode.payload.parentNode + let session + + switch (environment.type) { + case 'Testing Environment': { + addSession('Backtesting Session') + break + } + case 'Production Environment': { + addSession('Live Trading Session') + break + } + } + break + + function addSession(sessionType) { + session = functionLibraryUiObjectsFromNodes.addUIObject(processInstance, sessionType) + session.name = task.name + let config = JSON.parse(session.config) + config.folderName = session.name.split(" ").join("-") + session.config = JSON.stringify(config) + + for (let m = 0; m < rootNodes.length; m++) { + let rootNode = rootNodes[m] + if (rootNode.type === 'Trading Engine' && rootNode.isIncluded === true) { + let tradingEngine = rootNode + session.tradingEngineReference.payload.referenceParent = tradingEngine + session.tradingSystemReference.payload.referenceParent = tradingSystem + } + } + } + } + } + } + } + } + } } - } } diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/TutorialFunctions.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/TutorialFunctions.js new file mode 100644 index 000000000..f89c89f07 --- /dev/null +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/TutorialFunctions.js @@ -0,0 +1,5 @@ +function newTutorialFunctions() { + thisObject = { + } + return thisObject +} diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/UiObjectsFromNodes.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/UiObjectsFromNodes.js index b29c96755..8a5e00c4d 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/UiObjectsFromNodes.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/UiObjectsFromNodes.js @@ -1,569 +1,655 @@ -function newUiObjectsFromNodes () { - thisObject = { - runTasks: runTasks, - runSessions: runSessions, - recreateWorkspace: recreateWorkspace, - tryToConnectChildrenWithReferenceParents: tryToConnectChildrenWithReferenceParents, - createUiObjectFromNode: createUiObjectFromNode, - addUIObject: addUIObject, - addMissingChildren: addMissingChildren - } +function newUiObjectsFromNodes() { + thisObject = { + syncronizeTasksFoundAtWorkspaceWithBackEnd: syncronizeTasksFoundAtWorkspaceWithBackEnd, + syncronizeSessionsFoundAtWorkspaceWithBackEnd: syncronizeSessionsFoundAtWorkspaceWithBackEnd, + playTutorials: playTutorials, + recreateWorkspace: recreateWorkspace, + getNodeById: getNodeById, + tryToConnectChildrenWithReferenceParents: tryToConnectChildrenWithReferenceParents, + createUiObjectFromNode: createUiObjectFromNode, + addUIObject: addUIObject, + addMissingChildren: addMissingChildren + } - let mapOfReferenceChildren = new Map() - let mapOfNodes - let tasksToRun - let sessionsToRun + let mapOfReferenceChildren = new Map() + let mapOfNodes + let tasksFoundAtWorkspace + let sessionsFoundAtWorkspace + let tutorialsToPlay - return thisObject + return thisObject - function recreateWorkspace (node, callBackFunction) { - mapOfNodes = new Map() - tasksToRun = [] - sessionsToRun = [] + function getNodeById(nodeId) { + return mapOfNodes.get(nodeId) + } - addIncludedNodes() + function recreateWorkspace(node, callBackFunction) { + mapOfNodes = new Map() + tasksFoundAtWorkspace = [] + sessionsFoundAtWorkspace = [] + tutorialsToPlay = [] - function addIncludedNodes () { - let blobService = newFileStorage() + removeNullRootNodes() - // if (node.code === undefined) { - node.code = '{ \n"includeDataMines": ["Masters", "Sparta", "TradingEngines"],\n"includeTradingSystems": ["Sparta-WHB-BTC-USDT", "Example-ETH-USDT", "Sparta-BRR-BTC-USDT"],\n"includeSuperScripts": ["Masters"]\n }' - // } - - let code = JSON.parse(node.code) - let includeDataMines = code.includeDataMines - let includeTradingSystems = code.includeTradingSystems - let includeSuperScripts = code.includeSuperScripts - - let totalIncluded = 0 - - for (let i = 0; i < includeDataMines.length; i++) { - let name = includeDataMines[i] - blobService.getFileFromHost('DataMines' + '/' + name, onFileReceived, true) - function onFileReceived (err, text, response) { - if (err && err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { - console.log('Cannot load included Data Mine ' + name + '. The workspace can not be loaded.') - return - } - let receivedNode = JSON.parse(text) - for (let i = 0; i < node.rootNodes.length; i++) { - let rootNode = node.rootNodes[i] - if (rootNode.type === 'Data Mine') { - if (rootNode.code !== undefined) { - let code = JSON.parse(rootNode.code) - if (code.name === name) { - rootNodes.splice(i, 1) + function removeNullRootNodes() { + for (let i = 0; i < node.rootNodes.length; i++) { + let rootNode = node.rootNodes[i] + if (rootNode === null) { + node.rootNodes.splice(i, 1) + removeNullRootNodes() + return } - } } - } - receivedNode.isIncluded = true - node.rootNodes.push(receivedNode) - totalIncluded++ - if (totalIncluded === includeDataMines.length + includeTradingSystems.length + includeSuperScripts.length) { - addUserDefinedNodes() - } } - } - for (let i = 0; i < includeTradingSystems.length; i++) { - let name = includeTradingSystems[i] - blobService.getFileFromHost('TradingSystems' + '/' + name, onFileReceived, true) - function onFileReceived (err, text, response) { - if (err && err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { - console.log('Cannot load included Data Mine ' + name + '. The workspace can not be loaded.') - return - } - let receivedNode = JSON.parse(text) - for (let i = 0; i < node.rootNodes.length; i++) { - let rootNode = node.rootNodes[i] - if (rootNode.type === 'Trading System') { - if (rootNode.code !== undefined) { - let code = JSON.parse(rootNode.code) - if (code.name === name) { - rootNodes.splice(i, 1) - } - } - } - } - receivedNode.isIncluded = true - node.rootNodes.push(receivedNode) - totalIncluded++ - if (totalIncluded === includeDataMines.length + includeTradingSystems.length + includeSuperScripts.length) { - addUserDefinedNodes() - } - } - } + addIncludedNodes() - for (let i = 0; i < includeSuperScripts.length; i++) { - let name = includeSuperScripts[i] - blobService.getFileFromHost('SuperScripts' + '/' + name, onFileReceived, true) - function onFileReceived (err, text, response) { - if (err && err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { - console.log('Cannot load included Data Mine ' + name + '. The workspace can not be loaded.') - return - } - let receivedNode = JSON.parse(text) - for (let i = 0; i < node.rootNodes.length; i++) { - let rootNode = node.rootNodes[i] - if (rootNode.type === 'Super Scripts') { - if (rootNode.code !== undefined) { - let code = JSON.parse(rootNode.code) - if (code.name === name) { - rootNodes.splice(i, 1) - } - } - } - } - receivedNode.isIncluded = true - node.rootNodes.push(receivedNode) - totalIncluded++ - if (totalIncluded === includeDataMines.length + includeTradingSystems.length + includeSuperScripts.length) { - addUserDefinedNodes() - } - } - } - } + function addIncludedNodes(includedNames) { + let blobService = newFileStorage() + let totalIncluded = 0 + let totalRead = 0 - function addUserDefinedNodes () { - /* Create the workspace UI OBject and then continue with the root nodes. */ - createUiObject(false, 'Workspace', node.name, node, undefined, undefined, 'Workspace') - if (node.rootNodes !== undefined) { - for (let i = 0; i < node.rootNodes.length; i++) { - let rootNode = node.rootNodes[i] - createUiObjectFromNode(rootNode, undefined, undefined) - } - } - - tryToConnectChildrenWithReferenceParents() - - if (callBackFunction !== undefined) { - callBackFunction() // The recreation of the workspace is complete - } - } - } - - function runTasks () { - for (let i = 0; i < tasksToRun.length; i++) { - let node = tasksToRun[i] - node.payload.uiObject.menu.internalClick('Run Task') - } - tasksToRun = undefined - } - - function runSessions () { - for (let i = 0; i < sessionsToRun.length; i++) { - let node = sessionsToRun[i] - node.payload.uiObject.menu.internalClick('Run Session') - } - sessionsToRun = undefined - } - - function tryToConnectChildrenWithReferenceParents () { - /* We reconstruct here the reference relationships. */ - for (const [key, node] of mapOfNodes) { - if (node.payload === undefined) { continue } - if (node.payload.referenceParent !== undefined) { - if (node.payload.referenceParent.cleaned === true) { - node.payload.referenceParent = mapOfNodes.get(node.payload.referenceParent.id) - continue // We were referencing a deleted node, so we replace it potentially with a newly created one. - } else { - continue // In this case the reference is already good. - } - } - if (node.savedPayload !== undefined) { - if (node.savedPayload.referenceParent !== undefined) { // these are children recreated - node.payload.referenceParent = mapOfNodes.get(node.savedPayload.referenceParent.id) - } - } - } - } - - function createUiObjectFromNode (node, parentNode, chainParent, positionOffset) { - /* Get node definition */ - let nodeDefinition = APP_SCHEMA_MAP.get(node.type) - if (nodeDefinition !== undefined) { - /* Resolve Initial Values */ - if (nodeDefinition.initialValues !== undefined) { - if (nodeDefinition.initialValues.code !== undefined) { - if (node.code === undefined) { - node.code = nodeDefinition.initialValues.code - } - } - } - - /* For the cases where an node is not chained to its parent but to the one at the parent before it at its collection */ - if (nodeDefinition.chainedToSameType === true) { - if (parentNode !== undefined) { - let parentNodeDefinition = APP_SCHEMA_MAP.get(parentNode.type) - if (parentNodeDefinition !== undefined) { - if (parentNodeDefinition.properties !== undefined) { - for (let i = 0; i < parentNodeDefinition.properties.length; i++) { - let property = parentNodeDefinition.properties[i] - if (property.childType === node.type) { - if (property.type === 'array') { - if (parentNode[property.name] !== undefined) { - if (parentNode[property.name].length > 1) { - let nodeChildren = parentNode[property.name] - for (let j = 0; j < nodeChildren.length; j++) { - if (node.id === nodeChildren[j].id) { - if (j > 0) { - chainParent = nodeChildren[j - 1] - } - } - } - } + for (let i = 0; i < node.rootNodes.length; i++) { + let rootNode = node.rootNodes[i] + if (rootNode.type === 'Includes') { + let includes = rootNode + if (includes.includedDataMines !== undefined) { + totalIncluded = totalIncluded + includes.includedDataMines.includedFiles.length + includeAllTheseFiles(includes.includedDataMines.includedFiles, 'Data-Mines') + } + if (includes.includedTradingMines !== undefined) { + totalIncluded = totalIncluded + includes.includedTradingMines.includedFiles.length + includeAllTheseFiles(includes.includedTradingMines.includedFiles, 'Trading-Mines') + } + if (includes.includedTradingSystems !== undefined) { + totalIncluded = totalIncluded + includes.includedTradingSystems.includedFiles.length + includeAllTheseFiles(includes.includedTradingSystems.includedFiles, 'Trading-Systems') + } + if (includes.includedTradingEngines !== undefined) { + totalIncluded = totalIncluded + includes.includedTradingEngines.includedFiles.length + includeAllTheseFiles(includes.includedTradingEngines.includedFiles, 'Trading-Engines') + } + if (includes.includedSuperScripts !== undefined) { + totalIncluded = totalIncluded + includes.includedSuperScripts.includedFiles.length + includeAllTheseFiles(includes.includedSuperScripts.includedFiles, 'Super-Scripts') + } + if (includes.includedTutorials !== undefined) { + totalIncluded = totalIncluded + includes.includedTutorials.includedFiles.length + includeAllTheseFiles(includes.includedTutorials.includedFiles, 'Tutorials') } - } } - } } - } - } - } - /* Create Self */ - createUiObject(false, node.type, node.name, node, parentNode, chainParent, node.type, positionOffset) - /* Create Children */ - if (nodeDefinition.properties !== undefined) { - let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. - for (let i = 0; i < nodeDefinition.properties.length; i++) { - let property = nodeDefinition.properties[i] - if (node[property.name] !== undefined) { - switch (property.type) { - case 'node': { - if (property.name !== previousPropertyName) { - createUiObjectFromNode(node[property.name], node, node, positionOffset) - previousPropertyName = property.name + /* + If there is no Includes node at the workspace, we load it anyways here. + */ + if (totalIncluded === 0) { + addUserDefinedNodes() + } + + function includeAllTheseFiles(includedFiles, includedType) { + for (let i = 0; i < includedFiles.length; i++) { + let includedFile = includedFiles[i] + let name = includedFile.name + blobService.getFileFromHost(includedType + '/' + name + '.json', onFileReceived, true) + + function onFileReceived(err, text, response) { + + if (err && err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + console.log('[WARN] Cannot load included ' + includedType + ' ' + name + '. The workspace will be loaded with this included file missing.') + } else { + let receivedNode = JSON.parse(text) + /* + If the workspace already contains a root node with the id of the head of the hirierchy + we are loading, we remove it because the included file has precedende. + */ + for (let i = 0; i < node.rootNodes.length; i++) { + let rootNode = node.rootNodes[i] + if (rootNode.id === receivedNode.id) { + node.rootNodes.splice(i, 1) + break + } + } + receivedNode.isIncluded = true + + if (includedFile.includedFilePosition !== undefined) { + let positionOffset = { + x: includedFile.includedFilePosition.savedPayload.position.x - receivedNode.savedPayload.position.x, + y: includedFile.includedFilePosition.savedPayload.position.y - receivedNode.savedPayload.position.y + } + receivedNode.positionOffset = positionOffset + } + + node.rootNodes.unshift(receivedNode) + } + + totalRead++ + if (totalIncluded === totalRead) { + addUserDefinedNodes() + } + } } - } - break - case 'array': { - let nodePropertyArray = node[property.name] - for (let m = 0; m < nodePropertyArray.length; m++) { - let arrayItem = nodePropertyArray[m] - createUiObjectFromNode(arrayItem, node, node, positionOffset) + } + } + + function addUserDefinedNodes() { + /* Create the workspace UI OBject and then continue with the root nodes. */ + createUiObject(false, 'Workspace', node.name, node, undefined, undefined, 'Workspace') + if (node.rootNodes !== undefined) { + for (let i = 0; i < node.rootNodes.length; i++) { + let rootNode = node.rootNodes[i] + createUiObjectFromNode(rootNode, undefined, undefined) } - } - break } - } else { - if (property.type === 'array') { - node[property.name] = [] + + tryToConnectChildrenWithReferenceParents() + + if (callBackFunction !== undefined) { + callBackFunction() // The recreation of the workspace is complete } - } } - } - } - } - - function addUIObject (parentNode, type) { - let object = { - name: 'New ' + type, - type: type } - let parentNodeDefinition = APP_SCHEMA_MAP.get(parentNode.type) - if (parentNodeDefinition === undefined) { - console.log('Cannot addUIOBject from parent of ' + type + ' because that type it is not defined at the APP_SCHEMA.') - } - /* Resolve Initial Values */ - let nodeDefinition = APP_SCHEMA_MAP.get(object.type) - - if (nodeDefinition === undefined) { - console.log('Cannot addUIOBject of ' + type + ' because that type it is not defined at the APP_SCHEMA.') + function syncronizeTasksFoundAtWorkspaceWithBackEnd(functionLibraryTaskFunctions) { + for (let i = 0; i < tasksFoundAtWorkspace.length; i++) { + let node = tasksFoundAtWorkspace[i] + functionLibraryTaskFunctions.syncronizeTaskWithBackEnd(node) + } + tasksFoundAtWorkspace = undefined } - if (nodeDefinition.initialValues !== undefined) { - if (nodeDefinition.initialValues.code !== undefined) { - object.code = nodeDefinition.initialValues.code - } + function syncronizeSessionsFoundAtWorkspaceWithBackEnd(functionLibrarySessionFunctions) { + for (let i = 0; i < sessionsFoundAtWorkspace.length; i++) { + let node = sessionsFoundAtWorkspace[i] + functionLibrarySessionFunctions.syncronizeSessionWithBackEnd(node) + } + sessionsFoundAtWorkspace = undefined } - if (nodeDefinition.isHierarchyHead === true) { - parentNode.rootNodes.push(object) - createUiObject(true, object.type, object.name, object, parentNode, undefined) - return object + function playTutorials() { + for (let i = 0; i < tutorialsToPlay.length; i++) { + let node = tutorialsToPlay[i] + node.payload.uiObject.menu.internalClick('Play Tutorial') + } + tutorialsToPlay = undefined } - /* For the cases where an node is not chained to its parent but to the one at the parent before it at its collection */ - let chainParent = parentNode - if (nodeDefinition.chainedToSameType === true) { - if (parentNodeDefinition.properties !== undefined) { - for (let i = 0; i < parentNodeDefinition.properties.length; i++) { - let property = parentNodeDefinition.properties[i] - if (property.childType === type) { - if (property.type === 'array') { - if (parentNode[property.name] !== undefined) { - if (parentNode[property.name].length > 0) { - let nodeChildren = parentNode[property.name] - chainParent = nodeChildren[nodeChildren.length - 1] - } - } + function tryToConnectChildrenWithReferenceParents() { + /* We reconstruct here the reference relationships. */ + for (const [key, node] of mapOfNodes) { + if (node.id === "54854f90-d121-4365-8f40-9a26e7af1097") { + console.log('ACA') } - } - } - } - } - - /* Create Empty Arrays for properties of type Array */ - if (nodeDefinition.properties !== undefined) { - for (let i = 0; i < nodeDefinition.properties.length; i++) { - let property = nodeDefinition.properties[i] - if (property.type === 'array') { - object[property.name] = [] - } - } - } - - if (nodeDefinition !== undefined) { - if (nodeDefinition.initialValues !== undefined) { - if (nodeDefinition.initialValues.code !== undefined) { - object.code = nodeDefinition.initialValues.code - } - } - } - - /* Connect to Parent */ - if (parentNodeDefinition.properties !== undefined) { - let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. - for (let i = 0; i < parentNodeDefinition.properties.length; i++) { - let property = parentNodeDefinition.properties[i] - if (property.childType === type) { - switch (property.type) { - case 'node': { - if (property.name !== previousPropertyName) { - parentNode[property.name] = object - previousPropertyName = property.name - } - } - break - case 'array': { - if (parentNode[property.name] === undefined) { - parentNode[property.name] = [] - } - if (property.maxItems !== undefined) { - if (parentNode[property.name].length < property.maxItems) { - parentNode[property.name].push(object) + if (node.payload === undefined) { continue } + if (node.payload.referenceParent !== undefined) { + if (node.payload.referenceParent.cleaned === true) { + node.payload.referenceParent = mapOfNodes.get(node.payload.referenceParent.id) + if (node.payload.referenceParent === undefined) { + //console.log('[WARN]' + node.type + ' ' + node.name + ' reference parent lost during re-binding phase.') + } + continue // We were referencing a deleted node, so we replace it potentially with a newly created one. } else { - return // Object can not be created. + continue // In this case the reference is already good. } - } else { - parentNode[property.name].push(object) - } } - break - } - } - } - } - - createUiObject(true, object.type, object.name, object, parentNode, chainParent) - - /* Auto Add more Children */ - if (nodeDefinition.properties !== undefined) { - let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. - for (let i = 0; i < nodeDefinition.properties.length; i++) { - let property = nodeDefinition.properties[i] - - switch (property.type) { - case 'node': { - if (property.name !== previousPropertyName) { - if (property.autoAdd === true) { - addUIObject(object, property.childType) - previousPropertyName = property.name - } + if (node.savedPayload !== undefined) { + if (node.savedPayload.referenceParent !== undefined) { // these are children recreated + node.payload.referenceParent = mapOfNodes.get(node.savedPayload.referenceParent.id) + if (node.payload.referenceParent === undefined) { + //console.log('[WARN]' + node.type + ' ' + node.name + ' reference parent lost during re-binding phase.') + } + } } - } - break - case 'array': { - if (property.autoAdd === true) { - if (object[property.name] === undefined) { - object[property.name] = [] - } - addUIObject(object, property.childType) + } + } + + function migrateCodeToConfig(node, nodeDefinition) { + /* Code needed to Migrante from Beta 5 to Beta a Workspace */ + if (nodeDefinition.editors !== undefined) { + if (nodeDefinition.editors.config === true) { + if (node.code !== undefined) { + node.config = node.code + node.code = undefined + } } - } - break } - } } - return object - } + function createUiObjectFromNode(node, parentNode, chainParent, positionOffset) { + /* Code needed to Migrante from Beta 5 to Beta 6 a Trading System + if (node.type === 'Take Profit') { + node.type = 'Managed Take Profit' + } + if (node.type === 'Stop') { + node.type = 'Managed Stop Loss' + } + */ - function addMissingChildren (node) { - let nodeDefinition = APP_SCHEMA_MAP.get(node.type) + /* + This function can be called with a positionOffset to change the node + saved position and all of its descendants positions as well with an + offset. It can also happen that the positionOffset is defined as a property + of the node, in which case it will produce exactly the same effect. + */ + if (node.positionOffset !== undefined) { + positionOffset = node.positionOffset + } - /* Connect to Parent */ - if (nodeDefinition.properties !== undefined) { - let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. - for (let i = 0; i < nodeDefinition.properties.length; i++) { - let property = nodeDefinition.properties[i] - if (property.type === 'node') { - if (property.name !== previousPropertyName) { - if (node[property.name] === undefined) { - addUIObject(node, property.childType) - previousPropertyName = property.name + + /* Get node definition */ + let nodeDefinition = getNodeDefinition(node) + if (nodeDefinition !== undefined) { + migrateCodeToConfig(node, nodeDefinition) + + /* Resolve Initial Values */ + if (nodeDefinition.initialValues !== undefined) { + if (nodeDefinition.initialValues.code !== undefined) { + if (node.code === undefined) { + node.code = nodeDefinition.initialValues.code + } + } + if (nodeDefinition.initialValues.config !== undefined) { + if (node.config === undefined) { + node.config = nodeDefinition.initialValues.config + } + } + } + + /* For the cases where an node is not chained to its parent but to the one at the parent before it at its collection */ + if (nodeDefinition.chainedToSameType === true) { + if (parentNode !== undefined) { + let parentNodeDefinition = getNodeDefinition(parentNode) + if (parentNodeDefinition !== undefined) { + if (parentNodeDefinition.properties !== undefined) { + for (let i = 0; i < parentNodeDefinition.properties.length; i++) { + let property = parentNodeDefinition.properties[i] + if (property.childType === node.type) { + if (property.type === 'array') { + if (parentNode[property.name] !== undefined) { + if (parentNode[property.name].length > 1) { + let nodeChildren = parentNode[property.name] + for (let j = 0; j < nodeChildren.length; j++) { + if (node.id === nodeChildren[j].id) { + if (j > 0) { + chainParent = nodeChildren[j - 1] + } + } + } + } + } + } + } + } + } + } + } + } + /* Create Self */ + createUiObject(false, node.type, node.name, node, parentNode, chainParent, node.type, positionOffset) + + /* Create Children */ + if (nodeDefinition.properties !== undefined) { + let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + if (node[property.name] !== undefined) { + switch (property.type) { + case 'node': { + if (property.name !== previousPropertyName) { + createUiObjectFromNode(node[property.name], node, node, positionOffset) + previousPropertyName = property.name + } + } + break + case 'array': { + let nodePropertyArray = node[property.name] + for (let m = 0; m < nodePropertyArray.length; m++) { + let arrayItem = nodePropertyArray[m] + createUiObjectFromNode(arrayItem, node, node, positionOffset) + } + } + break + } + } else { + if (property.type === 'array') { + node[property.name] = [] + } + } + } } - } } - } - } - } - - function createUiObject (userAddingNew, uiObjectType, name, node, parentNode, chainParent, title, positionOffset) { - let payload = {} - - /* Mechanism related to keeping references when cloning */ - if (node.id === undefined) { - node.id = newUniqueId() - } else { - let testNode = mapOfNodes.get(node.id) - if (testNode !== undefined && testNode.cleaned !== true) { - node.id = newUniqueId() - } } - /* Default Naming */ - if (name === '' || name === undefined) { name = 'My ' + uiObjectType } - - /* If we are creating this object as the result of restoring a backup, share or clone, we will bring some of the saved properties to the new running instance. */ - if (userAddingNew === false && uiObjectType !== 'Workspace') { - /* This following info can not be missing. */ - if (node.savedPayload === undefined) { - console.log('Node ' + node.type + ' without savedPayload.', node) - return - } - if (node.savedPayload.position === undefined) { - console.log('Node ' + node.type + ' without savedPayload.position.', node) - return - } - if (node.savedPayload.targetPosition === undefined) { - console.log('Node ' + node.type + ' without savedPayload.targetPosition.', node) - return - } - - /* If there is not a position offset, which happens when we are dropping a node into the designer, we create a cero vector then. */ - if (positionOffset === undefined) { - positionOffset = { - x: 0, - y: 0 + function addUIObject(parentNode, type) { + let object = { + name: 'New ' + type, + type: type } - } - /* Adding the offset to the saved positions. */ - node.savedPayload.targetPosition.x = node.savedPayload.targetPosition.x + positionOffset.x - node.savedPayload.targetPosition.y = node.savedPayload.targetPosition.y + positionOffset.y - node.savedPayload.position.x = node.savedPayload.position.x + positionOffset.x - node.savedPayload.position.y = node.savedPayload.position.y + positionOffset.y - - /* Transferring the saved payload properties into the running instance being created. */ - payload.targetPosition = { - x: node.savedPayload.targetPosition.x, - y: node.savedPayload.targetPosition.y - } - node.savedPayload.targetPosition = undefined - - /* Reference children connection to parents */ - if (node.savedPayload.referenceParent !== undefined) { - payload.referenceParent = mapOfNodes.get(node.savedPayload.referenceParent.id) - - if (payload.referenceParent !== undefined) { - mapOfReferenceChildren.set(node.id, node) + let parentNodeDefinition = getNodeDefinition(parentNode) + if (parentNodeDefinition === undefined) { + console.log('Cannot addUIOBject from parent of ' + type + ' because that type it is not defined at the APP_SCHEMA.') } - } + /* Resolve Initial Values */ + let nodeDefinition = getNodeDefinition(object) + + if (nodeDefinition === undefined) { + console.log('Cannot addUIOBject of ' + type + ' because that type it is not defined at the APP_SCHEMA.') + } + + if (nodeDefinition.initialValues !== undefined) { + if (nodeDefinition.initialValues.code !== undefined) { + object.code = nodeDefinition.initialValues.code + } + } + if (nodeDefinition.initialValues !== undefined) { + if (nodeDefinition.initialValues.config !== undefined) { + object.config = nodeDefinition.initialValues.config + } + } + + if (nodeDefinition.isHierarchyHead === true) { + parentNode.rootNodes.push(object) + createUiObject(true, object.type, object.name, object, parentNode, undefined) + return object + } + + /* For the cases where an node is not chained to its parent but to the one at the parent before it at its collection */ + let chainParent = parentNode + if (nodeDefinition.chainedToSameType === true) { + if (parentNodeDefinition.properties !== undefined) { + for (let i = 0; i < parentNodeDefinition.properties.length; i++) { + let property = parentNodeDefinition.properties[i] + if (property.childType === type) { + if (property.type === 'array') { + if (parentNode[property.name] !== undefined) { + if (parentNode[property.name].length > 0) { + let nodeChildren = parentNode[property.name] + chainParent = nodeChildren[nodeChildren.length - 1] + } + } + } + } + } + } + } + + /* Create Empty Arrays for properties of type Array */ + if (nodeDefinition.properties !== undefined) { + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + if (property.type === 'array') { + object[property.name] = [] + } + } + } + + if (nodeDefinition !== undefined) { + if (nodeDefinition.initialValues !== undefined) { + if (nodeDefinition.initialValues.code !== undefined) { + object.code = nodeDefinition.initialValues.code + } + if (nodeDefinition.initialValues.config !== undefined) { + object.config = nodeDefinition.initialValues.config + } + } + } + + /* Connect to Parent */ + if (parentNodeDefinition.properties !== undefined) { + let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. + for (let i = 0; i < parentNodeDefinition.properties.length; i++) { + let property = parentNodeDefinition.properties[i] + if (property.childType === type) { + switch (property.type) { + case 'node': { + if (property.name !== previousPropertyName) { + parentNode[property.name] = object + previousPropertyName = property.name + } + } + break + case 'array': { + if (parentNode[property.name] === undefined) { + parentNode[property.name] = [] + } + if (property.maxItems !== undefined) { + if (parentNode[property.name].length < property.maxItems) { + parentNode[property.name].push(object) + } else { + return // Object can not be created. + } + } else { + parentNode[property.name].push(object) + } + } + break + } + } + } + } + + createUiObject(true, object.type, object.name, object, parentNode, chainParent) + + /* Auto Add more Children */ + if (nodeDefinition.properties !== undefined) { + let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.type) { + case 'node': { + if (property.name !== previousPropertyName) { + if (property.autoAdd === true) { + addUIObject(object, property.childType) + previousPropertyName = property.name + } + } + } + break + case 'array': { + if (property.autoAdd === true) { + if (object[property.name] === undefined) { + object[property.name] = [] + } + addUIObject(object, property.childType) + } + } + break + } + } + } + + return object } - /* If we are adding a new object, then we set the initial values for position and targetPosition */ - if (userAddingNew === true || uiObjectType === 'Workspace') { - /* Workspace allways to the spawn position */ - if (uiObjectType === 'Workspace') { - payload.position = { - x: spawnPosition.x, - y: spawnPosition.y - } - } + function addMissingChildren(node) { + let nodeDefinition = getNodeDefinition(node) - /* Chain parent pointing to the position of the chain parent if defined. */ - if (chainParent === undefined) { - payload.targetPosition = { - x: spawnPosition.x, - y: spawnPosition.y + /* Connect to Parent */ + if (nodeDefinition.properties !== undefined) { + let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + if (property.type === 'node') { + if (property.name !== previousPropertyName) { + if (node[property.name] === undefined) { + addUIObject(node, property.childType) + previousPropertyName = property.name + } + } + } + } } - } else { - payload.targetPosition = { - x: chainParent.payload.position.x, - y: chainParent.payload.position.y - } - } } - /* Setting the title */ - if (title !== undefined) { - payload.subTitle = title - } else { - payload.subTitle = uiObjectType - } + function createUiObject(userAddingNew, uiObjectType, name, node, parentNode, chainParent, title, positionOffset) { + let payload = {} - payload.visible = true - payload.title = name - payload.node = node - payload.parentNode = parentNode - payload.chainParent = chainParent - payload.onMenuItemClick = canvas.designSpace.workspace.onMenuItemClick - - node.payload = payload - node.type = uiObjectType - - /* - Now we copy the possible frame saved to the payload where it can be used. A saved frame stores the position of a a chartingSpace object related to a node. - This will prevent that if those charting space objects never get activated, that the frame information is lost when the workspace is saved. - */ - if (node.savedPayload !== undefined) { - if (node.savedPayload.frame !== undefined) { - let frame = { - position: { - x: 0, - y: 0 - } + /* Mechanism related to keeping references when cloning */ + if (node.id === undefined) { + node.id = newUniqueId() + } else { + /* + We need to avoid nodes having the same id. If we add nodes to a workspace that already exist with the same Id, + the nodes being added will get a new id at this moment. + */ + let testNode = mapOfNodes.get(node.id) + if (testNode !== undefined && testNode.cleaned !== true) { + console.log(testNode.name + ' already have the id of the node ' + node.name + ' being added.') + node.id = newUniqueId() + } } - frame.position.x = node.savedPayload.frame.position.x - frame.position.y = node.savedPayload.frame.position.y - frame.width = node.savedPayload.frame.width - frame.height = node.savedPayload.frame.height - frame.radius = node.savedPayload.frame.radius - saveFrame(payload, frame) - } - } - /* Now we mount the floating object where the UIOBject will be laying on top of */ - canvas.floatingSpace.uiObjectConstructor.createUiObject(userAddingNew, payload) + /* Default Naming */ + if (name === '' || name === undefined) { name = 'My ' + uiObjectType } - mapOfNodes.set(node.id, node) + /* If we are creating this object as the result of restoring a backup, share or clone, we will bring some of the saved properties to the new running instance. */ + if (userAddingNew === false && uiObjectType !== 'Workspace') { + /* This following info can not be missing. */ + if (node.savedPayload === undefined) { + console.log('Node ' + node.type + ' without savedPayload.', node) + return + } + if (node.savedPayload.position === undefined) { + console.log('Node ' + node.type + ' without savedPayload.position.', node) + return + } + if (node.savedPayload.targetPosition === undefined) { + console.log('Node ' + node.type + ' without savedPayload.targetPosition.', node) + return + } - /* Check if there are tasks to run */ - if (userAddingNew === false && uiObjectType === 'Task' && node.savedPayload !== undefined) { - if (node.savedPayload.uiObject.isRunning === true) { - if (node.payload.parentNode !== undefined) { - if (tasksToRun !== undefined) { // it might be undefined when you are spawning a task that was running while backed up - tasksToRun.push(node) - } + /* If there is not a position offset, which happens when we are dropping a node into the designer, we create a cero vector then. */ + if (positionOffset === undefined) { + positionOffset = { + x: 0, + y: 0 + } + } + + /* Adding the offset to the saved positions. */ + node.savedPayload.targetPosition.x = node.savedPayload.targetPosition.x + positionOffset.x + node.savedPayload.targetPosition.y = node.savedPayload.targetPosition.y + positionOffset.y + node.savedPayload.position.x = node.savedPayload.position.x + positionOffset.x + node.savedPayload.position.y = node.savedPayload.position.y + positionOffset.y + + /* Transferring the saved payload properties into the running instance being created. */ + payload.targetPosition = { + x: node.savedPayload.targetPosition.x, + y: node.savedPayload.targetPosition.y + } + node.savedPayload.targetPosition = undefined + + /* Reference children connection to parents */ + if (node.savedPayload.referenceParent !== undefined) { + payload.referenceParent = mapOfNodes.get(node.savedPayload.referenceParent.id) + + if (payload.referenceParent !== undefined) { + mapOfReferenceChildren.set(node.id, node) + } + } + } + + /* If we are adding a new object, then we set the initial values for position and targetPosition */ + if (userAddingNew === true || uiObjectType === 'Workspace') { + /* Workspace allways to the spawn position */ + if (uiObjectType === 'Workspace') { + payload.position = { + x: spawnPosition.x, + y: spawnPosition.y + } + } + + /* Chain parent pointing to the position of the chain parent if defined. */ + if (chainParent === undefined) { + payload.targetPosition = { + x: spawnPosition.x, + y: spawnPosition.y + } + } else { + payload.targetPosition = { + x: chainParent.payload.position.x, + y: chainParent.payload.position.y + } + } + } + + /* Setting the title */ + if (title !== undefined) { + payload.subTitle = title + } else { + payload.subTitle = uiObjectType + } + + payload.visible = true + payload.title = name + payload.node = node + payload.parentNode = parentNode + payload.chainParent = chainParent + payload.onMenuItemClick = canvas.designSpace.workspace.onMenuItemClick + + node.payload = payload + node.type = uiObjectType + + /* + Now we copy the possible frame saved to the payload where it can be used. A saved frame stores the position of a a chartingSpace object related to a node. + This will prevent that if those charting space objects never get activated, that the frame information is lost when the workspace is saved. + */ + if (node.savedPayload !== undefined) { + if (node.savedPayload.frame !== undefined) { + let frame = { + position: { + x: 0, + y: 0 + } + } + frame.position.x = node.savedPayload.frame.position.x + frame.position.y = node.savedPayload.frame.position.y + frame.width = node.savedPayload.frame.width + frame.height = node.savedPayload.frame.height + frame.radius = node.savedPayload.frame.radius + saveFrame(payload, frame) + } + if (node.savedPayload.tutorial !== undefined) { + let tutorial = { + status: node.savedPayload.tutorial.status + } + saveTutorial(payload, tutorial) + } + } + + /* Now we mount the floating object where the UIOBject will be laying on top of */ + canvas.floatingSpace.uiObjectConstructor.createUiObject(userAddingNew, payload) + + /* This is the point where we build a map with all nodes present at the workspace */ + mapOfNodes.set(node.id, node) + + /* We will collect all tasks at the workspace in order to later syncronize them with the backend */ + if (userAddingNew === false && uiObjectType === 'Task' && node.savedPayload !== undefined) { + if (tasksFoundAtWorkspace !== undefined) { // it might be undefined when you are spawning a task that was backed up + tasksFoundAtWorkspace.push(node) + } } - } - } /* Check if there are sessions to run */ - if (userAddingNew === false && node.savedPayload !== undefined) { - if (uiObjectType === 'Live Trading Session' || uiObjectType === 'Fordward Testing Session' || uiObjectType === 'Backtesting Session' || uiObjectType === 'Paper Trading Session') { - if (node.savedPayload.uiObject.isRunning === true) { - if (node.payload.parentNode !== undefined) { - if (sessionsToRun !== undefined) { // it might be undefined when you are spawning a session that was running while backed up - sessionsToRun.push(node) + if (userAddingNew === false && node.savedPayload !== undefined) { + if (uiObjectType === 'Live Trading Session' || uiObjectType === 'Forward Testing Session' || uiObjectType === 'Backtesting Session' || uiObjectType === 'Paper Trading Session') { + if (sessionsFoundAtWorkspace !== undefined) { // it might be undefined when you are spawning a session that was running while backed up + sessionsFoundAtWorkspace.push(node) + } + } + } + + /* Check if there are tutorials to play */ + if (userAddingNew === false && node.savedPayload !== undefined) { + if (uiObjectType === 'Tutorial') { + if (node.savedPayload.uiObject.isPlaying === true) { + if (tutorialsToPlay !== undefined) { // it might be undefined when you are spawning a tutorial that was playing while backed up + tutorialsToPlay.push(node) + } + } } - } } - } } - } } diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/WebhookFunctions.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/WebhookFunctions.js index ca7e6b2f1..609a94c5a 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/WebhookFunctions.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/WebhookFunctions.js @@ -1,22 +1,22 @@ -function newWebhookFunctions () { - thisObject = { - sendTestMessage: sendTestMessage - } +function newWebhookFunctions() { + thisObject = { + sendTestMessage: sendTestMessage + } - return thisObject + return thisObject - function sendTestMessage (node, callBackFunction) { - let testMessage = loadPropertyFromNodeConfig(node.payload, 'testMessage') - let letURL = loadPropertyFromNodeConfig(node.payload, 'webhookURL') + function sendTestMessage(node, callBackFunction) { + let testMessage = loadPropertyFromNodeConfig(node.payload, 'testMessage') + let letURL = loadPropertyFromNodeConfig(node.payload, 'webhookURL') - callServer(testMessage, letURL, onResponse) + callServer(testMessage, letURL, onResponse) - function onResponse (err) { - if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { - callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE) - } else { - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - } + function onResponse(err) { + if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { + callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE) + } else { + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + } + } } - } } diff --git a/CanvasApp/DesignSpace/Workspace/Workspace.js b/CanvasApp/DesignSpace/Workspace/Workspace.js index 2680c323c..705a02555 100644 --- a/CanvasApp/DesignSpace/Workspace/Workspace.js +++ b/CanvasApp/DesignSpace/Workspace/Workspace.js @@ -1,610 +1,926 @@ -function newWorkspace () { - const MODULE_NAME = 'Workspace' - const ERROR_LOG = true - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME +function newWorkspace() { + const MODULE_NAME = 'Workspace' + const ERROR_LOG = true + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME - let thisObject = { - workspaceNode: undefined, - container: undefined, - enabled: false, - nodeChildren: undefined, - eventsServerClients: new Map(), - replaceWorkspaceByLoadingOne: replaceWorkspaceByLoadingOne, - save: saveWorkspace, - getHierarchyHeads: getHierarchyHeads, - getNodeThatIsOnFocus: getNodeThatIsOnFocus, - getNodeByShortcutKey: getNodeByShortcutKey, - stopAllRunningTasks: stopAllRunningTasks, - onMenuItemClick: onMenuItemClick, - physics: physics, - draw: draw, - spawn: spawn, - chainDetachNode: chainDetachNode, - chainAttachNode: chainAttachNode, - referenceDetachNode: referenceDetachNode, - referenceAttachNode: referenceAttachNode, - initialize: initialize, - finalize: finalize - } + let thisObject = { + workspaceNode: undefined, + container: undefined, + enabled: false, + nodeChildren: undefined, + eventsServerClients: new Map(), + replaceWorkspaceByLoadingOne: replaceWorkspaceByLoadingOne, + save: saveWorkspace, + getHierarchyHeads: getHierarchyHeads, + getHierarchyHeadsById: getHierarchyHeadsById, + getNodeThatIsOnFocus: getNodeThatIsOnFocus, + getNodeByShortcutKey: getNodeByShortcutKey, + getNodeById: getNodeById, + stopAllRunningTasks: stopAllRunningTasks, + onMenuItemClick: onMenuItemClick, + physics: physics, + draw: draw, + spawn: spawn, + chainDetachNode: chainDetachNode, + chainAttachNode: chainAttachNode, + referenceDetachNode: referenceDetachNode, + referenceAttachNode: referenceAttachNode, + initialize: initialize, + finalize: finalize + } - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) - thisObject.container.isClickeable = false - thisObject.container.isDraggeable = false - thisObject.container.isWheelable = false - thisObject.container.detectMouseOver = false - thisObject.container.frame.radius = 0 - thisObject.container.frame.position.x = 0 - thisObject.container.frame.position.y = 0 - thisObject.container.frame.width = 0 - thisObject.container.frame.height = 0 + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) + thisObject.container.isClickeable = false + thisObject.container.isDraggeable = false + thisObject.container.isWheelable = false + thisObject.container.detectMouseOver = false + thisObject.container.frame.radius = 0 + thisObject.container.frame.position.x = 0 + thisObject.container.frame.position.y = 0 + thisObject.container.frame.width = 0 + thisObject.container.frame.height = 0 - spawnPosition = { - x: canvas.floatingSpace.container.frame.width / 2, - y: canvas.floatingSpace.container.frame.height / 2 - } + spawnPosition = { + x: canvas.floatingSpace.container.frame.width / 2, + y: canvas.floatingSpace.container.frame.height / 2 + } - thisObject.workspaceNode = {} - thisObject.workspaceNode.rootNodes = [] + thisObject.workspaceNode = {} + thisObject.workspaceNode.rootNodes = [] - let functionLibraryReferenceAttachDetach = newReferenceAttachDetach() - let functionLibraryChainAttachDetach = newChainAttachDetach() - let functionLibraryNodeDeleter = newNodeDeleter() - let functionLibraryUiObjectsFromNodes = newUiObjectsFromNodes() - let functionLibraryProtocolNode = newProtocolNode() - let functionLibraryNodeCloning = newNodeCloning() - let functionLibraryTaskFunctions = newTaskFunctions() - let functionLibrarySessionFunctions = newSessionFunctions() - let functionLibraryShortcutKeys = newShortcutKeys() - let functionLibraryOnFocus = newOnFocus() - let functionLibrarySuperScripts = newSuperScriptsFunctions() - let functionLibraryCCXTFunctions = newCCXTFunctions() - let functionLibraryWebhookFunctions = newWebhookFunctions() - let functionLibraryDependenciesFilter = newDependenciesFilter() + let functionLibraryReferenceAttachDetach = newReferenceAttachDetach() + let functionLibraryChainAttachDetach = newChainAttachDetach() + let functionLibraryNodeDeleter = newNodeDeleter() + let functionLibraryUiObjectsFromNodes = newUiObjectsFromNodes() + let functionLibraryProtocolNode = newProtocolNode() + let functionLibraryNodeCloning = newNodeCloning() + let functionLibraryTaskFunctions = newTaskFunctions() + let functionLibrarySessionFunctions = newSessionFunctions() + let functionLibraryShortcutKeys = newShortcutKeys() + let functionLibraryOnFocus = newOnFocus() + let functionLibrarySuperScripts = newSuperScriptsFunctions() + let functionLibraryCryptoEcosystemFunctions = newCryptoEcosystemFunctions() + let functionLibraryWebhookFunctions = newWebhookFunctions() + let functionLibraryDependenciesFilter = newDependenciesFilter() + let functionLibraryNodePath = newNodePath() + let functionLibraryDataMineFunctions = newDataMineFunctions() + let functionLibraryDataStorageFunctions = newDataStorageFunctions() + let functionLibraryChartingSpaceFunctions = newChartingSpaceFunctions() + let functionLibraryTutorialFunctions = newTutorialFunctions() + let functionLibraryIncludesFunctions = newIncludesFunctions() - thisObject.nodeChildren = newNodeChildren() + thisObject.nodeChildren = newNodeChildren() - let workingAtTask = 0 - let circularProgressBar = newBusyProgressBar() - circularProgressBar.fitFunction = canvas.floatingSpace.fitIntoVisibleArea - let loadedWorkspaceNode - let sessionTimestamp = (new Date()).valueOf() - window.localStorage.setItem('Session Timestamp', sessionTimestamp) + let savingWorkspaceIntervalId + let isInitialized = false + let workingAtTask = 0 + let circularProgressBar = newBusyProgressBar() + circularProgressBar.fitFunction = canvas.floatingSpace.fitIntoVisibleArea + let loadedWorkspaceNode + let sessionTimestamp = (new Date()).valueOf() + window.localStorage.setItem('Session Timestamp', sessionTimestamp) - return thisObject + return thisObject - function finalize () { - thisObject.definition = undefined - thisObject.container.finalize() - thisObject.container = undefined - thisObject.workspaceNode = undefined - circularProgressBar.finalize() - circularProgressBar = undefined - } + function finalize() { + thisObject.definition = undefined + thisObject.container.finalize() + thisObject.container = undefined + thisObject.workspaceNode = undefined + circularProgressBar.finalize() + circularProgressBar = undefined + } - function initialize () { - try { - let lastUsedWorkspace = window.localStorage.getItem('Last Used Workspace') + function initialize() { + try { + let lastUsedWorkspace = window.localStorage.getItem('Last Used Workspace') - if (lastUsedWorkspace !== 'undefined' && lastUsedWorkspace !== null && lastUsedWorkspace !== undefined) { - let blobService = newFileStorage() - blobService.getFileFromHost('LoadWorkspace' + '/' + lastUsedWorkspace, onFileReceived, true) - function onFileReceived (err, text, response) { - if (err && err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { - canvas.cockpitSpace.setStatus('Could not load the last Workspace used, called "' + lastUsedWorkspace + '". Will switch to the default Workspace instead.', 500, canvas.cockpitSpace.statusTypes.WARNING) - thisObject.workspaceNode = getWorkspace() // This is the default workspace that comes with the system. - recreateWorkspace() - return - } - thisObject.workspaceNode = JSON.parse(text) - recreateWorkspace() + if (lastUsedWorkspace !== 'undefined' && lastUsedWorkspace !== null && lastUsedWorkspace !== undefined) { + let blobService = newFileStorage() + blobService.getFileFromHost('LoadWorkspace' + '/' + lastUsedWorkspace, onFileReceived, true) + function onFileReceived(err, text, response) { + if (err && err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + canvas.cockpitSpace.setStatus('Could not load the last Workspace used, called "' + lastUsedWorkspace + '". Will switch to the default Workspace instead.', 500, canvas.cockpitSpace.statusTypes.WARNING) + thisObject.workspaceNode = getWorkspace() // This is the default workspace that comes with the system. + recreateWorkspace() + return + } + thisObject.workspaceNode = JSON.parse(text) + recreateWorkspace() + } + } else { + thisObject.workspaceNode = getWorkspace() // This is the default workspace that comes with the system. + recreateWorkspace() + } + + function recreateWorkspace() { + functionLibraryUiObjectsFromNodes.recreateWorkspace(thisObject.workspaceNode, finishInitialization) + } + + function finishInitialization() { + setupEventsServerClients() + runTasksAndSessions() + thisObject.enabled = true + canvas.cockpitSpace.initializePosition() + canvas.splashScreen.initialize() + savingWorkspaceIntervalId = setInterval(saveWorkspace, 60000) + isInitialized = true + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> err = ' + err.stack) } } - } else { - thisObject.workspaceNode = getWorkspace() // This is the default workspace that comes with the system. - recreateWorkspace() - } - - function recreateWorkspace () { - functionLibraryUiObjectsFromNodes.recreateWorkspace(thisObject.workspaceNode, finishInitialization) - } - - function finishInitialization () { - setupEventsServerClients() - runTasksAndSessions(false) - thisObject.enabled = true - canvas.cockpitSpace.initializePosition() - canvas.splashScreen.initialize() - setInterval(saveWorkspace, 60000) - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> err = ' + err.stack) } } - } - function runTasksAndSessions (replacingCurrentWorkspace) { - if (replacingCurrentWorkspace === true) { - // We need to wait all tasks that were potentially running to stop - setTimeout(functionLibraryUiObjectsFromNodes.runTasks, 70000) - // We give a few seconds for the tasks to start - setTimeout(functionLibraryUiObjectsFromNodes.runSessions, 80000) - } else { - functionLibraryUiObjectsFromNodes.runTasks() - // We give a few seconds for the tasks to start - setTimeout(functionLibraryUiObjectsFromNodes.runSessions, 10000) + function runTasksAndSessions() { + + functionLibraryUiObjectsFromNodes.syncronizeTasksFoundAtWorkspaceWithBackEnd(functionLibraryTaskFunctions) + functionLibraryUiObjectsFromNodes.syncronizeSessionsFoundAtWorkspaceWithBackEnd(functionLibrarySessionFunctions) + + setTimeout(functionLibraryUiObjectsFromNodes.playTutorials, 5000) + } - } - function setupEventsServerClients () { - for (let i = 0; i < thisObject.workspaceNode.rootNodes.length; i++) { - let rootNode = thisObject.workspaceNode.rootNodes[i] + function setupEventsServerClients() { + for (let i = 0; i < thisObject.workspaceNode.rootNodes.length; i++) { + let rootNode = thisObject.workspaceNode.rootNodes[i] - if (rootNode.type === 'Network') { - for (let j = 0; j < rootNode.networkNodes.length; j++) { - let networkNode = rootNode.networkNodes[j] + if (rootNode.type === 'Network') { + for (let j = 0; j < rootNode.networkNodes.length; j++) { + let networkNode = rootNode.networkNodes[j] - let host - let webSocketsPort - /* At this point the node does not have the payload property yet, that is why we have to do this manually */ - try { - let code = JSON.parse(networkNode.code) - host = code.host - webSocketsPort = code.webSocketsPort - } catch (err) { - console.log('[ERROR] networkNode ' + networkNode.name + ' has an invalid configuration. Cannot know the host name and webSocketsPort.') - return - } + let eventsServerClient = newEventsServerClient(networkNode) + eventsServerClient.initialize() - if (host === undefined) { host = 'localhost' } - if (webSocketsPort === undefined) { webSocketsPort = '8080' } - - let eventsServerClient = newEventsServerClient(host, webSocketsPort, networkNode.name) - eventsServerClient.initialize() - - thisObject.eventsServerClients.set(networkNode.id, eventsServerClient) + thisObject.eventsServerClients.set(networkNode.id, eventsServerClient) + } + } } - } - } - } - - function chainDetachNode (node) { - functionLibraryChainAttachDetach.chainDetachNode(node, thisObject.workspaceNode.rootNodes) - } - - function chainAttachNode (node, attachToNode) { - functionLibraryChainAttachDetach.chainAttachNode(node, attachToNode, thisObject.workspaceNode.rootNodes) - } - - function referenceDetachNode (node) { - functionLibraryReferenceAttachDetach.referenceDetachNode(node) - } - - function referenceAttachNode (node, attachToNode) { - functionLibraryReferenceAttachDetach.referenceAttachNode(node, attachToNode, thisObject.workspaceNode.rootNodes) - } - - function saveWorkspace () { - /* When there is an exception while loading the app, the rootNodes of the workspace get into null value. To avoid saving a corrupt staate we are going to verufy we are not in that situation before saving. */ - let workspace = canvas.designSpace.workspace.workspaceNode - - for (let i = 0; i < workspace.rootNodes.length; i++) { - let rootNode = workspace.rootNodes[i] - if (rootNode === null) { - canvas.cockpitSpace.setStatus('Could not save the Workspace. The state of the workspace in memory is corrupt, please reload the App.', 150, canvas.cockpitSpace.statusTypes.WARNING) - return - } } - let savedSessionTimestamp = window.localStorage.getItem('Session Timestamp') - if (Number(savedSessionTimestamp) !== sessionTimestamp) { - canvas.cockpitSpace.setStatus('Could not save the Workspace. You have more that one instance of the Superlagos User Interface open at the same time. Plese close this instance as it is older than the others.', 150, canvas.cockpitSpace.statusTypes.WARNING) - } else { - let textToSave = stringifyWorkspace() - window.localStorage.setItem(CANVAS_APP_NAME + '.' + 'Workspace', textToSave) - window.localStorage.setItem('Session Timestamp', sessionTimestamp) + function chainDetachNode(node) { + functionLibraryChainAttachDetach.chainDetachNode(node, thisObject.workspaceNode.rootNodes) + } + + function chainAttachNode(node, attachToNode) { + functionLibraryChainAttachDetach.chainAttachNode(node, attachToNode, thisObject.workspaceNode.rootNodes) + } + + function referenceDetachNode(node) { + functionLibraryReferenceAttachDetach.referenceDetachNode(node) + } + + function referenceAttachNode(node, attachToNode) { + functionLibraryReferenceAttachDetach.referenceAttachNode(node, attachToNode, thisObject.workspaceNode.rootNodes) + } + + function saveWorkspace() { + let workspace = canvas.designSpace.workspace.workspaceNode + + /* Validation if it is too early to save. */ + if (isInitialized === false) { return } + + /* Validation of that the user changed the workspace name at least once. */ + if (workspace.name === 'Default') { + canvas.cockpitSpace.setStatus( + 'Could not save the Workspace. Please rename the Workspace so that it can be saved.' + , 150, canvas.cockpitSpace.statusTypes.WARNING) + return + } + + /* Validation of 2 sessions opened at the same time. */ + let savedSessionTimestamp = window.localStorage.getItem('Session Timestamp') + if (Number(savedSessionTimestamp) !== sessionTimestamp) { + canvas.cockpitSpace.setStatus( + 'Could not save the Workspace. You have more that one instance of the Superlagos User Interface open at the same time. Plese close this instance as it is older than the others.' + , 150, canvas.cockpitSpace.statusTypes.WARNING) + return + } + + /* Validation that there is something to save */ + let textToSave = stringifyWorkspace() + if (textToSave === undefined) { + canvas.cockpitSpace.setStatus( + 'Could not save the Workspace. Something is preventing the System to do it at this time.' + , 150, canvas.cockpitSpace.statusTypes.WARNING) + return + } + + window.localStorage.setItem('Session Timestamp', sessionTimestamp) + + /* Validation Workspace has a name */ + if (workspace.name === undefined) { + canvas.cockpitSpace.setStatus( + 'Could not save the Workspace. You need to specify a name for it.' + , 150, canvas.cockpitSpace.statusTypes.WARNING) + return + } - if (workspace.name !== undefined) { let url = 'SaveWorkspace/' + workspace.name callServer(textToSave, url, onResponse) - } + return true - function onResponse (err) { - if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { - window.localStorage.setItem('Last Used Workspace', workspace.name) - window.localStorage.setItem('Session Timestamp', sessionTimestamp) - if (ARE_WE_RECORDING_A_MARKET_PANORAMA === false) { - canvas.cockpitSpace.setStatus(workspace.name + ' Saved.', 50, canvas.cockpitSpace.statusTypes.ALL_GOOD) - } + function onResponse(err) { + if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { + window.localStorage.setItem('Last Used Workspace', workspace.name) + window.localStorage.setItem('Session Timestamp', sessionTimestamp) + if (ARE_WE_RECORDING_A_MARKET_PANORAMA === false) { + canvas.cockpitSpace.setStatus(workspace.name + ' Saved.', 50, canvas.cockpitSpace.statusTypes.ALL_GOOD) + } + } else { + canvas.cockpitSpace.setStatus('Could not save the Workspace at the Backend. Please check the Backend Console for more information.', 150, canvas.cockpitSpace.statusTypes.WARNING) + } + } + } + + function getNodeById(nodeId) { + return functionLibraryUiObjectsFromNodes.getNodeById(nodeId) + } + + function physics() { + eventsServerClientsPhysics() + replacingWorkspacePhysics() + } + + function eventsServerClientsPhysics() { + thisObject.eventsServerClients.forEach(applyPhysics) + + function applyPhysics(eventServerClient) { + eventServerClient.physics() + } + } + + function finalizeEventsServerClients() { + thisObject.eventsServerClients.forEach(finalize) + + function finalize(eventServerClient) { + eventServerClient.finalize() + } + } + + function replacingWorkspacePhysics() { + if (thisObject.enabled !== true) { return } + + if (workingAtTask > 0) { + circularProgressBar.physics() + + switch (workingAtTask) { + case 1: + functionLibraryNodeDeleter.deleteWorkspace(thisObject.workspaceNode, thisObject.workspaceNode.rootNodes) + workingAtTask++ + break + case 2: + finalizeEventsServerClients() + thisObject.eventsServerClients = new Map() + workingAtTask++ + break + case 3: + clearInterval(savingWorkspaceIntervalId) + workingAtTask++ + break + case 4: + thisObject.workspaceNode = loadedWorkspaceNode + loadedWorkspaceNode = undefined + workingAtTask++ + break + case 5: + functionLibraryUiObjectsFromNodes.recreateWorkspace(thisObject.workspaceNode, finishInitialization) + function finishInitialization() { + setupEventsServerClients() + runTasksAndSessions() + } + workingAtTask++ + break + case 6: + canvas.chartingSpace.reset() + workingAtTask++ + break + case 7: + workingAtTask = 0 + circularProgressBar.visible = false + break + } + } + } + + function draw() { + if (circularProgressBar !== undefined) { + circularProgressBar.draw() + } + } + + function stringifyWorkspace(removePersonalData) { + let stringifyReadyNodes = [] + for (let i = 0; i < thisObject.workspaceNode.rootNodes.length; i++) { + let rootNode = thisObject.workspaceNode.rootNodes[i] + + if (rootNode.isIncluded !== true) { + let node = functionLibraryProtocolNode.getProtocolNode(rootNode, removePersonalData, false, true, true, true) + stringifyReadyNodes.push(node) + } + } + let workspace = { + type: 'Workspace', + name: thisObject.workspaceNode.name, + rootNodes: stringifyReadyNodes + } + + /* + Sometimes it happens that there are no rootNodes. + In those situations the workspace can not be stringified, + to prevent later saving it corrupting the original file. + */ + if (stringifyReadyNodes.length > 0) { + return JSON.stringify(workspace) } else { - canvas.cockpitSpace.setStatus('Could not save the Workspace at the Backend. Please check the Backend Console for more information.', 150, canvas.cockpitSpace.statusTypes.WARNING) + return } - } - return true - } - } - - function physics () { - eventsServerClientsPhysics() - replacingWorkspacePhysics() - } - - function eventsServerClientsPhysics () { - thisObject.eventsServerClients.forEach(applyPhysics) - - function applyPhysics (eventServerClient) { - eventServerClient.physics() - } - } - - function replacingWorkspacePhysics () { - if (thisObject.enabled !== true) { return } - - if (workingAtTask > 0) { - circularProgressBar.physics() - - switch (workingAtTask) { - case 1: - stopAllRunningTasks() - workingAtTask++ - break - case 2: - functionLibraryNodeDeleter.deleteWorkspace(thisObject.workspaceNode, thisObject.workspaceNode.rootNodes) - workingAtTask++ - break - case 3: - thisObject.workspaceNode = loadedWorkspaceNode - loadedWorkspaceNode = undefined - workingAtTask++ - break - case 4: - functionLibraryUiObjectsFromNodes.recreateWorkspace(thisObject.workspaceNode) - setupEventsServerClients() - runTasksAndSessions(true) - workingAtTask++ - break - case 5: - canvas.chartingSpace.reset() - workingAtTask++ - break - case 6: - workingAtTask = 0 - circularProgressBar.visible = false - break - } - } - } - - function draw () { - if (circularProgressBar !== undefined) { - circularProgressBar.draw() - } - } - - function stringifyWorkspace (removePersonalData) { - let stringifyReadyNodes = [] - for (let i = 0; i < thisObject.workspaceNode.rootNodes.length; i++) { - let rootNode = thisObject.workspaceNode.rootNodes[i] - - if (rootNode.isIncluded !== true) { - let node = functionLibraryProtocolNode.getProtocolNode(rootNode, removePersonalData, false, true, true, true) - stringifyReadyNodes.push(node) - } - } - let workspace = { - type: 'Workspace', - name: thisObject.workspaceNode.name, - rootNodes: stringifyReadyNodes } - return JSON.stringify(workspace) - } - - function stopAllRunningTasks () { - for (let i = 0; i < thisObject.workspaceNode.rootNodes.length; i++) { - let rootNode = thisObject.workspaceNode.rootNodes[i] - if (rootNode.type === 'Network') { - if (rootNode.networkNodes !== undefined) { - for (let j = 0; j < rootNode.networkNodes.length; j++) { - let networkNode = rootNode.networkNodes[j] - if (networkNode.dataMining !== undefined && networkNode.dataMining.payload !== undefined) { - networkNode.dataMining.payload.uiObject.menu.internalClick('Stop All Exchange Tasks') - networkNode.dataMining.payload.uiObject.menu.internalClick('Stop All Exchange Tasks') + function stopAllRunningTasks() { + for (let i = 0; i < thisObject.workspaceNode.rootNodes.length; i++) { + let rootNode = thisObject.workspaceNode.rootNodes[i] + if (rootNode.type === 'Network') { + if (rootNode.networkNodes !== undefined) { + for (let j = 0; j < rootNode.networkNodes.length; j++) { + let networkNode = rootNode.networkNodes[j] + if (networkNode.dataMining !== undefined && networkNode.dataMining.payload !== undefined) { + networkNode.dataMining.payload.uiObject.menu.internalClick('Stop All Exchange Data Tasks') + networkNode.dataMining.payload.uiObject.menu.internalClick('Stop All Exchange Data Tasks') + } + if (networkNode.testingEnvironment !== undefined && networkNode.testingEnvironment.payload !== undefined) { + networkNode.testingEnvironment.payload.uiObject.menu.internalClick('Stop All Exchange Trading Tasks') + networkNode.testingEnvironment.payload.uiObject.menu.internalClick('Stop All Exchange Trading Tasks') + } + if (networkNode.productionEnvironment !== undefined && networkNode.productionEnvironment.payload !== undefined) { + networkNode.productionEnvironment.payload.uiObject.menu.internalClick('Stop All Exchange Trading Tasks') + networkNode.productionEnvironment.payload.uiObject.menu.internalClick('Stop All Exchange Trading Tasks') + } + } + } } - if (networkNode.testingEnvironment !== undefined && networkNode.testingEnvironment.payload !== undefined) { - networkNode.testingEnvironment.payload.uiObject.menu.internalClick('Stop All Exchange Tasks') - networkNode.testingEnvironment.payload.uiObject.menu.internalClick('Stop All Exchange Tasks') + } + } + + function getNodeByShortcutKey(searchingKey) { + for (let i = 0; i < thisObject.workspaceNode.rootNodes.length; i++) { + let rootNode = thisObject.workspaceNode.rootNodes[i] + let node = functionLibraryShortcutKeys.getNodeByShortcutKey(rootNode, searchingKey) + if (node !== undefined) { return node } + } + } + + function getNodeThatIsOnFocus() { + for (let i = 0; i < thisObject.workspaceNode.rootNodes.length; i++) { + let rootNode = thisObject.workspaceNode.rootNodes[i] + let node = functionLibraryOnFocus.getNodeThatIsOnFocus(rootNode) + if (node !== undefined) { return node } + } + } + + function getHierarchyHeads() { + let nodes = [] + for (let i = 0; i < thisObject.workspaceNode.rootNodes.length; i++) { + let rootNode = thisObject.workspaceNode.rootNodes[i] + let nodeDefinition = getNodeDefinition(rootNode) + if (nodeDefinition !== undefined) { + if (nodeDefinition.isHierarchyHead === true) { + nodes.push(rootNode) + } } - if (networkNode.productionEnvironment !== undefined && networkNode.productionEnvironment.payload !== undefined) { - networkNode.productionEnvironment.payload.uiObject.menu.internalClick('Stop All Exchange Tasks') - networkNode.productionEnvironment.payload.uiObject.menu.internalClick('Stop All Exchange Tasks') + } + return nodes + } + + function getHierarchyHeadsById(nodeId) { + let hiriatchyHeads = getHierarchyHeads() + for (let i = 0; i < hiriatchyHeads.length; i++) { + let hiriatchyHead = hiriatchyHeads[i] + if (hiriatchyHead.id === nodeId) { + return hiriatchyHead } - } } - } } - } - function getNodeByShortcutKey (searchingKey) { - for (let i = 0; i < thisObject.workspaceNode.rootNodes.length; i++) { - let rootNode = thisObject.workspaceNode.rootNodes[i] - let node = functionLibraryShortcutKeys.getNodeByShortcutKey(rootNode, searchingKey) - if (node !== undefined) { return node } - } - } + function replaceWorkspaceByLoadingOne(name) { - function getNodeThatIsOnFocus () { - for (let i = 0; i < thisObject.workspaceNode.rootNodes.length; i++) { - let rootNode = thisObject.workspaceNode.rootNodes[i] - let node = functionLibraryOnFocus.getNodeThatIsOnFocus(rootNode) - if (node !== undefined) { return node } - } - } - - function getHierarchyHeads () { - let nodes = [] - for (let i = 0; i < thisObject.workspaceNode.rootNodes.length; i++) { - let rootNode = thisObject.workspaceNode.rootNodes[i] - let nodeDefinition = APP_SCHEMA_MAP.get(rootNode.type) - if (nodeDefinition !== undefined) { - if (nodeDefinition.isHierarchyHead === true) { - nodes.push(rootNode) - } - } - } - return nodes - } - - function replaceWorkspaceByLoadingOne (name) { - let blobService = newFileStorage() - blobService.getFileFromHost('LoadWorkspace' + '/' + name, onFileReceived, true) - function onFileReceived (err, text, response) { - if (err && err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { - canvas.cockpitSpace.setStatus('Could not load the Workspace called "' + name + '". ', 500, canvas.cockpitSpace.statusTypes.WARNING) - return - } - - loadedWorkspaceNode = JSON.parse(text) - saveWorkspace() - canvas.cockpitSpace.toTop() - - let position = { - x: browserCanvas.width / 2, - y: browserCanvas.height / 2 - } - - circularProgressBar.initialize(position) - circularProgressBar.visible = true - workingAtTask = 1 - } - } - - function spawn (nodeText, mousePointer) { - try { - let point = { - x: mousePointer.x, - y: mousePointer.y - } - point = canvas.floatingSpace.container.frame.unframeThisPoint(point) - spawnPosition.x = point.x - spawnPosition.y = point.y - - let droppedNode = JSON.parse(nodeText) - - if (droppedNode.type === 'Workspace') { - loadedWorkspaceNode = droppedNode - circularProgressBar.initialize(mousePointer) - circularProgressBar.visible = true - workingAtTask = 1 - return - } - - /* It does not exist, so we recreeate it respecting the inner state of each object. */ - let positionOffset = { - x: spawnPosition.x - droppedNode.savedPayload.position.x, - y: spawnPosition.y - droppedNode.savedPayload.position.y - } - - thisObject.workspaceNode.rootNodes.push(droppedNode) - functionLibraryUiObjectsFromNodes.createUiObjectFromNode(droppedNode, undefined, undefined, positionOffset) - functionLibraryUiObjectsFromNodes.tryToConnectChildrenWithReferenceParents() - - droppedNode = undefined - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] spawn -> err = ' + err.stack) } - } - } - - async function onMenuItemClick (payload, action, relatedUiObject, callBackFunction) { - switch (action) { - case 'Add UI Object': - { - functionLibraryUiObjectsFromNodes.addUIObject(payload.node, relatedUiObject) - } - break - case 'Add Missing Children': - { - functionLibraryUiObjectsFromNodes.addMissingChildren(payload.node) - } - break - case 'Delete UI Object': - { - functionLibraryNodeDeleter.deleteUIObject(payload.node, thisObject.workspaceNode.rootNodes) - } - break - case 'Share Workspace': - { - let text = stringifyWorkspace(true) - let fileName = 'Share - ' + payload.node.type + ' - ' + payload.node.name + '.json' - downloadText(fileName, text) - } - break - case 'Backup Workspace': - { - let text = stringifyWorkspace(false) - let fileName = 'Backup - ' + payload.node.type + ' - ' + payload.node.name + '.json' - downloadText(fileName, text) - } - break - case 'Edit Code': - - break - case 'Share': - { - let text = JSON.stringify(functionLibraryProtocolNode.getProtocolNode(payload.node, true, false, true, true, true)) - - let nodeName = payload.node.name - if (nodeName === undefined) { - nodeName = '' - } else { - nodeName = '.' + nodeName - } - let fileName = 'Share - ' + payload.node.type + ' - ' + nodeName + '.json' - downloadText(fileName, text) + let webCommand + if (name.indexOf('Included -> ') >= 0) { + name = name.replace('Included -> ', '') + webCommand = 'LoadIncludedWorkspace' + } else { + webCommand = 'LoadWorkspace' } - break - case 'Backup': - { - let text = JSON.stringify(functionLibraryProtocolNode.getProtocolNode(payload.node, false, false, true, true, true)) - - let nodeName = payload.node.name - if (nodeName === undefined) { - nodeName = '' - } else { - nodeName = ' ' + nodeName - } - let fileName = 'Backup - ' + payload.node.type + ' - ' + nodeName + '.json' - downloadText(fileName, text) - } - - break - case 'Clone': - { - let text = JSON.stringify(functionLibraryNodeCloning.getNodeClone(payload.node)) - - let nodeName = payload.node.name - if (nodeName === undefined) { - nodeName = '' - } else { - nodeName = ' ' + nodeName - } - let fileName = 'Clone - ' + payload.node.type + ' - ' + nodeName + '.json' - downloadText(fileName, text) - } - - break - case 'Debug Task': - { - functionLibraryTaskFunctions.runTask(payload.node, functionLibraryProtocolNode, true, callBackFunction) - } - break - case 'Run Task': - { - functionLibraryTaskFunctions.runTask(payload.node, functionLibraryProtocolNode, false, callBackFunction) - } - break - case 'Stop Task': - { - functionLibraryTaskFunctions.stopTask(payload.node, functionLibraryProtocolNode, callBackFunction) - } - break - case 'Run All Tasks': - { - functionLibraryTaskFunctions.runAllTasks(payload.node, functionLibraryProtocolNode) - } - break - case 'Stop All Tasks': - { - functionLibraryTaskFunctions.stopAllTasks(payload.node, functionLibraryProtocolNode) - } - break - case 'Run All Task Managers': - { - functionLibraryTaskFunctions.runAllTaskManagers(payload.node, functionLibraryProtocolNode) - } - break - case 'Stop All Task Managers': - { - functionLibraryTaskFunctions.stopAllTaskManagers(payload.node, functionLibraryProtocolNode) - } - break - case 'Run All Exchange Tasks': - { - functionLibraryTaskFunctions.runAllExchangeTasks(payload.node, functionLibraryProtocolNode) - } - break - case 'Stop All Exchange Tasks': - { - functionLibraryTaskFunctions.stopAllExchangeTasks(payload.node, functionLibraryProtocolNode) - } - break - case 'Add Missing Crypto Exchanges': - { - functionLibraryCCXTFunctions.addMissingExchanges(payload.node, functionLibraryUiObjectsFromNodes) - } - break - case 'Add Missing Assets': - { - functionLibraryCCXTFunctions.addMissingAssets(payload.node, functionLibraryUiObjectsFromNodes) - } - break - case 'Add Missing Markets': - { - functionLibraryCCXTFunctions.addMissingMarkets(payload.node, functionLibraryUiObjectsFromNodes, functionLibraryNodeCloning) - } - break - case 'Send Webhook Test Message': - { - functionLibraryWebhookFunctions.sendTestMessage(payload.node, callBackFunction) - } - break - case 'Run Session': - { - functionLibrarySessionFunctions.runSession(payload.node, functionLibraryProtocolNode, functionLibraryDependenciesFilter, callBackFunction) - } - break - case 'Stop Session': - { - functionLibrarySessionFunctions.stopSession(payload.node, functionLibraryProtocolNode, callBackFunction) - } - break - case 'Run Super Action': - { - functionLibrarySuperScripts.runSuperScript(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryNodeCloning, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) - } - break - case 'Remove Parent': - { - chainDetachNode(payload.node) - } - break - case 'Remove Reference': - { - referenceDetachNode(payload.node) - } - break - case 'Push Code to Javascript Code': - { - payload.node.javascriptCode.code = payload.node.code - } - break - case 'Fetch Code to Javascript Code': - { - payload.node.code = payload.node.javascriptCode.code - } - break - case 'Open Documentation': - { - let definition = APP_SCHEMA_MAP.get(payload.node.type) - if (definition !== undefined) { - if (definition.docURL !== undefined) { - let newTab = window.open(definition.docURL, '_blank') - newTab.focus() + let blobService = newFileStorage() + blobService.getFileFromHost(webCommand + '/' + name, onFileReceived, true) + function onFileReceived(err, text, response) { + if (err && err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + canvas.cockpitSpace.setStatus('Could not load the Workspace called "' + name + '". ', 500, canvas.cockpitSpace.statusTypes.WARNING) + return } - } + + loadedWorkspaceNode = JSON.parse(text) + saveWorkspace() + canvas.cockpitSpace.toTop() + + let position = { + x: browserCanvas.width / 2, + y: browserCanvas.height / 2 + } + + circularProgressBar.initialize(position) + circularProgressBar.visible = true + workingAtTask = 1 + } + } + + function spawn(nodeText, mousePointer) { + try { + let point = { + x: mousePointer.x, + y: mousePointer.y + } + point = canvas.floatingSpace.container.frame.unframeThisPoint(point) + spawnPosition.x = point.x + spawnPosition.y = point.y + + let droppedNode = JSON.parse(nodeText) + + if (droppedNode.type === 'Workspace') { + loadedWorkspaceNode = droppedNode + circularProgressBar.initialize(mousePointer) + circularProgressBar.visible = true + workingAtTask = 1 + return + } + + /* It does not exist, so we recreeate it respecting the inner state of each object. */ + let positionOffset = { + x: spawnPosition.x - droppedNode.savedPayload.position.x, + y: spawnPosition.y - droppedNode.savedPayload.position.y + } + + thisObject.workspaceNode.rootNodes.push(droppedNode) + functionLibraryUiObjectsFromNodes.createUiObjectFromNode(droppedNode, undefined, undefined, positionOffset) + functionLibraryUiObjectsFromNodes.tryToConnectChildrenWithReferenceParents() + + droppedNode = undefined + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] spawn -> err = ' + err.stack) } + } + } + + async function onMenuItemClick(payload, action, relatedUiObject, callBackFunction) { + switch (action) { + case 'Copy Node Path': + { + let nodePath = functionLibraryNodePath.getNodePath(payload.node) + + copyTextToClipboard(nodePath) + + canvas.cockpitSpace.setStatus( + nodePath + ' copied to the Clipboard.' + , 50, canvas.cockpitSpace.statusTypes.ALL_GOOD) + } + break + case 'Add UI Object': + { + functionLibraryUiObjectsFromNodes.addUIObject(payload.node, relatedUiObject) + } + break + case 'Add Missing Children': + { + functionLibraryUiObjectsFromNodes.addMissingChildren(payload.node) + } + break + case 'Delete UI Object': + { + functionLibraryNodeDeleter.deleteUIObject(payload.node, thisObject.workspaceNode.rootNodes) + } + break + case 'Share Workspace': + { + let text = stringifyWorkspace(true) + let fileName = 'Share - ' + payload.node.type + ' - ' + payload.node.name + '.json' + if (text !== undefined) { + downloadText(fileName, text) + } + } + break + case 'Backup Workspace': + { + let text = stringifyWorkspace(false) + let fileName = 'Backup - ' + payload.node.type + ' - ' + payload.node.name + '.json' + if (text !== undefined) { + downloadText(fileName, text) + } + } + break + case 'Edit Code': + + break + case 'Share': + { + let text = JSON.stringify(functionLibraryProtocolNode.getProtocolNode(payload.node, true, false, true, true, true)) + + let nodeName = payload.node.name + if (nodeName === undefined) { + nodeName = '' + } else { + nodeName = '.' + nodeName + } + let fileName = 'Share - ' + payload.node.type + ' - ' + nodeName + '.json' + downloadText(fileName, text) + } + + break + case 'Backup': + { + let text = JSON.stringify(functionLibraryProtocolNode.getProtocolNode(payload.node, false, false, true, true, true)) + + let nodeName = payload.node.name + if (nodeName === undefined) { + nodeName = '' + } else { + nodeName = ' ' + nodeName + } + let fileName = 'Backup - ' + payload.node.type + ' - ' + nodeName + '.json' + downloadText(fileName, text) + } + + break + case 'Clone': + { + let text = JSON.stringify(functionLibraryNodeCloning.getNodeClone(payload.node)) + + let nodeName = payload.node.name + if (nodeName === undefined) { + nodeName = '' + } else { + nodeName = ' ' + nodeName + } + let fileName = 'Clone - ' + payload.node.type + ' - ' + nodeName + '.json' + downloadText(fileName, text) + } + + break + case 'Debug Task': + { + functionLibraryTaskFunctions.runTask(payload.node, functionLibraryProtocolNode, true, callBackFunction) + } + break + case 'Run Task': + { + functionLibraryTaskFunctions.runTask(payload.node, functionLibraryProtocolNode, false, callBackFunction) + } + break + case 'Stop Task': + { + functionLibraryTaskFunctions.stopTask(payload.node, functionLibraryProtocolNode, callBackFunction) + } + break + case 'Run All Tasks': + { + functionLibraryTaskFunctions.runAllTasks(payload.node, functionLibraryProtocolNode) + } + break + case 'Stop All Tasks': + { + functionLibraryTaskFunctions.stopAllTasks(payload.node, functionLibraryProtocolNode) + } + break + case 'Run All Task Managers': + { + functionLibraryTaskFunctions.runAllTaskManagers(payload.node, functionLibraryProtocolNode) + } + break + case 'Stop All Task Managers': + { + functionLibraryTaskFunctions.stopAllTaskManagers(payload.node, functionLibraryProtocolNode) + } + break + case 'Run All Exchange Data Tasks': + { + functionLibraryTaskFunctions.runAllExchangeDataTasks(payload.node, functionLibraryProtocolNode) + } + break + case 'Stop All Exchange Data Tasks': + { + functionLibraryTaskFunctions.stopAllExchangeDataTasks(payload.node, functionLibraryProtocolNode) + } + break + case 'Run All Exchange Trading Tasks': + { + functionLibraryTaskFunctions.runAllExchangeTradingTasks(payload.node, functionLibraryProtocolNode) + } + break + case 'Stop All Exchange Trading Tasks': + { + functionLibraryTaskFunctions.stopAllExchangeTradingTasks(payload.node, functionLibraryProtocolNode) + } + break + case 'Run All Market Data Tasks': + { + functionLibraryTaskFunctions.runAllMarketDataTasks(payload.node, functionLibraryProtocolNode) + } + break + case 'Stop All Market Data Tasks': + { + functionLibraryTaskFunctions.stopAllMarketDataTasks(payload.node, functionLibraryProtocolNode) + } + break + case 'Run All Market Trading Tasks': + { + functionLibraryTaskFunctions.runAllMarketTradingTasks(payload.node, functionLibraryProtocolNode) + } + break + case 'Stop All Market Trading Tasks': + { + functionLibraryTaskFunctions.stopAllMarketTradingTasks(payload.node, functionLibraryProtocolNode) + } + break + case 'Run All Data Mine Tasks': + { + functionLibraryTaskFunctions.runAllDataMineTasks(payload.node, functionLibraryProtocolNode) + } + break + case 'Stop All Data Mine Tasks': + { + functionLibraryTaskFunctions.stopAllDataMineTasks(payload.node, functionLibraryProtocolNode) + } + break + case 'Run All Trading Mine Tasks': + { + functionLibraryTaskFunctions.runAllTradingMineTasks(payload.node, functionLibraryProtocolNode) + } + break + case 'Stop All Trading Mine Tasks': + { + functionLibraryTaskFunctions.stopAllTradingMineTasks(payload.node, functionLibraryProtocolNode) + } + break + case 'Add Missing Exchange Data Tasks': + { + functionLibraryTaskFunctions.addMissingExchangeDataTasks(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Add Missing Market Data Tasks': + { + functionLibraryTaskFunctions.addMissingMarketDataTasks(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Add Missing Data Mine Tasks': + { + functionLibraryTaskFunctions.addMissingDataMineTasks(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Add Missing Exchange Trading Tasks': + { + functionLibraryTaskFunctions.addMissingExchangeTradingTasks(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Add Missing Market Trading Tasks': + { + functionLibraryTaskFunctions.addMissingMarketTradingTasks(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Add Missing Trading Mine Tasks': + { + functionLibraryTaskFunctions.addMissingTradingMineTasks(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Add All Tasks': + { + functionLibraryTaskFunctions.addAllTasks(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Add Missing Crypto Exchanges': + { + functionLibraryCryptoEcosystemFunctions.addMissingExchanges(payload.node, functionLibraryUiObjectsFromNodes) + } + break + case 'Add Missing Assets': + { + functionLibraryCryptoEcosystemFunctions.addMissingAssets(payload.node, functionLibraryUiObjectsFromNodes) + } + break + case 'Add Missing Markets': + { + functionLibraryCryptoEcosystemFunctions.addMissingMarkets(payload.node, functionLibraryUiObjectsFromNodes, functionLibraryNodeCloning) + } + break + case 'Install Market': + { + functionLibraryCryptoEcosystemFunctions.installMarket(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter, functionLibraryChartingSpaceFunctions, functionLibraryDataStorageFunctions) + } + break + case 'Uninstall Market': + { + functionLibraryCryptoEcosystemFunctions.uninstallMarket(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter, functionLibraryChartingSpaceFunctions, functionLibraryDataStorageFunctions) + } + break + case 'Add All Output Datasets': + { + functionLibraryDataMineFunctions.addAllOutputDatasets(payload.node, functionLibraryUiObjectsFromNodes) + } + break + case 'Add All Data Products': + { + functionLibraryDataStorageFunctions.addAllDataProducts(payload.node, functionLibraryUiObjectsFromNodes) + } + break + case 'Add All Data Mine Products': + { + functionLibraryDataStorageFunctions.addAllDataMineProducts(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Add All Trading Mine Products': + { + functionLibraryDataStorageFunctions.addAllTradingMineProducts(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Add Missing Session References': + { + functionLibraryDataStorageFunctions.addMissingSessionReferences(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Add Missing Market Data Products': + { + functionLibraryDataStorageFunctions.addMissingMarketDataProducts(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Add Missing Market Trading Products': + { + functionLibraryDataStorageFunctions.addMissingMarketTradingProducts(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Add Missing Exchange Trading Products': + { + functionLibraryDataStorageFunctions.addMissingExchangeTradingProducts(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Add Missing Exchange Data Products': + { + functionLibraryDataStorageFunctions.addMissingExchangeDataProducts(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Add All Data Dependencies': + { + functionLibraryDataMineFunctions.addAllDataDependencies(payload.node, functionLibraryUiObjectsFromNodes) + } + break + case 'Add All Data Mine Dependencies': + { + functionLibraryDataMineFunctions.addAllDataMineDataDependencies(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Add All Mine Layers': + { + functionLibraryChartingSpaceFunctions.addAllMineLayers(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) + } + break + case 'Add Missing Time Machines': + { + functionLibraryChartingSpaceFunctions.addMissingTimeMachines(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) + } + break + case 'Add Missing Dashboards': + { + functionLibraryChartingSpaceFunctions.addMissingDashboards(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) + } + break + case 'Play Tutorial': + { + canvas.tutorialSpace.playTutorial(payload.node) + } + break + case 'Play Tutorial Topic': + { + canvas.tutorialSpace.playTutorialTopic(payload.node) + } + break + case 'Play Tutorial Step': + { + canvas.tutorialSpace.playTutorialStep(payload.node) + } + break + case 'Resume Tutorial': + { + canvas.tutorialSpace.resumeTutorial(payload.node) + } + break + case 'Resume Tutorial Topic': + { + canvas.tutorialSpace.resumeTutorialTopic(payload.node) + } + break + case 'Resume Tutorial Step': + { + canvas.tutorialSpace.resumeTutorialStep(payload.node) + } + break + case 'Reset Tutorial Progress': + { + canvas.tutorialSpace.resetTutorialProgress(payload.node) + } + break + case 'Send Webhook Test Message': + { + functionLibraryWebhookFunctions.sendTestMessage(payload.node, callBackFunction) + } + break + case 'Run Session': + { + functionLibrarySessionFunctions.runSession(payload.node, functionLibraryProtocolNode, functionLibraryDependenciesFilter, false, callBackFunction) + } + break + case 'Resume Session': + { + functionLibrarySessionFunctions.runSession(payload.node, functionLibraryProtocolNode, functionLibraryDependenciesFilter, true, callBackFunction) + } + break + case 'Stop Session': + { + functionLibrarySessionFunctions.stopSession(payload.node, functionLibraryProtocolNode, callBackFunction) + } + break + case 'Run Super Action': + { + functionLibrarySuperScripts.runSuperScript(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryNodeCloning, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) + } + break + case 'Remove Parent': + { + chainDetachNode(payload.node) + } + break + case 'Remove Reference': + { + referenceDetachNode(payload.node) + } + break + case 'Push Code to Javascript Code': + { + payload.node.javascriptCode.code = payload.node.code + } + break + case 'Fetch Code to Javascript Code': + { + payload.node.code = payload.node.javascriptCode.code + } + break + case 'Open Documentation': + { + let definition = getNodeDefinition(payload.node) + if (definition !== undefined) { + if (definition.docURL !== undefined) { + canvas.docSpace.navigateTo(definition.docURL) + } else { + let headName = getHiriarchyHead(payload.node).type + headName = headName.toLowerCase() + headName = headName.split(" ").join("-") + let nodeName = payload.node.type + nodeName = nodeName.toLowerCase() + nodeName = nodeName.split(" ").join("-") + url = DOCUMENTATION_URL_PREFIX + "suite-hierarchy-" + headName + ".html#" + nodeName + canvas.docSpace.navigateTo(url) + } + } + } + break + case 'Include Missing Data Mines': + { + functionLibraryIncludesFunctions.includeMissingDataMines(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Include Missing Trading Mines': + { + functionLibraryIncludesFunctions.includeMissingTradingMines(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Include Missing Trading Systems': + { + functionLibraryIncludesFunctions.includeMissingTradingSystems(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Include Missing Trading Engines': + { + functionLibraryIncludesFunctions.includeMissingTradingEngines(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Include Missing Super Scripts': + { + functionLibraryIncludesFunctions.includeMissingSuperScripts(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break + case 'Include Missing Tutorials': + { + functionLibraryIncludesFunctions.includeMissingTutorials(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break } - break } - } } diff --git a/CanvasApp/EventHandler.js b/CanvasApp/EventHandler.js index d387e2b68..3820a8242 100644 --- a/CanvasApp/EventHandler.js +++ b/CanvasApp/EventHandler.js @@ -1,46 +1,46 @@ -  -function newEventHandler () { - let thisObject = { - name: undefined, // This is for debugging purposes only. - listenToEvent: listenToEvent, - stopListening: stopListening, - raiseEvent: raiseEvent, - finalize: finalize - } - let eventHandlers = [] // Here we store all the functions we will call when an event is raiseed. - - return thisObject - - function finalize () { - eventHandlers = [] - } - - function listenToEvent (eventType, handler, extraData) { - let eventSubscriptionId = newUniqueId() - eventHandlers.push([eventType, handler, extraData, eventSubscriptionId]) - return eventSubscriptionId - } - - function stopListening (pEventSubscriptionId) { - for (let i = 0; i < eventHandlers.length; i++) { - if (pEventSubscriptionId === eventHandlers[i][3]) { - eventHandlers.splice(i, 1) - return - } +function newEventHandler() { + let thisObject = { + name: undefined, // This is for debugging purposes only. + listenToEvent: listenToEvent, + stopListening: stopListening, + raiseEvent: raiseEvent, + finalize: finalize } - } - function raiseEvent (eventType, event) { - for (var i = 0; i < eventHandlers.length; i++) { + let eventHandlers = [] // Here we store all the functions we will call when an event is raiseed. + + return thisObject + + function finalize() { + eventHandlers = [] + } + + function listenToEvent(eventType, handler, extraData) { + let eventSubscriptionId = newUniqueId() + eventHandlers.push([eventType, handler, extraData, eventSubscriptionId]) + return eventSubscriptionId + } + + function stopListening(pEventSubscriptionId) { + for (let i = 0; i < eventHandlers.length; i++) { + if (pEventSubscriptionId === eventHandlers[i][3]) { + eventHandlers.splice(i, 1) + return + } + } + } + + function raiseEvent(eventType, event) { + for (var i = 0; i < eventHandlers.length; i++) { /* We will execute all the functions listening to this event type. */ - if (eventHandlers[i][0] === eventType) { - let handler = eventHandlers[i][1] - let extraData = eventHandlers[i][2] + if (eventHandlers[i][0] === eventType) { + let handler = eventHandlers[i][1] + let extraData = eventHandlers[i][2] - handler(event, extraData) - } + handler(event, extraData) + } + } } - } } diff --git a/CanvasApp/EventsServerClient.js b/CanvasApp/EventsServerClient.js index 247636f03..520d095a7 100644 --- a/CanvasApp/EventsServerClient.js +++ b/CanvasApp/EventsServerClient.js @@ -1,215 +1,290 @@ -function newEventsServerClient (host, port, hostName) { - /* Web Sockets Connection */ +function newEventsServerClient(networkNode) { + /* Web Sockets Connection */ - const MODULE_NAME = 'System Event Handler' - const ERROR_LOG = true - const INFO_LOG = true - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME + const MODULE_NAME = 'System Event Handler' + const ERROR_LOG = true + const INFO_LOG = true + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME - if (host === '' || host === undefined) { host = 'localhost' } - if (port === '' || port === undefined) { port = '8080' } + let WEB_SOCKETS_CONNECTION - const WEB_SOCKETS_URL = 'ws://' + host + ':' + port + '' - let WEB_SOCKETS_CONNECTION - - let thisObject = { - isConnected: isConnected, - initialize: initialize, - physics: physics, - createEventHandler: createEventHandler, - deleteEventHandler: deleteEventHandler, - listenToEvent: listenToEvent, - stopListening: stopListening, - raiseEvent: raiseEvent - } - - let eventListeners = new Map() - let responseWaiters = new Map() - let commandsWaitingConfirmation = new Map() - let commandsSentByTimestamp = new Map() - let nonce = 0 - - return thisObject - - function initialize (callBackFunction) { - setuptWebSockets(callBackFunction) - } - - function isConnected () { - if (WEB_SOCKETS_CONNECTION.readyState === 1) { - return true - } else { - return false - } - } - - function sendCommand (command, responseCallBack, eventsCallBack) { - if (command.action === 'listenToEvent') { - let key - if (command.callerId !== undefined) { - key = command.eventHandlerName + '-' + command.eventType + '-' + command.callerId - } else { - key = command.eventHandlerName + '-' + command.eventType - } - eventListeners.set(key, eventsCallBack) - } - if (command.callerId && responseCallBack) { - responseWaiters.set(command.callerId, responseCallBack) + let thisObject = { + isConnected: isConnected, + initialize: initialize, + finalize: finalize, + physics: physics, + createEventHandler: createEventHandler, + deleteEventHandler: deleteEventHandler, + listenToEvent: listenToEvent, + stopListening: stopListening, + raiseEvent: raiseEvent } - sendToWebSocketServer(command) - } + let eventListeners = new Map() + let responseWaiters = new Map() + let commandsWaitingConfirmation = new Map() + let commandsSentByTimestamp = new Map() + let nonce = 0 + let lastTryToReconnectDatetime - function sendToWebSocketServer (command) { - nonce++ - let stringNonce = nonce.toString() - let timestamp = (new Date()).valueOf() - commandsWaitingConfirmation.set(stringNonce, command) - commandsSentByTimestamp.set(stringNonce, timestamp) + return thisObject - let messageToWebSocketServer = 'Web Browser' + '|*|' + stringNonce + '|*|' + JSON.stringify(command) - - if (WEB_SOCKETS_CONNECTION.readyState === 1) { - WEB_SOCKETS_CONNECTION.send(messageToWebSocketServer) - } else { - console.log('WebSocket message could not be sent because the connection was not ready. Will retry soon. Message = ' + JSON.stringify(command)) + function initialize(callBackFunction) { + setuptWebSockets(callBackFunction) } - } - function createEventHandler (eventHandlerName, callerId, responseCallBack) { - let eventCommand = { - action: 'createEventHandler', - eventHandlerName: eventHandlerName, - callerId: callerId + function finalize() { + WEB_SOCKETS_CONNECTION.close() + WEB_SOCKETS_CONNECTION.onerror = undefined + WEB_SOCKETS_CONNECTION.onmessage = undefined + WEB_SOCKETS_CONNECTION.onopen = undefined + WEB_SOCKETS_CONNECTION = undefined + + eventListeners = undefined + responseWaiters = undefined + commandsWaitingConfirmation = undefined + commandsSentByTimestamp = undefined + nonce = undefined + thisObject = undefined } - sendCommand(eventCommand, responseCallBack) - } - function deleteEventHandler (eventHandlerName, callerId, responseCallBack) { - let eventCommand = { - action: 'deleteEventHandler', - eventHandlerName: eventHandlerName, - callerId: callerId + function isConnected() { + if (WEB_SOCKETS_CONNECTION !== undefined) { + if (WEB_SOCKETS_CONNECTION.readyState === 1) { + return true + } + } } - sendCommand(eventCommand, responseCallBack) - } - function listenToEvent (eventHandlerName, eventType, extraData, callerId, responseCallBack, eventsCallBack) { - let eventCommand = { - action: 'listenToEvent', - eventHandlerName: eventHandlerName, - eventType: eventType, - extraData: extraData, - callerId: callerId - } - sendCommand(eventCommand, responseCallBack, eventsCallBack) - } - - function stopListening (eventHandlerName, eventSubscriptionId, callerId, responseCallBack) { - let eventCommand = { - action: 'stopListening', - eventHandlerName: eventHandlerName, - eventSubscriptionId: eventSubscriptionId, - callerId: callerId - } - sendCommand(eventCommand, responseCallBack) - } - - function raiseEvent (eventHandlerName, eventType, event, callerId, responseCallBack) { - let eventCommand = { - action: 'raiseEvent', - eventHandlerName: eventHandlerName, - eventType: eventType, - event: event, - callerId: callerId - } - sendCommand(eventCommand, responseCallBack) - } - - function retryCommandsPhysics () { - commandsSentByTimestamp.forEach(checkTimestamp) - - function checkTimestamp (timestamp, nonce) { - const MILISECONDS_TO_WAIT_FOR_RETRYING_A_COMMAND = 10000 - let now = (new Date()).valueOf() - - if ((now - timestamp) > MILISECONDS_TO_WAIT_FOR_RETRYING_A_COMMAND) { - let command = commandsWaitingConfirmation.get(nonce) - commandsWaitingConfirmation.delete(nonce) - commandsSentByTimestamp.delete(nonce) + function sendCommand(command, responseCallBack, eventsCallBack) { + if (command.action === 'listenToEvent') { + let key + if (command.callerId !== undefined) { + key = command.eventHandlerName + '-' + command.eventType + '-' + command.callerId + } else { + key = command.eventHandlerName + '-' + command.eventType + } + eventListeners.set(key, eventsCallBack) + } + if (command.callerId && responseCallBack) { + responseWaiters.set(command.callerId, responseCallBack) + } sendToWebSocketServer(command) - } - } - } - - function physics () { - if (WEB_SOCKETS_CONNECTION !== undefined) { - if (WEB_SOCKETS_CONNECTION.readyState === 3) { // Connection closed. May happen after computer goes to sleep. - setuptWebSockets(onOpen) - function onOpen () { - if (INFO_LOG === true) { logger.write('[INFO] setuptWebSockets -> Found Web Sockets Connection Closed. Reconnected to WebSockets Server.') } - } - } } - if (thisObject.isConnected() !== true) { - canvas.cockpitSpace.setStatus('Connecting to ' + hostName + ' Network Node. Please wait until the connection is established.', 100, canvas.cockpitSpace.statusTypes.WARNING) - } else { - retryCommandsPhysics() + function sendToWebSocketServer(command) { + nonce++ + let stringNonce = nonce.toString() + let timestamp = (new Date()).valueOf() + commandsWaitingConfirmation.set(stringNonce, command) + commandsSentByTimestamp.set(stringNonce, timestamp) + + let messageToWebSocketServer = 'Web Browser' + '|*|' + stringNonce + '|*|' + JSON.stringify(command) + + if (WEB_SOCKETS_CONNECTION.readyState === 1) { + WEB_SOCKETS_CONNECTION.send(messageToWebSocketServer) + } else { + //console.log('WebSocket message could not be sent because the connection was not ready. Will retry soon. Message = ' + JSON.stringify(command)) + } } - DEBUG.variable4 = 'Commands Waiting For Confirmation from WS Server: ' + commandsWaitingConfirmation.size - } - - function setuptWebSockets (callBackFunction) { - try { - WEB_SOCKETS_CONNECTION = new WebSocket(WEB_SOCKETS_URL) - WEB_SOCKETS_CONNECTION.onerror = error => { - console.log('WebSocket error:' + JSON.stringify(error)) - } - WEB_SOCKETS_CONNECTION.onopen = () => { - if (callBackFunction !== undefined) { - callBackFunction() + function createEventHandler(eventHandlerName, callerId, responseCallBack) { + let eventCommand = { + action: 'createEventHandler', + eventHandlerName: eventHandlerName, + callerId: callerId + } + sendCommand(eventCommand, responseCallBack) + } + + function deleteEventHandler(eventHandlerName, callerId, responseCallBack) { + let eventCommand = { + action: 'deleteEventHandler', + eventHandlerName: eventHandlerName, + callerId: callerId + } + sendCommand(eventCommand, responseCallBack) + } + + function listenToEvent(eventHandlerName, eventType, extraData, callerId, responseCallBack, eventsCallBack) { + let eventCommand = { + action: 'listenToEvent', + eventHandlerName: eventHandlerName, + eventType: eventType, + extraData: extraData, + callerId: callerId + } + sendCommand(eventCommand, responseCallBack, eventsCallBack) + } + + function stopListening(eventHandlerName, eventSubscriptionId, callerId, responseCallBack) { + let eventCommand = { + action: 'stopListening', + eventHandlerName: eventHandlerName, + eventSubscriptionId: eventSubscriptionId, + callerId: callerId + } + sendCommand(eventCommand, responseCallBack) + } + + function raiseEvent(eventHandlerName, eventType, event, callerId, responseCallBack) { + let eventCommand = { + action: 'raiseEvent', + eventHandlerName: eventHandlerName, + eventType: eventType, + event: event, + callerId: callerId + } + sendCommand(eventCommand, responseCallBack) + } + + function retryCommandsPhysics() { + commandsSentByTimestamp.forEach(checkTimestamp) + + function checkTimestamp(timestamp, nonce) { + const MILISECONDS_TO_WAIT_FOR_RETRYING_A_COMMAND = 10000 + let now = (new Date()).valueOf() + + if ((now - timestamp) > MILISECONDS_TO_WAIT_FOR_RETRYING_A_COMMAND) { + let command = commandsWaitingConfirmation.get(nonce) + commandsWaitingConfirmation.delete(nonce) + commandsSentByTimestamp.delete(nonce) + + sendToWebSocketServer(command) + } + } + } + + function physics() { + if (WEB_SOCKETS_CONNECTION !== undefined) { + if (WEB_SOCKETS_CONNECTION.readyState === 3) { + /* + Connection closed. May happen after computer goes to sleep. + We will try to reconnect, but we will do it no more that once + a minute. + */ + if (lastTryToReconnectDatetime === undefined) { + setuptWebSockets(onOpen) + lastTryToReconnectDatetime = (new Date()).valueOf() + } else { + let now = (new Date()).valueOf() + if (now - lastTryToReconnectDatetime > 60000) { + setuptWebSockets(onOpen) + } + } + + function onOpen() { + if (INFO_LOG === true) { logger.write('[INFO] setuptWebSockets -> Found Web Sockets Connection Closed. Reconnected to WebSockets Server.') } + } + } + } else { + /* + If there is a problem with the configuration then we go through + this path, retrying this until the configuration is fixed. + */ + setuptWebSockets(onOpen) + } + + if (thisObject.isConnected() !== true ) { + if ( lastTryToReconnectDatetime !== undefined) { + if (networkNode !== undefined) { + if (networkNode.payload !== undefined) { + if (networkNode.payload.uiObject !== undefined) { + networkNode.payload.uiObject.setErrorMessage('Failed to Connect to Superalgos Backend via WebSockets. Retrying in 1 minute.') + } + } + } + } + } else { + if (networkNode !== undefined) { + if (networkNode.payload !== undefined) { + if (networkNode.payload.uiObject !== undefined) { + networkNode.payload.uiObject.setStatus('Connected to Superalgos Backend via WebSockets.') + retryCommandsPhysics() + } + } + } + } + + DEBUG.variable4 = 'Commands Waiting For Confirmation from WS Server: ' + commandsWaitingConfirmation.size + } + + function setuptWebSockets(callBackFunction) { + try { + let host + let port + /* At this point the node does not have the payload property yet, that is why we have to do this manually */ + try { + let config = JSON.parse(networkNode.config) + host = config.host + port = config.webSocketsPort + + /* Check if we really have to stablish the connection. */ + if (config.autoConnect === false) {return} + } catch (err) { + networkNode.payload.uiObject.setErrorMessage('Bad configuration. Cannot know the host name or the webSocketsPort.') + return + } + + if (host === undefined) { + networkNode.payload.uiObject.setErrorMessage('Bad configuration. You need to have a host property.') + return + } + + if (port === undefined) { + networkNode.payload.uiObject.setErrorMessage('Bad configuration. You need to have a webSocketsPort property.') + return + } + + const WEB_SOCKETS_URL = 'ws://' + host + ':' + port + '' + + WEB_SOCKETS_CONNECTION = new WebSocket(WEB_SOCKETS_URL) + WEB_SOCKETS_CONNECTION.onerror = error => { + console.log('WebSocket error:' + JSON.stringify(error)) + } + WEB_SOCKETS_CONNECTION.onopen = () => { + if (callBackFunction !== undefined) { + callBackFunction() + } + } + WEB_SOCKETS_CONNECTION.onmessage = e => { + // console.log('Websoked Message Received: ' + e.data) + + let message = JSON.parse(e.data) + + if (message.action === 'Event Raised') { + let key + if (message.callerId !== undefined) { + key = message.eventHandlerName + '-' + message.eventType + '-' + message.callerId + } else { + key = message.eventHandlerName + '-' + message.eventType + } + let handler = eventListeners.get(key) + if (handler) { + handler(message) + } + return + } + + if (message.action === 'Event Server Response') { + let handler = responseWaiters.get(message.callerId) + if (handler) { + handler(message) + } + return + } + + if (message.action === 'Acknowledge') { + commandsWaitingConfirmation.delete(message.nonce) + commandsSentByTimestamp.delete(message.nonce) + return + } + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] setuptWebSockets -> err = ' + err.stack) } } - } - WEB_SOCKETS_CONNECTION.onmessage = e => { - // console.log('Websoked Message Received: ' + e.data) - - let message = JSON.parse(e.data) - - if (message.action === 'Event Raised') { - let key - if (message.callerId !== undefined) { - key = message.eventHandlerName + '-' + message.eventType + '-' + message.callerId - } else { - key = message.eventHandlerName + '-' + message.eventType - } - let handler = eventListeners.get(key) - if (handler) { - handler(message) - } - return - } - - if (message.action === 'Event Server Response') { - let handler = responseWaiters.get(message.callerId) - if (handler) { - handler(message) - } - return - } - - if (message.action === 'Acknowledge') { - commandsWaitingConfirmation.delete(message.nonce) - commandsSentByTimestamp.delete(message.nonce) - return - } - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] setuptWebSockets -> err = ' + err.stack) } } - } } diff --git a/CanvasApp/FloatingSpace/BusyProgressBar.js b/CanvasApp/FloatingSpace/BusyProgressBar.js index a3c846b38..4b325000a 100644 --- a/CanvasApp/FloatingSpace/BusyProgressBar.js +++ b/CanvasApp/FloatingSpace/BusyProgressBar.js @@ -1,72 +1,72 @@ -function newBusyProgressBar () { - const MODULE_NAME = 'Circular Progress Bar' +function newBusyProgressBar() { + const MODULE_NAME = 'Circular Progress Bar' - let thisObject = { - container: undefined, - isDeployed: undefined, - visible: undefined, - physics: physics, - draw: draw, - finalize: finalize, - initialize: initialize - } - - let position - let addRadius - - let eventSubscriptionHeartbeat - - return thisObject - - function finalize () { - thisObject.payload = undefined - thisObject.fitFunction = undefined - } - - function initialize (pPosition) { - position = pPosition - - addRadius = 0 - } - - function physics () { - addRadius = addRadius + 20 - } - - function draw () { - if (thisObject.visible !== true) { return } - - let visiblePosition = { - x: position.x, - y: position.y + let thisObject = { + container: undefined, + isDeployed: undefined, + visible: undefined, + physics: physics, + draw: draw, + finalize: finalize, + initialize: initialize } - visiblePosition = thisObject.fitFunction(visiblePosition) + let position + let addRadius - const RADIUS = 10 + addRadius - let OPACITY = 1 + let eventSubscriptionHeartbeat - let initialAngle = 0 - let finalAngle = Math.PI * 2 + return thisObject - browserCanvasContext.beginPath() + function finalize() { + thisObject.payload = undefined + thisObject.fitFunction = undefined + } - browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, RADIUS, initialAngle, finalAngle, false) - browserCanvasContext.closePath() + function initialize(pPosition) { + position = pPosition - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.PATINATED_TURQUOISE + ', 1)' + addRadius = 0 + } - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GOLDEN_ORANGE + ', ' + OPACITY * 2 + ')' - browserCanvasContext.lineWidth = 15 - browserCanvasContext.setLineDash([3, 4]) + function physics() { + addRadius = addRadius + 20 + } - browserCanvasContext.stroke() + function draw() { + if (thisObject.visible !== true) { return } - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.DARK_TURQUOISE + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = 10 - browserCanvasContext.setLineDash([3, 4]) - browserCanvasContext.stroke() - } + let visiblePosition = { + x: position.x, + y: position.y + } + + visiblePosition = thisObject.fitFunction(visiblePosition) + + const RADIUS = 10 + addRadius + let OPACITY = 1 + + let initialAngle = 0 + let finalAngle = Math.PI * 2 + + browserCanvasContext.beginPath() + + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, RADIUS, initialAngle, finalAngle, false) + browserCanvasContext.closePath() + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.PATINATED_TURQUOISE + ', 1)' + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GOLDEN_ORANGE + ', ' + OPACITY * 2 + ')' + browserCanvasContext.lineWidth = 15 + browserCanvasContext.setLineDash([3, 4]) + + browserCanvasContext.stroke() + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.DARK_TURQUOISE + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = 10 + browserCanvasContext.setLineDash([3, 4]) + browserCanvasContext.stroke() + } } diff --git a/CanvasApp/FloatingSpace/CircularMenu.js b/CanvasApp/FloatingSpace/CircularMenu.js index 0ac7ccad9..efc2dda46 100644 --- a/CanvasApp/FloatingSpace/CircularMenu.js +++ b/CanvasApp/FloatingSpace/CircularMenu.js @@ -1,224 +1,224 @@ -function newCircularMenu () { - const MODULE_NAME = 'Circular Menu' +function newCircularMenu() { + const MODULE_NAME = 'Circular Menu' - let thisObject = { - container: undefined, - isDeployed: undefined, - internalClick: internalClick, - physics: physics, - invisiblePhysics: invisiblePhysics, - drawBackground: drawBackground, - drawForeground: drawForeground, - getContainer: getContainer, - finalize: finalize, - initialize: initialize - } - - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME, 'Circle') - thisObject.container.isClickeable = false - thisObject.container.isDraggeable = false - thisObject.container.frame.radius = 0 - thisObject.container.frame.position.x = 0 - thisObject.container.frame.position.y = 0 - - let menuItems = [] - - let selfFocusEventSubscriptionId - let selfNotFocuskEventSubscriptionId - - return thisObject - - function finalize () { - thisObject.container.eventHandler.stopListening(selfFocusEventSubscriptionId) - thisObject.container.eventHandler.stopListening(selfNotFocuskEventSubscriptionId) - - thisObject.container.finalize() - thisObject.container = undefined - - for (let i = 0; i < menuItems.length; i++) { - let menuItem = menuItems[i] - menuItem.finalize() + let thisObject = { + container: undefined, + isDeployed: undefined, + internalClick: internalClick, + physics: physics, + invisiblePhysics: invisiblePhysics, + drawBackground: drawBackground, + drawForeground: drawForeground, + getContainer: getContainer, + finalize: finalize, + initialize: initialize } - menuItems = undefined - } + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME, 'Circle') + thisObject.container.isClickeable = false + thisObject.container.isDraggeable = false + thisObject.container.frame.radius = 0 + thisObject.container.frame.position.x = 0 + thisObject.container.frame.position.y = 0 - function initialize (menuItemsInitialValues, payload) { -/* Create the array of Menu Items */ + let menuItems = [] - let iconAndTextArray = [] - let iconOnlyArray - let ringsArray = [[], [], [], []] + let selfFocusEventSubscriptionId + let selfNotFocuskEventSubscriptionId - for (let i = 0; i < menuItemsInitialValues.length; i++) { - let menuItem = newCircularMenuItem() - let menuItemInitialValue = menuItemsInitialValues[i] + return thisObject - menuItem.action = menuItemInitialValue.action - menuItem.actionFunction = menuItemInitialValue.actionFunction - menuItem.actionStatus = menuItemInitialValue.actionStatus - menuItem.label = menuItemInitialValue.label - menuItem.workingLabel = menuItemInitialValue.workingLabel - menuItem.workDoneLabel = menuItemInitialValue.workDoneLabel - menuItem.workFailedLabel = menuItemInitialValue.workFailedLabel - menuItem.secondaryAction = menuItemInitialValue.secondaryAction - menuItem.secondaryLabel = menuItemInitialValue.secondaryLabel - menuItem.secondaryWorkingLabel = menuItemInitialValue.secondaryWorkingLabel - menuItem.secondaryWorkDoneLabel = menuItemInitialValue.secondaryWorkDoneLabel - menuItem.secondaryWorkFailedLabel = menuItemInitialValue.secondaryWorkFailedLabel - menuItem.secondaryIcon = menuItemInitialValue.secondaryIcon - menuItem.visible = menuItemInitialValue.visible - menuItem.iconPathOn = menuItemInitialValue.iconPathOn - menuItem.iconPathOff = menuItemInitialValue.iconPathOff - menuItem.rawRadius = menuItemInitialValue.rawRadius - menuItem.targetRadius = menuItemInitialValue.label - menuItem.currentRadius = menuItemInitialValue.currentRadius - menuItem.angle = menuItemInitialValue.angle - menuItem.currentStatus = menuItemInitialValue.currentStatus - menuItem.relatedUiObject = menuItemInitialValue.relatedUiObject - menuItem.dontShowAtFullscreen = menuItemInitialValue.dontShowAtFullscreen - menuItem.askConfirmation = menuItemInitialValue.askConfirmation - menuItem.confirmationLabel = menuItemInitialValue.confirmationLabel - menuItem.disableIfPropertyIsDefined = menuItemInitialValue.disableIfPropertyIsDefined - menuItem.propertyToCheckFor = menuItemInitialValue.propertyToCheckFor - menuItem.ring = menuItemInitialValue.ring - menuItem.icons = menuItemInitialValue.icons + function finalize() { + thisObject.container.eventHandler.stopListening(selfFocusEventSubscriptionId) + thisObject.container.eventHandler.stopListening(selfNotFocuskEventSubscriptionId) - if (menuItem.label === undefined) { - menuItem.type = 'Icon Only' + thisObject.container.finalize() + thisObject.container = undefined - if (menuItem.ring === undefined) { - menutItem.ring = 1 + for (let i = 0; i < menuItems.length; i++) { + let menuItem = menuItems[i] + menuItem.finalize() } - iconOnlyArray = ringsArray[menuItem.ring - 1] - iconOnlyArray.push(menuItem) - } else { - menuItem.type = 'Icon & Text' - iconAndTextArray.push(menuItem) - } - menuItem.initialize(payload) - menuItem.container.connectToParent(thisObject.container, false, false, true, true, false, false, true, true) - menuItems.push(menuItem) + menuItems = undefined } - /* There are 4 possible rings of icons, we will go through each of them here. */ - let amplitudeArray = [80, 50, 40, 80] - let initialAngleArray = [220, 205, 200, 180] - for (let j = 1; j < ringsArray.length + 1; j++) { - let iconOnlyArray = ringsArray[j - 1] - /* Here we calculate the angles for each menu item, and then apply it if it was not previously defined. */ - let amplitude = amplitudeArray[j - 1] - let initialAngle = initialAngleArray[j - 1] - let step = amplitude / (iconOnlyArray.length - 1) - if (iconOnlyArray.length === 1) { - step = 0 - } + function initialize(menuItemsInitialValues, payload) { + /* Create the array of Menu Items */ - for (let i = 0; i < iconOnlyArray.length; i++) { - let menuItem = iconOnlyArray[i] - let angle = initialAngle - step * i - if (menuItem.angle === undefined) { - menuItem.angle = angle + let iconAndTextArray = [] + let iconOnlyArray + let ringsArray = [[], [], [], []] + + for (let i = 0; i < menuItemsInitialValues.length; i++) { + let menuItem = newCircularMenuItem() + let menuItemInitialValue = menuItemsInitialValues[i] + + menuItem.action = menuItemInitialValue.action + menuItem.actionFunction = menuItemInitialValue.actionFunction + menuItem.actionStatus = menuItemInitialValue.actionStatus + menuItem.label = menuItemInitialValue.label + menuItem.workingLabel = menuItemInitialValue.workingLabel + menuItem.workDoneLabel = menuItemInitialValue.workDoneLabel + menuItem.workFailedLabel = menuItemInitialValue.workFailedLabel + menuItem.secondaryAction = menuItemInitialValue.secondaryAction + menuItem.secondaryLabel = menuItemInitialValue.secondaryLabel + menuItem.secondaryWorkingLabel = menuItemInitialValue.secondaryWorkingLabel + menuItem.secondaryWorkDoneLabel = menuItemInitialValue.secondaryWorkDoneLabel + menuItem.secondaryWorkFailedLabel = menuItemInitialValue.secondaryWorkFailedLabel + menuItem.secondaryIcon = menuItemInitialValue.secondaryIcon + menuItem.visible = menuItemInitialValue.visible + menuItem.iconPathOn = menuItemInitialValue.iconPathOn + menuItem.iconPathOff = menuItemInitialValue.iconPathOff + menuItem.rawRadius = menuItemInitialValue.rawRadius + menuItem.targetRadius = menuItemInitialValue.label + menuItem.currentRadius = menuItemInitialValue.currentRadius + menuItem.angle = menuItemInitialValue.angle + menuItem.currentStatus = menuItemInitialValue.currentStatus + menuItem.relatedUiObject = menuItemInitialValue.relatedUiObject + menuItem.dontShowAtFullscreen = menuItemInitialValue.dontShowAtFullscreen + menuItem.askConfirmation = menuItemInitialValue.askConfirmation + menuItem.confirmationLabel = menuItemInitialValue.confirmationLabel + menuItem.disableIfPropertyIsDefined = menuItemInitialValue.disableIfPropertyIsDefined + menuItem.propertyToCheckFor = menuItemInitialValue.propertyToCheckFor + menuItem.ring = menuItemInitialValue.ring + menuItem.icons = menuItemInitialValue.icons + + if (menuItem.label === undefined) { + menuItem.type = 'Icon Only' + + if (menuItem.ring === undefined) { + menutItem.ring = 1 + } + iconOnlyArray = ringsArray[menuItem.ring - 1] + iconOnlyArray.push(menuItem) + } else { + menuItem.type = 'Icon & Text' + iconAndTextArray.push(menuItem) + } + + menuItem.initialize(payload) + menuItem.container.connectToParent(thisObject.container, false, false, true, true, false, false, true, true) + menuItems.push(menuItem) } - } - } - /* Text and Icon */ - let amplitude = 140 - let initialAngle = -70 - step = amplitude / 7 - let currentItem = (7 - iconAndTextArray.length) / 2 + 1 - for (let i = 0; i < iconAndTextArray.length; i++) { - let menuItem = iconAndTextArray[i] - let angle = initialAngle + step * (currentItem - 0.5) - currentItem++ - if (menuItem.angle === undefined) { - menuItem.angle = angle - } - } - iconOnlyArray = undefined - iconAndTextArray = undefined + /* There are 4 possible rings of icons, we will go through each of them here. */ + let amplitudeArray = [80, 50, 40, 80] + let initialAngleArray = [220, 205, 200, 180] + for (let j = 1; j < ringsArray.length + 1; j++) { + let iconOnlyArray = ringsArray[j - 1] + /* Here we calculate the angles for each menu item, and then apply it if it was not previously defined. */ + let amplitude = amplitudeArray[j - 1] + let initialAngle = initialAngleArray[j - 1] + let step = amplitude / (iconOnlyArray.length - 1) + if (iconOnlyArray.length === 1) { + step = 0 + } - /* Listen to events */ - selfFocusEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onFocus', onFocus) - selfNotFocuskEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onNotFocus', onNotFocus) - } - - function getContainer (point) { - let container - - if (thisObject.isDeployed === true) { - for (let i = 0; i < menuItems.length; i++) { - let menuItem = menuItems[i] - if (menuItem.visible === true) { - container = menuItem.getContainer(point) + for (let i = 0; i < iconOnlyArray.length; i++) { + let menuItem = iconOnlyArray[i] + let angle = initialAngle - step * i + if (menuItem.angle === undefined) { + menuItem.angle = angle + } + } } - if (container !== undefined) { return container } - } - } - } - - function internalClick (action) { - for (let i = 0; i < menuItems.length; i++) { - let menuItem = menuItems[i] - if (menuItem.visible === true) { - if (menuItem.nextAction === action) { - menuItem.internalClick() + /* Text and Icon */ + let amplitude = 140 + let initialAngle = -70 + step = amplitude / 7 + let currentItem = (7 - iconAndTextArray.length) / 2 + 1 + for (let i = 0; i < iconAndTextArray.length; i++) { + let menuItem = iconAndTextArray[i] + let angle = initialAngle + step * (currentItem - 0.5) + currentItem++ + if (menuItem.angle === undefined) { + menuItem.angle = angle + } } - } - } - } - function invisiblePhysics () { - for (let i = 0; i < menuItems.length; i++) { - let menuItem = menuItems[i] - menuItem.invisiblePhysics() - } - } + iconOnlyArray = undefined + iconAndTextArray = undefined - function physics () { - for (let i = 0; i < menuItems.length; i++) { - let menuItem = menuItems[i] - menuItem.physics() + /* Listen to events */ + selfFocusEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onFocus', onFocus) + selfNotFocuskEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onNotFocus', onNotFocus) } - } - function onFocus () { - for (let i = 0; i < menuItems.length; i++) { - let menuItem = menuItems[i] - menuItem.targetRadius = menuItem.rawRadius * 1.5 - menuItem.isDeployed = true - } - thisObject.isDeployed = true - } + function getContainer(point) { + let container - function onNotFocus () { - for (let i = 0; i < menuItems.length; i++) { - let menuItem = menuItems[i] - menuItem.targetRadius = menuItem.rawRadius * 0 - i * 1.5 - menuItem.isDeployed = false + if (thisObject.isDeployed === true) { + for (let i = 0; i < menuItems.length; i++) { + let menuItem = menuItems[i] + if (menuItem.visible === true) { + container = menuItem.getContainer(point) + } + if (container !== undefined) { return container } + } + } } - thisObject.isDeployed = false - } - function drawBackground (pFloatingObject) { - for (let i = 0; i < menuItems.length; i++) { - let menuItem = menuItems[i] - if (menuItem.visible === true) { - menuItem.drawBackground() - } + function internalClick(action) { + for (let i = 0; i < menuItems.length; i++) { + let menuItem = menuItems[i] + if (menuItem.visible === true) { + if (menuItem.nextAction === action) { + menuItem.internalClick() + } + } + } } - } - function drawForeground (pFloatingObject) { - for (let i = 0; i < menuItems.length; i++) { - let menuItem = menuItems[i] - if (menuItem.visible === true) { - menuItem.drawForeground() - } + function invisiblePhysics() { + for (let i = 0; i < menuItems.length; i++) { + let menuItem = menuItems[i] + menuItem.invisiblePhysics() + } + } + + function physics() { + for (let i = 0; i < menuItems.length; i++) { + let menuItem = menuItems[i] + menuItem.physics() + } + } + + function onFocus() { + for (let i = 0; i < menuItems.length; i++) { + let menuItem = menuItems[i] + menuItem.targetRadius = menuItem.rawRadius * 1.5 + menuItem.isDeployed = true + } + thisObject.isDeployed = true + } + + function onNotFocus() { + for (let i = 0; i < menuItems.length; i++) { + let menuItem = menuItems[i] + menuItem.targetRadius = menuItem.rawRadius * 0 - i * 1.5 + menuItem.isDeployed = false + } + thisObject.isDeployed = false + } + + function drawBackground(pFloatingObject) { + for (let i = 0; i < menuItems.length; i++) { + let menuItem = menuItems[i] + if (menuItem.visible === true) { + menuItem.drawBackground() + } + } + } + + function drawForeground(pFloatingObject) { + for (let i = 0; i < menuItems.length; i++) { + let menuItem = menuItems[i] + if (menuItem.visible === true) { + menuItem.drawForeground() + } + } } - } } diff --git a/CanvasApp/FloatingSpace/CircularMenuItem.js b/CanvasApp/FloatingSpace/CircularMenuItem.js index e344d69fc..0a632691f 100644 --- a/CanvasApp/FloatingSpace/CircularMenuItem.js +++ b/CanvasApp/FloatingSpace/CircularMenuItem.js @@ -1,469 +1,475 @@ -function newCircularMenuItem () { - const MODULE_NAME = 'Circular Menu Iem' +function newCircularMenuItem() { + const MODULE_NAME = 'Circular Menu Iem' - let thisObject = { - type: undefined, - isDeployed: undefined, - askConfirmation: undefined, - confirmationLabel: undefined, - iconOn: undefined, - iconOff: undefined, - icons: undefined, - currentIcon: undefined, - disableIfPropertyIsDefined: undefined, - propertyToCheckFor: undefined, - action: undefined, - actionFunction: undefined, - actionStatus: undefined, - label: undefined, - workingLabel: undefined, - workDoneLabel: undefined, - workFailedLabel: undefined, - secondaryAction: undefined, - secondaryLabel: undefined, - secondaryWorkingLabel: undefined, - secondaryWorkDoneLabel: undefined, - secondaryWorkFailedLabel: undefined, - secondaryIcon: undefined, - nextAction: undefined, - visible: false, - iconPathOn: undefined, - iconPathOff: undefined, - rawRadius: undefined, - targetRadius: undefined, - currentRadius: undefined, - angle: undefined, - container: undefined, - payload: undefined, - relatedUiObject: undefined, - dontShowAtFullscreen: undefined, - isEnabled: true, - shorcutNumber: undefined, - internalClick: internalClick, - physics: physics, - invisiblePhysics: invisiblePhysics, - drawBackground: drawBackground, - drawForeground: drawForeground, - getContainer: getContainer, - finalize: finalize, - initialize: initialize - } - - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) - thisObject.container.isClickeable = true - thisObject.container.isDraggeable = false - thisObject.container.detectMouseOver = true - thisObject.container.frame.radius = 0 - thisObject.container.frame.position.x = 0 - thisObject.container.frame.position.y = 0 - thisObject.container.frame.width = 0 - thisObject.container.frame.height = 40 - - let isMouseOver = false - - let selfMouseOverEventSubscriptionId - let selfMouseClickEventSubscriptionId - let selfMouseNotOverEventSubscriptionId - - let labelToPrint = '' - let defaultBackgroudColor = UI_COLOR.RED - let backgroundColorToUse = UI_COLOR.RED - let temporaryStatus = 0 - let temporaryStatusCounter = 0 - - const EXTRA_MOUSE_OVER_ICON_SIZE = 6 - - const STATUS_NO_ACTION_TAKEN_YET = 0 - const STATUS_PRIMARY_ACTION_WORKING = -1 - const STATUS_SECONDARY_ACTION_WORKING = -2 - const STATUS_PRIMARY_WORK_DONE = -3 - const STATUS_PRIMARY_WORK_FAILED = -4 - const STATUS_WAITING_CONFIRMATION = -5 - const STATUS_SECONDARY_WORK_DONE = -6 - const STATUS_SECONDARY_WORK_FAILED = -7 - - return thisObject - - function finalize () { - thisObject.container.eventHandler.stopListening(selfMouseOverEventSubscriptionId) - thisObject.container.eventHandler.stopListening(selfMouseClickEventSubscriptionId) - thisObject.container.eventHandler.stopListening(selfMouseNotOverEventSubscriptionId) - - thisObject.container.finalize() - thisObject.container = undefined - thisObject.iconOn = undefined - thisObject.iconOff = undefined - thisObject.icons = undefined - thisObject.currentIcon = undefined - thisObject.payload = undefined - thisObject.actionFunction = undefined - thisObject.actionStatus = undefined - thisObject.disableIfPropertyIsDefined = undefined - thisObject.propertyToCheckFor = undefined - } - - function initialize (pPayload) { - thisObject.payload = pPayload - - iconPhysics() - - selfMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) - selfMouseClickEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) - selfMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) - - if (thisObject.type === 'Icon & Text') { - thisObject.container.frame.width = 220 - } else { - thisObject.container.frame.width = 50 + let thisObject = { + type: undefined, + isDeployed: undefined, + askConfirmation: undefined, + confirmationLabel: undefined, + iconOn: undefined, + iconOff: undefined, + icons: undefined, + currentIcon: undefined, + disableIfPropertyIsDefined: undefined, + propertyToCheckFor: undefined, + action: undefined, + actionFunction: undefined, + actionStatus: undefined, + label: undefined, + workingLabel: undefined, + workDoneLabel: undefined, + workFailedLabel: undefined, + secondaryAction: undefined, + secondaryLabel: undefined, + secondaryWorkingLabel: undefined, + secondaryWorkDoneLabel: undefined, + secondaryWorkFailedLabel: undefined, + secondaryIcon: undefined, + nextAction: undefined, + visible: false, + iconPathOn: undefined, + iconPathOff: undefined, + rawRadius: undefined, + targetRadius: undefined, + currentRadius: undefined, + angle: undefined, + container: undefined, + payload: undefined, + relatedUiObject: undefined, + dontShowAtFullscreen: undefined, + isEnabled: true, + shorcutNumber: undefined, + internalClick: internalClick, + physics: physics, + invisiblePhysics: invisiblePhysics, + drawBackground: drawBackground, + drawForeground: drawForeground, + getContainer: getContainer, + finalize: finalize, + initialize: initialize } - thisObject.nextAction = thisObject.action - } + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) + thisObject.container.isClickeable = true + thisObject.container.isDraggeable = false + thisObject.container.detectMouseOver = true + thisObject.container.frame.radius = 0 + thisObject.container.frame.position.x = 0 + thisObject.container.frame.position.y = 0 + thisObject.container.frame.width = 0 + thisObject.container.frame.height = 40 - function getContainer (point) { - if (thisObject.dontShowAtFullscreen === true && AT_FULL_SCREEN_MODE === true) { return } + let isMouseOver = false - let container - if (thisObject.isDeployed === true) { - if (thisObject.container.frame.isThisPointHere(point, true, false) === true) { - return thisObject.container - } else { - return undefined - } - } - } + let selfMouseOverEventSubscriptionId + let selfMouseClickEventSubscriptionId + let selfMouseNotOverEventSubscriptionId - function invisiblePhysics () { - temporaryStatusPhysics() - } + let labelToPrint = '' + let defaultBackgroudColor = UI_COLOR.BLACK + let backgroundColorToUse = UI_COLOR.RED + let temporaryStatus = 0 + let temporaryStatusCounter = 0 - function temporaryStatusPhysics () { - /* Temporary Status impacts on the label to use and the background of that label */ - if (temporaryStatusCounter > 0) { - temporaryStatusCounter-- + const EXTRA_MOUSE_OVER_ICON_SIZE = 6 + + const STATUS_NO_ACTION_TAKEN_YET = 0 + const STATUS_PRIMARY_ACTION_WORKING = -1 + const STATUS_SECONDARY_ACTION_WORKING = -2 + const STATUS_PRIMARY_WORK_DONE = -3 + const STATUS_PRIMARY_WORK_FAILED = -4 + const STATUS_WAITING_CONFIRMATION = -5 + const STATUS_SECONDARY_WORK_DONE = -6 + const STATUS_SECONDARY_WORK_FAILED = -7 + + return thisObject + + function finalize() { + thisObject.container.eventHandler.stopListening(selfMouseOverEventSubscriptionId) + thisObject.container.eventHandler.stopListening(selfMouseClickEventSubscriptionId) + thisObject.container.eventHandler.stopListening(selfMouseNotOverEventSubscriptionId) + + thisObject.container.finalize() + thisObject.container = undefined + thisObject.iconOn = undefined + thisObject.iconOff = undefined + thisObject.icons = undefined + thisObject.currentIcon = undefined + thisObject.payload = undefined + thisObject.actionFunction = undefined + thisObject.actionStatus = undefined + thisObject.disableIfPropertyIsDefined = undefined + thisObject.propertyToCheckFor = undefined } - if (temporaryStatusCounter === 0) { - temporaryStatus = STATUS_NO_ACTION_TAKEN_YET - labelToPrint = thisObject.label - backgroundColorToUse = defaultBackgroudColor - thisObject.nextAction = thisObject.action - } - } + function initialize(pPayload) { + thisObject.payload = pPayload - function physics () { - if (thisObject.dontShowAtFullscreen === true && AT_FULL_SCREEN_MODE === true) { return } + iconPhysics() - let INCREASE_STEP = 2 // (thisObject.targetRadius - thisObject.rawRadius) / 4 - // if (INCREASE_STEP === 0) { INCREASE_STEP = 2 } + selfMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) + selfMouseClickEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) + selfMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) - if (Math.abs(thisObject.currentRadius - thisObject.targetRadius) >= INCREASE_STEP) { - if (thisObject.currentRadius < thisObject.targetRadius) { - thisObject.currentRadius = thisObject.currentRadius + INCREASE_STEP - } else { - thisObject.currentRadius = thisObject.currentRadius - INCREASE_STEP - } - } - - let radiusGrowthFactor - if (thisObject.type === 'Icon Only') { - switch (thisObject.ring) { - case 1: { - radiusGrowthFactor = 5.5 - break - } - case 2: { - radiusGrowthFactor = 4.0 - break - } - case 3: { - radiusGrowthFactor = 3.0 - break - } - case 4: { - radiusGrowthFactor = 2.0 - break - } - } - } else { - radiusGrowthFactor = 4 - } - - thisObject.container.frame.position.x = thisObject.payload.floatingObject.targetRadius * radiusGrowthFactor / 7 * Math.cos(toRadians(thisObject.angle)) - thisObject.currentRadius * 1.5 - thisObject.container.frame.position.y = thisObject.payload.floatingObject.targetRadius * radiusGrowthFactor / 7 * Math.sin(toRadians(thisObject.angle)) - thisObject.container.frame.height / 2 - - temporaryStatusPhysics() - - /* Here we will check if we need to monitor a property that influences the status of the Menu Item. */ - if (thisObject.disableIfPropertyIsDefined === true) { - if (thisObject.payload.node[thisObject.propertyToCheckFor] === undefined) { - /* This menu item is enabled. */ - thisObject.isEnabled = true - } else { - /* This menu item is disabled. */ - thisObject.isEnabled = false - } - } - iconPhysics() - } - - function iconPhysics () { - if ( - ( - temporaryStatus === STATUS_PRIMARY_WORK_DONE || - temporaryStatus === STATUS_SECONDARY_ACTION_WORKING || - temporaryStatus === STATUS_SECONDARY_WORK_DONE || - temporaryStatus === STATUS_SECONDARY_WORK_FAILED - ) && thisObject.secondaryAction !== undefined - ) { - thisObject.iconOn = canvas.designSpace.iconCollection.get(thisObject.secondaryIcon) - thisObject.iconOff = canvas.designSpace.iconCollection.get(thisObject.secondaryIcon) - } else { - if (thisObject.relatedUiObject !== undefined) { - thisObject.iconOn = canvas.designSpace.iconByUiObjectType.get(thisObject.relatedUiObject) - thisObject.iconOff = canvas.designSpace.iconByUiObjectType.get(thisObject.relatedUiObject) - } else { - if (thisObject.iconPathOn !== undefined && thisObject.iconPathOff !== undefined) { - thisObject.iconOn = canvas.designSpace.iconCollection.get(thisObject.iconPathOn) - thisObject.iconOff = canvas.designSpace.iconCollection.get(thisObject.iconPathOff) + if (thisObject.type === 'Icon & Text') { + thisObject.container.frame.width = 220 } else { - thisObject.iconOn = canvas.designSpace.iconCollection.get(thisObject.icons[thisObject.actionStatus()]) - thisObject.iconOff = canvas.designSpace.iconCollection.get(thisObject.icons[thisObject.actionStatus()]) + thisObject.container.frame.width = 50 } - } + + thisObject.nextAction = thisObject.action } - /* Current Status might be linked to some other object status */ + function getContainer(point) { + if (thisObject.dontShowAtFullscreen === true && AT_FULL_SCREEN_MODE === true) { return } - if (thisObject.actionStatus !== undefined) { - thisObject.currentStatus = thisObject.actionStatus() + let container + if (thisObject.isDeployed === true) { + if (thisObject.container.frame.isThisPointHere(point, true, false) === true) { + return thisObject.container + } else { + return undefined + } + } } - /* Current Status sets the icon to be used */ - - if (thisObject.currentStatus === true) { - thisObject.icon = thisObject.iconOn - } else { - thisObject.icon = thisObject.iconOff - } - } - - function onMouseOver (point) { - if (thisObject.container.frame.isThisPointHere(point, true, false) === true) { - isMouseOver = true - } else { - isMouseOver = false - } - MENU_ITEM_ON_FOCUS = thisObject - } - - function onMouseNotOver (point) { - isMouseOver = false - MENU_ITEM_ON_FOCUS = undefined - } - - function internalClick () { - if (thisObject.shorcutNumber !== undefined) { - let label = thisObject.payload.node.name + ' ' + labelToPrint - canvas.cockpitSpace.setStatus(label, 50, canvas.cockpitSpace.statusTypes.ALL_GOOD) + function invisiblePhysics() { + temporaryStatusPhysics() } - onMouseClick() - } + function temporaryStatusPhysics() { + /* Temporary Status impacts on the label to use and the background of that label */ + if (temporaryStatusCounter > 0) { + temporaryStatusCounter-- + } - function onMouseClick () { - if (thisObject.isEnabled === false) { return } - - if (thisObject.label === undefined) { - /* This is what we have in the case of menu items that are only Icons. In this situation there is no complex logic, just execute the specified action. */ - thisObject.actionFunction(thisObject.payload, thisObject.action, thisObject.relatedUiObject) - return + if (temporaryStatusCounter === 0) { + temporaryStatus = STATUS_NO_ACTION_TAKEN_YET + labelToPrint = thisObject.label + backgroundColorToUse = defaultBackgroudColor + thisObject.nextAction = thisObject.action + } } - if (thisObject.askConfirmation !== true) { /* No confirmation is needed */ - if (temporaryStatus === STATUS_NO_ACTION_TAKEN_YET || temporaryStatus === STATUS_PRIMARY_WORK_DONE) { - executeAction() - } // Any click out of those states is ignored - } else { - /* Confirmation is needed */ + function physics() { + if (thisObject.dontShowAtFullscreen === true && AT_FULL_SCREEN_MODE === true) { return } - /* The first click ask for confirmation. */ - if (temporaryStatus === STATUS_NO_ACTION_TAKEN_YET) { - setStatus(thisObject.confirmationLabel, UI_COLOR.GOLDEN_ORANGE, 250, STATUS_WAITING_CONFIRMATION) - return - } - /* A Click during confirmation executes the pre-defined action. */ - if (temporaryStatus === STATUS_WAITING_CONFIRMATION || temporaryStatus === STATUS_PRIMARY_WORK_DONE) { - executeAction() - if (thisObject.workDoneLabel !== undefined) { - setStatus(thisObject.workDoneLabel, UI_COLOR.PATINATED_TURQUOISE, 100, STATUS_SECONDARY_WORK_DONE) + let INCREASE_STEP = 2 + + if (Math.abs(thisObject.currentRadius - thisObject.targetRadius) >= INCREASE_STEP) { + if (thisObject.currentRadius < thisObject.targetRadius) { + thisObject.currentRadius = thisObject.currentRadius + INCREASE_STEP + } else { + thisObject.currentRadius = thisObject.currentRadius - INCREASE_STEP + } + } + + let radiusGrowthFactor + if (thisObject.type === 'Icon Only') { + switch (thisObject.ring) { + case 1: { + radiusGrowthFactor = 5.5 + break + } + case 2: { + radiusGrowthFactor = 4.0 + break + } + case 3: { + radiusGrowthFactor = 3.0 + break + } + case 4: { + radiusGrowthFactor = 2.0 + break + } + } } else { - setStatus('Done', UI_COLOR.PATINATED_TURQUOISE, 100, STATUS_SECONDARY_WORK_DONE) + radiusGrowthFactor = 3.2 } - return - } + + thisObject.container.frame.position.x = + thisObject.payload.floatingObject.targetRadius * + radiusGrowthFactor / 7 + * Math.cos(toRadians(thisObject.angle)) - + thisObject.currentRadius * 1.5 + + thisObject.container.frame.position.y = + thisObject.payload.floatingObject.targetRadius * + radiusGrowthFactor / 7 + * Math.sin(toRadians(thisObject.angle)) - + thisObject.container.frame.height / 2 + + temporaryStatusPhysics() + + /* Here we will check if we need to monitor a property that influences the status of the Menu Item. */ + if (thisObject.disableIfPropertyIsDefined === true) { + if (thisObject.payload.node[thisObject.propertyToCheckFor] === undefined) { + /* This menu item is enabled. */ + thisObject.isEnabled = true + } else { + /* This menu item is disabled. */ + thisObject.isEnabled = false + } + } + iconPhysics() } - function executeAction () { - if (temporaryStatus === STATUS_NO_ACTION_TAKEN_YET || temporaryStatus === STATUS_WAITING_CONFIRMATION) { - /* We need to execute the main Action */ - /* If there is a working label defined, we use it here. */ - if (thisObject.workingLabel !== undefined) { - setStatus(thisObject.workingLabel, UI_COLOR.GREY, undefined, STATUS_PRIMARY_ACTION_WORKING) // Status will not expire, will only change with a callback. Mouse Clicks will be ignored. + function iconPhysics() { + if ( + ( + temporaryStatus === STATUS_PRIMARY_WORK_DONE || + temporaryStatus === STATUS_SECONDARY_ACTION_WORKING || + temporaryStatus === STATUS_SECONDARY_WORK_DONE || + temporaryStatus === STATUS_SECONDARY_WORK_FAILED + ) && thisObject.secondaryAction !== undefined + ) { + thisObject.iconOn = canvas.designSpace.iconCollection.get(thisObject.secondaryIcon) + thisObject.iconOff = canvas.designSpace.iconCollection.get(thisObject.secondaryIcon) + } else { + if (thisObject.relatedUiObject !== undefined) { + thisObject.iconOn = canvas.designSpace.iconByUiObjectType.get(thisObject.relatedUiObject) + thisObject.iconOff = canvas.designSpace.iconByUiObjectType.get(thisObject.relatedUiObject) + } else { + if (thisObject.iconPathOn !== undefined && thisObject.iconPathOff !== undefined) { + thisObject.iconOn = canvas.designSpace.iconCollection.get(thisObject.iconPathOn) + thisObject.iconOff = canvas.designSpace.iconCollection.get(thisObject.iconPathOff) + } else { + thisObject.iconOn = canvas.designSpace.iconCollection.get(thisObject.icons[thisObject.actionStatus()]) + thisObject.iconOff = canvas.designSpace.iconCollection.get(thisObject.icons[thisObject.actionStatus()]) + } + } } - /* Execute the action and wait for callbacks to update our statuus. */ - thisObject.actionFunction(thisObject.payload, thisObject.action, thisObject.relatedUiObject, onPrimaryCallBack) - return - } - if (temporaryStatus === STATUS_PRIMARY_WORK_DONE && thisObject.secondaryAction !== undefined) { - /* We need to execute the secondary action. */ - if (thisObject.secondaryWorkingLabel !== undefined) { - setStatus(thisObject.secondaryWorkingLabel, UI_COLOR.GREY, undefined, STATUS_SECONDARY_ACTION_WORKING) // Status will not expire, will only change with a callback. Mouse Clicks will be ignored. + /* Current Status might be linked to some other object status */ + + if (thisObject.actionStatus !== undefined) { + thisObject.currentStatus = thisObject.actionStatus() } - /* Execute the action and wait for callbacks to update our statuus. */ - thisObject.actionFunction(thisObject.payload, thisObject.secondaryAction, thisObject.relatedUiObject, onSecondaryCallBack) - return - } + /* Current Status sets the icon to be used */ - function onPrimaryCallBack (err, event) { - /* While the primary action is being executed some event might have happen. Following we process the ones we can */ + if (thisObject.currentStatus === true) { + thisObject.icon = thisObject.iconOn + } else { + thisObject.icon = thisObject.iconOff + } + } - if (event !== undefined) { - if (event.type === 'Secondary Action Already Executed') { - setStatus(thisObject.secondaryWorkDoneLabel, UI_COLOR.PATINATED_TURQUOISE, 100, STATUS_SECONDARY_WORK_DONE) + function onMouseOver(point) { + if (thisObject.container.frame.isThisPointHere(point, true, false) === true) { + isMouseOver = true + } else { + isMouseOver = false + } + MENU_ITEM_ON_FOCUS = thisObject + } + + function onMouseNotOver(point) { + isMouseOver = false + MENU_ITEM_ON_FOCUS = undefined + } + + function internalClick() { + if (thisObject.shorcutNumber !== undefined) { + let label = thisObject.payload.node.name + ' ' + labelToPrint + canvas.cockpitSpace.setStatus(label, 4, canvas.cockpitSpace.statusTypes.ALL_GOOD) + } + + onMouseClick() + } + + function onMouseClick() { + if (thisObject.isEnabled === false) { return } + + if (thisObject.label === undefined) { + /* This is what we have in the case of menu items that are only Icons. In this situation there is no complex logic, just execute the specified action. */ + thisObject.actionFunction(thisObject.payload, thisObject.action, thisObject.relatedUiObject) return - } } - /* If there is a secondary action we will act different that if there is not */ - if (thisObject.secondaryAction === undefined) { // This means there are no more possible actions. - if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { - if (thisObject.workDoneLabel !== undefined) { - setStatus(thisObject.workDoneLabel, UI_COLOR.PATINATED_TURQUOISE, 100, STATUS_PRIMARY_WORK_DONE) - } - } else { - if (thisObject.workFailedLabel != undefined) { - setStatus(thisObject.workFailedLabel, UI_COLOR.TITANIUM_YELLOW, 100, STATUS_PRIMARY_WORK_FAILED) - } - } + if (thisObject.askConfirmation !== true) { /* No confirmation is needed */ + if (temporaryStatus === STATUS_NO_ACTION_TAKEN_YET || temporaryStatus === STATUS_PRIMARY_WORK_DONE) { + executeAction() + } // Any click out of those states is ignored } else { - if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { - if (thisObject.workDoneLabel !== undefined) { - thisObject.nextAction = thisObject.secondaryAction - setStatus(thisObject.secondaryLabel, defaultBackgroudColor, undefined, STATUS_PRIMARY_WORK_DONE) + /* Confirmation is needed */ + + /* The first click ask for confirmation. */ + if (temporaryStatus === STATUS_NO_ACTION_TAKEN_YET) { + setStatus(thisObject.confirmationLabel, UI_COLOR.GOLDEN_ORANGE, 100, STATUS_WAITING_CONFIRMATION) + return } - } else { - if (thisObject.workFailedLabel != undefined) { - setStatus(thisObject.workFailedLabel, UI_COLOR.TITANIUM_YELLOW, 100, STATUS_PRIMARY_WORK_FAILED) + /* A Click during confirmation executes the pre-defined action. */ + if (temporaryStatus === STATUS_WAITING_CONFIRMATION || temporaryStatus === STATUS_PRIMARY_WORK_DONE) { + executeAction() + if (thisObject.workDoneLabel !== undefined) { + setStatus(thisObject.workDoneLabel, UI_COLOR.PATINATED_TURQUOISE, 5, STATUS_SECONDARY_WORK_DONE) + } else { + setStatus('Done', UI_COLOR.PATINATED_TURQUOISE, 5, STATUS_SECONDARY_WORK_DONE) + } + return } - } - } - } - function onSecondaryCallBack (err) { - if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { - if (thisObject.secondaryWorkDoneLabel !== undefined) { - setStatus(thisObject.secondaryWorkDoneLabel, UI_COLOR.PATINATED_TURQUOISE, 100, STATUS_SECONDARY_WORK_DONE) - } - } else { - if (thisObject.secondaryWorkFailedLabel != undefined) { - setStatus(thisObject.secondaryWorkFailedLabel, UI_COLOR.TITANIUM_YELLOW, 100, STATUS_SECONDARY_WORK_FAILED) - } - } - } - } - } - - function setStatus (text, backgroundColor, waitingCycles, newStatus) { - labelToPrint = text - backgroundColorToUse = backgroundColor - temporaryStatus = newStatus - temporaryStatusCounter = newStatus // This will often put this into negatives numbers, which will disable the counting back and automatic reseting. - if (waitingCycles !== undefined) { // This will override the often negative value with a positive one that will tend to zero onto the default state. - temporaryStatusCounter = waitingCycles - } - } - - function drawBackground () { - if (thisObject.dontShowAtFullscreen === true && AT_FULL_SCREEN_MODE === true) { return } - - if (thisObject.container.frame.position.x > 0 && thisObject.isDeployed === true && thisObject.currentRadius >= thisObject.targetRadius) { - if (thisObject.type === 'Icon & Text') { - let backgroundColor = backgroundColorToUse - if (thisObject.isEnabled === false) { - backgroundColor = UI_COLOR.GREY - } - let params = { - cornerRadius: 5, - lineWidth: 0.1, - container: thisObject.container, - borderColor: UI_COLOR.DARK, - backgroundColor: backgroundColor, - castShadow: false, - xOffset: 60 } - if (isMouseOver === true) { - params.opacity = 1 - } else { - params.opacity = 0.8 + function executeAction() { + if (temporaryStatus === STATUS_NO_ACTION_TAKEN_YET || temporaryStatus === STATUS_WAITING_CONFIRMATION) { + /* We need to execute the main Action */ + /* If there is a working label defined, we use it here. */ + if (thisObject.workingLabel !== undefined) { + setStatus(thisObject.workingLabel, UI_COLOR.GREY, undefined, STATUS_PRIMARY_ACTION_WORKING) // Status will not expire, will only change with a callback. Mouse Clicks will be ignored. + } + + /* Execute the action and wait for callbacks to update our statuus. */ + thisObject.actionFunction(thisObject.payload, thisObject.action, thisObject.relatedUiObject, onPrimaryCallBack) + return + } + if (temporaryStatus === STATUS_PRIMARY_WORK_DONE && thisObject.secondaryAction !== undefined) { + /* We need to execute the secondary action. */ + if (thisObject.secondaryWorkingLabel !== undefined) { + setStatus(thisObject.secondaryWorkingLabel, UI_COLOR.GREY, undefined, STATUS_SECONDARY_ACTION_WORKING) // Status will not expire, will only change with a callback. Mouse Clicks will be ignored. + } + + /* Execute the action and wait for callbacks to update our statuus. */ + thisObject.actionFunction(thisObject.payload, thisObject.secondaryAction, thisObject.relatedUiObject, onSecondaryCallBack) + return + } + + function onPrimaryCallBack(err, event) { + /* While the primary action is being executed some event might have happen. Following we process the ones we can */ + + if (event !== undefined) { + if (event.type === 'Secondary Action Already Executed') { + setStatus(thisObject.secondaryWorkDoneLabel, UI_COLOR.PATINATED_TURQUOISE, 5, STATUS_SECONDARY_WORK_DONE) + return + } + } + + /* If there is a secondary action we will act different that if there is not */ + if (thisObject.secondaryAction === undefined) { // This means there are no more possible actions. + if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { + if (thisObject.workDoneLabel !== undefined) { + setStatus(thisObject.workDoneLabel, UI_COLOR.PATINATED_TURQUOISE, 5, STATUS_PRIMARY_WORK_DONE) + } + } else { + if (thisObject.workFailedLabel != undefined) { + setStatus(thisObject.workFailedLabel, UI_COLOR.TITANIUM_YELLOW, 5, STATUS_PRIMARY_WORK_FAILED) + } + } + } else { + if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { + if (thisObject.workDoneLabel !== undefined) { + thisObject.nextAction = thisObject.secondaryAction + setStatus(thisObject.secondaryLabel, defaultBackgroudColor, undefined, STATUS_PRIMARY_WORK_DONE) + } + } else { + if (thisObject.workFailedLabel != undefined) { + setStatus(thisObject.workFailedLabel, UI_COLOR.TITANIUM_YELLOW, 5, STATUS_PRIMARY_WORK_FAILED) + } + } + } + } + function onSecondaryCallBack(err) { + if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { + if (thisObject.secondaryWorkDoneLabel !== undefined) { + setStatus(thisObject.secondaryWorkDoneLabel, UI_COLOR.PATINATED_TURQUOISE, 5, STATUS_SECONDARY_WORK_DONE) + } + } else { + if (thisObject.secondaryWorkFailedLabel != undefined) { + setStatus(thisObject.secondaryWorkFailedLabel, UI_COLOR.TITANIUM_YELLOW, 5, STATUS_SECONDARY_WORK_FAILED) + } + } + } } - - roundedCornersBackground(params) - } - } - } - - function drawForeground () { - if (thisObject.dontShowAtFullscreen === true && AT_FULL_SCREEN_MODE === true) { return } - - let menuPosition = { - x: thisObject.currentRadius * 1.5, - y: thisObject.container.frame.height / 2 } - menuPosition = thisObject.container.frame.frameThisPoint(menuPosition) + function setStatus(text, backgroundColor, waitingCycles, newStatus) { + labelToPrint = text + backgroundColorToUse = backgroundColor + temporaryStatus = newStatus + temporaryStatusCounter = newStatus // This will often put this into negatives numbers, which will disable the counting back and automatic reseting. + if (waitingCycles !== undefined) { // This will override the often negative value with a positive one that will tend to zero onto the default state. + temporaryStatusCounter = waitingCycles + } + } + + function drawBackground() { + if (thisObject.dontShowAtFullscreen === true && AT_FULL_SCREEN_MODE === true) { return } + + if (thisObject.container.frame.position.x > 0 && thisObject.isDeployed === true && thisObject.currentRadius >= thisObject.targetRadius) { + if (thisObject.type === 'Icon & Text') { + let backgroundColor = backgroundColorToUse + if (thisObject.isEnabled === false) { + backgroundColor = UI_COLOR.GREY + } + let params = { + cornerRadius: 5, + lineWidth: 0.1, + container: thisObject.container, + borderColor: UI_COLOR.DARK, + backgroundColor: backgroundColor, + castShadow: false, + xOffset: 60 + } + + if (isMouseOver === true) { + params.opacity = 1 + } else { + params.opacity = 0.8 + } + + roundedCornersBackground(params) + } + } + } + + function drawForeground() { + if (thisObject.dontShowAtFullscreen === true && AT_FULL_SCREEN_MODE === true) { return } + + let menuPosition = { + x: thisObject.currentRadius * 1.5, + y: thisObject.container.frame.height / 2 + } + + menuPosition = thisObject.container.frame.frameThisPoint(menuPosition) /* Menu Item */ - - let iconSize - if (isMouseOver === true) { - iconSize = thisObject.currentRadius + EXTRA_MOUSE_OVER_ICON_SIZE - } else { - iconSize = thisObject.currentRadius - } - - if (thisObject.icon === undefined) { return } - if (thisObject.icon.canDrawIcon === true && thisObject.currentRadius > 1 && thisObject.isDeployed === true) { - browserCanvasContext.drawImage(thisObject.icon, menuPosition.x - iconSize, menuPosition.y - iconSize, iconSize * 2, iconSize * 2) - - /* Menu Label */ - - if (thisObject.type === 'Icon & Text') { - label = labelToPrint - if (thisObject.shorcutNumber !== undefined) { - label = '' + thisObject.shorcutNumber + '- ' + labelToPrint + let iconSize + if (isMouseOver === true) { + iconSize = thisObject.currentRadius + EXTRA_MOUSE_OVER_ICON_SIZE + } else { + iconSize = thisObject.currentRadius } - let labelPoint - let fontSize = 15 + if (thisObject.icon === undefined) { return } + if (thisObject.icon.canDrawIcon === true && thisObject.currentRadius > 1 && thisObject.isDeployed === true) { + browserCanvasContext.drawImage(thisObject.icon, menuPosition.x - iconSize, menuPosition.y - iconSize, iconSize * 2, iconSize * 2) - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + /* Menu Label */ + if (thisObject.type === 'Icon & Text') { + label = labelToPrint + if (thisObject.shorcutNumber !== undefined) { + label = '' + thisObject.shorcutNumber + '- ' + labelToPrint + } - if (thisObject.currentRadius >= thisObject.targetRadius) { - labelPoint = { - x: menuPosition.x + thisObject.currentRadius + 25, - y: menuPosition.y + fontSize * FONT_ASPECT_RATIO - } + let labelPoint + let fontSize = 15 - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + + if (thisObject.currentRadius >= thisObject.targetRadius) { + labelPoint = { + x: menuPosition.x + thisObject.currentRadius + 25, + y: menuPosition.y + fontSize * FONT_ASPECT_RATIO + } + + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) + } + } } - } } - } } diff --git a/CanvasApp/FloatingSpace/CircularProgressBar.js b/CanvasApp/FloatingSpace/CircularProgressBar.js index d662589c8..4b3d26888 100644 --- a/CanvasApp/FloatingSpace/CircularProgressBar.js +++ b/CanvasApp/FloatingSpace/CircularProgressBar.js @@ -1,146 +1,147 @@ -function newCircularProgressBar () { - const MODULE_NAME = 'Circular Progress Bar' +function newCircularProgressBar() { + const MODULE_NAME = 'Circular Progress Bar' - let thisObject = { - container: undefined, - isDeployed: undefined, - physics: physics, - drawBackground: drawBackground, - drawForeground: drawForeground, - getContainer: getContainer, - finalize: finalize, - initialize: initialize - } - - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME, 'Circle') - thisObject.container.isClickeable = false - thisObject.container.isDraggeable = false - thisObject.container.frame.radius = 0 - thisObject.container.frame.position.x = 0 - thisObject.container.frame.position.y = 0 - - let opacityCounters = [] - let eventSubscriptionIdHeartbeat - let needToDrawRing = true - let eventsServerClient - - return thisObject - - function finalize () { - finalizeEventsServerClient() - - thisObject.container = undefined - thisObject.payload = undefined - thisObject.fitFunction = undefined - } - - function finalizeEventsServerClient () { - if (eventsServerClient !== undefined) { - let key = thisObject.payload.node.name + '-' + thisObject.payload.node.type + '-' + thisObject.payload.node.id - if (eventSubscriptionIdHeartbeat !== undefined) { - eventsServerClient.stopListening(key, eventSubscriptionIdHeartbeat) - } - } - } - - function initialize (payload, pEventsServerClient) { - thisObject.payload = payload - - finalizeEventsServerClient() - eventsServerClient = pEventsServerClient - - for (let i = 0; i < 60; i++) { - opacityCounters.push(0) + let thisObject = { + container: undefined, + isDeployed: undefined, + physics: physics, + drawBackground: drawBackground, + drawForeground: drawForeground, + getContainer: getContainer, + finalize: finalize, + initialize: initialize } - let key = thisObject.payload.node.name + '-' + thisObject.payload.node.type + '-' + thisObject.payload.node.id - eventsServerClient.listenToEvent(key, 'Heartbeat', undefined, key, onResponse, onHeartBeat) + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME, 'Circle') + thisObject.container.isClickeable = false + thisObject.container.isDraggeable = false + thisObject.container.frame.radius = 0 + thisObject.container.frame.position.x = 0 + thisObject.container.frame.position.y = 0 - function onResponse (message) { - eventSubscriptionIdHeartbeat = message.eventSubscriptionId - } - } + let opacityCounters = [] + let eventSubscriptionIdHeartbeat + let needToDrawRing = true + let eventsServerClient - function onHeartBeat (message) { - if (thisObject.payload === undefined) { return } - if (thisObject.payload.uiObject === undefined) { return } - opacityCounters[message.event.seconds] = 2000 - if (message.event.processingDate !== undefined) { - thisObject.payload.uiObject.setValue(message.event.processingDate, 2000) - } - if (message.event.percentage !== undefined) { - thisObject.payload.uiObject.setPercentage(message.event.percentage, 2000) - } - if (message.event.status !== undefined) { - needToDrawRing = false - thisObject.payload.uiObject.setStatus(message.event.status, 200000) + return thisObject + + function finalize() { + finalizeEventsServerClient() + + thisObject.container = undefined + thisObject.payload = undefined + thisObject.fitFunction = undefined } - thisObject.payload.uiObject.heartBeat() - } - - function getContainer (point) { - if (canvas.floatingSpace.inMapMode === true) { return } - let container - - for (let i = 0; i < menuItems.length; i++) { - let menutItem = menuItems[i] - container = menutItem.getContainer(point) - if (container !== undefined) { return container } - } - } - - function physics () { - for (let i = 0; i < 60; i++) { - opacityCounters[i] = opacityCounters[i] - 2 - - if (opacityCounters[i] < 0) { - opacityCounters[i] = 0 - } - } - } - - function drawForeground (pFloatingObject) { - - } - - function drawBackground (pFloatingObject) { - if (canvas.floatingSpace.inMapMode === true) { return } - if (needToDrawRing !== true) { return } - - const VISIBLE_RADIUS = thisObject.container.frame.radius * 2 - - let visiblePosition = { - x: thisObject.container.frame.position.x, - y: thisObject.container.frame.position.y + function finalizeEventsServerClient() { + if (eventsServerClient !== undefined) { + let key = thisObject.payload.node.name + '-' + thisObject.payload.node.type + '-' + thisObject.payload.node.id + if (eventSubscriptionIdHeartbeat !== undefined) { + eventsServerClient.stopListening(key, eventSubscriptionIdHeartbeat) + } + } } - visiblePosition = thisObject.container.frame.frameThisPoint(visiblePosition) - visiblePosition = thisObject.fitFunction(visiblePosition) + function initialize(payload, pEventsServerClient) { + thisObject.payload = payload - for (let i = 0; i < 60; i++) { - let OPACITY = opacityCounters[i] / 1000 + finalizeEventsServerClient() + eventsServerClient = pEventsServerClient - if (OPACITY === 0) { continue } + for (let i = 0; i < 60; i++) { + opacityCounters.push(0) + } - let initialAngle = Math.PI * 2 / 60 * i - Math.PI / 2 - let finalAngle = Math.PI * 2 / 60 * (i + 1) - Math.PI / 2 + let key = thisObject.payload.node.name + '-' + thisObject.payload.node.type + '-' + thisObject.payload.node.id + eventsServerClient.listenToEvent(key, 'Heartbeat', undefined, key, onResponse, onHeartBeat) - browserCanvasContext.beginPath() - browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, initialAngle, finalAngle, false) - browserCanvasContext.closePath() - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GOLDEN_ORANGE + ', ' + OPACITY * 2 + ')' - browserCanvasContext.lineWidth = 6 + opacityCounters[i] / 100 / 2 - browserCanvasContext.setLineDash([3, 4]) - browserCanvasContext.stroke() - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.DARK_TURQUOISE + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = 0 + opacityCounters[i] / 100 / 2 - browserCanvasContext.setLineDash([3, 4]) - browserCanvasContext.stroke() + function onResponse(message) { + eventSubscriptionIdHeartbeat = message.eventSubscriptionId + } + } + + function onHeartBeat(message) { + if (thisObject.payload === undefined) { return } + if (thisObject.payload.uiObject === undefined) { return } + opacityCounters[message.event.seconds] = 2000 + if (message.event.processingDate !== undefined) { + thisObject.payload.uiObject.valueAtAngle = false + thisObject.payload.uiObject.setValue(message.event.processingDate, 2000) + } + if (message.event.percentage !== undefined) { + thisObject.payload.uiObject.setPercentage(message.event.percentage, 2000) + } + if (message.event.status !== undefined) { + needToDrawRing = false + thisObject.payload.uiObject.setStatus(message.event.status, 200000) + } + + thisObject.payload.uiObject.heartBeat() + } + + function getContainer(point) { + if (canvas.floatingSpace.inMapMode === true) { return } + let container + + for (let i = 0; i < menuItems.length; i++) { + let menutItem = menuItems[i] + container = menutItem.getContainer(point) + if (container !== undefined) { return container } + } + } + + function physics() { + for (let i = 0; i < 60; i++) { + opacityCounters[i] = opacityCounters[i] - 2 + + if (opacityCounters[i] < 0) { + opacityCounters[i] = 0 + } + } + } + + function drawForeground(pFloatingObject) { + + } + + function drawBackground(pFloatingObject) { + if (canvas.floatingSpace.inMapMode === true) { return } + if (needToDrawRing !== true) { return } + + const VISIBLE_RADIUS = thisObject.container.frame.radius + + let visiblePosition = { + x: thisObject.container.frame.position.x, + y: thisObject.container.frame.position.y + } + + visiblePosition = thisObject.container.frame.frameThisPoint(visiblePosition) + visiblePosition = thisObject.fitFunction(visiblePosition) + + for (let i = 0; i < 60; i++) { + let OPACITY = opacityCounters[i] / 4000 + + if (OPACITY === 0) { continue } + + let initialAngle = Math.PI * 2 / 60 * i - Math.PI / 2 + let finalAngle = Math.PI * 2 / 60 * (i + 1) - Math.PI / 2 + + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, initialAngle, finalAngle, false) + browserCanvasContext.closePath() + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GOLDEN_ORANGE + ', ' + OPACITY * 2 + ')' + browserCanvasContext.lineWidth = 6 + opacityCounters[i] / 100 / 4 + browserCanvasContext.setLineDash([1, 10]) + browserCanvasContext.stroke() + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.DARK_TURQUOISE + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = 0 + opacityCounters[i] / 100 / 4 + browserCanvasContext.setLineDash([2, 10]) + browserCanvasContext.stroke() + } } - } } diff --git a/CanvasApp/FloatingSpace/CodeEditor.js b/CanvasApp/FloatingSpace/CodeEditor.js index 4dea3fb0c..09d615a80 100644 --- a/CanvasApp/FloatingSpace/CodeEditor.js +++ b/CanvasApp/FloatingSpace/CodeEditor.js @@ -1,199 +1,200 @@ -function newCodeEditor () { - const MODULE_NAME = 'Code Editor' +function newCodeEditor() { + const MODULE_NAME = 'Code Editor' - let thisObject = { - isVisibleFunction: undefined, - visible: false, - imagePathOK: undefined, - imagePathNOT_OK: undefined, - rawRadius: undefined, - targetRadius: undefined, - currentRadius: undefined, - container: undefined, - payload: undefined, - deactivate: deactivate, - activate: activate, - physics: physics, - drawBackground: drawBackground, - drawForeground: drawForeground, - getContainer: getContainer, - finalize: finalize, - initialize: initialize - } - - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) - thisObject.container.isClickeable = false - thisObject.container.isDraggeable = false - thisObject.container.detectMouseOver = false - thisObject.container.frame.radius = 0 - thisObject.container.frame.position.x = 0 - thisObject.container.frame.position.y = 0 - - let isMouseOver = false - let SIZE_FACTOR = 1.4 - - return thisObject - - function finalize () { - thisObject.container.finalize() - thisObject.container = undefined - thisObject.payload = undefined - thisObject.isVisibleFunction = undefined - } - - function initialize () { - - } - - function deactivate () { - if (thisObject.visible === true) { - thisObject.visible = false - let textArea = document.getElementById('textArea') - textArea.style.display = 'none' - thisObject.payload.node.code = textArea.value - } - EDITOR_ON_FOCUS = false - } - - function activate (payload) { - thisObject.visible = true - thisObject.payload = payload - thisObject.rawRadius = 8 - thisObject.targetRadius = thisObject.container.frame.radius - thisObject.currentRadius = 0 - thisObject.payload.uiObject.setErrorMessage('', 0) - - let textArea = document.getElementById('textArea') - textArea.value = payload.node.code - textArea.style = 'resize: none;' + - ' border: none;' + - ' outline: none;' + - 'box-shadow: none;' + - 'overflow:hidden;' + - 'font-family: ' + UI_FONT.PRIMARY + ';' + - 'font-size: 14px;' + - 'background-color: rgb(' + UI_COLOR.RUSTED_RED + ');' + - 'color:rgb(255, 255, 255);' + - 'width: ' + thisObject.container.frame.width + 'px;' + - 'height: ' + thisObject.container.frame.height + 'px' - textArea.style.display = 'block' - textArea.focus() - EDITOR_ON_FOCUS = true - } - - function getContainer (point) { - let container - if (thisObject.visible === true) { - if (point.x === VERY_LARGE_NUMBER) { - /* The the mouse leaves the canvas, and event of mouse over with a ridiculous coordinate is triggered so that - anyone can react. In our case, the code editor has a text area that is not part of the canvas, so the event is - triggered. We compensate recognizing this coordinate and returning our container. */ - return thisObject.container - } - - if (thisObject.container.frame.isThisPointHere(point, true, false) === true) { - return thisObject.container - } else { - return undefined - } - } - } - - function physics () { - if (Math.abs(thisObject.currentRadius - thisObject.targetRadius) >= 0.5) { - if (thisObject.currentRadius < thisObject.targetRadius) { - thisObject.currentRadius = thisObject.currentRadius + 0.5 - } else { - thisObject.currentRadius = thisObject.currentRadius - 0.5 - } + let thisObject = { + isVisibleFunction: undefined, + visible: false, + imagePathOK: undefined, + imagePathNOT_OK: undefined, + rawRadius: undefined, + targetRadius: undefined, + currentRadius: undefined, + container: undefined, + payload: undefined, + deactivate: deactivate, + activate: activate, + physics: physics, + drawBackground: drawBackground, + drawForeground: drawForeground, + getContainer: getContainer, + finalize: finalize, + initialize: initialize } + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) + thisObject.container.isClickeable = false + thisObject.container.isDraggeable = false + thisObject.container.detectMouseOver = false + thisObject.container.frame.radius = 0 thisObject.container.frame.position.x = 0 thisObject.container.frame.position.y = 0 - thisObject.container.frame.width = thisObject.container.frame.radius * 1.8 * SIZE_FACTOR - thisObject.container.frame.height = thisObject.container.frame.radius * 1 * SIZE_FACTOR + let isMouseOver = false + let SIZE_FACTOR = 1.0 - let textAreaPosition = { - x: 0 - thisObject.container.frame.width / 2, - y: 0 - thisObject.container.frame.height * 3 / 7 + CURRENT_TOP_MARGIN + return thisObject + + function finalize() { + thisObject.container.finalize() + thisObject.container = undefined + thisObject.payload = undefined + thisObject.isVisibleFunction = undefined } - textAreaPosition = thisObject.container.frame.frameThisPoint(textAreaPosition) - if (thisObject.visible === true) { - let checkPosition = { - x: textAreaPosition.x, - y: textAreaPosition.y - CURRENT_TOP_MARGIN - } - if (thisObject.isVisibleFunction(checkPosition) === false) { - deactivate() - } - } - if (thisObject.visible === true) { - let textAreaDiv = document.getElementById('textAreaDiv') - textAreaDiv.style = 'position:fixed; top:' + textAreaPosition.y + 'px; left:' + textAreaPosition.x + 'px; z-index:1; ' - } - } + function initialize() { - function drawBackground () { - if (thisObject.visible === true) { - let position = { - x: 0, - y: 0 - } - - position = thisObject.container.frame.frameThisPoint(position) - - let radius = thisObject.container.frame.radius * SIZE_FACTOR - - if (radius > 0.5) { - browserCanvasContext.beginPath() - browserCanvasContext.arc(position.x, position.y, radius * 1.3 + 3, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + 1 + ')' - browserCanvasContext.fill() - - browserCanvasContext.beginPath() - browserCanvasContext.arc(position.x, position.y, radius * 1.3, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + 1 + ')' - browserCanvasContext.fill() - } - } - } - function drawForeground () { - let iconPosition = { - x: 0, - y: thisObject.currentRadius * 1.5 } - iconPosition = thisObject.container.frame.frameThisPoint(iconPosition) + function deactivate() { + if (thisObject.visible === true) { + thisObject.visible = false + let textArea = document.getElementById('textArea') + textArea.style.display = 'none' + thisObject.payload.node.code = textArea.value + } + EDITOR_ON_FOCUS = false + } - /* Menu Item */ + function activate(payload) { + thisObject.visible = true + thisObject.payload = payload + thisObject.rawRadius = 8 + thisObject.targetRadius = thisObject.container.frame.radius + thisObject.currentRadius = 0 + thisObject.payload.uiObject.resetErrorMessage() - if (thisObject.canDrawIcon === true && thisObject.currentRadius > 1) { - browserCanvasContext.drawImage(thisObject.icon, iconPosition.x - thisObject.currentRadius, iconPosition.y - thisObject.currentRadius, thisObject.currentRadius * 2, thisObject.currentRadius * 2) + let textArea = document.getElementById('textArea') + textArea.value = payload.node.code + textArea.style = 'resize: none;' + + ' border: none;' + + ' outline: none;' + + 'box-shadow: none;' + + 'overflow:hidden;' + + 'font-family: ' + UI_FONT.PRIMARY + ';' + + 'font-size: 14px;' + + 'background-color: rgb(' + UI_COLOR.RUSTED_RED + ');' + + 'color:rgb(255, 255, 255);' + + 'width: ' + thisObject.container.frame.width + 'px;' + + 'height: ' + thisObject.container.frame.height + 'px' + textArea.style.display = 'block' + textArea.focus() + EDITOR_ON_FOCUS = true + } - /* Menu Label */ + function getContainer(point) { + let container + if (thisObject.visible === true) { + if (point.x === VERY_LARGE_NUMBER) { + /* The the mouse leaves the canvas, and event of mouse over with a ridiculous coordinate is triggered so that + anyone can react. In our case, the code editor has a text area that is not part of the canvas, so the event is + triggered. We compensate recognizing this coordinate and returning our container. */ + return thisObject.container + } - let label = 'Code looks good!' - let labelPoint - let fontSize = 10 + if (thisObject.container.frame.isThisPointHere(point, true, false) === true) { + return thisObject.container + } else { + return undefined + } + } + } - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - - if (label !== undefined && thisObject.currentRadius >= thisObject.targetRadius) { - labelPoint = { - x: iconPosition.x + thisObject.currentRadius + 10, - y: iconPosition.y + fontSize * FONT_ASPECT_RATIO + function physics() { + if (Math.abs(thisObject.currentRadius - thisObject.targetRadius) >= 0.5) { + if (thisObject.currentRadius < thisObject.targetRadius) { + thisObject.currentRadius = thisObject.currentRadius + 0.5 + } else { + thisObject.currentRadius = thisObject.currentRadius - 0.5 + } } - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) - } + thisObject.container.frame.position.x = 0 + thisObject.container.frame.position.y = 0 + + thisObject.container.frame.width = thisObject.container.frame.radius * 1 * SIZE_FACTOR + thisObject.container.frame.height = thisObject.container.frame.radius * 1 * SIZE_FACTOR + + let textAreaPosition = { + x: 0 - thisObject.container.frame.width / 2, + y: 0 - thisObject.container.frame.height * 3 / 7 + CURRENT_TOP_MARGIN + } + + textAreaPosition = thisObject.container.frame.frameThisPoint(textAreaPosition) + if (thisObject.visible === true) { + let checkPosition = { + x: textAreaPosition.x, + y: textAreaPosition.y - CURRENT_TOP_MARGIN + } + if (thisObject.isVisibleFunction(checkPosition) === false) { + deactivate() + } + } + if (thisObject.visible === true) { + let textAreaDiv = document.getElementById('textAreaDiv') + textAreaDiv.style = 'position:fixed; top:' + textAreaPosition.y + 'px; left:' + textAreaPosition.x + 'px; z-index:1; ' + } + } + + function drawBackground() { + if (thisObject.visible === true) { + let position = { + x: 0, + y: 0 + } + + position = thisObject.container.frame.frameThisPoint(position) + + let radius = thisObject.container.frame.radius * SIZE_FACTOR + + if (radius > 0.5) { + browserCanvasContext.beginPath() + browserCanvasContext.arc(position.x, position.y, radius + 3, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + 1 + ')' + browserCanvasContext.fill() + + browserCanvasContext.beginPath() + browserCanvasContext.arc(position.x, position.y, radius , 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + 1 + ')' + browserCanvasContext.fill() + } + } + } + + function drawForeground() { + let iconPosition = { + x: 0, + y: thisObject.currentRadius * 1.5 + } + + iconPosition = thisObject.container.frame.frameThisPoint(iconPosition) + + /* Menu Item */ + + if (thisObject.canDrawIcon === true && thisObject.currentRadius > 1) { + browserCanvasContext.drawImage(thisObject.icon, iconPosition.x - thisObject.currentRadius, iconPosition.y - thisObject.currentRadius, thisObject.currentRadius * 2, thisObject.currentRadius * 2) + + /* Menu Label */ + + let label = 'Code looks good!' + let labelPoint + let fontSize = 10 + + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + + if (label !== undefined && thisObject.currentRadius >= thisObject.targetRadius) { + labelPoint = { + x: iconPosition.x + thisObject.currentRadius + 10, + y: iconPosition.y + fontSize * FONT_ASPECT_RATIO + } + + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) + } + } } - } } diff --git a/CanvasApp/FloatingSpace/ConditionEditor.js b/CanvasApp/FloatingSpace/ConditionEditor.js index 5b22ff07e..77ff9abed 100644 --- a/CanvasApp/FloatingSpace/ConditionEditor.js +++ b/CanvasApp/FloatingSpace/ConditionEditor.js @@ -1,1198 +1,1198 @@ -function newConditionEditor () { - const MODULE_NAME = 'Condition Editor' +function newConditionEditor() { + const MODULE_NAME = 'Condition Editor' - let thisObject = { - isVisibleFunction: undefined, - visible: false, - imagePathOK: undefined, - imagePathNOT_OK: undefined, - container: undefined, - payload: undefined, - deactivate: deactivate, - activate: activate, - physics: physics, - drawBackground: drawBackground, - drawForeground: drawForeground, - getContainer: getContainer, - finalize: finalize, - initialize: initialize - } - - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME, 'Circle') - thisObject.container.isClickeable = false - thisObject.container.isDraggeable = false - thisObject.container.detectMouseOver = false - thisObject.container.frame.radius = 750 - thisObject.container.frame.width = thisObject.container.frame.radius * 2 - thisObject.container.frame.height = thisObject.container.frame.radius * 2 - thisObject.container.frame.containerName = MODULE_NAME - - let isMouseOver = false - let conditionStructure - let scanResult - - let timeFrameIcon - let dataMineIcon - let botIcon - let whenIcon - let productIcon - let propertyIcon - let operationIcon - let valueIcon - - const PICKER_WIDTH = 150 - const PICKER_HEIGHT = 60 - - return thisObject - - function finalize () { - thisObject.container.finalize() - thisObject.container = undefined - thisObject.payload = undefined - thisObject.isVisibleFunction = undefined - - conditionStructure = undefined - scanResult = undefined - - timeFrameIcon = undefined - dataMineIcon = undefined - whenIcon = undefined - botIcon = undefined - productIcon = undefined - operationIcon = undefined - propertyIcon = undefined - valueIcon = undefined - } - - function initialize () { - timeFrameIcon = canvas.designSpace.iconCollection.get('time-period') - dataMineIcon = canvas.designSpace.iconCollection.get('data-mine') - botIcon = canvas.designSpace.iconCollection.get('bot-indicator') - whenIcon = canvas.designSpace.iconCollection.get('chronometer') - productIcon = canvas.designSpace.iconCollection.get('product-definition') - propertyIcon = canvas.designSpace.iconCollection.get('record-property') - operationIcon = canvas.designSpace.iconCollection.get('headphones') - valueIcon = canvas.designSpace.iconCollection.get('competition') - } - - function activate (payload) { - thisObject.visible = true - thisObject.payload = payload - thisObject.payload.uiObject.setErrorMessage('', 0) - - conditionStructure = { - code: '', - logicOperands: [] + let thisObject = { + isVisibleFunction: undefined, + visible: false, + imagePathOK: undefined, + imagePathNOT_OK: undefined, + container: undefined, + payload: undefined, + deactivate: deactivate, + activate: activate, + physics: physics, + drawBackground: drawBackground, + drawForeground: drawForeground, + getContainer: getContainer, + finalize: finalize, + initialize: initialize } - scanDataMines() - loadFromCode() - EDITOR_ON_FOCUS = true - } + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME, 'Circle') + thisObject.container.isClickeable = false + thisObject.container.isDraggeable = false + thisObject.container.detectMouseOver = false + thisObject.container.frame.radius = 750 + thisObject.container.frame.width = thisObject.container.frame.radius * 2 + thisObject.container.frame.height = thisObject.container.frame.radius * 2 + thisObject.container.frame.containerName = MODULE_NAME - function deactivate () { - convertToCode() - finalizePickers() + let isMouseOver = false + let conditionStructure + let scanResult - conditionStructure = undefined + let timeFrameIcon + let dataMineIcon + let botIcon + let whenIcon + let productIcon + let propertyIcon + let operationIcon + let valueIcon - if (thisObject.visible === true) { - thisObject.visible = false - } - EDITOR_ON_FOCUS = false - } + const PICKER_WIDTH = 150 + const PICKER_HEIGHT = 60 - function loadFromCode () { - if (thisObject.payload.node.code === undefined) { thisObject.payload.node.code = '' } - conditionStructure.code = thisObject.payload.node.code.replace(/ /g, '') + return thisObject - /* LOGICAL ORs */ - let orArray = conditionStructure.code.split('||') - for (let j = 0; j < 3; j++) { - let logicOperand = { - code: orArray[j], - index: j, - comparison: {}, - visible: false - } + function finalize() { + thisObject.container.finalize() + thisObject.container = undefined + thisObject.payload = undefined + thisObject.isVisibleFunction = undefined - if (logicOperand.code !== undefined) { - logicOperand.visible = true - if (orArray[j + 1] !== undefined) { - logicOperand.operator = '||' - } - } else { - logicOperand.code = '' - } + conditionStructure = undefined + scanResult = undefined - checkComparison(logicOperand, j) - conditionStructure.logicOperands.push(logicOperand) + timeFrameIcon = undefined + dataMineIcon = undefined + whenIcon = undefined + botIcon = undefined + productIcon = undefined + operationIcon = undefined + propertyIcon = undefined + valueIcon = undefined } - function checkComparison (logicOperand) { - /* We are going to decompose the code into 2 comparison operators */ - logicOperand.comparison.operandA = { - index: 0, - code: '' - } - logicOperand.comparison.operandB = { - index: 1, - code: '' - } - - if (logicOperand.code.indexOf('>') > 0) { - let codeArray = logicOperand.code.split('>') - logicOperand.comparison.operandA.code = codeArray[0] - logicOperand.comparison.operandB.code = codeArray[1] - logicOperand.comparison.operator = '>' - logicOperand.comparison.operatorIndex = 0 - } - - if (logicOperand.code.indexOf('<') > 0) { - let codeArray = logicOperand.code.split('<') - logicOperand.comparison.operandA.code = codeArray[0] - logicOperand.comparison.operandB.code = codeArray[1] - logicOperand.comparison.operator = '<' - logicOperand.comparison.operatorIndex = 1 - } - - if (logicOperand.code.indexOf('>=') > 0) { - let codeArray = logicOperand.code.split('>=') - logicOperand.comparison.operandA.code = codeArray[0] - logicOperand.comparison.operandB.code = codeArray[1] - logicOperand.comparison.operator = '>=' - logicOperand.comparison.operatorIndex = 2 - } - - if (logicOperand.code.indexOf('<=') > 0) { - let codeArray = logicOperand.code.split('<=') - logicOperand.comparison.operandA.code = codeArray[0] - logicOperand.comparison.operandB.code = codeArray[1] - logicOperand.comparison.operator = '<=' - logicOperand.comparison.operatorIndex = 3 - } - - if (logicOperand.code.indexOf('===') > 0) { - let codeArray = logicOperand.code.split('===') - logicOperand.comparison.operandA.code = codeArray[0] - logicOperand.comparison.operandB.code = codeArray[1] - logicOperand.comparison.operator = '===' - logicOperand.comparison.operatorIndex = 4 - } - - /* Each comparison code may have one or more algebra operators */ - checkAlgebra(logicOperand, logicOperand.comparison.operandA) - checkAlgebra(logicOperand, logicOperand.comparison.operandB) + function initialize() { + timeFrameIcon = canvas.designSpace.iconCollection.get('time-period') + dataMineIcon = canvas.designSpace.iconCollection.get('data-mine') + botIcon = canvas.designSpace.iconCollection.get('bot-indicator') + whenIcon = canvas.designSpace.iconCollection.get('chronometer') + productIcon = canvas.designSpace.iconCollection.get('product-definition') + propertyIcon = canvas.designSpace.iconCollection.get('record-property') + operationIcon = canvas.designSpace.iconCollection.get('headphones') + valueIcon = canvas.designSpace.iconCollection.get('competition') } - function checkAlgebra (logicOperand, comparisonOperand) { - comparisonOperand.algebra = { - operandA: { index: 0}, - operandB: { index: 1} - } + function activate(payload) { + thisObject.visible = true + thisObject.payload = payload + thisObject.payload.uiObject.resetErrorMessage() - /* The default situation is that there is no algebra operation, meaning we will setup a algebra operation only with operandA */ - comparisonOperand.algebra.operandA.code = comparisonOperand.code - comparisonOperand.algebra.operandB.code = '' - comparisonOperand.algebra.operator = '...' - comparisonOperand.algebra.operatorIndex = 0 + conditionStructure = { + code: '', + logicOperands: [] + } - if (comparisonOperand.code.indexOf('+') > 0) { - let codeArray = comparisonOperand.code.split('+') - comparisonOperand.algebra.operandA.code = codeArray[0] - comparisonOperand.algebra.operandB.code = codeArray[1] - comparisonOperand.algebra.operator = '+' - comparisonOperand.algebra.operatorIndex = 1 - } - - if (comparisonOperand.code.indexOf('-') > 0) { - let codeArray = comparisonOperand.code.split('-') - comparisonOperand.algebra.operandA.code = codeArray[0] - comparisonOperand.algebra.operandB.code = codeArray[1] - comparisonOperand.algebra.operator = '-' - comparisonOperand.algebra.operatorIndex = 2 - } - - if (comparisonOperand.code.indexOf('*') > 0) { - let codeArray = comparisonOperand.code.split('*') - comparisonOperand.algebra.operandA.code = codeArray[0] - comparisonOperand.algebra.operandB.code = codeArray[1] - comparisonOperand.algebra.operator = '*' - comparisonOperand.algebra.operatorIndex = 3 - } - - if (comparisonOperand.code.indexOf('/') > 0) { - let codeArray = comparisonOperand.code.split('/') - comparisonOperand.algebra.operandA.code = codeArray[0] - comparisonOperand.algebra.operandB.code = codeArray[1] - comparisonOperand.algebra.operator = '/' - comparisonOperand.algebra.operatorIndex = 4 - } - - initializePickersSet(logicOperand, comparisonOperand, comparisonOperand.algebra.operandA) - initializePickersSet(logicOperand, comparisonOperand, comparisonOperand.algebra.operandB) - updatePickers(logicOperand, comparisonOperand, comparisonOperand.algebra.operandA) - updatePickers(logicOperand, comparisonOperand, comparisonOperand.algebra.operandB) + scanDataMines() + loadFromCode() + EDITOR_ON_FOCUS = true } - function initializePickersSet (logicOperand, comparisonOperand, algebraOperand) { - const ALGEBRA_SEPARATION = PICKER_HEIGHT - const COMPARISON_SEPARATION = ALGEBRA_SEPARATION * 2 - const LOGIC_SEPARATION = COMPARISON_SEPARATION * 2 + function deactivate() { + convertToCode() + finalizePickers() - let properties - let parent - let current - let yOffset = (logicOperand.index - 1) * LOGIC_SEPARATION + (comparisonOperand.index - 0.5) * COMPARISON_SEPARATION + (algebraOperand.index - 0.5) * ALGEBRA_SEPARATION + conditionStructure = undefined - if (algebraOperand.index === 0) { - comparisonOperand.algebra.picker = newPicker() - let picker = comparisonOperand.algebra.picker - picker.name = 'Algebra' - picker.container.connectToParent(thisObject.container) - picker.container.frame.position.x = 0 - picker.container.frame.width / 2 + picker.container.frame.width * 2.5 - picker.container.frame.position.y = 0 - picker.container.frame.height / 2 + yOffset - current = ['...', 'Plus', 'Minus', 'Times', 'Divided by'] - picker.initialize(current, current) - switch (comparisonOperand.algebra.operator) { - case '+': { - picker.setSelected(undefined, undefined, undefined, 1) - break - } - case '-': { - picker.setSelected(undefined, undefined, undefined, 2) - break - } - case '*': { - picker.setSelected(undefined, undefined, undefined, 3) - break - } - case '/': { - picker.setSelected(undefined, undefined, undefined, 4) - break - } + if (thisObject.visible === true) { + thisObject.visible = false } - picker.visible = true - let structureBranch = { - logicOperand: logicOperand, - comparisonOperand: comparisonOperand, - algebraOperand: algebraOperand, - pickerName: 'Algebra' - } - picker.eventSuscriptionId = picker.container.eventHandler.listenToEvent('onParentChanged', onParentChanged, structureBranch) - } - - if (comparisonOperand.index === 0 && algebraOperand.index === 1) { - logicOperand.comparison.picker = newPicker() - let picker = logicOperand.comparison.picker - picker.name = 'Comparison' - picker.container.connectToParent(thisObject.container) - picker.container.frame.position.x = 0 - picker.container.frame.width / 2 + picker.container.frame.width * 2.5 - picker.container.frame.position.y = 0 - picker.container.frame.height / 2 + yOffset - let optionsList = ['Greater Than', 'Less Than', 'Greater or Equal Than', 'Less or Equal Than', 'Equal To'] - picker.initialize(optionsList) - switch (logicOperand.comparison.operator) { - case '>': { - picker.setSelected(undefined, undefined, undefined, 0) - break - } - case '<': { - picker.setSelected(undefined, undefined, undefined, 1) - break - } - case '>=': { - picker.setSelected(undefined, undefined, undefined, 2) - break - } - case '<=': { - picker.setSelected(undefined, undefined, undefined, 3) - break - } - case '===': { - picker.setSelected(undefined, undefined, undefined, 4) - break - } - } - picker.visible = true - let structureBranch = { - logicOperand: logicOperand, - comparisonOperand: comparisonOperand, - algebraOperand: algebraOperand, - pickerName: 'Comparison' - } - picker.eventSuscriptionId = picker.container.eventHandler.listenToEvent('onParentChanged', onParentChanged, structureBranch) - } - - if (comparisonOperand.index === 1 && algebraOperand.index === 1 && logicOperand.index <= 1) { - logicOperand.picker = newPicker() - let picker = logicOperand.picker - picker.name = 'Logic' - picker.container.connectToParent(thisObject.container) - picker.container.frame.position.x = 0 - picker.container.frame.width / 2 + picker.container.frame.width * 2.5 - picker.container.frame.position.y = 0 - picker.container.frame.height / 2 + yOffset - let optionsList = ['...', 'OR'] - picker.initialize(optionsList) - if (logicOperand.operator === '||') { - picker.setSelected(undefined, undefined, undefined, 1) - } - picker.visible = true - let structureBranch = { - logicOperand: logicOperand, - comparisonOperand: comparisonOperand, - algebraOperand: algebraOperand, - pickerName: 'Logic' - } - picker.eventSuscriptionId = picker.container.eventHandler.listenToEvent('onParentChanged', onParentChanged, structureBranch) - } - - let visible = true - if (algebraOperand.index === 1 && comparisonOperand.algebra.picker.getSelected() === '...') { visible = false } - if (logicOperand.comparison.picker !== undefined && comparisonOperand.index === 1 && logicOperand.comparison.picker.getSelected() === 'Equal To') { visible = false } - - algebraOperand.whenPicker = newPicker() - algebraOperand.whenPicker.name = 'When' - algebraOperand.whenPicker.container.connectToParent(thisObject.container) - algebraOperand.whenPicker.container.frame.position.x = 0 - algebraOperand.whenPicker.container.frame.width / 2 - algebraOperand.whenPicker.container.frame.width * 0.5 - algebraOperand.whenPicker.container.frame.position.y = 0 - algebraOperand.whenPicker.container.frame.height / 2 + yOffset - current = ['Current', '1 Previous', '2 Previous', '3 Previous', '4 Previous', '5 Previous'] - algebraOperand.whenPicker.initialize(current, current) - algebraOperand.whenPicker.visible = visible - - algebraOperand.dataMinePicker = newPicker() - algebraOperand.dataMinePicker.name = 'Data Mine' - algebraOperand.dataMinePicker.container.connectToParent(thisObject.container) - algebraOperand.dataMinePicker.container.frame.position.x = 0 - algebraOperand.dataMinePicker.container.frame.width / 2 - algebraOperand.dataMinePicker.container.frame.width * 2.5 - algebraOperand.dataMinePicker.container.frame.position.y = 0 - algebraOperand.dataMinePicker.container.frame.height / 2 + yOffset - current = scanResult - properties = Object.keys(current) - algebraOperand.dataMinePicker.initialize(properties, current) - parent = current - algebraOperand.dataMinePicker.visible = visible - - algebraOperand.botPicker = newPicker() - algebraOperand.botPicker.name = 'Bot' - algebraOperand.botPicker.container.connectToParent(thisObject.container) - algebraOperand.botPicker.container.frame.position.x = 0 - algebraOperand.botPicker.container.frame.width / 2 - algebraOperand.botPicker.container.frame.width * 1.5 - algebraOperand.botPicker.container.frame.position.y = 0 - algebraOperand.botPicker.container.frame.height / 2 + yOffset - current = parent[properties[0]] - properties = Object.keys(current) - algebraOperand.botPicker.initialize(properties, current, parent) - parent = current - algebraOperand.botPicker.visible = visible - - algebraOperand.productPicker = newPicker() - algebraOperand.productPicker.name = 'Product' - algebraOperand.productPicker.container.connectToParent(thisObject.container) - algebraOperand.productPicker.container.frame.position.x = 0 - algebraOperand.productPicker.container.frame.width / 2 + algebraOperand.productPicker.container.frame.width * 0.5 - algebraOperand.productPicker.container.frame.position.y = 0 - algebraOperand.productPicker.container.frame.height / 2 + yOffset - current = parent[properties[0]] - properties = Object.keys(current) - algebraOperand.productPicker.initialize(properties, current, parent) - parent = current - algebraOperand.productPicker.visible = visible - - let productParent = parent - let productProperties = properties - - algebraOperand.propertyPicker = newPicker() - algebraOperand.propertyPicker.name = 'Property' - algebraOperand.propertyPicker.container.connectToParent(thisObject.container) - algebraOperand.propertyPicker.container.frame.position.x = 0 - algebraOperand.propertyPicker.container.frame.width / 2 + algebraOperand.propertyPicker.container.frame.width * 1.5 - algebraOperand.propertyPicker.container.frame.position.y = 0 - algebraOperand.propertyPicker.container.frame.height / 2 + yOffset - current = productParent[productProperties[0]] - current = current.properties - properties = Object.keys(current) - algebraOperand.propertyPicker.initialize(properties, current, productParent, 'properties') - parent = current - algebraOperand.propertyPicker.visible = visible - - algebraOperand.valuePicker = newPicker() - algebraOperand.valuePicker.name = 'Value' - algebraOperand.valuePicker.container.connectToParent(thisObject.container) - algebraOperand.valuePicker.container.frame.position.x = 0 - algebraOperand.valuePicker.container.frame.width / 2 + algebraOperand.valuePicker.container.frame.width * 3.5 - algebraOperand.valuePicker.container.frame.position.y = 0 - algebraOperand.valuePicker.container.frame.height / 2 + yOffset + ALGEBRA_SEPARATION - current = parent[properties[0]] - properties = current.possibleValues - algebraOperand.valuePicker.initialize(properties, current, parent, 'possibleValues') - parent = current - algebraOperand.valuePicker.visible = false - if (logicOperand.comparison.picker !== undefined && logicOperand.comparison.picker.getSelected() === 'Equal To') { - comparisonOperand.algebra.operandA.valuePicker.visible = true - } - - algebraOperand.timeFramePicker = newPicker() - algebraOperand.timeFramePicker.name = 'Time Frame' - algebraOperand.timeFramePicker.container.connectToParent(thisObject.container) - algebraOperand.timeFramePicker.container.frame.position.x = 0 - algebraOperand.timeFramePicker.container.frame.width / 2 - algebraOperand.timeFramePicker.container.frame.width * 3.0 - algebraOperand.timeFramePicker.container.frame.position.y = 0 - algebraOperand.timeFramePicker.container.frame.height / 2 + yOffset - algebraOperand.timeFramePicker.container.frame.width = algebraOperand.timeFramePicker.container.frame.width / 2 - current = productParent[productProperties[0]] - properties = current.validTimeFrames - algebraOperand.timeFramePicker.initialize(properties, current, productParent, 'validTimeFrames') - parent = current - algebraOperand.timeFramePicker.visible = visible - - algebraOperand.botPicker.eventSuscriptionId = algebraOperand.dataMinePicker.container.eventHandler.listenToEvent('onParentChanged', algebraOperand.botPicker.onParentChanged) - algebraOperand.productPicker.eventSuscriptionId = algebraOperand.botPicker.container.eventHandler.listenToEvent('onParentChanged', algebraOperand.productPicker.onParentChanged) - algebraOperand.propertyPicker.eventSuscriptionId = algebraOperand.productPicker.container.eventHandler.listenToEvent('onParentChanged', algebraOperand.propertyPicker.onParentChanged) - algebraOperand.valuePicker.eventSuscriptionId = algebraOperand.propertyPicker.container.eventHandler.listenToEvent('onParentChanged', algebraOperand.valuePicker.onParentChanged) - algebraOperand.timeFramePicker.eventSuscriptionId = algebraOperand.productPicker.container.eventHandler.listenToEvent('onParentChanged', algebraOperand.timeFramePicker.onParentChanged) + EDITOR_ON_FOCUS = false } - function updatePickers (logicOperand, comparisonOperand, algebraOperand) { - let codeArray = algebraOperand.code.split('.') + function loadFromCode() { + if (thisObject.payload.node.code === undefined) { thisObject.payload.node.code = '' } + conditionStructure.code = thisObject.payload.node.code.replace(/ /g, '') - let codeTimeFrame - if (codeArray[1] !== undefined) { - codeTimeFrame = codeArray[1].substring(2, 4) + '-' + codeArray[1].substring(4, 7) - } + /* LOGICAL ORs */ + let orArray = conditionStructure.code.split('||') + for (let j = 0; j < 3; j++) { + let logicOperand = { + code: orArray[j], + index: j, + comparison: {}, + visible: false + } - let codeProduct - if (codeArray[2] !== undefined) { - codeProduct = codeArray[2] - } + if (logicOperand.code !== undefined) { + logicOperand.visible = true + if (orArray[j + 1] !== undefined) { + logicOperand.operator = '||' + } + } else { + logicOperand.code = '' + } - /* Parse When */ - let propertyDisplacement = 0 - let codeWhen = 'Current' - if (codeArray[3] === 'previous') { - propertyDisplacement++ - codeWhen = '1 Previous' - } - if (codeArray[4] === 'previous') { - propertyDisplacement++ - codeWhen = '2 Previous' - } - if (codeArray[5] === 'previous') { - propertyDisplacement++ - codeWhen = '3 Previous' - } - if (codeArray[6] === 'previous') { - propertyDisplacement++ - codeWhen = '4 Previous' - } - if (codeArray[7] === 'previous') { - propertyDisplacement++ - codeWhen = '5 Previous' - } - algebraOperand.whenPicker.setSelected(undefined, undefined, undefined, propertyDisplacement) + checkComparison(logicOperand, j) + conditionStructure.logicOperands.push(logicOperand) + } - let codeProperty - if (codeArray[3 + propertyDisplacement] !== undefined) { - codeProperty = codeArray[3 + propertyDisplacement] - } + function checkComparison(logicOperand) { + /* We are going to decompose the code into 2 comparison operators */ + logicOperand.comparison.operandA = { + index: 0, + code: '' + } + logicOperand.comparison.operandB = { + index: 1, + code: '' + } - let codeValue = logicOperand.comparison.operandB.code.replace('"', '').replace('"', '') + if (logicOperand.code.indexOf('>') > 0) { + let codeArray = logicOperand.code.split('>') + logicOperand.comparison.operandA.code = codeArray[0] + logicOperand.comparison.operandB.code = codeArray[1] + logicOperand.comparison.operator = '>' + logicOperand.comparison.operatorIndex = 0 + } - let dataMines = Object.keys(scanResult) - for (let i = 0; i < dataMines.length; i++) { - let dataMine = dataMines[i] - let dataMineObject = scanResult[dataMine] - let bots = Object.keys(dataMineObject) - for (let j = 0; j < bots.length; j++) { - let bot = bots[j] - let botObject = dataMineObject[bot] - let products = Object.keys(botObject) - for (let k = 0; k < products.length; k++) { - let product = products[k] - let productObject = botObject[product] - if (codeProduct === product) { - algebraOperand.dataMinePicker.setSelected(dataMines, scanResult, undefined, i) - algebraOperand.botPicker.setSelected(bots, dataMineObject, scanResult, j) - algebraOperand.productPicker.setSelected(products, botObject, dataMineObject, k) - let properties = Object.keys(productObject.properties) - for (let m = 0; m < properties.length; m++) { - let property = properties[m] - let propertyObject = productObject.properties[property] - if (codeProperty === property) { - algebraOperand.propertyPicker.setSelected(properties, productObject.properties, botObject, m) - let values = propertyObject.possibleValues - for (let n = 0; n < values.length; n++) { - let value = values[n] - let valueObject = propertyObject[value] - if (codeValue === value) { - algebraOperand.valuePicker.setSelected(values, propertyObject, productObject, n) + if (logicOperand.code.indexOf('<') > 0) { + let codeArray = logicOperand.code.split('<') + logicOperand.comparison.operandA.code = codeArray[0] + logicOperand.comparison.operandB.code = codeArray[1] + logicOperand.comparison.operator = '<' + logicOperand.comparison.operatorIndex = 1 + } + + if (logicOperand.code.indexOf('>=') > 0) { + let codeArray = logicOperand.code.split('>=') + logicOperand.comparison.operandA.code = codeArray[0] + logicOperand.comparison.operandB.code = codeArray[1] + logicOperand.comparison.operator = '>=' + logicOperand.comparison.operatorIndex = 2 + } + + if (logicOperand.code.indexOf('<=') > 0) { + let codeArray = logicOperand.code.split('<=') + logicOperand.comparison.operandA.code = codeArray[0] + logicOperand.comparison.operandB.code = codeArray[1] + logicOperand.comparison.operator = '<=' + logicOperand.comparison.operatorIndex = 3 + } + + if (logicOperand.code.indexOf('===') > 0) { + let codeArray = logicOperand.code.split('===') + logicOperand.comparison.operandA.code = codeArray[0] + logicOperand.comparison.operandB.code = codeArray[1] + logicOperand.comparison.operator = '===' + logicOperand.comparison.operatorIndex = 4 + } + + /* Each comparison code may have one or more algebra operators */ + checkAlgebra(logicOperand, logicOperand.comparison.operandA) + checkAlgebra(logicOperand, logicOperand.comparison.operandB) + } + + function checkAlgebra(logicOperand, comparisonOperand) { + comparisonOperand.algebra = { + operandA: { index: 0 }, + operandB: { index: 1 } + } + + /* The default situation is that there is no algebra operation, meaning we will setup a algebra operation only with operandA */ + comparisonOperand.algebra.operandA.code = comparisonOperand.code + comparisonOperand.algebra.operandB.code = '' + comparisonOperand.algebra.operator = '...' + comparisonOperand.algebra.operatorIndex = 0 + + if (comparisonOperand.code.indexOf('+') > 0) { + let codeArray = comparisonOperand.code.split('+') + comparisonOperand.algebra.operandA.code = codeArray[0] + comparisonOperand.algebra.operandB.code = codeArray[1] + comparisonOperand.algebra.operator = '+' + comparisonOperand.algebra.operatorIndex = 1 + } + + if (comparisonOperand.code.indexOf('-') > 0) { + let codeArray = comparisonOperand.code.split('-') + comparisonOperand.algebra.operandA.code = codeArray[0] + comparisonOperand.algebra.operandB.code = codeArray[1] + comparisonOperand.algebra.operator = '-' + comparisonOperand.algebra.operatorIndex = 2 + } + + if (comparisonOperand.code.indexOf('*') > 0) { + let codeArray = comparisonOperand.code.split('*') + comparisonOperand.algebra.operandA.code = codeArray[0] + comparisonOperand.algebra.operandB.code = codeArray[1] + comparisonOperand.algebra.operator = '*' + comparisonOperand.algebra.operatorIndex = 3 + } + + if (comparisonOperand.code.indexOf('/') > 0) { + let codeArray = comparisonOperand.code.split('/') + comparisonOperand.algebra.operandA.code = codeArray[0] + comparisonOperand.algebra.operandB.code = codeArray[1] + comparisonOperand.algebra.operator = '/' + comparisonOperand.algebra.operatorIndex = 4 + } + + initializePickersSet(logicOperand, comparisonOperand, comparisonOperand.algebra.operandA) + initializePickersSet(logicOperand, comparisonOperand, comparisonOperand.algebra.operandB) + updatePickers(logicOperand, comparisonOperand, comparisonOperand.algebra.operandA) + updatePickers(logicOperand, comparisonOperand, comparisonOperand.algebra.operandB) + } + + function initializePickersSet(logicOperand, comparisonOperand, algebraOperand) { + const ALGEBRA_SEPARATION = PICKER_HEIGHT + const COMPARISON_SEPARATION = ALGEBRA_SEPARATION * 2 + const LOGIC_SEPARATION = COMPARISON_SEPARATION * 2 + + let properties + let parent + let current + let yOffset = (logicOperand.index - 1) * LOGIC_SEPARATION + (comparisonOperand.index - 0.5) * COMPARISON_SEPARATION + (algebraOperand.index - 0.5) * ALGEBRA_SEPARATION + + if (algebraOperand.index === 0) { + comparisonOperand.algebra.picker = newPicker() + let picker = comparisonOperand.algebra.picker + picker.name = 'Algebra' + picker.container.connectToParent(thisObject.container) + picker.container.frame.position.x = 0 - picker.container.frame.width / 2 + picker.container.frame.width * 2.5 + picker.container.frame.position.y = 0 - picker.container.frame.height / 2 + yOffset + current = ['...', 'Plus', 'Minus', 'Times', 'Divided by'] + picker.initialize(current, current) + switch (comparisonOperand.algebra.operator) { + case '+': { + picker.setSelected(undefined, undefined, undefined, 1) + break + } + case '-': { + picker.setSelected(undefined, undefined, undefined, 2) + break + } + case '*': { + picker.setSelected(undefined, undefined, undefined, 3) + break + } + case '/': { + picker.setSelected(undefined, undefined, undefined, 4) + break } - } } - } - let timeFrames = productObject.validTimeFrames - for (let m = 0; m < timeFrames.length; m++) { - let timeFrame = timeFrames[m] - let timeFrameObject = productObject.validTimeFrames[timeFrame] - if (codeTimeFrame === timeFrame) { - algebraOperand.timeFramePicker.setSelected(timeFrames, productObject, botObject, m) + picker.visible = true + let structureBranch = { + logicOperand: logicOperand, + comparisonOperand: comparisonOperand, + algebraOperand: algebraOperand, + pickerName: 'Algebra' } - } + picker.eventSuscriptionId = picker.container.eventHandler.listenToEvent('onParentChanged', onParentChanged, structureBranch) } - } - } - } - } - } - function scanDataMines () { - let selector = {} - - let workspace = canvas.designSpace.workspace.workspaceNode - - for (let i = 0; i < workspace.rootNodes.length; i++) { - let rootNode = workspace.rootNodes[i] - if (rootNode.type !== 'Data Mine') { continue } - let dataMine = rootNode - let dataMineName = loadPropertyFromNodeConfig(dataMine.payload, 'codeName') - selector[dataMineName] = {} - let bots = dataMine.sensorBots.concat(dataMine.indicatorBots) - for (let j = 0; j < bots.length; j++) { - let bot = bots[j] - let botName = loadPropertyFromNodeConfig(bot.payload, 'codeName') - let selectorDataMine = selector[dataMineName] - selectorDataMine[botName] = {} - for (let k = 0; k < bot.products.length; k++) { - let product = bot.products[k] - let productName = loadPropertyFromNodeConfig(product.payload, 'singularVariableName') - if (productName === undefined) { continue } - let selectorProduct = selectorDataMine[botName] - selectorProduct[productName] = { - properties: {} - } - if (product.record === undefined) { continue } - for (let m = 0; m < product.record.properties.length; m++) { - let property = product.record.properties[m] - let propertyName = loadPropertyFromNodeConfig(property.payload, 'codeName') - let selectorProperty = selectorProduct[productName] - selectorProperty = selectorProperty.properties - selectorProperty[propertyName] = {} - let possibleValues = loadPropertyFromNodeConfig(property.payload, 'possibleValues') - if (possibleValues === undefined) { possibleValues = [] } - let selectorPossibleValue = selectorProperty[propertyName] - selectorPossibleValue.possibleValues = possibleValues - } - let allPossibleTimeFrames = [] - for (let m = 0; m < product.datasets.length; m++) { - let dataset = product.datasets[m] - let validTimeFrames = loadPropertyFromNodeConfig(dataset.payload, 'validTimeFrames') - if (validTimeFrames !== undefined) { - allPossibleTimeFrames = allPossibleTimeFrames.concat(validTimeFrames) + if (comparisonOperand.index === 0 && algebraOperand.index === 1) { + logicOperand.comparison.picker = newPicker() + let picker = logicOperand.comparison.picker + picker.name = 'Comparison' + picker.container.connectToParent(thisObject.container) + picker.container.frame.position.x = 0 - picker.container.frame.width / 2 + picker.container.frame.width * 2.5 + picker.container.frame.position.y = 0 - picker.container.frame.height / 2 + yOffset + let optionsList = ['Greater Than', 'Less Than', 'Greater or Equal Than', 'Less or Equal Than', 'Equal To'] + picker.initialize(optionsList) + switch (logicOperand.comparison.operator) { + case '>': { + picker.setSelected(undefined, undefined, undefined, 0) + break + } + case '<': { + picker.setSelected(undefined, undefined, undefined, 1) + break + } + case '>=': { + picker.setSelected(undefined, undefined, undefined, 2) + break + } + case '<=': { + picker.setSelected(undefined, undefined, undefined, 3) + break + } + case '===': { + picker.setSelected(undefined, undefined, undefined, 4) + break + } + } + picker.visible = true + let structureBranch = { + logicOperand: logicOperand, + comparisonOperand: comparisonOperand, + algebraOperand: algebraOperand, + pickerName: 'Comparison' + } + picker.eventSuscriptionId = picker.container.eventHandler.listenToEvent('onParentChanged', onParentChanged, structureBranch) } - } - let selectorValidTimeFrames = selectorProduct[productName] - selectorValidTimeFrames.validTimeFrames = allPossibleTimeFrames - let productKeys = Object.keys(selectorProduct[productName]) - if (productKeys.length === 0) { - selectorProduct[productName] = undefined - } - } - let botKeys = Object.keys(selectorDataMine[botName]) - if (botKeys.length === 0) { - selectorDataMine[botName] = undefined - } - } - let dataMineKeys = Object.keys(selector[dataMineName]) - if (dataMineKeys.length === 0) { - selector[dataMineName] = undefined - } - } - scanResult = JSON.parse(JSON.stringify(selector)) - } + if (comparisonOperand.index === 1 && algebraOperand.index === 1 && logicOperand.index <= 1) { + logicOperand.picker = newPicker() + let picker = logicOperand.picker + picker.name = 'Logic' + picker.container.connectToParent(thisObject.container) + picker.container.frame.position.x = 0 - picker.container.frame.width / 2 + picker.container.frame.width * 2.5 + picker.container.frame.position.y = 0 - picker.container.frame.height / 2 + yOffset + let optionsList = ['...', 'OR'] + picker.initialize(optionsList) + if (logicOperand.operator === '||') { + picker.setSelected(undefined, undefined, undefined, 1) + } + picker.visible = true + let structureBranch = { + logicOperand: logicOperand, + comparisonOperand: comparisonOperand, + algebraOperand: algebraOperand, + pickerName: 'Logic' + } + picker.eventSuscriptionId = picker.container.eventHandler.listenToEvent('onParentChanged', onParentChanged, structureBranch) + } - function convertToCode () { - if (conditionStructure === undefined) { return } + let visible = true + if (algebraOperand.index === 1 && comparisonOperand.algebra.picker.getSelected() === '...') { visible = false } + if (logicOperand.comparison.picker !== undefined && comparisonOperand.index === 1 && logicOperand.comparison.picker.getSelected() === 'Equal To') { visible = false } - // chart.at01hs.bollingerSubChannel.previous.previous.slope=== "Extreme" + algebraOperand.whenPicker = newPicker() + algebraOperand.whenPicker.name = 'When' + algebraOperand.whenPicker.container.connectToParent(thisObject.container) + algebraOperand.whenPicker.container.frame.position.x = 0 - algebraOperand.whenPicker.container.frame.width / 2 - algebraOperand.whenPicker.container.frame.width * 0.5 + algebraOperand.whenPicker.container.frame.position.y = 0 - algebraOperand.whenPicker.container.frame.height / 2 + yOffset + current = ['Current', '1 Previous', '2 Previous', '3 Previous', '4 Previous', '5 Previous'] + algebraOperand.whenPicker.initialize(current, current) + algebraOperand.whenPicker.visible = visible - let code = '' + algebraOperand.dataMinePicker = newPicker() + algebraOperand.dataMinePicker.name = 'Data Mine' + algebraOperand.dataMinePicker.container.connectToParent(thisObject.container) + algebraOperand.dataMinePicker.container.frame.position.x = 0 - algebraOperand.dataMinePicker.container.frame.width / 2 - algebraOperand.dataMinePicker.container.frame.width * 2.5 + algebraOperand.dataMinePicker.container.frame.position.y = 0 - algebraOperand.dataMinePicker.container.frame.height / 2 + yOffset + current = scanResult + properties = Object.keys(current) + algebraOperand.dataMinePicker.initialize(properties, current) + parent = current + algebraOperand.dataMinePicker.visible = visible - for (let i = 0; i < conditionStructure.logicOperands.length; i++) { - let logicOperand = conditionStructure.logicOperands[i] - logicOperandToCode(logicOperand) - if (logicOperand.picker.getSelected() !== 'OR') { - break - } else { - code = code + ' || ' - } - } + algebraOperand.botPicker = newPicker() + algebraOperand.botPicker.name = 'Bot' + algebraOperand.botPicker.container.connectToParent(thisObject.container) + algebraOperand.botPicker.container.frame.position.x = 0 - algebraOperand.botPicker.container.frame.width / 2 - algebraOperand.botPicker.container.frame.width * 1.5 + algebraOperand.botPicker.container.frame.position.y = 0 - algebraOperand.botPicker.container.frame.height / 2 + yOffset + current = parent[properties[0]] + properties = Object.keys(current) + algebraOperand.botPicker.initialize(properties, current, parent) + parent = current + algebraOperand.botPicker.visible = visible - thisObject.payload.node.code = code + algebraOperand.productPicker = newPicker() + algebraOperand.productPicker.name = 'Product' + algebraOperand.productPicker.container.connectToParent(thisObject.container) + algebraOperand.productPicker.container.frame.position.x = 0 - algebraOperand.productPicker.container.frame.width / 2 + algebraOperand.productPicker.container.frame.width * 0.5 + algebraOperand.productPicker.container.frame.position.y = 0 - algebraOperand.productPicker.container.frame.height / 2 + yOffset + current = parent[properties[0]] + properties = Object.keys(current) + algebraOperand.productPicker.initialize(properties, current, parent) + parent = current + algebraOperand.productPicker.visible = visible - function logicOperandToCode (logicOperand) { - algebraOperandToCode(logicOperand.comparison.operandA.algebra.operandA) - if (logicOperand.comparison.operandA.algebra.picker.getSelected() !== '...') { - insertAlgebraOperator(logicOperand.comparison.operandA.algebra) - algebraOperandToCode(logicOperand.comparison.operandA.algebra.operandB) - } + let productParent = parent + let productProperties = properties - switch (logicOperand.comparison.picker.getSelected()) { - case 'Greater Than': { - code = code + ' > ' - break - } - case 'Less Than': { - code = code + ' < ' - break - } - case 'Greater or Equal Than': { - code = code + ' >= ' - break - } - case 'Less or Equal Than': { - code = code + ' <= ' - break - } - case 'Equal To': { - code = code + ' === ' - break - } - } + algebraOperand.propertyPicker = newPicker() + algebraOperand.propertyPicker.name = 'Property' + algebraOperand.propertyPicker.container.connectToParent(thisObject.container) + algebraOperand.propertyPicker.container.frame.position.x = 0 - algebraOperand.propertyPicker.container.frame.width / 2 + algebraOperand.propertyPicker.container.frame.width * 1.5 + algebraOperand.propertyPicker.container.frame.position.y = 0 - algebraOperand.propertyPicker.container.frame.height / 2 + yOffset + current = productParent[productProperties[0]] + current = current.properties + properties = Object.keys(current) + algebraOperand.propertyPicker.initialize(properties, current, productParent, 'properties') + parent = current + algebraOperand.propertyPicker.visible = visible - if (logicOperand.comparison.picker.getSelected() === 'Equal To') { - code = code + '"' + logicOperand.comparison.operandA.algebra.operandA.valuePicker.getSelected() + '"' - } else { - algebraOperandToCode(logicOperand.comparison.operandB.algebra.operandA) - if (logicOperand.comparison.operandB.algebra.picker.getSelected() !== '...') { - insertAlgebraOperator(logicOperand.comparison.operandB.algebra) - algebraOperandToCode(logicOperand.comparison.operandB.algebra.operandB) - } - } + algebraOperand.valuePicker = newPicker() + algebraOperand.valuePicker.name = 'Value' + algebraOperand.valuePicker.container.connectToParent(thisObject.container) + algebraOperand.valuePicker.container.frame.position.x = 0 - algebraOperand.valuePicker.container.frame.width / 2 + algebraOperand.valuePicker.container.frame.width * 3.5 + algebraOperand.valuePicker.container.frame.position.y = 0 - algebraOperand.valuePicker.container.frame.height / 2 + yOffset + ALGEBRA_SEPARATION + current = parent[properties[0]] + properties = current.possibleValues + algebraOperand.valuePicker.initialize(properties, current, parent, 'possibleValues') + parent = current + algebraOperand.valuePicker.visible = false + if (logicOperand.comparison.picker !== undefined && logicOperand.comparison.picker.getSelected() === 'Equal To') { + comparisonOperand.algebra.operandA.valuePicker.visible = true + } - function algebraOperandToCode (algebraOperand) { - if (algebraOperand.timeFramePicker.getSelected() === 'Any Time Frame') { - code = code + 'chart.atAnyTimeFrame' - } else { - code = code + 'chart.at' + algebraOperand.timeFramePicker.getSelected().replace('-', '') + algebraOperand.timeFramePicker = newPicker() + algebraOperand.timeFramePicker.name = 'Time Frame' + algebraOperand.timeFramePicker.container.connectToParent(thisObject.container) + algebraOperand.timeFramePicker.container.frame.position.x = 0 - algebraOperand.timeFramePicker.container.frame.width / 2 - algebraOperand.timeFramePicker.container.frame.width * 3.0 + algebraOperand.timeFramePicker.container.frame.position.y = 0 - algebraOperand.timeFramePicker.container.frame.height / 2 + yOffset + algebraOperand.timeFramePicker.container.frame.width = algebraOperand.timeFramePicker.container.frame.width / 2 + current = productParent[productProperties[0]] + properties = current.validTimeFrames + algebraOperand.timeFramePicker.initialize(properties, current, productParent, 'validTimeFrames') + parent = current + algebraOperand.timeFramePicker.visible = visible + + algebraOperand.botPicker.eventSuscriptionId = algebraOperand.dataMinePicker.container.eventHandler.listenToEvent('onParentChanged', algebraOperand.botPicker.onParentChanged) + algebraOperand.productPicker.eventSuscriptionId = algebraOperand.botPicker.container.eventHandler.listenToEvent('onParentChanged', algebraOperand.productPicker.onParentChanged) + algebraOperand.propertyPicker.eventSuscriptionId = algebraOperand.productPicker.container.eventHandler.listenToEvent('onParentChanged', algebraOperand.propertyPicker.onParentChanged) + algebraOperand.valuePicker.eventSuscriptionId = algebraOperand.propertyPicker.container.eventHandler.listenToEvent('onParentChanged', algebraOperand.valuePicker.onParentChanged) + algebraOperand.timeFramePicker.eventSuscriptionId = algebraOperand.productPicker.container.eventHandler.listenToEvent('onParentChanged', algebraOperand.timeFramePicker.onParentChanged) } - code = code + '.' + algebraOperand.productPicker.getSelected() - insertWhen(algebraOperand) - code = code + '.' + algebraOperand.propertyPicker.getSelected() - } + function updatePickers(logicOperand, comparisonOperand, algebraOperand) { + let codeArray = algebraOperand.code.split('.') - function insertAlgebraOperator (algebra) { - switch (algebra.picker.getSelected()) { - case '...': { - return - } - case 'Plus': { - code = code + ' + ' - return - } - case 'Minus': { - code = code + ' - ' - return - } - case 'Times': { - code = code + ' * ' - return - } - case 'Divided by': { - code = code + ' / ' - return - } + let codeTimeFrame + if (codeArray[1] !== undefined) { + codeTimeFrame = codeArray[1].substring(2, 4) + '-' + codeArray[1].substring(4, 7) + } + + let codeProduct + if (codeArray[2] !== undefined) { + codeProduct = codeArray[2] + } + + /* Parse When */ + let propertyDisplacement = 0 + let codeWhen = 'Current' + if (codeArray[3] === 'previous') { + propertyDisplacement++ + codeWhen = '1 Previous' + } + if (codeArray[4] === 'previous') { + propertyDisplacement++ + codeWhen = '2 Previous' + } + if (codeArray[5] === 'previous') { + propertyDisplacement++ + codeWhen = '3 Previous' + } + if (codeArray[6] === 'previous') { + propertyDisplacement++ + codeWhen = '4 Previous' + } + if (codeArray[7] === 'previous') { + propertyDisplacement++ + codeWhen = '5 Previous' + } + algebraOperand.whenPicker.setSelected(undefined, undefined, undefined, propertyDisplacement) + + let codeProperty + if (codeArray[3 + propertyDisplacement] !== undefined) { + codeProperty = codeArray[3 + propertyDisplacement] + } + + let codeValue = logicOperand.comparison.operandB.code.replace('"', '').replace('"', '') + + let dataMines = Object.keys(scanResult) + for (let i = 0; i < dataMines.length; i++) { + let dataMine = dataMines[i] + let dataMineObject = scanResult[dataMine] + let bots = Object.keys(dataMineObject) + for (let j = 0; j < bots.length; j++) { + let bot = bots[j] + let botObject = dataMineObject[bot] + let products = Object.keys(botObject) + for (let k = 0; k < products.length; k++) { + let product = products[k] + let productObject = botObject[product] + if (codeProduct === product) { + algebraOperand.dataMinePicker.setSelected(dataMines, scanResult, undefined, i) + algebraOperand.botPicker.setSelected(bots, dataMineObject, scanResult, j) + algebraOperand.productPicker.setSelected(products, botObject, dataMineObject, k) + let properties = Object.keys(productObject.properties) + for (let m = 0; m < properties.length; m++) { + let property = properties[m] + let propertyObject = productObject.properties[property] + if (codeProperty === property) { + algebraOperand.propertyPicker.setSelected(properties, productObject.properties, botObject, m) + let values = propertyObject.possibleValues + for (let n = 0; n < values.length; n++) { + let value = values[n] + let valueObject = propertyObject[value] + if (codeValue === value) { + algebraOperand.valuePicker.setSelected(values, propertyObject, productObject, n) + } + } + } + } + let timeFrames = productObject.validTimeFrames + for (let m = 0; m < timeFrames.length; m++) { + let timeFrame = timeFrames[m] + let timeFrameObject = productObject.validTimeFrames[timeFrame] + if (codeTimeFrame === timeFrame) { + algebraOperand.timeFramePicker.setSelected(timeFrames, productObject, botObject, m) + } + } + } + } + } + } } - } - function insertWhen (algebraOperand) { - switch (algebraOperand.whenPicker.getSelected()) { - case 'Current': { - return - } - case '1 Previous': { - code = code + '.previous' - return - } - case '2 Previous': { - code = code + '.previous.previous' - return - } - case '3 Previous': { - code = code + '.previous.previous.previous' - return - } - case '4 Previous': { - code = code + '.previous.previous.previous.previous' - return - } - case '5 Previous': { - code = code + '.previous.previous.previous.previous.previous' - return - } + } + + function scanDataMines() { + let selector = {} + + let workspace = canvas.designSpace.workspace.workspaceNode + + for (let i = 0; i < workspace.rootNodes.length; i++) { + let rootNode = workspace.rootNodes[i] + if (rootNode.type !== 'Data Mine') { continue } + let dataMine = rootNode + let dataMineName = loadPropertyFromNodeConfig(dataMine.payload, 'codeName') + selector[dataMineName] = {} + let bots = dataMine.sensorBots.concat(dataMine.indicatorBots) + for (let j = 0; j < bots.length; j++) { + let bot = bots[j] + let botName = loadPropertyFromNodeConfig(bot.payload, 'codeName') + let selectorDataMine = selector[dataMineName] + selectorDataMine[botName] = {} + for (let k = 0; k < bot.products.length; k++) { + let product = bot.products[k] + let productName = loadPropertyFromNodeConfig(product.payload, 'singularVariableName') + if (productName === undefined) { continue } + let selectorProduct = selectorDataMine[botName] + selectorProduct[productName] = { + properties: {} + } + if (product.record === undefined) { continue } + for (let m = 0; m < product.record.properties.length; m++) { + let property = product.record.properties[m] + let propertyName = loadPropertyFromNodeConfig(property.payload, 'codeName') + let selectorProperty = selectorProduct[productName] + selectorProperty = selectorProperty.properties + selectorProperty[propertyName] = {} + let possibleValues = loadPropertyFromNodeConfig(property.payload, 'possibleValues') + if (possibleValues === undefined) { possibleValues = [] } + let selectorPossibleValue = selectorProperty[propertyName] + selectorPossibleValue.possibleValues = possibleValues + } + let allPossibleTimeFrames = [] + for (let m = 0; m < product.datasets.length; m++) { + let dataset = product.datasets[m] + let validTimeFrames = loadPropertyFromNodeConfig(dataset.payload, 'validTimeFrames') + if (validTimeFrames !== undefined) { + allPossibleTimeFrames = allPossibleTimeFrames.concat(validTimeFrames) + } + } + let selectorValidTimeFrames = selectorProduct[productName] + selectorValidTimeFrames.validTimeFrames = allPossibleTimeFrames + + let productKeys = Object.keys(selectorProduct[productName]) + if (productKeys.length === 0) { + selectorProduct[productName] = undefined + } + } + let botKeys = Object.keys(selectorDataMine[botName]) + if (botKeys.length === 0) { + selectorDataMine[botName] = undefined + } + } + let dataMineKeys = Object.keys(selector[dataMineName]) + if (dataMineKeys.length === 0) { + selector[dataMineName] = undefined + } } - } - } - } - - function finalizePickers () { - if (conditionStructure === undefined) { return } - for (let i = 0; i < conditionStructure.logicOperands.length; i++) { - let logicOperand = conditionStructure.logicOperands[i] - finalizeOperator(logicOperand.comparison.operandA.algebra.operandA) - finalizeOperator(logicOperand.comparison.operandA.algebra.operandB) - finalizeOperator(logicOperand.comparison.operandB.algebra.operandA) - finalizeOperator(logicOperand.comparison.operandB.algebra.operandB) - - if (logicOperand.comparison.operandA.algebra.picker !== undefined) { - logicOperand.comparison.operandA.algebra.picker.container.eventHandler.stopListening(logicOperand.comparison.operandA.algebra.picker.eventSuscriptionId) - logicOperand.comparison.operandA.algebra.picker.finalize() - } - - if (logicOperand.comparison.operandB.algebra.picker !== undefined) { - logicOperand.comparison.operandB.algebra.picker.container.eventHandler.stopListening(logicOperand.comparison.operandB.algebra.picker.eventSuscriptionId) - logicOperand.comparison.operandB.algebra.picker.finalize() - } - - if (logicOperand.comparison.picker !== undefined) { - logicOperand.comparison.picker.container.eventHandler.stopListening(logicOperand.comparison.picker.eventSuscriptionId) - logicOperand.comparison.picker.finalize() - } - - if (logicOperand.picker !== undefined) { - logicOperand.picker.container.eventHandler.stopListening(logicOperand.picker.eventSuscriptionId) - logicOperand.picker.finalize() - } - } - } - - function finalizeOperator (operand) { - if (operand === undefined) { return } - - if (operand.whenPicker !== undefined) { - operand.whenPicker.finalize() - operand.whenPicker = undefined + scanResult = JSON.parse(JSON.stringify(selector)) } - if (operand.dataMinePicker !== undefined) { - operand.dataMinePicker.container.eventHandler.stopListening(operand.botPicker.eventSuscriptionId) - operand.dataMinePicker.finalize() - operand.dataMinePicker = undefined - } + function convertToCode() { + if (conditionStructure === undefined) { return } - if (operand.botPicker !== undefined) { - operand.botPicker.container.eventHandler.stopListening(operand.productPicker.eventSuscriptionId) - operand.botPicker.finalize() - operand.botPicker = undefined - } + // chart.at01hs.bollingerSubChannel.previous.previous.slope=== "Extreme" - if (operand.productPicker !== undefined) { - operand.productPicker.container.eventHandler.stopListening(operand.propertyPicker.eventSuscriptionId) - operand.productPicker.container.eventHandler.stopListening(operand.timeFramePicker.eventSuscriptionId) - operand.productPicker.finalize() - operand.productPicker = undefined - } + let code = '' - if (operand.propertyPicker !== undefined) { - operand.propertyPicker.container.eventHandler.stopListening(operand.valuePicker.eventSuscriptionId) - operand.propertyPicker.finalize() - operand.propertyPicker = undefined - } - - if (operand.valuePicker !== undefined) { - operand.valuePicker.finalize() - operand.valuePicker = undefined - } - - if (operand.timeFramePicker !== undefined) { - operand.timeFramePicker.finalize() - operand.timeFramePicker = undefined - } - } - - function onParentChanged (event, structureBranch) { - let logicOperand = structureBranch.logicOperand - - if (structureBranch.pickerName === 'Logic') { - if (event.selected === 0) { - if (logicOperand.index === 0) { - conditionStructure.logicOperands[1].visible = false - conditionStructure.logicOperands[2].visible = false - } - if (logicOperand.index === 1) { - conditionStructure.logicOperands[2].visible = false - } - } else { - if (logicOperand.index === 0) { - conditionStructure.logicOperands[1].visible = true - - if (conditionStructure.logicOperands[1].picker.getSelected() !== '...') { - conditionStructure.logicOperands[2].visible = true - } - } - if (logicOperand.index === 1) { - conditionStructure.logicOperands[2].visible = true - } - } - } - - if (structureBranch.pickerName === 'Algebra') { - if (event.selected === 0) { - setVisibility(structureBranch.comparisonOperand.algebra.operandB, false) - } else { - setVisibility(structureBranch.comparisonOperand.algebra.operandB, true) - } - } - - if (structureBranch.pickerName === 'Comparison') { - if (event.selected === 4) { - // this means Equal To - - logicOperand.comparison.operandA.algebra.operandA.valuePicker.visible = true - logicOperand.comparison.operandA.algebra.picker.visible = false - logicOperand.comparison.operandB.algebra.picker.visible = false - setVisibility(logicOperand.comparison.operandA.algebra.operandB, false) - setVisibility(logicOperand.comparison.operandB.algebra.operandA, false) - setVisibility(logicOperand.comparison.operandB.algebra.operandB, false) - } else { - logicOperand.comparison.operandA.algebra.operandA.valuePicker.visible = false - logicOperand.comparison.operandA.algebra.picker.visible = true - logicOperand.comparison.operandB.algebra.picker.visible = true - if (logicOperand.comparison.operandA.algebra.picker.getSelected() !== '...') { - setVisibility(logicOperand.comparison.operandA.algebra.operandB, true) + for (let i = 0; i < conditionStructure.logicOperands.length; i++) { + let logicOperand = conditionStructure.logicOperands[i] + logicOperandToCode(logicOperand) + if (logicOperand.picker.getSelected() !== 'OR') { + break + } else { + code = code + ' || ' + } } - if (logicOperand.comparison.picker.getSelected() !== 'Equal To') { - setVisibility(logicOperand.comparison.operandB.algebra.operandA, true) + thisObject.payload.node.code = code + + function logicOperandToCode(logicOperand) { + algebraOperandToCode(logicOperand.comparison.operandA.algebra.operandA) + if (logicOperand.comparison.operandA.algebra.picker.getSelected() !== '...') { + insertAlgebraOperator(logicOperand.comparison.operandA.algebra) + algebraOperandToCode(logicOperand.comparison.operandA.algebra.operandB) + } + + switch (logicOperand.comparison.picker.getSelected()) { + case 'Greater Than': { + code = code + ' > ' + break + } + case 'Less Than': { + code = code + ' < ' + break + } + case 'Greater or Equal Than': { + code = code + ' >= ' + break + } + case 'Less or Equal Than': { + code = code + ' <= ' + break + } + case 'Equal To': { + code = code + ' === ' + break + } + } + + if (logicOperand.comparison.picker.getSelected() === 'Equal To') { + code = code + '"' + logicOperand.comparison.operandA.algebra.operandA.valuePicker.getSelected() + '"' + } else { + algebraOperandToCode(logicOperand.comparison.operandB.algebra.operandA) + if (logicOperand.comparison.operandB.algebra.picker.getSelected() !== '...') { + insertAlgebraOperator(logicOperand.comparison.operandB.algebra) + algebraOperandToCode(logicOperand.comparison.operandB.algebra.operandB) + } + } + + function algebraOperandToCode(algebraOperand) { + if (algebraOperand.timeFramePicker.getSelected() === 'Any Time Frame') { + code = code + 'chart.atAnyTimeFrame' + } else { + code = code + 'chart.at' + algebraOperand.timeFramePicker.getSelected().replace('-', '') + } + + code = code + '.' + algebraOperand.productPicker.getSelected() + insertWhen(algebraOperand) + code = code + '.' + algebraOperand.propertyPicker.getSelected() + } + + function insertAlgebraOperator(algebra) { + switch (algebra.picker.getSelected()) { + case '...': { + return + } + case 'Plus': { + code = code + ' + ' + return + } + case 'Minus': { + code = code + ' - ' + return + } + case 'Times': { + code = code + ' * ' + return + } + case 'Divided by': { + code = code + ' / ' + return + } + } + } + function insertWhen(algebraOperand) { + switch (algebraOperand.whenPicker.getSelected()) { + case 'Current': { + return + } + case '1 Previous': { + code = code + '.previous' + return + } + case '2 Previous': { + code = code + '.previous.previous' + return + } + case '3 Previous': { + code = code + '.previous.previous.previous' + return + } + case '4 Previous': { + code = code + '.previous.previous.previous.previous' + return + } + case '5 Previous': { + code = code + '.previous.previous.previous.previous.previous' + return + } + } + } + } + } + + function finalizePickers() { + if (conditionStructure === undefined) { return } + for (let i = 0; i < conditionStructure.logicOperands.length; i++) { + let logicOperand = conditionStructure.logicOperands[i] + finalizeOperator(logicOperand.comparison.operandA.algebra.operandA) + finalizeOperator(logicOperand.comparison.operandA.algebra.operandB) + finalizeOperator(logicOperand.comparison.operandB.algebra.operandA) + finalizeOperator(logicOperand.comparison.operandB.algebra.operandB) + + if (logicOperand.comparison.operandA.algebra.picker !== undefined) { + logicOperand.comparison.operandA.algebra.picker.container.eventHandler.stopListening(logicOperand.comparison.operandA.algebra.picker.eventSuscriptionId) + logicOperand.comparison.operandA.algebra.picker.finalize() + } + + if (logicOperand.comparison.operandB.algebra.picker !== undefined) { + logicOperand.comparison.operandB.algebra.picker.container.eventHandler.stopListening(logicOperand.comparison.operandB.algebra.picker.eventSuscriptionId) + logicOperand.comparison.operandB.algebra.picker.finalize() + } + + if (logicOperand.comparison.picker !== undefined) { + logicOperand.comparison.picker.container.eventHandler.stopListening(logicOperand.comparison.picker.eventSuscriptionId) + logicOperand.comparison.picker.finalize() + } + + if (logicOperand.picker !== undefined) { + logicOperand.picker.container.eventHandler.stopListening(logicOperand.picker.eventSuscriptionId) + logicOperand.picker.finalize() + } + } + } + + function finalizeOperator(operand) { + if (operand === undefined) { return } + + if (operand.whenPicker !== undefined) { + operand.whenPicker.finalize() + operand.whenPicker = undefined } - if (logicOperand.comparison.operandB.algebra.picker.getSelected() !== '...') { - setVisibility(logicOperand.comparison.operandB.algebra.operandB, true) - } - } - } - - function setLogicOperanVisibility (logicOperand, isVisible) { - - } - - function setVisibility (algebraOperand, isVisible) { - algebraOperand.whenPicker.visible = isVisible - algebraOperand.dataMinePicker.visible = isVisible - algebraOperand.botPicker.visible = isVisible - algebraOperand.productPicker.visible = isVisible - algebraOperand.propertyPicker.visible = isVisible - algebraOperand.timeFramePicker.visible = isVisible - } - } - - function getContainer (point) { - let container - if (thisObject.visible === true) { - if (conditionStructure === undefined) { return } - - for (let i = 0; i < conditionStructure.logicOperands.length; i++) { - let logicOperand = conditionStructure.logicOperands[i] - if (logicOperand.visible !== true) { continue } - - container = operandGetContainer(point, logicOperand.comparison.operandA.algebra.operandA) - if (container !== undefined) { return container } - container = operandGetContainer(point, logicOperand.comparison.operandA.algebra.operandB) - if (container !== undefined) { return container } - container = operandGetContainer(point, logicOperand.comparison.operandB.algebra.operandA) - if (container !== undefined) { return container } - container = operandGetContainer(point, logicOperand.comparison.operandB.algebra.operandB) - if (container !== undefined) { return container } - - if (container = logicOperand.comparison.operandA.algebra.picker !== undefined) { - if (container = logicOperand.comparison.operandA.algebra.picker.visible === true) { - container = logicOperand.comparison.operandA.algebra.picker.getContainer(point) - if (container !== undefined) { return container } - } + if (operand.dataMinePicker !== undefined) { + operand.dataMinePicker.container.eventHandler.stopListening(operand.botPicker.eventSuscriptionId) + operand.dataMinePicker.finalize() + operand.dataMinePicker = undefined } - if (logicOperand.comparison.operandB.algebra.picker !== undefined) { - if (container = logicOperand.comparison.operandB.algebra.picker.visible === true) { - container = logicOperand.comparison.operandB.algebra.picker.getContainer(point) - if (container !== undefined) { return container } - } + if (operand.botPicker !== undefined) { + operand.botPicker.container.eventHandler.stopListening(operand.productPicker.eventSuscriptionId) + operand.botPicker.finalize() + operand.botPicker = undefined } - if (container = logicOperand.comparison.picker !== undefined) { - if (container = logicOperand.comparison.picker.visible === true) { - container = logicOperand.comparison.picker.getContainer(point) - if (container !== undefined) { return container } - } + if (operand.productPicker !== undefined) { + operand.productPicker.container.eventHandler.stopListening(operand.propertyPicker.eventSuscriptionId) + operand.productPicker.container.eventHandler.stopListening(operand.timeFramePicker.eventSuscriptionId) + operand.productPicker.finalize() + operand.productPicker = undefined } - if (container = logicOperand.picker !== undefined) { - if (container = logicOperand.picker.visible === true) { - container = logicOperand.picker.getContainer(point) - if (container !== undefined) { return container } - } + if (operand.propertyPicker !== undefined) { + operand.propertyPicker.container.eventHandler.stopListening(operand.valuePicker.eventSuscriptionId) + operand.propertyPicker.finalize() + operand.propertyPicker = undefined } - } - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - return thisObject.container - } else { - return undefined - } - } - } - - function operandGetContainer (point, operand) { - let container - if (operand.whenPicker !== undefined) { - if (operand.whenPicker.visible === true) { - container = operand.whenPicker.getContainer(point) - if (container !== undefined) { return container } - } - } - - if (operand.dataMinePicker !== undefined) { - if (operand.dataMinePicker.visible === true) { - container = operand.dataMinePicker.getContainer(point) - if (container !== undefined) { return container } - } - } - - if (operand.botPicker !== undefined) { - if (operand.botPicker.visible === true) { - container = operand.botPicker.getContainer(point) - if (container !== undefined) { return container } - } - } - - if (operand.productPicker !== undefined) { - if (operand.productPicker.visible === true) { - container = operand.productPicker.getContainer(point) - if (container !== undefined) { return container } - } - } - - if (operand.propertyPicker !== undefined) { - if (operand.propertyPicker.visible === true) { - container = operand.propertyPicker.getContainer(point) - if (container !== undefined) { return container } - } - } - - if (operand.valuePicker !== undefined) { - if (operand.valuePicker.visible === true) { - container = operand.valuePicker.getContainer(point) - if (container !== undefined) { return container } - } - } - - if (operand.timeFramePicker !== undefined) { - if (operand.timeFramePicker.visible === true) { - container = operand.timeFramePicker.getContainer(point) - if (container !== undefined) { return container } - } - } - } - - function physics () { - - } - - function drawBackground () { - thisObjectDrawBackground() - childrenDrawBackground() - } - - function childrenDrawBackground () { - if (conditionStructure === undefined) { return } - - for (let i = 0; i < conditionStructure.logicOperands.length; i++) { - let logicOperand = conditionStructure.logicOperands[i] - if (logicOperand.visible !== true) { continue } - - operandDrawBackground(logicOperand.comparison.operandA.algebra.operandA) - operandDrawBackground(logicOperand.comparison.operandA.algebra.operandB) - operandDrawBackground(logicOperand.comparison.operandB.algebra.operandA) - operandDrawBackground(logicOperand.comparison.operandB.algebra.operandB) - - if (logicOperand.comparison.operandA.algebra.picker !== undefined) { - if (logicOperand.comparison.operandA.algebra.picker.visible === true) { - logicOperand.comparison.operandA.algebra.picker.drawBackground() + if (operand.valuePicker !== undefined) { + operand.valuePicker.finalize() + operand.valuePicker = undefined } - } - if (logicOperand.comparison.operandB.algebra.picker !== undefined) { - if (logicOperand.comparison.operandB.algebra.picker.visible === true) { - logicOperand.comparison.operandB.algebra.picker.drawBackground() + + if (operand.timeFramePicker !== undefined) { + operand.timeFramePicker.finalize() + operand.timeFramePicker = undefined } - } - if (logicOperand.comparison.picker !== undefined) { - if (logicOperand.comparison.picker.visible === true) { - logicOperand.comparison.picker.drawBackground() + } + + function onParentChanged(event, structureBranch) { + let logicOperand = structureBranch.logicOperand + + if (structureBranch.pickerName === 'Logic') { + if (event.selected === 0) { + if (logicOperand.index === 0) { + conditionStructure.logicOperands[1].visible = false + conditionStructure.logicOperands[2].visible = false + } + if (logicOperand.index === 1) { + conditionStructure.logicOperands[2].visible = false + } + } else { + if (logicOperand.index === 0) { + conditionStructure.logicOperands[1].visible = true + + if (conditionStructure.logicOperands[1].picker.getSelected() !== '...') { + conditionStructure.logicOperands[2].visible = true + } + } + if (logicOperand.index === 1) { + conditionStructure.logicOperands[2].visible = true + } + } } - } - if (logicOperand.picker !== undefined) { - if (logicOperand.picker.visible === true) { - logicOperand.picker.drawBackground() + + if (structureBranch.pickerName === 'Algebra') { + if (event.selected === 0) { + setVisibility(structureBranch.comparisonOperand.algebra.operandB, false) + } else { + setVisibility(structureBranch.comparisonOperand.algebra.operandB, true) + } } - } - } - } - function operandDrawBackground (operand) { - if (operand === undefined) { return } + if (structureBranch.pickerName === 'Comparison') { + if (event.selected === 4) { + // this means Equal To - if (operand.whenPicker !== undefined) { - if (operand.whenPicker.visible === true) { - operand.whenPicker.drawBackground() - } - } + logicOperand.comparison.operandA.algebra.operandA.valuePicker.visible = true + logicOperand.comparison.operandA.algebra.picker.visible = false + logicOperand.comparison.operandB.algebra.picker.visible = false + setVisibility(logicOperand.comparison.operandA.algebra.operandB, false) + setVisibility(logicOperand.comparison.operandB.algebra.operandA, false) + setVisibility(logicOperand.comparison.operandB.algebra.operandB, false) + } else { + logicOperand.comparison.operandA.algebra.operandA.valuePicker.visible = false + logicOperand.comparison.operandA.algebra.picker.visible = true + logicOperand.comparison.operandB.algebra.picker.visible = true + if (logicOperand.comparison.operandA.algebra.picker.getSelected() !== '...') { + setVisibility(logicOperand.comparison.operandA.algebra.operandB, true) + } - if (operand.dataMinePicker !== undefined) { - if (operand.dataMinePicker.visible === true) { - operand.dataMinePicker.drawBackground() - } - } + if (logicOperand.comparison.picker.getSelected() !== 'Equal To') { + setVisibility(logicOperand.comparison.operandB.algebra.operandA, true) + } - if (operand.botPicker !== undefined) { - if (operand.botPicker.visible === true) { - operand.botPicker.drawBackground() - } - } - - if (operand.productPicker !== undefined) { - if (operand.productPicker.visible === true) { - operand.productPicker.drawBackground() - } - } - - if (operand.propertyPicker !== undefined) { - if (operand.propertyPicker.visible === true) { - operand.propertyPicker.drawBackground() - } - } - - if (operand.valuePicker !== undefined) { - if (operand.valuePicker.visible === true) { - operand.valuePicker.drawBackground() - } - } - - if (operand.timeFramePicker !== undefined) { - if (operand.timeFramePicker.visible === true) { - operand.timeFramePicker.drawBackground() - } - } - } - - function thisObjectDrawBackground () { - if (thisObject.visible === true) { - let position = { - x: 0, - y: 0 - } - - position = thisObject.container.frame.frameThisPoint(position) - - let radius = thisObject.container.frame.radius - - browserCanvasContext.beginPath() - browserCanvasContext.arc(position.x, position.y, radius + 3, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + 1 + ')' - browserCanvasContext.fill() - - browserCanvasContext.beginPath() - browserCanvasContext.arc(position.x, position.y, radius, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.GREY + ', ' + 1 + ')' - browserCanvasContext.fill() - } - } - - function drawForeground () { - thisObjectDrawForeground() - childrenDrawForeground() - } - - function childrenDrawForeground () { - if (conditionStructure === undefined) { return } - - for (let i = 0; i < conditionStructure.logicOperands.length; i++) { - let logicOperand = conditionStructure.logicOperands[i] - if (logicOperand.visible !== true) { continue } - - operandDrawForeground(logicOperand.comparison.operandA.algebra.operandA) - operandDrawForeground(logicOperand.comparison.operandA.algebra.operandB) - operandDrawForeground(logicOperand.comparison.operandB.algebra.operandA) - operandDrawForeground(logicOperand.comparison.operandB.algebra.operandB) - - if (logicOperand.comparison.operandA.algebra.picker !== undefined) { - if (logicOperand.comparison.operandA.algebra.picker.visible === true) { - logicOperand.comparison.operandA.algebra.picker.drawForeground() + if (logicOperand.comparison.operandB.algebra.picker.getSelected() !== '...') { + setVisibility(logicOperand.comparison.operandB.algebra.operandB, true) + } + } } - } - if (logicOperand.comparison.operandB.algebra.picker !== undefined) { - if (logicOperand.comparison.operandB.algebra.picker.visible === true) { - logicOperand.comparison.operandB.algebra.picker.drawForeground() + + function setLogicOperanVisibility(logicOperand, isVisible) { + } - } - if (logicOperand.comparison.picker !== undefined) { - if (logicOperand.comparison.picker.visible === true) { - logicOperand.comparison.picker.drawForeground() + + function setVisibility(algebraOperand, isVisible) { + algebraOperand.whenPicker.visible = isVisible + algebraOperand.dataMinePicker.visible = isVisible + algebraOperand.botPicker.visible = isVisible + algebraOperand.productPicker.visible = isVisible + algebraOperand.propertyPicker.visible = isVisible + algebraOperand.timeFramePicker.visible = isVisible } - } - if (logicOperand.picker !== undefined) { - if (logicOperand.picker.visible === true) { - logicOperand.picker.drawForeground() + } + + function getContainer(point) { + let container + if (thisObject.visible === true) { + if (conditionStructure === undefined) { return } + + for (let i = 0; i < conditionStructure.logicOperands.length; i++) { + let logicOperand = conditionStructure.logicOperands[i] + if (logicOperand.visible !== true) { continue } + + container = operandGetContainer(point, logicOperand.comparison.operandA.algebra.operandA) + if (container !== undefined) { return container } + container = operandGetContainer(point, logicOperand.comparison.operandA.algebra.operandB) + if (container !== undefined) { return container } + container = operandGetContainer(point, logicOperand.comparison.operandB.algebra.operandA) + if (container !== undefined) { return container } + container = operandGetContainer(point, logicOperand.comparison.operandB.algebra.operandB) + if (container !== undefined) { return container } + + if (container = logicOperand.comparison.operandA.algebra.picker !== undefined) { + if (container = logicOperand.comparison.operandA.algebra.picker.visible === true) { + container = logicOperand.comparison.operandA.algebra.picker.getContainer(point) + if (container !== undefined) { return container } + } + } + + if (logicOperand.comparison.operandB.algebra.picker !== undefined) { + if (container = logicOperand.comparison.operandB.algebra.picker.visible === true) { + container = logicOperand.comparison.operandB.algebra.picker.getContainer(point) + if (container !== undefined) { return container } + } + } + + if (container = logicOperand.comparison.picker !== undefined) { + if (container = logicOperand.comparison.picker.visible === true) { + container = logicOperand.comparison.picker.getContainer(point) + if (container !== undefined) { return container } + } + } + + if (container = logicOperand.picker !== undefined) { + if (container = logicOperand.picker.visible === true) { + container = logicOperand.picker.getContainer(point) + if (container !== undefined) { return container } + } + } + } + + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + return thisObject.container + } else { + return undefined + } } - } - } - } - - function operandDrawForeground (operand) { - if (operand === undefined) { return } - - if (operand.whenPicker !== undefined) { - if (operand.whenPicker.visible === true) { - operand.whenPicker.drawForeground() - } } - if (operand.dataMinePicker !== undefined) { - if (operand.dataMinePicker.visible === true) { - operand.dataMinePicker.drawForeground() - } + function operandGetContainer(point, operand) { + let container + if (operand.whenPicker !== undefined) { + if (operand.whenPicker.visible === true) { + container = operand.whenPicker.getContainer(point) + if (container !== undefined) { return container } + } + } + + if (operand.dataMinePicker !== undefined) { + if (operand.dataMinePicker.visible === true) { + container = operand.dataMinePicker.getContainer(point) + if (container !== undefined) { return container } + } + } + + if (operand.botPicker !== undefined) { + if (operand.botPicker.visible === true) { + container = operand.botPicker.getContainer(point) + if (container !== undefined) { return container } + } + } + + if (operand.productPicker !== undefined) { + if (operand.productPicker.visible === true) { + container = operand.productPicker.getContainer(point) + if (container !== undefined) { return container } + } + } + + if (operand.propertyPicker !== undefined) { + if (operand.propertyPicker.visible === true) { + container = operand.propertyPicker.getContainer(point) + if (container !== undefined) { return container } + } + } + + if (operand.valuePicker !== undefined) { + if (operand.valuePicker.visible === true) { + container = operand.valuePicker.getContainer(point) + if (container !== undefined) { return container } + } + } + + if (operand.timeFramePicker !== undefined) { + if (operand.timeFramePicker.visible === true) { + container = operand.timeFramePicker.getContainer(point) + if (container !== undefined) { return container } + } + } } - if (operand.botPicker !== undefined) { - if (operand.botPicker.visible === true) { - operand.botPicker.drawForeground() - } + function physics() { + } - if (operand.productPicker !== undefined) { - if (operand.productPicker.visible === true) { - operand.productPicker.drawForeground() - } + function drawBackground() { + thisObjectDrawBackground() + childrenDrawBackground() } - if (operand.propertyPicker !== undefined) { - if (operand.propertyPicker.visible === true) { - operand.propertyPicker.drawForeground() - } + function childrenDrawBackground() { + if (conditionStructure === undefined) { return } + + for (let i = 0; i < conditionStructure.logicOperands.length; i++) { + let logicOperand = conditionStructure.logicOperands[i] + if (logicOperand.visible !== true) { continue } + + operandDrawBackground(logicOperand.comparison.operandA.algebra.operandA) + operandDrawBackground(logicOperand.comparison.operandA.algebra.operandB) + operandDrawBackground(logicOperand.comparison.operandB.algebra.operandA) + operandDrawBackground(logicOperand.comparison.operandB.algebra.operandB) + + if (logicOperand.comparison.operandA.algebra.picker !== undefined) { + if (logicOperand.comparison.operandA.algebra.picker.visible === true) { + logicOperand.comparison.operandA.algebra.picker.drawBackground() + } + } + if (logicOperand.comparison.operandB.algebra.picker !== undefined) { + if (logicOperand.comparison.operandB.algebra.picker.visible === true) { + logicOperand.comparison.operandB.algebra.picker.drawBackground() + } + } + if (logicOperand.comparison.picker !== undefined) { + if (logicOperand.comparison.picker.visible === true) { + logicOperand.comparison.picker.drawBackground() + } + } + if (logicOperand.picker !== undefined) { + if (logicOperand.picker.visible === true) { + logicOperand.picker.drawBackground() + } + } + } } - if (operand.valuePicker !== undefined) { - if (operand.valuePicker.visible === true) { - operand.valuePicker.drawForeground() - } + function operandDrawBackground(operand) { + if (operand === undefined) { return } + + if (operand.whenPicker !== undefined) { + if (operand.whenPicker.visible === true) { + operand.whenPicker.drawBackground() + } + } + + if (operand.dataMinePicker !== undefined) { + if (operand.dataMinePicker.visible === true) { + operand.dataMinePicker.drawBackground() + } + } + + if (operand.botPicker !== undefined) { + if (operand.botPicker.visible === true) { + operand.botPicker.drawBackground() + } + } + + if (operand.productPicker !== undefined) { + if (operand.productPicker.visible === true) { + operand.productPicker.drawBackground() + } + } + + if (operand.propertyPicker !== undefined) { + if (operand.propertyPicker.visible === true) { + operand.propertyPicker.drawBackground() + } + } + + if (operand.valuePicker !== undefined) { + if (operand.valuePicker.visible === true) { + operand.valuePicker.drawBackground() + } + } + + if (operand.timeFramePicker !== undefined) { + if (operand.timeFramePicker.visible === true) { + operand.timeFramePicker.drawBackground() + } + } } - if (operand.timeFramePicker !== undefined) { - if (operand.timeFramePicker.visible === true) { - operand.timeFramePicker.drawForeground() - } - } - } + function thisObjectDrawBackground() { + if (thisObject.visible === true) { + let position = { + x: 0, + y: 0 + } - function thisObjectDrawForeground () { - if (thisObject.visible === true) { - const SIZE = 36 - drawIcon(timeFrameIcon, 0, 0, -PICKER_WIDTH * 3.25, -PICKER_HEIGHT * 7, SIZE, thisObject.container) - drawIcon(dataMineIcon, 0, 0, -PICKER_WIDTH * 2.5, -PICKER_HEIGHT * 7, SIZE, thisObject.container) - drawIcon(botIcon, 0, 0, -PICKER_WIDTH * 1.5, -PICKER_HEIGHT * 7, SIZE, thisObject.container) - drawIcon(whenIcon, 0, 0, -PICKER_WIDTH * 0.5, -PICKER_HEIGHT * 7, SIZE, thisObject.container) - drawIcon(productIcon, 0, 0, PICKER_WIDTH * 0.5, -PICKER_HEIGHT * 7, SIZE, thisObject.container) - drawIcon(propertyIcon, 0, 0, PICKER_WIDTH * 1.45, -PICKER_HEIGHT * 7, SIZE, thisObject.container) - drawIcon(operationIcon, 0, 0, PICKER_WIDTH * 2.45, -PICKER_HEIGHT * 7, SIZE, thisObject.container) - drawIcon(valueIcon, 0, 0, PICKER_WIDTH * 3.45, -PICKER_HEIGHT * 7, SIZE, thisObject.container) + position = thisObject.container.frame.frameThisPoint(position) + + let radius = thisObject.container.frame.radius + + browserCanvasContext.beginPath() + browserCanvasContext.arc(position.x, position.y, radius + 3, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + 1 + ')' + browserCanvasContext.fill() + + browserCanvasContext.beginPath() + browserCanvasContext.arc(position.x, position.y, radius, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.GREY + ', ' + 1 + ')' + browserCanvasContext.fill() + } + } + + function drawForeground() { + thisObjectDrawForeground() + childrenDrawForeground() + } + + function childrenDrawForeground() { + if (conditionStructure === undefined) { return } + + for (let i = 0; i < conditionStructure.logicOperands.length; i++) { + let logicOperand = conditionStructure.logicOperands[i] + if (logicOperand.visible !== true) { continue } + + operandDrawForeground(logicOperand.comparison.operandA.algebra.operandA) + operandDrawForeground(logicOperand.comparison.operandA.algebra.operandB) + operandDrawForeground(logicOperand.comparison.operandB.algebra.operandA) + operandDrawForeground(logicOperand.comparison.operandB.algebra.operandB) + + if (logicOperand.comparison.operandA.algebra.picker !== undefined) { + if (logicOperand.comparison.operandA.algebra.picker.visible === true) { + logicOperand.comparison.operandA.algebra.picker.drawForeground() + } + } + if (logicOperand.comparison.operandB.algebra.picker !== undefined) { + if (logicOperand.comparison.operandB.algebra.picker.visible === true) { + logicOperand.comparison.operandB.algebra.picker.drawForeground() + } + } + if (logicOperand.comparison.picker !== undefined) { + if (logicOperand.comparison.picker.visible === true) { + logicOperand.comparison.picker.drawForeground() + } + } + if (logicOperand.picker !== undefined) { + if (logicOperand.picker.visible === true) { + logicOperand.picker.drawForeground() + } + } + } + } + + function operandDrawForeground(operand) { + if (operand === undefined) { return } + + if (operand.whenPicker !== undefined) { + if (operand.whenPicker.visible === true) { + operand.whenPicker.drawForeground() + } + } + + if (operand.dataMinePicker !== undefined) { + if (operand.dataMinePicker.visible === true) { + operand.dataMinePicker.drawForeground() + } + } + + if (operand.botPicker !== undefined) { + if (operand.botPicker.visible === true) { + operand.botPicker.drawForeground() + } + } + + if (operand.productPicker !== undefined) { + if (operand.productPicker.visible === true) { + operand.productPicker.drawForeground() + } + } + + if (operand.propertyPicker !== undefined) { + if (operand.propertyPicker.visible === true) { + operand.propertyPicker.drawForeground() + } + } + + if (operand.valuePicker !== undefined) { + if (operand.valuePicker.visible === true) { + operand.valuePicker.drawForeground() + } + } + + if (operand.timeFramePicker !== undefined) { + if (operand.timeFramePicker.visible === true) { + operand.timeFramePicker.drawForeground() + } + } + } + + function thisObjectDrawForeground() { + if (thisObject.visible === true) { + const SIZE = 36 + drawIcon(timeFrameIcon, 0, 0, -PICKER_WIDTH * 3.25, -PICKER_HEIGHT * 7, SIZE, thisObject.container) + drawIcon(dataMineIcon, 0, 0, -PICKER_WIDTH * 2.5, -PICKER_HEIGHT * 7, SIZE, thisObject.container) + drawIcon(botIcon, 0, 0, -PICKER_WIDTH * 1.5, -PICKER_HEIGHT * 7, SIZE, thisObject.container) + drawIcon(whenIcon, 0, 0, -PICKER_WIDTH * 0.5, -PICKER_HEIGHT * 7, SIZE, thisObject.container) + drawIcon(productIcon, 0, 0, PICKER_WIDTH * 0.5, -PICKER_HEIGHT * 7, SIZE, thisObject.container) + drawIcon(propertyIcon, 0, 0, PICKER_WIDTH * 1.45, -PICKER_HEIGHT * 7, SIZE, thisObject.container) + drawIcon(operationIcon, 0, 0, PICKER_WIDTH * 2.45, -PICKER_HEIGHT * 7, SIZE, thisObject.container) + drawIcon(valueIcon, 0, 0, PICKER_WIDTH * 3.45, -PICKER_HEIGHT * 7, SIZE, thisObject.container) + } } - } } diff --git a/CanvasApp/FloatingSpace/ConfigEditor.js b/CanvasApp/FloatingSpace/ConfigEditor.js index b25331644..dee760f94 100644 --- a/CanvasApp/FloatingSpace/ConfigEditor.js +++ b/CanvasApp/FloatingSpace/ConfigEditor.js @@ -1,205 +1,205 @@ -function newConfigEditor () { - const MODULE_NAME = 'Config Editor' +function newConfigEditor() { + const MODULE_NAME = 'Config Editor' - let thisObject = { - isVisibleFunction: undefined, - visible: false, - imagePathOK: undefined, - imagePathNOT_OK: undefined, - rawRadius: undefined, - targetRadius: undefined, - currentRadius: undefined, - container: undefined, - payload: undefined, - deactivate: deactivate, - activate: activate, - physics: physics, - drawBackground: drawBackground, - drawForeground: drawForeground, - getContainer: getContainer, - finalize: finalize, - initialize: initialize - } - - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) - thisObject.container.isClickeable = false - thisObject.container.isDraggeable = false - thisObject.container.detectMouseOver = false - thisObject.container.frame.radius = 0 - thisObject.container.frame.position.x = 0 - thisObject.container.frame.position.y = 0 - - let isMouseOver = false - let SIZE_FACTOR = 1 - - return thisObject - - function finalize () { - thisObject.container.finalize() - thisObject.container = undefined - thisObject.payload = undefined - thisObject.isVisibleFunction = undefined - } - - function initialize () { - - } - - function deactivate () { - if (thisObject.visible === true) { - thisObject.visible = false - let textArea = document.getElementById('textArea') - textArea.style.display = 'none' - thisObject.payload.node.code = textArea.value - - try { - let code = JSON.parse(thisObject.payload.node.code) - } catch (err) { - thisObject.payload.uiObject.setErrorMessage(err.message, 10) - } - } - EDITOR_ON_FOCUS = false - } - - function activate (payload) { - thisObject.visible = true - thisObject.payload = payload - thisObject.rawRadius = 8 - thisObject.targetRadius = thisObject.container.frame.radius - thisObject.currentRadius = 0 - thisObject.payload.uiObject.setErrorMessage('', 0) - - let textArea = document.getElementById('textArea') - textArea.value = payload.node.code - textArea.style = 'resize: none;' + - ' border: none;' + - ' outline: none;' + - 'box-shadow: none;' + - 'overflow:hidden;' + - 'font-family: ' + UI_FONT.PRIMARY + ';' + - 'font-size: 14px;' + - 'background-color: rgb(' + UI_COLOR.DARK_TURQUOISE + ');' + - 'color:rgb(255, 255, 255);' + - 'width: ' + thisObject.container.frame.width + 'px;' + - 'height: ' + thisObject.container.frame.height + 'px' - textArea.style.display = 'block' - textArea.focus() - EDITOR_ON_FOCUS = true - } - - function getContainer (point) { - let container - if (thisObject.visible === true) { - if (point.x === VERY_LARGE_NUMBER) { - /* The the mouse leaves the canvas, and event of mouse over with a ridiculous coordinate is triggered so that - anyone can react. In our case, the code editor has a text area that is not part of the canvas, so the event is - triggered. We compensate recognizing this coordinate and returning our container. */ - return thisObject.container - } - - if (thisObject.container.frame.isThisPointHere(point, true, false) === true) { - return thisObject.container - } else { - return undefined - } - } - } - - function physics () { - if (Math.abs(thisObject.currentRadius - thisObject.targetRadius) >= 0.5) { - if (thisObject.currentRadius < thisObject.targetRadius) { - thisObject.currentRadius = thisObject.currentRadius + 0.5 - } else { - thisObject.currentRadius = thisObject.currentRadius - 0.5 - } + let thisObject = { + isVisibleFunction: undefined, + visible: false, + imagePathOK: undefined, + imagePathNOT_OK: undefined, + rawRadius: undefined, + targetRadius: undefined, + currentRadius: undefined, + container: undefined, + payload: undefined, + deactivate: deactivate, + activate: activate, + physics: physics, + drawBackground: drawBackground, + drawForeground: drawForeground, + getContainer: getContainer, + finalize: finalize, + initialize: initialize } + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) + thisObject.container.isClickeable = false + thisObject.container.isDraggeable = false + thisObject.container.detectMouseOver = false + thisObject.container.frame.radius = 0 thisObject.container.frame.position.x = 0 thisObject.container.frame.position.y = 0 - thisObject.container.frame.width = thisObject.container.frame.radius * 1.8 * SIZE_FACTOR - thisObject.container.frame.height = thisObject.container.frame.radius * 1 * SIZE_FACTOR + let isMouseOver = false + let SIZE_FACTOR = 1 - let textAreaPosition = { - x: 0 - thisObject.container.frame.width / 2, - y: 0 - thisObject.container.frame.height * 3 / 7 + CURRENT_TOP_MARGIN + return thisObject + + function finalize() { + thisObject.container.finalize() + thisObject.container = undefined + thisObject.payload = undefined + thisObject.isVisibleFunction = undefined } - textAreaPosition = thisObject.container.frame.frameThisPoint(textAreaPosition) - if (thisObject.visible === true) { - let checkPosition = { - x: textAreaPosition.x, - y: textAreaPosition.y - CURRENT_TOP_MARGIN - } - if (thisObject.isVisibleFunction(checkPosition) === false) { - deactivate() - } - } - if (thisObject.visible === true) { - let textAreaDiv = document.getElementById('textAreaDiv') - textAreaDiv.style = 'position:fixed; top:' + textAreaPosition.y + 'px; left:' + textAreaPosition.x + 'px; z-index:1; ' - } - } + function initialize() { - function drawBackground () { - if (thisObject.visible === true) { - let position = { - x: 0, - y: 0 - } - - position = thisObject.container.frame.frameThisPoint(position) - - let radius = thisObject.container.frame.radius * SIZE_FACTOR - - if (radius > 0.5) { - browserCanvasContext.beginPath() - browserCanvasContext.arc(position.x, position.y, radius * 1.3 + 3, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + 1 + ')' - browserCanvasContext.fill() - - browserCanvasContext.beginPath() - browserCanvasContext.arc(position.x, position.y, radius * 1.3, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.DARK_TURQUOISE + ', ' + 1 + ')' - browserCanvasContext.fill() - } - } - } - function drawForeground () { - let iconPosition = { - x: 0, - y: thisObject.currentRadius * 1.5 } - iconPosition = thisObject.container.frame.frameThisPoint(iconPosition) + function deactivate() { + if (thisObject.visible === true) { + thisObject.visible = false + let textArea = document.getElementById('textArea') + textArea.style.display = 'none' + thisObject.payload.node.config = textArea.value - /* Menu Item */ + try { + let config = JSON.parse(thisObject.payload.node.config) + } catch (err) { + thisObject.payload.uiObject.setErrorMessage(err.message, 10) + } + } + EDITOR_ON_FOCUS = false + } - if (thisObject.canDrawIcon === true && thisObject.currentRadius > 1) { - browserCanvasContext.drawImage(thisObject.icon, iconPosition.x - thisObject.currentRadius, iconPosition.y - thisObject.currentRadius, thisObject.currentRadius * 2, thisObject.currentRadius * 2) + function activate(payload) { + thisObject.visible = true + thisObject.payload = payload + thisObject.rawRadius = 8 + thisObject.targetRadius = thisObject.container.frame.radius + thisObject.currentRadius = 0 + thisObject.payload.uiObject.resetErrorMessage() - /* Menu Label */ + let textArea = document.getElementById('textArea') + textArea.value = payload.node.config + textArea.style = 'resize: none;' + + ' border: none;' + + ' outline: none;' + + 'box-shadow: none;' + + 'overflow:hidden;' + + 'font-family: ' + UI_FONT.PRIMARY + ';' + + 'font-size: 14px;' + + 'background-color: rgb(' + UI_COLOR.DARK_TURQUOISE + ');' + + 'color:rgb(255, 255, 255);' + + 'width: ' + thisObject.container.frame.width + 'px;' + + 'height: ' + thisObject.container.frame.height + 'px' + textArea.style.display = 'block' + textArea.focus() + EDITOR_ON_FOCUS = true + } - let label = 'Code looks good!' - let labelPoint - let fontSize = 10 + function getContainer(point) { + let container + if (thisObject.visible === true) { + if (point.x === VERY_LARGE_NUMBER) { + /* The the mouse leaves the canvas, and event of mouse over with a ridiculous coordinate is triggered so that + anyone can react. In our case, the config editor has a text area that is not part of the canvas, so the event is + triggered. We compensate recognizing this coordinate and returning our container. */ + return thisObject.container + } - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + if (thisObject.container.frame.isThisPointHere(point, true, false) === true) { + return thisObject.container + } else { + return undefined + } + } + } - if (label !== undefined && thisObject.currentRadius >= thisObject.targetRadius) { - labelPoint = { - x: iconPosition.x + thisObject.currentRadius + 10, - y: iconPosition.y + fontSize * FONT_ASPECT_RATIO + function physics() { + if (Math.abs(thisObject.currentRadius - thisObject.targetRadius) >= 0.5) { + if (thisObject.currentRadius < thisObject.targetRadius) { + thisObject.currentRadius = thisObject.currentRadius + 0.5 + } else { + thisObject.currentRadius = thisObject.currentRadius - 0.5 + } } - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) - } + thisObject.container.frame.position.x = 0 + thisObject.container.frame.position.y = 0 + + thisObject.container.frame.width = thisObject.container.frame.radius * 1 * SIZE_FACTOR + thisObject.container.frame.height = thisObject.container.frame.radius * 1 * SIZE_FACTOR + + let textAreaPosition = { + x: 0 - thisObject.container.frame.width / 2, + y: 0 - thisObject.container.frame.height * 3 / 7 + CURRENT_TOP_MARGIN + } + + textAreaPosition = thisObject.container.frame.frameThisPoint(textAreaPosition) + if (thisObject.visible === true) { + let checkPosition = { + x: textAreaPosition.x, + y: textAreaPosition.y - CURRENT_TOP_MARGIN + } + if (thisObject.isVisibleFunction(checkPosition) === false) { + deactivate() + } + } + if (thisObject.visible === true) { + let textAreaDiv = document.getElementById('textAreaDiv') + textAreaDiv.style = 'position:fixed; top:' + textAreaPosition.y + 'px; left:' + textAreaPosition.x + 'px; z-index:1; ' + } + } + + function drawBackground() { + if (thisObject.visible === true) { + let position = { + x: 0, + y: 0 + } + + position = thisObject.container.frame.frameThisPoint(position) + + let radius = thisObject.container.frame.radius * SIZE_FACTOR + + if (radius > 0.5) { + browserCanvasContext.beginPath() + browserCanvasContext.arc(position.x, position.y, radius + 3, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + 1 + ')' + browserCanvasContext.fill() + + browserCanvasContext.beginPath() + browserCanvasContext.arc(position.x, position.y, radius , 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.DARK_TURQUOISE + ', ' + 1 + ')' + browserCanvasContext.fill() + } + } + } + function drawForeground() { + let iconPosition = { + x: 0, + y: thisObject.currentRadius * 1.5 + } + + iconPosition = thisObject.container.frame.frameThisPoint(iconPosition) + + /* Menu Item */ + + if (thisObject.canDrawIcon === true && thisObject.currentRadius > 1) { + browserCanvasContext.drawImage(thisObject.icon, iconPosition.x - thisObject.currentRadius, iconPosition.y - thisObject.currentRadius, thisObject.currentRadius * 2, thisObject.currentRadius * 2) + + /* Menu Label */ + + let label = 'Code looks good!' + let labelPoint + let fontSize = 10 + + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + + if (label !== undefined && thisObject.currentRadius >= thisObject.targetRadius) { + labelPoint = { + x: iconPosition.x + thisObject.currentRadius + 10, + y: iconPosition.y + fontSize * FONT_ASPECT_RATIO + } + + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) + } + } } - } } diff --git a/CanvasApp/FloatingSpace/FloatingLayer.js b/CanvasApp/FloatingSpace/FloatingLayer.js index 4653bd532..e5a2a52a1 100644 --- a/CanvasApp/FloatingSpace/FloatingLayer.js +++ b/CanvasApp/FloatingSpace/FloatingLayer.js @@ -13,22 +13,22 @@ 3. UI Objects: These are small balls that represent parts of an strategy. */ -function newFloatingLayer () { - const MODULE_NAME = 'Floating Layer' - const ERROR_LOG = true - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME +function newFloatingLayer() { + const MODULE_NAME = 'Floating Layer' + const ERROR_LOG = true + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME - let thisObject = { - addFloatingObject: addFloatingObject, - removeFloatingObject: removeFloatingObject, - getFloatingObject: getFloatingObject, - physics: physics, - draw: draw, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - } + let thisObject = { + addFloatingObject: addFloatingObject, + removeFloatingObject: removeFloatingObject, + getFloatingObject: getFloatingObject, + physics: physics, + draw: draw, + getContainer: getContainer, + initialize: initialize, + finalize: finalize + } /* When objects are added to this layer they are added to the invisibleFloatingObjects array and they stay there because they are invisible. @@ -38,7 +38,7 @@ function newFloatingLayer () { To save resources, the physics engine only apply its calculations to visible floating objects. */ - let invisibleFloatingObjects = [] + let invisibleFloatingObjects = [] /* Floating objects are accesible to plotters because they carry a "payload" object that was creted by them. This object includes the position @@ -48,206 +48,214 @@ function newFloatingLayer () { array. */ - let visibleFloatingObjects = [] + let visibleFloatingObjects = [] - let maxTargetRepulsionForce = 0.001 - let currentHandle = 0 + let maxTargetRepulsionForce = 0.001 + let currentHandle = 0 + let invisiblePhysicsIntervalId - return thisObject + return thisObject - function finalize () { - invisibleFloatingObjects = [] - visibleFloatingObjects = [] - } - - function initialize () { - - /* We dont need to initialize anything right now. */ - } - - function getContainer (point) { - let container - - for (let i = 0; i < visibleFloatingObjects.length; i++) { - let floatingObject = visibleFloatingObjects[i] - container = floatingObject.getContainer(point) - if (container !== undefined) { return container } + function finalize() { + clearInterval(invisiblePhysicsIntervalId) + invisibleFloatingObjects = [] + visibleFloatingObjects = [] } - for (let i = 0; i < invisibleFloatingObjects.length; i++) { - let floatingObject = invisibleFloatingObjects[i] - container = floatingObject.getContainer(point) - if (container !== undefined) { return container } + function initialize() { + invisiblePhysicsIntervalId = setInterval(invisiblePhysics, 10000) } - return container - } + function getContainer(point) { + let container - function addFloatingObject (pFloatingObject) { - currentHandle++ - pFloatingObject.handle = currentHandle // Math.floor((Math.random() * 10000000) + 1); - visibleFloatingObjects.push(pFloatingObject) - } + for (let i = 0; i < visibleFloatingObjects.length; i++) { + let floatingObject = visibleFloatingObjects[i] + container = floatingObject.getContainer(point) + if (container !== undefined) { return container } + } - function removeFloatingObject (pFloatingObjectHandle) { - for (let i = 0; i < invisibleFloatingObjects.length; i++) { - let floatingObject = invisibleFloatingObjects[i] - - if (floatingObject.handle === pFloatingObjectHandle) { - invisibleFloatingObjects.splice(i, 1) // Delete item from array. - return - } + return container } - for (let i = 0; i < visibleFloatingObjects.length; i++) { - let floatingObject = visibleFloatingObjects[i] - - if (floatingObject.handle === pFloatingObjectHandle) { - visibleFloatingObjects.splice(i, 1) // Delete item from array. - return - } + function addFloatingObject(pFloatingObject) { + currentHandle++ + pFloatingObject.handle = currentHandle // Math.floor((Math.random() * 10000000) + 1); + visibleFloatingObjects.push(pFloatingObject) } - } - function getFloatingObject (pFloatingObjectHandle, pFloatingObjectIndex) { + function removeFloatingObject(pFloatingObjectHandle) { + for (let i = 0; i < invisibleFloatingObjects.length; i++) { + let floatingObject = invisibleFloatingObjects[i] + + if (floatingObject.handle === pFloatingObjectHandle) { + invisibleFloatingObjects.splice(i, 1) // Delete item from array. + return + } + } + + for (let i = 0; i < visibleFloatingObjects.length; i++) { + let floatingObject = visibleFloatingObjects[i] + + if (floatingObject.handle === pFloatingObjectHandle) { + visibleFloatingObjects.splice(i, 1) // Delete item from array. + return + } + } + } + + function getFloatingObject(pFloatingObjectHandle, pFloatingObjectIndex) { /* There are two ways to look for a floating object: by handle or by index. The search by handle is done on the visible and invisible array. The search by index is done only on the visible ones. The search by index is usually needed when mouse events occurs. In those cases only objects visible to the end usser matters. */ - try { - if (pFloatingObjectHandle !== undefined) { + try { + if (pFloatingObjectHandle !== undefined) { + for (let i = 0; i < invisibleFloatingObjects.length; i++) { + let floatingObject = invisibleFloatingObjects[i] + + if (floatingObject.handle === pFloatingObjectHandle) { + return floatingObject + } + } + + for (let i = 0; i < visibleFloatingObjects.length; i++) { + let floatingObject = visibleFloatingObjects[i] + + if (floatingObject.handle === pFloatingObjectHandle) { + return floatingObject + } + } + } + + if (pFloatingObjectIndex !== undefined) { + for (let i = 0; i < visibleFloatingObjects.length; i++) { + let floatingObject = visibleFloatingObjects[i] + + if (i === pFloatingObjectIndex) { + return floatingObject + } + } + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] getFloatingObject -> err= ' + err.stack) } + } + } + + function draw() { + drawInvisibleObjects() + drawVisibleObjects() + } + + function drawInvisibleObjects() { for (let i = 0; i < invisibleFloatingObjects.length; i++) { - let floatingObject = invisibleFloatingObjects[i] + let floatingObject = invisibleFloatingObjects[i] + floatingObject.drawBackground() + } - if (floatingObject.handle === pFloatingObjectHandle) { - return floatingObject - } + for (let i = 0; i < invisibleFloatingObjects.length; i++) { + let floatingObject = invisibleFloatingObjects[i] + floatingObject.drawMiddleground() + } + + for (let i = 0; i < invisibleFloatingObjects.length; i++) { + let floatingObject = invisibleFloatingObjects[invisibleFloatingObjects.length - i - 1] + floatingObject.drawForeground() + } + } + + function drawVisibleObjects() { + for (let i = 0; i < visibleFloatingObjects.length; i++) { + let floatingObject = visibleFloatingObjects[i] + floatingObject.drawBackground() } for (let i = 0; i < visibleFloatingObjects.length; i++) { - let floatingObject = visibleFloatingObjects[i] - - if (floatingObject.handle === pFloatingObjectHandle) { - return floatingObject - } + let floatingObject = visibleFloatingObjects[i] + floatingObject.drawMiddleground() } - } - if (pFloatingObjectIndex !== undefined) { for (let i = 0; i < visibleFloatingObjects.length; i++) { - let floatingObject = visibleFloatingObjects[i] - - if (i === pFloatingObjectIndex) { - return floatingObject - } + let floatingObject = visibleFloatingObjects[visibleFloatingObjects.length - i - 1] + floatingObject.drawForeground() } - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] getFloatingObject -> err= ' + err.stack) } - } - } - function draw () { - drawInvisibleObjects() - drawVisibleObjects() - } + /* Invisible objects on focus (freezed) should still have some priority */ + for (let i = 0; i < invisibleFloatingObjects.length; i++) { + let floatingObject = invisibleFloatingObjects[i] + floatingObject.drawOnFocus() + } - function drawInvisibleObjects () { - for (let i = 0; i < invisibleFloatingObjects.length; i++) { - let floatingObject = invisibleFloatingObjects[i] - floatingObject.drawBackground() + for (let i = 0; i < visibleFloatingObjects.length; i++) { + let floatingObject = visibleFloatingObjects[i] + floatingObject.drawOnFocus() + } } - for (let i = 0; i < invisibleFloatingObjects.length; i++) { - let floatingObject = invisibleFloatingObjects[i] - floatingObject.drawMiddleground() + function collapsePhysics(thisObject) { + let parent = thisObject.payload.chainParent + if (parent === undefined) { return } + if (parent.payload === undefined) { return } + if (parent.payload.floatingObject === undefined) { return } + + thisObject.isParentCollapsed = parent.payload.floatingObject.isCollapsed + if (thisObject.collapsedManually === false) { + thisObject.isCollapsed = parent.payload.floatingObject.isCollapsed + } } - for (let i = 0; i < invisibleFloatingObjects.length; i++) { - let floatingObject = invisibleFloatingObjects[invisibleFloatingObjects.length - i - 1] - floatingObject.drawForeground() - } - } + function makeVisible() { + let newInvisibleArray = [] + for (let i = 0; i < invisibleFloatingObjects.length; i++) { + let floatingObject = invisibleFloatingObjects[i] - function drawVisibleObjects () { - for (let i = 0; i < visibleFloatingObjects.length; i++) { - let floatingObject = visibleFloatingObjects[i] - floatingObject.drawBackground() + collapsePhysics(floatingObject) + + if (floatingObject.isParentCollapsed === false) { + visibleFloatingObjects.push(floatingObject) + } else { + newInvisibleArray.push(floatingObject) + } + } + invisibleFloatingObjects = newInvisibleArray } - for (let i = 0; i < visibleFloatingObjects.length; i++) { - let floatingObject = visibleFloatingObjects[i] - floatingObject.drawMiddleground() + function makeInvisible() { + let newVisibleArray = [] + for (let i = 0; i < visibleFloatingObjects.length; i++) { + let floatingObject = visibleFloatingObjects[i] + + collapsePhysics(floatingObject) + + if (floatingObject.isParentCollapsed === true) { + invisibleFloatingObjects.push(floatingObject) + } else { + newVisibleArray.push(floatingObject) + } + } + visibleFloatingObjects = newVisibleArray } - for (let i = 0; i < visibleFloatingObjects.length; i++) { - let floatingObject = visibleFloatingObjects[visibleFloatingObjects.length - i - 1] - floatingObject.drawForeground() - } - - /* Invisible objects on focus (freezed) should still have some priority */ - for (let i = 0; i < invisibleFloatingObjects.length; i++) { - let floatingObject = invisibleFloatingObjects[i] - floatingObject.drawOnFocus() - } - - for (let i = 0; i < visibleFloatingObjects.length; i++) { - let floatingObject = visibleFloatingObjects[i] - floatingObject.drawOnFocus() - } - } - - function collapsePhysics (thisObject) { - let parent = thisObject.payload.chainParent - if (parent === undefined) { return } - if (parent.payload === undefined) { return } - if (parent.payload.floatingObject === undefined) { return } - - thisObject.isParentCollapsed = parent.payload.floatingObject.isCollapsed - if (thisObject.collapsedManually === false) { - thisObject.isCollapsed = parent.payload.floatingObject.isCollapsed - } - } - - function makeVisible () { - for (let i = 0; i < invisibleFloatingObjects.length; i++) { - let floatingObject = invisibleFloatingObjects[i] - - collapsePhysics(floatingObject) - - if (floatingObject.isParentCollapsed === false) { - visibleFloatingObjects.push(floatingObject) - invisibleFloatingObjects.splice(i, 1) // Delete item from array. - makeVisible() - return // Only one at the time. - } - } - } - - function makeInvisible () { - for (let i = 0; i < visibleFloatingObjects.length; i++) { - let floatingObject = visibleFloatingObjects[i] - - collapsePhysics(floatingObject) - - if (floatingObject.isParentCollapsed === true) { - invisibleFloatingObjects.push(floatingObject) - visibleFloatingObjects.splice(i, 1) // Delete item from array. - makeInvisible() - return // Only one at the time. - } - } - } - /******************************************/ /* */ /* Physics Engine Follows */ /* */ /******************************************/ - function physics () { + function invisiblePhysics() { + /* + Note that the Physics for invisible objects is called with a fixed time interval, + since it does not need the high intensity physics called during the animation. + */ + for (let i = 0; i < invisibleFloatingObjects.length; i++) { + let floatingObject = invisibleFloatingObjects[i] + floatingObject.invisiblePhysics() + } + } + + function physics() { /* The Physics engine is hooked at the animation loop, so it executes very very often. According to this Physics engine, each floating object has a position and a speed. In fact, each floating object has two positions at the same time: @@ -262,483 +270,475 @@ function newFloatingLayer () { */ - try { - makeVisible() - makeInvisible() - invisiblePhysics() - visiblePhysics() - applyPhysics() + try { + makeVisible() + makeInvisible() + visiblePhysics() + applyPhysics() - function invisiblePhysics () { - for (let i = 0; i < invisibleFloatingObjects.length; i++) { - let floatingObject = invisibleFloatingObjects[i] - floatingObject.invisiblePhysics() - } - } + function visiblePhysics() { + for (let i = 0; i < visibleFloatingObjects.length; i++) { + let floatingObject = visibleFloatingObjects[i] + floatingObject.physics() + } + } - function visiblePhysics () { - for (let i = 0; i < visibleFloatingObjects.length; i++) { - let floatingObject = visibleFloatingObjects[i] - floatingObject.physics() - } - } - - function applyPhysics () { + function applyPhysics() { /* This function makes all the calculations to apply phisycs on all visible floatingObjects in this layer. */ - try { - DEBUG.variable1 = 'Invisible Floating Objets: ' + invisibleFloatingObjects.length - DEBUG.variable2 = 'Visible Floating Objets: ' + visibleFloatingObjects.length + try { + DEBUG.variable1 = 'Invisible Floating Objets: ' + invisibleFloatingObjects.length + DEBUG.variable2 = 'Visible Floating Objets: ' + visibleFloatingObjects.length - for (let i = 0; i < visibleFloatingObjects.length; i++) { - let floatingObject = visibleFloatingObjects[i] - if (floatingObject.isFrozen === true) { continue } + for (let i = 0; i < visibleFloatingObjects.length; i++) { + let floatingObject = visibleFloatingObjects[i] + if (floatingObject.isFrozen === true) { continue } - /* From here on, only if they are not too far. */ - if (canvas.floatingSpace.isItFar(floatingObject.payload)) { continue } + /* From here on, only if they are not too far. */ + if (canvas.floatingSpace.isItFar(floatingObject.payload)) { continue } - if (floatingObject.positionLocked === false) { - floatingObject.container.frame.position.x = floatingObject.container.frame.position.x + floatingObject.currentSpeed.x - floatingObject.container.frame.position.y = floatingObject.container.frame.position.y + floatingObject.currentSpeed.y - } + if (floatingObject.positionLocked === false) { + floatingObject.container.frame.position.x = floatingObject.container.frame.position.x + floatingObject.currentSpeed.x + floatingObject.container.frame.position.y = floatingObject.container.frame.position.y + floatingObject.currentSpeed.y + } - if (floatingObject.friction < floatingObject.targetFriction) { - floatingObject.friction = floatingObject.friction + 0.00001 - } else { - floatingObject.friction = floatingObject.friction - 0.00001 - } + if (floatingObject.friction < floatingObject.targetFriction) { + floatingObject.friction = floatingObject.friction + 0.00001 + } else { + floatingObject.friction = floatingObject.friction - 0.00001 + } - floatingObject.currentSpeed.x = floatingObject.currentSpeed.x * floatingObject.friction // Desaceleration factor. - floatingObject.currentSpeed.y = floatingObject.currentSpeed.y * floatingObject.friction // Desaceleration factor. + floatingObject.currentSpeed.x = floatingObject.currentSpeed.x * floatingObject.friction // Desaceleration factor. + floatingObject.currentSpeed.y = floatingObject.currentSpeed.y * floatingObject.friction // Desaceleration factor. - let payload = { - position: undefined, - visible: false - } + let payload = { + position: undefined, + visible: false + } - switch (floatingObject.type) { - case 'UI Object': { - payload.targetPosition = floatingObject.payload.targetPosition - payload.visible = floatingObject.payload.visible - break - } - default: { - break - } - } + switch (floatingObject.type) { + case 'UI Object': { + payload.targetPosition = floatingObject.payload.targetPosition + payload.visible = floatingObject.payload.visible + break + } + default: { + break + } + } - if (floatingObject.container.frame.position.x < payload.targetPosition.x) { - floatingObject.currentSpeed.x = floatingObject.currentSpeed.x + 0.005 - } else { - floatingObject.currentSpeed.x = floatingObject.currentSpeed.x - 0.005 - } + if (floatingObject.container.frame.position.x < payload.targetPosition.x) { + floatingObject.currentSpeed.x = floatingObject.currentSpeed.x + 0.005 + } else { + floatingObject.currentSpeed.x = floatingObject.currentSpeed.x - 0.005 + } - if (floatingObject.container.frame.position.y < payload.targetPosition.y) { - floatingObject.currentSpeed.y = floatingObject.currentSpeed.y + 0.005 - } else { - floatingObject.currentSpeed.y = floatingObject.currentSpeed.y - 0.005 - } + if (floatingObject.container.frame.position.y < payload.targetPosition.y) { + floatingObject.currentSpeed.y = floatingObject.currentSpeed.y + 0.005 + } else { + floatingObject.currentSpeed.y = floatingObject.currentSpeed.y - 0.005 + } - const MAX_SPEED = 10 + const MAX_SPEED = 10 - if (floatingObject.currentSpeed.x > MAX_SPEED) { - floatingObject.currentSpeed.x = MAX_SPEED - } + if (floatingObject.currentSpeed.x > MAX_SPEED) { + floatingObject.currentSpeed.x = MAX_SPEED + } - if (floatingObject.currentSpeed.y > MAX_SPEED) { - floatingObject.currentSpeed.y = MAX_SPEED - } + if (floatingObject.currentSpeed.y > MAX_SPEED) { + floatingObject.currentSpeed.y = MAX_SPEED + } - if (floatingObject.currentSpeed.x < -MAX_SPEED) { - floatingObject.currentSpeed.x = -MAX_SPEED - } + if (floatingObject.currentSpeed.x < -MAX_SPEED) { + floatingObject.currentSpeed.x = -MAX_SPEED + } - if (floatingObject.currentSpeed.y < -MAX_SPEED) { - floatingObject.currentSpeed.y = -MAX_SPEED - } + if (floatingObject.currentSpeed.y < -MAX_SPEED) { + floatingObject.currentSpeed.y = -MAX_SPEED + } // We let the Floating Object animate the physics loops by itself. - checkBoundaries(floatingObject) + checkBoundaries(floatingObject) /* Collision Control */ - for (let k = i + 1; k < visibleFloatingObjects.length; k++) { - if (colliding(visibleFloatingObjects[i], visibleFloatingObjects[k])) { - resolveCollision(visibleFloatingObjects[k], visibleFloatingObjects[i]) - } - } + for (let k = i + 1; k < visibleFloatingObjects.length; k++) { + if (colliding(visibleFloatingObjects[i], visibleFloatingObjects[k])) { + resolveCollision(visibleFloatingObjects[k], visibleFloatingObjects[i]) + } + } /* Calculate repulsion force produced by all other floatingObjects */ - repulsionForceBetweenFloatingObjects(i) + repulsionForceBetweenFloatingObjects(i) - targetRepulsionForce(i) + targetRepulsionForce(i) - gravityForce(floatingObject, payload) + gravityForce(floatingObject, payload) - proximityBetweenFloatingObjects(i) - } + proximityBetweenFloatingObjects(i) + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] physics -> applyPhysics -> err= ' + err.stack) } + } + } } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] physics -> applyPhysics -> err= ' + err.stack) } + if (ERROR_LOG === true) { logger.write('[ERROR] physics -> err= ' + err.stack) } } - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] physics -> err= ' + err.stack) } - } - } - - function checkBoundaries (floatingObject) { - if (floatingObject.container.frame.position.x - floatingObject.container.frame.radius < 0) { - floatingObject.container.frame.position.x = floatingObject.container.frame.radius - floatingObject.currentSpeed.x = -floatingObject.currentSpeed.x } - if (floatingObject.container.frame.position.x + floatingObject.container.frame.radius > canvas.floatingSpace.container.frame.width) { - floatingObject.container.frame.position.x = canvas.floatingSpace.container.frame.width - floatingObject.container.frame.radius - floatingObject.currentSpeed.x = -floatingObject.currentSpeed.x + function checkBoundaries(floatingObject) { + if (floatingObject.container.frame.position.x - floatingObject.container.frame.radius < 0) { + floatingObject.container.frame.position.x = floatingObject.container.frame.radius + floatingObject.currentSpeed.x = -floatingObject.currentSpeed.x + } + + if (floatingObject.container.frame.position.x + floatingObject.container.frame.radius > canvas.floatingSpace.container.frame.width) { + floatingObject.container.frame.position.x = canvas.floatingSpace.container.frame.width - floatingObject.container.frame.radius + floatingObject.currentSpeed.x = -floatingObject.currentSpeed.x + } + + if (floatingObject.container.frame.position.y - floatingObject.container.frame.radius < 0) { + floatingObject.container.frame.position.y = floatingObject.container.frame.radius + floatingObject.currentSpeed.y = -floatingObject.currentSpeed.y + } + + if (floatingObject.container.frame.position.y + floatingObject.container.frame.radius > canvas.floatingSpace.container.frame.height) { + floatingObject.container.frame.position.y = canvas.floatingSpace.container.frame.height - floatingObject.container.frame.radius + floatingObject.currentSpeed.y = -floatingObject.currentSpeed.y + } } - if (floatingObject.container.frame.position.y - floatingObject.container.frame.radius < 0) { - floatingObject.container.frame.position.y = floatingObject.container.frame.radius - floatingObject.currentSpeed.y = -floatingObject.currentSpeed.y - } - - if (floatingObject.container.frame.position.y + floatingObject.container.frame.radius > canvas.floatingSpace.container.frame.height) { - floatingObject.container.frame.position.y = canvas.floatingSpace.container.frame.height - floatingObject.container.frame.radius - floatingObject.currentSpeed.y = -floatingObject.currentSpeed.y - } - } - - function gravityForce (floatingObject, payload) { - try { + function gravityForce(floatingObject, payload) { + try { /* We simulate a kind of gravity towards the target point of each floatingObject. This force will make the floatingObject to keep pushing to reach that point. */ - const coulomb = 0.00001 - const minForce = 0.01 + const coulomb = 0.00001 + const minForce = 0.01 - let d = Math.sqrt(Math.pow(payload.targetPosition.x - floatingObject.container.frame.position.x, 2) + Math.pow(payload.targetPosition.y - floatingObject.container.frame.position.y, 2)) // ... we calculate the distance ... + let d = Math.sqrt(Math.pow(payload.targetPosition.x - floatingObject.container.frame.position.x, 2) + Math.pow(payload.targetPosition.y - floatingObject.container.frame.position.y, 2)) // ... we calculate the distance ... - let force = coulomb * d * d / floatingObject.currentMass // In this case the mass of the floatingObject affects the gravity force that it receives, that gives priority to target position to bigger floatingObjects. + let force = coulomb * d * d / floatingObject.currentMass // In this case the mass of the floatingObject affects the gravity force that it receives, that gives priority to target position to bigger floatingObjects. - if (force < minForce) { // We need this attraction force to overcome the friction we imposed to the system. - force = minForce - } + if (force < minForce) { // We need this attraction force to overcome the friction we imposed to the system. + force = minForce + } - let pos1 = { - x: floatingObject.container.frame.position.x, - y: floatingObject.container.frame.position.y - } + let pos1 = { + x: floatingObject.container.frame.position.x, + y: floatingObject.container.frame.position.y + } - let pos2 = { - x: payload.targetPosition.x, - y: payload.targetPosition.y - } + let pos2 = { + x: payload.targetPosition.x, + y: payload.targetPosition.y + } - let posDiff = { // Next we need the vector resulting from the 2 positions. - x: pos2.x - pos1.x, - y: pos2.y - pos1.y - } + let posDiff = { // Next we need the vector resulting from the 2 positions. + x: pos2.x - pos1.x, + y: pos2.y - pos1.y + } - if (d !== 0) { - let unitVector = { // To find the unit vector, we divide each component by the magnitude of the vector. - x: posDiff.x / d, - y: posDiff.y / d + if (d !== 0) { + let unitVector = { // To find the unit vector, we divide each component by the magnitude of the vector. + x: posDiff.x / d, + y: posDiff.y / d + } + + let forceVector = { + x: unitVector.x * force, + y: unitVector.y * force + } + + /* We add the force vector to the speed vector */ + if (isNaN(forceVector.x) === false && isNaN(forceVector.y) === false) { + floatingObject.currentSpeed.x = floatingObject.currentSpeed.x + forceVector.x + floatingObject.currentSpeed.y = floatingObject.currentSpeed.y + forceVector.y + } + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] gravityForce -> err= ' + err.stack) } } - - let forceVector = { - x: unitVector.x * force, - y: unitVector.y * force - } - - /* We add the force vector to the speed vector */ - if (isNaN(forceVector.x) === false && isNaN(forceVector.y) === false) { - floatingObject.currentSpeed.x = floatingObject.currentSpeed.x + forceVector.x - floatingObject.currentSpeed.y = floatingObject.currentSpeed.y + forceVector.y - } - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] gravityForce -> err= ' + err.stack) } } - } - function repulsionForceBetweenFloatingObjects (currentFloatingObject) { - try { + function repulsionForceBetweenFloatingObjects(currentFloatingObject) { + try { /* We generate a repulsion force between floatingObjects, that prevents them to be collisioning so often. */ - const coulomb = 2 + const coulomb = 2 - let floatingObject1 = visibleFloatingObjects[currentFloatingObject] + let floatingObject1 = visibleFloatingObjects[currentFloatingObject] - for (let i = 0; i < visibleFloatingObjects.length; i++) { - // The force to be applied is considering all other floatingObjects... + for (let i = 0; i < visibleFloatingObjects.length; i++) { + // The force to be applied is considering all other floatingObjects... - if (i !== currentFloatingObject) { - // ... except for the current one. + if (i !== currentFloatingObject) { + // ... except for the current one. - let floatingObject2 = visibleFloatingObjects[i] // So, for each floatingObject... + let floatingObject2 = visibleFloatingObjects[i] // So, for each floatingObject... - let d = Math.sqrt(Math.pow(floatingObject2.container.frame.position.x - floatingObject1.container.frame.position.x, 2) + Math.pow(floatingObject2.container.frame.position.y - floatingObject1.container.frame.position.y, 2)) // ... we calculate the distance ... + let d = Math.sqrt(Math.pow(floatingObject2.container.frame.position.x - floatingObject1.container.frame.position.x, 2) + Math.pow(floatingObject2.container.frame.position.y - floatingObject1.container.frame.position.y, 2)) // ... we calculate the distance ... - let force = coulomb * floatingObject2.currentMass / (d * d) // ... and with it the repulsion force. + let force = coulomb * floatingObject2.currentMass / (d * d) // ... and with it the repulsion force. /* We need to put a hard limit to this force, in order to to eject very little floatingObjects to the infinite and beyond. */ - if (force > 1) { - force = 1 - } + if (force > 1) { + force = 1 + } - let pos1 = { - x: floatingObject1.container.frame.position.x, - y: floatingObject1.container.frame.position.y - } + let pos1 = { + x: floatingObject1.container.frame.position.x, + y: floatingObject1.container.frame.position.y + } - let pos2 = { - x: floatingObject2.container.frame.position.x, - y: floatingObject2.container.frame.position.y - } + let pos2 = { + x: floatingObject2.container.frame.position.x, + y: floatingObject2.container.frame.position.y + } - let posDiff = { // Next we need the vector resulting from the 2 positions. - x: pos2.x - pos1.x, - y: pos2.y - pos1.y - } + let posDiff = { // Next we need the vector resulting from the 2 positions. + x: pos2.x - pos1.x, + y: pos2.y - pos1.y + } - let unitVector = { // To find the unit vector, we divide each component by the magnitude of the vector. - x: posDiff.x / d, - y: posDiff.y / d - } + let unitVector = { // To find the unit vector, we divide each component by the magnitude of the vector. + x: posDiff.x / d, + y: posDiff.y / d + } - let forceVector = { - x: unitVector.x * force, - y: unitVector.y * force - } + let forceVector = { + x: unitVector.x * force, + y: unitVector.y * force + } /* We substract the force vector to the speed vector of the current floatingObject */ - if (isNaN(forceVector.x) === false && isNaN(forceVector.y) === false) { - floatingObject1.currentSpeed.x = floatingObject1.currentSpeed.x - forceVector.x - floatingObject1.currentSpeed.y = floatingObject1.currentSpeed.y - forceVector.y - } - } - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] repulsionForceBetweenFloatingObjects -> err= ' + err.stack) } - } - } - - function proximityBetweenFloatingObjects (currentFloatingObject) { - try { - let floatingObject1 = visibleFloatingObjects[currentFloatingObject] - floatingObject1.nearbyFloatingObjects = [] - for (let i = 0; i < visibleFloatingObjects.length; i++) { - if (i !== currentFloatingObject) { - let floatingObject2 = visibleFloatingObjects[i] // So, for each floatingObject... - - let d = Math.sqrt(Math.pow(floatingObject2.container.frame.position.x - floatingObject1.container.frame.position.x, 2) + Math.pow(floatingObject2.container.frame.position.y - floatingObject1.container.frame.position.y, 2)) // ... we calculate the distance ... - - if (floatingObject1.nearbyFloatingObjects.length === 0) { - floatingObject1.nearbyFloatingObjects.push([d, floatingObject2]) - } else { - let recordAdded = false - for (let j = 0; j < floatingObject1.nearbyFloatingObjects.length; j++) { - let recordedDistance = floatingObject1.nearbyFloatingObjects[j][0] - if (d < recordedDistance) { - floatingObject1.nearbyFloatingObjects.splice(j, 0, [d, floatingObject2]) - recordAdded = true - break - } + if (isNaN(forceVector.x) === false && isNaN(forceVector.y) === false) { + floatingObject1.currentSpeed.x = floatingObject1.currentSpeed.x - forceVector.x + floatingObject1.currentSpeed.y = floatingObject1.currentSpeed.y - forceVector.y + } + } } - if (recordAdded === false) { - floatingObject1.nearbyFloatingObjects.push([d, floatingObject2]) - } - } - floatingObject1.nearbyFloatingObjects.splice(10, floatingObject1.nearbyFloatingObjects.length) + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] repulsionForceBetweenFloatingObjects -> err= ' + err.stack) } } - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] proximityBetweenFloatingObjects -> err= ' + err.stack) } } - } - function targetRepulsionForce (currentFloatingObject) { - try { + function proximityBetweenFloatingObjects(currentFloatingObject) { + try { + let floatingObject1 = visibleFloatingObjects[currentFloatingObject] + floatingObject1.nearbyFloatingObjects = [] + for (let i = 0; i < visibleFloatingObjects.length; i++) { + if (i !== currentFloatingObject) { + let floatingObject2 = visibleFloatingObjects[i] // So, for each floatingObject... + + let d = Math.sqrt(Math.pow(floatingObject2.container.frame.position.x - floatingObject1.container.frame.position.x, 2) + Math.pow(floatingObject2.container.frame.position.y - floatingObject1.container.frame.position.y, 2)) // ... we calculate the distance ... + + if (floatingObject1.nearbyFloatingObjects.length === 0) { + floatingObject1.nearbyFloatingObjects.push([d, floatingObject2]) + } else { + let recordAdded = false + for (let j = 0; j < floatingObject1.nearbyFloatingObjects.length; j++) { + let recordedDistance = floatingObject1.nearbyFloatingObjects[j][0] + if (d < recordedDistance) { + floatingObject1.nearbyFloatingObjects.splice(j, 0, [d, floatingObject2]) + recordAdded = true + break + } + } + if (recordAdded === false) { + floatingObject1.nearbyFloatingObjects.push([d, floatingObject2]) + } + } + floatingObject1.nearbyFloatingObjects.splice(10, floatingObject1.nearbyFloatingObjects.length) + } + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] proximityBetweenFloatingObjects -> err= ' + err.stack) } + } + } + + function targetRepulsionForce(currentFloatingObject) { + try { /* We generate a repulsion force between floatingObjects, that prevents them to be collisioning so often. */ - const coulomb = 2 + const coulomb = 2 - let floatingObject1 = visibleFloatingObjects[currentFloatingObject] + let floatingObject1 = visibleFloatingObjects[currentFloatingObject] - for (let i = 0; i < visibleFloatingObjects.length; i++) { - // The force to be applied is considering all other floatingObjects... + for (let i = 0; i < visibleFloatingObjects.length; i++) { + // The force to be applied is considering all other floatingObjects... - let floatingObject2 = visibleFloatingObjects[i] // So, for each floatingObject... + let floatingObject2 = visibleFloatingObjects[i] // So, for each floatingObject... - let payload = { - position: undefined - } + let payload = { + position: undefined + } - switch (floatingObject2.type) { - case 'UI Object': { - payload.targetPosition = floatingObject2.payload.targetPosition - break - } - default: { - break - } - } + switch (floatingObject2.type) { + case 'UI Object': { + payload.targetPosition = floatingObject2.payload.targetPosition + break + } + default: { + break + } + } - let d = Math.sqrt(Math.pow(payload.targetPosition.x - floatingObject1.container.frame.position.x, 2) + Math.pow(payload.targetPosition.y - floatingObject1.container.frame.position.y, 2)) // ... we calculate the distance ... + let d = Math.sqrt(Math.pow(payload.targetPosition.x - floatingObject1.container.frame.position.x, 2) + Math.pow(payload.targetPosition.y - floatingObject1.container.frame.position.y, 2)) // ... we calculate the distance ... - let force = coulomb * floatingObject2.currentMass / (d * d) // ... and with it the repulsion force. + let force = coulomb * floatingObject2.currentMass / (d * d) // ... and with it the repulsion force. /* We need to put a hard limit to this force, in order to to eject very little floatingObjects to the infinite and beyond. */ - if (force > maxTargetRepulsionForce) { - force = maxTargetRepulsionForce + if (force > maxTargetRepulsionForce) { + force = maxTargetRepulsionForce + } + + let pos1 = { + x: floatingObject1.container.frame.position.x, + y: floatingObject1.container.frame.position.y + } + + let pos2 = { + x: payload.targetPosition.x, + y: payload.targetPosition.y + } + + let posDiff = { // Next we need the vector resulting from the 2 positions. + x: pos2.x - pos1.x, + y: pos2.y - pos1.y + } + + if (d !== 0) { + let unitVector = { // To find the unit vector, we divide each component by the magnitude of the vector. + x: posDiff.x / d, + y: posDiff.y / d + } + + let forceVector = { + x: unitVector.x * force, + y: unitVector.y * force + } + + /* We substract the force vector to the speed vector of the current floatingObject */ + + if (isNaN(forceVector.x) === false && isNaN(forceVector.y) === false) { + floatingObject1.currentSpeed.x = floatingObject1.currentSpeed.x - forceVector.x + floatingObject1.currentSpeed.y = floatingObject1.currentSpeed.y - forceVector.y + } + } + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] targetRepulsionForce -> err= ' + err.stack) } } - - let pos1 = { - x: floatingObject1.container.frame.position.x, - y: floatingObject1.container.frame.position.y - } - - let pos2 = { - x: payload.targetPosition.x, - y: payload.targetPosition.y - } - - let posDiff = { // Next we need the vector resulting from the 2 positions. - x: pos2.x - pos1.x, - y: pos2.y - pos1.y - } - - if (d !== 0) { - let unitVector = { // To find the unit vector, we divide each component by the magnitude of the vector. - x: posDiff.x / d, - y: posDiff.y / d - } - - let forceVector = { - x: unitVector.x * force, - y: unitVector.y * force - } - - /* We substract the force vector to the speed vector of the current floatingObject */ - - if (isNaN(forceVector.x) === false && isNaN(forceVector.y) === false) { - floatingObject1.currentSpeed.x = floatingObject1.currentSpeed.x - forceVector.x - floatingObject1.currentSpeed.y = floatingObject1.currentSpeed.y - forceVector.y - } - } - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] targetRepulsionForce -> err= ' + err.stack) } } - } - function colliding (floatingObject1, floatingObject2) { - try { + function colliding(floatingObject1, floatingObject2) { + try { /* This function detects weather 2 floatingObjects collide with each other. */ - let r1 = floatingObject1.container.frame.radius - let r2 = floatingObject2.container.frame.radius + let r1 = floatingObject1.container.frame.radius + let r2 = floatingObject2.container.frame.radius - let distance = Math.sqrt(Math.pow(floatingObject2.container.frame.position.x - floatingObject1.container.frame.position.x, 2) + Math.pow(floatingObject2.container.frame.position.y - floatingObject1.container.frame.position.y, 2)) + let distance = Math.sqrt(Math.pow(floatingObject2.container.frame.position.x - floatingObject1.container.frame.position.x, 2) + Math.pow(floatingObject2.container.frame.position.y - floatingObject1.container.frame.position.y, 2)) - if (distance > (r1 + r2)) { + if (distance > (r1 + r2)) { // No solutions, the circles are too far apart. - return false - } else if (distance <= r1 + r2) { + return false + } else if (distance <= r1 + r2) { // One circle contains the other. - return true - } else if ((distance === 0) && (r1 === r2)) { + return true + } else if ((distance === 0) && (r1 === r2)) { // the circles coincide. - return true - } else return true - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] colliding -> err= ' + err.stack) } + return true + } else return true + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] colliding -> err= ' + err.stack) } + } } - } - function distance (x1, y1, x2, y2) { - return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)) - } + function distance(x1, y1, x2, y2) { + return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)) + } - function resolveCollision (floatingObject1, floatingObject2) { - try { + function resolveCollision(floatingObject1, floatingObject2) { + try { /* This function changes speed and position of floatingObjects that are in collision */ - let collisionision_angle = Math.atan2((floatingObject2.container.frame.position.y - floatingObject1.container.frame.position.y), (floatingObject2.container.frame.position.x - floatingObject1.container.frame.position.x)) + let collisionision_angle = Math.atan2((floatingObject2.container.frame.position.y - floatingObject1.container.frame.position.y), (floatingObject2.container.frame.position.x - floatingObject1.container.frame.position.x)) - let speed1 = Math.sqrt(floatingObject1.currentSpeed.x * floatingObject1.currentSpeed.x + floatingObject1.currentSpeed.y * floatingObject1.currentSpeed.y) // Magnitude of Speed Vector for floatingObject 1 - let speed2 = Math.sqrt(floatingObject2.currentSpeed.x * floatingObject2.currentSpeed.x + floatingObject2.currentSpeed.y * floatingObject2.currentSpeed.y) // Magnitude of Speed Vector for floatingObject 2 + let speed1 = Math.sqrt(floatingObject1.currentSpeed.x * floatingObject1.currentSpeed.x + floatingObject1.currentSpeed.y * floatingObject1.currentSpeed.y) // Magnitude of Speed Vector for floatingObject 1 + let speed2 = Math.sqrt(floatingObject2.currentSpeed.x * floatingObject2.currentSpeed.x + floatingObject2.currentSpeed.y * floatingObject2.currentSpeed.y) // Magnitude of Speed Vector for floatingObject 2 - let direction_1 = Math.atan2(floatingObject1.currentSpeed.y, floatingObject1.currentSpeed.x) - let direction_2 = Math.atan2(floatingObject2.currentSpeed.y, floatingObject2.currentSpeed.x) + let direction_1 = Math.atan2(floatingObject1.currentSpeed.y, floatingObject1.currentSpeed.x) + let direction_2 = Math.atan2(floatingObject2.currentSpeed.y, floatingObject2.currentSpeed.x) - let new_xspeed_1 = speed1 * Math.cos(direction_1 - collisionision_angle) - let new_yspeed_1 = speed1 * Math.sin(direction_1 - collisionision_angle) - let new_xspeed_2 = speed2 * Math.cos(direction_2 - collisionision_angle) - let new_yspeed_2 = speed2 * Math.sin(direction_2 - collisionision_angle) + let new_xspeed_1 = speed1 * Math.cos(direction_1 - collisionision_angle) + let new_yspeed_1 = speed1 * Math.sin(direction_1 - collisionision_angle) + let new_xspeed_2 = speed2 * Math.cos(direction_2 - collisionision_angle) + let new_yspeed_2 = speed2 * Math.sin(direction_2 - collisionision_angle) - let final_xspeed_1 = ((floatingObject1.currentMass - floatingObject2.currentMass) * new_xspeed_1 + (floatingObject2.currentMass + floatingObject2.currentMass) * new_xspeed_2) / (floatingObject1.currentMass + floatingObject2.currentMass) - let final_xspeed_2 = ((floatingObject1.currentMass + floatingObject1.currentMass) * new_xspeed_1 + (floatingObject2.currentMass - floatingObject1.currentMass) * new_xspeed_2) / (floatingObject1.currentMass + floatingObject2.currentMass) - let final_yspeed_1 = new_yspeed_1 - let final_yspeed_2 = new_yspeed_2 + let final_xspeed_1 = ((floatingObject1.currentMass - floatingObject2.currentMass) * new_xspeed_1 + (floatingObject2.currentMass + floatingObject2.currentMass) * new_xspeed_2) / (floatingObject1.currentMass + floatingObject2.currentMass) + let final_xspeed_2 = ((floatingObject1.currentMass + floatingObject1.currentMass) * new_xspeed_1 + (floatingObject2.currentMass - floatingObject1.currentMass) * new_xspeed_2) / (floatingObject1.currentMass + floatingObject2.currentMass) + let final_yspeed_1 = new_yspeed_1 + let final_yspeed_2 = new_yspeed_2 - let cosAngle = Math.cos(collisionision_angle) - let sinAngle = Math.sin(collisionision_angle) + let cosAngle = Math.cos(collisionision_angle) + let sinAngle = Math.sin(collisionision_angle) - floatingObject1.currentSpeed.x = cosAngle * final_xspeed_1 - sinAngle * final_yspeed_1 - floatingObject1.currentSpeed.y = sinAngle * final_xspeed_1 + cosAngle * final_yspeed_1 + floatingObject1.currentSpeed.x = cosAngle * final_xspeed_1 - sinAngle * final_yspeed_1 + floatingObject1.currentSpeed.y = sinAngle * final_xspeed_1 + cosAngle * final_yspeed_1 - floatingObject2.currentSpeed.x = cosAngle * final_xspeed_2 - sinAngle * final_yspeed_2 - floatingObject2.currentSpeed.y = sinAngle * final_xspeed_2 + cosAngle * final_yspeed_2 + floatingObject2.currentSpeed.x = cosAngle * final_xspeed_2 - sinAngle * final_yspeed_2 + floatingObject2.currentSpeed.y = sinAngle * final_xspeed_2 + cosAngle * final_yspeed_2 - let pos1 = { - x: floatingObject1.container.frame.position.x, - y: floatingObject1.container.frame.position.y - } + let pos1 = { + x: floatingObject1.container.frame.position.x, + y: floatingObject1.container.frame.position.y + } - let pos2 = { - x: floatingObject2.container.frame.position.x, - y: floatingObject2.container.frame.position.y - } + let pos2 = { + x: floatingObject2.container.frame.position.x, + y: floatingObject2.container.frame.position.y + } // get the mtd - let posDiff = { - x: pos1.x - pos2.x, - y: pos1.y - pos2.y - } + let posDiff = { + x: pos1.x - pos2.x, + y: pos1.y - pos2.y + } - let d = Math.sqrt(Math.pow(floatingObject2.container.frame.position.x - floatingObject1.container.frame.position.x, 2) + Math.pow(floatingObject2.container.frame.position.y - floatingObject1.container.frame.position.y, 2)) + let d = Math.sqrt(Math.pow(floatingObject2.container.frame.position.x - floatingObject1.container.frame.position.x, 2) + Math.pow(floatingObject2.container.frame.position.y - floatingObject1.container.frame.position.y, 2)) // minimum translation distance to push floatingObjects apart after intersecting - let scalar = (((floatingObject1.container.frame.radius + floatingObject2.container.frame.radius) - d) / d) + let scalar = (((floatingObject1.container.frame.radius + floatingObject2.container.frame.radius) - d) / d) - let minTD = { - x: posDiff.x * scalar, - y: posDiff.y * scalar - } + let minTD = { + x: posDiff.x * scalar, + y: posDiff.y * scalar + } // resolve intersection -- // computing inverse mass quantities - let im1 = 1 / floatingObject1.currentMass - let im2 = 1 / floatingObject2.currentMass + let im1 = 1 / floatingObject1.currentMass + let im2 = 1 / floatingObject2.currentMass // push-pull them apart based off their mass - pos1.x = pos1.x + minTD.x * (im1 / (im1 + im2)) - pos1.y = pos1.y + minTD.y * (im1 / (im1 + im2)) - pos2.x = pos2.x - minTD.x * (im2 / (im1 + im2)) - pos2.y = pos2.y - minTD.y * (im2 / (im1 + im2)) + pos1.x = pos1.x + minTD.x * (im1 / (im1 + im2)) + pos1.y = pos1.y + minTD.y * (im1 / (im1 + im2)) + pos2.x = pos2.x - minTD.x * (im2 / (im1 + im2)) + pos2.y = pos2.y - minTD.y * (im2 / (im1 + im2)) - if (floatingObject1.positionLocked === false && isNaN(pos1.x) === false && isNaN(pos1.y) === false) { - floatingObject1.container.frame.position = pos1 - } - if (floatingObject2.positionLocked === false && isNaN(pos2.x) === false && isNaN(pos2.y) === false) { - floatingObject2.container.frame.position = pos2 - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] resolveCollision -> err= ' + err.stack) } + if (floatingObject1.positionLocked === false && isNaN(pos1.x) === false && isNaN(pos1.y) === false) { + floatingObject1.container.frame.position = pos1 + } + if (floatingObject2.positionLocked === false && isNaN(pos2.x) === false && isNaN(pos2.y) === false) { + floatingObject2.container.frame.position = pos2 + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] resolveCollision -> err= ' + err.stack) } + } } - } } diff --git a/CanvasApp/FloatingSpace/FloatingObject.js b/CanvasApp/FloatingSpace/FloatingObject.js index 12cb186f6..c598f0d88 100644 --- a/CanvasApp/FloatingSpace/FloatingObject.js +++ b/CanvasApp/FloatingSpace/FloatingObject.js @@ -1,715 +1,803 @@ -function newFloatingObject () { - const MODULE_NAME = 'Floating Object' - const ERROR_LOG = true +function newFloatingObject() { + const MODULE_NAME = 'Floating Object' + const ERROR_LOG = true - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME - let thisObject = { - fitFunction: undefined, - container: undefined, - positionLocked: false, - isOnFocus: false, - payload: undefined, // This is a reference to an object controlled by a Plotter. The plotter can change its internal value and we will see them from here. - type: undefined, // Currently there are two types of Floating Objects: Profile Balls, and Notes. - currentSpeed: 0, // This is the current speed of the floating object. - currentMass: 0, // This is the current mass of the floating object, including its zoom applied. - friction: 0, // This is a factor that will ultimatelly desacelerate the floating object. - targetFriction: 0, - rawMass: 0, // This is the mass value without zoom. - rawRadius: 0, // This is the radius of this floating object without zoom. - targetRadius: 0, // This is the target radius of the floating object with zoom applied. It should be animated until reaching this value. - isPinned: false, - isFrozen: false, - angleToParent: undefined, - distanceToParent: undefined, - arrangementStyle: ARRANGEMENT_STYLE.CONCAVE, - isCollapsed: false, - isParentCollapsed: false, - frozenManually: false, - collapsedManually: false, - getPinStatus: getPinStatus, - getFreezeStatus: getFreezeStatus, - getCollapseStatus: getCollapseStatus, - getAngleToParent: getAngleToParent, - getDistanceToParent: getDistanceToParent, - getArrangementStyle: getArrangementStyle, - nearbyFloatingObjects: [], - setPosition: setPosition, - pinToggle: pinToggle, - freezeToggle: freezeToggle, - collapseToggle: collapseToggle, - angleToParentToggle: angleToParentToggle, - distanceToParentToggle: distanceToParentToggle, - arrangementStyleToggle: arrangementStyleToggle, - physics: physics, - invisiblePhysics: invisiblePhysics, - initializeMass: initializeMass, - initializeRadius: initializeRadius, - initializeImageSize: initializeImageSize, - initializeFontSize: initializeFontSize, - initializeHierarchyRing: initializeHierarchyRing, - initializeCurrentPosition: initializeCurrentPosition, - radomizeCurrentSpeed: radomizeCurrentSpeed, - drawBackground: drawBackground, - drawMiddleground: drawMiddleground, - drawForeground: drawForeground, - drawOnFocus: drawOnFocus, - updateMass: updateMass, // Function to update the mass when the zoom level changed. - updateRadius: updateRadius, // Function to update the radius when the zoom level changed. - getContainer: getContainer, - finalize: finalize, - initialize: initialize - } - - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME, 'Circle') - thisObject.container.isClickeable = true - thisObject.container.isDraggeable = true - thisObject.container.detectMouseOver = true - thisObject.container.frame.radius = 0 - thisObject.container.frame.position.x = 0 - thisObject.container.frame.position.y = 0 - - let selfMouseOverEventSubscriptionId - let selfMouseClickEventSubscriptionId - let spaceMouseOverEventSubscriptionId - let spaceFocusAquiredEventSubscriptionId - let lastParentAngle - - return thisObject - - function finalize () { - thisObject.container.eventHandler.stopListening(selfMouseOverEventSubscriptionId) - thisObject.container.eventHandler.stopListening(selfMouseClickEventSubscriptionId) - canvas.floatingSpace.container.eventHandler.stopListening(spaceMouseOverEventSubscriptionId) - canvas.floatingSpace.container.eventHandler.stopListening(spaceFocusAquiredEventSubscriptionId) - - thisObject.container.finalize() - thisObject.container = undefined - thisObject.payload = undefined - thisObject.fitFunction = undefined - thisObject.nearbyFloatingObjects = undefined - } - - function initialize (type, payload) { - thisObject.payload = payload - thisObject.type = type - - selfMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) - selfMouseClickEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) - - /* To consider that this object lost the focus, we monitor the space for 2 key events */ - spaceMouseOverEventSubscriptionId = canvas.floatingSpace.container.eventHandler.listenToEvent('onMouseOver', mouseOverFlotingSpace) - spaceFocusAquiredEventSubscriptionId = canvas.floatingSpace.container.eventHandler.listenToEvent('onFocusAquired', someoneAquiredFocus) - - /* Assign a position and speed */ - - thisObject.initializeCurrentPosition(thisObject.payload.targetPosition) - thisObject.radomizeCurrentSpeed() - } - - function getContainer (point) { - if (thisObject.payload === undefined) { return } - if ((thisObject.isCollapsed === true && thisObject.collapsedManually === false) || thisObject.isParentCollapsed === true) { return } - if (canvas.floatingSpace.inMapMode === true) { return } - let container - - container = thisObject.payload.uiObject.getContainer(point) - if (container !== undefined) { return container } - - if (thisObject.container.frame.isThisScreenPointHere(point) === true) { - return thisObject.container - } else { - return undefined - } - } - - function getPinStatus () { - return thisObject.isPinned - } - - function pinToggle () { - if (thisObject.isPinned !== true) { - thisObject.isPinned = true - thisObject.positionLocked = true - } else { - thisObject.isPinned = false - } - return thisObject.isPinned - } - - function getFreezeStatus () { - return thisObject.isFrozen - } - - function getCollapseStatus () { - return thisObject.isCollapsed - } - - function getAngleToParent () { - return thisObject.angleToParent - } - - function getDistanceToParent () { - return thisObject.distanceToParent - } - - function getArrangementStyle () { - return thisObject.arrangementStyle - } - - function freezeToggle () { - if (thisObject.isFrozen !== true) { - thisObject.isFrozen = true - thisObject.frozenManually = true - } else { - thisObject.isFrozen = false - thisObject.frozenManually = false - } - return thisObject.isFrozen - } - - function collapseToggle () { - if (thisObject.isCollapsed !== true) { - thisObject.isCollapsed = true - thisObject.collapsedManually = true - } else { - thisObject.isCollapsed = false - thisObject.collapsedManually = false - } - return thisObject.isCollapsed - } - - function angleToParentToggle () { - switch (thisObject.angleToParent) { - case ANGLE_TO_PARENT.NOT_FIXED: - thisObject.angleToParent = ANGLE_TO_PARENT.RANGE_360 - break - case ANGLE_TO_PARENT.RANGE_360: - thisObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 - break - case ANGLE_TO_PARENT.RANGE_180: - thisObject.angleToParent = ANGLE_TO_PARENT.RANGE_90 - break - case ANGLE_TO_PARENT.RANGE_90: - thisObject.angleToParent = ANGLE_TO_PARENT.RANGE_45 - break - case ANGLE_TO_PARENT.RANGE_45: - thisObject.angleToParent = ANGLE_TO_PARENT.NOT_FIXED - break + let thisObject = { + fitFunction: undefined, + container: undefined, + positionLocked: false, + isOnFocus: false, + payload: undefined, // This is a reference to an object controlled by a Plotter. The plotter can change its internal value and we will see them from here. + type: undefined, // Currently there are two types of Floating Objects: Profile Balls, and Notes. + currentSpeed: 0, // This is the current speed of the floating object. + currentMass: 0, // This is the current mass of the floating object, including its zoom applied. + friction: 0, // This is a factor that will ultimatelly desacelerate the floating object. + targetFriction: 0, + rawMass: 0, // This is the mass value without zoom. + rawRadius: 0, // This is the radius of this floating object without zoom. + targetRadius: 0, // This is the target radius of the floating object with zoom applied. It should be animated until reaching this value. + isPinned: false, + isFrozen: false, + angleToParent: undefined, + distanceToParent: undefined, + arrangementStyle: ARRANGEMENT_STYLE.CONCAVE, + isCollapsed: false, + isParentCollapsed: false, + frozenManually: false, + collapsedManually: false, + forceFocus: forceFocus, + removeForceFocus: removeForceFocus, + setFocus: setFocus, + removeFocus: removeFocus, + unCollapseParent: unCollapseParent, + getPinStatus: getPinStatus, + getFreezeStatus: getFreezeStatus, + getCollapseStatus: getCollapseStatus, + getAngleToParent: getAngleToParent, + getDistanceToParent: getDistanceToParent, + getArrangementStyle: getArrangementStyle, + nearbyFloatingObjects: [], + setPosition: setPosition, + pinToggle: pinToggle, + freezeToggle: freezeToggle, + collapseToggle: collapseToggle, + angleToParentToggle: angleToParentToggle, + distanceToParentToggle: distanceToParentToggle, + arrangementStyleToggle: arrangementStyleToggle, + physics: physics, + invisiblePhysics: invisiblePhysics, + initializeMass: initializeMass, + initializeRadius: initializeRadius, + initializeImageSize: initializeImageSize, + initializeFontSize: initializeFontSize, + initializeHierarchyRing: initializeHierarchyRing, + initializeCurrentPosition: initializeCurrentPosition, + radomizeCurrentSpeed: radomizeCurrentSpeed, + drawBackground: drawBackground, + drawMiddleground: drawMiddleground, + drawForeground: drawForeground, + drawOnFocus: drawOnFocus, + updateMass: updateMass, // Function to update the mass when the zoom level changed. + updateRadius: updateRadius, // Function to update the radius when the zoom level changed. + getContainer: getContainer, + finalize: finalize, + initialize: initialize } - return thisObject.angleToParent - } + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME, 'Circle') + thisObject.container.isClickeable = true + thisObject.container.isDraggeable = true + thisObject.container.detectMouseOver = true + thisObject.container.frame.radius = 0 + thisObject.container.frame.position.x = 0 + thisObject.container.frame.position.y = 0 - function distanceToParentToggle () { - switch (thisObject.distanceToParent) { - case DISTANCE_TO_PARENT.NOT_FIXED: - thisObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_025X - break - case DISTANCE_TO_PARENT.PARENT_025X: - thisObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_050X - break - case DISTANCE_TO_PARENT.PARENT_050X: - thisObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_100X - break - case DISTANCE_TO_PARENT.PARENT_100X: - thisObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_150X - break - case DISTANCE_TO_PARENT.PARENT_150X: - thisObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_200X - break - case DISTANCE_TO_PARENT.PARENT_200X: - thisObject.distanceToParent = DISTANCE_TO_PARENT.NOT_FIXED - break + let selfMouseOverEventSubscriptionId + let selfMouseClickEventSubscriptionId + let spaceMouseOverEventSubscriptionId + let spaceFocusAquiredEventSubscriptionId + let lastParentAngle + let forcedFocusCounter = 0 + + return thisObject + + function finalize() { + thisObject.container.eventHandler.stopListening(selfMouseOverEventSubscriptionId) + thisObject.container.eventHandler.stopListening(selfMouseClickEventSubscriptionId) + canvas.floatingSpace.container.eventHandler.stopListening(spaceMouseOverEventSubscriptionId) + canvas.floatingSpace.container.eventHandler.stopListening(spaceFocusAquiredEventSubscriptionId) + + thisObject.container.finalize() + thisObject.container = undefined + thisObject.payload = undefined + thisObject.fitFunction = undefined + thisObject.nearbyFloatingObjects = undefined } - return thisObject.distanceToParent - } + function initialize(type, payload) { + thisObject.payload = payload + thisObject.type = type - function arrangementStyleToggle () { - switch (thisObject.arrangementStyle) { - case ARRANGEMENT_STYLE.CONCAVE: - thisObject.arrangementStyle = ARRANGEMENT_STYLE.CONVEX - break - case ARRANGEMENT_STYLE.CONVEX: - thisObject.arrangementStyle = ARRANGEMENT_STYLE.VERTICAL_RIGHT - break - case ARRANGEMENT_STYLE.VERTICAL_RIGHT: - thisObject.arrangementStyle = ARRANGEMENT_STYLE.VERTICAL_LEFT - break - case ARRANGEMENT_STYLE.VERTICAL_LEFT: - thisObject.arrangementStyle = ARRANGEMENT_STYLE.HORIZONTAL_BOTTOM - break - case ARRANGEMENT_STYLE.HORIZONTAL_BOTTOM: - thisObject.arrangementStyle = ARRANGEMENT_STYLE.HORIZONTAL_TOP - break - case ARRANGEMENT_STYLE.HORIZONTAL_TOP: - thisObject.arrangementStyle = ARRANGEMENT_STYLE.CONCAVE - break + selfMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) + selfMouseClickEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) + + /* To consider that this object lost the focus, we monitor the space for 2 key events */ + spaceMouseOverEventSubscriptionId = canvas.floatingSpace.container.eventHandler.listenToEvent('onMouseOver', mouseOverFlotingSpace) + spaceFocusAquiredEventSubscriptionId = canvas.floatingSpace.container.eventHandler.listenToEvent('onFocusAquired', someoneAquiredFocus) + + /* Assign a position and speed */ + + thisObject.initializeCurrentPosition(thisObject.payload.targetPosition) + thisObject.radomizeCurrentSpeed() } - return thisObject.arrangementStyle - } + function getContainer(point) { - function invisiblePhysics () { - if (thisObject.payload.uiObject !== undefined) { - thisObject.payload.uiObject.invisiblePhysics() - } - } - function physics () { - frozenPhysics() - /* From here on, only if they are not too far. */ - if (canvas.floatingSpace.isItFar(thisObject.payload)) { return } - thisObjectPhysics() - if (thisObject.payload.uiObject !== undefined) { - thisObject.payload.uiObject.physics() - } - positionContraintsPhysics() - } + if (thisObject.payload === undefined) { return } + if ((thisObject.isCollapsed === true && thisObject.collapsedManually === false) || thisObject.isParentCollapsed === true) { return } + if (canvas.floatingSpace.inMapMode === true) { return } - function frozenPhysics () { - if (thisObject.frozenManually !== false) { return } - if (thisObject.payload === undefined) { return } - let parent = thisObject.payload.chainParent - if (parent !== undefined) { - if (parent.payload !== undefined) { - if (parent.payload.floatingObject !== undefined) { - thisObject.isFrozen = parent.payload.floatingObject.isFrozen + let container + + container = thisObject.payload.uiObject.getContainer(point) + if (container !== undefined) { return container } + + if (thisObject.container.frame.isThisScreenPointHere(point) === true) { + return thisObject.container + } else { + return undefined } - } } - } - function positionContraintsPhysics () { - const MAX_DISTANCE_TO_PARENT = 5000 - const MIN_DISTANCE_TO_PARENT = 100 + function getPinStatus() { + return thisObject.isPinned + } - if (thisObject.angleToParent !== ANGLE_TO_PARENT.NOT_FIXED && thisObject.isOnFocus !== true) { - let parent = thisObject.payload.chainParent - if (parent === undefined) { return } - if (parent.payload === undefined) { return } - if (parent.payload.position === undefined) { return } + function pinToggle() { + if (thisObject.isPinned !== true) { + thisObject.isPinned = true + thisObject.positionLocked = true + } else { + thisObject.isPinned = false + } + return thisObject.isPinned + } - let distanceToParent = Math.sqrt(Math.pow(parent.payload.position.x - thisObject.container.frame.position.x, 2) + Math.pow(parent.payload.position.y - thisObject.container.frame.position.y, 2)) // ... we calculate the distance ... - let parentChildren = canvas.designSpace.workspace.nodeChildren.childrenCount(parent, thisObject.payload.node) - let axisCount = parentChildren.childrenCount - let axisIndex = parentChildren.childIndex - let baseAngle = 0 - let angleToParentAngle + function getFreezeStatus() { + return thisObject.isFrozen + } - if (parent.payload.distance !== undefined) { + function getCollapseStatus() { + return thisObject.isCollapsed + } + + function unCollapseParent() { + if (thisObject.payload !== undefined) { + if (thisObject.payload.parentNode !== undefined) { + if (thisObject.payload.parentNode.payload !== undefined) { + if (thisObject.payload.parentNode.payload.floatingObject !== undefined) { + if (thisObject.payload.parentNode.payload.floatingObject.isCollapsed === true) { + thisObject.payload.parentNode.payload.floatingObject.isCollapsed = false + thisObject.payload.parentNode.payload.floatingObject.unCollapseParent() + } + } + } + } + } + } + + function getAngleToParent() { + return thisObject.angleToParent + } + + function getDistanceToParent() { + return thisObject.distanceToParent + } + + function getArrangementStyle() { + return thisObject.arrangementStyle + } + + function freezeToggle() { + if (thisObject.isFrozen !== true) { + thisObject.isFrozen = true + thisObject.frozenManually = true + } else { + thisObject.isFrozen = false + thisObject.frozenManually = false + } + return thisObject.isFrozen + } + + function collapseToggle() { + if (thisObject.isCollapsed !== true) { + thisObject.isCollapsed = true + thisObject.collapsedManually = true + } else { + thisObject.isCollapsed = false + thisObject.collapsedManually = false + } + return thisObject.isCollapsed + } + + function angleToParentToggle() { + switch (thisObject.angleToParent) { + case ANGLE_TO_PARENT.NOT_FIXED: + thisObject.angleToParent = ANGLE_TO_PARENT.RANGE_360 + break + case ANGLE_TO_PARENT.RANGE_360: + thisObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 + break + case ANGLE_TO_PARENT.RANGE_180: + thisObject.angleToParent = ANGLE_TO_PARENT.RANGE_90 + break + case ANGLE_TO_PARENT.RANGE_90: + thisObject.angleToParent = ANGLE_TO_PARENT.RANGE_45 + break + case ANGLE_TO_PARENT.RANGE_45: + thisObject.angleToParent = ANGLE_TO_PARENT.NOT_FIXED + break + } + + return thisObject.angleToParent + } + + function distanceToParentToggle() { switch (thisObject.distanceToParent) { - case DISTANCE_TO_PARENT.PARENT_025X: - distanceToParent = parent.payload.distance / 4 - break - case DISTANCE_TO_PARENT.PARENT_050X: - distanceToParent = parent.payload.distance / 2 - break - case DISTANCE_TO_PARENT.PARENT_100X: - distanceToParent = parent.payload.distance - break - case DISTANCE_TO_PARENT.PARENT_150X: - distanceToParent = parent.payload.distance * 1.5 - break - case DISTANCE_TO_PARENT.PARENT_200X: - distanceToParent = parent.payload.distance * 2 - break + case DISTANCE_TO_PARENT.NOT_FIXED: + thisObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_025X + break + case DISTANCE_TO_PARENT.PARENT_025X: + thisObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_050X + break + case DISTANCE_TO_PARENT.PARENT_050X: + thisObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_100X + break + case DISTANCE_TO_PARENT.PARENT_100X: + thisObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_150X + break + case DISTANCE_TO_PARENT.PARENT_150X: + thisObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_200X + break + case DISTANCE_TO_PARENT.PARENT_200X: + thisObject.distanceToParent = DISTANCE_TO_PARENT.NOT_FIXED + break } - } - if (distanceToParent > MAX_DISTANCE_TO_PARENT) { - distanceToParent = MAX_DISTANCE_TO_PARENT - } + return thisObject.distanceToParent + } - if (distanceToParent < MIN_DISTANCE_TO_PARENT) { - distanceToParent = MIN_DISTANCE_TO_PARENT - } - - switch (thisObject.angleToParent) { - case ANGLE_TO_PARENT.RANGE_360: - angleToParentAngle = 360 - break - case ANGLE_TO_PARENT.RANGE_180: - angleToParentAngle = 180 - break - case ANGLE_TO_PARENT.RANGE_90: - angleToParentAngle = 90 - break - case ANGLE_TO_PARENT.RANGE_45: - angleToParentAngle = 45 - break - } - - if (axisIndex === undefined) { - axisCount = 1 - axisIndex = axisCount - } - - if (parent.payload.chainParent !== undefined && parent.payload.angle !== undefined) { - axisCount++ - axisIndex++ - baseAngle = parent.payload.angle + 180 - lastParentAngle = parent.payload.angle - } else { - if (lastParentAngle !== undefined) { - axisCount++ - axisIndex++ - baseAngle = lastParentAngle + 180 + function arrangementStyleToggle() { + switch (thisObject.arrangementStyle) { + case ARRANGEMENT_STYLE.CONCAVE: + thisObject.arrangementStyle = ARRANGEMENT_STYLE.CONVEX + break + case ARRANGEMENT_STYLE.CONVEX: + thisObject.arrangementStyle = ARRANGEMENT_STYLE.VERTICAL_RIGHT + break + case ARRANGEMENT_STYLE.VERTICAL_RIGHT: + thisObject.arrangementStyle = ARRANGEMENT_STYLE.VERTICAL_LEFT + break + case ARRANGEMENT_STYLE.VERTICAL_LEFT: + thisObject.arrangementStyle = ARRANGEMENT_STYLE.HORIZONTAL_BOTTOM + break + case ARRANGEMENT_STYLE.HORIZONTAL_BOTTOM: + thisObject.arrangementStyle = ARRANGEMENT_STYLE.HORIZONTAL_TOP + break + case ARRANGEMENT_STYLE.HORIZONTAL_TOP: + thisObject.arrangementStyle = ARRANGEMENT_STYLE.CONCAVE + break } - } - let separatorAngle = (360 - angleToParentAngle) / 2 - let angleStep = angleToParentAngle / axisCount + return thisObject.arrangementStyle + } - thisObject.payload.angle = baseAngle + separatorAngle + (axisIndex - 1) * angleStep - if (thisObject.payload.angle >= 360) { - thisObject.payload.angle = thisObject.payload.angle - 360 - } + function invisiblePhysics() { + if (thisObject.payload === undefined) { return } + if (thisObject.payload.uiObject === undefined) { return } - thisObject.payload.distance = distanceToParent - - if (thisObject.isPinned === true) { - /* When an object is pinned, its angle to its parent needs to be calculated since it depends on where the user places the node. */ - /* - if (thisObject.payload.chainParent !== undefined) { - let x = thisObject.container.frame.position.x - thisObject.payload.chainParent.payload.floatingObject.container.frame.position.x - let y = thisObject.container.frame.position.y - thisObject.payload.chainParent.payload.floatingObject.container.frame.position.y - - thisObject.payload.angle = Math.atan(y / x) + if (thisObject.payload.uiObject !== undefined) { + thisObject.payload.uiObject.invisiblePhysics() } - */ - return - } + } - let newPosition = { - x: parent.payload.position.x, - y: parent.payload.position.y - } - - let displacement - - switch (thisObject.arrangementStyle) { - case ARRANGEMENT_STYLE.CONCAVE: { - displacement = { - x: distanceToParent * Math.cos(toRadians(thisObject.payload.angle)), - y: distanceToParent * Math.sin(toRadians(thisObject.payload.angle)) - } - - break + function physics() { + frozenPhysics() + /* From here on, only if they are not too far. */ + if (canvas.floatingSpace.isItFar(thisObject.payload)) { return } + thisObjectPhysics() + if (thisObject.payload.uiObject !== undefined) { + thisObject.payload.uiObject.physics() } - case ARRANGEMENT_STYLE.CONVEX: { - displacement = { - x: 2 * distanceToParent * Math.cos(toRadians(lastParentAngle)) + distanceToParent * Math.cos(toRadians(thisObject.payload.angle + 180)), - y: 2 * distanceToParent * Math.sin(toRadians(lastParentAngle)) + distanceToParent * Math.sin(toRadians(thisObject.payload.angle + 180)) - } - break + positionContraintsPhysics() + focusPhysics() + } + + function focusPhysics() { + forcedFocusCounter-- + if (forcedFocusCounter < 0) { + forcedFocusCounter = 0 } - case ARRANGEMENT_STYLE.HORIZONTAL_BOTTOM: { - displacement = { - x: distanceToParent * Math.tan(toRadians(thisObject.payload.angle)), - y: distanceToParent - } - break + } + + function frozenPhysics() { + if (thisObject.frozenManually !== false) { return } + if (thisObject.payload === undefined) { return } + let parent = thisObject.payload.chainParent + if (parent !== undefined) { + if (parent.payload !== undefined) { + if (parent.payload.floatingObject !== undefined) { + thisObject.isFrozen = parent.payload.floatingObject.isFrozen + } + } } - case ARRANGEMENT_STYLE.HORIZONTAL_TOP: { - displacement = { - x: -distanceToParent * Math.tan(toRadians(thisObject.payload.angle)), - y: -distanceToParent - } - break + } + + function positionContraintsPhysics() { + const MAX_DISTANCE_TO_PARENT = 5000 + const MIN_DISTANCE_TO_PARENT = 100 + const DEFAULT_NODE_TO_NODE_DISTANCE = 500 + + if (thisObject.angleToParent !== ANGLE_TO_PARENT.NOT_FIXED && thisObject.isOnFocus !== true) { + let parent = thisObject.payload.chainParent + let distanceToParent + let parentChildren + let parentDistanceToGarndParent + if (parent === undefined) { + parentDistanceToGarndParent = DEFAULT_NODE_TO_NODE_DISTANCE + distanceToParent = DEFAULT_NODE_TO_NODE_DISTANCE + parentChildren = 1 + } else { + if (parent.payload === undefined) { return } + if (parent.payload.position === undefined) { return } + distanceToParent = Math.sqrt(Math.pow(parent.payload.position.x - thisObject.container.frame.position.x, 2) + Math.pow(parent.payload.position.y - thisObject.container.frame.position.y, 2)) // ... we calculate the distance ... + parentChildren = canvas.designSpace.workspace.nodeChildren.childrenCount(parent, thisObject.payload.node) + parentDistanceToGarndParent = parent.payload.distance + } + + let axisCount = parentChildren.childrenCount + let axisIndex = parentChildren.childIndex + let baseAngle = 0 + let angleToParentAngle + + if (parentDistanceToGarndParent !== undefined) { + switch (thisObject.distanceToParent) { + case DISTANCE_TO_PARENT.PARENT_025X: + distanceToParent = parentDistanceToGarndParent / 4 + break + case DISTANCE_TO_PARENT.PARENT_050X: + distanceToParent = parentDistanceToGarndParent / 2 + break + case DISTANCE_TO_PARENT.PARENT_100X: + distanceToParent = parentDistanceToGarndParent + break + case DISTANCE_TO_PARENT.PARENT_150X: + distanceToParent = parentDistanceToGarndParent * 1.5 + break + case DISTANCE_TO_PARENT.PARENT_200X: + distanceToParent = parentDistanceToGarndParent * 2 + break + } + } + + if (distanceToParent > MAX_DISTANCE_TO_PARENT) { + distanceToParent = MAX_DISTANCE_TO_PARENT + } + + if (distanceToParent < MIN_DISTANCE_TO_PARENT) { + distanceToParent = MIN_DISTANCE_TO_PARENT + } + + switch (thisObject.angleToParent) { + case ANGLE_TO_PARENT.RANGE_360: + angleToParentAngle = 360 + break + case ANGLE_TO_PARENT.RANGE_180: + angleToParentAngle = 180 + break + case ANGLE_TO_PARENT.RANGE_90: + angleToParentAngle = 90 + break + case ANGLE_TO_PARENT.RANGE_45: + angleToParentAngle = 45 + break + } + + if (axisIndex === undefined) { + axisCount = 1 + axisIndex = axisCount + } + + if (parent !== undefined) { + if (parent.payload.chainParent !== undefined && parent.payload.angle !== undefined) { + axisCount++ + axisIndex++ + baseAngle = parent.payload.angle + 180 + lastParentAngle = parent.payload.angle + } else { + if (lastParentAngle !== undefined) { + axisCount++ + axisIndex++ + baseAngle = lastParentAngle + 180 + } + } + } + + let separatorAngle = (360 - angleToParentAngle) / 2 + let angleStep = angleToParentAngle / axisCount + + thisObject.payload.angle = baseAngle + separatorAngle + (axisIndex - 1) * angleStep + if (thisObject.payload.angle >= 360) { + thisObject.payload.angle = thisObject.payload.angle - 360 + } + + thisObject.payload.distance = distanceToParent + + if (thisObject.isPinned === true) { + /* When an object is pinned, its angle to its parent needs to be calculated since it depends on where the user places the node. */ + /* + if (thisObject.payload.chainParent !== undefined) { + let x = thisObject.container.frame.position.x - thisObject.payload.chainParent.payload.floatingObject.container.frame.position.x + let y = thisObject.container.frame.position.y - thisObject.payload.chainParent.payload.floatingObject.container.frame.position.y + + thisObject.payload.angle = Math.atan(y / x) + } + */ + return + } + + let newPosition + if (parent !== undefined) { + newPosition = { + x: parent.payload.position.x, + y: parent.payload.position.y + } + } else { + return + } + + let displacement + + switch (thisObject.arrangementStyle) { + case ARRANGEMENT_STYLE.CONCAVE: { + displacement = { + x: distanceToParent * Math.cos(toRadians(thisObject.payload.angle)), + y: distanceToParent * Math.sin(toRadians(thisObject.payload.angle)) + } + + break + } + case ARRANGEMENT_STYLE.CONVEX: { + displacement = { + x: 2 * distanceToParent * Math.cos(toRadians(lastParentAngle)) + distanceToParent * Math.cos(toRadians(thisObject.payload.angle + 180)), + y: 2 * distanceToParent * Math.sin(toRadians(lastParentAngle)) + distanceToParent * Math.sin(toRadians(thisObject.payload.angle + 180)) + } + break + } + case ARRANGEMENT_STYLE.HORIZONTAL_BOTTOM: { + displacement = { + x: distanceToParent * Math.tan(toRadians(thisObject.payload.angle)), + y: distanceToParent + } + break + } + case ARRANGEMENT_STYLE.HORIZONTAL_TOP: { + displacement = { + x: -distanceToParent * Math.tan(toRadians(thisObject.payload.angle)), + y: -distanceToParent + } + break + } + case ARRANGEMENT_STYLE.VERTICAL_RIGHT: { + displacement = { + x: distanceToParent, + y: distanceToParent * Math.tan(toRadians(thisObject.payload.angle)) + } + break + } + case ARRANGEMENT_STYLE.VERTICAL_LEFT: { + displacement = { + x: -distanceToParent, + y: -distanceToParent * Math.tan(toRadians(thisObject.payload.angle)) + } + break + } + } + + if (displacement.x > MAX_DISTANCE_TO_PARENT) { + displacement.x = MAX_DISTANCE_TO_PARENT + } + if (displacement.y > MAX_DISTANCE_TO_PARENT) { + displacement.y = MAX_DISTANCE_TO_PARENT + } + + newPosition.x = newPosition.x + displacement.x + newPosition.y = newPosition.y + displacement.y + + if (isNaN(newPosition.x) === false) { + thisObject.container.frame.position.x = newPosition.x + } + if (isNaN(newPosition.y) === false) { + thisObject.container.frame.position.y = newPosition.y + } } - case ARRANGEMENT_STYLE.VERTICAL_RIGHT: { - displacement = { - x: distanceToParent, - y: distanceToParent * Math.tan(toRadians(thisObject.payload.angle)) - } - break + } + + function thisObjectPhysics() { + // The radius also have a target. + let ANIMATION_STEP = Math.abs(thisObject.targetRadius - thisObject.rawRadius) / 2 + + if (ANIMATION_STEP === 0) { ANIMATION_STEP = thisObject.rawRadius } + + if (Math.abs(thisObject.container.frame.radius - thisObject.targetRadius) >= ANIMATION_STEP) { + if (thisObject.container.frame.radius < thisObject.targetRadius) { + thisObject.container.frame.radius = thisObject.container.frame.radius + ANIMATION_STEP + } else { + thisObject.container.frame.radius = thisObject.container.frame.radius - ANIMATION_STEP + } + + thisObject.container.eventHandler.raiseEvent('Dimmensions Changed', event) + } else { + thisObject.container.frame.radius = thisObject.targetRadius } - case ARRANGEMENT_STYLE.VERTICAL_LEFT: { - displacement = { - x: -distanceToParent, - y: -distanceToParent * Math.tan(toRadians(thisObject.payload.angle)) - } - break + + // The imageSize also have a target. + if (Math.abs(thisObject.currentImageSize - thisObject.targetImageSize) >= ANIMATION_STEP) { + if (thisObject.currentImageSize < thisObject.targetImageSize) { + thisObject.currentImageSize = thisObject.currentImageSize + ANIMATION_STEP + } else { + thisObject.currentImageSize = thisObject.currentImageSize - ANIMATION_STEP + } + } else { + thisObject.currentImageSize = thisObject.targetImageSize } - } - if (displacement.x > MAX_DISTANCE_TO_PARENT) { - displacement.x = MAX_DISTANCE_TO_PARENT - } - if (displacement.y > MAX_DISTANCE_TO_PARENT) { - displacement.y = MAX_DISTANCE_TO_PARENT - } + // The fontSize also have a target. + if (Math.abs(thisObject.currentFontSize - thisObject.targetFontSize) >= ANIMATION_STEP / 10) { + if (thisObject.currentFontSize < thisObject.targetFontSize) { + thisObject.currentFontSize = thisObject.currentFontSize + ANIMATION_STEP / 10 + } else { + thisObject.currentFontSize = thisObject.currentFontSize - ANIMATION_STEP / 10 + } + } else { + thisObject.currentFontSize = thisObject.targetFontSize + } - newPosition.x = newPosition.x + displacement.x - newPosition.y = newPosition.y + displacement.y + if (Math.abs(thisObject.currentHierarchyRing - thisObject.targetHierarchyRing) >= ANIMATION_STEP) { + if (thisObject.currentHierarchyRing < thisObject.targetHierarchyRing) { + thisObject.currentHierarchyRing = thisObject.currentHierarchyRing + ANIMATION_STEP + } else { + thisObject.currentHierarchyRing = thisObject.currentHierarchyRing - ANIMATION_STEP + } + } else { + thisObject.currentHierarchyRing = thisObject.targetHierarchyRing + } - if (isNaN(newPosition.x) === false) { - thisObject.container.frame.position.x = newPosition.x - } - if (isNaN(newPosition.y) === false) { - thisObject.container.frame.position.y = newPosition.y - } - } - } - - function thisObjectPhysics () { - // The radius also have a target. - let ANIMATION_STEP = Math.abs(thisObject.targetRadius - thisObject.rawRadius) / 5 - - if (ANIMATION_STEP === 0) { ANIMATION_STEP = 10 } - - if (Math.abs(thisObject.container.frame.radius - thisObject.targetRadius) >= ANIMATION_STEP) { - if (thisObject.container.frame.radius < thisObject.targetRadius) { - thisObject.container.frame.radius = thisObject.container.frame.radius + ANIMATION_STEP - } else { - thisObject.container.frame.radius = thisObject.container.frame.radius - ANIMATION_STEP - } - - thisObject.container.eventHandler.raiseEvent('Dimmensions Changed', event) + /* Floating object position in screen coordinates */ + thisObject.payload.position.x = thisObject.container.frame.position.x + thisObject.payload.position.y = thisObject.container.frame.position.y } - // The imageSize also have a target. - if (Math.abs(thisObject.currentImageSize - thisObject.targetImageSize) >= ANIMATION_STEP) { - if (thisObject.currentImageSize < thisObject.targetImageSize) { - thisObject.currentImageSize = thisObject.currentImageSize + ANIMATION_STEP - } else { - thisObject.currentImageSize = thisObject.currentImageSize - ANIMATION_STEP - } + + function onMouseOver(point) { + if (thisObject.isOnFocus === false) { + setFocus(point) + } } - // The fontSize also have a target. - - if (Math.abs(thisObject.currentFontSize - thisObject.targetFontSize) >= ANIMATION_STEP / 10) { - if (thisObject.currentFontSize < thisObject.targetFontSize) { - thisObject.currentFontSize = thisObject.currentFontSize + ANIMATION_STEP / 10 - } else { - thisObject.currentFontSize = thisObject.currentFontSize - ANIMATION_STEP / 10 - } + function mouseOverFlotingSpace(point) { + removeFocus() } - if (Math.abs(thisObject.currentHierarchyRing - thisObject.targetHierarchyRing) >= ANIMATION_STEP) { - if (thisObject.currentHierarchyRing < thisObject.targetHierarchyRing) { - thisObject.currentHierarchyRing = thisObject.currentHierarchyRing + ANIMATION_STEP - } else { - thisObject.currentHierarchyRing = thisObject.currentHierarchyRing - ANIMATION_STEP - } + function someoneAquiredFocus(floatingObject) { + if (floatingObject === undefined || floatingObject.container === undefined) { + return + } + if (thisObject.container === undefined) { + return + } + if (floatingObject.container.id !== thisObject.container.id) { + removeFocus() + } } - /* Floating object position in screen coordinates */ - - thisObject.payload.position.x = thisObject.container.frame.position.x - thisObject.payload.position.y = thisObject.container.frame.position.y - } - - function onMouseOver (point) { - if (thisObject.isOnFocus === false) { - thisObject.targetRadius = thisObject.rawRadius * 6.0 - thisObject.targetImageSize = thisObject.rawImageSize * 2.0 - thisObject.targetFontSize = thisObject.rawFontSize * 2.0 - thisObject.targetHierarchyRing = thisObject.rawHierarchyRing * 8.0 - - thisObject.payload.uiObject.container.eventHandler.raiseEvent('onFocus', point) - - thisObject.positionLocked = true - - canvas.floatingSpace.container.eventHandler.raiseEvent('onFocusAquired', thisObject) - thisObject.isOnFocus = true - } - } - - function mouseOverFlotingSpace (point) { - removeFocus() - } - - function someoneAquiredFocus (floatingObject) { - if (floatingObject === undefined || floatingObject.container === undefined) { - return - } - if (thisObject.container === undefined) { - return - } - if (floatingObject.container.id !== thisObject.container.id) { - removeFocus() - } - } - - function removeFocus () { - if (thisObject.payload === undefined) { return } - if (thisObject.isOnFocus === true) { - thisObject.targetRadius = thisObject.rawRadius * 1 - thisObject.targetImageSize = thisObject.rawImageSize * 1 - thisObject.targetFontSize = thisObject.rawFontSize * 1 - thisObject.targetHierarchyRing = thisObject.rawHierarchyRing * 1 - - thisObject.payload.uiObject.container.eventHandler.raiseEvent('onNotFocus', thisObject.container) - - if (thisObject.isPinned !== true) { - thisObject.positionLocked = false - } - thisObject.isOnFocus = false - } - } - - function onMouseClick (pPoint) { - let event = { - point: pPoint, - parent: thisObject - } - thisObject.payload.uiObject.container.eventHandler.raiseEvent('onMouseClick', event) - } - - function drawBackground () { - if (canvas.floatingSpace.isItFar(thisObject.payload) && thisObject.payload.uiObject.isShowing === false) { return } - if ((thisObject.isCollapsed === true && thisObject.collapsedManually === false) || thisObject.isParentCollapsed === true) { - if (thisObject.payload.uiObject.isShowing !== true) { - return - } - } - thisObject.payload.uiObject.drawBackground() - } - - function drawMiddleground () { - if (canvas.floatingSpace.isItFar(thisObject.payload) && thisObject.payload.uiObject.isShowing === false) { return } - if ((thisObject.isCollapsed === true && thisObject.collapsedManually === false) || thisObject.isParentCollapsed === true) { - if (thisObject.payload.uiObject.isShowing !== true) { - return - } - } - thisObject.payload.uiObject.drawMiddleground() - } - - function drawForeground () { - if (canvas.floatingSpace.isItFar(thisObject.payload) && thisObject.payload.uiObject.isShowing === false) { return } - if ((thisObject.isCollapsed === true && thisObject.collapsedManually === false) || thisObject.isParentCollapsed === true) { - if (thisObject.payload.uiObject.isShowing !== true) { - return - } - } - thisObject.payload.uiObject.drawForeground() - } - - function drawOnFocus () { - thisObject.payload.uiObject.drawOnFocus() - } - - function initializeMass (suggestedValue) { - let mass = suggestedValue - if (mass < 0.1) { - mass = 0.1 + function forceFocus() { + forcedFocusCounter = 10 + setFocus() } - thisObject.rawMass = mass - thisObject.currentMass = mass - } - - function initializeRadius (suggestedValue) { - let radius = suggestedValue - if (radius < 2) { - radius = 2 + function removeForceFocus() { + forcedFocusCounter = 0 + removeFocus() } - thisObject.rawRadius = radius - thisObject.targetRadius = radius - thisObject.container.frame.radius = radius / 5 + function setFocus(point) { + thisObject.targetRadius = thisObject.rawRadius * 6.0 + thisObject.targetImageSize = thisObject.rawImageSize * 2.0 + thisObject.targetFontSize = thisObject.rawFontSize * 2.0 + thisObject.targetHierarchyRing = thisObject.rawHierarchyRing * 8.0 - thisObject.container.eventHandler.raiseEvent('Dimmensions Changed', event) - } + thisObject.payload.uiObject.container.eventHandler.raiseEvent('onFocus', point) - function initializeImageSize (suggestedValue) { - let size = suggestedValue - if (size < 2) { - size = 2 + thisObject.positionLocked = true + + canvas.floatingSpace.container.eventHandler.raiseEvent('onFocusAquired', thisObject) + thisObject.isOnFocus = true } - thisObject.rawImageSize = size - thisObject.targetImageSize = size - thisObject.currentImageSize = size / 3 - } + function removeFocus() { + if (forcedFocusCounter > 0) { + return + } + if (thisObject.payload === undefined) { return } + if (thisObject.isOnFocus === true) { + thisObject.targetRadius = thisObject.rawRadius * 1 + thisObject.targetImageSize = thisObject.rawImageSize * 1 + thisObject.targetFontSize = thisObject.rawFontSize * 1 + thisObject.targetHierarchyRing = thisObject.rawHierarchyRing * 1 - function initializeFontSize (suggestedValue) { - let size = suggestedValue - if (size < 3) { - size = 3 + thisObject.payload.uiObject.container.eventHandler.raiseEvent('onNotFocus', thisObject.container) + + if (thisObject.isPinned !== true) { + thisObject.positionLocked = false + } + thisObject.isOnFocus = false + } } - thisObject.rawFontSize = size - thisObject.targetFontSize = size - thisObject.currentFontSize = size / 3 - } - - function initializeHierarchyRing (suggestedValue) { - let radius = suggestedValue - if (radius < 3) { - radius = 3 + function onMouseClick(pPoint) { + let event = { + point: pPoint, + parent: thisObject + } + thisObject.payload.uiObject.container.eventHandler.raiseEvent('onMouseClick', event) } - thisObject.rawHierarchyRing = radius - thisObject.targetHierarchyRing = radius - thisObject.currentHierarchyRing = radius - } + function drawBackground() { + if (thisObject.payload === undefined) { return } + if (thisObject.payload.uiObject === undefined) { return } - function initializeCurrentPosition (arroundPoint) { - let position = {} - - if (thisObject.payload.position === undefined) { - position = { - x: Math.floor((Math.random() * (200) - 100)) + arroundPoint.x, - y: Math.floor((Math.random() * (200) - 100)) + arroundPoint.y - } - } else { - position = { - x: thisObject.payload.position.x, - y: thisObject.payload.position.y - } + if (canvas.floatingSpace.isItFar(thisObject.payload) && thisObject.payload.uiObject.isShowing === false) { return } + if ((thisObject.isCollapsed === true && thisObject.collapsedManually === false) || thisObject.isParentCollapsed === true) { + if (thisObject.payload.uiObject.isShowing !== true) { + return + } + } + thisObject.payload.uiObject.drawBackground() } - setPosition(position) - } + function drawMiddleground() { + if (thisObject.payload === undefined) { return } + if (thisObject.payload.uiObject === undefined) { return } - function setPosition (position) { - thisObject.container.frame.position.x = position.x - thisObject.container.frame.position.y = position.y - - thisObject.payload.position = {} - thisObject.payload.position.x = position.x - thisObject.payload.position.y = position.y - } - - function radomizeCurrentSpeed () { - var initialXDirection - var randomX = Math.floor((Math.random() * 10) + 1) - if (randomX > 5) { - initialXDirection = 1 - } else { - initialXDirection = -1 + if (canvas.floatingSpace.isItFar(thisObject.payload) && thisObject.payload.uiObject.isShowing === false) { return } + if ((thisObject.isCollapsed === true && thisObject.collapsedManually === false) || thisObject.isParentCollapsed === true) { + if (thisObject.payload.uiObject.isShowing !== true) { + return + } + } + thisObject.payload.uiObject.drawMiddleground() } - var initialYDirection - var randomY = Math.floor((Math.random() * 10) + 1) - if (randomY > 5) { - initialYDirection = 1 - } else { - initialYDirection = -1 + function drawForeground() { + if (thisObject.payload === undefined) { return } + if (thisObject.payload.uiObject === undefined) { return } + + if (canvas.floatingSpace.isItFar(thisObject.payload) && thisObject.payload.uiObject.isShowing === false) { return } + if ((thisObject.isCollapsed === true && thisObject.collapsedManually === false) || thisObject.isParentCollapsed === true) { + if (thisObject.payload.uiObject.isShowing !== true) { + return + } + } + thisObject.payload.uiObject.drawForeground() } - var velocity = { - x: initialXDirection * Math.floor((Math.random() * 300) + 1) / 100, - y: initialYDirection * Math.floor((Math.random() * 300) + 1) / 100 + function drawOnFocus() { + if (thisObject.payload === undefined) { return } + if (thisObject.payload.uiObject === undefined) { return } + + thisObject.payload.uiObject.drawOnFocus() } - thisObject.currentSpeed = velocity - } + function initializeMass(suggestedValue) { + let mass = suggestedValue + if (mass < 0.1) { + mass = 0.1 + } - function updateMass () { + thisObject.rawMass = mass + thisObject.currentMass = mass + } - } + function initializeRadius(suggestedValue) { + let radius = suggestedValue + if (radius < 2) { + radius = 2 + } - function updateRadius () { - } + thisObject.rawRadius = radius + thisObject.targetRadius = radius + thisObject.container.frame.radius = radius + + thisObject.container.eventHandler.raiseEvent('Dimmensions Changed', event) + } + + function initializeImageSize(suggestedValue) { + let size = suggestedValue + if (size < 2) { + size = 2 + } + + thisObject.rawImageSize = size + thisObject.targetImageSize = size + thisObject.currentImageSize = size / 3 + } + + function initializeFontSize(suggestedValue) { + let size = suggestedValue + if (size < 3) { + size = 3 + } + + thisObject.rawFontSize = size + thisObject.targetFontSize = size + thisObject.currentFontSize = size / 3 + } + + function initializeHierarchyRing(suggestedValue) { + let radius = suggestedValue + if (radius < 3) { + radius = 3 + } + + thisObject.rawHierarchyRing = radius + thisObject.targetHierarchyRing = radius + thisObject.currentHierarchyRing = radius + } + + function initializeCurrentPosition(arroundPoint) { + let position = {} + + if (thisObject.payload.position === undefined) { + position = { + x: Math.floor((Math.random() * (200) - 100)) + arroundPoint.x, + y: Math.floor((Math.random() * (200) - 100)) + arroundPoint.y + } + } else { + position = { + x: thisObject.payload.position.x, + y: thisObject.payload.position.y + } + } + + setPosition(position) + } + + function setPosition(position) { + thisObject.container.frame.position.x = position.x + thisObject.container.frame.position.y = position.y + + thisObject.payload.position = {} + thisObject.payload.position.x = position.x + thisObject.payload.position.y = position.y + } + + function radomizeCurrentSpeed() { + var initialXDirection + var randomX = Math.floor((Math.random() * 10) + 1) + if (randomX > 5) { + initialXDirection = 1 + } else { + initialXDirection = -1 + } + + var initialYDirection + var randomY = Math.floor((Math.random() * 10) + 1) + if (randomY > 5) { + initialYDirection = 1 + } else { + initialYDirection = -1 + } + + var velocity = { + x: initialXDirection * Math.floor((Math.random() * 300) + 1) / 100, + y: initialYDirection * Math.floor((Math.random() * 300) + 1) / 100 + } + + thisObject.currentSpeed = velocity + } + + function updateMass() { + + } + + function updateRadius() { + } } diff --git a/CanvasApp/FloatingSpace/FormulaEditor.js b/CanvasApp/FloatingSpace/FormulaEditor.js index 596f1ba27..e749b5c57 100644 --- a/CanvasApp/FloatingSpace/FormulaEditor.js +++ b/CanvasApp/FloatingSpace/FormulaEditor.js @@ -1,199 +1,199 @@ -function newFormulaEditor () { - const MODULE_NAME = 'Formula Editor' +function newFormulaEditor() { + const MODULE_NAME = 'Formula Editor' - let thisObject = { - isVisibleFunction: undefined, - visible: false, - imagePathOK: undefined, - imagePathNOT_OK: undefined, - rawRadius: undefined, - targetRadius: undefined, - currentRadius: undefined, - container: undefined, - payload: undefined, - deactivate: deactivate, - activate: activate, - physics: physics, - drawBackground: drawBackground, - drawForeground: drawForeground, - getContainer: getContainer, - finalize: finalize, - initialize: initialize - } - - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) - thisObject.container.isClickeable = false - thisObject.container.isDraggeable = false - thisObject.container.detectMouseOver = false - thisObject.container.frame.radius = 0 - thisObject.container.frame.position.x = 0 - thisObject.container.frame.position.y = 0 - - let isMouseOver = false - let SIZE_FACTOR = 1.2 - - return thisObject - - function finalize () { - thisObject.container.finalize() - thisObject.container = undefined - thisObject.payload = undefined - thisObject.isVisibleFunction = undefined - } - - function initialize () { - - } - - function deactivate () { - if (thisObject.visible === true) { - thisObject.visible = false - let textArea = document.getElementById('textArea') - textArea.style.display = 'none' - thisObject.payload.node.code = textArea.value - } - EDITOR_ON_FOCUS = false - } - - function activate (payload) { - thisObject.visible = true - thisObject.payload = payload - thisObject.rawRadius = 8 - thisObject.targetRadius = thisObject.container.frame.radius - thisObject.currentRadius = 0 - thisObject.payload.uiObject.setErrorMessage('', 0) - - let textArea = document.getElementById('textArea') - textArea.value = payload.node.code - textArea.style = 'resize: none;' + - ' border: none;' + - ' outline: none;' + - 'box-shadow: none;' + - 'overflow:hidden;' + - 'font-family: ' + UI_FONT.PRIMARY + ';' + - 'font-size: 14px;' + - 'background-color: rgb(' + UI_COLOR.MANGANESE_PURPLE + ');' + - 'color:rgb(255, 255, 255);' + - 'width: ' + thisObject.container.frame.width + 'px;' + - 'height: ' + thisObject.container.frame.height + 'px' - textArea.style.display = 'block' - textArea.focus() - EDITOR_ON_FOCUS = true - } - - function getContainer (point) { - let container - if (thisObject.visible === true) { - if (point.x === VERY_LARGE_NUMBER) { - /* The the mouse leaves the canvas, and event of mouse over with a ridiculous coordinate is triggered so that - anyone can react. In our case, the code editor has a text area that is not part of the canvas, so the event is - triggered. We compensate recognizing this coordinate and returning our container. */ - return thisObject.container - } - - if (thisObject.container.frame.isThisPointHere(point, true, false) === true) { - return thisObject.container - } else { - return undefined - } - } - } - - function physics () { - if (Math.abs(thisObject.currentRadius - thisObject.targetRadius) >= 0.5) { - if (thisObject.currentRadius < thisObject.targetRadius) { - thisObject.currentRadius = thisObject.currentRadius + 0.5 - } else { - thisObject.currentRadius = thisObject.currentRadius - 0.5 - } + let thisObject = { + isVisibleFunction: undefined, + visible: false, + imagePathOK: undefined, + imagePathNOT_OK: undefined, + rawRadius: undefined, + targetRadius: undefined, + currentRadius: undefined, + container: undefined, + payload: undefined, + deactivate: deactivate, + activate: activate, + physics: physics, + drawBackground: drawBackground, + drawForeground: drawForeground, + getContainer: getContainer, + finalize: finalize, + initialize: initialize } + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) + thisObject.container.isClickeable = false + thisObject.container.isDraggeable = false + thisObject.container.detectMouseOver = false + thisObject.container.frame.radius = 0 thisObject.container.frame.position.x = 0 thisObject.container.frame.position.y = 0 - thisObject.container.frame.width = thisObject.container.frame.radius * 1.8 * SIZE_FACTOR - thisObject.container.frame.height = thisObject.container.frame.radius * 1 * SIZE_FACTOR + let isMouseOver = false + let SIZE_FACTOR = 1.0 - let textAreaPosition = { - x: 0 - thisObject.container.frame.width / 2, - y: 0 - thisObject.container.frame.height * 3 / 7 + CURRENT_TOP_MARGIN + return thisObject + + function finalize() { + thisObject.container.finalize() + thisObject.container = undefined + thisObject.payload = undefined + thisObject.isVisibleFunction = undefined } - textAreaPosition = thisObject.container.frame.frameThisPoint(textAreaPosition) - if (thisObject.visible === true) { - let checkPosition = { - x: textAreaPosition.x, - y: textAreaPosition.y - CURRENT_TOP_MARGIN - } - if (thisObject.isVisibleFunction(checkPosition) === false) { - deactivate() - } - } - if (thisObject.visible === true) { - let textAreaDiv = document.getElementById('textAreaDiv') - textAreaDiv.style = 'position:fixed; top:' + textAreaPosition.y + 'px; left:' + textAreaPosition.x + 'px; z-index:1; ' - } - } + function initialize() { - function drawBackground () { - if (thisObject.visible === true) { - let position = { - x: 0, - y: 0 - } - - position = thisObject.container.frame.frameThisPoint(position) - - let radius = thisObject.container.frame.radius * SIZE_FACTOR - - if (radius > 0.5) { - browserCanvasContext.beginPath() - browserCanvasContext.arc(position.x, position.y, radius * 1.3 + 3, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + 1 + ')' - browserCanvasContext.fill() - - browserCanvasContext.beginPath() - browserCanvasContext.arc(position.x, position.y, radius * 1.3, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.MANGANESE_PURPLE + ', ' + 1 + ')' - browserCanvasContext.fill() - } - } - } - function drawForeground () { - let iconPosition = { - x: 0, - y: thisObject.currentRadius * 1.5 } - iconPosition = thisObject.container.frame.frameThisPoint(iconPosition) + function deactivate() { + if (thisObject.visible === true) { + thisObject.visible = false + let textArea = document.getElementById('textArea') + textArea.style.display = 'none' + thisObject.payload.node.code = textArea.value + } + EDITOR_ON_FOCUS = false + } - /* Menu Item */ + function activate(payload) { + thisObject.visible = true + thisObject.payload = payload + thisObject.rawRadius = 8 + thisObject.targetRadius = thisObject.container.frame.radius + thisObject.currentRadius = 0 + thisObject.payload.uiObject.resetErrorMessage() - if (thisObject.canDrawIcon === true && thisObject.currentRadius > 1) { - browserCanvasContext.drawImage(thisObject.icon, iconPosition.x - thisObject.currentRadius, iconPosition.y - thisObject.currentRadius, thisObject.currentRadius * 2, thisObject.currentRadius * 2) + let textArea = document.getElementById('textArea') + textArea.value = payload.node.code + textArea.style = 'resize: none;' + + ' border: none;' + + ' outline: none;' + + 'box-shadow: none;' + + 'overflow:hidden;' + + 'font-family: ' + UI_FONT.PRIMARY + ';' + + 'font-size: 14px;' + + 'background-color: rgb(' + UI_COLOR.MANGANESE_PURPLE + ');' + + 'color:rgb(255, 255, 255);' + + 'width: ' + thisObject.container.frame.width + 'px;' + + 'height: ' + thisObject.container.frame.height + 'px' + textArea.style.display = 'block' + textArea.focus() + EDITOR_ON_FOCUS = true + } - /* Menu Label */ + function getContainer(point) { + let container + if (thisObject.visible === true) { + if (point.x === VERY_LARGE_NUMBER) { + /* The the mouse leaves the canvas, and event of mouse over with a ridiculous coordinate is triggered so that + anyone can react. In our case, the code editor has a text area that is not part of the canvas, so the event is + triggered. We compensate recognizing this coordinate and returning our container. */ + return thisObject.container + } - let label = 'Code looks good!' - let labelPoint - let fontSize = 10 + if (thisObject.container.frame.isThisPointHere(point, true, false) === true) { + return thisObject.container + } else { + return undefined + } + } + } - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - - if (label !== undefined && thisObject.currentRadius >= thisObject.targetRadius) { - labelPoint = { - x: iconPosition.x + thisObject.currentRadius + 10, - y: iconPosition.y + fontSize * FONT_ASPECT_RATIO + function physics() { + if (Math.abs(thisObject.currentRadius - thisObject.targetRadius) >= 0.5) { + if (thisObject.currentRadius < thisObject.targetRadius) { + thisObject.currentRadius = thisObject.currentRadius + 0.5 + } else { + thisObject.currentRadius = thisObject.currentRadius - 0.5 + } } - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) - } + thisObject.container.frame.position.x = 0 + thisObject.container.frame.position.y = 0 + + thisObject.container.frame.width = thisObject.container.frame.radius * 1 * SIZE_FACTOR + thisObject.container.frame.height = thisObject.container.frame.radius * 1 * SIZE_FACTOR + + let textAreaPosition = { + x: 0 - thisObject.container.frame.width / 2, + y: 0 - thisObject.container.frame.height * 3 / 7 + CURRENT_TOP_MARGIN + } + + textAreaPosition = thisObject.container.frame.frameThisPoint(textAreaPosition) + if (thisObject.visible === true) { + let checkPosition = { + x: textAreaPosition.x, + y: textAreaPosition.y - CURRENT_TOP_MARGIN + } + if (thisObject.isVisibleFunction(checkPosition) === false) { + deactivate() + } + } + if (thisObject.visible === true) { + let textAreaDiv = document.getElementById('textAreaDiv') + textAreaDiv.style = 'position:fixed; top:' + textAreaPosition.y + 'px; left:' + textAreaPosition.x + 'px; z-index:1; ' + } + } + + function drawBackground() { + if (thisObject.visible === true) { + let position = { + x: 0, + y: 0 + } + + position = thisObject.container.frame.frameThisPoint(position) + + let radius = thisObject.container.frame.radius * SIZE_FACTOR + + if (radius > 0.5) { + browserCanvasContext.beginPath() + browserCanvasContext.arc(position.x, position.y, radius + 3, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + 1 + ')' + browserCanvasContext.fill() + + browserCanvasContext.beginPath() + browserCanvasContext.arc(position.x, position.y, radius , 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.MANGANESE_PURPLE + ', ' + 1 + ')' + browserCanvasContext.fill() + } + } + } + function drawForeground() { + let iconPosition = { + x: 0, + y: thisObject.currentRadius * 1.5 + } + + iconPosition = thisObject.container.frame.frameThisPoint(iconPosition) + + /* Menu Item */ + + if (thisObject.canDrawIcon === true && thisObject.currentRadius > 1) { + browserCanvasContext.drawImage(thisObject.icon, iconPosition.x - thisObject.currentRadius, iconPosition.y - thisObject.currentRadius, thisObject.currentRadius * 2, thisObject.currentRadius * 2) + + /* Menu Label */ + + let label = 'Code looks good!' + let labelPoint + let fontSize = 10 + + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + + if (label !== undefined && thisObject.currentRadius >= thisObject.targetRadius) { + labelPoint = { + x: iconPosition.x + thisObject.currentRadius + 10, + y: iconPosition.y + fontSize * FONT_ASPECT_RATIO + } + + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) + } + } } - } } diff --git a/CanvasApp/FloatingSpace/Picker.js b/CanvasApp/FloatingSpace/Picker.js index b306ac85e..4d3a25759 100644 --- a/CanvasApp/FloatingSpace/Picker.js +++ b/CanvasApp/FloatingSpace/Picker.js @@ -1,220 +1,220 @@ -function newPicker () { - const MODULE_NAME = 'Picker' +function newPicker() { + const MODULE_NAME = 'Picker' - let thisObject = { - container: undefined, - selectedItem: 0, - onParentChanged: onParentChanged, - getSelected: getSelected, - setSelected: setSelected, - physics: physics, - drawBackground: drawBackground, - drawForeground: drawForeground, - getContainer: getContainer, - finalize: finalize, - initialize: initialize - } - - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) - thisObject.container.isClickeable = false - thisObject.container.isDraggeable = false - thisObject.container.isWheelable = true - thisObject.container.detectMouseOver = true - thisObject.container.frame.radius = 0 - thisObject.container.frame.position.x = 0 - thisObject.container.frame.position.y = 0 - thisObject.container.frame.width = 150 - thisObject.container.frame.height = 60 - - let isMouseOver - let optionsList - let parent - let current - let parentSelected = 0 - let propertyName - let selected = 0 - let lastSelected = 0 - let onMouseWheelEventSubscriptionId - let onMouseOverEventSubscriptionId - let onMouseNotOverEventSubscriptionId - - return thisObject - - function finalize () { - thisObject.container.eventHandler.stopListening(onMouseWheelEventSubscriptionId) - thisObject.container.eventHandler.stopListening(onMouseOverEventSubscriptionId) - thisObject.container.eventHandler.stopListening(onMouseNotOverEventSubscriptionId) - thisObject.container.finalize() - thisObject.container = undefined - optionsList = undefined - parent = undefined - current = undefined - } - - function initialize (pOptionsList, pCurrent, pParent, pPropertyName) { - optionsList = pOptionsList - current = pCurrent - parent = pParent - propertyName = pPropertyName - onMouseWheelEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseWheel', onMouseWheel) - onMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) - onMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) - } - - function onMouseOver (event) { - isMouseOver = true - } - - function onMouseNotOver () { - isMouseOver = false - } - - function getSelected () { - return optionsList[selected] - } - - function setSelected (pOptionsList, pCurrent, pParent, pSelected) { - if (pOptionsList !== undefined) { - optionsList = pOptionsList - } - if (pCurrent !== undefined) { - current = pCurrent - } - if (pParent !== undefined) { - parent = pParent - } - if (pSelected !== undefined) { - selected = pSelected - } - raiseEventParentChanged() - } - - function onParentChanged (event) { - if (event.parent !== undefined) { - parent = event.parent - } - parentSelected = event.selected - - selected = 0 - let parentKeys - - parentKeys = Object.keys(parent) - checkPropertyName() - - function checkPropertyName () { - if (propertyName === undefined) { - current = parent[parentKeys[parentSelected]] - checkArray() - } else { - current = parent[parentKeys[parentSelected]] - current = current[propertyName] - checkArray() - } + let thisObject = { + container: undefined, + selectedItem: 0, + onParentChanged: onParentChanged, + getSelected: getSelected, + setSelected: setSelected, + physics: physics, + drawBackground: drawBackground, + drawForeground: drawForeground, + getContainer: getContainer, + finalize: finalize, + initialize: initialize } - function checkArray () { - if (Array.isArray(current) === false) { - optionsList = Object.keys(current) - } else { - optionsList = current - } + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) + thisObject.container.isClickeable = false + thisObject.container.isDraggeable = false + thisObject.container.isWheelable = true + thisObject.container.detectMouseOver = true + thisObject.container.frame.radius = 0 + thisObject.container.frame.position.x = 0 + thisObject.container.frame.position.y = 0 + thisObject.container.frame.width = 150 + thisObject.container.frame.height = 60 + + let isMouseOver + let optionsList + let parent + let current + let parentSelected = 0 + let propertyName + let selected = 0 + let lastSelected = 0 + let onMouseWheelEventSubscriptionId + let onMouseOverEventSubscriptionId + let onMouseNotOverEventSubscriptionId + + return thisObject + + function finalize() { + thisObject.container.eventHandler.stopListening(onMouseWheelEventSubscriptionId) + thisObject.container.eventHandler.stopListening(onMouseOverEventSubscriptionId) + thisObject.container.eventHandler.stopListening(onMouseNotOverEventSubscriptionId) + thisObject.container.finalize() + thisObject.container = undefined + optionsList = undefined + parent = undefined + current = undefined } - raiseEventParentChanged() - } - - function getContainer (point) { - let container - - if (thisObject.container.frame.isThisPointHere(point, true, false) === true) { - return thisObject.container - } - } - - function getSelected () { - return optionsList[selected] - } - - function onMouseWheel () { - delta = event.wheelDelta - if (delta > 0) { - delta = -1 - } else { - delta = 1 + function initialize(pOptionsList, pCurrent, pParent, pPropertyName) { + optionsList = pOptionsList + current = pCurrent + parent = pParent + propertyName = pPropertyName + onMouseWheelEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseWheel', onMouseWheel) + onMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) + onMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) } - selected = selected + delta - if (selected < 0) { selected = 0 } - if (selected > optionsList.length - 1) { - selected = optionsList.length - 1 + function onMouseOver(event) { + isMouseOver = true } - if (selected !== lastSelected) { - lastSelected = selected - raiseEventParentChanged() + function onMouseNotOver() { + isMouseOver = false } - } - function raiseEventParentChanged () { - let event = { - selected: selected, - parent: current, - propertyName: propertyName + function getSelected() { + return optionsList[selected] } - thisObject.container.eventHandler.raiseEvent('onParentChanged', event) - } - function physics () { - - } - - function drawBackground () { - - } - - function drawForeground () { - const FONT_SIZE = 15 - const VISIBLE_LABELS = 5 - let fontSize - let fontColor - let opacity - - for (let i = 0; i < VISIBLE_LABELS; i++) { - let index = i - 2 + selected - let label = '' - if (index >= 0 && index < optionsList.length) { - label = optionsList[index] - } - fontColor = UI_COLOR.LIGHT_GREY - switch (i) { - case 0: - fontSize = FONT_SIZE - 5 - opacity = 0.4 - break - case 1: - fontSize = FONT_SIZE - 3 - opacity = 0.5 - break - case 2: - fontSize = FONT_SIZE - 0 - fontColor = UI_COLOR.BLACK - opacity = 1 - break - case 3: - fontSize = FONT_SIZE - 3 - opacity = 0.5 - break - case 4: - fontSize = FONT_SIZE - 5 - opacity = 0.4 - break - } - - if (i === 2 || isMouseOver === true) { - drawLabel(label, 1 / 2, i / VISIBLE_LABELS, 0, 0, fontSize, thisObject.container, fontColor, undefined, undefined, opacity) - } + function setSelected(pOptionsList, pCurrent, pParent, pSelected) { + if (pOptionsList !== undefined) { + optionsList = pOptionsList + } + if (pCurrent !== undefined) { + current = pCurrent + } + if (pParent !== undefined) { + parent = pParent + } + if (pSelected !== undefined) { + selected = pSelected + } + raiseEventParentChanged() + } + + function onParentChanged(event) { + if (event.parent !== undefined) { + parent = event.parent + } + parentSelected = event.selected + + selected = 0 + let parentKeys + + parentKeys = Object.keys(parent) + checkPropertyName() + + function checkPropertyName() { + if (propertyName === undefined) { + current = parent[parentKeys[parentSelected]] + checkArray() + } else { + current = parent[parentKeys[parentSelected]] + current = current[propertyName] + checkArray() + } + } + + function checkArray() { + if (Array.isArray(current) === false) { + optionsList = Object.keys(current) + } else { + optionsList = current + } + } + + raiseEventParentChanged() + } + + function getContainer(point) { + let container + + if (thisObject.container.frame.isThisPointHere(point, true, false) === true) { + return thisObject.container + } + } + + function getSelected() { + return optionsList[selected] + } + + function onMouseWheel() { + delta = event.wheelDelta + if (delta > 0) { + delta = -1 + } else { + delta = 1 + } + + selected = selected + delta + if (selected < 0) { selected = 0 } + if (selected > optionsList.length - 1) { + selected = optionsList.length - 1 + } + + if (selected !== lastSelected) { + lastSelected = selected + raiseEventParentChanged() + } + } + + function raiseEventParentChanged() { + let event = { + selected: selected, + parent: current, + propertyName: propertyName + } + thisObject.container.eventHandler.raiseEvent('onParentChanged', event) + } + + function physics() { + + } + + function drawBackground() { + + } + + function drawForeground() { + const FONT_SIZE = 15 + const VISIBLE_LABELS = 5 + let fontSize + let fontColor + let opacity + + for (let i = 0; i < VISIBLE_LABELS; i++) { + let index = i - 2 + selected + let label = '' + if (index >= 0 && index < optionsList.length) { + label = optionsList[index] + } + fontColor = UI_COLOR.LIGHT_GREY + switch (i) { + case 0: + fontSize = FONT_SIZE - 5 + opacity = 0.4 + break + case 1: + fontSize = FONT_SIZE - 3 + opacity = 0.5 + break + case 2: + fontSize = FONT_SIZE - 0 + fontColor = UI_COLOR.BLACK + opacity = 1 + break + case 3: + fontSize = FONT_SIZE - 3 + opacity = 0.5 + break + case 4: + fontSize = FONT_SIZE - 5 + opacity = 0.4 + break + } + + if (i === 2 || isMouseOver === true) { + drawLabel(label, 1 / 2, i / VISIBLE_LABELS, 0, 0, fontSize, thisObject.container, fontColor, undefined, undefined, opacity) + } + } } - } } diff --git a/CanvasApp/FloatingSpace/UiObject.js b/CanvasApp/FloatingSpace/UiObject.js index 1739df110..9fa1f1cdc 100644 --- a/CanvasApp/FloatingSpace/UiObject.js +++ b/CanvasApp/FloatingSpace/UiObject.js @@ -1,1798 +1,2175 @@ -function newUiObject () { - const MODULE_NAME = 'UI Object' - const ERROR_LOG = true +function newUiObject() { + const MODULE_NAME = 'UI Object' + const ERROR_LOG = true - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME - let thisObject = { - fitFunction: undefined, - isVisibleFunction: undefined, - type: undefined, - menu: undefined, - isOnFocus: false, - container: undefined, - payload: undefined, - codeEditor: undefined, - configEditor: undefined, - conditionEditor: undefined, - formulaEditor: undefined, - uiObjectTitle: undefined, - circularProgressBar: undefined, - isExecuting: undefined, - isRunning: undefined, - shortcutKey: undefined, - isShowing: undefined, - run: run, - stop: stop, - heartBeat: heartBeat, - getReadyToChainAttach: getReadyToChainAttach, - showAvailabilityToChainAttach: showAvailabilityToChainAttach, - getReadyToReferenceAttach: getReadyToReferenceAttach, - showAvailabilityToReferenceAttach: showAvailabilityToReferenceAttach, - highlight: highlight, - setErrorMessage: setErrorMessage, - setValue: setValue, - setPercentage: setPercentage, - setStatus: setStatus, - physics: physics, - invisiblePhysics: invisiblePhysics, - drawBackground: drawBackground, - drawMiddleground: drawMiddleground, - drawForeground: drawForeground, - drawOnFocus: drawOnFocus, - getContainer: getContainer, - finalize: finalize, - initialize: initialize - } - - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME, 'Circle') - thisObject.container.isClickeable = false - thisObject.container.isDraggeable = false - thisObject.container.frame.radius = 0 - thisObject.container.frame.position.x = 0 - thisObject.container.frame.position.y = 0 - - let icon - let executingIcon - - let selfFocusEventSubscriptionId - let selfNotFocusEventSubscriptionId - let selfDisplaceEventSubscriptionId - let selfDragStartedEventSubscriptionId - let selfDragFinishedEventSubscriptionId - - let isHighlighted - let highlightCounter = 0 - - let hasError - let errorMessageCounter = 0 - - let hasValue - let valueCounter = 0 - - let hasPercentage - let percentageCounter = 0 - - let hasStatus - let statusCounter = 0 - - let previousDistanceToChainParent - let readyToChainAttachDisplayCounter = 5 - let readyToChainAttachDisplayIncrement = 0.1 - let readyToChainAttachCounter = 0 - let isReadyToChainAttach - let availableToChainAttachCounter = 0 - let isAvailableToChainAttach - let isChainAttaching = false - let chainAttachToNode - - let previousDistanceToReferenceParent - let readyToReferenceAttachDisplayCounter = 5 - let readyToReferenceAttachDisplayIncrement = 0.1 - let readyToReferenceAttachCounter = 0 - let isReadyToReferenceAttach - let availableToReferenceAttachCounter = 0 - let isAvailableToReferenceAttach - let isReferenceAttaching = false - let referenceAttachToNode - - let isDragging = false - - let errorMessage = '' - let currentValue = 0 - let currentPercentage = '' - let currentStatus = '' - let rightDragging = false - - let eventSubscriptionIdOnRunning - let eventSubscriptionIdOnStopped - let lastHeartBeat - let onRunningCallBackFunction - let onRunningCallBackFunctionWasCalled = false - - let newUiObjectCounter = 25 - let referenceLineCounter = 0 - let chainLineCounter = 0 - - let eventsServerClient - - return thisObject - - function finalize () { - finalizeEventsServerClient() - - thisObject.container.eventHandler.stopListening(selfFocusEventSubscriptionId) - thisObject.container.eventHandler.stopListening(selfNotFocusEventSubscriptionId) - thisObject.container.eventHandler.stopListening(selfDisplaceEventSubscriptionId) - thisObject.container.eventHandler.stopListening(selfDragStartedEventSubscriptionId) - thisObject.container.eventHandler.stopListening(selfDragFinishedEventSubscriptionId) - - thisObject.container.finalize() - thisObject.container = undefined - thisObject.payload = undefined - thisObject.menu.finalize() - thisObject.menu = undefined - thisObject.uiObjectTitle.finalize() - thisObject.uiObjectTitle = undefined - thisObject.fitFunction = undefined - thisObject.isVisibleFunction = undefined - - if (thisObject.codeEditor !== undefined) { - thisObject.codeEditor.finalize() - thisObject.codeEditor = undefined + let thisObject = { + fitFunction: undefined, + isVisibleFunction: undefined, + type: undefined, + menu: undefined, + isOnFocus: false, + container: undefined, + payload: undefined, + codeEditor: undefined, + configEditor: undefined, + conditionEditor: undefined, + formulaEditor: undefined, + uiObjectTitle: undefined, + circularProgressBar: undefined, + isRunning: undefined, + isPlaying: undefined, + shortcutKey: undefined, + isShowing: undefined, + hasError: undefined, + hasWarning: undefined, + hasInfo: undefined, + valueAtAngle: true, + run: run, + stop: stop, + heartBeat: heartBeat, + getReadyToChainAttach: getReadyToChainAttach, + showAvailabilityToChainAttach: showAvailabilityToChainAttach, + getReadyToReferenceAttach: getReadyToReferenceAttach, + showAvailabilityToReferenceAttach: showAvailabilityToReferenceAttach, + highlight: highlight, + runningAtBackend: runningAtBackend, + setErrorMessage: setErrorMessage, + resetErrorMessage: resetErrorMessage, + setWarningMessage: setWarningMessage, + resetWarningMessage: resetWarningMessage, + setInfoMessage: setInfoMessage, + resetInfoMessage: resetInfoMessage, + setValue: setValue, + resetValue: resetValue, + setPercentage: setPercentage, + resetPercentage: resetPercentage, + setStatus: setStatus, + resetStatus: resetStatus, + physics: physics, + invisiblePhysics: invisiblePhysics, + drawBackground: drawBackground, + drawMiddleground: drawMiddleground, + drawForeground: drawForeground, + drawOnFocus: drawOnFocus, + getContainer: getContainer, + finalize: finalize, + initialize: initialize } - if (thisObject.configEditor !== undefined) { - thisObject.configEditor.finalize() - thisObject.configEditor = undefined - } + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME, 'Circle') + thisObject.container.isClickeable = false + thisObject.container.isDraggeable = false + thisObject.container.frame.radius = 0 + thisObject.container.frame.position.x = 0 + thisObject.container.frame.position.y = 0 - if (thisObject.conditionEditor !== undefined) { - thisObject.conditionEditor.finalize() - thisObject.conditionEditor = undefined - } + let icon + let executingIcon - if (thisObject.formulaEditor !== undefined) { - thisObject.formulaEditor.finalize() - thisObject.formulaEditor = undefined - } + let selfFocusEventSubscriptionId + let selfNotFocusEventSubscriptionId + let selfDisplaceEventSubscriptionId + let selfDragStartedEventSubscriptionId + let selfDragFinishedEventSubscriptionId - icon = undefined - chainAttachToNode = undefined - referenceAttachToNode = undefined - lastHeartBeat = undefined + let isHighlighted + let highlightCounter = 0 - onRunningCallBackFunction = undefined - } + let isRunningAtBackend + let runningAtBackendCounter = 0 - function finalizeEventsServerClient () { - if (eventsServerClient !== undefined) { - let key = thisObject.payload.node.name + '-' + thisObject.payload.node.type + '-' + thisObject.payload.node.id + let errorMessageCounter = 0 + let warningMessageCounter = 0 + let infoMessageCounter = 0 - if (eventSubscriptionIdOnRunning !== undefined) { - eventsServerClient.stopListening(key, eventSubscriptionIdOnRunning, 'UiObject') - } - if (eventSubscriptionIdOnStopped !== undefined) { - eventsServerClient.stopListening(key, eventSubscriptionIdOnStopped, 'UiObject') - } - } - } + let hasValue + let valueCounter = 0 - function initialize (payload, menuItemsInitialValues) { - thisObject.payload = payload + let hasPercentage + let percentageCounter = 0 -/* Initialize the Menu */ + let hasStatus + let statusCounter = 0 - thisObject.menu = newCircularMenu() - thisObject.menu.initialize(menuItemsInitialValues, thisObject.payload) - thisObject.menu.container.connectToParent(thisObject.container, false, false, true, true, false, false, true, true) + let previousDistanceToChainParent + let readyToChainAttachDisplayCounter = 5 + let readyToChainAttachDisplayIncrement = 0.1 + let readyToChainAttachCounter = 0 + let isReadyToChainAttach + let availableToChainAttachCounter = 0 + let isAvailableToChainAttach + let isChainAttaching = false + let chainAttachToNode -/* Initialize UI Object Title */ + let previousDistanceToReferenceParent + let readyToReferenceAttachDisplayCounter = 5 + let readyToReferenceAttachDisplayIncrement = 0.1 + let readyToReferenceAttachCounter = 0 + let isReadyToReferenceAttach + let availableToReferenceAttachCounter = 0 + let isAvailableToReferenceAttach + let isReferenceAttaching = false + let referenceAttachToNode - thisObject.uiObjectTitle = newUiObjectTitle() - thisObject.uiObjectTitle.isVisibleFunction = thisObject.isVisibleFunction - thisObject.uiObjectTitle.container.connectToParent(thisObject.container, false, false, true, true, false, false, true, true) - thisObject.uiObjectTitle.fitFunction = thisObject.fitFunction - thisObject.uiObjectTitle.initialize(thisObject.payload) + let isDragging = false -/* Load UI Object Image */ + let errorMessage = '' + let warningMessage = '' + let infoMessage = '' - iconPhysics() + let currentValue = 0 + let valueMinDecimals = undefined + let currentPercentage = '' + let currentStatus = '' + let rightDragging = false - selfFocusEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onFocus', onFocus) - selfNotFocusEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onNotFocus', onNotFocus) - selfDisplaceEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onDisplace', onDisplace) - selfDragStartedEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onDragStarted', onDragStarted) - selfDragFinishedEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onDragFinished', onDragFinished) - } + let eventSubscriptionIdOnError + let eventSubscriptionIdOnWarning + let eventSubscriptionIdOnInfo + let eventSubscriptionIdOnRunning + let eventSubscriptionIdOnStopped - function getContainer (point) { - let container + let lastHeartBeat + let onRunningCallBackFunction + let onRunningCallBackFunctionWasCalled = false - if (isDragging === false && thisObject.isOnFocus === true) { - if (thisObject.codeEditor !== undefined) { - container = thisObject.codeEditor.getContainer(point) - if (container !== undefined) { return container } - } + let newUiObjectCounter = 25 + let referenceLineCounter = 0 + let chainLineCounter = 0 - if (thisObject.configEditor !== undefined) { - container = thisObject.configEditor.getContainer(point) - if (container !== undefined) { return container } - } + let eventsServerClient - if (thisObject.conditionEditor !== undefined) { - container = thisObject.conditionEditor.getContainer(point) - if (container !== undefined) { return container } - } + return thisObject - if (thisObject.formulaEditor !== undefined) { - container = thisObject.formulaEditor.getContainer(point) - if (container !== undefined) { return container } - } + function finalize() { + finalizeEventsServerClient() - let getitle = true + thisObject.container.eventHandler.stopListening(selfFocusEventSubscriptionId) + thisObject.container.eventHandler.stopListening(selfNotFocusEventSubscriptionId) + thisObject.container.eventHandler.stopListening(selfDisplaceEventSubscriptionId) + thisObject.container.eventHandler.stopListening(selfDragStartedEventSubscriptionId) + thisObject.container.eventHandler.stopListening(selfDragFinishedEventSubscriptionId) - if (thisObject.codeEditor !== undefined) { - if (thisObject.codeEditor.visible === true) { - getitle = false + thisObject.container.finalize() + thisObject.container = undefined + thisObject.payload = undefined + thisObject.menu.finalize() + thisObject.menu = undefined + thisObject.uiObjectTitle.finalize() + thisObject.uiObjectTitle = undefined + thisObject.fitFunction = undefined + thisObject.isVisibleFunction = undefined + + if (thisObject.codeEditor !== undefined) { + thisObject.codeEditor.finalize() + thisObject.codeEditor = undefined } - } - if (thisObject.configEditor !== undefined) { - if (thisObject.configEditor.visible === true) { - getitle = false + + if (thisObject.configEditor !== undefined) { + thisObject.configEditor.finalize() + thisObject.configEditor = undefined } - } - if (thisObject.conditionEditor !== undefined) { - if (thisObject.conditionEditor.visible === true) { - getitle = false + + if (thisObject.conditionEditor !== undefined) { + thisObject.conditionEditor.finalize() + thisObject.conditionEditor = undefined } - } - if (thisObject.formulaEditor !== undefined) { - if (thisObject.formulaEditor.visible === true) { - getitle = false + + if (thisObject.formulaEditor !== undefined) { + thisObject.formulaEditor.finalize() + thisObject.formulaEditor = undefined } - } - if (getitle === true) { - container = thisObject.uiObjectTitle.getContainer(point) - if (container !== undefined) { return container } - } - - container = thisObject.menu.getContainer(point) - if (container !== undefined) { return container } - } - - if (thisObject.container.frame.isThisPointHere(point, true, true) === true) { - return thisObject.container - } else { - return undefined - } - } - - function invisiblePhysics () { - thisObject.menu.invisiblePhysics() - childrenRunningPhysics() - } - - function physics () { - thisObject.menu.physics() - thisObject.uiObjectTitle.physics() - - if (thisObject.codeEditor !== undefined) { - thisObject.codeEditor.physics() - } - - if (thisObject.configEditor !== undefined) { - thisObject.configEditor.physics() - } - - if (thisObject.conditionEditor !== undefined) { - thisObject.conditionEditor.physics() - } - - if (thisObject.formulaEditor !== undefined) { - thisObject.formulaEditor.physics() - } - - if (thisObject.payload.chainParent === undefined || thisObject.payload.chainParent.payload === undefined) { - thisObject.payload.targetPosition.x = thisObject.payload.position.x, - thisObject.payload.targetPosition.y = thisObject.payload.position.y - } else { - if (thisObject.payload.chainParent.payload.position !== undefined) { - thisObject.payload.targetPosition.x = thisObject.payload.chainParent.payload.position.x - thisObject.payload.targetPosition.y = thisObject.payload.chainParent.payload.position.y - } - } - - if (thisObject.circularProgressBar !== undefined) { - thisObject.circularProgressBar.physics() - } - - iconPhysics() - highlightPhisycs() - errorMessagePhisycs() - valuePhisycs() - percentagePhisycs() - statusPhisycs() - chainDetachingPhysics() - chainAttachingPhysics() - referenceDetachingPhysics() - referenceAttachingPhysics() - childrenRunningPhysics() - newObjectPhysics() - referenceLinePhysics() - chainLinePhysics() - } - - function referenceLinePhysics () { - referenceLineCounter = referenceLineCounter + 2 - if (referenceLineCounter > 500) { - referenceLineCounter = 0 - } - } - - function chainLinePhysics () { - chainLineCounter = chainLineCounter - 5 - if (chainLineCounter < 0) { - chainLineCounter = 500 - } - } - - function newObjectPhysics () { - newUiObjectCounter-- - if (newUiObjectCounter < 0) { - newUiObjectCounter = 0 - } - } - - function heartBeatPhysics () { - if (lastHeartBeat !== undefined) { - const ONE_MIN = 60000 - nowTimestamp = (new Date()).valueOf() - if (nowTimestamp - lastHeartBeat.valueOf() > ONE_MIN) { + icon = undefined + chainAttachToNode = undefined + referenceAttachToNode = undefined lastHeartBeat = undefined - thisObject.isRunning = false - valueCounter = 0 - } - } else { - thisObject.isRunning = false - } - } - function childrenRunningPhysics () { - let nodeDefinition = APP_SCHEMA_MAP.get(thisObject.payload.node.type) - if (nodeDefinition.properties === undefined) { return } - let monitorChildrenRunning = false - for (let i = 0; i < nodeDefinition.properties.length; i++) { - let property = nodeDefinition.properties[i] - if (property.monitorChildrenRunning === true) { - let children = thisObject.payload.node[property.name] - if (children === undefined) { continue } - let totalRunning = 0 - for (let j = 0; j < children.length; j++) { - let child = children[j] - if (child.payload !== undefined) { - if (child.payload.uiObject.isRunning === true) { - totalRunning++ + onRunningCallBackFunction = undefined + } + + function finalizeEventsServerClient() { + if (eventsServerClient !== undefined) { + let key = thisObject.payload.node.name + '-' + thisObject.payload.node.type + '-' + thisObject.payload.node.id + + if (eventSubscriptionIdOnRunning !== undefined) { + eventsServerClient.stopListening(key, eventSubscriptionIdOnRunning, 'UiObject') + } + if (eventSubscriptionIdOnStopped !== undefined) { + eventsServerClient.stopListening(key, eventSubscriptionIdOnStopped, 'UiObject') + } + if (eventSubscriptionIdOnError !== undefined) { + eventsServerClient.stopListening(key, eventSubscriptionIdOnError, 'UiObject') + } + if (eventSubscriptionIdOnWarning !== undefined) { + eventsServerClient.stopListening(key, eventSubscriptionIdOnWarning, 'UiObject') + } + if (eventSubscriptionIdOnInfo !== undefined) { + eventsServerClient.stopListening(key, eventSubscriptionIdOnInfo, 'UiObject') } - } } - if (totalRunning > 0) { - setValue(totalRunning + ' / ' + children.length + ' Running') - thisObject.isRunning = true - } else { - thisObject.isRunning = false - valueCounter = 0 - } - monitorChildrenRunning = true - return - } - } - if (monitorChildrenRunning === false) { - heartBeatPhysics() - } - } - - function chainAttachingPhysics () { - chainAttacchingCounters() - - if (thisObject.isOnFocus !== true) { return } - if (isDragging !== true) { return } - if (rightDragging !== true) { return } - if (thisObject.payload.chainParent !== undefined) { return } - - let nearbyFloatingObjects = thisObject.payload.floatingObject.nearbyFloatingObjects - let compatibleTypes - - let nodeDefinition = APP_SCHEMA_MAP.get(thisObject.payload.node.type) - if (nodeDefinition !== undefined) { - if (nodeDefinition.chainAttachesTo !== undefined) { - compatibleTypes = nodeDefinition.chainAttachesTo.compatibleTypes - } else { - return - } - } else { - return } - let foundCompatible = false - chainAttachToNode = undefined - isChainAttaching = false + function initialize(payload, menuItemsInitialValues) { + thisObject.payload = payload - for (let i = 0; i < nearbyFloatingObjects.length; i++) { - let nearby = nearbyFloatingObjects[i] - let distance = nearby[0] - let floatingObject = nearby[1] - let nearbyNode = floatingObject.payload.node - if (compatibleTypes.indexOf('->' + nearbyNode.type + '->') >= 0) { - /* Discard App Schema defined objects with busy coonection ports */ - nodeDefinition = APP_SCHEMA_MAP.get(thisObject.payload.node.type) - if (nodeDefinition !== undefined) { - let mustContinue = false - let parentNodeDefinition = APP_SCHEMA_MAP.get(nearbyNode.type) - if (parentNodeDefinition !== undefined) { - if (parentNodeDefinition.properties !== undefined) { - for (let j = 0; j < parentNodeDefinition.properties.length; j++) { - let property = parentNodeDefinition.properties[j] - if (nodeDefinition.propertyNameAtParent === property.name) { - switch (property.type) { - case 'node': { - if (nearbyNode[property.name] !== undefined) { - mustContinue = true - } - } - break - case 'array': { - /* Nothing to worry about since an array can take more than one element. */ - } - break - } + /* Initialize the Menu */ + + thisObject.menu = newCircularMenu() + thisObject.menu.initialize(menuItemsInitialValues, thisObject.payload) + thisObject.menu.container.connectToParent(thisObject.container, false, false, true, true, false, false, true, true) + + /* Initialize UI Object Title */ + + thisObject.uiObjectTitle = newUiObjectTitle() + thisObject.uiObjectTitle.isVisibleFunction = thisObject.isVisibleFunction + thisObject.uiObjectTitle.container.connectToParent(thisObject.container, false, false, true, true, false, false, true, true) + thisObject.uiObjectTitle.fitFunction = thisObject.fitFunction + thisObject.uiObjectTitle.initialize(thisObject.payload) + + /* Load UI Object Image */ + + iconPhysics() + + selfFocusEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onFocus', onFocus) + selfNotFocusEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onNotFocus', onNotFocus) + selfDisplaceEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onDisplace', onDisplace) + selfDragStartedEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onDragStarted', onDragStarted) + selfDragFinishedEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onDragFinished', onDragFinished) + } + + function getContainer(point) { + + let container + + if (isDragging === false && thisObject.isOnFocus === true) { + if (thisObject.codeEditor !== undefined) { + container = thisObject.codeEditor.getContainer(point) + if (container !== undefined) { return container } + } + + if (thisObject.configEditor !== undefined) { + container = thisObject.configEditor.getContainer(point) + if (container !== undefined) { return container } + } + + if (thisObject.conditionEditor !== undefined) { + container = thisObject.conditionEditor.getContainer(point) + if (container !== undefined) { return container } + } + + if (thisObject.formulaEditor !== undefined) { + container = thisObject.formulaEditor.getContainer(point) + if (container !== undefined) { return container } + } + + let getitle = true + + if (thisObject.codeEditor !== undefined) { + if (thisObject.codeEditor.visible === true) { + getitle = false } - } } - } - if (mustContinue === true) { continue } - } - - /* Discard Phases without partent */ - if (thisObject.payload.node.type === 'Phase' && nearbyNode.type === 'Phase' && nearbyNode.payload.parentNode === undefined) { continue } - /* Control maxPhases */ - if (thisObject.payload.node.type === 'Phase') { - if (nearbyNode.maxPhases !== undefined) { - if (nearbyNode.phases.length >= nearbyNode.maxPhases) { - continue + if (thisObject.configEditor !== undefined) { + if (thisObject.configEditor.visible === true) { + getitle = false + } } - } - } - if (thisObject.payload.node.type === 'Phase' && nearbyNode.type === 'Phase') { - if (nearbyNode.payload.parentNode.maxPhases !== undefined) { - if (nearbyNode.payload.parentNode.phases.length >= nearbyNode.payload.parentNode.maxPhases) { - continue + if (thisObject.conditionEditor !== undefined) { + if (thisObject.conditionEditor.visible === true) { + getitle = false + } } - } - } - if (foundCompatible === false) { - if (distance < thisObject.container.frame.radius * 1.5 + floatingObject.container.frame.radius * 1.5) { - nearbyNode.payload.uiObject.getReadyToChainAttach() - isChainAttaching = true - chainAttachToNode = nearbyNode - foundCompatible = true - } - } - nearbyNode.payload.uiObject.showAvailabilityToChainAttach() - } - } - } - - function chainAttacchingCounters () { - if (readyToChainAttachDisplayCounter > 15) { - readyToChainAttachDisplayIncrement = -0.25 - } - - if (readyToChainAttachDisplayCounter < 5) { - readyToChainAttachDisplayIncrement = 0.25 - } - - readyToChainAttachDisplayCounter = readyToChainAttachDisplayCounter + readyToChainAttachDisplayIncrement - - readyToChainAttachCounter-- - if (readyToChainAttachCounter <= 0) { - readyToChainAttachCounter = 0 - isReadyToChainAttach = false - } else { - isReadyToChainAttach = true - } - - availableToChainAttachCounter-- - if (availableToChainAttachCounter <= 0) { - availableToChainAttachCounter = 0 - isAvailableToChainAttach = false - } else { - isAvailableToChainAttach = true - } - } - - function getReadyToChainAttach () { - readyToChainAttachCounter = 10 - } - - function showAvailabilityToChainAttach () { - availableToChainAttachCounter = 10 - } - - function chainDetachingPhysics () { - if (isDragging !== true) { return } - if (thisObject.payload.floatingObject.isFrozen === true) { return } - if (rightDragging === false) { return } - - let distanceToChainParent = Math.sqrt(Math.pow(thisObject.payload.position.x - thisObject.payload.targetPosition.x, 2) + Math.pow(thisObject.payload.position.y - thisObject.payload.targetPosition.y, 2)) - let ratio = distanceToChainParent / previousDistanceToChainParent - if (previousDistanceToChainParent === 0) { - previousDistanceToChainParent = distanceToChainParent - return - } - previousDistanceToChainParent = distanceToChainParent - - if (thisObject.isOnFocus !== true) { return } - if (thisObject.payload.chainParent === undefined) { return } - if (thisObject.payload.parentNode === undefined) { return } - - let THRESHOLD = 1.15 - - if (previousDistanceToChainParent !== undefined) { - if (ratio > THRESHOLD) { - canvas.designSpace.workspace.chainDetachNode(thisObject.payload.node) - } - } - } - - function referenceAttachingPhysics () { - referenceAttacchingCounters() - - if (thisObject.isOnFocus !== true) { return } - if (isDragging !== true) { return } - if (rightDragging !== true) { return } - if (thisObject.payload.referenceParent !== undefined) { return } - - let nearbyFloatingObjects = thisObject.payload.floatingObject.nearbyFloatingObjects - let compatibleTypes - - let nodeDefinition = APP_SCHEMA_MAP.get(thisObject.payload.node.type) - if (nodeDefinition !== undefined) { - if (nodeDefinition.referenceAttachesTo !== undefined) { - compatibleTypes = nodeDefinition.referenceAttachesTo.compatibleTypes - } else { - return - } - } else { - return - } - - let foundCompatible = false - referenceAttachToNode = undefined - isReferenceAttaching = false - - for (let i = 0; i < nearbyFloatingObjects.length; i++) { - let nearby = nearbyFloatingObjects[i] - let distance = nearby[0] - let floatingObject = nearby[1] - let nearbyNode = floatingObject.payload.node - if (compatibleTypes.indexOf('->' + nearbyNode.type + '->') >= 0) { - if (foundCompatible === false) { - if (distance < thisObject.container.frame.radius * 1.5 + floatingObject.container.frame.radius * 1.5) { - nearbyNode.payload.uiObject.getReadyToReferenceAttach() - isReferenceAttaching = true - referenceAttachToNode = nearbyNode - foundCompatible = true - } - } - nearbyNode.payload.uiObject.showAvailabilityToReferenceAttach() - } - } - } - - function referenceAttacchingCounters () { - if (readyToReferenceAttachDisplayCounter > 15) { - readyToReferenceAttachDisplayIncrement = -0.25 - } - - if (readyToReferenceAttachDisplayCounter < 5) { - readyToReferenceAttachDisplayIncrement = 0.25 - } - - readyToReferenceAttachDisplayCounter = readyToReferenceAttachDisplayCounter + readyToReferenceAttachDisplayIncrement - - readyToReferenceAttachCounter-- - if (readyToReferenceAttachCounter <= 0) { - readyToReferenceAttachCounter = 0 - isReadyToReferenceAttach = false - } else { - isReadyToReferenceAttach = true - } - - availableToReferenceAttachCounter-- - if (availableToReferenceAttachCounter <= 0) { - availableToReferenceAttachCounter = 0 - isAvailableToReferenceAttach = false - } else { - isAvailableToReferenceAttach = true - } - } - - function getReadyToReferenceAttach () { - readyToReferenceAttachCounter = 10 - } - - function showAvailabilityToReferenceAttach () { - availableToReferenceAttachCounter = 10 - } - - function referenceDetachingPhysics () { - if (isDragging !== true) { return } - if (thisObject.payload.floatingObject.isFrozen === true) { return } - if (rightDragging === false) { return } - if (thisObject.payload.referenceParent === undefined) { return } - - let distanceToReferenceParent = Math.sqrt(Math.pow(thisObject.payload.position.x - thisObject.payload.referenceParent.payload.position.x, 2) + Math.pow(thisObject.payload.position.y - thisObject.payload.referenceParent.payload.position.y, 2)) - let ratio = distanceToReferenceParent / previousDistanceToReferenceParent - if (previousDistanceToReferenceParent === 0) { - previousDistanceToReferenceParent = distanceToReferenceParent - return - } - previousDistanceToReferenceParent = distanceToReferenceParent - - if (thisObject.isOnFocus !== true) { return } - if (thisObject.payload.referenceParent === undefined) { return } - - let THRESHOLD = 1.15 - - if (previousDistanceToReferenceParent !== undefined) { - if (ratio > THRESHOLD) { - canvas.designSpace.workspace.referenceDetachNode(thisObject.payload.node) - } - } - } - - function highlightPhisycs () { - highlightCounter-- - if (highlightCounter < 0) { - highlightCounter = 0 - isHighlighted = false - } - } - - function errorMessagePhisycs () { - errorMessageCounter-- - if (errorMessageCounter < 0) { - errorMessageCounter = 0 - hasError = false - } - } - - function valuePhisycs () { - valueCounter-- - if (valueCounter < 0) { - valueCounter = 0 - hasValue = false - } - } - - function percentagePhisycs () { - percentageCounter-- - if (percentageCounter < 0) { - percentageCounter = 0 - hasPercentage = false - } - } - - function statusPhisycs () { - statusCounter-- - if (statusCounter < 0) { - statusCounter = 0 - hasStatus = false - } - } - - function highlight () { - isHighlighted = true - highlightCounter = 30 - } - - function setErrorMessage (message, duration) { - if (message !== undefined) { - errorMessage = message - hasError = true - if (duration === undefined) { duration = 1 } - errorMessageCounter = 100 * duration - } - } - - function setValue (value, counter) { - if (value !== undefined) { - currentValue = value - hasValue = true - if (counter !== undefined) { - valueCounter = counter - } else { - valueCounter = 100 - } - } - } - - function setPercentage (percentage, counter) { - if (percentage !== undefined) { - currentPercentage = percentage - hasPercentage = true - if (counter !== undefined) { - percentageCounter = counter - } else { - percentageCounter = 100 - } - } - } - - function setStatus (status, counter) { - if (status !== undefined) { - currentStatus = status - hasStatus = true - if (counter !== undefined) { - statusCounter = counter - } else { - statusCounter = 100 - } - } - } - - function heartBeat () { - lastHeartBeat = new Date() - thisObject.isRunning = true - - if (onRunningCallBackFunctionWasCalled === false) { - onRunningCallBackFunctionWasCalled = true - if (onRunningCallBackFunction !== undefined) { - onRunningCallBackFunction(GLOBAL.DEFAULT_OK_RESPONSE) - } - } - } - - function run (pEventsServerClient, callBackFunction) { - finalizeEventsServerClient() - eventsServerClient = pEventsServerClient - - /* We setup the circular progress bar. */ - if (thisObject.circularProgressBar !== undefined) { - thisObject.circularProgressBar.finalize() - } - - thisObject.circularProgressBar = newCircularProgressBar() - thisObject.circularProgressBar.initialize(thisObject.payload, eventsServerClient) - thisObject.circularProgressBar.fitFunction = thisObject.fitFunction - thisObject.circularProgressBar.container = thisObject.container - - /* We will wait to hear the Running event in order to confirm the execution was really started */ - let key = thisObject.payload.node.name + '-' + thisObject.payload.node.type + '-' + thisObject.payload.node.id - eventsServerClient.listenToEvent(key, 'Running', undefined, 'UiObject', onResponse, onRunning) - - onRunningCallBackFunction = callBackFunction - - function onResponse (message) { - eventSubscriptionIdOnRunning = message.eventSubscriptionId - } - - function onRunning () { - if (thisObject.payload === undefined) { return } - - let key = thisObject.payload.node.name + '-' + thisObject.payload.node.type + '-' + thisObject.payload.node.id - eventsServerClient.stopListening(key, eventSubscriptionIdOnRunning, 'UiObject') - - thisObject.isRunning = true - - if (callBackFunction !== undefined) { - callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE) - onRunningCallBackFunctionWasCalled = true - } - } - - /* - While it is running, it can happen that it naturally stops or is stopped not from the UI but from other means. - In those cases, the stop function would never be called (from the UI). So what we will do is to call it from - here with and event, and passing our own callBackFunction. In case there is an external source stopping this, - this will produce an execution of the callback with our event, which will produce that the menu item is restored - to its default stage. - - If on the other side, it is executed from the UI, then we will be processing the Stopped event twice, which in - both cases will reset the menu item to its default state. - */ - - let event = { - type: 'Secondary Action Already Executed' - } - stop(callBackFunction, event) - } - - function stop (callBackFunction, event) { - /* We will wait to the event that the execution was terminated in order to call back the menu item */ - let key = thisObject.payload.node.name + '-' + thisObject.payload.node.type + '-' + thisObject.payload.node.id - eventsServerClient.listenToEvent(key, 'Stopped', undefined, 'UiObject', onResponse, onStopped) - - function onResponse (message) { - eventSubscriptionIdOnStopped = message.eventSubscriptionId - } - - function onStopped () { - if (thisObject.payload === undefined) { return } - if (callBackFunction !== undefined) { - callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE, event) - } - - if (thisObject.circularProgressBar !== undefined) { - thisObject.circularProgressBar.finalize() - thisObject.circularProgressBar = undefined - } - thisObject.isRunning = false - hasValue = false - hasPercentage = false - hasStatus = false - lastHeartBeat = undefined - } - } - - function iconPhysics () { - icon = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.type) - let nodeDefinition = APP_SCHEMA_MAP.get(thisObject.payload.node.type) - if (nodeDefinition.alternativeIcons !== undefined) { - let nodeToUse = thisObject.payload.node - if (nodeDefinition.alternativeIcons === 'Use Reference Parent') { - if (thisObject.payload.node.payload.referenceParent !== undefined) { - nodeToUse = thisObject.payload.node.payload.referenceParent - } - } - if (nodeDefinition.alternativeIcons === 'Use Reference Grandparent') { - if (thisObject.payload.node.payload.referenceParent !== undefined) { - if (thisObject.payload.node.payload.referenceParent.payload !== undefined) { - if (thisObject.payload.node.payload.referenceParent.payload.referenceParent !== undefined) { - nodeToUse = thisObject.payload.node.payload.referenceParent.payload.referenceParent + if (thisObject.formulaEditor !== undefined) { + if (thisObject.formulaEditor.visible === true) { + getitle = false + } } - } - } - } - nodeDefinition = APP_SCHEMA_MAP.get(nodeToUse.type) - let code = nodeToUse.code - try { - code = JSON.parse(code) - let alternativeIcon - let iconName - for (let i = 0; i < nodeDefinition.alternativeIcons.length; i++) { - alternativeIcon = nodeDefinition.alternativeIcons[i] - if (alternativeIcon.codeName === code.codeName) { - iconName = alternativeIcon.iconName - } - } - let newIcon = canvas.designSpace.iconCollection.get(iconName) - if (newIcon !== undefined) { - icon = newIcon - } - } catch (err) { - // Nothing to do if JSON is baddly formated. - } - } - executingIcon = canvas.designSpace.iconCollection.get('attractive') - } + if (getitle === true) { + container = thisObject.uiObjectTitle.getContainer(point) + if (container !== undefined) { return container } + } - function onFocus () { - thisObject.isOnFocus = true - - if (thisObject.payload !== undefined && thisObject.isOnFocus === true && thisObject.payload.referenceParent !== undefined) { - if (thisObject.payload.referenceParent.payload !== undefined) { - if (thisObject.payload.referenceParent.payload.uiObject !== undefined) { - thisObject.payload.referenceParent.payload.uiObject.isShowing = true - } - } - } - } - - function onNotFocus () { - thisObject.isOnFocus = false - if (thisObject.codeEditor !== undefined) { - thisObject.codeEditor.deactivate() - } - if (thisObject.configEditor !== undefined) { - thisObject.configEditor.deactivate() - } - if (thisObject.conditionEditor !== undefined) { - thisObject.conditionEditor.deactivate() - } - if (thisObject.formulaEditor !== undefined) { - thisObject.formulaEditor.deactivate() - } - - if (thisObject.payload !== undefined && - thisObject.isOnFocus === false && - thisObject.payload.referenceParent !== undefined && - thisObject.payload.referenceParent.payload !== undefined && - thisObject.payload.referenceParent.payload.uiObject !== undefined) { - thisObject.payload.referenceParent.payload.uiObject.isShowing = false - } - } - - function onDisplace (event) { - thisObject.uiObjectTitle.exitEditMode() - } - - function onDragStarted (event) { - thisObject.uiObjectTitle.exitEditMode() - if (thisObject.codeEditor !== undefined) { - thisObject.codeEditor.deactivate() - } - if (thisObject.configEditor !== undefined) { - thisObject.configEditor.deactivate() - } - if (thisObject.conditionEditor !== undefined) { - thisObject.conditionEditor.deactivate() - } - if (thisObject.formulaEditor !== undefined) { - thisObject.formulaEditor.deactivate() - } - isDragging = true - if (event.button === 2) { - rightDragging = true - } else { - rightDragging = false - } - - previousDistanceToReferenceParent = undefined - previousDistanceToChainParent = undefined - } - - function onDragFinished (event) { - if (isChainAttaching === true) { - canvas.designSpace.workspace.chainAttachNode(thisObject.payload.node, chainAttachToNode) - chainAttachToNode = undefined - isChainAttaching = false - } - if (isReferenceAttaching === true) { - canvas.designSpace.workspace.referenceAttachNode(thisObject.payload.node, referenceAttachToNode) - referenceAttachToNode = undefined - isReferenceAttaching = false - } - isDragging = false - } - - function drawBackground () { - if (thisObject.isOnFocus === false) { - drawReferenceLine() - drawChainLine() - - if (isDragging === false && thisObject.isOnFocus === true) { - thisObject.menu.drawBackground() - } - } - - if (thisObject.circularProgressBar !== undefined) { - thisObject.circularProgressBar.drawBackground() - } - } - - function drawMiddleground () { - if (thisObject.isOnFocus === false) { - drawValue() - drawPercentage() - drawStatus() - drawText() - thisObject.uiObjectTitle.draw() - } - } - - function drawForeground () { - if (thisObject.isOnFocus === false) { - drawBodyAndPicture() - if (isDragging === false) { - thisObject.menu.drawForeground() - } - } - - if (thisObject.circularProgressBar !== undefined) { - thisObject.circularProgressBar.drawForeground() - } - } - - function drawOnFocus () { - if (thisObject.isOnFocus === true) { - drawReferenceLine() - drawChainLine() - - if (thisObject.codeEditor !== undefined) { - thisObject.codeEditor.drawBackground() - thisObject.codeEditor.drawForeground() - } - if (thisObject.configEditor !== undefined) { - thisObject.configEditor.drawBackground() - thisObject.configEditor.drawForeground() - } - if (thisObject.conditionEditor !== undefined) { - thisObject.conditionEditor.drawBackground() - thisObject.conditionEditor.drawForeground() - } - if (thisObject.formulaEditor !== undefined) { - thisObject.formulaEditor.drawBackground() - thisObject.formulaEditor.drawForeground() - } - - let drawMenu = true - let drawTitle = true - - if (thisObject.codeEditor !== undefined) { - if (thisObject.codeEditor.visible === true) { - drawMenu = false - drawTitle = false - } - } - if (thisObject.configEditor !== undefined) { - if (thisObject.configEditor.visible === true) { - drawMenu = false - drawTitle = false - } - } - if (thisObject.conditionEditor !== undefined) { - if (thisObject.conditionEditor.visible === true) { - drawMenu = false - drawTitle = false - } - } - if (thisObject.formulaEditor !== undefined) { - if (thisObject.formulaEditor.visible === true) { - drawMenu = false - drawTitle = false - } - } - - if (drawMenu === true) { - drawBodyAndPicture() - if (isDragging === false) { - thisObject.menu.drawBackground() - thisObject.menu.drawForeground() - } - } - - drawErrorMessage() - drawValue() - drawPercentage() - drawStatus() - drawText() - - if (drawTitle === true) { - thisObject.uiObjectTitle.draw() - } - } - } - - function drawChainLine () { - if (canvas.floatingSpace.drawChainLines === false) { return } - if (thisObject.payload.chainParent === undefined) { return } - - let targetPoint = { - x: thisObject.payload.chainParent.payload.floatingObject.container.frame.position.x, - y: thisObject.payload.chainParent.payload.floatingObject.container.frame.position.y - } - - let position = { - x: 0, - y: 0 - } - - targetPoint = canvas.floatingSpace.container.frame.frameThisPoint(targetPoint) - position = thisObject.container.frame.frameThisPoint(position) - - if (canvas.floatingSpace.inMapMode === true) { - targetPoint = canvas.floatingSpace.transformPointToMap(targetPoint) - position = canvas.floatingSpace.transformPointToMap(position) - } - - if (thisObject.container.frame.radius > 1) { - let LINE_STYLE = UI_COLOR.TITANIUM_YELLOW - if (thisObject.payload.floatingObject.angleToParent !== ANGLE_TO_PARENT.NOT_FIXED) { - LINE_STYLE = UI_COLOR.GOLDEN_ORANGE - } - if (thisObject.payload.floatingObject.isFrozen === true) { - LINE_STYLE = UI_COLOR.TURQUOISE - } - if (newUiObjectCounter > 0) { - LINE_STYLE = UI_COLOR.GREY - } - - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(position.x, position.y) - browserCanvasContext.lineTo(targetPoint.x, targetPoint.y) - browserCanvasContext.strokeStyle = 'rgba(' + LINE_STYLE + ', 1)' - browserCanvasContext.setLineDash([0, chainLineCounter, 2, 3, 0, 500 - chainLineCounter]) - browserCanvasContext.lineWidth = 2 - browserCanvasContext.stroke() - browserCanvasContext.setLineDash([0, 0]) - - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(position.x, position.y) - browserCanvasContext.lineTo(targetPoint.x, targetPoint.y) - browserCanvasContext.strokeStyle = 'rgba(' + LINE_STYLE + ', 1)' - browserCanvasContext.setLineDash([3, 47]) - browserCanvasContext.lineWidth = 3 - browserCanvasContext.stroke() - browserCanvasContext.setLineDash([0, 0]) - - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(position.x, position.y) - browserCanvasContext.lineTo(targetPoint.x, targetPoint.y) - browserCanvasContext.strokeStyle = 'rgba(' + LINE_STYLE + ', 1)' - browserCanvasContext.setLineDash([1, 9]) - browserCanvasContext.lineWidth = 1 - browserCanvasContext.stroke() - browserCanvasContext.setLineDash([0, 0]) - } - - if (thisObject.container.frame.radius > 0.5) { - let radius = 1 - - browserCanvasContext.beginPath() - browserCanvasContext.arc(targetPoint.x, targetPoint.y, radius, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' - browserCanvasContext.fill() - } - } - - function drawReferenceLine () { - if (canvas.floatingSpace.drawReferenceLines === false && thisObject.isOnFocus === false) { return } - if (thisObject.payload.referenceParent === undefined) { return } - if (thisObject.payload.referenceParent.payload === undefined) { return } - if (thisObject.payload.referenceParent.payload.floatingObject === undefined) { return } - if (thisObject.payload.referenceParent.payload.floatingObject.isParentCollapsed === true && thisObject.isOnFocus === false) { return } - - let targetPoint = { - x: thisObject.payload.referenceParent.payload.position.x, - y: thisObject.payload.referenceParent.payload.position.y - } - - let position = { - x: 0, - y: 0 - } - - targetPoint = canvas.floatingSpace.container.frame.frameThisPoint(targetPoint) - position = thisObject.container.frame.frameThisPoint(position) - - if (thisObject.isOnFocus === true) { - targetPoint = thisObject.fitFunction(targetPoint) - } - - if (canvas.floatingSpace.inMapMode === true) { - position = canvas.floatingSpace.transformPointToMap(position) - targetPoint = canvas.floatingSpace.transformPointToMap(targetPoint) - } - - let LINE_STYLE = UI_COLOR.GREY - - if (thisObject.container.frame.radius > 1) { - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(position.x, position.y) - browserCanvasContext.lineTo(targetPoint.x, targetPoint.y) - browserCanvasContext.strokeStyle = 'rgba(' + LINE_STYLE + ', 1)' - browserCanvasContext.setLineDash([1, 9]) - browserCanvasContext.lineWidth = 0.75 - browserCanvasContext.stroke() - browserCanvasContext.setLineDash([0, 0]) - - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(position.x, position.y) - browserCanvasContext.lineTo(targetPoint.x, targetPoint.y) - browserCanvasContext.strokeStyle = 'rgba(' + LINE_STYLE + ', 1)' - browserCanvasContext.setLineDash([0, referenceLineCounter, 1, 9, 2, 8, 3, 7, 4, 6, 0, 500 - referenceLineCounter]) - browserCanvasContext.lineWidth = 4 - browserCanvasContext.stroke() - browserCanvasContext.setLineDash([0, 0]) - } - - if (thisObject.container.frame.radius > 0.5) { - let radius = 1 - - browserCanvasContext.beginPath() - browserCanvasContext.arc(targetPoint.x, targetPoint.y, radius, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' - browserCanvasContext.fill() - } - } - - function isEditorVisible () { - if (thisObject.codeEditor !== undefined) { - if (thisObject.codeEditor.visible === true) { return true } - } - - if (thisObject.configEditor !== undefined) { - if (thisObject.configEditor.visible === true) { return true } - } - - if (thisObject.conditionEditor !== undefined) { - if (thisObject.conditionEditor.visible === true) { return true } - } - - if (thisObject.formulaEditor !== undefined) { - if (thisObject.formulaEditor.visible === true) { return true } - } - } - - function drawText () { - if (isEditorVisible() === true) { return } -/* Text Follows */ - let position = { - x: 0, - y: 0 - } - - position = thisObject.container.frame.frameThisPoint(position) - - if (canvas.floatingSpace.inMapMode === true) { - position = canvas.floatingSpace.transformPointToMap(position) - } - - let radius = thisObject.container.frame.radius - /* Label Text */ - let labelPoint - let fontSize = thisObject.payload.floatingObject.currentFontSize - let label - - if (radius > 6) { - const MAX_LABEL_LENGTH = 30 - - label = thisObject.payload.subTitle - label = addIndexNumber(label) - - if (label !== undefined) { - if (label.length > MAX_LABEL_LENGTH) { - label = label.substring(0, MAX_LABEL_LENGTH) + '...' + container = thisObject.menu.getContainer(point) + if (container !== undefined) { return container } } - labelPoint = { - x: position.x - label.length / 2 * fontSize * FONT_ASPECT_RATIO - 5, - y: position.y + radius * 4 / 5 + fontSize * FONT_ASPECT_RATIO + 15 + if (thisObject.container.frame.isThisPointHere(point, true, true) === true) { + return thisObject.container + } else { + return undefined + } + } + + function invisiblePhysics() { + thisObject.menu.invisiblePhysics() + childrenRunningPhysics() + thisObject.uiObjectTitle.physics() + } + + function physics() { + thisObject.menu.physics() + thisObject.uiObjectTitle.physics() + + if (thisObject.codeEditor !== undefined) { + thisObject.codeEditor.physics() + } + + if (thisObject.configEditor !== undefined) { + thisObject.configEditor.physics() + } + + if (thisObject.conditionEditor !== undefined) { + thisObject.conditionEditor.physics() + } + + if (thisObject.formulaEditor !== undefined) { + thisObject.formulaEditor.physics() + } + + if (thisObject.payload.chainParent === undefined || thisObject.payload.chainParent.payload === undefined) { + thisObject.payload.targetPosition.x = thisObject.payload.position.x, + thisObject.payload.targetPosition.y = thisObject.payload.position.y + } else { + if (thisObject.payload.chainParent.payload.position !== undefined) { + thisObject.payload.targetPosition.x = thisObject.payload.chainParent.payload.position.x + thisObject.payload.targetPosition.y = thisObject.payload.chainParent.payload.position.y + } + } + + if (thisObject.circularProgressBar !== undefined) { + thisObject.circularProgressBar.physics() + } + + iconPhysics() + highlightPhisycs() + runningAtBackendPhisycs() + errorMessagePhisycs() + warningMessagePhisycs() + infoMessagePhisycs() + valuePhisycs() + percentagePhisycs() + statusPhisycs() + chainDetachingPhysics() + chainAttachingPhysics() + referenceDetachingPhysics() + referenceAttachingPhysics() + childrenRunningPhysics() + newObjectPhysics() + referenceLinePhysics() + chainLinePhysics() + } + + function referenceLinePhysics() { + referenceLineCounter = referenceLineCounter + 2 + if (referenceLineCounter > 500) { + referenceLineCounter = 0 + } + } + + function chainLinePhysics() { + chainLineCounter = chainLineCounter - 5 + if (chainLineCounter < 0) { + chainLineCounter = 500 + } + } + + function newObjectPhysics() { + newUiObjectCounter-- + if (newUiObjectCounter < 0) { + newUiObjectCounter = 0 + } + } + + function heartBeatPhysics() { + if (lastHeartBeat !== undefined) { + const ONE_MIN = 60000 + nowTimestamp = (new Date()).valueOf() + if (nowTimestamp - lastHeartBeat.valueOf() > ONE_MIN) { + lastHeartBeat = undefined + thisObject.isRunning = false + valueCounter = 0 + } + } else { + thisObject.isRunning = false + } + } + + function childrenRunningPhysics() { + let nodeDefinition = getNodeDefinition(thisObject.payload.node) + if (nodeDefinition.properties === undefined) { return } + let monitorChildrenRunning = false + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + if (property.monitorChildrenRunning === true) { + let children = thisObject.payload.node[property.name] + if (children === undefined) { continue } + let totalRunning = 0 + for (let j = 0; j < children.length; j++) { + let child = children[j] + if (child.payload !== undefined) { + if (child.payload.uiObject.isRunning === true) { + totalRunning++ + } + } + } + if (totalRunning > 0) { + setStatus(totalRunning + ' / ' + children.length + ' Running') + thisObject.isRunning = true + } else { + thisObject.isRunning = false + valueCounter = 0 + } + monitorChildrenRunning = true + return + } + } + if (monitorChildrenRunning === false) { + heartBeatPhysics() + } + } + + function chainAttachingPhysics() { + chainAttacchingCounters() + + if (thisObject.isOnFocus !== true) { return } + if (isDragging !== true) { return } + if (rightDragging !== true) { return } + if (thisObject.payload.chainParent !== undefined) { return } + + let nearbyFloatingObjects = thisObject.payload.floatingObject.nearbyFloatingObjects + let compatibleTypes + + let nodeDefinition = getNodeDefinition(thisObject.payload.node) + if (nodeDefinition !== undefined) { + if (nodeDefinition.chainAttachesTo !== undefined) { + compatibleTypes = nodeDefinition.chainAttachesTo.compatibleTypes + } else { + return + } + } else { + return + } + + let foundCompatible = false + chainAttachToNode = undefined + isChainAttaching = false + + for (let i = 0; i < nearbyFloatingObjects.length; i++) { + let nearby = nearbyFloatingObjects[i] + let distance = nearby[0] + let floatingObject = nearby[1] + let nearbyNode = floatingObject.payload.node + if (compatibleTypes.indexOf('->' + nearbyNode.type + '->') >= 0) { + /* Discard App Schema defined objects with busy coonection ports */ + nodeDefinition = getNodeDefinition(thisObject.payload.node) + if (nodeDefinition !== undefined) { + let mustContinue = false + let parentNodeDefinition = getNodeDefinition(nearbyNode) + if (parentNodeDefinition !== undefined) { + if (parentNodeDefinition.properties !== undefined) { + for (let j = 0; j < parentNodeDefinition.properties.length; j++) { + let property = parentNodeDefinition.properties[j] + if (nodeDefinition.propertyNameAtParent === property.name) { + switch (property.type) { + case 'node': { + if (nearbyNode[property.name] !== undefined) { + mustContinue = true + } + } + break + case 'array': { + /* Nothing to worry about since an array can take more than one element. */ + } + break + } + } + } + } + } + if (mustContinue === true) { continue } + } + + /* Discard Phases without partent */ + if (thisObject.payload.node.type === 'Phase' && nearbyNode.type === 'Phase' && nearbyNode.payload.parentNode === undefined) { continue } + /* Control maxPhases */ + if (thisObject.payload.node.type === 'Phase') { + if (nearbyNode.maxPhases !== undefined) { + if (nearbyNode.phases.length >= nearbyNode.maxPhases) { + continue + } + } + } + if (thisObject.payload.node.type === 'Phase' && nearbyNode.type === 'Phase') { + if (nearbyNode.payload.parentNode.maxPhases !== undefined) { + if (nearbyNode.payload.parentNode.phases.length >= nearbyNode.payload.parentNode.maxPhases) { + continue + } + } + } + if (foundCompatible === false) { + if (distance < thisObject.payload.floatingObject.container.frame.radius * 1.5 + floatingObject.container.frame.radius * 1.5) { + nearbyNode.payload.uiObject.getReadyToChainAttach() + isChainAttaching = true + chainAttachToNode = nearbyNode + foundCompatible = true + } + } + nearbyNode.payload.uiObject.showAvailabilityToChainAttach() + } + } + } + + function chainAttacchingCounters() { + if (readyToChainAttachDisplayCounter > 15) { + readyToChainAttachDisplayIncrement = -0.25 + } + + if (readyToChainAttachDisplayCounter < 5) { + readyToChainAttachDisplayIncrement = 0.25 + } + + readyToChainAttachDisplayCounter = readyToChainAttachDisplayCounter + readyToChainAttachDisplayIncrement + + readyToChainAttachCounter-- + if (readyToChainAttachCounter <= 0) { + readyToChainAttachCounter = 0 + isReadyToChainAttach = false + } else { + isReadyToChainAttach = true + } + + availableToChainAttachCounter-- + if (availableToChainAttachCounter <= 0) { + availableToChainAttachCounter = 0 + isAvailableToChainAttach = false + } else { + isAvailableToChainAttach = true + } + } + + function getReadyToChainAttach() { + readyToChainAttachCounter = 10 + } + + function showAvailabilityToChainAttach() { + availableToChainAttachCounter = 10 + } + + function chainDetachingPhysics() { + if (isDragging !== true) { return } + if (thisObject.payload.floatingObject.isFrozen === true) { return } + if (rightDragging === false) { return } + + let distanceToChainParent = Math.sqrt(Math.pow(thisObject.payload.position.x - thisObject.payload.targetPosition.x, 2) + Math.pow(thisObject.payload.position.y - thisObject.payload.targetPosition.y, 2)) + let ratio = distanceToChainParent / previousDistanceToChainParent + if (previousDistanceToChainParent === 0) { + previousDistanceToChainParent = distanceToChainParent + return + } + previousDistanceToChainParent = distanceToChainParent + + if (thisObject.isOnFocus !== true) { return } + if (thisObject.payload.chainParent === undefined) { return } + if (thisObject.payload.parentNode === undefined) { return } + + let THRESHOLD = 1.15 + + if (previousDistanceToChainParent !== undefined) { + if (ratio > THRESHOLD) { + canvas.designSpace.workspace.chainDetachNode(thisObject.payload.node) + } + } + } + + function referenceAttachingPhysics() { + referenceAttacchingCounters() + + if (thisObject.isOnFocus !== true) { return } + if (isDragging !== true) { return } + if (rightDragging !== true) { return } + if (thisObject.payload.referenceParent !== undefined) { return } + + let nearbyFloatingObjects = thisObject.payload.floatingObject.nearbyFloatingObjects + let compatibleTypes + + let nodeDefinition = getNodeDefinition(thisObject.payload.node) + if (nodeDefinition !== undefined) { + if (nodeDefinition.referenceAttachesTo !== undefined) { + compatibleTypes = nodeDefinition.referenceAttachesTo.compatibleTypes + } else { + return + } + } else { + return + } + + let foundCompatible = false + referenceAttachToNode = undefined + isReferenceAttaching = false + + for (let i = 0; i < nearbyFloatingObjects.length; i++) { + let nearby = nearbyFloatingObjects[i] + let distance = nearby[0] + let floatingObject = nearby[1] + let nearbyNode = floatingObject.payload.node + if (compatibleTypes.indexOf('->' + nearbyNode.type + '->') >= 0 || compatibleTypes === "->*Any Node*->") { + if (nodeDefinition.referenceAttachesTo.incompatibleTypes !== undefined) { + if (nodeDefinition.referenceAttachesTo.incompatibleTypes.indexOf('->' + nearbyNode.type + '->') >= 0) { + continue + } + } + if (foundCompatible === false) { + if (distance < thisObject.payload.floatingObject.container.frame.radius * 1.5 + floatingObject.container.frame.radius * 1.5) { + nearbyNode.payload.uiObject.getReadyToReferenceAttach() + isReferenceAttaching = true + referenceAttachToNode = nearbyNode + foundCompatible = true + } + } + nearbyNode.payload.uiObject.showAvailabilityToReferenceAttach() + } + } + } + + function referenceAttacchingCounters() { + if (readyToReferenceAttachDisplayCounter > 15) { + readyToReferenceAttachDisplayIncrement = -0.25 + } + + if (readyToReferenceAttachDisplayCounter < 5) { + readyToReferenceAttachDisplayIncrement = 0.25 + } + + readyToReferenceAttachDisplayCounter = readyToReferenceAttachDisplayCounter + readyToReferenceAttachDisplayIncrement + + readyToReferenceAttachCounter-- + if (readyToReferenceAttachCounter <= 0) { + readyToReferenceAttachCounter = 0 + isReadyToReferenceAttach = false + } else { + isReadyToReferenceAttach = true + } + + availableToReferenceAttachCounter-- + if (availableToReferenceAttachCounter <= 0) { + availableToReferenceAttachCounter = 0 + isAvailableToReferenceAttach = false + } else { + isAvailableToReferenceAttach = true + } + } + + function getReadyToReferenceAttach() { + readyToReferenceAttachCounter = 10 + } + + function showAvailabilityToReferenceAttach() { + availableToReferenceAttachCounter = 10 + } + + function referenceDetachingPhysics() { + if (isDragging !== true) { return } + if (thisObject.payload.floatingObject.isFrozen === true) { return } + if (rightDragging === false) { return } + if (thisObject.payload === undefined) { return } + if (thisObject.payload.referenceParent === undefined) { return } + + let distanceToReferenceParent = Math.sqrt(Math.pow(thisObject.payload.position.x - thisObject.payload.referenceParent.payload.position.x, 2) + Math.pow(thisObject.payload.position.y - thisObject.payload.referenceParent.payload.position.y, 2)) + let ratio = distanceToReferenceParent / previousDistanceToReferenceParent + if (previousDistanceToReferenceParent === 0) { + previousDistanceToReferenceParent = distanceToReferenceParent + return + } + previousDistanceToReferenceParent = distanceToReferenceParent + + if (thisObject.isOnFocus !== true) { return } + if (thisObject.payload.referenceParent === undefined) { return } + + let THRESHOLD = 1.15 + + if (previousDistanceToReferenceParent !== undefined) { + if (ratio > THRESHOLD) { + canvas.designSpace.workspace.referenceDetachNode(thisObject.payload.node) + } + } + } + + function highlightPhisycs() { + highlightCounter-- + if (highlightCounter < 0) { + highlightCounter = 0 + isHighlighted = false + } + } + + function runningAtBackendPhisycs() { + runningAtBackendCounter-- + if (runningAtBackendCounter < 0) { + runningAtBackendCounter = 0 + isRunningAtBackend = false + } + } + + function errorMessagePhisycs() { + errorMessageCounter-- + if (errorMessageCounter < 0) { + errorMessageCounter = 0 + thisObject.hasError = false + } + } + + function warningMessagePhisycs() { + warningMessageCounter-- + if (warningMessageCounter < 0) { + warningMessageCounter = 0 + thisObject.hasWarning = false + } + } + + function infoMessagePhisycs() { + infoMessageCounter-- + if (infoMessageCounter < 0) { + infoMessageCounter = 0 + thisObject.hasInfo = false + } + } + + function valuePhisycs() { + valueCounter-- + if (valueCounter < 0) { + valueCounter = 0 + hasValue = false + } + } + + function percentagePhisycs() { + percentageCounter-- + if (percentageCounter < 0) { + percentageCounter = 0 + hasPercentage = false + } + } + + function statusPhisycs() { + statusCounter-- + if (statusCounter < 0) { + statusCounter = 0 + hasStatus = false + } + } + + function highlight(counter) { + isHighlighted = true + if (counter !== undefined) { + highlightCounter = counter + } else { + highlightCounter = 30 + } + } + + function runningAtBackend() { + isRunningAtBackend = true + runningAtBackendCounter = 5 + } + + function setErrorMessage(message, duration) { + if (message !== undefined) { + errorMessage = message + thisObject.hasError = true + if (duration === undefined) { duration = 2 } + errorMessageCounter = 100 * duration + + /* + Next, we are going to try to inform the parent that this + node has an error, as a way to show the end user where the + node with error is. This is useful to detect errors in nodes + that are located at braches that are collapsed. + */ + + if (thisObject.payload !== undefined) { + if (thisObject.payload.parentNode !== undefined) { + if (thisObject.payload.parentNode.payload !== undefined) { + if (thisObject.payload.parentNode.payload.floatingObject !== undefined) { + if (thisObject.payload.floatingObject.isCollapsed === true || thisObject.payload.floatingObject.isParentCollapsed === true) { + if (thisObject.payload.parentNode.payload.uiObject.hasError !== true) { + thisObject.payload.parentNode.payload.uiObject.setErrorMessage('Error Inside this Branch') + } + } + } + } + } + } + } + } + + function resetErrorMessage() { + errorMessage = undefined + thisObject.hasError = false + } + + function setWarningMessage(message, duration) { + if (message !== undefined) { + warningMessage = message + thisObject.hasWarning = true + if (duration === undefined) { duration = 1 } + warningMessageCounter = 100 * duration + + /* + Next, we are going to try to inform the parent that this + node has an warning, as a way to show the end user where the + node with warning is. This is useful to detect warnings in nodes + that are located at braches that are collapsed. + */ + + if (thisObject.payload !== undefined) { + if (thisObject.payload.parentNode !== undefined) { + if (thisObject.payload.parentNode.payload !== undefined) { + if (thisObject.payload.parentNode.payload.floatingObject !== undefined) { + if (thisObject.payload.parentNode.payload.floatingObject.isCollapsed === true || thisObject.payload.parentNode.payload.floatingObject.isParentCollapsed === true) { + if (thisObject.payload.parentNode.payload.uiObject !== true) { + thisObject.payload.parentNode.payload.uiObject.setWarningMessage('Warning Inside this Branch') + } + } + } + } + } + } + } + } + + function resetWarningMessage() { + warningMessage = undefined + thisObject.hasWarning = false + } + + function setInfoMessage(message, duration) { + if (message !== undefined) { + infoMessage = message + thisObject.hasInfo = true + if (duration === undefined) { duration = 1 } + infoMessageCounter = 100 * duration + + /* + Next, we are going to try to inform the parent that this + node has an info, as a way to show the end user where the + node with info is. This is useful to detect infos in nodes + that are located at braches that are collapsed. + */ + + if (thisObject.payload !== undefined) { + if (thisObject.payload.parentNode !== undefined) { + if (thisObject.payload.parentNode.payload !== undefined) { + if (thisObject.payload.parentNode.payload.floatingObject !== undefined) { + if (thisObject.payload.parentNode.payload.floatingObject.isCollapsed === true || thisObject.payload.parentNode.payload.floatingObject.isParentCollapsed === true) { + if (thisObject.payload.parentNode.payload.uiObject !== true) { + thisObject.payload.parentNode.payload.uiObject.setInfoMessage('Info Inside this Branch') + } + } + } + } + } + } + } + } + + function resetInfoMessage() { + infoMessage = undefined + thisObject.hasInfo = false + } + + function setValue(value, counter, minDecimals) { + if (value !== undefined) { + currentValue = value + hasValue = true + valueMinDecimals = minDecimals + if (counter !== undefined) { + valueCounter = counter + } else { + valueCounter = 100 + } + } + } + + function resetValue() { + currentValue = undefined + hasValue = false + valueCounter = 0 + } + + function setPercentage(percentage, counter) { + if (percentage !== undefined) { + currentPercentage = percentage + hasPercentage = true + if (counter !== undefined) { + percentageCounter = counter + } else { + percentageCounter = 100 + } + } + } + + function resetPercentage() { + currentPercentage = undefined + hasPercentage = false + percentageCounter = 0 + } + + function setStatus(status, counter) { + if (status !== undefined) { + currentStatus = status + hasStatus = true + if (counter !== undefined) { + statusCounter = counter + } else { + statusCounter = 100 + } + } + } + + function resetStatus() { + currentStatus = undefined + hasStatus = false + statusCounter = 0 + } + + function heartBeat() { + lastHeartBeat = new Date() + thisObject.isRunning = true + + if (onRunningCallBackFunctionWasCalled === false) { + onRunningCallBackFunctionWasCalled = true + if (onRunningCallBackFunction !== undefined) { + onRunningCallBackFunction(GLOBAL.DEFAULT_OK_RESPONSE) + } + } + } + + function run(pEventsServerClient, callBackFunction) { + finalizeEventsServerClient() + resetErrorMessage() + resetWarningMessage() + resetInfoMessage() + resetPercentage() + resetValue() + resetStatus() + eventsServerClient = pEventsServerClient + + /* We setup the circular progress bar. */ + if (thisObject.circularProgressBar !== undefined) { + thisObject.circularProgressBar.finalize() + } + + thisObject.circularProgressBar = newCircularProgressBar() + thisObject.circularProgressBar.initialize(thisObject.payload, eventsServerClient) + thisObject.circularProgressBar.fitFunction = thisObject.fitFunction + thisObject.circularProgressBar.container = thisObject.container + + setupRunningEventListener(callBackFunction) + setupErrorEventListener(callBackFunction) + setupWarningEventListener() + setupInfoEventListener() + + function setupRunningEventListener(callBackFunction) { + /* We will wait to hear the Running event in order to confirm the execution was really started */ + let key = thisObject.payload.node.name + '-' + thisObject.payload.node.type + '-' + thisObject.payload.node.id + eventsServerClient.listenToEvent(key, 'Running', undefined, 'UiObject', onResponse, onRunning) + + onRunningCallBackFunction = callBackFunction + + function onResponse(message) { + eventSubscriptionIdOnRunning = message.eventSubscriptionId + } + + function onRunning() { + + if (thisObject.payload === undefined) { return } + + let key = thisObject.payload.node.name + '-' + thisObject.payload.node.type + '-' + thisObject.payload.node.id + eventsServerClient.stopListening(key, eventSubscriptionIdOnRunning, 'UiObject') + + thisObject.isRunning = true + + if (callBackFunction !== undefined) { + callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE) + onRunningCallBackFunctionWasCalled = true + } + } + + /* + While it is running, it can happen that it naturally stops or is stopped not from the UI but from other means. + In those cases, the stop function would never be called (from the UI). So what we will do is to call it from + here with and event, and passing our own callBackFunction. In case there is an external source stopping this, + this will produce an execution of the callback with our event, which will produce that the menu item is restored + to its default stage. + + If on the other side, it is executed from the UI, then we will be processing the Stopped event twice, which in + both cases will reset the menu item to its default state. + */ + + let event = { + type: 'Secondary Action Already Executed' + } + stop(callBackFunction, event) + } + + function setupErrorEventListener(callBackFunction) { + let key = thisObject.payload.node.name + '-' + thisObject.payload.node.type + '-' + thisObject.payload.node.id + eventsServerClient.listenToEvent(key, 'Error', undefined, key, onResponse, onError) + + function onResponse(message) { + eventSubscriptionIdOnError = message.eventSubscriptionId + } + + function onError(message) { + + let uiObject = getTargetUiObject(message) + uiObject.setErrorMessage(message.event.errorMessage, 10) + + let event = { + type: 'Secondary Action Already Executed' + } + completeStop(callBackFunction, event) + } + } + + function setupWarningEventListener() { + let key = thisObject.payload.node.name + '-' + thisObject.payload.node.type + '-' + thisObject.payload.node.id + eventsServerClient.listenToEvent(key, 'Warning', undefined, key, onResponse, onWarning) + + function onResponse(message) { + eventSubscriptionIdOnWarning = message.eventSubscriptionId + } + + function onWarning(message) { + let uiObject = getTargetUiObject(message) + uiObject.setWarningMessage(message.event.warningMessage, 10) + } + } + + function setupInfoEventListener() { + let key = thisObject.payload.node.name + '-' + thisObject.payload.node.type + '-' + thisObject.payload.node.id + eventsServerClient.listenToEvent(key, 'Info', undefined, key, onResponse, onInfo) + + function onResponse(message) { + eventSubscriptionIdOnInfo = message.eventSubscriptionId + } + + function onInfo(message) { + let uiObject = getTargetUiObject(message) + uiObject.setInfoMessage(message.event.infoMessage, 10) + } + } + } + + function getTargetUiObject(message) { + let uiObject = thisObject + if (message.event.nodeId !== undefined) { + let targetNode = canvas.designSpace.workspace.getNodeById(message.event.nodeId) + if (targetNode !== undefined) { + if (targetNode.payload !== undefined) { + if (targetNode.payload.uiObject !== undefined) { + uiObject = targetNode.payload.uiObject + } + } + } + } + return uiObject + } + + function stop(callBackFunction, event) { + /* We will wait to the event that the execution was terminated in order to call back the menu item */ + let key = thisObject.payload.node.name + '-' + thisObject.payload.node.type + '-' + thisObject.payload.node.id + eventsServerClient.listenToEvent(key, 'Stopped', undefined, 'UiObject', onResponse, onStopped) + + function onResponse(message) { + eventSubscriptionIdOnStopped = message.eventSubscriptionId + } + + function onStopped() { + completeStop(callBackFunction, event) + } + } + + function completeStop(callBackFunction, event) { + if (thisObject.payload === undefined) { return } + if (callBackFunction !== undefined) { + callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE, event) + } + + if (thisObject.circularProgressBar !== undefined) { + thisObject.circularProgressBar.finalize() + thisObject.circularProgressBar = undefined + } + thisObject.isRunning = false + hasValue = false + hasPercentage = false + hasStatus = false + lastHeartBeat = undefined + + finalizeEventsServerClient() + } + + function iconPhysics() { + icon = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.type) + let nodeDefinition = getNodeDefinition(thisObject.payload.node) + if (nodeDefinition.alternativeIcons !== undefined) { + let nodeToUse = thisObject.payload.node + if (nodeDefinition.alternativeIcons === 'Use Reference Parent') { + if (thisObject.payload.node.payload.referenceParent !== undefined) { + nodeToUse = thisObject.payload.node.payload.referenceParent + } + } + if (nodeDefinition.alternativeIcons === 'Use Reference Grandparent') { + if (thisObject.payload.node.payload.referenceParent !== undefined) { + if (thisObject.payload.node.payload.referenceParent.payload !== undefined) { + if (thisObject.payload.node.payload.referenceParent.payload.referenceParent !== undefined) { + nodeToUse = thisObject.payload.node.payload.referenceParent.payload.referenceParent + } + } + } + } + nodeDefinition = getNodeDefinition(nodeToUse) + let config = nodeToUse.config + try { + config = JSON.parse(config) + let alternativeIcon + let iconName + for (let i = 0; i < nodeDefinition.alternativeIcons.length; i++) { + alternativeIcon = nodeDefinition.alternativeIcons[i] + if (alternativeIcon.codeName === config.codeName) { + iconName = alternativeIcon.iconName + } + } + let newIcon = canvas.designSpace.iconCollection.get(iconName) + if (newIcon !== undefined) { + icon = newIcon + } + } catch (err) { + // Nothing to do if JSON is baddly formated. + } + } + + executingIcon = canvas.designSpace.iconCollection.get('attractive') + } + + function onFocus() { + thisObject.isOnFocus = true + + if (thisObject.payload !== undefined && thisObject.isOnFocus === true && thisObject.payload.referenceParent !== undefined) { + if (thisObject.payload.referenceParent.payload !== undefined) { + if (thisObject.payload.referenceParent.payload.uiObject !== undefined) { + thisObject.payload.referenceParent.payload.uiObject.isShowing = true + } + } + } + } + + function onNotFocus() { + thisObject.isOnFocus = false + if (thisObject.codeEditor !== undefined) { + thisObject.codeEditor.deactivate() + } + if (thisObject.configEditor !== undefined) { + thisObject.configEditor.deactivate() + } + if (thisObject.conditionEditor !== undefined) { + thisObject.conditionEditor.deactivate() + } + if (thisObject.formulaEditor !== undefined) { + thisObject.formulaEditor.deactivate() + } + + if (thisObject.payload !== undefined && + thisObject.isOnFocus === false && + thisObject.payload.referenceParent !== undefined && + thisObject.payload.referenceParent.payload !== undefined && + thisObject.payload.referenceParent.payload.uiObject !== undefined) { + thisObject.payload.referenceParent.payload.uiObject.isShowing = false + } + } + + function onDisplace(event) { + thisObject.uiObjectTitle.exitEditMode() + } + + function onDragStarted(event) { + thisObject.uiObjectTitle.exitEditMode() + if (thisObject.codeEditor !== undefined) { + thisObject.codeEditor.deactivate() + } + if (thisObject.configEditor !== undefined) { + thisObject.configEditor.deactivate() + } + if (thisObject.conditionEditor !== undefined) { + thisObject.conditionEditor.deactivate() + } + if (thisObject.formulaEditor !== undefined) { + thisObject.formulaEditor.deactivate() + } + isDragging = true + if (event.button === 2) { + rightDragging = true + } else { + rightDragging = false + } + + previousDistanceToReferenceParent = undefined + previousDistanceToChainParent = undefined + } + + function onDragFinished(event) { + if (isChainAttaching === true) { + canvas.designSpace.workspace.chainAttachNode(thisObject.payload.node, chainAttachToNode) + chainAttachToNode = undefined + isChainAttaching = false + } + if (isReferenceAttaching === true) { + canvas.designSpace.workspace.referenceAttachNode(thisObject.payload.node, referenceAttachToNode) + referenceAttachToNode = undefined + isReferenceAttaching = false + } + isDragging = false + } + + function drawBackground() { + if (thisObject.isOnFocus === false) { + drawReferenceLine() + drawChainLine() + + if (isDragging === false && thisObject.isOnFocus === true) { + thisObject.menu.drawBackground() + } + } + + if (thisObject.circularProgressBar !== undefined) { + thisObject.circularProgressBar.drawBackground() + } + } + + function drawMiddleground() { + if (thisObject.isOnFocus === false) { + drawErrorMessage() + drawWarningMessage() + drawInfoMessage() + drawValue() + drawPercentage() + drawStatus() + thisObject.uiObjectTitle.draw() + drawText() + } + } + + function drawForeground() { + if (thisObject.isOnFocus === false) { + drawBodyAndPicture() + if (isDragging === false) { + thisObject.menu.drawForeground() + } + } + + if (thisObject.circularProgressBar !== undefined) { + thisObject.circularProgressBar.drawForeground() + } + } + + function drawOnFocus() { + if (thisObject.isOnFocus === true) { + drawReferenceLine() + drawChainLine() + + if (thisObject.codeEditor !== undefined) { + thisObject.codeEditor.drawBackground() + thisObject.codeEditor.drawForeground() + } + if (thisObject.configEditor !== undefined) { + thisObject.configEditor.drawBackground() + thisObject.configEditor.drawForeground() + } + if (thisObject.conditionEditor !== undefined) { + thisObject.conditionEditor.drawBackground() + thisObject.conditionEditor.drawForeground() + } + if (thisObject.formulaEditor !== undefined) { + thisObject.formulaEditor.drawBackground() + thisObject.formulaEditor.drawForeground() + } + + let drawMenu = true + let drawTitle = true + + if (thisObject.codeEditor !== undefined) { + if (thisObject.codeEditor.visible === true) { + drawMenu = false + drawTitle = false + } + } + if (thisObject.configEditor !== undefined) { + if (thisObject.configEditor.visible === true) { + drawMenu = false + drawTitle = false + } + } + if (thisObject.conditionEditor !== undefined) { + if (thisObject.conditionEditor.visible === true) { + drawMenu = false + drawTitle = false + } + } + if (thisObject.formulaEditor !== undefined) { + if (thisObject.formulaEditor.visible === true) { + drawMenu = false + drawTitle = false + } + } + + if (drawMenu === true) { + drawBodyAndPicture() + if (isDragging === false) { + thisObject.menu.drawBackground() + thisObject.menu.drawForeground() + } + } + + drawErrorMessage() + drawWarningMessage() + drawInfoMessage() + drawValue() + drawPercentage() + drawStatus() + drawText() + + if (drawTitle === true) { + thisObject.uiObjectTitle.draw() + } + } + } + + function drawChainLine() { + if (canvas.floatingSpace.drawChainLines === false) { return } + if (thisObject.payload.chainParent === undefined) { return } + + let targetPoint = { + x: thisObject.payload.chainParent.payload.floatingObject.container.frame.position.x, + y: thisObject.payload.chainParent.payload.floatingObject.container.frame.position.y + } + + let position = { + x: 0, + y: 0 + } + + targetPoint = canvas.floatingSpace.container.frame.frameThisPoint(targetPoint) + position = thisObject.container.frame.frameThisPoint(position) + + if (canvas.floatingSpace.inMapMode === true) { + targetPoint = canvas.floatingSpace.transformPointToMap(targetPoint) + position = canvas.floatingSpace.transformPointToMap(position) + } + + if (thisObject.payload.floatingObject.container.frame.radius > 1) { + let LINE_STYLE = UI_COLOR.TITANIUM_YELLOW + if (thisObject.payload.floatingObject.angleToParent !== ANGLE_TO_PARENT.NOT_FIXED) { + LINE_STYLE = UI_COLOR.GOLDEN_ORANGE + } + if (thisObject.payload.floatingObject.isFrozen === true) { + LINE_STYLE = UI_COLOR.TURQUOISE + } + if (newUiObjectCounter > 0) { + LINE_STYLE = UI_COLOR.GREY + } + + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(position.x, position.y) + browserCanvasContext.lineTo(targetPoint.x, targetPoint.y) + browserCanvasContext.strokeStyle = 'rgba(' + LINE_STYLE + ', 1)' + browserCanvasContext.setLineDash([0, chainLineCounter, 2, 3, 0, 500 - chainLineCounter]) + browserCanvasContext.lineWidth = 2 + browserCanvasContext.stroke() + browserCanvasContext.setLineDash([0, 0]) + + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(position.x, position.y) + browserCanvasContext.lineTo(targetPoint.x, targetPoint.y) + browserCanvasContext.strokeStyle = 'rgba(' + LINE_STYLE + ', 1)' + browserCanvasContext.setLineDash([3, 47]) + browserCanvasContext.lineWidth = 3 + browserCanvasContext.stroke() + browserCanvasContext.setLineDash([0, 0]) + + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(position.x, position.y) + browserCanvasContext.lineTo(targetPoint.x, targetPoint.y) + browserCanvasContext.strokeStyle = 'rgba(' + LINE_STYLE + ', 1)' + browserCanvasContext.setLineDash([1, 9]) + browserCanvasContext.lineWidth = 1 + browserCanvasContext.stroke() + browserCanvasContext.setLineDash([0, 0]) + } + + if (thisObject.payload.floatingObject.container.frame.radius > 0.5) { + let radius = 1 + + browserCanvasContext.beginPath() + browserCanvasContext.arc(targetPoint.x, targetPoint.y, radius, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' + browserCanvasContext.fill() + } + } + + function drawReferenceLine() { + if (canvas.floatingSpace.drawReferenceLines === false && thisObject.isOnFocus === false) { return } + if (thisObject.payload.referenceParent === undefined) { return } + if (thisObject.payload.referenceParent.payload === undefined) { return } + if (thisObject.payload.referenceParent.payload.floatingObject === undefined) { return } + if (thisObject.payload.referenceParent.payload.floatingObject.isParentCollapsed === true && thisObject.isOnFocus === false) { return } + + let targetPoint = { + x: thisObject.payload.referenceParent.payload.position.x, + y: thisObject.payload.referenceParent.payload.position.y + } + + let position = { + x: 0, + y: 0 + } + + targetPoint = canvas.floatingSpace.container.frame.frameThisPoint(targetPoint) + position = thisObject.container.frame.frameThisPoint(position) + + if (thisObject.isOnFocus === true) { + targetPoint = thisObject.fitFunction(targetPoint) } if (canvas.floatingSpace.inMapMode === true) { - labelPoint.y = labelPoint.y - 20 - let nodeDefinition = APP_SCHEMA_MAP.get(thisObject.payload.node.type) - if (nodeDefinition !== undefined) { - if (nodeDefinition.isHierarchyHead !== true) { - return - } - } + position = canvas.floatingSpace.transformPointToMap(position) + targetPoint = canvas.floatingSpace.transformPointToMap(targetPoint) } - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - browserCanvasContext.fillStyle = thisObject.payload.floatingObject.labelStrokeStyle - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) - } - } - } + let LINE_STYLE = UI_COLOR.GREY - function drawErrorMessage () { - if (hasError === false) { return } - -/* Text Follows */ - let position = { - x: 0, - y: 0 - } - - position = thisObject.container.frame.frameThisPoint(position) - - if (canvas.floatingSpace.inMapMode === true) { - position = canvas.floatingSpace.transformPointToMap(position) - } - - let radius = thisObject.container.frame.radius * 3.5 - /* Label Text */ - let labelPoint - let fontSize = thisObject.payload.floatingObject.currentFontSize * 3 / 4 - let label - - if (radius > 6) { - const MAX_LABEL_LENGTH = 80 - - label = errorMessage - - if (label !== undefined) { - if (label.length > MAX_LABEL_LENGTH) { - label = label.substring(0, MAX_LABEL_LENGTH) + '...' - } - - labelPoint = { - x: position.x - label.length / 2 * fontSize * FONT_ASPECT_RATIO - 5, - y: position.y + radius * 2 / 5 + fontSize * FONT_ASPECT_RATIO + 15 - } - - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', 1)' - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) - } - } - } - - function drawValue () { - if (hasValue === false) { return } - if (canvas.floatingSpace.inMapMode === true) { return } - if (thisObject.payload === undefined) { return } - if ((thisObject.payload.floatingObject.isCollapsed === true && thisObject.payload.floatingObject.collapsedManually === false) || thisObject.payload.floatingObject.isParentCollapsed === true) { return } - - // if (currentValue === undefined || currentValue === '') { return } - -/* Text Follows */ - let position = { - x: 0, - y: 0 - } - - position = thisObject.container.frame.frameThisPoint(position) - - if (canvas.floatingSpace.inMapMode === true) { - position = canvas.floatingSpace.transformPointToMap(position) - } - - let radius = thisObject.container.frame.radius * 1.35 - /* Label Text */ - let labelPoint - let fontSize = thisObject.payload.floatingObject.currentFontSize * 6 / 4 - let label - - if (radius > 6) { - const MAX_LABEL_LENGTH = 65 - - label = currentValue - if (!isNaN(label)) { - if (currentValue.toFixed !== undefined) { - label = dynamicDecimals(currentValue, 2) - } - } - - if (label !== undefined) { - if (label.length > MAX_LABEL_LENGTH) { - label = label.substring(0, MAX_LABEL_LENGTH) + '...' - } - - if (label.length > 30) { - fontSize = fontSize / 2 - } - - labelPoint = { - x: position.x - label.length / 2 * fontSize * FONT_ASPECT_RATIO - 10, - y: position.y + radius * 7 / 5 + fontSize * FONT_ASPECT_RATIO + 15 - } - - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TURQUOISE + ', 1)' - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) - } - } - } - - function drawPercentage () { - if (hasPercentage === false) { return } - if (canvas.floatingSpace.inMapMode === true) { return } - if (thisObject.payload === undefined) { return } - if ((thisObject.payload.floatingObject.isCollapsed === true && thisObject.payload.floatingObject.collapsedManually === false) || thisObject.payload.floatingObject.isParentCollapsed === true) { return } - - let position = { - x: 0, - y: 0 - } - - position = thisObject.container.frame.frameThisPoint(position) - - if (canvas.floatingSpace.inMapMode === true) { - position = canvas.floatingSpace.transformPointToMap(position) - } - - let radius = thisObject.container.frame.radius * 1.75 - /* Label Text */ - let labelPoint - let fontSize = thisObject.payload.floatingObject.currentFontSize * 6 / 4 - let label - - if (radius > 6) { - const MAX_LABEL_LENGTH = 65 - - label = Number(currentPercentage).toFixed(0) + '%' - - if (label !== undefined) { - if (label.length > MAX_LABEL_LENGTH) { - label = label.substring(0, MAX_LABEL_LENGTH) + '...' - } - - labelPoint = { - x: position.x - label.length / 2 * fontSize * FONT_ASPECT_RATIO - 5, - y: position.y + radius * 7 / 5 + fontSize * FONT_ASPECT_RATIO + 15 - } - - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TURQUOISE + ', 1)' - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) - } - } - } - - function drawStatus () { - if (hasStatus === false) { return } - if (canvas.floatingSpace.inMapMode === true) { return } - - let position = { - x: 0, - y: 0 - } - - position = thisObject.container.frame.frameThisPoint(position) - - if (canvas.floatingSpace.inMapMode === true) { - position = canvas.floatingSpace.transformPointToMap(position) - } - - let radius = thisObject.container.frame.radius * 0.9 - /* Label Text */ - let labelPoint - let fontSize = thisObject.payload.floatingObject.currentFontSize * 6 / 4 / 2 - let label - - if (radius > 6) { - const MAX_LABEL_LENGTH = 100 - - label = currentStatus - - if (label !== undefined) { - if (label.length > MAX_LABEL_LENGTH) { - label = label.substring(0, MAX_LABEL_LENGTH) + '...' - } - - labelPoint = { - x: position.x - label.length / 2 * fontSize * FONT_ASPECT_RATIO - 10, - y: position.y + radius * 7 / 5 + fontSize * FONT_ASPECT_RATIO + 15 - } - - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', 1)' - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) - } - } - } - - function addIndexNumber (label) { - switch (thisObject.payload.node.type) { - case 'Phase': { - let parent = thisObject.payload.parentNode - if (parent !== undefined) { - let granParent = parent.payload.parentNode - if (granParent !== undefined) { - if (granParent.type === 'Initial Definition') { - return label + ' #' + 0 - } - } - for (let i = 0; i < parent.phases.length; i++) { - let phase = parent.phases[i] - if (phase.id === thisObject.payload.node.id) { - label = label + ' #' + (i + 1) - return label - } - } - } else { - return label - } - - break - } - case 'Situation': { - let parent = thisObject.payload.parentNode - if (parent !== undefined) { - for (let i = 0; i < parent.situations.length; i++) { - let situation = parent.situations[i] - if (situation.id === thisObject.payload.node.id) { - label = label + ' #' + (i + 1) - return label - } - } - } else { - return label - } - - break - } - case 'Condition': { - let parent = thisObject.payload.parentNode - if (parent !== undefined) { - for (let i = 0; i < parent.conditions.length; i++) { - let condition = parent.conditions[i] - if (condition.id === thisObject.payload.node.id) { - label = label + ' #' + (i + 1) - return label - } - } - } else { - return label - } - - break - } - default: { - return label - } - } - } - - function drawBodyAndPicture () { - let position = { - x: thisObject.container.frame.position.x, - y: thisObject.container.frame.position.y - } - - position = thisObject.container.frame.frameThisPoint(position) - - if (thisObject.isShowing === true) { - position = thisObject.fitFunction(position) - } - - if (canvas.floatingSpace.inMapMode === true) { - position = canvas.floatingSpace.transformPointToMap(position) - } - - let radius = thisObject.container.frame.radius - - if (radius > 0.5) { - let VISIBLE_RADIUS = 5 - - let visiblePosition = { - x: thisObject.container.frame.position.x, - y: thisObject.container.frame.position.y - } - - visiblePosition = thisObject.container.frame.frameThisPoint(visiblePosition) - - if (canvas.floatingSpace.inMapMode === true) { - visiblePosition = canvas.floatingSpace.transformPointToMap(visiblePosition) - radius = canvas.floatingSpace.transformRadiusToMap(radius) - VISIBLE_RADIUS = canvas.floatingSpace.transformRadiusToMap(VISIBLE_RADIUS) - } else { - visiblePosition = thisObject.fitFunction(visiblePosition) - } - - browserCanvasContext.beginPath() - browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - - browserCanvasContext.fillStyle = thisObject.payload.floatingObject.fillStyle - - browserCanvasContext.fill() - - browserCanvasContext.beginPath() - browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS - 2, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.BLACK + ', 1)' - - browserCanvasContext.fill() - - let nodeDefinition = APP_SCHEMA_MAP.get(thisObject.payload.node.type) - if (nodeDefinition !== undefined) { - if (nodeDefinition.isHierarchyHead === true) { - VISIBLE_RADIUS = thisObject.payload.floatingObject.currentHierarchyRing * 2.8 - if (canvas.floatingSpace.inMapMode === true) { - VISIBLE_RADIUS = canvas.floatingSpace.transformRadiusToMap(VISIBLE_RADIUS) - } - let OPACITY = 1 - - browserCanvasContext.beginPath() - browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.LIGHT_GREY + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = 10 - browserCanvasContext.setLineDash([4, 16]) - browserCanvasContext.stroke() - - browserCanvasContext.beginPath() - browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.LIGHT_GREY + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = 1 - if (thisObject.payload.node.isIncluded === true) { + if (thisObject.payload.floatingObject.container.frame.radius > 1) { + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(position.x, position.y) + browserCanvasContext.lineTo(targetPoint.x, targetPoint.y) + browserCanvasContext.strokeStyle = 'rgba(' + LINE_STYLE + ', 1)' + browserCanvasContext.setLineDash([1, 9]) + browserCanvasContext.lineWidth = 0.75 + browserCanvasContext.stroke() + browserCanvasContext.setLineDash([0, 0]) + + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(position.x, position.y) + browserCanvasContext.lineTo(targetPoint.x, targetPoint.y) + browserCanvasContext.strokeStyle = 'rgba(' + LINE_STYLE + ', 1)' + browserCanvasContext.setLineDash([0, referenceLineCounter, 1, 9, 2, 8, 3, 7, 4, 6, 0, 500 - referenceLineCounter]) + browserCanvasContext.lineWidth = 4 + browserCanvasContext.stroke() browserCanvasContext.setLineDash([0, 0]) - } else { - browserCanvasContext.setLineDash([20, 20]) - } - browserCanvasContext.stroke() } - } - if (thisObject.isOnFocus === true) { - VISIBLE_RADIUS = thisObject.container.frame.radius - browserCanvasContext.beginPath() - browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS - 2, 0, Math.PI * 2, true) - browserCanvasContext.closePath() + if (thisObject.payload.floatingObject.container.frame.radius > 0.5) { + let radius = 1 - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.BLACK + ', 0.25)' - - browserCanvasContext.fill() - } - - if (hasError === true) { - VISIBLE_RADIUS = thisObject.container.frame.radius * 1 - let OPACITY = errorMessageCounter / 30 - - browserCanvasContext.beginPath() - browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RED + ', ' + OPACITY + ')' - - browserCanvasContext.lineWidth = 10 - browserCanvasContext.setLineDash([19, 20]) - browserCanvasContext.stroke() - } - - if (isHighlighted === true) { - VISIBLE_RADIUS = thisObject.container.frame.radius * 1 - let OPACITY = highlightCounter / 30 - - browserCanvasContext.beginPath() - browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + OPACITY + ')' - - browserCanvasContext.lineWidth = 10 - browserCanvasContext.setLineDash([4, 20]) - browserCanvasContext.stroke() - } - - if (isReadyToChainAttach === true) { - VISIBLE_RADIUS = thisObject.container.frame.radius * 2.5 + readyToChainAttachDisplayCounter - readyToChainAttachDisplayCounter / 2 - let OPACITY = readyToChainAttachCounter / 10 - - browserCanvasContext.beginPath() - browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = 10 - browserCanvasContext.setLineDash([10, 90]) - browserCanvasContext.stroke() - - browserCanvasContext.beginPath() - browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = 5 - browserCanvasContext.setLineDash([5, 45]) - browserCanvasContext.stroke() - - browserCanvasContext.beginPath() - browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = 1 - browserCanvasContext.setLineDash([2, 8]) - browserCanvasContext.stroke() - } - - if (isAvailableToChainAttach === true && isReadyToChainAttach === false) { - VISIBLE_RADIUS = thisObject.container.frame.radius * 2.5 - let OPACITY = availableToChainAttachCounter / 10 - - browserCanvasContext.beginPath() - browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TURQUOISE + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = 10 - browserCanvasContext.setLineDash([8, 32]) - browserCanvasContext.stroke() - - browserCanvasContext.beginPath() - browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TURQUOISE + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = 2 - browserCanvasContext.setLineDash([3, 5]) - browserCanvasContext.stroke() - } - - if (isReadyToReferenceAttach === true) { - VISIBLE_RADIUS = thisObject.container.frame.radius * 2.5 + readyToReferenceAttachDisplayCounter - readyToReferenceAttachDisplayCounter / 2 - let OPACITY = readyToReferenceAttachCounter / 10 - - browserCanvasContext.beginPath() - browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GOLDEN_ORANGE + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = 10 - browserCanvasContext.setLineDash([10, 90]) - browserCanvasContext.stroke() - - browserCanvasContext.beginPath() - browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GOLDEN_ORANGE + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = 5 - browserCanvasContext.setLineDash([5, 45]) - browserCanvasContext.stroke() - - browserCanvasContext.beginPath() - browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GOLDEN_ORANGE + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = 1 - browserCanvasContext.setLineDash([2, 8]) - browserCanvasContext.stroke() - } - - if (isAvailableToReferenceAttach === true && isReadyToReferenceAttach === false) { - VISIBLE_RADIUS = thisObject.container.frame.radius * 2.5 - let OPACITY = availableToReferenceAttachCounter / 10 - - browserCanvasContext.beginPath() - browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GREY + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = 10 - browserCanvasContext.setLineDash([8, 32]) - browserCanvasContext.stroke() - - browserCanvasContext.beginPath() - browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) - browserCanvasContext.closePath() - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GREY + ', ' + OPACITY + ')' - browserCanvasContext.lineWidth = 2 - browserCanvasContext.setLineDash([3, 5]) - browserCanvasContext.stroke() - } + browserCanvasContext.beginPath() + browserCanvasContext.arc(targetPoint.x, targetPoint.y, radius, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' + browserCanvasContext.fill() + } } + function isEditorVisible() { + if (thisObject.codeEditor !== undefined) { + if (thisObject.codeEditor.visible === true) { return true } + } + + if (thisObject.configEditor !== undefined) { + if (thisObject.configEditor.visible === true) { return true } + } + + if (thisObject.conditionEditor !== undefined) { + if (thisObject.conditionEditor.visible === true) { return true } + } + + if (thisObject.formulaEditor !== undefined) { + if (thisObject.formulaEditor.visible === true) { return true } + } + } + + function drawText() { + if (isEditorVisible() === true) { return } + /* Text Follows */ + let position = { + x: 0, + y: 0 + } + + position = thisObject.container.frame.frameThisPoint(position) + + if (canvas.floatingSpace.inMapMode === true) { + position = canvas.floatingSpace.transformPointToMap(position) + } + + let radius = thisObject.payload.floatingObject.container.frame.radius + /* Label Text */ + let labelPoint + let fontSize = thisObject.payload.floatingObject.currentFontSize + let label + + if (radius > 6) { + const MAX_LABEL_LENGTH = 30 + + label = thisObject.payload.subTitle + label = addIndexNumber(label) + + if (label !== undefined) { + if (label.length > MAX_LABEL_LENGTH) { + label = label.substring(0, MAX_LABEL_LENGTH) + '...' + } + + labelPoint = { + x: position.x - label.length / 2 * fontSize * FONT_ASPECT_RATIO - 5, + y: position.y + radius * 2 / 3 + fontSize * FONT_ASPECT_RATIO + 15 + } + + if (canvas.floatingSpace.inMapMode === true) { + labelPoint.y = labelPoint.y - 20 + let nodeDefinition = getNodeDefinition(thisObject.payload.node) + if (nodeDefinition !== undefined) { + if (nodeDefinition.isHierarchyHead !== true) { + return + } + } + } + + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + browserCanvasContext.fillStyle = thisObject.payload.floatingObject.labelStrokeStyle + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) + } + } + } + + function drawErrorMessage() { + if (thisObject.hasError === false) { return } + drawMessage(errorMessage, UI_COLOR.RUSTED_RED) + } + + function drawWarningMessage() { + if (thisObject.hasError === true) { return } + if (thisObject.hasWarning !== true) { return } + drawMessage(warningMessage, UI_COLOR.TITANIUM_YELLOW) + } + + function drawInfoMessage() { + if (thisObject.hasError === true) { return } + if (thisObject.hasWarning === true) { return } + if (thisObject.hasInfo !== true) { return } + drawMessage(infoMessage, UI_COLOR.TURQUOISE) + } + + function drawMessage(message, textColor) { + + if (canvas.floatingSpace.inMapMode === true) { + return + } + + /* Text Follows */ + let position = { + x: 0, + y: 0 + } + + position = thisObject.container.frame.frameThisPoint(position) + + if (canvas.floatingSpace.inMapMode === true) { + position = canvas.floatingSpace.transformPointToMap(position) + } + + let radius = thisObject.payload.floatingObject.container.frame.radius * 2.5 + /* Label Text */ + let labelPoint + let fontSize = thisObject.payload.floatingObject.currentFontSize * 3 / 4 + let label + + if (radius > 6) { + const IDEAL_LABEL_LENGTH = 80 + + label = message + + if (label !== undefined && label !== null) { + if (label.length > IDEAL_LABEL_LENGTH) { + if (label.length > IDEAL_LABEL_LENGTH * 3) { + label = label.substring(0, IDEAL_LABEL_LENGTH * 3) + '...' + } + fontSize = thisObject.payload.floatingObject.currentFontSize * 2 / 4 + } + + labelPoint = { + x: position.x - label.length / 2 * fontSize * FONT_ASPECT_RATIO - 5, + y: position.y + radius * 2 / 5 + fontSize * FONT_ASPECT_RATIO + 10 + } + + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + + browserCanvasContext.fillStyle = 'rgba(' + textColor + ', 1)' + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) + } + } + } + + function drawValue() { + if (currentValue === null) { return } + if (hasValue === false) { return } + if (canvas.floatingSpace.inMapMode === true) { return } + if (thisObject.payload === undefined) { return } + if ((thisObject.payload.floatingObject.isCollapsed === true && thisObject.payload.floatingObject.collapsedManually === false) || thisObject.payload.floatingObject.isParentCollapsed === true) { return } + + // if (currentValue === undefined || currentValue === '') { return } + + /* Text Follows */ + let position = { + x: 0, + y: 0 + } + + position = thisObject.container.frame.frameThisPoint(position) + + if (canvas.floatingSpace.inMapMode === true) { + position = canvas.floatingSpace.transformPointToMap(position) + } + + let radius = thisObject.payload.floatingObject.container.frame.radius * 1.00 + /* Label Text */ + let labelPoint + let fontSize = thisObject.payload.floatingObject.currentFontSize * 8 / 7 + let label + + if (radius > 6) { + const MAX_LABEL_LENGTH = 65 + + label = currentValue + if (!isNaN(currentValue)) { + if (currentValue.toFixed !== undefined) { + label = dynamicDecimals(currentValue, valueMinDecimals) + } + } + + if (label !== undefined) { + if (label.length > MAX_LABEL_LENGTH) { + label = label.substring(0, MAX_LABEL_LENGTH) + '...' + } + + if (label.length > 30) { + fontSize = fontSize * 2 / 3 + } + + if (thisObject.valueAtAngle === true && thisObject.payload.angle !== undefined) { + labelPoint = { + x: position.x - label.length / 2 * fontSize * FONT_ASPECT_RATIO - 10, + y: position.y + } + labelPoint.x = labelPoint.x + radius * 7 / 3 * Math.cos(toRadians(thisObject.payload.angle)) + labelPoint.y = labelPoint.y + radius * 7 / 3 * Math.sin(toRadians(thisObject.payload.angle)) + } else { + labelPoint = { + x: position.x - label.length / 2 * fontSize * FONT_ASPECT_RATIO - 10, + y: position.y + radius * 7 / 5 + fontSize * FONT_ASPECT_RATIO + 15 + } + } + + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TURQUOISE + ', 1)' + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) + } + } + } + + function drawPercentage() { + if (hasPercentage === false) { return } + if (canvas.floatingSpace.inMapMode === true) { return } + if (thisObject.payload === undefined) { return } + if ((thisObject.payload.floatingObject.isCollapsed === true && thisObject.payload.floatingObject.collapsedManually === false) || thisObject.payload.floatingObject.isParentCollapsed === true) { return } + + let position = { + x: 0, + y: 0 + } + + position = thisObject.container.frame.frameThisPoint(position) + + if (canvas.floatingSpace.inMapMode === true) { + position = canvas.floatingSpace.transformPointToMap(position) + } + + let radius = thisObject.payload.floatingObject.container.frame.radius * 1.30 + /* Label Text */ + let labelPoint + let fontSize = thisObject.payload.floatingObject.currentFontSize * 6 / 4 + let label + + if (radius > 6) { + const MAX_LABEL_LENGTH = 65 + + label = Number(currentPercentage).toFixed(0) + '%' + + if (label !== undefined) { + if (label.length > MAX_LABEL_LENGTH) { + label = label.substring(0, MAX_LABEL_LENGTH) + '...' + } + + labelPoint = { + x: position.x - label.length / 2 * fontSize * FONT_ASPECT_RATIO - 5, + y: position.y + radius * 7 / 5 + fontSize * FONT_ASPECT_RATIO + 15 + } + + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TURQUOISE + ', 1)' + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) + } + } + } + + function drawStatus() { + if (hasStatus === false) { return } + if (canvas.floatingSpace.inMapMode === true) { return } + + let position = { + x: 0, + y: 0 + } + + position = thisObject.container.frame.frameThisPoint(position) + + if (canvas.floatingSpace.inMapMode === true) { + position = canvas.floatingSpace.transformPointToMap(position) + } + + let radius = thisObject.payload.floatingObject.container.frame.radius * 0.8 + /* Label Text */ + let labelPoint + let fontSize = thisObject.payload.floatingObject.currentFontSize * 6 / 4 / 2 + let label + + if (radius > 6) { + const MAX_LABEL_LENGTH = 100 + + label = currentStatus + + if (label !== undefined) { + if (label.length > MAX_LABEL_LENGTH) { + label = label.substring(0, MAX_LABEL_LENGTH) + '...' + } + + labelPoint = { + x: position.x - label.length / 2 * fontSize * FONT_ASPECT_RATIO - 10, + y: position.y + radius * 7 / 5 + fontSize * FONT_ASPECT_RATIO + 15 + } + + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', 1)' + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) + } + } + } + + function addIndexNumber(label) { + switch (thisObject.payload.node.type) { + case 'Phase': { + let parent = thisObject.payload.parentNode + if (parent !== undefined) { + let granParent = parent.payload.parentNode + if (granParent !== undefined) { + if (granParent.type === 'Initial Definition') { + return label + ' #' + 0 + } + } + for (let i = 0; i < parent.phases.length; i++) { + let phase = parent.phases[i] + if (phase.id === thisObject.payload.node.id) { + label = label + ' #' + (i + 1) + return label + } + } + } else { + return label + } + + break + } + case 'Situation': { + let parent = thisObject.payload.parentNode + if (parent !== undefined) { + for (let i = 0; i < parent.situations.length; i++) { + let situation = parent.situations[i] + if (situation.id === thisObject.payload.node.id) { + label = label + ' #' + (i + 1) + return label + } + } + } else { + return label + } + + break + } + case 'Condition': { + let parent = thisObject.payload.parentNode + if (parent !== undefined) { + for (let i = 0; i < parent.conditions.length; i++) { + let condition = parent.conditions[i] + if (condition.id === thisObject.payload.node.id) { + label = label + ' #' + (i + 1) + return label + } + } + } else { + return label + } + + break + } + default: { + return label + } + } + } + + function drawBodyAndPicture() { + let position = { + x: thisObject.container.frame.position.x, + y: thisObject.container.frame.position.y + } + + position = thisObject.container.frame.frameThisPoint(position) + + if (thisObject.isShowing === true) { + position = thisObject.fitFunction(position) + } + + if (canvas.floatingSpace.inMapMode === true) { + position = canvas.floatingSpace.transformPointToMap(position) + } + + let radius = thisObject.payload.floatingObject.container.frame.radius + + if (radius > 0.5) { + let VISIBLE_RADIUS = 5 + + let visiblePosition = { + x: thisObject.container.frame.position.x, + y: thisObject.container.frame.position.y + } + + visiblePosition = thisObject.container.frame.frameThisPoint(visiblePosition) + + if (canvas.floatingSpace.inMapMode === true) { + visiblePosition = canvas.floatingSpace.transformPointToMap(visiblePosition) + radius = canvas.floatingSpace.transformRadiusToMap(radius) + VISIBLE_RADIUS = canvas.floatingSpace.transformRadiusToMap(VISIBLE_RADIUS) + } else { + visiblePosition = thisObject.fitFunction(visiblePosition) + } + + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + + browserCanvasContext.fillStyle = thisObject.payload.floatingObject.fillStyle + + browserCanvasContext.fill() + + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS - 2, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.BLACK + ', 1)' + + browserCanvasContext.fill() + + let nodeDefinition = getNodeDefinition(thisObject.payload.node) + if (nodeDefinition === undefined) { + console.log('Node ' + thisObject.payload.node + ' without Node Definition at APP SCHEMA.') + return + } + + if (thisObject.isOnFocus === true) { + /* Black Translucent Background when node is in focus */ + VISIBLE_RADIUS = thisObject.payload.floatingObject.container.frame.radius + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.BLACK + ', 0.70)' + browserCanvasContext.fill() + /* Border when node is in focus */ + if ( + thisObject.hasError !== true && + thisObject.WarningError !== true && + thisObject.hasInfo !== true && + nodeDefinition.isHierarchyHead !== true && + thisObject.circularProgressBar === undefined + ) { + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + 1 + ')' + browserCanvasContext.lineWidth = 3 + browserCanvasContext.setLineDash([0, 0]) + browserCanvasContext.stroke() + + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS - 1, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.DARK_TURQUOISE + ', ' + 1 + ')' + browserCanvasContext.lineWidth = 2 + browserCanvasContext.setLineDash([0, 0]) + browserCanvasContext.stroke() + + } + } + + /* Hierarchy Head Ring */ + if (nodeDefinition.isHierarchyHead === true) { + VISIBLE_RADIUS = thisObject.payload.floatingObject.currentHierarchyRing * 2.6 + if (canvas.floatingSpace.inMapMode === true) { + VISIBLE_RADIUS = canvas.floatingSpace.transformRadiusToMap(VISIBLE_RADIUS) + } + let OPACITY = 0.5 + + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.LIGHT_GREY + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = 10 + browserCanvasContext.setLineDash([1, 10]) + browserCanvasContext.stroke() + + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.LIGHT_GREY + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = 1 + if (thisObject.payload.node.isIncluded === true) { + browserCanvasContext.setLineDash([0, 0]) + } else { + browserCanvasContext.setLineDash([10, 20]) + } + browserCanvasContext.stroke() + } + + /* Info Ring */ + if (thisObject.hasInfo === true) { + VISIBLE_RADIUS = thisObject.payload.floatingObject.container.frame.radius + if (canvas.floatingSpace.inMapMode === true) { + VISIBLE_RADIUS = canvas.floatingSpace.transformRadiusToMap(VISIBLE_RADIUS) + } + let OPACITY = infoMessageCounter / 30 + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.DARK_TURQUOISE + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = 5 + browserCanvasContext.setLineDash([5, 10]) + browserCanvasContext.stroke() + } + + /* Warning Ring */ + if (thisObject.hasWarning === true) { + VISIBLE_RADIUS = thisObject.payload.floatingObject.container.frame.radius + if (canvas.floatingSpace.inMapMode === true) { + VISIBLE_RADIUS = canvas.floatingSpace.transformRadiusToMap(VISIBLE_RADIUS) + } + let OPACITY = warningMessageCounter / 30 + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = 5 + browserCanvasContext.setLineDash([5, 10]) + browserCanvasContext.stroke() + } + + /* Error Ring */ + if (thisObject.hasError === true) { + VISIBLE_RADIUS = thisObject.payload.floatingObject.container.frame.radius + if (canvas.floatingSpace.inMapMode === true) { + VISIBLE_RADIUS = canvas.floatingSpace.transformRadiusToMap(VISIBLE_RADIUS) + } + let OPACITY = errorMessageCounter / 30 + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RED + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = 5 + browserCanvasContext.setLineDash([5, 10]) + browserCanvasContext.stroke() + } + + if (isHighlighted === true) { + VISIBLE_RADIUS = thisObject.payload.floatingObject.container.frame.radius + let OPACITY = highlightCounter / 10 + + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + OPACITY + ')' + + browserCanvasContext.lineWidth = 10 + browserCanvasContext.setLineDash([4, 20]) + browserCanvasContext.stroke() + } + + if (isReadyToChainAttach === true) { + VISIBLE_RADIUS = thisObject.payload.floatingObject.container.frame.radius * 2.5 + readyToChainAttachDisplayCounter - readyToChainAttachDisplayCounter / 2 + let OPACITY = readyToChainAttachCounter / 10 + + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = 10 + browserCanvasContext.setLineDash([10, 90]) + browserCanvasContext.stroke() + + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = 5 + browserCanvasContext.setLineDash([5, 45]) + browserCanvasContext.stroke() + + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = 1 + browserCanvasContext.setLineDash([2, 8]) + browserCanvasContext.stroke() + } + + if (isAvailableToChainAttach === true && isReadyToChainAttach === false) { + VISIBLE_RADIUS = thisObject.payload.floatingObject.container.frame.radius * 2.5 + let OPACITY = availableToChainAttachCounter / 10 + + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TURQUOISE + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = 10 + browserCanvasContext.setLineDash([8, 32]) + browserCanvasContext.stroke() + + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TURQUOISE + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = 2 + browserCanvasContext.setLineDash([3, 5]) + browserCanvasContext.stroke() + } + + if (isReadyToReferenceAttach === true) { + VISIBLE_RADIUS = thisObject.payload.floatingObject.container.frame.radius * 2.5 + readyToReferenceAttachDisplayCounter - readyToReferenceAttachDisplayCounter / 2 + let OPACITY = readyToReferenceAttachCounter / 10 + + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GOLDEN_ORANGE + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = 10 + browserCanvasContext.setLineDash([10, 90]) + browserCanvasContext.stroke() + + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GOLDEN_ORANGE + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = 5 + browserCanvasContext.setLineDash([5, 45]) + browserCanvasContext.stroke() + + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GOLDEN_ORANGE + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = 1 + browserCanvasContext.setLineDash([2, 8]) + browserCanvasContext.stroke() + } + + if (isAvailableToReferenceAttach === true && isReadyToReferenceAttach === false) { + VISIBLE_RADIUS = thisObject.payload.floatingObject.container.frame.radius * 2.5 + let OPACITY = availableToReferenceAttachCounter / 10 + + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GREY + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = 10 + browserCanvasContext.setLineDash([8, 32]) + browserCanvasContext.stroke() + + browserCanvasContext.beginPath() + browserCanvasContext.arc(visiblePosition.x, visiblePosition.y, VISIBLE_RADIUS, 0, Math.PI * 2, true) + browserCanvasContext.closePath() + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GREY + ', ' + OPACITY + ')' + browserCanvasContext.lineWidth = 2 + browserCanvasContext.setLineDash([3, 5]) + browserCanvasContext.stroke() + } + } + /* Image */ - if (icon !== undefined) { - if (icon.canDrawIcon === true) { - let additionalImageSize = 0 - if (thisObject.isExecuting === true || isReadyToReferenceAttach === true || isReadyToChainAttach === true) { additionalImageSize = 20 } - let totalImageSize = additionalImageSize + thisObject.payload.floatingObject.currentImageSize - if (canvas.floatingSpace.inMapMode === true) { - totalImageSize = canvas.floatingSpace.transformImagesizeToMap(totalImageSize) - let nodeDefinition = APP_SCHEMA_MAP.get(thisObject.payload.node.type) - if (nodeDefinition !== undefined) { - if (nodeDefinition.isHierarchyHead !== true) { - totalImageSize = totalImageSize / 4 + if (icon !== undefined) { + if (icon.canDrawIcon === true) { + let additionalImageSize = 0 + if (isRunningAtBackend === true || isReadyToReferenceAttach === true || isReadyToChainAttach === true) { additionalImageSize = 20 } + let totalImageSize = additionalImageSize + thisObject.payload.floatingObject.currentImageSize + if (canvas.floatingSpace.inMapMode === true) { + totalImageSize = canvas.floatingSpace.transformImagesizeToMap(totalImageSize) + let nodeDefinition = getNodeDefinition(thisObject.payload.node) + if (nodeDefinition !== undefined) { + if (nodeDefinition.isHierarchyHead !== true) { + totalImageSize = totalImageSize / 4 + } + } + } + + if (thisObject.isShowing === true) { + totalImageSize = 50 + } + + browserCanvasContext.drawImage( + icon, position.x - totalImageSize / 2, + position.y - totalImageSize / 2, + totalImageSize, + totalImageSize) } - } } - if (thisObject.isShowing === true) { - totalImageSize = 50 - } + if (executingIcon !== undefined) { + if (executingIcon.canDrawIcon === true) { + if (isRunningAtBackend === true) { + const DISTANCE_FROM_CENTER = thisObject.payload.floatingObject.container.frame.radius / 3 + 50 + const EXECUTING_ICON_SIZE = 20 + thisObject.payload.floatingObject.container.frame.radius / 6 - browserCanvasContext.drawImage( - icon, position.x - totalImageSize / 2, - position.y - totalImageSize / 2, - totalImageSize, - totalImageSize) - } + browserCanvasContext.drawImage( + executingIcon, position.x - EXECUTING_ICON_SIZE / 2, + position.y - EXECUTING_ICON_SIZE / 2 - DISTANCE_FROM_CENTER, + EXECUTING_ICON_SIZE, + EXECUTING_ICON_SIZE) + } + } + } } - - if (executingIcon !== undefined) { - if (executingIcon.canDrawIcon === true) { - if (thisObject.isExecuting === true) { - const DISTANCE_FROM_CENTER = thisObject.container.frame.radius / 3 + 50 - const EXECUTING_ICON_SIZE = 20 + thisObject.container.frame.radius / 6 - - browserCanvasContext.drawImage( - executingIcon, position.x - EXECUTING_ICON_SIZE / 2, - position.y - EXECUTING_ICON_SIZE / 2 - DISTANCE_FROM_CENTER, - EXECUTING_ICON_SIZE, - EXECUTING_ICON_SIZE) - } - } - } - } } diff --git a/CanvasApp/FloatingSpace/UiObjectConstructor.js b/CanvasApp/FloatingSpace/UiObjectConstructor.js index 0be9a5a24..643fde2a0 100644 --- a/CanvasApp/FloatingSpace/UiObjectConstructor.js +++ b/CanvasApp/FloatingSpace/UiObjectConstructor.js @@ -1,649 +1,654 @@ -function newUiObjectConstructor () { - const MODULE_NAME = 'UI Object Constructor' - const ERROR_LOG = true - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME +function newUiObjectConstructor() { + const MODULE_NAME = 'UI Object Constructor' + const ERROR_LOG = true + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME - let thisObject = { - createUiObject: createUiObject, - destroyUiObject: destroyUiObject, - initialize: initialize, - finalize: finalize - } - - let floatingLayer - - return thisObject - - function finalize () { - floatingLayer = undefined - } - - function initialize (pFloatingLayer) { - floatingLayer = pFloatingLayer - } - - function createUiObject (userAddingNew, payload) { - let floatingObject = newFloatingObject() - floatingObject.fitFunction = canvas.floatingSpace.fitIntoVisibleArea - floatingObject.container.connectToParent(canvas.floatingSpace.container, false, false, false, false, false, false, false, false) - floatingObject.initialize('UI Object', payload) - payload.floatingObject = floatingObject - - /* - When this object is created based on a backup, share or clone, we will have a savedPayload that we will use to set the initial properties. - If it is a new object being created out of the user interface, we jusst continue with the construction process. - */ - if (userAddingNew === false && payload.node.type !== 'Workspace') { - let position = { - x: 0, - y: 0 - } - - position = { - x: payload.node.savedPayload.position.x, - y: payload.node.savedPayload.position.y - } - - floatingObject.setPosition(position) - payload.node.savedPayload.position = undefined - if (payload.node.savedPayload.floatingObject.isPinned === true) { - floatingObject.pinToggle() - } - if (payload.node.savedPayload.floatingObject.isFrozen === true) { - floatingObject.freezeToggle() - } - if (payload.node.savedPayload.floatingObject.isCollapsed === true) { - floatingObject.collapseToggle() - } - if (payload.node.savedPayload.floatingObject.angleToParent !== undefined) { - floatingObject.angleToParent = payload.node.savedPayload.floatingObject.angleToParent - } - if (payload.node.savedPayload.floatingObject.distanceToParent !== undefined) { - floatingObject.distanceToParent = payload.node.savedPayload.floatingObject.distanceToParent - } - if (payload.node.savedPayload.floatingObject.arrangementStyle !== undefined) { - floatingObject.arrangementStyle = payload.node.savedPayload.floatingObject.arrangementStyle - } + let thisObject = { + createUiObject: createUiObject, + destroyUiObject: destroyUiObject, + initialize: initialize, + finalize: finalize } - /* - For brand new objects being created directly by the user, we will make them inherit some properties - from their closest siblings, and if they don't have, from their parents. - */ + let floatingLayer - if (userAddingNew === true) { - let definition = APP_SCHEMA_MAP.get(payload.parentNode.type) - if (definition.properties !== undefined) { - for (let i = 0; i < definition.properties.length; i++) { - let property = definition.properties[i] - if (property.childType === payload.node.type) { - if (property.type === 'array') { - let parentNode = payload.parentNode - let parentNodeArray = parentNode[property.name] - if (parentNodeArray.length > 1) { // the new node was already added - let closestSibling = parentNodeArray[parentNodeArray.length - 2] - if (closestSibling !== undefined) { - floatingObject.angleToParent = closestSibling.payload.floatingObject.angleToParent - floatingObject.distanceToParent = closestSibling.payload.floatingObject.distanceToParent - floatingObject.arrangementStyle = closestSibling.payload.floatingObject.arrangementStyle - break - } - } + return thisObject + + function finalize() { + floatingLayer = undefined + } + + function initialize(pFloatingLayer) { + floatingLayer = pFloatingLayer + } + + function createUiObject(userAddingNew, payload) { + let floatingObject = newFloatingObject() + floatingObject.fitFunction = canvas.floatingSpace.fitIntoVisibleArea + floatingObject.container.connectToParent(canvas.floatingSpace.container, false, false, false, false, false, false, false, false) + floatingObject.initialize('UI Object', payload) + payload.floatingObject = floatingObject + + /* + When this object is created based on a backup, share or clone, we will have a savedPayload that we will use to set the initial properties. + If it is a new object being created out of the user interface, we jusst continue with the construction process. + */ + if (userAddingNew === false && payload.node.type !== 'Workspace') { + let position = { + x: 0, + y: 0 } + + position = { + x: payload.node.savedPayload.position.x, + y: payload.node.savedPayload.position.y + } + + floatingObject.setPosition(position) + payload.node.savedPayload.position = undefined + if (payload.node.savedPayload.floatingObject.isPinned === true) { + floatingObject.pinToggle() + } + if (payload.node.savedPayload.floatingObject.isFrozen === true) { + floatingObject.freezeToggle() + } + if (payload.node.savedPayload.floatingObject.isCollapsed === true) { + floatingObject.collapseToggle() + } + if (payload.node.savedPayload.floatingObject.angleToParent !== undefined) { + floatingObject.angleToParent = payload.node.savedPayload.floatingObject.angleToParent + } + if (payload.node.savedPayload.floatingObject.distanceToParent !== undefined) { + floatingObject.distanceToParent = payload.node.savedPayload.floatingObject.distanceToParent + } + if (payload.node.savedPayload.floatingObject.arrangementStyle !== undefined) { + floatingObject.arrangementStyle = payload.node.savedPayload.floatingObject.arrangementStyle + } + } + + /* + For brand new objects being created directly by the user, we will make them inherit some properties + from their closest siblings, and if they don't have, from their parents. + */ + + if (userAddingNew === true) { + let definition = getNodeDefinition(payload.parentNode) + if (definition.properties !== undefined) { + for (let i = 0; i < definition.properties.length; i++) { + let property = definition.properties[i] + if (property.childType === payload.node.type) { + if (property.type === 'array') { + let parentNode = payload.parentNode + let parentNodeArray = parentNode[property.name] + if (parentNodeArray.length > 1) { // the new node was already added + let closestSibling = parentNodeArray[parentNodeArray.length - 2] + if (closestSibling !== undefined) { + floatingObject.angleToParent = closestSibling.payload.floatingObject.angleToParent + floatingObject.distanceToParent = closestSibling.payload.floatingObject.distanceToParent + floatingObject.arrangementStyle = closestSibling.payload.floatingObject.arrangementStyle + break + } + } + } + if (floatingObject.angleToParent === undefined) { + for (let j = i - 1; j >= 0; j--) { + let siblingProperty = definition.properties[j] + let parentNode = payload.parentNode + let parentNodeProperty = parentNode[siblingProperty.name] + if (parentNodeProperty !== undefined) { + if (siblingProperty.type === 'array') { + if (parentNodeProperty.length > 0) { + let closestSibling = parentNodeProperty[parentNodeProperty.length - 1] + if (closestSibling !== undefined) { + floatingObject.angleToParent = closestSibling.payload.floatingObject.angleToParent + floatingObject.distanceToParent = closestSibling.payload.floatingObject.distanceToParent + floatingObject.arrangementStyle = closestSibling.payload.floatingObject.arrangementStyle + break + } + } + } else { + let closestSibling = parentNodeProperty + if (closestSibling !== undefined) { + floatingObject.angleToParent = closestSibling.payload.floatingObject.angleToParent + floatingObject.distanceToParent = closestSibling.payload.floatingObject.distanceToParent + floatingObject.arrangementStyle = closestSibling.payload.floatingObject.arrangementStyle + break + } + } + } + } + for (let j = i + 1; j < definition.properties.length; j++) { + let siblingProperty = definition.properties[j] + let parentNode = payload.parentNode + let parentNodeProperty = parentNode[siblingProperty.name] + if (parentNodeProperty !== undefined) { + if (siblingProperty.type === 'array') { + if (parentNodeProperty.length > 0) { + let closestSibling = parentNodeProperty[parentNodeProperty.length - 1] + if (closestSibling !== undefined) { + floatingObject.angleToParent = closestSibling.payload.floatingObject.angleToParent + floatingObject.distanceToParent = closestSibling.payload.floatingObject.distanceToParent + floatingObject.arrangementStyle = closestSibling.payload.floatingObject.arrangementStyle + break + } + } + } else { + let closestSibling = parentNodeProperty + if (closestSibling !== undefined) { + floatingObject.angleToParent = closestSibling.payload.floatingObject.angleToParent + floatingObject.distanceToParent = closestSibling.payload.floatingObject.distanceToParent + floatingObject.arrangementStyle = closestSibling.payload.floatingObject.arrangementStyle + break + } + } + } + } + } + } + } + } + if (floatingObject.angleToParent === undefined) { - for (let j = i - 1; j >= 0; j--) { - let siblingProperty = definition.properties[j] - let parentNode = payload.parentNode - let parentNodeProperty = parentNode[siblingProperty.name] - if (parentNodeProperty !== undefined) { - if (siblingProperty.type === 'array') { - if (parentNodeProperty.length > 0) { - let closestSibling = parentNodeProperty[parentNodeProperty.length - 1] - if (closestSibling !== undefined) { - floatingObject.angleToParent = closestSibling.payload.floatingObject.angleToParent - floatingObject.distanceToParent = closestSibling.payload.floatingObject.distanceToParent - floatingObject.arrangementStyle = closestSibling.payload.floatingObject.arrangementStyle - break - } + floatingObject.angleToParent = payload.parentNode.payload.floatingObject.angleToParent + floatingObject.distanceToParent = payload.parentNode.payload.floatingObject.distanceToParent + floatingObject.arrangementStyle = payload.parentNode.payload.floatingObject.arrangementStyle + } + } + + /* Default Values in case there was no way to set a value previous to this. */ + if (floatingObject.angleToParent === undefined) { + floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_360 + } + if (floatingObject.distanceToParent === undefined) { + floatingObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_100X + } + if (floatingObject.arrangementStyle === undefined) { + floatingObject.arrangementStyle = ARRANGEMENT_STYLE.CONCAVE + } + + let uiObject = newUiObject() + payload.uiObject = uiObject + uiObject.fitFunction = canvas.floatingSpace.fitIntoVisibleArea + uiObject.isVisibleFunction = canvas.floatingSpace.isThisPointVisible + let menuItemsInitialValues = getMenuItemsInitialValues(uiObject, floatingObject, payload) + + for (let i = 0; i < APP_SCHEMA_ARRAY.length; i++) { + let schemaNode = APP_SCHEMA_ARRAY[i] + if (schemaNode.type === payload.node.type) { + let menuItems = schemaNode.menuItems + for (let j = 0; j < menuItems.length; j++) { + let item = menuItems[j] + item.angle = undefined + if (item.action.indexOf('Add Missing Children') >= 0) { + item.action = 'Add Missing Children' } - } else { - let closestSibling = parentNodeProperty - if (closestSibling !== undefined) { - floatingObject.angleToParent = closestSibling.payload.floatingObject.angleToParent - floatingObject.distanceToParent = closestSibling.payload.floatingObject.distanceToParent - floatingObject.arrangementStyle = closestSibling.payload.floatingObject.arrangementStyle - break + if (item.action.indexOf('Delete ') >= 0) { + // item.action = 'Delete UI Object' + } + if (item.action.indexOf('Configure ') >= 0) { + if (schemaNode.editors.config === true) { + // item.actionFunction = 'uiObject.configEditor.activate' + } + } + if (item.action.indexOf('Edit ') >= 0) { + if (schemaNode.editors.code === true) { + // item.actionFunction = 'uiObject.codeEditor.activate' + } + } + if (item.actionFunction === undefined) { + // item.actionFunction = 'payload.onMenuItemClick' } - } } - } - for (let j = i + 1; j < definition.properties.length; j++) { - let siblingProperty = definition.properties[j] - let parentNode = payload.parentNode - let parentNodeProperty = parentNode[siblingProperty.name] - if (parentNodeProperty !== undefined) { - if (siblingProperty.type === 'array') { - if (parentNodeProperty.length > 0) { - let closestSibling = parentNodeProperty[parentNodeProperty.length - 1] - if (closestSibling !== undefined) { - floatingObject.angleToParent = closestSibling.payload.floatingObject.angleToParent - floatingObject.distanceToParent = closestSibling.payload.floatingObject.distanceToParent - floatingObject.arrangementStyle = closestSibling.payload.floatingObject.arrangementStyle - break - } - } - } else { - let closestSibling = parentNodeProperty - if (closestSibling !== undefined) { - floatingObject.angleToParent = closestSibling.payload.floatingObject.angleToParent - floatingObject.distanceToParent = closestSibling.payload.floatingObject.distanceToParent - floatingObject.arrangementStyle = closestSibling.payload.floatingObject.arrangementStyle - break - } - } + } + } + + uiObject.initialize(payload, menuItemsInitialValues) + uiObject.container.connectToParent(floatingObject.container, false, false, true, true, false, false, true, true, true, true, true) + + setFloatingObjectBasicProperties(floatingObject, payload) + + if (payload.node.savedPayload !== undefined) { + if (payload.node.savedPayload.uiObject !== undefined) { + payload.uiObject.shortcutKey = payload.node.savedPayload.uiObject.shortcutKey + } + } + + floatingLayer.addFloatingObject(floatingObject) + + return + } + + function addLeftIcons(menuItemsInitialValues, floatingObject, isPersonalData) { + menuItemsInitialValues.push( + { + action: 'Pin / Unpin', + actionFunction: floatingObject.pinToggle, + actionStatus: floatingObject.getPinStatus, + currentStatus: false, + label: undefined, + visible: true, + iconPathOn: 'pinned', + iconPathOff: 'unpinned', + rawRadius: 12, + targetRadius: 0, + currentRadius: 0, + ring: 1 + } + ) + menuItemsInitialValues.push( + { + action: 'Change Tension Level', + actionFunction: floatingObject.angleToParentToggle, + actionStatus: floatingObject.getAngleToParent, + currentStatus: true, + label: undefined, + visible: true, + icons: ['angle-to-parent-000', 'angle-to-parent-360', 'angle-to-parent-180', 'angle-to-parent-090', 'angle-to-parent-045'], + rawRadius: 12, + targetRadius: 0, + currentRadius: 0, + ring: 1 + } + ) + menuItemsInitialValues.push( + { + action: 'Change Distance to Paarent', + actionFunction: floatingObject.distanceToParentToggle, + actionStatus: floatingObject.getDistanceToParent, + currentStatus: true, + label: undefined, + visible: true, + icons: ['distance-to-parent-000', 'distance-to-parent-025', 'distance-to-parent-050', 'distance-to-parent-100', 'distance-to-parent-150', 'distance-to-parent-200'], + rawRadius: 12, + targetRadius: 0, + currentRadius: 0, + ring: 1 + } + ) + menuItemsInitialValues.push( + { + action: 'Change Arrangement Style', + actionFunction: floatingObject.arrangementStyleToggle, + actionStatus: floatingObject.getArrangementStyle, + currentStatus: true, + label: undefined, + visible: true, + icons: ['arrangement-concave', 'arrangement-convex', 'arrangement-vertical-right', 'arrangement-vertical-left', 'arrangement-horizontal-bottom', 'arrangement-horizontal-top'], + rawRadius: 12, + targetRadius: 0, + currentRadius: 0, + ring: 1 + } + ) + menuItemsInitialValues.push( + { + action: 'Freeze / Unfreeze', + actionFunction: floatingObject.freezeToggle, + actionStatus: floatingObject.getFreezeStatus, + currentStatus: true, + label: undefined, + visible: true, + iconPathOn: 'unfreeze', + iconPathOff: 'freeze', + rawRadius: 12, + targetRadius: 0, + currentRadius: 0, + ring: 1 + } + ) + menuItemsInitialValues.push( + { + action: 'Collapse / Uncollapse', + actionFunction: floatingObject.collapseToggle, + actionStatus: floatingObject.getCollapseStatus, + currentStatus: false, + label: undefined, + visible: true, + iconPathOn: 'expand', + iconPathOff: 'collapse', + rawRadius: 12, + targetRadius: 0, + currentRadius: 0, + ring: 1 + } + ) + menuItemsInitialValues.push( + { + action: 'Backup', + actionFunction: floatingObject.payload.onMenuItemClick, + label: undefined, + visible: true, + iconPathOn: 'backup', + iconPathOff: 'backup', + rawRadius: 12, + targetRadius: 0, + currentRadius: 0, + ring: 2 + } + ) + menuItemsInitialValues.push( + { + action: 'Clone', + actionFunction: floatingObject.payload.onMenuItemClick, + label: undefined, + visible: true, + iconPathOn: 'clone', + iconPathOff: 'clone', + rawRadius: 12, + targetRadius: 0, + currentRadius: 0, + ring: 2 + } + ) + if (isPersonalData !== true) { + menuItemsInitialValues.push( + { + action: 'Share', + actionFunction: floatingObject.payload.onMenuItemClick, + label: undefined, + visible: true, + iconPathOn: 'share', + iconPathOff: 'share', + rawRadius: 12, + targetRadius: 0, + currentRadius: 0, + ring: 2 } - } - } - } - } - } - - if (floatingObject.angleToParent === undefined) { - floatingObject.angleToParent = payload.parentNode.payload.floatingObject.angleToParent - floatingObject.distanceToParent = payload.parentNode.payload.floatingObject.distanceToParent - floatingObject.arrangementStyle = payload.parentNode.payload.floatingObject.arrangementStyle - } - } - - /* Default Values in case there was no way to set a value previous to this. */ - if (floatingObject.angleToParent === undefined) { - floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_360 - } - if (floatingObject.distanceToParent === undefined) { - floatingObject.distanceToParent = DISTANCE_TO_PARENT.PARENT_100X - } - if (floatingObject.arrangementStyle === undefined) { - floatingObject.arrangementStyle = ARRANGEMENT_STYLE.CONCAVE - } - - let uiObject = newUiObject() - payload.uiObject = uiObject - uiObject.fitFunction = canvas.floatingSpace.fitIntoVisibleArea - uiObject.isVisibleFunction = canvas.floatingSpace.isThisPointVisible - let menuItemsInitialValues = getMenuItemsInitialValues(uiObject, floatingObject, payload) - - for (let i = 0; i < APP_SCHEMA_ARRAY.length; i++) { - let schemaNode = APP_SCHEMA_ARRAY[i] - if (schemaNode.type === payload.node.type) { - let menuItems = schemaNode.menuItems - for (let j = 0; j < menuItems.length; j++) { - let item = menuItems[j] - item.angle = undefined - if (item.action.indexOf('Add Missing Children') >= 0) { - item.action = 'Add Missing Children' - } - if (item.action.indexOf('Delete ') >= 0) { - // item.action = 'Delete UI Object' - } - if (item.action.indexOf('Configure ') >= 0) { - if (schemaNode.editors.config === true) { - // item.actionFunction = 'uiObject.configEditor.activate' - } - } - if (item.action.indexOf('Edit ') >= 0) { - if (schemaNode.editors.code === true) { - // item.actionFunction = 'uiObject.codeEditor.activate' - } - } - if (item.actionFunction === undefined) { - // item.actionFunction = 'payload.onMenuItemClick' - } - } - } - } - - uiObject.initialize(payload, menuItemsInitialValues) - uiObject.container.connectToParent(floatingObject.container, false, false, true, true, false, false, true, true, true, true, true) - - setFloatingObjectBasicProperties(floatingObject, payload) - - if (payload.node.savedPayload !== undefined) { - if (payload.node.savedPayload.uiObject !== undefined) { - payload.uiObject.shortcutKey = payload.node.savedPayload.uiObject.shortcutKey - } - } - - floatingLayer.addFloatingObject(floatingObject) - - return - } - - function addLeftIcons (menuItemsInitialValues, floatingObject, isPersonalData) { - menuItemsInitialValues.push( - { - action: 'Pin / Unpin', - actionFunction: floatingObject.pinToggle, - actionStatus: floatingObject.getPinStatus, - currentStatus: false, - label: undefined, - visible: true, - iconPathOn: 'menu-fix-pinned', - iconPathOff: 'menu-fix-unpinned', - rawRadius: 12, - targetRadius: 0, - currentRadius: 0, - ring: 1 - } - ) - menuItemsInitialValues.push( - { - action: 'Change Tension Level', - actionFunction: floatingObject.angleToParentToggle, - actionStatus: floatingObject.getAngleToParent, - currentStatus: true, - label: undefined, - visible: true, - icons: ['angle-to-parent-000', 'angle-to-parent-360', 'angle-to-parent-180', 'angle-to-parent-090', 'angle-to-parent-045'], - rawRadius: 12, - targetRadius: 0, - currentRadius: 0, - ring: 1 - } - ) - menuItemsInitialValues.push( - { - action: 'Change Distance to Paarent', - actionFunction: floatingObject.distanceToParentToggle, - actionStatus: floatingObject.getDistanceToParent, - currentStatus: true, - label: undefined, - visible: true, - icons: ['distance-to-parent-000', 'distance-to-parent-025', 'distance-to-parent-050', 'distance-to-parent-100', 'distance-to-parent-150', 'distance-to-parent-200'], - rawRadius: 12, - targetRadius: 0, - currentRadius: 0, - ring: 1 - } - ) - menuItemsInitialValues.push( - { - action: 'Change Arrangement Style', - actionFunction: floatingObject.arrangementStyleToggle, - actionStatus: floatingObject.getArrangementStyle, - currentStatus: true, - label: undefined, - visible: true, - icons: ['arrangement-concave', 'arrangement-convex', 'arrangement-vertical-right', 'arrangement-vertical-left', 'arrangement-horizontal-bottom', 'arrangement-horizontal-top'], - rawRadius: 12, - targetRadius: 0, - currentRadius: 0, - ring: 1 - } ) - menuItemsInitialValues.push( - { - action: 'Freeze / Unfreeze', - actionFunction: floatingObject.freezeToggle, - actionStatus: floatingObject.getFreezeStatus, - currentStatus: true, - label: undefined, - visible: true, - iconPathOn: 'menu-mobility-unfreeze', - iconPathOff: 'menu-mobility-freeze', - rawRadius: 12, - targetRadius: 0, - currentRadius: 0, - ring: 1 - } - ) - menuItemsInitialValues.push( - { - action: 'Collapse / Uncollapse', - actionFunction: floatingObject.collapseToggle, - actionStatus: floatingObject.getCollapseStatus, - currentStatus: false, - label: undefined, - visible: true, - iconPathOn: 'menu-tree-plus', - iconPathOff: 'menu-tree-minus', - rawRadius: 12, - targetRadius: 0, - currentRadius: 0, - ring: 1 - } - ) - menuItemsInitialValues.push( - { - action: 'Backup', - actionFunction: floatingObject.payload.onMenuItemClick, - label: undefined, - visible: true, - iconPathOn: 'menu-backup', - iconPathOff: 'menu-backup', - rawRadius: 12, - targetRadius: 0, - currentRadius: 0, - ring: 2 - } - ) - menuItemsInitialValues.push( - { - action: 'Clone', - actionFunction: floatingObject.payload.onMenuItemClick, - label: undefined, - visible: true, - iconPathOn: 'clone', - iconPathOff: 'clone', - rawRadius: 12, - targetRadius: 0, - currentRadius: 0, - ring: 2 - } + } + menuItemsInitialValues.push( + { + action: 'Remove Parent', + actionFunction: floatingObject.payload.onMenuItemClick, + label: undefined, + visible: true, + iconPathOn: 'detach', + iconPathOff: 'detach', + rawRadius: 12, + targetRadius: 0, + currentRadius: 0, + ring: 3 + } ) - if (isPersonalData !== true) { - menuItemsInitialValues.push( - { - action: 'Share', - actionFunction: floatingObject.payload.onMenuItemClick, - label: undefined, - visible: true, - iconPathOn: 'menu-share', - iconPathOff: 'menu-share', - rawRadius: 12, - targetRadius: 0, - currentRadius: 0, - ring: 2 - } - ) - } - menuItemsInitialValues.push( - { - action: 'Remove Parent', - actionFunction: floatingObject.payload.onMenuItemClick, - label: undefined, - visible: true, - iconPathOn: 'detach', - iconPathOff: 'detach', - rawRadius: 12, - targetRadius: 0, - currentRadius: 0, - ring: 3 - } + menuItemsInitialValues.push( + { + action: 'Remove Reference', + actionFunction: floatingObject.payload.onMenuItemClick, + label: undefined, + visible: true, + iconPathOn: 'delink', + iconPathOff: 'delink', + rawRadius: 12, + targetRadius: 0, + currentRadius: 0, + ring: 3 + } ) - menuItemsInitialValues.push( - { - action: 'Remove Reference', - actionFunction: floatingObject.payload.onMenuItemClick, - label: undefined, - visible: true, - iconPathOn: 'delink', - iconPathOff: 'delink', - rawRadius: 12, - targetRadius: 0, - currentRadius: 0, - ring: 3 - } - ) - menuItemsInitialValues.push( - { - action: 'Open Documentation', - actionFunction: floatingObject.payload.onMenuItemClick, - label: undefined, - visible: true, - iconPathOn: 'help', - iconPathOff: 'help', - rawRadius: 12, - targetRadius: 0, - currentRadius: 0, - ring: 4 - } - ) - } - - function getMenuItemsInitialValues (uiObject, floatingObject, payload) { - let menuItemsInitialValues = [] - - let nodeDefinition = APP_SCHEMA_MAP.get(payload.node.type) - if (nodeDefinition !== undefined) { - if (nodeDefinition.editors !== undefined) { - if (nodeDefinition.editors.config === true) { - uiObject.configEditor = newConfigEditor() - uiObject.configEditor.isVisibleFunction = uiObject.isVisibleFunction - uiObject.configEditor.container.connectToParent(uiObject.container, false, false, true, true, false, false, false, false) - uiObject.configEditor.initialize() - } - if (nodeDefinition.editors.code === true) { - uiObject.codeEditor = newCodeEditor() - uiObject.codeEditor.isVisibleFunction = uiObject.isVisibleFunction - uiObject.codeEditor.container.connectToParent(uiObject.container, false, false, true, true, false, false, false, false) - uiObject.codeEditor.initialize() - } - if (nodeDefinition.editors.formula === true) { - uiObject.formulaEditor = newFormulaEditor() - uiObject.formulaEditor.isVisibleFunction = uiObject.isVisibleFunction - uiObject.formulaEditor.container.connectToParent(uiObject.container, false, false, true, true, false, false, false, false) - uiObject.formulaEditor.initialize() - } - if (nodeDefinition.editors.condition === true) { - uiObject.conditionEditor = newConditionEditor() - uiObject.conditionEditor.isVisibleFunction = uiObject.isVisibleFunction - uiObject.conditionEditor.container.connectToParent(uiObject.container, false, false, false, true, false, false, false, false) - uiObject.conditionEditor.initialize() - } - } - if (nodeDefinition.addLeftIcons === true) { - addLeftIcons(menuItemsInitialValues, floatingObject, nodeDefinition.isPersonalData) - } - if (nodeDefinition.isPinned === true) { - floatingObject.isPinned = true - } - if (nodeDefinition.positionLocked === true) { - floatingObject.positionLocked = true - } - - for (let i = 0; i < nodeDefinition.menuItems.length; i++) { - let menutItemDefinition = nodeDefinition.menuItems[i] - let newMenuItem = JSON.parse(JSON.stringify(menutItemDefinition)) - - /* We need to reference the real function based on its name */ - if (menutItemDefinition.actionFunction !== undefined) { - newMenuItem.actionFunction = eval(menutItemDefinition.actionFunction) - } - - /* Adding default values */ - if (newMenuItem.visible === undefined) { - newMenuItem.visible = true - } - - if (newMenuItem.rawRadius === undefined) { - newMenuItem.rawRadius = 12 - } - - if (newMenuItem.targetRadius === undefined) { - newMenuItem.targetRadius = 0 - } - - if (newMenuItem.currentRadius === undefined) { - newMenuItem.currentRadius = 0 - } - - menuItemsInitialValues.push(newMenuItem) - } - } else { - if (ERROR_LOG === true) { logger.write('[ERROR] getMenuItemsInitialValues -> UI Object Type not Recognized -> type = ' + payload.node.type) } + menuItemsInitialValues.push( + { + action: 'Open Documentation', + actionFunction: floatingObject.payload.onMenuItemClick, + label: undefined, + visible: true, + iconPathOn: 'help', + iconPathOff: 'help', + rawRadius: 12, + targetRadius: 0, + currentRadius: 0, + ring: 4 + } + ) } - return menuItemsInitialValues - } + function getMenuItemsInitialValues(uiObject, floatingObject, payload) { + let menuItemsInitialValues = [] - function setFloatingObjectBasicProperties (floatingObject, payload) { - const FRICTION = 0.95 - const INITIAL_FRICTION = 0.97 - const INITIAL_FONT_SIZE = 12 * 1.5 - const INITIAL_RADIOUS = 45 * 1.5 - const INITIAL_IMAGE_SIZE = 80 * 1.2 - const INITIAL_HIERARCHY_RING = 20 - - switch (payload.node.type) { - case 'Workspace': { - level_0() - floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_360 - break - } - - default: { - let nodeDefinition = APP_SCHEMA_MAP.get(payload.node.type) + let nodeDefinition = getNodeDefinition(payload.node) if (nodeDefinition !== undefined) { - switch (nodeDefinition.level) { - case 0: { - level_0() - break + if (nodeDefinition.editors !== undefined) { + if (nodeDefinition.editors.config === true) { + uiObject.configEditor = newConfigEditor() + uiObject.configEditor.isVisibleFunction = uiObject.isVisibleFunction + uiObject.configEditor.container.connectToParent(uiObject.container, false, false, true, true, false, false, false, false) + uiObject.configEditor.initialize() + } + if (nodeDefinition.editors.code === true) { + uiObject.codeEditor = newCodeEditor() + uiObject.codeEditor.isVisibleFunction = uiObject.isVisibleFunction + uiObject.codeEditor.container.connectToParent(uiObject.container, false, false, true, true, false, false, false, false) + uiObject.codeEditor.initialize() + } + if (nodeDefinition.editors.formula === true) { + uiObject.formulaEditor = newFormulaEditor() + uiObject.formulaEditor.isVisibleFunction = uiObject.isVisibleFunction + uiObject.formulaEditor.container.connectToParent(uiObject.container, false, false, true, true, false, false, false, false) + uiObject.formulaEditor.initialize() + } + if (nodeDefinition.editors.condition === true) { + uiObject.conditionEditor = newConditionEditor() + uiObject.conditionEditor.isVisibleFunction = uiObject.isVisibleFunction + uiObject.conditionEditor.container.connectToParent(uiObject.container, false, false, false, true, false, false, false, false) + uiObject.conditionEditor.initialize() + } } - case 1: { - level_1() - break + if (nodeDefinition.addLeftIcons === true) { + addLeftIcons(menuItemsInitialValues, floatingObject, nodeDefinition.isPersonalData) } - case 2: { - level_2() - break + if (nodeDefinition.isPinned === true) { + floatingObject.isPinned = true } - case 3: { - level_3() - break + if (nodeDefinition.positionLocked === true) { + floatingObject.positionLocked = true } - case 4: { - level_4() - break + + for (let i = 0; i < nodeDefinition.menuItems.length; i++) { + let menutItemDefinition = nodeDefinition.menuItems[i] + let newMenuItem = JSON.parse(JSON.stringify(menutItemDefinition)) + + /* We need to reference the real function based on its name */ + if (menutItemDefinition.actionFunction !== undefined) { + try { + newMenuItem.actionFunction = eval(menutItemDefinition.actionFunction) + } catch (err) { + console.log('Error at Menu Item Action Function: ' + menutItemDefinition.actionFunction + ' ' + err.stack) + continue + } + } + + /* Adding default values */ + if (newMenuItem.visible === undefined) { + newMenuItem.visible = true + } + + if (newMenuItem.rawRadius === undefined) { + newMenuItem.rawRadius = 12 + } + + if (newMenuItem.targetRadius === undefined) { + newMenuItem.targetRadius = 0 + } + + if (newMenuItem.currentRadius === undefined) { + newMenuItem.currentRadius = 0 + } + + menuItemsInitialValues.push(newMenuItem) } - case 5: { - level_5() - break - } - } + } else { + if (ERROR_LOG === true) { logger.write('[ERROR] getMenuItemsInitialValues -> UI Object Type not Recognized -> type = ' + payload.node.type) } } - } + + return menuItemsInitialValues } - function level_0 () { - floatingObject.targetFriction = 0.93 - floatingObject.friction = INITIAL_FRICTION + function setFloatingObjectBasicProperties(floatingObject, payload) { + const FRICTION = 0.95 + const INITIAL_FRICTION = 0.97 + const INITIAL_FONT_SIZE = 12 * 1.5 + const INITIAL_RADIOUS = 70 + const INITIAL_IMAGE_SIZE = 80 * 1.2 + const INITIAL_HIERARCHY_RING = 20 - floatingObject.initializeMass(500) - floatingObject.initializeRadius(INITIAL_RADIOUS) - floatingObject.initializeHierarchyRing(INITIAL_HIERARCHY_RING) - floatingObject.initializeImageSize(INITIAL_IMAGE_SIZE) - floatingObject.initializeFontSize(INITIAL_FONT_SIZE) + switch (payload.node.type) { + case 'Workspace': { + level_0() + floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_360 + break + } - floatingObject.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' - } - function level_1 () { - floatingObject.targetFriction = 0.94 - floatingObject.friction = INITIAL_FRICTION + default: { + let nodeDefinition = getNodeDefinition(payload.node) + if (nodeDefinition !== undefined) { + switch (nodeDefinition.level) { + case 0: { + level_0() + break + } + case 1: { + level_1() + break + } + case 2: { + level_2() + break + } + case 3: { + level_3() + break + } + case 4: { + level_4() + break + } + case 5: { + level_5() + break + } + } + } + } + } - floatingObject.initializeMass(600) - floatingObject.initializeRadius(INITIAL_RADIOUS) - floatingObject.initializeHierarchyRing(INITIAL_HIERARCHY_RING) - floatingObject.initializeImageSize(INITIAL_IMAGE_SIZE) - floatingObject.initializeFontSize(INITIAL_FONT_SIZE) + function level_0() { + floatingObject.targetFriction = 0.93 + floatingObject.friction = INITIAL_FRICTION - floatingObject.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' + floatingObject.initializeMass(500) + floatingObject.initializeRadius(INITIAL_RADIOUS) + floatingObject.initializeHierarchyRing(INITIAL_HIERARCHY_RING) + floatingObject.initializeImageSize(INITIAL_IMAGE_SIZE) + floatingObject.initializeFontSize(INITIAL_FONT_SIZE) - if (payload.node.savedPayload === undefined) { - // floatingObject.angleToParentToggle() - } - } - function level_2 () { - floatingObject.targetFriction = FRICTION - floatingObject.friction = INITIAL_FRICTION + floatingObject.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' + } + function level_1() { + floatingObject.targetFriction = 0.94 + floatingObject.friction = INITIAL_FRICTION - floatingObject.initializeMass(300) - floatingObject.initializeRadius(INITIAL_RADIOUS - 5) - floatingObject.initializeHierarchyRing(INITIAL_HIERARCHY_RING) - floatingObject.initializeImageSize(INITIAL_IMAGE_SIZE - 10) - floatingObject.initializeFontSize(INITIAL_FONT_SIZE) + floatingObject.initializeMass(600) + floatingObject.initializeRadius(INITIAL_RADIOUS) + floatingObject.initializeHierarchyRing(INITIAL_HIERARCHY_RING) + floatingObject.initializeImageSize(INITIAL_IMAGE_SIZE) + floatingObject.initializeFontSize(INITIAL_FONT_SIZE) - floatingObject.fillStyle = 'rgba(' + UI_COLOR.GREEN + ', 1)' + floatingObject.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' - if (payload.node.savedPayload === undefined) { - // floatingObject.angleToParentToggle() - } - } - function level_3 () { - floatingObject.targetFriction = FRICTION - floatingObject.friction = INITIAL_FRICTION + if (payload.node.savedPayload === undefined) { + // floatingObject.angleToParentToggle() + } + } + function level_2() { + floatingObject.targetFriction = FRICTION + floatingObject.friction = INITIAL_FRICTION - floatingObject.initializeMass(150) - floatingObject.initializeRadius(INITIAL_RADIOUS - 10) - floatingObject.initializeHierarchyRing(INITIAL_HIERARCHY_RING) - floatingObject.initializeImageSize(INITIAL_IMAGE_SIZE - 20) - floatingObject.initializeFontSize(INITIAL_FONT_SIZE) + floatingObject.initializeMass(300) + floatingObject.initializeRadius(INITIAL_RADIOUS - 2) + floatingObject.initializeHierarchyRing(INITIAL_HIERARCHY_RING) + floatingObject.initializeImageSize(INITIAL_IMAGE_SIZE - 10) + floatingObject.initializeFontSize(INITIAL_FONT_SIZE) - floatingObject.fillStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', 1)' + floatingObject.fillStyle = 'rgba(' + UI_COLOR.GREEN + ', 1)' - if (payload.node.savedPayload === undefined) { - // floatingObject.angleToParentToggle() - } - } - function level_4 () { - floatingObject.targetFriction = FRICTION - floatingObject.friction = INITIAL_FRICTION + if (payload.node.savedPayload === undefined) { + // floatingObject.angleToParentToggle() + } + } + function level_3() { + floatingObject.targetFriction = FRICTION + floatingObject.friction = INITIAL_FRICTION - floatingObject.initializeMass(75) - floatingObject.initializeRadius(INITIAL_RADIOUS - 15) - floatingObject.initializeHierarchyRing(INITIAL_HIERARCHY_RING) - floatingObject.initializeImageSize(INITIAL_IMAGE_SIZE - 30) - floatingObject.initializeFontSize(INITIAL_FONT_SIZE) + floatingObject.initializeMass(150) + floatingObject.initializeRadius(INITIAL_RADIOUS - 4) + floatingObject.initializeHierarchyRing(INITIAL_HIERARCHY_RING) + floatingObject.initializeImageSize(INITIAL_IMAGE_SIZE - 20) + floatingObject.initializeFontSize(INITIAL_FONT_SIZE) - floatingObject.fillStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', 1)' + floatingObject.fillStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', 1)' - if (payload.node.savedPayload === undefined) { - // floatingObject.angleToParentToggle() - } - } - function level_5 () { - floatingObject.targetFriction = FRICTION - floatingObject.friction = INITIAL_FRICTION + if (payload.node.savedPayload === undefined) { + // floatingObject.angleToParentToggle() + } + } + function level_4() { + floatingObject.targetFriction = FRICTION + floatingObject.friction = INITIAL_FRICTION - floatingObject.initializeMass(50) - floatingObject.initializeRadius(INITIAL_RADIOUS - 20) - floatingObject.initializeHierarchyRing(INITIAL_HIERARCHY_RING) - floatingObject.initializeImageSize(INITIAL_IMAGE_SIZE - 40) - floatingObject.initializeFontSize(INITIAL_FONT_SIZE) + floatingObject.initializeMass(75) + floatingObject.initializeRadius(INITIAL_RADIOUS - 6) + floatingObject.initializeHierarchyRing(INITIAL_HIERARCHY_RING) + floatingObject.initializeImageSize(INITIAL_IMAGE_SIZE - 30) + floatingObject.initializeFontSize(INITIAL_FONT_SIZE) - floatingObject.fillStyle = 'rgba(' + UI_COLOR.RED + ', 1)' - } - function level_6 () { - floatingObject.targetFriction = FRICTION - floatingObject.friction = INITIAL_FRICTION + floatingObject.fillStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', 1)' - floatingObject.initializeMass(25) - floatingObject.initializeRadius(INITIAL_RADIOUS - 25) - floatingObject.initializeHierarchyRing(INITIAL_HIERARCHY_RING) - floatingObject.initializeImageSize(INITIAL_IMAGE_SIZE - 50) - floatingObject.initializeFontSize(INITIAL_FONT_SIZE) + if (payload.node.savedPayload === undefined) { + // floatingObject.angleToParentToggle() + } + } + function level_5() { + floatingObject.targetFriction = FRICTION + floatingObject.friction = INITIAL_FRICTION - floatingObject.fillStyle = 'rgba(' + UI_COLOR.RED + ', 1)' + floatingObject.initializeMass(50) + floatingObject.initializeRadius(INITIAL_RADIOUS - 8) + floatingObject.initializeHierarchyRing(INITIAL_HIERARCHY_RING) + floatingObject.initializeImageSize(INITIAL_IMAGE_SIZE - 40) + floatingObject.initializeFontSize(INITIAL_FONT_SIZE) + + floatingObject.fillStyle = 'rgba(' + UI_COLOR.RED + ', 1)' + } + function level_6() { + floatingObject.targetFriction = FRICTION + floatingObject.friction = INITIAL_FRICTION + + floatingObject.initializeMass(25) + floatingObject.initializeRadius(INITIAL_RADIOUS - 10) + floatingObject.initializeHierarchyRing(INITIAL_HIERARCHY_RING) + floatingObject.initializeImageSize(INITIAL_IMAGE_SIZE - 50) + floatingObject.initializeFontSize(INITIAL_FONT_SIZE) + + floatingObject.fillStyle = 'rgba(' + UI_COLOR.RED + ', 1)' + } + + floatingObject.labelStrokeStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' } - floatingObject.labelStrokeStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' - } + function destroyUiObject(payload) { + if (payload === undefined) { return } + floatingLayer.removeFloatingObject(payload.floatingObject.handle) - function destroyUiObject (payload) { - if (payload === undefined) { return } - floatingLayer.removeFloatingObject(payload.floatingObject.handle) + payload.floatingObject.finalize() + payload.floatingObject = undefined - payload.floatingObject.finalize() - payload.floatingObject = undefined + payload.uiObject.finalize() + payload.uiObject = undefined - payload.uiObject.finalize() - payload.uiObject = undefined - - payload.referenceParent = undefined - payload.parent = undefined - payload.chainParent = undefined - payload.node.savedPayload = undefined - } + payload.referenceParent = undefined + payload.parent = undefined + payload.chainParent = undefined + payload.node.savedPayload = undefined + } } diff --git a/CanvasApp/FloatingSpace/UiObjectTitle.js b/CanvasApp/FloatingSpace/UiObjectTitle.js index e96b23eac..c7ea3990d 100644 --- a/CanvasApp/FloatingSpace/UiObjectTitle.js +++ b/CanvasApp/FloatingSpace/UiObjectTitle.js @@ -1,357 +1,374 @@ -function newUiObjectTitle () { - const MODULE_NAME = 'UI Object Title' - const ERROR_LOG = true +function newUiObjectTitle() { + const MODULE_NAME = 'UI Object Title' + const ERROR_LOG = true - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME - let thisObject = { - fitFunction: undefined, - isVisibleFunction: undefined, - allwaysVisible: undefined, - editMode: undefined, - container: undefined, - payload: undefined, - isDefault: undefined, - enterEditMode: enterEditMode, - exitEditMode: exitEditMode, - physics: physics, - draw: draw, - getContainer: getContainer, - finalize: finalize, - initialize: initialize - } - - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) - thisObject.container.isClickeable = true - thisObject.container.isDraggeable = false - thisObject.container.frame.radius = 0 - - let selfFocusEventSubscriptionId - let selfNotFocuskEventSubscriptionId - let selfMouseClickEventSubscriptionId - - return thisObject - - function finalize () { - thisObject.container.eventHandler.stopListening(selfFocusEventSubscriptionId) - thisObject.container.eventHandler.stopListening(selfNotFocuskEventSubscriptionId) - thisObject.container.eventHandler.stopListening(selfMouseClickEventSubscriptionId) - - thisObject.container.finalize() - thisObject.container = undefined - thisObject.payload = undefined - thisObject.isVisibleFunction = undefined - thisObject.fitFunction = undefined - } - - function initialize (payload) { - thisObject.payload = payload - - thisObject.allwaysVisible = false // Default value - let nodeDefinition = APP_SCHEMA_MAP.get(thisObject.payload.node.type) - if (nodeDefinition !== undefined) { - if (nodeDefinition.isTitleAllwaysVisible === true) { - thisObject.allwaysVisible = true - } + let thisObject = { + fitFunction: undefined, + isVisibleFunction: undefined, + allwaysVisible: undefined, + editMode: undefined, + container: undefined, + payload: undefined, + isDefault: undefined, + enterEditMode: enterEditMode, + exitEditMode: exitEditMode, + physics: physics, + draw: draw, + getContainer: getContainer, + finalize: finalize, + initialize: initialize } - selfFocusEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onFocus', onFocus) - selfNotFocuskEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onNotFocus', onNotFocus) - selfMouseClickEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) - } + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) + thisObject.container.isClickeable = true + thisObject.container.isDraggeable = false + thisObject.container.frame.radius = 0 - function getContainer (point) { - if (AT_FULL_SCREEN_MODE === true) { return } // Fullscreen mode does not allow INPUT elements + let selfFocusEventSubscriptionId + let selfNotFocuskEventSubscriptionId + let selfMouseClickEventSubscriptionId - let container + return thisObject - if (thisObject.editMode === true) { - if (point.x === VERY_LARGE_NUMBER) { - /* The the mouse leaves the canvas, and event of mouse over with a ridiculous coordinate is triggered so that - anyone can react. In our case, this object has an html input element that is not part of the canvas, so the event is - triggered. We compensate recognizing this coordinate and returning our container. */ - return thisObject.container - } + function finalize() { + thisObject.container.eventHandler.stopListening(selfFocusEventSubscriptionId) + thisObject.container.eventHandler.stopListening(selfNotFocuskEventSubscriptionId) + thisObject.container.eventHandler.stopListening(selfMouseClickEventSubscriptionId) + + thisObject.container.finalize() + thisObject.container = undefined + thisObject.payload = undefined + thisObject.isVisibleFunction = undefined + thisObject.fitFunction = undefined } - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - return thisObject.container - } else { - return undefined - } - } - function physics () { - inheritancePhysics() - defaultPhysics() - } + function initialize(payload) { + thisObject.payload = payload - function defaultPhysics () { - if (thisObject.payload.title !== 'New ' + thisObject.payload.node.type && thisObject.payload.title !== 'My ' + thisObject.payload.node.type) { - thisObject.isDefault = false - } else { - thisObject.isDefault = true - } - } - - function inheritancePhysics () { - if (thisObject.payload.title === undefined) { return } - - /* It is possible to override the default title by setting the APP SCHEMA property 'title' */ - let nodeDefinition = APP_SCHEMA_MAP.get(thisObject.payload.node.type) - if (nodeDefinition.title !== undefined) { - thisObject.payload.title = '' - thisObject.payload.node.name = '' - let separator = '' - for (let i = 0; i < nodeDefinition.title.length; i++) { - let titleReference = nodeDefinition.title[i] - switch (titleReference) { - case 'Use Reference Parent': { - let nodeToUse = thisObject.payload.node.payload.referenceParent - if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { - thisObject.payload.title = thisObject.payload.title + separator + nodeToUse.payload.title - thisObject.payload.node.name = thisObject.payload.node.name + separator + nodeToUse.payload.node.name + thisObject.allwaysVisible = false // Default value + let nodeDefinition = getNodeDefinition(thisObject.payload.node) + if (nodeDefinition !== undefined) { + if (nodeDefinition.isTitleAllwaysVisible === true) { + thisObject.allwaysVisible = true } - break - } - case 'Use Reference Grandparent': { - let nodeToUse = thisObject.payload.node.payload.referenceParent - if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { - nodeToUse = thisObject.payload.node.payload.referenceParent.payload.referenceParent - if (nodeToUse !== undefined) { - thisObject.payload.title = thisObject.payload.title + separator + nodeToUse.payload.title - thisObject.payload.node.name = thisObject.payload.node.name + separator + nodeToUse.payload.node.name - } + } + + selfFocusEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onFocus', onFocus) + selfNotFocuskEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onNotFocus', onNotFocus) + selfMouseClickEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) + } + + function getContainer(point) { + if (AT_FULL_SCREEN_MODE === true) { return } // Fullscreen mode does not allow INPUT elements + + let container + + if (thisObject.editMode === true) { + if (point.x === VERY_LARGE_NUMBER) { + /* The the mouse leaves the canvas, and event of mouse over with a ridiculous coordinate is triggered so that + anyone can react. In our case, this object has an html input element that is not part of the canvas, so the event is + triggered. We compensate recognizing this coordinate and returning our container. */ + return thisObject.container } - break - } - case 'Use Reference Parent Parent': { - let nodeToUse = thisObject.payload.node.payload.referenceParent - if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { - nodeToUse = thisObject.payload.node.payload.referenceParent.payload.parentNode - if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { - thisObject.payload.title = thisObject.payload.title + separator + nodeToUse.payload.title - thisObject.payload.node.name = thisObject.payload.node.name + separator + nodeToUse.payload.node.name - } - } - break - } - case 'Use Reference Parent Parent Parent': { - let nodeToUse = thisObject.payload.node.payload.referenceParent - if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { - nodeToUse = thisObject.payload.node.payload.referenceParent.payload.parentNode - if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { - nodeToUse = thisObject.payload.node.payload.referenceParent.payload.parentNode.payload.parentNode - if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { - thisObject.payload.title = thisObject.payload.title + separator + nodeToUse.payload.title - thisObject.payload.node.name = thisObject.payload.node.name + separator + nodeToUse.payload.node.name + } + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + return thisObject.container + } else { + return undefined + } + } + + function physics() { + inheritancePhysics() + defaultPhysics() + } + + function defaultPhysics() { + if (thisObject.payload.title !== 'New ' + thisObject.payload.node.type && thisObject.payload.title !== 'My ' + thisObject.payload.node.type) { + thisObject.isDefault = false + } else { + thisObject.isDefault = true + } + } + + function inheritancePhysics() { + if (thisObject.payload.title === undefined) { return } + + /* It is possible to override the default title by setting the APP SCHEMA property 'title' */ + let nodeDefinition = getNodeDefinition(thisObject.payload.node) + if (nodeDefinition.title !== undefined) { + thisObject.payload.title = '' + thisObject.payload.node.name = '' + let separator = '' + for (let i = 0; i < nodeDefinition.title.length; i++) { + let titleReference = nodeDefinition.title[i] + switch (titleReference) { + case 'Use Parent': { + let nodeToUse = thisObject.payload.parentNode + if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { + thisObject.payload.title = thisObject.payload.title + separator + nodeToUse.payload.title + thisObject.payload.node.name = thisObject.payload.node.name + separator + nodeToUse.payload.node.name + } + break + } + case 'Use Reference Parent': { + let nodeToUse = thisObject.payload.node.payload.referenceParent + if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { + thisObject.payload.title = thisObject.payload.title + separator + nodeToUse.payload.title + thisObject.payload.node.name = thisObject.payload.node.name + separator + nodeToUse.payload.node.name + } + break + } + case 'Use Reference Parent Type': { + let nodeToUse = thisObject.payload.node.payload.referenceParent + if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { + thisObject.payload.title = thisObject.payload.title + separator + nodeToUse.type + thisObject.payload.node.name = thisObject.payload.node.name + separator + nodeToUse.type + } + break + } + case 'Use Reference Grandparent': { + let nodeToUse = thisObject.payload.node.payload.referenceParent + if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { + nodeToUse = thisObject.payload.node.payload.referenceParent.payload.referenceParent + if (nodeToUse !== undefined) { + thisObject.payload.title = thisObject.payload.title + separator + nodeToUse.payload.title + thisObject.payload.node.name = thisObject.payload.node.name + separator + nodeToUse.payload.node.name + } + } + break + } + case 'Use Reference Parent Parent': { + let nodeToUse = thisObject.payload.node.payload.referenceParent + if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { + nodeToUse = thisObject.payload.node.payload.referenceParent.payload.parentNode + if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { + thisObject.payload.title = thisObject.payload.title + separator + nodeToUse.payload.title + thisObject.payload.node.name = thisObject.payload.node.name + separator + nodeToUse.payload.node.name + } + } + break + } + case 'Use Reference Parent Parent Parent': { + let nodeToUse = thisObject.payload.node.payload.referenceParent + if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { + nodeToUse = thisObject.payload.node.payload.referenceParent.payload.parentNode + if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { + nodeToUse = thisObject.payload.node.payload.referenceParent.payload.parentNode.payload.parentNode + if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { + thisObject.payload.title = thisObject.payload.title + separator + nodeToUse.payload.title + thisObject.payload.node.name = thisObject.payload.node.name + separator + nodeToUse.payload.node.name + } + } + } + break + } + case 'Use Reference Parent Parent Parent': { + let nodeToUse = thisObject.payload.node.payload.referenceParent + if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { + nodeToUse = thisObject.payload.node.payload.referenceParent.payload.parentNode + if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { + nodeToUse = thisObject.payload.node.payload.referenceParent.payload.parentNode.payload.parentNode + if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { + thisObject.payload.title = thisObject.payload.title + separator + nodeToUse.payload.title + thisObject.payload.node.name = thisObject.payload.node.name + separator + nodeToUse.payload.node.name + } + } + } + break + } + default: { + if (titleReference.indexOf('Use Child @') === 0) { + let propertyName = titleReference.substring(titleReference.indexOf('@') + 1, titleReference.length) + let childNode = thisObject.payload.node[propertyName] + if (childNode === undefined) { break } + thisObject.payload.title = thisObject.payload.title + separator + childNode.name + thisObject.payload.node.name = thisObject.payload.node.name + separator + childNode.name + } + } } - } + separator = ' ' } - break - } - case 'Use Reference Parent Parent Parent': { - let nodeToUse = thisObject.payload.node.payload.referenceParent - if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { - nodeToUse = thisObject.payload.node.payload.referenceParent.payload.parentNode - if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { - nodeToUse = thisObject.payload.node.payload.referenceParent.payload.parentNode.payload.parentNode - if (nodeToUse !== undefined && nodeToUse.payload !== undefined) { - thisObject.payload.title = thisObject.payload.title + separator + nodeToUse.payload.title - thisObject.payload.node.name = thisObject.payload.node.name + separator + nodeToUse.payload.node.name + } + + /* The name becomes the title. */ + if (thisObject.payload.node.name !== undefined) { + thisObject.payload.title = thisObject.payload.node.name + } + + let title = trimTitle(thisObject.payload.title) + + /* Here we set the dimensions and position of this object */ + const FRAME_HEIGHT = 25 + const Y_OFFSET = -20 + const FRAME_WIDTH = (title.length + 2) / 2 * thisObject.payload.floatingObject.currentFontSize * FONT_ASPECT_RATIO * 1.2 * 2 + thisObject.container.frame.position.x = 0 - FRAME_WIDTH / 2 + thisObject.container.frame.position.y = 0 - thisObject.container.frame.radius * 1 / 2 - thisObject.payload.floatingObject.currentFontSize * FONT_ASPECT_RATIO + Y_OFFSET - FRAME_HEIGHT + + thisObject.container.frame.width = FRAME_WIDTH + thisObject.container.frame.height = FRAME_HEIGHT + + if (thisObject.editMode === true) { + let inputPosition = { + x: 0, + y: 0 + CURRENT_TOP_MARGIN + Y_OFFSET + } + + inputPosition = thisObject.container.frame.frameThisPoint(inputPosition) + + if (inputPosition.y < CURRENT_TOP_MARGIN) { exitEditMode() } + + let inputDiv = document.getElementById('inputDiv') + inputDiv.style = 'position:absolute; top:' + inputPosition.y + 'px; left:' + inputPosition.x + 'px; z-index:1; ' + } + } + + function onFocus() { + thisObject.isOnFocus = true + } + + function onNotFocus() { + thisObject.isOnFocus = false + exitEditMode() + } + + function onMouseClick(event) { + let nodeDefinition = getNodeDefinition(thisObject.payload.node) + if (nodeDefinition.title !== undefined) { return } + + let checkPoint = { + x: 0, + y: 0 + } + checkPoint = thisObject.container.frame.frameThisPoint(checkPoint) + + if (thisObject.isVisibleFunction(checkPoint) === true) { + enterEditMode() + } + } + + function exitEditMode() { + if (thisObject.editMode === true) { + thisObject.editMode = false + let input = document.getElementById('input') + input.style.display = 'none' + if (input.value.length > 2) { + thisObject.payload.title = input.value + thisObject.payload.node.name = input.value + } + } + let inputDiv = document.getElementById('inputDiv') + inputDiv.style = 'position:absolute; top:' + '-100' + 'px; left:' + '-100' + 'px; z-index:1; ' + } + + function enterEditMode() { + const WIDTH = thisObject.container.frame.width + const HEIGHT = thisObject.container.frame.height + let fontSize = thisObject.payload.floatingObject.currentFontSize + + thisObject.editMode = true + let input = document.getElementById('input') + input.value = thisObject.payload.title + + let backgroundColor = '0, 0, 0' + if (thisObject.payload.uiObject.codeEditor !== undefined) { + if (thisObject.payload.uiObject.codeEditor.visible === true) { + backgroundColor = '204, 88, 53' + } + } + + input.style = 'resize: none; border: none; outline: none; box-shadow: none; overflow:hidden; font-family: Saira Condensed; font-size: ' + fontSize + 'px; background-color: rgb(' + backgroundColor + ');color:rgb(255, 255, 255); width: ' + WIDTH + 'px; height: ' + HEIGHT + 'px' + input.style.display = 'block' + input.focus() + } + + function draw() { + if (thisObject.isOnFocus === true || thisObject.allwaysVisible === true || thisObject.isDefault === false) { + if (thisObject.payload.uiObject.codeEditor !== undefined) { + if (thisObject.payload.uiObject.codeEditor.visible !== true) { + drawTitleBackground() } - } + } else { + drawTitleBackground() } - break - } - default: { - if (titleReference.indexOf('Use Child @') === 0) { - let propertyName = titleReference.substring(titleReference.indexOf('@') + 1, titleReference.length) - let childNode = thisObject.payload.node[propertyName] - thisObject.payload.title = thisObject.payload.title + separator + childNode.name - thisObject.payload.node.name = thisObject.payload.node.name + separator + childNode.name + + drawText() + } + } + + function drawTitleBackground() { + if (thisObject.editMode !== true) { + let params = { + cornerRadius: 3, + lineWidth: 0.1, + container: thisObject.container, + borderColor: UI_COLOR.BLACK, + backgroundColor: UI_COLOR.BLACK, + castShadow: false, + opacity: 0.25 } - } + + roundedCornersBackground(params) } - separator = ' ' - } } - /* The name becomes the title. */ - if (thisObject.payload.node.name !== undefined) { - thisObject.payload.title = thisObject.payload.node.name - } + function drawText() { + if (thisObject.editMode !== true) { + let radius = thisObject.container.frame.radius + let labelPoint + let fontSize = thisObject.payload.floatingObject.currentFontSize + let label - let title = trimTitle(thisObject.payload.title) + if (radius > 6 && (thisObject.isOnFocus === true || thisObject.allwaysVisible === true || thisObject.isDefault === false)) { + browserCanvasContext.strokeStyle = thisObject.payload.floatingObject.labelStrokeStyle - /* Here we set the dimensions and position of this object */ - const FRAME_HEIGHT = 25 - const Y_OFFSET = -20 - const FRAME_WIDTH = (title.length + 2) / 2 * thisObject.payload.floatingObject.currentFontSize * FONT_ASPECT_RATIO * 1.2 * 2 - thisObject.container.frame.position.x = 0 - FRAME_WIDTH / 2 - thisObject.container.frame.position.y = 0 - thisObject.container.frame.radius * 1 / 2 - thisObject.payload.floatingObject.currentFontSize * FONT_ASPECT_RATIO + Y_OFFSET - FRAME_HEIGHT + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - thisObject.container.frame.width = FRAME_WIDTH - thisObject.container.frame.height = FRAME_HEIGHT + label = thisObject.payload.title - if (thisObject.editMode === true) { - let inputPosition = { - x: 0, - y: 0 + CURRENT_TOP_MARGIN + Y_OFFSET - } + if (label !== undefined) { + label = trimTitle(label) - inputPosition = thisObject.container.frame.frameThisPoint(inputPosition) + labelPoint = { + x: 5, + y: thisObject.container.frame.height * 0.8 + } - if (inputPosition.y < CURRENT_TOP_MARGIN) { exitEditMode() } + labelPoint = thisObject.container.frame.frameThisPoint(labelPoint) - let inputDiv = document.getElementById('inputDiv') - inputDiv.style = 'position:absolute; top:' + inputPosition.y + 'px; left:' + inputPosition.x + 'px; z-index:1; ' - } - } + if (canvas.floatingSpace.inMapMode === true) { + labelPoint = canvas.floatingSpace.transformPointToMap(labelPoint) + labelPoint.x = labelPoint.x - label.length / 2 * fontSize * FONT_ASPECT_RATIO + labelPoint.y = labelPoint.y - 35 - function onFocus () { - thisObject.isOnFocus = true - } + let nodeDefinition = getNodeDefinition(thisObject.payload.node) + if (nodeDefinition !== undefined) { + if (nodeDefinition.isHierarchyHead !== true) { + return + } + } + } - function onNotFocus () { - thisObject.isOnFocus = false - exitEditMode() - } - - function onMouseClick (event) { - let nodeDefinition = APP_SCHEMA_MAP.get(thisObject.payload.node.type) - if (nodeDefinition.title !== undefined) { return } - - let checkPoint = { - x: 0, - y: 0 - } - checkPoint = thisObject.container.frame.frameThisPoint(checkPoint) - - if (thisObject.isVisibleFunction(checkPoint) === true) { - enterEditMode() - } - } - - function exitEditMode () { - if (thisObject.editMode === true) { - thisObject.editMode = false - let input = document.getElementById('input') - input.style.display = 'none' - if (input.value.length > 2) { - thisObject.payload.title = input.value - thisObject.payload.node.name = input.value - } - } - let inputDiv = document.getElementById('inputDiv') - inputDiv.style = 'position:absolute; top:' + '-100' + 'px; left:' + '-100' + 'px; z-index:1; ' - } - - function enterEditMode () { - const WIDTH = thisObject.container.frame.width - const HEIGHT = thisObject.container.frame.height - let fontSize = thisObject.payload.floatingObject.currentFontSize - - thisObject.editMode = true - let input = document.getElementById('input') - input.value = thisObject.payload.title - - let backgroundColor = '0, 0, 0' - if (thisObject.payload.uiObject.codeEditor !== undefined) { - if (thisObject.payload.uiObject.codeEditor.visible === true) { - backgroundColor = '204, 88, 53' - } - } - - input.style = 'resize: none; border: none; outline: none; box-shadow: none; overflow:hidden; font-family: Saira Condensed; font-size: ' + fontSize + 'px; background-color: rgb(' + backgroundColor + ');color:rgb(255, 255, 255); width: ' + WIDTH + 'px; height: ' + HEIGHT + 'px' - input.style.display = 'block' - input.focus() - } - - function draw () { - if (thisObject.isOnFocus === true || thisObject.allwaysVisible === true || thisObject.isDefault === false) { - if (thisObject.payload.uiObject.codeEditor !== undefined) { - if (thisObject.payload.uiObject.codeEditor.visible !== true) { - drawTitleBackground() - } - } else { - drawTitleBackground() - } - - drawText() - } - } - - function drawTitleBackground () { - if (thisObject.editMode !== true) { - let params = { - cornerRadius: 3, - lineWidth: 0.1, - container: thisObject.container, - borderColor: UI_COLOR.BLACK, - backgroundColor: UI_COLOR.BLACK, - castShadow: false, - opacity: 0.25 - } - - roundedCornersBackground(params) - } - } - - function drawText () { - if (thisObject.editMode !== true) { - let radius = thisObject.container.frame.radius - let labelPoint - let fontSize = thisObject.payload.floatingObject.currentFontSize - let label - - if (radius > 6 && (thisObject.isOnFocus === true || thisObject.allwaysVisible === true || thisObject.isDefault === false)) { - browserCanvasContext.strokeStyle = thisObject.payload.floatingObject.labelStrokeStyle - - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - - label = thisObject.payload.title - - if (label !== undefined) { - label = trimTitle(label) - - labelPoint = { - x: 5, - y: thisObject.container.frame.height * 0.8 - } - - labelPoint = thisObject.container.frame.frameThisPoint(labelPoint) - - if (canvas.floatingSpace.inMapMode === true) { - labelPoint = canvas.floatingSpace.transformPointToMap(labelPoint) - labelPoint.x = labelPoint.x - label.length / 2 * fontSize * FONT_ASPECT_RATIO - labelPoint.y = labelPoint.y - 35 - - let nodeDefinition = APP_SCHEMA_MAP.get(thisObject.payload.node.type) - if (nodeDefinition !== undefined) { - if (nodeDefinition.isHierarchyHead !== true) { - return - } + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + browserCanvasContext.fillStyle = thisObject.payload.floatingObject.labelStrokeStyle + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) + } } - } - - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - browserCanvasContext.fillStyle = thisObject.payload.floatingObject.labelStrokeStyle - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) } - } } - } - function trimTitle (title) { - if (title === undefined) { return } - const MAX_LABEL_LENGTH = 50 - if (title.length > MAX_LABEL_LENGTH) { - title = title.substring(0, MAX_LABEL_LENGTH) + '...' + function trimTitle(title) { + if (title === undefined) { return } + const MAX_LABEL_LENGTH = 50 + if (title.length > MAX_LABEL_LENGTH) { + title = title.substring(0, MAX_LABEL_LENGTH) + '...' + } + return title } - return title - } } diff --git a/CanvasApp/Frame.js b/CanvasApp/Frame.js index 7e27a2242..2f2405134 100644 --- a/CanvasApp/Frame.js +++ b/CanvasApp/Frame.js @@ -1,537 +1,537 @@ -function newFrame () { - const PANEL_CORNERS_RADIUS = 5 - const TITLE_BAR_HEIGHT = 15 // this must be grater than radius +function newFrame() { + const PANEL_CORNERS_RADIUS = 5 + const TITLE_BAR_HEIGHT = 15 // this must be grater than radius - let thisObject = { - type: 'Rectangle', - containerName: '', // This is for debugging purposes only. - parentFrame: undefined, // Here we store the parent cointainer zoom object. - radius: 0, - offset: undefined, - position: undefined, - container: undefined, - width: browserCanvas.width, - height: browserCanvas.height, - getBodyHeight: getBodyHeight, - draw: draw, - fitIntoFrame: fitIntoFrame, - frameThisPoint: frameThisPoint, // This function changes the actual frame coordinate system to the screen coordinate system. - unframeThisPoint: unframeThisPoint, - isThisPointHere: isThisPointHere, // This function return true is the point received as parameter lives within this frame. - isThisScreenPointHere: isThisScreenPointHere, - isInViewPort: isInViewPort, - isCenterInViewPort: isCenterInViewPort, - initialize: initialize, - finalize: finalize - } - - return thisObject - - function finalize () { - thisObject.parentFrame = undefined - thisObject.position = undefined - thisObject.offset = undefined - } - - function initialize (pType) { - if (pType !== undefined) { thisObject.type = pType } - - thisObject.position = { - x: 0, - y: 0 + let thisObject = { + type: 'Rectangle', + containerName: '', // This is for debugging purposes only. + parentFrame: undefined, // Here we store the parent cointainer zoom object. + radius: 0, + offset: undefined, + position: undefined, + container: undefined, + width: browserCanvas.width, + height: browserCanvas.height, + getBodyHeight: getBodyHeight, + draw: draw, + fitIntoFrame: fitIntoFrame, + frameThisPoint: frameThisPoint, // This function changes the actual frame coordinate system to the screen coordinate system. + unframeThisPoint: unframeThisPoint, + isThisPointHere: isThisPointHere, // This function return true is the point received as parameter lives within this frame. + isThisScreenPointHere: isThisScreenPointHere, + isInViewPort: isInViewPort, + isCenterInViewPort: isCenterInViewPort, + initialize: initialize, + finalize: finalize } - thisObject.offset = { - x: 0, - y: 0 - } - } + return thisObject - function getBodyHeight () { - return thisObject.height - TITLE_BAR_HEIGHT - } - - function isInViewPort () { - /* This function is usefull to know if the object who has this frame is currently appearing at least in part at the canvas.chartingSpace.viewport */ - - point1 = { - x: 0, - y: 0 + function finalize() { + thisObject.parentFrame = undefined + thisObject.position = undefined + thisObject.offset = undefined } - point3 = { - x: thisObject.width, - y: thisObject.height + function initialize(pType) { + if (pType !== undefined) { thisObject.type = pType } + + thisObject.position = { + x: 0, + y: 0 + } + + thisObject.offset = { + x: 0, + y: 0 + } } - /* Now the transformations. */ - - point1 = transformThisPoint(point1, thisObject.container) - point3 = transformThisPoint(point3, thisObject.container) - - if (point1.x < canvas.chartingSpace.viewport.visibleArea.topRight.x && point1.y < canvas.chartingSpace.viewport.visibleArea.bottomRight.y && point3.x > canvas.chartingSpace.viewport.visibleArea.bottomLeft.x && point3.y > canvas.chartingSpace.viewport.visibleArea.topLeft.y) { - return true - } else { - return false - } - } - - function isCenterInViewPort () { - /* This function is usefull to know if the object who has this frame is currently appearing at least in part at the canvas.chartingSpace.viewport */ - - point1 = { - x: thisObject.width * 40 / 100, - y: thisObject.height * 40 / 100 + function getBodyHeight() { + return thisObject.height - TITLE_BAR_HEIGHT } - point3 = { - x: thisObject.width * 40 / 100, - y: thisObject.height * 40 / 100 - } + function isInViewPort() { + /* This function is usefull to know if the object who has this frame is currently appearing at least in part at the canvas.chartingSpace.viewport */ + + point1 = { + x: 0, + y: 0 + } + + point3 = { + x: thisObject.width, + y: thisObject.height + } /* Now the transformations. */ - point1 = transformThisPoint(point1, thisObject.container) - point3 = transformThisPoint(point3, thisObject.container) + point1 = transformThisPoint(point1, thisObject.container) + point3 = transformThisPoint(point3, thisObject.container) - if (point1.x < canvas.chartingSpace.viewport.visibleArea.topRight.x && point1.y < canvas.chartingSpace.viewport.visibleArea.bottomRight.y && point3.x > canvas.chartingSpace.viewport.visibleArea.bottomLeft.x && point3.y > canvas.chartingSpace.viewport.visibleArea.topLeft.y) { - return true - } else { - return false - } - } - - function frameThisPoint (point) { - /* We need not to modify the point received, so me make a copy of it. */ - - let checkPoint = { - x: point.x, - y: point.y + if (point1.x < canvas.chartingSpace.viewport.visibleArea.topRight.x && point1.y < canvas.chartingSpace.viewport.visibleArea.bottomRight.y && point3.x > canvas.chartingSpace.viewport.visibleArea.bottomLeft.x && point3.y > canvas.chartingSpace.viewport.visibleArea.topLeft.y) { + return true + } else { + return false + } } - let parentPoint = { - x: 0, - y: 0 + function isCenterInViewPort() { + /* This function is usefull to know if the object who has this frame is currently appearing at least in part at the canvas.chartingSpace.viewport */ + + point1 = { + x: thisObject.width * 40 / 100, + y: thisObject.height * 40 / 100 + } + + point3 = { + x: thisObject.width * 40 / 100, + y: thisObject.height * 40 / 100 + } + + /* Now the transformations. */ + + point1 = transformThisPoint(point1, thisObject.container) + point3 = transformThisPoint(point3, thisObject.container) + + if (point1.x < canvas.chartingSpace.viewport.visibleArea.topRight.x && point1.y < canvas.chartingSpace.viewport.visibleArea.bottomRight.y && point3.x > canvas.chartingSpace.viewport.visibleArea.bottomLeft.x && point3.y > canvas.chartingSpace.viewport.visibleArea.topLeft.y) { + return true + } else { + return false + } } - let returnPoint = { - x: 0, - y: 0 + function frameThisPoint(point) { + /* We need not to modify the point received, so me make a copy of it. */ + + let checkPoint = { + x: point.x, + y: point.y + } + + let parentPoint = { + x: 0, + y: 0 + } + + let returnPoint = { + x: 0, + y: 0 + } + + if (thisObject.parentFrame !== undefined) { + parentPoint = thisObject.parentFrame.frameThisPoint(checkPoint) + + returnPoint.x = parentPoint.x + thisObject.position.x + thisObject.offset.x + returnPoint.y = parentPoint.y + thisObject.position.y + thisObject.offset.y + } else { + returnPoint.x = checkPoint.x + thisObject.position.x + thisObject.offset.x + returnPoint.y = checkPoint.y + thisObject.position.y + thisObject.offset.y + } + + return returnPoint } - if (thisObject.parentFrame !== undefined) { - parentPoint = thisObject.parentFrame.frameThisPoint(checkPoint) + function unframeThisPoint(point) { + /* We need not to modify the point received, so me make a copy of it. */ - returnPoint.x = parentPoint.x + thisObject.position.x + thisObject.offset.x - returnPoint.y = parentPoint.y + thisObject.position.y + thisObject.offset.y - } else { - returnPoint.x = checkPoint.x + thisObject.position.x + thisObject.offset.x - returnPoint.y = checkPoint.y + thisObject.position.y + thisObject.offset.y + let checkPoint = { + x: point.x, + y: point.y + } + + let parentPoint = { + x: 0, + y: 0 + } + + let returnPoint = { + x: 0, + y: 0 + } + + if (thisObject.parentFrame !== undefined) { + parentPoint = thisObject.parentFrame.unframeThisPoint(checkPoint) + + returnPoint.x = parentPoint.x - thisObject.position.x + returnPoint.y = parentPoint.y - thisObject.position.y + } else { + returnPoint.x = checkPoint.x - thisObject.position.x + returnPoint.y = checkPoint.y - thisObject.position.y + } + + return returnPoint } - return returnPoint - } - - function unframeThisPoint (point) { - /* We need not to modify the point received, so me make a copy of it. */ - - let checkPoint = { - x: point.x, - y: point.y - } - - let parentPoint = { - x: 0, - y: 0 - } - - let returnPoint = { - x: 0, - y: 0 - } - - if (thisObject.parentFrame !== undefined) { - parentPoint = thisObject.parentFrame.unframeThisPoint(checkPoint) - - returnPoint.x = parentPoint.x - thisObject.position.x - returnPoint.y = parentPoint.y - thisObject.position.y - } else { - returnPoint.x = checkPoint.x - thisObject.position.x - returnPoint.y = checkPoint.y - thisObject.position.y - } - - return returnPoint - } - - function fitIntoFrame (point) { + function fitIntoFrame(point) { /* Here we check the boundaries of the resulting points, so they dont go out of the visible area. */ - if (point.x > thisObject.width) { - point.x = thisObject.width + if (point.x > thisObject.width) { + point.x = thisObject.width + } + + if (point.x < 0) { + point.x = 0 + } + + if (point.y > thisObject.height) { + point.y = thisObject.height + } + + if (point.y < 0) { + point.y = 0 + } + + return point } - if (point.x < 0) { - point.x = 0 + function isThisPointHere(point, outsideViewPort, dontTransform, padding) { + // The second parameter is usefull when you want to check a point that you already know is outside the viewport. + // The padding is a distance to the borders of the container. Can be either negative (outside, to increase the cointainer size) or positive (inside to decrease the cointainer size) + + if (padding === undefined) { padding = 0 } + + /* We need not to modify the point received, so me make a copy of it. */ + let checkPoint = { + x: point.x, + y: point.y + } + + /* The point received is on the screen coordinates system, which already has zoom and displacement applied. We need to remove the zoom and displacement + in order to have the point on the containers coordinate system and be able to compare it with its dimmensions. */ + if (dontTransform === false || dontTransform === undefined) { + if (outsideViewPort === true) { + checkPoint = thisObject.container.frame.unframeThisPoint(checkPoint) + } else { + checkPoint = unTransformThisPoint(checkPoint, thisObject.container) + } + } + + /* Now we check if the resulting point is whin the current Frame. */ + if (isNaN(checkPoint.x) || isNaN(checkPoint.y)) { return false } + if (thisObject.type === 'Circle') { + let distance = Math.sqrt(Math.pow(thisObject.position.x - checkPoint.x, 2) + Math.pow(thisObject.position.y - checkPoint.y, 2)) + + if (distance < thisObject.radius) { + return true + } else { + return false + } + } + + if (thisObject.type === 'Rectangle') { + if (checkPoint.x < 0 + padding || checkPoint.y < 0 + padding || checkPoint.x > thisObject.width - padding || checkPoint.y > thisObject.height - padding) { + return false + } else { + return true + } + } } - if (point.y > thisObject.height) { - point.y = thisObject.height + function isThisScreenPointHere(point) { + let checkPoint = { + x: point.x, + y: point.y + } + + let thisPoint = { + x: thisObject.position.x, + y: thisObject.position.y + } + + if (thisObject.parentFrame !== undefined) { + thisPoint = thisObject.parentFrame.frameThisPoint(thisPoint) + } + + /* Now we check if the resulting point is whin the current Frame. */ + + if (thisObject.type === 'Circle') { + let distance = Math.sqrt(Math.pow(thisPoint.x - checkPoint.x, 2) + Math.pow(thisPoint.y - checkPoint.y, 2)) + + if (distance < thisObject.radius) { + return true + } else { + return false + } + } + + if (thisObject.type === 'Rectangle') { + if (checkPoint.x < 0 || checkPoint.y < 0 || checkPoint.x > thisObject.width || checkPoint.y > thisObject.height) { + return false + } else { + return true + } + } } - if (point.y < 0) { - point.y = 0 + function draw(drawGrid, drawBorders, drawBackground, fitFunction, style) { + if (drawBorders === true) { + borders(fitFunction, style) + } + + if (drawGrid === true) { + grid(fitFunction) + } + + if (drawBackground === true) { + background(fitFunction) + } } - return point - } + function background(fitFunction) { + let params = { + cornerRadius: 5, + lineWidth: 0.1, + opacity: 0.75, + container: thisObject.container, + borderColor: UI_COLOR.DARK, + backgroundColor: UI_COLOR.WHITE, + fitFunction: fitFunction + } - function isThisPointHere (point, outsideViewPort, dontTransform, padding) { - // The second parameter is usefull when you want to check a point that you already know is outside the viewport. - // The padding is a distance to the borders of the container. Can be either negative (outside, to increase the cointainer size) or positive (inside to decrease the cointainer size) + roundedCornersBackground(params) - if (padding === undefined) { padding = 0 } - - /* We need not to modify the point received, so me make a copy of it. */ - let checkPoint = { - x: point.x, - y: point.y - } - - /* The point received is on the screen coordinates system, which already has zoom and displacement applied. We need to remove the zoom and displacement - in order to have the point on the containers coordinate system and be able to compare it with its dimmensions. */ - if (dontTransform === false || dontTransform === undefined) { - if (outsideViewPort === true) { - checkPoint = thisObject.container.frame.unframeThisPoint(checkPoint) - } else { - checkPoint = unTransformThisPoint(checkPoint, thisObject.container) - } - } - - /* Now we check if the resulting point is whin the current Frame. */ - if (isNaN(checkPoint.x) || isNaN(checkPoint.y)) { return false } - if (thisObject.type === 'Circle') { - let distance = Math.sqrt(Math.pow(thisObject.position.x - checkPoint.x, 2) + Math.pow(thisObject.position.y - checkPoint.y, 2)) - - if (distance < thisObject.radius) { - return true - } else { - return false - } - } - - if (thisObject.type === 'Rectangle') { - if (checkPoint.x < 0 + padding || checkPoint.y < 0 + padding || checkPoint.x > thisObject.width - padding || checkPoint.y > thisObject.height - padding) { - return false - } else { - return true - } - } - } - - function isThisScreenPointHere (point) { - let checkPoint = { - x: point.x, - y: point.y - } - - let thisPoint = { - x: thisObject.position.x, - y: thisObject.position.y - } - - if (thisObject.parentFrame !== undefined) { - thisPoint = thisObject.parentFrame.frameThisPoint(thisPoint) - } - - /* Now we check if the resulting point is whin the current Frame. */ - - if (thisObject.type === 'Circle') { - let distance = Math.sqrt(Math.pow(thisPoint.x - checkPoint.x, 2) + Math.pow(thisPoint.y - checkPoint.y, 2)) - - if (distance < thisObject.radius) { - return true - } else { - return false - } - } - - if (thisObject.type === 'Rectangle') { - if (checkPoint.x < 0 || checkPoint.y < 0 || checkPoint.x > thisObject.width || checkPoint.y > thisObject.height) { - return false - } else { - return true - } - } - } - - function draw (drawGrid, drawBorders, drawBackground, fitFunction, style) { - if (drawBorders === true) { - borders(fitFunction, style) - } - - if (drawGrid === true) { - grid(fitFunction) - } - - if (drawBackground === true) { - background(fitFunction) - } - } - - function background (fitFunction) { - let params = { - cornerRadius: 5, - lineWidth: 0.1, - opacity: 0.75, - container: thisObject.container, - borderColor: UI_COLOR.DARK, - backgroundColor: UI_COLOR.WHITE, - fitFunction: fitFunction - } - - roundedCornersBackground(params) - - titleBarPoint1 = { - x: 0, - y: TITLE_BAR_HEIGHT - } - - titleBarPoint2 = { - x: thisObject.width, - y: TITLE_BAR_HEIGHT - } - - /* Now the transformations. */ - - titleBarPoint1 = frameThisPoint(titleBarPoint1) - titleBarPoint2 = frameThisPoint(titleBarPoint2) - - if (fitFunction !== undefined) { - titleBarPoint1 = fitFunction(titleBarPoint1) - titleBarPoint2 = fitFunction(titleBarPoint2) - } - - /* We paint the title bar now */ - - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.DARK + ', 1)' - browserCanvasContext.beginPath() - - browserCanvasContext.moveTo(titleBarPoint1.x, titleBarPoint1.y) - browserCanvasContext.lineTo(borderPoint1.x - PANEL_CORNERS_RADIUS, borderPoint1.y) - browserCanvasContext.arc(borderPoint1.x, borderPoint1.y, PANEL_CORNERS_RADIUS, 1.0 * Math.PI, 1.5 * Math.PI) - browserCanvasContext.lineTo(borderPoint2.x, borderPoint2.y - PANEL_CORNERS_RADIUS) - browserCanvasContext.arc(borderPoint2.x, borderPoint2.y, PANEL_CORNERS_RADIUS, 1.5 * Math.PI, 2.0 * Math.PI) - browserCanvasContext.lineTo(titleBarPoint2.x, titleBarPoint2.y) - - browserCanvasContext.closePath() - browserCanvasContext.fill() - - browserCanvasContext.lineWidth = 0.1 - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.MANGANESE_PURPLE + ', 0.75)' - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.stroke() - - /* print the title */ - - let labelPoint - let fontSize = 10 - - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - - let label = thisObject.containerName - - let xOffset = label.length / 2 * fontSize * FONT_ASPECT_RATIO - let yOffset = (TITLE_BAR_HEIGHT - fontSize) / 2 + 2 - - labelPoint = { - x: thisObject.width / 2 - xOffset, - y: TITLE_BAR_HEIGHT - yOffset - } - - labelPoint = thisObject.frameThisPoint(labelPoint) - - if (fitFunction !== undefined) { - labelPoint = fitFunction(labelPoint) - } - - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) - } - - function borders (fitFunction, style) { - /* Lest get the important points of the drawing so as to apply the needed transformations. */ - - let point1 - let point2 - let point3 - let point4 - - point1 = { - x: 0, - y: 0 - } - - point2 = { - x: thisObject.width, - y: 0 - } - - point3 = { - x: thisObject.width, - y: thisObject.height - } - - point4 = { - x: 0, - y: thisObject.height - } - - /* Now the transformations. */ - point1 = transformThisPoint(point1, thisObject.container) - point2 = transformThisPoint(point2, thisObject.container) - point3 = transformThisPoint(point3, thisObject.container) - point4 = transformThisPoint(point4, thisObject.container) - - if (fitFunction !== undefined) { - point1 = fitFunction(point1) - point2 = fitFunction(point2) - point3 = fitFunction(point3) - point4 = fitFunction(point4) - } - - /* Lets start the drawing. */ - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(point1.x, point1.y) - browserCanvasContext.lineTo(point2.x, point2.y) - browserCanvasContext.lineTo(point3.x, point3.y) - browserCanvasContext.lineTo(point4.x, point4.y) - browserCanvasContext.lineTo(point1.x, point1.y) - browserCanvasContext.closePath() - - browserCanvasContext.strokeStyle = 'rgba(' + style.color + ', ' + style.opacity + ')' - browserCanvasContext.lineWidth = style.lineWidth - browserCanvasContext.setLineDash(style.lineDash) - browserCanvasContext.stroke() - - browserCanvasContext.closePath() - } - - function grid (fitFunction, smallLines) { - if (smallLines === true) { - /* Small Lines */ - - let step = thisObject.width / 100 - - browserCanvasContext.beginPath() - - for (let i = 0; i < thisObject.width; i = i + step) { - for (let j = 0; j < thisObject.height; j = j + step) { - let point1 = { + titleBarPoint1 = { x: 0, - y: j - } + y: TITLE_BAR_HEIGHT + } - let point2 = { + titleBarPoint2 = { x: thisObject.width, - y: j - } - - point1 = transformThisPoint(point1, thisObject.container) - point2 = transformThisPoint(point2, thisObject.container) - - if (fitFunction !== undefined) { - point1 = fitFunction(point1) - point2 = fitFunction(point2) - } - - browserCanvasContext.moveTo(point1.x, point1.y) - browserCanvasContext.lineTo(point2.x, point2.y) + y: TITLE_BAR_HEIGHT } - let point3 = { - x: thisObject.width, - y: thisObject.height + /* Now the transformations. */ + + titleBarPoint1 = frameThisPoint(titleBarPoint1) + titleBarPoint2 = frameThisPoint(titleBarPoint2) + + if (fitFunction !== undefined) { + titleBarPoint1 = fitFunction(titleBarPoint1) + titleBarPoint2 = fitFunction(titleBarPoint2) } - let point4 = { - x: 0, - y: thisObject.height + /* We paint the title bar now */ + + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.DARK + ', 1)' + browserCanvasContext.beginPath() + + browserCanvasContext.moveTo(titleBarPoint1.x, titleBarPoint1.y) + browserCanvasContext.lineTo(borderPoint1.x - PANEL_CORNERS_RADIUS, borderPoint1.y) + browserCanvasContext.arc(borderPoint1.x, borderPoint1.y, PANEL_CORNERS_RADIUS, 1.0 * Math.PI, 1.5 * Math.PI) + browserCanvasContext.lineTo(borderPoint2.x, borderPoint2.y - PANEL_CORNERS_RADIUS) + browserCanvasContext.arc(borderPoint2.x, borderPoint2.y, PANEL_CORNERS_RADIUS, 1.5 * Math.PI, 2.0 * Math.PI) + browserCanvasContext.lineTo(titleBarPoint2.x, titleBarPoint2.y) + + browserCanvasContext.closePath() + browserCanvasContext.fill() + + browserCanvasContext.lineWidth = 0.1 + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.MANGANESE_PURPLE + ', 0.75)' + browserCanvasContext.setLineDash([0, 0]) + browserCanvasContext.stroke() + + /* print the title */ + + let labelPoint + let fontSize = 10 + + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + + let label = thisObject.containerName + + let xOffset = label.length / 2 * fontSize * FONT_ASPECT_RATIO + let yOffset = (TITLE_BAR_HEIGHT - fontSize) / 2 + 2 + + labelPoint = { + x: thisObject.width / 2 - xOffset, + y: TITLE_BAR_HEIGHT - yOffset } + labelPoint = thisObject.frameThisPoint(labelPoint) + + if (fitFunction !== undefined) { + labelPoint = fitFunction(labelPoint) + } + + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', 1)' + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) + } + + function borders(fitFunction, style) { + /* Lest get the important points of the drawing so as to apply the needed transformations. */ + + let point1 + let point2 + let point3 + let point4 + + point1 = { + x: 0, + y: 0 + } + + point2 = { + x: thisObject.width, + y: 0 + } + + point3 = { + x: thisObject.width, + y: thisObject.height + } + + point4 = { + x: 0, + y: thisObject.height + } + + /* Now the transformations. */ + point1 = transformThisPoint(point1, thisObject.container) + point2 = transformThisPoint(point2, thisObject.container) point3 = transformThisPoint(point3, thisObject.container) point4 = transformThisPoint(point4, thisObject.container) if (fitFunction !== undefined) { - point3 = fitFunction(point3) - point4 = fitFunction(point4) - } - - browserCanvasContext.moveTo(point3.x, point3.y) - browserCanvasContext.lineTo(point4.x, point4.y) - } - browserCanvasContext.closePath() - browserCanvasContext.strokeStyle = 'rgba(150, 150, 150, 0.1)' - browserCanvasContext.lineWidth = 1 - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.stroke() - } - - /* Main Lines */ - - let step = thisObject.width / 20 - - browserCanvasContext.beginPath() - - for (let i = 0; i < thisObject.width; i = i + step) { - for (let j = 0; j < thisObject.height; j = j + step) { - let point1 = { - x: 0, - y: j - } - - let point2 = { - x: thisObject.width, - y: j - } - - point1 = transformThisPoint(point1, thisObject.container) - point2 = transformThisPoint(point2, thisObject.container) - - if (fitFunction !== undefined) { - point1 = fitFunction(point1) - point2 = fitFunction(point2) + point1 = fitFunction(point1) + point2 = fitFunction(point2) + point3 = fitFunction(point3) + point4 = fitFunction(point4) } + /* Lets start the drawing. */ + browserCanvasContext.beginPath() browserCanvasContext.moveTo(point1.x, point1.y) browserCanvasContext.lineTo(point2.x, point2.y) - } + browserCanvasContext.lineTo(point3.x, point3.y) + browserCanvasContext.lineTo(point4.x, point4.y) + browserCanvasContext.lineTo(point1.x, point1.y) + browserCanvasContext.closePath() - let point3 = { - x: i, - y: 0 - } + browserCanvasContext.strokeStyle = 'rgba(' + style.color + ', ' + style.opacity + ')' + browserCanvasContext.lineWidth = style.lineWidth + browserCanvasContext.setLineDash(style.lineDash) + browserCanvasContext.stroke() - let point4 = { - x: i, - y: thisObject.height - } + browserCanvasContext.closePath() + } - point3 = transformThisPoint(point3, thisObject.container) - point4 = transformThisPoint(point4, thisObject.container) + function grid(fitFunction, smallLines) { + if (smallLines === true) { + /* Small Lines */ - if (fitFunction !== undefined) { - point3 = fitFunction(point3) - point4 = fitFunction(point4) - } + let step = thisObject.width / 100 - browserCanvasContext.moveTo(point3.x, point3.y) - browserCanvasContext.lineTo(point4.x, point4.y) + browserCanvasContext.beginPath() + + for (let i = 0; i < thisObject.width; i = i + step) { + for (let j = 0; j < thisObject.height; j = j + step) { + let point1 = { + x: 0, + y: j + } + + let point2 = { + x: thisObject.width, + y: j + } + + point1 = transformThisPoint(point1, thisObject.container) + point2 = transformThisPoint(point2, thisObject.container) + + if (fitFunction !== undefined) { + point1 = fitFunction(point1) + point2 = fitFunction(point2) + } + + browserCanvasContext.moveTo(point1.x, point1.y) + browserCanvasContext.lineTo(point2.x, point2.y) + } + + let point3 = { + x: thisObject.width, + y: thisObject.height + } + + let point4 = { + x: 0, + y: thisObject.height + } + + point3 = transformThisPoint(point3, thisObject.container) + point4 = transformThisPoint(point4, thisObject.container) + + if (fitFunction !== undefined) { + point3 = fitFunction(point3) + point4 = fitFunction(point4) + } + + browserCanvasContext.moveTo(point3.x, point3.y) + browserCanvasContext.lineTo(point4.x, point4.y) + } + browserCanvasContext.closePath() + browserCanvasContext.strokeStyle = 'rgba(150, 150, 150, 0.1)' + browserCanvasContext.lineWidth = 1 + browserCanvasContext.setLineDash([0, 0]) + browserCanvasContext.stroke() + } + + /* Main Lines */ + + let step = thisObject.width / 20 + + browserCanvasContext.beginPath() + + for (let i = 0; i < thisObject.width; i = i + step) { + for (let j = 0; j < thisObject.height; j = j + step) { + let point1 = { + x: 0, + y: j + } + + let point2 = { + x: thisObject.width, + y: j + } + + point1 = transformThisPoint(point1, thisObject.container) + point2 = transformThisPoint(point2, thisObject.container) + + if (fitFunction !== undefined) { + point1 = fitFunction(point1) + point2 = fitFunction(point2) + } + + browserCanvasContext.moveTo(point1.x, point1.y) + browserCanvasContext.lineTo(point2.x, point2.y) + } + + let point3 = { + x: i, + y: 0 + } + + let point4 = { + x: i, + y: thisObject.height + } + + point3 = transformThisPoint(point3, thisObject.container) + point4 = transformThisPoint(point4, thisObject.container) + + if (fitFunction !== undefined) { + point3 = fitFunction(point3) + point4 = fitFunction(point4) + } + + browserCanvasContext.moveTo(point3.x, point3.y) + browserCanvasContext.lineTo(point4.x, point4.y) + } + browserCanvasContext.closePath() + browserCanvasContext.strokeStyle = 'rgba(100, 100, 100, 0.2)' + browserCanvasContext.lineWidth = 1 + browserCanvasContext.setLineDash([0, 0]) + browserCanvasContext.stroke() } - browserCanvasContext.closePath() - browserCanvasContext.strokeStyle = 'rgba(100, 100, 100, 0.2)' - browserCanvasContext.lineWidth = 1 - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.stroke() - } } diff --git a/CanvasApp/Globals.js b/CanvasApp/Globals.js index d9a737c01..f06e3f55c 100644 --- a/CanvasApp/Globals.js +++ b/CanvasApp/Globals.js @@ -1,7 +1,5 @@ - /* User Interface Colors */ - -const CANVAS_APP_NAME = 'Canvas App' +/* User Interface Colors */ const UI_COLOR = { DARK: "48, 48, 54", @@ -28,6 +26,8 @@ const UI_FONT = { SECONDARY: "Source Code Pro" }; +const DOCUMENTATION_URL_PREFIX = 'https://docs.superalgos.org/' + const MAC_AMOUNT_FACTOR = 5 const IS_MAC = navigator.platform.toUpperCase().indexOf('MAC') >= 0 @@ -48,37 +48,39 @@ const ZOOM_OUT_THRESHOLD_FOR_DISPLAYING_SCALES = 3 let FONT_ASPECT_RATIO = 0.32; let ANIMATION_FRAME_PER_SECONDS +let DISABLE_BROWSER_RESIZE_EVENT = false + const GET_CONTAINER_PURPOSE = { - MOUSE_OVER: 1, - MOUSE_WHEEL: 2, - MOUSE_CLICK: 3, - DRAGGING: 4 + MOUSE_OVER: 1, + MOUSE_WHEEL: 2, + MOUSE_CLICK: 3, + DRAGGING: 4 } const ANGLE_TO_PARENT = { - NOT_FIXED: 0, - RANGE_360: 1, - RANGE_180: 2, - RANGE_90: 3, - RANGE_45: 4 + NOT_FIXED: 0, + RANGE_360: 1, + RANGE_180: 2, + RANGE_90: 3, + RANGE_45: 4 } const DISTANCE_TO_PARENT = { - NOT_FIXED: 0, - PARENT_025X: 1, - PARENT_050X: 2, - PARENT_100X: 3, - PARENT_150X: 4, - PARENT_200X: 5 + NOT_FIXED: 0, + PARENT_025X: 1, + PARENT_050X: 2, + PARENT_100X: 3, + PARENT_150X: 4, + PARENT_200X: 5 } const ARRANGEMENT_STYLE = { - CONCAVE: 0, - CONVEX: 1, - VERTICAL_RIGHT: 2, - VERTICAL_LEFT: 3, - HORIZONTAL_BOTTOM: 4, - HORIZONTAL_TOP: 5 + CONCAVE: 0, + CONVEX: 1, + VERTICAL_RIGHT: 2, + VERTICAL_LEFT: 3, + HORIZONTAL_BOTTOM: 4, + HORIZONTAL_TOP: 5 } /* User Interface Panels */ @@ -138,11 +140,11 @@ let LOGGED_IN_USER_LOCAL_STORAGE_KEY let LOGGED_IN_ACCESS_TOKEN_LOCAL_STORAGE_KEY if (testUser !== null) { - LOGGED_IN_USER_LOCAL_STORAGE_KEY = "test_user" - LOGGED_IN_ACCESS_TOKEN_LOCAL_STORAGE_KEY = "test_access_token" + LOGGED_IN_USER_LOCAL_STORAGE_KEY = "test_user" + LOGGED_IN_ACCESS_TOKEN_LOCAL_STORAGE_KEY = "test_access_token" } else { - LOGGED_IN_USER_LOCAL_STORAGE_KEY = "user" - LOGGED_IN_ACCESS_TOKEN_LOCAL_STORAGE_KEY = "access_token" + LOGGED_IN_USER_LOCAL_STORAGE_KEY = "user" + LOGGED_IN_ACCESS_TOKEN_LOCAL_STORAGE_KEY = "access_token" } const MAX_DEFAULT_RATE_SCALE_VALUE = 35000; // This is needed to know the scale of the market time line. @@ -178,7 +180,8 @@ let INITIAL_ZOOM_LEVEL = -28.25 // This is the zoom level at the view port let INITIAL_TIME_PERIOD = ONE_DAY_IN_MILISECONDS // This value will be overwritten at the canvas.chartingSpace.viewport.initialize if the user had a prevous session with this same browser. let VERY_LARGE_NUMBER = 100000000000000 -let CURRENT_TOP_MARGIN = window.canvasApp.topMargin +const TOP_MARGIN = 0 +let CURRENT_TOP_MARGIN = TOP_MARGIN let AT_FULL_SCREEN_MODE = false let maxDate = new Date(); @@ -221,7 +224,7 @@ const TIME_MACHINE_WIDTH = 8; const TIME_MACHINE_HEIGHT = 8; let mediaRecorder // to downloadText canvas animation as a mediaRecorder -let marketPanoramaCanvas +let marketPanoramaCanvas let ARE_WE_RECORDING_A_VIDEO = false let ARE_WE_RECORDING_A_MARKET_PANORAMA = false let PANORAMA_WAS_PANNED = false diff --git a/CanvasApp/Panels/Layer.js b/CanvasApp/Panels/Layer.js index 1877a5ecc..7ffe83133 100644 --- a/CanvasApp/Panels/Layer.js +++ b/CanvasApp/Panels/Layer.js @@ -1,629 +1,699 @@ -function newLayer () { - const MODULE_NAME = 'Layer' - const ERROR_LOG = true - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME +function newLayer() { + const MODULE_NAME = 'Layer' + const ERROR_LOG = true + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME - let thisObject = { - container: undefined, - status: LAYER_STATUS.OFF, - fitFunction: undefined, - payload: undefined, - definition: undefined, - panels: undefined, - baseAsset: undefined, - quotedAsset: undefined, - market: undefined, - exchange: undefined, - plotterModule: undefined, - exchangeIcon: undefined, - plotterTypeIcon: undefined, - baseAssetIcon: undefined, - quotedAssetIcon: undefined, - networkNode: undefined, - checkStatusAtShutDown: checkStatusAtShutDown, - physics: physics, - draw: draw, - turnOff: turnOff, - turnOn: turnOn, - setDatetime: setDatetime, - setTimeFrame: setTimeFrame, - onMarketFileLoaded: onMarketFileLoaded, - onDailyFileLoaded: onDailyFileLoaded, - onSingleFileLoaded: onSingleFileLoaded, - onFileSequenceLoaded: onFileSequenceLoaded, - getContainer: getContainer, // returns the inner most container that holds the point received by parameter. - initialize: initialize, - finalize: finalize - } - - let LOADING_FILL_STYLE = 'rgba(234, 143, 23, @Opacity)' - let LOADED_FILL_STYLE = 'rgba(45, 232, 28, @Opacity)' - let UNLOADED_FILL_STYLE = 'rgba(226, 226, 226, @Opacity)' - - let LOADING_STROKE_STYLE = 'rgba(234, 143, 23, @Opacity)' - let LOADED_STROKE_STYLE = 'rgba(45, 232, 28, @Opacity)' - let UNLOADED_STROKE_STYLE = 'rgba(226, 226, 226, @Opacity)' - - let marketFileProgressBar = { - value: 0, - animatedValue: 0, - fillStyle: UNLOADED_FILL_STYLE, - strokeStyle: UNLOADED_STROKE_STYLE, - opacity: 0.00 - } - - let dailyFileProgressBar = { - value: 0, - animatedValue: 0, - fillStyle: UNLOADED_FILL_STYLE, - strokeStyle: UNLOADED_STROKE_STYLE, - opacity: 0.00 - } - - let singleFileProgressBar = { - value: 0, - animatedValue: 0, - fillStyle: UNLOADED_FILL_STYLE, - strokeStyle: UNLOADED_STROKE_STYLE, - opacity: 0.00 - } - - let fileSequenceProgressBar = { - value: 0, - animatedValue: 0, - fillStyle: UNLOADED_FILL_STYLE, - strokeStyle: UNLOADED_STROKE_STYLE, - opacity: 0.00 - } - - let timeFrame = INITIAL_TIME_PERIOD - let datetime = NEW_SESSION_INITIAL_DATE - - /* Add an Event Handler */ - - thisObject.eventHandler = newEventHandler() - let imagesLoaded = 0 - let onMouseClickEventSuscriptionId - let panelsVisibleButton - - return thisObject - - function finalize () { - thisObject.container.eventHandler.stopListening(onMouseClickEventSuscriptionId) - - thisObject.container.finalize() - thisObject.eventHandler.finalize() - thisObject.container = undefined - thisObject.eventHandler = undefined - thisObject.status = undefined - thisObject.fitFunction = undefined - thisObject.payload = undefined - thisObject.definition = undefined - thisObject.panels = undefined - - timeFrame = undefined - datetime = undefined - - LOADING_FILL_STYLE = undefined - LOADED_FILL_STYLE = undefined - UNLOADED_FILL_STYLE = undefined - - LOADING_STROKE_STYLE = undefined - LOADED_STROKE_STYLE = undefined - UNLOADED_STROKE_STYLE = undefined - - marketFileProgressBar = undefined - dailyFileProgressBar = undefined - singleFileProgressBar = undefined - fileSequenceProgressBar = undefined - - panelsVisibleButton = undefined - - thisObject.baseAsset = undefined - thisObject.quotedAsset = undefined - thisObject.market = undefined - thisObject.exchange = undefined - thisObject.plotterModule = undefined - thisObject.exchangeIcon = undefined - thisObject.plotterTypeIcon = undefined - thisObject.baseAssetIcon = undefined - thisObject.quotedAssetIcon = undefined - thisObject.networkNode = undefined - } - - function initialize (callBackFunction) { - /* Create this objects continer */ - try { - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME + ' ' + thisObject.payload.node.id) - thisObject.container.isDraggeable = false - thisObject.container.isClickeable = true - - /* Lets set the basic dimensions of this thisObject. */ - let position = { - x: 0, - y: 0 - } - - thisObject.container.frame.position = position - thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL - thisObject.container.frame.height = 70 - - let functionLibraryProtocolNode = newProtocolNode() - let lightingPath = - '->Layer->' + - 'Data Product->Single Market Data->Exchange Data Products->' + - 'Session Reference->Session Independent Data->Session Based Data->Exchange Sessions->Session Based Data->Data Storage->Network Node->' + - 'Data Storage->Network Node->' + - 'Backtesting Session->Paper Trading Session->Fordward Testing Session->Live Trading Session->' + - 'Market->Market Base Asset->Asset->' + - 'Market Quoted Asset->Asset->' + - 'Exchange Markets->Crypto Exchange->' + - 'Product Definition->' + - 'Sensor Bot->Indicator Bot->Trading Bot->' + - 'Data Mine->' + - 'Dataset Definition->' + - 'Record Definition->Record Property->Formula->' + - 'Data Building Procedure->Procedure Loop->Javascript Code->Procedure Initialization->Javascript Code->' + - 'Calculations Procedure->Procedure Loop->Javascript Code->Procedure Initialization->Javascript Code->' + - 'Plotter Module->Plotter->' + - 'Shapes->' + - 'Chart Points->Point->Point Formula->' + - 'Polygon->Polygon Condition->Polygon Body->Style->Style Condition->Style->' + - 'Polygon Border->Style->Style Condition->Style->' + - 'Polygon Vertex->Point->' + - 'Plotter Panel->Javascript Code->Panel Data->Data Formula->' - thisObject.definition = functionLibraryProtocolNode.getProtocolNode(thisObject.payload.node, false, true, true, false, false, lightingPath) - - /* Here we validate that we have all the needed information */ - if (thisObject.definition.referenceParent === undefined) { return } - if (thisObject.definition.referenceParent.parentNode === undefined) { return } - if (thisObject.definition.referenceParent.parentNode.referenceParent === undefined) { return } - if (thisObject.definition.referenceParent.parentNode.referenceParent.parentNode === undefined) { return } - if (thisObject.definition.referenceParent.parentNode.referenceParent.parentNode.parentNode === undefined) { return } - if (thisObject.definition.referenceParent.parentNode.referenceParent.baseAsset === undefined) { return } - if (thisObject.definition.referenceParent.parentNode.referenceParent.baseAsset.referenceParent === undefined) { return } - if (thisObject.definition.referenceParent.parentNode.referenceParent.quotedAsset === undefined) { return } - if (thisObject.definition.referenceParent.parentNode.referenceParent.quotedAsset.referenceParent === undefined) { return } - if (thisObject.definition.referenceParent.referenceParent === undefined) { return } - if (thisObject.definition.referenceParent.referenceParent.parentNode === undefined) { return } - if (thisObject.definition.referenceParent.referenceParent.parentNode.parentNode === undefined) { return } - if (thisObject.definition.referenceParent.parentNode.parentNode === undefined) { return } - if (thisObject.definition.referenceParent.parentNode.parentNode.parentNode === undefined) { return } - if (thisObject.definition.referenceParent.parentNode.parentNode.parentNode.parentNode === undefined) { return } - if (thisObject.definition.referenceParent.parentNode.parentNode.parentNode.parentNode.parentNode === undefined) { return } - - /* Lets listen to our own events to react when we have a Mouse Click */ - onMouseClickEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) - - /* Get ready to draw this layer */ - thisObject.baseAsset = thisObject.definition.referenceParent.parentNode.referenceParent.baseAsset.referenceParent - thisObject.quotedAsset = thisObject.definition.referenceParent.parentNode.referenceParent.quotedAsset.referenceParent - thisObject.market = thisObject.baseAsset.code.codeName + '/' + thisObject.quotedAsset.code.codeName - thisObject.exchange = thisObject.definition.referenceParent.parentNode.referenceParent.parentNode.parentNode - - /* Some basic validations. */ - if (thisObject.definition.referenceParent === undefined) { - console.log('[WARN] Could not start plotter because ' + thisObject.definition.type + ' ' + thisObject.definition.name + ' does not have a Reference Parent.') - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - return - } - - if (thisObject.definition.referenceParent.referenceParent === undefined) { - console.log('[WARN] Could not start plotter because ' + thisObject.definition.referenceParent.type + ' ' + thisObject.definition.referenceParent.name + ' does not have a Reference Parent.') - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - return - } - - if (thisObject.definition.referenceParent.referenceParent.referenceParent === undefined) { - console.log('[WARN] Could not start plotter because ' + thisObject.definition.referenceParent.referenceParent.type + ' ' + thisObject.definition.referenceParent.referenceParent.name + ' does not have a Reference Parent.') - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - return - } - - thisObject.plotterModule = thisObject.definition.referenceParent.referenceParent.referenceParent - - thisObject.exchangeIcon = getIcon(thisObject.exchange) - - if (thisObject.plotterModule.code.icon !== undefined) { - thisObject.plotterTypeIcon = canvas.designSpace.iconCollection.get(thisObject.plotterModule.code.icon) - } - - thisObject.baseAssetIcon = getIcon(thisObject.baseAsset) - thisObject.quotedAssetIcon = getIcon(thisObject.quotedAsset) - - if (thisObject.definition.referenceParent.parentNode.parentNode.parentNode.parentNode.type === 'Data Storage') { - thisObject.networkNode = thisObject.definition.referenceParent.parentNode.parentNode.parentNode.parentNode.parentNode - } else { - thisObject.networkNode = thisObject.definition.referenceParent.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode - } - - function getIcon (node) { - let nodeDefinition = APP_SCHEMA_MAP.get(node.type) - let iconName - if (nodeDefinition.alternativeIcons !== undefined) { - for (let i = 0; i < nodeDefinition.alternativeIcons.length; i++) { - alternativeIcon = nodeDefinition.alternativeIcons[i] - if (alternativeIcon.codeName === node.code.codeName) { - iconName = alternativeIcon.iconName - } - } - } - if (iconName !== undefined) { - icon = canvas.designSpace.iconCollection.get(iconName) - } else { - icon = canvas.designSpace.iconCollection.get(nodeDefinition.icon) - } - return icon - } - - callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE) - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> err = ' + err.stack) } + let thisObject = { + container: undefined, + status: LAYER_STATUS.OFF, + fitFunction: undefined, + payload: undefined, + definition: undefined, + panels: undefined, + baseAsset: undefined, + quotedAsset: undefined, + market: undefined, + exchange: undefined, + bot: undefined, + productDefinition: undefined, + dataMine: undefined, + plotterModule: undefined, + exchangeIcon: undefined, + plotterTypeIcon: undefined, + baseAssetIcon: undefined, + quotedAssetIcon: undefined, + networkNode: undefined, + checkStatusAtShutDown: checkStatusAtShutDown, + physics: physics, + draw: draw, + turnOff: turnOff, + turnOn: turnOn, + setDatetime: setDatetime, + setTimeFrame: setTimeFrame, + onMarketFileLoaded: onMarketFileLoaded, + onDailyFileLoaded: onDailyFileLoaded, + onSingleFileLoaded: onSingleFileLoaded, + onFileSequenceLoaded: onFileSequenceLoaded, + getContainer: getContainer, // returns the inner most container that holds the point received by parameter. + initialize: initialize, + finalize: finalize } - } - function checkStatusAtShutDown () { - /* Mechanism to recover a layer that was left loading the last time the browser was shut dowm. */ - let storedValue = loadPropertyFromNodeConfig(thisObject.payload, 'status') - if (storedValue !== undefined) { - if (storedValue === LAYER_STATUS.LOADING) { - resetProgressBars() - changeStatusTo(LAYER_STATUS.LOADING) - } + let LOADING_FILL_STYLE = 'rgba(234, 143, 23, @Opacity)' + let LOADED_FILL_STYLE = 'rgba(45, 232, 28, @Opacity)' + let UNLOADED_FILL_STYLE = 'rgba(226, 226, 226, @Opacity)' + + let LOADING_STROKE_STYLE = 'rgba(234, 143, 23, @Opacity)' + let LOADED_STROKE_STYLE = 'rgba(45, 232, 28, @Opacity)' + let UNLOADED_STROKE_STYLE = 'rgba(226, 226, 226, @Opacity)' + + let marketFileProgressBar = { + value: 0, + animatedValue: 0, + fillStyle: UNLOADED_FILL_STYLE, + strokeStyle: UNLOADED_STROKE_STYLE, + opacity: 0.00 } - } - function getContainer (point) { - if (panelsVisibleButton !== undefined) { - let container = panelsVisibleButton.getContainer(point) - if (container !== undefined) { - return container - } + let dailyFileProgressBar = { + value: 0, + animatedValue: 0, + fillStyle: UNLOADED_FILL_STYLE, + strokeStyle: UNLOADED_STROKE_STYLE, + opacity: 0.00 } - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - return thisObject.container + + let singleFileProgressBar = { + value: 0, + animatedValue: 0, + fillStyle: UNLOADED_FILL_STYLE, + strokeStyle: UNLOADED_STROKE_STYLE, + opacity: 0.00 } - } - function setDatetime (pDatetime) { - /* - When the datetime changes from one day to another, this forces cursors to potentially load more files, thus we reset this counter and - get ready to receive events on files loaded. - */ - let currentDate = Math.trunc(datetime.valueOf() / ONE_DAY_IN_MILISECONDS) - let newDate = Math.trunc(pDatetime.valueOf() / ONE_DAY_IN_MILISECONDS) - - datetime = pDatetime - - if (currentDate !== newDate) { - if (timeFrame <= _1_HOUR_IN_MILISECONDS) { - dailyFileProgressBar.animatedValue = 0 - } + let fileSequenceProgressBar = { + value: 0, + animatedValue: 0, + fillStyle: UNLOADED_FILL_STYLE, + strokeStyle: UNLOADED_STROKE_STYLE, + opacity: 0.00 } - } - function setTimeFrame (pTimeFrame) { - /* - When the time period below or equal to 1 hour changes, this forces cursors to potentially load more files, thus we reset this counter and - get ready to receive events on files loaded. - */ - if (timeFrame !== pTimeFrame) { - timeFrame = pTimeFrame + let timeFrame = INITIAL_TIME_PERIOD + let datetime = NEW_SESSION_INITIAL_DATE - if (timeFrame <= _1_HOUR_IN_MILISECONDS) { - dailyFileProgressBar.animatedValue = 0 - } + /* Add an Event Handler */ + + thisObject.eventHandler = newEventHandler() + let imagesLoaded = 0 + let onMouseClickEventSuscriptionId + let panelsVisibleButton + + return thisObject + + function finalize() { + thisObject.container.eventHandler.stopListening(onMouseClickEventSuscriptionId) + + thisObject.container.finalize() + thisObject.eventHandler.finalize() + thisObject.container = undefined + thisObject.eventHandler = undefined + thisObject.status = undefined + thisObject.fitFunction = undefined + thisObject.payload = undefined + thisObject.definition = undefined + thisObject.panels = undefined + + timeFrame = undefined + datetime = undefined + + LOADING_FILL_STYLE = undefined + LOADED_FILL_STYLE = undefined + UNLOADED_FILL_STYLE = undefined + + LOADING_STROKE_STYLE = undefined + LOADED_STROKE_STYLE = undefined + UNLOADED_STROKE_STYLE = undefined + + marketFileProgressBar = undefined + dailyFileProgressBar = undefined + singleFileProgressBar = undefined + fileSequenceProgressBar = undefined + + panelsVisibleButton = undefined + + thisObject.baseAsset = undefined + thisObject.quotedAsset = undefined + thisObject.market = undefined + thisObject.exchange = undefined + thisObject.plotterModule = undefined + thisObject.exchangeIcon = undefined + thisObject.plotterTypeIcon = undefined + thisObject.baseAssetIcon = undefined + thisObject.quotedAssetIcon = undefined + thisObject.networkNode = undefined + thisObject.bot = undefined + thisObject.productDefinition = undefined + thisObject.dataMine = undefined } - } - function onMarketFileLoaded (event) { - marketFileProgressBar.value = Math.trunc(event.totalValue * 100 / event.totalValue) - marketFileProgressBar.fillStyle = LOADING_FILL_STYLE - marketFileProgressBar.strokeStyle = LOADING_STROKE_STYLE + function initialize(callBackFunction) { + /* Create this objects continer */ + try { + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME + ' ' + thisObject.payload.node.id) + thisObject.container.isDraggeable = false + thisObject.container.isClickeable = true - if (marketFileProgressBar.value > 100) { marketFileProgressBar.value = 100 } - } - - function onDailyFileLoaded (event) { - dailyFileProgressBar.value = Math.trunc(event.currentValue * 100 / event.totalValue) - dailyFileProgressBar.fillStyle = LOADING_FILL_STYLE - dailyFileProgressBar.strokeStyle = LOADING_STROKE_STYLE - - if (dailyFileProgressBar.value > 100) { dailyFileProgressBar.value = 100 } - } - - function onSingleFileLoaded (event) { - singleFileProgressBar.value = Math.trunc(event.currentValue * 100 / event.totalValue) - singleFileProgressBar.fillStyle = LOADING_FILL_STYLE - singleFileProgressBar.strokeStyle = LOADING_STROKE_STYLE - - if (singleFileProgressBar.value > 100) { singleFileProgressBar.value = 100 } - } - - function onFileSequenceLoaded (event) { - fileSequenceProgressBar.value = Math.trunc(event.currentValue * 100 / event.totalValue) - fileSequenceProgressBar.fillStyle = LOADING_FILL_STYLE - fileSequenceProgressBar.strokeStyle = LOADING_STROKE_STYLE - - if (fileSequenceProgressBar.value > 100) { fileSequenceProgressBar.value = 100 } - } - - function turnOff () { - if (thisObject.status !== LAYER_STATUS.OFF) { - resetProgressBars() - changeStatusTo(LAYER_STATUS.OFF) - } - } - - function turnOn () { - if (thisObject.status === LAYER_STATUS.OFF) { - resetProgressBars() - changeStatusTo(LAYER_STATUS.LOADING) - } - } - - function onMouseClick (event) { - switch (thisObject.status) { - case LAYER_STATUS.ON: - resetProgressBars() - changeStatusTo(LAYER_STATUS.OFF) - break - case LAYER_STATUS.OFF: - resetProgressBars() - changeStatusTo(LAYER_STATUS.LOADING) - break - case LAYER_STATUS.LOADING: - changeStatusTo(LAYER_STATUS.OFF) - break - } - } - - function resetProgressBars () { - marketFileProgressBar.animatedValue = 0 - marketFileProgressBar.value = 0 - marketFileProgressBar.fillStyle = UNLOADED_FILL_STYLE - marketFileProgressBar.strokeStyle = UNLOADED_STROKE_STYLE - - dailyFileProgressBar.animatedValue = 0 - dailyFileProgressBar.value = 0 - dailyFileProgressBar.fillStyle = UNLOADED_FILL_STYLE - dailyFileProgressBar.strokeStyle = UNLOADED_STROKE_STYLE - - singleFileProgressBar.animatedValue = 0 - singleFileProgressBar.value = 0 - singleFileProgressBar.fillStyle = UNLOADED_FILL_STYLE - singleFileProgressBar.strokeStyle = UNLOADED_STROKE_STYLE - - fileSequenceProgressBar.animatedValue = 0 - fileSequenceProgressBar.value = 0 - fileSequenceProgressBar.fillStyle = UNLOADED_FILL_STYLE - fileSequenceProgressBar.strokeStyle = UNLOADED_STROKE_STYLE - } - - function physics () { - statusPhysics() - childrenPhysics() - } - - function childrenPhysics () { - /* Panels Visible Button Setup */ - if (thisObject.status === LAYER_STATUS.ON) { - if (panelsVisibleButton === undefined) { - if (thisObject.panels !== undefined) { - if (thisObject.panels.length > 0) { - panelsVisibleButton = newPanelsVisibleButton() - - let storedValue = loadPropertyFromNodeConfig(thisObject.payload, 'showPanels') - if (storedValue !== undefined) { - if (storedValue === true || storedValue === false) { - panelsVisibleButton.showPanels = storedValue - } + /* Lets set the basic dimensions of this thisObject. */ + let position = { + x: 0, + y: 0 } - panelsVisibleButton.initialize(thisObject.panels) - panelsVisibleButton.container.connectToParent(thisObject.container) - } + thisObject.container.frame.position = position + thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL + thisObject.container.frame.height = 70 + + let functionLibraryProtocolNode = newProtocolNode() + let lightingPath = + '->Layer->' + + 'Data Product->' + + 'Data Product Folder->Data Product Folder->Data Product Folder->Data Product Folder->Data Product Folder->' + + 'Bot Products->Data Mine Products->Trading Mine Products->' + + 'Market Data Products->Exchange Data Products->' + + 'Session Reference->Market Trading Products->Exchange Trading Products->' + + 'Data Mines Data->Trading Mines Data->Data Storage->Network Node->' + + 'Data Storage->Network Node->' + + 'Backtesting Session->Paper Trading Session->Forward Testing Session->Live Trading Session->' + + 'Trading System Reference->Trading Engine Reference->Trading System->Trading Engine->' + + 'Market->Market Base Asset->Asset->' + + 'Market Quoted Asset->Asset->' + + 'Exchange Markets->Crypto Exchange->' + + 'Product Definition->' + + 'Product Definition Folder->Product Definition Folder->Product Definition Folder->Product Definition Folder->Product Definition Folder->' + + 'Sensor Bot->Indicator Bot->Trading Bot->' + + 'Data Mine->Trading Mine->' + + 'Dataset Definition->' + + 'Record Definition->Record Property->Formula->' + + 'Data Building Procedure->Procedure Loop->Javascript Code->Procedure Initialization->Javascript Code->' + + 'Calculations Procedure->Procedure Loop->Javascript Code->Procedure Initialization->Javascript Code->' + + 'Plotter Module->Plotter->' + + 'Shapes->' + + 'Chart Points->Point->Point Formula->' + + 'Polygon->Polygon Condition->Polygon Body->Style->Style Condition->Style->' + + 'Polygon Border->Style->Style Condition->Style->' + + 'Polygon Vertex->Point->' + + 'Image->Image Condition->Image Position->Point->' + + 'Text->Text Condition->Text Position->Point->Text Formula->Text Style->' + + 'Plotter Panel->Javascript Code->Panel Data->Data Formula->Text Style->' + + 'Nodes Highlights->Nodes Values->Nodes Errors->Nodes Warnings->Nodes Infos->Nodes Status->Nodes Progress->Nodes Running->Nodes Announcements->Record Values->' + thisObject.definition = functionLibraryProtocolNode.getProtocolNode(thisObject.payload.node, false, true, true, false, false, lightingPath) + + /* Without this I can not continue, because I can not even show error. */ + if (thisObject.payload === undefined) { + console.log(MODULE_NAME + ' ' + 'thisObject.payload === undefined') + return + } + if (thisObject.payload.uiObject === undefined) { + console.log(MODULE_NAME + ' ' + 'thisObject.payload.uiObject === undefined') + return + } + if (thisObject.payload.node === undefined) { + console.log(MODULE_NAME + ' ' + 'thisObject.payload.node === undefined') + return + } + + /* Here we validate that we have all the needed information */ + if (findNodeInNodeMesh(thisObject.definition, 'Data Product', undefined, false, true, true, true) === undefined) { + thisObject.payload.uiObject.setErrorMessage('Data Product not Found') + return + } + if (findNodeInNodeMesh(thisObject.definition, 'Market', undefined, false, true, true, true) === undefined) { + thisObject.payload.uiObject.setErrorMessage('Market not Found') + return + } + + thisObject.productDefinition = findNodeInNodeMesh(thisObject.definition, 'Product Definition', undefined, false, true, true, true) + if (thisObject.productDefinition === undefined) { + thisObject.payload.uiObject.setErrorMessage('Product Definition not Found') + return + } + + thisObject.bot = findNodeInNodeMesh(thisObject.definition, 'Sensor Bot', undefined, false, true, true, true) + if (thisObject.bot === undefined) { + thisObject.bot = findNodeInNodeMesh(thisObject.definition, 'Indicator Bot', undefined, false, true, true, true) + } + if (thisObject.bot === undefined) { + thisObject.bot = findNodeInNodeMesh(thisObject.definition, 'Trading Bot', undefined, false, true, true, true) + } + if (thisObject.bot === undefined) { + thisObject.payload.uiObject.setErrorMessage('Bot not Found') + return + } + + thisObject.dataMine = findNodeInNodeMesh(thisObject.definition, 'Data Mine', undefined, false, true, true, true) + if (thisObject.dataMine === undefined) { + thisObject.dataMine = findNodeInNodeMesh(thisObject.definition, 'Trading Mine', undefined, false, true, true, true) + if (thisObject.dataMine === undefined) { + thisObject.payload.uiObject.setErrorMessage('Data Mine or Trading Mine not Found') + return + } + } + + thisObject.exchange = findNodeInNodeMesh(thisObject.definition, 'Crypto Exchange', undefined, false, true, true, true) + if (thisObject.exchange === undefined) { + thisObject.payload.uiObject.setErrorMessage('Crypto Exchange not Found') + return + } + + thisObject.baseAsset = findNodeInNodeMesh(thisObject.definition, 'Market Base Asset', undefined, false, true, true, true) + if (thisObject.baseAsset !== undefined) { + thisObject.baseAsset = thisObject.baseAsset.referenceParent + } + if (thisObject.baseAsset === undefined) { + thisObject.payload.uiObject.setErrorMessage('Market Base Asset not Found') + return + } + + thisObject.quotedAsset = findNodeInNodeMesh(thisObject.definition, 'Market Quoted Asset', undefined, false, true, true, true) + if (thisObject.quotedAsset !== undefined) { + thisObject.quotedAsset = thisObject.quotedAsset.referenceParent + } + if (thisObject.quotedAsset === undefined) { + thisObject.payload.uiObject.setErrorMessage('Market Quoted Asset not Found') + return + } + + thisObject.plotterModule = findNodeInNodeMesh(thisObject.definition, 'Plotter Module', undefined, false, false, false, true) + if (thisObject.plotterModule === undefined) { + thisObject.payload.uiObject.setErrorMessage('Plotter Module not Found') + return + } + + thisObject.networkNode = findNodeInNodeMesh(thisObject.definition, 'Network Node', undefined, false, true, true, true) + if (thisObject.networkNode === undefined) { + thisObject.payload.uiObject.setErrorMessage('Network Node not Found') + return + } + + /* Lets listen to our own events to react when we have a Mouse Click */ + onMouseClickEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) + + /* Get ready to draw this layer */ + thisObject.market = thisObject.baseAsset.config.codeName + '/' + thisObject.quotedAsset.config.codeName + + thisObject.exchangeIcon = getIcon(thisObject.exchange) + + if (thisObject.plotterModule.config.icon !== undefined) { + thisObject.plotterTypeIcon = canvas.designSpace.iconCollection.get(thisObject.plotterModule.config.icon) + } + + thisObject.baseAssetIcon = getIcon(thisObject.baseAsset) + thisObject.quotedAssetIcon = getIcon(thisObject.quotedAsset) + + function getIcon(node) { + let nodeDefinition = getNodeDefinition(node) + let iconName + if (nodeDefinition.alternativeIcons !== undefined) { + for (let i = 0; i < nodeDefinition.alternativeIcons.length; i++) { + alternativeIcon = nodeDefinition.alternativeIcons[i] + if (alternativeIcon.codeName === node.config.codeName) { + iconName = alternativeIcon.iconName + } + } + } + if (iconName !== undefined) { + icon = canvas.designSpace.iconCollection.get(iconName) + } else { + icon = canvas.designSpace.iconCollection.get(nodeDefinition.icon) + } + return icon + } + + callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE) + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> err = ' + err.stack) } } - } else { - savePropertyAtNodeConfig(thisObject.payload, 'showPanels', panelsVisibleButton.showPanels) - } } - } - function statusPhysics () { - /* We retrieve the stored status at the config. */ - try { - let storedValue = loadPropertyFromNodeConfig(thisObject.payload, 'status') + function checkStatusAtShutDown() { + /* Mechanism to recover a layer that was left loading the last time the browser was shut dowm. */ + let storedValue = loadPropertyFromNodeConfig(thisObject.payload, 'status') + if (storedValue !== undefined) { + if (storedValue === LAYER_STATUS.LOADING) { + resetProgressBars() + changeStatusTo(LAYER_STATUS.LOADING) + } + } + } - if (storedValue !== undefined) { - if (storedValue !== thisObject.status) { - if (storedValue === LAYER_STATUS.ON) { - resetProgressBars() - changeStatusTo(LAYER_STATUS.LOADING) - } - if (storedValue === LAYER_STATUS.OFF) { + function getContainer(point) { + if (panelsVisibleButton !== undefined) { + let container = panelsVisibleButton.getContainer(point) + if (container !== undefined) { + return container + } + } + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + return thisObject.container + } + } + + function setDatetime(pDatetime) { + /* + When the datetime changes from one day to another, this forces cursors to potentially load more files, thus we reset this counter and + get ready to receive events on files loaded. + */ + let currentDate = Math.trunc(datetime.valueOf() / ONE_DAY_IN_MILISECONDS) + let newDate = Math.trunc(pDatetime.valueOf() / ONE_DAY_IN_MILISECONDS) + + datetime = pDatetime + + if (currentDate !== newDate) { + if (timeFrame <= _1_HOUR_IN_MILISECONDS) { + dailyFileProgressBar.animatedValue = 0 + } + } + } + + function setTimeFrame(pTimeFrame) { + /* + When the time period below or equal to 1 hour changes, this forces cursors to potentially load more files, thus we reset this counter and + get ready to receive events on files loaded. + */ + if (timeFrame !== pTimeFrame) { + timeFrame = pTimeFrame + + if (timeFrame <= _1_HOUR_IN_MILISECONDS) { + dailyFileProgressBar.animatedValue = 0 + } + } + } + + function onMarketFileLoaded(event) { + if (event.totalValue === 0) { + marketFileProgressBar.value = 100 + return + } + marketFileProgressBar.value = Math.trunc((event.currentValue + event.filesNotLoaded) * 100 / event.totalValue) + marketFileProgressBar.fillStyle = LOADING_FILL_STYLE + marketFileProgressBar.strokeStyle = LOADING_STROKE_STYLE + + if (marketFileProgressBar.value > 100) { marketFileProgressBar.value = 100 } + } + + function onDailyFileLoaded(event) { + if (event.totalValue === 0) { + dailyFileProgressBar.value = 100 + return + } + dailyFileProgressBar.value = Math.trunc(event.currentValue * 100 / event.totalValue) + dailyFileProgressBar.fillStyle = LOADING_FILL_STYLE + dailyFileProgressBar.strokeStyle = LOADING_STROKE_STYLE + + if (dailyFileProgressBar.value > 100) { dailyFileProgressBar.value = 100 } + } + + function onSingleFileLoaded(event) { + if (event.totalValue === 0) { + singleFileProgressBar.value = 100 + return + } + singleFileProgressBar.value = Math.trunc(event.currentValue * 100 / event.totalValue) + singleFileProgressBar.fillStyle = LOADING_FILL_STYLE + singleFileProgressBar.strokeStyle = LOADING_STROKE_STYLE + + if (singleFileProgressBar.value > 100) { singleFileProgressBar.value = 100 } + } + + function onFileSequenceLoaded(event) { + if (event.totalValue === 0) { + fileSequenceProgressBar.value = 100 + return + } + fileSequenceProgressBar.value = Math.trunc(event.currentValue * 100 / event.totalValue) + fileSequenceProgressBar.fillStyle = LOADING_FILL_STYLE + fileSequenceProgressBar.strokeStyle = LOADING_STROKE_STYLE + + if (fileSequenceProgressBar.value > 100) { fileSequenceProgressBar.value = 100 } + } + + function turnOff() { + if (thisObject.status !== LAYER_STATUS.OFF) { resetProgressBars() changeStatusTo(LAYER_STATUS.OFF) - } } - } else { - resetProgressBars() - changeStatusTo(LAYER_STATUS.OFF) - } - } catch (err) { - // we ignore errors here since most likely they will be parsing errors. } - /* Check when the loading finishes */ - if ( - thisObject.status === LAYER_STATUS.LOADING && - marketFileProgressBar.value === 100 && - dailyFileProgressBar.value === 100 - ) { - changeStatusTo(LAYER_STATUS.ON) + function turnOn() { + if (thisObject.status === LAYER_STATUS.OFF) { + resetProgressBars() + changeStatusTo(LAYER_STATUS.LOADING) + } } - } - function changeStatusTo (newStatus) { - if (thisObject.status !== newStatus) { - thisObject.status = newStatus + function onMouseClick(event) { + switch (thisObject.status) { + case LAYER_STATUS.ON: + resetProgressBars() + changeStatusTo(LAYER_STATUS.OFF) + break + case LAYER_STATUS.OFF: + resetProgressBars() + changeStatusTo(LAYER_STATUS.LOADING) + break + case LAYER_STATUS.LOADING: + changeStatusTo(LAYER_STATUS.OFF) + break + } + } - if (thisObject.status === LAYER_STATUS.OFF) { + function resetProgressBars() { + marketFileProgressBar.animatedValue = 0 + marketFileProgressBar.value = 0 + marketFileProgressBar.fillStyle = UNLOADED_FILL_STYLE + marketFileProgressBar.strokeStyle = UNLOADED_STROKE_STYLE + + dailyFileProgressBar.animatedValue = 0 + dailyFileProgressBar.value = 0 + dailyFileProgressBar.fillStyle = UNLOADED_FILL_STYLE + dailyFileProgressBar.strokeStyle = UNLOADED_STROKE_STYLE + + singleFileProgressBar.animatedValue = 0 + singleFileProgressBar.value = 0 + singleFileProgressBar.fillStyle = UNLOADED_FILL_STYLE + singleFileProgressBar.strokeStyle = UNLOADED_STROKE_STYLE + + fileSequenceProgressBar.animatedValue = 0 + fileSequenceProgressBar.value = 0 + fileSequenceProgressBar.fillStyle = UNLOADED_FILL_STYLE + fileSequenceProgressBar.strokeStyle = UNLOADED_STROKE_STYLE + } + + function physics() { + statusPhysics() + childrenPhysics() + } + + function childrenPhysics() { + /* Panels Visible Button Setup */ + if (thisObject.status === LAYER_STATUS.ON) { + if (panelsVisibleButton === undefined) { + if (thisObject.panels !== undefined) { + if (thisObject.panels.length > 0) { + panelsVisibleButton = newPanelsVisibleButton() + + let storedValue = loadPropertyFromNodeConfig(thisObject.payload, 'showPanels') + if (storedValue !== undefined) { + if (storedValue === true || storedValue === false) { + panelsVisibleButton.showPanels = storedValue + } + } + + panelsVisibleButton.initialize(thisObject.panels) + panelsVisibleButton.container.connectToParent(thisObject.container) + } + } + } else { + savePropertyAtNodeConfig(thisObject.payload, 'showPanels', panelsVisibleButton.showPanels) + } + } + } + + function statusPhysics() { + /* We retrieve the stored status at the config. */ + try { + let storedValue = loadPropertyFromNodeConfig(thisObject.payload, 'status') + + if (storedValue !== undefined) { + if (storedValue !== thisObject.status) { + if (storedValue === LAYER_STATUS.ON && thisObject.status === LAYER_STATUS.OFF) { + resetProgressBars() + changeStatusTo(LAYER_STATUS.LOADING) + } + if (storedValue === LAYER_STATUS.OFF) { + resetProgressBars() + changeStatusTo(LAYER_STATUS.OFF) + } + } + } else { + resetProgressBars() + changeStatusTo(LAYER_STATUS.OFF) + } + } catch (err) { + // we ignore errors here since most likely they will be parsing errors. + } + + if ( + thisObject.status === LAYER_STATUS.LOADING && + marketFileProgressBar.value === 100 && + dailyFileProgressBar.value === 100 + ) { + changeStatusTo(LAYER_STATUS.ON) + } + } + + function changeStatusTo(newStatus) { + if (thisObject.status !== newStatus) { + thisObject.status = newStatus + + if (thisObject.status === LAYER_STATUS.OFF) { + if (panelsVisibleButton !== undefined) { + panelsVisibleButton.finalize() + panelsVisibleButton = undefined + } + } + + savePropertyAtNodeConfig(thisObject.payload, 'status', thisObject.status) + let eventData = thisObject + thisObject.container.eventHandler.raiseEvent('Status Changed', eventData) + } + } + + function draw() { + drawLayer() if (panelsVisibleButton !== undefined) { - panelsVisibleButton.finalize() - panelsVisibleButton = undefined + panelsVisibleButton.draw() } - } - - savePropertyAtNodeConfig(thisObject.payload, 'status', thisObject.status) - let eventData = thisObject - thisObject.container.eventHandler.raiseEvent('Status Changed', eventData) - } - } - - function draw () { - drawLayer() - if (panelsVisibleButton !== undefined) { - panelsVisibleButton.draw() - } - } - - function drawLayer () { - drawLayerDisplay() - } - - function drawProgressBar (progressBar, lineWidth, offsetY) { - const ANIMATED_INCREMENT = 5 - const OPACITY_INCREMENT = 0.01 - const OPACITY_MIN = 1 - - let point1 - let point2 - let horizontalMargin = 12 - - if (progressBar.value === 0) { - return } - /* Animate */ - if (progressBar.animatedValue < progressBar.value) { - progressBar.animatedValue = progressBar.animatedValue + ANIMATED_INCREMENT - progressBar.opacity = progressBar.opacity + OPACITY_INCREMENT + function drawLayer() { + drawLayerDisplay() } - if (progressBar.animatedValue >= 100) { - progressBar.animatedValue = 100 + function drawProgressBar(progressBar, lineWidth, offsetY) { + const ANIMATED_INCREMENT = 5 + const OPACITY_INCREMENT = 0.01 + const OPACITY_MIN = 1 - progressBar.opacity = progressBar.opacity - OPACITY_INCREMENT - if (progressBar.opacity < OPACITY_MIN) { progressBar.opacity = OPACITY_MIN } + let point1 + let point2 + let horizontalMargin = 12 - progressBar.strokeStyle = LOADED_STROKE_STYLE.replace('@Opacity', progressBar.opacity.toString()) + if (progressBar.value === 0) { + return + } + + /* Animate */ + if (progressBar.animatedValue < progressBar.value) { + progressBar.animatedValue = progressBar.animatedValue + ANIMATED_INCREMENT + progressBar.opacity = progressBar.opacity + OPACITY_INCREMENT + } + + if (progressBar.animatedValue >= 100) { + progressBar.animatedValue = 100 + + progressBar.opacity = progressBar.opacity - OPACITY_INCREMENT + if (progressBar.opacity < OPACITY_MIN) { progressBar.opacity = OPACITY_MIN } + + progressBar.strokeStyle = LOADED_STROKE_STYLE.replace('@Opacity', progressBar.opacity.toString()) + } + + point1 = { + x: 0 + horizontalMargin, + y: thisObject.container.frame.height + offsetY + } + + point2 = { + x: (thisObject.container.frame.width - horizontalMargin * 2) * progressBar.animatedValue / 100 + horizontalMargin, + y: thisObject.container.frame.height + offsetY + } + + /* Now the transformations. */ + point1 = thisObject.container.frame.frameThisPoint(point1) + point2 = thisObject.container.frame.frameThisPoint(point2) + + point1 = thisObject.fitFunction(point1) + point2 = thisObject.fitFunction(point2) + + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(point1.x, point1.y) + browserCanvasContext.lineTo(point2.x, point2.y) + + browserCanvasContext.closePath() + + browserCanvasContext.strokeStyle = progressBar.strokeStyle.replace('@Opacity', progressBar.opacity.toString()) + + browserCanvasContext.setLineDash([2, 4]) + browserCanvasContext.lineWidth = lineWidth + browserCanvasContext.stroke() } - point1 = { - x: 0 + horizontalMargin, - y: thisObject.container.frame.height + offsetY + function drawLayerDisplay() { + let label1 = thisObject.payload.node.name + let label2 = thisObject.exchange.name.substring(0, 15) + ' - ' + thisObject.market + let label3 = thisObject.status.toUpperCase() + + if (label1 !== undefined) { + label1 = label1.substring(0, 30) + } + + let backgroundColor = UI_COLOR.BLACK + + const RED_LINE_HIGHT = 4 + const OPACITY = 0.75 + + let params = { + cornerRadius: 0, + lineWidth: 1, + container: thisObject.container, + borderColor: UI_COLOR.RUSTED_RED, + castShadow: false, + backgroundColor: backgroundColor, + opacity: OPACITY + } + + roundedCornersBackground(params) + + let parentLabel1FontSize = loadPropertyFromNodeConfig(thisObject.payload.parentNode.payload, 'label1FontSize') + let parentLabel2FontSize = loadPropertyFromNodeConfig(thisObject.payload.parentNode.payload, 'label2FontSize') + let parentLabel3FontSize = loadPropertyFromNodeConfig(thisObject.payload.parentNode.payload, 'label3FontSize') + + let label1FontSize = loadPropertyFromNodeConfig(thisObject.payload, 'label1FontSize') + let label2FontSize = loadPropertyFromNodeConfig(thisObject.payload, 'label2FontSize') + let label3FontSize = loadPropertyFromNodeConfig(thisObject.payload, 'label3FontSize') + + if (parentLabel1FontSize !== undefined) { + label1FontSize = parentLabel1FontSize + } + if (parentLabel2FontSize !== undefined) { + label2FontSize = parentLabel2FontSize + } + if (parentLabel3FontSize !== undefined) { + label3FontSize = parentLabel3FontSize + } + + if (label1FontSize === undefined) { + if (label1.length > 20) { + label1FontSize = 12 + } else { + label1FontSize = 15 + } + } + + if (label2FontSize === undefined) { + label2FontSize = 10 + } + + if (label3FontSize === undefined) { + label3FontSize = 9 + } + + drawLabel(label1, 1 / 2, 5.2 / 10, -5, 0, label1FontSize, thisObject.container) + drawLabel(label2, 1 / 2, 8.2 / 10, -5, 0, label2FontSize, thisObject.container) + drawLabel(label3, 1 / 2, 9.5 / 10, -5, 0, label3FontSize, thisObject.container) + + drawProgressBar(marketFileProgressBar, 2, -45 + 18) + drawProgressBar(dailyFileProgressBar, 2, -46 + 18) + drawProgressBar(singleFileProgressBar, 2, -47 + 18) + drawProgressBar(fileSequenceProgressBar, 2, -48 + 18) + + drawIcon(thisObject.exchangeIcon, 1 / 8, 2 / 10, 0, 0, 14, thisObject.container) + drawIcon(thisObject.plotterTypeIcon, 7 / 8, 2 / 10, 0, 0, 14, thisObject.container) + drawIcon(thisObject.baseAssetIcon, 3.4 / 8, 2 / 10, 0, 0, 14, thisObject.container) + drawIcon(thisObject.quotedAssetIcon, 4.6 / 8, 2 / 10, 0, 0, 14, thisObject.container) } - - point2 = { - x: (thisObject.container.frame.width - horizontalMargin * 2) * progressBar.animatedValue / 100 + horizontalMargin, - y: thisObject.container.frame.height + offsetY - } - - /* Now the transformations. */ - point1 = thisObject.container.frame.frameThisPoint(point1) - point2 = thisObject.container.frame.frameThisPoint(point2) - - point1 = thisObject.fitFunction(point1) - point2 = thisObject.fitFunction(point2) - - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(point1.x, point1.y) - browserCanvasContext.lineTo(point2.x, point2.y) - - browserCanvasContext.closePath() - - browserCanvasContext.strokeStyle = progressBar.strokeStyle.replace('@Opacity', progressBar.opacity.toString()) - - browserCanvasContext.setLineDash([1, 4]) - browserCanvasContext.lineWidth = lineWidth - browserCanvasContext.stroke() - } - - function drawLayerDisplay () { - let label1 = thisObject.payload.node.name - let label2 = thisObject.exchange.name.substring(0, 15) + ' - ' + thisObject.market - let label3 = thisObject.status.toUpperCase() - - if (label1 !== undefined) { - label1 = label1.substring(0, 30) - } - - let backgroundColor = UI_COLOR.BLACK - - const RED_LINE_HIGHT = 4 - const OPACITY = 0.75 - - let params = { - cornerRadius: 0, - lineWidth: 1, - container: thisObject.container, - borderColor: UI_COLOR.RUSTED_RED, - castShadow: false, - backgroundColor: backgroundColor, - opacity: OPACITY - } - - roundedCornersBackground(params) - - let parentLabel1FontSize = loadPropertyFromNodeConfig(thisObject.payload.parentNode.payload, 'label1FontSize') - let parentLabel2FontSize = loadPropertyFromNodeConfig(thisObject.payload.parentNode.payload, 'label2FontSize') - let parentLabel3FontSize = loadPropertyFromNodeConfig(thisObject.payload.parentNode.payload, 'label3FontSize') - - let label1FontSize = loadPropertyFromNodeConfig(thisObject.payload, 'label1FontSize') - let label2FontSize = loadPropertyFromNodeConfig(thisObject.payload, 'label2FontSize') - let label3FontSize = loadPropertyFromNodeConfig(thisObject.payload, 'label3FontSize') - - if (parentLabel1FontSize !== undefined) { - label1FontSize = parentLabel1FontSize - } - if (parentLabel2FontSize !== undefined) { - label2FontSize = parentLabel2FontSize - } - if (parentLabel3FontSize !== undefined) { - label3FontSize = parentLabel3FontSize - } - - if (label1FontSize === undefined) { - if (label1.length > 20) { - label1FontSize = 12 - } else { - label1FontSize = 15 - } - } - - if (label2FontSize === undefined) { - label2FontSize = 10 - } - - if (label3FontSize === undefined) { - label3FontSize = 9 - } - - drawLabel(label1, 1 / 2, 6 / 10, -5, 0, label1FontSize, thisObject.container) - drawLabel(label2, 1 / 2, 8.2 / 10, -5, 0, label2FontSize, thisObject.container) - drawLabel(label3, 1 / 2, 9.5 / 10, -5, 0, label3FontSize, thisObject.container) - - drawProgressBar(marketFileProgressBar, 1, -45) - drawProgressBar(dailyFileProgressBar, 1, -46) - drawProgressBar(singleFileProgressBar, 1, -47) - drawProgressBar(fileSequenceProgressBar, 1, -48) - - drawIcon(thisObject.exchangeIcon, 1 / 8, 2 / 10, 0, 0, 14, thisObject.container) - drawIcon(thisObject.plotterTypeIcon, 7 / 8, 2 / 10, 0, 0, 14, thisObject.container) - drawIcon(thisObject.baseAssetIcon, 3.4 / 8, 2 / 10, 0, 0, 14, thisObject.container) - drawIcon(thisObject.quotedAssetIcon, 4.6 / 8, 2 / 10, 0, 0, 14, thisObject.container) - } } + diff --git a/CanvasApp/Panels/LayersPanel.js b/CanvasApp/Panels/LayersPanel.js index 1d50fc947..beb42bad5 100644 --- a/CanvasApp/Panels/LayersPanel.js +++ b/CanvasApp/Panels/LayersPanel.js @@ -1,519 +1,522 @@ -function newLayersPanel () { - let thisObject = { - name: 'Layers Panel', - fitFunction: undefined, - container: undefined, - layers: [], - payload: undefined, - isVisible: true, - upDownButton: undefined, - leftRightButton: undefined, - physics: physics, - draw: draw, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - } - - thisObject.container = newContainer() - thisObject.container.initialize() - thisObject.container.isDraggeable = true - thisObject.container.isWheelable = true - thisObject.container.detectMouseOver = true - - let isInitialized = false - let mouseOverCounter = 0 - - let layersMap = new Map() - let visibleLayers = [] - let firstVisibleLayer = 1 - - const LAYER_SEPARATION = 0 - - let headerHeight = 40 - let footerHeight = 10 - let layerHeight = 70 - let desiredVisibleLayers = 5 - let posibleVisibleLayers = 5 - let desiredPanelHeight = (layerHeight + LAYER_SEPARATION) * desiredVisibleLayers + headerHeight + footerHeight - let posiblePanelHeight = (layerHeight + LAYER_SEPARATION) * posibleVisibleLayers + headerHeight + footerHeight - - let onMouseWheelEventSuscriptionId - let onMouseOverEventSubscriptionId - let onMouseNotOverEventSubscriptionId - - let isMouseOver - return thisObject - - function finalize () { - thisObject.container.eventHandler.stopListening(onMouseWheelEventSuscriptionId) - thisObject.container.eventHandler.stopListening(onMouseOverEventSubscriptionId) - thisObject.container.eventHandler.stopListening(onMouseNotOverEventSubscriptionId) - - thisObject.upDownButton.finalize() - thisObject.upDownButton = undefined - - thisObject.leftRightButton.finalize() - thisObject.leftRightButton = undefined - - layersMap = undefined - visibleLayers = undefined - - thisObject.container.finalize() - thisObject.container = undefined - - thisObject.payload = undefined - thisObject = undefined - } - - function initialize () { - thisObject.container.name = thisObject.payload.node.name - thisObject.container.frame.containerName = thisObject.container.name - thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL - thisObject.container.frame.height = headerHeight - - let position = { // Default position - x: canvas.chartingSpace.viewport.visibleArea.topLeft.x, - y: canvas.chartingSpace.viewport.visibleArea.topLeft.y +function newLayersPanel() { + let thisObject = { + name: 'Layers Panel', + fitFunction: undefined, + container: undefined, + layers: [], + payload: undefined, + isVisible: true, + upDownButton: undefined, + leftRightButton: undefined, + physics: physics, + draw: draw, + getContainer: getContainer, + initialize: initialize, + finalize: finalize } - thisObject.container.frame.position = position - loadFrame(thisObject.payload, thisObject.container.frame) + thisObject.container = newContainer() + thisObject.container.initialize() + thisObject.container.isDraggeable = true + thisObject.container.isWheelable = true + thisObject.container.detectMouseOver = true - thisObject.upDownButton = newUpDownButton() - thisObject.upDownButton.parentContainer = thisObject.container - thisObject.upDownButton.container.frame.parentFrame = thisObject.container.frame - thisObject.upDownButton.fitFunction = thisObject.fitFunction - thisObject.upDownButton.initialize() + let isInitialized = false + let mouseOverCounter = 0 - thisObject.leftRightButton = newLeftRightButton() - thisObject.leftRightButton.parentContainer = thisObject.container - thisObject.leftRightButton.container.frame.parentFrame = thisObject.container.frame - thisObject.leftRightButton.fitFunction = thisObject.fitFunction - thisObject.leftRightButton.initialize() + let layersMap = new Map() + let visibleLayers = [] + let firstVisibleLayer = 1 - onMouseWheelEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseWheel', onMouseWheel) - onMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) - onMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) + const LAYER_SEPARATION = 0 - readObjectState() + let headerHeight = 40 + let footerHeight = 10 + let layerHeight = 70 + let desiredVisibleLayers = 5 + let posibleVisibleLayers = 5 + let desiredPanelHeight = (layerHeight + LAYER_SEPARATION) * desiredVisibleLayers + headerHeight + footerHeight + let posiblePanelHeight = (layerHeight + LAYER_SEPARATION) * posibleVisibleLayers + headerHeight + footerHeight - isInitialized = true - } + let onMouseWheelEventSuscriptionId + let onMouseOverEventSubscriptionId + let onMouseNotOverEventSubscriptionId - function onMouseOver (event) { - isMouseOver = true - } + let isMouseOver + return thisObject - function onMouseNotOver () { - isMouseOver = false - } + function finalize() { + thisObject.container.eventHandler.stopListening(onMouseWheelEventSuscriptionId) + thisObject.container.eventHandler.stopListening(onMouseOverEventSubscriptionId) + thisObject.container.eventHandler.stopListening(onMouseNotOverEventSubscriptionId) - function saveObjectStateVisibleLayers () { - savePropertyAtNodeConfig(thisObject.payload, 'visibleLayers', desiredVisibleLayers) - } + thisObject.upDownButton.finalize() + thisObject.upDownButton = undefined - function saveObjectStatePanelLocation () { - let panelLocation = { - upOrDown: thisObject.upDownButton.status, - leftOrRight: thisObject.leftRightButton.status + thisObject.leftRightButton.finalize() + thisObject.leftRightButton = undefined + + layersMap = undefined + visibleLayers = undefined + + thisObject.container.finalize() + thisObject.container = undefined + + thisObject.payload = undefined + thisObject = undefined } - savePropertyAtNodeConfig(thisObject.payload, 'panelLocation', panelLocation) - } - function readObjectState () { - let storedValue + function initialize() { + thisObject.container.name = thisObject.payload.node.name + thisObject.container.frame.containerName = thisObject.container.name + thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL + thisObject.container.frame.height = headerHeight - storedValue = loadPropertyFromNodeConfig(thisObject.payload, 'visibleLayers') + let position = { // Default position + x: canvas.chartingSpace.viewport.visibleArea.topLeft.x, + y: canvas.chartingSpace.viewport.visibleArea.topLeft.y + } - if (isNaN(storedValue) || storedValue === null || storedValue === undefined) { - // not using this value - saveObjectStateVisibleLayers() // this overrides any invalid value at the config. - return - } else { - if (storedValue < 0) { storedValue = 0 } - if (storedValue > thisObject.layers.length) { - storedValue = thisObject.layers.length - } + thisObject.container.frame.position = position + loadFrame(thisObject.payload, thisObject.container.frame) - if (storedValue !== desiredVisibleLayers) { - desiredVisibleLayers = storedValue + thisObject.upDownButton = newUpDownButton() + thisObject.upDownButton.parentContainer = thisObject.container + thisObject.upDownButton.container.frame.parentFrame = thisObject.container.frame + thisObject.upDownButton.fitFunction = thisObject.fitFunction + thisObject.upDownButton.initialize() + + thisObject.leftRightButton = newLeftRightButton() + thisObject.leftRightButton.parentContainer = thisObject.container + thisObject.leftRightButton.container.frame.parentFrame = thisObject.container.frame + thisObject.leftRightButton.fitFunction = thisObject.fitFunction + thisObject.leftRightButton.initialize() + + onMouseWheelEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseWheel', onMouseWheel) + onMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) + onMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) + + readObjectState() + + isInitialized = true + } + + function onMouseOver(event) { + isMouseOver = true + } + + function onMouseNotOver() { + isMouseOver = false + } + + function saveObjectStateVisibleLayers() { + savePropertyAtNodeConfig(thisObject.payload, 'visibleLayers', desiredVisibleLayers) + } + + function saveObjectStatePanelLocation() { + let panelLocation = { + upOrDown: thisObject.upDownButton.status, + leftOrRight: thisObject.leftRightButton.status + } + savePropertyAtNodeConfig(thisObject.payload, 'panelLocation', panelLocation) + } + + function readObjectState() { + let storedValue + + storedValue = loadPropertyFromNodeConfig(thisObject.payload, 'visibleLayers') + + if (isNaN(storedValue) || storedValue === null || storedValue === undefined) { + // not using this value + saveObjectStateVisibleLayers() // this overrides any invalid value at the config. + return + } else { + if (storedValue < 0) { storedValue = 0 } + if (storedValue > thisObject.layers.length) { + storedValue = thisObject.layers.length + } + + if (storedValue !== desiredVisibleLayers) { + desiredVisibleLayers = storedValue + desiredPanelHeight = (layerHeight + LAYER_SEPARATION) * desiredVisibleLayers + headerHeight + footerHeight + calculateVisbleLayers() + } + } + + storedValue = loadPropertyFromNodeConfig(thisObject.payload, 'panelLocation') + + if (storedValue === null || storedValue === undefined) { + // not using this value + saveObjectStatePanelLocation() // this overrides any invalid value at the config. + return + } else { + if (storedValue.upOrDown !== 'up' && storedValue.upOrDown !== 'down') { + saveObjectStatePanelLocation() // this overrides any invalid value at the config. + return + } + if (storedValue.leftOrRight !== 'left' && storedValue.leftOrRight !== 'right') { + saveObjectStatePanelLocation() // this overrides any invalid value at the config. + return + } + thisObject.upDownButton.setStatus(storedValue.upOrDown) + thisObject.leftRightButton.setStatus(storedValue.leftOrRight) + saveObjectStatePanelLocation() + } + } + + function removeLayer(id) { + let layer = layersMap.get(id) + layersMap.delete(id) + layer.turnOff() + layer.container.eventHandler.stopListening(layer.onLayerStatusChangedEventSuscriptionId) + layer.container.eventHandler.stopListening(layer.onMouseWheelEventSuscriptionId) + layer.finalize() + } + + function addLayer(layerNode) { + /* Now we create Product objects */ + let layer = newLayer() + layer.payload = layerNode.payload + layer.nodeId = layerNode.payload.node.id + layer.fitFunction = thisObject.fitFunction + + /* Initialize it */ + layer.initialize(onInitialized) + + function onInitialized(err) { + if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { + layersMap.set(layerNode.id, layer) + + /* Container Stuff */ + layer.container.frame.parentFrame = thisObject.container.frame + layer.container.parentContainer = thisObject.container + layer.container.isWheelable = true + + /* Add to the Product Array */ + thisObject.layers.push(layer) + + /* Listen to Status Changes Events */ + layer.onLayerStatusChangedEventSuscriptionId = layer.container.eventHandler.listenToEvent('Status Changed', onLayerStatusChanged) + layer.onMouseWheelEventSuscriptionId = layer.container.eventHandler.listenToEvent('onMouseWheel', onMouseWheel) + + layer.checkStatusAtShutDown() + + return + } + } + } + + function onMouseWheel(event) { + delta = event.wheelDelta + if (delta > 0) { + delta = -1 + } else { + delta = 1 + } + + if (event.y - thisObject.container.frame.position.y - CURRENT_TOP_MARGIN < headerHeight) { // Mouse wheel over the header, not a layer + desiredVisibleLayers = desiredVisibleLayers + delta + if (desiredVisibleLayers < 0) { desiredVisibleLayers = 0 } + if (desiredVisibleLayers > thisObject.layers.length) { desiredVisibleLayers = thisObject.layers.length } + } else { + firstVisibleLayer = firstVisibleLayer + delta + } desiredPanelHeight = (layerHeight + LAYER_SEPARATION) * desiredVisibleLayers + headerHeight + footerHeight calculateVisbleLayers() - } + saveObjectStateVisibleLayers() } - storedValue = loadPropertyFromNodeConfig(thisObject.payload, 'panelLocation') + function panelSizePhysics() { + if (isInitialized === false || thisObject.isHidden === true) { return } - if (storedValue === null || storedValue === undefined) { - // not using this value - saveObjectStatePanelLocation() // this overrides any invalid value at the config. - return - } else { - if (storedValue.upOrDown !== 'up' && storedValue.upOrDown !== 'down') { - saveObjectStatePanelLocation() // this overrides any invalid value at the config. - return - } - if (storedValue.leftOrRight !== 'left' && storedValue.leftOrRight !== 'right') { - saveObjectStatePanelLocation() // this overrides any invalid value at the config. - return - } - thisObject.upDownButton.setStatus(storedValue.upOrDown) - thisObject.leftRightButton.setStatus(storedValue.leftOrRight) - saveObjectStatePanelLocation() - } - } + let viewPortHeight = canvas.chartingSpace.viewport.visibleArea.bottomLeft.y - canvas.chartingSpace.viewport.visibleArea.topLeft.y - function removeLayer (id) { - let layer = layersMap.get(id) - layersMap.delete(id) - layer.turnOff() - layer.container.eventHandler.stopListening(layer.onLayerStatusChangedEventSuscriptionId) - layer.container.eventHandler.stopListening(layer.onMouseWheelEventSuscriptionId) - layer.finalize() - } - - function addLayer (layerNode) { - /* Now we create Product objects */ - let layer = newLayer() - layer.payload = layerNode.payload - layer.nodeId = layerNode.payload.node.id - layer.fitFunction = thisObject.fitFunction - - /* Initialize it */ - layer.initialize(onInitialized) - - function onInitialized (err) { - if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { - layersMap.set(layerNode.id, layer) - - /* Container Stuff */ - layer.container.frame.parentFrame = thisObject.container.frame - layer.container.parentContainer = thisObject.container - layer.container.isWheelable = true - - /* Add to the Product Array */ - thisObject.layers.push(layer) - - /* Listen to Status Changes Events */ - layer.onLayerStatusChangedEventSuscriptionId = layer.container.eventHandler.listenToEvent('Status Changed', onLayerStatusChanged) - layer.onMouseWheelEventSuscriptionId = layer.container.eventHandler.listenToEvent('onMouseWheel', onMouseWheel) - - layer.checkStatusAtShutDown() - - return - } - } - } - - function onMouseWheel (event) { - delta = event.wheelDelta - if (delta > 0) { - delta = -1 - } else { - delta = 1 - } - - if (event.y - thisObject.container.frame.position.y - CURRENT_TOP_MARGIN < headerHeight) { // Mouse wheel over the header, not a layer - desiredVisibleLayers = desiredVisibleLayers + delta - if (desiredVisibleLayers < 0) { desiredVisibleLayers = 0 } - if (desiredVisibleLayers > thisObject.layers.length) { desiredVisibleLayers = thisObject.layers.length } - } else { - firstVisibleLayer = firstVisibleLayer + delta - } - desiredPanelHeight = (layerHeight + LAYER_SEPARATION) * desiredVisibleLayers + headerHeight + footerHeight - calculateVisbleLayers() - saveObjectStateVisibleLayers() - } - - function panelSizePhysics () { - if (isInitialized === false || thisObject.isHidden === true) { return } - - let viewPortHeight = canvas.chartingSpace.viewport.visibleArea.bottomLeft.y - canvas.chartingSpace.viewport.visibleArea.topLeft.y - - if (viewPortHeight < headerHeight) { - thisObject.visible = false - } else { - thisObject.visible = true - } - - if (thisObject.visible === false) { return } - - if (desiredPanelHeight > viewPortHeight) { - posibleVisibleLayers = Math.trunc((viewPortHeight - headerHeight - footerHeight) / (layerHeight + LAYER_SEPARATION)) - } else { - posibleVisibleLayers = desiredVisibleLayers - } - if (thisObject.layers.length < posibleVisibleLayers) { posibleVisibleLayers = thisObject.layers.length } - - if (posibleVisibleLayers === 0) { - posiblePanelHeight = (layerHeight + LAYER_SEPARATION) * posibleVisibleLayers + headerHeight - } else { - posiblePanelHeight = (layerHeight + LAYER_SEPARATION) * posibleVisibleLayers + headerHeight + footerHeight - } - - thisObject.container.frame.height = posiblePanelHeight - } - - function calculateVisbleLayers () { - panelSizePhysics() - let availableSlots = posibleVisibleLayers - - if (firstVisibleLayer < 1) { firstVisibleLayer = 1 } - if (firstVisibleLayer > (thisObject.layers.length - availableSlots + 1)) { firstVisibleLayer = thisObject.layers.length - availableSlots + 1 } - - visibleLayers = [] - - for (let i = 0; i < thisObject.layers.length; i++) { - if (i + 1 >= firstVisibleLayer && i + 1 < firstVisibleLayer + availableSlots) { - let layer = thisObject.layers[i] - - layer.container.frame.position.x = 0 - layer.container.frame.position.y = (layerHeight + LAYER_SEPARATION) * visibleLayers.length + headerHeight - - /* Add to Visible Product Array */ - visibleLayers.push(layer) - } - } - } - - function onLayerStatusChanged (layer) { - thisObject.container.eventHandler.raiseEvent('Layer Status Changed', layer) - } - - function getContainer (point, purpose) { - if (isInitialized === false || thisObject.visible === false || thisObject.isHidden === true) { return } - let container - - if (isMouseOver === true && purpose !== GET_CONTAINER_PURPOSE.MOUSE_OVER) { - container = thisObject.upDownButton.getContainer(point) - if (container !== undefined) { return container } - - container = thisObject.leftRightButton.getContainer(point) - if (container !== undefined) { return container } - } - - /* First we check if thisObject point is inside thisObject space. */ - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - /* Now we see which is the inner most container that has it */ - for (let i = 0; i < visibleLayers.length; i++) { - container = visibleLayers[i].getContainer(point) - - if (container !== undefined) { - let checkPoint = { - x: point.x, - y: point.y - } - - checkPoint = thisObject.fitFunction(checkPoint) - - if (point.x === checkPoint.x && point.y === checkPoint.y) { - if (purpose !== GET_CONTAINER_PURPOSE.MOUSE_OVER) { - return container - } - } + if (viewPortHeight < headerHeight) { + thisObject.visible = false + } else { + thisObject.visible = true } - } - /* The point does not belong to any inner container, so we return the current container. */ - let checkPoint = { - x: point.x, - y: point.y - } + if (thisObject.visible === false) { return } - checkPoint = thisObject.fitFunction(checkPoint) - - if (point.x === checkPoint.x && point.y === checkPoint.y) { - return thisObject.container - } - } - } - - function childrenPhysics () { - for (let i = 0; i < thisObject.layers.length; i++) { - let layer = thisObject.layers[i] - layer.physics() - } - } - - function syncWithConfigPhysics () { - readObjectState() - } - - function physics () { - if (isInitialized === false) { return } - if (thisObject.payload.node === undefined) { return } - - thisObject.upDownButton.physics() - thisObject.leftRightButton.physics() - saveFrame(thisObject.payload, thisObject.container.frame) - syncWithConfigPhysics() - - /* - The overall idea here is that we need to keep syncronized the panel with the layers that are - defined at the Designer. Users can connect or disconnect any objext resulting in changes in which - are valid layers and which not at any point in time. So what we do here is trying to keep the panel - only with the layers that are connected to the Charting Space hiriarcy. - - To achieve this, first we are going to move all session related cards to a local array. Then we are - going to check for layers at the designer, and will move back the cards which still have layers well - defined to where they were. - - If we find new layers we will add them at that point. Finally, the cards that still remain at the - local array after all the layers at the designer have been processed, are turned off and discarded. - */ - childrenPhysics() - - let localLayers = [] - moveToLocalLayers() - syncWithDesignerLayers() - - /* At this poins all the cards still at the local array need to be removed from the panel. */ - turnOffUnusedLayers() - calculateVisbleLayers() - - function syncWithDesignerLayers () { - if (thisObject.payload.node === undefined) { return } - let layerManager = thisObject.payload.node - for (let p = 0; p < layerManager.layers.length; p++) { - let layerNode = layerManager.layers[p] - - let found = removeFromLocalLayers(layerNode.id) - if (found !== true) { - layer = addLayer(layerNode) - if (layer !== undefined) { - onLayerStatusChanged(layer) - } + if (desiredPanelHeight > viewPortHeight) { + posibleVisibleLayers = Math.trunc((viewPortHeight - headerHeight - footerHeight) / (layerHeight + LAYER_SEPARATION)) + } else { + posibleVisibleLayers = desiredVisibleLayers } - } + if (thisObject.layers.length < posibleVisibleLayers) { posibleVisibleLayers = thisObject.layers.length } + + if (posibleVisibleLayers === 0) { + posiblePanelHeight = (layerHeight + LAYER_SEPARATION) * posibleVisibleLayers + headerHeight + } else { + posiblePanelHeight = (layerHeight + LAYER_SEPARATION) * posibleVisibleLayers + headerHeight + footerHeight + } + + thisObject.container.frame.height = posiblePanelHeight } - function moveToLocalLayers () { - removeNext() + function calculateVisbleLayers() { + panelSizePhysics() + let availableSlots = posibleVisibleLayers + + if (firstVisibleLayer < 1) { firstVisibleLayer = 1 } + if (firstVisibleLayer > (thisObject.layers.length - availableSlots + 1)) { firstVisibleLayer = thisObject.layers.length - availableSlots + 1 } + + visibleLayers = [] - function removeNext () { for (let i = 0; i < thisObject.layers.length; i++) { - let layer = thisObject.layers[i] + if (i + 1 >= firstVisibleLayer && i + 1 < firstVisibleLayer + availableSlots) { + let layer = thisObject.layers[i] - thisObject.layers.splice(i, 1) - localLayers.push(layer) - removeNext() + layer.container.frame.position.x = 0 + layer.container.frame.position.y = (layerHeight + LAYER_SEPARATION) * visibleLayers.length + headerHeight + + /* Add to Visible Product Array */ + visibleLayers.push(layer) + } } - } } - function removeFromLocalLayers (id) { - for (let i = 0; i < localLayers.length; i++) { - let layer = localLayers[i] - if (layer.payload.node.id === id) { - thisObject.layers.push(layer) - localLayers.splice(i, 1) - return true + function onLayerStatusChanged(layer) { + thisObject.container.eventHandler.raiseEvent('Layer Status Changed', layer) + } + + function getContainer(point, purpose) { + if (isInitialized === false || thisObject.visible === false || thisObject.isHidden === true) { return } + let container + + if (isMouseOver === true && purpose !== GET_CONTAINER_PURPOSE.MOUSE_OVER) { + container = thisObject.upDownButton.getContainer(point) + if (container !== undefined) { return container } + + container = thisObject.leftRightButton.getContainer(point) + if (container !== undefined) { return container } + } + + /* First we check if thisObject point is inside thisObject space. */ + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + /* Now we see which is the inner most container that has it */ + for (let i = 0; i < visibleLayers.length; i++) { + container = visibleLayers[i].getContainer(point) + + if (container !== undefined) { + let checkPoint = { + x: point.x, + y: point.y + } + + checkPoint = thisObject.fitFunction(checkPoint) + + if (point.x === checkPoint.x && point.y === checkPoint.y) { + if (purpose !== GET_CONTAINER_PURPOSE.MOUSE_OVER) { + return container + } + } + } + } + + /* The point does not belong to any inner container, so we return the current container. */ + let checkPoint = { + x: point.x, + y: point.y + } + + checkPoint = thisObject.fitFunction(checkPoint) + + if (point.x === checkPoint.x && point.y === checkPoint.y) { + return thisObject.container + } } - } } - function turnOffUnusedLayers () { - for (let i = 0; i < localLayers.length; i++) { - let layer = localLayers[i] - removeLayer(layer.nodeId) - } - } - } - - function draw () { - if (isInitialized === false || thisObject.visible === false || thisObject.isHidden === true) { return } - - // thisObject.container.frame.draw(false, false, false, thisObject.fitFunction) - - drawHeader() - for (let i = 0; i < visibleLayers.length; i++) { - visibleLayers[i].draw() - } - drawScrollBar() - if (isMouseOver === true) { - thisObject.upDownButton.draw() - thisObject.leftRightButton.draw() - } - } - - function drawHeader () { - if (thisObject.payload === undefined) { return } - if (thisObject.payload.node === undefined) { return } - if (thisObject.payload.node.payload.parentNode === undefined) { return } - if (thisObject.payload.node.payload.parentNode.payload.parentNode === undefined) { return } - - let label1 = thisObject.payload.node.payload.parentNode.payload.parentNode.name.substring(0, 18) - let label2 = thisObject.payload.node.payload.parentNode.name.substring(0, 18) - let label3 = '' - - let icon1 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.payload.parentNode.type) - let icon2 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.type) - - let backgroundColor = UI_COLOR.BLACK - - let params = { - cornerRadius: 5, - lineWidth: 1, - container: thisObject.container, - borderColor: UI_COLOR.RUSTED_RED, - castShadow: false, - backgroundColor: backgroundColor, - opacity: 1 + function childrenPhysics() { + for (let i = 0; i < thisObject.layers.length; i++) { + let layer = thisObject.layers[i] + layer.physics() + } } - roundedCornersBackground(params) - - drawLabel(label1, 1 / 2, 0, 0, 15, 9, thisObject.container) - drawLabel(label2, 1 / 2, 0, 0, 30, 9, thisObject.container) - - drawIcon(icon1, 1 / 8, 0, 0, 20, 28, thisObject.container) - drawIcon(icon2, 7 / 8, 0, 0, 20, 28, thisObject.container) - } - - function drawScrollBar () { - if (thisObject.layers.length > posibleVisibleLayers && posibleVisibleLayers > 0) { - let xOffset = 4 - let barTopPoint = { - x: thisObject.container.frame.width - xOffset, - y: headerHeight - } - let barBottomPoint = { - x: thisObject.container.frame.width - xOffset, - y: thisObject.container.frame.height - footerHeight - } - let ratio = posibleVisibleLayers / thisObject.layers.length - let handleHeight = (posibleVisibleLayers * (layerHeight + LAYER_SEPARATION)) * ratio - let handleTopPoint = { - x: thisObject.container.frame.width - xOffset, - y: headerHeight + (layerHeight + LAYER_SEPARATION) * ratio * (firstVisibleLayer - 1) - } - let handleBottomPoint = { - x: thisObject.container.frame.width - xOffset, - y: handleTopPoint.y + handleHeight - } - barTopPoint = thisObject.container.frame.frameThisPoint(barTopPoint) - barBottomPoint = thisObject.container.frame.frameThisPoint(barBottomPoint) - handleTopPoint = thisObject.container.frame.frameThisPoint(handleTopPoint) - handleBottomPoint = thisObject.container.frame.frameThisPoint(handleBottomPoint) - - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(barTopPoint.x, barTopPoint.y) - browserCanvasContext.lineTo(barBottomPoint.x, barBottomPoint.y) - browserCanvasContext.closePath() - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.lineWidth = 1 - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GREY + ', ' + 1 + ')' - browserCanvasContext.stroke() - - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(handleTopPoint.x, handleTopPoint.y) - browserCanvasContext.lineTo(handleBottomPoint.x, handleBottomPoint.y) - browserCanvasContext.closePath() - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.lineWidth = 4 - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.PATINATED_TURQUOISE + ', ' + 1 + ')' - browserCanvasContext.stroke() + function syncWithConfigPhysics() { + readObjectState() + } + + function physics() { + if (isInitialized === false) { return } + if (thisObject.payload.node === undefined) { return } + + thisObject.upDownButton.physics() + thisObject.leftRightButton.physics() + saveFrame(thisObject.payload, thisObject.container.frame) + syncWithConfigPhysics() + + /* + The overall idea here is that we need to keep syncronized the panel with the layers that are + defined at the Designer. Users can connect or disconnect any objext resulting in changes in which + are valid layers and which not at any point in time. So what we do here is trying to keep the panel + only with the layers that are connected to the Charting Space hiriarcy. + + To achieve this, first we are going to move all session related cards to a local array. Then we are + going to check for layers at the designer, and will move back the cards which still have layers well + defined to where they were. + + If we find new layers we will add them at that point. Finally, the cards that still remain at the + local array after all the layers at the designer have been processed, are turned off and discarded. + */ + childrenPhysics() + + let localLayers = [] + moveToLocalLayers() + syncWithDesignerLayers() + + /* At this poins all the cards still at the local array need to be removed from the panel. */ + turnOffUnusedLayers() + calculateVisbleLayers() + + function syncWithDesignerLayers() { + if (thisObject.payload.node === undefined) { return } + let layerManager = thisObject.payload.node + let layers = nodeBranchToArray(layerManager, 'Layer') + for (let p = 0; p < layers.length; p++) { + let layerNode = layers[p] + + let found = removeFromLocalLayers(layerNode.id) + if (found !== true) { + layer = addLayer(layerNode) + if (layer !== undefined) { + onLayerStatusChanged(layer) + } + } + } + } + + function moveToLocalLayers() { + removeNext() + + function removeNext() { + for (let i = 0; i < thisObject.layers.length; i++) { + let layer = thisObject.layers[i] + + thisObject.layers.splice(i, 1) + localLayers.push(layer) + removeNext() + } + } + } + + function removeFromLocalLayers(id) { + for (let i = 0; i < localLayers.length; i++) { + let layer = localLayers[i] + if (layer.payload === undefined) {continue} + if (layer.payload.node === undefined) {continue} + if (layer.payload.node.id === id) { + thisObject.layers.push(layer) + localLayers.splice(i, 1) + return true + } + } + } + + function turnOffUnusedLayers() { + for (let i = 0; i < localLayers.length; i++) { + let layer = localLayers[i] + removeLayer(layer.nodeId) + } + } + } + + function draw() { + if (isInitialized === false || thisObject.visible === false || thisObject.isHidden === true) { return } + + // thisObject.container.frame.draw(false, false, false, thisObject.fitFunction) + + drawHeader() + for (let i = 0; i < visibleLayers.length; i++) { + visibleLayers[i].draw() + } + drawScrollBar() + if (isMouseOver === true) { + thisObject.upDownButton.draw() + thisObject.leftRightButton.draw() + } + } + + function drawHeader() { + if (thisObject.payload === undefined) { return } + if (thisObject.payload.node === undefined) { return } + if (thisObject.payload.node.payload.parentNode === undefined) { return } + if (thisObject.payload.node.payload.parentNode.payload.parentNode === undefined) { return } + + let label1 = thisObject.payload.node.payload.parentNode.payload.parentNode.name.substring(0, 18) + let label2 = thisObject.payload.node.payload.parentNode.name.substring(0, 18) + let label3 = '' + + let icon1 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.payload.parentNode.type) + let icon2 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.type) + + let backgroundColor = UI_COLOR.BLACK + + let params = { + cornerRadius: 5, + lineWidth: 1, + container: thisObject.container, + borderColor: UI_COLOR.RUSTED_RED, + castShadow: false, + backgroundColor: backgroundColor, + opacity: 1 + } + + roundedCornersBackground(params) + + drawLabel(label1, 1 / 2, 0, 0, 15, 9, thisObject.container) + drawLabel(label2, 1 / 2, 0, 0, 30, 9, thisObject.container) + + drawIcon(icon1, 1 / 8, 0, 0, 20, 28, thisObject.container) + drawIcon(icon2, 7 / 8, 0, 0, 20, 28, thisObject.container) + } + + function drawScrollBar() { + if (thisObject.layers.length > posibleVisibleLayers && posibleVisibleLayers > 0) { + let xOffset = 4 + let barTopPoint = { + x: thisObject.container.frame.width - xOffset, + y: headerHeight + } + let barBottomPoint = { + x: thisObject.container.frame.width - xOffset, + y: thisObject.container.frame.height - footerHeight + } + let ratio = posibleVisibleLayers / thisObject.layers.length + let handleHeight = (posibleVisibleLayers * (layerHeight + LAYER_SEPARATION)) * ratio + let handleTopPoint = { + x: thisObject.container.frame.width - xOffset, + y: headerHeight + (layerHeight + LAYER_SEPARATION) * ratio * (firstVisibleLayer - 1) + } + let handleBottomPoint = { + x: thisObject.container.frame.width - xOffset, + y: handleTopPoint.y + handleHeight + } + barTopPoint = thisObject.container.frame.frameThisPoint(barTopPoint) + barBottomPoint = thisObject.container.frame.frameThisPoint(barBottomPoint) + handleTopPoint = thisObject.container.frame.frameThisPoint(handleTopPoint) + handleBottomPoint = thisObject.container.frame.frameThisPoint(handleBottomPoint) + + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(barTopPoint.x, barTopPoint.y) + browserCanvasContext.lineTo(barBottomPoint.x, barBottomPoint.y) + browserCanvasContext.closePath() + browserCanvasContext.setLineDash([0, 0]) + browserCanvasContext.lineWidth = 1 + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GREY + ', ' + 1 + ')' + browserCanvasContext.stroke() + + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(handleTopPoint.x, handleTopPoint.y) + browserCanvasContext.lineTo(handleBottomPoint.x, handleBottomPoint.y) + browserCanvasContext.closePath() + browserCanvasContext.setLineDash([0, 0]) + browserCanvasContext.lineWidth = 4 + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.PATINATED_TURQUOISE + ', ' + 1 + ')' + browserCanvasContext.stroke() + } } - } } diff --git a/CanvasApp/Panels/LeftRightButton.js b/CanvasApp/Panels/LeftRightButton.js index cac7c7345..9478e83ee 100644 --- a/CanvasApp/Panels/LeftRightButton.js +++ b/CanvasApp/Panels/LeftRightButton.js @@ -1,244 +1,244 @@ -function newLeftRightButton () { - let thisObject = { - container: undefined, - fitFunction: undefined, - parentContainer: undefined, - status: undefined, - setStatus: setStatus, - physics: physics, - draw: draw, - getContainer: getContainer, // returns the inner most container that holds the point received by parameter. - initialize: initialize, - finalize: finalize - } - - let isInitialized = false - /* Cointainer stuff */ - - thisObject.container = newContainer() - thisObject.container.name = 'Left Right Button' - thisObject.container.initialize() - thisObject.container.isClickeable = true - thisObject.container.isDraggeable = false - thisObject.container.frame.containerName = 'Left Right Button' - - thisObject.status = 'left' - let leftPosition = {} - let rightPosition = {} - let transitionPosition = {} - - let onMouseClickEventSuscriptionId - return thisObject - - function finalize () { - thisObject.container.eventHandler.stopListening(onMouseClickEventSuscriptionId) - thisObject.container.finalize() - thisObject.container = undefined - thisObject.fitFunction = undefined - thisObject.parentContainer = undefined - - thisObject.status = undefined - leftPosition = undefined - rightPosition = undefined - transitionPosition = undefined - } - - function initialize () { - thisObject.container.frame.width = 12 - thisObject.container.frame.height = 12 - - let position = { - x: thisObject.container.frame.parentFrame.width * 2.25 / 8 - thisObject.container.frame.width / 2, - y: 40 * 4 / 8 - thisObject.container.frame.height / 2 +function newLeftRightButton() { + let thisObject = { + container: undefined, + fitFunction: undefined, + parentContainer: undefined, + status: undefined, + setStatus: setStatus, + physics: physics, + draw: draw, + getContainer: getContainer, // returns the inner most container that holds the point received by parameter. + initialize: initialize, + finalize: finalize } - thisObject.container.frame.position = position + let isInitialized = false + /* Cointainer stuff */ - leftPosition.x = thisObject.parentContainer.frame.position.x - leftPosition.y = thisObject.parentContainer.frame.position.y + thisObject.container = newContainer() + thisObject.container.name = 'Left Right Button' + thisObject.container.initialize() + thisObject.container.isClickeable = true + thisObject.container.isDraggeable = false + thisObject.container.frame.containerName = 'Left Right Button' - rightPosition.x = thisObject.parentContainer.frame.position.x - rightPosition.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y + thisObject.status = 'left' + let leftPosition = {} + let rightPosition = {} + let transitionPosition = {} - transitionPosition.x = leftPosition.x - transitionPosition.y = leftPosition.y + let onMouseClickEventSuscriptionId + return thisObject - /* Lets listen to our own events to react when we have a Mouse Click */ - onMouseClickEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) + function finalize() { + thisObject.container.eventHandler.stopListening(onMouseClickEventSuscriptionId) + thisObject.container.finalize() + thisObject.container = undefined + thisObject.fitFunction = undefined + thisObject.parentContainer = undefined - isInitialized = true - } - - function setStatus (value) { - if (value === 'left' && thisObject.status === 'right') { - thisObject.status = 'going left' + thisObject.status = undefined + leftPosition = undefined + rightPosition = undefined + transitionPosition = undefined } - if (value === 'right' && thisObject.status === 'left') { - thisObject.status = 'going right' + + function initialize() { + thisObject.container.frame.width = 12 + thisObject.container.frame.height = 12 + + let position = { + x: thisObject.container.frame.parentFrame.width * 2.25 / 8 - thisObject.container.frame.width / 2, + y: 40 * 4 / 8 - thisObject.container.frame.height / 2 + } + + thisObject.container.frame.position = position + + leftPosition.x = thisObject.parentContainer.frame.position.x + leftPosition.y = thisObject.parentContainer.frame.position.y + + rightPosition.x = thisObject.parentContainer.frame.position.x + rightPosition.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y + + transitionPosition.x = leftPosition.x + transitionPosition.y = leftPosition.y + + /* Lets listen to our own events to react when we have a Mouse Click */ + onMouseClickEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) + + isInitialized = true } - } - function onMouseClick (event) { - if (thisObject.status === 'left') { - transitionPosition.x = leftPosition.x - transitionPosition.y = leftPosition.y - - thisObject.status = 'going right' - } else { - transitionPosition.x = rightPosition.x - transitionPosition.y = rightPosition.y - - thisObject.status = 'going left' + function setStatus(value) { + if (value === 'left' && thisObject.status === 'right') { + thisObject.status = 'going left' + } + if (value === 'right' && thisObject.status === 'left') { + thisObject.status = 'going right' + } } - } - function physics () { - if (isInitialized === false) { return } + function onMouseClick(event) { + if (thisObject.status === 'left') { + transitionPosition.x = leftPosition.x + transitionPosition.y = leftPosition.y - leftPosition.x = canvas.chartingSpace.viewport.visibleArea.topLeft.x - leftPosition.y = thisObject.parentContainer.frame.position.y + thisObject.status = 'going right' + } else { + transitionPosition.x = rightPosition.x + transitionPosition.y = rightPosition.y - rightPosition.x = canvas.chartingSpace.viewport.visibleArea.bottomRight.x - rightPosition.y = thisObject.parentContainer.frame.position.y - - if (thisObject.status === 'going right') { - if (transitionPosition.x < rightPosition.x) { - transitionPosition.x = transitionPosition.x + 50 - thisObject.parentContainer.frame.position.x = transitionPosition.x - } else { - thisObject.parentContainer.frame.position.x = rightPosition.x - thisObject.status = 'right' - } + thisObject.status = 'going left' + } } - if (thisObject.status === 'going left') { - if (transitionPosition.x > leftPosition.x) { - transitionPosition.x = transitionPosition.x - 50 - thisObject.parentContainer.frame.position.x = transitionPosition.x - } else { - thisObject.parentContainer.frame.position.x = leftPosition.x - thisObject.status = 'left' - } + + function physics() { + if (isInitialized === false) { return } + + leftPosition.x = canvas.chartingSpace.viewport.visibleArea.topLeft.x + leftPosition.y = thisObject.parentContainer.frame.position.y + + rightPosition.x = canvas.chartingSpace.viewport.visibleArea.bottomRight.x + rightPosition.y = thisObject.parentContainer.frame.position.y + + if (thisObject.status === 'going right') { + if (transitionPosition.x < rightPosition.x) { + transitionPosition.x = transitionPosition.x + 50 + thisObject.parentContainer.frame.position.x = transitionPosition.x + } else { + thisObject.parentContainer.frame.position.x = rightPosition.x + thisObject.status = 'right' + } + } + if (thisObject.status === 'going left') { + if (transitionPosition.x > leftPosition.x) { + transitionPosition.x = transitionPosition.x - 50 + thisObject.parentContainer.frame.position.x = transitionPosition.x + } else { + thisObject.parentContainer.frame.position.x = leftPosition.x + thisObject.status = 'left' + } + } } - } - function draw () { - if (isInitialized === false) { return } + function draw() { + if (isInitialized === false) { return } - drawButton() - } - - function getContainer (point, purpose) { - let container - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - return thisObject.container + drawButton() } - } - function drawButton () { - let point1 - let point2 - let point3 - - switch (thisObject.status) { - case 'left': { - point1 = { - x: 3, - y: 3 + function getContainer(point, purpose) { + let container + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + return thisObject.container } - - point2 = { - x: 3, - y: thisObject.container.frame.height - 3 - } - - point3 = { - x: thisObject.container.frame.width - 3, - y: thisObject.container.frame.height / 2 - } - break - } - - case 'going right': { - point1 = { - x: 4, - y: 4 - } - - point2 = { - x: 4, - y: thisObject.container.frame.height - 4 - } - - point3 = { - x: thisObject.container.frame.width - 4, - y: thisObject.container.frame.height / 2 - } - break - } - - case 'going left': { - point1 = { - x: thisObject.container.frame.width - 4, - y: 4 - } - - point2 = { - x: thisObject.container.frame.width - 4, - y: thisObject.container.frame.height - 4 - } - - point3 = { - x: 4, - y: thisObject.container.frame.height / 2 - } - break - } - - case 'right': { - point1 = { - x: thisObject.container.frame.width - 3, - y: 3 - } - - point2 = { - x: thisObject.container.frame.width - 3, - y: thisObject.container.frame.height - 3 - } - - point3 = { - x: 3, - y: thisObject.container.frame.height / 2 - } - break - } } + function drawButton() { + let point1 + let point2 + let point3 + + switch (thisObject.status) { + case 'left': { + point1 = { + x: 3, + y: 3 + } + + point2 = { + x: 3, + y: thisObject.container.frame.height - 3 + } + + point3 = { + x: thisObject.container.frame.width - 3, + y: thisObject.container.frame.height / 2 + } + break + } + + case 'going right': { + point1 = { + x: 4, + y: 4 + } + + point2 = { + x: 4, + y: thisObject.container.frame.height - 4 + } + + point3 = { + x: thisObject.container.frame.width - 4, + y: thisObject.container.frame.height / 2 + } + break + } + + case 'going left': { + point1 = { + x: thisObject.container.frame.width - 4, + y: 4 + } + + point2 = { + x: thisObject.container.frame.width - 4, + y: thisObject.container.frame.height - 4 + } + + point3 = { + x: 4, + y: thisObject.container.frame.height / 2 + } + break + } + + case 'right': { + point1 = { + x: thisObject.container.frame.width - 3, + y: 3 + } + + point2 = { + x: thisObject.container.frame.width - 3, + y: thisObject.container.frame.height - 3 + } + + point3 = { + x: 3, + y: thisObject.container.frame.height / 2 + } + break + } + } + /* Now the transformations. */ - point1 = thisObject.container.frame.frameThisPoint(point1) - point2 = thisObject.container.frame.frameThisPoint(point2) - point3 = thisObject.container.frame.frameThisPoint(point3) + point1 = thisObject.container.frame.frameThisPoint(point1) + point2 = thisObject.container.frame.frameThisPoint(point2) + point3 = thisObject.container.frame.frameThisPoint(point3) - if (thisObject.fitFunction !== undefined) { - point1 = thisObject.fitFunction(point1) - point2 = thisObject.fitFunction(point2) - point3 = thisObject.fitFunction(point3) - } + if (thisObject.fitFunction !== undefined) { + point1 = thisObject.fitFunction(point1) + point2 = thisObject.fitFunction(point2) + point3 = thisObject.fitFunction(point3) + } /* Lets start the drawing. */ - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(point1.x, point1.y) - browserCanvasContext.lineTo(point2.x, point2.y) - browserCanvasContext.lineTo(point3.x, point3.y) - browserCanvasContext.lineTo(point1.x, point1.y) - browserCanvasContext.closePath() + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(point1.x, point1.y) + browserCanvasContext.lineTo(point2.x, point2.y) + browserCanvasContext.lineTo(point3.x, point3.y) + browserCanvasContext.lineTo(point1.x, point1.y) + browserCanvasContext.closePath() - browserCanvasContext.strokeStyle = 'rgba(250, 250, 250, 1)' - browserCanvasContext.lineWidth = 1 - browserCanvasContext.stroke() + browserCanvasContext.strokeStyle = 'rgba(250, 250, 250, 1)' + browserCanvasContext.lineWidth = 1 + browserCanvasContext.stroke() - browserCanvasContext.fillStyle = 'rgba(250, 250, 250, 1)' - browserCanvasContext.fill() - } + browserCanvasContext.fillStyle = 'rgba(250, 250, 250, 1)' + browserCanvasContext.fill() + } } diff --git a/CanvasApp/Panels/PanelsVisibleButton.js b/CanvasApp/Panels/PanelsVisibleButton.js index b2266845e..7c2528eba 100644 --- a/CanvasApp/Panels/PanelsVisibleButton.js +++ b/CanvasApp/Panels/PanelsVisibleButton.js @@ -1,84 +1,84 @@ -function newPanelsVisibleButton () { - let thisObject = { - container: undefined, - fitFunction: undefined, - parentContainer: undefined, - panels: undefined, - showPanels: true, - draw: draw, - getContainer: getContainer, // returns the inner most container that holds the point received by parameter. - initialize: initialize, - finalize: finalize - } - - /* Cointainer stuff */ - thisObject.container = newContainer() - thisObject.container.name = 'Panels Visible Button' - thisObject.container.initialize() - thisObject.container.isClickeable = true - thisObject.container.isDraggeable = false - thisObject.container.frame.containerName = 'Panels Visible Button' - - let onMouseClickEventSuscriptionId - return thisObject - - function finalize () { - thisObject.container.eventHandler.stopListening(onMouseClickEventSuscriptionId) - thisObject.container.finalize() - thisObject.container = undefined - thisObject.fitFunction = undefined - thisObject.parentContainer = undefined - thisObject.panels = undefined - } - - function initialize (panels) { - thisObject.panels = panels - setPanelVisibility() - - thisObject.container.frame.width = 25 - thisObject.container.frame.height = 25 - - let position = { - x: thisObject.container.frame.width * 1 / 8, - y: 45 +function newPanelsVisibleButton() { + let thisObject = { + container: undefined, + fitFunction: undefined, + parentContainer: undefined, + panels: undefined, + showPanels: true, + draw: draw, + getContainer: getContainer, // returns the inner most container that holds the point received by parameter. + initialize: initialize, + finalize: finalize } - thisObject.container.frame.position = position + /* Cointainer stuff */ + thisObject.container = newContainer() + thisObject.container.name = 'Panels Visible Button' + thisObject.container.initialize() + thisObject.container.isClickeable = true + thisObject.container.isDraggeable = false + thisObject.container.frame.containerName = 'Panels Visible Button' - /* Lets listen to our own events to react when we have a Mouse Click */ - onMouseClickEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) - } + let onMouseClickEventSuscriptionId + return thisObject - function onMouseClick (event) { - if (thisObject.showPanels === false) { - thisObject.showPanels = true - } else { - thisObject.showPanels = false - } - setPanelVisibility() - } - - function setPanelVisibility () { - for (let i = 0; i < thisObject.panels.length; i++) { - panel = canvas.panelsSpace.getPanel(thisObject.panels[i]) - panel.isVisible = thisObject.showPanels - } - } - - function getContainer (point) { - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - return thisObject.container - } - } - - function draw () { - let icon - if (thisObject.showPanels === true) { - icon = canvas.designSpace.iconCollection.get('plotter-panel') - } else { - icon = canvas.designSpace.iconCollection.get('toggle-panel-off') + function finalize() { + thisObject.container.eventHandler.stopListening(onMouseClickEventSuscriptionId) + thisObject.container.finalize() + thisObject.container = undefined + thisObject.fitFunction = undefined + thisObject.parentContainer = undefined + thisObject.panels = undefined } - drawIcon(icon, 1 / 2, 1 / 2, 0, 0, 14, thisObject.container) - } + function initialize(panels) { + thisObject.panels = panels + setPanelVisibility() + + thisObject.container.frame.width = 25 + thisObject.container.frame.height = 25 + + let position = { + x: thisObject.container.frame.width * 1 / 8, + y: 45 + } + + thisObject.container.frame.position = position + + /* Lets listen to our own events to react when we have a Mouse Click */ + onMouseClickEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) + } + + function onMouseClick(event) { + if (thisObject.showPanels === false) { + thisObject.showPanels = true + } else { + thisObject.showPanels = false + } + setPanelVisibility() + } + + function setPanelVisibility() { + for (let i = 0; i < thisObject.panels.length; i++) { + panel = canvas.panelsSpace.getPanel(thisObject.panels[i]) + panel.isVisible = thisObject.showPanels + } + } + + function getContainer(point) { + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + return thisObject.container + } + } + + function draw() { + let icon + if (thisObject.showPanels === true) { + icon = canvas.designSpace.iconCollection.get('plotter-panel') + } else { + icon = canvas.designSpace.iconCollection.get('toggle-panel-off') + } + + drawIcon(icon, 1 / 2, 1 / 2, 0, 0, 14, thisObject.container) + } } diff --git a/CanvasApp/Panels/PlotterPanel.js b/CanvasApp/Panels/PlotterPanel.js index e50ebebde..65e873eac 100644 --- a/CanvasApp/Panels/PlotterPanel.js +++ b/CanvasApp/Panels/PlotterPanel.js @@ -1,178 +1,184 @@ -function newPlotterPanel () { - const MODULE_NAME = 'Plotter Panel' - const ERROR_LOG = true - const INTENSIVE_LOG = false - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME +function newPlotterPanel() { + const MODULE_NAME = 'Plotter Panel' + const ERROR_LOG = true + const INTENSIVE_LOG = false + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME - let thisObject = { - fitFunction: undefined, - container: undefined, - isVisible: true, - onRecordChange: onRecordChange, - draw: draw, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - } - - thisObject.container = newContainer() - thisObject.container.initialize('Plotter Panel') - - let heightFactor = 1 - let currentRecord - let upDownButton - let panelNode - - return thisObject - - function finalize () { - thisObject.container.finalize() - thisObject.container = undefined - thisObject.fitFunction = undefined - thisObject.isVisible = undefined - - heightFactor = undefined - currentRecord = undefined - upDownButton.finalize() - upDownButton = undefined - panelNode = undefined - } - - function initialize (pPanelNode) { - panelNode = pPanelNode - thisObject.container.frame.containerName = panelNode.name - - thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL - thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL - - thisObject.container.frame.position.x = canvas.chartingSpace.viewport.visibleArea.topRight.x - thisObject.container.frame.width - thisObject.container.frame.width * Math.random() * 8 - thisObject.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.bottomLeft.y - thisObject.container.frame.height - thisObject.container.frame.height * Math.random() * 1.5 - - upDownButton = newUpDownButton() - upDownButton.parentContainer = thisObject.container - upDownButton.container.frame.parentFrame = thisObject.container.frame - upDownButton.fitFunction = thisObject.fitFunction - upDownButton.initialize() - } - - function getContainer (point) { - if (thisObject.isVisible !== true) { return } - let container - - container = upDownButton.getContainer(point) - if (container !== undefined) { return container } - - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - let checkPoint = { - x: point.x, - y: point.y - } - - checkPoint = thisObject.fitFunction(checkPoint) - - if (point.x === checkPoint.x && point.y === checkPoint.y) { - return thisObject.container - } - } - } - - function onRecordChange (pCurrentRecord) { - currentRecord = pCurrentRecord - } - - function draw () { - if (thisObject.isVisible !== true) { return } - - thisObject.container.frame.draw(false, false, true, thisObject.fitFunction) - plotCurrentRecordData() - upDownButton.draw() - } - - function plotCurrentRecordData () { - const frameBodyHeight = thisObject.container.frame.getBodyHeight() - const frameTitleHeight = thisObject.container.frame.height - frameBodyHeight - - const X_AXIS = thisObject.container.frame.width / 2 - const Y_AXIS = frameTitleHeight + frameBodyHeight / 2 - - const PANEL_HEIGHT = UI_PANEL.HEIGHT.NORMAL - - if (currentRecord === undefined) { return } - if (currentRecord.data === undefined) { return } - - let record = currentRecord.data - - /* First we execute code if provided. */ - if (panelNode.javascriptCode !== undefined) { - try { - eval(panelNode.javascriptCode.code) - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] plotCurrentRecordData -> err = ' + err.stack) } - if (ERROR_LOG === true) { logger.write('[ERROR] plotCurrentRecordData -> javascriptCode.code = ' + panelNode.javascriptCode.code) } - } + let thisObject = { + fitFunction: undefined, + container: undefined, + isVisible: true, + onRecordChange: onRecordChange, + draw: draw, + getContainer: getContainer, + initialize: initialize, + finalize: finalize } - printLabel('Indicator Properties', X_AXIS, UI_PANEL.HEIGHT.NORMAL * 17 / 100, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction) + thisObject.container = newContainer() + thisObject.container.initialize('Plotter Panel') - /* Second we go through the panel data. */ - if (panelNode.panelData === undefined) { return } - for (let i = 0; i < panelNode.panelData.length; i++) { - let panelData = panelNode.panelData[i] + let heightFactor = 1 + let currentRecord + let upDownButton + let panelNode - let labelText = panelData.name - let labelPosition = i * 10 + 25 - let valuePosition = i * 10 + 30 - let value = 'No value defined.' + return thisObject - if (valuePosition > 100) { - thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL * 1.25 - } + function finalize() { + thisObject.container.finalize() + thisObject.container = undefined + thisObject.fitFunction = undefined + thisObject.isVisible = undefined - if (valuePosition > 125) { - thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL * 1.50 - } + heightFactor = undefined + currentRecord = undefined + upDownButton.finalize() + upDownButton = undefined + panelNode = undefined + } - if (valuePosition > 150) { - thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL * 1.75 - } + function initialize(pPanelNode) { + panelNode = pPanelNode + thisObject.container.frame.containerName = panelNode.name - if (valuePosition > 175) { - thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL * 2.00 - } + thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL + thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL - if (panelData.dataFormula !== undefined) { - try { - value = eval(panelData.dataFormula.code) - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] plotCurrentRecordData -> err = ' + err.stack) } - if (ERROR_LOG === true) { logger.write('[ERROR] plotCurrentRecordData -> dataFormula.code = ' + panelData.dataFormula.code) } + thisObject.container.frame.position.x = canvas.chartingSpace.viewport.visibleArea.topRight.x - thisObject.container.frame.width - thisObject.container.frame.width * Math.random() * 8 + thisObject.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.bottomLeft.y - thisObject.container.frame.height - thisObject.container.frame.height * Math.random() * 1.5 + + upDownButton = newUpDownButton() + upDownButton.parentContainer = thisObject.container + upDownButton.container.frame.parentFrame = thisObject.container.frame + upDownButton.fitFunction = thisObject.fitFunction + upDownButton.initialize() + } + + function getContainer(point) { + if (thisObject.isVisible !== true) { return } + let container + + container = upDownButton.getContainer(point) + if (container !== undefined) { return container } + + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + let checkPoint = { + x: point.x, + y: point.y + } + + checkPoint = thisObject.fitFunction(checkPoint) + + if (point.x === checkPoint.x && point.y === checkPoint.y) { + return thisObject.container + } + } + } + + function onRecordChange(pCurrentRecord) { + currentRecord = pCurrentRecord + } + + function draw() { + if (thisObject.isVisible !== true) { return } + + thisObject.container.frame.draw(false, false, true, thisObject.fitFunction) + plotCurrentRecordData() + upDownButton.draw() + } + + function plotCurrentRecordData() { + const frameBodyHeight = thisObject.container.frame.getBodyHeight() + const frameTitleHeight = thisObject.container.frame.height - frameBodyHeight + + const X_AXIS = thisObject.container.frame.width / 2 + const Y_AXIS = frameTitleHeight + frameBodyHeight / 2 + + const PANEL_HEIGHT = UI_PANEL.HEIGHT.NORMAL + + if (currentRecord === undefined) { return } + let record = currentRecord + + /* First we execute code if provided. */ + if (panelNode.javascriptCode !== undefined) { + try { + eval(panelNode.javascriptCode.code) + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] plotCurrentRecordData -> err = ' + err.stack) } + if (ERROR_LOG === true) { logger.write('[ERROR] plotCurrentRecordData -> javascriptCode.code = ' + panelNode.javascriptCode.code) } + } + } + + /* Second we go through the panel data. */ + if (panelNode.panelData === undefined) { return } + for (let i = 0; i < panelNode.panelData.length; i++) { + let panelData = panelNode.panelData[i] + + let labelText = panelData.name + let labelPosition = i * 10 + 12 + let valuePosition = i * 10 + 17 + let value = 'No value defined.' + + if (valuePosition > 100) { + thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL * 1.25 + } + + if (valuePosition > 125) { + thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL * 1.50 + } + + if (valuePosition > 150) { + thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL * 1.75 + } + + if (valuePosition > 175) { + thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL * 2.00 + } + + if (panelData.dataFormula !== undefined) { + try { + value = eval(panelData.dataFormula.code) + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] plotCurrentRecordData -> err = ' + err.stack) } + if (ERROR_LOG === true) { logger.write('[ERROR] plotCurrentRecordData -> dataFormula.code = ' + panelData.dataFormula.code) } + } + } + + if (panelData.config.valueDecimals !== undefined) { + if (value !== undefined) { + if (isNaN(value) === false) { + value = dynamicDecimals(value, panelData.config.valueDecimals) + } + } + } + + if (panelData.config.labelText !== undefined) { + labelText = panelData.config.labelText + } + + if (panelData.config.labelPosition !== undefined) { + labelPosition = panelData.config.labelPosition + } + + if (panelData.config.valuePosition !== undefined) { + valuePosition = panelData.config.valuePosition + } + + let opacity = '1.00' + let fontSize = 14 + let paletteColor + + if (panelData.textStyle !== undefined) { + if (panelData.textStyle.config.fontSize !== undefined) { fontSize = panelData.textStyle.config.fontSize } + if (panelData.textStyle.config.opacity !== undefined) { opacity = panelData.textStyle.config.opacity } + if (panelData.textStyle.config.paletteColor !== undefined) { paletteColor = eval(panelData.textStyle.config.paletteColor) } + } + + printLabel(labelText, X_AXIS, UI_PANEL.HEIGHT.NORMAL * labelPosition / 100 / heightFactor, '0.60', undefined, undefined, true, thisObject.container, thisObject.fitFunction) + printLabel(value, X_AXIS, UI_PANEL.HEIGHT.NORMAL * valuePosition / 100 / heightFactor, opacity, fontSize, paletteColor, true, thisObject.container, thisObject.fitFunction, false, true) } - } - - if (panelData.code.valueDecimals !== undefined) { - if (value !== undefined) { - if (isNaN(value) === false) { - value = dynamicDecimals(value, panelData.code.valueDecimals) - } - } - } - - if (panelData.code.labelText !== undefined) { - labelText = panelData.code.labelText - } - - if (panelData.code.labelPosition !== undefined) { - labelPosition = panelData.code.labelPosition - } - - if (panelData.code.valuePosition !== undefined) { - valuePosition = panelData.code.valuePosition - } - - printLabel(labelText, X_AXIS, UI_PANEL.HEIGHT.NORMAL * labelPosition / 100 / heightFactor, '0.60', undefined, undefined, true, thisObject.container, thisObject.fitFunction) - printLabel(value, X_AXIS, UI_PANEL.HEIGHT.NORMAL * valuePosition / 100 / heightFactor, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction, false, true) } - } } diff --git a/CanvasApp/Panels/UpDownButton.js b/CanvasApp/Panels/UpDownButton.js index bb542d183..ffdca4eaa 100644 --- a/CanvasApp/Panels/UpDownButton.js +++ b/CanvasApp/Panels/UpDownButton.js @@ -1,244 +1,244 @@ -function newUpDownButton () { - let thisObject = { - container: undefined, - fitFunction: undefined, - parentContainer: undefined, - status: undefined, - setStatus: setStatus, - physics: physics, - draw: draw, - getContainer: getContainer, // returns the inner most container that holds the point received by parameter. - initialize: initialize, - finalize: finalize - } - - let isInitialized = false - /* Cointainer stuff */ - - thisObject.container = newContainer() - thisObject.container.name = 'Up Down Button' - thisObject.container.initialize() - thisObject.container.isClickeable = true - thisObject.container.isDraggeable = false - thisObject.container.frame.containerName = 'Up Down Button' - - thisObject.status = 'up' - let upPosition = {} - let downPosition = {} - let transitionPosition = {} - - let onMouseClickEventSuscriptionId - return thisObject - - function finalize () { - thisObject.container.eventHandler.stopListening(onMouseClickEventSuscriptionId) - thisObject.container.finalize() - thisObject.container = undefined - thisObject.fitFunction = undefined - thisObject.parentContainer = undefined - - thisObject.status = undefined - upPosition = undefined - downPosition = undefined - transitionPosition = undefined - } - - function initialize () { - thisObject.container.frame.width = 12 - thisObject.container.frame.height = 12 - - let position = { - x: thisObject.container.frame.parentFrame.width * 5.75 / 8 - thisObject.container.frame.width / 2, - y: 40 * 4 / 8 - thisObject.container.frame.height / 2 +function newUpDownButton() { + let thisObject = { + container: undefined, + fitFunction: undefined, + parentContainer: undefined, + status: undefined, + setStatus: setStatus, + physics: physics, + draw: draw, + getContainer: getContainer, // returns the inner most container that holds the point received by parameter. + initialize: initialize, + finalize: finalize } - thisObject.container.frame.position = position + let isInitialized = false + /* Cointainer stuff */ - upPosition.x = thisObject.parentContainer.frame.position.x - upPosition.y = thisObject.parentContainer.frame.position.y + thisObject.container = newContainer() + thisObject.container.name = 'Up Down Button' + thisObject.container.initialize() + thisObject.container.isClickeable = true + thisObject.container.isDraggeable = false + thisObject.container.frame.containerName = 'Up Down Button' - downPosition.x = thisObject.parentContainer.frame.position.x - downPosition.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y + thisObject.status = 'up' + let upPosition = {} + let downPosition = {} + let transitionPosition = {} - transitionPosition.x = upPosition.x - transitionPosition.y = upPosition.y + let onMouseClickEventSuscriptionId + return thisObject - /* Lets listen to our own events to react when we have a Mouse Click */ - onMouseClickEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) + function finalize() { + thisObject.container.eventHandler.stopListening(onMouseClickEventSuscriptionId) + thisObject.container.finalize() + thisObject.container = undefined + thisObject.fitFunction = undefined + thisObject.parentContainer = undefined - isInitialized = true - } - - function setStatus (value) { - if (value === 'up' && thisObject.status === 'down') { - thisObject.status = 'going up' + thisObject.status = undefined + upPosition = undefined + downPosition = undefined + transitionPosition = undefined } - if (value === 'down' && thisObject.status === 'up') { - thisObject.status = 'going down' + + function initialize() { + thisObject.container.frame.width = 12 + thisObject.container.frame.height = 12 + + let position = { + x: thisObject.container.frame.parentFrame.width * 5.75 / 8 - thisObject.container.frame.width / 2, + y: 40 * 4 / 8 - thisObject.container.frame.height / 2 + } + + thisObject.container.frame.position = position + + upPosition.x = thisObject.parentContainer.frame.position.x + upPosition.y = thisObject.parentContainer.frame.position.y + + downPosition.x = thisObject.parentContainer.frame.position.x + downPosition.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y + + transitionPosition.x = upPosition.x + transitionPosition.y = upPosition.y + + /* Lets listen to our own events to react when we have a Mouse Click */ + onMouseClickEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) + + isInitialized = true } - } - function onMouseClick (event) { - if (thisObject.status === 'up') { - transitionPosition.x = upPosition.x - transitionPosition.y = upPosition.y - - thisObject.status = 'going down' - } else { - transitionPosition.x = downPosition.x - transitionPosition.y = downPosition.y - - thisObject.status = 'going up' + function setStatus(value) { + if (value === 'up' && thisObject.status === 'down') { + thisObject.status = 'going up' + } + if (value === 'down' && thisObject.status === 'up') { + thisObject.status = 'going down' + } } - } - function physics () { - if (isInitialized === false) { return } + function onMouseClick(event) { + if (thisObject.status === 'up') { + transitionPosition.x = upPosition.x + transitionPosition.y = upPosition.y - upPosition.x = thisObject.parentContainer.frame.position.x - upPosition.y = canvas.chartingSpace.viewport.visibleArea.topRight.y + thisObject.status = 'going down' + } else { + transitionPosition.x = downPosition.x + transitionPosition.y = downPosition.y - downPosition.x = thisObject.parentContainer.frame.position.x - downPosition.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y - - if (thisObject.status === 'going down') { - if (transitionPosition.y < downPosition.y) { - transitionPosition.y = transitionPosition.y + 50 - thisObject.parentContainer.frame.position.y = transitionPosition.y - } else { - thisObject.parentContainer.frame.position.y = downPosition.y - thisObject.status = 'down' - } + thisObject.status = 'going up' + } } - if (thisObject.status === 'going up') { - if (transitionPosition.y > upPosition.y) { - transitionPosition.y = transitionPosition.y - 50 - thisObject.parentContainer.frame.position.y = transitionPosition.y - } else { - thisObject.parentContainer.frame.position.y = upPosition.y - thisObject.status = 'up' - } + + function physics() { + if (isInitialized === false) { return } + + upPosition.x = thisObject.parentContainer.frame.position.x + upPosition.y = canvas.chartingSpace.viewport.visibleArea.topRight.y + + downPosition.x = thisObject.parentContainer.frame.position.x + downPosition.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y + + if (thisObject.status === 'going down') { + if (transitionPosition.y < downPosition.y) { + transitionPosition.y = transitionPosition.y + 50 + thisObject.parentContainer.frame.position.y = transitionPosition.y + } else { + thisObject.parentContainer.frame.position.y = downPosition.y + thisObject.status = 'down' + } + } + if (thisObject.status === 'going up') { + if (transitionPosition.y > upPosition.y) { + transitionPosition.y = transitionPosition.y - 50 + thisObject.parentContainer.frame.position.y = transitionPosition.y + } else { + thisObject.parentContainer.frame.position.y = upPosition.y + thisObject.status = 'up' + } + } } - } - function draw () { - if (isInitialized === false) { return } + function draw() { + if (isInitialized === false) { return } - drawButton() - } - - function getContainer (point, purpose) { - let container - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - return thisObject.container + drawButton() } - } - function drawButton () { - let point1 - let point2 - let point3 - - switch (thisObject.status) { - case 'up': { - point1 = { - x: 3, - y: 3 + function getContainer(point, purpose) { + let container + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + return thisObject.container } - - point2 = { - x: thisObject.container.frame.width - 3, - y: 3 - } - - point3 = { - x: thisObject.container.frame.width / 2, - y: thisObject.container.frame.height - 3 - } - break - } - - case 'going down': { - point1 = { - x: 4, - y: 4 - } - - point2 = { - x: thisObject.container.frame.width - 4, - y: 4 - } - - point3 = { - x: thisObject.container.frame.width / 2, - y: thisObject.container.frame.height - 4 - } - break - } - - case 'going up': { - point1 = { - x: 4, - y: thisObject.container.frame.height - 4 - } - - point2 = { - x: thisObject.container.frame.width - 4, - y: thisObject.container.frame.height - 4 - } - - point3 = { - x: thisObject.container.frame.width / 2, - y: 4 - } - break - } - - case 'down': { - point1 = { - x: 3, - y: thisObject.container.frame.height - 3 - } - - point2 = { - x: thisObject.container.frame.width - 3, - y: thisObject.container.frame.height - 3 - } - - point3 = { - x: thisObject.container.frame.width / 2, - y: 3 - } - break - } } + function drawButton() { + let point1 + let point2 + let point3 + + switch (thisObject.status) { + case 'up': { + point1 = { + x: 3, + y: 3 + } + + point2 = { + x: thisObject.container.frame.width - 3, + y: 3 + } + + point3 = { + x: thisObject.container.frame.width / 2, + y: thisObject.container.frame.height - 3 + } + break + } + + case 'going down': { + point1 = { + x: 4, + y: 4 + } + + point2 = { + x: thisObject.container.frame.width - 4, + y: 4 + } + + point3 = { + x: thisObject.container.frame.width / 2, + y: thisObject.container.frame.height - 4 + } + break + } + + case 'going up': { + point1 = { + x: 4, + y: thisObject.container.frame.height - 4 + } + + point2 = { + x: thisObject.container.frame.width - 4, + y: thisObject.container.frame.height - 4 + } + + point3 = { + x: thisObject.container.frame.width / 2, + y: 4 + } + break + } + + case 'down': { + point1 = { + x: 3, + y: thisObject.container.frame.height - 3 + } + + point2 = { + x: thisObject.container.frame.width - 3, + y: thisObject.container.frame.height - 3 + } + + point3 = { + x: thisObject.container.frame.width / 2, + y: 3 + } + break + } + } + /* Now the transformations. */ - point1 = thisObject.container.frame.frameThisPoint(point1) - point2 = thisObject.container.frame.frameThisPoint(point2) - point3 = thisObject.container.frame.frameThisPoint(point3) + point1 = thisObject.container.frame.frameThisPoint(point1) + point2 = thisObject.container.frame.frameThisPoint(point2) + point3 = thisObject.container.frame.frameThisPoint(point3) - if (thisObject.fitFunction !== undefined) { - point1 = thisObject.fitFunction(point1) - point2 = thisObject.fitFunction(point2) - point3 = thisObject.fitFunction(point3) - } + if (thisObject.fitFunction !== undefined) { + point1 = thisObject.fitFunction(point1) + point2 = thisObject.fitFunction(point2) + point3 = thisObject.fitFunction(point3) + } /* Lets start the drawing. */ - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(point1.x, point1.y) - browserCanvasContext.lineTo(point2.x, point2.y) - browserCanvasContext.lineTo(point3.x, point3.y) - browserCanvasContext.lineTo(point1.x, point1.y) - browserCanvasContext.closePath() + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(point1.x, point1.y) + browserCanvasContext.lineTo(point2.x, point2.y) + browserCanvasContext.lineTo(point3.x, point3.y) + browserCanvasContext.lineTo(point1.x, point1.y) + browserCanvasContext.closePath() - browserCanvasContext.strokeStyle = 'rgba(250, 250, 250, 1)' - browserCanvasContext.lineWidth = 1 - browserCanvasContext.stroke() + browserCanvasContext.strokeStyle = 'rgba(250, 250, 250, 1)' + browserCanvasContext.lineWidth = 1 + browserCanvasContext.stroke() - browserCanvasContext.fillStyle = 'rgba(250, 250, 250, 1)' - browserCanvasContext.fill() - } + browserCanvasContext.fillStyle = 'rgba(250, 250, 250, 1)' + browserCanvasContext.fill() + } } diff --git a/CanvasApp/Plotter.js b/CanvasApp/Plotter.js deleted file mode 100644 index ff1bf1368..000000000 --- a/CanvasApp/Plotter.js +++ /dev/null @@ -1,836 +0,0 @@ -function newPlotter () { - const MODULE_NAME = 'Plotter' - const ERROR_LOG = true - const INTENSIVE_LOG = false - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME - - let thisObject = { - currentRecord: undefined, - container: undefined, - fitFunction: undefined, - onDailyFileLoaded: onDailyFileLoaded, - initialize: initialize, - finalize: finalize, - getContainer: getContainer, - setTimeFrame: setTimeFrame, - setDatetime: setDatetime, - setCoordinateSystem: setCoordinateSystem, - draw: draw - } - - let container = newContainer() - container.initialize() - thisObject.container = container - - let coordinateSystem - let slotHeight = (canvas.chartingSpace.viewport.visibleArea.bottomRight.y - canvas.chartingSpace.viewport.visibleArea.topLeft.y) / 10 // This is the amount of slots available - let mustRecalculateDataPoints = false - let atMousePositionFillStyles = new Map() - let atMousePositionStrokeStyles = new Map() - - let timeFrame // This will hold the current Time Frame the user is at. - let datetime // This will hold the current Datetime the user is at. - - let marketFile // This is the current Market File being plotted. - let fileCursor // This is the current File Cursor being used to retrieve Daily Files. - - let marketFiles // This object will provide the different Market Files at different Time Periods. - let dailyFiles // This object will provide the different File Cursors at different Time Periods. - - let productDefinition // Here we store a snapshot of the product definition which references this plotter. - - let records = [] // We will have the information to be plotted here. - let userPositionDate - - let onMouseOverEventSuscriptionId - let zoomChangedEventSubscriptionId - let offsetChangedEventSubscriptionId - let dragFinishedEventSubscriptionId - let dimmensionsChangedEventSubscriptionId - let marketFilesUpdatedEventSubscriptionId - let dailyFilesUpdatedEventSubscriptionId - let onDisplaceEventSubscriptionId - let scaleChangedEventSubscriptionId - - let logged = false - return thisObject - - function finalize () { - try { - /* Stop listening to the necesary events. */ - thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId) - canvas.chartingSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId) - canvas.chartingSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId) - canvas.eventHandler.stopListening(dragFinishedEventSubscriptionId) - thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId) - marketFiles.eventHandler.stopListening(marketFilesUpdatedEventSubscriptionId) - dailyFiles.eventHandler.stopListening(dailyFilesUpdatedEventSubscriptionId) - thisObject.container.eventHandler.stopListening(onDisplaceEventSubscriptionId) - thisObject.fitFunction = undefined - - /* Clear References */ - marketFiles = undefined - dailyFiles = undefined - - datetime = undefined - timeFrame = undefined - - marketFile = undefined - fileCursor = undefined - - finalizeCoordinateSystem() - coordinateSystem = undefined - slotHeight = undefined - mustRecalculateDataPoints = undefined - atMousePositionFillStyles = undefined - atMousePositionStrokeStyles = undefined - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] finalize -> err = ' + err.stack.stack) } - } - } - - function initialize (pStorage, pDatetime, pTimeFrame, pCoordinateSystem, callBackFunction, pProductDefinition) { - try { - /* Store the information received. */ - marketFiles = pStorage.marketFiles[0] - dailyFiles = pStorage.dailyFiles[0] - - datetime = pDatetime - timeFrame = pTimeFrame - coordinateSystem = pCoordinateSystem - initializeCoordinateSystem() - - productDefinition = pProductDefinition - - /* We need a Market File in order to calculate the Y scale, since this scale depends on actual data. */ - marketFile = marketFiles.getFile(ONE_DAY_IN_MILISECONDS) // This file is the one processed faster. - - /* Now we set the right files according to current Period. */ - marketFile = marketFiles.getFile(pTimeFrame) - fileCursor = dailyFiles.getFileCursor(pTimeFrame) - - /* Listen to the necesary events. */ - zoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent('Zoom Changed', onViewportZoomChanged) - offsetChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent('Position Changed', onViewportPositionChanged) - dragFinishedEventSubscriptionId = canvas.eventHandler.listenToEvent('Drag Finished', onDragFinished) - marketFilesUpdatedEventSubscriptionId = marketFiles.eventHandler.listenToEvent('Files Updated', onMarketFilesUpdated) - dailyFilesUpdatedEventSubscriptionId = dailyFiles.eventHandler.listenToEvent('Files Updated', onDailyFilesUpdated) - onDisplaceEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onDisplace', onDisplace) - onMouseOverEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) - - /* Get ready for plotting. */ - recalculate() - dimmensionsChangedEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('Dimmensions Changed', function () { - recalculate() - }) - - callBackFunction() - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> err = ' + err.stack) } - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - } - } - - function initializeCoordinateSystem () { - scaleChangedEventSubscriptionId = coordinateSystem.eventHandler.listenToEvent('Scale Changed', onScaleChanged) - } - - function finalizeCoordinateSystem () { - coordinateSystem.eventHandler.stopListening(scaleChangedEventSubscriptionId) - } - - function onScaleChanged () { - mustRecalculateDataPoints = true - recalculate() - } - - function onMouseOver (event) { - let userPosition = getDateFromPointAtBrowserCanvas(event, thisObject.container, coordinateSystem) - userPositionDate = userPosition.valueOf() - } - - function onMarketFilesUpdated () { - try { - let newMarketFile = marketFiles.getFile(timeFrame) - if (newMarketFile !== undefined) { - marketFile = newMarketFile - mustRecalculateDataPoints = true - recalculate() - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] onMarketFilesUpdated -> err = ' + err.stack.stack) } - } - } - - function onDailyFilesUpdated () { - try { - let newFileCursor = dailyFiles.getFileCursor(timeFrame) - if (newFileCursor !== undefined) { - fileCursor = newFileCursor - mustRecalculateDataPoints = true - recalculate() - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] onDailyFilesUpdated -> err = ' + err.stack.stack) } - } - } - - function getContainer (point) { - try { - let container - /* First we check if this point is inside this space. */ - if (thisObject.container.frame.isThisPointHere(point) === true) { - return thisObject.container - } else { - /* This point does not belong to this space. */ - return undefined - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] getContainer -> err = ' + err.stack) } - } - } - - function setTimeFrame (pTimeFrame) { - try { - if (timeFrame !== pTimeFrame) { - timeFrame = pTimeFrame - mustRecalculateDataPoints = true - if (timeFrame >= _1_HOUR_IN_MILISECONDS) { - let newMarketFile = marketFiles.getFile(pTimeFrame) - - if (newMarketFile !== undefined) { - marketFile = newMarketFile - recalculate() - } else { - logger.write('[WARN] setTimeFrame -> Could not change to market file for timeFrame = ' + pTimeFrame) - } - } else { - let newFileCursor = dailyFiles.getFileCursor(pTimeFrame) - - if (newFileCursor !== undefined) { - fileCursor = newFileCursor - recalculate() - } else { - logger.write('[WARN] setTimeFrame -> Could not change to market file for timeFrame = ' + pTimeFrame) - } - } - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] setTimeFrame -> err = ' + err.stack) } - } - } - - function setDatetime (pDatetime) { - datetime = pDatetime - } - - function setCoordinateSystem (pCoordinateSystem) { - finalizeCoordinateSystem() - coordinateSystem = pCoordinateSystem - initializeCoordinateSystem() - } - - function onDailyFileLoaded (event) { - try { - if (event.currentValue === event.totalValue) { - /* This happens only when all of the files in the cursor have been loaded. */ - recalculate() - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] onDailyFileLoaded -> err = ' + err.stack) } - } - } - - function draw () { - try { - thisObject.container.frame.draw() - plotChart() - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] draw -> err = ' + err.stack) } - } - } - - function recalculate () { - try { - if (timeFrame >= _1_HOUR_IN_MILISECONDS) { - recalculateUsingMarketFiles() - } else { - recalculateUsingDailyFiles() - } - thisObject.container.eventHandler.raiseEvent('CandleStairs Changed', records) // --> Check This - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] recalculate -> err = ' + err.stack) } - } - } - - function jsonifyDataFile (dataFile, recordDefinition, farLeftDate, farRightDate) { - /* - This function has as an input the raw data on files and creates with it an array of JSON objects - with not calculated properties for later being consumed by Formulas - */ - - let jsonifiedArray = [] - let previous - - for (let i = 0; i < dataFile.length; i++) { - let record = {} - for (let j = 0; j < recordDefinition.properties.length; j++) { - let property = recordDefinition.properties[j] - if (property.code.isCalculated !== true) { - record[property.code.codeName] = dataFile[i][j] - } - } - - if ( - (record.begin >= farLeftDate.valueOf() && record.end <= farRightDate.valueOf()) && - (record.end >= coordinateSystem.min.x && record.begin <= coordinateSystem.max.x) - ) { - record.previous = previous - jsonifiedArray.push(record) - previous = record - - if (datetime.valueOf() >= record.begin && datetime.valueOf() <= record.end) { - thisObject.currentRecord = record - thisObject.container.eventHandler.raiseEvent('Current Record Changed', thisObject.currentRecord) - } - } - } - - return jsonifiedArray - } - - function calculationsProcedure (jsonArray, recordDefinition, calculationsProcedure, timeFrame) { - /* - This function has as an input an array of JSON objects, and it adds calculated properties to - complete the set of properties that will be available. - */ - - let system = { // These are the available system variables to be used in User Code and Formulas - timeFrame: timeFrame, - ONE_DAY_IN_MILISECONDS: ONE_DAY_IN_MILISECONDS - } - let variable = {} // This is the structure where the user will define its own variables that will be shared across different code blocks and formulas. - let results = [] - - /* This is Initialization Code */ - if (calculationsProcedure.initialization !== undefined) { - if (calculationsProcedure.initialization.javascriptCode !== undefined) { - try { - eval(calculationsProcedure.initialization.javascriptCode.code) - } catch (err) { - logger.write('[ERROR] calculationsProcedure -> initialization -> Error executing User Code. Error = ' + err.stack.stack) - logger.write('[ERROR] calculationsProcedure -> initialization -> Error executing User Code. Code = ' + calculationsProcedure.initialization.javascriptCode.code) - throw ('Error Executing User Code.') - } - } - } - - /* This is Initialization Code */ - if (calculationsProcedure.loop !== undefined) { - if (calculationsProcedure.loop.javascriptCode !== undefined) { - for (let index = 0; index < jsonArray.length; index++) { - let product = jsonArray[index] - - /* This is Loop Code */ - try { - eval(calculationsProcedure.loop.javascriptCode.code) - } catch (err) { - logger.write('[ERROR] calculationsProcedure -> loop -> Error executing User Code. Error = ' + err.stack.stack) - logger.write('[ERROR] calculationsProcedure -> loop -> Error executing User Code. product = ' + JSON.stringify(product)) - logger.write('[ERROR] calculationsProcedure -> loop -> Error executing User Code. Code = ' + calculationsProcedure.loop.javascriptCode.code) - throw ('Error Executing User Code.') - } - - /* For each calculated property we apply its formula */ - for (let j = 0; j < recordDefinition.properties.length; j++) { - let property = recordDefinition.properties[j] - if (property.code.isCalculated === true) { - if (property.formula !== undefined) { - if (property.formula.code !== undefined) { - try { - let newValue = eval(property.formula.code) - let currentRecord = product - currentRecord[property.code.codeName] = newValue - } catch (err) { - logger.write('[ERROR] calculationsProcedure -> loop -> formula -> Error executing User Code. Error = ' + err.stack.stack) - logger.write('[ERROR] calculationsProcedure -> loop -> formula -> Error executing User Code. product = ' + JSON.stringify(product)) - logger.write('[ERROR] calculationsProcedure -> loop -> formula -> Error executing User Code. Code = ' + property.formula.code) - throw ('Error Executing User Code.') - } - } - } - } - } - - /* Adding the new element to the resulting array */ - results.push(product) - } - } - } - return results - } - - function recalculateUsingDailyFiles () { - try { - if (fileCursor === undefined) { return } // We need to wait until there is a fileCursor - if (fileCursor.files.size === 0) { return } // We need to wait until there are files in the cursor - - let daysOnSides = getSideDays(timeFrame) - - let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem) - let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem) - - let dateDiff = rightDate.valueOf() - leftDate.valueOf() - - let farLeftDate = new Date(leftDate.valueOf() - dateDiff * 1.5) - let farRightDate = new Date(rightDate.valueOf() + dateDiff * 1.5) - - let currentDate = new Date(farLeftDate.valueOf()) - - records = [] - - while (currentDate.valueOf() <= farRightDate.valueOf() + ONE_DAY_IN_MILISECONDS) { - let stringDate = currentDate.getFullYear() + '-' + pad(currentDate.getMonth() + 1, 2) + '-' + pad(currentDate.getDate(), 2) - - let dailyFile = fileCursor.files.get(stringDate) - - if (dailyFile !== undefined) { - /* Transform the current file content into an array of JSON objects */ - let jsonData = jsonifyDataFile(dailyFile, productDefinition.record, farLeftDate, farRightDate) - - /* Add the calculated properties */ - if (productDefinition.calculations !== undefined) { - let calculationsResult = calculationsProcedure(jsonData, productDefinition.record, productDefinition.calculations, timeFrame) - records.push(...calculationsResult) // This adds records to the current array. - } else { - records.push(...jsonData)// This adds records to the current array. - } - } - - currentDate = new Date(currentDate.valueOf() + ONE_DAY_IN_MILISECONDS) - } - - /* Lests check if all the visible screen is going to be covered by candle-record. */ - let lowerEnd = leftDate.valueOf() - let upperEnd = rightDate.valueOf() - - if (records.length > 0) { - if (records[0].begin > lowerEnd || records[records.length - 1].end < upperEnd) { - setTimeout(recalculate, 2000) - } - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] recalculateUsingDailyFiles -> err = ' + err.stack) } - } - } - - function recalculateUsingMarketFiles () { - try { - if (marketFile === undefined) { return } // Initialization not complete yet. - - let daysOnSides = getSideDays(timeFrame) - - let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem) - let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem) - - let dateDiff = rightDate.valueOf() - leftDate.valueOf() - - leftDate = new Date(leftDate.valueOf() - dateDiff * 1.5) - rightDate = new Date(rightDate.valueOf() + dateDiff * 1.5) - - for (let i = 0; i < records.length; i++) { - let record = records[i] - record.fillStyle = undefined - record.strokeStyle = undefined - record.dataPoints = undefined - record.previous = undefined - records[i] = {} - } - records = [] - - /* Transform the current file content into an array of JSON objects */ - let jsonData = jsonifyDataFile(marketFile, productDefinition.record, leftDate, rightDate) - - /* Add the calculated properties */ - if (productDefinition.calculations !== undefined) { - let calculationsResult = calculationsProcedure(jsonData, productDefinition.record, productDefinition.calculations, timeFrame) - records.push(...calculationsResult) // This adds records to the current array. - } else { - records.push(...jsonData)// This adds records to the current array. - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] recalculateUsingMarketFiles -> err = ' + err.stack) } - } - } - - function recalculateScale () { - try { - if (coordinateSystem.maxValue > 0) { return } // Already calculated. - /* First we calculate the default scale */ - let minValue = { - x: MIN_PLOTABLE_DATE.valueOf(), - y: 0 - } - - let maxValue = { - x: MAX_PLOTABLE_DATE.valueOf(), - y: nextPorwerOf10(MAX_DEFAULT_RATE_SCALE_VALUE) / 4 // TODO: This 4 is temporary - } - - coordinateSystem.initialize( - minValue, - maxValue, - thisObject.container.frame.width, - thisObject.container.frame.height - ) - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] recalculateScale -> err = ' + err.stack) } - } - } - - function plotChart () { - try { - /* Clean the pannel at places where there is no record. */ - let currentRecord = { - data: undefined - } - thisObject.container.eventHandler.raiseEvent('Current Record Changed', currentRecord) - - for (let i = 0; i < records.length; i++) { - let record = records[i] - - /* - In the formulas to create plotters, we allos users to reference the previous record. - To enable that we need to link all records to the previous one in this way. - */ - if (i == 0) { - record.previous = record - } else { - record.previous = records[i - 1] - } - - let beginPoint = { - x: record.begin, - y: 0 - } - - let endPoint = { - x: record.end, - y: 0 - } - - beginPoint = coordinateSystem.transformThisPoint(beginPoint) - endPoint = coordinateSystem.transformThisPoint(endPoint) - - beginPoint = transformThisPoint(beginPoint, thisObject.container) - endPoint = transformThisPoint(endPoint, thisObject.container) - - beginPoint = canvas.chartingSpace.viewport.fitIntoVisibleArea(beginPoint) - endPoint = canvas.chartingSpace.viewport.fitIntoVisibleArea(endPoint) - - beginPoint = thisObject.fitFunction(beginPoint) - endPoint = thisObject.fitFunction(endPoint) - - if (endPoint.x < canvas.chartingSpace.viewport.visibleArea.bottomLeft.x || beginPoint.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x) { - continue - } - - let atMousePosition = false - if (userPositionDate >= record.begin && userPositionDate <= record.end) { - atMousePosition = true - - let currentRecord = { - data: record - } - thisObject.container.eventHandler.raiseEvent('Current Record Changed', currentRecord) - } - - /* If there is code we execute it now. */ - if (productDefinition.referenceParent.javascriptCode !== undefined) { - eval(productDefinition.referenceParent.javascriptCode.code) - } - - if (productDefinition.referenceParent.shapes === undefined) { continue } - if (productDefinition.referenceParent.shapes.chartPoints === undefined) { continue } - let dataPoints = new Map() - if (record.dataPoints !== undefined && mustRecalculateDataPoints === false) { - /* We use the datapoints already calculated. */ - dataPoints = record.dataPoints - } else { - if (logged === false) { - logged = true - } - /* It seems we need to calculate the data points this time. */ - for (let k = 0; k < productDefinition.referenceParent.shapes.chartPoints.length; k++) { - let chartPoints = productDefinition.referenceParent.shapes.chartPoints[k] - for (let j = 0; j < chartPoints.points.length; j++) { - let point = chartPoints.points[j] - if (point.pointFormula !== undefined) { - let x = 0 - let y = 0 - eval(point.pointFormula.code) - let rawPoint = { - x: x, - y: y - } - - /* - The information we store in files is independent from the charing system and its coordinate systems. - That means that the first thing we allways need to do is to trasform these points to the coordinate system of the timeline. - */ - let dataPoint - dataPoint = coordinateSystem.transformThisPoint(rawPoint) - dataPoint = transformThisPoint(dataPoint, thisObject.container) - dataPoint = canvas.chartingSpace.viewport.fitIntoVisibleArea(dataPoint) - dataPoint = thisObject.fitFunction(dataPoint) - - /* Store the data point at the local map */ - dataPoint.rawPoint = rawPoint - dataPoints.set(point.id, dataPoint) - } - } - } - - /* Remember this datapoints, so that we do not need to calculate them again. */ - record.dataPoints = dataPoints - } - - for (let j = 0; j < productDefinition.referenceParent.shapes.polygons.length; j++) { - let polygon = productDefinition.referenceParent.shapes.polygons[j] - /* We will check if we need to plot this Polygon or not. */ - if (polygon.polygonCondition !== undefined) { - let mustPlot = eval(polygon.polygonCondition.code) - if (mustPlot !== true) { continue } - } - - let calculatedStyle - - /* Finding out the fill style */ - let fillStyle = { // default values - opacity: 1, - paletteColor: UI_COLOR.BLACK - } - if (polygon.polygonBody !== undefined) { - if (record.fillStyle === undefined) { - record.fillStyle = new Map() - } - calculatedStyle = record.fillStyle.get(polygon.id) - if (calculatedStyle !== undefined) { - /* We use the already calculated style */ - fillStyle = calculatedStyle - } else { - /* Get the default style if exists */ - if (polygon.polygonBody.style !== undefined) { - if (polygon.polygonBody.style.code !== undefined) { - if (polygon.polygonBody.style.code.default !== undefined) { - let bodyStyle = polygon.polygonBody.style.code.default - if (bodyStyle.opacity !== undefined) { fillStyle.opacity = bodyStyle.opacity } - if (bodyStyle.paletteColor !== undefined) { fillStyle.paletteColor = eval(bodyStyle.paletteColor) } - } - } - } - /* Apply conditional styles */ - if (polygon.polygonBody.styleConditions !== undefined) { - for (let k = 0; k < polygon.polygonBody.styleConditions.length; k++) { - let condition = polygon.polygonBody.styleConditions[k] - let value = eval(condition.code) - if (value === true) { - if (condition.style !== undefined) { - let bodyStyle = condition.style.code - if (bodyStyle.opacity !== undefined) { fillStyle.opacity = bodyStyle.opacity } - if (bodyStyle.paletteColor !== undefined) { fillStyle.paletteColor = eval(bodyStyle.paletteColor) } - } - } - } - } - /* Get the atMousePosition style if exists */ - if (polygon.polygonBody.style !== undefined) { - if (polygon.polygonBody.style.code.atMousePosition !== undefined) { - let atMousePositionStyleDefinition = polygon.polygonBody.style.code.atMousePosition - let atMousePositionStyle = {} - if (atMousePositionStyleDefinition.opacity !== undefined) { atMousePositionStyle.opacity = atMousePositionStyleDefinition.opacity } - if (atMousePositionStyleDefinition.paletteColor !== undefined) { atMousePositionStyle.paletteColor = eval(atMousePositionStyleDefinition.paletteColor) } - atMousePositionFillStyles.set(polygon.id, atMousePositionStyle) - } - } - - record.fillStyle.set(polygon.id, fillStyle) - } - } - - /* Finding out the stroke style */ - let strokeStyle = { // default values - opacity: 1, - paletteColor: UI_COLOR.BLACK, - lineWidth: 1, - lineDash: [0, 0] - } - if (polygon.polygonBorder !== undefined) { - if (record.strokeStyle === undefined) { - record.strokeStyle = new Map() - } - calculatedStyle = record.strokeStyle.get(polygon.id) - if (calculatedStyle !== undefined) { - /* We use the already calculated style */ - strokeStyle = calculatedStyle - } else { - /* Get the default style if exists */ - if (polygon.polygonBorder.style !== undefined) { - if (polygon.polygonBorder.style.code !== undefined) { - if (polygon.polygonBorder.style.code.default !== undefined) { - let borderStyle = polygon.polygonBorder.style.code.default - if (borderStyle.opacity !== undefined) { strokeStyle.opacity = borderStyle.opacity } - if (borderStyle.paletteColor !== undefined) { strokeStyle.paletteColor = eval(borderStyle.paletteColor) } - if (borderStyle.lineWidth !== undefined) { strokeStyle.lineWidth = borderStyle.lineWidth } - if (borderStyle.lineDash !== undefined) { strokeStyle.lineDash = borderStyle.lineDash } - } - } - } - /* Apply conditional styles */ - if (polygon.polygonBorder.styleConditions !== undefined) { - for (let k = 0; k < polygon.polygonBorder.styleConditions.length; k++) { - let condition = polygon.polygonBorder.styleConditions[k] - let value = eval(condition.code) - if (value === true) { - if (condition.style !== undefined) { - let borderStyle = condition.style.code - if (borderStyle.opacity !== undefined) { strokeStyle.opacity = borderStyle.opacity } - if (borderStyle.paletteColor !== undefined) { strokeStyle.paletteColor = eval(borderStyle.paletteColor) } - if (borderStyle.lineWidth !== undefined) { strokeStyle.lineWidth = borderStyle.lineWidth } - if (borderStyle.lineDash !== undefined) { strokeStyle.lineDash = borderStyle.lineDash } - } - } - } - } - /* Get the atMousePosition style if exists */ - if (polygon.polygonBorder.style !== undefined) { - if (polygon.polygonBorder.style.code.atMousePosition !== undefined) { - let atMousePositionStyleDefinition = polygon.polygonBorder.style.code.atMousePosition - let atMousePositionStyle = {} - if (atMousePositionStyleDefinition.opacity !== undefined) { atMousePositionStyle.opacity = atMousePositionStyleDefinition.opacity } - if (atMousePositionStyleDefinition.paletteColor !== undefined) { atMousePositionStyle.paletteColor = eval(atMousePositionStyleDefinition.paletteColor) } - if (atMousePositionStyleDefinition.lineWidth !== undefined) { atMousePositionStyle.lineWidth = atMousePositionStyleDefinition.lineWidth } - if (atMousePositionStyleDefinition.lineDash !== undefined) { atMousePositionStyle.lineDash = atMousePositionStyleDefinition.lineDash } - atMousePositionStrokeStyles.set(polygon.id, atMousePositionStyle) - } - } - - record.strokeStyle.set(polygon.id, strokeStyle) - } - } - - /* Draw the Polygon */ - browserCanvasContext.beginPath() - for (let k = 0; k < polygon.polygonVertexes.length; k++) { - let polygonVertex = polygon.polygonVertexes[k] - if (polygonVertex.referenceParent !== undefined) { - let dataPointObject = dataPoints.get(polygonVertex.referenceParent.id) - if (dataPointObject === undefined) { - console.log('[WARN] You have a Polygon Vertex not referencing any Point.') - continue - } - - /* Contributing to Auto-Scale */ - if (dataPointObject.rawPoint.y > 1 && dataPointObject.rawPoint.y !== undefined && isNaN(dataPointObject.rawPoint.y) === false) { - coordinateSystem.reportYValue(dataPointObject.rawPoint.y) - } - - let dataPoint = { - x: dataPointObject.x, - y: dataPointObject.y - } - /* We make sure the points do not fall outside the viewport visible area. This step allways need to be done. */ - dataPoint = canvas.chartingSpace.viewport.fitIntoVisibleArea(dataPoint) - dataPoint = thisObject.fitFunction(dataPoint) - if (k === 0) { - browserCanvasContext.moveTo(dataPoint.x, dataPoint.y) - } else { - browserCanvasContext.lineTo(dataPoint.x, dataPoint.y) - } - } - } - browserCanvasContext.closePath() - - /* Apply the fill style to the canvas object */ - if (polygon.polygonBody !== undefined) { - /* Replace the fill style if we are at mouse position */ - if (atMousePosition === true) { - let atMousePositionFillStyle = atMousePositionFillStyles.get(polygon.id) - if (atMousePositionFillStyle !== undefined) { - fillStyle = atMousePositionFillStyle - } - } - - browserCanvasContext.fillStyle = 'rgba(' + fillStyle.paletteColor + ', ' + fillStyle.opacity + ')' - browserCanvasContext.fill() - } - - /* Apply the stroke style to the canvas object */ - if (polygon.polygonBorder !== undefined) { - /* Replace the stroke style if we are at mouse position */ - if (atMousePosition === true) { - let atMousePositionStrokeStyle = atMousePositionStrokeStyles.get(polygon.id) - if (atMousePositionStrokeStyle !== undefined) { - strokeStyle = atMousePositionStrokeStyle - } - } - - browserCanvasContext.lineWidth = strokeStyle.lineWidth - browserCanvasContext.setLineDash(strokeStyle.lineDash) - browserCanvasContext.strokeStyle = 'rgba(' + strokeStyle.paletteColor + ', ' + strokeStyle.opacity + ')' - browserCanvasContext.stroke() - } - } - } - - if (coordinateSystem.autoMinYScale === true || coordinateSystem.autoMinYScale === true) { - mustRecalculateDataPoints = true - } else { - mustRecalculateDataPoints = false - } - - logged = false - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] plotChart -> err = ' + err.stack) } - } - } - - function onViewportZoomChanged (event) { - try { - mustRecalculateDataPoints = true - recalculate() - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] onViewportZoomChanged -> err = ' + err.stack) } - } - } - - function onDragFinished () { - try { - recalculate() - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] onDragFinished -> err = ' + err.stack) } - } - } - - function onDisplace (event) { - recalculateAll(event) - } - - function onViewportPositionChanged (event) { - recalculateAll(event) - } - - function recalculateAll (event) { - mustRecalculateDataPoints = true - if (event !== undefined) { - if (event.recalculate === true) { - recalculate() - return - } - } - if (Math.random() * 100 > 95) { - recalculate() - } - } -} diff --git a/CanvasApp/Plotting/NodesAnnouncements.js b/CanvasApp/Plotting/NodesAnnouncements.js new file mode 100644 index 000000000..2eb21d98e --- /dev/null +++ b/CanvasApp/Plotting/NodesAnnouncements.js @@ -0,0 +1,46 @@ +function newNodesAnnouncements() { + const MODULE_NAME = 'Nodes Announcements' + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME + + let thisObject = { + onRecordChange: onRecordChange, + initialize: initialize, + finalize: finalize + } + + let hiriarchyMap + return thisObject + + function finalize() { + hiriarchyMap = undefined + } + + function initialize(pRootNode) { + let rootNode = canvas.designSpace.workspace.getHierarchyHeadsById(pRootNode.id) + hiriarchyMap = getHiriarchyMap(rootNode) + } + + function onRecordChange(currentRecord) { + if (currentRecord === undefined) { return } + let array = currentRecord.announcements + if (array === undefined) { return } + for (let i = 0; i < array.length; i++) { + let arrayItem = array[i] + let nodeId = arrayItem[0] + let value = arrayItem[1] + applyValue(nodeId, value) + } + } + + function applyValue(nodeId, value) { + if (canvas.chartingSpace.visible !== true) { return } + let node = hiriarchyMap.get(nodeId) + if (node === undefined) { return } + if (node.payload === undefined) { return } + if (node.payload.uiObject === undefined) { return } + if (value === true) { value = 'true' } + if (value === false) { value = 'false' } + node.payload.uiObject.setValue(value, 20) + } +} diff --git a/CanvasApp/Plotting/NodesErrors.js b/CanvasApp/Plotting/NodesErrors.js new file mode 100644 index 000000000..5d1ce2d1a --- /dev/null +++ b/CanvasApp/Plotting/NodesErrors.js @@ -0,0 +1,47 @@ +function newNodesErrors() { + const MODULE_NAME = 'Nodes Errors' + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME + + let thisObject = { + onRecordChange: onRecordChange, + initialize: initialize, + finalize: finalize + } + let hiriarchyMap + return thisObject + + function finalize() { + hiriarchyMap = undefined + } + + function initialize(pRootNode) { + let rootNode = canvas.designSpace.workspace.getHierarchyHeadsById(pRootNode.id) + hiriarchyMap = getHiriarchyMap(rootNode) + } + + function onRecordChange(currentRecord) { + if (currentRecord === undefined) { return } + let array = currentRecord.errors + if (array === undefined) { return } + for (let i = 0; i < array.length; i++) { + let arrayItem = array[i] + let nodeId = arrayItem[0] + let value = arrayItem[1] + applyValue(nodeId, value) + } + } + + function applyValue(nodeId, value) { + if (canvas.chartingSpace.visible !== true) { return } + let node = hiriarchyMap.get(nodeId) + if (node === undefined) { return } + if (node.payload === undefined) { return } + if (node.payload.uiObject === undefined) { return } + if (value === '') { + node.payload.uiObject.resetErrorMessage() + } else { + node.payload.uiObject.setErrorMessage(value) + } + } +} diff --git a/CanvasApp/Plotting/NodesHighlights.js b/CanvasApp/Plotting/NodesHighlights.js new file mode 100644 index 000000000..d843faf63 --- /dev/null +++ b/CanvasApp/Plotting/NodesHighlights.js @@ -0,0 +1,42 @@ +function newNodesHighlights() { + const MODULE_NAME = 'Nodes Highlights' + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME + + let thisObject = { + onRecordChange: onRecordChange, + initialize: initialize, + finalize: finalize + } + + let hiriarchyMap + return thisObject + + function finalize() { + hiriarchyMap = undefined + } + + function initialize(pRootNode) { + let rootNode = canvas.designSpace.workspace.getHierarchyHeadsById(pRootNode.id) + hiriarchyMap = getHiriarchyMap(rootNode) + } + + function onRecordChange(currentRecord) { + if (currentRecord === undefined) { return } + let array = currentRecord.highlights + if (array === undefined) { return } + for (let i = 0; i < array.length; i++) { + let nodeId = array[i] + highlight(nodeId) + } + } + + function highlight(nodeId) { + if (canvas.chartingSpace.visible !== true) { return } + let node = hiriarchyMap.get(nodeId) + if (node === undefined) { return } + if (node.payload === undefined) { return } + if (node.payload.uiObject === undefined) { return } + node.payload.uiObject.highlight(10) + } +} diff --git a/CanvasApp/Plotting/NodesInfos.js b/CanvasApp/Plotting/NodesInfos.js new file mode 100644 index 000000000..2009596aa --- /dev/null +++ b/CanvasApp/Plotting/NodesInfos.js @@ -0,0 +1,47 @@ +function newNodesInfos() { + const MODULE_NAME = 'Nodes Infos' + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME + + let thisObject = { + onRecordChange: onRecordChange, + initialize: initialize, + finalize: finalize + } + let hiriarchyMap + return thisObject + + function finalize() { + hiriarchyMap = undefined + } + + function initialize(pRootNode) { + let rootNode = canvas.designSpace.workspace.getHierarchyHeadsById(pRootNode.id) + hiriarchyMap = getHiriarchyMap(rootNode) + } + + function onRecordChange(currentRecord) { + if (currentRecord === undefined) { return } + let array = currentRecord.infos + if (array === undefined) { return } + for (let i = 0; i < array.length; i++) { + let arrayItem = array[i] + let nodeId = arrayItem[0] + let value = arrayItem[1] + applyValue(nodeId, value) + } + } + + function applyValue(nodeId, value) { + if (canvas.chartingSpace.visible !== true) { return } + let node = hiriarchyMap.get(nodeId) + if (node === undefined) { return } + if (node.payload === undefined) { return } + if (node.payload.uiObject === undefined) { return } + if (value === '') { + node.payload.uiObject.resetInfoMessage() + } else { + node.payload.uiObject.setInfoMessage(value) + } + } +} diff --git a/CanvasApp/Plotting/NodesProgress.js b/CanvasApp/Plotting/NodesProgress.js new file mode 100644 index 000000000..bd31d4802 --- /dev/null +++ b/CanvasApp/Plotting/NodesProgress.js @@ -0,0 +1,47 @@ +function newNodesProgress() { + const MODULE_NAME = 'Nodes Progress' + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME + + let thisObject = { + onRecordChange: onRecordChange, + initialize: initialize, + finalize: finalize + } + + let hiriarchyMap + return thisObject + + function finalize() { + hiriarchyMap = undefined + } + + function initialize(pRootNode) { + let rootNode = canvas.designSpace.workspace.getHierarchyHeadsById(pRootNode.id) + hiriarchyMap = getHiriarchyMap(rootNode) + } + + function onRecordChange(currentRecord) { + if (currentRecord === undefined) { return } + let array = currentRecord.progress + if (array === undefined) { return } + for (let i = 0; i < array.length; i++) { + let arrayItem = array[i] + let nodeId = arrayItem[0] + let value = arrayItem[1] + applyValue(nodeId, value) + } + } + + function applyValue(nodeId, value) { + if (canvas.chartingSpace.visible !== true) { return } + let node = hiriarchyMap.get(nodeId) + if (node === undefined) { return } + if (node.payload === undefined) { return } + if (node.payload.uiObject === undefined) { return } + if (value === true) { value = 'true' } + if (value === false) { value = 'false' } + node.payload.uiObject.setPercentage(value, 30) + } +} + diff --git a/CanvasApp/Plotting/NodesRunning.js b/CanvasApp/Plotting/NodesRunning.js new file mode 100644 index 000000000..2ccaa6eeb --- /dev/null +++ b/CanvasApp/Plotting/NodesRunning.js @@ -0,0 +1,47 @@ +function newNodesRunning() { + const MODULE_NAME = 'Nodes Running' + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME + + let thisObject = { + onRecordChange: onRecordChange, + initialize: initialize, + finalize: finalize + } + + let hiriarchyMap + return thisObject + + function finalize() { + hiriarchyMap = undefined + } + + function initialize(pRootNode) { + let rootNode = canvas.designSpace.workspace.getHierarchyHeadsById(pRootNode.id) + hiriarchyMap = getHiriarchyMap(rootNode) + } + + function onRecordChange(currentRecord) { + if (currentRecord === undefined) { return } + let array = currentRecord.running + if (array === undefined) { return } + for (let i = 0; i < array.length; i++) { + let arrayItem = array[i] + let nodeId = arrayItem[0] + let value = arrayItem[1] + applyValue(nodeId, value) + } + } + + function applyValue(nodeId, value) { + if (canvas.chartingSpace.visible !== true) { return } + let node = hiriarchyMap.get(nodeId) + if (node === undefined) { return } + if (node.payload === undefined) { return } + if (node.payload.uiObject === undefined) { return } + if (value === true) { value = 'true' } + if (value === false) { value = 'false' } + node.payload.uiObject.runningAtBackend() + } +} + diff --git a/CanvasApp/Plotting/NodesStatus.js b/CanvasApp/Plotting/NodesStatus.js new file mode 100644 index 000000000..36e596f47 --- /dev/null +++ b/CanvasApp/Plotting/NodesStatus.js @@ -0,0 +1,47 @@ +function newNodesStatus() { + const MODULE_NAME = 'Nodes Status' + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME + + let thisObject = { + onRecordChange: onRecordChange, + initialize: initialize, + finalize: finalize + } + + let hiriarchyMap + return thisObject + + function finalize() { + hiriarchyMap = undefined + } + + function initialize(pRootNode) { + let rootNode = canvas.designSpace.workspace.getHierarchyHeadsById(pRootNode.id) + hiriarchyMap = getHiriarchyMap(rootNode) + } + + function onRecordChange(currentRecord) { + if (currentRecord === undefined) { return } + let array = currentRecord.status + if (array === undefined) { return } + for (let i = 0; i < array.length; i++) { + let arrayItem = array[i] + let nodeId = arrayItem[0] + let value = arrayItem[1] + applyValue(nodeId, value) + } + } + + function applyValue(nodeId, value) { + if (canvas.chartingSpace.visible !== true) { return } + let node = hiriarchyMap.get(nodeId) + if (node === undefined) { return } + if (node.payload === undefined) { return } + if (node.payload.uiObject === undefined) { return } + if (value === true) { value = 'true' } + if (value === false) { value = 'false' } + node.payload.uiObject.setStatus(value, 30) + } +} + diff --git a/CanvasApp/Plotting/NodesValues.js b/CanvasApp/Plotting/NodesValues.js new file mode 100644 index 000000000..2aca41d6c --- /dev/null +++ b/CanvasApp/Plotting/NodesValues.js @@ -0,0 +1,48 @@ +function newNodesValues() { + const MODULE_NAME = 'Nodes Values' + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME + + let thisObject = { + onRecordChange: onRecordChange, + initialize: initialize, + finalize: finalize + } + + let hiriarchyMap + return thisObject + + function finalize() { + hiriarchyMap = undefined + } + + function initialize(pRootNode) { + let rootNode = canvas.designSpace.workspace.getHierarchyHeadsById(pRootNode.id) + hiriarchyMap = getHiriarchyMap(rootNode) + } + + function onRecordChange(currentRecord) { + if (currentRecord === undefined) { return } + let array = currentRecord.values + if (array === undefined) { return } + for (let i = 0; i < array.length; i++) { + let arrayItem = array[i] + let nodeId = arrayItem[0] + let value = arrayItem[1] + applyValue(nodeId, value) + } + } + + function applyValue(nodeId, value) { + if (canvas.chartingSpace.visible !== true) { return } + let node = hiriarchyMap.get(nodeId) + if (node === undefined) { return } + if (node.payload === undefined) { return } + if (node.payload.uiObject === undefined) { return } + if (value === true) { value = 'true' } + if (value === false) { value = 'false' } + node.payload.uiObject.valueAtAngle = false + node.payload.uiObject.setValue(value, 1) + } +} + diff --git a/CanvasApp/Plotting/NodesWarnings.js b/CanvasApp/Plotting/NodesWarnings.js new file mode 100644 index 000000000..8e09ebe08 --- /dev/null +++ b/CanvasApp/Plotting/NodesWarnings.js @@ -0,0 +1,47 @@ +function newNodesWarnings() { + const MODULE_NAME = 'Nodes Warnings' + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME + + let thisObject = { + onRecordChange: onRecordChange, + initialize: initialize, + finalize: finalize + } + let hiriarchyMap + return thisObject + + function finalize() { + hiriarchyMap = undefined + } + + function initialize(pRootNode) { + let rootNode = canvas.designSpace.workspace.getHierarchyHeadsById(pRootNode.id) + hiriarchyMap = getHiriarchyMap(rootNode) + } + + function onRecordChange(currentRecord) { + if (currentRecord === undefined) { return } + let array = currentRecord.warnings + if (array === undefined) { return } + for (let i = 0; i < array.length; i++) { + let arrayItem = array[i] + let nodeId = arrayItem[0] + let value = arrayItem[1] + applyValue(nodeId, value) + } + } + + function applyValue(nodeId, value) { + if (canvas.chartingSpace.visible !== true) { return } + let node = hiriarchyMap.get(nodeId) + if (node === undefined) { return } + if (node.payload === undefined) { return } + if (node.payload.uiObject === undefined) { return } + if (value === '') { + node.payload.uiObject.resetWarningMessage() + } else { + node.payload.uiObject.setWarningMessage(value) + } + } +} diff --git a/CanvasApp/Plotting/Plotter.js b/CanvasApp/Plotting/Plotter.js new file mode 100644 index 000000000..bcb956121 --- /dev/null +++ b/CanvasApp/Plotting/Plotter.js @@ -0,0 +1,941 @@ +function newPlotter() { + const MODULE_NAME = 'Plotter' + const ERROR_LOG = true + const INTENSIVE_LOG = false + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME + + let thisObject = { + currentRecord: undefined, + container: undefined, + fitFunction: undefined, + onDailyFileLoaded: onDailyFileLoaded, + initialize: initialize, + finalize: finalize, + getContainer: getContainer, + setTimeFrame: setTimeFrame, + setDatetime: setDatetime, + setCoordinateSystem: setCoordinateSystem, + draw: draw + } + + let container = newContainer() + container.initialize() + thisObject.container = container + + let coordinateSystem + let slotHeight = (canvas.chartingSpace.viewport.visibleArea.bottomRight.y - canvas.chartingSpace.viewport.visibleArea.topLeft.y) / 10 // This is the amount of slots available + let mustRecalculateDataPoints = false + let atMousePositionFillStyles = new Map() + let atMousePositionStrokeStyles = new Map() + + let timeFrame // This will hold the current Time Frame the user is at. + let datetime // This will hold the current Datetime the user is at. + + let marketFile // This is the current Market File being plotted. + let fileCursor // This is the current File Cursor being used to retrieve Daily Files. + + let marketFiles // This object will provide the different Market Files at different Time Periods. + let dailyFiles // This object will provide the different File Cursors at different Time Periods. + + let productDefinition // Here we store a snapshot of the product definition which references this plotter. + + let records = [] // We will have the information to be plotted here. + let userPositionDate + let minUserPositionRate + let maxUserPositionRate + + let onMouseOverEventSuscriptionId + let zoomChangedEventSubscriptionId + let offsetChangedEventSubscriptionId + let dragFinishedEventSubscriptionId + let dimmensionsChangedEventSubscriptionId + let marketFilesUpdatedEventSubscriptionId + let dailyFilesUpdatedEventSubscriptionId + let onDisplaceEventSubscriptionId + let scaleChangedEventSubscriptionId + + let logged = false + return thisObject + + function finalize() { + try { + /* Stop listening to the necesary events. */ + thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId) + canvas.chartingSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId) + canvas.chartingSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId) + canvas.eventHandler.stopListening(dragFinishedEventSubscriptionId) + thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId) + marketFiles.eventHandler.stopListening(marketFilesUpdatedEventSubscriptionId) + dailyFiles.eventHandler.stopListening(dailyFilesUpdatedEventSubscriptionId) + thisObject.container.eventHandler.stopListening(onDisplaceEventSubscriptionId) + thisObject.fitFunction = undefined + + /* Clear References */ + marketFiles = undefined + dailyFiles = undefined + + datetime = undefined + timeFrame = undefined + + marketFile = undefined + fileCursor = undefined + + finalizeCoordinateSystem() + coordinateSystem = undefined + slotHeight = undefined + mustRecalculateDataPoints = undefined + atMousePositionFillStyles = undefined + atMousePositionStrokeStyles = undefined + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] finalize -> err = ' + err.stack.stack) } + } + } + + function initialize(pStorage, pDatetime, pTimeFrame, pCoordinateSystem, callBackFunction, pProductDefinition) { + try { + + /* Store the information received. */ + marketFiles = pStorage.marketFiles[0] + dailyFiles = pStorage.dailyFiles[0] + + datetime = pDatetime + timeFrame = pTimeFrame + coordinateSystem = pCoordinateSystem + initializeCoordinateSystem() + + productDefinition = pProductDefinition + + /* We need a Market File in order to calculate the Y scale, since this scale depends on actual data. */ + marketFile = marketFiles.getFile(ONE_DAY_IN_MILISECONDS) // This file is the one processed faster. + + /* Now we set the right files according to current Period. */ + marketFile = marketFiles.getFile(pTimeFrame) + fileCursor = dailyFiles.getFileCursor(pTimeFrame) + + /* Listen to the necesary events. */ + zoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent('Zoom Changed', onViewportZoomChanged) + offsetChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent('Position Changed', onViewportPositionChanged) + dragFinishedEventSubscriptionId = canvas.eventHandler.listenToEvent('Drag Finished', onDragFinished) + marketFilesUpdatedEventSubscriptionId = marketFiles.eventHandler.listenToEvent('Files Updated', onMarketFilesUpdated) + dailyFilesUpdatedEventSubscriptionId = dailyFiles.eventHandler.listenToEvent('Files Updated', onDailyFilesUpdated) + onDisplaceEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onDisplace', onDisplace) + onMouseOverEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) + + /* Get ready for plotting. */ + recalculate() + dimmensionsChangedEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('Dimmensions Changed', function () { + recalculate() + }) + + callBackFunction() + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> err = ' + err.stack) } + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + } + } + + function initializeCoordinateSystem() { + scaleChangedEventSubscriptionId = coordinateSystem.eventHandler.listenToEvent('Scale Changed', onScaleChanged) + } + + function finalizeCoordinateSystem() { + coordinateSystem.eventHandler.stopListening(scaleChangedEventSubscriptionId) + } + + function onScaleChanged() { + mustRecalculateDataPoints = true + recalculate() + } + + function onMouseOver(event) { + let userPosition = getDateFromPointAtBrowserCanvas(event, thisObject.container, coordinateSystem) + userPositionDate = userPosition.valueOf() + + let minPositionPoint = { + x: event.x, + y: event.y + 4 + } + minUserPositionRate = getRateFromPointAtBrowserCanvas(minPositionPoint, thisObject.container, coordinateSystem) + + let maxPositionPoint = { + x: event.x, + y: event.y - 4 + } + maxUserPositionRate = getRateFromPointAtBrowserCanvas(maxPositionPoint, thisObject.container, coordinateSystem) + } + + function onMarketFilesUpdated() { + try { + let newMarketFile = marketFiles.getFile(timeFrame) + if (newMarketFile !== undefined) { + marketFile = newMarketFile + mustRecalculateDataPoints = true + recalculate() + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] onMarketFilesUpdated -> err = ' + err.stack.stack) } + } + } + + function onDailyFilesUpdated() { + try { + let newFileCursor = dailyFiles.getFileCursor(timeFrame) + if (newFileCursor !== undefined) { + fileCursor = newFileCursor + mustRecalculateDataPoints = true + recalculate() + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] onDailyFilesUpdated -> err = ' + err.stack.stack) } + } + } + + function getContainer(point) { + try { + let container + /* First we check if this point is inside this space. */ + if (thisObject.container.frame.isThisPointHere(point) === true) { + return thisObject.container + } else { + /* This point does not belong to this space. */ + return undefined + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] getContainer -> err = ' + err.stack) } + } + } + + function setTimeFrame(pTimeFrame) { + try { + if (timeFrame !== pTimeFrame) { + timeFrame = pTimeFrame + mustRecalculateDataPoints = true + if (timeFrame >= _1_HOUR_IN_MILISECONDS) { + marketFile = marketFiles.getFile(pTimeFrame) + } else { + fileCursor = dailyFiles.getFileCursor(pTimeFrame) + } + recalculate() + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] setTimeFrame -> err = ' + err.stack) } + } + } + + function setDatetime(pDatetime) { + datetime = pDatetime + } + + function setCoordinateSystem(pCoordinateSystem) { + finalizeCoordinateSystem() + coordinateSystem = pCoordinateSystem + initializeCoordinateSystem() + } + + function onDailyFileLoaded(event) { + try { + if (event.currentValue === event.totalValue) { + /* This happens only when all of the files in the cursor have been loaded. */ + recalculate() + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] onDailyFileLoaded -> err = ' + err.stack) } + } + } + + function draw() { + try { + thisObject.container.frame.draw() + plot() + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] draw -> err = ' + err.stack) } + } + } + + function recalculate() { + try { + if (timeFrame >= _1_HOUR_IN_MILISECONDS) { + recalculateUsingMarketFiles() + } else { + recalculateUsingDailyFiles() + } + thisObject.container.eventHandler.raiseEvent('CandleStairs Changed', records) // --> Check This + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] recalculate -> err = ' + err.stack) } + } + } + + function jsonifyDataFile(dataFile, recordDefinition, farLeftDate, farRightDate) { + /* + This function has as an input the raw data on files and creates with it an array of JSON objects + with not calculated properties for later being consumed by Formulas + */ + + let jsonifiedArray = [] + let previous + + for (let i = 0; i < dataFile.length; i++) { + let record = {} + for (let j = 0; j < recordDefinition.properties.length; j++) { + let property = recordDefinition.properties[j] + if (property.config.isCalculated !== true) { + record[property.config.codeName] = dataFile[i][j] + } + } + + if (productDefinition.config.nodePathType === 'array') { + /* + When we have an array configuration, we know that the last field of the record + contains the array index, which is needed to correctly plot this data. Since + this index is not part of the product definition, we will restore its value in + this way: + */ + record.index = dataFile[i][recordDefinition.properties.length] + } + + if ( + (record.begin >= farLeftDate.valueOf() || record.end <= farRightDate.valueOf()) && + (record.end >= coordinateSystem.min.x && record.begin <= coordinateSystem.max.x) + ) { + record.previous = previous + jsonifiedArray.push(record) + previous = record + + if (record.begin === undefined || record.end === undefined) { + console.log('Could not find the property begin or end which are needed for the plotter to work. productDefinition.config.codeName = ' + productDefinition.config.codeName) + } + } + } + + return jsonifiedArray + } + + function calculationsProcedure(jsonArray, recordDefinition, calculationsProcedure, timeFrame) { + /* + This function has as an input an array of JSON objects, and it adds calculated properties to + complete the set of properties that will be available. + */ + + let system = { // These are the available system variables to be used in User Code and Formulas + timeFrame: timeFrame, + ONE_DAY_IN_MILISECONDS: ONE_DAY_IN_MILISECONDS + } + let variable = {} // This is the structure where the user will define its own variables that will be shared across different config blocks and formulas. + let results = [] + + /* This is Initialization Code */ + if (calculationsProcedure.initialization !== undefined) { + if (calculationsProcedure.initialization.javascriptCode !== undefined) { + try { + eval(calculationsProcedure.initialization.javascriptCode.code) + } catch (err) { + logger.write('[ERROR] calculationsProcedure -> initialization -> Error executing User Code. Error = ' + err.stack.stack) + logger.write('[ERROR] calculationsProcedure -> initialization -> Error executing User Code. Code = ' + calculationsProcedure.initialization.javascriptCode.code) + throw ('Error Executing User Code.') + } + } + } + + /* This is Initialization Code */ + if (calculationsProcedure.loop !== undefined) { + if (calculationsProcedure.loop.javascriptCode !== undefined) { + for (let index = 0; index < jsonArray.length; index++) { + let product = jsonArray[index] + + /* This is Loop Code */ + try { + eval(calculationsProcedure.loop.javascriptCode.code) + } catch (err) { + logger.write('[ERROR] calculationsProcedure -> loop -> Error executing User Code. Error = ' + err.stack.stack) + logger.write('[ERROR] calculationsProcedure -> loop -> Error executing User Code. product = ' + JSON.stringify(product)) + logger.write('[ERROR] calculationsProcedure -> loop -> Error executing User Code. Code = ' + calculationsProcedure.loop.javascriptCode.code) + throw ('Error Executing User Code.') + } + + /* For each calculated property we apply its formula */ + for (let j = 0; j < recordDefinition.properties.length; j++) { + let property = recordDefinition.properties[j] + if (property.config.isCalculated === true) { + if (property.formula !== undefined) { + if (property.formula.code !== undefined) { + try { + let newValue = eval(property.formula.code) + let currentRecord = product + currentRecord[property.config.codeName] = newValue + } catch (err) { + logger.write('[ERROR] calculationsProcedure -> loop -> formula -> Error executing User Code. Error = ' + err.stack.stack) + logger.write('[ERROR] calculationsProcedure -> loop -> formula -> Error executing User Code. product = ' + JSON.stringify(product)) + logger.write('[ERROR] calculationsProcedure -> loop -> formula -> Error executing User Code. Code = ' + property.formula.code) + throw ('Error Executing User Code.') + } + } + } + } + } + + /* Adding the new element to the resulting array */ + results.push(product) + } + } + } + return results + } + + function recalculateUsingDailyFiles() { + try { + if (fileCursor === undefined) { + records = [] + return + } // We need to wait until there is a fileCursor available or maybe this indicator does not produce data for the current Time Frame + if (fileCursor.files.size === 0) { return } // We need to wait until there are files in the cursor + + let daysOnSides = getSideDays(timeFrame) + + let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem) + let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem) + + let dateDiff = rightDate.valueOf() - leftDate.valueOf() + + let farLeftDate = new Date(leftDate.valueOf() - dateDiff * 1.5) + let farRightDate = new Date(rightDate.valueOf() + dateDiff * 1.5) + + let currentDate = new Date(farLeftDate.valueOf()) + + records = [] + + while (currentDate.valueOf() <= farRightDate.valueOf() + ONE_DAY_IN_MILISECONDS) { + let stringDate = currentDate.getFullYear() + '-' + pad(currentDate.getMonth() + 1, 2) + '-' + pad(currentDate.getDate(), 2) + + let dailyFile = fileCursor.files.get(stringDate) + + if (dailyFile !== undefined) { + /* Transform the current file content into an array of JSON objects */ + let jsonData = jsonifyDataFile(dailyFile, productDefinition.record, farLeftDate, farRightDate) + + /* Add the calculated properties */ + if (productDefinition.calculations !== undefined) { + let calculationsResult = calculationsProcedure(jsonData, productDefinition.record, productDefinition.calculations, timeFrame) + records.push(...calculationsResult) // This adds records to the current array. + } else { + records.push(...jsonData)// This adds records to the current array. + } + } + + currentDate = new Date(currentDate.valueOf() + ONE_DAY_IN_MILISECONDS) + } + + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] recalculateUsingDailyFiles -> err = ' + err.stack) } + } + } + + function recalculateUsingMarketFiles() { + try { + if (marketFile === undefined) { + records = [] + return + } // Initialization not complete yet or this indicator does not produce data for the current time frame + + let daysOnSides = getSideDays(timeFrame) + + let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem) + let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem) + + let dateDiff = rightDate.valueOf() - leftDate.valueOf() + + leftDate = new Date(leftDate.valueOf() - dateDiff * 1.5) + rightDate = new Date(rightDate.valueOf() + dateDiff * 1.5) + + for (let i = 0; i < records.length; i++) { + let record = records[i] + record.fillStyle = undefined + record.strokeStyle = undefined + record.dataPoints = undefined + record.previous = undefined + records[i] = {} + } + records = [] + + /* Transform the current file content into an array of JSON objects */ + let jsonData = jsonifyDataFile(marketFile, productDefinition.record, leftDate, rightDate) + + /* Add the calculated properties */ + if (productDefinition.calculations !== undefined) { + let calculationsResult = calculationsProcedure(jsonData, productDefinition.record, productDefinition.calculations, timeFrame) + records.push(...calculationsResult) // This adds records to the current array. + } else { + records.push(...jsonData)// This adds records to the current array. + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] recalculateUsingMarketFiles -> err = ' + err.stack) } + } + } + + function recalculateScale() { + try { + if (coordinateSystem.maxValue > 0) { return } // Already calculated. + /* First we calculate the default scale */ + let minValue = { + x: MIN_PLOTABLE_DATE.valueOf(), + y: 0 + } + + let maxValue = { + x: MAX_PLOTABLE_DATE.valueOf(), + y: nextPorwerOf10(MAX_DEFAULT_RATE_SCALE_VALUE) / 4 // TODO: This 4 is temporary + } + + coordinateSystem.initialize( + minValue, + maxValue, + thisObject.container.frame.width, + thisObject.container.frame.height + ) + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] recalculateScale -> err = ' + err.stack) } + } + } + + function plot() { + try { + /* Clean the pannel at places where there is no record. */ + thisObject.container.eventHandler.raiseEvent('Current Record Changed', undefined) + + for (let i = 0; i < records.length; i++) { + let record = records[i] + + /* + In the formulas to create plotters, we allos users to reference the previous record. + To enable that we need to link all records to the previous one in this way. + */ + if (i == 0) { + record.previous = {} // this way it wont be undefined + } else { + record.previous = records[i - 1] + } + + let beginPoint = { + x: record.begin, + y: 0 + } + + let endPoint = { + x: record.end, + y: 0 + } + + beginPoint = coordinateSystem.transformThisPoint(beginPoint) + endPoint = coordinateSystem.transformThisPoint(endPoint) + + beginPoint = transformThisPoint(beginPoint, thisObject.container) + endPoint = transformThisPoint(endPoint, thisObject.container) + + beginPoint = canvas.chartingSpace.viewport.fitIntoVisibleArea(beginPoint) + endPoint = canvas.chartingSpace.viewport.fitIntoVisibleArea(endPoint) + + beginPoint = thisObject.fitFunction(beginPoint) + endPoint = thisObject.fitFunction(endPoint) + + if (endPoint.x < canvas.chartingSpace.viewport.visibleArea.bottomLeft.x || beginPoint.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x) { + continue + } + + let atMousePosition = false + if (userPositionDate >= record.begin && userPositionDate <= record.end) { + if (record.rate !== undefined && productDefinition.referenceParent.config.useRateAtMousePosition === true) { + /* Current Record depends also on rate */ + if (record.rate >= minUserPositionRate && record.rate <= maxUserPositionRate) { + atMousePosition = true + thisObject.container.eventHandler.raiseEvent('Current Record Changed', record) + } + } else { + /* Current Record depends only on begin and end. */ + atMousePosition = true + thisObject.container.eventHandler.raiseEvent('Current Record Changed', record) + } + } + + /* If there is code we execute it now. */ + if (productDefinition.referenceParent.javascriptCode !== undefined) { + eval(productDefinition.referenceParent.javascriptCode.code) + } + + if (productDefinition.referenceParent.shapes === undefined) { continue } + if (productDefinition.referenceParent.shapes.chartPoints === undefined) { continue } + let dataPoints = new Map() + if (record.dataPoints !== undefined && mustRecalculateDataPoints === false) { + /* We use the datapoints already calculated. */ + dataPoints = record.dataPoints + } else { + if (logged === false) { + logged = true + } + /* It seems we need to calculate the data points this time. */ + for (let k = 0; k < productDefinition.referenceParent.shapes.chartPoints.length; k++) { + let chartPoints = productDefinition.referenceParent.shapes.chartPoints[k] + for (let j = 0; j < chartPoints.points.length; j++) { + let point = chartPoints.points[j] + if (point.pointFormula !== undefined) { + let x = 0 + let y = 0 + eval(point.pointFormula.code) + let rawPoint = { + x: x, + y: y + } + + /* + The information we store in files is independent from the charing system and its coordinate systems. + That means that the first thing we allways need to do is to trasform these points to the coordinate system of the timeline. + */ + let dataPoint + dataPoint = coordinateSystem.transformThisPoint(rawPoint) + dataPoint = transformThisPoint(dataPoint, thisObject.container) + let testPoint = { + x: dataPoint.x, + y: dataPoint.y + } + dataPoint = canvas.chartingSpace.viewport.fitIntoVisibleArea(dataPoint) + dataPoint = thisObject.fitFunction(dataPoint) + + if (testPoint.x === dataPoint.x) { + dataPoint.isInViewPort = true + } else { + dataPoint.isInViewPort = false + } + /* Store the data point at the local map */ + dataPoint.rawPoint = rawPoint + dataPoints.set(point.id, dataPoint) + } + } + } + + /* Remember this datapoints, so that we do not need to calculate them again. */ + record.dataPoints = dataPoints + } + + /* Here we are going to plot all the polygons. */ + for (let j = 0; j < productDefinition.referenceParent.shapes.polygons.length; j++) { + let polygon = productDefinition.referenceParent.shapes.polygons[j] + /* We will check if we need to plot this Polygon or not. */ + if (polygon.polygonCondition !== undefined) { + let mustPlot = eval(polygon.polygonCondition.code) + if (mustPlot !== true) { continue } + } + + let calculatedStyle + + /* Finding out the fill style */ + let fillStyle = { // default values + opacity: 1, + paletteColor: UI_COLOR.BLACK + } + if (polygon.polygonBody !== undefined) { + if (record.fillStyle === undefined) { + record.fillStyle = new Map() + } + calculatedStyle = record.fillStyle.get(polygon.id) + if (calculatedStyle !== undefined) { + /* We use the already calculated style */ + fillStyle = calculatedStyle + } else { + /* Get the default style if exists */ + if (polygon.polygonBody.style !== undefined) { + if (polygon.polygonBody.style.config !== undefined) { + if (polygon.polygonBody.style.config.default !== undefined) { + let bodyStyle = polygon.polygonBody.style.config.default + if (bodyStyle.opacity !== undefined) { fillStyle.opacity = bodyStyle.opacity } + if (bodyStyle.paletteColor !== undefined) { fillStyle.paletteColor = eval(bodyStyle.paletteColor) } + } + } + } + /* Apply conditional styles */ + if (polygon.polygonBody.styleConditions !== undefined) { + for (let k = 0; k < polygon.polygonBody.styleConditions.length; k++) { + let condition = polygon.polygonBody.styleConditions[k] + let value = eval(condition.code) + if (value === true) { + if (condition.style !== undefined) { + let bodyStyle = condition.style.config + if (bodyStyle.opacity !== undefined) { fillStyle.opacity = bodyStyle.opacity } + if (bodyStyle.paletteColor !== undefined) { fillStyle.paletteColor = eval(bodyStyle.paletteColor) } + } + } + } + } + /* Get the atMousePosition style if exists */ + if (polygon.polygonBody.style !== undefined) { + if (polygon.polygonBody.style.config.atMousePosition !== undefined) { + let atMousePositionStyleDefinition = polygon.polygonBody.style.config.atMousePosition + let atMousePositionStyle = {} + if (atMousePositionStyleDefinition.opacity !== undefined) { atMousePositionStyle.opacity = atMousePositionStyleDefinition.opacity } + if (atMousePositionStyleDefinition.paletteColor !== undefined) { atMousePositionStyle.paletteColor = eval(atMousePositionStyleDefinition.paletteColor) } + atMousePositionFillStyles.set(polygon.id, atMousePositionStyle) + } + } + + record.fillStyle.set(polygon.id, fillStyle) + } + } + + /* Finding out the stroke style */ + let strokeStyle = { // default values + opacity: 1, + paletteColor: UI_COLOR.BLACK, + lineWidth: 1, + lineDash: [0, 0] + } + if (polygon.polygonBorder !== undefined) { + if (record.strokeStyle === undefined) { + record.strokeStyle = new Map() + } + calculatedStyle = record.strokeStyle.get(polygon.id) + if (calculatedStyle !== undefined) { + /* We use the already calculated style */ + strokeStyle = calculatedStyle + } else { + /* Get the default style if exists */ + if (polygon.polygonBorder.style !== undefined) { + if (polygon.polygonBorder.style.config !== undefined) { + if (polygon.polygonBorder.style.config.default !== undefined) { + let borderStyle = polygon.polygonBorder.style.config.default + if (borderStyle.opacity !== undefined) { strokeStyle.opacity = borderStyle.opacity } + if (borderStyle.paletteColor !== undefined) { strokeStyle.paletteColor = eval(borderStyle.paletteColor) } + if (borderStyle.lineWidth !== undefined) { strokeStyle.lineWidth = borderStyle.lineWidth } + if (borderStyle.lineDash !== undefined) { strokeStyle.lineDash = borderStyle.lineDash } + } + } + } + /* Apply conditional styles */ + if (polygon.polygonBorder.styleConditions !== undefined) { + for (let k = 0; k < polygon.polygonBorder.styleConditions.length; k++) { + let condition = polygon.polygonBorder.styleConditions[k] + let value = eval(condition.code) + if (value === true) { + if (condition.style !== undefined) { + let borderStyle = condition.style.config + if (borderStyle.opacity !== undefined) { strokeStyle.opacity = borderStyle.opacity } + if (borderStyle.paletteColor !== undefined) { strokeStyle.paletteColor = eval(borderStyle.paletteColor) } + if (borderStyle.lineWidth !== undefined) { strokeStyle.lineWidth = borderStyle.lineWidth } + if (borderStyle.lineDash !== undefined) { strokeStyle.lineDash = borderStyle.lineDash } + } + } + } + } + /* Get the atMousePosition style if exists */ + if (polygon.polygonBorder.style !== undefined) { + if (polygon.polygonBorder.style.config.atMousePosition !== undefined) { + let atMousePositionStyleDefinition = polygon.polygonBorder.style.config.atMousePosition + let atMousePositionStyle = {} + if (atMousePositionStyleDefinition.opacity !== undefined) { atMousePositionStyle.opacity = atMousePositionStyleDefinition.opacity } + if (atMousePositionStyleDefinition.paletteColor !== undefined) { atMousePositionStyle.paletteColor = eval(atMousePositionStyleDefinition.paletteColor) } + if (atMousePositionStyleDefinition.lineWidth !== undefined) { atMousePositionStyle.lineWidth = atMousePositionStyleDefinition.lineWidth } + if (atMousePositionStyleDefinition.lineDash !== undefined) { atMousePositionStyle.lineDash = atMousePositionStyleDefinition.lineDash } + atMousePositionStrokeStyles.set(polygon.id, atMousePositionStyle) + } + } + + record.strokeStyle.set(polygon.id, strokeStyle) + } + } + + /* Draw the Polygon */ + browserCanvasContext.beginPath() + for (let k = 0; k < polygon.polygonVertexes.length; k++) { + let polygonVertex = polygon.polygonVertexes[k] + if (polygonVertex.referenceParent !== undefined) { + let dataPointObject = dataPoints.get(polygonVertex.referenceParent.id) + if (dataPointObject === undefined) { + polygonVertex.payload.uiObject.setErrorMessage('Vertex not referencing any Point') + console.log('[WARN] You have a Polygon Vertex not referencing any Point.') + continue + } + + let dataPoint = { + x: dataPointObject.x, + y: dataPointObject.y + } + /* We make sure the points do not fall outside the viewport visible area. This step allways need to be done. */ + dataPoint = canvas.chartingSpace.viewport.fitIntoVisibleArea(dataPoint) + dataPoint = thisObject.fitFunction(dataPoint) + + /* + Contributing to Auto-Scale: A point will contribute to the y coordinate only if the x coordinate is plotted in the screen. + It can happen that objects that span through a long period of time could have its begin point inside the visible + viewport but not its end point. In those cases, the end point should not be reported. + */ + + if (dataPointObject.rawPoint.y > 1 && dataPointObject.rawPoint.y !== undefined && isNaN(dataPointObject.rawPoint.y) === false) { + let rawPoint = coordinateSystem.transformThisPoint(dataPointObject.rawPoint) + if (dataPointObject.isInViewPort === true) { + coordinateSystem.reportYValue(dataPointObject.rawPoint.y) + } + } + + if (k === 0) { + browserCanvasContext.moveTo(dataPoint.x, dataPoint.y) + } else { + browserCanvasContext.lineTo(dataPoint.x, dataPoint.y) + } + } + } + browserCanvasContext.closePath() + + /* Apply the fill style to the canvas object */ + if (polygon.polygonBody !== undefined) { + /* Replace the fill style if we are at mouse position */ + if (atMousePosition === true) { + let atMousePositionFillStyle = atMousePositionFillStyles.get(polygon.id) + if (atMousePositionFillStyle !== undefined) { + fillStyle = atMousePositionFillStyle + } + } + + browserCanvasContext.fillStyle = 'rgba(' + fillStyle.paletteColor + ', ' + fillStyle.opacity + ')' + browserCanvasContext.fill() + } + + /* Apply the stroke style to the canvas object */ + if (polygon.polygonBorder !== undefined) { + /* Replace the stroke style if we are at mouse position */ + if (atMousePosition === true) { + let atMousePositionStrokeStyle = atMousePositionStrokeStyles.get(polygon.id) + if (atMousePositionStrokeStyle !== undefined) { + strokeStyle = atMousePositionStrokeStyle + } + } + + browserCanvasContext.lineWidth = strokeStyle.lineWidth + browserCanvasContext.setLineDash(strokeStyle.lineDash) + browserCanvasContext.strokeStyle = 'rgba(' + strokeStyle.paletteColor + ', ' + strokeStyle.opacity + ')' + browserCanvasContext.stroke() + } + } + + /* Here we are going to plot images. */ + for (let j = 0; j < productDefinition.referenceParent.shapes.images.length; j++) { + let image = productDefinition.referenceParent.shapes.images[j] + if (image.imagePosition === undefined) { continue } + if (image.imagePosition.referenceParent === undefined) { continue } + if (image.imageCondition !== undefined) { + let mustPlot = eval(image.imageCondition.code) + if (mustPlot !== true) { continue } + } + let imageName = '' + let imageSize = 0 + let offsetX = 0 + let offsetY = 0 + let imagePosition = { x: 0, y: 0 } + if (image.config.codeName !== undefined) { imageName = image.config.codeName } + if (image.config.size !== undefined) { imageSize = image.config.size } + if (image.imagePosition.config.offsetX !== undefined) { offsetX = image.imagePosition.config.offsetX } + if (image.imagePosition.config.offsetY !== undefined) { offsetY = image.imagePosition.config.offsetY } + let dataPointObject = dataPoints.get(image.imagePosition.referenceParent.id) + if (dataPointObject === undefined) { continue } + let dataPoint = { + x: dataPointObject.x, + y: dataPointObject.y + } + dataPoint = canvas.chartingSpace.viewport.fitIntoVisibleArea(dataPoint) + dataPoint = thisObject.fitFunction(dataPoint) + imagePosition.x = dataPoint.x + imagePosition.y = dataPoint.y + let imageToDraw = canvas.designSpace.iconCollection.get(imageName) + if (imageToDraw !== undefined) { + if (imageToDraw.canDrawIcon === true) { + browserCanvasContext.drawImage(imageToDraw, imagePosition.x - imageSize / 2 + offsetX, imagePosition.y - imageSize / 2 - offsetY, imageSize, imageSize) + } + } else { + console.log('Can not plot image named ' + imageName + ' of product ' + productDefinition.name + ' because it does not exist.') + } + } + + /* Here we are going to plot texts. */ + for (let j = 0; j < productDefinition.referenceParent.shapes.texts.length; j++) { + let text = productDefinition.referenceParent.shapes.texts[j] + if (text.textPosition === undefined) { continue } + if (text.textPosition.referenceParent === undefined) { continue } + if (text.textCondition !== undefined) { + let mustPlot = eval(text.textCondition.code) + if (mustPlot !== true) { continue } + } + if (text.textFormula === undefined) { continue } + if (text.textStyle === undefined) { continue } + let value = eval(text.textFormula.code) + let fontSize = 0 + let opacity = 0 + let paletteColor = UI_COLOR.GREY + let offsetX = 0 + let offsetY = 0 + let textPosition = { x: 0, y: 0 } + if (text.textStyle.config.fontSize !== undefined) { fontSize = text.textStyle.config.fontSize } + if (text.textStyle.config.opacity !== undefined) { opacity = text.textStyle.config.opacity } + if (text.textStyle.config.paletteColor !== undefined) { paletteColor = eval(text.textStyle.config.paletteColor) } + if (text.textPosition.config.offsetX !== undefined) { offsetX = text.textPosition.config.offsetX } + if (text.textPosition.config.offsetY !== undefined) { offsetY = text.textPosition.config.offsetY } + let dataPointObject = dataPoints.get(text.textPosition.referenceParent.id) + if (dataPointObject === undefined) { continue } + let dataPoint = { + x: dataPointObject.x, + y: dataPointObject.y + } + dataPoint = canvas.chartingSpace.viewport.fitIntoVisibleArea(dataPoint) + dataPoint = thisObject.fitFunction(dataPoint) + textPosition.x = dataPoint.x + textPosition.y = dataPoint.y + + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + browserCanvasContext.fillStyle = 'rgba(' + paletteColor + ', ' + opacity + ')' + browserCanvasContext.fillText(value, textPosition.x + offsetX, textPosition.y - offsetY) + } + } + + if (coordinateSystem.autoMinYScale === true || coordinateSystem.autoMinYScale === true) { + mustRecalculateDataPoints = true + } else { + mustRecalculateDataPoints = false + } + + logged = false + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] plot -> err = ' + err.stack) } + } + } + + function onViewportZoomChanged(event) { + try { + mustRecalculateDataPoints = true + recalculate() + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] onViewportZoomChanged -> err = ' + err.stack) } + } + } + + function onDragFinished() { + if (canvas.chartingSpace.visible === true) { + recalculate() + } + } + + function onDisplace(event) { + recalculateAll(event) + } + + function onViewportPositionChanged(event) { + recalculateAll(event) + } + + function recalculateAll(event) { + mustRecalculateDataPoints = true + if (event !== undefined) { + if (event.recalculate === true) { + recalculate() + return + } + } + if (Math.random() * 100 > 95) { + recalculate() + } + } +} diff --git a/CanvasApp/Plotting/RecordValues.js b/CanvasApp/Plotting/RecordValues.js new file mode 100644 index 000000000..118bcda60 --- /dev/null +++ b/CanvasApp/Plotting/RecordValues.js @@ -0,0 +1,125 @@ +function newRecordValues() { + const MODULE_NAME = 'Record Values' + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME + + let thisObject = { + onRecordChange: onRecordChange, + initialize: initialize, + finalize: finalize + } + + let tradingSystem + let tradingEngine + let productDefinition + let propertyTargetNodeMap = new Map() + return thisObject + + function finalize() { + tradingSystem = undefined + tradingEngine = undefined + productDefinition = undefined + propertyTargetNodeMap = undefined + } + + function initialize(pTradingSystem, pTradingEngine, pProductDefinition) { + tradingSystem = canvas.designSpace.workspace.getHierarchyHeadsById(pTradingSystem.id) + tradingEngine = canvas.designSpace.workspace.getHierarchyHeadsById(pTradingEngine.id) + productDefinition = pProductDefinition + + /* + The product root can be a node or a node property of type array. + */ + let productRoot = eval(productDefinition.config.nodePath) + + if (productDefinition.config.nodePathType === 'array') { + /* + This means that the configured nodePath is not pointing to a node, but to a node property that is an array. + For that reason we will assume that each element of the array is a record to be outputed + */ + for (let index = 0; index < productRoot.length; index++) { + /* + The Product Root Node is the root of the node hiriarchy from where we are going to extract the record values. + */ + let productRootNode = productRoot[index] + scanProperties(productDefinition, productRootNode, index) + } + } else { + /* + This means that the configured nodePath points to a single node, which is the one whose children constitutes + the record to be saved at the output file. + */ + /* + The Product Root Node is the root of the node hiriarchy from where we are going to extract the record values. + */ + let productRootNode = productRoot + scanProperties(productDefinition, productRootNode) + } + + function scanProperties(productDefinition, productRootNode, index) { + for (let i = 0; i < productDefinition.record.properties.length; i++) { + let property = productDefinition.record.properties[i] + let key = property.id + if (index !== undefined) { + key = property.id + '-' + index + } + if (property.config.nodePath !== undefined) { + let propertyRoot + try { + propertyRoot = eval(property.config.nodePath) + } catch(err) { + console.log('Definition Error at Product ' + productDefinition.name) + console.log('productDefinition.config = ' + JSON.stringify(productDefinition.config)) + console.log('Definition Error at Property ' + property.name) + console.log('property.config = ' + JSON.stringify(property.config)) + console.log('property.config.nodePath = ' + property.config.nodePath) + return + } + propertyTargetNodeMap.set(key, propertyRoot) + } else { + propertyTargetNodeMap.set(key, productRootNode) + } + } + } + } + + function onRecordChange(currentRecord) { + if (currentRecord === undefined) { return } + for (let i = 0; i < productDefinition.record.properties.length; i++) { + let property = productDefinition.record.properties[i] + let value = currentRecord[property.config.codeName] + let key = property.id + if (productDefinition.config.nodePathType === 'array') { + /* + When we have an array configuration, in this case we will use the index + property that was injected into the record in order to build the key to + get the node where we have to send the value. + */ + key = property.id + '-' + currentRecord.index + } + let targetNode = propertyTargetNodeMap.get(key) + /* + If the codeName of the Record Property can not match the name of the property at + the target node, the user can explicitly specify the property name at the configuration, + and in those cases we need to use that. This happens when there are many Record Properties + pointing to the same property at the Target Node. + */ + if (property.config.childProperty !== undefined) { + applyValue(targetNode[property.config.childProperty], value, property.config.decimals) + } else { + applyValue(targetNode[property.config.codeName], value, property.config.decimals) + } + } + } + + function applyValue(node, value, minDecimals) { + if (canvas.chartingSpace.visible !== true) { return } + if (node === undefined) { return } + if (node === undefined) { return } + if (node.payload === undefined) { return } + if (node.payload.uiObject === undefined) { return } + if (value === true) { value = 'true' } + if (value === false) { value = 'false' } + node.payload.uiObject.setValue(value, 1, minDecimals) + } +} diff --git a/CanvasApp/PostLoader.js b/CanvasApp/PostLoader.js index d47eb8add..45775dee7 100644 --- a/CanvasApp/PostLoader.js +++ b/CanvasApp/PostLoader.js @@ -3,89 +3,103 @@ let markets let APP_SCHEMA_MAP = new Map() let APP_SCHEMA_ARRAY = [] +let DOC_SCHEMA_MAP = new Map() +let DOC_SCHEMA_ARRAY = [] +let CONCEPT_SCHEMA_MAP = new Map() +let CONCEPT_SCHEMA_ARRAY = [] -function newDashboard () { - const MODULE_NAME = 'Dashboard' - const ERROR_LOG = true - const INTENSIVE_LOG = false - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME +function newDashboard() { + const MODULE_NAME = 'Dashboard' + const ERROR_LOG = true + const INTENSIVE_LOG = false + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME - let thisObject = { - start: start - } - - const DEBUG_START_UP_DELAY = 0 // 3000; // This is a waiting time in case there is a need to debug the very first steps of initialization, to be able to hit F12 on time. - - return thisObject - - function start () { - try { - setBrowserEvents() - setUpAppSchema() - - function setUpAppSchema () { - APP_SCHEMA_ARRAY = getAppSchema() - for (let i = 0; i < APP_SCHEMA_ARRAY.length; i++) { - let nodeDefinition = APP_SCHEMA_ARRAY[i] - let key = nodeDefinition.type - - APP_SCHEMA_MAP.set(key, nodeDefinition) - } - - startCanvas() - } - - function startCanvas () { - /* If this method is executed for a second time, it should finalize the current execution structure */ - - if (canvas !== undefined) { canvas.finalize() } - - setTimeout(delayedStart, DEBUG_START_UP_DELAY) - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] start -> err = ' + err.stack) } + let thisObject = { + start: start } - } - function delayedStart () { - try { + const DEBUG_START_UP_DELAY = 0 // 3000; // This is a waiting time in case there is a need to debug the very first steps of initialization, to be able to hit F12 on time. + + return thisObject + + function start() { + try { + setBrowserEvents() + setUpSchemas() + + function setUpSchemas() { + APP_SCHEMA_ARRAY = getAppSchema() + for (let i = 0; i < APP_SCHEMA_ARRAY.length; i++) { + let nodeDefinition = APP_SCHEMA_ARRAY[i] + let key = nodeDefinition.type + APP_SCHEMA_MAP.set(key, nodeDefinition) + } + DOC_SCHEMA_ARRAY = getDocSchema() + for (let i = 0; i < DOC_SCHEMA_ARRAY.length; i++) { + let nodeDefinition = DOC_SCHEMA_ARRAY[i] + let key = nodeDefinition.type + DOC_SCHEMA_MAP.set(key, nodeDefinition) + } + CONCEPT_SCHEMA_ARRAY = getConceptSchema() + for (let i = 0; i < CONCEPT_SCHEMA_ARRAY.length; i++) { + let nodeDefinition = CONCEPT_SCHEMA_ARRAY[i] + let key = nodeDefinition.type + CONCEPT_SCHEMA_MAP.set(key, nodeDefinition) + } + startCanvas() + } + + function startCanvas() { + /* If this method is executed for a second time, it should finalize the current execution structure */ + + if (canvas !== undefined) { canvas.finalize() } + + setTimeout(delayedStart, DEBUG_START_UP_DELAY) + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] start -> err = ' + err.stack) } + } + } + + function delayedStart() { + try { /* For now, we are supporting only one market. */ - let market = { - id: 2, - baseAsset: 'USDT', - quotedAsset: 'BTC' - } + let market = { + id: 2, + baseAsset: 'USDT', + quotedAsset: 'BTC' + } - markets = new Map() + markets = new Map() - markets.set(market.id, market) + markets.set(market.id, market) - canvas = newCanvas() - canvas.initialize() - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] delayedStart -> err = ' + err.stack) } - } - } - - function setBrowserEvents () { - window.onbeforeunload = saveWorkspace - - /* handles backspace and refresh(F5) from keyboard */ - window.manageBackRefresh = function (event) { - var tag = event.target.tagName.toLowerCase() - if (event.keyCode == 8 && tag != 'input' && tag != 'textarea') { // Backbutton pressed - saveWorkspace() - } else if (event.keyCode == 116) { // F5 pressed - saveWorkspace() - } + canvas = newCanvas() + canvas.initialize() + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] delayedStart -> err = ' + err.stack) } + } } - window.addEventListener('keydown', window.manageBackRefresh) + function setBrowserEvents() { + window.onbeforeunload = saveWorkspace - function saveWorkspace () { - canvas.designSpace.workspace.save() + /* handles backspace and refresh(F5) from keyboard */ + window.manageBackRefresh = function (event) { + var tag = event.target.tagName.toLowerCase() + if (event.keyCode == 8 && tag != 'input' && tag != 'textarea') { // Backbutton pressed + saveWorkspace() + } else if (event.keyCode == 116) { // F5 pressed + saveWorkspace() + } + } + + window.addEventListener('keydown', window.manageBackRefresh) + + function saveWorkspace() { + canvas.designSpace.workspace.save() + } } - } } diff --git a/CanvasApp/ProductStorage.js b/CanvasApp/ProductStorage.js index 68c76ef1b..6f83e19b2 100644 --- a/CanvasApp/ProductStorage.js +++ b/CanvasApp/ProductStorage.js @@ -1,9 +1,9 @@ -  -function newProductStorage (name) { - const MODULE_NAME = 'Product Storage' - const ERROR_LOG = true - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME + +function newProductStorage(name) { + const MODULE_NAME = 'Product Storage' + const ERROR_LOG = true + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME /* @@ -24,310 +24,310 @@ function newProductStorage (name) { */ - let thisObject = { - eventHandler: undefined, - marketFiles: [], - dailyFiles: [], - singleFile: [], - fileSequences: [], - setDatetime: setDatetime, - setTimeFrame: setTimeFrame, - initialize: initialize, - finalize: finalize - } + let thisObject = { + eventHandler: undefined, + marketFiles: [], + dailyFiles: [], + singleFile: [], + fileSequences: [], + setDatetime: setDatetime, + setTimeFrame: setTimeFrame, + initialize: initialize, + finalize: finalize + } - thisObject.eventHandler = newEventHandler() + thisObject.eventHandler = newEventHandler() /* We name the event Handler to easy debugging. */ - thisObject.eventHandler.name = 'Storage-' + name + thisObject.eventHandler.name = 'Storage-' + name - let datetime - let timeFrame + let datetime + let timeFrame - return thisObject + return thisObject - function finalize () { - try { - for (let i = 0; i < thisObject.marketFiles.length; i++) { - let marketFile = thisObject.marketFiles[i] - marketFile.finalize() - } + function finalize() { + try { + for (let i = 0; i < thisObject.marketFiles.length; i++) { + let marketFile = thisObject.marketFiles[i] + marketFile.finalize() + } - thisObject.marketFiles = undefined + thisObject.marketFiles = undefined - for (let i = 0; i < thisObject.dailyFiles.length; i++) { - let dailyFile = thisObject.dailyFiles[i] - dailyFile.finalize() - } + for (let i = 0; i < thisObject.dailyFiles.length; i++) { + let dailyFile = thisObject.dailyFiles[i] + dailyFile.finalize() + } - thisObject.dailyFiles = undefined + thisObject.dailyFiles = undefined - for (let i = 0; i < thisObject.fileSequences.length; i++) { - let fileSequence = thisObject.fileSequences[i] - fileSequence.finalize() - } + for (let i = 0; i < thisObject.fileSequences.length; i++) { + let fileSequence = thisObject.fileSequences[i] + fileSequence.finalize() + } - thisObject.fileSequences = undefined - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] finalize -> err = ' + err.stack) } + thisObject.fileSequences = undefined + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] finalize -> err = ' + err.stack) } + } } - } - function initialize (dataMine, bot, session, product, exchange, market, pDatetime, pTimeFrame, host, port, eventsServerClient, callBackFunction) { - try { - datetime = pDatetime - timeFrame = pTimeFrame + function initialize(dataMine, bot, session, product, exchange, market, pDatetime, pTimeFrame, host, port, eventsServerClient, callBackFunction) { + try { + datetime = pDatetime + timeFrame = pTimeFrame - let dataSetsToLoad = 0 - let dataSetsLoaded = 0 + let dataSetsToLoad = 0 + let dataSetsLoaded = 0 - for (let i = 0; i < product.datasets.length; i++) { - let dataset = product.datasets[i] + for (let i = 0; i < product.datasets.length; i++) { + let dataset = product.datasets[i] - switch (dataset.code.type) { - case 'Market Files': { - dataSetsToLoad++ + switch (dataset.config.type) { + case 'Market Files': { + dataSetsToLoad++ - let marketFiles = newMarketFiles() - marketFiles.initialize(dataMine, bot, session, product, dataset, exchange, market, host, port, eventsServerClient, onMarketFileReady) - thisObject.marketFiles.push(marketFiles) - } - break + let marketFiles = newMarketFiles() + marketFiles.initialize(dataMine, bot, session, product, dataset, exchange, market, host, port, eventsServerClient, onMarketFileReady) + thisObject.marketFiles.push(marketFiles) + } + break - case 'Daily Files': { - dataSetsToLoad++ + case 'Daily Files': { + dataSetsToLoad++ - let dailyFiles = newDailyFiles() - dailyFiles.initialize(dataMine, bot, session, product, dataset, exchange, market, pDatetime, pTimeFrame, host, port, eventsServerClient, onDailyFileReady) - thisObject.dailyFiles.push(dailyFiles) - } - break + let dailyFiles = newDailyFiles() + dailyFiles.initialize(dataMine, bot, session, product, dataset, exchange, market, pDatetime, pTimeFrame, host, port, eventsServerClient, onDailyFileReady) + thisObject.dailyFiles.push(dailyFiles) + } + break - case 'Single File': { - dataSetsToLoad++ + case 'Single File': { + dataSetsToLoad++ - let singleFile = newSingleFile() - singleFile.initialize(dataMine, bot, session, product, dataset, exchange, market, host, port, eventsServerClient, onSingleFileReady) - thisObject.singleFile.push(singleFile) - } - break + let singleFile = newSingleFile() + singleFile.initialize(dataMine, bot, session, product, dataset, exchange, market, host, port, eventsServerClient, onSingleFileReady) + thisObject.singleFile.push(singleFile) + } + break - case 'File Sequence': { - dataSetsToLoad++ + case 'File Sequence': { + dataSetsToLoad++ - let fileSequences = newFileSequence() - fileSequences.initialize(dataMine, bot, session, product, dataset, exchange, market, host, port, eventsServerClient, onFileSequenceReady) - thisObject.fileSequences.push(fileSequences) - } - break - default: - if (ERROR_LOG === true) { logger.write('[WARN] initialize -> dataset with no type defined or type not supported -> dataset.code.type = ' + dataset.code.type) } - } - - function onMarketFileReady (err, pCaller) { - try { - switch (err.result) { - case GLOBAL.DEFAULT_OK_RESPONSE.result: { - break - } - case GLOBAL.DEFAULT_FAIL_RESPONSE.result: { - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - return - } - } - let event = { - totalValue: pCaller.getExpectedFiles(), - currentValue: pCaller.getFilesLoaded(), - filesNotLoaded: pCaller.getFilesNotLoaded() - } - - thisObject.eventHandler.raiseEvent('Market File Loaded', event) - - if (event.filesNotLoaded === event.totalValue) { - dataSetsToLoad-- - checkInitializeComplete() - return - } - - if (event.currentValue + event.filesNotLoaded === event.totalValue) { - dataSetsLoaded++ - checkInitializeComplete() - } - } catch (err) { - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - } - } - - function onDailyFileReady (err, pCaller) { - try { - switch (err.result) { - case GLOBAL.DEFAULT_OK_RESPONSE.result: { - break - } - - case GLOBAL.DEFAULT_FAIL_RESPONSE.result: { - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - return - } - - case GLOBAL.CUSTOM_FAIL_RESPONSE.result: { - if (err.message === 'Dataset Unavailable.') { - dataSetsToLoad-- - checkInitializeComplete() - return - } else { - callBackFunction(err) - return + let fileSequences = newFileSequence() + fileSequences.initialize(dataMine, bot, session, product, dataset, exchange, market, host, port, eventsServerClient, onFileSequenceReady) + thisObject.fileSequences.push(fileSequences) + } + break + default: + if (ERROR_LOG === true) { logger.write('[WARN] initialize -> dataset with no type defined or type not supported -> dataset.config.type = ' + dataset.config.type) } } - } - default: { - callBackFunction(err) - return - } - } - let event = { - totalValue: pCaller.getExpectedFiles(), - currentValue: pCaller.getFilesLoaded() - } + function onMarketFileReady(err, pCaller) { + try { + switch (err.result) { + case GLOBAL.DEFAULT_OK_RESPONSE.result: { + break + } + case GLOBAL.DEFAULT_FAIL_RESPONSE.result: { + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } + } + let event = { + totalValue: pCaller.getExpectedFiles(), + currentValue: pCaller.getFilesLoaded(), + filesNotLoaded: pCaller.getFilesNotLoaded() + } - thisObject.eventHandler.raiseEvent('Daily File Loaded', event) + thisObject.eventHandler.raiseEvent('Market File Loaded', event) - if (event.currentValue === event.totalValue) { - dataSetsLoaded++ - checkInitializeComplete() + if (event.filesNotLoaded === event.totalValue) { + dataSetsToLoad-- + checkInitializeComplete() + return + } + + if (event.currentValue + event.filesNotLoaded === event.totalValue) { + dataSetsLoaded++ + checkInitializeComplete() + } + } catch (err) { + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + } + } + + function onDailyFileReady(err, pCaller) { + try { + switch (err.result) { + case GLOBAL.DEFAULT_OK_RESPONSE.result: { + break + } + + case GLOBAL.DEFAULT_FAIL_RESPONSE.result: { + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } + + case GLOBAL.CUSTOM_FAIL_RESPONSE.result: { + if (err.message === 'Dataset Unavailable.') { + dataSetsToLoad-- + checkInitializeComplete() + return + } else { + callBackFunction(err) + return + } + } + default: { + callBackFunction(err) + return + } + } + + let event = { + totalValue: pCaller.getExpectedFiles(), + currentValue: pCaller.getFilesLoaded() + } + + thisObject.eventHandler.raiseEvent('Daily File Loaded', event) + + if (event.currentValue === event.totalValue) { + dataSetsLoaded++ + checkInitializeComplete() + } + } catch (err) { + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + } + } + + function onSingleFileReady(err, pCaller) { + try { + switch (err.result) { + case GLOBAL.DEFAULT_OK_RESPONSE.result: { + break + } + + case GLOBAL.DEFAULT_FAIL_RESPONSE.result: { + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } + + case GLOBAL.CUSTOM_FAIL_RESPONSE.result: { + callBackFunction(err) + return + } + + default: { + callBackFunction(err) + return + } + } + let event = { + totalValue: 1, + currentValue: 1 + } + thisObject.eventHandler.raiseEvent('Single File Loaded', event) + + if (event.currentValue === event.totalValue) { + dataSetsLoaded++ + checkInitializeComplete() + } + } catch (err) { + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + } + } + + function onFileSequenceReady(err, pCaller) { + try { + switch (err.result) { + case GLOBAL.DEFAULT_OK_RESPONSE.result: { + break + } + case GLOBAL.DEFAULT_FAIL_RESPONSE.result: { + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } + case GLOBAL.CUSTOM_FAIL_RESPONSE.result: { + callBackFunction(err) + return + } + default: { + callBackFunction(err) + return + } + } + let event + if (pCaller !== undefined) { + event = { + totalValue: pCaller.getExpectedFiles(), + currentValue: pCaller.getFilesLoaded() + } + } else { // When there are no data the reference to the caller wont arrive here. + event = { + totalValue: 1, + currentValue: 1 + } + } + + thisObject.eventHandler.raiseEvent('File Sequence Loaded', event) + + if (event.currentValue === event.totalValue) { + dataSetsLoaded++ + checkInitializeComplete() + } + } catch (err) { + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + } + } + + function checkInitializeComplete() { + try { + if (dataSetsLoaded === dataSetsToLoad) { + callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE) + } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> checkInitializeComplete -> err = ' + err.stack) } + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + } + } } - } catch (err) { + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> err = ' + err.stack) } callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - } } - - function onSingleFileReady (err, pCaller) { - try { - switch (err.result) { - case GLOBAL.DEFAULT_OK_RESPONSE.result: { - break - } - - case GLOBAL.DEFAULT_FAIL_RESPONSE.result: { - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - return - } - - case GLOBAL.CUSTOM_FAIL_RESPONSE.result: { - callBackFunction(err) - return - } - - default: { - callBackFunction(err) - return - } - } - let event = { - totalValue: 1, - currentValue: 1 - } - thisObject.eventHandler.raiseEvent('Single File Loaded', event) - - if (event.currentValue === event.totalValue) { - dataSetsLoaded++ - checkInitializeComplete() - } - } catch (err) { - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - } - } - - function onFileSequenceReady (err, pCaller) { - try { - switch (err.result) { - case GLOBAL.DEFAULT_OK_RESPONSE.result: { - break - } - case GLOBAL.DEFAULT_FAIL_RESPONSE.result: { - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - return - } - case GLOBAL.CUSTOM_FAIL_RESPONSE.result: { - callBackFunction(err) - return - } - default: { - callBackFunction(err) - return - } - } - let event - if (pCaller !== undefined) { - event = { - totalValue: pCaller.getExpectedFiles(), - currentValue: pCaller.getFilesLoaded() - } - } else { // When there are no data the reference to the caller wont arrive here. - event = { - totalValue: 1, - currentValue: 1 - } - } - - thisObject.eventHandler.raiseEvent('File Sequence Loaded', event) - - if (event.currentValue === event.totalValue) { - dataSetsLoaded++ - checkInitializeComplete() - } - } catch (err) { - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - } - } - - function checkInitializeComplete () { - try { - if (dataSetsLoaded === dataSetsToLoad) { - callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE) - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> checkInitializeComplete -> err = ' + err.stack) } - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - } - } - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> err = ' + err.stack) } - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) } - } - function setDatetime (pDatetime) { + function setDatetime(pDatetime) { /* If there is a change in the day, then we take some actions, otherwise, we dont. */ - let currentDate = Math.trunc(datetime.valueOf() / ONE_DAY_IN_MILISECONDS) - let newDate = Math.trunc(pDatetime.valueOf() / ONE_DAY_IN_MILISECONDS) + let currentDate = Math.trunc(datetime.valueOf() / ONE_DAY_IN_MILISECONDS) + let newDate = Math.trunc(pDatetime.valueOf() / ONE_DAY_IN_MILISECONDS) - datetime = new Date(pDatetime) + datetime = new Date(pDatetime) - if (currentDate !== newDate) { - if (timeFrame <= _1_HOUR_IN_MILISECONDS) { - for (let i = 0; i < thisObject.dailyFiles.length; i++) { - thisObject.dailyFiles[i].setDatetime(pDatetime) + if (currentDate !== newDate) { + if (timeFrame <= _1_HOUR_IN_MILISECONDS) { + for (let i = 0; i < thisObject.dailyFiles.length; i++) { + thisObject.dailyFiles[i].setDatetime(pDatetime) + } + } } - } } - } - function setTimeFrame (pTimeFrame) { + function setTimeFrame(pTimeFrame) { /* We are going to filter out the cases in which the timeFrame received is the same that the one we already know. */ - if (timeFrame !== pTimeFrame) { - timeFrame = pTimeFrame + if (timeFrame !== pTimeFrame) { + timeFrame = pTimeFrame - if (timeFrame <= _1_HOUR_IN_MILISECONDS) { - for (let i = 0; i < thisObject.dailyFiles.length; i++) { - thisObject.dailyFiles[i].setTimeFrame(pTimeFrame, datetime) + if (timeFrame <= _1_HOUR_IN_MILISECONDS) { + for (let i = 0; i < thisObject.dailyFiles.length; i++) { + thisObject.dailyFiles[i].setTimeFrame(pTimeFrame, datetime) + } + } } - } } - } } diff --git a/CanvasApp/Scales/AutoScaleButton.js b/CanvasApp/Scales/AutoScaleButton.js index 597f1c2b2..5e56c6984 100644 --- a/CanvasApp/Scales/AutoScaleButton.js +++ b/CanvasApp/Scales/AutoScaleButton.js @@ -1,206 +1,206 @@ -function newAutoScaleButton () { - let thisObject = { - container: undefined, - fitFunction: undefined, - parentContainer: undefined, - autoMinScale: undefined, - autoMaxScale: undefined, - setStatus: setStatus, - draw: draw, - getContainer: getContainer, // returns the inner most container that holds the point received by parameter. - initialize: initialize, - finalize: finalize - } +function newAutoScaleButton() { + let thisObject = { + container: undefined, + fitFunction: undefined, + parentContainer: undefined, + autoMinScale: undefined, + autoMaxScale: undefined, + setStatus: setStatus, + draw: draw, + getContainer: getContainer, // returns the inner most container that holds the point received by parameter. + initialize: initialize, + finalize: finalize + } - /* Cointainer stuff */ - thisObject.container = newContainer() - thisObject.container.name = 'Auto Scale Button' - thisObject.container.initialize() - thisObject.container.isClickeable = true - thisObject.container.isDraggeable = false - thisObject.container.frame.containerName = 'Auto Scale Button' + /* Cointainer stuff */ + thisObject.container = newContainer() + thisObject.container.name = 'Auto Scale Button' + thisObject.container.initialize() + thisObject.container.isClickeable = true + thisObject.container.isDraggeable = false + thisObject.container.frame.containerName = 'Auto Scale Button' - const ICON_SIZE = 36 - let onMouseWheelEventSubscriptionId - let coordinateSystem - let axis - let currentStatus - return thisObject + const ICON_SIZE = 36 + let onMouseWheelEventSubscriptionId + let coordinateSystem + let axis + let currentStatus + return thisObject - function finalize () { - thisObject.container.eventHandler.stopListening(onMouseWheelEventSubscriptionId) - thisObject.container.finalize() - thisObject.container = undefined - thisObject.fitFunction = undefined - thisObject.parentContainer = undefined - thisObject.panels = undefined + function finalize() { + thisObject.container.eventHandler.stopListening(onMouseWheelEventSubscriptionId) + thisObject.container.finalize() + thisObject.container = undefined + thisObject.fitFunction = undefined + thisObject.parentContainer = undefined + thisObject.panels = undefined - coordinateSystem = undefined - axis = undefined - } + coordinateSystem = undefined + axis = undefined + } - function initialize (pAxis, pCoordinateSystem) { - axis = pAxis - coordinateSystem = pCoordinateSystem - thisObject.autoMinScale = coordinateSystem.autoMinYScale - thisObject.autoMaxScale = coordinateSystem.autoMaxYScale + function initialize(pAxis, pCoordinateSystem) { + axis = pAxis + coordinateSystem = pCoordinateSystem + thisObject.autoMinScale = coordinateSystem.autoMinYScale + thisObject.autoMaxScale = coordinateSystem.autoMaxYScale - switch (axis) { - case 'X': { - thisObject.container.frame.width = ICON_SIZE - thisObject.container.frame.height = ICON_SIZE + switch (axis) { + case 'X': { + thisObject.container.frame.width = ICON_SIZE + thisObject.container.frame.height = ICON_SIZE - let position = { - x: thisObject.container.parentContainer.frame.width * 7 / 8, - y: thisObject.container.parentContainer.frame.height / 2 + let position = { + x: thisObject.container.parentContainer.frame.width * 7 / 8, + y: thisObject.container.parentContainer.frame.height / 2 + } + + thisObject.container.frame.position = position + break + } + case 'Y': { + thisObject.container.frame.width = ICON_SIZE + thisObject.container.frame.height = ICON_SIZE + + let position = { + x: thisObject.container.parentContainer.frame.width * 7 / 8, + y: thisObject.container.parentContainer.frame.height / 2 + } + + thisObject.container.frame.position = position + break + } } - - thisObject.container.frame.position = position - break - } - case 'Y': { - thisObject.container.frame.width = ICON_SIZE - thisObject.container.frame.height = ICON_SIZE - - let position = { - x: thisObject.container.parentContainer.frame.width * 7 / 8, - y: thisObject.container.parentContainer.frame.height / 2 - } - - thisObject.container.frame.position = position - break - } - } - onMouseWheelEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseWheel', onMouseWheel) - } - - function setStatus (autoMinScale, autoMaxScale) { - thisObject.autoMinScale = autoMinScale - thisObject.autoMaxScale = autoMaxScale - - if (thisObject.autoMinScale === false && thisObject.autoMaxScale === false) { - currentStatus = 1 - } - if (thisObject.autoMinScale === true && thisObject.autoMaxScale === false) { - currentStatus = 2 - } - if (thisObject.autoMinScale === false && thisObject.autoMaxScale === true) { - currentStatus = 4 - } - if (thisObject.autoMinScale === true && thisObject.autoMaxScale === true) { - currentStatus = 6 - } - } - function onMouseWheel (event) { - let factor - let delta = event.wheelDelta - if (delta < 0) { - delta = -1 - } else { - delta = 1 - } - currentStatus = currentStatus + delta - if (currentStatus === 7) { currentStatus = 1 } - if (currentStatus === 0) { currentStatus = 6 } - - switch (currentStatus) { - case 1: { - thisObject.autoMinScale = false - thisObject.autoMaxScale = false - update() - return - } - case 2: { - thisObject.autoMinScale = true - thisObject.autoMaxScale = false - update() - return - } - case 3: { - thisObject.autoMinScale = false - thisObject.autoMaxScale = false - update() - return - } - case 4: { - thisObject.autoMinScale = false - thisObject.autoMaxScale = true - update() - return - } - case 5: { - thisObject.autoMinScale = false - thisObject.autoMaxScale = false - update() - return - } - case 6: { - thisObject.autoMinScale = true - thisObject.autoMaxScale = true - update() - return - } + onMouseWheelEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseWheel', onMouseWheel) } - function update () { - switch (axis) { - case 'X': { - coordinateSystem.autoMinXScale = thisObject.autoMinScale - coordinateSystem.autoMaxXScale = thisObject.autoMaxScale - break - } - case 'Y': { - coordinateSystem.autoMinYScale = thisObject.autoMinScale - coordinateSystem.autoMaxYScale = thisObject.autoMaxScale - break - } - } + function setStatus(autoMinScale, autoMaxScale) { + thisObject.autoMinScale = autoMinScale + thisObject.autoMaxScale = autoMaxScale - coordinateSystem.recalculateScale() - } - } - - function getContainer (point, purpose) { - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - return thisObject.container - } - } - - function draw () { - let icon - switch (axis) { - case 'X': { if (thisObject.autoMinScale === false && thisObject.autoMaxScale === false) { - icon = canvas.designSpace.iconCollection.get('toggle-auto-time-scale-manual') + currentStatus = 1 } if (thisObject.autoMinScale === true && thisObject.autoMaxScale === false) { - icon = canvas.designSpace.iconCollection.get('toggle-auto-time-scale-auto-min') + currentStatus = 2 } if (thisObject.autoMinScale === false && thisObject.autoMaxScale === true) { - icon = canvas.designSpace.iconCollection.get('toggle-auto-time-scale-auto-max') + currentStatus = 4 } if (thisObject.autoMinScale === true && thisObject.autoMaxScale === true) { - icon = canvas.designSpace.iconCollection.get('toggle-auto-time-scale-auto-min-max') + currentStatus = 6 + } + } + function onMouseWheel(event) { + let factor + let delta = event.wheelDelta + if (delta < 0) { + delta = -1 + } else { + delta = 1 + } + currentStatus = currentStatus + delta + if (currentStatus === 7) { currentStatus = 1 } + if (currentStatus === 0) { currentStatus = 6 } + + switch (currentStatus) { + case 1: { + thisObject.autoMinScale = false + thisObject.autoMaxScale = false + update() + return + } + case 2: { + thisObject.autoMinScale = true + thisObject.autoMaxScale = false + update() + return + } + case 3: { + thisObject.autoMinScale = false + thisObject.autoMaxScale = false + update() + return + } + case 4: { + thisObject.autoMinScale = false + thisObject.autoMaxScale = true + update() + return + } + case 5: { + thisObject.autoMinScale = false + thisObject.autoMaxScale = false + update() + return + } + case 6: { + thisObject.autoMinScale = true + thisObject.autoMaxScale = true + update() + return + } + } + + function update() { + switch (axis) { + case 'X': { + coordinateSystem.autoMinXScale = thisObject.autoMinScale + coordinateSystem.autoMaxXScale = thisObject.autoMaxScale + break + } + case 'Y': { + coordinateSystem.autoMinYScale = thisObject.autoMinScale + coordinateSystem.autoMaxYScale = thisObject.autoMaxScale + break + } + } + + coordinateSystem.recalculateScale() + } + } + + function getContainer(point, purpose) { + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + return thisObject.container + } + } + + function draw() { + let icon + switch (axis) { + case 'X': { + if (thisObject.autoMinScale === false && thisObject.autoMaxScale === false) { + icon = canvas.designSpace.iconCollection.get('toggle-auto-time-scale-manual') + } + if (thisObject.autoMinScale === true && thisObject.autoMaxScale === false) { + icon = canvas.designSpace.iconCollection.get('toggle-auto-time-scale-auto-min') + } + if (thisObject.autoMinScale === false && thisObject.autoMaxScale === true) { + icon = canvas.designSpace.iconCollection.get('toggle-auto-time-scale-auto-max') + } + if (thisObject.autoMinScale === true && thisObject.autoMaxScale === true) { + icon = canvas.designSpace.iconCollection.get('toggle-auto-time-scale-auto-min-max') + } + drawIcon(icon, 0, 0, 0, 0, ICON_SIZE, thisObject.container) + break + } + case 'Y': { + if (thisObject.autoMinScale === false && thisObject.autoMaxScale === false) { + icon = canvas.designSpace.iconCollection.get('toggle-auto-scale-manual') + } + if (thisObject.autoMinScale === true && thisObject.autoMaxScale === false) { + icon = canvas.designSpace.iconCollection.get('toggle-auto-scale-auto-min') + } + if (thisObject.autoMinScale === false && thisObject.autoMaxScale === true) { + icon = canvas.designSpace.iconCollection.get('toggle-auto-scale-auto-max') + } + if (thisObject.autoMinScale === true && thisObject.autoMaxScale === true) { + icon = canvas.designSpace.iconCollection.get('toggle-auto-scale-auto-min-max') + } + drawIcon(icon, 0, 0, 0, 0, ICON_SIZE, thisObject.container) + break + } } - drawIcon(icon, 0, 0, 0, 0, ICON_SIZE, thisObject.container) - break - } - case 'Y': { - if (thisObject.autoMinScale === false && thisObject.autoMaxScale === false) { - icon = canvas.designSpace.iconCollection.get('toggle-auto-scale-manual') - } - if (thisObject.autoMinScale === true && thisObject.autoMaxScale === false) { - icon = canvas.designSpace.iconCollection.get('toggle-auto-scale-auto-min') - } - if (thisObject.autoMinScale === false && thisObject.autoMaxScale === true) { - icon = canvas.designSpace.iconCollection.get('toggle-auto-scale-auto-max') - } - if (thisObject.autoMinScale === true && thisObject.autoMaxScale === true) { - icon = canvas.designSpace.iconCollection.get('toggle-auto-scale-auto-min-max') - } - drawIcon(icon, 0, 0, 0, 0, ICON_SIZE, thisObject.container) - break - } } - } } diff --git a/CanvasApp/Scales/Commons.js b/CanvasApp/Scales/Commons.js index 49dda6e71..13f926ca3 100644 --- a/CanvasApp/Scales/Commons.js +++ b/CanvasApp/Scales/Commons.js @@ -1,45 +1,45 @@ -function drawScaleDisplay (label1, label2, label3, xExtraOffSet1, xExtraOffSet2, xExtraOffSet3, icon1, icon2, container, backgroundColor) { - const RED_LINE_HIGHT = 4 - const OPACITY = 1 +function drawScaleDisplay(label1, label2, label3, xExtraOffSet1, xExtraOffSet2, xExtraOffSet3, icon1, icon2, container, backgroundColor) { + const RED_LINE_HIGHT = 4 + const OPACITY = 1 - let params = { - cornerRadius: 5, - lineWidth: 1, - container: container, - borderColor: UI_COLOR.RUSTED_RED, - castShadow: false, - backgroundColor: backgroundColor, - opacity: OPACITY - } + let params = { + cornerRadius: 5, + lineWidth: 1, + container: container, + borderColor: UI_COLOR.RUSTED_RED, + castShadow: false, + backgroundColor: backgroundColor, + opacity: OPACITY + } - roundedCornersBackground(params) + roundedCornersBackground(params) - /* Place the Text */ + /* Place the Text */ - label1 = label1.substring(0, 18) - label2 = label2.substring(0, 20) - label3 = label3.substring(0, 20) + label1 = label1.substring(0, 18) + label2 = label2.substring(0, 20) + label3 = label3.substring(0, 20) - drawLabel(label1, 1 / 2, 92 / 100, 0, 0, 9, container) - drawLabel(label2, 1 / 2, 42 / 100, 0, 0, 17, container) - drawLabel(label3, 1 / 2, 67 / 100, 0, 0, 9, container) + drawLabel(label1, 1 / 2, 92 / 100, 0, 0, 9, container) + drawLabel(label2, 1 / 2, 42 / 100, 0, 0, 17, container) + drawLabel(label3, 1 / 2, 67 / 100, 0, 0, 9, container) - drawIcon(icon1, 1 / 8, 1 / 2, 0, 0, 28, container) - drawIcon(icon2, 7 / 8, 1 / 2, 0, 0, 28, container) + drawIcon(icon1, 1 / 8, 1 / 2, 0, 0, 28, container) + drawIcon(icon2, 7 / 8, 1 / 2, 0, 0, 28, container) } -function drawScaleDisplayCover (container) { - let params = { - cornerRadius: 5, - lineWidth: 1, - container: container, - borderColor: UI_COLOR.WHITE, - castShadow: false, - backgroundColor: UI_COLOR.WHITE, - opacity: '0.25' - } +function drawScaleDisplayCover(container) { + let params = { + cornerRadius: 5, + lineWidth: 1, + container: container, + borderColor: UI_COLOR.WHITE, + castShadow: false, + backgroundColor: UI_COLOR.WHITE, + opacity: '0.25' + } - roundedCornersBackground(params) + roundedCornersBackground(params) } diff --git a/CanvasApp/Scales/RateScale.js b/CanvasApp/Scales/RateScale.js index 6964143fd..216de1e8e 100644 --- a/CanvasApp/Scales/RateScale.js +++ b/CanvasApp/Scales/RateScale.js @@ -1,566 +1,566 @@ -function newRateScale () { - const MODULE_NAME = 'Right Scale' +function newRateScale() { + const MODULE_NAME = 'Right Scale' - let thisObject = { - container: undefined, - rate: undefined, - fitFunction: undefined, - payload: undefined, - minValue: undefined, - maxValue: undefined, - isVisible: true, - layersOn: undefined, - onUpstreamScaleChanged: onUpstreamScaleChanged, - onMouseOverSomeTimeMachineContainer: onMouseOverSomeTimeMachineContainer, - physics: physics, - draw: draw, - drawBackground: drawBackground, - drawForeground: drawForeground, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - } - - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) - - thisObject.container.isDraggeable = false - thisObject.container.isClickeable = false - thisObject.container.isWheelable = true - thisObject.container.detectMouseOver = true - - thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL - thisObject.container.frame.height = 40 - - let draggeableContainer = newContainer() - draggeableContainer.initialize(MODULE_NAME + ' Draggeable') - draggeableContainer.isDraggeable = true - - let visible = true - let isMouseOver - - let onMouseWheelEventSubscriptionId - let onMouseOverEventSubscriptionId - let onMouseNotOverEventSubscriptionId - let onScaleChangedEventSubscriptionId - let onDragStartedEventSubscriptionId - - let coordinateSystem - let coordinateSystemWhenDragStarted - - let limitingContainer - let rateCalculationsContainer - - mouseWhenDragStarted = { - position: { - x: 0, - y: 0 - } - } - - parentFrameWhenDragStarted = { - position: { - x: 0, - y: 0 - }, - width: 0, - height: 0 - } - - let scaleDisplayTimer = 0 - let autoScaleButton - - let wheelDeltaDirection - let wheelDeltaCounter = 0 - - return thisObject - - function finalize () { - thisObject.container.eventHandler.stopListening(onMouseWheelEventSubscriptionId) - thisObject.container.eventHandler.stopListening(onMouseOverEventSubscriptionId) - thisObject.container.eventHandler.stopListening(onMouseNotOverEventSubscriptionId) - coordinateSystem.eventHandler.stopListening(onScaleChangedEventSubscriptionId) - thisObject.container.eventHandler.stopListening(onDragStartedEventSubscriptionId) - - thisObject.container.finalize() - thisObject.container = undefined - thisObject.fitFunction = undefined - thisObject.payload = undefined - - if (coordinateSystemWhenDragStarted !== undefined) { - coordinateSystemWhenDragStarted.finalize() + let thisObject = { + container: undefined, + rate: undefined, + fitFunction: undefined, + payload: undefined, + minValue: undefined, + maxValue: undefined, + isVisible: true, + layersOn: undefined, + onUpstreamScaleChanged: onUpstreamScaleChanged, + onMouseOverSomeTimeMachineContainer: onMouseOverSomeTimeMachineContainer, + physics: physics, + draw: draw, + drawBackground: drawBackground, + drawForeground: drawForeground, + getContainer: getContainer, + initialize: initialize, + finalize: finalize } - coordinateSystemWhenDragStarted = undefined + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) - coordinateSystem = undefined - limitingContainer = undefined - rateCalculationsContainer = undefined + thisObject.container.isDraggeable = false + thisObject.container.isClickeable = false + thisObject.container.isWheelable = true + thisObject.container.detectMouseOver = true - mouseWhenDragStarted = undefined - parentFrameWhenDragStarted = undefined + thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL + thisObject.container.frame.height = 40 - autoScaleButton.finalize() - autoScaleButton = undefined - } + let draggeableContainer = newContainer() + draggeableContainer.initialize(MODULE_NAME + ' Draggeable') + draggeableContainer.isDraggeable = true - function initialize (pCoordinateSystem, pLimitingContainer, pRateCalculationsContainer) { - coordinateSystem = pCoordinateSystem - limitingContainer = pLimitingContainer - rateCalculationsContainer = pRateCalculationsContainer + let visible = true + let isMouseOver - thisObject.minValue = coordinateSystem.min.y - thisObject.maxValue = coordinateSystem.max.y + let onMouseWheelEventSubscriptionId + let onMouseOverEventSubscriptionId + let onMouseNotOverEventSubscriptionId + let onScaleChangedEventSubscriptionId + let onDragStartedEventSubscriptionId - onMouseWheelEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseWheel', onMouseWheel) - onMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) - onMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) - onScaleChangedEventSubscriptionId = coordinateSystem.eventHandler.listenToEvent('Scale Changed', onScaleChanged) - onDragStartedEventSubscriptionId = draggeableContainer.eventHandler.listenToEvent('onDragStarted', onDragStarted) + let coordinateSystem + let coordinateSystemWhenDragStarted - autoScaleButton = newAutoScaleButton() - autoScaleButton.container.connectToParent(thisObject.container) - autoScaleButton.initialize('Y', coordinateSystem) + let limitingContainer + let rateCalculationsContainer - readObjectState() - } - - function onMouseOverSomeTimeMachineContainer (event) { - if (event.containerId === undefined) { - /* This happens when the mouse over was not at the instance of a certain scale, but anywhere else. */ - visible = true - } else { - if (event.containerId === thisObject.container.id) { - visible = true - } else { - visible = false - turnOnCounter = 0 - } - } - } - - function onScaleChanged () { - saveObjectState() - } - - function onMouseOver (event) { - isMouseOver = true - event.containerId = thisObject.container.id - thisObject.container.eventHandler.raiseEvent('onMouseOverScale', event) - } - - function onMouseNotOver () { - isMouseOver = false - scaleDisplayTimer = 0 - } - - function onMouseWheel (event) { - if (IS_MAC) { - let sensitivity - if (event.wheelDelta < 0) { - if (event.shiftKey === true) { - sensitivity = 20 - } else { - sensitivity = 5 - } - if (wheelDeltaDirection === -1) { - wheelDeltaCounter++ - if (wheelDeltaCounter < sensitivity) { - return - } else { - wheelDeltaCounter = 0 - } - } else { - wheelDeltaCounter = 0 - wheelDeltaDirection = -1 - return - } - } else { - if (wheelDeltaDirection === 1) { - wheelDeltaCounter++ - if (wheelDeltaCounter < sensitivity) { - return - } else { - wheelDeltaCounter = 0 - } - } else { - wheelDeltaCounter = 0 - wheelDeltaDirection = 1 - return - } - } - } - - if (event.shiftKey === true) { - autoScaleButton.container.eventHandler.raiseEvent('onMouseWheel', event) - return - } - - let factor - let morePower = 10 - if (event.buttons === 4) { morePower = 1 } // Mouse wheel pressed. - - let delta = event.wheelDelta - if (delta < 0) { - factor = -0.01 * morePower - } else { - factor = 0.01 * morePower - } - - coordinateSystem.zoomY(factor, event, limitingContainer) - scaleDisplayTimer = 100 - } - - function onDragStarted (event) { mouseWhenDragStarted = { - position: { - x: event.x, - y: event.y - } + position: { + x: 0, + y: 0 + } } parentFrameWhenDragStarted = { - position: { - x: limitingContainer.frame.position.x, - y: limitingContainer.frame.position.y - }, - width: limitingContainer.frame.width, - height: limitingContainer.frame.height + position: { + x: 0, + y: 0 + }, + width: 0, + height: 0 } - coordinateSystemWhenDragStarted = newCoordinateSystem() + let scaleDisplayTimer = 0 + let autoScaleButton - let minValue = { - x: coordinateSystem.min.x, - y: coordinateSystem.min.y - } + let wheelDeltaDirection + let wheelDeltaCounter = 0 - let maxValue = { - x: coordinateSystem.max.x, - y: coordinateSystem.max.y - } + return thisObject - coordinateSystemWhenDragStarted.initialize(minValue, maxValue, coordinateSystem.maxWidth, coordinateSystem.maxHeight) - } + function finalize() { + thisObject.container.eventHandler.stopListening(onMouseWheelEventSubscriptionId) + thisObject.container.eventHandler.stopListening(onMouseOverEventSubscriptionId) + thisObject.container.eventHandler.stopListening(onMouseNotOverEventSubscriptionId) + coordinateSystem.eventHandler.stopListening(onScaleChangedEventSubscriptionId) + thisObject.container.eventHandler.stopListening(onDragStartedEventSubscriptionId) - function getContainer (point, purpose) { - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - if (purpose === GET_CONTAINER_PURPOSE.DRAGGING) { - return draggeableContainer - } + thisObject.container.finalize() + thisObject.container = undefined + thisObject.fitFunction = undefined + thisObject.payload = undefined - return thisObject.container - } - } - - function saveObjectState () { - try { - let code = JSON.parse(thisObject.payload.node.code) - code.minValue = coordinateSystem.min.y - code.maxValue = coordinateSystem.max.y - code.autoMinScale = coordinateSystem.autoMinYScale - code.autoMaxScale = coordinateSystem.autoMaxYScale - thisObject.payload.node.code = JSON.stringify(code, null, 4) - } catch (err) { - // we ignore errors here since most likely they will be parsing errors. - } - } - - function readObjectState () { - try { - let code = JSON.parse(thisObject.payload.node.code) - - if ( - (isNaN(code.minValue) || code.minValue === null || code.minValue === undefined) || - (isNaN(code.maxValue) || code.maxValue === null || code.maxValue === undefined) - ) { - // not using this value - } else { - if ( - thisObject.minValue !== code.minValue || - thisObject.maxValue !== code.maxValue || - coordinateSystem.autoMinYScale !== code.autoMinScale || - coordinateSystem.autoMaxYScale !== code.autoMaxScale - ) { - thisObject.minValue = code.minValue - thisObject.maxValue = code.maxValue - coordinateSystem.min.y = thisObject.minValue - coordinateSystem.max.y = thisObject.maxValue - - if (code.autoMinScale !== undefined && (code.autoMinScale === true || code.autoMinScale === false) && code.autoMaxScale !== undefined && (code.autoMaxScale === true || code.autoMaxScale === false)) { - coordinateSystem.autoMinYScale = code.autoMinScale - coordinateSystem.autoMaxYScale = code.autoMaxScale - autoScaleButton.setStatus(code.autoMinScale, code.autoMaxScale) - } - - coordinateSystem.recalculateScale() + if (coordinateSystemWhenDragStarted !== undefined) { + coordinateSystemWhenDragStarted.finalize() } - } - saveObjectState() // this overrides any invalid value at the config. - } catch (err) { - // we ignore errors here since most likely they will be parsing errors. - } - } - function physics () { - scaleDisplayTimer-- - readObjectState() - positioningPhysics() - draggingPhysics() - } + coordinateSystemWhenDragStarted = undefined - function draggingPhysics () { - if (coordinateSystemWhenDragStarted === undefined) { return } - if (draggeableContainer.frame.position.y === 0) { return } + coordinateSystem = undefined + limitingContainer = undefined + rateCalculationsContainer = undefined - let mouseNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(canvas.mouse.position) - let mouseWhenDragStartedNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(mouseWhenDragStarted.position) + mouseWhenDragStarted = undefined + parentFrameWhenDragStarted = undefined - let dragVectorWhenDragStarted = { - x: 0, - y: mouseNoZoom.y - mouseWhenDragStartedNoZoom.y + autoScaleButton.finalize() + autoScaleButton = undefined } - let dragVector = { - x: 0, - y: draggeableContainer.frame.position.y + function initialize(pCoordinateSystem, pLimitingContainer, pRateCalculationsContainer) { + coordinateSystem = pCoordinateSystem + limitingContainer = pLimitingContainer + rateCalculationsContainer = pRateCalculationsContainer + + thisObject.minValue = coordinateSystem.min.y + thisObject.maxValue = coordinateSystem.max.y + + onMouseWheelEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseWheel', onMouseWheel) + onMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) + onMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) + onScaleChangedEventSubscriptionId = coordinateSystem.eventHandler.listenToEvent('Scale Changed', onScaleChanged) + onDragStartedEventSubscriptionId = draggeableContainer.eventHandler.listenToEvent('onDragStarted', onDragStarted) + + autoScaleButton = newAutoScaleButton() + autoScaleButton.container.connectToParent(thisObject.container) + autoScaleButton.initialize('Y', coordinateSystem) + + readObjectState() } - draggeableContainer.frame.position.y = 0 - - let point = { - x: 0, - y: (-dragVectorWhenDragStarted.y) - } - - let newMaxRate = getRateFromPointAtContainer(point, limitingContainer, coordinateSystemWhenDragStarted) - let yDifferenceMaxMin = coordinateSystemWhenDragStarted.max.y - coordinateSystemWhenDragStarted.min.y - - coordinateSystem.min.y = newMaxRate - yDifferenceMaxMin - coordinateSystem.max.y = newMaxRate - let event = { - type: 'center dragged', - dragVector: dragVector - } - coordinateSystem.recalculateScale() - } - - function onUpstreamScaleChanged (event) { - if (event === undefined) { return } - if (event.dragVector.y === 0) { return } - if (event.type === 'center dragged') { - let point = { - x: event.dragVector.x, - y: -event.dragVector.y - } - let newMaxRate = getRateFromPointAtContainer(point, rateCalculationsContainer, coordinateSystem) - let yDifferenceMaxMin = coordinateSystem.max.y - coordinateSystem.min.y - coordinateSystem.min.y = newMaxRate - yDifferenceMaxMin - coordinateSystem.max.y = newMaxRate - - coordinateSystem.recalculateScale() - } - if (event.type === 'top dragged') { - let point = { - x: event.dragVector.x, - y: event.dragVector.y - } - let newMaxRate = getRateFromPointAtContainer(point, rateCalculationsContainer, coordinateSystem) - - coordinateSystem.max.y = newMaxRate - coordinateSystem.maxHeight = rateCalculationsContainer.frame.height - coordinateSystem.recalculateScale() - } - if (event.type === 'bottom dragged') { - let point = { - x: event.dragVector.x, - y: event.dragVector.y + rateCalculationsContainer.frame.height - } - let newMinRate = getRateFromPointAtContainer(point, rateCalculationsContainer, coordinateSystem) - - coordinateSystem.min.y = newMinRate - coordinateSystem.maxHeight = rateCalculationsContainer.frame.height - coordinateSystem.recalculateScale() - } - } - - function positioningPhysics () { - /* Container Limits */ - - let upCorner = { - x: 0, - y: 0 - } - - let bottonCorner = { - x: limitingContainer.frame.width, - y: limitingContainer.frame.height - } - - upCorner = transformThisPoint(upCorner, limitingContainer) - bottonCorner = transformThisPoint(bottonCorner, limitingContainer) - - upCorner = limitingContainer.fitFunction(upCorner, true) - bottonCorner = limitingContainer.fitFunction(bottonCorner, true) - - /* We will check if we need to change the bottom because of being one of many scales of the same type */ - let displaceFactor = 0 - if (thisObject.payload.parentNode === undefined) { return } // This happens when in the process of deleting the scale, timeline chart or time machine. - if (thisObject.payload.parentNode.type === 'Timeline Chart') { - if (thisObject.payload.parentNode.payload.parentNode !== undefined) { - if (thisObject.payload.parentNode.payload.parentNode.rateScale !== undefined) { - if (thisObject.payload.parentNode.payload.parentNode.rateScale.payload.isVisible === true) { - displaceFactor++ - } - } - for (let i = 0; i < thisObject.payload.parentNode.payload.parentNode.timelineCharts.length; i++) { - let timelineChart = thisObject.payload.parentNode.payload.parentNode.timelineCharts[i] - if (timelineChart.rateScale !== undefined) { - if (thisObject.payload.node.id !== timelineChart.rateScale.id) { - if (timelineChart.rateScale.payload.isVisible === true) { - displaceFactor++ - } + function onMouseOverSomeTimeMachineContainer(event) { + if (event.containerId === undefined) { + /* This happens when the mouse over was not at the instance of a certain scale, but anywhere else. */ + visible = true + } else { + if (event.containerId === thisObject.container.id) { + visible = true } else { - break + visible = false + turnOnCounter = 0 } - } } - } - } - bottonCorner.x = bottonCorner.x - thisObject.container.frame.width * displaceFactor - - /* Mouse Position Rate Calculation */ - let ratePoint = { - x: 0, - y: canvas.mouse.position.y } - thisObject.rate = getRateFromPointAtBrowserCanvas(ratePoint, rateCalculationsContainer, coordinateSystem) - - /* rateScale Positioning */ - ratePoint = { - x: limitingContainer.frame.width, - y: 0 + function onScaleChanged() { + saveObjectState() } - ratePoint = transformThisPoint(ratePoint, limitingContainer.frame.container) - ratePoint.y = canvas.mouse.position.y - thisObject.container.frame.height / 2 + thisObject.container.frame.height - - /* Checking against the container limits. */ - if (ratePoint.x < upCorner.x) { ratePoint.x = upCorner.x } - if (ratePoint.x + thisObject.container.frame.width > bottonCorner.x) { ratePoint.x = bottonCorner.x } - if (ratePoint.y < upCorner.y + thisObject.container.frame.height) { ratePoint.y = upCorner.y + thisObject.container.frame.height } - if (ratePoint.y > bottonCorner.y) { ratePoint.y = bottonCorner.y } - - thisObject.container.frame.position.y = ratePoint.y - thisObject.container.frame.height - thisObject.container.frame.position.x = ratePoint.x - thisObject.container.frame.width - - thisObject.isVisible = true - thisObject.payload.isVisible = true - if (thisObject.container.frame.position.y + thisObject.container.frame.height * 2 > bottonCorner.y || - thisObject.container.frame.position.y - thisObject.container.frame.height * 1 < upCorner.y || - thisObject.container.frame.position.x < upCorner.x - ) { - thisObject.isVisible = false - thisObject.payload.isVisible = false - } - if (thisObject.layersOn === 0) { - thisObject.isVisible = false - thisObject.payload.isVisible = false + function onMouseOver(event) { + isMouseOver = true + event.containerId = thisObject.container.id + thisObject.container.eventHandler.raiseEvent('onMouseOverScale', event) } - if (canvas.chartingSpace.viewport.zoomTargetLevel < ZOOM_OUT_THRESHOLD_FOR_DISPLAYING_SCALES) { - thisObject.isVisible = false - } - } - - function draw () { - drawScaleBox() - autoScaleButton.draw() - if (visible === false) { - drawScaleDisplayCover(thisObject.container) - } - } - - function drawForeground () { - if (isMouseOver === true) { - drawScaleBox() - autoScaleButton.draw() - } - } - - function drawBackground () { - drawScale() - } - - function drawScale () { - const SEPARATION = 50 - const NUMBER_OF_LABELS = Math.trunc(canvas.chartingSpace.viewport.height / SEPARATION) - const FONT_SIZE = 15 - - for (let i = 0; i <= NUMBER_OF_LABELS; i++) { - let ratePoint1 = { - x: 0, - y: TOP_SPACE_HEIGHT + SEPARATION * (i + 1) - } - let ratePoint2 = { - x: 0, - y: TOP_SPACE_HEIGHT + SEPARATION * (i + 0) - } - - let rate = getRateFromPointAtBrowserCanvas(ratePoint1, rateCalculationsContainer, coordinateSystem) - let labels = scaleLabels(rate) - let decimalsDisplace = labels[1].length * FONT_SIZE * FONT_ASPECT_RATIO - - let fitPoint1 = thisObject.fitFunction(ratePoint1) - let fitPoint2 = thisObject.fitFunction(ratePoint2) - - if (fitPoint1.y === ratePoint1.y && fitPoint2.y === ratePoint2.y) { - drawLabel(labels[1], 1 / 2, 0, 0, 0, FONT_SIZE, thisObject.container, UI_COLOR.GREY, undefined, ratePoint1.y) - drawLabel(labels[2], 1 / 2, 0, decimalsDisplace, -5, 9, thisObject.container, UI_COLOR.GREY, undefined, ratePoint1.y) - } - } - } - - function drawScaleBox () { - if (thisObject.rate === undefined) { return } - if (thisObject.payload === undefined) { return } - if (thisObject.payload.node === undefined) { return } - - let icon1 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.type) - let icon2 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.type) - - let backgroundColor = UI_COLOR.BLACK - let labels = scaleLabels(thisObject.rate) - - drawScaleDisplay(labels[0], labels[1], labels[2], 0, 0, 0, icon1, icon2, thisObject.container, backgroundColor) - } - - function scaleLabels (rate) { - if (rate < coordinateSystem.min.y) { - rate = coordinateSystem.min.y - } - if (rate > coordinateSystem.max.y) { - rate = coordinateSystem.max.y + function onMouseNotOver() { + isMouseOver = false + scaleDisplayTimer = 0 } - let label = dynamicDecimals(rate) - let labelArray = label.split('.') - let label1 = thisObject.payload.node.payload.parentNode.name - let label2 = (Math.trunc(rate)).toLocaleString() - let label3 = labelArray[1] - if (label3 === undefined) { label3 = '00' } + function onMouseWheel(event) { + if (IS_MAC) { + let sensitivity + if (event.wheelDelta < 0) { + if (event.shiftKey === true) { + sensitivity = 20 + } else { + sensitivity = 5 + } + if (wheelDeltaDirection === -1) { + wheelDeltaCounter++ + if (wheelDeltaCounter < sensitivity) { + return + } else { + wheelDeltaCounter = 0 + } + } else { + wheelDeltaCounter = 0 + wheelDeltaDirection = -1 + return + } + } else { + if (wheelDeltaDirection === 1) { + wheelDeltaCounter++ + if (wheelDeltaCounter < sensitivity) { + return + } else { + wheelDeltaCounter = 0 + } + } else { + wheelDeltaCounter = 0 + wheelDeltaDirection = 1 + return + } + } + } - if (rate < 1) { - label2 = label - label3 = '' + if (event.shiftKey === true) { + autoScaleButton.container.eventHandler.raiseEvent('onMouseWheel', event) + return + } + + let factor + let morePower = 10 + if (event.buttons === 4) { morePower = 1 } // Mouse wheel pressed. + + let delta = event.wheelDelta + if (delta < 0) { + factor = -0.01 * morePower + } else { + factor = 0.01 * morePower + } + + coordinateSystem.zoomY(factor, event, limitingContainer) + scaleDisplayTimer = 100 } - if (scaleDisplayTimer > 0) { - label2 = (coordinateSystem.scale.y * 10000).toFixed(2) - label3 = 'SCALE' + function onDragStarted(event) { + mouseWhenDragStarted = { + position: { + x: event.x, + y: event.y + } + } + + parentFrameWhenDragStarted = { + position: { + x: limitingContainer.frame.position.x, + y: limitingContainer.frame.position.y + }, + width: limitingContainer.frame.width, + height: limitingContainer.frame.height + } + + coordinateSystemWhenDragStarted = newCoordinateSystem() + + let minValue = { + x: coordinateSystem.min.x, + y: coordinateSystem.min.y + } + + let maxValue = { + x: coordinateSystem.max.x, + y: coordinateSystem.max.y + } + + coordinateSystemWhenDragStarted.initialize(minValue, maxValue, coordinateSystem.maxWidth, coordinateSystem.maxHeight) } - return [label1, label2, label3] - } + function getContainer(point, purpose) { + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + if (purpose === GET_CONTAINER_PURPOSE.DRAGGING) { + return draggeableContainer + } + + return thisObject.container + } + } + + function saveObjectState() { + try { + let config = JSON.parse(thisObject.payload.node.config) + config.minValue = coordinateSystem.min.y + config.maxValue = coordinateSystem.max.y + config.autoMinScale = coordinateSystem.autoMinYScale + config.autoMaxScale = coordinateSystem.autoMaxYScale + thisObject.payload.node.config = JSON.stringify(config, null, 4) + } catch (err) { + // we ignore errors here since most likely they will be parsing errors. + } + } + + function readObjectState() { + try { + let config = JSON.parse(thisObject.payload.node.config) + + if ( + (isNaN(config.minValue) || config.minValue === null || config.minValue === undefined) || + (isNaN(config.maxValue) || config.maxValue === null || config.maxValue === undefined) + ) { + // not using this value + } else { + if ( + thisObject.minValue !== config.minValue || + thisObject.maxValue !== config.maxValue || + coordinateSystem.autoMinYScale !== config.autoMinScale || + coordinateSystem.autoMaxYScale !== config.autoMaxScale + ) { + thisObject.minValue = config.minValue + thisObject.maxValue = config.maxValue + coordinateSystem.min.y = thisObject.minValue + coordinateSystem.max.y = thisObject.maxValue + + if (config.autoMinScale !== undefined && (config.autoMinScale === true || config.autoMinScale === false) && config.autoMaxScale !== undefined && (config.autoMaxScale === true || config.autoMaxScale === false)) { + coordinateSystem.autoMinYScale = config.autoMinScale + coordinateSystem.autoMaxYScale = config.autoMaxScale + autoScaleButton.setStatus(config.autoMinScale, config.autoMaxScale) + } + + coordinateSystem.recalculateScale() + } + } + saveObjectState() // this overrides any invalid value at the config. + } catch (err) { + // we ignore errors here since most likely they will be parsing errors. + } + } + + function physics() { + scaleDisplayTimer-- + readObjectState() + positioningPhysics() + draggingPhysics() + } + + function draggingPhysics() { + if (coordinateSystemWhenDragStarted === undefined) { return } + if (draggeableContainer.frame.position.y === 0) { return } + + let mouseNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(canvas.mouse.position) + let mouseWhenDragStartedNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(mouseWhenDragStarted.position) + + let dragVectorWhenDragStarted = { + x: 0, + y: mouseNoZoom.y - mouseWhenDragStartedNoZoom.y + } + + let dragVector = { + x: 0, + y: draggeableContainer.frame.position.y + } + + draggeableContainer.frame.position.y = 0 + + let point = { + x: 0, + y: (-dragVectorWhenDragStarted.y) + } + + let newMaxRate = getRateFromPointAtContainer(point, limitingContainer, coordinateSystemWhenDragStarted) + let yDifferenceMaxMin = coordinateSystemWhenDragStarted.max.y - coordinateSystemWhenDragStarted.min.y + + coordinateSystem.min.y = newMaxRate - yDifferenceMaxMin + coordinateSystem.max.y = newMaxRate + let event = { + type: 'center dragged', + dragVector: dragVector + } + coordinateSystem.recalculateScale() + } + + function onUpstreamScaleChanged(event) { + if (event === undefined) { return } + if (event.dragVector.y === 0) { return } + if (event.type === 'center dragged') { + let point = { + x: event.dragVector.x, + y: -event.dragVector.y + } + let newMaxRate = getRateFromPointAtContainer(point, rateCalculationsContainer, coordinateSystem) + let yDifferenceMaxMin = coordinateSystem.max.y - coordinateSystem.min.y + coordinateSystem.min.y = newMaxRate - yDifferenceMaxMin + coordinateSystem.max.y = newMaxRate + + coordinateSystem.recalculateScale() + } + if (event.type === 'top dragged') { + let point = { + x: event.dragVector.x, + y: event.dragVector.y + } + let newMaxRate = getRateFromPointAtContainer(point, rateCalculationsContainer, coordinateSystem) + + coordinateSystem.max.y = newMaxRate + coordinateSystem.maxHeight = rateCalculationsContainer.frame.height + coordinateSystem.recalculateScale() + } + if (event.type === 'bottom dragged') { + let point = { + x: event.dragVector.x, + y: event.dragVector.y + rateCalculationsContainer.frame.height + } + let newMinRate = getRateFromPointAtContainer(point, rateCalculationsContainer, coordinateSystem) + + coordinateSystem.min.y = newMinRate + coordinateSystem.maxHeight = rateCalculationsContainer.frame.height + coordinateSystem.recalculateScale() + } + } + + function positioningPhysics() { + /* Container Limits */ + + let upCorner = { + x: 0, + y: 0 + } + + let bottonCorner = { + x: limitingContainer.frame.width, + y: limitingContainer.frame.height + } + + upCorner = transformThisPoint(upCorner, limitingContainer) + bottonCorner = transformThisPoint(bottonCorner, limitingContainer) + + upCorner = limitingContainer.fitFunction(upCorner, true) + bottonCorner = limitingContainer.fitFunction(bottonCorner, true) + + /* We will check if we need to change the bottom because of being one of many scales of the same type */ + let displaceFactor = 0 + if (thisObject.payload.parentNode === undefined) { return } // This happens when in the process of deleting the scale, timeline chart or time machine. + if (thisObject.payload.parentNode.type === 'Timeline Chart') { + if (thisObject.payload.parentNode.payload.parentNode !== undefined) { + if (thisObject.payload.parentNode.payload.parentNode.rateScale !== undefined) { + if (thisObject.payload.parentNode.payload.parentNode.rateScale.payload.isVisible === true) { + displaceFactor++ + } + } + for (let i = 0; i < thisObject.payload.parentNode.payload.parentNode.timelineCharts.length; i++) { + let timelineChart = thisObject.payload.parentNode.payload.parentNode.timelineCharts[i] + if (timelineChart.rateScale !== undefined) { + if (thisObject.payload.node.id !== timelineChart.rateScale.id) { + if (timelineChart.rateScale.payload.isVisible === true) { + displaceFactor++ + } + } else { + break + } + } + } + } + } + bottonCorner.x = bottonCorner.x - thisObject.container.frame.width * displaceFactor + + /* Mouse Position Rate Calculation */ + let ratePoint = { + x: 0, + y: canvas.mouse.position.y + } + + thisObject.rate = getRateFromPointAtBrowserCanvas(ratePoint, rateCalculationsContainer, coordinateSystem) + + /* rateScale Positioning */ + ratePoint = { + x: limitingContainer.frame.width, + y: 0 + } + + ratePoint = transformThisPoint(ratePoint, limitingContainer.frame.container) + ratePoint.y = canvas.mouse.position.y - thisObject.container.frame.height / 2 + thisObject.container.frame.height + + /* Checking against the container limits. */ + if (ratePoint.x < upCorner.x) { ratePoint.x = upCorner.x } + if (ratePoint.x + thisObject.container.frame.width > bottonCorner.x) { ratePoint.x = bottonCorner.x } + if (ratePoint.y < upCorner.y + thisObject.container.frame.height) { ratePoint.y = upCorner.y + thisObject.container.frame.height } + if (ratePoint.y > bottonCorner.y) { ratePoint.y = bottonCorner.y } + + thisObject.container.frame.position.y = ratePoint.y - thisObject.container.frame.height + thisObject.container.frame.position.x = ratePoint.x - thisObject.container.frame.width + + thisObject.isVisible = true + thisObject.payload.isVisible = true + if (thisObject.container.frame.position.y + thisObject.container.frame.height * 2 > bottonCorner.y || + thisObject.container.frame.position.y - thisObject.container.frame.height * 1 < upCorner.y || + thisObject.container.frame.position.x < upCorner.x + ) { + thisObject.isVisible = false + thisObject.payload.isVisible = false + } + if (thisObject.layersOn === 0) { + thisObject.isVisible = false + thisObject.payload.isVisible = false + } + + if (canvas.chartingSpace.viewport.zoomTargetLevel < ZOOM_OUT_THRESHOLD_FOR_DISPLAYING_SCALES) { + thisObject.isVisible = false + } + } + + function draw() { + drawScaleBox() + autoScaleButton.draw() + if (visible === false) { + drawScaleDisplayCover(thisObject.container) + } + } + + function drawForeground() { + if (isMouseOver === true) { + drawScaleBox() + autoScaleButton.draw() + } + } + + function drawBackground() { + drawScale() + } + + function drawScale() { + const SEPARATION = 50 + const NUMBER_OF_LABELS = Math.trunc(canvas.chartingSpace.viewport.height / SEPARATION) + const FONT_SIZE = 15 + + for (let i = 0; i <= NUMBER_OF_LABELS; i++) { + let ratePoint1 = { + x: 0, + y: TOP_SPACE_HEIGHT + SEPARATION * (i + 1) + } + let ratePoint2 = { + x: 0, + y: TOP_SPACE_HEIGHT + SEPARATION * (i + 0) + } + + let rate = getRateFromPointAtBrowserCanvas(ratePoint1, rateCalculationsContainer, coordinateSystem) + let labels = scaleLabels(rate) + let decimalsDisplace = labels[1].length * FONT_SIZE * FONT_ASPECT_RATIO + + let fitPoint1 = thisObject.fitFunction(ratePoint1) + let fitPoint2 = thisObject.fitFunction(ratePoint2) + + if (fitPoint1.y === ratePoint1.y && fitPoint2.y === ratePoint2.y) { + drawLabel(labels[1], 1 / 2, 0, 0, 0, FONT_SIZE, thisObject.container, UI_COLOR.GREY, undefined, ratePoint1.y) + drawLabel(labels[2], 1 / 2, 0, decimalsDisplace, -5, 9, thisObject.container, UI_COLOR.GREY, undefined, ratePoint1.y) + } + } + } + + function drawScaleBox() { + if (thisObject.rate === undefined) { return } + if (thisObject.payload === undefined) { return } + if (thisObject.payload.node === undefined) { return } + + let icon1 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.type) + let icon2 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.type) + + let backgroundColor = UI_COLOR.BLACK + let labels = scaleLabels(thisObject.rate) + + drawScaleDisplay(labels[0], labels[1], labels[2], 0, 0, 0, icon1, icon2, thisObject.container, backgroundColor) + } + + function scaleLabels(rate) { + if (rate < coordinateSystem.min.y) { + rate = coordinateSystem.min.y + } + if (rate > coordinateSystem.max.y) { + rate = coordinateSystem.max.y + } + + let label = dynamicDecimals(rate) + let labelArray = label.split('.') + let label1 = thisObject.payload.node.payload.parentNode.name + let label2 = (Math.trunc(rate)).toLocaleString() + let label3 = labelArray[1] + if (label3 === undefined) { label3 = '00' } + + if (rate < 1) { + label2 = label + label3 = '' + } + + if (scaleDisplayTimer > 0) { + label2 = (coordinateSystem.scale.y * 10000).toFixed(2) + label3 = 'SCALE' + } + + return [label1, label2, label3] + } } diff --git a/CanvasApp/Scales/TimeFrameScale.js b/CanvasApp/Scales/TimeFrameScale.js index 89fdebc8e..0d4becfbe 100644 --- a/CanvasApp/Scales/TimeFrameScale.js +++ b/CanvasApp/Scales/TimeFrameScale.js @@ -1,389 +1,389 @@ -function newTimeFrameScale () { - const MODULE_NAME = 'Time Frame Scale' +function newTimeFrameScale() { + const MODULE_NAME = 'Time Frame Scale' - let thisObject = { - timeFrame: undefined, - container: undefined, - fitFunction: undefined, - payload: undefined, - isVisible: true, - layersOn: undefined, - adjustTimeFrame: adjustTimeFrame, - onMouseOverSomeTimeMachineContainer: onMouseOverSomeTimeMachineContainer, - draw: draw, - drawForeground: drawForeground, - physics: physics, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - } - - const FILES_PERIOD_DEFAULT_VALUE = 0 - const TIME_PERIOD_DEFAULT_VALUE = 0 - const MIN_HEIGHT = 50 - - let displayingRealTimeFrame = true - let greyOutCoverLayer = false - let isMouseOver - - let filePeriodIndex = FILES_PERIOD_DEFAULT_VALUE - let timeFrameIndex = TIME_PERIOD_DEFAULT_VALUE - let timeFramesMasterArray = [marketFilesPeriods, dailyFilePeriods] - let timeFrameLabel = '24-hs' - - let onMouseWheelEventSubscriptionId - let onViewportZoomChangedEventSubscriptionId - let onMouseOverEventSubscriptionId - let onMouseNotOverEventSubscriptionId - - let limitingContainer - - setupContainer() - - let wheelDeltaDirection - let wheelDeltaCounter = 0 - - return thisObject - - function setupContainer () { - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) - - thisObject.container.isDraggeable = false - thisObject.container.isClickeable = false - thisObject.container.isWheelable = true - thisObject.container.detectMouseOver = true - - thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL - thisObject.container.frame.height = 40 - } - - function finalize () { - thisObject.container.eventHandler.stopListening(onMouseWheelEventSubscriptionId) - canvas.chartingSpace.viewport.eventHandler.stopListening(onViewportZoomChangedEventSubscriptionId) - thisObject.container.eventHandler.stopListening(onMouseOverEventSubscriptionId) - thisObject.container.eventHandler.stopListening(onMouseNotOverEventSubscriptionId) - - thisObject.container.finalize() - thisObject.container = undefined - thisObject.fitFunction = undefined - thisObject.payload = undefined - - limitingContainer = undefined - } - - function initialize (pLimitingContainer) { - limitingContainer = pLimitingContainer - - readObjectState() - newTimeFrame() - - onMouseWheelEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseWheel', onMouseWheel) - onViewportZoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent('Zoom Changed', onViewportZoomChanged) - onMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) - onMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) - } - - function onMouseOverSomeTimeMachineContainer (event) { - if (event.containerId === undefined) { - /* This happens when the mouse over was not at the instance of a certain scale, but anywhere else. */ - greyOutCoverLayer = false - } else { - if (event.containerId === thisObject.container.id) { - greyOutCoverLayer = false - } else { - greyOutCoverLayer = true - turnOnCounter = 0 - } - } - } - - function onMouseOver (event) { - isMouseOver = true - event.containerId = thisObject.container.id - thisObject.container.eventHandler.raiseEvent('onMouseOverScale', event) - } - - function onMouseNotOver () { - isMouseOver = false - } - - function physics () { - readObjectState() - positioningPhysics() - } - - function adjustTimeFrame (elementsPlotted) { - const ELEMENTS_PLOTTED_THREASHOLD = 500 - if ( - canvas.chartingSpace.viewport.zoomTargetLevel >= ZOOM_OUT_THRESHOLD_FOR_CHANGING_TIME_FRAME && - displayingRealTimeFrame === false - ) { - let event = {} - event.timeFrame = thisObject.timeFrame - thisObject.container.eventHandler.raiseEvent('Time Frame Value Changed', event) - displayingRealTimeFrame = true - } - if ( - elementsPlotted > ELEMENTS_PLOTTED_THREASHOLD && - canvas.chartingSpace.viewport.zoomTargetLevel < ZOOM_OUT_THRESHOLD_FOR_CHANGING_TIME_FRAME && - displayingRealTimeFrame === true - ) { - let event = {} - event.timeFrame = ONE_DAY_IN_MILISECONDS - thisObject.container.eventHandler.raiseEvent('Time Frame Value Changed', event) - displayingRealTimeFrame = false - } - } - - function positioningPhysics () { - /* Container Limits */ - - let upCorner = { - x: 0, - y: 0 + let thisObject = { + timeFrame: undefined, + container: undefined, + fitFunction: undefined, + payload: undefined, + isVisible: true, + layersOn: undefined, + adjustTimeFrame: adjustTimeFrame, + onMouseOverSomeTimeMachineContainer: onMouseOverSomeTimeMachineContainer, + draw: draw, + drawForeground: drawForeground, + physics: physics, + getContainer: getContainer, + initialize: initialize, + finalize: finalize } - let bottonCorner = { - x: limitingContainer.frame.width, - y: limitingContainer.frame.height + const FILES_PERIOD_DEFAULT_VALUE = 0 + const TIME_PERIOD_DEFAULT_VALUE = 0 + const MIN_HEIGHT = 50 + + let displayingRealTimeFrame = true + let greyOutCoverLayer = false + let isMouseOver + + let filePeriodIndex = FILES_PERIOD_DEFAULT_VALUE + let timeFrameIndex = TIME_PERIOD_DEFAULT_VALUE + let timeFramesMasterArray = [marketFilesPeriods, dailyFilePeriods] + let timeFrameLabel = '24-hs' + + let onMouseWheelEventSubscriptionId + let onViewportZoomChangedEventSubscriptionId + let onMouseOverEventSubscriptionId + let onMouseNotOverEventSubscriptionId + + let limitingContainer + + setupContainer() + + let wheelDeltaDirection + let wheelDeltaCounter = 0 + + return thisObject + + function setupContainer() { + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) + + thisObject.container.isDraggeable = false + thisObject.container.isClickeable = false + thisObject.container.isWheelable = true + thisObject.container.detectMouseOver = true + + thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL + thisObject.container.frame.height = 40 } - upCorner = transformThisPoint(upCorner, limitingContainer) - bottonCorner = transformThisPoint(bottonCorner, limitingContainer) + function finalize() { + thisObject.container.eventHandler.stopListening(onMouseWheelEventSubscriptionId) + canvas.chartingSpace.viewport.eventHandler.stopListening(onViewportZoomChangedEventSubscriptionId) + thisObject.container.eventHandler.stopListening(onMouseOverEventSubscriptionId) + thisObject.container.eventHandler.stopListening(onMouseNotOverEventSubscriptionId) - upCorner = limitingContainer.fitFunction(upCorner, true) - bottonCorner = limitingContainer.fitFunction(bottonCorner, true) + thisObject.container.finalize() + thisObject.container = undefined + thisObject.fitFunction = undefined + thisObject.payload = undefined - /* We will check if we need to change the bottom because of being one of many scales of the same type */ - let displaceFactor = 0 - if (thisObject.payload.parentNode === undefined) { return } // This happens when in the process of deleting the scale, timeline chart or time machine. - if (thisObject.payload.parentNode.type === 'Timeline Chart') { - if (thisObject.payload.parentNode.payload.parentNode !== undefined) { - if (thisObject.payload.parentNode.payload.parentNode.timeFrameScale !== undefined) { - if (thisObject.payload.parentNode.payload.parentNode.timeFrameScale.payload.isVisible === true) { - displaceFactor++ - } - } - for (let i = 0; i < thisObject.payload.parentNode.payload.parentNode.timelineCharts.length; i++) { - let timelineChart = thisObject.payload.parentNode.payload.parentNode.timelineCharts[i] - if (timelineChart.timeFrameScale !== undefined) { - if (thisObject.payload.node.id !== timelineChart.timeFrameScale.id) { - if (timelineChart.timeFrameScale.payload.isVisible === true) { - displaceFactor++ - } + limitingContainer = undefined + } + + function initialize(pLimitingContainer) { + limitingContainer = pLimitingContainer + + readObjectState() + newTimeFrame() + + onMouseWheelEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseWheel', onMouseWheel) + onViewportZoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent('Zoom Changed', onViewportZoomChanged) + onMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) + onMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) + } + + function onMouseOverSomeTimeMachineContainer(event) { + if (event.containerId === undefined) { + /* This happens when the mouse over was not at the instance of a certain scale, but anywhere else. */ + greyOutCoverLayer = false + } else { + if (event.containerId === thisObject.container.id) { + greyOutCoverLayer = false } else { - break + greyOutCoverLayer = true + turnOnCounter = 0 } - } } - } - } - bottonCorner.y = bottonCorner.y - thisObject.container.frame.height * displaceFactor - - /* Positioning */ - timePoint = { - x: 0, - y: limitingContainer.frame.height } - timePoint = transformThisPoint(timePoint, limitingContainer.frame.container) - timePoint.x = canvas.mouse.position.x - thisObject.container.frame.width / 2 - - /* Checking against the container limits. */ - if (timePoint.x < upCorner.x) { timePoint.x = upCorner.x } - if (timePoint.x + thisObject.container.frame.width > bottonCorner.x) { timePoint.x = bottonCorner.x - thisObject.container.frame.width } - if (timePoint.y < upCorner.y + thisObject.container.frame.height) { timePoint.y = upCorner.y + thisObject.container.frame.height } - if (timePoint.y > bottonCorner.y) { timePoint.y = bottonCorner.y } - - thisObject.container.frame.position.x = timePoint.x - thisObject.container.frame.position.y = timePoint.y - thisObject.container.frame.height - - thisObject.isVisible = true - thisObject.payload.isVisible = true - if (thisObject.container.frame.position.y + thisObject.container.frame.height > bottonCorner.y || - thisObject.container.frame.position.y - thisObject.container.frame.height * 3 < upCorner.y || - thisObject.container.frame.position.x < upCorner.x) { - thisObject.isVisible = false - thisObject.payload.isVisible = false - } - if (thisObject.layersOn === 0) { - thisObject.isVisible = false - thisObject.payload.isVisible = false + function onMouseOver(event) { + isMouseOver = true + event.containerId = thisObject.container.id + thisObject.container.eventHandler.raiseEvent('onMouseOverScale', event) } - if (canvas.chartingSpace.viewport.zoomTargetLevel < ZOOM_OUT_THRESHOLD_FOR_DISPLAYING_SCALES) { - thisObject.isVisible = false + function onMouseNotOver() { + isMouseOver = false } - } - function onViewportZoomChanged (event) { - if (event !== undefined) { // it is undefined when the level is just being animated. - if (event.shiftKey === false) { return } // with no shft key pressed, no automatic change in scale - let currentTimeFrame = thisObject.timeFrame - let timeFrame = recalculatePeriod(event.newLevel) - if (timeFrame !== currentTimeFrame) { - for (let i = 0; i < timeFramesMasterArray.length; i++) { - let timeFrameArray = timeFramesMasterArray[i] - for (let j = 0; j < timeFrameArray.length; j++) { - let record = timeFrameArray[j] - if (timeFrame === record[0]) { - filePeriodIndex = i - timeFrameIndex = j + function physics() { + readObjectState() + positioningPhysics() + } + + function adjustTimeFrame(elementsPlotted) { + const ELEMENTS_PLOTTED_THREASHOLD = 500 + if ( + canvas.chartingSpace.viewport.zoomTargetLevel >= ZOOM_OUT_THRESHOLD_FOR_CHANGING_TIME_FRAME && + displayingRealTimeFrame === false + ) { + let event = {} + event.timeFrame = thisObject.timeFrame + thisObject.container.eventHandler.raiseEvent('Time Frame Value Changed', event) + displayingRealTimeFrame = true + } + if ( + elementsPlotted > ELEMENTS_PLOTTED_THREASHOLD && + canvas.chartingSpace.viewport.zoomTargetLevel < ZOOM_OUT_THRESHOLD_FOR_CHANGING_TIME_FRAME && + displayingRealTimeFrame === true + ) { + let event = {} + event.timeFrame = ONE_DAY_IN_MILISECONDS + thisObject.container.eventHandler.raiseEvent('Time Frame Value Changed', event) + displayingRealTimeFrame = false + } + } + + function positioningPhysics() { + /* Container Limits */ + + let upCorner = { + x: 0, + y: 0 + } + + let bottonCorner = { + x: limitingContainer.frame.width, + y: limitingContainer.frame.height + } + + upCorner = transformThisPoint(upCorner, limitingContainer) + bottonCorner = transformThisPoint(bottonCorner, limitingContainer) + + upCorner = limitingContainer.fitFunction(upCorner, true) + bottonCorner = limitingContainer.fitFunction(bottonCorner, true) + + /* We will check if we need to change the bottom because of being one of many scales of the same type */ + let displaceFactor = 0 + if (thisObject.payload.parentNode === undefined) { return } // This happens when in the process of deleting the scale, timeline chart or time machine. + if (thisObject.payload.parentNode.type === 'Timeline Chart') { + if (thisObject.payload.parentNode.payload.parentNode !== undefined) { + if (thisObject.payload.parentNode.payload.parentNode.timeFrameScale !== undefined) { + if (thisObject.payload.parentNode.payload.parentNode.timeFrameScale.payload.isVisible === true) { + displaceFactor++ + } + } + for (let i = 0; i < thisObject.payload.parentNode.payload.parentNode.timelineCharts.length; i++) { + let timelineChart = thisObject.payload.parentNode.payload.parentNode.timelineCharts[i] + if (timelineChart.timeFrameScale !== undefined) { + if (thisObject.payload.node.id !== timelineChart.timeFrameScale.id) { + if (timelineChart.timeFrameScale.payload.isVisible === true) { + displaceFactor++ + } + } else { + break + } + } + } } - } } + bottonCorner.y = bottonCorner.y - thisObject.container.frame.height * displaceFactor + + /* Positioning */ + timePoint = { + x: 0, + y: limitingContainer.frame.height + } + + timePoint = transformThisPoint(timePoint, limitingContainer.frame.container) + timePoint.x = canvas.mouse.position.x - thisObject.container.frame.width / 2 + + /* Checking against the container limits. */ + if (timePoint.x < upCorner.x) { timePoint.x = upCorner.x } + if (timePoint.x + thisObject.container.frame.width > bottonCorner.x) { timePoint.x = bottonCorner.x - thisObject.container.frame.width } + if (timePoint.y < upCorner.y + thisObject.container.frame.height) { timePoint.y = upCorner.y + thisObject.container.frame.height } + if (timePoint.y > bottonCorner.y) { timePoint.y = bottonCorner.y } + + thisObject.container.frame.position.x = timePoint.x + thisObject.container.frame.position.y = timePoint.y - thisObject.container.frame.height + + thisObject.isVisible = true + thisObject.payload.isVisible = true + if (thisObject.container.frame.position.y + thisObject.container.frame.height > bottonCorner.y || + thisObject.container.frame.position.y - thisObject.container.frame.height * 3 < upCorner.y || + thisObject.container.frame.position.x < upCorner.x) { + thisObject.isVisible = false + thisObject.payload.isVisible = false + } + if (thisObject.layersOn === 0) { + thisObject.isVisible = false + thisObject.payload.isVisible = false + } + + if (canvas.chartingSpace.viewport.zoomTargetLevel < ZOOM_OUT_THRESHOLD_FOR_DISPLAYING_SCALES) { + thisObject.isVisible = false + } + } + + function onViewportZoomChanged(event) { + if (event !== undefined) { // it is undefined when the level is just being animated. + if (event.shiftKey === false || event.shiftKey === undefined) { return } // with no shft key pressed, no automatic change in scale + let currentTimeFrame = thisObject.timeFrame + let timeFrame = recalculatePeriod(event.newLevel) + if (timeFrame !== currentTimeFrame) { + for (let i = 0; i < timeFramesMasterArray.length; i++) { + let timeFrameArray = timeFramesMasterArray[i] + for (let j = 0; j < timeFrameArray.length; j++) { + let record = timeFrameArray[j] + if (timeFrame === record[0]) { + filePeriodIndex = i + timeFrameIndex = j + } + } + } + newTimeFrame() + saveObjectState() + } + } + } + + function onMouseWheel(event) { + if (IS_MAC) { + let sensitivity + if (event.wheelDelta < 0) { + if (event.shiftKey === true) { + sensitivity = 20 + } else { + sensitivity = 5 + } + if (wheelDeltaDirection === -1) { + wheelDeltaCounter++ + if (wheelDeltaCounter < sensitivity) { + return + } else { + wheelDeltaCounter = 0 + } + } else { + wheelDeltaCounter = 0 + wheelDeltaDirection = -1 + return + } + } else { + if (wheelDeltaDirection === 1) { + wheelDeltaCounter++ + if (wheelDeltaCounter < sensitivity) { + return + } else { + wheelDeltaCounter = 0 + } + } else { + wheelDeltaCounter = 0 + wheelDeltaDirection = 1 + return + } + } + } + + let delta = event.wheelDelta + if (delta < 0) { + timeFrameIndex-- + if (timeFrameIndex < 0) { + filePeriodIndex-- + if (filePeriodIndex < 0) { + filePeriodIndex = 0 + timeFrameIndex = 0 + } else { + timeFrameIndex = timeFramesMasterArray[filePeriodIndex].length - 1 + } + } + } else { + timeFrameIndex++ + if (timeFrameIndex > timeFramesMasterArray[filePeriodIndex].length - 1) { + filePeriodIndex++ + if (filePeriodIndex > timeFramesMasterArray.length - 1) { + filePeriodIndex = timeFramesMasterArray.length - 1 + timeFrameIndex = timeFramesMasterArray[filePeriodIndex].length - 1 + } else { + timeFrameIndex = 0 + } + } + } + newTimeFrame() saveObjectState() - } - } - } - - function onMouseWheel (event) { - if (IS_MAC) { - let sensitivity - if (event.wheelDelta < 0) { - if (event.shiftKey === true) { - sensitivity = 20 - } else { - sensitivity = 5 - } - if (wheelDeltaDirection === -1) { - wheelDeltaCounter++ - if (wheelDeltaCounter < sensitivity) { - return - } else { - wheelDeltaCounter = 0 - } - } else { - wheelDeltaCounter = 0 - wheelDeltaDirection = -1 - return - } - } else { - if (wheelDeltaDirection === 1) { - wheelDeltaCounter++ - if (wheelDeltaCounter < sensitivity) { - return - } else { - wheelDeltaCounter = 0 - } - } else { - wheelDeltaCounter = 0 - wheelDeltaDirection = 1 - return - } - } } - let delta = event.wheelDelta - if (delta < 0) { - timeFrameIndex-- - if (timeFrameIndex < 0) { - filePeriodIndex-- - if (filePeriodIndex < 0) { - filePeriodIndex = 0 - timeFrameIndex = 0 - } else { - timeFrameIndex = timeFramesMasterArray[filePeriodIndex].length - 1 + function getContainer(point) { + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + return thisObject.container } - } - } else { - timeFrameIndex++ - if (timeFrameIndex > timeFramesMasterArray[filePeriodIndex].length - 1) { - filePeriodIndex++ - if (filePeriodIndex > timeFramesMasterArray.length - 1) { - filePeriodIndex = timeFramesMasterArray.length - 1 - timeFrameIndex = timeFramesMasterArray[filePeriodIndex].length - 1 - } else { - timeFrameIndex = 0 + } + + function saveObjectState() { + try { + let config = JSON.parse(thisObject.payload.node.config) + config.value = timeFrameLabel + thisObject.payload.node.config = JSON.stringify(config) + } catch (err) { + // we ignore errors here since most likely they will be parsing errors. } - } } - newTimeFrame() - saveObjectState() - } - - function getContainer (point) { - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - return thisObject.container - } - } - - function saveObjectState () { - try { - let code = JSON.parse(thisObject.payload.node.code) - code.value = timeFrameLabel - thisObject.payload.node.code = JSON.stringify(code) - } catch (err) { - // we ignore errors here since most likely they will be parsing errors. - } - } - - function readObjectState () { - try { - let code = JSON.parse(thisObject.payload.node.code) - if (code.value !== timeFrameLabel) { - let found = false - for (let i = 0; i < timeFramesMasterArray.length; i++) { - let timeFrameArray = timeFramesMasterArray[i] - for (let j = 0; j < timeFrameArray.length; j++) { - let record = timeFrameArray[j] - if (code.value === record[1]) { - filePeriodIndex = i - timeFrameIndex = j - found = true + function readObjectState() { + try { + let config = JSON.parse(thisObject.payload.node.config) + if (config.value !== timeFrameLabel) { + let found = false + for (let i = 0; i < timeFramesMasterArray.length; i++) { + let timeFrameArray = timeFramesMasterArray[i] + for (let j = 0; j < timeFrameArray.length; j++) { + let record = timeFrameArray[j] + if (config.value === record[1]) { + filePeriodIndex = i + timeFrameIndex = j + found = true + } + } + } + if (found === true) { + newTimeFrame() + } else { + saveObjectState() + } } - } + } catch (err) { + // we ignore errors here since most likely they will be parsing errors. } - if (found === true) { - newTimeFrame() - } else { - saveObjectState() + } + + function newTimeFrame() { + let timeFrameArray = timeFramesMasterArray[filePeriodIndex] + thisObject.timeFrame = timeFrameArray[timeFrameIndex][0] + timeFrameLabel = timeFrameArray[timeFrameIndex][1] + // console.log('NEW TIME FRAME LABEL', timeFrameLabel) + let event = {} + event.timeFrame = thisObject.timeFrame + thisObject.container.eventHandler.raiseEvent('Time Frame Value Changed', event) + } + + function draw() { + drawScaleBox() + if (greyOutCoverLayer === true) { + drawScaleDisplayCover(thisObject.container) } - } - } catch (err) { - // we ignore errors here since most likely they will be parsing errors. } - } - function newTimeFrame () { - let timeFrameArray = timeFramesMasterArray[filePeriodIndex] - thisObject.timeFrame = timeFrameArray[timeFrameIndex][0] - timeFrameLabel = timeFrameArray[timeFrameIndex][1] - // console.log('NEW TIME FRAME LABEL', timeFrameLabel) - let event = {} - event.timeFrame = thisObject.timeFrame - thisObject.container.eventHandler.raiseEvent('Time Frame Value Changed', event) - } - - function draw () { - drawScaleBox() - if (greyOutCoverLayer === true) { - drawScaleDisplayCover(thisObject.container) + function drawForeground() { + if (isMouseOver === true) { + drawScaleBox() + } } - } - function drawForeground () { - if (isMouseOver === true) { - drawScaleBox() + function drawScaleBox() { + if (timeFrameLabel === undefined) { return } + + let label = timeFrameLabel.split('-') + let label1 = thisObject.payload.node.payload.parentNode.name + let label2 = label[0] + let label3 = label[1].toUpperCase() + + let icon1 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.type) + let icon2 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.type) + + let backgroundColor = UI_COLOR.BLACK + + drawScaleDisplay(label1, label2, label3, 0, 0, 0, icon1, icon2, thisObject.container, backgroundColor) } - } - - function drawScaleBox () { - if (timeFrameLabel === undefined) { return } - - let label = timeFrameLabel.split('-') - let label1 = thisObject.payload.node.payload.parentNode.name - let label2 = label[0] - let label3 = label[1].toUpperCase() - - let icon1 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.type) - let icon2 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.type) - - let backgroundColor = UI_COLOR.BLACK - - drawScaleDisplay(label1, label2, label3, 0, 0, 0, icon1, icon2, thisObject.container, backgroundColor) - } } diff --git a/CanvasApp/Scales/TimeScale.js b/CanvasApp/Scales/TimeScale.js index 00d52c530..af0a3dbc8 100644 --- a/CanvasApp/Scales/TimeScale.js +++ b/CanvasApp/Scales/TimeScale.js @@ -1,359 +1,359 @@ -function newTimeScale () { - const MODULE_NAME = 'Time Scale' +function newTimeScale() { + const MODULE_NAME = 'Time Scale' - let thisObject = { - container: undefined, - date: undefined, - fitFunction: undefined, - payload: undefined, - isVisible: true, - fromDate: undefined, - toDate: undefined, - onMouseOverSomeTimeMachineContainer: onMouseOverSomeTimeMachineContainer, - physics: physics, - draw: draw, - drawBackground: drawBackground, - drawForeground: drawForeground, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - } - - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) - - thisObject.container.isDraggeable = false - thisObject.container.isClickeable = false - thisObject.container.isWheelable = true - thisObject.container.detectMouseOver = true - - thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL - thisObject.container.frame.height = 40 - - let visible = true - let autoScaleButton - let isMouseOver - - let onMouseWheelEventSubscriptionId - let onMouseOverEventSubscriptionId - let onMouseNotOverEventSubscriptionId - let onScaleChangedEventSubscriptionId - - let coordinateSystem - let limitingContainer - - let wheelDeltaDirection - let wheelDeltaCounter = 0 - - return thisObject - - function finalize () { - thisObject.container.eventHandler.stopListening(onMouseWheelEventSubscriptionId) - thisObject.container.eventHandler.stopListening(onMouseOverEventSubscriptionId) - thisObject.container.eventHandler.stopListening(onMouseNotOverEventSubscriptionId) - coordinateSystem.eventHandler.stopListening(onScaleChangedEventSubscriptionId) - - thisObject.container.finalize() - thisObject.container = undefined - thisObject.fitFunction = undefined - thisObject.payload = undefined - - coordinateSystem = undefined - limitingContainer = undefined - - autoScaleButton.finalize() - autoScaleButton = undefined - } - - function initialize (pCoordinateSystem, pLimitingContainer) { - coordinateSystem = pCoordinateSystem - limitingContainer = pLimitingContainer - - onMouseWheelEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseWheel', onMouseWheel) - onMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) - onMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) - onScaleChangedEventSubscriptionId = coordinateSystem.eventHandler.listenToEvent('Scale Changed', onScaleChanged) - - autoScaleButton = newAutoScaleButton() - autoScaleButton.container.connectToParent(thisObject.container) - autoScaleButton.initialize('X', coordinateSystem) - - readObjectState() - } - - function onMouseOverSomeTimeMachineContainer (event) { - if (event.containerId === undefined) { - /* This happens when the mouse over was not at the instance of a certain scale, but anywhere else. */ - visible = true - } else { - if (event.containerId === thisObject.container.id) { - visible = true - } else { - visible = false - turnOnCounter = 0 - } + let thisObject = { + container: undefined, + date: undefined, + fitFunction: undefined, + payload: undefined, + isVisible: true, + fromDate: undefined, + toDate: undefined, + onMouseOverSomeTimeMachineContainer: onMouseOverSomeTimeMachineContainer, + physics: physics, + draw: draw, + drawBackground: drawBackground, + drawForeground: drawForeground, + getContainer: getContainer, + initialize: initialize, + finalize: finalize } - } - function onMouseOver (event) { - isMouseOver = true - event.containerId = thisObject.container.id - thisObject.container.eventHandler.raiseEvent('onMouseOverScale', event) - } + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) - function onMouseNotOver () { - isMouseOver = false - } + thisObject.container.isDraggeable = false + thisObject.container.isClickeable = false + thisObject.container.isWheelable = true + thisObject.container.detectMouseOver = true + + thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL + thisObject.container.frame.height = 40 + + let visible = true + let autoScaleButton + let isMouseOver + + let onMouseWheelEventSubscriptionId + let onMouseOverEventSubscriptionId + let onMouseNotOverEventSubscriptionId + let onScaleChangedEventSubscriptionId + + let coordinateSystem + let limitingContainer + + let wheelDeltaDirection + let wheelDeltaCounter = 0 + + return thisObject + + function finalize() { + thisObject.container.eventHandler.stopListening(onMouseWheelEventSubscriptionId) + thisObject.container.eventHandler.stopListening(onMouseOverEventSubscriptionId) + thisObject.container.eventHandler.stopListening(onMouseNotOverEventSubscriptionId) + coordinateSystem.eventHandler.stopListening(onScaleChangedEventSubscriptionId) + + thisObject.container.finalize() + thisObject.container = undefined + thisObject.fitFunction = undefined + thisObject.payload = undefined + + coordinateSystem = undefined + limitingContainer = undefined + + autoScaleButton.finalize() + autoScaleButton = undefined + } + + function initialize(pCoordinateSystem, pLimitingContainer) { + coordinateSystem = pCoordinateSystem + limitingContainer = pLimitingContainer + + onMouseWheelEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseWheel', onMouseWheel) + onMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) + onMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) + onScaleChangedEventSubscriptionId = coordinateSystem.eventHandler.listenToEvent('Scale Changed', onScaleChanged) + + autoScaleButton = newAutoScaleButton() + autoScaleButton.container.connectToParent(thisObject.container) + autoScaleButton.initialize('X', coordinateSystem) + + readObjectState() + } + + function onMouseOverSomeTimeMachineContainer(event) { + if (event.containerId === undefined) { + /* This happens when the mouse over was not at the instance of a certain scale, but anywhere else. */ + visible = true + } else { + if (event.containerId === thisObject.container.id) { + visible = true + } else { + visible = false + turnOnCounter = 0 + } + } + } + + function onMouseOver(event) { + isMouseOver = true + event.containerId = thisObject.container.id + thisObject.container.eventHandler.raiseEvent('onMouseOverScale', event) + } + + function onMouseNotOver() { + isMouseOver = false + } + + function onMouseWheel(event) { + if (IS_MAC) { + let sensitivity + if (event.wheelDelta < 0) { + if (event.shiftKey === true) { + sensitivity = 20 + } else { + sensitivity = 5 + } + if (wheelDeltaDirection === -1) { + wheelDeltaCounter++ + if (wheelDeltaCounter < sensitivity) { + return + } else { + wheelDeltaCounter = 0 + } + } else { + wheelDeltaCounter = 0 + wheelDeltaDirection = -1 + return + } + } else { + if (wheelDeltaDirection === 1) { + wheelDeltaCounter++ + if (wheelDeltaCounter < sensitivity) { + return + } else { + wheelDeltaCounter = 0 + } + } else { + wheelDeltaCounter = 0 + wheelDeltaDirection = 1 + return + } + } + } - function onMouseWheel (event) { - if (IS_MAC) { - let sensitivity - if (event.wheelDelta < 0) { if (event.shiftKey === true) { - sensitivity = 20 - } else { - sensitivity = 5 - } - if (wheelDeltaDirection === -1) { - wheelDeltaCounter++ - if (wheelDeltaCounter < sensitivity) { + autoScaleButton.container.eventHandler.raiseEvent('onMouseWheel', event) return - } else { - wheelDeltaCounter = 0 - } + } + let factor + let morePower = 10 + if (event.buttons === 4) { morePower = 1 } // Mouse wheel pressed. + + let delta = event.wheelDelta + if (delta < 0) { + factor = -0.01 * morePower } else { - wheelDeltaCounter = 0 - wheelDeltaDirection = -1 - return + factor = 0.01 * morePower } - } else { - if (wheelDeltaDirection === 1) { - wheelDeltaCounter++ - if (wheelDeltaCounter < sensitivity) { - return - } else { - wheelDeltaCounter = 0 - } - } else { - wheelDeltaCounter = 0 - wheelDeltaDirection = 1 - return + + coordinateSystem.zoomX(factor, event, limitingContainer, MODULE_NAME) + } + + function onScaleChanged() { + saveObjectState() + } + + function getContainer(point, purpose) { + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + return thisObject.container } - } } - if (event.shiftKey === true) { - autoScaleButton.container.eventHandler.raiseEvent('onMouseWheel', event) - return - } - let factor - let morePower = 10 - if (event.buttons === 4) { morePower = 1 } // Mouse wheel pressed. - - let delta = event.wheelDelta - if (delta < 0) { - factor = -0.01 * morePower - } else { - factor = 0.01 * morePower - } - - coordinateSystem.zoomX(factor, event, limitingContainer, MODULE_NAME) - } - - function onScaleChanged () { - saveObjectState() - } - - function getContainer (point, purpose) { - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - return thisObject.container - } - } - - function saveObjectState () { - try { - let code = JSON.parse(thisObject.payload.node.code) - code.fromDate = (new Date(coordinateSystem.min.x)).toISOString() - code.toDate = (new Date(coordinateSystem.max.x)).toISOString() - code.autoMinScale = coordinateSystem.autoMinXScale - code.autoMaxScale = coordinateSystem.autoMaxXScale - thisObject.payload.node.code = JSON.stringify(code, null, 4) - } catch (err) { - // we ignore errors here since most likely they will be parsing errors. - } - } - - function readObjectState () { - try { - let code = JSON.parse(thisObject.payload.node.code) - - if ( - (isNaN(Date.parse(code.fromDate)) || code.fromDate === null || code.fromDate === undefined) || - (isNaN(Date.parse(code.toDate)) || code.toDate === null || code.toDate === undefined) - ) { - // not using this value - } else { - if (thisObject.fromDate !== Date.parse(code.fromDate) || thisObject.toDate !== Date.parse(code.toDate)) { - thisObject.fromDate = Date.parse(code.fromDate) - thisObject.toDate = Date.parse(code.toDate) - coordinateSystem.min.x = thisObject.fromDate - coordinateSystem.max.x = thisObject.toDate - - if (code.autoMinScale !== undefined && (code.autoMinScale === true || code.autoMinScale === false) && code.autoMaxScale !== undefined && (code.autoMaxScale === true || code.autoMaxScale === false)) { - coordinateSystem.autoMinXScale = code.autoMinScale - coordinateSystem.autoMaxXScale = code.autoMaxScale - autoScaleButton.setStatus(code.autoMinScale, code.autoMaxScale) - } - coordinateSystem.recalculateScale() + function saveObjectState() { + try { + let config = JSON.parse(thisObject.payload.node.config) + config.fromDate = (new Date(coordinateSystem.min.x)).toISOString() + config.toDate = (new Date(coordinateSystem.max.x)).toISOString() + config.autoMinScale = coordinateSystem.autoMinXScale + config.autoMaxScale = coordinateSystem.autoMaxXScale + thisObject.payload.node.config = JSON.stringify(config, null, 4) + } catch (err) { + // we ignore errors here since most likely they will be parsing errors. } - } - saveObjectState() // this overrides any invalid value at the config. - } catch (err) { - // we ignore errors here since most likely they will be parsing errors. - } - } - - function physics () { - readObjectState() - positioningPhysics() - } - - function positioningPhysics () { - /* Container Limits */ - - let upCorner = { - x: 0, - y: 0 } - let bottonCorner = { - x: limitingContainer.frame.width, - y: limitingContainer.frame.height + function readObjectState() { + try { + let config = JSON.parse(thisObject.payload.node.config) + + if ( + (isNaN(Date.parse(config.fromDate)) || config.fromDate === null || config.fromDate === undefined) || + (isNaN(Date.parse(config.toDate)) || config.toDate === null || config.toDate === undefined) + ) { + // not using this value + } else { + if (thisObject.fromDate !== Date.parse(config.fromDate) || thisObject.toDate !== Date.parse(config.toDate)) { + thisObject.fromDate = Date.parse(config.fromDate) + thisObject.toDate = Date.parse(config.toDate) + coordinateSystem.min.x = thisObject.fromDate + coordinateSystem.max.x = thisObject.toDate + + if (config.autoMinScale !== undefined && (config.autoMinScale === true || config.autoMinScale === false) && config.autoMaxScale !== undefined && (config.autoMaxScale === true || config.autoMaxScale === false)) { + coordinateSystem.autoMinXScale = config.autoMinScale + coordinateSystem.autoMaxXScale = config.autoMaxScale + autoScaleButton.setStatus(config.autoMinScale, config.autoMaxScale) + } + coordinateSystem.recalculateScale() + } + } + saveObjectState() // this overrides any invalid value at the config. + } catch (err) { + // we ignore errors here since most likely they will be parsing errors. + } } - upCorner = transformThisPoint(upCorner, limitingContainer) - bottonCorner = transformThisPoint(bottonCorner, limitingContainer) - - upCorner = limitingContainer.fitFunction(upCorner, true) - bottonCorner = limitingContainer.fitFunction(bottonCorner, true) - - /* Mouse Position Date Calculation */ - let timePoint = { - x: canvas.mouse.position.x, - y: 0 + function physics() { + readObjectState() + positioningPhysics() } - let mouseDate = getDateFromPointAtBrowserCanvas(timePoint, limitingContainer, coordinateSystem) + function positioningPhysics() { + /* Container Limits */ - thisObject.date = new Date(mouseDate) + let upCorner = { + x: 0, + y: 0 + } - /* timeScale Positioning */ - timePoint = { - x: 0, - y: 0 + let bottonCorner = { + x: limitingContainer.frame.width, + y: limitingContainer.frame.height + } + + upCorner = transformThisPoint(upCorner, limitingContainer) + bottonCorner = transformThisPoint(bottonCorner, limitingContainer) + + upCorner = limitingContainer.fitFunction(upCorner, true) + bottonCorner = limitingContainer.fitFunction(bottonCorner, true) + + /* Mouse Position Date Calculation */ + let timePoint = { + x: canvas.mouse.position.x, + y: 0 + } + + let mouseDate = getDateFromPointAtBrowserCanvas(timePoint, limitingContainer, coordinateSystem) + + thisObject.date = new Date(mouseDate) + + /* timeScale Positioning */ + timePoint = { + x: 0, + y: 0 + } + + timePoint = transformThisPoint(timePoint, limitingContainer.frame.container) + timePoint.x = canvas.mouse.position.x - thisObject.container.frame.width / 2 + + /* Checking against the container limits. */ + if (timePoint.x < upCorner.x) { timePoint.x = upCorner.x } + if (timePoint.x + thisObject.container.frame.width > bottonCorner.x) { timePoint.x = bottonCorner.x - thisObject.container.frame.width } + if (timePoint.y < upCorner.y) { timePoint.y = upCorner.y } + if (timePoint.y + thisObject.container.frame.height > bottonCorner.y) { timePoint.y = bottonCorner.y - thisObject.container.frame.height } + + thisObject.container.frame.position.x = timePoint.x + thisObject.container.frame.position.y = timePoint.y + + thisObject.isVisible = true + if (thisObject.container.frame.position.y + thisObject.container.frame.height * 4 > bottonCorner.y || + thisObject.container.frame.position.y < upCorner.y || + thisObject.container.frame.position.x < upCorner.x) { + thisObject.isVisible = false + } + + if (canvas.chartingSpace.viewport.zoomTargetLevel < ZOOM_OUT_THRESHOLD_FOR_DISPLAYING_SCALES) { + thisObject.isVisible = false + } } - timePoint = transformThisPoint(timePoint, limitingContainer.frame.container) - timePoint.x = canvas.mouse.position.x - thisObject.container.frame.width / 2 - - /* Checking against the container limits. */ - if (timePoint.x < upCorner.x) { timePoint.x = upCorner.x } - if (timePoint.x + thisObject.container.frame.width > bottonCorner.x) { timePoint.x = bottonCorner.x - thisObject.container.frame.width } - if (timePoint.y < upCorner.y) { timePoint.y = upCorner.y } - if (timePoint.y + thisObject.container.frame.height > bottonCorner.y) { timePoint.y = bottonCorner.y - thisObject.container.frame.height } - - thisObject.container.frame.position.x = timePoint.x - thisObject.container.frame.position.y = timePoint.y - - thisObject.isVisible = true - if (thisObject.container.frame.position.y + thisObject.container.frame.height * 4 > bottonCorner.y || - thisObject.container.frame.position.y < upCorner.y || - thisObject.container.frame.position.x < upCorner.x) { - thisObject.isVisible = false + function drawBackground() { + drawScale() } - if (canvas.chartingSpace.viewport.zoomTargetLevel < ZOOM_OUT_THRESHOLD_FOR_DISPLAYING_SCALES) { - thisObject.isVisible = false - } - } + function drawScale() { + const SEPARATION = 150 + const NUMBER_OF_LABELS = Math.trunc(canvas.chartingSpace.viewport.width / SEPARATION) + const FONT_SIZE = 15 - function drawBackground () { - drawScale() - } + for (let i = 0; i <= NUMBER_OF_LABELS; i++) { + let timePoint = { + x: SEPARATION * (i + 1), + y: 0 + } - function drawScale () { - const SEPARATION = 150 - const NUMBER_OF_LABELS = Math.trunc(canvas.chartingSpace.viewport.width / SEPARATION) - const FONT_SIZE = 15 + let time = getDateFromPointAtBrowserCanvas(timePoint, limitingContainer, coordinateSystem) + let labels = scaleLabels(time, true) + let labelDisplace = labels[1].length * FONT_SIZE * FONT_ASPECT_RATIO - for (let i = 0; i <= NUMBER_OF_LABELS; i++) { - let timePoint = { - x: SEPARATION * (i + 1), - y: 0 - } + let timePoint1 = { + x: SEPARATION * (i + 1) - labelDisplace, + y: 0 + } + let timePoint2 = { + x: SEPARATION * (i + 1) + labelDisplace, + y: 0 + } - let time = getDateFromPointAtBrowserCanvas(timePoint, limitingContainer, coordinateSystem) - let labels = scaleLabels(time, true) - let labelDisplace = labels[1].length * FONT_SIZE * FONT_ASPECT_RATIO + let fitPoint1 = thisObject.fitFunction(timePoint1) + let fitPoint2 = thisObject.fitFunction(timePoint2) - let timePoint1 = { - x: SEPARATION * (i + 1) - labelDisplace, - y: 0 - } - let timePoint2 = { - x: SEPARATION * (i + 1) + labelDisplace, - y: 0 - } - - let fitPoint1 = thisObject.fitFunction(timePoint1) - let fitPoint2 = thisObject.fitFunction(timePoint2) - - if (fitPoint1.x === timePoint1.x && fitPoint2.x === timePoint2.x) { - drawLabel(labels[1], 1 / 2, 0, 18, 17, FONT_SIZE, thisObject.container, UI_COLOR.GREY, timePoint1.x, undefined) - drawLabel(labels[2], 1 / 2, 0, 18, 30, 12, thisObject.container, UI_COLOR.GREY, timePoint1.x, undefined) - } - } - } - - function draw () { - drawScaleBox() - autoScaleButton.draw() - if (visible === false) { - drawScaleDisplayCover(thisObject.container) - } - } - - function drawForeground () { - if (isMouseOver === true) { - drawScaleBox() - autoScaleButton.draw() - } - } - - function drawScaleBox () { - if (thisObject.date === undefined) { return } - - let icon1 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.type) - let icon2 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.type) - - let backgroundColor = UI_COLOR.BLACK - let labels = scaleLabels(thisObject.date) - - drawScaleDisplay(labels[0], labels[1], labels[2], 0, 0, 0, icon1, icon2, thisObject.container, backgroundColor) - } - - function scaleLabels (date, excludeYear) { - let label = date.toUTCString() - let labelArray = label.split(' ') - let label1 = thisObject.payload.node.payload.parentNode.name - let label2 = labelArray[1] + ' ' + labelArray[2] + ' ' + labelArray[3] - let label3 = labelArray[4] - - if (excludeYear === true) { - label2 = labelArray[1] + ' ' + labelArray[2] + if (fitPoint1.x === timePoint1.x && fitPoint2.x === timePoint2.x) { + drawLabel(labels[1], 1 / 2, 0, 18, 17, FONT_SIZE, thisObject.container, UI_COLOR.GREY, timePoint1.x, undefined) + drawLabel(labels[2], 1 / 2, 0, 18, 30, 12, thisObject.container, UI_COLOR.GREY, timePoint1.x, undefined) + } + } } - return [label1, label2, label3] - } + function draw() { + drawScaleBox() + autoScaleButton.draw() + if (visible === false) { + drawScaleDisplayCover(thisObject.container) + } + } + + function drawForeground() { + if (isMouseOver === true) { + drawScaleBox() + autoScaleButton.draw() + } + } + + function drawScaleBox() { + if (thisObject.date === undefined) { return } + + let icon1 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.type) + let icon2 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.type) + + let backgroundColor = UI_COLOR.BLACK + let labels = scaleLabels(thisObject.date) + + drawScaleDisplay(labels[0], labels[1], labels[2], 0, 0, 0, icon1, icon2, thisObject.container, backgroundColor) + } + + function scaleLabels(date, excludeYear) { + let label = date.toUTCString() + let labelArray = label.split(' ') + let label1 = thisObject.payload.node.payload.parentNode.name + let label2 = labelArray[1] + ' ' + labelArray[2] + ' ' + labelArray[3] + let label3 = labelArray[4] + + if (excludeYear === true) { + label2 = labelArray[1] + ' ' + labelArray[2] + } + + return [label1, label2, label3] + } } diff --git a/CanvasApp/SideSpace/ListItem.js b/CanvasApp/SideSpace/ListItem.js index 59e982979..fdb2f3478 100644 --- a/CanvasApp/SideSpace/ListItem.js +++ b/CanvasApp/SideSpace/ListItem.js @@ -1,107 +1,107 @@ -function newListItem () { - const MODULE_NAME = 'List Item' - const ERROR_LOG = true - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME +function newListItem() { + const MODULE_NAME = 'List Item' + const ERROR_LOG = true + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME - let thisObject = { - container: undefined, - fitFunction: undefined, - physics: physics, - draw: draw, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - } - - thisObject.container = newContainer() - thisObject.container.initialize() - thisObject.container.isDraggeable = false - thisObject.container.isWheelable = false - thisObject.container.detectMouseOver = true - thisObject.container.isClickeable = true - thisObject.container.frame.width = SIDE_PANEL_WIDTH * 0.75 - thisObject.container.frame.height = SIDE_PANEL_WIDTH * 0.75 - - let name - let type - - let onMouseOverEventSubscriptionId - let onMouseNotOverEventSubscriptionId - let onMouseClickEventSubscriptionId - - let isMouseOver = false - return thisObject - - function finalize () { - thisObject.container.eventHandler.stopListening(onMouseOverEventSubscriptionId) - thisObject.container.eventHandler.stopListening(onMouseNotOverEventSubscriptionId) - thisObject.container.eventHandler.stopListening(onMouseClickEventSubscriptionId) - - thisObject.container.finalize() - thisObject.container = undefined - thisObject.fitFunction = undefined - } - - function initialize (pName, pType) { - name = pName - type = pType - - onMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) - onMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) - onMouseClickEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) - } - - function getContainer (point) { - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - return thisObject.container - } - } - - function onMouseOver (event) { - isMouseOver = true - } - - function onMouseNotOver () { - isMouseOver = false - } - - function onMouseClick (event) { - canvas.designSpace.workspace.replaceWorkspaceByLoadingOne(name) - } - - function physics () { - - } - - function draw () { - let icon = canvas.designSpace.iconByUiObjectType.get(type) - let backgroundColor = UI_COLOR.BLACK - let labelColor - - const RED_LINE_HIGHT = 4 - const OPACITY = 1 - - let params = { - cornerRadius: 0, - lineWidth: 1, - container: thisObject.container, - borderColor: UI_COLOR.RUSTED_RED, - castShadow: false, - backgroundColor: backgroundColor, - opacity: OPACITY + let thisObject = { + container: undefined, + fitFunction: undefined, + physics: physics, + draw: draw, + getContainer: getContainer, + initialize: initialize, + finalize: finalize } - if (isMouseOver === false) { - labelColor = UI_COLOR.WHITE - } else { - labelColor = UI_COLOR.TITANIUM_YELLOW + thisObject.container = newContainer() + thisObject.container.initialize() + thisObject.container.isDraggeable = false + thisObject.container.isWheelable = false + thisObject.container.detectMouseOver = true + thisObject.container.isClickeable = true + thisObject.container.frame.width = SIDE_PANEL_WIDTH * 0.75 + thisObject.container.frame.height = SIDE_PANEL_WIDTH * 0.75 + + let name + let type + + let onMouseOverEventSubscriptionId + let onMouseNotOverEventSubscriptionId + let onMouseClickEventSubscriptionId + + let isMouseOver = false + return thisObject + + function finalize() { + thisObject.container.eventHandler.stopListening(onMouseOverEventSubscriptionId) + thisObject.container.eventHandler.stopListening(onMouseNotOverEventSubscriptionId) + thisObject.container.eventHandler.stopListening(onMouseClickEventSubscriptionId) + + thisObject.container.finalize() + thisObject.container = undefined + thisObject.fitFunction = undefined } - roundedCornersBackground(params) + function initialize(pName, pType) { + name = pName + type = pType - drawLabel(name, 1 / 2, 3.0 / 10, -5, 0, 15, thisObject.container, labelColor) - drawLabel(type, 1 / 2, 7.2 / 10, -5, 0, 15, thisObject.container, labelColor) - drawIcon(icon, 1 / 2, 1 / 2, 0, 0, 80, thisObject.container) - } + onMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) + onMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) + onMouseClickEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) + } + + function getContainer(point) { + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + return thisObject.container + } + } + + function onMouseOver(event) { + isMouseOver = true + } + + function onMouseNotOver() { + isMouseOver = false + } + + function onMouseClick(event) { + canvas.designSpace.workspace.replaceWorkspaceByLoadingOne(name) + } + + function physics() { + + } + + function draw() { + let icon = canvas.designSpace.iconByUiObjectType.get(type) + let backgroundColor = UI_COLOR.BLACK + let labelColor + + const RED_LINE_HIGHT = 4 + const OPACITY = 1 + + let params = { + cornerRadius: 0, + lineWidth: 1, + container: thisObject.container, + borderColor: UI_COLOR.RUSTED_RED, + castShadow: false, + backgroundColor: backgroundColor, + opacity: OPACITY + } + + if (isMouseOver === false) { + labelColor = UI_COLOR.WHITE + } else { + labelColor = UI_COLOR.TITANIUM_YELLOW + } + + roundedCornersBackground(params) + + drawLabel(name, 1 / 2, 3.0 / 10, -5, 0, 15, thisObject.container, labelColor) + drawLabel(type, 1 / 2, 7.2 / 10, -5, 0, 15, thisObject.container, labelColor) + drawIcon(icon, 1 / 2, 1 / 2, 0, 0, 80, thisObject.container) + } } diff --git a/CanvasApp/SideSpace/ListView.js b/CanvasApp/SideSpace/ListView.js index e066f7b73..16474d696 100644 --- a/CanvasApp/SideSpace/ListView.js +++ b/CanvasApp/SideSpace/ListView.js @@ -1,271 +1,271 @@ -function newListView () { - const MODULE_NAME = 'List View' - const ERROR_LOG = true - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME +function newListView() { + const MODULE_NAME = 'List View' + const ERROR_LOG = true + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME - let thisObject = { - fitFunction: undefined, - container: undefined, - listItems: [], - payload: undefined, - isVisible: false, - resize: resize, - turnOn: turnOn, - turnOff: turnOff, - physics: physics, - draw: draw, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - } - - thisObject.container = newContainer() - thisObject.container.initialize() - thisObject.container.isDraggeable = false - thisObject.container.isWheelable = true - thisObject.container.detectMouseOver = true - - let isInitialized = false - - let listItemsMap = new Map() - let visibleListItems = [] - let firstVisibleListItem - - let headerHeight = 40 - let footerHeight = 30 - let listItemHeight = SIDE_PANEL_WIDTH * 0.75 - - let posibleVisibleListItems - - let itemSeparation - - let onMouseWheelEventSuscriptionId - - return thisObject - - function finalize () { - thisObject.container.eventHandler.stopListening(onMouseWheelEventSuscriptionId) - - listItemsMap = undefined - visibleListItems = undefined - - thisObject.container.finalize() - thisObject.container = undefined - - thisObject.payload = undefined - thisObject = undefined - } - - function initialize () { - thisObject.container.name = MODULE_NAME - thisObject.container.frame.containerName = thisObject.container.name - thisObject.container.frame.width = SIDE_PANEL_WIDTH * 0.75 - - let position = { // Default position - x: SIDE_PANEL_WIDTH * 0.25 / 2, - y: 20 + let thisObject = { + fitFunction: undefined, + container: undefined, + listItems: [], + payload: undefined, + isVisible: false, + resize: resize, + turnOn: turnOn, + turnOff: turnOff, + physics: physics, + draw: draw, + getContainer: getContainer, + initialize: initialize, + finalize: finalize } - thisObject.container.frame.position = position + thisObject.container = newContainer() + thisObject.container.initialize() + thisObject.container.isDraggeable = false + thisObject.container.isWheelable = true + thisObject.container.detectMouseOver = true - onMouseWheelEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseWheel', onMouseWheel) + let isInitialized = false - resize() - turnOn() - } + let listItemsMap = new Map() + let visibleListItems = [] + let firstVisibleListItem - function resize () { - thisObject.container.frame.height = browserCanvas.height - thisObject.container.frame.position.y * 2 + let headerHeight = 40 + let footerHeight = 30 + let listItemHeight = SIDE_PANEL_WIDTH * 0.75 - let spaceForListItems = (thisObject.container.frame.height - headerHeight - footerHeight) - posibleVisibleListItems = Math.trunc(spaceForListItems / (listItemHeight)) - if ((posibleVisibleListItems - 1) !== 0) { - itemSeparation = (spaceForListItems - listItemHeight * posibleVisibleListItems) / (posibleVisibleListItems - 1) - } else { - itemSeparation = 0 - } - } + let posibleVisibleListItems - function turnOn () { - firstVisibleListItem = 1 + let itemSeparation - callServer(undefined, 'ListWorkspaces', onResponse) + let onMouseWheelEventSuscriptionId - function onResponse (err, text) { - if (err && err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { - if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> Could not load the list of your workspaces from the backend. ') } - return - } + return thisObject - let workspacelist = JSON.parse(text) - thisObject.listItems = [] - for (let i = 0; i < workspacelist.length; i++) { - let workspace = workspacelist[i].replace('.json', '') - let listItem = newListItem() - listItem.initialize(workspace, 'Workspace') - listItem.container.connectToParent(thisObject.container, false, false) + function finalize() { + thisObject.container.eventHandler.stopListening(onMouseWheelEventSuscriptionId) - thisObject.listItems.push(listItem) - } - calculateVisbleListItems() - isInitialized = true - thisObject.isVisible = true - } - } + listItemsMap = undefined + visibleListItems = undefined - function turnOff () { - thisObject.isVisible = false - } + thisObject.container.finalize() + thisObject.container = undefined - function onMouseWheel (event) { - delta = event.wheelDelta - if (delta > 0) { - delta = -1 - } else { - delta = 1 + thisObject.payload = undefined + thisObject = undefined } - firstVisibleListItem = firstVisibleListItem + delta + function initialize() { + thisObject.container.name = MODULE_NAME + thisObject.container.frame.containerName = thisObject.container.name + thisObject.container.frame.width = SIDE_PANEL_WIDTH * 0.75 - calculateVisbleListItems() - } - - function calculateVisbleListItems () { - let availableSlots = Math.trunc(posibleVisibleListItems) - - if (firstVisibleListItem < 1) { firstVisibleListItem = 1 } - if (firstVisibleListItem > (thisObject.listItems.length - availableSlots + 1)) { firstVisibleListItem = thisObject.listItems.length - availableSlots + 1 } - - visibleListItems = [] - - for (let i = 0; i < thisObject.listItems.length; i++) { - if (i + 1 >= firstVisibleListItem && i + 1 < firstVisibleListItem + availableSlots) { - let listItem = thisObject.listItems[i] - - listItem.container.frame.position.x = 0 - listItem.container.frame.position.y = (listItemHeight + itemSeparation) * visibleListItems.length + headerHeight - - /* Add to Visible Product Array */ - visibleListItems.push(listItem) - } - } - } - - function getContainer (point, purpose) { - if (isInitialized === false || thisObject.isVisible === false) { return } - let container - - /* First we check if thisObject point is inside thisObject space. */ - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - /* Now we see which is the inner most container that has it */ - for (let i = 0; i < visibleListItems.length; i++) { - container = visibleListItems[i].getContainer(point) - - if (container !== undefined) { - if (container.isForThisPurpose(purpose) === true) { - return container - } + let position = { // Default position + x: SIDE_PANEL_WIDTH * 0.25 / 2, + y: 20 } - } - return thisObject.container - } - } + thisObject.container.frame.position = position - function childrenPhysics () { - for (let i = 0; i < thisObject.listItems.length; i++) { - let listItem = thisObject.listItems[i] - listItem.physics() - } - } + onMouseWheelEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseWheel', onMouseWheel) - function physics () { - if (isInitialized === false || thisObject.isVisible === false) { return } - if (isInitialized === false) { return } - if (thisObject.isVisible === false) { return } - childrenPhysics() - } - - function draw () { - if (isInitialized === false || thisObject.isVisible === false) { return } - - drawBackground() - drawChildren() - drawScrollBar() - } - - function drawChildren () { - for (let i = 0; i < visibleListItems.length; i++) { - let listItem = visibleListItems[i] - if (listItem !== undefined) { - listItem.draw() - } - } - } - - function drawBackground () { - let label = 'Your Workspaces' - - let backgroundColor = UI_COLOR.WHITE - let params = { - cornerRadius: 5, - lineWidth: 1, - container: thisObject.container, - borderColor: UI_COLOR.RUSTED_RED, - castShadow: false, - backgroundColor: backgroundColor, - opacity: 1 + resize() + turnOn() } - roundedCornersBackground(params) + function resize() { + thisObject.container.frame.height = browserCanvas.height - thisObject.container.frame.position.y * 2 - drawLabel(label, 1 / 2, 0, 0, 25, 15, thisObject.container, UI_COLOR.BLACK) - } - - function drawScrollBar () { - if (thisObject.listItems.length > posibleVisibleListItems && posibleVisibleListItems > 0) { - let xOffset = 4 - let barTopPoint = { - x: thisObject.container.frame.width - xOffset, - y: headerHeight - } - let barBottomPoint = { - x: thisObject.container.frame.width - xOffset, - y: thisObject.container.frame.height - footerHeight - } - let ratio = (posibleVisibleListItems * listItemHeight + (posibleVisibleListItems - 1) * itemSeparation) / (thisObject.listItems.length * listItemHeight + (thisObject.listItems.length - 1) * itemSeparation) - let handleHeight = posibleVisibleListItems * (listItemHeight * ratio) + (posibleVisibleListItems - 1) * itemSeparation * ratio - let handleTopPoint = { - x: thisObject.container.frame.width - xOffset, - y: headerHeight + (listItemHeight * ratio * (firstVisibleListItem - 1) + itemSeparation * ratio * (firstVisibleListItem - 1)) - } - let handleBottomPoint = { - x: thisObject.container.frame.width - xOffset, - y: handleTopPoint.y + handleHeight - } - barTopPoint = thisObject.container.frame.frameThisPoint(barTopPoint) - barBottomPoint = thisObject.container.frame.frameThisPoint(barBottomPoint) - handleTopPoint = thisObject.container.frame.frameThisPoint(handleTopPoint) - handleBottomPoint = thisObject.container.frame.frameThisPoint(handleBottomPoint) - - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(barTopPoint.x, barTopPoint.y) - browserCanvasContext.lineTo(barBottomPoint.x, barBottomPoint.y) - browserCanvasContext.closePath() - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.lineWidth = 1 - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GREY + ', ' + 1 + ')' - browserCanvasContext.stroke() - - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(handleTopPoint.x, handleTopPoint.y) - browserCanvasContext.lineTo(handleBottomPoint.x, handleBottomPoint.y) - browserCanvasContext.closePath() - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.lineWidth = 4 - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.PATINATED_TURQUOISE + ', ' + 1 + ')' - browserCanvasContext.stroke() + let spaceForListItems = (thisObject.container.frame.height - headerHeight - footerHeight) + posibleVisibleListItems = Math.trunc(spaceForListItems / (listItemHeight)) + if ((posibleVisibleListItems - 1) !== 0) { + itemSeparation = (spaceForListItems - listItemHeight * posibleVisibleListItems) / (posibleVisibleListItems - 1) + } else { + itemSeparation = 0 + } + } + + function turnOn() { + firstVisibleListItem = 1 + + callServer(undefined, 'ListWorkspaces', onResponse) + + function onResponse(err, text) { + if (err && err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> Could not load the list of your workspaces from the backend. ') } + return + } + + let workspacelist = JSON.parse(text) + thisObject.listItems = [] + for (let i = 0; i < workspacelist.length; i++) { + let workspace = workspacelist[i].replace('.json', '') + let listItem = newListItem() + listItem.initialize(workspace, 'Workspace') + listItem.container.connectToParent(thisObject.container, false, false) + + thisObject.listItems.push(listItem) + } + calculateVisbleListItems() + isInitialized = true + thisObject.isVisible = true + } + } + + function turnOff() { + thisObject.isVisible = false + } + + function onMouseWheel(event) { + delta = event.wheelDelta + if (delta > 0) { + delta = -1 + } else { + delta = 1 + } + + firstVisibleListItem = firstVisibleListItem + delta + + calculateVisbleListItems() + } + + function calculateVisbleListItems() { + let availableSlots = Math.trunc(posibleVisibleListItems) + + if (firstVisibleListItem < 1) { firstVisibleListItem = 1 } + if (firstVisibleListItem > (thisObject.listItems.length - availableSlots + 1)) { firstVisibleListItem = thisObject.listItems.length - availableSlots + 1 } + + visibleListItems = [] + + for (let i = 0; i < thisObject.listItems.length; i++) { + if (i + 1 >= firstVisibleListItem && i + 1 < firstVisibleListItem + availableSlots) { + let listItem = thisObject.listItems[i] + + listItem.container.frame.position.x = 0 + listItem.container.frame.position.y = (listItemHeight + itemSeparation) * visibleListItems.length + headerHeight + + /* Add to Visible Product Array */ + visibleListItems.push(listItem) + } + } + } + + function getContainer(point, purpose) { + if (isInitialized === false || thisObject.isVisible === false) { return } + let container + + /* First we check if thisObject point is inside thisObject space. */ + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + /* Now we see which is the inner most container that has it */ + for (let i = 0; i < visibleListItems.length; i++) { + container = visibleListItems[i].getContainer(point) + + if (container !== undefined) { + if (container.isForThisPurpose(purpose) === true) { + return container + } + } + } + + return thisObject.container + } + } + + function childrenPhysics() { + for (let i = 0; i < thisObject.listItems.length; i++) { + let listItem = thisObject.listItems[i] + listItem.physics() + } + } + + function physics() { + if (isInitialized === false || thisObject.isVisible === false) { return } + if (isInitialized === false) { return } + if (thisObject.isVisible === false) { return } + childrenPhysics() + } + + function draw() { + if (isInitialized === false || thisObject.isVisible === false) { return } + + drawBackground() + drawChildren() + drawScrollBar() + } + + function drawChildren() { + for (let i = 0; i < visibleListItems.length; i++) { + let listItem = visibleListItems[i] + if (listItem !== undefined) { + listItem.draw() + } + } + } + + function drawBackground() { + let label = 'Available Workspaces' + + let backgroundColor = UI_COLOR.WHITE + let params = { + cornerRadius: 5, + lineWidth: 1, + container: thisObject.container, + borderColor: UI_COLOR.RUSTED_RED, + castShadow: false, + backgroundColor: backgroundColor, + opacity: 1 + } + + roundedCornersBackground(params) + + drawLabel(label, 1 / 2, 0, 0, 25, 15, thisObject.container, UI_COLOR.BLACK) + } + + function drawScrollBar() { + if (thisObject.listItems.length > posibleVisibleListItems && posibleVisibleListItems > 0) { + let xOffset = 4 + let barTopPoint = { + x: thisObject.container.frame.width - xOffset, + y: headerHeight + } + let barBottomPoint = { + x: thisObject.container.frame.width - xOffset, + y: thisObject.container.frame.height - footerHeight + } + let ratio = (posibleVisibleListItems * listItemHeight + (posibleVisibleListItems - 1) * itemSeparation) / (thisObject.listItems.length * listItemHeight + (thisObject.listItems.length - 1) * itemSeparation) + let handleHeight = posibleVisibleListItems * (listItemHeight * ratio) + (posibleVisibleListItems - 1) * itemSeparation * ratio + let handleTopPoint = { + x: thisObject.container.frame.width - xOffset, + y: headerHeight + (listItemHeight * ratio * (firstVisibleListItem - 1) + itemSeparation * ratio * (firstVisibleListItem - 1)) + } + let handleBottomPoint = { + x: thisObject.container.frame.width - xOffset, + y: handleTopPoint.y + handleHeight + } + barTopPoint = thisObject.container.frame.frameThisPoint(barTopPoint) + barBottomPoint = thisObject.container.frame.frameThisPoint(barBottomPoint) + handleTopPoint = thisObject.container.frame.frameThisPoint(handleTopPoint) + handleBottomPoint = thisObject.container.frame.frameThisPoint(handleBottomPoint) + + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(barTopPoint.x, barTopPoint.y) + browserCanvasContext.lineTo(barBottomPoint.x, barBottomPoint.y) + browserCanvasContext.closePath() + browserCanvasContext.setLineDash([0, 0]) + browserCanvasContext.lineWidth = 1 + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GREY + ', ' + 1 + ')' + browserCanvasContext.stroke() + + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(handleTopPoint.x, handleTopPoint.y) + browserCanvasContext.lineTo(handleBottomPoint.x, handleBottomPoint.y) + browserCanvasContext.closePath() + browserCanvasContext.setLineDash([0, 0]) + browserCanvasContext.lineWidth = 4 + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.PATINATED_TURQUOISE + ', ' + 1 + ')' + browserCanvasContext.stroke() + } } - } } diff --git a/CanvasApp/SideSpace/SidePanelTab.js b/CanvasApp/SideSpace/SidePanelTab.js index 1934b2337..6c04ec2e5 100644 --- a/CanvasApp/SideSpace/SidePanelTab.js +++ b/CanvasApp/SideSpace/SidePanelTab.js @@ -1,237 +1,329 @@ -function newSidePanelTab () { - const MODULE_NAME = 'Side Panel Tab' - let thisObject = { - pointerDirection: 'left', - container: undefined, - resize: resize, - physics: physics, - draw: draw, - getContainer: getContainer, - initialize: initialize - } - - const TAB_WIDTH = 25 - const TAB_HEIGHT = 60 - - let isInitialized = false - let animation = 'none' - let ORIGINAL_PARENT_POSITON - let xOffset = 0 - - thisObject.container = newContainer() - thisObject.container.name = MODULE_NAME - thisObject.container.initialize() - thisObject.container.isClickeable = true - thisObject.container.isDraggeable = false - - return thisObject - - function initialize () { - thisObject.container.frame.width = TAB_WIDTH - thisObject.container.frame.height = TAB_HEIGHT - - ORIGINAL_PARENT_POSITON = thisObject.container.parentContainer.frame.position.x - - thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) - resize() - isInitialized = true - } - - function resize () { - thisObject.container.frame.position.x = 0 + thisObject.container.parentContainer.frame.width - thisObject.container.frame.position.y = 69 - setClosed() - } - - function onMouseClick (event) { - if (thisObject.pointerDirection === 'left') { - animation = 'opening' - thisObject.container.eventHandler.raiseEvent('opening') - } else { - animation = 'closing' - thisObject.container.eventHandler.raiseEvent('closing') - } - } - - function getContainer (point) { - let container - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - return thisObject.container - } else { - return undefined - } - } - - function physics () { - if (isInitialized === false) { return } - animate() - } - - function draw () { - if (isInitialized === false) { return } - borders() - arrow() - } - - function animate () { - const STEP = 50 - - if (animation === 'opening') { - xOffset = xOffset + STEP - thisObject.container.parentContainer.frame.position.x = ORIGINAL_PARENT_POSITON + xOffset - if (xOffset >= thisObject.container.parentContainer.frame.width) { - setOpened() - thisObject.container.eventHandler.raiseEvent('opened') - } +function newSidePanelTab() { + const MODULE_NAME = 'Side Panel Tab' + let thisObject = { + screenside: undefined, + pointerDirection: undefined, + container: undefined, + index: 0, + open: open, + close: close, + resize: resize, + physics: physics, + draw: draw, + getContainer: getContainer, + initialize: initialize } - if (animation === 'closing') { - xOffset = xOffset - STEP - thisObject.container.parentContainer.frame.position.x = ORIGINAL_PARENT_POSITON + xOffset - if (xOffset <= 0) { + const TAB_WIDTH = 25 + const TAB_HEIGHT = 60 + const ANIMATION_STEP = 100 + + let isInitialized = false + let animation = 'none' + let ORIGINAL_PARENT_POSITON + let xOffset = 0 + + thisObject.container = newContainer() + thisObject.container.name = MODULE_NAME + thisObject.container.initialize() + thisObject.container.isClickeable = true + thisObject.container.isDraggeable = false + + return thisObject + + function initialize(screenside, index) { + thisObject.screenside = screenside + if (index !== undefined) [ + thisObject.index = index + ] + switch (thisObject.screenside) { + case 'left': { + thisObject.pointerDirection = 'left' + break + } + case 'right': { + thisObject.pointerDirection = 'right' + break + } + } + thisObject.container.frame.width = TAB_WIDTH + thisObject.container.frame.height = TAB_HEIGHT + + thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) + resize() + isInitialized = true + } + + function resize() { + switch (thisObject.screenside) { + case 'left': { + thisObject.container.frame.position.x = 0 + thisObject.container.parentContainer.frame.width + break + } + case 'right': { + thisObject.container.frame.position.x = 0 - TAB_WIDTH + break + } + } + + thisObject.container.frame.position.y = 69 + 69 * thisObject.index + ORIGINAL_PARENT_POSITON = thisObject.container.parentContainer.frame.position.x setClosed() - thisObject.container.eventHandler.raiseEvent('closed') - } - } - } - - function setOpened () { - animation = 'none' - xOffset = thisObject.container.parentContainer.frame.width - thisObject.container.parentContainer.frame.position.x = ORIGINAL_PARENT_POSITON + xOffset - thisObject.container.parentContainer.status = 'visible' - thisObject.pointerDirection = 'right' - } - function setClosed () { - animation = 'none' - xOffset = 0 - thisObject.container.parentContainer.frame.position.x = ORIGINAL_PARENT_POSITON - thisObject.container.parentContainer.status = 'hidden' - thisObject.pointerDirection = 'left' - } - - function arrow () { - let point1 - let point2 - let point3 - - if (thisObject.pointerDirection === 'left') { - point1 = { - x: TAB_WIDTH * 3.5 / 10, - y: TAB_HEIGHT * 12.5 / 30 - } - - point2 = { - x: TAB_WIDTH * 6.5 / 10, - y: TAB_HEIGHT * 15 / 30 - } - - point3 = { - x: TAB_WIDTH * 3.5 / 10, - y: TAB_HEIGHT * 17.5 / 30 - } - } else { - point1 = { - x: TAB_WIDTH * 6.5 / 10, - y: TAB_HEIGHT * 12.5 / 30 - } - - point2 = { - x: TAB_WIDTH * 3.5 / 10, - y: TAB_HEIGHT * 15 / 30 - } - - point3 = { - x: TAB_WIDTH * 6.5 / 10, - y: TAB_HEIGHT * 17.5 / 30 - } } - point1 = thisObject.container.frame.frameThisPoint(point1) - point2 = thisObject.container.frame.frameThisPoint(point2) - point3 = thisObject.container.frame.frameThisPoint(point3) - - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(point1.x, point1.y) - browserCanvasContext.lineTo(point2.x, point2.y) - browserCanvasContext.lineTo(point3.x, point3.y) - browserCanvasContext.closePath() - - let opacity = 1 - - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.GREY + ', ' + opacity + '' - browserCanvasContext.fill() - } - - function borders () { - let point1 - let point2 - let point3 - let point4 - - point1 = { - x: 0, - y: 0 + function open() { + animation = 'opening' + thisObject.container.eventHandler.raiseEvent('opening') } - point2 = { - x: TAB_WIDTH, - y: 0 + function close() { + animation = 'closing' + thisObject.container.eventHandler.raiseEvent('closing') } - point3 = { - x: TAB_WIDTH, - y: TAB_HEIGHT + function onMouseClick(event) { + switch (thisObject.screenside) { + case 'left': { + if (thisObject.pointerDirection === 'left') { + animation = 'opening' + thisObject.container.eventHandler.raiseEvent('opening') + } else { + animation = 'closing' + thisObject.container.eventHandler.raiseEvent('closing') + } + break + } + case 'right': { + if (thisObject.pointerDirection === 'left') { + animation = 'closing' + thisObject.container.eventHandler.raiseEvent('closing') + } else { + animation = 'opening' + thisObject.container.eventHandler.raiseEvent('opening') + } + break + } + } } - point4 = { - x: 0, - y: TAB_HEIGHT + function getContainer(point) { + let container + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + return thisObject.container + } else { + return undefined + } } - point1 = thisObject.container.frame.frameThisPoint(point1) - point2 = thisObject.container.frame.frameThisPoint(point2) - point3 = thisObject.container.frame.frameThisPoint(point3) - point4 = thisObject.container.frame.frameThisPoint(point4) - - let opacity - - /* Shadow */ - - for (let i = 0; i <= 5; i++) { - opacity = 1 - (i / 100) - 0.93 - - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(point1.x + i, point1.y + i) - browserCanvasContext.lineTo(point2.x + i, point2.y + i) - browserCanvasContext.lineTo(point3.x + i, point3.y + i) - browserCanvasContext.lineTo(point4.x + i, point4.y + i) - browserCanvasContext.lineTo(point1.x + i, point1.y + i) - browserCanvasContext.closePath() - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.BLACK + ', ' + opacity + '' - browserCanvasContext.lineWidth = 1 - browserCanvasContext.stroke() + function physics() { + if (isInitialized === false) { return } + animate() } - /* Background and Border */ + function draw() { + if (isInitialized === false) { return } + borders() + arrow() + } - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(point1.x, point1.y) - browserCanvasContext.lineTo(point2.x, point2.y) - browserCanvasContext.lineTo(point3.x, point3.y) - browserCanvasContext.lineTo(point4.x, point4.y) - browserCanvasContext.lineTo(point1.x, point1.y) - browserCanvasContext.closePath() + function animate() { - opacity = 1 + if (animation === 'opening') { + xOffset = xOffset + ANIMATION_STEP + switch (thisObject.screenside) { + case 'left': { + thisObject.container.parentContainer.frame.position.x = ORIGINAL_PARENT_POSITON + xOffset + break + } + case 'right': { + thisObject.container.parentContainer.frame.position.x = ORIGINAL_PARENT_POSITON - xOffset + break + } + } - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + opacity + '' - browserCanvasContext.fill() + if (xOffset >= thisObject.container.parentContainer.frame.width) { + setOpened() + thisObject.container.eventHandler.raiseEvent('opened') + } + } - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GREY + ', ' + opacity + '' - browserCanvasContext.lineWidth = 0.3 - browserCanvasContext.stroke() - } + if (animation === 'closing') { + xOffset = xOffset - ANIMATION_STEP + switch (thisObject.screenside) { + case 'left': { + thisObject.container.parentContainer.frame.position.x = ORIGINAL_PARENT_POSITON + xOffset + break + } + case 'right': { + thisObject.container.parentContainer.frame.position.x = ORIGINAL_PARENT_POSITON - xOffset + break + } + } + + if (xOffset <= 0) { + setClosed() + thisObject.container.eventHandler.raiseEvent('closed') + } + } + } + + function setOpened() { + animation = 'none' + xOffset = thisObject.container.parentContainer.frame.width + thisObject.container.parentContainer.status = 'visible' + switch (thisObject.screenside) { + case 'left': { + thisObject.container.parentContainer.frame.position.x = ORIGINAL_PARENT_POSITON + xOffset + thisObject.pointerDirection = 'right' + break + } + case 'right': { + thisObject.container.parentContainer.frame.position.x = ORIGINAL_PARENT_POSITON - xOffset + thisObject.pointerDirection = 'left' + break + } + } + } + function setClosed() { + animation = 'none' + xOffset = 0 + thisObject.container.parentContainer.status = 'hidden' + switch (thisObject.screenside) { + case 'left': { + thisObject.container.parentContainer.frame.position.x = ORIGINAL_PARENT_POSITON + thisObject.pointerDirection = 'left' + break + } + case 'right': { + thisObject.container.parentContainer.frame.position.x = ORIGINAL_PARENT_POSITON + thisObject.pointerDirection = 'right' + break + } + } + } + + function arrow() { + let point1 + let point2 + let point3 + + if (thisObject.pointerDirection === 'left') { + point1 = { + x: TAB_WIDTH * 3.5 / 10, + y: TAB_HEIGHT * 12.5 / 30 + } + + point2 = { + x: TAB_WIDTH * 6.5 / 10, + y: TAB_HEIGHT * 15 / 30 + } + + point3 = { + x: TAB_WIDTH * 3.5 / 10, + y: TAB_HEIGHT * 17.5 / 30 + } + } else { + point1 = { + x: TAB_WIDTH * 6.5 / 10, + y: TAB_HEIGHT * 12.5 / 30 + } + + point2 = { + x: TAB_WIDTH * 3.5 / 10, + y: TAB_HEIGHT * 15 / 30 + } + + point3 = { + x: TAB_WIDTH * 6.5 / 10, + y: TAB_HEIGHT * 17.5 / 30 + } + } + + point1 = thisObject.container.frame.frameThisPoint(point1) + point2 = thisObject.container.frame.frameThisPoint(point2) + point3 = thisObject.container.frame.frameThisPoint(point3) + + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(point1.x, point1.y) + browserCanvasContext.lineTo(point2.x, point2.y) + browserCanvasContext.lineTo(point3.x, point3.y) + browserCanvasContext.closePath() + + let opacity = 1 + + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.GREY + ', ' + opacity + '' + browserCanvasContext.fill() + } + + function borders() { + let point1 + let point2 + let point3 + let point4 + + point1 = { + x: 0, + y: 0 + } + + point2 = { + x: TAB_WIDTH, + y: 0 + } + + point3 = { + x: TAB_WIDTH, + y: TAB_HEIGHT + } + + point4 = { + x: 0, + y: TAB_HEIGHT + } + + point1 = thisObject.container.frame.frameThisPoint(point1) + point2 = thisObject.container.frame.frameThisPoint(point2) + point3 = thisObject.container.frame.frameThisPoint(point3) + point4 = thisObject.container.frame.frameThisPoint(point4) + + let opacity + + /* Shadow */ + + for (let i = 0; i <= 5; i++) { + opacity = 1 - (i / 100) - 0.93 + + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(point1.x + i, point1.y + i) + browserCanvasContext.lineTo(point2.x + i, point2.y + i) + browserCanvasContext.lineTo(point3.x + i, point3.y + i) + browserCanvasContext.lineTo(point4.x + i, point4.y + i) + browserCanvasContext.lineTo(point1.x + i, point1.y + i) + browserCanvasContext.closePath() + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.BLACK + ', ' + opacity + '' + browserCanvasContext.lineWidth = 1 + browserCanvasContext.stroke() + } + + /* Background and Border */ + + browserCanvasContext.setLineDash([0, 0]) + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(point1.x, point1.y) + browserCanvasContext.lineTo(point2.x, point2.y) + browserCanvasContext.lineTo(point3.x, point3.y) + browserCanvasContext.lineTo(point4.x, point4.y) + browserCanvasContext.lineTo(point1.x, point1.y) + browserCanvasContext.closePath() + + opacity = 1 + + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + opacity + '' + browserCanvasContext.fill() + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GREY + ', ' + opacity + '' + browserCanvasContext.lineWidth = 0.3 + browserCanvasContext.stroke() + } } diff --git a/CanvasApp/Spaces/ChartingSpace.js b/CanvasApp/Spaces/ChartingSpace.js index afbca8ce9..647ea5a24 100644 --- a/CanvasApp/Spaces/ChartingSpace.js +++ b/CanvasApp/Spaces/ChartingSpace.js @@ -6,441 +6,449 @@ changes, then all charts in it are replotted with the corresponging data. */ -function newChartingSpace () { - const MODULE_NAME = 'Charting Space' - const ERROR_LOG = true - const logger = newWebDebugLog() - logger.fileName = MODULE_NAME +function newChartingSpace() { + const MODULE_NAME = 'Charting Space' + const ERROR_LOG = true + const logger = newWebDebugLog() + logger.fileName = MODULE_NAME - let thisObject = { - visible: false, - container: undefined, - inViewport: undefined, - timeMachines: undefined, - viewport: undefined, - payload: undefined, - onKeyPressed: onKeyPressed, - reset: reset, - oneScreenUp: oneScreenUp, - oneScreenDown: oneScreenDown, - oneScreenLeft: oneScreenLeft, - oneScreenRight: oneScreenRight, - fitFunction: fitFunction, - isThisPointVisible: isThisPointVisible, - physics: physics, - draw: draw, - getContainer: getContainer, // returns the inner most container that holds the point received by parameter. - initialize: initialize, - finalize: finalize - } + let thisObject = { + visible: false, + container: undefined, + inViewport: undefined, + timeMachines: undefined, + viewport: undefined, + payload: undefined, + findTimeMachine: findTimeMachine, + onKeyPressed: onKeyPressed, + reset: reset, + oneScreenUp: oneScreenUp, + oneScreenDown: oneScreenDown, + oneScreenLeft: oneScreenLeft, + oneScreenRight: oneScreenRight, + fitFunction: fitFunction, + isThisPointVisible: isThisPointVisible, + physics: physics, + draw: draw, + getContainer: getContainer, // returns the inner most container that holds the point received by parameter. + initialize: initialize, + finalize: finalize + } - let canvasBrowserResizedEventSubscriptionId - let timeMachinesMap - let syncWithDesignerLoop + let canvasBrowserResizedEventSubscriptionId + let timeMachinesMap + let syncWithDesignerLoop - const PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT = 25 + const PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT = 25 - initialSetup() - - let isInitialized = false - - return thisObject - - function reset () { - finalize() initialSetup() - isInitialized = false - initialize() - } - function initialSetup () { - thisObject.timeMachines = [] - thisObject.visible = true - timeMachinesMap = new Map() - syncWithDesignerLoop = 0 - thisObject.inViewport = new Map() + let isInitialized = false - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) + return thisObject - thisObject.container.isDraggeable = false - thisObject.container.isWheelable = false - } - - function finalize () { - for (let i = 0; i < thisObject.timeMachines.length; i++) { - let timeMachine = thisObject.timeMachines[i] - timeMachine.finalize() + function reset() { + finalize() + initialSetup() + isInitialized = false + initialize() } - thisObject.inViewport = undefined - thisObject.timeMachines = undefined - timeMachinesMap = undefined + function initialSetup() { + thisObject.timeMachines = [] + thisObject.visible = true + timeMachinesMap = new Map() + syncWithDesignerLoop = 0 + thisObject.inViewport = new Map() - thisObject.container.eventHandler.stopListening(canvasBrowserResizedEventSubscriptionId) + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) - thisObject.container.finalize() - thisObject.container = undefined - - if (thisObject.viewport !== undefined) { - thisObject.viewport.finalize() - thisObject.viewport = undefined + thisObject.container.isDraggeable = false + thisObject.container.isWheelable = false } - thisObject.payload = undefined - } - - function initialize () { - if (isInitialized === true) { return } - if (canvas.designSpace === undefined) { return } - if (canvas.designSpace.workspace === undefined) { return } - - let rootNodes = canvas.designSpace.workspace.workspaceNode.rootNodes - for (let i = 0; i < rootNodes.length; i++) { - let rootNode = rootNodes[i] - if (rootNode !== null) { - if (rootNode.type === 'Charting Space') { - thisObject.payload = rootNode.payload + function finalize() { + for (let i = 0; i < thisObject.timeMachines.length; i++) { + let timeMachine = thisObject.timeMachines[i] + timeMachine.finalize() } - } + + thisObject.inViewport = undefined + thisObject.timeMachines = undefined + timeMachinesMap = undefined + + thisObject.container.eventHandler.stopListening(canvasBrowserResizedEventSubscriptionId) + + thisObject.container.finalize() + thisObject.container = undefined + + if (thisObject.viewport !== undefined) { + thisObject.viewport.finalize() + thisObject.viewport = undefined + } + + thisObject.payload = undefined } - if (thisObject.payload === undefined) { - // if (ERROR_LOG === true) { logger.write('[WARN] initialize -> There must exist a Charting Space at the Design Space in order to enable Charts. PLease create one and refreash your browser. ') } - return - } + function initialize() { + if (isInitialized === true) { return } + if (canvas.designSpace === undefined) { return } + if (canvas.designSpace.workspace === undefined) { return } - thisObject.viewport = newViewport() - if (thisObject.payload.node.viewport === undefined) { - if (ERROR_LOG === true) { logger.write('[WARN] initialize -> There must exist a Viewport node attached to the Charting Space node in order for the Viewport save its properties. ') } - return - } else { - thisObject.viewport.payload = thisObject.payload.node.viewport.payload - } + let rootNodes = canvas.designSpace.workspace.workspaceNode.rootNodes + for (let i = 0; i < rootNodes.length; i++) { + let rootNode = rootNodes[i] + if (rootNode !== null) { + if (rootNode.type === 'Charting Space') { + thisObject.payload = rootNode.payload + } + } + } - thisObject.viewport.initialize() + if (thisObject.payload === undefined) { + // if (ERROR_LOG === true) { logger.write('[WARN] initialize -> There must exist a Charting Space at the Design Space in order to enable Charts. PLease create one and refreash your browser. ') } + return + } - canvasBrowserResizedEventSubscriptionId = canvas.eventHandler.listenToEvent('Browser Resized', resize) - - isInitialized = true - } - - function getContainer (point, purpose) { - if (thisObject.visible !== true) { return } - if (thisObject.viewport === undefined) { return } - if (thisObject.viewport.isThisPointInViewport(point) === false) { return } - - let container - - /* This first step is not actually to get the container but to allow things to be turned off in case there is a switch of focus from one time machine to another */ - for (let i = 0; i < thisObject.timeMachines.length; i++) { - container = thisObject.timeMachines[i].container - if (purpose === GET_CONTAINER_PURPOSE.MOUSE_OVER) { - container.eventHandler.raiseEvent('onMouseNotOver') - } - } - - /* - Now we see which is the inner most container that has it. - In this case we will ask all the time machines even if one of them already returned a matching container. - This will help the others know they are not on ofcus - */ - let containerFound - for (let i = 0; i < thisObject.timeMachines.length; i++) { - container = thisObject.timeMachines[i].getContainer(point, purpose) - if (container !== undefined) { - if (purpose !== undefined) { - if (containerFound === undefined) { - containerFound = container - } + thisObject.viewport = newViewport() + if (thisObject.payload.node.viewport === undefined) { + if (ERROR_LOG === true) { logger.write('[WARN] initialize -> There must exist a Viewport node attached to the Charting Space node in order for the Viewport save its properties. ') } + return } else { - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - if (containerFound === undefined) { - containerFound = container - } - } + thisObject.viewport.payload = thisObject.payload.node.viewport.payload } - } - } - if (containerFound !== undefined) { - containerFound.space = 'Charting Space' - return containerFound + + thisObject.viewport.initialize() + + canvasBrowserResizedEventSubscriptionId = canvas.eventHandler.listenToEvent('Browser Resized', resize) + + isInitialized = true } - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - thisObject.container.space = 'Charting Space' - return thisObject.container - } else { - return undefined - } - } + function getContainer(point, purpose) { + if (thisObject.visible !== true) { return } + if (thisObject.viewport === undefined) { return } + if (thisObject.viewport.isThisPointInViewport(point) === false) { return } - function resize () { - thisObject.viewport.resize() - thisObject.container.frame.width = browserCanvas.width - thisObject.container.frame.height = COCKPIT_SPACE_POSITION - } + let container - function oneScreenUp () { - if (thisObject.visible === false) { return } - let displaceVector = { - x: 0, - y: browserCanvas.height * PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT / 100 - } - - canvas.chartingSpace.viewport.displace(displaceVector) - } - - function oneScreenDown () { - if (thisObject.visible === false) { return } - let displaceVector = { - x: 0, - y: -browserCanvas.height * PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT / 100 - } - - canvas.chartingSpace.viewport.displace(displaceVector) - } - - function oneScreenLeft () { - if (thisObject.visible === false) { return } - let displaceVector = { - x: browserCanvas.width * PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT / 100, - y: 0 - } - - canvas.chartingSpace.viewport.displace(displaceVector, true) - } - - function oneScreenRight () { - if (thisObject.visible === false) { return } - let displaceVector = { - x: -browserCanvas.width * PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT / 100, - y: 0 - } - - canvas.chartingSpace.viewport.displace(displaceVector, true) - } - - function fitFunction (point, fullVisible) { - /* Here we check the boundaries of the resulting points, so they dont go out of the visible area. */ - - let returnPoint = { - x: point.x, - y: point.y - } - - if (point.x > browserCanvas.width) { - returnPoint.x = browserCanvas.width - } - - if (point.x < 0) { - returnPoint.x = 0 - } - - if (fullVisible === true) { - if (point.y > COCKPIT_SPACE_POSITION) { - returnPoint.y = COCKPIT_SPACE_POSITION - } - } else { - if (point.y > COCKPIT_SPACE_POSITION + COCKPIT_SPACE_HEIGHT / 2) { - returnPoint.y = COCKPIT_SPACE_POSITION + COCKPIT_SPACE_HEIGHT / 2 - } - } - - if (point.y < TOP_SPACE_HEIGHT) { - returnPoint.y = TOP_SPACE_HEIGHT - } - - return returnPoint - } - - function isThisPointVisible (point) { - if (point.x > browserCanvas.width) { - return false - } - - if (point.x < 0) { - return false - } - - if (point.y > COCKPIT_SPACE_POSITION + COCKPIT_SPACE_HEIGHT / 2) { - return false - } - - if (point.y < 0) { - return false - } - - return true - } - - function physics () { - initialize() - thisObjectPhysics() - if (thisObject.visible !== true) { return } - if (thisObject.viewport !== undefined) { - thisObject.viewport.physics() - } - childrenPhysics() - syncWithDesigner() - } - - function onKeyPressed (event) { - if (thisObject.visible !== true) { return } - for (let j = 0; j < thisObject.timeMachines.length; j++) { - let timeMachine = thisObject.timeMachines[j] - if (timeMachine.onFocus === true) { - timeMachine.onKeyPressed(event) - } - } - } - - function syncWithDesigner () { - if (thisObject.payload === undefined) { return } - if (thisObject.payload.node === undefined) { return } - syncWithDesignerLoop = syncWithDesignerLoop + 0.00000000001 - - if (thisObject.payload.node.dashboards !== undefined) { - for (let i = 0; i < thisObject.payload.node.dashboards.length; i++) { - let dashboard = thisObject.payload.node.dashboards[i] - if (dashboard.timeMachines !== undefined) { - for (let j = 0; j < dashboard.timeMachines.length; j++) { - let node = dashboard.timeMachines[j] - let timeMachine = timeMachinesMap.get(node.id) - if (timeMachine === undefined) { - /* The time machine node is new, thus we need to initialize a new timeMachine */ - initializeTimeMachine(node, syncWithDesignerLoop) - } else { - /* The time machine already exists, we tag it as existing at the current loop. */ - timeMachine.syncWithDesignerLoop = syncWithDesignerLoop + /* This first step is not actually to get the container but to allow things to be turned off in case there is a switch of focus from one time machine to another */ + for (let i = 0; i < thisObject.timeMachines.length; i++) { + container = thisObject.timeMachines[i].container + if (purpose === GET_CONTAINER_PURPOSE.MOUSE_OVER) { + container.eventHandler.raiseEvent('onMouseNotOver') } - } } - } + + /* + Now we see which is the inner most container that has it. + In this case we will ask all the time machines even if one of them already returned a matching container. + This will help the others know they are not on ofcus + */ + let containerFound + for (let i = 0; i < thisObject.timeMachines.length; i++) { + container = thisObject.timeMachines[i].getContainer(point, purpose) + if (container !== undefined) { + if (purpose !== undefined) { + if (containerFound === undefined) { + containerFound = container + } + } else { + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + if (containerFound === undefined) { + containerFound = container + } + } + } + } + } + if (containerFound !== undefined) { + containerFound.space = 'Charting Space' + return containerFound + } + + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + thisObject.container.space = 'Charting Space' + return thisObject.container + } else { + return undefined + } } - /* We check all the timeMachines we have to see if we need to remove any of them */ - for (let i = 0; i < thisObject.timeMachines.length; i++) { - let timeMachine = thisObject.timeMachines[i] - if (timeMachine.syncWithDesignerLoop < syncWithDesignerLoop) { - /* Must be removed */ - timeMachine.finalize() - timeMachinesMap.delete(timeMachine.nodeId) - thisObject.timeMachines.splice(i, 1) - /* We remove one at the time */ - return - } + function resize() { + thisObject.viewport.resize() + thisObject.container.frame.width = browserCanvas.width + thisObject.container.frame.height = COCKPIT_SPACE_POSITION } - function initializeTimeMachine (node, syncWithDesignerLoop) { - if (node.payload === undefined) { return } // not ready to consider this Time Machine - if (node.payload.uiObject === undefined) { return } + function oneScreenUp() { + if (thisObject.visible === false) { return } + let displaceVector = { + x: 0, + y: browserCanvas.height * PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT / 100 + } - let timeMachine = newTimeMachine() - timeMachine.syncWithDesignerLoop = syncWithDesignerLoop - timeMachine.payload = node.payload - timeMachine.nodeId = node.id + canvas.chartingSpace.viewport.displace(displaceVector) + } - timeMachinesMap.set(node.id, timeMachine) - timeMachine.payload.uiObject.setValue('Loading...') + function oneScreenDown() { + if (thisObject.visible === false) { return } + let displaceVector = { + x: 0, + y: -browserCanvas.height * PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT / 100 + } - /* Setting up the new time machine. */ - timeMachine.container.frame.position.x = browserCanvas.width / 2 - browserCanvas.width / TIME_MACHINE_WIDTH / 2 - timeMachine.container.frame.position.y = browserCanvas.height / 2 - (browserCanvas.height - TOP_SPACE_HEIGHT - COCKPIT_SPACE_HEIGHT) / TIME_MACHINE_HEIGHT / 2 - timeMachine.initialize(onTimeMachineInitialized) + canvas.chartingSpace.viewport.displace(displaceVector) + } + + function oneScreenLeft() { + if (thisObject.visible === false) { return } + let displaceVector = { + x: browserCanvas.width * PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT / 100, + y: 0 + } + + canvas.chartingSpace.viewport.displace(displaceVector, true) + } + + function oneScreenRight() { + if (thisObject.visible === false) { return } + let displaceVector = { + x: -browserCanvas.width * PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT / 100, + y: 0 + } + + canvas.chartingSpace.viewport.displace(displaceVector, true) + } + + function fitFunction(point, fullVisible) { + /* Here we check the boundaries of the resulting points, so they dont go out of the visible area. */ + + let returnPoint = { + x: point.x, + y: point.y + } + + if (point.x > browserCanvas.width) { + returnPoint.x = browserCanvas.width + } + + if (point.x < 0) { + returnPoint.x = 0 + } + + if (fullVisible === true) { + if (point.y > COCKPIT_SPACE_POSITION) { + returnPoint.y = COCKPIT_SPACE_POSITION + } + } else { + if (point.y > COCKPIT_SPACE_POSITION + COCKPIT_SPACE_HEIGHT / 2) { + returnPoint.y = COCKPIT_SPACE_POSITION + COCKPIT_SPACE_HEIGHT / 2 + } + } + + if (point.y < TOP_SPACE_HEIGHT) { + returnPoint.y = TOP_SPACE_HEIGHT + } + + return returnPoint + } + + function isThisPointVisible(point) { + if (point.x > browserCanvas.width) { + return false + } + + if (point.x < 0) { + return false + } + + if (point.y > COCKPIT_SPACE_POSITION + COCKPIT_SPACE_HEIGHT / 2) { + return false + } + + if (point.y < 0) { + return false + } + + return true + } + + function physics() { + initialize() + thisObjectPhysics() + if (thisObject.visible !== true) { return } + if (thisObject.viewport !== undefined) { + thisObject.viewport.physics() + } + childrenPhysics() + syncWithDesigner() + } + + function onKeyPressed(event) { + if (thisObject.visible !== true) { return } + for (let j = 0; j < thisObject.timeMachines.length; j++) { + let timeMachine = thisObject.timeMachines[j] + if (timeMachine.onFocus === true) { + timeMachine.onKeyPressed(event) + } + } + } + + function findTimeMachine(node) { + for (let i = 0; i < thisObject.timeMachines.length; i++) { + let timeMachine = thisObject.timeMachines[i] + if (timeMachine.payload.node.id === node.id) { + return timeMachine + } + } + } + + function syncWithDesigner() { + if (thisObject.payload === undefined) { return } + if (thisObject.payload.node === undefined) { return } + syncWithDesignerLoop = syncWithDesignerLoop + 0.00000000001 + + if (thisObject.payload.node.dashboards !== undefined) { + for (let i = 0; i < thisObject.payload.node.dashboards.length; i++) { + let dashboard = thisObject.payload.node.dashboards[i] + if (dashboard.timeMachines !== undefined) { + for (let j = 0; j < dashboard.timeMachines.length; j++) { + let node = dashboard.timeMachines[j] + let timeMachine = timeMachinesMap.get(node.id) + if (timeMachine === undefined) { + /* The time machine node is new, thus we need to initialize a new timeMachine */ + initializeTimeMachine(node, syncWithDesignerLoop) + } else { + /* The time machine already exists, we tag it as existing at the current loop. */ + timeMachine.syncWithDesignerLoop = syncWithDesignerLoop + } + } + } + } + } + + /* We check all the timeMachines we have to see if we need to remove any of them */ + for (let i = 0; i < thisObject.timeMachines.length; i++) { + let timeMachine = thisObject.timeMachines[i] + if (timeMachine.syncWithDesignerLoop < syncWithDesignerLoop) { + /* Must be removed */ + timeMachine.finalize() + timeMachinesMap.delete(timeMachine.nodeId) + thisObject.timeMachines.splice(i, 1) + /* We remove one at the time */ + return + } + } + + function initializeTimeMachine(node, syncWithDesignerLoop) { + if (node.payload === undefined) { return } // not ready to consider this Time Machine + if (node.payload.uiObject === undefined) { return } + + let timeMachine = newTimeMachine() + timeMachine.syncWithDesignerLoop = syncWithDesignerLoop + timeMachine.payload = node.payload + timeMachine.nodeId = node.id + + timeMachinesMap.set(node.id, timeMachine) + timeMachine.payload.uiObject.setValue('Loading...') + + /* Setting up the new time machine. */ + timeMachine.initialize(onTimeMachineInitialized) + + function onTimeMachineInitialized() { + thisObject.timeMachines.push(timeMachine) + timeMachine.payload.uiObject.setValue('') + if (canvas.chartingSpace.viewport !== undefined) { + canvas.chartingSpace.viewport.raiseEvents() // These events will impacts on objects just initialized. + } + } + } + } + + function thisObjectPhysics() { + thisObject.container.frame.height = COCKPIT_SPACE_POSITION + + if (thisObject.container.frame.height <= TOP_SPACE_HEIGHT) { + thisObject.visible = false + if (thisObject.viewport !== undefined) { + thisObject.viewport.visible = false + } + } else { + thisObject.visible = true + if (thisObject.viewport !== undefined) { + thisObject.viewport.visible = true + } + } - function onTimeMachineInitialized () { - thisObject.timeMachines.push(timeMachine) - timeMachine.payload.uiObject.setValue('') if (canvas.chartingSpace.viewport !== undefined) { - canvas.chartingSpace.viewport.raiseEvents() // These events will impacts on objects just initialized. + canvas.chartingSpace.viewport.resize() } - } - } - } - - function thisObjectPhysics () { - thisObject.container.frame.height = COCKPIT_SPACE_POSITION - - if (thisObject.container.frame.height <= TOP_SPACE_HEIGHT) { - thisObject.visible = false - if (thisObject.viewport !== undefined) { - thisObject.viewport.visible = false - } - } else { - thisObject.visible = true - if (thisObject.viewport !== undefined) { - thisObject.viewport.visible = true - } } - if (canvas.chartingSpace.viewport !== undefined) { - canvas.chartingSpace.viewport.resize() - } - } + function childrenPhysics() { + for (let i = 0; i < thisObject.timeMachines.length; i++) { + let timeMachine = thisObject.timeMachines[i] + if (timeMachine.payload.node === undefined) { + continue + } - function childrenPhysics () { - for (let i = 0; i < thisObject.timeMachines.length; i++) { - let timeMachine = thisObject.timeMachines[i] - if (timeMachine.payload.node === undefined) { - continue - } - - if (timeMachine.container.frame.isInViewPort()) { - thisObject.inViewport.set(timeMachine.payload.node.id, timeMachine) - } else { - thisObject.inViewport.delete(timeMachine.payload.node.id) - } - timeMachine.physics() - } - } - - function drawBackground () { - if (thisObject.visible === false) { return } - drawSpaceBackground() - - for (let i = 0; i < thisObject.timeMachines.length; i++) { - let timeMachine = thisObject.timeMachines[thisObject.timeMachines.length - i - 1] - timeMachine.drawBackground() - } - } - - function draw () { - if (canWeDraw === false) { return } - if (thisObject.visible === false) { return } - drawBackground() - - for (let i = 0; i < thisObject.timeMachines.length; i++) { - let timeMachine = thisObject.timeMachines[thisObject.timeMachines.length - i - 1] - timeMachine.draw() + if (timeMachine.container.frame.isInViewPort()) { + thisObject.inViewport.set(timeMachine.payload.node.id, timeMachine) + } else { + thisObject.inViewport.delete(timeMachine.payload.node.id) + } + timeMachine.physics() + } } - drawForeground() - } + function drawBackground() { + if (thisObject.visible === false) { return } + drawSpaceBackground() - function drawForeground () { - for (let i = 0; i < thisObject.timeMachines.length; i++) { - let timeMachine = thisObject.timeMachines[thisObject.timeMachines.length - i - 1] - timeMachine.drawForeground() - } - } - - function drawSpaceBackground () { - let opacity = '1' - let fromPoint = { - x: 0, - y: 0 + for (let i = 0; i < thisObject.timeMachines.length; i++) { + let timeMachine = thisObject.timeMachines[thisObject.timeMachines.length - i - 1] + timeMachine.drawBackground() + } } - let toPoint = { - x: browserCanvas.width, - y: COCKPIT_SPACE_POSITION + function draw() { + if (canWeDraw === false) { return } + if (thisObject.visible === false) { return } + drawBackground() + + for (let i = 0; i < thisObject.timeMachines.length; i++) { + let timeMachine = thisObject.timeMachines[thisObject.timeMachines.length - i - 1] + timeMachine.draw() + } + + drawForeground() } - browserCanvasContext.beginPath() - browserCanvasContext.rect(fromPoint.x, fromPoint.y, toPoint.x - fromPoint.x, toPoint.y - fromPoint.y) - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + opacity + ')' - browserCanvasContext.closePath() - browserCanvasContext.fill() - } + function drawForeground() { + for (let i = 0; i < thisObject.timeMachines.length; i++) { + let timeMachine = thisObject.timeMachines[thisObject.timeMachines.length - i - 1] + timeMachine.drawForeground() + } + } + + function drawSpaceBackground() { + let opacity = '1' + let fromPoint = { + x: 0, + y: 0 + } + + let toPoint = { + x: browserCanvas.width, + y: COCKPIT_SPACE_POSITION + } + + browserCanvasContext.beginPath() + browserCanvasContext.rect(fromPoint.x, fromPoint.y, toPoint.x - fromPoint.x, toPoint.y - fromPoint.y) + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + opacity + ')' + browserCanvasContext.closePath() + browserCanvasContext.fill() + } } diff --git a/CanvasApp/Spaces/ChatSpace.js b/CanvasApp/Spaces/ChatSpace.js new file mode 100644 index 000000000..f429006f8 --- /dev/null +++ b/CanvasApp/Spaces/ChatSpace.js @@ -0,0 +1,194 @@ +function newChatSpace() { + const MODULE_NAME = 'Chat Space' + let thisObject = { + sidePanelTab: undefined, + container: undefined, + navigateTo: navigateTo, + physics: physics, + draw: draw, + getContainer: getContainer, + initialize: initialize, + finalize: finalize + } + + let isInitialized = false + + thisObject.container = newContainer() + thisObject.container.name = MODULE_NAME + thisObject.container.initialize() + thisObject.container.isClickeable = true + thisObject.container.isDraggeable = false + thisObject.container.detectMouseOver = true + thisObject.container.status = 'hidden' + + resize() + + let browserResizedEventSubscriptionId + let openingEventSubscriptionId + let closingEventSubscriptionId + + const DEFAULT_URL = 'https://web.telegram.org/#/im?p=@superalgoscommunity' + return thisObject + + function initialize() { + + thisObject.sidePanelTab = newSidePanelTab() + thisObject.sidePanelTab.container.connectToParent(thisObject.container, false, false) + thisObject.sidePanelTab.initialize('right', 1) + openingEventSubscriptionId = thisObject.sidePanelTab.container.eventHandler.listenToEvent('opening', onOpening) + closingEventSubscriptionId = thisObject.sidePanelTab.container.eventHandler.listenToEvent('closing', onClosing) + + browserResizedEventSubscriptionId = canvas.eventHandler.listenToEvent('Browser Resized', resize) + + isInitialized = true + } + + function finalize() { + canvas.eventHandler.stopListening(browserResizedEventSubscriptionId) + thisObject.sidePanelTab.container.eventHandler.stopListening(openingEventSubscriptionId) + thisObject.sidePanelTab.container.eventHandler.stopListening(closingEventSubscriptionId) + } + + function onOpening() { + let docIFrame = document.getElementById('docIFrame') + if (docIFrame.src === "") { + docIFrame.src = DEFAULT_URL + } + } + + function onClosing() { + + } + + function navigateTo(url) { + let docIFrame = document.getElementById('docIFrame') + docIFrame.src = url + thisObject.sidePanelTab.open() + } + + function resize() { + thisObject.container.frame.width = 1200 + thisObject.container.frame.height = browserCanvas.height // - TOP_SPACE_HEIGHT + thisObject.container.frame.position.x = browserCanvas.width + thisObject.container.frame.position.y = 0 // TOP_SPACE_HEIGHT + + if (thisObject.sidePanelTab !== undefined) { + thisObject.sidePanelTab.resize() + } + } + + function getContainer(point, purpose) { + let container + + container = thisObject.sidePanelTab.getContainer(point, purpose) + if (container !== undefined) { return container } + + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + return thisObject.container + } else { + return undefined + } + } + + function physics() { + thisObject.sidePanelTab.physics() + chatAppDivPhysics() + iFramePhysics() + + function chatAppDivPhysics() { + let chatAppDiv = document.getElementById('chatApp') + chatAppDivPosition = { + x: 0, + y: 0 + } + chatAppDivPosition = thisObject.container.frame.frameThisPoint(chatAppDivPosition) + chatAppDiv.style = ' ' + + 'position:fixed; top:' + chatAppDivPosition.y + 'px; ' + + 'left:' + chatAppDivPosition.x + 'px; z-index:1; ' + + 'width: ' + thisObject.container.frame.width + 'px;' + + 'height: ' + thisObject.container.frame.height + 'px' + } + + function iFramePhysics() { + let docIFrame = document.getElementById('chatIFrame') + docIFrame.style = ' ' + + 'width: ' + thisObject.container.frame.width + 'px;' + + 'height: ' + thisObject.container.frame.height + 'px' + } + } + + function draw() { + if (canWeDraw === false) { return } + if (isInitialized === false) { return } + borders() + thisObject.sidePanelTab.draw() + } + + function borders() { + let point1 + let point2 + let point3 + let point4 + + point1 = { + x: 0, + y: 0 + } + + point2 = { + x: thisObject.container.frame.width, + y: 0 + } + + point3 = { + x: thisObject.container.frame.width, + y: thisObject.container.frame.height + } + + point4 = { + x: 0, + y: thisObject.container.frame.height + } + + point1 = thisObject.container.frame.frameThisPoint(point1) + point2 = thisObject.container.frame.frameThisPoint(point2) + point3 = thisObject.container.frame.frameThisPoint(point3) + point4 = thisObject.container.frame.frameThisPoint(point4) + + browserCanvasContext.setLineDash([0, 0]) + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(point1.x, point1.y) + browserCanvasContext.lineTo(point2.x, point2.y) + browserCanvasContext.lineTo(point3.x, point3.y) + browserCanvasContext.lineTo(point4.x, point4.y) + browserCanvasContext.lineTo(point1.x, point1.y) + browserCanvasContext.closePath() + + let opacity = 1 + + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.LIGHT_GREY + ', ' + opacity + '' + browserCanvasContext.fill() + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GREY + ', ' + opacity + '' + browserCanvasContext.lineWidth = 0.3 + browserCanvasContext.stroke() + + /* Shadow */ + + if (thisObject.container.status !== 'hidden') { + for (let i = 0; i <= 30; i++) { + opacity = 1 - (i / 300) - 0.95 + + browserCanvasContext.setLineDash([0, 0]) + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(point2.x + i, point2.y) + browserCanvasContext.lineTo(point3.x + i, point3.y) + browserCanvasContext.closePath() + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.BLACK + ', ' + opacity + '' + browserCanvasContext.lineWidth = 1 + browserCanvasContext.stroke() + } + } + } +} diff --git a/CanvasApp/Spaces/CockpitSpace.js b/CanvasApp/Spaces/CockpitSpace.js index af67991f7..efb6c4213 100644 --- a/CanvasApp/Spaces/CockpitSpace.js +++ b/CanvasApp/Spaces/CockpitSpace.js @@ -1,370 +1,370 @@ - function newCockpitSpace () { - const MODULE_NAME = 'CockpitSpace' - const STATUS_TYPES = { - ALL_GOOD: 1, - WARNING: 2 - } - let thisObject = { - container: undefined, - status: 'BOTTOM', - fullscreen: undefined, - statusTypes: STATUS_TYPES, - setStatus: setStatus, - toTop: toTop, - toBottom: toBottom, - toMiddle: toMiddle, - moveUp: moveUp, - moveDown: moveDown, - draw: draw, - physics: physics, - getContainer: getContainer, - finalize: finalize, - initialize: initialize, - initializePosition: initializePosition - } +function newCockpitSpace() { + const MODULE_NAME = 'CockpitSpace' + const STATUS_TYPES = { + ALL_GOOD: 1, + WARNING: 2 + } + let thisObject = { + container: undefined, + status: 'BOTTOM', + fullscreen: undefined, + statusTypes: STATUS_TYPES, + setStatus: setStatus, + toTop: toTop, + toBottom: toBottom, + toMiddle: toMiddle, + moveUp: moveUp, + moveDown: moveDown, + draw: draw, + physics: physics, + getContainer: getContainer, + finalize: finalize, + initialize: initialize, + initializePosition: initializePosition + } - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) - thisObject.container.isClickeable = false - thisObject.container.detectMouseOver = true - thisObject.container.isDraggeable = true - thisObject.container.notDraggingOnX = true + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) + thisObject.container.isClickeable = false + thisObject.container.detectMouseOver = true + thisObject.container.isDraggeable = true + thisObject.container.notDraggingOnX = true - controlsMap = new Map() - resize() + controlsMap = new Map() + resize() - let selfMouseClickEventSubscriptionId - let canvasBrowserResizedEventSubscriptionId + let selfMouseClickEventSubscriptionId + let canvasBrowserResizedEventSubscriptionId - let statusCounter = 0 - let statusText - let statusType - let isInitilized = false + let statusCounter = 0 + let statusText + let statusType + let isInitilized = false - return thisObject + return thisObject - function finalize () { - thisObject.container.eventHandler.stopListening(selfMouseClickEventSubscriptionId) - thisObject.container.eventHandler.stopListening(canvasBrowserResizedEventSubscriptionId) + function finalize() { + thisObject.container.eventHandler.stopListening(selfMouseClickEventSubscriptionId) + thisObject.container.eventHandler.stopListening(canvasBrowserResizedEventSubscriptionId) - thisObject.container.finalize() - thisObject.container = undefined - thisObject.fullscreen = undefined - } + thisObject.container.finalize() + thisObject.container = undefined + thisObject.fullscreen = undefined + } - function initialize () { - canvasBrowserResizedEventSubscriptionId = canvas.eventHandler.listenToEvent('Browser Resized', resize) - selfMouseClickEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) + function initialize() { + canvasBrowserResizedEventSubscriptionId = canvas.eventHandler.listenToEvent('Browser Resized', resize) + selfMouseClickEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) - thisObject.fullscreen = newFullScreen() - thisObject.fullscreen.container.connectToParent(thisObject.container) - thisObject.fullscreen.initialize() - } + thisObject.fullscreen = newFullScreen() + thisObject.fullscreen.container.connectToParent(thisObject.container) + thisObject.fullscreen.initialize() + } - function initializePosition () { - thisObject.container.frame.position.x = 0 + function initializePosition() { + thisObject.container.frame.position.x = 0 - let INITIAL_POSITION - if (canvas.designSpace.workspace.enabled === true) { - let localStorage = window.localStorage.getItem(MODULE_NAME) - if (localStorage !== null) { - storage = JSON.parse(localStorage) - thisObject.container.frame.position.y = storage.spacePosition - } else { - INITIAL_POSITION = 55 - thisObject.container.frame.position.y = browserCanvas.height * INITIAL_POSITION / 100 - COCKPIT_SPACE_HEIGHT - } - } else { - INITIAL_POSITION = 100 - thisObject.container.frame.position.y = browserCanvas.height * INITIAL_POSITION / 100 - COCKPIT_SPACE_HEIGHT - } - isInitilized = true - } + let INITIAL_POSITION + if (canvas.designSpace.workspace.enabled === true) { + let localStorage = window.localStorage.getItem(MODULE_NAME) + if (localStorage !== null) { + storage = JSON.parse(localStorage) + thisObject.container.frame.position.y = storage.spacePosition + } else { + INITIAL_POSITION = 55 + thisObject.container.frame.position.y = browserCanvas.height * INITIAL_POSITION / 100 - COCKPIT_SPACE_HEIGHT + } + } else { + INITIAL_POSITION = 100 + thisObject.container.frame.position.y = browserCanvas.height * INITIAL_POSITION / 100 - COCKPIT_SPACE_HEIGHT + } + isInitilized = true + } - function onMouseClick (event) { + function onMouseClick(event) { - } + } - function setStatus (text, counter, type) { - statusCounter = counter - statusText = text - statusType = type - } + function setStatus(text, counter, type) { + statusCounter = counter + statusText = text + statusType = type + } - function resize () { - thisObject.container.frame.width = browserCanvas.width - thisObject.container.frame.height = COCKPIT_SPACE_HEIGHT + function resize() { + thisObject.container.frame.width = browserCanvas.width + thisObject.container.frame.height = COCKPIT_SPACE_HEIGHT - switch (thisObject.status) { - case 'BOTTOM': { - thisObject.container.frame.position.y = browserCanvas.height - COCKPIT_SPACE_HEIGHT - break - } - case 'TOP': { - thisObject.container.frame.position.y = TOP_SPACE_HEIGHT - break - } - } - } + switch (thisObject.status) { + case 'BOTTOM': { + thisObject.container.frame.position.y = browserCanvas.height - COCKPIT_SPACE_HEIGHT + break + } + case 'TOP': { + thisObject.container.frame.position.y = TOP_SPACE_HEIGHT + break + } + } + } - function toTop () { - thisObject.container.frame.position.y = COCKPIT_SPACE_HEIGHT - } + function toTop() { + thisObject.container.frame.position.y = COCKPIT_SPACE_HEIGHT + } - function toBottom () { - thisObject.container.frame.position.y = browserCanvas.height - COCKPIT_SPACE_HEIGHT - } + function toBottom() { + thisObject.container.frame.position.y = browserCanvas.height - COCKPIT_SPACE_HEIGHT + } - function toMiddle () { - thisObject.container.frame.position.y = browserCanvas.height / 2 - COCKPIT_SPACE_HEIGHT - } + function toMiddle() { + thisObject.container.frame.position.y = browserCanvas.height / 2 - COCKPIT_SPACE_HEIGHT + } - function moveUp () { - thisObject.container.frame.position.y = thisObject.container.frame.position.y - COCKPIT_SPACE_HEIGHT * 2 - if (thisObject.container.frame.position.y < 0) { - thisObject.container.frame.position.y = 0 - } - } + function moveUp() { + thisObject.container.frame.position.y = thisObject.container.frame.position.y - COCKPIT_SPACE_HEIGHT * 2 + if (thisObject.container.frame.position.y < 0) { + thisObject.container.frame.position.y = 0 + } + } - function moveDown () { - thisObject.container.frame.position.y = thisObject.container.frame.position.y + COCKPIT_SPACE_HEIGHT * 2 - if (thisObject.container.frame.position.y > browserCanvas.height - COCKPIT_SPACE_HEIGHT) { - thisObject.container.frame.position.y = browserCanvas.height - COCKPIT_SPACE_HEIGHT - } - } + function moveDown() { + thisObject.container.frame.position.y = thisObject.container.frame.position.y + COCKPIT_SPACE_HEIGHT * 2 + if (thisObject.container.frame.position.y > browserCanvas.height - COCKPIT_SPACE_HEIGHT) { + thisObject.container.frame.position.y = browserCanvas.height - COCKPIT_SPACE_HEIGHT + } + } - function statusPhysics () { - statusCounter-- - if (statusCounter < 0) { - statusCounter = 0 - statusText = undefined, - statusType = undefined - } - } + function statusPhysics() { + statusCounter-- + if (statusCounter < 0) { + statusCounter = 0 + statusText = undefined, + statusType = undefined + } + } - function physics () { - thisObjectPhysics() - childrenPhysics() - statusPhysics() - } + function physics() { + thisObjectPhysics() + childrenPhysics() + statusPhysics() + } - function childrenPhysics () { - thisObject.fullscreen.physics() - } - function thisObjectPhysics () { - if (isInitilized === false) { return } - /* Check the limits */ + function childrenPhysics() { + thisObject.fullscreen.physics() + } + function thisObjectPhysics() { + if (isInitilized === false) { return } + /* Check the limits */ - thisObject.status = 'MIDDLE' + thisObject.status = 'MIDDLE' - if (canvas.designSpace.workspace.enabled === true) { - thisObject.container.isDraggeable = true - } else { - thisObject.container.isDraggeable = false - } + if (canvas.designSpace.workspace.enabled === true) { + thisObject.container.isDraggeable = true + } else { + thisObject.container.isDraggeable = false + } - if (thisObject.container.frame.position.y > browserCanvas.height * 99.5 / 100 - COCKPIT_SPACE_HEIGHT) { - thisObject.container.frame.position.y = browserCanvas.height - COCKPIT_SPACE_HEIGHT - thisObject.status = 'BOTTOM' - canvas.designSpace.makeInvisible() - canvas.floatingSpace.makeInvisible() - } else { - canvas.designSpace.makeVisible() - canvas.floatingSpace.makeVisible() - } + if (thisObject.container.frame.position.y > browserCanvas.height * 99.5 / 100 - COCKPIT_SPACE_HEIGHT) { + thisObject.container.frame.position.y = browserCanvas.height - COCKPIT_SPACE_HEIGHT + thisObject.status = 'BOTTOM' + canvas.designSpace.makeInvisible() + canvas.floatingSpace.makeInvisible() + } else { + canvas.designSpace.makeVisible() + canvas.floatingSpace.makeVisible() + } - if (thisObject.container.frame.position.y < browserCanvas.height * 0.5 / 100 + TOP_SPACE_HEIGHT) { - thisObject.container.frame.position.y = TOP_SPACE_HEIGHT - thisObject.status = 'TOP' - canvas.panelsSpace.visible = false - } else { - canvas.panelsSpace.visible = true - } + if (thisObject.container.frame.position.y < browserCanvas.height * 0.5 / 100 + TOP_SPACE_HEIGHT) { + thisObject.container.frame.position.y = TOP_SPACE_HEIGHT + thisObject.status = 'TOP' + canvas.panelsSpace.visible = false + } else { + canvas.panelsSpace.visible = true + } - COCKPIT_SPACE_POSITION = thisObject.container.frame.position.y - let storage = { - spacePosition: COCKPIT_SPACE_POSITION - } - window.localStorage.setItem(MODULE_NAME, JSON.stringify(storage)) - if (canvas.chartingSpace.viewport !== undefined) { - canvas.chartingSpace.viewport.resize() - } - } + COCKPIT_SPACE_POSITION = thisObject.container.frame.position.y + let storage = { + spacePosition: COCKPIT_SPACE_POSITION + } + window.localStorage.setItem(MODULE_NAME, JSON.stringify(storage)) + if (canvas.chartingSpace.viewport !== undefined) { + canvas.chartingSpace.viewport.resize() + } + } - function getContainer (point) { - let container + function getContainer(point) { + let container - // container = thisObject.fullscreen.getContainer(point) - // if (container !== undefined) { return container } + // container = thisObject.fullscreen.getContainer(point) + // if (container !== undefined) { return container } - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - thisObject.container.space = 'Cockpit Space' - return thisObject.container - } else { - return undefined - } - } + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + thisObject.container.space = 'Cockpit Space' + return thisObject.container + } else { + return undefined + } + } - function draw () { - if (canWeDraw === false) { return } - thisObject.container.frame.draw(false, false) + function draw() { + if (canWeDraw === false) { return } + thisObject.container.frame.draw(false, false) - drawBackground() + drawBackground() - // thisObject.fullscreen.draw() - } + // thisObject.fullscreen.draw() + } - function drawBackground () { - let opacity = 1 + function drawBackground() { + let opacity = 1 - let zeroPoint = { - x: 0, - y: 0 - } + let zeroPoint = { + x: 0, + y: 0 + } - const RED_LINE_HIGHT = 2 + const RED_LINE_HIGHT = 2 - zeroPoint = thisObject.container.frame.frameThisPoint(zeroPoint) + zeroPoint = thisObject.container.frame.frameThisPoint(zeroPoint) - let barColor = UI_COLOR.DARK_TURQUOISE // default - let textColor + let barColor = UI_COLOR.DARK_TURQUOISE // default + let textColor - if (statusType !== undefined) { - switch (statusType) { - case STATUS_TYPES.ALL_GOOD: - { - barColor = UI_COLOR.PATINATED_TURQUOISE - textColor = UI_COLOR.WHITE - break - } - case STATUS_TYPES.WARNING: - { - barColor = UI_COLOR.RED - textColor = UI_COLOR.TITANIUM_YELLOW - break - } - } - } + if (statusType !== undefined) { + switch (statusType) { + case STATUS_TYPES.ALL_GOOD: + { + barColor = UI_COLOR.PATINATED_TURQUOISE + textColor = UI_COLOR.WHITE + break + } + case STATUS_TYPES.WARNING: + { + barColor = UI_COLOR.RED + textColor = UI_COLOR.TITANIUM_YELLOW + break + } + } + } - browserCanvasContext.beginPath() - browserCanvasContext.rect(zeroPoint.x, zeroPoint.y, thisObject.container.frame.width, thisObject.container.frame.height) - browserCanvasContext.fillStyle = 'rgba(' + barColor + ', ' + opacity + ')' - browserCanvasContext.closePath() - browserCanvasContext.fill() + browserCanvasContext.beginPath() + browserCanvasContext.rect(zeroPoint.x, zeroPoint.y, thisObject.container.frame.width, thisObject.container.frame.height) + browserCanvasContext.fillStyle = 'rgba(' + barColor + ', ' + opacity + ')' + browserCanvasContext.closePath() + browserCanvasContext.fill() - browserCanvasContext.beginPath() - browserCanvasContext.rect(zeroPoint.x, zeroPoint.y, thisObject.container.frame.width, RED_LINE_HIGHT) - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + opacity + ')' - browserCanvasContext.closePath() - browserCanvasContext.fill() + browserCanvasContext.beginPath() + browserCanvasContext.rect(zeroPoint.x, zeroPoint.y, thisObject.container.frame.width, RED_LINE_HIGHT) + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + opacity + ')' + browserCanvasContext.closePath() + browserCanvasContext.fill() - browserCanvasContext.beginPath() - browserCanvasContext.rect(zeroPoint.x, zeroPoint.y - RED_LINE_HIGHT + thisObject.container.frame.height, thisObject.container.frame.width, RED_LINE_HIGHT) - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + opacity + ')' - browserCanvasContext.closePath() - browserCanvasContext.fill() + browserCanvasContext.beginPath() + browserCanvasContext.rect(zeroPoint.x, zeroPoint.y - RED_LINE_HIGHT + thisObject.container.frame.height, thisObject.container.frame.width, RED_LINE_HIGHT) + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + opacity + ')' + browserCanvasContext.closePath() + browserCanvasContext.fill() - if (statusText !== undefined) { - let position = { - x: thisObject.container.frame.width / 2, - y: thisObject.container.frame.height / 2 + 5 - } - printLabel(statusText, position.x, position.y, 1, 15, textColor, true, thisObject.container) - } + if (statusText !== undefined) { + let position = { + x: thisObject.container.frame.width / 2, + y: thisObject.container.frame.height / 2 + 5 + } + printLabel(statusText, position.x, position.y, 1, 15, textColor, true, thisObject.container) + } - if (canvas.designSpace !== undefined) { - if (canvas.designSpace.workspace.enabled === true && statusText === undefined) { - arrow() - } - } - } + if (canvas.designSpace !== undefined) { + if (canvas.designSpace.workspace.enabled === true && statusText === undefined) { + arrow() + } + } + } - function arrow () { - const X_OFFSET = thisObject.container.frame.width / 2 - const Y_OFFSET = thisObject.container.frame.height / 2 - const HEIGHT = 6 - const WIDTH = 18 - const LINE_WIDTH = 3 - const OPACITY = 1 - let DISTANCE_BETWEEN_ARROWS = 0 - let ARROW_1_DIRECTION = 0 - let ARROW_2_DIRECTION = 0 + function arrow() { + const X_OFFSET = thisObject.container.frame.width / 2 + const Y_OFFSET = thisObject.container.frame.height / 2 + const HEIGHT = 6 + const WIDTH = 18 + const LINE_WIDTH = 3 + const OPACITY = 1 + let DISTANCE_BETWEEN_ARROWS = 0 + let ARROW_1_DIRECTION = 0 + let ARROW_2_DIRECTION = 0 - switch (thisObject.status) { + switch (thisObject.status) { - case ('TOP'): { - ARROW_1_DIRECTION = -1 - ARROW_2_DIRECTION = -1 - DISTANCE_BETWEEN_ARROWS = 6 - break - } - case ('MIDDLE'): { - ARROW_1_DIRECTION = 1 - ARROW_2_DIRECTION = -1 - DISTANCE_BETWEEN_ARROWS = 9 - break - } - case ('BOTTOM'): { - ARROW_1_DIRECTION = 1 - ARROW_2_DIRECTION = 1 - DISTANCE_BETWEEN_ARROWS = 6 - break - } - } + case ('TOP'): { + ARROW_1_DIRECTION = -1 + ARROW_2_DIRECTION = -1 + DISTANCE_BETWEEN_ARROWS = 6 + break + } + case ('MIDDLE'): { + ARROW_1_DIRECTION = 1 + ARROW_2_DIRECTION = -1 + DISTANCE_BETWEEN_ARROWS = 9 + break + } + case ('BOTTOM'): { + ARROW_1_DIRECTION = 1 + ARROW_2_DIRECTION = 1 + DISTANCE_BETWEEN_ARROWS = 6 + break + } + } - point1 = { - x: X_OFFSET - WIDTH / 2, - y: Y_OFFSET + HEIGHT / 2 * ARROW_1_DIRECTION - DISTANCE_BETWEEN_ARROWS / 2 - } + point1 = { + x: X_OFFSET - WIDTH / 2, + y: Y_OFFSET + HEIGHT / 2 * ARROW_1_DIRECTION - DISTANCE_BETWEEN_ARROWS / 2 + } - point2 = { - x: X_OFFSET, - y: Y_OFFSET - HEIGHT / 2 * ARROW_1_DIRECTION - DISTANCE_BETWEEN_ARROWS / 2 - } + point2 = { + x: X_OFFSET, + y: Y_OFFSET - HEIGHT / 2 * ARROW_1_DIRECTION - DISTANCE_BETWEEN_ARROWS / 2 + } - point3 = { - x: X_OFFSET + WIDTH / 2, - y: Y_OFFSET + HEIGHT / 2 * ARROW_1_DIRECTION - DISTANCE_BETWEEN_ARROWS / 2 - } + point3 = { + x: X_OFFSET + WIDTH / 2, + y: Y_OFFSET + HEIGHT / 2 * ARROW_1_DIRECTION - DISTANCE_BETWEEN_ARROWS / 2 + } - point1 = thisObject.container.frame.frameThisPoint(point1) - point2 = thisObject.container.frame.frameThisPoint(point2) - point3 = thisObject.container.frame.frameThisPoint(point3) + point1 = thisObject.container.frame.frameThisPoint(point1) + point2 = thisObject.container.frame.frameThisPoint(point2) + point3 = thisObject.container.frame.frameThisPoint(point3) - point4 = { - x: X_OFFSET - WIDTH / 2, - y: Y_OFFSET + HEIGHT / 2 * ARROW_2_DIRECTION + DISTANCE_BETWEEN_ARROWS / 2 - } + point4 = { + x: X_OFFSET - WIDTH / 2, + y: Y_OFFSET + HEIGHT / 2 * ARROW_2_DIRECTION + DISTANCE_BETWEEN_ARROWS / 2 + } - point5 = { - x: X_OFFSET, - y: Y_OFFSET - HEIGHT / 2 * ARROW_2_DIRECTION + DISTANCE_BETWEEN_ARROWS / 2 - } + point5 = { + x: X_OFFSET, + y: Y_OFFSET - HEIGHT / 2 * ARROW_2_DIRECTION + DISTANCE_BETWEEN_ARROWS / 2 + } - point6 = { - x: X_OFFSET + WIDTH / 2, - y: Y_OFFSET + HEIGHT / 2 * ARROW_2_DIRECTION + DISTANCE_BETWEEN_ARROWS / 2 - } + point6 = { + x: X_OFFSET + WIDTH / 2, + y: Y_OFFSET + HEIGHT / 2 * ARROW_2_DIRECTION + DISTANCE_BETWEEN_ARROWS / 2 + } - point4 = thisObject.container.frame.frameThisPoint(point4) - point5 = thisObject.container.frame.frameThisPoint(point5) - point6 = thisObject.container.frame.frameThisPoint(point6) + point4 = thisObject.container.frame.frameThisPoint(point4) + point5 = thisObject.container.frame.frameThisPoint(point5) + point6 = thisObject.container.frame.frameThisPoint(point6) - browserCanvasContext.setLineDash([0, 0]) + browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.beginPath() + browserCanvasContext.beginPath() - browserCanvasContext.moveTo(point1.x, point1.y) - browserCanvasContext.lineTo(point2.x, point2.y) - browserCanvasContext.lineTo(point3.x, point3.y) + browserCanvasContext.moveTo(point1.x, point1.y) + browserCanvasContext.lineTo(point2.x, point2.y) + browserCanvasContext.lineTo(point3.x, point3.y) - browserCanvasContext.moveTo(point4.x, point4.y) - browserCanvasContext.lineTo(point5.x, point5.y) - browserCanvasContext.lineTo(point6.x, point6.y) + browserCanvasContext.moveTo(point4.x, point4.y) + browserCanvasContext.lineTo(point5.x, point5.y) + browserCanvasContext.lineTo(point6.x, point6.y) - browserCanvasContext.lineWidth = LINE_WIDTH - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + OPACITY + ')' - browserCanvasContext.stroke() - } - } + browserCanvasContext.lineWidth = LINE_WIDTH + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + OPACITY + ')' + browserCanvasContext.stroke() + } +} diff --git a/CanvasApp/Spaces/DesignSpace.js b/CanvasApp/Spaces/DesignSpace.js index 305e1d532..d9dce27cd 100644 --- a/CanvasApp/Spaces/DesignSpace.js +++ b/CanvasApp/Spaces/DesignSpace.js @@ -1,345 +1,115 @@ -function newDesignSpace () { - const MODULE_NAME = 'Designe Space' - let thisObject = { - sidePanel: undefined, - container: undefined, - iconCollection: undefined, - iconByUiObjectType: undefined, - workspace: undefined, - physics: physics, - draw: draw, - getContainer: getContainer, - makeVisible: makeVisible, - makeInvisible: makeInvisible, - initialize: initialize - } - - let container = newContainer() - container.initialize() - thisObject.container = container - - container.isDraggeable = false - - thisObject.iconCollection = new Map() - thisObject.iconByUiObjectType = new Map() - - return thisObject - - function initialize () { - loadIconCollection() - buildIconByUiObjectTypeMap() - - thisObject.workspace = newWorkspace() - thisObject.workspace.initialize() - } - - function buildIconByUiObjectTypeMap () { - /* Take types-icons relationships defined at the schema */ - for (let i = 0; i < APP_SCHEMA_ARRAY.length; i++) { - let nodeDefinition = APP_SCHEMA_ARRAY[i] - let iconName = nodeDefinition.icon - if (iconName !== undefined) { - let icon = thisObject.iconCollection.get(iconName) - thisObject.iconByUiObjectType.set(nodeDefinition.type, icon) - } - } - } - - function loadIconCollection () { - const iconsNames = [ - 'analysis', - 'analysis-1', - 'approve', - 'attach', - 'attractive', - 'pyramid', - 'brainstorming', - 'broken-link', - 'chat', - 'chronometer', - 'compass', - 'competition', - 'content', - 'design-tool', - 'grid', - 'headphones', - 'html', - 'image', - 'layout', - 'loading', - 'login', - 'pantone', - 'paper-plane', - 'photo-camera', - 'piggy-bank', - 'pipette', - 'pixel', - 'placeholder', - 'planning', - 'promotion', - 'pyramid', - 'quality', - 'responsive', - 'schedule', - 'search', - 'security', - 'settings', - 'sitemap', - 'startup', - 'support', - 'tap', - 'menu-fix-pinned', - 'menu-fix-unpinned', - 'targeting', - 'task', - 'testing', - 'text', - 'timeline', - 'tools', - 'delete', - 'upload', - 'vector', - 'video-player', - 'menu-mobility-freeze', - 'menu-mobility-unfreeze', - 'menu-tree-minus', - 'menu-tree-plus', - 'menu-backup', - 'menu-share', - 'stop', - 'stage-open', - 'stage-close', - 'stage-trigger', - 'stage-trigger-trigger-on', - 'stage-trigger-trigger-off', - 'stage-trigger-take-position', - 'menu-tensor-fixed-angles', - 'menu-tensor-free-angles', - 'stage-open-position-size', - 'stage-open-take-profit', - 'stage-open-postion-rate', - 'session-live-trading', - 'session-paper-trading', - 'session-backtesting', - 'session-forward-testing', - 'network', - 'network-node', - 'bot-trading', - 'layer-manager', - 'process', - 'bot-indicator', - 'bot-sensor', - 'time-period', - 'data-mine', - 'procedure-loop', - 'calculations-procedure', - 'data-building-procedure', - 'procedure-initialization', - 'process-definition', - 'output-dataset', - 'data-dependency', - 'product-definition', - 'plotter-module', - 'status-dependency', - 'record-property', - 'record-definition', - 'plotter', - 'plotter-panel', - 'dataset-definition', - 'status-report', - 'execution-finished-event', - 'process-dependencies', - 'process-output', - 'social-bot', - 'execution-started-event', - 'shapes', - 'chart-point', - 'style', - 'chart-points', - 'shapes-polygon-vertex', - 'shapes-polygon-border', - 'shapes-polygon-body', - 'chart-point-formula', - 'style-condition', - 'shapes-polygon', - 'data-entry', - 'data-formula', - 'clone', - 'exchange-account-asset', - 'exchange-account-key', - 'user-keys', - 'user-assets', - 'asset', - 'exchange-accounts', - 'user-account', - 'market', - 'exchange-assets', - 'crypto-exchanges', - 'crypto-exchange', - 'exchange-markets', - 'charting-space', - 'time-line-chart', - 'time-frame-scale', - 'time-scale', - 'rate-scale', - 'time-machine', - 'data-product', - 'single-market-data', - 'data-storage', - 'dataset', - 'viewport', - 'bitfinex', - 'binance', - 'kucoin', - 'bittrex', - 'kraken', - 'poloniex', - 'upbit', - 'monero', - 'tether', - 'tron', - 'stellar', - 'qtum', - 'neo', - 'litecoin', - 'ethereum-classic', - 'ethereum', - 'eos', - 'dash', - 'cardano', - 'bitcoin-cash', - 'bitcoin', - 'binance-coin', - 'trend', - 'oscillator', - 'moving-average', - 'histogram', - 'band', - 'volume', - 'candles', - 'bitmex', - 'liquid', - 'hitbtc', - 'us-dollar', - 'distance-to-parent-200', - 'distance-to-parent-150', - 'distance-to-parent-100', - 'distance-to-parent-050', - 'distance-to-parent-025', - 'distance-to-parent-000', - 'angle-to-parent-360', - 'angle-to-parent-180', - 'angle-to-parent-090', - 'angle-to-parent-045', - 'angle-to-parent-000', - 'data-mining', - 'initial-definition', - 'next-phase-event', - 'testing-environment', - 'production-environment', - 'task-manager', - 'session-based-data', - 'session-independent-data', - 'session-reference', - 'dashboard', - 'toggle-auto-scale-manual', - 'toggle-auto-scale-auto-min-max', - 'toggle-auto-scale-auto-max', - 'toggle-auto-scale-auto-min', - 'toggle-panel-off', - 'toggle-auto-time-scale-auto-min', - 'toggle-auto-time-scale-auto-max', - 'toggle-auto-time-scale-auto-min-max', - 'toggle-auto-time-scale-manual', - 'mouse-pointer', - 'mouse-left-click', - 'mouse-right-click', - 'mouse-wheel-up', - 'mouse-wheel-down', - 'mouse-wheel-click', - 'key-alt', - 'key-shift', - 'key-ctrl', - 'hand-drag', - 'key-down', - 'key-left', - 'key-right', - 'key-up', - 'master-script', - 'scripts-library', - 'super-action', - 'super-scripts', - 'template-script', - 'template-structure', - 'template-target', - 'delink', - 'detach', - 'help', - 'key-a', - 'key-m', - 'key-r', - 'arrangement-horizontal-top', - 'arrangement-convex', - 'arrangement-horizontal-bottom', - 'arrangement-vertical-right', - 'arrangement-vertical-left', - 'arrangement-concave', - 'move-to-phase-event' - ] - - for (let i = 0; i < iconsNames.length; i++) { - let name = iconsNames[i] - loadImage(name) +function newDesignSpace() { + const MODULE_NAME = 'Designe Space' + let thisObject = { + container: undefined, + iconCollection: undefined, + iconByUiObjectType: undefined, + workspace: undefined, + physics: physics, + draw: draw, + getContainer: getContainer, + makeVisible: makeVisible, + makeInvisible: makeInvisible, + initialize: initialize } - function loadImage (name) { - const PATH = 'Images/Icons/style-01/' - let image = new Image() - image.onload = onImageLoad - image.fileName = name + let container = newContainer() + container.initialize() + thisObject.container = container - function onImageLoad () { - image.canDrawIcon = true - } - image.src = window.canvasApp.urlPrefix + PATH + name + '.png' - thisObject.iconCollection.set(name, image) - } - } + container.isDraggeable = false - function physics () { - thisObject.workspace.physics() - } + thisObject.iconCollection = new Map() + thisObject.iconByUiObjectType = new Map() - function makeVisible () { - visible = true - } + return thisObject - function makeInvisible () { - visible = false - } + function initialize() { + loadIconCollection(onIconsReady) - function getContainer (point) { - let container + function onIconsReady() { + buildIconByUiObjectTypeMap() + thisObject.workspace = newWorkspace() + thisObject.workspace.initialize() + } - if (thisObject.sidePanel !== undefined) { - container = thisObject.sidePanel.getContainer(point) - if (container !== undefined) { - container.space = 'Design Space' - return container - } + function buildIconByUiObjectTypeMap() { + /* Take types-icons relationships defined at the schema */ + for (let i = 0; i < APP_SCHEMA_ARRAY.length; i++) { + let nodeDefinition = APP_SCHEMA_ARRAY[i] + let iconName = nodeDefinition.icon + if (iconName === undefined) { + iconName = nodeDefinition.type.toLowerCase() + iconName = iconName.split(" ").join("-") + } + let icon = thisObject.iconCollection.get(iconName) + if (icon !== undefined) { + thisObject.iconByUiObjectType.set(nodeDefinition.type, icon) + } + } + } } - return - } + function loadIconCollection(callBack) { - function draw () { - if (canWeDraw === false) { return } - if (thisObject.sidePanel !== undefined) { - thisObject.sidePanel.draw() + callServer(undefined, 'ImagesNames', onResponse) + + function onResponse(err, data) { + if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + console.log('Failed to Fetch Image Names from the Backend') + return + } + + let imageNames = JSON.parse(data) + let imageLoadedCounter = 0 + + for (let i = 0; i < imageNames.length; i++) { + let name = imageNames[i] + loadImage(name) + } + + function loadImage(name) { + imageLoadedCounter++ + const PATH = 'Images/Icons/style-01/' + let image = new Image() + image.onload = onImageLoad + image.fileName = name + + function onImageLoad() { + image.canDrawIcon = true + } + image.src = PATH + name + let key = name.substring(0, name.length - 4) + thisObject.iconCollection.set(key, image) + + if (imageLoadedCounter === imageNames.length) { + callBack() + } + } + } } - if (thisObject.workspace !== undefined) { - thisObject.workspace.draw() + + function physics() { + if (thisObject.workspace === undefined) { return } + thisObject.workspace.physics() + } + + function makeVisible() { + visible = true + } + + function makeInvisible() { + visible = false + } + + function getContainer(point) { + + } + + function draw() { + if (thisObject.workspace === undefined) { return } + if (canWeDraw === false) { return } + thisObject.workspace.draw() } - } } diff --git a/CanvasApp/Spaces/DocSpace.js b/CanvasApp/Spaces/DocSpace.js new file mode 100644 index 000000000..2a4daa9f5 --- /dev/null +++ b/CanvasApp/Spaces/DocSpace.js @@ -0,0 +1,192 @@ +function newDocSpace() { + const MODULE_NAME = 'Doc Space' + let thisObject = { + sidePanelTab: undefined, + container: undefined, + navigateTo: navigateTo, + physics: physics, + draw: draw, + getContainer: getContainer, + initialize: initialize, + finalize: finalize + } + + let isInitialized = false + + thisObject.container = newContainer() + thisObject.container.name = MODULE_NAME + thisObject.container.initialize() + thisObject.container.isClickeable = true + thisObject.container.isDraggeable = false + thisObject.container.detectMouseOver = true + thisObject.container.status = 'hidden' + + resize() + + let browserResizedEventSubscriptionId + let openingEventSubscriptionId + let closingEventSubscriptionId + + return thisObject + + function initialize() { + thisObject.sidePanelTab = newSidePanelTab() + thisObject.sidePanelTab.container.connectToParent(thisObject.container, false, false) + thisObject.sidePanelTab.initialize('right') + openingEventSubscriptionId = thisObject.sidePanelTab.container.eventHandler.listenToEvent('opening', onOpening) + closingEventSubscriptionId = thisObject.sidePanelTab.container.eventHandler.listenToEvent('closing', onClosing) + + browserResizedEventSubscriptionId = canvas.eventHandler.listenToEvent('Browser Resized', resize) + + isInitialized = true + } + + function finalize() { + canvas.eventHandler.stopListening(browserResizedEventSubscriptionId) + thisObject.sidePanelTab.container.eventHandler.stopListening(openingEventSubscriptionId) + thisObject.sidePanelTab.container.eventHandler.stopListening(closingEventSubscriptionId) + } + + function onOpening() { + let docIFrame = document.getElementById('docIFrame') + if (docIFrame.src === "") { + docIFrame.src = DOCUMENTATION_URL_PREFIX + } + } + + function onClosing() { + + } + + function navigateTo(url) { + let docIFrame = document.getElementById('docIFrame') + docIFrame.src = url + thisObject.sidePanelTab.open() + } + + function resize() { + thisObject.container.frame.width = 1200 + thisObject.container.frame.height = browserCanvas.height // - TOP_SPACE_HEIGHT + thisObject.container.frame.position.x = browserCanvas.width + thisObject.container.frame.position.y = 0 // TOP_SPACE_HEIGHT + + if (thisObject.sidePanelTab !== undefined) { + thisObject.sidePanelTab.resize() + } + } + + function getContainer(point, purpose) { + let container + + container = thisObject.sidePanelTab.getContainer(point, purpose) + if (container !== undefined) { return container } + + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + return thisObject.container + } else { + return undefined + } + } + + function physics() { + thisObject.sidePanelTab.physics() + docAppDivPhysics() + iFramePhysics() + + function docAppDivPhysics() { + let docAppDiv = document.getElementById('docApp') + docAppDivPosition = { + x: 0, + y: 0 + } + docAppDivPosition = thisObject.container.frame.frameThisPoint(docAppDivPosition) + docAppDiv.style = ' ' + + 'position:fixed; top:' + docAppDivPosition.y + 'px; ' + + 'left:' + docAppDivPosition.x + 'px; z-index:1; ' + + 'width: ' + thisObject.container.frame.width + 'px;' + + 'height: ' + thisObject.container.frame.height + 'px' + } + + function iFramePhysics() { + let docIFrame = document.getElementById('docIFrame') + docIFrame.style = ' ' + + 'width: ' + thisObject.container.frame.width + 'px;' + + 'height: ' + thisObject.container.frame.height + 'px' + } + } + + function draw() { + if (canWeDraw === false) { return } + if (isInitialized === false) { return } + borders() + thisObject.sidePanelTab.draw() + } + + function borders() { + let point1 + let point2 + let point3 + let point4 + + point1 = { + x: 0, + y: 0 + } + + point2 = { + x: thisObject.container.frame.width, + y: 0 + } + + point3 = { + x: thisObject.container.frame.width, + y: thisObject.container.frame.height + } + + point4 = { + x: 0, + y: thisObject.container.frame.height + } + + point1 = thisObject.container.frame.frameThisPoint(point1) + point2 = thisObject.container.frame.frameThisPoint(point2) + point3 = thisObject.container.frame.frameThisPoint(point3) + point4 = thisObject.container.frame.frameThisPoint(point4) + + browserCanvasContext.setLineDash([0, 0]) + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(point1.x, point1.y) + browserCanvasContext.lineTo(point2.x, point2.y) + browserCanvasContext.lineTo(point3.x, point3.y) + browserCanvasContext.lineTo(point4.x, point4.y) + browserCanvasContext.lineTo(point1.x, point1.y) + browserCanvasContext.closePath() + + let opacity = 1 + + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.LIGHT_GREY + ', ' + opacity + '' + browserCanvasContext.fill() + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GREY + ', ' + opacity + '' + browserCanvasContext.lineWidth = 0.3 + browserCanvasContext.stroke() + + /* Shadow */ + + if (thisObject.container.status !== 'hidden') { + for (let i = 0; i <= 30; i++) { + opacity = 1 - (i / 300) - 0.95 + + browserCanvasContext.setLineDash([0, 0]) + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(point2.x + i, point2.y) + browserCanvasContext.lineTo(point3.x + i, point3.y) + browserCanvasContext.closePath() + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.BLACK + ', ' + opacity + '' + browserCanvasContext.lineWidth = 1 + browserCanvasContext.stroke() + } + } + } +} diff --git a/CanvasApp/Spaces/FloatingSpace.js b/CanvasApp/Spaces/FloatingSpace.js index cb94ebc2d..90234b1a4 100644 --- a/CanvasApp/Spaces/FloatingSpace.js +++ b/CanvasApp/Spaces/FloatingSpace.js @@ -1,433 +1,433 @@ -function newFloatingSpace () { - const MODULE_NAME = 'Floating Space' - const ERROR_LOG = true - /* - The Floating Space is the place where floating elements like floatingObjects, live and are rendered. - This space has its own physics which helps with the animation of these objects and also preventing them to overlap. - */ +function newFloatingSpace() { + const MODULE_NAME = 'Floating Space' + const ERROR_LOG = true + /* + The Floating Space is the place where floating elements like floatingObjects, live and are rendered. + This space has its own physics which helps with the animation of these objects and also preventing them to overlap. + */ - let thisObject = { - floatingLayer: undefined, // This is the array of floatingObjects being displayed - uiObjectConstructor: undefined, - container: undefined, - inMapMode: false, - drawReferenceLines: false, - drawChainLines: true, - toggleDrawChainLines: toggleDrawChainLines, - toggleDrawReferenceLines: toggleDrawReferenceLines, - toggleMapMode: toggleMapMode, - enterMapMode: enterMapMode, - exitMapMode: exitMapMode, - transformPointToMap: transformPointToMap, - transformRadiusToMap: transformRadiusToMap, - transformImagesizeToMap: transformImagesizeToMap, - oneScreenUp: oneScreenUp, - oneScreenDown: oneScreenDown, - oneScreenLeft: oneScreenLeft, - oneScreenRight: oneScreenRight, - positionAtNode: positionAtNode, - fitIntoVisibleArea: fitIntoVisibleArea, - isThisPointVisible: isThisPointVisible, - isItFar: isItFar, - makeVisible: makeVisible, - makeInvisible: makeInvisible, - draw: draw, - physics: physics, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - } - - thisObject.container = newContainer() - thisObject.container.initialize(MODULE_NAME) - thisObject.container.isClickeable = false - thisObject.container.isDraggeable = true - thisObject.container.isWheelable = true - thisObject.container.detectMouseOver = true - thisObject.container.isClickeable = false - thisObject.container.frame.radius = 0 - - let devicePixelRatio = window.devicePixelRatio - const SPACE_SIZE = 50000 - - thisObject.container.frame.width = SPACE_SIZE - thisObject.container.frame.height = SPACE_SIZE - thisObject.container.frame.position.x = browserCanvas.width / 2 - thisObject.container.frame.width / 2 - thisObject.container.frame.position.y = browserCanvas.height / 2 - thisObject.container.frame.height / 2 - - let visible = false - let floatingObjetOnFocus - - const PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT = 25 - let onDragStartedEventSubscriptionId - let spaceFocusAquiredEventSubscriptionId - - return thisObject - - function finalize () { - thisObject.container.eventHandler.stopListening(onDragStartedEventSubscriptionId) - canvas.floatingSpace.container.eventHandler.stopListening(spaceFocusAquiredEventSubscriptionId) - - thisObject.floatingLayer.finalize() - thisObject.uiObjectConstructor.finalize() - thisObject.container.finalize() - - thisObject.floatingLayer = undefined - thisObject.uiObjectConstructor = undefined - thisObject.container = undefined - - floatingObjetOnFocus = undefined - } - - function initialize (callBackFunction) { - thisObject.floatingLayer = newFloatingLayer() - thisObject.floatingLayer.initialize() - - thisObject.uiObjectConstructor = newUiObjectConstructor() - thisObject.uiObjectConstructor.initialize(thisObject.floatingLayer) - - onDragStartedEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onDragStarted', onDragStarted) - spaceFocusAquiredEventSubscriptionId = canvas.floatingSpace.container.eventHandler.listenToEvent('onFocusAquired', someoneAquiredFocus) - } - - function someoneAquiredFocus (floatingObject) { - if (floatingObject === undefined || floatingObject.container === undefined) { - return + let thisObject = { + floatingLayer: undefined, // This is the array of floatingObjects being displayed + uiObjectConstructor: undefined, + container: undefined, + inMapMode: false, + drawReferenceLines: false, + drawChainLines: true, + toggleDrawChainLines: toggleDrawChainLines, + toggleDrawReferenceLines: toggleDrawReferenceLines, + toggleMapMode: toggleMapMode, + enterMapMode: enterMapMode, + exitMapMode: exitMapMode, + transformPointToMap: transformPointToMap, + transformRadiusToMap: transformRadiusToMap, + transformImagesizeToMap: transformImagesizeToMap, + oneScreenUp: oneScreenUp, + oneScreenDown: oneScreenDown, + oneScreenLeft: oneScreenLeft, + oneScreenRight: oneScreenRight, + positionAtNode: positionAtNode, + fitIntoVisibleArea: fitIntoVisibleArea, + isThisPointVisible: isThisPointVisible, + isItFar: isItFar, + makeVisible: makeVisible, + makeInvisible: makeInvisible, + draw: draw, + physics: physics, + getContainer: getContainer, + initialize: initialize, + finalize: finalize } - floatingObjetOnFocus = floatingObject - } - function toggleDrawReferenceLines () { - if (thisObject.drawReferenceLines === true) { - thisObject.drawReferenceLines = false - } else { - thisObject.drawReferenceLines = true + thisObject.container = newContainer() + thisObject.container.initialize(MODULE_NAME) + thisObject.container.isClickeable = false + thisObject.container.isDraggeable = true + thisObject.container.isWheelable = true + thisObject.container.detectMouseOver = true + thisObject.container.isClickeable = false + thisObject.container.frame.radius = 0 + + let devicePixelRatio = window.devicePixelRatio + const SPACE_SIZE = 50000 + + thisObject.container.frame.width = SPACE_SIZE + thisObject.container.frame.height = SPACE_SIZE + thisObject.container.frame.position.x = browserCanvas.width / 2 - thisObject.container.frame.width / 2 + thisObject.container.frame.position.y = browserCanvas.height / 2 - thisObject.container.frame.height / 2 + + let visible = false + let floatingObjetOnFocus + + const PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT = 25 + let onDragStartedEventSubscriptionId + let spaceFocusAquiredEventSubscriptionId + + return thisObject + + function finalize() { + thisObject.container.eventHandler.stopListening(onDragStartedEventSubscriptionId) + canvas.floatingSpace.container.eventHandler.stopListening(spaceFocusAquiredEventSubscriptionId) + + thisObject.floatingLayer.finalize() + thisObject.uiObjectConstructor.finalize() + thisObject.container.finalize() + + thisObject.floatingLayer = undefined + thisObject.uiObjectConstructor = undefined + thisObject.container = undefined + + floatingObjetOnFocus = undefined } - } - function toggleDrawChainLines () { - if (thisObject.drawChainLines === true) { - thisObject.drawChainLines = false - } else { - thisObject.drawChainLines = true + function initialize(callBackFunction) { + thisObject.floatingLayer = newFloatingLayer() + thisObject.floatingLayer.initialize() + + thisObject.uiObjectConstructor = newUiObjectConstructor() + thisObject.uiObjectConstructor.initialize(thisObject.floatingLayer) + + onDragStartedEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onDragStarted', onDragStarted) + spaceFocusAquiredEventSubscriptionId = canvas.floatingSpace.container.eventHandler.listenToEvent('onFocusAquired', someoneAquiredFocus) } - } - function transformPointToMap (point) { - let returnPoint = { - x: point.x - thisObject.container.frame.position.x, - y: point.y - thisObject.container.frame.position.y - } - returnPoint.x = returnPoint.x / SPACE_SIZE * browserCanvas.width - returnPoint.y = returnPoint.y / SPACE_SIZE * browserCanvas.height - return returnPoint - } - - function transformRadiusToMap (radius) { - const RADIUS_REDUCTION_FACTOR = 2 - return radius / RADIUS_REDUCTION_FACTOR - } - - function transformImagesizeToMap (imageSize) { - const IMAGE_REDUCTION_FACTOR = 3 - return imageSize / IMAGE_REDUCTION_FACTOR - } - - function enterMapMode () { - thisObject.inMapMode = true - } - - function exitMapMode () { - thisObject.inMapMode = false - } - - function toggleMapMode () { - if (thisObject.inMapMode === false) { - enterMapMode() - } else { - exitMapMode() - } - } - - function onDragStarted (event) { - if (thisObject.inMapMode === false) { - if (event.buttons !== 2) { return } - event.candelDragging = true - enterMapMode() - } else { - if (event.buttons !== 1) { - event.candelDragging = true - return - } - - let mousePosition = { - x: event.x, - y: event.y - } - - let mouseAtSpace = { - x: mousePosition.x / browserCanvas.width * SPACE_SIZE, - y: mousePosition.y / browserCanvas.height * SPACE_SIZE - } - /* Let's see if we can snap to some of the root nodes that are isHierarchyHead */ - let snapCandidateNodes = canvas.designSpace.workspace.getHierarchyHeads() - for (let i = 0; i < snapCandidateNodes.length; i++) { - let node = snapCandidateNodes[i] - let nodePosition = { - x: node.payload.floatingObject.container.frame.position.x, - y: node.payload.floatingObject.container.frame.position.y + function someoneAquiredFocus(floatingObject) { + if (floatingObject === undefined || floatingObject.container === undefined) { + return } - // nodePosition = node.payload.floatingObject.container.frame.frameThisPoint(nodePosition) + floatingObjetOnFocus = floatingObject + } - let distance = Math.sqrt(Math.pow(mouseAtSpace.x - nodePosition.x, 2) + Math.pow(mouseAtSpace.y - nodePosition.y, 2)) - const SNAP_THREASHOLD = 1000 - if (distance < SNAP_THREASHOLD) { - mousePosition.x = nodePosition.x / SPACE_SIZE * browserCanvas.width - mousePosition.y = nodePosition.y / SPACE_SIZE * browserCanvas.height + function toggleDrawReferenceLines() { + if (thisObject.drawReferenceLines === true) { + thisObject.drawReferenceLines = false + } else { + thisObject.drawReferenceLines = true } - } - - /* Movign the Floating Space to where the mouse is. */ - thisObject.container.frame.position.x = -mousePosition.x / browserCanvas.width * SPACE_SIZE + browserCanvas.width / 2 - thisObject.container.frame.position.y = -mousePosition.y / browserCanvas.height * SPACE_SIZE + browserCanvas.height / 2 - - exitMapMode() - } - } - - function isItFar (payload, dontCheckParent) { - /* If for any reason the paylaod is undefined we return false */ - if (payload === undefined) { return false } - if (thisObject.inMapMode === true) { return false } - - let radarFactor = 2 // How big is the margin - - /* If the chain parent is not far, they we dont consither this far. */ - if (dontCheckParent !== true) { - if (payload.chainParent !== undefined) { - if (isItFar(payload.chainParent.payload, true) === false) { return false } - } } - /* Exceptions that are never considered far. */ - if ( - payload.node.type === 'Trading System' || - payload.node.type === 'Network' || - payload.node.type === 'Crypto Ecosystem' || - payload.node.type === 'Charting Space' || - payload.node.type === 'Data Mine' || - payload.node.type === 'Super Scripts' - ) { - return false + function toggleDrawChainLines() { + if (thisObject.drawChainLines === true) { + thisObject.drawChainLines = false + } else { + thisObject.drawChainLines = true + } } - /* Another exception are the ones who have reference parents */ - if (payload.referenceParent !== undefined) { return false } - - /* Here we will check the position of a floatingobject to see if it is outside the screen, with a margin of one screen around. */ - let point = thisObject.container.frame.frameThisPoint(payload.position) - - if (point.x > browserCanvas.width + browserCanvas.width * radarFactor) { - return true + function transformPointToMap(point) { + let returnPoint = { + x: point.x - thisObject.container.frame.position.x, + y: point.y - thisObject.container.frame.position.y + } + returnPoint.x = returnPoint.x / SPACE_SIZE * browserCanvas.width + returnPoint.y = returnPoint.y / SPACE_SIZE * browserCanvas.height + return returnPoint } - if (point.x < 0 - browserCanvas.width * radarFactor) { - return true + function transformRadiusToMap(radius) { + const RADIUS_REDUCTION_FACTOR = 2 + return radius / RADIUS_REDUCTION_FACTOR } - let bottom = COCKPIT_SPACE_POSITION + COCKPIT_SPACE_HEIGHT - let heightDiff = browserCanvas.height - bottom - if (point.y < bottom - heightDiff * radarFactor) { - return true + function transformImagesizeToMap(imageSize) { + const IMAGE_REDUCTION_FACTOR = 3 + return imageSize / IMAGE_REDUCTION_FACTOR } - if (point.y > browserCanvas.height + heightDiff * radarFactor) { - return true - } - return false - } - - function fitIntoVisibleArea (point) { - /* Here we check the boundaries of the resulting points, so they dont go out of the visible area. */ - - let returnPoint = { - x: point.x, - y: point.y + function enterMapMode() { + thisObject.inMapMode = true } - if (point.x > browserCanvas.width) { - returnPoint.x = browserCanvas.width + function exitMapMode() { + thisObject.inMapMode = false } - if (point.x < 0) { - returnPoint.x = 0 + function toggleMapMode() { + if (thisObject.inMapMode === false) { + enterMapMode() + } else { + exitMapMode() + } } - if (point.y < COCKPIT_SPACE_POSITION + COCKPIT_SPACE_HEIGHT) { - returnPoint.y = COCKPIT_SPACE_POSITION + COCKPIT_SPACE_HEIGHT + function onDragStarted(event) { + if (thisObject.inMapMode === false) { + if (event.buttons !== 2) { return } + event.candelDragging = true + enterMapMode() + } else { + if (event.buttons !== 1) { + event.candelDragging = true + return + } + + let mousePosition = { + x: event.x, + y: event.y + } + + let mouseAtSpace = { + x: mousePosition.x / browserCanvas.width * SPACE_SIZE, + y: mousePosition.y / browserCanvas.height * SPACE_SIZE + } + /* Let's see if we can snap to some of the root nodes that are isHierarchyHead */ + let snapCandidateNodes = canvas.designSpace.workspace.getHierarchyHeads() + for (let i = 0; i < snapCandidateNodes.length; i++) { + let node = snapCandidateNodes[i] + let nodePosition = { + x: node.payload.floatingObject.container.frame.position.x, + y: node.payload.floatingObject.container.frame.position.y + } + // nodePosition = node.payload.floatingObject.container.frame.frameThisPoint(nodePosition) + + let distance = Math.sqrt(Math.pow(mouseAtSpace.x - nodePosition.x, 2) + Math.pow(mouseAtSpace.y - nodePosition.y, 2)) + const SNAP_THREASHOLD = 1000 + if (distance < SNAP_THREASHOLD) { + mousePosition.x = nodePosition.x / SPACE_SIZE * browserCanvas.width + mousePosition.y = nodePosition.y / SPACE_SIZE * browserCanvas.height + } + } + + /* Movign the Floating Space to where the mouse is. */ + thisObject.container.frame.position.x = -mousePosition.x / browserCanvas.width * SPACE_SIZE + browserCanvas.width / 2 + thisObject.container.frame.position.y = -mousePosition.y / browserCanvas.height * SPACE_SIZE + browserCanvas.height / 2 + + exitMapMode() + } } - if (point.y > browserCanvas.height) { - returnPoint.y = browserCanvas.height + function isItFar(payload, dontCheckParent) { + /* If for any reason the paylaod is undefined we return false */ + if (payload === undefined) { return false } + if (thisObject.inMapMode === true) { return false } + + let radarFactor = 2 // How big is the margin + + /* If the chain parent is not far, they we dont consither this far. */ + if (dontCheckParent !== true) { + if (payload.chainParent !== undefined) { + if (isItFar(payload.chainParent.payload, true) === false) { return false } + } + } + + /* Exceptions that are never considered far. */ + if ( + payload.node.type === 'Trading System' || + payload.node.type === 'Network' || + payload.node.type === 'Crypto Ecosystem' || + payload.node.type === 'Charting Space' || + payload.node.type === 'Data Mine' || + payload.node.type === 'Super Scripts' + ) { + return false + } + + /* Another exception are the ones who have reference parents */ + if (payload.referenceParent !== undefined) { return false } + + /* Here we will check the position of a floatingobject to see if it is outside the screen, with a margin of one screen around. */ + let point = thisObject.container.frame.frameThisPoint(payload.position) + + if (point.x > browserCanvas.width + browserCanvas.width * radarFactor) { + return true + } + + if (point.x < 0 - browserCanvas.width * radarFactor) { + return true + } + + let bottom = COCKPIT_SPACE_POSITION + COCKPIT_SPACE_HEIGHT + let heightDiff = browserCanvas.height - bottom + if (point.y < bottom - heightDiff * radarFactor) { + return true + } + + if (point.y > browserCanvas.height + heightDiff * radarFactor) { + return true + } + return false } - return returnPoint - } + function fitIntoVisibleArea(point) { + /* Here we check the boundaries of the resulting points, so they dont go out of the visible area. */ - function oneScreenUp () { - if (visible === false) { return } - let displaceVector = { - x: 0, - y: browserCanvas.height * PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT / 100 + let returnPoint = { + x: point.x, + y: point.y + } + + if (point.x > browserCanvas.width) { + returnPoint.x = browserCanvas.width + } + + if (point.x < 0) { + returnPoint.x = 0 + } + + if (point.y < COCKPIT_SPACE_POSITION + COCKPIT_SPACE_HEIGHT) { + returnPoint.y = COCKPIT_SPACE_POSITION + COCKPIT_SPACE_HEIGHT + } + + if (point.y > browserCanvas.height) { + returnPoint.y = browserCanvas.height + } + + return returnPoint } - thisObject.container.displace(displaceVector) - return displaceVector - } + function oneScreenUp() { + if (visible === false) { return } + let displaceVector = { + x: 0, + y: browserCanvas.height * PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT / 100 + } - function oneScreenDown () { - if (visible === false) { return } - let displaceVector = { - x: 0, - y: -browserCanvas.height * PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT / 100 + thisObject.container.displace(displaceVector) + return displaceVector } - thisObject.container.displace(displaceVector) - return displaceVector - } + function oneScreenDown() { + if (visible === false) { return } + let displaceVector = { + x: 0, + y: -browserCanvas.height * PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT / 100 + } - function oneScreenLeft () { - if (visible === false) { return } - let displaceVector = { - x: browserCanvas.width * PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT / 100, - y: 0 + thisObject.container.displace(displaceVector) + return displaceVector } - thisObject.container.displace(displaceVector) - return displaceVector - } + function oneScreenLeft() { + if (visible === false) { return } + let displaceVector = { + x: browserCanvas.width * PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT / 100, + y: 0 + } - function oneScreenRight () { - if (visible === false) { return } - let displaceVector = { - x: -browserCanvas.width * PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT / 100, - y: 0 + thisObject.container.displace(displaceVector) + return displaceVector } - thisObject.container.displace(displaceVector) - return displaceVector - } + function oneScreenRight() { + if (visible === false) { return } + let displaceVector = { + x: -browserCanvas.width * PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT / 100, + y: 0 + } - function positionAtNode (node) { - let position = thisObject.container.frame.frameThisPoint(node.payload.position) - - let displaceVector = { - x: browserCanvas.width / 2 - position.x, - y: (COCKPIT_SPACE_POSITION + COCKPIT_SPACE_HEIGHT) + (browserCanvas.height - (COCKPIT_SPACE_POSITION + COCKPIT_SPACE_HEIGHT)) / 2 - position.y + thisObject.container.displace(displaceVector) + return displaceVector } - thisObject.container.displace(displaceVector) - } + function positionAtNode(node) { + let position = thisObject.container.frame.frameThisPoint(node.payload.position) - function isThisPointVisible (point) { - if (point.x > browserCanvas.width) { - return false + let displaceVector = { + x: browserCanvas.width / 2 - position.x, + y: (COCKPIT_SPACE_POSITION + COCKPIT_SPACE_HEIGHT) + (browserCanvas.height - (COCKPIT_SPACE_POSITION + COCKPIT_SPACE_HEIGHT)) / 2 - position.y + } + + thisObject.container.displace(displaceVector) } - if (point.x < 0) { - return false + function isThisPointVisible(point) { + if (point.x > browserCanvas.width) { + return false + } + + if (point.x < 0) { + return false + } + + if (point.y < COCKPIT_SPACE_POSITION + COCKPIT_SPACE_HEIGHT) { + return false + } + + if (point.y > browserCanvas.height) { + return false + } + + return true } - if (point.y < COCKPIT_SPACE_POSITION + COCKPIT_SPACE_HEIGHT) { - return false + function makeVisible() { + visible = true } - if (point.y > browserCanvas.height) { - return false + function makeInvisible() { + visible = false } - return true - } + function getContainer(point) { + if (visible === false) { return } - function makeVisible () { - visible = true - } + let container - function makeInvisible () { - visible = false - } + if (floatingObjetOnFocus !== undefined) { + container = floatingObjetOnFocus.getContainer(point) + if (container !== undefined) { + container.space = 'Floating Space' + return container + } + } - function getContainer (point) { - if (visible === false) { return } + container = thisObject.floatingLayer.getContainer(point) + if (container !== undefined) { + container.space = 'Floating Space' + return container + } - let container - - if (floatingObjetOnFocus !== undefined) { - container = floatingObjetOnFocus.getContainer(point) - if (container !== undefined) { - container.space = 'Floating Space' - return container - } + if (visible === true) { + thisObject.container.space = 'Floating Space' + return thisObject.container + } } - container = thisObject.floatingLayer.getContainer(point) - if (container !== undefined) { - container.space = 'Floating Space' - return container + function physics() { + if (visible === false) { return } + browserZoomPhysics() + positionContraintsPhysics() + thisObject.floatingLayer.physics() } - if (visible === true) { - thisObject.container.space = 'Floating Space' - return thisObject.container + function positionContraintsPhysics() { + if (thisObject.container.frame.position.x > 0) { + thisObject.container.frame.position.x = 0 + } + if (thisObject.container.frame.position.y > 0) { + thisObject.container.frame.position.y = 0 + } + if (thisObject.container.frame.position.x + thisObject.container.frame.width < browserCanvas.width) { + thisObject.container.frame.position.x = browserCanvas.width - thisObject.container.frame.width + } + if (thisObject.container.frame.position.y + thisObject.container.frame.height < browserCanvas.height) { + thisObject.container.frame.position.y = browserCanvas.height - thisObject.container.frame.height + } } - } - function physics () { - if (visible === false) { return } - browserZoomPhysics() - positionContraintsPhysics() - thisObject.floatingLayer.physics() - } + function browserZoomPhysics() { + if (devicePixelRatio !== window.devicePixelRatio) { + devicePixelRatio = window.devicePixelRatio - function positionContraintsPhysics () { - if (thisObject.container.frame.position.x > 0) { - thisObject.container.frame.position.x = 0 + thisObject.container.frame.position.x = browserCanvas.width / 2 - thisObject.container.frame.width / 2 + thisObject.container.frame.position.y = browserCanvas.height / 2 - thisObject.container.frame.height / 2 + } } - if (thisObject.container.frame.position.y > 0) { - thisObject.container.frame.position.y = 0 + + function draw() { + if (canWeDraw === false) { return } + if (visible === false) { return } + drawBackground() + thisObject.floatingLayer.draw() } - if (thisObject.container.frame.position.x + thisObject.container.frame.width < browserCanvas.width) { - thisObject.container.frame.position.x = browserCanvas.width - thisObject.container.frame.width + + function drawBackground() { + browserCanvasContext.beginPath() + + browserCanvasContext.rect(thisObject.container.frame.position.x, thisObject.container.frame.position.y, thisObject.container.frame.width, thisObject.container.frame.height) + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.BLACK + ', 1)' + + browserCanvasContext.closePath() + browserCanvasContext.fill() } - if (thisObject.container.frame.position.y + thisObject.container.frame.height < browserCanvas.height) { - thisObject.container.frame.position.y = browserCanvas.height - thisObject.container.frame.height - } - } - - function browserZoomPhysics () { - if (devicePixelRatio !== window.devicePixelRatio) { - devicePixelRatio = window.devicePixelRatio - - thisObject.container.frame.position.x = browserCanvas.width / 2 - thisObject.container.frame.width / 2 - thisObject.container.frame.position.y = browserCanvas.height / 2 - thisObject.container.frame.height / 2 - } - } - - function draw () { - if (canWeDraw === false) { return } - if (visible === false) { return } - drawBackground() - thisObject.floatingLayer.draw() - } - - function drawBackground () { - browserCanvasContext.beginPath() - - browserCanvasContext.rect(thisObject.container.frame.position.x, thisObject.container.frame.position.y, thisObject.container.frame.width, thisObject.container.frame.height) - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.BLACK + ', 1)' - - browserCanvasContext.closePath() - browserCanvasContext.fill() - } } diff --git a/CanvasApp/Spaces/PanelsSpace.js b/CanvasApp/Spaces/PanelsSpace.js index e752631d1..ecfcfdfa6 100644 --- a/CanvasApp/Spaces/PanelsSpace.js +++ b/CanvasApp/Spaces/PanelsSpace.js @@ -1,379 +1,379 @@ - /* +/* The Panel Space y the place wehre all panels live, no matter who create them. */ -function newPanelsSpace () { - let thisObject = { - visible: true, - container: undefined, - unHide: unHide, - hide: hide, - createNewPanel: createNewPanel, - destroyPanel: destroyPanel, - getPanel: getPanel, - physics: physics, - draw: draw, - panels: [], - getContainer: getContainer, // returns the inner most container that holds the point received by parameter. - initialize: initialize - } +function newPanelsSpace() { + let thisObject = { + visible: true, + container: undefined, + unHide: unHide, + hide: hide, + createNewPanel: createNewPanel, + destroyPanel: destroyPanel, + getPanel: getPanel, + physics: physics, + draw: draw, + panels: [], + getContainer: getContainer, // returns the inner most container that holds the point received by parameter. + initialize: initialize + } - let container = newContainer() - container.initialize() - thisObject.container = container - thisObject.container.isDraggeable = false + let container = newContainer() + container.initialize() + thisObject.container = container + thisObject.container.isDraggeable = false - container.frame.containerName = 'Panels Space' + container.frame.containerName = 'Panels Space' - return thisObject + return thisObject - function initialize () { + function initialize() { /* The space does not create any Panels for itself, it just sits and waits others need panels. */ - } - - function createNewPanel (pType, pParameters, pOwner, pSession) { - let panel - - switch (pType) { - - case 'Layers Panel': - { - panel = newLayersPanel() - panel.fitFunction = canvas.chartingSpace.fitFunction - panel.container.isVisibleFunction = canvas.chartingSpace.isThisPointVisible - panel.type = 'Layers Panel' - break - } - case 'Plotter Panel': - { - if (pParameters.panelNode.code.isLegacy !== true) { - panel = newPlotterPanel() - panel.fitFunction = canvas.chartingSpace.fitFunction - panel.container.isVisibleFunction = canvas.chartingSpace.isThisPointVisible - panel.session = pSession - panel.initialize(pParameters.panelNode) - } else { - panel = getNewPlotterPanel(pParameters.dataMine, pParameters.plotterCodeName, pParameters.moduleCodeName, pParameters.panelNode.code.codeName) - panel.fitFunction = canvas.chartingSpace.fitFunction - panel.container.isVisibleFunction = canvas.chartingSpace.isThisPointVisible - panel.session = pSession - panel.initialize() - } - panel.type = 'Plotter Panel' - break - } } - panel.owner = pOwner - thisObject.panels.push(panel) + function createNewPanel(pType, pParameters, pOwner, pSession) { + let panel - panel.handle = newUniqueId() + switch (pType) { - return panel.handle - } - - function unHide (owner, type) { - for (let i = 0; i < thisObject.panels.length; i++) { - let panel = thisObject.panels[i] - if (panel.owner === owner && panel.type === type) { - panel.isHidden = false - } - } - } - - function hide (owner, type) { - for (let i = 0; i < thisObject.panels.length; i++) { - let panel = thisObject.panels[i] - if (panel.owner === owner && panel.type === type) { - panel.isHidden = true - } - } - } - - function destroyPanel (pPanelHandle) { - for (let i = 0; i < thisObject.panels.length; i++) { - let panel = thisObject.panels[i] - - if (panel.handle === pPanelHandle) { - if (panel.finalize !== undefined) { - panel.finalize() + case 'Layers Panel': + { + panel = newLayersPanel() + panel.fitFunction = canvas.chartingSpace.fitFunction + panel.container.isVisibleFunction = canvas.chartingSpace.isThisPointVisible + panel.type = 'Layers Panel' + break + } + case 'Plotter Panel': + { + if (pParameters.panelNode.config.isLegacy !== true) { + panel = newPlotterPanel() + panel.fitFunction = canvas.chartingSpace.fitFunction + panel.container.isVisibleFunction = canvas.chartingSpace.isThisPointVisible + panel.session = pSession + panel.initialize(pParameters.panelNode) + } else { + panel = getNewPlotterPanel(pParameters.dataMine, pParameters.plotterCodeName, pParameters.moduleCodeName, pParameters.panelNode.config.codeName) + panel.fitFunction = canvas.chartingSpace.fitFunction + panel.container.isVisibleFunction = canvas.chartingSpace.isThisPointVisible + panel.session = pSession + panel.initialize() + } + panel.type = 'Plotter Panel' + break + } } - thisObject.panels.splice(i, 1) // Delete item from array. - return - } + panel.owner = pOwner + thisObject.panels.push(panel) + + panel.handle = newUniqueId() + + return panel.handle } - } - function getPanel (pPanelHandle) { - for (let i = 0; i < thisObject.panels.length; i++) { - let panel = thisObject.panels[i] - - if (panel.handle === pPanelHandle) { - return panel - } - } - } - - function physics () { - if (thisObject.visible !== true) { return } - - childrenPhysics() - positioningPhysics() - } - - function childrenPhysics () { - if (thisObject.panels !== undefined) { - for (let i = 0; i < thisObject.panels.length; i++) { - let panel = thisObject.panels[i] - let owner = canvas.chartingSpace.inViewport.get(panel.owner) - if (owner !== undefined) { - if (panel.physics !== undefined) { - panel.physics() - } - } - } - } - } - - function positioningPhysics () { - if (thisObject.panels !== undefined) { - for (let i = 0; i < thisObject.panels.length; i++) { - let panel = thisObject.panels[i] - if (panel.isVisible === false || panel.isHidden === true) { continue } - /* setting the speed of the panel */ - if (panel.container.speed === undefined) { - panel.container.speed = { - x: 2, - y: 2 - } - } - - /* Trying to move the panel and see if it is possible */ - let centerPoint = { - x: panel.container.frame.position.x, - y: panel.container.frame.position.y - } - centerPoint.x = centerPoint.x + panel.container.frame.width / 2 - centerPoint.y = centerPoint.y + panel.container.frame.height / 2 - - /* Lets see which quadrant the panel is at */ - let verticalLine = (canvas.chartingSpace.viewport.visibleArea.topRight.x - canvas.chartingSpace.viewport.visibleArea.topLeft.x) / 2 + canvas.chartingSpace.viewport.visibleArea.topLeft.x - let horizontalLine = (canvas.chartingSpace.viewport.visibleArea.bottomRight.y - canvas.chartingSpace.viewport.visibleArea.topRight.y) / 2 + canvas.chartingSpace.viewport.visibleArea.topRight.y - - if (panel.upDownButton !== undefined) { - if (panel.upDownButton.status === 'up') { - if (panel.leftRightButton !== undefined) { - if (panel.leftRightButton.status === 'left') { - panel.gravitatesTowards = 'topLeft' - } else { - panel.gravitatesTowards = 'topRight' - } - } else { - if (centerPoint.x < verticalLine) { - panel.gravitatesTowards = 'topLeft' - } else { - panel.gravitatesTowards = 'topRight' - } + function unHide(owner, type) { + for (let i = 0; i < thisObject.panels.length; i++) { + let panel = thisObject.panels[i] + if (panel.owner === owner && panel.type === type) { + panel.isHidden = false } - } else { - if (panel.leftRightButton !== undefined) { - if (panel.leftRightButton.status === 'left') { - panel.gravitatesTowards = 'bottomLeft' - } else { - panel.gravitatesTowards = 'bottomRight' - } - } else { - if (centerPoint.x < verticalLine) { - panel.gravitatesTowards = 'bottomLeft' - } else { - panel.gravitatesTowards = 'bottomRight' - } - } - } - } else { - if (centerPoint.x < verticalLine && centerPoint.y < horizontalLine) { - panel.gravitatesTowards = 'topLeft' - } - if (centerPoint.x >= verticalLine && centerPoint.y < horizontalLine) { - panel.gravitatesTowards = 'topRight' - } - if (centerPoint.x < verticalLine && centerPoint.y >= horizontalLine) { - panel.gravitatesTowards = 'bottomLeft' - } - if (centerPoint.x >= verticalLine && centerPoint.y >= horizontalLine) { - panel.gravitatesTowards = 'bottomRight' - } } - - /* According to the quadrant we push the panels to the sides */ - if (panel.gravitatesTowards === 'topLeft' || panel.gravitatesTowards === 'bottomLeft') { - panel.container.frame.position.x = panel.container.frame.position.x - panel.container.speed.x - if (panel.leftRightButton !== undefined) { - if (panel.leftRightButton.status === 'left' || panel.leftRightButton.status === 'right') { // we avoid pushing other panels while in transition - } - } - isOverlapping(i, panel.container) - if (panel.container.frame.position.x < 0) { - panel.container.frame.position.x = 0 - } - } else { - panel.container.frame.position.x = panel.container.frame.position.x + panel.container.speed.x - isOverlapping(i, panel.container) - if (panel.container.frame.position.x + panel.container.frame.width > browserCanvas.width) { - panel.container.frame.position.x = browserCanvas.width - panel.container.frame.width - } - } - if (panel.container.frame.height <= canvas.chartingSpace.viewport.visibleArea.bottomRight.y - canvas.chartingSpace.viewport.visibleArea.topRight.y) { - if (panel.gravitatesTowards === 'topLeft' || panel.gravitatesTowards === 'topRight') { - panel.container.frame.position.y = panel.container.frame.position.y - panel.container.speed.y - isOverlapping(i, panel.container) - if (panel.container.frame.position.y < canvas.chartingSpace.viewport.visibleArea.topLeft.y) { - panel.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.topLeft.y - } - } else { - panel.container.frame.position.y = panel.container.frame.position.y + panel.container.speed.y - isOverlapping(i, panel.container) - if (panel.container.frame.position.y + panel.container.frame.height > canvas.chartingSpace.viewport.visibleArea.bottomRight.y) { - panel.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y - panel.container.frame.height - } - } - } - } } - function isOverlapping (currentIndex, currentContainer) { - let corner1 = { - x: currentContainer.frame.position.x, - y: currentContainer.frame.position.y - } - let corner2 = { - x: currentContainer.frame.position.x + currentContainer.frame.width, - y: currentContainer.frame.position.y - } - let corner3 = { - x: currentContainer.frame.position.x + currentContainer.frame.width, - y: currentContainer.frame.position.y + currentContainer.frame.height - } - let corner4 = { - x: currentContainer.frame.position.x, - y: currentContainer.frame.position.y + currentContainer.frame.height - } - - for (let i = 0; i < currentIndex; i++) { - let panel = thisObject.panels[i] - if (panel.leftRightButton !== undefined) { - if (panel.leftRightButton.status !== 'left' && panel.leftRightButton.status !== 'right') { // we avoid pushing other panels while in transition - continue - } + function hide(owner, type) { + for (let i = 0; i < thisObject.panels.length; i++) { + let panel = thisObject.panels[i] + if (panel.owner === owner && panel.type === type) { + panel.isHidden = true + } } - if (panel.isVisible === true && panel.isHidden === false) { - if (isThisPointInsideThisFrame(corner1, panel.container.frame) === true) { - pushOut(currentContainer, panel.container, panel.gravitatesTowards) - } - if (isThisPointInsideThisFrame(corner2, panel.container.frame) === true) { - pushOut(currentContainer, panel.container, panel.gravitatesTowards) - } - if (isThisPointInsideThisFrame(corner3, panel.container.frame) === true) { - pushOut(currentContainer, panel.container, panel.gravitatesTowards) - } - if (isThisPointInsideThisFrame(corner4, panel.container.frame) === true) { - pushOut(currentContainer, panel.container, panel.gravitatesTowards) - } - } - } - - function pushOut (currentContainer, controlContainer, corner) { - switch (corner) { - case 'topLeft': { - currentContainer.frame.position.x = controlContainer.frame.position.x + controlContainer.frame.width - break - } - case 'topRight': { - currentContainer.frame.position.x = controlContainer.frame.position.x - currentContainer.frame.width - break - } - case 'bottomLeft': { - currentContainer.frame.position.x = controlContainer.frame.position.x + controlContainer.frame.width - break - } - case 'bottomRight': { - currentContainer.frame.position.x = controlContainer.frame.position.x - currentContainer.frame.width - break - } - } - } - - function isThisPointInsideThisFrame (point, frame) { - let corner1 = { - x: frame.position.x, - y: frame.position.y - } - let corner2 = { - x: frame.position.x + frame.width, - y: frame.position.y - } - let corner3 = { - x: frame.position.x + frame.width, - y: frame.position.y + frame.height - } - let corner4 = { - x: frame.position.x, - y: frame.position.y + frame.height - } - if (point.x >= corner1.x && point.y >= corner1.y && point.x <= corner3.x && point.y <= corner3.y) { - return true - } else { - return false - } - } - return false } - } - function draw () { - if (canWeDraw === false) { return } - if (thisObject.visible !== true) { return } + function destroyPanel(pPanelHandle) { + for (let i = 0; i < thisObject.panels.length; i++) { + let panel = thisObject.panels[i] - thisObject.container.frame.draw(false, false) + if (panel.handle === pPanelHandle) { + if (panel.finalize !== undefined) { + panel.finalize() + } - for (let i = 0; i < thisObject.panels.length; i++) { - let panel = thisObject.panels[i] - let owner = canvas.chartingSpace.inViewport.get(panel.owner) - if (owner !== undefined) { - if (panel.isVisible === true && panel.isHidden === false) { - panel.draw() + thisObject.panels.splice(i, 1) // Delete item from array. + return + } } - } } - } - function getContainer (point, purpose) { - if (thisObject.visible !== true) { return } + function getPanel(pPanelHandle) { + for (let i = 0; i < thisObject.panels.length; i++) { + let panel = thisObject.panels[i] - let container - /* - We search for the container of panels in the oposite direction than we do it for drawing them, - so panels overlapping others are picked firt although they are drawn last. - */ - for (let i = thisObject.panels.length - 1; i >= 0; i--) { - let panel = thisObject.panels[i] - let owner = canvas.chartingSpace.inViewport.get(panel.owner) - if (owner !== undefined) { - if (panel.isVisible === true && panel.isHidden === false) { - container = panel.getContainer(point, purpose) + if (panel.handle === pPanelHandle) { + return panel + } } - } - if (container !== undefined) { - container.space = 'Panels Space' - return container - } } - // thisObject.container.space = 'Panels Space' - // return thisObject.container - } + + function physics() { + if (thisObject.visible !== true) { return } + + childrenPhysics() + positioningPhysics() + } + + function childrenPhysics() { + if (thisObject.panels !== undefined) { + for (let i = 0; i < thisObject.panels.length; i++) { + let panel = thisObject.panels[i] + let owner = canvas.chartingSpace.inViewport.get(panel.owner) + if (owner !== undefined) { + if (panel.physics !== undefined) { + panel.physics() + } + } + } + } + } + + function positioningPhysics() { + if (thisObject.panels !== undefined) { + for (let i = 0; i < thisObject.panels.length; i++) { + let panel = thisObject.panels[i] + if (panel.isVisible === false || panel.isHidden === true) { continue } + /* setting the speed of the panel */ + if (panel.container.speed === undefined) { + panel.container.speed = { + x: 2, + y: 2 + } + } + + /* Trying to move the panel and see if it is possible */ + let centerPoint = { + x: panel.container.frame.position.x, + y: panel.container.frame.position.y + } + centerPoint.x = centerPoint.x + panel.container.frame.width / 2 + centerPoint.y = centerPoint.y + panel.container.frame.height / 2 + + /* Lets see which quadrant the panel is at */ + let verticalLine = (canvas.chartingSpace.viewport.visibleArea.topRight.x - canvas.chartingSpace.viewport.visibleArea.topLeft.x) / 2 + canvas.chartingSpace.viewport.visibleArea.topLeft.x + let horizontalLine = (canvas.chartingSpace.viewport.visibleArea.bottomRight.y - canvas.chartingSpace.viewport.visibleArea.topRight.y) / 2 + canvas.chartingSpace.viewport.visibleArea.topRight.y + + if (panel.upDownButton !== undefined) { + if (panel.upDownButton.status === 'up') { + if (panel.leftRightButton !== undefined) { + if (panel.leftRightButton.status === 'left') { + panel.gravitatesTowards = 'topLeft' + } else { + panel.gravitatesTowards = 'topRight' + } + } else { + if (centerPoint.x < verticalLine) { + panel.gravitatesTowards = 'topLeft' + } else { + panel.gravitatesTowards = 'topRight' + } + } + } else { + if (panel.leftRightButton !== undefined) { + if (panel.leftRightButton.status === 'left') { + panel.gravitatesTowards = 'bottomLeft' + } else { + panel.gravitatesTowards = 'bottomRight' + } + } else { + if (centerPoint.x < verticalLine) { + panel.gravitatesTowards = 'bottomLeft' + } else { + panel.gravitatesTowards = 'bottomRight' + } + } + } + } else { + if (centerPoint.x < verticalLine && centerPoint.y < horizontalLine) { + panel.gravitatesTowards = 'topLeft' + } + if (centerPoint.x >= verticalLine && centerPoint.y < horizontalLine) { + panel.gravitatesTowards = 'topRight' + } + if (centerPoint.x < verticalLine && centerPoint.y >= horizontalLine) { + panel.gravitatesTowards = 'bottomLeft' + } + if (centerPoint.x >= verticalLine && centerPoint.y >= horizontalLine) { + panel.gravitatesTowards = 'bottomRight' + } + } + + /* According to the quadrant we push the panels to the sides */ + if (panel.gravitatesTowards === 'topLeft' || panel.gravitatesTowards === 'bottomLeft') { + panel.container.frame.position.x = panel.container.frame.position.x - panel.container.speed.x + if (panel.leftRightButton !== undefined) { + if (panel.leftRightButton.status === 'left' || panel.leftRightButton.status === 'right') { // we avoid pushing other panels while in transition + } + } + isOverlapping(i, panel.container) + if (panel.container.frame.position.x < 0) { + panel.container.frame.position.x = 0 + } + } else { + panel.container.frame.position.x = panel.container.frame.position.x + panel.container.speed.x + isOverlapping(i, panel.container) + if (panel.container.frame.position.x + panel.container.frame.width > browserCanvas.width) { + panel.container.frame.position.x = browserCanvas.width - panel.container.frame.width + } + } + if (panel.container.frame.height <= canvas.chartingSpace.viewport.visibleArea.bottomRight.y - canvas.chartingSpace.viewport.visibleArea.topRight.y) { + if (panel.gravitatesTowards === 'topLeft' || panel.gravitatesTowards === 'topRight') { + panel.container.frame.position.y = panel.container.frame.position.y - panel.container.speed.y + isOverlapping(i, panel.container) + if (panel.container.frame.position.y < canvas.chartingSpace.viewport.visibleArea.topLeft.y) { + panel.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.topLeft.y + } + } else { + panel.container.frame.position.y = panel.container.frame.position.y + panel.container.speed.y + isOverlapping(i, panel.container) + if (panel.container.frame.position.y + panel.container.frame.height > canvas.chartingSpace.viewport.visibleArea.bottomRight.y) { + panel.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y - panel.container.frame.height + } + } + } + } + } + + function isOverlapping(currentIndex, currentContainer) { + let corner1 = { + x: currentContainer.frame.position.x, + y: currentContainer.frame.position.y + } + let corner2 = { + x: currentContainer.frame.position.x + currentContainer.frame.width, + y: currentContainer.frame.position.y + } + let corner3 = { + x: currentContainer.frame.position.x + currentContainer.frame.width, + y: currentContainer.frame.position.y + currentContainer.frame.height + } + let corner4 = { + x: currentContainer.frame.position.x, + y: currentContainer.frame.position.y + currentContainer.frame.height + } + + for (let i = 0; i < currentIndex; i++) { + let panel = thisObject.panels[i] + if (panel.leftRightButton !== undefined) { + if (panel.leftRightButton.status !== 'left' && panel.leftRightButton.status !== 'right') { // we avoid pushing other panels while in transition + continue + } + } + if (panel.isVisible === true && panel.isHidden === false) { + if (isThisPointInsideThisFrame(corner1, panel.container.frame) === true) { + pushOut(currentContainer, panel.container, panel.gravitatesTowards) + } + if (isThisPointInsideThisFrame(corner2, panel.container.frame) === true) { + pushOut(currentContainer, panel.container, panel.gravitatesTowards) + } + if (isThisPointInsideThisFrame(corner3, panel.container.frame) === true) { + pushOut(currentContainer, panel.container, panel.gravitatesTowards) + } + if (isThisPointInsideThisFrame(corner4, panel.container.frame) === true) { + pushOut(currentContainer, panel.container, panel.gravitatesTowards) + } + } + } + + function pushOut(currentContainer, controlContainer, corner) { + switch (corner) { + case 'topLeft': { + currentContainer.frame.position.x = controlContainer.frame.position.x + controlContainer.frame.width + break + } + case 'topRight': { + currentContainer.frame.position.x = controlContainer.frame.position.x - currentContainer.frame.width + break + } + case 'bottomLeft': { + currentContainer.frame.position.x = controlContainer.frame.position.x + controlContainer.frame.width + break + } + case 'bottomRight': { + currentContainer.frame.position.x = controlContainer.frame.position.x - currentContainer.frame.width + break + } + } + } + + function isThisPointInsideThisFrame(point, frame) { + let corner1 = { + x: frame.position.x, + y: frame.position.y + } + let corner2 = { + x: frame.position.x + frame.width, + y: frame.position.y + } + let corner3 = { + x: frame.position.x + frame.width, + y: frame.position.y + frame.height + } + let corner4 = { + x: frame.position.x, + y: frame.position.y + frame.height + } + if (point.x >= corner1.x && point.y >= corner1.y && point.x <= corner3.x && point.y <= corner3.y) { + return true + } else { + return false + } + } + return false + } + } + + function draw() { + if (canWeDraw === false) { return } + if (thisObject.visible !== true) { return } + + thisObject.container.frame.draw(false, false) + + for (let i = 0; i < thisObject.panels.length; i++) { + let panel = thisObject.panels[i] + let owner = canvas.chartingSpace.inViewport.get(panel.owner) + if (owner !== undefined) { + if (panel.isVisible === true && panel.isHidden === false) { + panel.draw() + } + } + } + } + + function getContainer(point, purpose) { + if (thisObject.visible !== true) { return } + + let container + /* + We search for the container of panels in the oposite direction than we do it for drawing them, + so panels overlapping others are picked firt although they are drawn last. + */ + for (let i = thisObject.panels.length - 1; i >= 0; i--) { + let panel = thisObject.panels[i] + let owner = canvas.chartingSpace.inViewport.get(panel.owner) + if (owner !== undefined) { + if (panel.isVisible === true && panel.isHidden === false) { + container = panel.getContainer(point, purpose) + } + } + if (container !== undefined) { + container.space = 'Panels Space' + return container + } + } + // thisObject.container.space = 'Panels Space' + // return thisObject.container + } } diff --git a/CanvasApp/Spaces/SideSpace.js b/CanvasApp/Spaces/SideSpace.js index a950c9b7c..b44409b0a 100644 --- a/CanvasApp/Spaces/SideSpace.js +++ b/CanvasApp/Spaces/SideSpace.js @@ -1,168 +1,168 @@ -function newSideSpace () { - const MODULE_NAME = 'Side Space' - let thisObject = { - sidePanelTab: undefined, - container: undefined, - physics: physics, - draw: draw, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - } - - let isInitialized = false - - thisObject.container = newContainer() - thisObject.container.name = MODULE_NAME - thisObject.container.initialize() - thisObject.container.isClickeable = true - thisObject.container.isDraggeable = false - thisObject.container.detectMouseOver = true - thisObject.container.status = 'hidden' - - let listView - - resize() - - let openingEventSubscriptionId - let closedEventSubscriptionId - let browserResizedEventSubscriptionId - return thisObject - - function initialize () { - thisObject.sidePanelTab = newSidePanelTab() - thisObject.sidePanelTab.container.connectToParent(thisObject.container, false, false) - thisObject.sidePanelTab.initialize() - - browserResizedEventSubscriptionId = canvas.eventHandler.listenToEvent('Browser Resized', resize) - - initializeListView() - isInitialized = true - } - - function finalize () { - canvas.eventHandler.stopListening(browserResizedEventSubscriptionId) - thisObject.sidePanelTab.container.eventHandler.stopListening(openingEventSubscriptionId) - thisObject.sidePanelTab.container.eventHandler.stopListening(closedEventSubscriptionId) - } - - function initializeListView () { - listView = newListView() - listView.initialize() - listView.container.connectToParent(thisObject.container, false, false) - openingEventSubscriptionId = thisObject.sidePanelTab.container.eventHandler.listenToEvent('opening', listView.turnOn) - closedEventSubscriptionId = thisObject.sidePanelTab.container.eventHandler.listenToEvent('closed', listView.turnOff) - } - - function resize () { - thisObject.container.frame.width = SIDE_PANEL_WIDTH - thisObject.container.frame.height = browserCanvas.height // - TOP_SPACE_HEIGHT - thisObject.container.frame.position.x = -SIDE_PANEL_WIDTH - thisObject.container.frame.position.y = 0 // TOP_SPACE_HEIGHT - - if (listView !== undefined) { - listView.resize() +function newSideSpace() { + const MODULE_NAME = 'Side Space' + let thisObject = { + sidePanelTab: undefined, + container: undefined, + physics: physics, + draw: draw, + getContainer: getContainer, + initialize: initialize, + finalize: finalize } - if (thisObject.sidePanelTab !== undefined) { - thisObject.sidePanelTab.resize() - } - } + let isInitialized = false - function getContainer (point, purpose) { - let container + thisObject.container = newContainer() + thisObject.container.name = MODULE_NAME + thisObject.container.initialize() + thisObject.container.isClickeable = true + thisObject.container.isDraggeable = false + thisObject.container.detectMouseOver = true + thisObject.container.status = 'hidden' - container = thisObject.sidePanelTab.getContainer(point, purpose) - if (container !== undefined) { return container } + let listView - container = listView.getContainer(point, purpose) - if (container !== undefined) { return container } + resize() - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - return thisObject.container - } else { - return undefined - } - } + let openingEventSubscriptionId + let closedEventSubscriptionId + let browserResizedEventSubscriptionId + return thisObject - function physics () { - thisObject.sidePanelTab.physics() - listView.physics() - } + function initialize() { + thisObject.sidePanelTab = newSidePanelTab() + thisObject.sidePanelTab.container.connectToParent(thisObject.container, false, false) + thisObject.sidePanelTab.initialize('left') - function draw () { - if (canWeDraw === false) { return } - if (isInitialized === false) { return } - borders() - thisObject.sidePanelTab.draw() - listView.draw() - } + browserResizedEventSubscriptionId = canvas.eventHandler.listenToEvent('Browser Resized', resize) - function borders () { - let point1 - let point2 - let point3 - let point4 - - point1 = { - x: 0, - y: 0 + initializeListView() + isInitialized = true } - point2 = { - x: thisObject.container.frame.width, - y: 0 + function finalize() { + canvas.eventHandler.stopListening(browserResizedEventSubscriptionId) + thisObject.sidePanelTab.container.eventHandler.stopListening(openingEventSubscriptionId) + thisObject.sidePanelTab.container.eventHandler.stopListening(closedEventSubscriptionId) } - point3 = { - x: thisObject.container.frame.width, - y: thisObject.container.frame.height + function initializeListView() { + listView = newListView() + listView.initialize() + listView.container.connectToParent(thisObject.container, false, false) + openingEventSubscriptionId = thisObject.sidePanelTab.container.eventHandler.listenToEvent('opening', listView.turnOn) + closedEventSubscriptionId = thisObject.sidePanelTab.container.eventHandler.listenToEvent('closed', listView.turnOff) } - point4 = { - x: 0, - y: thisObject.container.frame.height + function resize() { + thisObject.container.frame.width = SIDE_PANEL_WIDTH + thisObject.container.frame.height = browserCanvas.height // - TOP_SPACE_HEIGHT + thisObject.container.frame.position.x = -SIDE_PANEL_WIDTH + thisObject.container.frame.position.y = 0 // TOP_SPACE_HEIGHT + + if (listView !== undefined) { + listView.resize() + } + + if (thisObject.sidePanelTab !== undefined) { + thisObject.sidePanelTab.resize() + } } - point1 = thisObject.container.frame.frameThisPoint(point1) - point2 = thisObject.container.frame.frameThisPoint(point2) - point3 = thisObject.container.frame.frameThisPoint(point3) - point4 = thisObject.container.frame.frameThisPoint(point4) + function getContainer(point, purpose) { + let container - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.beginPath() - browserCanvasContext.moveTo(point1.x, point1.y) - browserCanvasContext.lineTo(point2.x, point2.y) - browserCanvasContext.lineTo(point3.x, point3.y) - browserCanvasContext.lineTo(point4.x, point4.y) - browserCanvasContext.lineTo(point1.x, point1.y) - browserCanvasContext.closePath() + container = thisObject.sidePanelTab.getContainer(point, purpose) + if (container !== undefined) { return container } - let opacity = 1 + container = listView.getContainer(point, purpose) + if (container !== undefined) { return container } - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.LIGHT_GREY + ', ' + opacity + '' - browserCanvasContext.fill() + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + return thisObject.container + } else { + return undefined + } + } - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GREY + ', ' + opacity + '' - browserCanvasContext.lineWidth = 0.3 - browserCanvasContext.stroke() + function physics() { + thisObject.sidePanelTab.physics() + listView.physics() + } - /* Shadow */ + function draw() { + if (canWeDraw === false) { return } + if (isInitialized === false) { return } + borders() + thisObject.sidePanelTab.draw() + listView.draw() + } - if (thisObject.container.status !== 'hidden') { - for (let i = 0; i <= 30; i++) { - opacity = 1 - (i / 300) - 0.95 + function borders() { + let point1 + let point2 + let point3 + let point4 + + point1 = { + x: 0, + y: 0 + } + + point2 = { + x: thisObject.container.frame.width, + y: 0 + } + + point3 = { + x: thisObject.container.frame.width, + y: thisObject.container.frame.height + } + + point4 = { + x: 0, + y: thisObject.container.frame.height + } + + point1 = thisObject.container.frame.frameThisPoint(point1) + point2 = thisObject.container.frame.frameThisPoint(point2) + point3 = thisObject.container.frame.frameThisPoint(point3) + point4 = thisObject.container.frame.frameThisPoint(point4) browserCanvasContext.setLineDash([0, 0]) browserCanvasContext.beginPath() - browserCanvasContext.moveTo(point2.x + i, point2.y) - browserCanvasContext.lineTo(point3.x + i, point3.y) + browserCanvasContext.moveTo(point1.x, point1.y) + browserCanvasContext.lineTo(point2.x, point2.y) + browserCanvasContext.lineTo(point3.x, point3.y) + browserCanvasContext.lineTo(point4.x, point4.y) + browserCanvasContext.lineTo(point1.x, point1.y) browserCanvasContext.closePath() - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.BLACK + ', ' + opacity + '' - browserCanvasContext.lineWidth = 1 + let opacity = 1 + + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.LIGHT_GREY + ', ' + opacity + '' + browserCanvasContext.fill() + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GREY + ', ' + opacity + '' + browserCanvasContext.lineWidth = 0.3 browserCanvasContext.stroke() - } + + /* Shadow */ + + if (thisObject.container.status !== 'hidden') { + for (let i = 0; i <= 30; i++) { + opacity = 1 - (i / 300) - 0.95 + + browserCanvasContext.setLineDash([0, 0]) + browserCanvasContext.beginPath() + browserCanvasContext.moveTo(point2.x + i, point2.y) + browserCanvasContext.lineTo(point3.x + i, point3.y) + browserCanvasContext.closePath() + + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.BLACK + ', ' + opacity + '' + browserCanvasContext.lineWidth = 1 + browserCanvasContext.stroke() + } + } } - } } diff --git a/CanvasApp/Spaces/TopSpace.js b/CanvasApp/Spaces/TopSpace.js index c88dd2960..169b9c498 100644 --- a/CanvasApp/Spaces/TopSpace.js +++ b/CanvasApp/Spaces/TopSpace.js @@ -1,109 +1,109 @@ -function newTopSpace () { - let thisObject = { - container: undefined, - draw: draw, - getContainer: getContainer, - initialize: initialize - } - - thisObject.container = newContainer() - thisObject.container.initialize() - - resize() - - thisObject.container.isDraggeable = false - let backgroundImage - let logoImage - return thisObject - - function initialize () { - canvas.eventHandler.listenToEvent('Browser Resized', resize) - - backgroundImage = new Image() - logoImage = new Image() - - loadImage('superalgos-header-background', backgroundImage) - loadImage('superalgos-logo-for-color-background', logoImage) - - function loadImage (name, image) { - const PATH = 'Images/' - - image.onload = onImageLoad - image.fileName = name - - function onImageLoad () { - image.canDraw = true - } - image.src = window.canvasApp.urlPrefix + PATH + name + '.png' +function newTopSpace() { + let thisObject = { + container: undefined, + draw: draw, + getContainer: getContainer, + initialize: initialize } - } - function resize () { - thisObject.container.frame.width = browserCanvas.width - thisObject.container.frame.height = TOP_SPACE_HEIGHT + thisObject.container = newContainer() + thisObject.container.initialize() - thisObject.container.frame.position.x = 0 - try { - thisObject.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.bottomLeft.y - } catch (e) { } - } + resize() - function getContainer (point) { + thisObject.container.isDraggeable = false + let backgroundImage + let logoImage + return thisObject - } + function initialize() { + canvas.eventHandler.listenToEvent('Browser Resized', resize) - function draw () { - if (canWeDraw === false) { return } - thisObject.container.frame.draw(false, false) + backgroundImage = new Image() + logoImage = new Image() - drawBackground() - return - } + loadImage('superalgos-header-background', backgroundImage) + loadImage('superalgos-logo-for-color-background', logoImage) - function drawBackground () { - /* Solid Color */ - let opacity = 1 - browserCanvasContext.beginPath() - browserCanvasContext.rect(0, 0, thisObject.container.frame.width, thisObject.container.frame.height) - if (ARE_WE_RECORDING_A_VIDEO === true) { - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.PATINATED_TURQUOISE + ', ' + opacity + ')' - } else { - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + opacity + ')' + function loadImage(name, image) { + const PATH = 'Images/' + + image.onload = onImageLoad + image.fileName = name + + function onImageLoad() { + image.canDraw = true + } + image.src = PATH + name + '.png' + } } - browserCanvasContext.closePath() - browserCanvasContext.fill() - /* Background Image */ - if (backgroundImage !== undefined) { - if (backgroundImage.canDraw === true) { - let imagePosition = { - x: 0, - y: 0 + function resize() { + thisObject.container.frame.width = browserCanvas.width + thisObject.container.frame.height = TOP_SPACE_HEIGHT + + thisObject.container.frame.position.x = 0 + try { + thisObject.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.bottomLeft.y + } catch (e) { } + } + + function getContainer(point) { + + } + + function draw() { + if (canWeDraw === false) { return } + thisObject.container.frame.draw(false, false) + + drawBackground() + return + } + + function drawBackground() { + /* Solid Color */ + let opacity = 1 + browserCanvasContext.beginPath() + browserCanvasContext.rect(0, 0, thisObject.container.frame.width, thisObject.container.frame.height) + if (ARE_WE_RECORDING_A_VIDEO === true) { + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.PATINATED_TURQUOISE + ', ' + opacity + ')' + } else { + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + opacity + ')' + } + browserCanvasContext.closePath() + browserCanvasContext.fill() + + /* Background Image */ + if (backgroundImage !== undefined) { + if (backgroundImage.canDraw === true) { + let imagePosition = { + x: 0, + y: 0 + } + + browserCanvasContext.drawImage( + backgroundImage, imagePosition.x, + imagePosition.y, + browserCanvas.width, + TOP_SPACE_HEIGHT - 2) + } } - browserCanvasContext.drawImage( - backgroundImage, imagePosition.x, - imagePosition.y, - browserCanvas.width, - TOP_SPACE_HEIGHT - 2) - } - } + /* Logo Image */ + if (logoImage !== undefined) { + if (logoImage.canDraw === true) { + let imagePosition = { + x: 10, + y: 0 + } - /* Logo Image */ - if (logoImage !== undefined) { - if (logoImage.canDraw === true) { - let imagePosition = { - x: 10, - y: 0 + browserCanvasContext.drawImage( + logoImage, imagePosition.x, + imagePosition.y, + 215, + TOP_SPACE_HEIGHT - 2) + } } - - browserCanvasContext.drawImage( - logoImage, imagePosition.x, - imagePosition.y, - 150, - TOP_SPACE_HEIGHT - 2) - } } - } } diff --git a/CanvasApp/Spaces/TutorialSpace.js b/CanvasApp/Spaces/TutorialSpace.js new file mode 100644 index 000000000..8e8cbba3e --- /dev/null +++ b/CanvasApp/Spaces/TutorialSpace.js @@ -0,0 +1,1190 @@ +function newTutorialSpace() { + const MODULE_NAME = 'Tutorial Space' + let thisObject = { + stop: stop, + skip: skip, + previous: previous, + next: next, + playTutorial: playTutorial, + resumeTutorial: resumeTutorial, + playTutorialTopic: playTutorialTopic, + resumeTutorialTopic: resumeTutorialTopic, + playTutorialStep: playTutorialStep, + resumeTutorialStep: resumeTutorialStep, + resetTutorialProgress: resetTutorialProgress, + container: undefined, + physics: physics, + draw: draw, + getContainer: getContainer, + initialize: initialize, + finalize: finalize + } + + let isInitialized = false + + thisObject.container = newContainer() + thisObject.container.name = MODULE_NAME + thisObject.container.initialize() + thisObject.container.isClickeable = true + thisObject.container.isDraggeable = false + thisObject.container.detectMouseOver = true + thisObject.container.status = 'hidden' + + resize() + + let browserResizedEventSubscriptionId + + let tutorialRootNode + let currentNode + let currentStatus = 'Stopped' + let navigationStack + + let tutorialDiv = document.getElementById('tutorialDiv') + let tutorialFormDiv = document.getElementById('tutorialFormDiv') + let htmlGif = document.createElement("IMG") + let currentGifName = 'Never Set' + let newGifName = 'Never Set' + let htmlImage = document.createElement("IMG") + let currentImageName = 'Never Set' + let newImageName = 'Never Set' + let currentConfig + let newConfig + let currentDocumentationURL + let resumeModeActivated // In this mode, we skip all the node which status is 'Done' + let lastExecutedAction = '' + let actionCounter = 0 + let forcingFocus = false + let currentZoomStep = 0 + let viewportCentered = false + let repositionAtTimeMachineCounter = 0 + let positionAtNodeCounter = 0 + let timeMachineKeyPressedCounter = 0 + let keyPressedCounter = 0 + let sliderPositioned = 0 + let changeNodeConfigCounter = 0 + let changeNodeConfigCounterWithEval = 0 + let documentationCounter = 0 + let batchConfigChangesCounter = 0 + + return thisObject + + function initialize() { + browserResizedEventSubscriptionId = canvas.eventHandler.listenToEvent('Browser Resized', resize) + isInitialized = true + } + + function finalize() { + canvas.eventHandler.stopListening(browserResizedEventSubscriptionId) + + tutorialRootNode = undefined + currentNode = undefined + navigationStack = undefined + + tutorialDiv = undefined + tutorialFormDiv = undefined + image = undefined + gif = undefined + } + + function resize() { + thisObject.container.frame.width = 0 + thisObject.container.frame.height = 0 + } + + function getContainer(point, purpose) { + let container + + if (thisObject.container.frame.isThisPointHere(point, true) === true) { + return thisObject.container + } else { + return undefined + } + } + + function physics() { + if (currentNode === undefined) { return } + + switch (currentStatus) { + case 'Stopped': { + makeInvisible() + currentNode = undefined + break + } + case 'Playing Tutorial': { + makeVsible() + break + } + case 'Playing Topic': { + makeVsible() + break + } + case 'Playing Step': { + makeVsible() + break + } + } + + keyPressed() + checkPressButton() + checkGif() + checkImage() + checkDocumentation() + checkWorkspaces() + checkSlider() + checkReference() + checkViewportZoom() + checkViewportZoomAtCenter() + return + + function keyPressed() { + if (currentNode === undefined) { return } + let config = JSON.parse(currentNode.config) + if ( + config.keyPressed !== undefined + ) { + keyPressedCounter++ + if (keyPressedCounter === 10) { + let event = { + metaKey: config.keyPressed.metaKey, + shiftKey: config.keyPressed.shiftKey, + ctrlKey: config.keyPressed.ctrlKey, + code: config.keyPressed.code, + key: config.keyPressed.key + } + canvas.onKeyDown(event, true) + } + } + } + + function checkViewportZoom() { + if (currentNode === undefined) { return } + let config = JSON.parse(currentNode.config) + if (config.viewportZoom !== undefined) { + let totalZoomSteps = config.viewportZoom + let delta + if (totalZoomSteps > 0) { + delta = 1 + } else { + delta = -1 + } + currentZoomStep = currentZoomStep + delta + let event = { + delta: delta + } + if (totalZoomSteps > 0) { + if (currentZoomStep < totalZoomSteps) { + canvas.chartingSpace.viewport.onMouseWheel(event) + } + } else { + if (currentZoomStep > totalZoomSteps) { + canvas.chartingSpace.viewport.onMouseWheel(event) + } + } + } + } + + function checkViewportZoomAtCenter() { + if (currentNode === undefined) { return } + let config = JSON.parse(currentNode.config) + if (config.viewportZoomAtCenter !== undefined) { + canvas.chartingSpace.viewport.zoomAtCenter(config.viewportZoomAtCenter) + } + } + + function checkViewportZoomAtCenter() { + if (currentNode === undefined) { return } + let config = JSON.parse(currentNode.config) + if (config.viewportZoomAtCenter !== undefined) { + canvas.chartingSpace.viewport.zoomAtCenter(config.viewportZoomAtCenter) + } + } + + function checkPressButton() { + if (currentNode === undefined) { return } + let config = JSON.parse(currentNode.config) + if (config.pressButton === undefined || config.pressButton === "") { + return + } + /* Remove this item from the navigation stack. */ + navigationStack.splice(navigationStack.length - 1) + switch (config.pressButton) { + case "Stop": { + stop() + return + } + case "Skip": { + skip() + return + } + case "Previous": { + previous() + return + } + case "Next": { + next() + return + } + } + } + + function checkGif() { + let tutorialGifDiv = document.getElementById('tutorialGifDiv') + if (tutorialGifDiv !== null && tutorialGifDiv !== undefined) { + tutorialGifDiv.appendChild(htmlGif) + } + + if (currentGifName === newGifName) { return } + currentGifName = newGifName + htmlGif.src = 'Images/Tutorial/Gifs/' + currentGifName + '.gif' + htmlGif.width = "400" + htmlGif.height = "580" + } + + function checkImage() { + let tutorialImageDiv = document.getElementById('tutorialImageDiv') + if (tutorialImageDiv !== null && tutorialImageDiv !== undefined) { + tutorialImageDiv.appendChild(htmlImage) + } + + if (currentImageName === newImageName) { return } + currentImageName = newImageName + htmlImage.src = 'Images/Icons/style-01/' + currentImageName + '.png' + htmlImage.width = "100" + htmlImage.height = "100" + } + + function checkDocumentation() { + if (currentNode === undefined) { return } + let config = JSON.parse(currentNode.config) + let newDocumentationURL = config.documentationURL + documentationCounter++ + if (documentationCounter === 10) { + if (newDocumentationURL === undefined) { + /* + The doc panel will remain as it is, and the user will be free to open or close it at will. + */ + return + } + if (newDocumentationURL === "") { + /* + This forces the tutorial to close the documentation panel and to keep it closed. + */ + canvas.docSpace.sidePanelTab.close() + return + } + canvas.docSpace.sidePanelTab.open() + if (newDocumentationURL === currentDocumentationURL) { return } + + currentDocumentationURL = newDocumentationURL + canvas.docSpace.navigateTo(currentDocumentationURL) + } + } + + function checkWorkspaces() { + if (currentNode === undefined) { return } + let config = JSON.parse(currentNode.config) + if (config.workspaces === undefined) { + /* + The worspaces panel will remain as it is, and the user will be free to open or close it at will. + */ + return + } + if (config.workspaces === "" || config.workspaces === "Close") { + /* + This forces the tutorial to close the workspaces panel and to keep it closed. + */ + canvas.sideSpace.sidePanelTab.close() + return + } + if (config.workspaces === "Open") { + /* + This forces the tutorial to close the workspaces panel and to keep it closed. + */ + canvas.sideSpace.sidePanelTab.open() + return + } + } + + function checkSlider() { + if (currentNode === undefined) { return } + let config = JSON.parse(currentNode.config) + if (config.slider === undefined) { + /* + The cockpit space will remain where it is. The user is free to move it. + */ + return + } + if (sliderPositioned === false) { + sliderPositioned = true + switch (config.slider) { + case "toTop": { + /* + This forces the tutorial to close the charting space and to keep it closed. + */ + canvas.cockpitSpace.toTop() + return + } + case "toMiddle": { + /* + This forces the tutorial to share the screen half with the designer and half + with the charting space and force it in that way. + */ + canvas.cockpitSpace.toMiddle() + return + } + case "toBottom": { + /* + This forces the tutorial to fully open the charting space and to keep it open. + */ + canvas.cockpitSpace.toBottom() + return + } + } + } + } + + function checkReference() { + /* + If there is a reference parent defined, we will highlight it + and move the designer so that that node be at the center of the screen. + */ + if (currentNode !== undefined) { + if (currentNode.payload !== undefined) { + if (currentNode.payload.referenceParent !== undefined) { + if (currentNode.payload.referenceParent.payload !== undefined) { + if (currentNode.payload.referenceParent.payload.uiObject !== undefined) { + let config = JSON.parse(currentNode.config) + if ( + config.positionAtReferenceParent === true + ) { + /* + This moves the Designs Space so that the referenced node is at the center of the screen. + */ + positionAtNodeCounter++ + if (positionAtNodeCounter === 1) { + currentNode.payload.referenceParent.payload.floatingObject.unCollapseParent() + } + if (positionAtNodeCounter < 100) { + canvas.floatingSpace.positionAtNode(currentNode.payload.referenceParent) + } + } + if ( + config.highlightReferenceParent === true + ) { + currentNode.payload.referenceParent.payload.uiObject.highlight() + } + if ( + config.highlightReferenceParent === true + ) { + currentNode.payload.referenceParent.payload.uiObject.highlight() + } + if ( + config.setErrorMessageReferenceParent !== undefined + ) { + currentNode.payload.referenceParent.payload.uiObject.setErrorMessage(config.setErrorMessageReferenceParent) + } + if ( + config.setWarningMessageReferenceParent !== undefined + ) { + currentNode.payload.referenceParent.payload.uiObject.setWarningMessage(config.setWarningMessageReferenceParent) + } + if ( + config.setInfoMessageReferenceParent !== undefined + ) { + currentNode.payload.referenceParent.payload.uiObject.setInfoMessage(config.setInfoMessageReferenceParent) + } + if ( + config.setValueReferenceParent !== undefined + ) { + currentNode.payload.referenceParent.payload.uiObject.setValue(config.setValueReferenceParent) + } + if ( + config.setPercentageReferenceParent !== undefined + ) { + currentNode.payload.referenceParent.payload.uiObject.setPercentage(config.setPercentageReferenceParent) + } + if ( + config.setStatusReferenceParent !== undefined + ) { + currentNode.payload.referenceParent.payload.uiObject.setStatus(config.setStatusReferenceParent) + } + if ( + config.setFocusReferenceParent === true + ) { + currentNode.payload.referenceParent.payload.floatingObject.forceFocus() + forcingFocus = true + } + if ( + config.batchConfigChangesReferenceParent !== undefined + ) { + batchConfigChangesCounter++ + if (batchConfigChangesCounter === 5 || batchConfigChangesCounter === 10) { + /* + Here we are going to process an array of different changes to descendents + of the reference parent. The end user needs to specify a nodePath to the + descendent and an object with the properties and new values that want to + change at each descendent. The nodePath route starts at the object + referenceParent. + */ + let referenceParent = currentNode.payload.referenceParent + for (let i = 0; i < config.batchConfigChangesReferenceParent.length; i++) { + let arrayItem = config.batchConfigChangesReferenceParent[i] + let nodePath = arrayItem.nodePath + let properties = arrayItem.properties + + let childNode + try { + childNode = eval(nodePath) + } catch (err) { + console.log(MODULE_NAME + ' -> The nodePath provided is not good. -> nodePath = ' + nodePath) + let splittedPath = nodePath.split('.') + let partialPath = '' + let separator = '' + for (let j = 0; j < splittedPath.length; j++) { + let part = splittedPath[j] + let partialNode + let splittedParts = part.split('[') + if (splittedParts.length > 1) { + partialNode = eval(partialPath + separator + splittedParts[0]) + if (partialNode === undefined) { + console.log(MODULE_NAME + ' -> This part can not be undefined -> part = ' + splittedParts[0]) + currentNode.payload.uiObject.setErrorMessage('Node Path is incorrect. See console log for details.') + break + } + } + partialPath = partialPath + separator + part + separator = '.' + + partialNode = eval(partialPath) + if (partialNode === undefined) { + console.log(MODULE_NAME + ' -> This part can not be undefined -> part = ' + part) + currentNode.payload.uiObject.setErrorMessage('Node Path is incorrect. See console log for details.') + break + } + } + continue + } + let nodeConfig = JSON.parse(childNode.config) + for (const property in properties) { + nodeConfig[property] = properties[property] + } + childNode.config = JSON.stringify(nodeConfig, undefined, 5) + } + } + } + if ( + config.changeNodeConfigReferenceParent !== undefined + ) { + changeNodeConfigCounter++ + if (changeNodeConfigCounter === 5) { + let nodeConfig = JSON.parse(currentNode.payload.referenceParent.config) + for (const property in config.changeNodeConfigReferenceParent) { + nodeConfig[property] = config.changeNodeConfigReferenceParent[property] + } + currentNode.payload.referenceParent.config = JSON.stringify(nodeConfig) + } + } + if ( + config.changeNodeConfigWithEvalReferenceParent !== undefined + ) { + changeNodeConfigCounterWithEval++ + if (changeNodeConfigCounterWithEval === 5 || changeNodeConfigCounterWithEval === 10) { + let nodeConfig = JSON.parse(currentNode.payload.referenceParent.config) + for (const property in config.changeNodeConfigWithEvalReferenceParent) { + nodeConfig[property] = eval(config.changeNodeConfigWithEvalReferenceParent[property]) + } + currentNode.payload.referenceParent.config = JSON.stringify(nodeConfig) + } + } + if ( + config.menuActionReferenceParent !== undefined + ) { + /* + Some actions needs a little delay because they depend on animations to happen. + For that reason, we will count until 10 before executing actions from tutorial. + */ + actionCounter++ + if (actionCounter > 10) { + if (config.menuActionReferenceParent + currentNode.id !== lastExecutedAction) { + currentNode.payload.referenceParent.payload.uiObject.menu.internalClick(config.menuActionReferenceParent) + lastExecutedAction = config.menuActionReferenceParent + currentNode.id + } + } + } else { + lastExecutedAction = "" + } + if ( + config.keyPressedTimeMachineReferenceParent !== undefined + ) { + if (currentNode.payload.referenceParent.type === 'Time Machine') { + let timeMachine = canvas.chartingSpace.findTimeMachine(currentNode.payload.referenceParent) + if (timeMachine !== undefined) { + timeMachineKeyPressedCounter++ + if (timeMachineKeyPressedCounter === 10) { + let event = { + metaKey: config.keyPressedTimeMachineReferenceParent.metaKey, + shiftKey: config.keyPressedTimeMachineReferenceParent.shiftKey, + ctrlKey: config.keyPressedTimeMachineReferenceParent.ctrlKey, + code: config.keyPressedTimeMachineReferenceParent.code, + key: config.keyPressedTimeMachineReferenceParent.key + } + timeMachine.edgeEditor.onKeyPressed(event, true) + } + } + } + } + if ( + config.viewportCenterReferenceParent === true + ) { + if (currentNode.payload.referenceParent.type === 'Time Machine') { + let timeMachine = canvas.chartingSpace.findTimeMachine(currentNode.payload.referenceParent) + if (timeMachine !== undefined && viewportCentered === false) { + canvas.chartingSpace.viewport.displaceToContainer(timeMachine.container) + viewportCentered = true + } + } + } + if ( + config.repositionAtTimeMachineReferenceParent === true + ) { + if (currentNode.payload.referenceParent.type === 'Time Machine') { + let timeMachine = canvas.chartingSpace.findTimeMachine(currentNode.payload.referenceParent) + if (timeMachine !== undefined) { + repositionAtTimeMachineCounter++ + switch (true) { + case (repositionAtTimeMachineCounter > 10 && repositionAtTimeMachineCounter < 20): { + let event = { + delta: -1 + } + canvas.chartingSpace.viewport.onMouseWheel(event) + break + } + case (repositionAtTimeMachineCounter === 30): { + canvas.chartingSpace.viewport.displaceToContainer(timeMachine.container) + break + } + case (repositionAtTimeMachineCounter === 40): { + canvas.chartingSpace.viewport.zoomAtCenter(8) + break + } + } + } + } + } + if ( + config.repositionAtTimeMachineNoZoomReferenceParent === true + ) { + if (currentNode.payload.referenceParent.type === 'Time Machine') { + let timeMachine = canvas.chartingSpace.findTimeMachine(currentNode.payload.referenceParent) + if (timeMachine !== undefined) { + repositionAtTimeMachineCounter++ + switch (true) { + case (repositionAtTimeMachineCounter > 10 && repositionAtTimeMachineCounter < 20): { + let event = { + delta: -1 + } + canvas.chartingSpace.viewport.onMouseWheel(event) + break + } + case (repositionAtTimeMachineCounter === 30): { + canvas.chartingSpace.viewport.displaceToContainer(timeMachine.container) + break + } + } + } + } + } + } + } + } + } + } + } + + function makeInvisible() { + const HEIGHT = 0 + const WIDTH = 0 + const FORM_HEIGHT = 0 + + tutorialPosition = { + x: 100000, + y: 100000 + } + + tutorialDiv.style = ' ' + + 'position:fixed; top:' + tutorialPosition.y + 'px; ' + + 'left:' + tutorialPosition.x + 'px; ' + + 'width: ' + WIDTH + 'px;' + + 'height: ' + HEIGHT + 'px;' + + 'z-index:1;' + + tutorialFormDiv.style = ' ' + + 'position:fixed; top:' + (tutorialPosition.y) + 'px; ' + + 'left:' + tutorialPosition.x + 'px; ' + + 'width: ' + WIDTH + 'px;' + + 'height: ' + FORM_HEIGHT + 'px;' + + 'z-index:1;' + } + + function makeVsible() { + const HEIGHT = 650 + const WIDTH = 400 + const MARGIN = 100 + const FORM_HEIGHT = 40 + + let nodeConfig + try { + nodeConfig = JSON.parse(currentNode.config) + } catch (err) { + return + } + + switch (nodeConfig.position) { + case 'Left': { + tutorialPosition = { + x: MARGIN, + y: (browserCanvas.height - HEIGHT) / 2 + } + break + } + case 'Center': { + tutorialPosition = { + x: browserCanvas.width / 2 - WIDTH / 2, + y: (browserCanvas.height - HEIGHT) / 2 + } + break + } + case 'Right': { + tutorialPosition = { + x: browserCanvas.width - WIDTH - MARGIN, + y: (browserCanvas.height - HEIGHT) / 2 + } + break + } + default: { + tutorialPosition = { + x: browserCanvas.width / 2 - WIDTH / 2, + y: (browserCanvas.height - HEIGHT) / 2 + } + break + } + } + tutorialDiv.style = ' ' + + 'position:fixed; top:' + tutorialPosition.y + 'px; ' + + 'left:' + tutorialPosition.x + 'px; ' + + 'width: ' + WIDTH + 'px;' + + 'height: ' + HEIGHT + 'px;' + + 'z-index:1;' + + buildHTML() + + tutorialFormDiv.style = ' ' + + 'position:fixed; top:' + (tutorialPosition.y + HEIGHT - 30) + 'px; ' + + 'left:' + tutorialPosition.x + 'px; ' + + 'width: ' + (WIDTH + 20) + 'px;' + + 'height: ' + FORM_HEIGHT + 'px;' + + 'z-index:1;' + } + } + + function stop() { + resetAfterButtonPressed() + checkForceFocus() + tutorialRootNode.payload.uiObject.isPlaying = false + tutorialRootNode = undefined + currentStatus = 'Stopped' + } + + function skip() { + resetAfterButtonPressed() + checkForceFocus() + let tutorial = { + status: 'Skipped' + } + saveTutorial(currentNode.payload, tutorial) + advance(true) + } + + function previous() { + resetAfterButtonPressed() + checkForceFocus() + if (navigationStack.length > 1) { + let previousNode = navigationStack[navigationStack.length - 2] + switch (previousNode.type) { + case 'Tutorial': { + currentNode = previousNode + findTutorialNode(currentNode) + currentStatus = 'Playing Tutorial' + navigationStack.splice(navigationStack.length - 1) + break + } + case 'Tutorial Topic': { + currentNode = previousNode + findTutorialNode(currentNode) + currentStatus = 'Playing Topic' + navigationStack.splice(navigationStack.length - 1) + break + } + case 'Tutorial Step': { + currentNode = previousNode + findTutorialNode(currentNode) + currentStatus = 'Playing Step' + navigationStack.splice(navigationStack.length - 1) + break + } + } + } + } + + function next() { + resetAfterButtonPressed() + checkForceFocus() + if (ckeckGoingToAnotherTutorial() === true) { return } + let tutorial = { + status: 'Done' + } + saveTutorial(currentNode.payload, tutorial) + advance() + } + + function resetAfterButtonPressed() { + resetViewport() + resetActions() + resetDocumentation() + resetRepositionAtTimeMachine() + resetPositionAtNode() + resetTimeMachineKeyPressed() + resetKeyPressed() + resetSlider() + changeNodeConfig() + batchConfigChanges() + + function resetActions() { + lastExecutedAction = "" + actionCounter = 0 + } + + function resetViewport() { + currentZoomStep = 0 + viewportCentered = false + } + + function resetDocumentation() { + currentDocumentationURL = '' + documentationCounter = 0 + } + + function resetRepositionAtTimeMachine() { + repositionAtTimeMachineCounter = 0 + } + + function resetPositionAtNode() { + positionAtNodeCounter = 0 + } + + function resetTimeMachineKeyPressed() { + timeMachineKeyPressedCounter = 0 + } + + function resetKeyPressed() { + keyPressedCounter = 0 + } + + function resetSlider() { + sliderPositioned = false + } + + function changeNodeConfig() { + changeNodeConfigCounter = 0 + changeNodeConfigCounterWithEval = 0 + } + + function batchConfigChanges() { + batchConfigChangesCounter = 0 + } + } + + function checkForceFocus() { + if (forcingFocus === true) { + currentNode.payload.referenceParent.payload.floatingObject.removeForceFocus() + forcingFocus = false + } + } + + function ckeckGoingToAnotherTutorial() { + if (currentNode.payload !== undefined) { + if (currentNode.payload.referenceParent !== undefined) { + let config = JSON.parse(currentNode.config) + if (config.startTutorialReferenceParent === true) { + if (currentNode.payload.referenceParent.type === 'Tutorial') { + tutorialRootNode = currentNode.payload.referenceParent + currentNode = currentNode.payload.referenceParent + currentStatus = 'Playing Tutorial' + resumeModeActivated = false + navigationStack.push(currentNode) + findTutorialNode(currentNode) + return true + } + } + } + } + } + + function playTutorial(node) { + navigationStack = [] + node.payload.uiObject.isPlaying = true + tutorialRootNode = node + currentNode = node + currentStatus = 'Playing Tutorial' + resumeModeActivated = false + navigationStack.push(currentNode) + } + + function resumeTutorial(node) { + navigationStack = [] + node.payload.uiObject.isPlaying = true + tutorialRootNode = node + currentNode = node + currentStatus = 'Playing Tutorial' + resumeModeActivated = true + navigationStack.push(currentNode) + advance() + } + + function playTutorialTopic(node) { + navigationStack = [] + currentTopicNode = node + currentNode = node + currentStatus = 'Playing Topic' + resumeModeActivated = false + navigationStack.push(currentNode) + findTutorialNode(node) + } + + function resumeTutorialTopic(node) { + navigationStack = [] + currentTopicNode = node + currentNode = node + currentStatus = 'Playing Topic' + resumeModeActivated = true + navigationStack.push(currentNode) + findTutorialNode(node) + } + + function playTutorialStep(node) { + navigationStack = [] + currentStepNode = node + currentNode = node + currentStatus = 'Playing Step' + resumeModeActivated = false + navigationStack.push(currentNode) + findTutorialNode(node) + } + + function resumeTutorialStep(node) { + navigationStack = [] + currentStepNode = node + currentNode = node + currentStatus = 'Playing Step' + resumeModeActivated = true + navigationStack.push(currentNode) + findTutorialNode(node) + } + + function resetTutorialProgress(node) { + resetNextNode(node) + + function resetNextNode(node) { + + for (let i = 0; i < node.tutorialSteps.length; i++) { + let tutorialStep = node.tutorialSteps[i] + let tutorial = { + status: 'Reset' + } + saveTutorial(tutorialStep.payload, tutorial) + } + + for (let i = 0; i < node.tutorialTopics.length; i++) { + let tutorialTopic = node.tutorialTopics[i] + let tutorial = { + status: 'Reset' + } + saveTutorial(tutorialTopic.payload, tutorial) + resetNextNode(tutorialTopic) + } + } + } + + function findTutorialNode(node) { + /* + We will consider the tutorialRootNode the head of the hirierchy + */ + tutorialRootNode = node + + if (node.payload !== undefined) { + if (node.payload.parentNode !== undefined) { + findTutorialNode(node.payload.parentNode) + } + } + } + + function advance(isSkipping) { + let found + let advanced + + switch (currentStatus) { + case 'Playing Tutorial': { + found = true + findNextNode(tutorialRootNode) + break + } + case 'Playing Topic': { + found = false + if (isSkipping === true) { + findNextTopic(tutorialRootNode) + } else { + findNextNode(tutorialRootNode) + } + break + } + case 'Playing Step': { + found = false + findNextNode(tutorialRootNode) + break + } + } + + /* + If we can not find a next node, then we stop the tutorial. + */ + if (advanced === undefined) { + stop() + return + } + + + function findNextNode(node) { + for (let i = 0; i < node.tutorialSteps.length; i++) { + + let tutorialStep = node.tutorialSteps[i] + if (found === true) { + if (resumeModeActivated !== true) { + currentNode = tutorialStep + currentStatus = 'Playing Step' + advanced = true + navigationStack.push(currentNode) + findTutorialNode(currentNode) + return + } else { + let tutorial = { + status: undefined + } + loadTutorial(tutorialStep.payload, tutorial) + if (tutorial.status !== 'Done') { + currentNode = tutorialStep + currentStatus = 'Playing Step' + advanced = true + navigationStack.push(currentNode) + findTutorialNode(currentNode) + return + } + } + } + if (tutorialStep.id === currentNode.id) { + found = true + } + } + + for (let i = 0; i < node.tutorialTopics.length; i++) { + + if (advanced === true) { + return + } + + let tutorialTopic = node.tutorialTopics[i] + if (found === true) { + if (resumeModeActivated !== true) { + currentNode = tutorialTopic + currentStatus = 'Playing Topic' + advanced = true + navigationStack.push(currentNode) + findTutorialNode(currentNode) + return + } else { + let tutorial = { + status: undefined + } + loadTutorial(tutorialTopic.payload, tutorial) + if (tutorial.status !== 'Done') { + currentNode = tutorialTopic + currentStatus = 'Playing Topic' + advanced = true + navigationStack.push(currentNode) + findTutorialNode(currentNode) + return + } + } + } + if (tutorialTopic.id === currentNode.id) { + found = true + } + + findNextNode(tutorialTopic, found) + } + } + + function findNextTopic(node) { + for (let i = 0; i < node.tutorialTopics.length; i++) { + + if (advanced === true) { + return + } + + let tutorialTopic = node.tutorialTopics[i] + if (found === true) { + if (resumeModeActivated !== true) { + currentNode = tutorialTopic + currentStatus = 'Playing Topic' + advanced = true + navigationStack.push(currentNode) + findTutorialNode(currentNode) + return + } else { + let tutorial = { + status: undefined + } + loadTutorial(tutorialTopic.payload, tutorial) + if (tutorial.status !== 'Done') { + currentNode = tutorialTopic + currentStatus = 'Playing Topic' + advanced = true + navigationStack.push(currentNode) + findTutorialNode(currentNode) + return + } + } + } + if (tutorialTopic.id === currentNode.id) { + found = true + } else { + findNextTopic(tutorialTopic, found) + } + } + } + } + + function buildHTML() { + + newConfig = currentNode.config + if (newConfig === currentConfig) { return } + currentConfig = newConfig + + let nodeConfig = JSON.parse(currentNode.config) + let html = '' + if (nodeConfig.title !== undefined && nodeConfig.title !== '') { + html = html + '

' + nodeConfig.title + '

' + } + html = html + '
' + if (nodeConfig.summary !== undefined && nodeConfig.summary !== '') { + html = html + '
' + addToolTips(nodeConfig.summary) + '
' + } + if (nodeConfig.subTitle !== undefined && nodeConfig.subTitle !== '') { + html = html + '

' + nodeConfig.subTitle + '

' + } + if (nodeConfig.gif !== undefined && nodeConfig.gif !== '') { + html = html + '
' + newGifName = nodeConfig.gif + } + + if (nodeConfig.definition !== undefined && nodeConfig.definition !== '') { + html = html + '' + html = html + '' + html = html + '' + html = html + '' + html = html + '' + html = html + '
' + if (nodeConfig.image !== undefined && nodeConfig.image !== '') { + html = html + '
' + newImageName = nodeConfig.image + } + html = html + '
' + html = html + '' + addToolTips(nodeConfig.definition) + '' + html = html + '
' + } + if (nodeConfig.bulletListIntro !== undefined && nodeConfig.bulletListIntro !== '') { + html = html + '
' + addToolTips(nodeConfig.bulletListIntro) + '
' + } + if (nodeConfig.bulletArray !== undefined) { + html = html + '' + } + if (nodeConfig.paragraph1 !== undefined && nodeConfig.paragraph1 !== '') { + html = html + '
' + addToolTips(nodeConfig.paragraph1) + '
' + } + if (nodeConfig.callOut !== undefined && nodeConfig.callOut !== '') { + html = html + '
' + addToolTips(nodeConfig.callOut) + '' + if (nodeConfig.externalLink !== undefined) { + html = html + '' + nodeConfig.externalLink[0] + '' + } + html = html + '
' + } + if (nodeConfig.paragraph2 !== undefined && nodeConfig.paragraph2 !== '') { + html = html + '
' + addToolTips(nodeConfig.paragraph2) + '
' + } + if (nodeConfig.note !== undefined && nodeConfig.note !== '') { + html = html + '' + } + if (nodeConfig.tip !== undefined && nodeConfig.tip !== '') { + html = html + '' + } + if (nodeConfig.important !== undefined && nodeConfig.important !== '') { + html = html + '' + } + if (nodeConfig.warning !== undefined && nodeConfig.warning !== '') { + html = html + '' + } + html = html + '
' + + tutorialDiv.innerHTML = html + + function addToolTips(text) { + const TOOL_TIP_HTML = '
NODE_TYPENODE_DEFINITION
' + let resultingText = '' + let splittedText = text.split('->') + + for (let i = 0; i < splittedText.length; i = i + 2) { + let firstPart = splittedText[i] + let nodeType = splittedText[i + 1] + if (nodeType === undefined) { + return resultingText + firstPart + } + let definitionNode = DOC_SCHEMA_MAP.get(nodeType) + if (definitionNode === undefined) { + definitionNode = CONCEPT_SCHEMA_MAP.get(nodeType) + if (definitionNode === undefined) { + currentNode.payload.uiObject.setErrorMessage(nodeType + ' not found at Doc Schema or Concept Schema.') + return + } + } + let definition = definitionNode.definition + if (definition === undefined || definition === "") { + resultingText = resultingText + firstPart + nodeType + } else { + let tooltip = TOOL_TIP_HTML.replace('NODE_TYPE', nodeType).replace('NODE_DEFINITION', definition) + resultingText = resultingText + firstPart + tooltip + } + } + return resultingText + } + } + + function draw() { + if (isInitialized === false) { return } + } +} diff --git a/CanvasApp/SplashScreen.js b/CanvasApp/SplashScreen.js index 34b7c9589..688318ed0 100644 --- a/CanvasApp/SplashScreen.js +++ b/CanvasApp/SplashScreen.js @@ -1,160 +1,160 @@ - /* +/* The Splash Screen is to show some 'loading...' controls while the app is being loaded on the background. After the loading is complete the Splash Screens dissapears for good. */ -function newSplashScreen () { - let thisObject = { - container: undefined, - draw: draw, - timeMachines: [], - getContainer: getContainer, // returns the inner most container that holds the point received by parameter. - initialize: initialize - } - - let container = newContainer() - container.initialize() - thisObject.container = container - - resize() - - container.frame.containerName = 'Splash Screen' - - container.frame.position.x = 0 - container.frame.position.y = 0 - - container.isDraggeable = false - - let fadeOutCounter = 0 - let opacity = 1 - - let logo - let canDrawLogo = false - let isInitialized = false - let splashScreenNeeded = true - - return thisObject - - function initialize () { - logo = new Image() - logo.onload = onImageLoad - - function onImageLoad () { - canDrawLogo = true - } - logo.src = window.canvasApp.urlPrefix + 'Images/superalgos-logo.png' - canvas.eventHandler.listenToEvent('Browser Resized', resize) - - isInitialized = true - } - - function resize () { - thisObject.container.frame.width = browserCanvas.width - thisObject.container.frame.height = browserCanvas.height - } - - function draw () { - if (isInitialized === false) { return } - if (splashScreenNeeded === false) { - stepsInitializationCounter = 100 - canDrawLogo = false - - fadeOutCounter++ - - if (fadeOutCounter > 2) { - return - } - opacity = opacity - 1 +function newSplashScreen() { + let thisObject = { + container: undefined, + draw: draw, + timeMachines: [], + getContainer: getContainer, // returns the inner most container that holds the point received by parameter. + initialize: initialize } - thisObject.container.frame.draw(false, false) + let container = newContainer() + container.initialize() + thisObject.container = container + + resize() + + container.frame.containerName = 'Splash Screen' + + container.frame.position.x = 0 + container.frame.position.y = 0 + + container.isDraggeable = false + + let fadeOutCounter = 0 + let opacity = 1 + + let logo + let canDrawLogo = false + let isInitialized = false + let splashScreenNeeded = true + + return thisObject + + function initialize() { + logo = new Image() + logo.onload = onImageLoad + + function onImageLoad() { + canDrawLogo = true + } + logo.src = 'Images/superalgos-logo.png' + canvas.eventHandler.listenToEvent('Browser Resized', resize) + + isInitialized = true + } + + function resize() { + thisObject.container.frame.width = browserCanvas.width + thisObject.container.frame.height = browserCanvas.height + } + + function draw() { + if (isInitialized === false) { return } + if (splashScreenNeeded === false) { + stepsInitializationCounter = 100 + canDrawLogo = false + + fadeOutCounter++ + + if (fadeOutCounter > 2) { + return + } + opacity = opacity - 1 + } + + thisObject.container.frame.draw(false, false) /* Set the background. */ - browserCanvasContext.beginPath() - browserCanvasContext.rect(0, 0, thisObject.container.frame.width, thisObject.container.frame.height) - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + opacity + ')' - browserCanvasContext.closePath() - browserCanvasContext.fill() + browserCanvasContext.beginPath() + browserCanvasContext.rect(0, 0, thisObject.container.frame.width, thisObject.container.frame.height) + browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + opacity + ')' + browserCanvasContext.closePath() + browserCanvasContext.fill() - if (canDrawLogo === false) { return } + if (canDrawLogo === false) { return } /* First the AA Logo. */ - let imageHeight = 192 / 2 - let imageWidth = 720 / 2 - let yDisplacement = -60 - let xDisplacement = -60 + let imageHeight = 192 / 2 + let imageWidth = 720 / 2 + let yDisplacement = -60 + let xDisplacement = -60 - let imagePoint = { - x: thisObject.container.frame.width * 1 / 2 - imageWidth / 2 + xDisplacement, - y: thisObject.container.frame.height * 1 / 2 - imageHeight / 2 + yDisplacement - } + let imagePoint = { + x: thisObject.container.frame.width * 1 / 2 - imageWidth / 2 + xDisplacement, + y: thisObject.container.frame.height * 1 / 2 - imageHeight / 2 + yDisplacement + } - imagePoint = thisObject.container.frame.frameThisPoint(imagePoint) + imagePoint = thisObject.container.frame.frameThisPoint(imagePoint) - browserCanvasContext.drawImage(logo, imagePoint.x, imagePoint.y, imageWidth, imageHeight) + browserCanvasContext.drawImage(logo, imagePoint.x, imagePoint.y, imageWidth, imageHeight) /* Second the % of Advance. */ - let label = '' + Math.trunc(stepsInitializationCounter) + ' %' - stepsInitializationCounter = stepsInitializationCounter + 5.0 + let label = '' + Math.trunc(stepsInitializationCounter) + ' %' + stepsInitializationCounter = stepsInitializationCounter + 5.0 - if (stepsInitializationCounter > 99) { - splashScreenNeeded = false - canWeDraw = true - stepsInitializationCounter = 99 - } + if (stepsInitializationCounter > 99) { + splashScreenNeeded = false + canWeDraw = true + stepsInitializationCounter = 99 + } - let fontSize = 15 + let fontSize = 15 - let labelPoint = { - x: thisObject.container.frame.width / 2 - label.length / 2 * fontSize * FONT_ASPECT_RATIO - 22, - y: thisObject.container.frame.height / 2 + fontSize / 2 + fontSize * 0.1 + 90 + yDisplacement - } + let labelPoint = { + x: thisObject.container.frame.width / 2 - label.length / 2 * fontSize * FONT_ASPECT_RATIO - 22, + y: thisObject.container.frame.height / 2 + fontSize / 2 + fontSize * 0.1 + 90 + yDisplacement + } - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - browserCanvasContext.fillStyle = 'rgba(0, 0, 0, ' + opacity + ')' - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + browserCanvasContext.fillStyle = 'rgba(0, 0, 0, ' + opacity + ')' + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) - let title - let titlePoint + let title + let titlePoint /* Algo Bots Competitions Sub Title */ - fontSize = 35 + fontSize = 35 - title = 'Beta 5' + title = 'Beta 6' - titlePoint = { - x: thisObject.container.frame.width / 2 - title.length / 2 * fontSize * FONT_ASPECT_RATIO - 20, - y: thisObject.container.frame.height / 2 + 70 + yDisplacement + titlePoint = { + x: thisObject.container.frame.width / 2 - title.length / 2 * fontSize * FONT_ASPECT_RATIO - 20, + y: thisObject.container.frame.height / 2 + 70 + yDisplacement + } + + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + browserCanvasContext.font = 'Saira Condensed' + browserCanvasContext.fillStyle = 'rgba(0, 0, 0, ' + opacity + ')' + browserCanvasContext.fillText(title, titlePoint.x, titlePoint.y) } - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - browserCanvasContext.font = 'Saira Condensed' - browserCanvasContext.fillStyle = 'rgba(0, 0, 0, ' + opacity + ')' - browserCanvasContext.fillText(title, titlePoint.x, titlePoint.y) - } - - function getContainer (point) { - var container + function getContainer(point) { + var container /* First we check if this point is inside this space. */ - if (thisObject.container.frame.isThisPointHere(point) === true) { + if (thisObject.container.frame.isThisPointHere(point) === true) { /* Now we see which is the inner most container that has it */ // add validation of inner most containers here. /* The point does not belong to any inner container, so we return the current container. */ - return thisObject.container - } else { + return thisObject.container + } else { /* This point does not belong to this space. */ - return undefined + return undefined + } } - } } diff --git a/CanvasApp/Utilities.js b/CanvasApp/Utilities.js index 2af862981..5c68b4b3a 100644 --- a/CanvasApp/Utilities.js +++ b/CanvasApp/Utilities.js @@ -1,328 +1,91 @@ -function drawContainerBackground (container, color, opacity, fitFunction) { - let fromPoint = { - x: 0, - y: 0 - } - - let toPoint = { - x: container.frame.width, - y: container.frame.height - } - - fromPoint = transformThisPoint(fromPoint, container) - toPoint = transformThisPoint(toPoint, container) - - fromPoint = fitFunction(fromPoint) - toPoint = fitFunction(toPoint) - - browserCanvasContext.beginPath() - browserCanvasContext.rect(fromPoint.x, fromPoint.y, toPoint.x - fromPoint.x, toPoint.y - fromPoint.y) - browserCanvasContext.fillStyle = 'rgba(' + color + ', ' + opacity + ')' - browserCanvasContext.closePath() - browserCanvasContext.fill() +function getNodeDefinition(node) { + let key = node.type + return APP_SCHEMA_MAP.get(key) } -function dynamicDecimals (value, minDecimals) { - if (minDecimals === undefined) { - minDecimals = 0 - } - let decimals = 2 - if (value < 1) { decimals = 4 } - if (Math.abs(Math.trunc(value * 100)) < 1) { decimals = 6 } - if (Math.abs(Math.trunc(value * 10000)) < 1) { decimals = 8 } - if (Math.abs(Math.trunc(value * 1000000)) < 1) { decimals = 10 } - if (Math.abs(Math.trunc(value * 100000000)) < 1) { decimals = 12 } - if (Math.abs(Math.trunc(value * 10000000000)) < 1) { value = 0; decimals = 0 } - if (Math.trunc(value) === value) { decimals = minDecimals } - let returnValue = Number(value).toFixed(decimals) - return returnValue -} - -function savePropertyAtNodeConfig (payload, propertyName, value) { - try { - let code = JSON.parse(payload.node.code) - code[propertyName] = value - payload.node.code = JSON.stringify(code, null, 4) - } catch (err) { - // we ignore errors here since most likely they will be parsing errors. - } -} - -function loadPropertyFromNodeConfig (payload, propertyName) { - try { - let code = JSON.parse(payload.node.code) - return code[propertyName] - } catch (err) { - // we ignore errors here since most likely they will be parsing errors. - } -} - -function saveFrame (payload, frame) { - payload.frame = { - position: { - x: frame.position.x, - y: frame.position.y - }, - width: frame.width, - height: frame.height, - radius: frame.radius - } -} - -function loadFrame (payload, frame) { - if (payload.node.savedPayload !== undefined) { - if (payload.node.savedPayload.frame !== undefined) { - frame.position.x = payload.node.savedPayload.frame.position.x - frame.position.y = payload.node.savedPayload.frame.position.y - frame.width = payload.node.savedPayload.frame.width - frame.height = payload.node.savedPayload.frame.height - frame.radius = payload.node.savedPayload.frame.radius - payload.node.savedPayload.frame = undefined +function dynamicDecimals(value, minDecimals) { + if (minDecimals === undefined) { + minDecimals = 0 } - } + let decimals = 0 + if (value < 1) { decimals = 2 } + if (Math.abs(Math.trunc(value * 100)) < 1) { decimals = 4 } + if (Math.abs(Math.trunc(value * 10000)) < 1) { decimals = 6 } + if (Math.abs(Math.trunc(value * 1000000)) < 1) { decimals = 8 } + if (Math.abs(Math.trunc(value * 100000000)) < 1) { decimals = 10 } + if (Math.abs(Math.trunc(value * 10000000000)) < 1) { value = 0; decimals = 0 } + if (decimals < minDecimals) {decimals = minDecimals} + + let returnValue = Number(value).toFixed(decimals) + return returnValue } -function convertTimeFrameToName (pTimeFrame) { - for (let i = 0; i < dailyFilePeriods.length; i++) { - let period = dailyFilePeriods[i] - if (period[0] === pTimeFrame) { - return period[1] +function convertTimeFrameToName(pTimeFrame) { + for (let i = 0; i < dailyFilePeriods.length; i++) { + let period = dailyFilePeriods[i] + if (period[0] === pTimeFrame) { + return period[1] + } } - } - for (let i = 0; i < marketFilesPeriods.length; i++) { - let period = marketFilesPeriods[i] - if (period[0] === pTimeFrame) { - return period[1] + for (let i = 0; i < marketFilesPeriods.length; i++) { + let period = marketFilesPeriods[i] + if (period[0] === pTimeFrame) { + return period[1] + } } - } } -function downloadText (filename, text) { - let element = document.createElement('a') - element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)) - element.setAttribute('download', filename) - element.style.display = 'none' - document.body.appendChild(element) - element.click() - document.body.removeChild(element) -} - -function downloadCanvas (filename, canvasToUse) { - let data = canvasToUse.toDataURL('image/png', 1) - /* Change MIME type to trick the browser to downlaod the file instead of displaying it */ - data = data.replace(/^data:image\/[^;]*/, 'data:application/octet-stream') - - /* In addition to 's "download" attribute, you can define HTTP-style headers */ - data = data.replace(/^data:application\/octet-stream/, 'data:application/octet-stream;headers=Content-Disposition%3A%20attachment%3B%20filename=' + filename + '.png') - - let element = document.createElement('a') - element.setAttribute('href', data) - element.setAttribute('download', filename + '.PNG') - element.style.display = 'none' - document.body.appendChild(element) - element.click() - document.body.removeChild(element) -}; - -function downloadPanorama (filename) { - let INITIAL_WIDTH = 800 - let FINAL_WIDTH = browserCanvas.width - INITIAL_WIDTH - - if (ARE_WE_RECORDING_A_MARKET_PANORAMA === false) { - /* We start recording the panorame. */ - ARE_WE_RECORDING_A_MARKET_PANORAMA = true - marketPanoramaCanvas = document.createElement('canvas') - marketPanoramaCanvas.width = INITIAL_WIDTH * 50 - marketPanoramaCanvas.height = browserCanvas.height - marketPanoramaCanvas.getContext('2d').drawImage(browserCanvas, 0, 0, INITIAL_WIDTH, browserCanvas.height, 0, 0, INITIAL_WIDTH, browserCanvas.height) - CURRENT_PANORAMA_POSITION = INITIAL_WIDTH - } else { - /* We stop recording and download the resulting image. */ - ARE_WE_RECORDING_A_MARKET_PANORAMA = false - marketPanoramaCanvas.getContext('2d').drawImage(browserCanvas, browserCanvas.width - FINAL_WIDTH, 0, FINAL_WIDTH, browserCanvas.height, CURRENT_PANORAMA_POSITION, 0, FINAL_WIDTH, browserCanvas.height) - let finalResultCanvas = document.createElement('canvas') - finalResultCanvas.width = CURRENT_PANORAMA_POSITION + FINAL_WIDTH - finalResultCanvas.height = browserCanvas.height - finalResultCanvas.getContext('2d').drawImage(marketPanoramaCanvas, 0, 0, finalResultCanvas.width, browserCanvas.height, 0, 0, finalResultCanvas.width, browserCanvas.height) - downloadCanvas(filename, finalResultCanvas) - marketPanoramaCanvas = undefined - } -} - -function addToMarketPanorama () { - let SECTION_WIDTH = 80 * 2 - let INITIAL_POSITION = 800 - SECTION_WIDTH - marketPanoramaCanvas.getContext('2d').drawImage(browserCanvas, INITIAL_POSITION, 0, SECTION_WIDTH, browserCanvas.height, CURRENT_PANORAMA_POSITION, 0, SECTION_WIDTH, browserCanvas.height) - CURRENT_PANORAMA_POSITION = CURRENT_PANORAMA_POSITION + SECTION_WIDTH -} - -function transformThisPoint (point, container) { - /* We make the point relative to the current frame */ - - point = container.frame.frameThisPoint(point) - - /* We pass this point through the canvas.chartingSpace.viewport lends, meaning we apply the canvas.chartingSpace.viewport zoom and displacement. */ - - point = canvas.chartingSpace.viewport.transformThisPoint(point) - - return point -} - -function unTransformThisPoint (point, container) { - point = canvas.chartingSpace.viewport.unTransformThisPoint(point) - point = container.frame.unframeThisPoint(point) - - return point -} - -function nextPorwerOf10 (number) { - for (let i = -10; i <= 10; i++) { - if (number < Math.pow(10, i)) { - return Math.pow(10, i) +function nextPorwerOf10(number) { + for (let i = -10; i <= 10; i++) { + if (number < Math.pow(10, i)) { + return Math.pow(10, i) + } } - } } -function pad (str, max) { - str = str.toString() - return str.length < max ? pad('0' + str, max) : str +function pad(str, max) { + str = str.toString() + return str.length < max ? pad('0' + str, max) : str } -function getDateFromPointAtBrowserCanvas (point, container, coordinateSystem) { - point = unTransformThisPoint(point, container) - point = coordinateSystem.unInverseTransform(point, container.frame.height) - - let date = new Date(point.x) - - return date -} - -function getDateFromPointAtChartsSpace (point, container, coordinateSystem) { - point = container.frame.unframeThisPoint(point) - point = coordinateSystem.unInverseTransform(point, container.frame.height) - - let date = new Date(point.x) - - return date -} - -function getDateFromPointAtContainer (point, container, coordinateSystem) { - point = coordinateSystem.unInverseTransform(point, container.frame.height) - - let date = new Date(point.x) - - return date -} - -function getRateFromPointAtBrowserCanvas (point, container, coordinateSystem) { - point = unTransformThisPoint(point, container) - point = coordinateSystem.unInverseTransform(point, container.frame.height) - - return point.y -} - -function getRateFromPointAtChartingSpace (point, container, coordinateSystem) { - point = container.frame.unframeThisPoint(point) - point = coordinateSystem.unInverseTransform(point, container.frame.height) - - return point.y -} - -function getRateFromPointAtContainer (point, container, coordinateSystem) { - point = coordinateSystem.unInverseTransform(point, container.frame.height) - - return point.y -} - -function getMilisecondsFromPoint (point, container, coordinateSystem) { - point = unTransformThisPoint(point, container) - point = coordinateSystem.unInverseTransform(point, container.frame.height) - - return point.x -} - -function moveToUserPosition (container, currentDate, currentRate, coordinateSystem, ignoreX, ignoreY, mousePosition, fitFunction) { - let targetPoint = { - x: currentDate.valueOf(), - y: currentRate - } - - /* Put this point in the coordinate system of the canvas.chartingSpace.viewport */ - targetPoint = coordinateSystem.transformThisPoint(targetPoint) - targetPoint = transformThisPoint(targetPoint, container) - - let displaceVector - - let targetNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(targetPoint) - let mouseNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(mousePosition) - - displaceVector = { - x: mouseNoZoom.x - targetNoZoom.x, - y: mouseNoZoom.y - targetNoZoom.y - } - - if (ignoreX) { displaceVector.x = 0 } - if (ignoreY) { displaceVector.y = 0 } - - container.displace(displaceVector) -} - -function removeTime (datetime) { - if (datetime === undefined) { return } - - let dateOnly = new Date(Math.trunc(datetime.valueOf() / ONE_DAY_IN_MILISECONDS) * ONE_DAY_IN_MILISECONDS) - - return dateOnly -} - -function printLabel (labelToPrint, x, y, opacity, fontSize, color, center, container, fitFunction, noDecimals, fixedDecimals) { - if (labelToPrint === undefined) { return } - let labelPoint - if (color === undefined) { color = UI_COLOR.DARK } - if (fontSize === undefined) { fontSize = 10 }; - - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - let label = labelToPrint - if (isNaN(label) === false && label !== '') { - if (fixedDecimals !== true) { - label = dynamicDecimals(labelToPrint) +function moveToUserPosition(container, currentDate, currentRate, coordinateSystem, ignoreX, ignoreY, mousePosition, fitFunction) { + let targetPoint = { + x: currentDate.valueOf(), + y: currentRate } - label = label.toLocaleString() - if (noDecimals === true) { - label = Math.trunc(label) + + /* Put this point in the coordinate system of the canvas.chartingSpace.viewport */ + targetPoint = coordinateSystem.transformThisPoint(targetPoint) + targetPoint = transformThisPoint(targetPoint, container) + + let displaceVector + + let targetNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(targetPoint) + let mouseNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(mousePosition) + + displaceVector = { + x: mouseNoZoom.x - targetNoZoom.x, + y: mouseNoZoom.y - targetNoZoom.y } - } - let xOffset = label.length / 2 * fontSize * FONT_ASPECT_RATIO + if (ignoreX) { displaceVector.x = 0 } + if (ignoreY) { displaceVector.y = 0 } - if (center === true) { - labelPoint = { - x: x - xOffset, - y: y - } - } else { - labelPoint = { - x: x, - y: y - } - } - - if (container !== undefined) { - labelPoint = container.frame.frameThisPoint(labelPoint) - } - - if (fitFunction !== undefined) { - labelPoint = fitFunction(labelPoint) - } - - browserCanvasContext.fillStyle = 'rgba(' + color + ', ' + opacity + ')' - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) + container.displace(displaceVector) } -function newUniqueId () { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8) - return v.toString(16) - }) +function removeTime(datetime) { + if (datetime === undefined) { return } + + let dateOnly = new Date(Math.trunc(datetime.valueOf() / ONE_DAY_IN_MILISECONDS) * ONE_DAY_IN_MILISECONDS) + + return dateOnly +} + +function newUniqueId() { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8) + return v.toString(16) + }) } diff --git a/CanvasApp/Utilities/Branches.js b/CanvasApp/Utilities/Branches.js new file mode 100644 index 000000000..7609b6ec3 --- /dev/null +++ b/CanvasApp/Utilities/Branches.js @@ -0,0 +1,57 @@ +function nodeBranchToArray(node, nodeType) { + /* + This function scans a node branch for a certain node type and + return an array of with all the nodes of that type found. + */ + if (node === undefined) { return } + if (nodeType === undefined) { return } + let resultArray = [] + scanNodeBranch(node, nodeType) + return resultArray + + function scanNodeBranch(startingNode) { + if (startingNode === undefined) {return} + + let nodeDefinition = APP_SCHEMA_MAP.get(startingNode.type) + if (nodeDefinition === undefined) { return } + + if (startingNode.type === nodeType) { + resultArray.push(startingNode) + return + } + + if (nodeDefinition.properties === undefined) { return } + let lastNodePropertyName + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + if (lastNodePropertyName === property.name) {continue} // Some nodes have a single property por multiple child node types. We need to check repeated properties only once so as no to duplicate results. + switch (property.type) { + case 'node': { + scanNodeBranch(startingNode[property.name]) + lastNodePropertyName = property.name + } + break + case 'array': { + let startingNodePropertyArray = startingNode[property.name] + for (let m = 0; m < startingNodePropertyArray.length; m++) { + scanNodeBranch(startingNodePropertyArray[m]) + } + break + } + } + } + } +} + +function findInBranch(startingNode, nodeType, errorNode, connectedViaPayload) { + /* + This function finds a node in a brach and reports an error if it could not be found. + */ + let nodeFound = findNodeInNodeMesh(startingNode, nodeType, undefined, connectedViaPayload, true, false, false) + if (nodeFound === undefined) { + errorNode.payload.uiObject.setErrorMessage('Could not find ' + nodeType + ' at ' + startingNode.type + ' ' + startingNode.name) + return + } else { + return nodeFound + } +} diff --git a/CanvasApp/Utilities/Clipboard.js b/CanvasApp/Utilities/Clipboard.js new file mode 100644 index 000000000..d6af25c88 --- /dev/null +++ b/CanvasApp/Utilities/Clipboard.js @@ -0,0 +1,35 @@ +function fallbackCopyTextToClipboard(text) { + var textArea = document.createElement("textarea"); + textArea.value = text; + + // Avoid scrolling to bottom + textArea.style.top = "0"; + textArea.style.left = "0"; + textArea.style.position = "fixed"; + + document.body.appendChild(textArea); + textArea.focus(); + textArea.select(); + + try { + var successful = document.execCommand('copy'); + var msg = successful ? 'successful' : 'unsuccessful'; + //console.log('Fallback: Copying text command was ' + msg); + } catch (err) { + console.error('Fallback: Oops, unable to copy', err); + } + + document.body.removeChild(textArea); +} + +function copyTextToClipboard(text) { + if (!navigator.clipboard) { + fallbackCopyTextToClipboard(text); + return; + } + navigator.clipboard.writeText(text).then(function() { + //console.log('Async: Copying to clipboard was successful!'); + }, function(err) { + console.error('Async: Could not copy text: ', err); + }); +} \ No newline at end of file diff --git a/CanvasApp/Utilities/CoordinateTransformations.js b/CanvasApp/Utilities/CoordinateTransformations.js new file mode 100644 index 000000000..845210a9c --- /dev/null +++ b/CanvasApp/Utilities/CoordinateTransformations.js @@ -0,0 +1,18 @@ +function transformThisPoint(point, container) { + /* We make the point relative to the current frame */ + + point = container.frame.frameThisPoint(point) + + /* We pass this point through the canvas.chartingSpace.viewport lends, meaning we apply the canvas.chartingSpace.viewport zoom and displacement. */ + + point = canvas.chartingSpace.viewport.transformThisPoint(point) + + return point +} + +function unTransformThisPoint(point, container) { + point = canvas.chartingSpace.viewport.unTransformThisPoint(point) + point = container.frame.unframeThisPoint(point) + + return point +} diff --git a/CanvasApp/Utilities/DateRateTransformations.js b/CanvasApp/Utilities/DateRateTransformations.js new file mode 100644 index 000000000..4829787ed --- /dev/null +++ b/CanvasApp/Utilities/DateRateTransformations.js @@ -0,0 +1,53 @@ +function getDateFromPointAtBrowserCanvas(point, container, coordinateSystem) { + point = unTransformThisPoint(point, container) + point = coordinateSystem.unInverseTransform(point, container.frame.height) + + let date = new Date(point.x) + + return date +} + +function getDateFromPointAtChartsSpace(point, container, coordinateSystem) { + point = container.frame.unframeThisPoint(point) + point = coordinateSystem.unInverseTransform(point, container.frame.height) + + let date = new Date(point.x) + + return date +} + +function getDateFromPointAtContainer(point, container, coordinateSystem) { + point = coordinateSystem.unInverseTransform(point, container.frame.height) + + let date = new Date(point.x) + + return date +} + +function getRateFromPointAtBrowserCanvas(point, container, coordinateSystem) { + point = unTransformThisPoint(point, container) + point = coordinateSystem.unInverseTransform(point, container.frame.height) + + return point.y +} + +function getRateFromPointAtChartingSpace(point, container, coordinateSystem) { + point = container.frame.unframeThisPoint(point) + point = coordinateSystem.unInverseTransform(point, container.frame.height) + + return point.y +} + +function getRateFromPointAtContainer(point, container, coordinateSystem) { + point = coordinateSystem.unInverseTransform(point, container.frame.height) + + return point.y +} + +function getMilisecondsFromPoint(point, container, coordinateSystem) { + point = unTransformThisPoint(point, container) + point = coordinateSystem.unInverseTransform(point, container.frame.height) + + return point.x +} + diff --git a/CanvasApp/Utilities/Dates.js b/CanvasApp/Utilities/Dates.js new file mode 100644 index 000000000..9102d52ba --- /dev/null +++ b/CanvasApp/Utilities/Dates.js @@ -0,0 +1,13 @@ +function formatDate(date) { + var d = new Date(date), + month = '' + (d.getMonth() + 1), + day = '' + d.getDate(), + year = d.getFullYear(); + + if (month.length < 2) + month = '0' + month; + if (day.length < 2) + day = '0' + day; + + return [year, month, day].join('-'); +} \ No newline at end of file diff --git a/CanvasApp/Utilities/Download.js b/CanvasApp/Utilities/Download.js new file mode 100644 index 000000000..b6007dac2 --- /dev/null +++ b/CanvasApp/Utilities/Download.js @@ -0,0 +1,58 @@ +function downloadText(filename, text) { + let element = document.createElement('a') + element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)) + element.setAttribute('download', filename) + element.style.display = 'none' + document.body.appendChild(element) + element.click() + document.body.removeChild(element) +} + +function downloadCanvas(filename, canvasToUse) { + let data = canvasToUse.toDataURL('image/png', 1) + /* Change MIME type to trick the browser to downlaod the file instead of displaying it */ + data = data.replace(/^data:image\/[^;]*/, 'data:application/octet-stream') + + /* In addition to 's "download" attribute, you can define HTTP-style headers */ + data = data.replace(/^data:application\/octet-stream/, 'data:application/octet-stream;headers=Content-Disposition%3A%20attachment%3B%20filename=' + filename + '.png') + + let element = document.createElement('a') + element.setAttribute('href', data) + element.setAttribute('download', filename + '.PNG') + element.style.display = 'none' + document.body.appendChild(element) + element.click() + document.body.removeChild(element) +}; + +function downloadPanorama(filename) { + let INITIAL_WIDTH = 800 + let FINAL_WIDTH = browserCanvas.width - INITIAL_WIDTH + + if (ARE_WE_RECORDING_A_MARKET_PANORAMA === false) { + /* We start recording the panorame. */ + ARE_WE_RECORDING_A_MARKET_PANORAMA = true + marketPanoramaCanvas = document.createElement('canvas') + marketPanoramaCanvas.width = INITIAL_WIDTH * 50 + marketPanoramaCanvas.height = browserCanvas.height + marketPanoramaCanvas.getContext('2d').drawImage(browserCanvas, 0, 0, INITIAL_WIDTH, browserCanvas.height, 0, 0, INITIAL_WIDTH, browserCanvas.height) + CURRENT_PANORAMA_POSITION = INITIAL_WIDTH + } else { + /* We stop recording and download the resulting image. */ + ARE_WE_RECORDING_A_MARKET_PANORAMA = false + marketPanoramaCanvas.getContext('2d').drawImage(browserCanvas, browserCanvas.width - FINAL_WIDTH, 0, FINAL_WIDTH, browserCanvas.height, CURRENT_PANORAMA_POSITION, 0, FINAL_WIDTH, browserCanvas.height) + let finalResultCanvas = document.createElement('canvas') + finalResultCanvas.width = CURRENT_PANORAMA_POSITION + FINAL_WIDTH + finalResultCanvas.height = browserCanvas.height + finalResultCanvas.getContext('2d').drawImage(marketPanoramaCanvas, 0, 0, finalResultCanvas.width, browserCanvas.height, 0, 0, finalResultCanvas.width, browserCanvas.height) + downloadCanvas(filename, finalResultCanvas) + marketPanoramaCanvas = undefined + } +} + +function addToMarketPanorama() { + let SECTION_WIDTH = 80 * 2 + let INITIAL_POSITION = 800 - SECTION_WIDTH + marketPanoramaCanvas.getContext('2d').drawImage(browserCanvas, INITIAL_POSITION, 0, SECTION_WIDTH, browserCanvas.height, CURRENT_PANORAMA_POSITION, 0, SECTION_WIDTH, browserCanvas.height) + CURRENT_PANORAMA_POSITION = CURRENT_PANORAMA_POSITION + SECTION_WIDTH +} diff --git a/CanvasApp/Utilities/DrawPrint.js b/CanvasApp/Utilities/DrawPrint.js new file mode 100644 index 000000000..37dad6bb4 --- /dev/null +++ b/CanvasApp/Utilities/DrawPrint.js @@ -0,0 +1,221 @@ +function roundedCornersBackground(params) { + if (params.xOffset === undefined) { params.xOffset = 0 } + borderPoint1 = { + x: params.cornerRadius + params.xOffset, + y: params.cornerRadius + } + + borderPoint2 = { + x: params.container.frame.width - params.cornerRadius, + y: params.cornerRadius + } + + borderPoint3 = { + x: params.container.frame.width - params.cornerRadius, + y: params.container.frame.height - params.cornerRadius + } + + borderPoint4 = { + x: params.cornerRadius + params.xOffset, + y: params.container.frame.height - params.cornerRadius + } + + /* Now the transformations. */ + + if (params.coordinateSystem !== undefined) { // For instance Candles would use this + borderPoint1 = params.coordinateSystem.transformThisPoint(borderPoint1) + borderPoint2 = params.coordinateSystem.transformThisPoint(borderPoint2) + borderPoint3 = params.coordinateSystem.transformThisPoint(borderPoint3) + borderPoint4 = params.coordinateSystem.transformThisPoint(borderPoint4) + } else { + if (params.outsideViewPort === true) { // If the element is not affected by zoom + borderPoint1 = transformThisPoint(borderPoint1, params.container) + borderPoint2 = transformThisPoint(borderPoint2, params.container) + borderPoint3 = transformThisPoint(borderPoint3, params.container) + borderPoint4 = transformThisPoint(borderPoint4, params.container) + } else { // For instance Panels use this + borderPoint1 = params.container.frame.frameThisPoint(borderPoint1) + borderPoint2 = params.container.frame.frameThisPoint(borderPoint2) + borderPoint3 = params.container.frame.frameThisPoint(borderPoint3) + borderPoint4 = params.container.frame.frameThisPoint(borderPoint4) + } + } + + if (params.fitFunction !== undefined) { + borderPoint1 = params.fitFunction(borderPoint1) + borderPoint2 = params.fitFunction(borderPoint2) + borderPoint3 = params.fitFunction(borderPoint3) + borderPoint4 = params.fitFunction(borderPoint4) + } + + browserCanvasContext.setLineDash([0, 0]) + + /* Shadow */ + + if (params.castShadow === true) { + let SHADOW_OFFSET = 2 + + browserCanvasContext.beginPath() + + browserCanvasContext.arc(borderPoint1.x + SHADOW_OFFSET, borderPoint1.y + SHADOW_OFFSET, params.cornerRadius, 1.0 * Math.PI, 1.5 * Math.PI) + browserCanvasContext.lineTo(borderPoint2.x + SHADOW_OFFSET, borderPoint2.y - params.cornerRadius + SHADOW_OFFSET) + browserCanvasContext.arc(borderPoint2.x + SHADOW_OFFSET, borderPoint2.y + SHADOW_OFFSET, params.cornerRadius, 1.5 * Math.PI, 2.0 * Math.PI) + browserCanvasContext.lineTo(borderPoint3.x + params.cornerRadius + SHADOW_OFFSET, borderPoint3.y + SHADOW_OFFSET) + browserCanvasContext.arc(borderPoint3.x + SHADOW_OFFSET, borderPoint3.y + SHADOW_OFFSET, params.cornerRadius, 0 * Math.PI, 0.5 * Math.PI) + browserCanvasContext.lineTo(borderPoint4.x + SHADOW_OFFSET, borderPoint4.y + params.cornerRadius + SHADOW_OFFSET) + browserCanvasContext.arc(borderPoint4.x + SHADOW_OFFSET, borderPoint4.y + SHADOW_OFFSET, params.cornerRadius, 0.5 * Math.PI, 1.0 * Math.PI) + browserCanvasContext.lineTo(borderPoint1.x - params.cornerRadius + SHADOW_OFFSET, borderPoint1.y + SHADOW_OFFSET) + + browserCanvasContext.closePath() + + browserCanvasContext.lineWidth = 10 + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.BLACK + ', ' + 0.01 + ')' + browserCanvasContext.stroke() + + browserCanvasContext.lineWidth = 5 + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.BLACK + ', ' + 0.01 + ')' + browserCanvasContext.stroke() + + browserCanvasContext.lineWidth = 1 + browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.BLACK + ', ' + 0.15 + ')' + browserCanvasContext.stroke() + } + + /* Background */ + + browserCanvasContext.beginPath() + + browserCanvasContext.arc(borderPoint1.x, borderPoint1.y, params.cornerRadius, 1.0 * Math.PI, 1.5 * Math.PI) + browserCanvasContext.lineTo(borderPoint2.x, borderPoint2.y - params.cornerRadius) + browserCanvasContext.arc(borderPoint2.x, borderPoint2.y, params.cornerRadius, 1.5 * Math.PI, 2.0 * Math.PI) + browserCanvasContext.lineTo(borderPoint3.x + params.cornerRadius, borderPoint3.y) + browserCanvasContext.arc(borderPoint3.x, borderPoint3.y, params.cornerRadius, 0 * Math.PI, 0.5 * Math.PI) + browserCanvasContext.lineTo(borderPoint4.x, borderPoint4.y + params.cornerRadius) + browserCanvasContext.arc(borderPoint4.x, borderPoint4.y, params.cornerRadius, 0.5 * Math.PI, 1.0 * Math.PI) + browserCanvasContext.lineTo(borderPoint1.x - params.cornerRadius, borderPoint1.y) + + browserCanvasContext.closePath() + + browserCanvasContext.fillStyle = 'rgba(' + params.backgroundColor + ', ' + params.opacity + ')' + + browserCanvasContext.fill() + + browserCanvasContext.lineWidth = params.lineWidth + browserCanvasContext.strokeStyle = 'rgba(' + params.borderColor + ', ' + params.opacity + ')' + browserCanvasContext.stroke() +} + +function drawLabel(label, xFactor, yFactor, xOffset, yOffset, fontSize, container, fontColor, noFrameX, noFrameY, opacity) { + if (label === undefined) { return } + if (fontColor === undefined) { fontColor = UI_COLOR.WHITE } + let fontOffset = label.length * fontSize * FONT_ASPECT_RATIO + 10 + if (opacity === undefined) { opacity = 1 } + + let labelPoint = { + x: container.frame.width * xFactor + xOffset - fontOffset / 2, + y: container.frame.height * yFactor + yOffset + } + + labelPoint = container.frame.frameThisPoint(labelPoint) + + if (noFrameX !== undefined) { + labelPoint.x = noFrameX + xOffset + } + + if (noFrameY !== undefined) { + labelPoint.y = noFrameY + yOffset + } + + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + browserCanvasContext.fillStyle = 'rgba(' + fontColor + ', ' + opacity + ')' + + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) +} + +function drawIcon(icon, xFactor, yFactor, xOffset, yOffset, imageSize, container) { + if (icon !== undefined) { + if (icon.canDrawIcon === true) { + let imagePosition = { + x: container.frame.width * xFactor + xOffset - imageSize / 2, + y: container.frame.height * yFactor + yOffset - imageSize / 2 + } + + imagePosition = container.frame.frameThisPoint(imagePosition) + + browserCanvasContext.drawImage( + icon, imagePosition.x, + imagePosition.y, + imageSize, + imageSize) + } + } +} + +function drawContainerBackground(container, color, opacity, fitFunction) { + let fromPoint = { + x: 0, + y: 0 + } + + let toPoint = { + x: container.frame.width, + y: container.frame.height + } + + fromPoint = transformThisPoint(fromPoint, container) + toPoint = transformThisPoint(toPoint, container) + + fromPoint = fitFunction(fromPoint) + toPoint = fitFunction(toPoint) + + browserCanvasContext.beginPath() + browserCanvasContext.rect(fromPoint.x, fromPoint.y, toPoint.x - fromPoint.x, toPoint.y - fromPoint.y) + browserCanvasContext.fillStyle = 'rgba(' + color + ', ' + opacity + ')' + browserCanvasContext.closePath() + browserCanvasContext.fill() +} + +function printLabel(labelToPrint, x, y, opacity, fontSize, color, center, container, fitFunction, noDecimals, fixedDecimals) { + if (labelToPrint === undefined) { return } + let labelPoint + if (color === undefined) { color = UI_COLOR.DARK } + if (fontSize === undefined) { fontSize = 10 }; + + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + let label = labelToPrint + if (isNaN(label) === false && label !== '') { + if (fixedDecimals !== true) { + label = dynamicDecimals(labelToPrint) + } + label = label.toLocaleString() + if (noDecimals === true) { + label = Math.trunc(label) + } + } + + let xOffset = label.length / 2 * fontSize * FONT_ASPECT_RATIO + + if (center === true) { + labelPoint = { + x: x - xOffset, + y: y + } + } else { + labelPoint = { + x: x, + y: y + } + } + + if (container !== undefined) { + labelPoint = container.frame.frameThisPoint(labelPoint) + } + + if (fitFunction !== undefined) { + labelPoint = fitFunction(labelPoint) + } + + browserCanvasContext.fillStyle = 'rgba(' + color + ', ' + opacity + ')' + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) +} + diff --git a/CanvasApp/Utilities/Folders.js b/CanvasApp/Utilities/Folders.js new file mode 100644 index 000000000..38cc08666 --- /dev/null +++ b/CanvasApp/Utilities/Folders.js @@ -0,0 +1,93 @@ + + +function asymetricalFolderStructureCloning( + originNode, + destinationNode, + originObjectsArrayPropertyName, + originFoldersArrayPropertyName, + destinationFoldersArrayPropertyName, + clonedObjectType, + destinationFolderType, + originObjectArrayPropertyName, + functionLibraryUiObjectsFromNodes +) { + /* + This function will scan one branch of the workspace, and recreate + a similar structure in some other place, based on the parameters + sent to the function is what types of nodes are going to be mapped + into which other types. + */ + if (originNode === undefined) { return } + if (destinationNode === undefined) { return } + + /* Now we go down through all the children of the origin node, recreating at the destination node the same children structure*/ + let nodeDefinition = getNodeDefinition(originNode) + if (nodeDefinition === undefined) { return } + + if (nodeDefinition.properties !== undefined) { + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.name) { + case originObjectsArrayPropertyName: { + let originNodePropertyArray = originNode[property.name] + for (let m = 0; m < originNodePropertyArray.length; m++) { + let originObject = originNodePropertyArray[m] + if (originObjectArrayPropertyName === undefined) { + /* + In this first Use Case, we are going to connect each orgin object clone + to its origin object counter part. + */ + let clonedObject = functionLibraryUiObjectsFromNodes.addUIObject(destinationNode, clonedObjectType) + clonedObject.payload.referenceParent = originObject + } else { + /* + In this second Use Case, we are going to connect an inner object that is + inside the origin object at an array. We recognize we have to do this + because we did receive this array proeprty name. + */ + let originObjectArray = originObject[originObjectArrayPropertyName] + for (let n = 0; n < originObjectArray.length; n++) { + let originObjectArrayItem = originObjectArray[n] + let clonedObject = functionLibraryUiObjectsFromNodes.addUIObject(destinationNode, clonedObjectType) + clonedObject.payload.referenceParent = originObjectArrayItem + } + } + } + break + } + case originFoldersArrayPropertyName: { + let originNodePropertyArray = originNode[property.name] + let destinationNodePropertyArray = destinationNode[destinationFoldersArrayPropertyName] + for (let m = 0; m < originNodePropertyArray.length; m++) { + let originFolder = originNodePropertyArray[m] + let found = false + let destinationFolder + for (let n = 0; n < destinationNodePropertyArray.length; n++) { + destinationFolder = destinationNodePropertyArray[n] + if (originFolder.name === destinationFolder.name) { + found = true + } + } + if (found === false) { + destinationFolder = functionLibraryUiObjectsFromNodes.addUIObject(destinationNode, destinationFolderType) + destinationFolder.name = originFolder.name + } + asymetricalFolderStructureCloning( + originFolder, + destinationFolder, + originObjectsArrayPropertyName, + originFoldersArrayPropertyName, + destinationFoldersArrayPropertyName, + clonedObjectType, + destinationFolderType, + originObjectArrayPropertyName, + functionLibraryUiObjectsFromNodes + ) + } + break + } + } + } + } +} diff --git a/CanvasApp/Utilities/Hiriarchy.js b/CanvasApp/Utilities/Hiriarchy.js new file mode 100644 index 000000000..e37b075fb --- /dev/null +++ b/CanvasApp/Utilities/Hiriarchy.js @@ -0,0 +1,64 @@ + + +function getHiriarchyMap(rootNode) { + /* + This function scans a node hiriatchy recursively and creates a Map by Id of all the nodes of it. + */ + let hiriatchyMap = new Map() + evalNode(rootNode) + return hiriatchyMap + + function evalNode(node) { + if (node === undefined) { return } + + hiriatchyMap.set(node.id, node) + + /* Now we go down through all this node children */ + let nodeDefinition = APP_SCHEMA_MAP.get(node.type) + if (nodeDefinition === undefined) { return } + + if (nodeDefinition.properties !== undefined) { + let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.type) { + case 'node': { + if (property.name !== previousPropertyName) { + if (node[property.name] !== undefined) { + evalNode(node[property.name]) + } + previousPropertyName = property.name + } + break + } + case 'array': { + if (node[property.name] !== undefined) { + let nodePropertyArray = node[property.name] + for (let m = 0; m < nodePropertyArray.length; m++) { + evalNode(nodePropertyArray[m]) + } + } + break + } + } + } + } + } +} + +function getHiriarchyHead(initialNode) { + let headNode + stepBackwards(initialNode) + return headNode + + function stepBackwards(node) { + if (node === undefined) {return} + if (node.payload === undefined) {return} + if (node.payload.parentNode === undefined) { + headNode = node + } else { + stepBackwards(node.payload.parentNode) + } + } +} diff --git a/CanvasApp/Utilities/LoadSaveFrame.js b/CanvasApp/Utilities/LoadSaveFrame.js new file mode 100644 index 000000000..67fecfbb0 --- /dev/null +++ b/CanvasApp/Utilities/LoadSaveFrame.js @@ -0,0 +1,24 @@ +function saveFrame(payload, frame) { + payload.frame = { + position: { + x: frame.position.x, + y: frame.position.y + }, + width: frame.width, + height: frame.height, + radius: frame.radius + } +} + +function loadFrame(payload, frame) { + if (payload.node.savedPayload !== undefined) { + if (payload.node.savedPayload.frame !== undefined) { + frame.position.x = payload.node.savedPayload.frame.position.x + frame.position.y = payload.node.savedPayload.frame.position.y + frame.width = payload.node.savedPayload.frame.width + frame.height = payload.node.savedPayload.frame.height + frame.radius = payload.node.savedPayload.frame.radius + payload.node.savedPayload.frame = undefined + } + } +} diff --git a/CanvasApp/Utilities/LoadSaveTutorial.js b/CanvasApp/Utilities/LoadSaveTutorial.js new file mode 100644 index 000000000..402a3ddf0 --- /dev/null +++ b/CanvasApp/Utilities/LoadSaveTutorial.js @@ -0,0 +1,18 @@ +function saveTutorial(payload, tutorial) { + payload.tutorial = { + status: tutorial.status + } +} + +function loadTutorial(payload, tutorial) { + if (payload.tutorial !== undefined) { + tutorial.status = payload.tutorial.status + return + } + if (payload.node.savedPayload !== undefined) { + if (payload.node.savedPayload.tutorial !== undefined) { + tutorial.status = payload.node.savedPayload.tutorial.status + payload.node.savedPayload.tutorial = undefined + } + } +} diff --git a/CanvasApp/Utilities/Menu.js b/CanvasApp/Utilities/Menu.js new file mode 100644 index 000000000..6412faf23 --- /dev/null +++ b/CanvasApp/Utilities/Menu.js @@ -0,0 +1,14 @@ +function menuClickOfNodeArray(nodeArray, action, confirm) { + for (let j=0; j < nodeArray.length; j++) { + let node = nodeArray[j] + menuClick(node, action, confirm) + } +} + +function menuClick(node, action, confirm) { + let menu = node.payload.uiObject.menu + menu.internalClick(action) + if (confirm === true) { + menu.internalClick(action) + } +} \ No newline at end of file diff --git a/CanvasApp/Utilities/Meshes.js b/CanvasApp/Utilities/Meshes.js new file mode 100644 index 000000000..834cb48e1 --- /dev/null +++ b/CanvasApp/Utilities/Meshes.js @@ -0,0 +1,88 @@ +function findNodeInNodeMesh(node, nodeType, nodeName, connectedViaPayload, findInChildren, findInParents, findInReferenceParents) { + /* + This function scans a node mesh for a certain node type and + returns the first instance found. Please specify either nodeType + or nodeName. + */ + const MAX_DEPTH = 100 + let nodeFound + scanNodeMesh(node, 0) + return nodeFound + + function scanNodeMesh(startingNode, depth) { + if (startingNode === undefined) { return } + if (connectedViaPayload === true) { + if (startingNode.payload === undefined) { return } + } + if (nodeFound !== undefined) { return } + if (depth >= MAX_DEPTH) {return} + + let nodeDefinition = APP_SCHEMA_MAP.get(startingNode.type) + if (nodeDefinition === undefined) { return } + + if (nodeType !== undefined) { + if (startingNode.type === nodeType) { + nodeFound = startingNode + return + } + } + + if (nodeName !== undefined) { + if (startingNode.name === nodeName) { + nodeFound = startingNode + return + } + } + + /* We scan through this node children */ + if (findInChildren === true) { + if (nodeDefinition.properties !== undefined) { + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.type) { + case 'node': { + scanNodeMesh(startingNode[property.name], depth + 1) + } + break + case 'array': { + let startingNodePropertyArray = startingNode[property.name] + if (startingNodePropertyArray !== undefined) { + for (let m = 0; m < startingNodePropertyArray.length; m++) { + scanNodeMesh(startingNodePropertyArray[m], depth + 1) + } + } + break + } + } + } + } + } + + /* We scan parents nodes. */ + if (findInParents === true) { + if (connectedViaPayload === true) { + if (startingNode.payload.parentNode !== undefined) { + scanNodeMesh(startingNode.payload.parentNode, depth + 1) + } + } else { + if (startingNode.parentNode !== undefined) { + scanNodeMesh(startingNode.parentNode, depth + 1) + } + } + } + + /* We scan reference parents too. */ + if (findInReferenceParents === true) { + if (connectedViaPayload === true) { + if (startingNode.payload.referenceParent !== undefined) { + scanNodeMesh(startingNode.payload.referenceParent, depth + 1) + } + } else { + if (startingNode.referenceParent !== undefined) { + scanNodeMesh(startingNode.referenceParent, depth + 1) + } + } + } + } +} \ No newline at end of file diff --git a/CanvasApp/Utilities/NodeChildren.js b/CanvasApp/Utilities/NodeChildren.js new file mode 100644 index 000000000..ad36f93eb --- /dev/null +++ b/CanvasApp/Utilities/NodeChildren.js @@ -0,0 +1,228 @@ +function isMissingChildren(startingNode, checkNode, checkReferenceParent) { + /* + This functioin scan all the children of a node and returns true or false + depending if the checkNode is a missing children. + */ + if (startingNode === undefined) { return } + if (checkNode === undefined) { return } + + let nodeDefinition = APP_SCHEMA_MAP.get(startingNode.type) + if (nodeDefinition === undefined) { return } + + /* We scan through this node children */ + if (nodeDefinition.properties !== undefined) { + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.type) { + case 'node': { + let child = startingNode[property.name] + if (checkReferenceParent !== true) { + if (child.id === checkNode.id) { + return false + } + } else { + if (child.payload !== undefined) { + if (child.payload.referenceParent !== undefined) { + if (child.payload.referenceParent.id === checkNode.id) { + return false + } + } + } + } + } + break + case 'array': { + let startingNodePropertyArray = startingNode[property.name] + if (startingNodePropertyArray !== undefined) { + for (let m = 0; m < startingNodePropertyArray.length; m++) { + let arrayItem = startingNodePropertyArray[m] + if (checkReferenceParent !== true) { + if (arrayItem.id === checkNode.id) { + return false + } + } else { + if (arrayItem.payload !== undefined) { + if (arrayItem.payload.referenceParent !== undefined) { + if (arrayItem.payload.referenceParent.id === checkNode.id) { + return false + } + } + } + } + } + } + break + } + } + } + return true + } +} + +function findChildReferencingThisNode(startingNode, checkNode) { + /* + This functioin scan all the children of a node and returns the child + that is referencing the checkNode. + */ + if (startingNode === undefined) { return } + if (checkNode === undefined) { return } + + let nodeDefinition = APP_SCHEMA_MAP.get(startingNode.type) + if (nodeDefinition === undefined) { return } + + /* We scan through this node children */ + if (nodeDefinition.properties !== undefined) { + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.type) { + case 'node': { + let child = startingNode[property.name] + + if (child.payload !== undefined) { + if (child.payload.referenceParent !== undefined) { + if (child.payload.referenceParent.id === checkNode.id) { + return child + } + } + } + } + break + case 'array': { + let startingNodePropertyArray = startingNode[property.name] + if (startingNodePropertyArray !== undefined) { + for (let m = 0; m < startingNodePropertyArray.length; m++) { + let arrayItem = startingNodePropertyArray[m] + + if (arrayItem.payload !== undefined) { + if (arrayItem.payload.referenceParent !== undefined) { + if (arrayItem.payload.referenceParent.id === checkNode.id) { + return arrayItem + } + } + } + } + } + break + } + } + } + return true + } +} + +function findOrCreateChildWithReference(startingNode, childType, referencedNode, functionLibraryUiObjectsFromNodes) { + /* + This function find the child node of starting node that references + refereced node. If there is none, then it creates a child and stablish + the referecen. + */ + let child + if (isMissingChildren(startingNode, referencedNode, true) === true) { + child = functionLibraryUiObjectsFromNodes.addUIObject(startingNode, childType) + child.payload.referenceParent = referencedNode + } else { + child = findChildReferencingThisNode(startingNode, referencedNode) + } + return child +} + +function findAndRecreateChildWithReference(startingNode, childType, referencedNode, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) { + /* + This function finds the child of the starting node that references + the reference node and if found it deletes it. Existing or not + it creates it again with the child type specified. + */ + let child + child = findChildReferencingThisNode(startingNode, referencedNode) + if (child !== undefined) { + functionLibraryNodeDeleter.deleteUIObject(child, rootNodes) + } + child = functionLibraryUiObjectsFromNodes.addUIObject(startingNode, childType) + child.payload.referenceParent = referencedNode + return child +} + +function findChildIndexAtParentNode(startingNode) { + /* + This functioin scan all the children of a node's parent and returns the child + index at the node property array that contains it. + */ + if (startingNode === undefined) { return } + if (startingNode.payload === undefined) { return } + if (startingNode.payload.parentNode === undefined) { return } + + let parentNode = startingNode.payload.parentNode + + let nodeDefinition = APP_SCHEMA_MAP.get(parentNode.type) + if (nodeDefinition === undefined) { return } + + /* We scan through this parent node children */ + if (nodeDefinition.properties !== undefined) { + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.type) { + case 'node': { + /* We ignore these types of children. */ + } + break + case 'array': { + let startingNodePropertyArray = parentNode[property.name] + if (startingNodePropertyArray !== undefined) { + for (let m = 0; m < startingNodePropertyArray.length; m++) { + let arrayItem = startingNodePropertyArray[m] + + if (arrayItem.id === startingNode.id) { + return m + } + } + } + break + } + } + } + } +} + +function isMissingChildrenByName(startingNode, nodeName) { + /* + This functioin scan all the children of a node and returns true or false + depending if the node has a children with a certain name. + */ + if (startingNode === undefined) { return } + + let nodeDefinition = APP_SCHEMA_MAP.get(startingNode.type) + if (nodeDefinition === undefined) { return } + + /* We scan through this node children */ + if (nodeDefinition.properties !== undefined) { + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.type) { + case 'node': { + let child = startingNode[property.name] + if (child.name === nodeName) { + return false + } + } + break + case 'array': { + let startingNodePropertyArray = startingNode[property.name] + if (startingNodePropertyArray !== undefined) { + for (let m = 0; m < startingNodePropertyArray.length; m++) { + let arrayItem = startingNodePropertyArray[m] + if (arrayItem.name === nodeName) { + return false + } + } + } + break + } + } + } + return true + } +} \ No newline at end of file diff --git a/CanvasApp/Utilities/NodeConfig.js b/CanvasApp/Utilities/NodeConfig.js new file mode 100644 index 000000000..f33cc2754 --- /dev/null +++ b/CanvasApp/Utilities/NodeConfig.js @@ -0,0 +1,18 @@ +function savePropertyAtNodeConfig(payload, propertyName, value) { + try { + let config = JSON.parse(payload.node.config) + config[propertyName] = value + payload.node.config = JSON.stringify(config, null, 4) + } catch (err) { + // we ignore errors here since most likely they will be parsing errors. + } +} + +function loadPropertyFromNodeConfig(payload, propertyName) { + try { + let config = JSON.parse(payload.node.config) + return config[propertyName] + } catch (err) { + // we ignore errors here since most likely they will be parsing errors. + } +} diff --git a/CanvasApp/Utilities/RoundedCornersBackground.js b/CanvasApp/Utilities/RoundedCornersBackground.js deleted file mode 100644 index 825400009..000000000 --- a/CanvasApp/Utilities/RoundedCornersBackground.js +++ /dev/null @@ -1,152 +0,0 @@ -function roundedCornersBackground (params) { - if (params.xOffset === undefined) { params.xOffset = 0 } - borderPoint1 = { - x: params.cornerRadius + params.xOffset, - y: params.cornerRadius - } - - borderPoint2 = { - x: params.container.frame.width - params.cornerRadius, - y: params.cornerRadius - } - - borderPoint3 = { - x: params.container.frame.width - params.cornerRadius, - y: params.container.frame.height - params.cornerRadius - } - - borderPoint4 = { - x: params.cornerRadius + params.xOffset, - y: params.container.frame.height - params.cornerRadius - } - - /* Now the transformations. */ - - if (params.coordinateSystem !== undefined) { // For instance Candles would use this - borderPoint1 = params.coordinateSystem.transformThisPoint(borderPoint1) - borderPoint2 = params.coordinateSystem.transformThisPoint(borderPoint2) - borderPoint3 = params.coordinateSystem.transformThisPoint(borderPoint3) - borderPoint4 = params.coordinateSystem.transformThisPoint(borderPoint4) - } else { - if (params.outsideViewPort === true) { // If the element is not affected by zoom - borderPoint1 = transformThisPoint(borderPoint1, params.container) - borderPoint2 = transformThisPoint(borderPoint2, params.container) - borderPoint3 = transformThisPoint(borderPoint3, params.container) - borderPoint4 = transformThisPoint(borderPoint4, params.container) - } else { // For instance Panels use this - borderPoint1 = params.container.frame.frameThisPoint(borderPoint1) - borderPoint2 = params.container.frame.frameThisPoint(borderPoint2) - borderPoint3 = params.container.frame.frameThisPoint(borderPoint3) - borderPoint4 = params.container.frame.frameThisPoint(borderPoint4) - } - } - - if (params.fitFunction !== undefined) { - borderPoint1 = params.fitFunction(borderPoint1) - borderPoint2 = params.fitFunction(borderPoint2) - borderPoint3 = params.fitFunction(borderPoint3) - borderPoint4 = params.fitFunction(borderPoint4) - } - - browserCanvasContext.setLineDash([0, 0]) - - /* Shadow */ - - if (params.castShadow === true) { - let SHADOW_OFFSET = 2 - - browserCanvasContext.beginPath() - - browserCanvasContext.arc(borderPoint1.x + SHADOW_OFFSET, borderPoint1.y + SHADOW_OFFSET, params.cornerRadius, 1.0 * Math.PI, 1.5 * Math.PI) - browserCanvasContext.lineTo(borderPoint2.x + SHADOW_OFFSET, borderPoint2.y - params.cornerRadius + SHADOW_OFFSET) - browserCanvasContext.arc(borderPoint2.x + SHADOW_OFFSET, borderPoint2.y + SHADOW_OFFSET, params.cornerRadius, 1.5 * Math.PI, 2.0 * Math.PI) - browserCanvasContext.lineTo(borderPoint3.x + params.cornerRadius + SHADOW_OFFSET, borderPoint3.y + SHADOW_OFFSET) - browserCanvasContext.arc(borderPoint3.x + SHADOW_OFFSET, borderPoint3.y + SHADOW_OFFSET, params.cornerRadius, 0 * Math.PI, 0.5 * Math.PI) - browserCanvasContext.lineTo(borderPoint4.x + SHADOW_OFFSET, borderPoint4.y + params.cornerRadius + SHADOW_OFFSET) - browserCanvasContext.arc(borderPoint4.x + SHADOW_OFFSET, borderPoint4.y + SHADOW_OFFSET, params.cornerRadius, 0.5 * Math.PI, 1.0 * Math.PI) - browserCanvasContext.lineTo(borderPoint1.x - params.cornerRadius + SHADOW_OFFSET, borderPoint1.y + SHADOW_OFFSET) - - browserCanvasContext.closePath() - - browserCanvasContext.lineWidth = 10 - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.BLACK + ', ' + 0.01 + ')' - browserCanvasContext.stroke() - - browserCanvasContext.lineWidth = 5 - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.BLACK + ', ' + 0.01 + ')' - browserCanvasContext.stroke() - - browserCanvasContext.lineWidth = 1 - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.BLACK + ', ' + 0.15 + ')' - browserCanvasContext.stroke() - } - - /* Background */ - - browserCanvasContext.beginPath() - - browserCanvasContext.arc(borderPoint1.x, borderPoint1.y, params.cornerRadius, 1.0 * Math.PI, 1.5 * Math.PI) - browserCanvasContext.lineTo(borderPoint2.x, borderPoint2.y - params.cornerRadius) - browserCanvasContext.arc(borderPoint2.x, borderPoint2.y, params.cornerRadius, 1.5 * Math.PI, 2.0 * Math.PI) - browserCanvasContext.lineTo(borderPoint3.x + params.cornerRadius, borderPoint3.y) - browserCanvasContext.arc(borderPoint3.x, borderPoint3.y, params.cornerRadius, 0 * Math.PI, 0.5 * Math.PI) - browserCanvasContext.lineTo(borderPoint4.x, borderPoint4.y + params.cornerRadius) - browserCanvasContext.arc(borderPoint4.x, borderPoint4.y, params.cornerRadius, 0.5 * Math.PI, 1.0 * Math.PI) - browserCanvasContext.lineTo(borderPoint1.x - params.cornerRadius, borderPoint1.y) - - browserCanvasContext.closePath() - - browserCanvasContext.fillStyle = 'rgba(' + params.backgroundColor + ', ' + params.opacity + ')' - - browserCanvasContext.fill() - - browserCanvasContext.lineWidth = params.lineWidth - browserCanvasContext.strokeStyle = 'rgba(' + params.borderColor + ', ' + params.opacity + ')' - browserCanvasContext.stroke() -} - -function drawLabel (label, xFactor, yFactor, xOffset, yOffset, fontSize, container, fontColor, noFrameX, noFrameY, opacity) { - if (label === undefined) { return } - if (fontColor === undefined) { fontColor = UI_COLOR.WHITE } - let fontOffset = label.length * fontSize * FONT_ASPECT_RATIO + 10 - if (opacity === undefined) { opacity = 1 } - - let labelPoint = { - x: container.frame.width * xFactor + xOffset - fontOffset / 2, - y: container.frame.height * yFactor + yOffset - } - - labelPoint = container.frame.frameThisPoint(labelPoint) - - if (noFrameX !== undefined) { - labelPoint.x = noFrameX + xOffset - } - - if (noFrameY !== undefined) { - labelPoint.y = noFrameY + yOffset - } - - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - browserCanvasContext.fillStyle = 'rgba(' + fontColor + ', ' + opacity + ')' - - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) -} - -function drawIcon (icon, xFactor, yFactor, xOffset, yOffset, imageSize, container) { - if (icon !== undefined) { - if (icon.canDrawIcon === true) { - let imagePosition = { - x: container.frame.width * xFactor + xOffset - imageSize / 2, - y: container.frame.height * yFactor + yOffset - imageSize / 2 - } - - imagePosition = container.frame.frameThisPoint(imagePosition) - - browserCanvasContext.drawImage( - icon, imagePosition.x, - imagePosition.y, - imageSize, - imageSize) - } - } -} diff --git a/CanvasApp/VideoRecorder.js b/CanvasApp/VideoRecorder.js index f222a8358..551db0ef7 100644 --- a/CanvasApp/VideoRecorder.js +++ b/CanvasApp/VideoRecorder.js @@ -1,218 +1,218 @@ -function newVideoRecorder () { - let thisObject = { - recordCanvas: recordCanvas, - physics: physics - } - let lastAction - let wheelAnimationCounter = 0 - let lastWheelPointerIcon - return thisObject - - function physics () { - wheelAnimationCounter-- - if (wheelAnimationCounter < 0) { - wheelAnimationCounter = 0 +function newVideoRecorder() { + let thisObject = { + recordCanvas: recordCanvas, + physics: physics } - } + let lastAction + let wheelAnimationCounter = 0 + let lastWheelPointerIcon + return thisObject - function recordCanvas () { - { - const DISTANCE_BETWEEN_ICONS = 35 - const ICON_SIZES = 50 - - let mousePointerIcon = canvas.designSpace.iconCollection.get('mouse-pointer') - let draggingIcon = canvas.designSpace.iconCollection.get('hand-drag') - - let leftClickIcon = canvas.designSpace.iconCollection.get('mouse-left-click') - let rightClickIcon = canvas.designSpace.iconCollection.get('mouse-right-click') - let wheelClickIcon = canvas.designSpace.iconCollection.get('mouse-wheel-click') - - let imagePosition - let buttonPressedIcon - - if (canvas.mouse.action === 'key down' && lastAction === 'dragging') { - canvas.mouse.action = 'dragging' - } - switch (canvas.mouse.action) { - case 'moving': { - pointerIcon = mousePointerIcon - break + function physics() { + wheelAnimationCounter-- + if (wheelAnimationCounter < 0) { + wheelAnimationCounter = 0 + } + } + + function recordCanvas() { + { + const DISTANCE_BETWEEN_ICONS = 35 + const ICON_SIZES = 50 + + let mousePointerIcon = canvas.designSpace.iconCollection.get('mouse-pointer') + let draggingIcon = canvas.designSpace.iconCollection.get('hand-drag') + + let leftClickIcon = canvas.designSpace.iconCollection.get('mouse-left-click') + let rightClickIcon = canvas.designSpace.iconCollection.get('mouse-right-click') + let wheelClickIcon = canvas.designSpace.iconCollection.get('mouse-wheel-click') + + let imagePosition + let buttonPressedIcon + + if (canvas.mouse.action === 'key down' && lastAction === 'dragging') { + canvas.mouse.action = 'dragging' + } + switch (canvas.mouse.action) { + case 'moving': { + pointerIcon = mousePointerIcon + break + } + case 'dragging': { + pointerIcon = draggingIcon + break + } + case 'wheel': { + wheelAnimationCounter = 25 + if (canvas.mouse.event.delta > 0) { + pointerIcon = canvas.designSpace.iconCollection.get('mouse-wheel-up') + lastWheelPointerIcon = pointerIcon + } else { + pointerIcon = canvas.designSpace.iconCollection.get('mouse-wheel-down') + lastWheelPointerIcon = pointerIcon + } + + break + } + case 'key down': { + if (wheelAnimationCounter > 0) { + pointerIcon = lastWheelPointerIcon + } else { + pointerIcon = mousePointerIcon + } + let key = canvas.mouse.event.key + if (key === undefined) { break } + switch (key.toLowerCase()) { + case 'Escape': + { + pointerIcon = canvas.designSpace.iconCollection.get('key-m') + break + } + case 'm': + { + pointerIcon = canvas.designSpace.iconCollection.get('key-m') + break + } + case 'a': + { + pointerIcon = canvas.designSpace.iconCollection.get('key-a') + break + } + case 'r': + { + pointerIcon = canvas.designSpace.iconCollection.get('key-r') + break + } + case 'c': + { + pointerIcon = canvas.designSpace.iconCollection.get('key-r') + break + } + } + break + } + case 'key up': { + pointerIcon = mousePointerIcon + break + } + } + + lastAction = canvas.mouse.action + + imagePosition = { + x: canvas.mouse.position.x, + y: canvas.mouse.position.y + } + drawMousePointer(pointerIcon, imagePosition, ICON_SIZES) + + switch (canvas.mouse.event.buttons) { + case 0: { + buttonPressedIcon = undefined + break + } + case 1: { + buttonPressedIcon = leftClickIcon + break + } + case 2: { + buttonPressedIcon = rightClickIcon + break + } + case 3: { + buttonPressedIcon = undefined + break + } + case 4: { + buttonPressedIcon = wheelClickIcon + break + } + } + + let firstRow = DISTANCE_BETWEEN_ICONS * 1 + ICON_SIZES * 1 + let secondRow = DISTANCE_BETWEEN_ICONS * 1 + ICON_SIZES * 2 + let icon + + imagePosition = { + x: canvas.mouse.position.x + DISTANCE_BETWEEN_ICONS * 2, + y: canvas.mouse.position.y + } + drawMousePointer(buttonPressedIcon, imagePosition, ICON_SIZES) + + if (canvas.mouse.event.shiftKey === true) { + icon = canvas.designSpace.iconCollection.get('key-shift') + imagePosition = { + x: canvas.mouse.position.x - DISTANCE_BETWEEN_ICONS * 3, + y: canvas.mouse.position.y + firstRow + } + drawMousePointer(icon, imagePosition, ICON_SIZES) + } + + if (canvas.mouse.event.ctrlKey === true || canvas.mouse.event.metaKey === true) { + icon = canvas.designSpace.iconCollection.get('key-ctrl') + imagePosition = { + x: canvas.mouse.position.x - DISTANCE_BETWEEN_ICONS * 3, + y: canvas.mouse.position.y + secondRow + } + drawMousePointer(icon, imagePosition, ICON_SIZES) + } + + if (canvas.mouse.event.altKey === true) { + icon = canvas.designSpace.iconCollection.get('key-alt') + imagePosition = { + x: canvas.mouse.position.x + DISTANCE_BETWEEN_ICONS * 3 + ICON_SIZES * 0, + y: canvas.mouse.position.y + secondRow + } + drawMousePointer(icon, imagePosition, ICON_SIZES) + } + + if (canvas.mouse.event.code === 'ArrowUp') { + icon = canvas.designSpace.iconCollection.get('key-up') + imagePosition = { + x: canvas.mouse.position.x - 0, + y: canvas.mouse.position.y + firstRow + } + drawMousePointer(icon, imagePosition, ICON_SIZES) + } + + if (canvas.mouse.event.code === 'ArrowDown') { + icon = canvas.designSpace.iconCollection.get('key-down') + imagePosition = { + x: canvas.mouse.position.x - 0, + y: canvas.mouse.position.y + secondRow + } + drawMousePointer(icon, imagePosition, ICON_SIZES) + } + + if (canvas.mouse.event.code === 'ArrowLeft') { + icon = canvas.designSpace.iconCollection.get('key-left') + imagePosition = { + x: canvas.mouse.position.x - DISTANCE_BETWEEN_ICONS * 0 - ICON_SIZES * 1, + y: canvas.mouse.position.y + secondRow + } + drawMousePointer(icon, imagePosition, ICON_SIZES) + } + + if (canvas.mouse.event.code === 'ArrowRight') { + icon = canvas.designSpace.iconCollection.get('key-right') + imagePosition = { + x: canvas.mouse.position.x + DISTANCE_BETWEEN_ICONS * 0 + ICON_SIZES * 1, + y: canvas.mouse.position.y + secondRow + } + drawMousePointer(icon, imagePosition, ICON_SIZES) + } + + function drawMousePointer(icon, imagePosition, imageSize) { + if (icon !== undefined) { + if (icon.canDrawIcon === true) { + browserCanvasContext.drawImage( + icon, imagePosition.x, + imagePosition.y, + imageSize, + imageSize) + } + } + } + mediaRecorder.capture(browserCanvas) } - case 'dragging': { - pointerIcon = draggingIcon - break - } - case 'wheel': { - wheelAnimationCounter = 25 - if (canvas.mouse.event.delta > 0) { - pointerIcon = canvas.designSpace.iconCollection.get('mouse-wheel-up') - lastWheelPointerIcon = pointerIcon - } else { - pointerIcon = canvas.designSpace.iconCollection.get('mouse-wheel-down') - lastWheelPointerIcon = pointerIcon - } - - break - } - case 'key down': { - if (wheelAnimationCounter > 0) { - pointerIcon = lastWheelPointerIcon - } else { - pointerIcon = mousePointerIcon - } - let key = canvas.mouse.event.key - if (key === undefined) { break } - switch (key.toLowerCase()) { - case 'Escape': - { - pointerIcon = canvas.designSpace.iconCollection.get('key-m') - break - } - case 'm': - { - pointerIcon = canvas.designSpace.iconCollection.get('key-m') - break - } - case 'a': - { - pointerIcon = canvas.designSpace.iconCollection.get('key-a') - break - } - case 'r': - { - pointerIcon = canvas.designSpace.iconCollection.get('key-r') - break - } - case 'c': - { - pointerIcon = canvas.designSpace.iconCollection.get('key-r') - break - } - } - break - } - case 'key up': { - pointerIcon = mousePointerIcon - break - } - } - - lastAction = canvas.mouse.action - - imagePosition = { - x: canvas.mouse.position.x, - y: canvas.mouse.position.y - } - drawMousePointer(pointerIcon, imagePosition, ICON_SIZES) - - switch (canvas.mouse.event.buttons) { - case 0: { - buttonPressedIcon = undefined - break - } - case 1: { - buttonPressedIcon = leftClickIcon - break - } - case 2: { - buttonPressedIcon = rightClickIcon - break - } - case 3: { - buttonPressedIcon = undefined - break - } - case 4: { - buttonPressedIcon = wheelClickIcon - break - } - } - - let firstRow = DISTANCE_BETWEEN_ICONS * 1 + ICON_SIZES * 1 - let secondRow = DISTANCE_BETWEEN_ICONS * 1 + ICON_SIZES * 2 - let icon - - imagePosition = { - x: canvas.mouse.position.x + DISTANCE_BETWEEN_ICONS * 2, - y: canvas.mouse.position.y - } - drawMousePointer(buttonPressedIcon, imagePosition, ICON_SIZES) - - if (canvas.mouse.event.shiftKey === true) { - icon = canvas.designSpace.iconCollection.get('key-shift') - imagePosition = { - x: canvas.mouse.position.x - DISTANCE_BETWEEN_ICONS * 3, - y: canvas.mouse.position.y + firstRow - } - drawMousePointer(icon, imagePosition, ICON_SIZES) - } - - if (canvas.mouse.event.ctrlKey === true || canvas.mouse.event.metaKey === true) { - icon = canvas.designSpace.iconCollection.get('key-ctrl') - imagePosition = { - x: canvas.mouse.position.x - DISTANCE_BETWEEN_ICONS * 3, - y: canvas.mouse.position.y + secondRow - } - drawMousePointer(icon, imagePosition, ICON_SIZES) - } - - if (canvas.mouse.event.altKey === true) { - icon = canvas.designSpace.iconCollection.get('key-alt') - imagePosition = { - x: canvas.mouse.position.x + DISTANCE_BETWEEN_ICONS * 3 + ICON_SIZES * 0, - y: canvas.mouse.position.y + secondRow - } - drawMousePointer(icon, imagePosition, ICON_SIZES) - } - - if (canvas.mouse.event.code === 'ArrowUp') { - icon = canvas.designSpace.iconCollection.get('key-up') - imagePosition = { - x: canvas.mouse.position.x - 0, - y: canvas.mouse.position.y + firstRow - } - drawMousePointer(icon, imagePosition, ICON_SIZES) - } - - if (canvas.mouse.event.code === 'ArrowDown') { - icon = canvas.designSpace.iconCollection.get('key-down') - imagePosition = { - x: canvas.mouse.position.x - 0, - y: canvas.mouse.position.y + secondRow - } - drawMousePointer(icon, imagePosition, ICON_SIZES) - } - - if (canvas.mouse.event.code === 'ArrowLeft') { - icon = canvas.designSpace.iconCollection.get('key-left') - imagePosition = { - x: canvas.mouse.position.x - DISTANCE_BETWEEN_ICONS * 0 - ICON_SIZES * 1, - y: canvas.mouse.position.y + secondRow - } - drawMousePointer(icon, imagePosition, ICON_SIZES) - } - - if (canvas.mouse.event.code === 'ArrowRight') { - icon = canvas.designSpace.iconCollection.get('key-right') - imagePosition = { - x: canvas.mouse.position.x + DISTANCE_BETWEEN_ICONS * 0 + ICON_SIZES * 1, - y: canvas.mouse.position.y + secondRow - } - drawMousePointer(icon, imagePosition, ICON_SIZES) - } - - function drawMousePointer (icon, imagePosition, imageSize) { - if (icon !== undefined) { - if (icon.canDrawIcon === true) { - browserCanvasContext.drawImage( - icon, imagePosition.x, - imagePosition.y, - imageSize, - imageSize) - } - } - } - mediaRecorder.capture(browserCanvas) } - } } diff --git a/CanvasApp/WebDebugLog.js b/CanvasApp/WebDebugLog.js index 6a758304e..2a6bc1af1 100644 --- a/CanvasApp/WebDebugLog.js +++ b/CanvasApp/WebDebugLog.js @@ -1,21 +1,21 @@ - function newWebDebugLog () { - try { - let thisObject = { - write: write, - fileName: 'undefined' - } +function newWebDebugLog() { + try { + let thisObject = { + write: write, + fileName: 'undefined' + } - return thisObject + return thisObject - function write (pText) { - console.log(spacePad(thisObject.fileName, 50) + ' : ' + pText) + function write(pText) { + console.log(spacePad(thisObject.fileName, 50) + ' : ' + pText) - function spacePad (str, max) { - str = str.toString() - return str.length < max ? spacePad(' ' + str, max) : str - } - } - } catch (err) { - console.log(spacePad(MODULE_NAME, 50) + ' : ' + '[ERROR] WebDebugLog --> err = ' + err.stack) - } - } + function spacePad(str, max) { + str = str.toString() + return str.length < max ? spacePad(' ' + str, max) : str + } + } + } catch (err) { + console.log(spacePad(MODULE_NAME, 50) + ' : ' + '[ERROR] WebDebugLog --> err = ' + err.stack) + } +} diff --git a/ConceptSchema.json b/ConceptSchema.json new file mode 100644 index 000000000..1645efe1d --- /dev/null +++ b/ConceptSchema.json @@ -0,0 +1,6 @@ +[ + { + "type": "Concept 1", + "definition": "This is concept 1 definition" + } +] \ No newline at end of file diff --git a/Data-Mines/Masters.json b/Data-Mines/Masters.json deleted file mode 100644 index c565c91b1..000000000 --- a/Data-Mines/Masters.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"Data Mine","name":"Masters","code":"{\n\"codeName\": \"Masters\"\n}","sensorBots":[{"type":"Sensor Bot","name":"Exchange Raw Data","code":"{\n\"codeName\": \"Exchange-Raw-Data\",\n\"repo\": \"Exchange-Raw-Data-Sensor-Bot\"\n}","processes":[{"type":"Process Definition","name":"Historic-Trades","code":"{\n \"codeName\": \"Historic-Trades\",\n \"description\": \"Retrieves and saves the historical trades in batches going backwards from the current time until reaching the begining of the market.\",\n \"startMode\": {\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 60000,\n \"retryWaitTime\": 10000\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[],"id":"e3008f15-43ae-4452-9c28-bfbb6c1a5e84","savedPayload":{"position":{"x":13889.892304785908,"y":17976.7326423862},"targetPosition":{"x":13788.99537092664,"y":18353.285125876908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Self Reference","code":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"f796022a-7871-4bde-bcc7-bcf2818f1eaf","savedPayload":{"position":{"x":14299.325525762739,"y":17993.12379366583},"targetPosition":{"x":13938.17907937083,"y":17993.12379366583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"116834de-6646-4387-9f4b-4f711cea9235"}}}],"dataDependencies":[],"id":"1332b41e-7cd2-4e69-a40a-39ea47df67b5","savedPayload":{"position":{"x":13938.17907937083,"y":17993.12379366583},"targetPosition":{"x":13788.99537092664,"y":18353.285125876908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"116834de-6646-4387-9f4b-4f711cea9235","savedPayload":{"position":{"x":13983.913279342734,"y":18015.677405195172},"targetPosition":{"x":13788.99537092664,"y":18353.285125876908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"New Execution Started Event","id":"a9ea7169-fcd8-48c3-b0a9-b4e8941aa170","savedPayload":{"position":{"x":14026.312379860185,"y":18044.00757842793},"targetPosition":{"x":13788.99537092664,"y":18353.285125876908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"51908884-c7a2-46ca-8a55-209070ae5fa6","savedPayload":{"position":{"x":14064.650920558077,"y":18077.62957624547},"targetPosition":{"x":13788.99537092664,"y":18353.285125876908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7a6a9399-474f-4a93-bcbd-28a594ef1943","savedPayload":{"position":{"x":14351.93363503598,"y":18425.400341491753},"targetPosition":{"x":13888.04337325749,"y":18696.024787447222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Historic-OHLCVs","code":"{\n \"codeName\": \"Historic-OHLCVs\",\n \"description\": \"Retrieves and saves historical maket data\",\n \"startMode\": {\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 60000,\n \"retryWaitTime\": 10000\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[],"id":"dfe2556e-a765-4e38-9d30-7f91090c0069","savedPayload":{"position":{"x":14546.018334597831,"y":18039.39680205973},"targetPosition":{"x":14407.127481538195,"y":18558.43550715096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","code":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"ea39c98b-18e2-44ce-9f7f-86a8a76a688a","savedPayload":{"position":{"x":15166.311606430181,"y":17799.23389726798},"targetPosition":{"x":14786.809197800923,"y":18178.59853864078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[],"id":"5c7fae5a-6da6-4864-a167-f2f21d578c72","savedPayload":{"position":{"x":14786.809197800923,"y":18178.59853864078},"targetPosition":{"x":14407.127481538195,"y":18558.43550715096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e","savedPayload":{"position":{"x":14925.825887173529,"y":18419.19730600594},"targetPosition":{"x":14407.127481538195,"y":18558.43550715096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"","id":"957e7e3a-b167-40be-93b5-9ba4ceff56e5","savedPayload":{"position":{"x":14926.136265452975,"y":18696.814270993404},"targetPosition":{"x":14407.127481538195,"y":18558.43550715096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"fe40a546-43ee-49df-908a-7e72f598f0cd","savedPayload":{"position":{"x":14787.608462239068,"y":18937.48007183581},"targetPosition":{"x":14407.127481538195,"y":18558.43550715096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc","savedPayload":{"position":{"x":14407.127481538195,"y":18558.43550715096},"targetPosition":{"x":13888.04337325749,"y":18696.024787447222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Trades","code":"{\n\"codeName\": \"Trades\"\n}","datasets":[{"type":"Dataset Definition","name":"Trades","code":"{\n\"codeName\": \"Trades\"\n}","id":"fbb7c17e-a909-4fa2-b3c5-eb8ca86297c4","savedPayload":{"position":{"x":14693.48387049087,"y":18696.32606964758},"targetPosition":{"x":14424.621773050454,"y":18696.69190297908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"id":"38dbb942-a15b-450b-a867-02a94030965f","savedPayload":{"position":{"x":14424.621773050454,"y":18696.69190297908},"targetPosition":{"x":13888.04337325749,"y":18696.024787447222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition","name":"Candles","code":"{\n\"codeName\": \"Candles\"\n}","datasets":[{"type":"Dataset Definition","name":"One-Min","code":"{\n\"codeName\": \"One-Min\"\n}","id":"1c3696e4-c28e-4744-9100-706d6dce0c3c","savedPayload":{"position":{"x":14665.351418750992,"y":18904.1538712637},"targetPosition":{"x":14406.088025471483,"y":18834.910096400872},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc","savedPayload":{"position":{"x":14406.088025471483,"y":18834.910096400872},"targetPosition":{"x":13888.04337325749,"y":18696.024787447222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition","name":"Volumes","code":"{\n\"codeName\": \"Volumes\"\n}","datasets":[{"type":"Dataset Definition","name":"One-Min","code":"{\n\"codeName\": \"One-Min\"\n}","id":"73dcce78-c223-49e1-a93c-7e1ab7283f86","savedPayload":{"position":{"x":14584.8179468983,"y":19098.805911627267},"targetPosition":{"x":14352.22075687586,"y":18964.279757837634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"id":"3a43c6f3-bac0-404e-865f-822eb48c8660","savedPayload":{"position":{"x":14352.22075687586,"y":18964.279757837634},"targetPosition":{"x":13888.04337325749,"y":18696.024787447222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"af924204-66a2-47d4-9910-66ab78acb06f","savedPayload":{"position":{"x":13888.04337325749,"y":18696.024787447222},"targetPosition":{"x":12814.422748313864,"y":18696.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Sensor Bot","name":"Webhooks","code":"{\n\"codeName\": \"Webhooks\",\n\"repo\": \"Webhooks-Sensor-Bot\"\n}","processes":[{"type":"Process Definition","name":"Check-Webhook","code":"{\n \"codeName\": \"Check-Webhook\",\n \"description\": \"Retrieves and saves Webhooks Messages Received at the Web Server\",\n \"startMode\": {\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 30000,\n \"retryWaitTime\": 10000\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[],"id":"9b932f7d-fee5-4d42-97a3-beda58fa0322","savedPayload":{"position":{"x":15481.796981297844,"y":19570.59812328247},"targetPosition":{"x":14759.177576953038,"y":19728.0001170108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Webhooks Check-Webhook","code":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"d6965837-6a98-474c-aee3-8053ac436b9c","savedPayload":{"position":{"x":16235.81365034445,"y":19798.189139596565},"targetPosition":{"x":15497.567720210294,"y":19763.14329886543},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"57bc4c48-663d-4944-8b5b-b09cf6ae3578"}}}],"dataDependencies":[],"id":"ff50f64f-12f6-49e7-83a6-659109b89a6a","savedPayload":{"position":{"x":15497.567720210294,"y":19763.14329886543},"targetPosition":{"x":14759.177576953038,"y":19728.0001170108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"57bc4c48-663d-4944-8b5b-b09cf6ae3578","savedPayload":{"position":{"x":15463.297878807747,"y":19953.00746510133},"targetPosition":{"x":14759.177576953038,"y":19728.0001170108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"","id":"ed7c8dbc-8f81-4a3f-a525-a839f3b30440","savedPayload":{"position":{"x":15381.050578885586,"y":20127.57373275437},"targetPosition":{"x":14759.177576953038,"y":19728.0001170108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1982bdf9-4889-430b-a004-7760307852b9","savedPayload":{"position":{"x":15256.355822767233,"y":20274.787824160176},"targetPosition":{"x":14759.177576953038,"y":19728.0001170108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"69f37820-ab16-4e19-bfd8-386dd6e249a3","savedPayload":{"position":{"x":14759.177576953038,"y":19728.0001170108},"targetPosition":{"x":14054.693683517542,"y":19502.973295966207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"External Signals","code":"{\n\"codeName\": \"External-Signals\",\n \"singularVariableName\": \"externalSignal\",\n \"pluralVariableName\": \"externalSignals\"\n}","datasets":[{"type":"Dataset Definition","name":"Single File","code":"{\n \"codeName\": \"Single-File\",\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.json\",\n \"validTimeFrames\": [\n \"Any Time Frame\"\n ]\n }","id":"c52d1012-5e3b-41a0-b5af-84098b0594bf","savedPayload":{"position":{"x":15173.593718937474,"y":20450.000260046603},"targetPosition":{"x":14551.572231515223,"y":20050.016361277478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Timestamp","code":"{ \n\"codeName\": \"timestamp\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"d27e836f-1cea-41e1-b4e8-c411fb50addc","savedPayload":{"position":{"x":15201.059270396028,"y":20969.986227656624},"targetPosition":{"x":14889.794026516287,"y":20707.02982674697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Source","code":"{ \n\"codeName\": \"source\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"6aea41d8-153e-4196-9a55-ec40700c6c0e","savedPayload":{"position":{"x":15080.123088697355,"y":21076.428392007532},"targetPosition":{"x":14889.794026516287,"y":20707.02982674697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Message","code":"{ \n\"codeName\": \"message\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"7c1feeae-6fdb-4886-aeb7-f16d10433acd","savedPayload":{"position":{"x":14923.18671737317,"y":21113.264041243292},"targetPosition":{"x":14889.794026516287,"y":20707.02982674697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6e1d5a0a-c082-4916-bce1-3a8a1651ff02","savedPayload":{"position":{"x":14890.256575649073,"y":20707.40667280719},"targetPosition":{"x":14551.572231515223,"y":20050.016361277478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"29196db8-4c41-47ea-be7e-952cd9be9a0b","savedPayload":{"position":{"x":14551.572231515223,"y":20050.016361277478},"targetPosition":{"x":14054.693683517542,"y":19502.973295966207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f0d7c835-cf51-447a-8d00-1aeb854bc909","savedPayload":{"position":{"x":14123.862593745987,"y":19383.154765077343},"targetPosition":{"x":12814.422748313864,"y":18696.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"indicatorBots":[{"type":"Indicator Bot","name":"One Min Candles","code":"{\n\"codeName\": \"One-Min-Candles\",\n\"repo\": \"One-Min-Candles-Indicator-Bot\"\n}","processes":[{"type":"Process Definition","name":"Single-Period-Daily","code":"{\n \"codeName\": \"Single-Period-Daily\",\n \"description\": \"Produces two data-sets with candles and volumes.\",\n \"startMode\": {\n \"noTime\": {\n \"run\": \"true\"\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000\n }","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[],"id":"597f9031-4a09-4bf1-b231-cd3de597ca5e","savedPayload":{"position":{"x":15171.130056135531,"y":19110.144034165838},"targetPosition":{"x":14350.88612760958,"y":19218.13119598718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Market Ending Point","code":"{\n \"mainUtility\": \"Market Ending Point\"\n}","id":"429872d3-959d-4b7a-af3e-baf9d7c2f364","savedPayload":{"position":{"x":15989.632933673003,"y":19056.72872331092},"targetPosition":{"x":15178.207908660892,"y":19218.13119598718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"c542a73e-a350-431f-ad3e-10f3ebef8ec7"}}},{"type":"Status Dependency","name":"Market Starting Point","code":"{\n \"mainUtility\": \"Market Starting Point\"\n}","id":"728daa6a-9297-4f53-974f-fa725d0aca2d","savedPayload":{"position":{"x":16005.529689712204,"y":19218.13119598718},"targetPosition":{"x":15178.207908660892,"y":19218.13119598718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"c542a73e-a350-431f-ad3e-10f3ebef8ec7"}}},{"type":"Status Dependency","name":"Self Reference","code":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"4aff6e01-e4ce-48e5-b1da-b2172599b36a","savedPayload":{"position":{"x":14370.970724070547,"y":19111.85640449044},"targetPosition":{"x":15178.207908660892,"y":19218.13119598718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"deaa7a7d-b186-42d8-ad64-aab8a7638ca9"}}}],"dataDependencies":[],"id":"36df0b5c-0849-4310-bae0-5ea595b335d3","savedPayload":{"position":{"x":15178.207908660892,"y":19218.13119598718},"targetPosition":{"x":14350.88612760958,"y":19218.13119598718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"deaa7a7d-b186-42d8-ad64-aab8a7638ca9","savedPayload":{"position":{"x":15171.130056135531,"y":19326.11835780852},"targetPosition":{"x":14350.88612760958,"y":19218.13119598718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"New Execution Started Event","id":"a81eb239-9b38-4a3e-b8c3-061b7462a624","savedPayload":{"position":{"x":15150.017602578511,"y":19432.257829351394},"targetPosition":{"x":14350.88612760958,"y":19218.13119598718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"0c63c520-011d-4c1f-95c1-c966a92a583b"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f3b263bb-1051-40d8-a69a-d8640cf9afbe","savedPayload":{"position":{"x":15115.23178792367,"y":19534.733534830295},"targetPosition":{"x":14350.88612760958,"y":19218.13119598718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"661e048c-e9e5-435e-bdf9-53dce5ebfa0f","savedPayload":{"position":{"x":14350.88612760958,"y":19218.13119598718},"targetPosition":{"x":13530.642199083628,"y":19110.144034165838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Candles","code":"{\n\"codeName\": \"Candles\"\n}","datasets":[{"type":"Dataset Definition","name":"One-Min","code":"{\n\"codeName\": \"One-Min\"\n}","id":"20d5740b-5711-4b8c-9675-a5391f5ba245","savedPayload":{"position":{"x":14247.123878578252,"y":19523.804924691496},"targetPosition":{"x":13888.88303883094,"y":19316.974479428667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"3b42a93e-c933-420d-9504-25092a0d1279","savedPayload":{"position":{"x":13888.88303883094,"y":19316.974479428667},"targetPosition":{"x":13530.642199083628,"y":19110.144034165838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition","name":"Volumes","code":"{\n\"codeName\": \"Volumes\"\n}","datasets":[{"type":"Dataset Definition","name":"One-Min","code":"{\n\"codeName\": \"One-Min\"\n}","id":"2788ed30-ed62-4638-9a1d-35dc7e826870","savedPayload":{"position":{"x":14034.283788766465,"y":19766.50253265859},"targetPosition":{"x":13782.462993925046,"y":19438.323283412214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"4e714023-0cfd-4945-a573-52922711cd09","savedPayload":{"position":{"x":13782.462993925046,"y":19438.323283412214},"targetPosition":{"x":13530.642199083628,"y":19110.144034165838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"952e8327-4c9a-422a-bf64-cd773ccc36dd","savedPayload":{"position":{"x":13583.516511354299,"y":19809.832490945035},"targetPosition":{"x":12814.422748313864,"y":18696.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Indicator Bot","name":"Candles Volumes","code":"{\n\"codeName\": \"Candles-Volumes\",\n\"repo\": \"Candles-Volumes-Indicator-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Produces different files with multi-period candles and volumes for entire markets.\",\n \"startMode\": {\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000\n }","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Candles","id":"5d82f670-e692-40ca-8d24-9273d0f5e08f","savedPayload":{"position":{"x":15079.054859307944,"y":20019.026319560384},"targetPosition":{"x":14635.111254784282,"y":20054.424306924448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}},{"type":"Output Dataset","name":"Multi-Period-Market Volumes","id":"b198c9ea-3141-4407-9953-2b2ebb672450","savedPayload":{"position":{"x":15072.924922491144,"y":20135.815676707032},"targetPosition":{"x":14635.111254784282,"y":20054.424306924448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"9bf0483c-4825-4a46-9cf4-1b5262579fc1"}}}],"id":"d529ec20-8461-40d6-9dc3-14f9ab8b64be","savedPayload":{"position":{"x":14635.111254784282,"y":20054.424306924448},"targetPosition":{"x":13746.039416827263,"y":20008.669561369417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","code":"{\n \"mainUtility\": \"Market Starting Point\"\n}","id":"ff665e30-1d31-429b-88dc-f5e623b9a5f8","savedPayload":{"position":{"x":15507.909092836831,"y":20100.707604191473},"targetPosition":{"x":14620.871272735476,"y":20171.04133886665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","code":"{\n \"mainUtility\": \"Market Ending Point\"\n}","id":"6d911e31-cef3-4c4f-82e3-d7b9b1ba9541","savedPayload":{"position":{"x":15509.50411783527,"y":20217.366584340325},"targetPosition":{"x":14620.871272735476,"y":20171.04133886665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","code":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"957ffa57-d4df-4866-b99f-86cf8add689d","savedPayload":{"position":{"x":15495.809852359806,"y":20333.119486575677},"targetPosition":{"x":14620.871272735476,"y":20171.04133886665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles One-Min","id":"982efbd9-6a54-4322-9a0f-52a6483d67d9","savedPayload":{"position":{"x":15467.09729995105,"y":20446.08344022905},"targetPosition":{"x":14620.871272735476,"y":20171.04133886665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"One-Min","id":"1c3696e4-c28e-4744-9100-706d6dce0c3c"}}},{"type":"Data Dependency","name":"Volumes One-Min","id":"fe28906a-90b1-4a5e-88b1-110d994cb397","savedPayload":{"position":{"x":15423.72261330222,"y":20554.599282190844},"targetPosition":{"x":14620.871272735476,"y":20171.04133886665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"One-Min","id":"73dcce78-c223-49e1-a93c-7e1ab7283f86"}}}],"id":"09645f1b-96c2-4dbb-a99f-803c8ebe7a00","savedPayload":{"position":{"x":14620.871272735476,"y":20171.04133886665},"targetPosition":{"x":13746.039416827263,"y":20008.669561369417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d","savedPayload":{"position":{"x":14592.212365353636,"y":20283.77389011831},"targetPosition":{"x":13746.039416827263,"y":20008.669561369417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Exchange Raw Data Historic-OHLCVs","id":"c086e5db-7777-45d9-bb4d-381f9566341f","savedPayload":{"position":{"x":14549.038546364089,"y":20391.95638653458},"targetPosition":{"x":13746.039416827263,"y":20008.669561369417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"fe40a546-43ee-49df-908a-7e72f598f0cd"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5","savedPayload":{"position":{"x":14491.90183877628,"y":20493.851190239235},"targetPosition":{"x":13746.039416827263,"y":20008.669561369417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1","savedPayload":{"position":{"x":13037.535115921186,"y":20077.082552781063},"targetPosition":{"x":12667.347381894795,"y":19717.680945807875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Produces different files with multi-period candles and volumes on a daily format.\",\n \"startMode\": {\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000\n }","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily Candles","id":"f60fba20-b9d6-4362-b667-020096340e38","savedPayload":{"position":{"x":14602.55222732306,"y":21097.789308237243},"targetPosition":{"x":14222.525975804903,"y":20865.479753310457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Volumes","id":"a507b588-ce8f-4d5c-9053-d130015560b5","savedPayload":{"position":{"x":14528.821323391208,"y":21188.819449437662},"targetPosition":{"x":14222.525975804903,"y":20865.479753310457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"2e683057-f911-4105-bc77-16f2706d1915"}}}],"id":"4d806ace-6f82-449d-b908-afcd7d029a68","savedPayload":{"position":{"x":14222.525975804903,"y":20865.479753310457},"targetPosition":{"x":13530.231743659113,"y":20305.70063708088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","code":"{\n \"mainUtility\": \"Market Starting Point\"\n}","id":"14730a16-e01e-4bc5-9886-0eed386152f2","savedPayload":{"position":{"x":14901.504676459292,"y":21415.857676284217},"targetPosition":{"x":14142.474038010932,"y":20951.425617321995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","code":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"1baff60d-84c4-4e27-b03d-663158ca6bba","savedPayload":{"position":{"x":14834.103694508038,"y":21511.33072911729},"targetPosition":{"x":14142.474038010932,"y":20951.425617321995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","code":"{\n \"mainUtility\": \"Market Ending Point\"\n}","id":"4e77c03b-367c-450c-82ca-c7211c2fab8e","savedPayload":{"position":{"x":14754.983700037994,"y":21596.92387202577},"targetPosition":{"x":14142.474038010932,"y":20951.425617321995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles One-Min","id":"2d324ca2-acc5-4390-ae37-0d350fe8e8fa","savedPayload":{"position":{"x":14665.35380437001,"y":21671.43355403292},"targetPosition":{"x":14142.474038010932,"y":20951.425617321995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"One-Min","id":"1c3696e4-c28e-4744-9100-706d6dce0c3c"}}},{"type":"Data Dependency","name":"Volumes One-Min","id":"4051019a-9548-4541-a7e7-11097fe3f103","savedPayload":{"position":{"x":14566.474157360826,"y":21733.728624027386},"targetPosition":{"x":14142.474038010932,"y":20951.425617321995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"One-Min","id":"73dcce78-c223-49e1-a93c-7e1ab7283f86"}}}],"id":"1e4c5a40-0c64-423f-968d-31b178056cf3","savedPayload":{"position":{"x":14142.474038010932,"y":20951.425617321995},"targetPosition":{"x":13530.231743659113,"y":20305.70063708088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7","savedPayload":{"position":{"x":14053.03833403712,"y":21025.773397119017},"targetPosition":{"x":13530.231743659113,"y":20305.70063708088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Exchange Raw Data Historic-OHLCVs","id":"fa826f1b-2a52-4542-89b2-7190e137ef56","savedPayload":{"position":{"x":13954.541347983673,"y":21087.910431713473},"targetPosition":{"x":13530.231743659113,"y":20305.70063708088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"fe40a546-43ee-49df-908a-7e72f598f0cd"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3","savedPayload":{"position":{"x":13848.446554901602,"y":21136.763369488137},"targetPosition":{"x":13530.231743659113,"y":20305.70063708088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d","savedPayload":{"position":{"x":12755.03299907897,"y":20226.19762339036},"targetPosition":{"x":12667.347381894795,"y":19717.680945807875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Candles","code":"{\n \"codeName\": \"Candles\",\n \"singularVariableName\": \"candle\",\n \"pluralVariableName\": \"candles\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [\n \"24-hs\",\n \"12-hs\",\n \"08-hs\",\n \"06-hs\",\n \"04-hs\",\n \"03-hs\",\n \"02-hs\",\n \"01-hs\"\n ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Candles-Volumes/Output/Candles/Multi-Period-Market/@Period\",\n \"fileName\": \"Data.json\"\n}","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8","savedPayload":{"position":{"x":12348.931025023483,"y":20690.200610936652},"targetPosition":{"x":12439.669953867791,"y":20180.196624073196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [\n \"45-min\",\n \"40-min\",\n \"30-min\",\n \"20-min\",\n \"15-min\",\n \"10-min\",\n \"05-min\",\n \"04-min\",\n \"03-min\",\n \"02-min\",\n \"01-min\"\n ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Candles-Volumes/Output/Candles/Multi-Period-Daily/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Candles-Volumes/Output/Candles/Multi-Period-Daily\",\n \"fileName\": \"Data.Range.json\"\n }\n}","id":"678a567c-f08d-49b9-813b-4e54fd6afadb","savedPayload":{"position":{"x":12227.550148359356,"y":20652.59210769233},"targetPosition":{"x":12439.669953867791,"y":20180.196624073196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Min","code":"{\n \"codeName\": \"min\",\n \"isString\": false\n}","id":"95264fe8-6089-4a70-bf6d-158bc43c04f3","savedPayload":{"position":{"x":12163.963507371667,"y":21003.731575619277},"targetPosition":{"x":11913.709680420527,"y":21067.223486309194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Max","code":"{\n \"codeName\": \"max\",\n \"isString\": false\n}","id":"b716bfaa-d785-45e3-b8ca-370284ac901c","savedPayload":{"position":{"x":12135.88488430442,"y":21199.38132114948},"targetPosition":{"x":11913.709680420527,"y":21067.223486309194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Open","code":"{\n \"codeName\": \"open\",\n \"isString\": false\n}","id":"7d809ac3-9b7d-4687-83bb-40b851e522d0","savedPayload":{"position":{"x":11977.422655345077,"y":21317.90515638956},"targetPosition":{"x":11913.709680420527,"y":21067.223486309194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Close","code":"{\n \"codeName\": \"close\",\n \"isString\": false\n}","id":"b0ea41f8-03da-454e-8d0f-bb0f2fc5d328","savedPayload":{"position":{"x":11781.773537671519,"y":21289.727664117534},"targetPosition":{"x":11913.709680420527,"y":21067.223486309194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"21b8be1f-0437-4fc8-9bc0-31779a9ea47e","savedPayload":{"position":{"x":11663.05300362209,"y":21131.348176621377},"targetPosition":{"x":11913.709680420527,"y":21067.223486309194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"91ba9479-fdb4-42b7-ad02-1b2ac24b13d6","savedPayload":{"position":{"x":11689.676059721949,"y":20935.047929643504},"targetPosition":{"x":11913.709680420527,"y":21067.223486309194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Direction","code":"{\n \"codeName\": \"direction\",\n \"isString\": true,\n \"isCalculated\": true,\n \"possibleValues\": [\"Up\", \"Down\", \"Side\"]\n}","formula":{"type":"Formula","code":"variable.direction","id":"becdde12-efb6-464b-bfb0-ac98e3c2b8e3","savedPayload":{"position":{"x":11785.272609287871,"y":20567.10053431463},"targetPosition":{"x":11849.604305785131,"y":20817.20369388631},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aafd0a4b-da5d-40c1-94b8-e79f0b1eca9b","savedPayload":{"position":{"x":11849.604305785131,"y":20817.20369388631},"targetPosition":{"x":11913.709680420527,"y":21067.223486309194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"65ea4bea-6b8f-4df9-8716-d8af0ce2044c","savedPayload":{"position":{"x":11913.709680420527,"y":21067.223486309194},"targetPosition":{"x":12439.669953867791,"y":20180.196624073196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"calculations":{"type":"Calculations Procedure","name":"New Calculations Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"let candle = product.candle\n\nif (candle.close > candle.open) {\n variable.direction = \"Up\"\n}\n\nif (candle.close < candle.open) {\n variable.direction = \"Down\"\n}\n\nif (candle.close === candle.open) {\n variable.direction = \"Side\"\n}","id":"798bc1e0-90d2-435f-980d-b457b30046dd","savedPayload":{"position":{"x":11783.504531787825,"y":20973.620486299656},"targetPosition":{"x":11945.882286021331,"y":20774.203973428805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"abbcb291-c048-49e7-b0d0-fdf20891faea","savedPayload":{"position":{"x":11945.882286021331,"y":20774.203973428805},"targetPosition":{"x":12110.175838559015,"y":20576.38775405751},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f7846b50-ae42-46b4-aeb6-9f6217477a1b","savedPayload":{"position":{"x":12110.175838559015,"y":20576.38775405751},"targetPosition":{"x":12439.669953867791,"y":20180.196624073196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7","savedPayload":{"position":{"x":12439.542590281177,"y":20180.41925896117},"targetPosition":{"x":12667.347381894795,"y":19717.680945807875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Candles","id":"0aed75a3-fee8-4ddc-97ff-b6768e6f12a3"}}},{"type":"Product Definition","name":"Volumes","code":"{\n \"codeName\": \"Volumes\",\n \"singularVariableName\": \"volume\",\n \"pluralVariableName\": \"volumes\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [\n \"45-min\",\n \"40-min\",\n \"30-min\",\n \"20-min\",\n \"15-min\",\n \"10-min\",\n \"05-min\",\n \"04-min\",\n \"03-min\",\n \"02-min\",\n \"01-min\"\n ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Candles-Volumes/Output/Volumes/Multi-Period-Daily/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Candles-Volumes/Output/Volumes/Multi-Period-Daily\",\n \"fileName\": \"Data.Range.json\"\n }\n}","id":"2e683057-f911-4105-bc77-16f2706d1915","savedPayload":{"position":{"x":12587.814067322724,"y":20846.44041483356},"targetPosition":{"x":12832.541620701519,"y":20305.288535608055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [\n \"24-hs\",\n \"12-hs\",\n \"08-hs\",\n \"06-hs\",\n \"04-hs\",\n \"03-hs\",\n \"02-hs\",\n \"01-hs\"\n ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Candles-Volumes/Output/Volumes/Multi-Period-Market/@Period\",\n \"fileName\": \"Data.json\"\n}","id":"9bf0483c-4825-4a46-9cf4-1b5262579fc1","savedPayload":{"position":{"x":12480.01947608726,"y":20783.166812194668},"targetPosition":{"x":12832.541620701519,"y":20305.288535608055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Buy","code":"{\n \"codeName\": \"buy\",\n \"isString\": false\n}","id":"bc8405e2-4a80-416c-bccf-1334e53d371b","savedPayload":{"position":{"x":12372.678230319661,"y":21018.67377151169},"targetPosition":{"x":12178.719198349554,"y":20909.518487242807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Sell","code":"{\n \"codeName\": \"sell\",\n \"isString\": false\n}","id":"f08f11a8-d092-4b7e-a7e6-c67adac04a33","savedPayload":{"position":{"x":12135.088255096052,"y":21128.241954181376},"targetPosition":{"x":12178.719198349554,"y":20909.518487242807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"8e2624b0-48ee-4d00-821e-0c6a72b3838f","savedPayload":{"position":{"x":11957.215375492144,"y":20935.73821511195},"targetPosition":{"x":12178.719198349554,"y":20909.518487242807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"62964ed9-14c4-442d-b272-602d0c714654","savedPayload":{"position":{"x":12085.250002458812,"y":20707.256824372267},"targetPosition":{"x":12178.719198349554,"y":20909.518487242807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7edf78c7-c63d-4e7e-a643-99aaf52ac967","savedPayload":{"position":{"x":12178.719198349554,"y":20909.518487242807},"targetPosition":{"x":12832.541620701519,"y":20305.288535608055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f","savedPayload":{"position":{"x":12211.116269693095,"y":19958.173903599913},"targetPosition":{"x":12667.347381894795,"y":19717.680945807875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Volumes","id":"a6177fb7-51d1-4b7c-bcbb-04861a5bf0c1"}}}],"id":"285a4618-0423-4ac9-9df9-7a78be6fd915","savedPayload":{"position":{"x":12938.621860565034,"y":19712.96487191677},"targetPosition":{"x":12814.422748313864,"y":18696.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"l"}}},{"type":"Indicator Bot","name":"Bollinger Bands","code":"{\n\"codeName\": \"Bollinger-Bands\",\n\"repo\": \"Bollinger-Bands-Indicator-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Produces a single file for each time frame covering all the market.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000\n }","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Bollinger Bands","id":"b8c1f684-7327-488b-8c76-4a73d811e312","savedPayload":{"position":{"x":12199.670040952338,"y":21513.91266369345},"targetPosition":{"x":12012.038144084569,"y":21061.69376513836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"f5b2a7d8-fc32-44a3-a002-9b0fc30a9719"}}},{"type":"Output Dataset","name":"Multi-Period-Market Percentage Bandwidth","id":"fa1205c0-3b6e-4064-aca4-ffdaba7e1bd4","savedPayload":{"position":{"x":12075.495788916554,"y":21547.195059568796},"targetPosition":{"x":12012.038144084569,"y":21061.69376513836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"207e9481-0730-4304-a938-cfe223d70856"}}}],"id":"72887b4d-8868-4f0c-a051-81b83c366c99","savedPayload":{"position":{"x":12012.038144084569,"y":21061.69376513836},"targetPosition":{"x":11758.246054606356,"y":20116.401342376717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Bollinger Bands Multi-Period-Market","code":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"603f6167-ef54-4464-9b7b-5ff7f59c24e7","savedPayload":{"position":{"x":12199.996429087752,"y":22012.455674966764},"targetPosition":{"x":11885.519804998106,"y":21086.250447014914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"4f8197fa-2627-46df-bd36-7d30fdb12d8c"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","code":"{\n \"mainUtility\": \"Market Ending Point\"\n}","id":"79c51f8f-95eb-451c-98ac-cce4028e23e2","savedPayload":{"position":{"x":12013.060850873375,"y":22056.053210310492},"targetPosition":{"x":11885.519804998106,"y":21086.250447014914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"25d943b0-45aa-45b3-b8b1-f83d5a8b636f","savedPayload":{"position":{"x":11821.427405194027,"y":22062.29242691871},"targetPosition":{"x":11885.519804998106,"y":21086.250447014914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"id":"bd55a584-c9dd-4f2e-836c-a34a16ef01dc","savedPayload":{"position":{"x":11885.519804998106,"y":21086.250447014914},"targetPosition":{"x":11758.246054606356,"y":20116.401342376717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"4f8197fa-2627-46df-bd36-7d30fdb12d8c","savedPayload":{"position":{"x":11758.189820872454,"y":21094.59676976624},"targetPosition":{"x":11758.246054606356,"y":20116.401342376717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"a2cf5c7f-ffbf-4c38-9640-699fd3a37454","savedPayload":{"position":{"x":11630.491747354496,"y":21086.225055649542},"targetPosition":{"x":11758.246054606356,"y":20116.401342376717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"4a9c8cc7-0ebf-43eb-b7f9-0b280630ff67","savedPayload":{"position":{"x":11504.697637093655,"y":21061.147785245994},"targetPosition":{"x":11758.246054606356,"y":20116.401342376717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"id":"941a0543-0cc0-4a5d-a782-728d2835c100","savedPayload":{"position":{"x":12168.464736778491,"y":20285.847026614316},"targetPosition":{"x":12026.128747105688,"y":19674.097695521068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Produces a Daily File at each time frame.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000\n }","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily Bollinger Bands","id":"1f8cdcbe-c7dc-49fd-b106-e59bb4fb4ad9","savedPayload":{"position":{"x":10895.686216503595,"y":21377.2737664041},"targetPosition":{"x":11009.516726875412,"y":20901.046074880804},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"506104fa-e99a-4a46-930e-176bce311aff"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Percentage Bandwidth","id":"6362cf0d-c71e-4d08-8dea-c9b8d5d0e38b","savedPayload":{"position":{"x":10775.642050656666,"y":21331.19272299007},"targetPosition":{"x":11009.516726875412,"y":20901.046074880804},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"e60d62dd-87f7-4f2d-ac21-3ac5c30a50ea"}}}],"id":"3ab24229-73fe-439a-9684-986aac94f220","savedPayload":{"position":{"x":11009.516726875412,"y":20901.046074880804},"targetPosition":{"x":11359.658012576063,"y":19987.0000046161},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","code":"{\n \"mainUtility\": \"Market Starting Point\"\n}","id":"aee6dca7-b8e8-4a33-9bc6-37830080a3a2","savedPayload":{"position":{"x":10639.924546076638,"y":21791.44605357089},"targetPosition":{"x":10892.716340791567,"y":20846.521679049765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","code":"{\n \"mainUtility\": \"Market Ending Point\"\n}","id":"40701c78-7ace-40a8-a943-7b76d73147ce","savedPayload":{"position":{"x":10494.940241007263,"y":21740.14216842231},"targetPosition":{"x":10892.716340791567,"y":20846.521679049765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Bollinger Bands Multi-Period-Daily","code":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"442d1d63-f28a-4bff-8dda-9bab7a5ad708","savedPayload":{"position":{"x":10359.93616744499,"y":21666.828192017256},"targetPosition":{"x":10892.716340791567,"y":20846.521679049765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"7323fef7-870a-48b6-b96f-586111253b40"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"603dbf64-0ee0-45b6-a1b8-14065b398893","savedPayload":{"position":{"x":10237.960744892214,"y":21573.165546424883},"targetPosition":{"x":10892.716340791567,"y":20846.521679049765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"id":"312620aa-b556-43c4-9603-6a80acb7ab00","savedPayload":{"position":{"x":10892.716340791567,"y":20846.521679049765},"targetPosition":{"x":11359.658012576063,"y":19987.0000046161},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"7323fef7-870a-48b6-b96f-586111253b40","savedPayload":{"position":{"x":10784.537583761383,"y":20778.27703378184},"targetPosition":{"x":11359.658012576063,"y":19987.0000046161},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"7ec89351-b852-416a-961a-7e66717c6473","savedPayload":{"position":{"x":10686.10983399131,"y":20696.422976021524},"targetPosition":{"x":11359.658012576063,"y":19987.0000046161},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"acebc3ed-4f3f-4a4b-b403-f16cbe987dde","savedPayload":{"position":{"x":10599.029621323312,"y":20602.17310800717},"targetPosition":{"x":11359.658012576063,"y":19987.0000046161},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca","savedPayload":{"position":{"x":11781.680155009211,"y":20252.678454663786},"targetPosition":{"x":12026.128747105688,"y":19674.097695521068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Bollinger Bands","code":"{\n\"codeName\": \"Bollinger-Bands\",\n\"singularVariableName\": \"bollingerBand\",\n\"pluralVariableName\": \"bollingerBands\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [\n \"24-hs\",\n \"12-hs\",\n \"08-hs\",\n \"06-hs\",\n \"04-hs\",\n \"03-hs\",\n \"02-hs\",\n \"01-hs\"\n ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Bollinger-Bands/Output/Bollinger-Bands/Multi-Period-Market/@Period\",\n \"fileName\": \"Data.json\"\n}","id":"f5b2a7d8-fc32-44a3-a002-9b0fc30a9719","savedPayload":{"position":{"x":11185.799979948139,"y":20548.480608060276},"targetPosition":{"x":11488.846622314846,"y":19998.346308904962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [\n \"45-min\",\n \"40-min\",\n \"30-min\",\n \"20-min\",\n \"15-min\",\n \"10-min\",\n \"05-min\",\n \"04-min\",\n \"03-min\",\n \"02-min\",\n \"01-min\"\n ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Bollinger-Bands/Output/Bollinger-Bands/Multi-Period-Daily/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Bollinger-Bands/Output/Bollinger-Bands/Multi-Period-Daily\",\n \"fileName\": \"Data.Range.json\"\n }\n}","id":"506104fa-e99a-4a46-930e-176bce311aff","savedPayload":{"position":{"x":11053.293066129767,"y":20450.74248442924},"targetPosition":{"x":11488.846622314846,"y":19998.346308904962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"1e7186ee-c481-401d-827f-a30ee7434d92","savedPayload":{"position":{"x":10718.641991967383,"y":20722.28252241716},"targetPosition":{"x":10413.920069355176,"y":20646.60650226351},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"15f90f2e-80f0-4575-94d8-6d8957eceee1","savedPayload":{"position":{"x":10575.976172826684,"y":20915.832750909976},"targetPosition":{"x":10413.920069355176,"y":20646.60650226351},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Moving Average","code":"{\n \"codeName\": \"movingAverage\",\n \"isString\": false\n}","id":"9786a9cd-1eff-4b5c-ae7c-1dde51659f82","savedPayload":{"position":{"x":10338.35347924241,"y":20951.724624835195},"targetPosition":{"x":10413.920069355176,"y":20646.60650226351},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Standard Deviation","code":"{\n \"codeName\": \"standardDeviation\",\n \"isString\": false\n}","id":"e92d7855-bb18-494e-ab37-a895bbcb8287","savedPayload":{"position":{"x":10144.753398765102,"y":20808.94375353071},"targetPosition":{"x":10413.920069355176,"y":20646.60650226351},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Deviation","code":"{\n \"codeName\": \"deviation\",\n \"isString\": false\n}","id":"03043530-caa1-416e-8303-840b732e516e","savedPayload":{"position":{"x":10108.779452472878,"y":20571.31453161852},"targetPosition":{"x":10413.920069355176,"y":20646.60650226351},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Direction","code":"{\n \"codeName\": \"direction\",\n \"isString\": true,\n \"isCalculated\": true,\n \"possibleValues\": [\"Up\", \"Down\", \"Side\"]\n}","formula":{"type":"Formula","code":"variable.direction","id":"f72926d9-c869-4b7c-ba1e-b36d134e2bc6","savedPayload":{"position":{"x":10089.191388410838,"y":20108.967877092335},"targetPosition":{"x":10251.50995503895,"y":20377.750269963664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"856f24c9-f5f1-491b-98e7-6e1d3c5c5874","savedPayload":{"position":{"x":10251.50995503895,"y":20377.750269963664},"targetPosition":{"x":10413.920069355176,"y":20646.60650226351},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Slope","code":"{\n \"codeName\": \"slope\",\n \"isString\": true,\n \"isCalculated\": true,\n \"possibleValues\": [\"Side\", \"Gentle\", \"Medium\", \"Steep\", \"Extreme\"]\n}","formula":{"type":"Formula","code":"variable.slope","id":"fac935fe-b448-4b34-aed7-b35f70808911","savedPayload":{"position":{"x":10564.04462536106,"y":20037.162268281085},"targetPosition":{"x":10489.088061907842,"y":20341.933232350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4c027b0c-da8a-4146-a51a-d0a7a126150b","savedPayload":{"position":{"x":10489.088061907842,"y":20341.933232350555},"targetPosition":{"x":10413.920069355176,"y":20646.60650226351},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b5a5ec97-7246-42bd-97e4-28fb4a148b2c","savedPayload":{"position":{"x":10413.920069355176,"y":20646.60650226351},"targetPosition":{"x":11488.846622314846,"y":19998.346308904962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"calculations":{"type":"Calculations Procedure","name":"New Calculations Procedure","initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"variable.lastMovingAverage = 0\nvariable.SIDE_TOLERANCE = 0.5 * system.timeFrame / system.ONE_DAY_IN_MILISECONDS\nvariable.SMALL_SLOPE = 1.0 * system.timeFrame / system.ONE_DAY_IN_MILISECONDS\nvariable.MEDIUM_SLOPE = 2.0 * system.timeFrame / system.ONE_DAY_IN_MILISECONDS\nvariable.HIGH_SLOPE = 4.0 * system.timeFrame / system.ONE_DAY_IN_MILISECONDS\n","id":"f00ac417-cd99-493c-b959-35eddd6fe4f3","savedPayload":{"position":{"x":10742.415131265177,"y":20289.357255415845},"targetPosition":{"x":10886.37627103674,"y":20226.38565235253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d144ab2f-5b4e-4153-806a-d471e9f281dd","savedPayload":{"position":{"x":10886.37627103674,"y":20226.38565235253},"targetPosition":{"x":11172.70947602758,"y":20097.03276552583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"\nif (variable.lastMovingAverage > product.bollingerBand.movingAverage) { variable.direction = \"Down\" }\nif (variable.lastMovingAverage < product.bollingerBand.movingAverage) { variable.direction = \"Up\" }\nif (variable.lastMovingAverage === product.bollingerBand.movingAverage) { variable.direction = \"Side\" }\n\nvariable.delta = Math.abs(product.bollingerBand.movingAverage - variable.lastMovingAverage)\n\nvariable.slope = \"Extreme\"\nif (variable.delta < product.bollingerBand.movingAverage * variable.HIGH_SLOPE / 100) { variable.slope = \"Steep\" }\nif (variable.delta < product.bollingerBand.movingAverage * variable.MEDIUM_SLOPE / 100) { variable.slope = \"Medium\" }\nif (variable.delta < product.bollingerBand.movingAverage * variable.SMALL_SLOPE / 100) { variable.slope = \"Gentle\" }\nif (variable.delta < product.bollingerBand.movingAverage * variable.SIDE_TOLERANCE / 100) { variable.slope = \"Side\" }\n\nvariable.lastMovingAverage = product.bollingerBand.movingAverage","id":"14fc0c9c-cd10-4931-95b5-4bc7d549942a","savedPayload":{"position":{"x":10703.797034505254,"y":20154.690481644346},"targetPosition":{"x":10859.173956471159,"y":20131.564897634973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8a669548-845b-4d80-ae96-29f68e9c9ac7","savedPayload":{"position":{"x":10859.173956471159,"y":20131.564897634973},"targetPosition":{"x":11172.70947602758,"y":20097.03276552583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d72c7cb2-8886-4101-a83a-f9788b8400a0","savedPayload":{"position":{"x":11172.70947602758,"y":20097.03276552583},"targetPosition":{"x":11488.846622314846,"y":19998.346308904962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","id":"139484b3-3a3f-4268-801e-a8c441746c7a","savedPayload":{"position":{"x":11146.448354347338,"y":19984.282817196778},"targetPosition":{"x":11488.846622314846,"y":19998.346308904962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"29088877-8d63-4217-8d34-8742afc262f4","savedPayload":{"position":{"x":11488.575715608373,"y":19998.478173373187},"targetPosition":{"x":12026.128747105688,"y":19674.097695521068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Bollinger Bands","id":"a11bfdf8-595c-4b50-b259-6a9f777d0ea8"}}},{"type":"Product Definition","name":"Percentage Bandwidth","code":"{\n \"codeName\": \"Percentage-Bandwidth\",\n \"singularVariableName\": \"percentageBandwidth\",\n \"pluralVariableName\": \"percentageBandwidths\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Bollinger-Bands/Output/Percentage-Bandwidth/Multi-Period-Market/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"207e9481-0730-4304-a938-cfe223d70856","savedPayload":{"position":{"x":10486.205681659949,"y":19314.214312739492},"targetPosition":{"x":11137.111843906096,"y":19262.891041120278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Bollinger-Bands/Output/Percentage-Bandwidth/Multi-Period-Daily/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Bollinger-Bands/Output/Percentage-Bandwidth/Multi-Period-Daily\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"e60d62dd-87f7-4f2d-ac21-3ac5c30a50ea","savedPayload":{"position":{"x":10516.205947030798,"y":19061.341642842766},"targetPosition":{"x":11137.111843906096,"y":19262.891041120278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"7c793ff3-0356-4f05-b471-4510e9cdaf58","savedPayload":{"position":{"x":10084.898665918321,"y":18736.600312739924},"targetPosition":{"x":10144.780586291587,"y":18415.638796627256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"b02c38c3-216c-4a83-903d-d50a599b55dc","savedPayload":{"position":{"x":9836.720547635075,"y":18524.55256211872},"targetPosition":{"x":10144.780586291587,"y":18415.638796627256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Value","code":"{\n \"codeName\": \"value\",\n \"isString\": false\n}","id":"2c279136-20b1-4f9c-9d35-6a4fd36a4a99","savedPayload":{"position":{"x":9897.816773453009,"y":18218.572280917684},"targetPosition":{"x":10144.780586291587,"y":18415.638796627256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Moving Average","code":"{\n \"codeName\": \"movingAverage\",\n \"isString\": false\n}","id":"a9e3bbb1-9eaf-4ab1-93bb-ee27357daa76","savedPayload":{"position":{"x":10203.990171934185,"y":18094.541393984124},"targetPosition":{"x":10144.780586291587,"y":18415.638796627256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Bandwidth","code":"{\n \"codeName\": \"bandwidth\",\n \"isString\": false\n}","id":"90d9694f-ed29-4b2e-8c75-c4bdcf35e36a","savedPayload":{"position":{"x":10452.159591820593,"y":18306.41994466583},"targetPosition":{"x":10144.780586291587,"y":18415.638796627256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d04d8ca7-18d0-4360-babf-7c49c3c97f50","savedPayload":{"position":{"x":10144.780586291587,"y":18415.638796627256},"targetPosition":{"x":11137.111843906096,"y":19262.891041120278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068","savedPayload":{"position":{"x":11400.692234996508,"y":19621.209344136612},"targetPosition":{"x":12026.128747105688,"y":19674.097695521068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Percentage B","id":"06b2f3f6-b138-415f-8974-31c22a930f92"}}}],"id":"1b7ecdbd-82e9-4a27-8fdd-467c0ca6bf23","savedPayload":{"position":{"x":12362.532947643092,"y":19887.857603455348},"targetPosition":{"x":12814.422748313864,"y":18696.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"c"}}},{"type":"Indicator Bot","name":"Bollinger Channels","code":"{\n\"codeName\": \"Bollinger-Channels\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Produces for each market two files with bollinger channels respectively.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n }","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Market Bollinger Channels Objects","id":"d804e799-7c12-42f5-8de2-52a3a7d5daa4","savedPayload":{"position":{"x":11573.90310474739,"y":20422.69635210645},"targetPosition":{"x":11384.914773908806,"y":19846.641551806282},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Market","id":"610cd062-ab88-4892-b711-0fb430305c61"}}},{"type":"Output Dataset","name":"Market Bollinger Channels","id":"e524685d-8da0-41f6-839d-9a4100e6e3fe","savedPayload":{"position":{"x":11479.571829415056,"y":20445.966930746992},"targetPosition":{"x":11384.914773908806,"y":19846.641551806282},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Market","id":"22c1f2c6-3838-4657-add8-2e01d7056917"}}},{"type":"Output Dataset","name":"Market Bollinger Sub-Channels Objects","id":"eb0e7947-95e4-4f4a-87ea-1fb430b8b503","savedPayload":{"position":{"x":11383.644064361151,"y":20453.60616260422},"targetPosition":{"x":11384.914773908806,"y":19846.641551806282},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Market","id":"869f615e-0cc0-44fd-8648-4a951c23a410"}}},{"type":"Output Dataset","name":"Market Bollinger Sub-Channels","id":"dc96b9ac-f8d5-4bf8-a135-45cd5d6369f1","savedPayload":{"position":{"x":11308.12543851696,"y":20444.374681849855},"targetPosition":{"x":11384.914773908806,"y":19846.641551806282},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Market","id":"f8d44a4d-3771-4a71-97ca-dc604ff565d3"}}}],"id":"dd39a54a-3714-446a-9a41-dfd83557664c","savedPayload":{"position":{"x":11384.914773908806,"y":19846.641551806282},"targetPosition":{"x":11339.338320653924,"y":19242.20323919531},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Bollinger Channels Multi-Period-Market","code":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"ae627a69-4089-432d-b379-1b12ce4bd75e","savedPayload":{"position":{"x":11210.670408035136,"y":20443.910336443718},"targetPosition":{"x":11226.503166505921,"y":19837.570477497266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"af8aded9-002a-475a-88f5-d29573740969"}}},{"type":"Status Dependency","name":"Bollinger Bands Multi-Period-Market","code":"{\n \"mainUtility\": \"Market Ending Point\"\n}","id":"4a603114-d464-46db-90a1-62304274117a","savedPayload":{"position":{"x":11108.322899676274,"y":20432.41958906024},"targetPosition":{"x":11226.503166505921,"y":19837.570477497266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"4f8197fa-2627-46df-bd36-7d30fdb12d8c"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Bollinger Bands Multi-Period-Market","id":"ea27be54-93a3-48e3-8c52-72bc397b6c66","savedPayload":{"position":{"x":10999.224923498617,"y":20399.34207803124},"targetPosition":{"x":11226.503166505921,"y":19837.570477497266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"f5b2a7d8-fc32-44a3-a002-9b0fc30a9719"}}}],"id":"8b509294-6028-40e2-88a8-655a34245ed8","savedPayload":{"position":{"x":11226.503166505921,"y":19837.570477497266},"targetPosition":{"x":11339.338320653924,"y":19242.20323919531},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"af8aded9-002a-475a-88f5-d29573740969","savedPayload":{"position":{"x":11076.244989784178,"y":19788.125794339783},"targetPosition":{"x":11339.338320653924,"y":19242.20323919531},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Bollinger Bands Multi-Period-Market","id":"f4720e04-5def-4c0b-be42-33e50ac6a6b7","savedPayload":{"position":{"x":10943.8573803007,"y":19701.438944864894},"targetPosition":{"x":11339.338320653924,"y":19242.20323919531},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"4a9c8cc7-0ebf-43eb-b7f9-0b280630ff67"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"671530dc-5ba5-4c8d-bc23-f228e22c56b3","savedPayload":{"position":{"x":10838.350823278943,"y":19583.284425935002},"targetPosition":{"x":11339.338320653924,"y":19242.20323919531},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"28be432d-80ca-46b3-859a-55541e24b2b4","savedPayload":{"position":{"x":11542.04899770185,"y":19644.005682727136},"targetPosition":{"x":11641.082584677404,"y":19040.618818323794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Process Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Produces for each market two files with bollinger channels respectively at each day of the market history.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n }","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"New Output Dataset","id":"64430a93-38c2-4c71-8085-71661bbf804e","savedPayload":{"position":{"x":12635.803500152893,"y":20058.754368682585},"targetPosition":{"x":12066.517385594956,"y":20058.754368682585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Daily","id":"64910fea-c92a-4a55-850a-aa62d98b478e"}}},{"type":"Output Dataset","name":"New Output Dataset","id":"b536a078-e32a-4489-93f6-75107a90b527","savedPayload":{"position":{"x":12066.517385594956,"y":20661.11181684639},"targetPosition":{"x":12066.517385594956,"y":20058.754368682585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Daily","id":"ca71e765-0f66-4b18-b500-847b9d16169b"}}},{"type":"Output Dataset","name":"New Output Dataset","id":"d5bcc7c4-2798-4c34-9504-cc4617b64a04","savedPayload":{"position":{"x":11450.345994638956,"y":20058.754368682585},"targetPosition":{"x":12066.517385594956,"y":20058.754368682585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Daily","id":"029479ae-275d-4854-ad3e-66948656a053"}}},{"type":"Output Dataset","name":"New Output Dataset","id":"57898dc1-83a2-4ee9-8a0b-6674f988f0fa","savedPayload":{"position":{"x":12066.517385594956,"y":19467.14858826116},"targetPosition":{"x":12066.517385594956,"y":20058.754368682585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Daily","id":"96b4e65b-e6db-44a0-80a5-ceb9d68a09ec"}}}],"id":"b8fc5ac0-021d-4230-aa59-9876c5f0f3e1","savedPayload":{"position":{"x":10724.439635052391,"y":19863.110901912885},"targetPosition":{"x":11056.350350337705,"y":19016.841483651544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Bollinger Bands Multi-Period-Daily","code":"{\n \"mainUtility\": \"Market Ending Point\"\n}","id":"3cb29ee1-02de-452a-a79f-2451700fe335","savedPayload":{"position":{"x":10163.39531391863,"y":20584.46463742192},"targetPosition":{"x":10516.878266663434,"y":19747.750636736768},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"7323fef7-870a-48b6-b96f-586111253b40"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","code":"{\n \"mainUtility\": \"Market Starting Point\"\n}","id":"d5f34469-0ae1-45e6-acd9-4155d5940c77","savedPayload":{"position":{"x":10036.574768883751,"y":20518.701962256342},"targetPosition":{"x":10516.878266663434,"y":19747.750636736768},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}},{"type":"Status Dependency","name":"Bollinger Channels Multi-Period-Daily","code":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"7f6266a5-bddb-4d49-962d-100b1993043d","savedPayload":{"position":{"x":9921.772796822996,"y":20433.974706247223},"targetPosition":{"x":10516.878266663434,"y":19747.750636736768},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"b1dd07bf-a698-4bbb-995a-356c929a1e94"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Bollinger Bands Multi-Period-Daily","id":"073e24ab-6b47-482a-b117-0d3554f63c1f","savedPayload":{"position":{"x":9821.547558457592,"y":20332.17193002903},"targetPosition":{"x":10516.878266663434,"y":19747.750636736768},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"506104fa-e99a-4a46-930e-176bce311aff"}}}],"id":"c0cb34fe-9268-4ebb-a8ce-7d53a13a6d4d","savedPayload":{"position":{"x":10516.878266663434,"y":19747.750636736768},"targetPosition":{"x":11056.350350337705,"y":19016.841483651544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"b1dd07bf-a698-4bbb-995a-356c929a1e94","savedPayload":{"position":{"x":10346.0234467963,"y":19583.234833835988},"targetPosition":{"x":11056.350350337705,"y":19016.841483651544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Bollinger Bands Multi-Period-Daily","id":"4548cff9-f388-4f4f-b148-665d22ffaf9e","savedPayload":{"position":{"x":10223.571441450495,"y":19380.14245058795},"targetPosition":{"x":11056.350350337705,"y":19016.841483651544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"acebc3ed-4f3f-4a4b-b403-f16cbe987dde"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"34e17fad-2c62-4c45-875c-774ac6b6cc99","savedPayload":{"position":{"x":10157.835332891114,"y":19152.21179297739},"targetPosition":{"x":11056.350350337705,"y":19016.841483651544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"id":"bc15b49d-4547-4bac-a28b-193eb0158fe3","savedPayload":{"position":{"x":11289.688220469669,"y":19541.023426528467},"targetPosition":{"x":11641.082584677404,"y":19040.618818323794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Bollinger Channels Objects","code":"{\n \"codeName\": \"Bollinger-Channels-Objects\",\n \"singularVariableName\": \"bollingerChannelsObject\",\n \"pluralVariableName\": \"bollingerChannelsObjects\"\n}","datasets":[{"type":"Dataset Definition","name":"Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Bollinger-Channels/Output/Bollinger-Channels-Objects/Multi-Period-Market/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"610cd062-ab88-4892-b711-0fb430305c61","savedPayload":{"position":{"x":10768.397948524385,"y":19847.06165832443},"targetPosition":{"x":11107.774149804802,"y":19338.575690292153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Bollinger-Channels/Output/Bollinger-Channels-Objects/Multi-Period-Daily/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Bollinger-Channels/Output/Bollinger-Channels-Objects/Multi-Period-Daily\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"64910fea-c92a-4a55-850a-aa62d98b478e","savedPayload":{"position":{"x":10627.462617936859,"y":19716.477891239912},"targetPosition":{"x":11107.774149804802,"y":19338.575690292153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"06edb099-ff64-4528-b8c6-599154bc2ddf","savedPayload":{"position":{"x":10249.086072986578,"y":19864.162958410205},"targetPosition":{"x":9961.538214276618,"y":19760.686188468488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"94656d1f-508a-4e94-a8d2-013690aac596","savedPayload":{"position":{"x":10115.314493483747,"y":20025.212983999376},"targetPosition":{"x":9961.538214276618,"y":19760.686188468488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Direction","code":"{\n \"codeName\": \"direction\",\n \"isString\": true,\n \"possibleValues\": [\"Up\", \"Down\", \"Side\"]\n}","id":"edc0f697-f5e2-446f-bae8-8db7adf91d23","savedPayload":{"position":{"x":9909.47319102992,"y":20062.096803464912},"targetPosition":{"x":9961.538214276618,"y":19760.686188468488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Period","code":"{\n \"codeName\": \"period\",\n \"isString\": false\n}","id":"eb733f85-6cf5-485e-9bd3-2bf78733c492","savedPayload":{"position":{"x":9727.747208527004,"y":19958.324728613632},"targetPosition":{"x":9961.538214276618,"y":19760.686188468488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"First Moving Average","code":"{\n \"codeName\": \"firstMovingAverage\",\n \"isString\": false\n}","id":"a67a15ee-6f7f-48bd-9d55-82c57efc993b","savedPayload":{"position":{"x":9655.364828065949,"y":19761.742714934655},"targetPosition":{"x":9961.538214276618,"y":19760.686188468488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Last Moving Average","code":"{\n \"codeName\": \"lastMovingAverage\",\n \"isString\": false\n}","id":"0f05bffe-d668-4d25-ab67-d55a4a7c8f5d","savedPayload":{"position":{"x":9726.198065248702,"y":19564.994549777228},"targetPosition":{"x":9961.538214276618,"y":19760.686188468488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"First Deviation","code":"{\n \"codeName\": \"firstDeviation\",\n \"isString\": false\n}","id":"eae84509-b689-4a76-9277-eed72af491dd","savedPayload":{"position":{"x":9907.080652129831,"y":19459.612523901673},"targetPosition":{"x":9961.538214276618,"y":19760.686188468488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Last Deviation","code":"{\n \"codeName\": \"lastDeviation\",\n \"isString\": false\n}","id":"d5c32d1f-9e3c-48e8-8025-a17d57c0812e","savedPayload":{"position":{"x":10113.07407087476,"y":19495.498537110347},"targetPosition":{"x":9961.538214276618,"y":19760.686188468488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6c3e68b0-b781-4c53-9ff7-67c3f747ac8a","savedPayload":{"position":{"x":9961.538214276618,"y":19760.686188468488},"targetPosition":{"x":11107.774149804802,"y":19338.575690292153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"\n\nif (record.next !== undefined) {\n\n if (\n record.current.direction === record.next.direction) {\n\n if (variable.channel === undefined) {\n\n variable.channel = {\n begin: undefined,\n end: undefined,\n direction: undefined,\n period: 0,\n firstMovingAverage: 0,\n lastMovingAverage: 0,\n firstDeviation: 0,\n lastDeviation: 0\n }\n\n variable.channel.direction = record.current.direction\n variable.channel.period = 2\n\n variable.channel.begin = record.current.begin\n variable.channel.end = record.next.end\n\n variable.channel.firstMovingAverage = record.current.movingAverage\n variable.channel.lastMovingAverage = record.next.movingAverage\n\n variable.channel.firstDeviation = record.current.deviation\n variable.channel.lastDeviation = record.next.deviation\n\n } else {\n\n variable.channel.period++\n variable.channel.end = record.next.end\n variable.channel.lastMovingAverage = record.next.movingAverage\n variable.channel.lastDeviation = record.next.deviation\n\n }\n } else {\n\n if (variable.channel !== undefined) {\n results.push(variable.channel)\n variable.channel = undefined\n } else {\n /* The variable.channel has only one period */\n\n variable.channel = {}\n\n variable.channel.direction = record.current.direction\n variable.channel.period = 1\n\n variable.channel.begin = record.current.begin\n variable.channel.end = record.current.end\n\n variable.channel.firstMovingAverage = record.current.movingAverage\n variable.channel.lastMovingAverage = record.current.movingAverage\n\n variable.channel.firstDeviation = record.current.deviation\n variable.channel.lastDeviation = record.current.deviation\n\n results.push(variable.channel)\n variable.channel = undefined\n }\n }\n} else {\n if (variable.channel !== undefined) {\n variable.channel.period++\n variable.channel.end = record.current.end\n variable.channel.lastMovingAverage = record.current.movingAverage\n variable.channel.lastDeviation = record.current.deviation\n results.push(variable.channel)\n variable.channel = undefined\n } else {\n /* The variable.channel has only one period */\n\n variable.channel = {}\n\n variable.channel.direction = record.current.direction\n variable.channel.period = 1\n\n variable.channel.begin = record.current.begin\n variable.channel.end = record.current.end\n\n variable.channel.firstMovingAverage = record.current.movingAverage\n variable.channel.lastMovingAverage = record.current.movingAverage\n\n variable.channel.firstDeviation = record.current.deviation\n variable.channel.lastDeviation = record.current.deviation\n\n results.push(variable.channel)\n variable.channel = undefined\n }\n}","id":"b81d6adc-e721-4089-b4c3-2fd772f33d25","savedPayload":{"position":{"x":10175.61216419393,"y":19373.214166213802},"targetPosition":{"x":10480.605131104698,"y":19362.290535309334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a2b92c75-e272-4d05-b098-121a70371450","savedPayload":{"position":{"x":10480.605131104698,"y":19362.290535309334},"targetPosition":{"x":10785.394466361522,"y":19350.869102743065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"116ccf8c-26bc-4b86-99e6-bb3075527713","savedPayload":{"position":{"x":10785.394466361522,"y":19350.869102743065},"targetPosition":{"x":11107.774149804802,"y":19338.575690292153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1f111f72-624f-4166-9f99-ab8d785d5267","savedPayload":{"position":{"x":11107.551739567847,"y":19338.79322347327},"targetPosition":{"x":11641.082584677404,"y":19040.618818323794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Plotter Module","name":"Bollinger Channels Objects","id":"52881346-3e4b-45e0-92d2-af130d381b8e"}}},{"type":"Product Definition","name":"Bollinger Channels","code":"{\n \"codeName\": \"Bollinger-Channels\",\n \"singularVariableName\": \"bollingerChannel\",\n \"pluralVariableName\": \"bollingerChannels\"\n}","datasets":[{"type":"Dataset Definition","name":"Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Bollinger-Channels/Output/Bollinger-Channels/Multi-Period-Market/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"22c1f2c6-3838-4657-add8-2e01d7056917","savedPayload":{"position":{"x":10504.777411385485,"y":19388.846139300895},"targetPosition":{"x":11031.193837480309,"y":19078.02598711607},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Bollinger-Channels/Output/Bollinger-Channels/Multi-Period-Daily/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Bollinger-Channels/Output/Bollinger-Channels/Multi-Period-Daily\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"96b4e65b-e6db-44a0-80a5-ceb9d68a09ec","savedPayload":{"position":{"x":10434.38623458637,"y":19210.007478735944},"targetPosition":{"x":11031.193837480309,"y":19078.02598711607},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"b243e3c4-e528-4e7b-9644-b03e47c8ca34","savedPayload":{"position":{"x":9946.842476790376,"y":19558.27488673139},"targetPosition":{"x":9881.097662296843,"y":19259.83350280327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"74268e18-735f-405b-b9db-412ce6cf7438","savedPayload":{"position":{"x":9881.097662296843,"y":19259.83350280327},"targetPosition":{"x":9815.279338120039,"y":18961.312069038955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"bc705d0f-6df6-45f6-8d3a-44b81bf785bd","savedPayload":{"position":{"x":9288.244468656996,"y":19271.6978754153},"targetPosition":{"x":9551.681519137102,"y":19116.611460306067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ad08f6a7-5d37-4fd3-9d84-5eebddcd8cb5","savedPayload":{"position":{"x":9551.681519137102,"y":19116.611460306067},"targetPosition":{"x":9815.279338120039,"y":18961.312069038955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Direction","code":"{\n \"codeName\": \"direction\",\n \"isString\": true,\n \"possibleValues\": [\"Up\", \"Down\", \"Side\"]\n}","formula":{"type":"Formula","code":"record.current.direction","id":"7b7fd5fc-c820-4c1b-ae3e-400d7b90bb0b","savedPayload":{"position":{"x":9357.14020291461,"y":18556.744894131392},"targetPosition":{"x":9586.186372822664,"y":18759.062792433033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"31720cda-be3c-453e-8c6e-c4816299c440","savedPayload":{"position":{"x":9586.186372822664,"y":18759.062792433033},"targetPosition":{"x":9815.279338120039,"y":18961.312069038955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Period","code":"{\n \"codeName\": \"period\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.period","id":"9c44699b-a743-4f46-82f6-0351e8b1a206","savedPayload":{"position":{"x":10068.209331621676,"y":18403.295197417632},"targetPosition":{"x":9946.404258268483,"y":18683.9192966206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8af98ad4-3062-49a1-bff6-593bd9638f72","savedPayload":{"position":{"x":9946.404258268483,"y":18683.9192966206},"targetPosition":{"x":9815.279338120039,"y":18961.312069038955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9106250d-b042-4e96-9121-c760b4c1eab2","savedPayload":{"position":{"x":9815.279338120039,"y":18961.312069038955},"targetPosition":{"x":11031.193837480309,"y":19078.02598711607},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"if (record.previous !== undefined) {\n if (record.current.direction === record.previous.direction) {\n variable.period++\n } else {\n variable.period = 1\n }\n}","id":"8f05a74a-f85c-4eb1-9de1-3363d2e3cb8a","savedPayload":{"position":{"x":9564.29513549858,"y":18575.30147101644},"targetPosition":{"x":9858.240534334782,"y":18659.60487219996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7e54fecc-8443-4aad-a541-0b6a3fcac877","savedPayload":{"position":{"x":9858.240534334782,"y":18659.60487219996},"targetPosition":{"x":10472.433129593937,"y":18835.0967436152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"variable.period = 1","id":"491600d9-228d-41b8-bedb-22b8ba22a7c9","savedPayload":{"position":{"x":9687.060482512867,"y":18362.216578770964},"targetPosition":{"x":9948.957955496542,"y":18520.012306182278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3c3de682-9ac0-4bf9-b1ff-97a3e0cb24b4","savedPayload":{"position":{"x":9948.957955496542,"y":18520.012306182278},"targetPosition":{"x":10472.433129593937,"y":18835.0967436152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9ace6abd-5ef9-4c37-9dbc-7aefc8b8b905","savedPayload":{"position":{"x":10472.433129593937,"y":18835.0967436152},"targetPosition":{"x":11031.193837480309,"y":19078.02598711607},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"94bc3958-cc85-43a1-a178-103e84f42910","savedPayload":{"position":{"x":11031.077504606823,"y":19077.983044417746},"targetPosition":{"x":11641.082584677404,"y":19040.618818323794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Bollinger Channels","id":"a045ea45-c8ff-49a5-86cd-5d38cd3e6d22"}}},{"type":"Product Definition","name":"Bollinger Sub-Channels Objects","code":"{\n \"codeName\": \"Bollinger-Sub-Channels-Objects\",\n \"singularVariableName\": \"bollingerSubChannelsObject\",\n \"pluralVariableName\": \"bollingerSubChannelsObjects\"\n}","datasets":[{"type":"Dataset Definition","name":"Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Bollinger-Channels/Output/Bollinger-Sub-Channels-Objects/Multi-Period-Market/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"869f615e-0cc0-44fd-8648-4a951c23a410","savedPayload":{"position":{"x":10466.318564520567,"y":18861.198309392163},"targetPosition":{"x":11075.45929880942,"y":18809.76260598873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Bollinger-Channels/Output/Bollinger-Sub-Channels-Objects/Multi-Period-Daily/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Bollinger-Channels/Output/Bollinger-Sub-Channels-Objects/Multi-Period-Daily\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"029479ae-275d-4854-ad3e-66948656a053","savedPayload":{"position":{"x":10480.479057821714,"y":18670.056009516764},"targetPosition":{"x":11075.45929880942,"y":18809.76260598873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"8f0513f5-d78e-4efd-a554-a6ee2a4781ac","savedPayload":{"position":{"x":10148.760754728111,"y":18458.53645782321},"targetPosition":{"x":10030.414588958145,"y":18176.675771888255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"677f9a11-1fa3-4880-ad4f-81a4490d82e8","savedPayload":{"position":{"x":9960.440048498902,"y":18474.485674116775},"targetPosition":{"x":10030.414588958145,"y":18176.675771888255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Direction","code":"{\n \"codeName\": \"direction\",\n \"isString\": true,\n \"possibleValues\": [\"Up\", \"Down\", \"Side\"]\n}","id":"610f6b9f-9404-4603-a42b-80de31498f2f","savedPayload":{"position":{"x":9798.667149081002,"y":18376.517517579952},"targetPosition":{"x":10030.414588958145,"y":18176.675771888255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Slope","code":"{\n \"codeName\": \"slope\",\n \"isString\": true,\n \"possibleValues\": [\"Side\", \"Gentle\", \"Medium\", \"Steep\", \"Extreme\"]\n}","id":"65600005-8272-4297-8716-b08841eb5e73","savedPayload":{"position":{"x":9725.497678081396,"y":18202.118701942767},"targetPosition":{"x":10030.414588958145,"y":18176.675771888255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Period","code":"{\n \"codeName\": \"period\",\n \"isString\": false\n}","id":"ef18438f-7a1f-4432-8fce-494bc9b5ae01","savedPayload":{"position":{"x":9768.640573432165,"y":18018.124686205076},"targetPosition":{"x":10030.414588958145,"y":18176.675771888255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"First Moving Average","code":"{\n \"codeName\": \"firstMovingAverage\",\n \"isString\": false\n}","id":"e5694d55-735b-4cb2-919e-02a71679c682","savedPayload":{"position":{"x":9911.884227771152,"y":17894.54048436305},"targetPosition":{"x":10030.414588958145,"y":18176.675771888255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Last Moving Average","code":"{\n \"codeName\": \"lastMovingAverage\",\n \"isString\": false\n}","id":"d49bae2d-b519-49ba-8fd2-9a3a4c2e8dc3","savedPayload":{"position":{"x":10100.152969913546,"y":17878.727781777303},"targetPosition":{"x":10030.414588958145,"y":18176.675771888255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"First Deviation","code":"{\n \"codeName\": \"firstDeviation\",\n \"isString\": false\n}","id":"a11b4d44-937d-456e-b2bd-9cd025289c34","savedPayload":{"position":{"x":10261.888680695118,"y":17976.716884361587},"targetPosition":{"x":10030.414588958145,"y":18176.675771888255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Last Deviation","code":"{\n \"codeName\": \"lastDeviation\",\n \"isString\": false\n}","id":"4d1b7a3f-c452-4002-ab8c-bfa7d396ac2c","savedPayload":{"position":{"x":10334.97970407376,"y":18151.257950053892},"targetPosition":{"x":10030.414588958145,"y":18176.675771888255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a2ff91c2-cfee-487c-959d-fd3ed3dea861","savedPayload":{"position":{"x":10030.414588958145,"y":18176.675771888255},"targetPosition":{"x":11075.45929880942,"y":18809.76260598873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"if (record.next !== undefined) {\n\n if (\n record.current.direction === record.next.direction &&\n record.current.slope === record.next.slope) {\n\n if (variable.channel === undefined) {\n\n variable.channel = {\n begin: undefined,\n end: undefined,\n direction: undefined,\n slope: undefined,\n period: 0,\n firstMovingAverage: 0,\n lastMovingAverage: 0,\n firstDeviation: 0,\n lastDeviation: 0\n }\n\n variable.channel.direction = record.current.direction\n variable.channel.slope = record.current.slope\n variable.channel.period = 2\n\n variable.channel.begin = record.current.begin\n variable.channel.end = record.next.end\n\n variable.channel.firstMovingAverage = record.current.movingAverage\n variable.channel.lastMovingAverage = record.next.movingAverage\n\n variable.channel.firstDeviation = record.current.deviation\n variable.channel.lastDeviation = record.next.deviation\n\n } else {\n\n variable.channel.period++\n variable.channel.end = record.next.end\n variable.channel.lastMovingAverage = record.next.movingAverage\n variable.channel.lastDeviation = record.next.deviation\n\n }\n } else {\n\n if (variable.channel !== undefined) {\n results.push(variable.channel)\n variable.channel = undefined\n } else {\n /* The channel has only one period */\n\n variable.channel = {}\n\n variable.channel.direction = record.current.direction\n variable.channel.slope = record.current.slope\n variable.channel.period = 1\n\n variable.channel.begin = record.current.begin\n variable.channel.end = record.current.end\n\n variable.channel.firstMovingAverage = record.current.movingAverage\n variable.channel.lastMovingAverage = record.current.movingAverage\n\n variable.channel.firstDeviation = record.current.deviation\n variable.channel.lastDeviation = record.current.deviation\n\n results.push(variable.channel)\n variable.channel = undefined\n }\n }\n\n} else {\n if (variable.channel !== undefined) {\n variable.channel.period++\n variable.channel.end = record.current.end\n variable.channel.lastMovingAverage = record.current.movingAverage\n variable.channel.lastDeviation = record.current.deviation\n results.push(variable.channel)\n variable.channel = undefined\n } else {\n /* The channel has only one period */\n\n variable.channel = {}\n\n variable.channel.direction = record.current.direction\n variable.channel.slope = record.current.slope\n variable.channel.period = 1\n\n variable.channel.begin = record.current.begin\n variable.channel.end = record.current.end\n\n variable.channel.firstMovingAverage = record.current.movingAverage\n variable.channel.lastMovingAverage = record.current.movingAverage\n\n variable.channel.firstDeviation = record.current.deviation\n variable.channel.lastDeviation = record.current.deviation\n\n results.push(variable.channel)\n variable.channel = undefined\n }\n}","id":"a1af769c-2a2d-4e78-8f0d-8dfb773982f0","savedPayload":{"position":{"x":10459.277294968524,"y":18094.286058137295},"targetPosition":{"x":10658.349695983232,"y":18325.912704797112},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"128aac86-66b5-4685-a75d-4e60ba697c90","savedPayload":{"position":{"x":10658.349695983232,"y":18325.912704797112},"targetPosition":{"x":10857.522933404087,"y":18557.06318518083},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5bfe184e-396e-431a-a640-76c05d1c6e06","savedPayload":{"position":{"x":10857.522933404087,"y":18557.06318518083},"targetPosition":{"x":11075.45929880942,"y":18809.76260598873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"080c87fc-4546-4482-ab11-180a33f6d9ab","savedPayload":{"position":{"x":11075.325157918107,"y":18809.879708044675},"targetPosition":{"x":11641.082584677404,"y":19040.618818323794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Bollinger Sub Channels Objects","id":"f8c4b699-1f40-4832-b427-68da3341daa8"}}},{"type":"Product Definition","name":"Bollinger Sub-Channels","code":"{\n \"codeName\": \"Bollinger-Sub-Channels\",\n \"singularVariableName\": \"bollingerSubChannel\",\n \"pluralVariableName\": \"bollingerSubChannels\"\n}","datasets":[{"type":"Dataset Definition","name":"Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Bollinger-Channels/Output/Bollinger-Sub-Channels/Multi-Period-Market/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"f8d44a4d-3771-4a71-97ca-dc604ff565d3","savedPayload":{"position":{"x":10660.581376525095,"y":18369.835699777297},"targetPosition":{"x":11231.743188204373,"y":18587.199366338897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [\n \"45-min\",\n \"40-min\",\n \"30-min\",\n \"20-min\",\n \"15-min\",\n \"10-min\",\n \"05-min\",\n \"04-min\",\n \"03-min\",\n \"02-min\",\n \"01-min\"\n ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Bollinger-Channels/Output/Bollinger-Sub-Channels/Multi-Period-Daily/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Masters/Bollinger-Channels/Output/Bollinger-Sub-Channels/Multi-Period-Daily\",\n \"fileName\": \"Data.Range.json\"\n }\n}","id":"ca71e765-0f66-4b18-b500-847b9d16169b","savedPayload":{"position":{"x":10756.554951941962,"y":18203.466966047414},"targetPosition":{"x":11231.743188204373,"y":18587.199366338897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"421aeb2e-dd1b-44ec-bf78-00d8691d4110","savedPayload":{"position":{"x":10522.76188518193,"y":18227.812634116657},"targetPosition":{"x":10627.381889521248,"y":18023.567932664453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2a101e7-8183-42b4-94c4-99bfcbf2c3c2","savedPayload":{"position":{"x":10627.381889521248,"y":18023.567932664453},"targetPosition":{"x":10731.565598010651,"y":17819.33599568697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"febf55a5-de85-4830-b4fe-df78acfc60b5","savedPayload":{"position":{"x":10272.660851859922,"y":17843.457127335445},"targetPosition":{"x":10502.053123370852,"y":17831.380761446926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0cc9b985-b780-41ef-838b-7f764824f244","savedPayload":{"position":{"x":10502.053123370852,"y":17831.380761446926},"targetPosition":{"x":10731.565598010651,"y":17819.33599568697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Direction","code":"{\n \"codeName\": \"direction\",\n \"isString\": true,\n \"possibleValues\": [\"Up\", \"Down\", \"Side\"]\n}","formula":{"type":"Formula","code":"record.current.direction","id":"73113162-c56d-4ca1-9e8b-f6a5bf84c30f","savedPayload":{"position":{"x":10480.660404215152,"y":17434.43556251439},"targetPosition":{"x":10606.072056646874,"y":17626.85128216014},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"91f3e346-3d02-48f9-aa0c-e55bae62f870","savedPayload":{"position":{"x":10606.072056646874,"y":17626.85128216014},"targetPosition":{"x":10731.565598010651,"y":17819.33599568697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Slope","code":"{\n \"codeName\": \"slope\",\n \"isString\": true,\n \"possibleValues\": [\"Side\", \"Gentle\", \"Medium\", \"Steep\", \"Extreme\"]\n}","formula":{"type":"Formula","code":"record.current.slope","id":"f9e484d0-138a-4d19-a876-a6067f5a1619","savedPayload":{"position":{"x":10910.850056467603,"y":17418.86220746567},"targetPosition":{"x":10835.250035448544,"y":17614.690383909627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"478a7021-7233-4eb4-958d-f127c6a4891c","savedPayload":{"position":{"x":10835.250035448544,"y":17614.690383909627},"targetPosition":{"x":10731.565598010651,"y":17819.33599568697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Period","code":"{\n \"codeName\": \"period\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.period","id":"35c1cfa6-c691-40b0-b680-bd7c94be19e3","savedPayload":{"position":{"x":11189.794257220305,"y":17794.546371534005},"targetPosition":{"x":10960.644597559274,"y":17806.99642385696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"61f63128-268f-4679-a0ef-e9b53a0a655b","savedPayload":{"position":{"x":10960.644597559274,"y":17806.99642385696},"targetPosition":{"x":10731.565598010651,"y":17819.33599568697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"afe778f1-4343-4102-8eb4-0b9340d7ad5b","savedPayload":{"position":{"x":10731.565598010651,"y":17819.33599568697},"targetPosition":{"x":11231.743188204373,"y":18587.199366338897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"if (record.previous !== undefined) {\n if (record.current.direction === record.previous.direction && record.current.slope === record.previous.slope) {\n variable.period++\n } else {\n variable.period = 1\n }\n}","id":"c450c940-f800-414b-a2c4-bda3481f55c7","savedPayload":{"position":{"x":10605.037527570017,"y":16871.866702329226},"targetPosition":{"x":10839.297477288696,"y":17435.406230405217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a580c9a8-c70a-483e-8dd3-d3b62464f8f4","savedPayload":{"position":{"x":10839.297477288696,"y":17435.406230405217},"targetPosition":{"x":11073.730195320974,"y":17998.952136756947},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"variable.period = 1","id":"e0efa286-41a0-45e0-8ce3-dfc27b4dce3e","savedPayload":{"position":{"x":10927.481833821394,"y":16783.505538698097},"targetPosition":{"x":11007.807761818036,"y":17388.477867636233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2decc091-6c76-458b-be8e-39e3e72cecd6","savedPayload":{"position":{"x":11007.807761818036,"y":17388.477867636233},"targetPosition":{"x":11073.730195320974,"y":17998.952136756947},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f16f2ab8-7ba2-4acf-bf85-8ed89bd1e5af","savedPayload":{"position":{"x":11073.730195320974,"y":17998.952136756947},"targetPosition":{"x":11231.743188204373,"y":18587.199366338897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"79ce9c05-8a4c-4b58-850f-288037acc702","savedPayload":{"position":{"x":11231.743188204373,"y":18587.199366338897},"targetPosition":{"x":11641.082584677404,"y":19040.618818323794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Bollinger Sub Channels","id":"88bdc751-5a1d-499d-a4ba-888dbcf6dc7a"}}}],"id":"bd0f325d-6f98-468b-8b7b-99a42a175d80","savedPayload":{"position":{"x":12001.894205802257,"y":19409.7600766057},"targetPosition":{"x":12814.422748313864,"y":18696.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Indicator Bot","name":"Candle Channels","code":"{\n\"codeName\": \"Candle-Channels\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\"\n }\n }","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Candle Channels","id":"98bb0dce-e233-4f70-a4ab-9051ee23abd5","savedPayload":{"position":{"x":11186.978578978087,"y":20106.49840951896},"targetPosition":{"x":11170.430983437347,"y":19477.159921100065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"df7d1cd7-95b0-499c-b51a-772c3fb8a2b0"}}},{"type":"Output Dataset","name":"Multi-Period-Market Candle Channels Objects","id":"e5d3a974-b3e5-4f0c-acaf-9cf9915850ee","savedPayload":{"position":{"x":11023.315583817728,"y":20089.224027943033},"targetPosition":{"x":11170.430983437347,"y":19477.159921100065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"566b9df4-da86-4b4f-a3f4-ef8a76443714"}}}],"id":"81b11bce-fa94-4295-b3a9-a24b6c0c45d3","savedPayload":{"position":{"x":11173.208185675741,"y":19481.01728149321},"targetPosition":{"x":11238.730803207227,"y":18854.565306885495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","code":"{\n \"mainUtility\": \"Market Ending Point\"\n}","id":"8c5feff4-7b13-404f-9fb7-844f3945715c","savedPayload":{"position":{"x":10904.05540520187,"y":20059.035759631515},"targetPosition":{"x":11010.270018750976,"y":19438.43825595622},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}},{"type":"Status Dependency","name":"Candle Channels Multi-Period-Market","code":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"34699cb0-bf71-4fbc-8671-9570617b1cd0","savedPayload":{"position":{"x":10784.651454557328,"y":20026.27325750151},"targetPosition":{"x":11010.270018750976,"y":19438.43825595622},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"902925d3-1d23-4894-9459-0be8df3965df"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"ab069a67-5e2f-4a3b-91e1-967d56ba62b6","savedPayload":{"position":{"x":10673.947270004683,"y":19970.7098761463},"targetPosition":{"x":11010.270018750976,"y":19438.43825595622},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"id":"4775daf3-4ac9-4971-a4fb-4cf66d4fbb45","savedPayload":{"position":{"x":11012.992739842579,"y":19442.362355432273},"targetPosition":{"x":11238.730803207227,"y":18854.565306885495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"902925d3-1d23-4894-9459-0be8df3965df","savedPayload":{"position":{"x":10868.657059868678,"y":19363.970242236814},"targetPosition":{"x":11238.730803207227,"y":18854.565306885495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"e9a9ec41-7040-4301-911f-8911d731c7cb","savedPayload":{"position":{"x":10749.439048463713,"y":19250.824658475154},"targetPosition":{"x":11238.730803207227,"y":18854.565306885495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"0ee514b6-0528-4ff9-a901-a519856fbee4","savedPayload":{"position":{"x":10663.550537047842,"y":19110.537893812696},"targetPosition":{"x":11238.730803207227,"y":18854.565306885495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb","savedPayload":{"position":{"x":11288.805942634377,"y":18722.609651585753},"targetPosition":{"x":11734.307847090251,"y":18378.84826549124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\"\n }\n }","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily Candle Channels","id":"2950c6a6-f1fc-4641-8376-96debaf2e213","savedPayload":{"position":{"x":10229.070903923162,"y":19522.438099295534},"targetPosition":{"x":10585.407407577455,"y":19003.335263259076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"07734f1c-e2e7-4a35-8567-6a996c68883e"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Candle Channels Objects","id":"f1f62696-e584-4b36-b69f-1a557409297a","savedPayload":{"position":{"x":10110.77896718907,"y":19417.290284342012},"targetPosition":{"x":10585.407407577455,"y":19003.335263259076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"8a7d224b-7571-4e1a-8b8f-8a35aa25dc63"}}}],"id":"f81d660c-db1f-44d2-81e5-5fe6c591bab2","savedPayload":{"position":{"x":10585.407407577455,"y":19003.335263259076},"targetPosition":{"x":11006.810113788306,"y":18535.284232457438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","code":"{\n \"mainUtility\": \"Market Starting Point\"\n}","id":"7bdf41eb-4243-4417-8df8-6dbf82cf637f","savedPayload":{"position":{"x":10042.3582692627,"y":19330.77752134126},"targetPosition":{"x":10478.530299555343,"y":18877.857423309273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","code":"{\n \"mainUtility\": \"Market Ending Point\"\n}","id":"43a935c4-46a1-478e-81d0-65c18f1128dc","savedPayload":{"position":{"x":9979.28506979758,"y":19262.093564700463},"targetPosition":{"x":10478.530299555343,"y":18877.857423309273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Candle Channels Multi-Period-Daily","code":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"71232c95-96bd-4c90-8571-be97495baab0","savedPayload":{"position":{"x":9926.426223619876,"y":19182.272505833942},"targetPosition":{"x":10478.530299555343,"y":18877.857423309273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"4a89ffcd-ef6d-4dd2-bbf6-6e2f1dba24cd"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"97ac78ed-bc8d-49f0-8111-527d7802b559","savedPayload":{"position":{"x":9881.905236967348,"y":19080.9068174008},"targetPosition":{"x":10478.530299555343,"y":18877.857423309273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"id":"41a2dd93-007f-4835-ac77-0bedbe22b128","savedPayload":{"position":{"x":10478.530299555343,"y":18877.857423309273},"targetPosition":{"x":11006.810113788306,"y":18535.284232457438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"4a89ffcd-ef6d-4dd2-bbf6-6e2f1dba24cd","savedPayload":{"position":{"x":10407.839875181457,"y":18729.557110039128},"targetPosition":{"x":11006.810113788306,"y":18535.284232457438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"31740e1a-525b-4ff3-bd71-7fb9c95a0a72","savedPayload":{"position":{"x":10377.924807942714,"y":18567.932731568333},"targetPosition":{"x":11006.810113788306,"y":18535.284232457438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"e29dc92e-bbd9-45ae-ac52-1ee785e44928","savedPayload":{"position":{"x":10390.927150567295,"y":18404.15103546663},"targetPosition":{"x":11006.810113788306,"y":18535.284232457438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f","savedPayload":{"position":{"x":11171.628476456364,"y":18394.48081259741},"targetPosition":{"x":11734.307847090251,"y":18378.84826549124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Candles Channels","code":"{\n \"codeName\": \"Candles-Channels\",\n \"singularVariableName\": \"candlesChannel\",\n \"pluralVariableName\": \"candlesChannels\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"df7d1cd7-95b0-499c-b51a-772c3fb8a2b0","savedPayload":{"position":{"x":10711.79354801782,"y":17990.000503722513},"targetPosition":{"x":11270.129680426711,"y":18061.179017803504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"07734f1c-e2e7-4a35-8567-6a996c68883e","savedPayload":{"position":{"x":10761.898031213426,"y":17820.13418256225},"targetPosition":{"x":11270.129680426711,"y":18061.179017803504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"bb911132-56d2-4368-ac9d-b013c2bf25ae","savedPayload":{"position":{"x":10240.744915126557,"y":17560.440162248247},"targetPosition":{"x":10448.80356228524,"y":17521.513849302733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ed49d0b4-d13f-42ea-ac30-18fcf718b664","savedPayload":{"position":{"x":10448.80356228524,"y":17521.513849302733},"targetPosition":{"x":10656.870850839212,"y":17482.145180914995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"58e1bae8-a892-4d59-bd35-d87458cf8bae","savedPayload":{"position":{"x":10274.072171233578,"y":17300.586413666948},"targetPosition":{"x":10465.388095204398,"y":17391.230437941147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2553b276-b77a-4044-9a25-8fde8158c3fa","savedPayload":{"position":{"x":10465.388095204398,"y":17391.230437941147},"targetPosition":{"x":10656.870850839212,"y":17482.145180914995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Direction","code":"{\n \"codeName\": \"direction\",\n \"isString\": true,\n \"possibleValues\": [\"Up\", \"Down\", \"Side\"]\n}","formula":{"type":"Formula","code":"record.current.direction","id":"7273b074-f439-4ff1-82c7-86bf0eb38fb3","savedPayload":{"position":{"x":10454.105780743084,"y":17110.96852107031},"targetPosition":{"x":10555.465918485643,"y":17296.58255520117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a400d6da-4e0c-417f-bc02-b33b7f64c94f","savedPayload":{"position":{"x":10555.465918485643,"y":17296.58255520117},"targetPosition":{"x":10656.870850839212,"y":17482.145180914995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Period","code":"{\n \"codeName\": \"period\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.period","id":"41659e98-8488-4d01-9ed4-04520fe9a923","savedPayload":{"position":{"x":10701.440043186354,"y":17067.901343206362},"targetPosition":{"x":10674.73585476204,"y":17278.052518107426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"01cf59b3-450b-47cc-a235-d334957ed2bd","savedPayload":{"position":{"x":10674.73585476204,"y":17278.052518107426},"targetPosition":{"x":10656.870850839212,"y":17482.145180914995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e186e788-474c-47be-9685-6060c60963d9","savedPayload":{"position":{"x":10656.870850839212,"y":17482.145180914995},"targetPosition":{"x":11270.129680426711,"y":18061.179017803504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"if (record.previous !== undefined) {\n if (record.current.direction === record.previous.direction) {\n variable.period++\n } else {\n variable.period = 1\n }\n}","id":"ed8b3159-b7bb-44a0-850e-d55a4c0c76a2","savedPayload":{"position":{"x":10760.965652799061,"y":17222.706029911595},"targetPosition":{"x":10825.070473638141,"y":17348.59642744023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ffc37ffd-9763-42c5-8a92-53962e11190e","savedPayload":{"position":{"x":10825.070473638141,"y":17348.59642744023},"targetPosition":{"x":11001.955929301239,"y":17568.890947560794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"variable.period = 1","id":"0c8b195c-a6a6-4e83-b1e6-43a4aca039a6","savedPayload":{"position":{"x":10855.224458736613,"y":17171.954426058972},"targetPosition":{"x":10905.419569905536,"y":17304.161542590653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"5668a3b7-6ebc-4e90-8431-2b7f832e4434","savedPayload":{"position":{"x":10905.419569905536,"y":17304.161542590653},"targetPosition":{"x":11001.955929301239,"y":17568.890947560794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"694d2276-7466-4884-a5b3-99a52e16ea91","savedPayload":{"position":{"x":11001.955929301239,"y":17568.890947560794},"targetPosition":{"x":11270.129680426711,"y":18061.179017803504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8c81d378-0947-4e9d-be25-58e69120152e","savedPayload":{"position":{"x":11269.942442699197,"y":18061.095190056356},"targetPosition":{"x":11734.307847090251,"y":18378.84826549124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Candles Channels","id":"864f26cb-b191-47c1-801e-57bb2436294e"}}},{"type":"Product Definition","name":"Candles Channels Objects","code":"{\n \"codeName\": \"Candles-Channels-Objects\",\n \"singularVariableName\": \"candlesChannelObjects\",\n \"pluralVariableName\": \"candlesChannelsObjects\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"566b9df4-da86-4b4f-a3f4-ef8a76443714","savedPayload":{"position":{"x":11135.560056942095,"y":17463.49139989409},"targetPosition":{"x":11545.40227380297,"y":17849.138011919178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"8a7d224b-7571-4e1a-8b8f-8a35aa25dc63","savedPayload":{"position":{"x":11275.953419783082,"y":17355.45665517072},"targetPosition":{"x":11545.40227380297,"y":17849.138011919178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"b5fad2c7-a8bc-464d-b459-a925a7d1bc95","savedPayload":{"position":{"x":11176.034326255867,"y":16999.715123134076},"targetPosition":{"x":11389.972376842958,"y":17020.755112917544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"89ecb579-a25e-4db4-8f3c-599d6cf4bbb7","savedPayload":{"position":{"x":11192.980727947717,"y":16920.56012823091},"targetPosition":{"x":11389.972376842958,"y":17020.755112917544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Direction","code":"{\n \"codeName\": \"direction\",\n \"isString\": true,\n \"possibleValues\": [\"Up\", \"Down\", \"Side\"]\n}","id":"c72882a9-25bc-4be9-b90c-072040321213","savedPayload":{"position":{"x":11242.263134627548,"y":16853.461167923906},"targetPosition":{"x":11389.972376842958,"y":17020.755112917544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Period","code":"{\n \"codeName\": \"period\",\n \"isString\": false\n}","id":"c253b3ab-56f4-4aa8-8dd2-801721fd07a7","savedPayload":{"position":{"x":11314.686841191728,"y":16811.637348335327},"targetPosition":{"x":11389.972376842958,"y":17020.755112917544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"First Min","code":"{ \n\"codeName\": \"firstMin\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"4e21dc37-1099-4ed7-8d63-e32e0764ab01","savedPayload":{"position":{"x":11389.83225112312,"y":16799.50377981292},"targetPosition":{"x":11389.972376842958,"y":17020.755112917544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Last Min","code":"{ \n\"codeName\": \"lastMin\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"62d4e90b-f3d5-4e32-9ef2-a3b460e17522","savedPayload":{"position":{"x":11465.384652488436,"y":16812.239099397648},"targetPosition":{"x":11389.972376842958,"y":17020.755112917544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"First Max","code":"{ \n\"codeName\": \"firstMax\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"3d4a753f-2b69-49e3-8a3d-4c99ed137495","savedPayload":{"position":{"x":11531.852174671681,"y":16850.425821683035},"targetPosition":{"x":11389.972376842958,"y":17020.755112917544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Last Max","code":"{ \n\"codeName\": \"lastMax\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"55381285-2fa6-4ffc-a174-38e3e126708b","savedPayload":{"position":{"x":11587.383501023327,"y":16936.807564208757},"targetPosition":{"x":11389.972376842958,"y":17020.755112917544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a4c69128-a306-4eac-83a7-20002c4a6b4b","savedPayload":{"position":{"x":11389.972376842958,"y":17020.755112917544},"targetPosition":{"x":11545.40227380297,"y":17849.138011919178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"\n\nif (record.next !== undefined) {\n\n if (\n record.current.direction === record.next.direction) {\n\n if (variable.channel === undefined) {\n\n variable.channel = {\n begin: undefined,\n end: undefined,\n direction: undefined,\n period: 0,\n firstMin: 0,\n lastMin: 0,\n firstMax: 0,\n lastMax: 0\n }\n\n variable.channel.direction = record.current.direction\n variable.channel.period = 2\n\n variable.channel.begin = record.current.begin\n variable.channel.end = record.next.end\n\n variable.channel.firstMin = record.current.min\n variable.channel.lastMin = record.next.min\n\n variable.channel.firstMax = record.current.max\n variable.channel.lastMax = record.next.max\n\n } else {\n\n variable.channel.period++\n variable.channel.end = record.next.end\n variable.channel.lastMin = record.next.min\n variable.channel.lastMax = record.next.max\n\n }\n } else {\n\n if (variable.channel !== undefined) {\n results.push(variable.channel)\n variable.channel = undefined\n } else {\n /* The variable.channel has only one period */\n\n variable.channel = {}\n\n variable.channel.direction = record.current.direction\n variable.channel.period = 1\n\n variable.channel.begin = record.current.begin\n variable.channel.end = record.current.end\n\n variable.channel.firstMin = record.current.min\n variable.channel.lastMin = record.current.min\n\n variable.channel.firstMax = record.current.max\n variable.channel.lastMax = record.current.max\n\n results.push(variable.channel)\n variable.channel = undefined\n }\n }\n} else {\n if (variable.channel !== undefined) {\n variable.channel.period++\n variable.channel.end = record.current.end\n variable.channel.lastMin = record.current.min\n variable.channel.lastMax = record.current.max\n results.push(variable.channel)\n variable.channel = undefined\n } else {\n /* The variable.channel has only one period */\n\n variable.channel = {}\n\n variable.channel.direction = record.current.direction\n variable.channel.period = 1\n\n variable.channel.begin = record.current.begin\n variable.channel.end = record.current.end\n\n variable.channel.firstMin = record.current.min\n variable.channel.lastMin = record.current.min\n\n variable.channel.firstMax = record.current.max\n variable.channel.lastMax = record.current.max\n\n results.push(variable.channel)\n variable.channel = undefined\n }\n}","id":"3d8fcb90-fd49-4a4a-b905-63c2db9a6148","savedPayload":{"position":{"x":11617.440357819574,"y":17297.635884502237},"targetPosition":{"x":11604.254673820533,"y":17396.708284818025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"58776129-39ee-4063-8f51-ca59c75bcae6","savedPayload":{"position":{"x":11604.254673820533,"y":17396.708284818025},"targetPosition":{"x":11586.077047062372,"y":17535.261872736897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d2d46944-c474-417b-a12c-d9b011ffcaa5","savedPayload":{"position":{"x":11586.077047062372,"y":17535.261872736897},"targetPosition":{"x":11545.40227380297,"y":17849.138011919178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047","savedPayload":{"position":{"x":11545.361951225754,"y":17848.90735636425},"targetPosition":{"x":11734.307847090251,"y":18378.84826549124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Candles Channels Objects","id":"7aa1e889-ae4f-4945-b0e5-9ad87ded05a5"}}}],"id":"c4adde4f-8ed9-4a02-8994-90f0967c8be1","savedPayload":{"position":{"x":11991.156727882273,"y":18899.09751503671},"targetPosition":{"x":12814.422748313864,"y":18696.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Indicator Bot","name":"Resistances and Supports","code":"{ \n\"codeName\": \"Resistances-And-Supports\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates SMAs for Time Frames of 01-hs and above.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Resistances","id":"5ccce358-1e38-4b97-9bd4-2634d38f4bc4","savedPayload":{"position":{"x":17840.919092612046,"y":11581.793144980224},"targetPosition":{"x":17746.577387048368,"y":12026.165720658508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"44e905fc-719f-453b-a567-fd5e3bfcae91"}}},{"type":"Output Dataset","name":"Multi-Period-Market Supports","id":"0f3718f9-e4ed-4217-b59f-77ace0cf9aef","savedPayload":{"position":{"x":18178.471838850222,"y":11885.714781557152},"targetPosition":{"x":17746.577387048368,"y":12026.165720658508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"4a1bd251-76ed-4530-8723-08e41d50f12d"}}}],"id":"cf7a746c-31f5-4a6e-9ea1-96d1163905cc","savedPayload":{"position":{"x":17746.577387048368,"y":12026.165720658508},"targetPosition":{"x":17138.90335181635,"y":12701.250789885946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","code":"{\"mainUtility\": \"Market Ending Point\"}","id":"a27c7e9d-a3ea-4f6e-b682-9474ccfe5366","savedPayload":{"position":{"x":18347.658693640824,"y":12125.826500698679},"targetPosition":{"x":18002.249300517913,"y":12420.914854821149},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}},{"type":"Status Dependency","name":"Resistances and Supports Multi-Period-Market","code":"{ \n\"mainUtility\": \"Self Reference|Market Starting Point|Market Ending Point\"\n}","id":"d0c6a69b-9ee7-4b2e-b58f-050878def5fd","savedPayload":{"position":{"x":18434.402771981837,"y":12280.645624811224},"targetPosition":{"x":18002.249300517913,"y":12420.914854821149},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"61f870e5-33d1-401e-8ca6-f4da59d955bc"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"899c04ed-0144-4193-a7f0-658061c4b719","savedPayload":{"position":{"x":18455.188125672637,"y":12456.730400588312},"targetPosition":{"x":18002.249300517913,"y":12420.914854821149},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"id":"46684253-b8e4-447d-b8d0-6b13ed7ab29b","savedPayload":{"position":{"x":18002.249300517913,"y":12420.914854821149},"targetPosition":{"x":17138.90335181635,"y":12701.250789885946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"61f870e5-33d1-401e-8ca6-f4da59d955bc","savedPayload":{"position":{"x":17583.315435562465,"y":12795.620942070289},"targetPosition":{"x":17138.90335181635,"y":12701.250789885946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"02633aff-3554-4a49-9fd7-a348c9b3671d","savedPayload":{"position":{"x":17476.55113470942,"y":13005.336400792927},"targetPosition":{"x":17138.90335181635,"y":12701.250789885946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"e69d76de-05e3-428a-b823-bfb0e191c659","savedPayload":{"position":{"x":17279.132956851456,"y":13133.475561165435},"targetPosition":{"x":17138.90335181635,"y":12701.250789885946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"5d9b2729-43fb-4e7e-aa4f-b8477c424e51","savedPayload":{"position":{"x":17138.905984147284,"y":12701.016198411548},"targetPosition":{"x":16250.166666666668,"y":12512.395127993394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Describe what the process does.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily Resistances","id":"e990eaed-a1b4-4668-9778-b0310f249235","savedPayload":{"position":{"x":16986.16857356345,"y":13575.689993630782},"targetPosition":{"x":16759.678833782997,"y":13599.594720122574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f4530d48-3239-4ab0-8c4d-d611cd55fde3"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Supports","id":"a4208abc-dbfe-4568-8697-4fdbc1bef5c9","savedPayload":{"position":{"x":16917.522352438355,"y":13783.625804479832},"targetPosition":{"x":16759.678833782997,"y":13599.594720122574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"deaaf4ec-9352-40b6-af9a-8541a73a5e13"}}}],"id":"86d9d925-de8e-4e76-b08c-2b6fb2303d37","savedPayload":{"position":{"x":16759.678833782997,"y":13599.594720122574},"targetPosition":{"x":16344.705851128874,"y":13415.541037671313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Resistances and Supports Multi-Period-Daily","code":"{\"mainUtility\": \"Self Reference\"}","id":"c8e28e76-f11d-493e-8961-6c26a1eed57d","savedPayload":{"position":{"x":16814.955462849437,"y":13782.903156807555},"targetPosition":{"x":16611.1225758648,"y":13782.9010410075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"3842d7ea-292c-438c-af35-f5e6a6c68105"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","code":"{\"mainUtility\": \"Market Ending Point\"}","id":"56bc0c89-e012-47b1-9e33-3ed4fdc3aa52","savedPayload":{"position":{"x":16795.216301990677,"y":13917.11487761939},"targetPosition":{"x":16611.1225758648,"y":13782.9010410075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","code":"{\"mainUtility\": \"Market Starting Point\"}","id":"723d9197-6349-4499-9dd4-f6443cba19be","savedPayload":{"position":{"x":16681.306210163955,"y":13999.688155614966},"targetPosition":{"x":16611.1225758648,"y":13782.9010410075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"1e51570a-18ba-4d61-8fc2-4019acc2ffeb","savedPayload":{"position":{"x":16540.62592671951,"y":13999.504621046042},"targetPosition":{"x":16611.1225758648,"y":13782.9010410075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"id":"bf0382d1-1529-4cb0-8c9c-39659093d9e8","savedPayload":{"position":{"x":16611.1225758648,"y":13782.9010410075},"targetPosition":{"x":16344.705851128874,"y":13415.541037671313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"3842d7ea-292c-438c-af35-f5e6a6c68105","savedPayload":{"position":{"x":16391.46488213994,"y":13867.43137695497},"targetPosition":{"x":16344.705851128874,"y":13415.541037671313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"ab23ac12-59f4-42a2-86f3-5c32619f4c6e","savedPayload":{"position":{"x":16159.623285613166,"y":13830.679144351707},"targetPosition":{"x":16344.705851128874,"y":13415.541037671313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"7e2fdde9-8b64-44a3-85f1-10c3935bd3e3","savedPayload":{"position":{"x":15976.803705329427,"y":13682.40738797995},"targetPosition":{"x":16344.705851128874,"y":13415.541037671313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"be19d91b-9337-4f84-96b3-f4e54ea12df5","savedPayload":{"position":{"x":16344.705851128874,"y":13415.541037671313},"targetPosition":{"x":16250.166666666668,"y":12512.395127993394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Resistances","code":"{ \n\"codeName\": \"Resistances\",\n \"singularVariableName\": \"resistance\",\n \"pluralVariableName\": \"resistances\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"44e905fc-719f-453b-a567-fd5e3bfcae91","savedPayload":{"position":{"x":11434.478960595296,"y":15756.684151859234},"targetPosition":{"x":11693.95519685418,"y":14535.40950735246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"f4530d48-3239-4ab0-8c4d-d611cd55fde3","savedPayload":{"position":{"x":10766.104053314524,"y":15370.802608168151},"targetPosition":{"x":11693.95519685418,"y":14535.40950735246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"8fc59f80-7313-43a0-be1f-3601c653253f","savedPayload":{"position":{"x":6770.875409727386,"y":17557.558961161954},"targetPosition":{"x":6746.112222810813,"y":16307.804271403307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4db89c62-71d4-4add-8a8a-3fd37b230993","savedPayload":{"position":{"x":6746.112222810813,"y":16307.804271403307},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"8cd95902-f17d-49c6-947f-b574dab41637","savedPayload":{"position":{"x":6558.723786733032,"y":17552.754579903023},"targetPosition":{"x":6640.036411313637,"y":16305.402080773842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ca4c0849-7e58-4dee-958a-7b9567c9bc22","savedPayload":{"position":{"x":6640.036411313637,"y":16305.402080773842},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Rate Resistance","code":"{\n \"codeName\": \"rateResistance\"\n}","formula":{"type":"Formula","code":"variable.resistance.rate","id":"3ead495c-b3d7-4232-bd44-a0201833230e","savedPayload":{"position":{"x":6347.743882385438,"y":17529.975791965604},"targetPosition":{"x":6534.5464591398395,"y":16294.012686805132},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a198ddb9-bfdc-4ba5-8772-6ddb98a1151d","savedPayload":{"position":{"x":6534.5464591398395,"y":16294.012686805132},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Period Resistance","code":"{\n \"codeName\": \"periodResistance\"\n}","formula":{"type":"Formula","code":"variable.resistance.period","id":"5ad98412-3b69-4eba-b1ea-6aa86e0db304","savedPayload":{"position":{"x":6139.455811730014,"y":17489.386719038765},"targetPosition":{"x":6430.402423812127,"y":16273.718150341712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"561ab821-c7be-4df8-abb4-3d1a5421b27b","savedPayload":{"position":{"x":6430.402423812127,"y":16273.718150341712},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Type Resistance","code":"{\n \"codeName\": \"typeResistance\",\n \"isString\": true,\n \"possibleValues\": [\"Resistance\", \"Support\"]\n}","formula":{"type":"Formula","code":"variable.resistance.type","id":"2d379184-f16b-4c87-8ed4-a0c57d1e2837","savedPayload":{"position":{"x":5935.360295088746,"y":17431.27980632304},"targetPosition":{"x":6328.3546654914935,"y":16244.66469398385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7cdcd891-d5e4-4237-9189-8ad7691d41ac","savedPayload":{"position":{"x":6328.3546654914935,"y":16244.66469398385},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 1 Rate","code":"{ \n\"codeName\": \"resistance1Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance1Rate","id":"b3da6d1a-38f0-4b52-88eb-926d32db8bf3","savedPayload":{"position":{"x":5736.927845335874,"y":17356.073715456063},"targetPosition":{"x":6229.138440615057,"y":16207.061648550361},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bea03586-2505-4e03-9a2b-3a9477955e66","savedPayload":{"position":{"x":6229.138440615057,"y":16207.061648550361},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 1 Period","code":"{ \n\"codeName\": \"resistance1Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance1Period","id":"292c00a5-59ff-4075-a386-6b5222b26019","savedPayload":{"position":{"x":5545.5881728189315,"y":17264.31030804587},"targetPosition":{"x":6133.468604356586,"y":16161.179944845266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b8872bec-843c-41cb-a42a-9da8248dc514","savedPayload":{"position":{"x":6133.468604356586,"y":16161.179944845266},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 2 Rate","code":"{ \n\"codeName\": \"resistance2Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance2Rate","id":"f9904c9a-9244-4d2d-a5b6-22600493c059","savedPayload":{"position":{"x":5362.719884262948,"y":17156.650741545614},"targetPosition":{"x":6042.034460078594,"y":16107.350161595137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"33f9cf94-552f-418d-b93a-8d073def39e7","savedPayload":{"position":{"x":6042.034460078594,"y":16107.350161595137},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 2 Period","code":"{ \n\"codeName\": \"resistance2Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance2Period","id":"4b08a91c-42f9-4354-b197-a6a84d08d0cb","savedPayload":{"position":{"x":5189.640549877379,"y":17033.870705598936},"targetPosition":{"x":5955.49479288581,"y":16045.960143621798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e67af800-29c1-49fc-9162-13b8a750bfbf","savedPayload":{"position":{"x":5955.49479288581,"y":16045.960143621798},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 3 Rate","code":"{ \n\"codeName\": \"resistance3Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance3Rate","id":"69de03a4-e0a2-4136-8353-20c7a61cf4e5","savedPayload":{"position":{"x":5027.597210232582,"y":16896.854833178328},"targetPosition":{"x":5874.473123063412,"y":15977.452207411494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"688458ca-7c03-4ba9-a09f-97c556e5bbae","savedPayload":{"position":{"x":5874.473123063412,"y":15977.452207411494},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 3 Period","code":"{ \n\"codeName\": \"resistance3Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance3Period","id":"12621061-eba5-477c-add4-85a431de92a4","savedPayload":{"position":{"x":4877.7573913039105,"y":16746.5903267843},"targetPosition":{"x":5799.553213599076,"y":15902.31995421448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3be3022d-d812-4570-8d01-849a104da943","savedPayload":{"position":{"x":5799.553213599076,"y":15902.31995421448},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 4 Rate","code":"{ \n\"codeName\": \"resistance4Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance4Rate","id":"acd8a299-32f4-4646-9acf-f679612e7ff7","savedPayload":{"position":{"x":4741.200692420319,"y":16584.159845628714},"targetPosition":{"x":5731.27486415728,"y":15821.104713636687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"97f41f84-75e6-4b28-a948-6971fa6a3c95","savedPayload":{"position":{"x":5731.27486415728,"y":15821.104713636687},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 4 Period","code":"{ \n\"codeName\": \"resistance4Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance4Period","id":"0dcb8ce8-61a4-4acc-a78b-8323d2d265af","savedPayload":{"position":{"x":4618.9110077264495,"y":16410.733705050392},"targetPosition":{"x":5670.130021810345,"y":15734.391643347526},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b23829c6-2cac-4cbe-bf10-0dff088077ba","savedPayload":{"position":{"x":5670.130021810345,"y":15734.391643347526},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 5 Rate","code":"{ \n\"codeName\": \"resistance5Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance5Rate","id":"8ca891d5-65e6-4b57-840f-355241255c69","savedPayload":{"position":{"x":4511.7694372027845,"y":16227.561444366242},"targetPosition":{"x":5616.559236548513,"y":15642.80551300545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e7a2bbe6-f265-4069-8d11-377fba99a6c3","savedPayload":{"position":{"x":5616.559236548513,"y":15642.80551300545},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 5 Period","code":"{ \n\"codeName\": \"resistance5Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance5Period","id":"a862b407-8962-4b48-8add-169cdd893269","savedPayload":{"position":{"x":4420.547938320094,"y":16035.962823911887},"targetPosition":{"x":5570.948487107167,"y":15547.006202778273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"30bb7e73-32f0-4cbb-bc41-eb3bdc086718","savedPayload":{"position":{"x":5570.948487107167,"y":15547.006202778273},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 1 Bounce 1","code":"{ \n\"codeName\": \"resistance1Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance1Bounce1","id":"2238f0b3-c9e0-45b2-ab8e-66b4ce2ff98e","savedPayload":{"position":{"x":3752.0424461116354,"y":16032.135499761534},"targetPosition":{"x":4345.903764068156,"y":15837.31831613816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"c111cf47-76d4-44d5-9c39-60f72eca4226","savedPayload":{"position":{"x":4345.903764068156,"y":15837.31831613816},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 1 Bounce 2","code":"{ \n\"codeName\": \"resistance1Bounce2\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance1Bounce2","id":"5de72a19-6f28-4e45-ab8c-532f77ddffbb","savedPayload":{"position":{"x":3680.131150317602,"y":15776.811553683217},"targetPosition":{"x":4288.37472743293,"y":15633.059159275506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"9018b3af-c080-48b4-82c6-8489268c0690","savedPayload":{"position":{"x":4288.37472743293,"y":15633.059159275506},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 1 Bounce 3","code":"{ \n\"codeName\": \"resistance1Bounce3\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance1Bounce3","id":"ce754586-45d8-44d3-b6df-4abd1303671c","savedPayload":{"position":{"x":3630.1318990784953,"y":15516.30891112597},"targetPosition":{"x":4248.375326441645,"y":15424.65704522971},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"0b7458a1-dd88-4b0a-91b7-b92df6263fb4","savedPayload":{"position":{"x":4248.375326441645,"y":15424.65704522971},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 1 Bounce 5","code":"{ \n\"codeName\": \"resistance1Bounce5\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance1Bounce5","id":"4520275c-befa-4070-8b21-9b741381ff87","savedPayload":{"position":{"x":3602.4049381452223,"y":15252.504499598828},"targetPosition":{"x":4226.193757695026,"y":15213.613516007994},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"f0479991-f060-44bf-8ac5-5b895362f3ef","savedPayload":{"position":{"x":4226.193757695026,"y":15213.613516007994},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 1 Bounce 10","code":"{ \n\"codeName\": \"resistance1Bounce10\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance1Bounce10","id":"2185c09e-8439-4776-9cb8-503d08e2eaed","savedPayload":{"position":{"x":3597.1500409066707,"y":14987.299035931896},"targetPosition":{"x":4221.989839904185,"y":15001.449145074448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"33826a2e-6432-4a0c-accb-d3a930a1dd73","savedPayload":{"position":{"x":4221.989839904185,"y":15001.449145074448},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 1 Bounce All","code":"{ \n\"codeName\": \"resistance1BounceAll\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance1BounceAll","id":"81fabb3a-9c41-41e9-b09e-f168ca8c7032","savedPayload":{"position":{"x":3614.4050690178583,"y":14722.603331568069},"targetPosition":{"x":4235.793862393135,"y":14789.692581583387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"99647cd5-b683-4014-a213-d24fa859d561","savedPayload":{"position":{"x":4235.793862393135,"y":14789.692581583387},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 2 Bounce 1","code":"{ \n\"codeName\": \"resistance2Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance2Bounce1","id":"c810907a-f21c-4163-9e8e-8a884e8aa0f7","savedPayload":{"position":{"x":3654.045699605847,"y":14460.324525122778},"targetPosition":{"x":4267.506366863526,"y":14579.869536427155},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"d93c9b19-9366-444c-b1e2-40c0d7f5685d","savedPayload":{"position":{"x":4267.506366863526,"y":14579.869536427155},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 2 Bounce 2","code":"{ \n\"codeName\": \"resistance2Bounce2\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance2Bounce2","id":"348406a5-5031-4393-becb-19c4f325b698","savedPayload":{"position":{"x":3715.7863210188852,"y":14202.352341406571},"targetPosition":{"x":4316.898863993956,"y":14373.491789454189},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"0458195f-bd6e-474e-8387-0e15f4730aef","savedPayload":{"position":{"x":4316.898863993956,"y":14373.491789454189},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 2 Bounce 3","code":"{ \n\"codeName\": \"resistance2Bounce3\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance2Bounce3","id":"eebbde09-23ce-4403-b792-17c9fd5da771","savedPayload":{"position":{"x":3799.1820906649136,"y":13950.545475914529},"targetPosition":{"x":4383.615479710779,"y":14172.046297060555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"9b56c44a-4141-4a6c-8b97-345cd1fc5ff3","savedPayload":{"position":{"x":4383.615479710779,"y":14172.046297060555},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 2 Bounce 5","code":"{ \n\"codeName\": \"resistance2Bounce5\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance2Bounce5","id":"6b64ca08-f049-4a3b-97a3-91eb11d07f70","savedPayload":{"position":{"x":3903.632140112619,"y":13706.718202882672},"targetPosition":{"x":4467.175519268943,"y":13976.98447863507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"fb3c325e-8229-4879-9a16-d0b00b12b527","savedPayload":{"position":{"x":4467.175519268943,"y":13976.98447863507},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 2 Bounce 10","code":"{ \n\"codeName\": \"resistance2Bounce10\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance2Bounce10","id":"eae97d09-1001-4c26-9337-ba15de4b6b16","savedPayload":{"position":{"x":4028.3839043622615,"y":13472.627303400486},"targetPosition":{"x":4566.976930668658,"y":13789.711759049322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"bdeb35a8-ff0d-4441-8507-595bf5152fdb","savedPayload":{"position":{"x":4566.976930668658,"y":13789.711759049322},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 2 Bounce All","code":"{ \n\"codeName\": \"resistance2BounceAll\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance2BounceAll","id":"8f31479b-9788-4b26-9e29-17b021e080bc","savedPayload":{"position":{"x":4172.538544093748,"y":13249.959407762912},"targetPosition":{"x":4682.300642453846,"y":13611.577442539261},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"f762cc91-2102-4f76-81d0-47ebc238f7b2","savedPayload":{"position":{"x":4682.300642453846,"y":13611.577442539261},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 3 Bounce 1","code":"{ \n\"codeName\": \"resistance3Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance3Bounce1","id":"dc591f82-09c1-4a97-9571-db4dea91848a","savedPayload":{"position":{"x":4335.057421824515,"y":13040.318843260446},"targetPosition":{"x":4812.31574463846,"y":13443.864990937289},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"108588b4-799b-4a53-880c-09e6241a0d83","savedPayload":{"position":{"x":4812.31574463846,"y":13443.864990937289},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 3 Bounce 2","code":"{ \n\"codeName\": \"resistance3Bounce2\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance3Bounce2","id":"99fdd4d2-2681-45c5-a10c-b5a26d9146f5","savedPayload":{"position":{"x":4514.769585316395,"y":12845.216074964239},"targetPosition":{"x":4956.085475431964,"y":13287.782776300322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"cc680268-6a77-4bf3-8fb6-d52fe13c501c","savedPayload":{"position":{"x":4956.085475431964,"y":13287.782776300322},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 3 Bounce 3","code":"{ \n\"codeName\": \"resistance3Bounce3\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance3Bounce3","id":"d9cfaabe-04b9-4b3a-8143-f5ef50ac58ed","savedPayload":{"position":{"x":4710.3802043133455,"y":12666.056822790619},"targetPosition":{"x":5112.573970629524,"y":13144.455374561427},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"31034bc5-b30a-4073-ad24-968a1f879551","savedPayload":{"position":{"x":5112.573970629524,"y":13144.455374561427},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 3 Bounce 5","code":"{ \n\"codeName\": \"resistance3Bounce5\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance3Bounce5","id":"db83ae1b-24e1-460f-bea8-f7273ca83e26","savedPayload":{"position":{"x":4920.479899823081,"y":12504.13193325693},"targetPosition":{"x":5280.653727037313,"y":13014.915462934476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"ebb1a278-c6a4-4834-8fae-486ccd553308","savedPayload":{"position":{"x":5280.653727037313,"y":13014.915462934476},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 3 Bounce 10","code":"{ \n\"codeName\": \"resistance3Bounce10\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance3Bounce10","id":"570566fa-85ca-4603-aad1-36275eb97f39","savedPayload":{"position":{"x":5143.554898725023,"y":12360.608078902766},"targetPosition":{"x":5459.1137261588665,"y":12900.096379451144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"80df4b28-5835-43dc-a7a8-6e84f9d57525","savedPayload":{"position":{"x":5459.1137261588665,"y":12900.096379451144},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 3 Bounce All","code":"{ \n\"codeName\": \"resistance3BounceAll\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance3BounceAll","id":"e3da0929-67a0-46ca-83b5-526873922999","savedPayload":{"position":{"x":5377.997940540344,"y":12236.519352387584},"targetPosition":{"x":5646.668159611123,"y":12800.825398239},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"096eb127-6766-4d53-a365-12bf9c50c540","savedPayload":{"position":{"x":5646.668159611123,"y":12800.825398239},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support Resistance Zone","code":"{ \n\"codeName\": \"supportResistanceZone\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.supportResistanceZone","id":"9f06c41a-3f69-409f-b0a8-03a32014f95e","savedPayload":{"position":{"x":6171.734446837376,"y":13595.404698737037},"targetPosition":{"x":6281.657364648749,"y":13887.933675318562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"7b4e7478-e4c0-4664-a95e-8afddd3b245c","savedPayload":{"position":{"x":6281.657364648749,"y":13887.933675318562},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 4 Bounce 1","code":"{ \n\"codeName\": \"resistance4Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance4Bounce1","id":"bbceb956-d606-4ee1-86cb-30d3c9e4d16e","savedPayload":{"position":{"x":5874.161746437758,"y":12050.077059066805},"targetPosition":{"x":6043.599204329054,"y":12651.671563582377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"c6eace47-c896-4784-9693-6e9d8b678ae4","savedPayload":{"position":{"x":6043.599204329054,"y":12651.671563582377},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 5 Bounce 1","code":"{ \n\"codeName\": \"resistance5Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance5Bounce1","id":"335496af-0d73-49cf-bc2e-88237434d4a6","savedPayload":{"position":{"x":6132.307638928795,"y":11989.0668132569},"targetPosition":{"x":6250.115918321884,"y":12602.863366934453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"8f735c80-9a12-4061-ab17-7a733f941173","savedPayload":{"position":{"x":6250.115918321884,"y":12602.863366934453},"targetPosition":{"x":6721.349035894241,"y":15058.04958164466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dbfa5564-4cfd-4bec-8748-c0dc7b1afd98","savedPayload":{"position":{"x":6721.341762074057,"y":15058.051239975699},"targetPosition":{"x":11693.95519685418,"y":14535.40950735246},"floatingObject":{"isPinned":false,"isFrozen":true,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"\n\nlet candle = record.current\nlet previousCandle = record.previous\n\nvariable.supportResistanceZone = calculateSupportResistanceZone()\n\ndeleteResistances(candle.max)\nincreasePeriods()\n\nvariable.resistance = {}\n\nvariable.resistance.rate = 0\nvariable.resistance.period = 0\nvariable.resistance.type = ''\n\nif (previousCandle !== undefined) {\n\n let previousPreviousCandle = record.previous.previous\n\n if (previousPreviousCandle !== undefined) {\n\n if (previousCandle.max > previousPreviousCandle.max && previousCandle.max > candle.max) {\n variable.resistance.rate = previousCandle.max\n variable.resistance.period = 0\n variable.resistance.type = 'Resistance'\n increaseResistancesBounces(variable.resistance.rate)\n rememberResistance(variable.resistance.rate)\n }\n }\n}\n\nsetClosestResistances()\n\nfunction deleteResistances(rate) {\n\n let max\n\n for (let i = 0; i < variable.resistances.length; i++) {\n let currenRecord = variable.resistances[i]\n let currentRate = currenRecord[0]\n\n if (rate >= currentRate + currentRate * variable.supportResistanceZone / 2 / 100) { // It must go through the support / resistance zone around the current rate value\n max = i\n }\n }\n if (max !== undefined) {\n variable.resistances.splice(0, max + 1)\n }\n}\n\nfunction increasePeriods() {\n\n for (let i = 0; i < variable.resistances.length; i++) {\n let currenRecord = variable.resistances[i]\n currenRecord[1] = currenRecord[1] + 1\n }\n}\n\nfunction setClosestResistances() {\n let record\n\n record = variable.resistances[0]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.resistance1Rate = record[0]\n variable.resistance1Period = record[1]\n variable.resistance1Bounce1 = record[2]\n variable.resistance1Bounce2 = record[3]\n variable.resistance1Bounce3 = record[4]\n variable.resistance1Bounce5 = record[5]\n variable.resistance1Bounce10 = record[6]\n variable.resistance1BounceAll = record[7]\n\n record = variable.resistances[1]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.resistance2Rate = record[0]\n variable.resistance2Period = record[1]\n variable.resistance2Bounce1 = record[2]\n variable.resistance2Bounce2 = record[3]\n variable.resistance2Bounce3 = record[4]\n variable.resistance2Bounce5 = record[5]\n variable.resistance2Bounce10 = record[6]\n variable.resistance2BounceAll = record[7]\n\n record = variable.resistances[2]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.resistance3Rate = record[0]\n variable.resistance3Period = record[1]\n variable.resistance3Bounce1 = record[2]\n variable.resistance3Bounce2 = record[3]\n variable.resistance3Bounce3 = record[4]\n variable.resistance3Bounce5 = record[5]\n variable.resistance3Bounce10 = record[6]\n variable.resistance3BounceAll = record[7]\n\n record = variable.resistances[3]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.resistance4Rate = record[0]\n variable.resistance4Period = record[1]\n variable.resistance4Bounce1 = record[2]\n\n record = variable.resistances[4]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.resistance5Rate = record[0]\n variable.resistance5Period = record[1]\n variable.resistance5Bounce1 = record[2]\n\n}\n\nfunction rememberResistance(rate) {\n if (variable.resistances.length === 0) {\n variable.resistances.push([rate, 1, 0, 0, 0, 0, 0, 0])\n return\n }\n for (let i = 0; i < variable.resistances.length; i++) {\n let currenRecord = variable.resistances[i]\n let currentRate = currenRecord[0]\n\n if (rate > currentRate - currentRate * variable.supportResistanceZone / 2 / 100 && rate < currentRate + currentRate * variable.supportResistanceZone / 2 / 100) {\n // We are not going to remember this new level since it is absorved by this existing one.\n return\n }\n\n if (rate < currentRate) {\n variable.resistances.splice(i, 0, [rate, 1, 0, 0, 0, 0, 0, 0])\n return\n }\n\n if (i === variable.resistances.length - 1) {\n variable.resistances.push([rate, 1, 0, 0, 0, 0, 0, 0])\n return\n }\n }\n}\n\nfunction increaseResistancesBounces(rate) {\n\n for (let i = 0; i < variable.resistances.length; i++) {\n let currenRecord = variable.resistances[i]\n let currentRate = currenRecord[0]\n let percentage = 100 - rate * 100 / currentRate\n\n if (percentage <= variable.supportResistanceZone / 2 * 1) {\n currenRecord[2] = currenRecord[2] + 1\n }\n\n if (percentage <= variable.supportResistanceZone / 2 * 2) {\n currenRecord[3] = currenRecord[3] + 1\n }\n\n if (percentage <= variable.supportResistanceZone / 2 * 3) {\n currenRecord[4] = currenRecord[4] + 1\n }\n\n if (percentage <= variable.supportResistanceZone / 2 * 5) {\n currenRecord[5] = currenRecord[5] + 1\n }\n\n if (percentage <= variable.supportResistanceZone / 2 * 10) {\n currenRecord[6] = currenRecord[6] + 1\n }\n\n currenRecord[7] = currenRecord[7] + 1\n }\n}\n\nfunction calculateSupportResistanceZone() {\n /* \n The variable % is a percentage we will use for support and resistance based on the time frame.\n We will fix the % for 1 minute candles and for 24 hs candle and the use the formula to obtain\n y on a line by knowing 2 points of the line as described here: https://en.wikipedia.org/wiki/Line_(geometry)\n */\n\n let x0 = system.ONE_MIN_IN_MILISECONDS\n let y0 = 0.1 // At one min, we will consider the resistance / support zone to be 0.1% resistance \n let x1 = system.ONE_DAY_IN_MILISECONDS\n let y1 = 4 // At one day, we will consider the resistance / support zone to be 4% resistance\n\n let x = system.timeFrame // This is the current time frame being calculated\n let y = (x - x0) * (y1 - y0) / (x1 - x0) + y0\n\n return y\n\n}","id":"1c051e71-b2ff-4b5e-9239-98cca169e8fe","savedPayload":{"position":{"x":9467.341730176468,"y":13438.389469037638},"targetPosition":{"x":10043.277681418824,"y":13676.80247815882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"27aac2c1-d423-475c-86ae-84041aa2f3f0","savedPayload":{"position":{"x":10043.162077799532,"y":13676.727445557262},"targetPosition":{"x":10618.549531702074,"y":13914.585354839253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"variable.resistances = []","id":"fdefa569-f171-4d85-8761-d732ebf64ea1","savedPayload":{"position":{"x":9629.067790696166,"y":13155.168181565203},"targetPosition":{"x":10123.575731363719,"y":13534.625798413226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fc16fb34-f72b-4da5-ade1-7598d51a8fbe","savedPayload":{"position":{"x":10123.473805779355,"y":13534.560524155107},"targetPosition":{"x":10618.549531702074,"y":13914.585354839253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a8703574-5d20-4fe2-a8e9-d01de4a958a9","savedPayload":{"position":{"x":10618.549531702074,"y":13914.585354839253},"targetPosition":{"x":11693.95519685418,"y":14535.40950735246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7a734501-a0fb-4305-803e-7e95d477c513","savedPayload":{"position":{"x":11693.95519685418,"y":14535.40950735246},"targetPosition":{"x":16250.166666666668,"y":12512.395127993394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Resistances","id":"156b4fa7-7f8f-4464-8ddb-6eb6123bc5c3"}}},{"type":"Product Definition","name":"Supports","code":"{ \n\"codeName\": \"Supports\",\n \"singularVariableName\": \"support\",\n \"pluralVariableName\": \"supports\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"4a1bd251-76ed-4530-8723-08e41d50f12d","savedPayload":{"position":{"x":11673.896273243305,"y":8938.309171913417},"targetPosition":{"x":12915.618352717782,"y":8807.90423215178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"deaaf4ec-9352-40b6-af9a-8541a73a5e13","savedPayload":{"position":{"x":11834.35268405023,"y":8183.66504634946},"targetPosition":{"x":12915.618352717782,"y":8807.90423215178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"7cf0c803-eb36-4ada-930f-d129bdffb558","savedPayload":{"position":{"x":8520.065442160141,"y":5059.667059276458},"targetPosition":{"x":9701.000538033428,"y":4649.920431060005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"500e7345-95eb-4430-8171-32caa2356bdf","savedPayload":{"position":{"x":9701.000538033428,"y":4649.920431060005},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"ecbd13b3-2af2-45a5-800c-a34fe73e0db6","savedPayload":{"position":{"x":8459.076223373735,"y":4856.414240328623},"targetPosition":{"x":9670.505928640225,"y":4548.294021586088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a44b1626-282b-49d2-9ad1-cd5c81cc9f4a","savedPayload":{"position":{"x":9670.505928640225,"y":4548.294021586088},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Rate Support","code":"{\n \"codeName\": \"rateSupport\"\n}","formula":{"type":"Formula","code":"variable.support.rate","id":"14075730-a865-48f7-9f44-5c2d201ed16d","savedPayload":{"position":{"x":8415.543762159914,"y":4648.721394907586},"targetPosition":{"x":9648.739698033314,"y":4444.447598875569},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b2612e72-07b1-4756-834a-6db765bd386c","savedPayload":{"position":{"x":9648.739698033314,"y":4444.447598875569},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Period Support","code":"{\n \"codeName\": \"periodSupport\"\n}","formula":{"type":"Formula","code":"variable.support.period","id":"a47c1c1f-8e5e-4e03-9177-33fbf3f5d5a7","savedPayload":{"position":{"x":8389.78171089927,"y":4438.084954723882},"targetPosition":{"x":9635.858672402992,"y":4339.129378783718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bd719e1d-c639-4577-b0f1-89663028daa3","savedPayload":{"position":{"x":9635.858672402992,"y":4339.129378783718},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Type Support","code":"{\n \"codeName\": \"typeSupport\",\n \"isString\": true,\n \"possibleValues\": [\"Resistance\", \"Support\"]\n}","formula":{"type":"Formula","code":"variable.support.type","id":"18bf2427-ca89-4840-ba97-c9187b76da8c","savedPayload":{"position":{"x":8381.975685761465,"y":4226.022560155757},"targetPosition":{"x":9631.95565983409,"y":4233.098181499655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"005b24fe-a5d4-47b7-aa13-03c2aa091d8a","savedPayload":{"position":{"x":9631.95565983409,"y":4233.098181499655},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 1 Rate","code":"{ \n\"codeName\": \"support1Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support1Rate","id":"40e08fb6-52ff-4f0a-99a6-989f5bc81610","savedPayload":{"position":{"x":8392.181929336499,"y":4014.062125615477},"targetPosition":{"x":9637.058781621607,"y":4127.117964229515},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f7755d99-afae-4dfe-a429-5de300b3a64a","savedPayload":{"position":{"x":9637.058781621607,"y":4127.117964229515},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 1 Period","code":"{ \n\"codeName\": \"support1Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support1Period","id":"c65fb3e0-42b1-4de7-9d71-613919f6a7ec","savedPayload":{"position":{"x":8420.326905405536,"y":3803.730830890957},"targetPosition":{"x":9651.131269656125,"y":4021.952316867255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"78fb954c-336d-4a3d-8724-65786fcf8cbf","savedPayload":{"position":{"x":9651.131269656125,"y":4021.952316867255},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 2 Rate","code":"{ \n\"codeName\": \"support2Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support2Rate","id":"0ce65da3-57d2-4161-89aa-68bf1802c52a","savedPayload":{"position":{"x":8466.20782877106,"y":3596.544117780423},"targetPosition":{"x":9674.071731338887,"y":3918.358960311988},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5d52e50a-ccad-4487-aebb-ac4b8fbecb1e","savedPayload":{"position":{"x":9674.071731338887,"y":3918.358960311988},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 2 Period","code":"{ \n\"codeName\": \"support2Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support2Period","id":"28425604-1922-47d0-9479-c53c56923197","savedPayload":{"position":{"x":8529.494126328855,"y":3393.9947712995154},"targetPosition":{"x":9705.714880117785,"y":3817.084287071534},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fa4c6abd-7eee-4f94-b2b6-65e638c5f1c1","savedPayload":{"position":{"x":9705.714880117785,"y":3817.084287071534},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 3 Rate","code":"{ \n\"codeName\": \"support3Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support3Rate","id":"ab99a0da-1377-4cf4-986c-197e52b4c696","savedPayload":{"position":{"x":8609.729818854825,"y":3197.542164131024},"targetPosition":{"x":9745.83272638077,"y":3718.8579834872885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7b87217d-8e2a-425a-a1e1-d5d0a09a98de","savedPayload":{"position":{"x":9745.83272638077,"y":3718.8579834872885},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 3 Period","code":"{ \n\"codeName\": \"support3Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support3Period","id":"052e5b14-17d6-45f9-b680-388146cb6852","savedPayload":{"position":{"x":8706.336806345718,"y":3008.601741811305},"targetPosition":{"x":9794.136220126216,"y":3624.387772327429},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aa81f2c7-4fb7-4ce8-a52c-9ced275a240b","savedPayload":{"position":{"x":9794.136220126216,"y":3624.387772327429},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 4 Rate","code":"{ \n\"codeName\": \"support4Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support4Rate","id":"d7409aeb-b96f-4591-abc6-94c3feae3243","savedPayload":{"position":{"x":8818.61903324292,"y":2828.534824412737},"targetPosition":{"x":9850.277333574817,"y":3534.354313628145},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0b188be8-ca50-4b70-b54c-01bee5c8fe6e","savedPayload":{"position":{"x":9850.277333574817,"y":3534.354313628145},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 4 Period","code":"{ \n\"codeName\": \"support4Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support4Period","id":"44d44f24-2c72-4679-8eac-3c571073eb5b","savedPayload":{"position":{"x":8945.767503528694,"y":2658.638798201391},"targetPosition":{"x":9913.851568717704,"y":3449.406300522472},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bd577b4c-73a5-4ce1-ba77-30dee0f2d456","savedPayload":{"position":{"x":9913.851568717704,"y":3449.406300522472},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 5 Rate","code":"{ \n\"codeName\": \"support5Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support5Rate","id":"362400a8-620f-4a50-ac69-ca970d2c8e2c","savedPayload":{"position":{"x":9086.866109561035,"y":2500.1377679392826},"targetPosition":{"x":9984.400871733875,"y":3370.155785391418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6a84dce6-0b33-4acd-8eef-ec00e8c1f565","savedPayload":{"position":{"x":9984.400871733875,"y":3370.155785391418},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 5 Period","code":"{ \n\"codeName\": \"support5Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support5Period","id":"a3c54d4a-d24f-48d2-9bd6-8c97e72988d6","savedPayload":{"position":{"x":9240.898232650206,"y":2354.173737181496},"targetPosition":{"x":10061.41693327846,"y":3297.1737700125245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aad90b32-0fc6-42e6-97ad-92369d92c75d","savedPayload":{"position":{"x":10061.41693327846,"y":3297.1737700125245},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 1 Bounce 1","code":"{ \n\"codeName\": \"support1Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support1Bounce1","id":"f8588e9b-1b98-4d42-9c9e-87a1ccbf5f85","savedPayload":{"position":{"x":9037.958676297969,"y":1717.2045244321027},"targetPosition":{"x":9406.754067819718,"y":2221.798380114393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"b01a5c8f-7c91-497d-b859-14a28ed2dab0","savedPayload":{"position":{"x":9406.754067819718,"y":2221.798380114393},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 1 Bounce 2","code":"{ \n\"codeName\": \"support1Bounce2\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support1Bounce2","id":"5ced6adc-834d-42d3-8fda-922e22c010b3","savedPayload":{"position":{"x":9258.564366494064,"y":1569.9133795628873},"targetPosition":{"x":9583.238619976593,"y":2103.9654642190203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"237bb47a-cad5-4d17-8082-4a668a520c0f","savedPayload":{"position":{"x":9583.238619976593,"y":2103.9654642190203},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 1 Bounce 3","code":"{ \n\"codeName\": \"support1Bounce3\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support1Bounce3","id":"b4699add-3195-4db4-8bd7-9a9afbf47bfe","savedPayload":{"position":{"x":9490.866483871334,"y":1441.8615222322833},"targetPosition":{"x":9769.08031387841,"y":2001.5239783545371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"7ab00eae-5fff-41cb-a438-2e938663d10b","savedPayload":{"position":{"x":9769.08031387841,"y":2001.5239783545371},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 1 Bounce 5","code":"{ \n\"codeName\": \"support1Bounce5\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support1Bounce5","id":"a447aee8-c957-4bc8-b2ee-8e90b69820f1","savedPayload":{"position":{"x":9733.191286350879,"y":1333.9715690066646},"targetPosition":{"x":9962.940155862047,"y":1915.2120157740424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"e9f2282a-5328-4765-9e6a-e388f22b0664","savedPayload":{"position":{"x":9962.940155862047,"y":1915.2120157740424},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 1 Bounce 10","code":"{ \n\"codeName\": \"support1Bounce10\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support1Bounce10","id":"ccb5af69-8ba1-4050-8e5c-d7bb6d7ca7e6","savedPayload":{"position":{"x":9983.792818177984,"y":1247.0208694713087},"targetPosition":{"x":10163.421381323731,"y":1845.6514561457575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"bff9046e-7f89-4bf1-94fa-374623c25270","savedPayload":{"position":{"x":10163.421381323731,"y":1845.6514561457575},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 1 Bounce All","code":"{ \n\"codeName\": \"support1BounceAll\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support1BounceAll","id":"db228fdf-d598-4e15-ac14-ee5f9abc9f04","savedPayload":{"position":{"x":10240.865489573314,"y":1181.6359054088402},"targetPosition":{"x":10369.079518439994,"y":1793.3434848957827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"92fe7b52-2018-4a57-9d5a-68146cb40679","savedPayload":{"position":{"x":10369.079518439994,"y":1793.3434848957827},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 2 Bounce 1","code":"{ \n\"codeName\": \"support2Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support2Bounce1","id":"668ef50d-cc9c-472d-8f1e-01501af5dcf5","savedPayload":{"position":{"x":10502.557086048651,"y":1138.2877769836234},"targetPosition":{"x":10578.432795620263,"y":1758.6649821556093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"1dfa6ecc-7354-4ae2-b82c-3b67c1dc9714","savedPayload":{"position":{"x":10578.432795620263,"y":1758.6649821556093},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 2 Bounce 2","code":"{ \n\"codeName\": \"support2Bounce2\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support2Bounce2","id":"879626cc-4c25-4a48-9664-b09a8ef0898b","savedPayload":{"position":{"x":10766.982113654738,"y":1117.2888084542815},"targetPosition":{"x":10789.972817705133,"y":1741.8658073321358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"2ac63aa9-1097-4384-b9d9-a09591216b46","savedPayload":{"position":{"x":10789.972817705133,"y":1741.8658073321358},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 2 Bounce 3","code":"{ \n\"codeName\": \"support2Bounce3\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support2Bounce3","id":"6d35756c-cbf6-4dbb-9e0e-87eec91ae9c7","savedPayload":{"position":{"x":11032.235384008403,"y":1118.7902978702587},"targetPosition":{"x":11002.175433988066,"y":1743.0669988649174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"0f78e402-d6d9-47c8-a71f-ba19d31fdaa9","savedPayload":{"position":{"x":11002.175433988066,"y":1743.0669988649174},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 2 Bounce 5","code":"{ \n\"codeName\": \"support2Bounce5\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support2Bounce5","id":"7ea5cc0c-062a-4ab1-bc29-0cfef7646609","savedPayload":{"position":{"x":11296.405741218474,"y":1142.7814269659052},"targetPosition":{"x":11213.511719756121,"y":1762.2599021414348},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"65e72b1c-36bb-4242-9cea-d0fa1ef8aacc","savedPayload":{"position":{"x":11213.511719756121,"y":1762.2599021414348},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 2 Bounce 10","code":"{ \n\"codeName\": \"support2Bounce10\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support2Bounce10","id":"c2e95035-bc39-4a60-bc3d-816d78ec154d","savedPayload":{"position":{"x":11557.589831807798,"y":1189.0893391063323},"targetPosition":{"x":11422.45899222758,"y":1799.3062318537764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"f8bdb4d7-0a2a-4730-9bd1-a77c3eacb76b","savedPayload":{"position":{"x":11422.45899222758,"y":1799.3062318537764},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 2 Bounce All","code":"{ \n\"codeName\": \"support2BounceAll\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support2BounceAll","id":"467b8765-e0cd-449b-8773-5eaf03de28b7","savedPayload":{"position":{"x":11813.905818418669,"y":1257.3803847234253},"targetPosition":{"x":11627.511781516278,"y":1853.9390683474508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"2fda2cca-b8bc-4b85-919a-f8df88913ec4","savedPayload":{"position":{"x":11627.511781516278,"y":1853.9390683474508},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 3 Bounce 1","code":"{ \n\"codeName\": \"support3Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support3Bounce1","id":"77a3826e-5aa8-4f72-b389-964cd68e7b74","savedPayload":{"position":{"x":12063.506938494082,"y":1347.1625252686267},"targetPosition":{"x":11827.192677576608,"y":1925.764780783612},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"7add9106-d78b-4ba4-b08b-6251d16edde3","savedPayload":{"position":{"x":11827.192677576608,"y":1925.764780783612},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 3 Bounce 2","code":"{ \n\"codeName\": \"support3Bounce2\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support3Bounce2","id":"6cc16e19-c604-46e8-9bbb-0d03e52e34aa","savedPayload":{"position":{"x":12304.594810244298,"y":1457.7888783619546},"targetPosition":{"x":12020.062974976781,"y":2014.2658632582743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"eb85b0d0-36b0-4c43-bbb6-3946c0e44075","savedPayload":{"position":{"x":12020.062974976781,"y":2014.2658632582743},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 3 Bounce 3","code":"{ \n\"codeName\": \"support3Bounce3\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support3Bounce3","id":"d680f9ce-a7d0-4a1b-86ad-a03b3edf9469","savedPayload":{"position":{"x":12535.432390028844,"y":1588.4623785943768},"targetPosition":{"x":12204.733038804417,"y":2118.804663444212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"32259491-a337-4c85-9ae8-b296c401c80b","savedPayload":{"position":{"x":12204.733038804417,"y":2118.804663444212},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 3 Bounce 5","code":"{ \n\"codeName\": \"support3Bounce5\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support3Bounce5","id":"0131d473-e06b-4082-b349-4368a71c15b8","savedPayload":{"position":{"x":12754.356487795741,"y":1738.241520402342},"targetPosition":{"x":12379.872317017936,"y":2238.6279768905843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"917cfbe5-6374-4170-b28d-e9d9f7920503","savedPayload":{"position":{"x":12379.872317017936,"y":2238.6279768905843},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 3 Bounce 10","code":"{ \n\"codeName\": \"support3Bounce10\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support3Bounce10","id":"58020873-bc14-436c-ab34-70ea0c165e75","savedPayload":{"position":{"x":12959.78975040394,"y":1906.0471416369382},"targetPosition":{"x":12544.218927104494,"y":2372.872473878261},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"5d70fe41-e6ce-42db-a5c0-12dcaa35a724","savedPayload":{"position":{"x":12544.218927104494,"y":2372.872473878261},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 3 Bounce All","code":"{ \n\"codeName\": \"support3BounceAll\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support3BounceAll","id":"5d24f8e3-9f2f-4d48-9c8e-d8a11a6dc019","savedPayload":{"position":{"x":13150.252026488859,"y":2090.670198951919},"targetPosition":{"x":12696.58874797243,"y":2520.570919730246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"79faaac2-1e37-4667-a4fc-0bdb696cde15","savedPayload":{"position":{"x":12696.58874797243,"y":2520.570919730246},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support Resistance Zone","code":"{ \n\"codeName\": \"supportResistanceZone\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.supportResistanceZone","id":"5f2c5c5d-b624-4642-b235-ce65d442e721","savedPayload":{"position":{"x":12103.153332446796,"y":3265.4771409161276},"targetPosition":{"x":11858.90979273878,"y":3460.4164733016128},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"8405cbdf-a97b-40c8-9e4d-1b5187c7304b","savedPayload":{"position":{"x":11858.90979273878,"y":3460.4164733016128},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 4 Bounce 1","code":"{ \n\"codeName\": \"support4Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support4Bounce1","id":"c6a343f3-b85c-460d-b8d9-59c4bc638215","savedPayload":{"position":{"x":13480.892232480654,"y":2504.9361825940987},"targetPosition":{"x":12961.100912765865,"y":2851.9837066439895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"65d9c0e2-d16d-4702-99af-bba32a73e82b","savedPayload":{"position":{"x":12961.100912765865,"y":2851.9837066439895},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 5 Bounce 1","code":"{ \n\"codeName\": \"support5Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support5Bounce1","id":"b715565a-3502-464a-bd5e-e29bb7c8f7fc","savedPayload":{"position":{"x":13618.687892126753,"y":2731.5943130162746},"targetPosition":{"x":13071.337440482745,"y":3033.31021098173},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"04cf3b6f-3549-4459-9628-1435764305ca","savedPayload":{"position":{"x":13071.337440482745,"y":3033.31021098173},"targetPosition":{"x":10881.935633906714,"y":4240.173802843553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a2958a95-82c5-480d-a552-69ff3a01cade","savedPayload":{"position":{"x":10881.934949331164,"y":4240.172947361233},"targetPosition":{"x":12915.618352717782,"y":8807.90423215178},"floatingObject":{"isPinned":false,"isFrozen":true,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"\n\nlet candle = record.current\nlet previousCandle = record.previous\n\nvariable.supportResistanceZone = calculateSupportResistanceZone()\n\ndeleteSupports(candle.min)\nincreasePeriods()\n\nvariable.support = {}\n\nvariable.support.rate = 0\nvariable.support.period = 0\nvariable.support.type = ''\n\nif (previousCandle !== undefined) {\n\n let previousPreviousCandle = record.previous.previous\n\n if (previousPreviousCandle !== undefined) {\n\n if (previousCandle.min < previousPreviousCandle.min && previousCandle.min < candle.min) {\n variable.support.rate = previousCandle.min\n variable.support.period = 0\n variable.support.type = 'Support'\n increaseSupportsBounces(variable.support.rate)\n rememberSupports(variable.support.rate)\n }\n }\n}\n\nsetClosestSupports()\n\nfunction deleteSupports(rate) {\n\n let max\n\n for (let i = 0; i < variable.supports.length; i++) {\n let currenRecord = variable.supports[i]\n let currentRate = currenRecord[0]\n\n if (rate <= currentRate - currentRate * variable.supportResistanceZone / 2 / 100) { // It must go through the support / resistance zone around the current rate value\n max = i\n }\n }\n if (max !== undefined) {\n variable.supports.splice(0, max + 1)\n }\n}\n\nfunction increasePeriods() {\n\n for (let i = 0; i < variable.supports.length; i++) {\n let currenRecord = variable.supports[i]\n currenRecord[1] = currenRecord[1] + 1\n }\n}\n\nfunction setClosestSupports() {\n let record\n\n record = variable.supports[0]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.support1Rate = record[0]\n variable.support1Period = record[1]\n variable.support1Bounce1 = record[2]\n variable.support1Bounce2 = record[3]\n variable.support1Bounce3 = record[4]\n variable.support1Bounce5 = record[5]\n variable.support1Bounce10 = record[6]\n variable.support1BounceAll = record[7]\n\n record = variable.supports[1]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.support2Rate = record[0]\n variable.support2Period = record[1]\n variable.support2Bounce1 = record[2]\n variable.support2Bounce2 = record[3]\n variable.support2Bounce3 = record[4]\n variable.support2Bounce5 = record[5]\n variable.support2Bounce10 = record[6]\n variable.support2BounceAll = record[7]\n\n record = variable.supports[2]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.support3Rate = record[0]\n variable.support3Period = record[1]\n variable.support3Bounce1 = record[2]\n variable.support3Bounce2 = record[3]\n variable.support3Bounce3 = record[4]\n variable.support3Bounce5 = record[5]\n variable.support3Bounce10 = record[6]\n variable.support3BounceAll = record[7]\n\n record = variable.supports[3]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.support4Rate = record[0]\n variable.support4Period = record[1]\n variable.support4Bounce1 = record[2]\n\n record = variable.supports[4]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.support5Rate = record[0]\n variable.support5Period = record[1]\n variable.support5Bounce1 = record[2]\n\n}\n\n\nfunction rememberSupports(rate) {\n if (variable.supports.length === 0) {\n variable.supports.push([rate, 1, 0, 0, 0, 0, 0, 0])\n return\n }\n for (let i = 0; i < variable.supports.length; i++) {\n let currenRecord = variable.supports[i]\n let currentRate = currenRecord[0]\n\n if (rate > currentRate - currentRate * variable.supportResistanceZone / 2 / 100 && rate < currentRate + currentRate * variable.supportResistanceZone / 2 / 100) {\n // We are not going to remember this new level since it is absorved by this existing one.\n return\n }\n\n if (rate > currentRate) {\n variable.supports.splice(i, 0, [rate, 1, 0, 0, 0, 0, 0, 0])\n return\n }\n\n if (i === variable.supports.length - 1) {\n variable.supports.push([rate, 1, 0, 0, 0, 0, 0, 0])\n return\n }\n }\n}\n\nfunction increaseSupportsBounces(rate) {\n\n for (let i = 0; i < variable.supports.length; i++) {\n let currenRecord = variable.supports[i]\n let currentRate = currenRecord[0]\n let percentage = rate * 100 / currentRate - 100\n\n if (percentage <= variable.supportResistanceZone / 2 * 1) {\n currenRecord[2] = currenRecord[2] + 1\n }\n\n if (percentage <= variable.supportResistanceZone / 2 * 2) {\n currenRecord[3] = currenRecord[3] + 1\n }\n\n if (percentage <= variable.supportResistanceZone / 2 * 3) {\n currenRecord[4] = currenRecord[4] + 1\n }\n\n if (percentage <= variable.supportResistanceZone / 2 * 5) {\n currenRecord[5] = currenRecord[5] + 1\n }\n\n if (percentage <= variable.supportResistanceZone / 2 * 10) {\n currenRecord[6] = currenRecord[6] + 1\n }\n\n currenRecord[7] = currenRecord[7] + 1\n }\n}\n\nfunction calculateSupportResistanceZone() {\n /* \n The variable % is a percentage we will use for support and resistance based on the time frame.\n We will fix the % for 1 minute candles and for 24 hs candle and the use the formula to obtain\n y on a line by knowing 2 points of the line as described here: https://en.wikipedia.org/wiki/Line_(geometry)\n */\n\n let x0 = system.ONE_MIN_IN_MILISECONDS\n let y0 = 0.1 // At one min, we will consider the resistance / support zone to be 0.1% resistance \n let x1 = system.ONE_DAY_IN_MILISECONDS\n let y1 = 4 // At one day, we will consider the resistance / support zone to be 4% resistance\n\n let x = system.timeFrame // This is the current time frame being calculated\n let y = (x - x0) * (y1 - y0) / (x1 - x0) + y0\n\n return y\n\n}","id":"2f38e534-5b92-4ded-9c74-1a8c1fef392c","savedPayload":{"position":{"x":13270.718455567132,"y":6351.161094520506},"targetPosition":{"x":13222.005395590888,"y":6972.621019734808},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4f6dbb7b-b13f-45a9-ba9e-e1c9f06970d6","savedPayload":{"position":{"x":13222.005395590888,"y":6972.621019734808},"targetPosition":{"x":13173.67550298278,"y":7593.343841972844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"variable.supports = []","id":"a62efae4-3818-4048-ad13-bfb7c4bd22d9","savedPayload":{"position":{"x":13590.05333731123,"y":6417.450897587226},"targetPosition":{"x":13382.036232404387,"y":7005.053683723756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"793f079f-9623-4e8c-bd38-8dbd351caf8f","savedPayload":{"position":{"x":13382.036232404387,"y":7005.053683723756},"targetPosition":{"x":13173.67550298278,"y":7593.343841972844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3d26c2d9-7dd2-4796-91b4-768026944d66","savedPayload":{"position":{"x":13173.692464432885,"y":7593.22554891764},"targetPosition":{"x":12915.618352717782,"y":8807.90423215178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"bc3c43de-6312-47d4-ae3d-0c95c1b039e0","savedPayload":{"position":{"x":12915.618352717782,"y":8807.90423215178},"targetPosition":{"x":16250.166666666668,"y":12512.395127993394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Supports","id":"1a104c65-6470-4694-a39e-4663f15e490c"}}}],"id":"c037980d-d455-41a0-b058-2d7849ddf582","savedPayload":{"position":{"x":11408.098730488842,"y":18349.928676654214},"targetPosition":{"x":12814.422748313864,"y":18696.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"tradingBots":[],"plotters":[{"type":"Plotter","name":"Plotters Candles Volumes","code":"{\n\"codeName\": \"PlottersCandlesVolumes\"\n}","modules":[{"type":"Plotter Module","name":"Candles","code":"{\n\"codeName\": \"Candles\",\n\"isLegacy\": true,\n\"icon\": \"candles\"\n}","panels":[{"type":"Plotter Panel","name":"New Plotter Panel","code":"{ \n\"codeName\": \"CandlePanel\" ,\n\"isLegacy\": true\n}","panelData":[],"id":"9336f4e6-d56b-4ed4-819d-0bb762ba1fdd","savedPayload":{"position":{"x":11422.333955206532,"y":18323.14921874969},"targetPosition":{"x":11795.325742789815,"y":18323.14921874969},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0aed75a3-fee8-4ddc-97ff-b6768e6f12a3","savedPayload":{"position":{"x":11795.325742789815,"y":18323.14921874969},"targetPosition":{"x":12168.317530373099,"y":18323.14921874969},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Volumes","code":"{\n\"codeName\": \"Volumes\",\n\"isLegacy\": true,\n\"icon\": \"volume\"\n}","panels":[{"type":"Plotter Panel","name":"New Plotter Panel","code":"{ \n\"codeName\": \"VolumePanel\" ,\n\"isLegacy\": true\n}","panelData":[],"id":"42dbd098-4550-44a0-987f-54a28dd5f40b","savedPayload":{"position":{"x":11795.325742789815,"y":17677.108491849503},"targetPosition":{"x":11981.821636581457,"y":18000.128855299597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a6177fb7-51d1-4b7c-bcbb-04861a5bf0c1","savedPayload":{"position":{"x":11981.821636581457,"y":18000.128855299597},"targetPosition":{"x":12168.317530373099,"y":18323.14921874969},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e4347543-21b5-4274-b690-e6b3b5899862","savedPayload":{"position":{"x":12066.127392262631,"y":18033.32486886669},"targetPosition":{"x":12814.422748313864,"y":18696.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Plotter","name":"Plotters Bollinger Bands","code":"{\n\"codeName\" : \"PlottersBollingerBands\"\n}","modules":[{"type":"Plotter Module","name":"Percentage B","code":"{\n\t\"codeName\": \"Percentage Bandwidth\",\n \"icon\": \"histogram\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Begin Previous Value","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.value","id":"ad85e84e-166f-41c7-bc08-b6a50ca4524d","savedPayload":{"position":{"x":12478.549443845777,"y":15031.142301382435},"targetPosition":{"x":12247.826341938138,"y":15404.707416178155},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"534c2cd4-d020-43cf-9284-433a57fdcfce","savedPayload":{"position":{"x":12247.826341938138,"y":15404.707416178155},"targetPosition":{"x":12010.91063140026,"y":15769.713724963933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End Value","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.value","id":"1e029480-c6d7-4455-9ae9-5677b99752de","savedPayload":{"position":{"x":12741.18631841233,"y":15295.907698337047},"targetPosition":{"x":12376.080713723033,"y":15532.738659984327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5b05abcc-76cf-4f9d-82e5-671ab7471678","savedPayload":{"position":{"x":12376.080713723033,"y":15532.738659984327},"targetPosition":{"x":12010.91063140026,"y":15769.713724963933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin Previous MA","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.movingAverage","id":"7bafa19b-086c-41cf-b2e4-a41485841f4c","savedPayload":{"position":{"x":12870.993362600955,"y":15633.96796213758},"targetPosition":{"x":12441.040244049922,"y":15701.798491646954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0993c95f-2054-48d8-9977-2d4eb24dabf7","savedPayload":{"position":{"x":12441.040244049922,"y":15701.798491646954},"targetPosition":{"x":12010.91063140026,"y":15769.713724963933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End MA","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.movingAverage","id":"412d8820-facc-4065-a235-d35d86c3b569","savedPayload":{"position":{"x":12852.000688826818,"y":15994.836814960518},"targetPosition":{"x":12431.549064986353,"y":15882.36888745637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"35bdf97d-abf8-4f1e-922c-d853e6980b0c","savedPayload":{"position":{"x":12431.549064986353,"y":15882.36888745637},"targetPosition":{"x":12010.91063140026,"y":15769.713724963933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Being Previous Bandwidth","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.bandwidth * 250","id":"cbd72abc-e6c4-44d6-bd58-1bab7c0b2960","savedPayload":{"position":{"x":12588.731316175164,"y":16262.420490454257},"targetPosition":{"x":12349.26561855925,"y":16043.776777655421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"943da81e-c0ca-4213-ba8a-5dbafd3ead18","savedPayload":{"position":{"x":12349.26561855925,"y":16043.776777655421},"targetPosition":{"x":12010.91063140026,"y":15769.713724963933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End Bandwidth","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bandwidth * 250","id":"6ac14886-32ee-490f-a600-4f704458f24e","savedPayload":{"position":{"x":12405.826144489289,"y":16545.64992783357},"targetPosition":{"x":12208.446255943718,"y":16157.806111634021},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cdf38478-d5d4-410e-98fd-14b7b74bfd8b","savedPayload":{"position":{"x":12208.446255943718,"y":16157.806111634021},"targetPosition":{"x":12010.91063140026,"y":15769.713724963933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"54cece5b-472f-4c86-b6b6-83342e2890f7","savedPayload":{"position":{"x":12055.94238647032,"y":16639.412991195033},"targetPosition":{"x":12033.43796504306,"y":16204.709275845811},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8e21c88b-bfb7-41dd-9cbe-678d5dc4fc54","savedPayload":{"position":{"x":12033.43796504306,"y":16204.709275845811},"targetPosition":{"x":12010.91063140026,"y":15769.713724963933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"1572cfc8-0318-43b5-8405-a04cc00cbd16","savedPayload":{"position":{"x":11698.75844665291,"y":16582.75473928684},"targetPosition":{"x":11854.78759095951,"y":16176.366402276784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"75670aaa-849d-4156-af74-61a25ce49713","savedPayload":{"position":{"x":11854.78759095951,"y":16176.366402276784},"targetPosition":{"x":12010.91063140026,"y":15769.713724963933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 30","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 30","id":"6039db7e-9c71-4906-b999-3d7848989c5a","savedPayload":{"position":{"x":11394.936981134828,"y":16385.456897206543},"targetPosition":{"x":11702.828375959365,"y":16077.6849410954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ffea0ed5-39b4-4c14-b1fc-2164a6e189fd","savedPayload":{"position":{"x":11702.828375959365,"y":16077.6849410954},"targetPosition":{"x":12010.91063140026,"y":15769.713724963933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 30","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 30","id":"89393793-42d5-4dea-bca5-aee8f3349659","savedPayload":{"position":{"x":11197.62807999517,"y":16081.644828583769},"targetPosition":{"x":11604.144059543054,"y":15925.729933744478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4bc7f337-74a7-42b7-89b7-9d4edc10fca5","savedPayload":{"position":{"x":11604.144059543054,"y":15925.729933744478},"targetPosition":{"x":12010.91063140026,"y":15769.713724963933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 70","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 70","id":"c616cf49-abaf-490e-a3b7-f978442c8b4a","savedPayload":{"position":{"x":11140.9455855299,"y":15724.46762525195},"targetPosition":{"x":11575.79929537801,"y":15747.09214132618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"827e424f-3036-4645-9246-94b4bb0ebaea","savedPayload":{"position":{"x":11575.79929537801,"y":15747.09214132618},"targetPosition":{"x":12010.91063140026,"y":15769.713724963933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 70","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 70","id":"d3003e73-9318-4282-a293-d61c0d98bd4b","savedPayload":{"position":{"x":11234.671132173642,"y":15374.587198396013},"targetPosition":{"x":11622.677629590376,"y":15572.120291116018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"84bdd434-48af-4f4a-8f14-62df15022d05","savedPayload":{"position":{"x":11622.677629590376,"y":15572.120291116018},"targetPosition":{"x":12010.91063140026,"y":15769.713724963933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 100","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 100","id":"8d13712b-3f9e-424e-b85c-e6794ce39ca9","savedPayload":{"position":{"x":11129.423150587827,"y":16586.63416854877},"targetPosition":{"x":11385.130909275746,"y":16752.69272868022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ec589261-f564-4ad0-b866-8c63b8a15150","savedPayload":{"position":{"x":11736.630766931561,"y":15431.51967063534},"targetPosition":{"x":12010.91063140026,"y":15769.713724963933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 100","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 100","id":"8c06033c-c2b7-42a7-b509-e45a1b7edf42","savedPayload":{"position":{"x":11308.721547700763,"y":16407.335771435835},"targetPosition":{"x":11474.780107832214,"y":16663.043530123752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8949ce4a-bdad-47c2-a85f-0728ed7f9746","savedPayload":{"position":{"x":11898.383726008224,"y":15349.675556052061},"targetPosition":{"x":12010.91063140026,"y":15769.713724963933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9388e24f-4147-4878-8754-b6f6b8807813","savedPayload":{"position":{"x":12010.91063140026,"y":15769.713724963933},"targetPosition":{"x":12146.820315085892,"y":14911.804443432722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Area From 0 to 30","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n }\n}","id":"05578d4b-01e3-42fc-a4dd-b473414f467d","savedPayload":{"position":{"x":12015.983267262163,"y":16556.216469783474},"targetPosition":{"x":11711.504572227921,"y":16572.173522029218},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"14810299-01f6-443c-8bbf-de8450c9efd6","savedPayload":{"position":{"x":11711.504572227921,"y":16572.173522029218},"targetPosition":{"x":11407.025877193679,"y":16588.13057427496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"d8eda99d-df16-4e21-b621-6f547914c461","savedPayload":{"position":{"x":11505.106890553858,"y":16889.992894403047},"targetPosition":{"x":11407.025877193679,"y":16588.13057427496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 0","id":"8e21c88b-bfb7-41dd-9cbe-678d5dc4fc54"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"3a844186-fa2d-45e3-9453-d11750bafb51","savedPayload":{"position":{"x":11153.09166656169,"y":16772.624577614573},"targetPosition":{"x":11407.025877193679,"y":16588.13057427496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 0","id":"75670aaa-849d-4156-af74-61a25ce49713"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"95d52cc3-0a06-4181-bcd7-1e65b41194d8","savedPayload":{"position":{"x":11156.776268926033,"y":16406.313591251834},"targetPosition":{"x":11407.025877193679,"y":16588.13057427496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 30","id":"4bc7f337-74a7-42b7-89b7-9d4edc10fca5"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"a65fe0bd-5517-45b2-ac29-16bd198653a5","savedPayload":{"position":{"x":11492.37308854739,"y":16325.458866947827},"targetPosition":{"x":11407.025877193679,"y":16588.13057427496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 30","id":"ffea0ed5-39b4-4c14-b1fc-2164a6e189fd"}}}],"id":"d76f185f-5219-4f0b-adb3-9a339b0468c6","savedPayload":{"position":{"x":11838.589477668345,"y":15219.283090715691},"targetPosition":{"x":12146.820315085892,"y":14911.804443432722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Area From 30 to 70","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.1,\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n }\n}","id":"2bdd38d2-0e04-4760-a8e7-af12d8a3baa7","savedPayload":{"position":{"x":11785.196718538647,"y":16787.00301850699},"targetPosition":{"x":11529.488959850729,"y":16620.944458375543},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"de6f5e6b-a281-4d29-af86-72f7a545257d","savedPayload":{"position":{"x":11529.488959850729,"y":16620.944458375543},"targetPosition":{"x":11273.78120116281,"y":16454.885898244094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"e9bfd52e-bc47-469f-8187-4e79d79ba866","savedPayload":{"position":{"x":11366.72813636748,"y":16740.9471505544},"targetPosition":{"x":11273.78120116281,"y":16454.885898244094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 30","id":"ffea0ed5-39b4-4c14-b1fc-2164a6e189fd"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"f562f71b-2e79-4fa0-a9d5-e1d5c4ba12b4","savedPayload":{"position":{"x":11041.128895368802,"y":16623.91769264195},"targetPosition":{"x":11273.78120116281,"y":16454.885898244094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 30","id":"4bc7f337-74a7-42b7-89b7-9d4edc10fca5"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"3c79161c-e899-4147-bd75-21805b23f76f","savedPayload":{"position":{"x":11026.169939339401,"y":16274.985786116316},"targetPosition":{"x":11273.78120116281,"y":16454.885898244094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 70","id":"84bdd434-48af-4f4a-8f14-62df15022d05"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"4cd041c2-e445-46eb-99bf-c3ceee94f101","savedPayload":{"position":{"x":11366.398268640618,"y":16169.839874406198},"targetPosition":{"x":11273.78120116281,"y":16454.885898244094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 70","id":"827e424f-3036-4645-9246-94b4bb0ebaea"}}}],"id":"1a7969dd-af18-4e44-b4c9-96dd2be57f7c","savedPayload":{"position":{"x":11716.230236264904,"y":14979.56836627412},"targetPosition":{"x":12146.820315085892,"y":14911.804443432722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Area From 70 to 100","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n }\n}","id":"b34d9e0e-ed4a-4b99-8e29-b7ed66a3658e","savedPayload":{"position":{"x":11462.833548781016,"y":16838.060328730302},"targetPosition":{"x":11353.568399071151,"y":16553.414882069002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"2c35b477-500f-4c85-867f-630e2105278f","savedPayload":{"position":{"x":11353.568399071151,"y":16553.414882069002},"targetPosition":{"x":11244.303249361286,"y":16268.769435407705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"1777fb76-c1e2-415d-a517-2e365401490c","savedPayload":{"position":{"x":11339.438037353539,"y":16561.564206224117},"targetPosition":{"x":11244.303249361286,"y":16268.769435407705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 70","id":"827e424f-3036-4645-9246-94b4bb0ebaea"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"4652d8cf-d922-44a3-b8cf-c6d329883ca0","savedPayload":{"position":{"x":11012.529175252737,"y":16437.16315713663},"targetPosition":{"x":11244.303249361286,"y":16268.769435407705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 70","id":"84bdd434-48af-4f4a-8f14-62df15022d05"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"ef3e750e-8380-40a2-830b-3f364960e44e","savedPayload":{"position":{"x":10993.4737274419,"y":16086.531120454018},"targetPosition":{"x":11244.303249361286,"y":16268.769435407705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 100","id":"8949ce4a-bdad-47c2-a85f-0728ed7f9746"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"c8905f10-3c25-4fec-978a-ef356c0ad395","savedPayload":{"position":{"x":11341.63462493217,"y":15969.214263162574},"targetPosition":{"x":11244.303249361286,"y":16268.769435407705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 100","id":"ec589261-f564-4ad0-b866-8c63b8a15150"}}}],"id":"cb1bcd11-0fb0-4377-bff2-dee4630e0f3f","savedPayload":{"position":{"x":11758.40829447077,"y":14713.830005996168},"targetPosition":{"x":12146.820315085892,"y":14911.804443432722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 30","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n }\n}","id":"3f69a3f7-af79-47a2-9e0b-17524fc986d8","savedPayload":{"position":{"x":10898.66276818273,"y":16532.060177979212},"targetPosition":{"x":11114.257182820644,"y":16316.4657633413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"30e98617-1cfd-4fa7-814c-a5898caac0da","savedPayload":{"position":{"x":11114.257182820644,"y":16316.4657633413},"targetPosition":{"x":11329.851597458557,"y":16100.871348703387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"2f5d4ab1-0d70-4baa-988a-2b7077e7b1e6","savedPayload":{"position":{"x":11172.504885812235,"y":16373.403847678706},"targetPosition":{"x":11329.851597458557,"y":16100.871348703387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 30","id":"ffea0ed5-39b4-4c14-b1fc-2164a6e189fd"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"b23626ca-e521-4fad-9a8b-8c9f30711de7","savedPayload":{"position":{"x":11188.137622094326,"y":15855.415543229974},"targetPosition":{"x":11329.851597458557,"y":16100.871348703387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 30","id":"4bc7f337-74a7-42b7-89b7-9d4edc10fca5"}}}],"id":"857043cc-f467-44d2-89eb-2e73f35f638d","savedPayload":{"position":{"x":11948.965732891942,"y":14523.315394923828},"targetPosition":{"x":12146.820315085892,"y":14911.804443432722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 30","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n }\n}","id":"9e67e8dc-0a07-4d57-be52-6023ff9087da","savedPayload":{"position":{"x":10895.464158692504,"y":16110.715656473312},"targetPosition":{"x":11196.606921427689,"y":16063.019328539714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"767e0eba-ad98-49a9-a08d-58b5ebfaf655","savedPayload":{"position":{"x":11196.606921427689,"y":16063.019328539714},"targetPosition":{"x":11497.749684162873,"y":16015.323000606117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"9bed0cf3-56c3-4508-88c8-5dede6e574df","savedPayload":{"position":{"x":11341.33288140851,"y":16286.244850134151},"targetPosition":{"x":11497.749684162873,"y":16015.323000606117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 70","id":"84bdd434-48af-4f4a-8f14-62df15022d05"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"1ce29315-82a5-4b62-8e85-be087a037d73","savedPayload":{"position":{"x":11341.02906740415,"y":15743.874929786478},"targetPosition":{"x":11497.749684162873,"y":16015.323000606117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 70","id":"827e424f-3036-4645-9246-94b4bb0ebaea"}}}],"id":"984a1917-1d81-4142-a50f-269a18a07c9d","savedPayload":{"position":{"x":12214.80992792578,"y":14481.174279639708},"targetPosition":{"x":12146.820315085892,"y":14911.804443432722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Bandwidth","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 2,\n \"lineDash\": [2,2],\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREY\"\n }\n}","id":"ccb32f55-1b5e-4813-b614-0581593434a7","savedPayload":{"position":{"x":11140.536525131942,"y":15767.960682602057},"targetPosition":{"x":11412.201336065602,"y":15906.380817504849},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"57a26967-b019-4352-9d9d-cc10668837c4","savedPayload":{"position":{"x":11412.201336065602,"y":15906.380817504849},"targetPosition":{"x":11683.866146999262,"y":16044.80095240764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"0d8a9c6b-b0e6-4ce1-b1ad-71bd2a506a55","savedPayload":{"position":{"x":11548.140834937649,"y":16279.884088771498},"targetPosition":{"x":11683.866146999262,"y":16044.80095240764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Being Previous Bandwidth","id":"943da81e-c0ca-4213-ba8a-5dbafd3ead18"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"38f87d68-5678-46bd-9e26-45b8a8ee75f1","savedPayload":{"position":{"x":11540.089145078058,"y":15795.771880120188},"targetPosition":{"x":11683.866146999262,"y":16044.80095240764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bandwidth","id":"cdf38478-d5d4-410e-98fd-14b7b74bfd8b"}}}],"id":"0f7a4004-177c-4412-b0ef-2608f3c13da6","savedPayload":{"position":{"x":12454.916965383907,"y":14603.49723000505},"targetPosition":{"x":12146.820315085892,"y":14911.804443432722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Value","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.85,\n \"lineWidth\": 2.25,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"6e43dca6-e750-49ff-b025-2a76185e5914","savedPayload":{"position":{"x":11540.270553224545,"y":15634.716006571187},"targetPosition":{"x":11678.690688127339,"y":15906.380817504847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"56c0efd0-d13a-4c29-98f2-d27cb6071099","savedPayload":{"position":{"x":11678.690688127339,"y":15906.380817504847},"targetPosition":{"x":11817.11082303013,"y":16178.045628438507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"68e8f2a3-54ee-4fb7-abd2-add6496c08e0","savedPayload":{"position":{"x":11661.445643486399,"y":16447.66562837758},"targetPosition":{"x":11817.11082303013,"y":16178.045628438507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Previous Value","id":"534c2cd4-d020-43cf-9284-433a57fdcfce"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"a01aa765-6bd5-49d7-afbe-44d543191f76","savedPayload":{"position":{"x":11658.588286535973,"y":15903.476541085933},"targetPosition":{"x":11817.11082303013,"y":16178.045628438507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Value","id":"5b05abcc-76cf-4f9d-82e5-671ab7471678"}}}],"id":"4598a671-83b9-4460-9e65-175df73eba71","savedPayload":{"position":{"x":12577.32185462181,"y":14843.47242708257},"targetPosition":{"x":12146.820315085892,"y":14911.804443432722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Moving Average","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.55,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"544bf8f4-dfd5-4cd7-aba3-a47f6b477da8","savedPayload":{"position":{"x":11657.335984037549,"y":15871.141715514392},"targetPosition":{"x":11894.28510276525,"y":16063.019328539713},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.previous.movingAverage > record.movingAverage","style":{"type":"Style","name":"New Style","code":"{\n \"opacity\": 0.55,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n}","id":"c89114e1-7181-4091-8c2d-0301a8b00478","savedPayload":{"position":{"x":12463.575996087846,"y":15844.489029119983},"targetPosition":{"x":12178.930549426548,"y":15953.754178829848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"12891c27-2ec5-4a56-892e-1d29a277d5da","savedPayload":{"position":{"x":12178.930549426548,"y":15953.754178829848},"targetPosition":{"x":11894.28510276525,"y":16063.019328539713},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c9847967-ecf5-4f6a-9fe7-2759ca4795b6","savedPayload":{"position":{"x":11894.28510276525,"y":16063.019328539713},"targetPosition":{"x":11846.588774831655,"y":16364.162091274897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"a"}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"81660820-6035-481b-a909-9e89e145d61f","savedPayload":{"position":{"x":11692.908236378724,"y":16630.344592009915},"targetPosition":{"x":11846.588774831655,"y":16364.162091274897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Previous MA","id":"0993c95f-2054-48d8-9977-2d4eb24dabf7"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"2d18f4cf-e5d4-4bde-9a69-85b87c410125","savedPayload":{"position":{"x":11687.42767611524,"y":16088.486981709582},"targetPosition":{"x":11846.588774831655,"y":16364.162091274897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End MA","id":"35bdf97d-abf8-4f1e-922c-d853e6980b0c"}}}],"id":"69c19382-ed5b-48d1-9249-426a8e1e4e51","savedPayload":{"position":{"x":12538.233730378995,"y":15113.734254351079},"targetPosition":{"x":12146.820315085892,"y":14911.804443432722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"da344cd9-3c37-449a-b5be-6c65814f8562","savedPayload":{"position":{"x":12146.820315085892,"y":14911.804443432722},"targetPosition":{"x":12932.699956012146,"y":16455.08099950256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"%B Panel","code":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"%B Value","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.value","id":"c6ca5acc-cc3d-4802-8627-d3461747e731","savedPayload":{"position":{"x":12661.77350097395,"y":13010.010541490514},"targetPosition":{"x":12827.634801751221,"y":14154.853268542134},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d34065b9-ce7c-4971-8270-d0819da6b188","savedPayload":{"position":{"x":12827.634801751221,"y":14154.853268542134},"targetPosition":{"x":12993.508257890715,"y":15299.835025015162},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Bandwidth","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.bandwidth","id":"5193f538-5133-4561-a9e4-939cfa4d9af9","savedPayload":{"position":{"x":13114.437570204696,"y":12989.283313405998},"targetPosition":{"x":13054.024416793263,"y":14144.50187911489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ba215bbb-99c2-4433-83f8-47f2b00ee378","savedPayload":{"position":{"x":13054.024416793263,"y":14144.50187911489},"targetPosition":{"x":12993.508257890715,"y":15299.835025015162},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Moving Average","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.movingAverage","id":"d721b3b0-ffe7-459f-b146-954073605f0e","savedPayload":{"position":{"x":13563.074198531544,"y":13057.399187809391},"targetPosition":{"x":13278.400439020683,"y":14178.589799120326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8705ee2c-1bd8-4e90-b841-d2864f83f14b","savedPayload":{"position":{"x":13278.400439020683,"y":14178.589799120326},"targetPosition":{"x":12993.508257890715,"y":15299.835025015162},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"36548f31-d96c-4c80-b923-dea5dd5b56c7","savedPayload":{"position":{"x":12993.508257890715,"y":15299.835025015162},"targetPosition":{"x":12932.699956012146,"y":16455.08099950256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"06b2f3f6-b138-415f-8974-31c22a930f92","savedPayload":{"position":{"x":12932.351337885773,"y":16454.55404861947},"targetPosition":{"x":13173.71065776236,"y":17590.49727507029},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Bollinger Bands","code":"{\n\"codeName\": \"BollingerBands\",\n\"isLegacy\": true,\n\"icon\": \"band\"\n}","panels":[{"type":"Plotter Panel","name":"New Plotter Panel","code":"{ \n\"codeName\": \"BollingerBandsPanel\" ,\n\"isLegacy\": true\n}","panelData":[],"id":"de7b7008-6f66-4d7d-96dd-1aa7b1ede335","savedPayload":{"position":{"x":14897.21743817653,"y":16038.629008748032},"targetPosition":{"x":14036.697069911144,"y":16813.451833600597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a11bfdf8-595c-4b50-b259-6a9f777d0ea8","savedPayload":{"position":{"x":14036.697069911144,"y":16813.451833600597},"targetPosition":{"x":13173.71065776236,"y":17590.49727507029},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"abd0f050-2f42-4c50-81a9-ffb0d6442cef","savedPayload":{"position":{"x":12408.468393645677,"y":17602.65430468735},"targetPosition":{"x":12814.422748313864,"y":18696.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"Plotters Bollinger Channels","code":"{\n\"codeName\" : \"Plotter Bollinger Channels\"\n}","modules":[{"type":"Plotter Module","name":"Bollinger Channels Objects","code":"{\n\"codeName\": \"Bollinger-Channels-Objects\",\n \"icon\": \"trend\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"New Point","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.firstMovingAverage - record.firstDeviation","id":"8117b381-e9c7-41e3-8a51-ed49a1ca6868","savedPayload":{"position":{"x":11745.725046380736,"y":15713.184294026083},"targetPosition":{"x":12037.003072324149,"y":15833.341791417548},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9be61e7d-ae1e-4b39-9ebf-27285a5a67a9","savedPayload":{"position":{"x":12037.003072324149,"y":15833.341791417548},"targetPosition":{"x":12339.577652492182,"y":15930.862351851938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"New Point","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.lastMovingAverage - record.lastDeviation","id":"69cb3498-4e18-458a-b48e-e65c98b183be","savedPayload":{"position":{"x":11786.59408535383,"y":15605.72814886559},"targetPosition":{"x":12055.441991571333,"y":15770.235831604858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f87b3204-8901-4774-afcb-b4e5394e255d","savedPayload":{"position":{"x":12055.441991571333,"y":15770.235831604858},"targetPosition":{"x":12339.577652492182,"y":15930.862351851938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"New Point","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.lastMovingAverage + record.lastDeviation","id":"4c7b46d8-f76b-4039-af87-345c3f72a0a4","savedPayload":{"position":{"x":11857.421756970678,"y":15527.66966638952},"targetPosition":{"x":12096.940186526657,"y":15732.364402167152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5ce82101-6f77-4f54-bef5-d97edae6d44b","savedPayload":{"position":{"x":12096.940186526657,"y":15732.364402167152},"targetPosition":{"x":12339.577652492182,"y":15930.862351851938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"New Point","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.firstMovingAverage + record.lastDeviation","id":"89e5dbc2-33ed-42b9-9b9b-376097e04aff","savedPayload":{"position":{"x":11961.153375845035,"y":15418.57296419941},"targetPosition":{"x":12165.69132490653,"y":15658.244277374153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"45dbe6c3-9433-4b6d-8aa5-691cf6eba8a1","savedPayload":{"position":{"x":12165.69132490653,"y":15658.244277374153},"targetPosition":{"x":12339.577652492182,"y":15930.862351851938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"703b0e1b-e2d6-457a-95d6-7b6516b2f772","savedPayload":{"position":{"x":12339.577652492182,"y":15930.862351851938},"targetPosition":{"x":12848.554725923042,"y":16300.458949047284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"New Polygon","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.2\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"09105647-a665-4fb4-910d-49bcf90eb91e","savedPayload":{"position":{"x":12215.151821279911,"y":14641.226086614826},"targetPosition":{"x":12636.632518429142,"y":15109.379456090679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Side'","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.LIGHT\"\n}","id":"ad17706f-09f0-4424-b5f3-b66fb2c76160","savedPayload":{"position":{"x":11934.364151277474,"y":14062.76276090345},"targetPosition":{"x":12283.09460437131,"y":14586.567230072396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3975ecc2-db5b-4cab-a9ab-9e13b2da3015","savedPayload":{"position":{"x":12283.125802817098,"y":14586.625101992888},"targetPosition":{"x":12636.632518429142,"y":15109.379456090679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Up'","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR. GREEN\"\n}","id":"0b263642-8fc7-4fdc-a915-9480c8493e68","savedPayload":{"position":{"x":12079.045439961126,"y":13978.534879546238},"targetPosition":{"x":12356.314185344749,"y":14543.44981502547},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e218ed70-9da7-43c5-9c23-9e010e08b5b5","savedPayload":{"position":{"x":12356.353252085473,"y":14543.528535574926},"targetPosition":{"x":12636.632518429142,"y":15109.379456090679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Down'","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n}","id":"ce3abe3f-eb38-4e0f-94bb-9c397ed78f49","savedPayload":{"position":{"x":12232.594447437106,"y":13914.821643178127},"targetPosition":{"x":12433.698430881217,"y":14511.135991668563},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"251d5031-13f9-493b-aa35-126f5221bb21","savedPayload":{"position":{"x":12433.736774850158,"y":14511.215079010128},"targetPosition":{"x":12636.632518429142,"y":15109.379456090679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"atMousePosition === true","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.1\n}","id":"2ea26fbc-74c5-4fb5-b64f-c4c7b289003c","savedPayload":{"position":{"x":12391.69570745962,"y":13890.176424046838},"targetPosition":{"x":12513.094595646948,"y":14507.651427962612},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8a0f9c00-67be-47fa-9cde-ec6c499c9bec","savedPayload":{"position":{"x":12513.114286350676,"y":14507.71319108364},"targetPosition":{"x":12636.632518429142,"y":15109.379456090679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f2d2ac14-9859-4228-81d9-280c639c1b37","savedPayload":{"position":{"x":12636.632518429142,"y":15109.379456090679},"targetPosition":{"x":12914.078109468519,"y":15673.996501444679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n }\n}","id":"d85d9603-7ff2-4d45-aa58-9b8ebe23a65f","savedPayload":{"position":{"x":12604.061245686182,"y":14790.38144842234},"targetPosition":{"x":12769.660188563976,"y":15061.705663924042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Side'","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.DARK\"\n}","id":"d09de0b4-f477-42e9-a944-6bde9a9a68dd","savedPayload":{"position":{"x":12574.44520764362,"y":14433.35455024669},"targetPosition":{"x":12659.23837677155,"y":14754.283370334688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"08167019-4685-45ca-8572-74706f2fb971","savedPayload":{"position":{"x":12659.23837677155,"y":14754.283370334688},"targetPosition":{"x":12769.660188563976,"y":15061.705663924042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Up'","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.PATINATED_TURQUOISE\"\n}","id":"ebab2c53-c230-4622-a5d1-a3e0bd1d4139","savedPayload":{"position":{"x":12675.095470178565,"y":14442.866487233658},"targetPosition":{"x":12715.526560516675,"y":14753.655070267367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5b721945-b84b-4e19-a7db-777bc1c1fee1","savedPayload":{"position":{"x":12715.526560516675,"y":14753.655070267367},"targetPosition":{"x":12769.660188563976,"y":15061.705663924042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Down'","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n}","id":"8bef9d11-9184-420e-a841-97a19f6a160b","savedPayload":{"position":{"x":12817.508323846918,"y":14425.726392153616},"targetPosition":{"x":12816.060249647564,"y":14740.889459595612},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a530140d-d0bb-4989-8ca8-d9846adbc91d","savedPayload":{"position":{"x":12816.060249647564,"y":14740.889459595612},"targetPosition":{"x":12769.660188563976,"y":15061.705663924042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"add24099-1310-4e86-99fc-9db01a272b6e","savedPayload":{"position":{"x":12769.660188563976,"y":15061.705663924042},"targetPosition":{"x":12914.078109468519,"y":15673.996501444679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Point","id":"7be4c16d-772a-4750-9735-09d3d9e16037","savedPayload":{"position":{"x":12909.726793271924,"y":15044.778087593102},"targetPosition":{"x":12914.078109468519,"y":15673.996501444679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"New Point","id":"9be61e7d-ae1e-4b39-9ebf-27285a5a67a9"}}},{"type":"Polygon Vertex","name":"New Point","id":"1a592de1-eb28-41eb-8ddb-b22e5034be53","savedPayload":{"position":{"x":13049.693015590388,"y":15059.449724154118},"targetPosition":{"x":12914.078109468519,"y":15673.996501444679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"New Point","id":"f87b3204-8901-4774-afcb-b4e5394e255d"}}},{"type":"Polygon Vertex","name":"New Point","id":"e90a30b1-cd5d-4331-bf74-7cfd4242db34","savedPayload":{"position":{"x":13183.018396804153,"y":15104.977384089581},"targetPosition":{"x":12914.078109468519,"y":15673.996501444679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"New Point","id":"5ce82101-6f77-4f54-bef5-d97edae6d44b"}}},{"type":"Polygon Vertex","name":"New Point","id":"ae4311e5-a02d-46d7-a41c-79e6945f9f21","savedPayload":{"position":{"x":13302.943321558485,"y":15179.12897960652},"targetPosition":{"x":12914.078109468519,"y":15673.996501444679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"New Point","id":"45dbe6c3-9433-4b6d-8aa5-691cf6eba8a1"}}}],"id":"6e21446c-93e7-44ad-814d-3cd2fa8f8baf","savedPayload":{"position":{"x":12914.078109468519,"y":15673.996501444679},"targetPosition":{"x":12848.554725923042,"y":16300.458949047284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0b08f6f6-2317-42fb-ab3a-db8957d76dfa","savedPayload":{"position":{"x":12848.554725923042,"y":16300.458949047284},"targetPosition":{"x":13104.679607116925,"y":16875.02910198836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"o"}}},"panels":[{"type":"Plotter Panel","name":"Bollinger Channels Objects","code":"{ \n\"codeName\": \"Bollinger Channels Objects\"\n}","panelData":[{"type":"Panel Data","name":"Direction","code":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.direction","id":"479f9520-4cad-4fe3-a2fc-c7f48d93344d","savedPayload":{"position":{"x":12998.307039790228,"y":15809.530600651222},"targetPosition":{"x":13054.871938477714,"y":15956.36992182069},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"24fefe09-fa8d-4904-9c6c-9c775d3866d0","savedPayload":{"position":{"x":13054.871938477714,"y":15956.36992182069},"targetPosition":{"x":13170.213188151536,"y":16249.566507125503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Total Periods","code":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"69b5e792-b174-4046-9219-786da4601f58","savedPayload":{"position":{"x":13144.270568867143,"y":15776.85686911766},"targetPosition":{"x":13152.372517307815,"y":15934.39471211143},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e79b5734-072e-4432-91d5-8f41eef59b26","savedPayload":{"position":{"x":13152.372517307815,"y":15934.39471211143},"targetPosition":{"x":13170.213188151536,"y":16249.566507125503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"First Moving Average","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.firstMovingAverage","id":"b6818aef-a3dc-4d78-9684-46f1ddbf234a","savedPayload":{"position":{"x":13293.309341817676,"y":15792.20634525396},"targetPosition":{"x":13252.516109200236,"y":15944.697945072183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"75fe02cd-776b-45cb-a965-ecbfac163ad4","savedPayload":{"position":{"x":13252.516109200236,"y":15944.697945072183},"targetPosition":{"x":13170.213188151536,"y":16249.566507125503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Last Moving Average","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.lastMovingAverage","id":"25d5ce35-768a-4f5b-b541-65dfdcf77414","savedPayload":{"position":{"x":13430.11602045791,"y":15854.512381210441},"targetPosition":{"x":13344.308549196907,"y":15986.86344352394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c5af78de-d153-4002-b6df-79a1fd009100","savedPayload":{"position":{"x":13344.308549196907,"y":15986.86344352394},"targetPosition":{"x":13170.213188151536,"y":16249.566507125503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"09c8f781-3e54-4bed-bd9a-83e8179fdd66","savedPayload":{"position":{"x":13170.213188151536,"y":16249.566507125503},"targetPosition":{"x":13104.679607116925,"y":16875.02910198836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"52881346-3e4b-45e0-92d2-af130d381b8e","savedPayload":{"position":{"x":13104.784750984769,"y":16874.780652450303},"targetPosition":{"x":13203.660001009932,"y":17497.12388749932},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Bollinger Sub Channels Objects","code":"{\n\"codeName\": \"Bollinger-Sub-Channels-Objects\",\n\"icon\": \"trend\"\n}","javascriptCode":{"type":"Javascript Code","code":"/* Definition of the points we are going to use while drawing */\nlet point1\nlet point2\nlet point3\nlet point4\n\npoint1 = {\n x: record.begin,\n y: record.firstMovingAverage - record.firstDeviation\n}\n\npoint2 = {\n x: record.end,\n y: record.lastMovingAverage - record.lastDeviation\n}\n\npoint3 = {\n x: record.end,\n y: record.lastMovingAverage + record.lastDeviation\n}\n\npoint4 = {\n x: record.begin,\n y: record.firstMovingAverage + record.firstDeviation\n}\n\n/* Contributing to Auto-Scale*/\ncoordinateSystem.reportYValue(record.firstMovingAverage - record.firstDeviation)\ncoordinateSystem.reportYValue(record.lastMovingAverage - record.lastDeviation)\ncoordinateSystem.reportYValue(record.lastMovingAverage + record.lastDeviation)\ncoordinateSystem.reportYValue(record.firstMovingAverage + record.firstDeviation)\n\n/*\nThe information we store in files is independent from the charing system and its coordinate systems.\nThat means that the first thing we allways need to do is to trasform these points to the coordinate system of the timeline.\n*/\npoint1 = coordinateSystem.transformThisPoint(point1)\npoint2 = coordinateSystem.transformThisPoint(point2)\npoint3 = coordinateSystem.transformThisPoint(point3)\npoint4 = coordinateSystem.transformThisPoint(point4)\n\n/*\nThe browser canvas object does not care about our timeline and its coordinate system. In order to draw on a html canvas we\nneed the points to be converted into the canvas coordinate system.\nNext we transform again to the screen coordinate system.\n*/\npoint1 = transformThisPoint(point1, thisObject.container)\npoint2 = transformThisPoint(point2, thisObject.container)\npoint3 = transformThisPoint(point3, thisObject.container)\npoint4 = transformThisPoint(point4, thisObject.container)\n\n/* We make sure the points do not fall outside the canvas.chartingSpace.viewport visible area. This step allways need to be done. */\npoint1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point1)\npoint2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2)\npoint3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3)\npoint4 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point4)\n\npoint1 = thisObject.fitFunction(point1);\npoint2 = thisObject.fitFunction(point2);\npoint3 = thisObject.fitFunction(point3);\npoint4 = thisObject.fitFunction(point4);\n\n/*\nNow that we have our 4 points as coordinates of the actual screen (or html canvas object), we can actaully start drawing.\nFirst we are going to draw the shape backgound.\n*/\nbrowserCanvasContext.beginPath()\n\nbrowserCanvasContext.moveTo(point1.x, point1.y)\nbrowserCanvasContext.lineTo(point2.x, point2.y)\nbrowserCanvasContext.lineTo(point3.x, point3.y)\nbrowserCanvasContext.lineTo(point4.x, point4.y)\n\nbrowserCanvasContext.closePath()\n\nlet opacity = '0.25' // The backgound will be quite transparent. Possible values goes from 0..1\n\n/* Depending on the direction of the channel, we use a different color for the border lines. */\nif (record.direction === 'Side') { browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.DARK + ', ' + opacity + ')' }\nif (record.direction === 'Up') { browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.PATINATED_TURQUOISE + ', ' + opacity + ')' }\nif (record.direction === 'Down') { browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RED + ', ' + opacity + ')' }\n\nswitch (record.slope) {\n case 'Side': {\n opacity = '0.1';\n break;\n }\n case 'Gentle': {\n opacity = '0.1';\n break;\n }\n case 'Medium': {\n opacity = '0.15';\n break;\n }\n case 'Steep': {\n opacity = '0.2';\n break;\n }\n case 'Extreme': {\n opacity = '0.25';\n break;\n }\n}\n\n/* Depending on the direction of the channel, we use a different color for the background. */\nif (record.direction === 'Side' || record.slope === 'Side') { browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.LIGHT + ', ' + opacity + ')'; }\nif (record.direction === 'Up') { browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.GREEN + ', ' + opacity + ')' }\nif (record.direction === 'Down') { browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + opacity + ')' }\n\n/* If the mouse is positioned in betwheen the begining and ending of our object, we can opt for changing the color of that specific object. */\nif (atMousePosition) {\n browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', 0.1)'\n}\n\nbrowserCanvasContext.fill() // This is what actually apply the previous instructions on the html canvas object of the browser.\n\n/* Second we are going to draw the shape borders. */\nbrowserCanvasContext.beginPath()\n\nbrowserCanvasContext.moveTo(point1.x, point1.y)\nbrowserCanvasContext.lineTo(point2.x, point2.y)\nbrowserCanvasContext.lineTo(point3.x, point3.y)\nbrowserCanvasContext.lineTo(point4.x, point4.y)\n\nbrowserCanvasContext.closePath()\n\nbrowserCanvasContext.lineWidth = 1 // We use 1 as standard line width\nbrowserCanvasContext.setLineDash([0, 0]) // We do not want dashed lines in this case.\nbrowserCanvasContext.stroke() // This actually draw the borders of our shape.","id":"63406674-a797-430a-96c7-e5bcacb286bc","savedPayload":{"position":{"x":13236.09085614386,"y":16249.003874279848},"targetPosition":{"x":13302.037886694408,"y":16874.77733577708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"panels":[{"type":"Plotter Panel","name":"Bollinger Sub Channels Objects","code":"{ \n\"codeName\": \"Bollinger Sub Channels Objects\"\n}","panelData":[{"type":"Panel Data","name":"Direction","code":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.direction","id":"f1793208-a0a5-49a5-a21c-88f848563433","savedPayload":{"position":{"x":13497.440614666464,"y":15829.876600173595},"targetPosition":{"x":13514.212376335881,"y":15986.798159096381},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"029cc150-77ee-44eb-b52b-4c83f0d79e6a","savedPayload":{"position":{"x":13514.212376335881,"y":15986.798159096381},"targetPosition":{"x":13557.821847094498,"y":16300.181488242037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Total Periods","code":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"f09cfc38-2f4e-4f5f-b6fe-3f8255657081","savedPayload":{"position":{"x":13627.175211444748,"y":15828.560090620193},"targetPosition":{"x":13602.691318630246,"y":15984.554942688055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6020f40d-2141-4f21-b4ae-3a4f32073eda","savedPayload":{"position":{"x":13602.691318630246,"y":15984.554942688055},"targetPosition":{"x":13557.821847094498,"y":16300.181488242037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"First Moving Average","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.firstMovingAverage","id":"be429ff9-1656-4db6-8ddb-758ca900d6f0","savedPayload":{"position":{"x":13750.84609414814,"y":15863.774805790928},"targetPosition":{"x":13686.693273891373,"y":16008.063250742935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ab7f25ee-dad0-4b3e-80b1-a9fcffde8424","savedPayload":{"position":{"x":13686.693273891373,"y":16008.063250742935},"targetPosition":{"x":13557.821847094498,"y":16300.181488242037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Last Moving Average","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.lastMovingAverage","id":"5501c8e2-7406-453a-9cae-75f8628e321f","savedPayload":{"position":{"x":13857.19042553569,"y":15928.189310488326},"targetPosition":{"x":13757.73913996865,"y":16050.804602136892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e0df05de-65cf-45da-a0b5-ee6ce21b4ed8","savedPayload":{"position":{"x":13757.73913996865,"y":16050.804602136892},"targetPosition":{"x":13557.821847094498,"y":16300.181488242037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Slope","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.slope","id":"567bc3e1-3a15-43f1-9bf4-625c7ad1cad8","savedPayload":{"position":{"x":13952.818802326994,"y":16037.216652831452},"targetPosition":{"x":13825.013322880757,"y":16129.70210028388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c6f2ce73-44ac-4515-bcc3-b394fa3a66e4","savedPayload":{"position":{"x":13825.013322880757,"y":16129.70210028388},"targetPosition":{"x":13557.821847094498,"y":16300.181488242037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8ce4c7ca-3496-4df8-9d57-335d40cc77a0","savedPayload":{"position":{"x":13557.821847094498,"y":16300.181488242037},"targetPosition":{"x":13302.037886694408,"y":16874.77733577708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f8c4b699-1f40-4832-b427-68da3341daa8","savedPayload":{"position":{"x":13302.091342272399,"y":16874.67849749691},"targetPosition":{"x":13203.660001009932,"y":17497.12388749932},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"x"}}},{"type":"Plotter Module","name":"Bollinger Channels","code":"{\n\"codeName\": \"Bollinger-Channels\",\n \"icon\": \"trend\"\n}","panels":[{"type":"Plotter Panel","name":"Bollinger Channels","code":"{ \n\"codeName\": \"Bollinger Channels\"\n}","panelData":[{"type":"Panel Data","name":"Direction","code":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.direction","id":"f1bb6cde-263f-4582-aeef-8e0bed99d53f","savedPayload":{"position":{"x":13872.86780289425,"y":15912.954685750266},"targetPosition":{"x":13840.307404056264,"y":16067.164894773743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b7afdb03-dc66-4f9a-b3c7-e8886521b7cc","savedPayload":{"position":{"x":13840.307404056264,"y":16067.164894773743},"targetPosition":{"x":13775.147210513745,"y":16375.174556987295},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period","code":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"991dd9e3-c5d0-4a61-953a-81b3ee218695","savedPayload":{"position":{"x":14091.192506670182,"y":16024.137516803397},"targetPosition":{"x":13985.791306469328,"y":16141.276161020482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"1fbd683b-9294-456f-9464-97d887a49cdc","savedPayload":{"position":{"x":13985.791306469328,"y":16141.276161020482},"targetPosition":{"x":13775.147210513745,"y":16375.174556987295},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"abb4f289-c374-43e0-b8dc-d586d8e3328e","savedPayload":{"position":{"x":13775.147210513745,"y":16375.174556987295},"targetPosition":{"x":13489.68576481564,"y":16935.707892194365},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a045ea45-c8ff-49a5-86cd-5d38cd3e6d22","savedPayload":{"position":{"x":13489.867852485844,"y":16935.655247824543},"targetPosition":{"x":13203.660001009932,"y":17497.12388749932},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Bollinger Sub Channels","code":"{\n\"codeName\": \"Bollinger-Sub-Channels\",\n\"icon\": \"trend\"\n}","panels":[{"type":"Plotter Panel","name":"Bollinger Sub Channels","code":"{ \n\"codeName\": \"Bollinger Sub Channels\"\n}","panelData":[{"type":"Panel Data","name":"Direction","code":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.direction","id":"6b969637-0945-4ae4-970c-49f8fd940fd2","savedPayload":{"position":{"x":14274.755739789449,"y":16171.034047005918},"targetPosition":{"x":14214.446375299254,"y":16316.768058161508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"67136278-2bc4-4814-b71a-0fd87c85b422","savedPayload":{"position":{"x":14214.446375299254,"y":16316.768058161508},"targetPosition":{"x":14094.223129605858,"y":16607.591320152744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period","code":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"0e6dcc09-7f32-431f-ab15-08764e0ad29b","savedPayload":{"position":{"x":14428.510550134406,"y":16273.630590784524},"targetPosition":{"x":14316.847981656127,"y":16385.06366790096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"24f260af-1679-444e-9d08-17f39b3af2a8","savedPayload":{"position":{"x":14316.847981656127,"y":16385.06366790096},"targetPosition":{"x":14094.223129605858,"y":16607.591320152744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Slope","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.slope","id":"bd4510b2-1062-4142-81b7-207b292d36c6","savedPayload":{"position":{"x":14531.218976527842,"y":16427.749038064398},"targetPosition":{"x":14385.251371309534,"y":16487.79220022593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c520fa0d-f783-4f91-8951-d83cfe470522","savedPayload":{"position":{"x":14385.251371309534,"y":16487.79220022593},"targetPosition":{"x":14094.223129605858,"y":16607.591320152744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1beae26c-7235-46ef-a732-1d0c9f18dda5","savedPayload":{"position":{"x":14094.223129605858,"y":16607.591320152744},"targetPosition":{"x":13649.489722484735,"y":17051.96425629574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"88bdc751-5a1d-499d-a4ba-888dbcf6dc7a","savedPayload":{"position":{"x":13649.48332467671,"y":17051.82930839727},"targetPosition":{"x":13203.660001009932,"y":17497.12388749932},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"343f37be-cc77-4513-a296-7925edfcf0c4","savedPayload":{"position":{"x":13012.478675394776,"y":17439.772969124184},"targetPosition":{"x":12814.422748313864,"y":18696.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"Plotter Candles Channels","code":"{\n\"codeName\" : \"Candles Channels\"\n}","modules":[{"type":"Plotter Module","name":"Candles Channels","code":"{ \n\"codeName\": \"Candles Channels\",\n\"icon\": \"trend\"\n}","panels":[{"type":"Plotter Panel","name":"Candles Channels","code":"{ \n\"codeName\": \"Candles Channels\"\n}","panelData":[{"type":"Panel Data","name":"Direction","code":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.direction","id":"34e4348e-6bc2-4626-8d84-070efa8e81e2","savedPayload":{"position":{"x":14501.611866894073,"y":16970.88873031808},"targetPosition":{"x":14461.272054507921,"y":17062.410443129796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"eeb8fe38-bb85-441a-933f-d44fc990d037","savedPayload":{"position":{"x":14461.272054507921,"y":17062.410443129796},"targetPosition":{"x":14409.313170026808,"y":17206.792756715833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period","code":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"facfde0d-c82e-40f5-9659-2b844def9ddd","savedPayload":{"position":{"x":14620.747253056097,"y":17067.07822627229},"targetPosition":{"x":14538.994778127815,"y":17126.52140534108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7991ff70-72ba-44e0-a980-75f0b13672b5","savedPayload":{"position":{"x":14538.994778127815,"y":17126.52140534108},"targetPosition":{"x":14409.313170026808,"y":17206.792756715833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d21f5c62-0455-4671-89c1-f9d96a75f349","savedPayload":{"position":{"x":14409.313170026808,"y":17206.792756715833},"targetPosition":{"x":14157.631206094531,"y":17517.652507432034},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"864f26cb-b191-47c1-801e-57bb2436294e","savedPayload":{"position":{"x":14162.70329635639,"y":17524.31304930946},"targetPosition":{"x":13785.291396733634,"y":17990.56341206243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Candles Channels Objects","code":"{ \n\"codeName\": \"Candles Channels Objects\",\n\"icon\": \"trend\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"First Min","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.firstMin","id":"35f51e5f-816b-4067-9c32-b6a95aae79a3","savedPayload":{"position":{"x":15156.02965916265,"y":16279.80242584131},"targetPosition":{"x":15101.8338553071,"y":16574.893650166694},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"91a70976-e9d9-4d8e-9f83-719cab4d1497","savedPayload":{"position":{"x":15101.8338553071,"y":16574.893650166694},"targetPosition":{"x":15073.25465709517,"y":16876.600226362007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Last Min","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.lastMin","id":"f4c70158-779d-4ea9-a50c-1610ded698f5","savedPayload":{"position":{"x":15266.765924772819,"y":16294.644908008726},"targetPosition":{"x":15166.768229115834,"y":16577.660399363795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"588627dd-bbc9-4ca5-b413-52dd000e6f30","savedPayload":{"position":{"x":15166.768229115834,"y":16577.660399363795},"targetPosition":{"x":15073.25465709517,"y":16876.600226362007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Last Max","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.lastMax","id":"02969b43-c942-49a2-a50c-3b11f20dc61c","savedPayload":{"position":{"x":15347.174017602065,"y":16359.77440262645},"targetPosition":{"x":15203.971887419346,"y":16623.335052262628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"eb4d4b7c-cb3c-4855-8016-88a4df1b667b","savedPayload":{"position":{"x":15203.971887419346,"y":16623.335052262628},"targetPosition":{"x":15073.25465709517,"y":16876.600226362007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"First Max","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.firstMax","id":"6a44702b-c381-4dc2-beaa-005d5dfc7e59","savedPayload":{"position":{"x":15483.492152405952,"y":16414.06922015154},"targetPosition":{"x":15300.77157630733,"y":16652.017903666634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7cf30b7b-b68a-46e4-9c89-65fa7859be97","savedPayload":{"position":{"x":15300.77157630733,"y":16652.017903666634},"targetPosition":{"x":15073.25465709517,"y":16876.600226362007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cfed2fd2-3791-4c86-ac53-f248831fa7a1","savedPayload":{"position":{"x":15073.25465709517,"y":16876.600226362007},"targetPosition":{"x":14829.821885279307,"y":17423.76662607805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"New Polygon","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.2\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"e06b5939-31b9-477b-81a2-1aaf3475144e","savedPayload":{"position":{"x":16247.499713116667,"y":16504.3154919615},"targetPosition":{"x":15896.790717722479,"y":16991.109282428086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Side'","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.LIGHT\"\n}","id":"8bf6a1ad-69e9-44ff-8e3a-4f70fe523572","savedPayload":{"position":{"x":16731.92684020577,"y":16128.63781910707},"targetPosition":{"x":16313.167913231153,"y":16557.163339301434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"76a1c12f-0b87-40c2-9dae-6768884a5076","savedPayload":{"position":{"x":16313.167913231153,"y":16557.163339301434},"targetPosition":{"x":15896.790717722479,"y":16991.109282428086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Up'","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR. GREEN\"\n}","id":"a57b9ead-b4b8-40e3-82df-1461cad237c0","savedPayload":{"position":{"x":16839.59766285357,"y":16247.11956566997},"targetPosition":{"x":16368.386630628727,"y":16617.21305686745},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d3d09c74-7274-4fce-8413-815c1ad546ee","savedPayload":{"position":{"x":16368.386630628727,"y":16617.21305686745},"targetPosition":{"x":15896.790717722479,"y":16991.109282428086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Down'","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n}","id":"2f1ff3f4-94a9-4a3d-b290-fbde30b79e7e","savedPayload":{"position":{"x":16929.63269340069,"y":16377.787598724013},"targetPosition":{"x":16414.08721303722,"y":16683.14845238845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"75f374ef-accc-444d-856f-ba01eba29ced","savedPayload":{"position":{"x":16414.08721303722,"y":16683.14845238845},"targetPosition":{"x":15896.790717722479,"y":16991.109282428086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"atMousePosition === true","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.1\n}","id":"4361ea11-4004-44d7-a94c-9bf27aa75a64","savedPayload":{"position":{"x":16980.589968121414,"y":16527.058824896645},"targetPosition":{"x":16429.56361011259,"y":16762.362738511387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"db98a447-4c7f-43bd-9b9f-d94978b05e14","savedPayload":{"position":{"x":16429.56361011259,"y":16762.362738511387},"targetPosition":{"x":15896.790717722479,"y":16991.109282428086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a7862bd3-6421-4855-86aa-6b2f86b9dde2","savedPayload":{"position":{"x":15896.790717722479,"y":16991.109282428086},"targetPosition":{"x":15425.981364403191,"y":17361.302134522317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n }\n}","id":"702d82d3-6978-4c3e-8ffc-cd6f33318efd","savedPayload":{"position":{"x":16186.010907441982,"y":16895.72784658953},"targetPosition":{"x":15967.542449013961,"y":17105.608291298202},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Side'","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.DARK\"\n}","id":"875f9634-88be-4f74-8adc-bb6b5b284a96","savedPayload":{"position":{"x":16522.18761275952,"y":16798.53339322591},"targetPosition":{"x":16233.786383352357,"y":16940.136123255368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6a9f57c4-7ce6-45b3-a2c2-82ff785f32e4","savedPayload":{"position":{"x":16233.786383352357,"y":16940.136123255368},"targetPosition":{"x":15967.542449013961,"y":17105.608291298202},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Up'","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.PATINATED_TURQUOISE\"\n}","id":"3bbfe7c5-b635-4b18-94b5-06ac68408de9","savedPayload":{"position":{"x":16510.130305313967,"y":16898.96810767517},"targetPosition":{"x":16230.114087391272,"y":17000.307679708647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b99aaa3f-25d7-4570-b689-60eb4200b42c","savedPayload":{"position":{"x":16230.114087391272,"y":17000.307679708647},"targetPosition":{"x":15967.542449013961,"y":17105.608291298202},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Down'","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n}","id":"897c7976-49b7-401c-a3f0-5d5a5f4edfca","savedPayload":{"position":{"x":16582.17121702831,"y":17022.302212442373},"targetPosition":{"x":16288.33517644064,"y":17083.128863094138},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"06096ed6-281e-4075-a709-2fd07c18fa9c","savedPayload":{"position":{"x":16288.33517644064,"y":17083.128863094138},"targetPosition":{"x":15967.542449013961,"y":17105.608291298202},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7c42653b-6268-4c6b-ab1c-522e044bc761","savedPayload":{"position":{"x":15967.542449013961,"y":17105.608291298202},"targetPosition":{"x":15425.981364403191,"y":17361.302134522317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"First Min","id":"67773b40-e975-42a8-b994-b94ff359cc52","savedPayload":{"position":{"x":16011.063203421234,"y":17232.75450330961},"targetPosition":{"x":15425.981364403191,"y":17361.302134522317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"First Min","id":"91a70976-e9d9-4d8e-9f83-719cab4d1497"}}},{"type":"Polygon Vertex","name":"Last Min","id":"edd79469-619d-4723-b678-1c415b3ebecb","savedPayload":{"position":{"x":16025.138118369045,"y":17366.01909166216},"targetPosition":{"x":15425.981364403191,"y":17361.302134522317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Last Min","id":"588627dd-bbc9-4ca5-b413-52dd000e6f30"}}},{"type":"Polygon Vertex","name":"Last Max","id":"5a204cef-fd62-4c53-af97-79f9963f70cb","savedPayload":{"position":{"x":16009.107740285974,"y":17499.21123204034},"targetPosition":{"x":15425.981364403191,"y":17361.302134522317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Last Max","id":"eb4d4b7c-cb3c-4855-8016-88a4df1b667b"}}},{"type":"Polygon Vertex","name":"First Max","id":"32e5e2d7-3818-4e0c-b36f-712da90e4025","savedPayload":{"position":{"x":15963.743158426576,"y":17625.596017474232},"targetPosition":{"x":15425.981364403191,"y":17361.302134522317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"First Max","id":"7cf30b7b-b68a-46e4-9c89-65fa7859be97"}}}],"id":"5383ea8f-c9ed-463e-a7d4-dc5cb6c40dff","savedPayload":{"position":{"x":15425.981364403191,"y":17361.302134522317},"targetPosition":{"x":14829.821885279307,"y":17423.76662607805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9651d021-d2af-4172-bc8f-7265407cf181","savedPayload":{"position":{"x":14829.821885279307,"y":17423.76662607805},"targetPosition":{"x":14345.169038648535,"y":17775.79012557177},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"o"}}},"panels":[{"type":"Plotter Panel","name":"Candles Channels Objects","code":"{ \n\"codeName\": \"Candles Channels Objects\"\n}","panelData":[{"type":"Panel Data","name":"Direction","code":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.direction","id":"daf86ccc-bbf4-4a18-bcd8-583ded1b98a7","savedPayload":{"position":{"x":14892.17343390797,"y":18120.10948314898},"targetPosition":{"x":14800.42504346267,"y":18079.59857447801},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"73bc1fd7-799b-4b19-98fa-856575b9ad33","savedPayload":{"position":{"x":14800.42504346267,"y":18079.59857447801},"targetPosition":{"x":14656.089363765053,"y":18027.588990759283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Total Periods","code":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"32edb120-129e-4734-bfd1-224213e3e8f8","savedPayload":{"position":{"x":14795.880335535576,"y":18239.17432987811},"targetPosition":{"x":14736.316250632315,"y":18157.495559721257},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6384ead6-8afc-490a-a6db-055b7b622877","savedPayload":{"position":{"x":14736.316250632315,"y":18157.495559721257},"targetPosition":{"x":14656.089363765053,"y":18027.588990759283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8b63674c-b728-4a00-8b3c-331d7ba2a93b","savedPayload":{"position":{"x":14656.089363765053,"y":18027.588990759283},"targetPosition":{"x":14345.169038648535,"y":17775.79012557177},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7aa1e889-ae4f-4945-b0e5-9ad87ded05a5","savedPayload":{"position":{"x":14345.368248952209,"y":17775.72831758372},"targetPosition":{"x":13785.291396733634,"y":17990.56341206243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7c38b69d-fabc-4ca6-b35e-6fef6f1d8b13","savedPayload":{"position":{"x":13378.618551762727,"y":17891.671384297148},"targetPosition":{"x":12814.422748313864,"y":18696.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"Resistances And Supports","code":"{ \n\"codeName\": \"Resistances-And-Supports\"\n}","modules":[{"type":"Plotter Module","name":"Resistances","code":"{ \n\"codeName\": \"Resistances-And-Supports\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"Base Resistance","points":[{"type":"Point","name":"Base Left","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin - (record.end - record.begin)\ny = record.rateResistance","id":"5781a245-e686-4b11-a000-2fa096a32d87","savedPayload":{"position":{"x":16047.276659521322,"y":9292.492848284373},"targetPosition":{"x":16745.821767090187,"y":8675.428686584153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6e8169a3-28a2-412f-8100-577c4a9a97bb","savedPayload":{"position":{"x":16745.821767090187,"y":8675.428686584153},"targetPosition":{"x":17444.387960404772,"y":8058.33327331301},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Base Right","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end- (record.end - record.begin)\ny = record.rateResistance","id":"5a15539d-b94c-4110-a165-9a3bb5fc4fed","savedPayload":{"position":{"x":15617.259166042539,"y":8428.454671874168},"targetPosition":{"x":16530.78907768424,"y":8243.388665744826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b23883d4-d592-4d0a-822e-82165e22598f","savedPayload":{"position":{"x":16530.78907768424,"y":8243.388665744826},"targetPosition":{"x":17444.387960404772,"y":8058.33327331301},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8da1ef7b-5f0a-477b-9179-2c09c2fbdeb8","savedPayload":{"position":{"x":17526.89477305466,"y":9057.613157941623},"targetPosition":{"x":17811.51278482362,"y":8028.924571320903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Resistance Levels","points":[{"type":"Point","name":"Begin 1","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance1Rate","id":"3c34f0a9-1a8e-4452-803c-ea488111c3a5","savedPayload":{"position":{"x":17946.201417710414,"y":10733.408328680405},"targetPosition":{"x":17790.553963167895,"y":10123.463466537489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2a3a3e15-93dd-43f0-95f7-ae2ed478607f","savedPayload":{"position":{"x":17790.553963167895,"y":10123.463466537489},"targetPosition":{"x":17629.20587238568,"y":9513.81542913147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 1","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance1Rate","id":"d1968565-ac35-4c42-9760-2b46f17bae96","savedPayload":{"position":{"x":17766.57036324437,"y":10766.67135431907},"targetPosition":{"x":17699.41016053384,"y":10140.784363241972},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fe77f4a2-627c-4f27-9d4c-2dab9ddd8926","savedPayload":{"position":{"x":17699.41016053384,"y":10140.784363241972},"targetPosition":{"x":17629.20587238568,"y":9513.81542913147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 2","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance2Rate","id":"fe7ad1f2-d9b5-4e47-af1c-7d29b86e1a0a","savedPayload":{"position":{"x":17585.648671798852,"y":10773.650784606823},"targetPosition":{"x":17608.026011096183,"y":10144.588864772151},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"71ddeaf4-849d-4973-9b6a-a2ddcaccb86d","savedPayload":{"position":{"x":17608.026011096183,"y":10144.588864772151},"targetPosition":{"x":17629.20587238568,"y":9513.81542913147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 2","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance2Rate","id":"992d9a81-4292-4943-bc67-c6ce84ed7e3a","savedPayload":{"position":{"x":17406.026750589088,"y":10754.460435574752},"targetPosition":{"x":17517.72685487064,"y":10135.05852467565},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"19746197-9ebc-4af8-b4ba-8217fa0eba77","savedPayload":{"position":{"x":17517.72685487064,"y":10135.05852467565},"targetPosition":{"x":17629.20587238568,"y":9513.81542913147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 3","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance3Rate","id":"c29b8386-bb00-4b15-92ee-fa280c7b721f","savedPayload":{"position":{"x":17231.269476649442,"y":10709.878303384643},"targetPosition":{"x":17430.036484104567,"y":10112.777765809538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"febd94d0-09c7-40c5-b7b2-552ca2cca2b9","savedPayload":{"position":{"x":17430.036484104567,"y":10112.777765809538},"targetPosition":{"x":17629.20587238568,"y":9513.81542913147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 3","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance3Rate","id":"ff8a40a3-ebed-4e5a-854b-2ca20f2bc441","savedPayload":{"position":{"x":17064.868580113354,"y":10640.997788865714},"targetPosition":{"x":17346.593081686653,"y":10078.22496524072},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7003801a-ea76-43e2-a013-72e6d41aff5c","savedPayload":{"position":{"x":17346.593081686653,"y":10078.22496524072},"targetPosition":{"x":17629.20587238568,"y":9513.81542913147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 4","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance4Rate","id":"f927d491-29ca-4b19-aa80-c413e4148b38","savedPayload":{"position":{"x":16910.034361736954,"y":10549.127006937231},"targetPosition":{"x":17269.020303757137,"y":10032.136077795978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"12059a23-6280-499c-8ebc-f8c0de0e5647","savedPayload":{"position":{"x":17269.020303757137,"y":10032.136077795978},"targetPosition":{"x":17629.20587238568,"y":9513.81542913147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 4","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance4Rate","id":"8a5e95cc-9871-49e8-a610-bff6fc2883a4","savedPayload":{"position":{"x":16769.86280976503,"y":10436.173626272352},"targetPosition":{"x":17198.805249000925,"y":9975.523681607789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2e5e4668-102d-4d9a-addc-9b154e7889a9","savedPayload":{"position":{"x":17198.805249000925,"y":9975.523681607789},"targetPosition":{"x":17629.20587238568,"y":9513.81542913147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 5","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance5Rate","id":"ac834b1e-4605-456b-8861-2fcf9f2eb9db","savedPayload":{"position":{"x":16647.26855151078,"y":10304.320557034185},"targetPosition":{"x":17137.46469704671,"y":9909.435741786174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1cebdfa8-d6f3-44fb-bf7e-0f8bfaeff946","savedPayload":{"position":{"x":17137.46469704671,"y":9909.435741786174},"targetPosition":{"x":17629.20587238568,"y":9513.81542913147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 5","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance5Rate","id":"b8fc5e20-494e-471d-8f0e-97d42a64094b","savedPayload":{"position":{"x":16539.520363421285,"y":10145.860125609679},"targetPosition":{"x":17081.000950200018,"y":9824.898323858351},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bbc97ad3-5c93-460f-8463-127d21e3dca4","savedPayload":{"position":{"x":17081.000950200018,"y":9824.898323858351},"targetPosition":{"x":17629.20587238568,"y":9513.81542913147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d0075edc-e3f2-4d8f-84ba-900c9b431782","savedPayload":{"position":{"x":17361.35868546898,"y":8996.710266760385},"targetPosition":{"x":17811.51278482362,"y":8028.924571320903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Resistance Zone 1","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance1Rate - record.resistance1Rate * record.supportResistanceZone / 2 / 100","id":"a86b7e96-ad20-45e9-85f9-811c71852651","savedPayload":{"position":{"x":16795.272537655415,"y":8220.726391310252},"targetPosition":{"x":16982.072942676354,"y":8079.821364354837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0c275c7e-5012-454c-8772-a3c2f1621567","savedPayload":{"position":{"x":16982.072942676354,"y":8079.821364354837},"targetPosition":{"x":17355.093428378335,"y":7798.487434898174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance1Rate - record.resistance1Rate * record.supportResistanceZone / 2 / 100","id":"39fdd36d-0413-47d2-92d9-3257837c89de","savedPayload":{"position":{"x":16676.119877352914,"y":8051.674526153911},"targetPosition":{"x":16908.793853303847,"y":7967.64492122356},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e4ca8d91-e86c-4b97-b327-a1a631b28ade","savedPayload":{"position":{"x":16908.793853303847,"y":7967.64492122356},"targetPosition":{"x":17355.093428378335,"y":7798.487434898174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance1Rate + record.resistance1Rate * record.supportResistanceZone / 2 / 100","id":"e9e224f5-1483-4d72-97f7-13cbd566ce75","savedPayload":{"position":{"x":16657.76542196452,"y":7857.163142824208},"targetPosition":{"x":16880.88427719189,"y":7822.76801525866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"1614af55-2a6c-40a5-9339-958d2944f719","savedPayload":{"position":{"x":16880.88427719189,"y":7822.76801525866},"targetPosition":{"x":17355.093428378335,"y":7798.487434898174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance1Rate + record.resistance1Rate * record.supportResistanceZone / 2 / 100","id":"552f846f-64f1-4d31-b37d-2da573c20b7f","savedPayload":{"position":{"x":16710.978926565014,"y":7587.760161528272},"targetPosition":{"x":16932.143643700398,"y":7656.157209288352},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e6764b3a-2fdb-4df1-abde-1f6e9fca5a27","savedPayload":{"position":{"x":16932.143643700398,"y":7656.157209288352},"targetPosition":{"x":17355.093428378335,"y":7798.487434898174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1db48443-fc08-4f05-bf9e-4be80c377fe2","savedPayload":{"position":{"x":17208.174495432228,"y":8909.408735531275},"targetPosition":{"x":17811.51278482362,"y":8028.924571320903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Resistance Zone 2","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance2Rate - record.resistance2Rate * record.supportResistanceZone / 2 / 100","id":"31533409-bde7-41ad-b252-1c80e8874519","savedPayload":{"position":{"x":16750.28046332173,"y":8091.118946840907},"targetPosition":{"x":16948.361779777344,"y":7966.61803409094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"055d64bb-b823-4593-b606-4f0a35ac620a","savedPayload":{"position":{"x":16948.361779777344,"y":7966.61803409094},"targetPosition":{"x":17343.93190901638,"y":7718.007898133001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance2Rate - record.resistance2Rate * record.supportResistanceZone / 2 / 100","id":"ab6b9bed-1420-4c4f-b572-73274d1beeff","savedPayload":{"position":{"x":16645.787201022107,"y":7910.02550503531},"targetPosition":{"x":16885.565440839397,"y":7845.821709105607},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6d8e2772-7475-406d-b048-4599982d04e2","savedPayload":{"position":{"x":16885.565440839397,"y":7845.821709105607},"targetPosition":{"x":17343.93190901638,"y":7718.007898133001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance2Rate + record.resistance2Rate * record.supportResistanceZone / 2 / 100","id":"54021cad-c5f9-4756-94a4-6216e9e0bcf7","savedPayload":{"position":{"x":16644.68419871274,"y":7718.710455016573},"targetPosition":{"x":16872.198590389573,"y":7702.465663856525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d3cc8bbf-1f3e-49bc-9331-5e498064cb88","savedPayload":{"position":{"x":16872.198590389573,"y":7702.465663856525},"targetPosition":{"x":17343.93190901638,"y":7718.007898133001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance2Rate + record.resistance2Rate * record.supportResistanceZone / 2 / 100","id":"e44758af-409b-4797-ac44-0cdc0928dfa4","savedPayload":{"position":{"x":16720.262743111758,"y":7456.46259434816},"targetPosition":{"x":16930.12897820479,"y":7542.054160053059},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e2c53993-70fa-48f0-96b0-3c73a3baa50f","savedPayload":{"position":{"x":16930.12897820479,"y":7542.054160053059},"targetPosition":{"x":17343.93190901638,"y":7718.007898133001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2881845a-2d94-42f8-bffd-12b8f0674dc6","savedPayload":{"position":{"x":17071.461619499725,"y":8798.086993260924},"targetPosition":{"x":17811.51278482362,"y":8028.924571320903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Resistance Zone 3","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance3Rate - record.resistance3Rate * record.supportResistanceZone / 2 / 100","id":"b863599f-a422-4d49-be0c-5962371d571d","savedPayload":{"position":{"x":16719.960102308298,"y":7962.7116907141235},"targetPosition":{"x":16927.784820384877,"y":7855.640965136771},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e18fe7d1-bb71-4228-89ad-6eef714ec53f","savedPayload":{"position":{"x":16927.784820384877,"y":7855.640965136771},"targetPosition":{"x":17342.739813076343,"y":7641.873770848308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance3Rate - record.resistance3Rate * record.supportResistanceZone / 2 / 100","id":"aa5baeac-1910-4f48-a6c2-b3ffb7293d4a","savedPayload":{"position":{"x":16650.986514110446,"y":7754.105355892003},"targetPosition":{"x":16881.910067574234,"y":7716.704328217098},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"30f76ba8-3516-4b19-bb42-ae4613d5ce10","savedPayload":{"position":{"x":16881.910067574234,"y":7716.704328217098},"targetPosition":{"x":17342.739813076343,"y":7641.873770848308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance3Rate + record.resistance3Rate * record.supportResistanceZone / 2 / 100","id":"a6a1afe8-e380-4979-ba63-703903bc50db","savedPayload":{"position":{"x":16649.961444633842,"y":7535.260567971889},"targetPosition":{"x":16881.29108083578,"y":7570.809838796057},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fc07018f-23a9-46dc-bb6a-f6ddac68be6c","savedPayload":{"position":{"x":16881.29108083578,"y":7570.809838796057},"targetPosition":{"x":17342.739813076343,"y":7641.873770848308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance3Rate + record.resistance3Rate * record.supportResistanceZone / 2 / 100","id":"84cba419-b3e2-4cfc-9c32-69a2a56aa550","savedPayload":{"position":{"x":16717.246368133998,"y":7325.885789299957},"targetPosition":{"x":16925.95436017333,"y":7431.378084568276},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d4105484-8b89-48f5-af7f-964d2e541120","savedPayload":{"position":{"x":16925.95436017333,"y":7431.378084568276},"targetPosition":{"x":17342.739813076343,"y":7641.873770848308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a833c73a-2d81-40b3-9d44-3388046804ce","savedPayload":{"position":{"x":16954.941221957724,"y":8665.784852782686},"targetPosition":{"x":17811.51278482362,"y":8028.924571320903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Resistance Zone 4","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance4Rate - record.resistance4Rate * record.supportResistanceZone / 2 / 100","id":"02bf9b17-6651-4e71-bef8-8bb2ba8fe6b3","savedPayload":{"position":{"x":16695.709096962004,"y":7826.144561201949},"targetPosition":{"x":16911.955295381005,"y":7737.11195678126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"79408eb2-e914-4f85-96c6-0baa918f5f91","savedPayload":{"position":{"x":16911.955295381005,"y":7737.11195678126},"targetPosition":{"x":17343.845521631403,"y":7559.194448373122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance4Rate - record.resistance4Rate * record.supportResistanceZone / 2 / 100","id":"64545435-1cc4-4cd5-9c6e-700f76fb976d","savedPayload":{"position":{"x":16644.82300048826,"y":7612.461011367158},"targetPosition":{"x":16878.080408315025,"y":7594.720656868833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"9479606b-5668-40a4-8e34-40976668e11b","savedPayload":{"position":{"x":16878.080408315025,"y":7594.720656868833},"targetPosition":{"x":17343.845521631403,"y":7559.194448373122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance4Rate + record.resistance4Rate * record.supportResistanceZone / 2 / 100","id":"fc0e0a28-306b-42cc-95b2-d0264ca224b3","savedPayload":{"position":{"x":16662.53815350686,"y":7394.102948179603},"targetPosition":{"x":16889.88818088186,"y":7449.161761596246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"09f1f62c-723a-4588-ae76-d195aa1cb276","savedPayload":{"position":{"x":16889.88818088186,"y":7449.161761596246},"targetPosition":{"x":17343.845521631403,"y":7559.194448373122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance4Rate + record.resistance4Rate * record.supportResistanceZone / 2 / 100","id":"1a8ba3fb-7c20-4c56-a7e5-e9bb8ab8b00b","savedPayload":{"position":{"x":16747.11136904671,"y":7191.410202584174},"targetPosition":{"x":16946.212785996027,"y":7314.094171843046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"98ef8287-1ef2-498f-ae25-580a148f8fae","savedPayload":{"position":{"x":16946.212785996027,"y":7314.094171843046},"targetPosition":{"x":17343.845521631403,"y":7559.194448373122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"10d84102-de4a-4f5e-b511-8d948b16c186","savedPayload":{"position":{"x":16861.79093327551,"y":8516.120578943412},"targetPosition":{"x":17811.51278482362,"y":8028.924571320903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Resistance Zone 5","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance5Rate - record.resistance5Rate * record.supportResistanceZone / 2 / 100","id":"8fff05a9-9d0e-4dcb-ba56-15e7758ed61e","savedPayload":{"position":{"x":16684.796384136065,"y":7691.46455191583},"targetPosition":{"x":16907.82469033687,"y":7621.100155305601},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8ae90185-2a00-4958-95c1-83aa4b6402ee","savedPayload":{"position":{"x":16907.82469033687,"y":7621.100155305601},"targetPosition":{"x":17353.287422110447,"y":7480.466695930153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance5Rate - record.resistance5Rate * record.supportResistanceZone / 2 / 100","id":"d1499c5d-5a9b-428a-abfe-d05d946bbfff","savedPayload":{"position":{"x":16652.233584288333,"y":7474.682983933234},"targetPosition":{"x":16886.162270000714,"y":7476.575261982029},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"1f76e686-6537-4818-a4c8-f70dc4ec3c4f","savedPayload":{"position":{"x":16886.162270000714,"y":7476.575261982029},"targetPosition":{"x":17353.287422110447,"y":7480.466695930153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance5Rate + record.resistance5Rate * record.supportResistanceZone / 2 / 100","id":"e54f3a16-7835-487d-8b09-6dc517bda1d9","savedPayload":{"position":{"x":16688.43733842082,"y":7258.171342054061},"targetPosition":{"x":16910.287361377363,"y":7332.320137075964},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"72bab256-b619-4bb5-b188-e3da6d412f2f","savedPayload":{"position":{"x":16910.287361377363,"y":7332.320137075964},"targetPosition":{"x":17353.287422110447,"y":7480.466695930153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance5Rate + record.resistance5Rate * record.supportResistanceZone / 2 / 100","id":"d5530e82-a1fb-4108-ac6e-ada9fe0b161b","savedPayload":{"position":{"x":16789.881387564667,"y":7063.385874503389},"targetPosition":{"x":16977.857248458316,"y":7202.519188984989},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ee66793e-1c2d-4a17-8c0c-f086656eb0a6","savedPayload":{"position":{"x":16977.857248458316,"y":7202.519188984989},"targetPosition":{"x":17353.287422110447,"y":7480.466695930153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e6120640-850a-4f6f-a55a-b3e7dbca6ab5","savedPayload":{"position":{"x":16794.561287070104,"y":8353.235351060888},"targetPosition":{"x":17811.51278482362,"y":8028.924571320903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Resistance Line 1","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance1Rate > 0","id":"2a6b550a-7631-4e45-b740-9c46586d71a3","savedPayload":{"position":{"x":16799.88216372196,"y":9121.168846799499},"targetPosition":{"x":17342.264517323358,"y":8799.856978794736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"8f2da42d-c563-4db6-b431-78520c3c282e","savedPayload":{"position":{"x":16170.326563365252,"y":9264.874363575242},"targetPosition":{"x":16756.295540344305,"y":9032.365671184989},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"ab5ed6ec-35cf-4709-b14d-548495163c99","savedPayload":{"position":{"x":16756.295540344305,"y":9032.365671184989},"targetPosition":{"x":17342.264517323358,"y":8799.856978794736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 1","id":"366d0b55-988c-4995-8dcb-8738605be64b","savedPayload":{"position":{"x":16727.137417899412,"y":8937.83735991172},"targetPosition":{"x":17342.264517323358,"y":8799.856978794736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 1","id":"2a3a3e15-93dd-43f0-95f7-ae2ed478607f"}}},{"type":"Polygon Vertex","name":"End 1","id":"7f2cb9ed-59bc-4f03-bf33-f34ca52db445","savedPayload":{"position":{"x":16713.12576613214,"y":8839.91151372472},"targetPosition":{"x":17342.264517323358,"y":8799.856978794736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 1","id":"fe77f4a2-627c-4f27-9d4c-2dab9ddd8926"}}}],"id":"0c38b25a-d207-430e-ae5a-9ba55227c974","savedPayload":{"position":{"x":16753.518537871645,"y":8181.630517649471},"targetPosition":{"x":17811.51278482362,"y":8028.924571320903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Line 2","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance2Rate > 0","id":"27b432e9-4988-4457-8e68-13a06a1341fb","savedPayload":{"position":{"x":16737.058889547377,"y":8944.891905998198},"targetPosition":{"x":17321.27232934571,"y":8708.006721197828},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.TURQUOISE\"\n }\n}","id":"500b1402-adbe-46d7-9410-92a9cc84b492","savedPayload":{"position":{"x":16093.116709209724,"y":8993.161957523596},"targetPosition":{"x":16707.194519277717,"y":8850.584339360712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"c1565617-e60a-4688-bcaf-061fb5ef8f02","savedPayload":{"position":{"x":16707.194519277717,"y":8850.584339360712},"targetPosition":{"x":17321.27232934571,"y":8708.006721197828},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 2","id":"b06bed94-85e8-4405-8372-fa5af8fa10f4","savedPayload":{"position":{"x":16692.450782699336,"y":8752.766038576072},"targetPosition":{"x":17321.27232934571,"y":8708.006721197828},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 2","id":"71ddeaf4-849d-4973-9b6a-a2ddcaccb86d"}}},{"type":"Polygon Vertex","name":"End 2","id":"a6ad0c69-98e2-459a-a5e4-28b863e7e679","savedPayload":{"position":{"x":16693.190719538452,"y":8653.84561484992},"targetPosition":{"x":17321.27232934571,"y":8708.006721197828},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 2","id":"19746197-9ebc-4af8-b4ba-8217fa0eba77"}}}],"id":"532beef7-8d2e-4899-9c99-850db799d9a2","savedPayload":{"position":{"x":16742.79310520755,"y":8005.49577651672},"targetPosition":{"x":17811.51278482362,"y":8028.924571320903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Line 3","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance3Rate > 0","id":"6532e5e3-4b6f-4f9b-a52f-f42d588109aa","savedPayload":{"position":{"x":16701.240822249587,"y":8761.2213327313},"targetPosition":{"x":17314.234985383402,"y":8614.05445472278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n }\n}","id":"f0c15419-ec71-4bfd-8be7-14b5f7ab6213","savedPayload":{"position":{"x":16057.296666157308,"y":8712.97764581914},"targetPosition":{"x":16685.765825770355,"y":8663.51605027096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"3122acb4-11b4-4b42-801d-e6f0f3bc88f5","savedPayload":{"position":{"x":16685.765825770355,"y":8663.51605027096},"targetPosition":{"x":17314.234985383402,"y":8614.05445472278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 3","id":"86879433-37a4-4d4c-94b2-f56509927833","savedPayload":{"position":{"x":16685.765825770355,"y":8564.5928591746},"targetPosition":{"x":17314.234985383402,"y":8614.05445472278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 3","id":"febd94d0-09c7-40c5-b7b2-552ca2cca2b9"}}},{"type":"Polygon Vertex","name":"End 3","id":"ced94fbd-8b64-45a4-af9d-fb2366e9c08f","savedPayload":{"position":{"x":16701.240822249587,"y":8466.88757671426},"targetPosition":{"x":17314.234985383402,"y":8614.05445472278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 3","id":"7003801a-ea76-43e2-a013-72e6d41aff5c"}}}],"id":"9eb7ed64-8225-41de-ab73-3297d19e1529","savedPayload":{"position":{"x":16761.243915213923,"y":7829.871790967893},"targetPosition":{"x":17811.51278482362,"y":8028.924571320903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Line 4","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance4Rate > 0","id":"2c5d8280-e687-4ab6-8dc4-a37d33dac54c","savedPayload":{"position":{"x":16693.203177187035,"y":8574.260227649444},"targetPosition":{"x":17321.284786994293,"y":8520.099121301537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n }\n}","id":"981c71a0-44f8-40a7-935b-de7a0d29c125","savedPayload":{"position":{"x":16063.641693701546,"y":8430.580486545048},"targetPosition":{"x":16692.46324034792,"y":8475.339803923292},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"66da2fbe-77f0-47ba-b520-cd646ffbc4bf","savedPayload":{"position":{"x":16692.46324034792,"y":8475.339803923292},"targetPosition":{"x":17321.284786994293,"y":8520.099121301537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 4","id":"2b0a1310-20d6-45cd-a05b-ed8cbddcbb81","savedPayload":{"position":{"x":16707.2069769263,"y":8377.521503138652},"targetPosition":{"x":17321.284786994293,"y":8520.099121301537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 4","id":"12059a23-6280-499c-8ebc-f8c0de0e5647"}}},{"type":"Polygon Vertex","name":"End 4","id":"db596f4f-6410-4250-a837-dad5cd2d61e8","savedPayload":{"position":{"x":16737.07134719596,"y":8283.213936501166},"targetPosition":{"x":17321.284786994293,"y":8520.099121301537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 4","id":"2e5e4668-102d-4d9a-addc-9b154e7889a9"}}}],"id":"b8b29e5a-49aa-45cb-b6f3-0ba78dd97899","savedPayload":{"position":{"x":16808.35078114303,"y":7659.692790780619},"targetPosition":{"x":17811.51278482362,"y":8028.924571320903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Line 5","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance5Rate > 0","id":"d29fe2ec-f038-419b-a308-caa26a5a8185","savedPayload":{"position":{"x":16713.1180888925,"y":8388.183297149086},"targetPosition":{"x":17342.25684008372,"y":8428.23783207907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"2fb5a769-94e1-480d-9e37-e95b3e6d2391","savedPayload":{"position":{"x":16112.002641235831,"y":8152.277069845102},"targetPosition":{"x":16727.129740659777,"y":8290.257450962086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"5c4e3fb7-482b-4830-b279-ce65f5dde542","savedPayload":{"position":{"x":16727.129740659777,"y":8290.257450962086},"targetPosition":{"x":17342.25684008372,"y":8428.23783207907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 5","id":"94bd59ac-0e4f-4f0c-a8fc-98dda2d4f485","savedPayload":{"position":{"x":16756.287863104666,"y":8195.729139688818},"targetPosition":{"x":17342.25684008372,"y":8428.23783207907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 5","id":"1cebdfa8-d6f3-44fb-bf7e-0f8bfaeff946"}}},{"type":"Polygon Vertex","name":"End 5","id":"890c39f7-712c-4b93-849a-cd652f600124","savedPayload":{"position":{"x":16799.87448648232,"y":8106.925964074308},"targetPosition":{"x":17342.25684008372,"y":8428.23783207907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 5","id":"bbc97ad3-5c93-460f-8463-127d21e3dca4"}}}],"id":"0582dc0b-1512-4762-8340-aabeadad6643","savedPayload":{"position":{"x":16882.826313809823,"y":7499.592720130882},"targetPosition":{"x":17811.51278482362,"y":8028.924571320903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Base","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.typeResistance=== 'Resistance'","id":"ea67ee97-0c26-4369-969a-4b207c45acf2","savedPayload":{"position":{"x":18126.673482989216,"y":5826.605617265005},"targetPosition":{"x":18418.49500124919,"y":6712.073966600004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0,\n \"paletteColor\": \"UI_COLOR.DARK\"\n }\n}","id":"65722c8b-1977-4cfa-ba63-c2cc7434891b","savedPayload":{"position":{"x":18289.154814545574,"y":4856.133090258443},"targetPosition":{"x":18414.696493622294,"y":5779.73320613846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.typeResistance=== 'Resistance'","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.DARK\",\n \"opacity\": 0.5\n}","id":"8322fb8f-d018-4855-a288-20ca625c95a3","savedPayload":{"position":{"x":18650.04327243504,"y":3930.5150899547966},"targetPosition":{"x":18532.406030188642,"y":4855.09434222601},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ad690e4e-7590-4b4d-960e-97510c4fce0d","savedPayload":{"position":{"x":18532.406030188642,"y":4855.09434222601},"targetPosition":{"x":18414.696493622294,"y":5779.73320613846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c3e776eb-ac3c-49a1-b8bb-0a3b37dcff10","savedPayload":{"position":{"x":18414.696493622294,"y":5779.73320613846},"targetPosition":{"x":18418.49500124919,"y":6712.073966600004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Flag Base Left","id":"b6a079f5-8719-4beb-93c5-ae45a48f6bc4","savedPayload":{"position":{"x":18702.841739708554,"y":5824.195818059409},"targetPosition":{"x":18418.49500124919,"y":6712.073966600004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Base Left","id":"6e8169a3-28a2-412f-8100-577c4a9a97bb"}}},{"type":"Polygon Vertex","name":"Flag Base Right","id":"d43b33c2-6d6c-4552-85b6-07300acc05c4","savedPayload":{"position":{"x":18963.336745197525,"y":5955.594853795422},"targetPosition":{"x":18418.49500124919,"y":6712.073966600004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Base Right","id":"b23883d4-d592-4d0a-822e-82165e22598f"}}}],"id":"c62d156c-4686-45a4-af42-283999dd1200","savedPayload":{"position":{"x":16982.6385748752,"y":7353.9363331554405},"targetPosition":{"x":17811.51278482362,"y":8028.924571320903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Zone 1","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance1Bounce1 > 0","id":"f4fdf8db-0009-4053-acdd-90f790ef2dc1","savedPayload":{"position":{"x":16061.590638939002,"y":6930.023748310527},"targetPosition":{"x":17083.666175248352,"y":7232.167308624647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"678098f3-5628-4c48-baac-daaaa46f7cb6","savedPayload":{"position":{"x":15117.19539522446,"y":6465.818400898126},"targetPosition":{"x":16154.65469509563,"y":6709.876597125092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.resistance1Bounce1 > 1","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"34b995fd-453d-47b9-8967-3d283ce8c5c9","savedPayload":{"position":{"x":14147.77046880632,"y":5991.735136563619},"targetPosition":{"x":15151.169506135031,"y":6350.85123486117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e9625315-0f08-473d-ae16-972cf0dacef6","savedPayload":{"position":{"x":15151.169506135031,"y":6350.85123486117},"targetPosition":{"x":16154.65469509563,"y":6709.876597125092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance1Bounce1 > 2","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"9c07eec3-733b-415a-9eb2-75bdbb926913","savedPayload":{"position":{"x":14240.926782485885,"y":5771.3064687559645},"targetPosition":{"x":15197.758025111954,"y":6240.60532872457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2e9532be-e479-4863-a652-2db78d854596","savedPayload":{"position":{"x":15197.758025111954,"y":6240.60532872457},"targetPosition":{"x":16154.65469509563,"y":6709.876597125092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance1Bounce1 > 3","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"055dcb1d-7351-4348-ba05-d69e35f1e5c9","savedPayload":{"position":{"x":14358.166400851389,"y":5562.77110032373},"targetPosition":{"x":15256.403349607128,"y":6136.293364420862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"13ae1317-69bb-4a8a-aaa0-170868016d4a","savedPayload":{"position":{"x":15256.403349607128,"y":6136.293364420862},"targetPosition":{"x":16154.65469509563,"y":6709.876597125092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance1Bounce1 > 4","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"1274e868-d24c-4722-9cfb-a390e63afea4","savedPayload":{"position":{"x":14498.049113037787,"y":5368.665066495456},"targetPosition":{"x":15326.38713719954,"y":6039.18925909965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ee88e538-166d-4c03-b284-d2723f8683f0","savedPayload":{"position":{"x":15326.38713719954,"y":6039.18925909965},"targetPosition":{"x":16154.65469509563,"y":6709.876597125092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance1Bounce1 > 5","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"c5639eed-1b4a-4374-a8ad-300810a6da68","savedPayload":{"position":{"x":14659.003205173372,"y":5191.254396729356},"targetPosition":{"x":15406.970109075059,"y":5950.386892180589},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b84e5eee-04d8-4bfe-b252-409df978d9d9","savedPayload":{"position":{"x":15406.970109075059,"y":5950.386892180589},"targetPosition":{"x":16154.65469509563,"y":6709.876597125092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2cd93655-284b-4e59-9959-749211d0c13b","savedPayload":{"position":{"x":16154.65469509563,"y":6709.876597125092},"targetPosition":{"x":17083.666175248352,"y":7232.167308624647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"61265cbf-c690-4531-8e1c-63012f033dec","savedPayload":{"position":{"x":16294.299525939256,"y":6516.082006627744},"targetPosition":{"x":17083.666175248352,"y":7232.167308624647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"0c275c7e-5012-454c-8772-a3c2f1621567"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"d86b1af1-cc3b-4953-8e11-715de1e47305","savedPayload":{"position":{"x":16473.418841681785,"y":6358.3663562622505},"targetPosition":{"x":17083.666175248352,"y":7232.167308624647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"e4ca8d91-e86c-4b97-b327-a1a631b28ade"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"0a2d374a-1bef-4db3-9259-5fe2d4a4352f","savedPayload":{"position":{"x":16683.142459690964,"y":6244.469029632582},"targetPosition":{"x":17083.666175248352,"y":7232.167308624647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"e6764b3a-2fdb-4df1-abde-1f6e9fca5a27"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"f22ffe77-c62c-4cc1-9c27-35e5a3831104","savedPayload":{"position":{"x":16913.04510699028,"y":6180.069556734264},"targetPosition":{"x":17083.666175248352,"y":7232.167308624647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"1614af55-2a6c-40a5-9339-958d2944f719"}}}],"id":"ca9666cf-e40b-46af-902d-050c1956b702","savedPayload":{"position":{"x":17105.06529011395,"y":7226.69590846936},"targetPosition":{"x":17811.51278482362,"y":8028.924571320903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Zone 2","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance2Bounce1 > 0","id":"8e52a153-4da1-4d25-9070-a9cab7901642","savedPayload":{"position":{"x":16289.616182052183,"y":6655.462367371366},"targetPosition":{"x":17247.91817856152,"y":7121.6928731789685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"0d2e9e03-1e4b-406a-8807-a56b112e4bf9","savedPayload":{"position":{"x":15434.542219564346,"y":6042.1667458447755},"targetPosition":{"x":16417.59214706712,"y":6453.637803402542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.resistance2Bounce1 > 1","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"909e78e1-4f46-48a0-b49f-d448973a5321","savedPayload":{"position":{"x":14556.443196963983,"y":5415.006166024114},"targetPosition":{"x":15486.96341574671,"y":5934.359855841898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"eb9bc072-5c45-4901-8cce-f2c26a2f4505","savedPayload":{"position":{"x":15486.96341574671,"y":5934.359855841898},"targetPosition":{"x":16417.59214706712,"y":6453.637803402542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance2Bounce1 > 2","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"ca020c35-f86f-4b23-a952-ac6dbb8b1826","savedPayload":{"position":{"x":14684.603862695383,"y":5212.928401358831},"targetPosition":{"x":15551.059431200167,"y":5833.290906310765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b5c6aa09-4166-4c94-9967-b91524c21464","savedPayload":{"position":{"x":15551.059431200167,"y":5833.290906310765},"targetPosition":{"x":16417.59214706712,"y":6453.637803402542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance2Bounce1 > 3","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"36071756-7d18-4da4-a70c-51f4c463ebba","savedPayload":{"position":{"x":14834.556987205287,"y":5026.546804700729},"targetPosition":{"x":15626.069018939543,"y":5740.059514191508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fa8a71d2-4cc4-4fbe-a186-dcae6715bdae","savedPayload":{"position":{"x":15626.069018939543,"y":5740.059514191508},"targetPosition":{"x":16417.59214706712,"y":6453.637803402542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance2Bounce1 > 4","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"1fd4231d-7109-4078-a500-e8392f75f443","savedPayload":{"position":{"x":15004.465726845714,"y":4858.126504305715},"targetPosition":{"x":15711.077070179992,"y":5655.803517414867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"44d57144-5dce-4b2a-aca2-2a2fb6cce4f5","savedPayload":{"position":{"x":15711.077070179992,"y":5655.803517414867},"targetPosition":{"x":16417.59214706712,"y":6453.637803402542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance2Bounce1 > 5","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"dc876bc9-5380-4127-9091-b9d1855127e2","savedPayload":{"position":{"x":15192.437321828791,"y":4709.6205080910495},"targetPosition":{"x":15805.176335443599,"y":5581.477673004685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7ec7f8db-d303-479e-970d-11b1c6b585f8","savedPayload":{"position":{"x":15805.176335443599,"y":5581.477673004685},"targetPosition":{"x":16417.59214706712,"y":6453.637803402542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6f9d86e1-164c-4ea4-992d-2917fda244ac","savedPayload":{"position":{"x":16417.59214706712,"y":6453.637803402542},"targetPosition":{"x":17247.91817856152,"y":7121.6928731789685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"496ec3db-d47e-478d-be79-a266a0f1ee4b","savedPayload":{"position":{"x":16587.266699239575,"y":6285.491483277821},"targetPosition":{"x":17247.91817856152,"y":7121.6928731789685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"055d64bb-b823-4593-b606-4f0a35ac620a"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"92e88ed6-dfb5-4d69-b739-2596eabe9562","savedPayload":{"position":{"x":16789.886217707408,"y":6159.420329498765},"targetPosition":{"x":17247.91817856152,"y":7121.6928731789685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"6d8e2772-7475-406d-b048-4599982d04e2"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"06940067-8e78-4652-80bb-53a20db38d36","savedPayload":{"position":{"x":17015.47846233672,"y":6081.6030223008165},"targetPosition":{"x":17247.91817856152,"y":7121.6928731789685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"e2c53993-70fa-48f0-96b0-3c73a3baa50f"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"44754c48-5c48-4911-8782-729f29d1b01e","savedPayload":{"position":{"x":17252.52045189353,"y":6055.926708995848},"targetPosition":{"x":17247.91817856152,"y":7121.6928731789685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"d3cc8bbf-1f3e-49bc-9331-5e498064cb88"}}}],"id":"3032c972-5916-496b-9aec-fb9f49a9237f","savedPayload":{"position":{"x":17246.768042964424,"y":7121.342004441301},"targetPosition":{"x":17811.51278482362,"y":8028.924571320903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Zone 3","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance3Bounce1 > 0","id":"1c336053-c230-4ad3-ab58-4b85d364a707","savedPayload":{"position":{"x":16536.228834283753,"y":6423.613058464748},"targetPosition":{"x":17404.645087546916,"y":7041.200267657546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"e7bdfc4c-a887-4a47-9402-e3be2aa390fa","savedPayload":{"position":{"x":15793.80240002887,"y":5677.979759063336},"targetPosition":{"x":16695.635893281047,"y":6245.622133089674},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.resistance3Bounce1 > 1","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"65f80810-1132-493b-86c5-b7ac04fb2e1b","savedPayload":{"position":{"x":15030.989541294417,"y":4914.869885513436},"targetPosition":{"x":15863.24714610284,"y":5580.276387289495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"af73149e-c55e-4cd1-8008-a4a0e0dc4bce","savedPayload":{"position":{"x":15863.24714610284,"y":5580.276387289495},"targetPosition":{"x":16695.635893281047,"y":6245.622133089674},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance3Bounce1 > 2","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"1fe17781-8019-412d-bce7-e4015502c1dc","savedPayload":{"position":{"x":15190.655513156586,"y":4736.651995531937},"targetPosition":{"x":15943.10189020792,"y":5491.139339677779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"66a99f55-071a-4c17-8a4c-0a3ca27b49c5","savedPayload":{"position":{"x":15943.10189020792,"y":5491.139339677779},"targetPosition":{"x":16695.635893281047,"y":6245.622133089674},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance3Bounce1 > 3","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"68425fb0-290a-4f0a-bc37-0afacae35c6f","savedPayload":{"position":{"x":15369.230615167351,"y":4577.495431908207},"targetPosition":{"x":16032.429230830261,"y":5411.526509016029},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a8b5a03e-3f6c-4e73-893f-a2ead5f90bc4","savedPayload":{"position":{"x":16032.429230830261,"y":5411.526509016029},"targetPosition":{"x":16695.635893281047,"y":6245.622133089674},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance3Bounce1 > 4","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"3fa93e36-a9e8-49db-830d-bdceda8dd236","savedPayload":{"position":{"x":15564.531538424037,"y":4439.3498374254505},"targetPosition":{"x":16130.145925588737,"y":5342.418131039412},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"78bcd2f8-69b6-46ae-a646-d9584ec851f6","savedPayload":{"position":{"x":16130.145925588737,"y":5342.418131039412},"targetPosition":{"x":16695.635893281047,"y":6245.622133089674},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance3Bounce1 > 5","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"2d5b8980-b779-4c09-a2ba-eec5e1ec4ac3","savedPayload":{"position":{"x":15774.397647021155,"y":4323.802246746017},"targetPosition":{"x":16235.190280635648,"y":5284.595514123533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8aaddafc-5dcf-43a1-a4ad-2c2ecd043e2f","savedPayload":{"position":{"x":16235.190280635648,"y":5284.595514123533},"targetPosition":{"x":16695.635893281047,"y":6245.622133089674},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4b1db531-9768-4f0c-85e9-6f6f03685281","savedPayload":{"position":{"x":16695.635893281047,"y":6245.622133089674},"targetPosition":{"x":17404.645087546916,"y":7041.200267657546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"a5770e2d-61db-4f56-ab84-0892dad59567","savedPayload":{"position":{"x":16890.69704139691,"y":6107.696679479243},"targetPosition":{"x":17404.645087546916,"y":7041.200267657546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"e18fe7d1-bb71-4228-89ad-6eef714ec53f"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"c122c5b3-0024-426a-9965-e1e78daec055","savedPayload":{"position":{"x":17111.29144223217,"y":6016.699025344563},"targetPosition":{"x":17404.645087546916,"y":7041.200267657546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"30f76ba8-3516-4b19-bb42-ae4613d5ce10"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"66a2a41d-c2d3-424b-a5ad-cf339cb4d20f","savedPayload":{"position":{"x":17346.602669629316,"y":5977.07695053794},"targetPosition":{"x":17404.645087546916,"y":7041.200267657546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"d4105484-8b89-48f5-af7f-964d2e541120"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"c050df08-5b55-49ec-91e2-19bc9e16fe91","savedPayload":{"position":{"x":17584.615059453998,"y":5990.818744526684},"targetPosition":{"x":17404.645087546916,"y":7041.200267657546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"fc07018f-23a9-46dc-bb6a-f6ddac68be6c"}}}],"id":"753efd9a-f48d-4826-89ac-7f046667a26c","savedPayload":{"position":{"x":17403.88545842369,"y":7040.748361060719},"targetPosition":{"x":17811.51278482362,"y":8028.924571320903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Zone 4","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance4Bounce1 > 0","id":"0931fce8-e103-4a66-b479-207e0662359e","savedPayload":{"position":{"x":16817.818992209897,"y":6235.13851598727},"targetPosition":{"x":17572.7283537909,"y":6987.280523377811},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"03da2d32-5673-4d64-b99a-1b7dd6df2fe6","savedPayload":{"position":{"x":16208.241427737674,"y":5377.435812536273},"targetPosition":{"x":17004.33138048096,"y":6085.8162614378725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.resistance4Bounce1 > 1","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"6913a704-6ff8-4978-bba2-2a0acf0d8672","savedPayload":{"position":{"x":15581.441446708426,"y":4499.1337838120735},"targetPosition":{"x":16292.816831566064,"y":5292.494184965994},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aad10167-a2b9-4055-90a6-e094f118e5d6","savedPayload":{"position":{"x":16292.816831566064,"y":5292.494184965994},"targetPosition":{"x":17004.33138048096,"y":6085.8162614378725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance4Bounce1 > 2","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"b930f4ad-fcba-439d-864d-20082c52ed4e","savedPayload":{"position":{"x":15768.26681260267,"y":4349.622064857459},"targetPosition":{"x":16386.253597639054,"y":5217.716012814919},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7cc16cba-79d9-4ebb-af5e-2e9f19e4faaa","savedPayload":{"position":{"x":16386.253597639054,"y":5217.716012814919},"targetPosition":{"x":17004.33138048096,"y":6085.8162614378725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance4Bounce1 > 3","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"9532bb2f-ad66-44dd-a5e4-58848c302734","savedPayload":{"position":{"x":15970.61070802338,"y":4222.031979983293},"targetPosition":{"x":16487.471112083716,"y":5153.894257929449},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ce42776f-7050-49de-9d8c-9a616656e668","savedPayload":{"position":{"x":16487.471112083716,"y":5153.894257929449},"targetPosition":{"x":17004.33138048096,"y":6085.8162614378725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance4Bounce1 > 4","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"342c81eb-3f45-4f5c-afdf-51dc77db3926","savedPayload":{"position":{"x":16185.990080413712,"y":4117.91023734749},"targetPosition":{"x":16595.22821398379,"y":5101.805540097665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"970ed430-5c9c-4d26-bb87-a8a5a8dc0498","savedPayload":{"position":{"x":16595.22821398379,"y":5101.805540097665},"targetPosition":{"x":17004.33138048096,"y":6085.8162614378725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance4Bounce1 > 5","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"d60fc74e-067a-4b1a-80f9-8f298c70c256","savedPayload":{"position":{"x":16411.99768783223,"y":4038.4843080237683},"targetPosition":{"x":16708.362351560398,"y":5062.060894866312},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d647e933-5853-4c85-9f38-7734330f63bf","savedPayload":{"position":{"x":16708.362351560398,"y":5062.060894866312},"targetPosition":{"x":17004.33138048096,"y":6085.8162614378725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d181f92f-7c33-429e-9f32-13afcadaac04","savedPayload":{"position":{"x":17004.33138048096,"y":6085.8162614378725},"targetPosition":{"x":17572.7283537909,"y":6987.280523377811},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"9edd9a7b-2d22-45b3-b481-b8ac59d25f32","savedPayload":{"position":{"x":17219.460717917384,"y":5981.871785905057},"targetPosition":{"x":17572.7283537909,"y":6987.280523377811},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"79408eb2-e914-4f85-96c6-0baa918f5f91"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"40a3e87b-ccb4-4c11-9553-a1934ffe3397","savedPayload":{"position":{"x":17452.027177243534,"y":5928.4233350374125},"targetPosition":{"x":17572.7283537909,"y":6987.280523377811},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"9479606b-5668-40a4-8e34-40976668e11b"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"d985e769-5063-49f1-825a-8c469bebb1fc","savedPayload":{"position":{"x":17690.344269756635,"y":5928.07660843353},"targetPosition":{"x":17572.7283537909,"y":6987.280523377811},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"98ef8287-1ef2-498f-ae25-580a148f8fae"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"3d630c8d-3820-4190-adcf-cc372272af3f","savedPayload":{"position":{"x":17923.159686289066,"y":5980.858617577796},"targetPosition":{"x":17572.7283537909,"y":6987.280523377811},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"09f1f62c-723a-4588-ae76-d195aa1cb276"}}}],"id":"0fb57b23-fb5d-429c-bc75-84008becc00e","savedPayload":{"position":{"x":17572.17625256015,"y":6987.094407325683},"targetPosition":{"x":17811.51278482362,"y":8028.924571320903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Zone 5","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance5Bounce1 > 0","id":"082cf5a1-8c77-42c1-a19e-def34f93c0c3","savedPayload":{"position":{"x":17126.568666482097,"y":6095.724411814516},"targetPosition":{"x":17747.396453262976,"y":6961.947176583114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"50abec57-e340-4709-9f4c-9fae0b30a09a","savedPayload":{"position":{"x":16666.4866034623,"y":5149.294229062968},"targetPosition":{"x":17335.139501842303,"y":5979.133013202697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.resistance5Bounce1 > 1","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"15f87ebf-d18f-4e4f-93aa-545c0bbf36ab","savedPayload":{"position":{"x":16192.792592837943,"y":4179.71459760389},"targetPosition":{"x":16763.89659488578,"y":5079.432190272525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"468bd43d-c2d6-4597-b1a5-6a401b0fe336","savedPayload":{"position":{"x":16763.89659488578,"y":5079.432190272525},"targetPosition":{"x":17335.139501842303,"y":5979.133013202697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance5Bounce1 > 2","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"2a0d3dfc-d790-4eb4-9951-389ad56d9a10","savedPayload":{"position":{"x":16401.68902073536,"y":4062.9859980715287},"targetPosition":{"x":16868.37270339104,"y":5021.0492063510865},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6247696c-f48e-41fb-aef2-e051ead37498","savedPayload":{"position":{"x":16868.37270339104,"y":5021.0492063510865},"targetPosition":{"x":17335.139501842303,"y":5979.133013202697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance5Bounce1 > 3","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"c4c3fb3e-85a5-4f01-ad3f-b86d52b965b3","savedPayload":{"position":{"x":16622.284890462182,"y":3970.435797515874},"targetPosition":{"x":16978.718213984463,"y":4974.754535746632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6bc50b65-7c74-440e-8a08-e1d28540dff8","savedPayload":{"position":{"x":16978.718213984463,"y":4974.754535746632},"targetPosition":{"x":17335.139501842303,"y":5979.133013202697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance5Bounce1 > 4","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"1ba3d543-f241-4ce5-85f1-98579b075881","savedPayload":{"position":{"x":16851.885126451736,"y":3903.1789623518084},"targetPosition":{"x":17093.584789627545,"y":4941.111776798697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"edbd4422-89b8-4074-8ea5-994d62142496","savedPayload":{"position":{"x":17093.584789627545,"y":4941.111776798697},"targetPosition":{"x":17335.139501842303,"y":5979.133013202697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance5Bounce1 > 5","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"d91e1d41-dcc5-4992-aff7-eba6f8aae36a","savedPayload":{"position":{"x":17087.86993447622,"y":3862.0370225247448},"targetPosition":{"x":17211.718968774836,"y":4920.529622727463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b46b6072-5682-463b-abec-ba1b8433d5c1","savedPayload":{"position":{"x":17211.718968774836,"y":4920.529622727463},"targetPosition":{"x":17335.139501842303,"y":5979.133013202697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2db093f9-9a3d-4633-afc3-47d7b7a1ba43","savedPayload":{"position":{"x":17335.139501842303,"y":5979.133013202697},"targetPosition":{"x":17747.396453262976,"y":6961.947176583114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"9b24e6a9-06da-4deb-8710-91d5bd430b2c","savedPayload":{"position":{"x":17564.44050132417,"y":5912.010547425526},"targetPosition":{"x":17747.396453262976,"y":6961.947176583114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"8ae90185-2a00-4958-95c1-83aa4b6402ee"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"31685577-64d9-4165-8f22-9ee5687950d5","savedPayload":{"position":{"x":17802.344173190813,"y":5897.571833455594},"targetPosition":{"x":17747.396453262976,"y":6961.947176583114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"1f76e686-6537-4818-a4c8-f70dc4ec3c4f"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"60b0dc5b-992a-4c56-baed-99f61db77df2","savedPayload":{"position":{"x":18037.788742974237,"y":5936.507578315444},"targetPosition":{"x":17747.396453262976,"y":6961.947176583114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"ee66793e-1c2d-4a17-8c0c-f086656eb0a6"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"3381e89f-ca2d-4f2a-808d-6dd705b6da98","savedPayload":{"position":{"x":18258.753975179483,"y":6026.895508730586},"targetPosition":{"x":17747.396453262976,"y":6961.947176583114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"72bab256-b619-4bb5-b188-e3da6d412f2f"}}}],"id":"550e31bb-a95f-4fad-bfbb-b42aae7dc5d3","savedPayload":{"position":{"x":17747.136678271898,"y":6961.9059902791905},"targetPosition":{"x":17811.51278482362,"y":8028.924571320903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"706e4ed7-a497-41a4-a9b0-28f07c4c3b69","savedPayload":{"position":{"x":17813.42883197614,"y":8029.514000440296},"targetPosition":{"x":18873.263101784683,"y":8140.748951350776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Resistance Bounces","code":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Level 1 ZONE","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance1Bounce1","id":"19e11730-5eb7-4185-8d37-0ff69d6124ad","savedPayload":{"position":{"x":18723.05380476736,"y":6795.029558479842},"targetPosition":{"x":18865.915713340775,"y":6980.076951242073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"efea3cfd-0f4a-4ae0-9370-33474500839b","savedPayload":{"position":{"x":18865.915713340775,"y":6980.076951242073},"targetPosition":{"x":19437.363347634422,"y":7720.266522290995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ 2 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance1Bounce2","id":"271bbb18-0632-42ad-82c4-c4212c705df2","savedPayload":{"position":{"x":18885.085054870153,"y":6690.077098168028},"targetPosition":{"x":18995.540713423008,"y":6896.114982992622},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"928c418e-3c43-4207-b50d-23bad01797e1","savedPayload":{"position":{"x":18995.540713423008,"y":6896.114982992622},"targetPosition":{"x":19437.363347634422,"y":7720.266522290995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ 3 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance1Bounce3","id":"a8976927-0aa4-40ea-86d7-027862c25e8e","savedPayload":{"position":{"x":19062.181017117495,"y":6613.225519842887},"targetPosition":{"x":19137.21748322088,"y":6834.633720332508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"fa920c04-f22d-4664-ba32-da5b20c08547","savedPayload":{"position":{"x":19137.21748322088,"y":6834.633720332508},"targetPosition":{"x":19437.363347634422,"y":7720.266522290995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ 5 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance1Bounce5","id":"20cbe22e-edd4-4907-97a7-845941d2c1dd","savedPayload":{"position":{"x":19249.51097531399,"y":6566.571134224018},"targetPosition":{"x":19287.081449778078,"y":6797.310211837414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"af681228-ea92-40fa-ad2b-52dd554054e4","savedPayload":{"position":{"x":19287.081449778078,"y":6797.310211837414},"targetPosition":{"x":19437.363347634422,"y":7720.266522290995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ 10 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance1Bounce10","id":"7763bf76-320a-46eb-b178-96d26ce2397a","savedPayload":{"position":{"x":19441.965056532805,"y":6551.386551332197},"targetPosition":{"x":19441.044714753127,"y":6785.162545523956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"b51a6189-7b10-413f-b7ac-774c1d3101b0","savedPayload":{"position":{"x":19441.044714753127,"y":6785.162545523956},"targetPosition":{"x":19437.363347634422,"y":7720.266522290995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ All","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance1BounceAll","id":"485706b2-81af-4cea-8073-be49adbfb553","savedPayload":{"position":{"x":19634.29361512863,"y":6568.08596700546},"targetPosition":{"x":19594.90756162979,"y":6798.522078062567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"696352b4-4de4-42a0-9262-cc44f98ad112","savedPayload":{"position":{"x":19594.90756162979,"y":6798.522078062567},"targetPosition":{"x":19437.363347634422,"y":7720.266522290995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 ZONE","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance2Bounce1","id":"5b9eb49c-20c0-4635-90b4-f67412864b48","savedPayload":{"position":{"x":19821.25042938611,"y":6616.213864716366},"targetPosition":{"x":19744.47301303577,"y":6837.024396231292},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"33f2c959-9c62-4372-b925-a4cb4caed593","savedPayload":{"position":{"x":19744.47301303577,"y":6837.024396231292},"targetPosition":{"x":19437.363347634422,"y":7720.266522290995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ 2 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance2Bounce2","id":"3e974257-e6e9-4b40-b1df-24c9ecc00ad1","savedPayload":{"position":{"x":19997.735804772332,"y":6694.45744087543},"targetPosition":{"x":19885.66131334475,"y":6899.6192571585425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"0b9de83a-dc2c-4031-a516-4410130e45e4","savedPayload":{"position":{"x":19885.66131334475,"y":6899.6192571585425},"targetPosition":{"x":19437.363347634422,"y":7720.266522290995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ 3 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance2Bounce3","id":"3c98c74a-5f60-4493-9c7d-398b6c84ce7d","savedPayload":{"position":{"x":20158.93568030981,"y":6800.682414690811},"targetPosition":{"x":20014.62121377473,"y":6984.599236210848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"e318ca5e-f179-42c4-a81e-d267697a9d4f","savedPayload":{"position":{"x":20014.62121377473,"y":6984.599236210848},"targetPosition":{"x":19437.363347634422,"y":7720.266522290995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ 5 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance2Bounce5","id":"79505072-1808-46e6-95be-3676d263ade3","savedPayload":{"position":{"x":20300.452943610584,"y":6931.991245784667},"targetPosition":{"x":20127.83502441535,"y":7089.6463010859325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"41586c08-f8d7-4786-8659-fdd065c250f1","savedPayload":{"position":{"x":20127.83502441535,"y":7089.6463010859325},"targetPosition":{"x":19437.363347634422,"y":7720.266522290995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ 10 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance2Bounce10","id":"506022c0-8f3e-48c2-a0b6-8f1dc42f31c1","savedPayload":{"position":{"x":20418.42737263979,"y":7084.802171541333},"targetPosition":{"x":20222.21456763872,"y":7211.895041691266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"4e44fa84-0ff5-414c-ba9c-37444ff4c34b","savedPayload":{"position":{"x":20222.21456763872,"y":7211.895041691266},"targetPosition":{"x":19437.363347634422,"y":7720.266522290995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ All","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance2BounceAll","id":"3267f58b-c446-4ca9-a0c1-614b28dd45da","savedPayload":{"position":{"x":20509.640932509894,"y":7254.946908254521},"targetPosition":{"x":20295.1854155348,"y":7348.010831061816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"1a91ff9b-6df8-4e5a-8369-f962e2cf0939","savedPayload":{"position":{"x":20295.1854155348,"y":7348.010831061816},"targetPosition":{"x":19437.363347634422,"y":7720.266522290995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 ZONE","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance3Bounce1","id":"b8fefe16-88c8-46c7-aff6-f1f6a82a2235","savedPayload":{"position":{"x":20571.60555508364,"y":7437.784351040919},"targetPosition":{"x":20344.757113593794,"y":7494.280785290935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"82c0551b-691c-4d7f-8380-9dcab27af775","savedPayload":{"position":{"x":20344.757113593794,"y":7494.280785290935},"targetPosition":{"x":19437.363347634422,"y":7720.266522290995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ 2 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance3Bounce2","id":"c750976a-b090-4018-98c4-5b435b20586c","savedPayload":{"position":{"x":20602.63100698693,"y":7628.327171082958},"targetPosition":{"x":20369.577475116428,"y":7646.715041324565},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"726070ae-bc63-4509-a421-164dfb43a1ec","savedPayload":{"position":{"x":20369.577475116428,"y":7646.715041324565},"targetPosition":{"x":19437.363347634422,"y":7720.266522290995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ 3 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance3Bounce3","id":"69d28461-7ed2-448f-a240-5bcbe67477d4","savedPayload":{"position":{"x":20601.870994769164,"y":7821.377856957953},"targetPosition":{"x":20368.969465342216,"y":7801.155590024561},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"07b0eac7-9674-4894-813b-6750063b7c77","savedPayload":{"position":{"x":20368.969465342216,"y":7801.155590024561},"targetPosition":{"x":19437.363347634422,"y":7720.266522290995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ 5 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance3Bounce5","id":"67145f61-12a8-4ebd-a4c3-4ea001b8d0e8","savedPayload":{"position":{"x":20569.34624958244,"y":8011.670489200807},"targetPosition":{"x":20342.949669192836,"y":7953.389695818845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"1a5e3bc0-ea93-49fd-a4e3-47734fd92d8a","savedPayload":{"position":{"x":20342.949669192836,"y":7953.389695818845},"targetPosition":{"x":19437.363347634422,"y":7720.266522290995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ 10 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance3Bounce10","id":"cd167fdb-412f-4319-b2e6-9f181d0d8255","savedPayload":{"position":{"x":20505.94396168976,"y":8194.01438085981},"targetPosition":{"x":20292.227838878694,"y":8099.264809146047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"6064d4e0-e627-4f14-8d25-9f7634703aa2","savedPayload":{"position":{"x":20292.227838878694,"y":8099.264809146047},"targetPosition":{"x":19437.363347634422,"y":7720.266522290995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ All","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance3BounceAll","id":"0b609743-af25-4879-af19-a29fe6b69c70","savedPayload":{"position":{"x":20413.39358022742,"y":8363.435665905554},"targetPosition":{"x":20218.18753370882,"y":8234.801837182642},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"04d4d459-e942-407a-9fdf-7a010a610e3a","savedPayload":{"position":{"x":20218.18753370882,"y":8234.801837182642},"targetPosition":{"x":19437.363347634422,"y":7720.266522290995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ae66154f-2772-495c-a77b-1989dba9a3e7","savedPayload":{"position":{"x":18081.45755510719,"y":7427.838520376798},"targetPosition":{"x":18873.263101784683,"y":8140.748951350776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Resistance Levels","code":"{ \n\"codeName\": \"Resistances Rates & Periods\"\n}","panelData":[{"type":"Panel Data","name":"Rate 1","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance1Rate","id":"bc06940a-6869-473e-9c2b-51e2c842595d","savedPayload":{"position":{"x":17335.723041599198,"y":6175.284810999524},"targetPosition":{"x":17998.999073258783,"y":6829.457152897663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6128b932-f039-4825-aff3-9b000b167e1b","savedPayload":{"position":{"x":17998.999073258783,"y":6829.457152897663},"targetPosition":{"x":18662.595217508966,"y":7483.386636005241},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 1","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance1Period","id":"c32e2d59-7d5b-49b7-b094-4d3cb9110cf0","savedPayload":{"position":{"x":17535.693619101938,"y":5999.503445686922},"targetPosition":{"x":18099.054315570545,"y":6741.477403952846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"99549259-ee7d-4cc2-9539-4e6fc71685fe","savedPayload":{"position":{"x":18099.054315570545,"y":6741.477403952846},"targetPosition":{"x":18662.595217508966,"y":7483.386636005241},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate 2","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance2Rate","id":"a6a4f0a8-8c28-4044-8a6c-5d4570b7e2d4","savedPayload":{"position":{"x":17758.481937880435,"y":5854.127382312489},"targetPosition":{"x":18210.479926020886,"y":6668.758086526503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fdb40161-0479-4dc2-8597-6a07de70a255","savedPayload":{"position":{"x":18210.479926020886,"y":6668.758086526503},"targetPosition":{"x":18662.595217508966,"y":7483.386636005241},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 2","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance2Period","id":"7db005db-700c-4b6c-8778-754f72c74872","savedPayload":{"position":{"x":17999.6442928503,"y":5741.974836334324},"targetPosition":{"x":18331.09610208,"y":6612.660901188134},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c2ae4875-3ec7-43a4-903d-3e60f9c44e97","savedPayload":{"position":{"x":18331.09610208,"y":6612.660901188134},"targetPosition":{"x":18662.595217508966,"y":7483.386636005241},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate 3","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance3Rate","id":"d845f56a-ff31-412a-8a32-0b579d044f09","savedPayload":{"position":{"x":18254.33393340599,"y":5665.291373850065},"targetPosition":{"x":18458.45238370234,"y":6574.3154060027955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"098554ac-043a-43c1-a87c-09bec4bbd3af","savedPayload":{"position":{"x":18458.45238370234,"y":6574.3154060027955},"targetPosition":{"x":18662.595217508966,"y":7483.386636005241},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 3","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance3Period","id":"92d8b4e1-da71-47b1-9501-e693f9e76290","savedPayload":{"position":{"x":18517.34224565951,"y":5625.653417344497},"targetPosition":{"x":18589.96585509182,"y":6554.493030570663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bb93a05d-7b62-4a48-9fbd-e6f47a8bd962","savedPayload":{"position":{"x":18589.96585509182,"y":6554.493030570663},"targetPosition":{"x":18662.595217508966,"y":7483.386636005241},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate 4","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance4Rate","id":"654cbecf-716f-4df3-a49a-816c0607ea25","savedPayload":{"position":{"x":18782.699577140414,"y":5623.858823174585},"targetPosition":{"x":18722.676521227902,"y":6553.596221053828},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dfb65955-2b62-485a-adc3-78dab8ed4602","savedPayload":{"position":{"x":18722.676521227902,"y":6553.596221053828},"targetPosition":{"x":18662.595217508966,"y":7483.386636005241},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 4","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance4Period","id":"32e7a536-bc8a-4e1d-b5ae-2f495604218e","savedPayload":{"position":{"x":19046.223125101227,"y":5659.94606440729},"targetPosition":{"x":18854.468026513,"y":6571.649157207252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c5d75ff9-cee7-4d53-ac2c-81c6f5ee5f28","savedPayload":{"position":{"x":18854.468026513,"y":6571.649157207252},"targetPosition":{"x":18662.595217508966,"y":7483.386636005241},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate 5","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance5Rate","id":"f4ba1f5e-7fc6-4afa-8cc9-7588c9dd63eb","savedPayload":{"position":{"x":19301.96395075801,"y":5733.1956601019565},"targetPosition":{"x":18982.37767004355,"y":6608.293933215714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"57a7830b-b73c-4332-81d2-8fd13a6f2666","savedPayload":{"position":{"x":18982.37767004355,"y":6608.293933215714},"targetPosition":{"x":18662.595217508966,"y":7483.386636005241},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 5","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance5Period","id":"aa5f5bdc-b7c9-4480-a31a-aecd9d050335","savedPayload":{"position":{"x":19544.868379001564,"y":5842.220870604229},"targetPosition":{"x":19103.92518468757,"y":6662.868622405967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"94b8ef36-ab61-481b-94e2-59c12afa224a","savedPayload":{"position":{"x":19103.92518468757,"y":6662.868622405967},"targetPosition":{"x":18662.595217508966,"y":7483.386636005241},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dfd9d091-e377-4ece-be8c-5916271e161b","savedPayload":{"position":{"x":18651.719497086717,"y":7098.34064246905},"targetPosition":{"x":18873.263101784683,"y":8140.748951350776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Resistance Zone Sizes","code":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Zone * 1","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone","id":"d6cb0538-10ab-4849-8966-1e5e4071140e","savedPayload":{"position":{"x":19718.49807453978,"y":9358.945765198176},"targetPosition":{"x":19602.699848769196,"y":9341.79592532228},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"65b668fb-93ae-465b-b8cd-4bb809d1133b","savedPayload":{"position":{"x":19602.699848769196,"y":9341.79592532228},"targetPosition":{"x":19141.395566004965,"y":9272.63546445842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Zone * 2","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone * 2","id":"0b1d7b11-e52c-4174-bdf1-7073e0ca3cdd","savedPayload":{"position":{"x":19597.742031626265,"y":9636.225853811518},"targetPosition":{"x":19506.14466557105,"y":9563.329165887024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"4c85c218-3b93-4066-9f5a-502c6185f65b","savedPayload":{"position":{"x":19506.14466557105,"y":9563.329165887024},"targetPosition":{"x":19141.395566004965,"y":9272.63546445842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Zone * 3","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone * 3","id":"a736e939-3c77-474a-811a-5415d69645d2","savedPayload":{"position":{"x":19354.584989270774,"y":9815.782536746792},"targetPosition":{"x":19311.808047130635,"y":9706.803892600432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"3207cf58-21a5-46a5-859b-09097ae163cc","savedPayload":{"position":{"x":19311.808047130635,"y":9706.803892600432},"targetPosition":{"x":19141.395566004965,"y":9272.63546445842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Zone * 5","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone * 5","id":"29bf1a3e-b2a3-4f4d-aa89-cb399a82b956","savedPayload":{"position":{"x":19054.88153952315,"y":9849.588159384519},"targetPosition":{"x":19072.088250343902,"y":9733.82895982176},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"4c83cdb9-4a58-455f-ac1a-f945a002d59d","savedPayload":{"position":{"x":19072.088250343902,"y":9733.82895982176},"targetPosition":{"x":19141.395566004965,"y":9272.63546445842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Zone * 10","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone * 10","id":"3d9c734f-8270-4a2e-9bc8-a2b44ba14c67","savedPayload":{"position":{"x":18777.869362677116,"y":9728.428149190495},"targetPosition":{"x":18850.667318883294,"y":9637.101537355678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"13dac5fd-938e-4c10-a9bc-3a81bfa60c4f","savedPayload":{"position":{"x":18850.667318883294,"y":9637.101537355678},"targetPosition":{"x":19141.395566004965,"y":9272.63546445842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5341a87b-52b4-455d-b8f6-d1cbc4102fb1","savedPayload":{"position":{"x":19306.578701191396,"y":7167.156833246412},"targetPosition":{"x":18873.263101784683,"y":8140.748951350776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"156b4fa7-7f8f-4464-8ddb-6eb6123bc5c3","savedPayload":{"position":{"x":18692.29659459581,"y":8272.029410282505},"targetPosition":{"x":19407.730527114614,"y":9066.662429926711},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Supports","code":"{ \n\"codeName\": \"Resistances-And-Supports\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"Base Support","points":[{"type":"Point","name":"Base Left","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin - (record.end - record.begin)\ny = record.rateSupport","id":"8bb830a6-b8f7-45c5-9f5e-b32b13680bff","savedPayload":{"position":{"x":15938.5962919798,"y":9754.269495927612},"targetPosition":{"x":16714.55981211138,"y":9238.150247992418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c3182836-3d36-45b4-8384-d4ecf78ebcc0","savedPayload":{"position":{"x":16714.55981211138,"y":9238.150247992418},"targetPosition":{"x":17490.56179336303,"y":8721.990327278863},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Base Right","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end- (record.end - record.begin)\ny = record.rateSupport","id":"a8ca9f48-585e-4f2d-adb4-e4909bdf4791","savedPayload":{"position":{"x":15630.261003075608,"y":8839.8219141382},"targetPosition":{"x":16560.37311390894,"y":8780.898728200049},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"beb7e536-5af8-4b52-8194-8053bf181c4a","savedPayload":{"position":{"x":16560.37311390894,"y":8780.898728200049},"targetPosition":{"x":17490.56179336303,"y":8721.990327278863},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f84691c4-7a7e-4dba-bd93-82443b0b1f22","savedPayload":{"position":{"x":20355.98420371339,"y":7442.384117479092},"targetPosition":{"x":21104.56436857462,"y":8203.271156113078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Support Levels","points":[{"type":"Point","name":"Begin 1","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support1Rate","id":"09444c80-7a46-4b7a-8c68-5e01e88e589d","savedPayload":{"position":{"x":17877.64823146595,"y":11863.959050313242},"targetPosition":{"x":17713.244567825896,"y":10945.68892165545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d621b89c-3082-47ed-836e-7a98d611df2b","savedPayload":{"position":{"x":17713.244567825896,"y":10945.68892165545},"targetPosition":{"x":17548.830662383767,"y":10027.31762208324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 1","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support1Rate","id":"67cb9789-cfe5-40e4-95c8-9b979a1fab14","savedPayload":{"position":{"x":17612.82630778884,"y":11892.07787555884},"targetPosition":{"x":17580.760826079168,"y":10959.743417696018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bed52b2e-acb6-4b21-90de-8fd08dcd5d34","savedPayload":{"position":{"x":17580.760826079168,"y":10959.743417696018},"targetPosition":{"x":17548.830662383767,"y":10027.31762208324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 2","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support2Rate","id":"03925809-b409-4894-bfda-530b1a0459d1","savedPayload":{"position":{"x":17310.824372189487,"y":11904.362050269005},"targetPosition":{"x":17447.908161490137,"y":10954.810240295961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"95e33e9a-7524-4efa-b431-7b4532cf947b","savedPayload":{"position":{"x":17447.908161490137,"y":10954.810240295961},"targetPosition":{"x":17548.830662383767,"y":10027.31762208324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 2","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support2Rate","id":"a62f6b4c-385c-478a-93c1-859aa0474043","savedPayload":{"position":{"x":17085.036176746707,"y":11834.556814748335},"targetPosition":{"x":17316.950189572344,"y":10930.994018107549},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"636187fb-4abe-4524-a3e2-c5930abb7b15","savedPayload":{"position":{"x":17316.950189572344,"y":10930.994018107549},"targetPosition":{"x":17548.830662383767,"y":10027.31762208324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 3","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support3Rate","id":"7212b514-8bde-4ae1-a992-fb4071aa8488","savedPayload":{"position":{"x":16832.681672179577,"y":11750.170633290905},"targetPosition":{"x":17190.785154662368,"y":10888.806771748714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"85f4f1ed-4b3d-4381-af30-a85e4bfd6dd7","savedPayload":{"position":{"x":17190.785154662368,"y":10888.806771748714},"targetPosition":{"x":17548.830662383767,"y":10027.31762208324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 3","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support3Rate","id":"a9fc5970-796f-4544-87ca-00348ed4046a","savedPayload":{"position":{"x":16595.305123690243,"y":11630.724534190058},"targetPosition":{"x":17072.35950441191,"y":10829.106219400657},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9fc5841d-ba9c-4ae6-a445-d609b0e947dd","savedPayload":{"position":{"x":17072.35950441191,"y":10829.106219400657},"targetPosition":{"x":17548.830662383767,"y":10027.31762208324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 4","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support4Rate","id":"118ccc56-a5b5-4920-a501-4189b994d311","savedPayload":{"position":{"x":16386.24886577441,"y":11435.907724782306},"targetPosition":{"x":16972.512204158404,"y":10710.383308939157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e69a3f5b-dcde-4d4a-8ac7-87616ebf68f3","savedPayload":{"position":{"x":16972.512204158404,"y":10710.383308939157},"targetPosition":{"x":17548.830662383767,"y":10027.31762208324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 4","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support4Rate","id":"ebba1443-0bea-488a-96eb-296a71982003","savedPayload":{"position":{"x":16181.236840738067,"y":11296.408277189032},"targetPosition":{"x":16864.82968579889,"y":10661.70178992078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1832f8f2-ac4a-4e1f-94ff-c29c18a350d7","savedPayload":{"position":{"x":16864.82968579889,"y":10661.70178992078},"targetPosition":{"x":17548.830662383767,"y":10027.31762208324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 5","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support5Rate","id":"423203ac-08c7-48d8-a842-2b604424d7fb","savedPayload":{"position":{"x":16014.657712299926,"y":11089.032104676055},"targetPosition":{"x":16781.624698093703,"y":10558.09851794081},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aa501f2a-8d27-40af-aaea-58bc7c5f42db","savedPayload":{"position":{"x":16781.624698093703,"y":10558.09851794081},"targetPosition":{"x":17548.830662383767,"y":10027.31762208324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 5","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support5Rate","id":"7e6b4f5d-ef8e-4dd6-bc79-4df9a7bed772","savedPayload":{"position":{"x":15879.095403351734,"y":10859.730611224684},"targetPosition":{"x":16713.837243977305,"y":10443.405568244374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6aa7f5e1-5987-4619-8ec7-39a424d7734a","savedPayload":{"position":{"x":16713.837243977305,"y":10443.405568244374},"targetPosition":{"x":17548.830662383767,"y":10027.31762208324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"97155ce8-2969-4d0a-8626-1205a45a0ada","savedPayload":{"position":{"x":20491.51480903422,"y":7329.4755353615},"targetPosition":{"x":21104.56436857462,"y":8203.271156113078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Support Zone 1","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support1Rate - record.support1Rate * record.supportResistanceZone / 2 / 100","id":"37e59f5d-ac15-478b-8d47-f834a01baa5b","savedPayload":{"position":{"x":16283.48606569165,"y":8677.201707063865},"targetPosition":{"x":16511.680753819805,"y":8625.927762189458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"99a2940d-3e17-43dc-82ae-6bfd948adaf5","savedPayload":{"position":{"x":16511.680753819805,"y":8625.927762189458},"targetPosition":{"x":16967.395026359696,"y":8523.441846629805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support1Rate - record.support1Rate * record.supportResistanceZone / 2 / 100","id":"79ea9f9a-e251-47d9-ac57-a549e0e31dd5","savedPayload":{"position":{"x":16269.244492204147,"y":8458.413310784734},"targetPosition":{"x":16502.11962915755,"y":8480.093391385322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fbd722bf-0f89-46e6-9933-2ce46f906efa","savedPayload":{"position":{"x":16502.11962915755,"y":8480.093391385322},"targetPosition":{"x":16967.395026359696,"y":8523.441846629805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support1Rate + record.support1Rate * record.supportResistanceZone / 2 / 100","id":"14e3bbb5-81e4-4016-866f-6b7bd9772d27","savedPayload":{"position":{"x":16323.606959554349,"y":8245.734310168038},"targetPosition":{"x":16538.452805252273,"y":8338.389609424332},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c112aca0-14de-4cc3-9e05-20b28aed8dd2","savedPayload":{"position":{"x":16538.452805252273,"y":8338.389609424332},"targetPosition":{"x":16967.395026359696,"y":8523.441846629805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support1Rate + record.support1Rate * record.supportResistanceZone / 2 / 100","id":"90cb47a2-5e59-4c6b-b160-0c9df8ba924d","savedPayload":{"position":{"x":16441.06851204407,"y":8060.15165593962},"targetPosition":{"x":16616.685265215514,"y":8214.733346772258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"bef0f6c3-3a0d-4c72-a2df-7714001aeb59","savedPayload":{"position":{"x":16616.685265215514,"y":8214.733346772258},"targetPosition":{"x":16967.395026359696,"y":8523.441846629805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"70ec5d22-e80f-4a61-b20e-ed94be657d01","savedPayload":{"position":{"x":20643.726964280042,"y":7240.461372014666},"targetPosition":{"x":21104.56436857462,"y":8203.271156113078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Support Zone 2","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support2Rate - record.support2Rate * record.supportResistanceZone / 2 / 100","id":"2a58f164-97fc-4550-b028-d35ef0900bcc","savedPayload":{"position":{"x":16170.248533959504,"y":8379.319717452985},"targetPosition":{"x":16401.933944422617,"y":8347.630696202363},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c3c04eac-b594-45bd-9306-c615bdf6f960","savedPayload":{"position":{"x":16401.933944422617,"y":8347.630696202363},"targetPosition":{"x":16864.717493298376,"y":8284.2432382786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support2Rate - record.support2Rate * record.supportResistanceZone / 2 / 100","id":"f77871dc-1447-4dc9-8c31-ea23dbd0a485","savedPayload":{"position":{"x":16174.828046900278,"y":8160.117203803209},"targetPosition":{"x":16404.976703349606,"y":8201.500134078076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"afd0cabf-291e-464f-82f9-5a17f55afd09","savedPayload":{"position":{"x":16404.976703349606,"y":8201.500134078076},"targetPosition":{"x":16864.717493298376,"y":8284.2432382786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support2Rate + record.support2Rate * record.supportResistanceZone / 2 / 100","id":"ec1b5181-9ba5-43b5-8ece-8f4c21ef4202","savedPayload":{"position":{"x":16247.036049023198,"y":7952.854141293462},"targetPosition":{"x":16453.142479506725,"y":8063.40544658873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cdd44658-8050-41fa-8a8f-82677b9a149b","savedPayload":{"position":{"x":16453.142479506725,"y":8063.40544658873},"targetPosition":{"x":16864.717493298376,"y":8284.2432382786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support2Rate + record.support2Rate * record.supportResistanceZone / 2 / 100","id":"ed068681-8ff2-4d6b-a448-b23473de9729","savedPayload":{"position":{"x":16379.853418054645,"y":7777.969979307222},"targetPosition":{"x":16541.60701077995,"y":7946.8509739347155},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"827e511d-aebc-49a2-86de-8869ef2a11b5","savedPayload":{"position":{"x":16541.60701077995,"y":7946.8509739347155},"targetPosition":{"x":16864.717493298376,"y":8284.2432382786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a339b25e-ffc5-4c3c-84d3-f27b72414868","savedPayload":{"position":{"x":20808.502529115965,"y":7177.722181238446},"targetPosition":{"x":21104.56436857462,"y":8203.271156113078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Support Zone 3","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support3Rate - record.support3Rate * record.supportResistanceZone / 2 / 100","id":"eacddf75-c7b4-47a1-a099-68e8fcc7f84d","savedPayload":{"position":{"x":16818.9100951144,"y":8079.669226858931},"targetPosition":{"x":17052.51841969196,"y":8067.800327659757},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"765f38a2-4cba-49fd-8c86-dd51c8e215db","savedPayload":{"position":{"x":17052.51841969196,"y":8067.800327659757},"targetPosition":{"x":17519.074958407793,"y":8043.964436811509},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support3Rate - record.support3Rate * record.supportResistanceZone / 2 / 100","id":"0bff84b6-e263-4c4b-ae96-a7ef1ef6bd3c","savedPayload":{"position":{"x":16842.132886012616,"y":7861.688560374933},"targetPosition":{"x":17068.02981843525,"y":7922.484220917131},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"615e7f76-5ca1-4d42-84f6-0129a2eea01c","savedPayload":{"position":{"x":17068.02981843525,"y":7922.484220917131},"targetPosition":{"x":17519.074958407793,"y":8043.964436811509},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support3Rate + record.support3Rate * record.supportResistanceZone / 2 / 100","id":"6d7cb8d5-bcc9-4a40-adbc-84f31327e14d","savedPayload":{"position":{"x":16931.742033239614,"y":7661.279239365829},"targetPosition":{"x":17127.74070877869,"y":7788.964935107412},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cf270516-0d12-45be-834a-c0024b840b3c","savedPayload":{"position":{"x":17127.74070877869,"y":7788.964935107412},"targetPosition":{"x":17519.074958407793,"y":8043.964436811509},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support3Rate + record.support3Rate * record.supportResistanceZone / 2 / 100","id":"958558ab-3e1b-40b1-bebe-0a7ef60ab54d","savedPayload":{"position":{"x":17078.953158380267,"y":7498.308251469879},"targetPosition":{"x":17225.794446481083,"y":7680.356799197591},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"dd6e16bd-9458-47f8-bce8-856baa66a2d3","savedPayload":{"position":{"x":17225.794446481083,"y":7680.356799197591},"targetPosition":{"x":17519.074958407793,"y":8043.964436811509},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"84a9a192-bc61-4080-855b-9cc491fd71fe","savedPayload":{"position":{"x":20981.349508612646,"y":7142.96129301838},"targetPosition":{"x":21104.56436857462,"y":8203.271156113078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Support Zone 4","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support4Rate - record.support4Rate * record.supportResistanceZone / 2 / 100","id":"97800a02-901d-46ef-9174-b40d1fbeb396","savedPayload":{"position":{"x":17425.97657072948,"y":7146.580696876396},"targetPosition":{"x":17610.361593789283,"y":7290.450535078365},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8a3f2434-8ab8-44aa-931f-f0aa0bed6310","savedPayload":{"position":{"x":17610.361593789283,"y":7290.450535078365},"targetPosition":{"x":17978.509255117806,"y":7577.85108471864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support4Rate - record.support4Rate * record.supportResistanceZone / 2 / 100","id":"bcf5f895-aee0-4e65-b4d6-291f37c6708f","savedPayload":{"position":{"x":17586.60364328212,"y":6996.7361325186},"targetPosition":{"x":17717.421280205133,"y":7190.652605027137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"13dd9d54-d74f-4863-9e86-88b79c9ebe2b","savedPayload":{"position":{"x":17717.421280205133,"y":7190.652605027137},"targetPosition":{"x":17978.509255117806,"y":7577.85108471864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support4Rate + record.support4Rate * record.supportResistanceZone / 2 / 100","id":"25dce519-15a1-4420-a05b-49257bfb8995","savedPayload":{"position":{"x":17785.55798436182,"y":6904.182332844235},"targetPosition":{"x":17849.974812086795,"y":7129.064136378203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6ae4a3ec-2a81-4bae-ae75-3ced2c5cd1cd","savedPayload":{"position":{"x":17849.974812086795,"y":7129.064136378203},"targetPosition":{"x":17978.509255117806,"y":7577.85108471864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support4Rate + record.support4Rate * record.supportResistanceZone / 2 / 100","id":"11d60ea2-9963-46dc-a7c1-953cf8e06e4a","savedPayload":{"position":{"x":18002.930025558097,"y":6877.194775811291},"targetPosition":{"x":17994.83368300962,"y":7110.981798340842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"73ecbfa9-1e21-4c80-8f17-6eff316dc2d5","savedPayload":{"position":{"x":17994.83368300962,"y":7110.981798340842},"targetPosition":{"x":17978.509255117806,"y":7577.85108471864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e1efc35b-b8ca-4abb-bfcc-2b18747ad690","savedPayload":{"position":{"x":21157.347430194786,"y":7137.121676231144},"targetPosition":{"x":21104.56436857462,"y":8203.271156113078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Support Zone 5","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support5Rate - record.support5Rate * record.supportResistanceZone / 2 / 100","id":"3a397c6e-4bcc-464b-8dda-084c9083d8ac","savedPayload":{"position":{"x":17489.208798180534,"y":7100.174371357193},"targetPosition":{"x":17665.555446105544,"y":7253.834724110871},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f1da5793-706f-4884-af96-51be961434e8","savedPayload":{"position":{"x":17665.555446105544,"y":7253.834724110871},"targetPosition":{"x":18017.50932142491,"y":7560.668130851575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support5Rate - record.support5Rate * record.supportResistanceZone / 2 / 100","id":"bb8bdab3-a9c1-4288-aa35-3836872c0879","savedPayload":{"position":{"x":17657.74701974388,"y":6959.262975733615},"targetPosition":{"x":17777.875857193227,"y":7160.0208059161705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ca37a88a-7a07-40c8-99ac-f8b8ff2d5d4d","savedPayload":{"position":{"x":17777.875857193227,"y":7160.0208059161705},"targetPosition":{"x":18017.50932142491,"y":7560.668130851575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support5Rate + record.support5Rate * record.supportResistanceZone / 2 / 100","id":"3331746d-bc53-41a4-990f-5eb061c90f71","savedPayload":{"position":{"x":17861.29639263965,"y":6877.386377797457},"targetPosition":{"x":17913.42499380963,"y":7105.488842474666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e1833970-01d0-4715-ad2d-9e717510fd30","savedPayload":{"position":{"x":17913.42499380963,"y":7105.488842474666},"targetPosition":{"x":18017.50932142491,"y":7560.668130851575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support5Rate + record.support5Rate * record.supportResistanceZone / 2 / 100","id":"39bc39ce-251f-4b18-8979-503e0ff9ccf2","savedPayload":{"position":{"x":18079.888068948327,"y":6862.323399824941},"targetPosition":{"x":18059.132567477263,"y":7095.367922023015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"15092839-5205-4e95-b729-0ed82fcfe928","savedPayload":{"position":{"x":18059.132567477263,"y":7095.367922023015},"targetPosition":{"x":18017.50932142491,"y":7560.668130851575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fc8b9272-d199-4b95-b168-a8da25c5b86b","savedPayload":{"position":{"x":21332.03327608496,"y":7160.341756796958},"targetPosition":{"x":21104.56436857462,"y":8203.271156113078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Support Line 1","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support1Rate > 0","id":"e5678d95-7929-42d1-8eb2-ba51b0572876","savedPayload":{"position":{"x":16858.74763657258,"y":8995.764311770117},"targetPosition":{"x":17474.889609066642,"y":9129.139735855786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"1b1df2b6-4914-4feb-a4f7-c8f512b9782d","savedPayload":{"position":{"x":16299.506150532008,"y":8672.901353561212},"targetPosition":{"x":16887.197879799325,"y":8901.020544708499},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"c7501b66-ee83-48ae-8985-758803465027","savedPayload":{"position":{"x":16887.197879799325,"y":8901.020544708499},"targetPosition":{"x":17474.889609066642,"y":9129.139735855786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 1","id":"7df5f6a2-5785-4f8d-a580-1b389606d6e9","savedPayload":{"position":{"x":16930.119043837654,"y":8811.893829217115},"targetPosition":{"x":17474.889609066642,"y":9129.139735855786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 1","id":"d621b89c-3082-47ed-836e-7a98d611df2b"}}},{"type":"Polygon Vertex","name":"End 1","id":"78cc5e46-abcc-4801-9115-a66e8ac81704","savedPayload":{"position":{"x":16986.454267181773,"y":8730.578760825978},"targetPosition":{"x":17474.889609066642,"y":9129.139735855786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 1","id":"bed52b2e-acb6-4b21-90de-8fd08dcd5d34"}}}],"id":"8baf5a5e-fde5-4405-aea2-035bfa3872c1","savedPayload":{"position":{"x":21501.169359256477,"y":7210.615290886127},"targetPosition":{"x":21104.56436857462,"y":8203.271156113078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Line 2","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support2Rate > 0","id":"0ae326f3-874b-47bb-9064-2e04fa2e38eb","savedPayload":{"position":{"x":16932.64492748968,"y":8823.827542751516},"targetPosition":{"x":17522.026527765025,"y":9047.544469415046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.TURQUOISE\"\n }\n}","id":"b09aa70a-6823-45fb-aa40-9ebf5df20f73","savedPayload":{"position":{"x":16427.76993374461,"y":8421.220078609096},"targetPosition":{"x":16974.898230754818,"y":8734.38227401207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"87204e2e-e562-426d-aed8-5ead73ef48f7","savedPayload":{"position":{"x":16974.898230754818,"y":8734.38227401207},"targetPosition":{"x":17522.026527765025,"y":9047.544469415046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 2","id":"787fc2c9-a2c4-447e-b7ab-fa46c78b9653","savedPayload":{"position":{"x":17030.62364850706,"y":8652.648097849187},"targetPosition":{"x":17522.026527765025,"y":9047.544469415046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 2","id":"95e33e9a-7524-4efa-b431-7b4532cf947b"}}},{"type":"Polygon Vertex","name":"End 2","id":"3e493a72-7315-4688-93f2-54973cdba641","savedPayload":{"position":{"x":17098.449036019283,"y":8580.637580940172},"targetPosition":{"x":17522.026527765025,"y":9047.544469415046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 2","id":"636187fb-4abe-4524-a3e2-c5930abb7b15"}}}],"id":"baca2e09-2b91-4b8b-9176-e758bfcb4258","savedPayload":{"position":{"x":21659.24571588201,"y":7289.494700611041},"targetPosition":{"x":21104.56436857462,"y":8203.271156113078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Line 3","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support3Rate > 0","id":"07949760-a5fe-4a9c-a3e7-85628f7703ad","savedPayload":{"position":{"x":17031.292645756595,"y":8664.827048041736},"targetPosition":{"x":17580.748062786854,"y":8973.88801082256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n }\n}","id":"25eef631-4528-4acd-b69c-26a6d97436fb","savedPayload":{"position":{"x":16592.06221738648,"y":8191.468663425933},"targetPosition":{"x":17086.405140086667,"y":8582.678337124245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"66ae3554-cec4-4591-a346-32f09e0212ab","savedPayload":{"position":{"x":17086.405140086667,"y":8582.678337124245},"targetPosition":{"x":17580.748062786854,"y":8973.88801082256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 3","id":"b5b6232d-dde2-49f8-854d-722a4cbf9f01","savedPayload":{"position":{"x":17153.689997803715,"y":8510.16250672368},"targetPosition":{"x":17580.748062786854,"y":8973.88801082256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 3","id":"85f4f1ed-4b3d-4381-af30-a85e4bfd6dd7"}}},{"type":"Polygon Vertex","name":"End 3","id":"0ff2207e-8476-4417-acb7-e799b37e48ee","savedPayload":{"position":{"x":17231.490442405106,"y":8449.06513725074},"targetPosition":{"x":17580.748062786854,"y":8973.88801082256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 3","id":"9fc5841d-ba9c-4ae6-a445-d609b0e947dd"}}}],"id":"fbe179c2-99ac-44f0-952c-c9ebb205b252","savedPayload":{"position":{"x":21802.118398276212,"y":7393.286465405892},"targetPosition":{"x":21104.56436857462,"y":8203.271156113078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Line 4","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support4Rate > 0","id":"38995b73-26f1-4211-81b1-4bc4500c9715","savedPayload":{"position":{"x":17152.584644409864,"y":8522.28762554197},"targetPosition":{"x":17649.83995212632,"y":8909.788713239432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n }\n}","id":"0e256852-2fcc-44db-b917-47ac825583c9","savedPayload":{"position":{"x":16788.810463378053,"y":7988.752364563922},"targetPosition":{"x":17219.325207752187,"y":8449.270538901677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"8dcde804-7625-49ec-95ea-938eaf512aa6","savedPayload":{"position":{"x":17219.325207752187,"y":8449.270538901677},"targetPosition":{"x":17649.83995212632,"y":8909.788713239432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 4","id":"f0498624-74bb-4833-8113-f5570e7078f8","savedPayload":{"position":{"x":17296.666472897523,"y":8387.592938085772},"targetPosition":{"x":17649.83995212632,"y":8909.788713239432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 4","id":"e69a3f5b-dcde-4d4a-8ac7-87616ebf68f3"}}},{"type":"Polygon Vertex","name":"End 4","id":"1f0b03df-f4f7-4a58-80c5-6690c44859fb","savedPayload":{"position":{"x":17382.70404121705,"y":8338.773530322569},"targetPosition":{"x":17649.83995212632,"y":8909.788713239432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 4","id":"1832f8f2-ac4a-4e1f-94ff-c29c18a350d7"}}}],"id":"764238be-83c1-4523-a7a8-8f8245651b61","savedPayload":{"position":{"x":21925.946904454642,"y":7519.172893929452},"targetPosition":{"x":21104.56436857462,"y":8203.271156113078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Line 5","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support5Rate > 0","id":"d6c0fe91-6372-42e7-b594-2effc21b9086","savedPayload":{"position":{"x":17293.735217418216,"y":8399.421060643428},"targetPosition":{"x":17727.68255393615,"y":8856.706139284635},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"7d618b16-acc1-481e-a9a1-a5fe7702098b","savedPayload":{"position":{"x":17013.543397810226,"y":7817.627219392902},"targetPosition":{"x":17370.612975873188,"y":8337.166679338769},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"1ed4cfc8-ac56-40de-9fc0-038c38385637","savedPayload":{"position":{"x":17370.612975873188,"y":8337.166679338769},"targetPosition":{"x":17727.68255393615,"y":8856.706139284635},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 5","id":"841fe68b-d131-4a9e-8968-0fdd36967327","savedPayload":{"position":{"x":17456.28297238606,"y":8287.705083790588},"targetPosition":{"x":17727.68255393615,"y":8856.706139284635},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 5","id":"aa501f2a-8d27-40af-aaea-58bc7c5f42db"}}},{"type":"Polygon Vertex","name":"End 5","id":"212c5989-a35a-42a2-b0e5-2427d138c950","savedPayload":{"position":{"x":17548.635727320267,"y":8252.254182634908},"targetPosition":{"x":17727.68255393615,"y":8856.706139284635},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 5","id":"6aa7f5e1-5987-4619-8ec7-39a424d7734a"}}}],"id":"96977063-3da0-4745-9c71-782818e4a157","savedPayload":{"position":{"x":22027.362046946335,"y":7663.722163291765},"targetPosition":{"x":21104.56436857462,"y":8203.271156113078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Base","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.typeSupport=== 'Support'","id":"056d896f-1067-4317-92af-3d201055435d","savedPayload":{"position":{"x":18472.48787049243,"y":6612.235207897545},"targetPosition":{"x":18640.873165979763,"y":7528.684987193446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0,\n \"paletteColor\": \"UI_COLOR.DARK\"\n }\n}","id":"068045f8-ddda-41c1-92b4-2d42f9e9608d","savedPayload":{"position":{"x":18764.89395415306,"y":5673.522829002918},"targetPosition":{"x":18763.775944990906,"y":6605.048733924992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.typeSupport=== 'Support'","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.DARK\",\n \"opacity\": 0.5\n}","id":"05143777-f193-4148-95f6-ea719e452836","savedPayload":{"position":{"x":19248.432007830506,"y":4806.2808052943865},"targetPosition":{"x":19006.151015922416,"y":5705.637469842384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"73181d20-e10c-44c4-b54c-2504b7474582","savedPayload":{"position":{"x":19006.151015922416,"y":5705.637469842384},"targetPosition":{"x":18763.775944990906,"y":6605.048733924992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"40d55683-c8d8-407f-9fe3-f13a713fc79d","savedPayload":{"position":{"x":18763.775944990906,"y":6605.048733924992},"targetPosition":{"x":18640.873165979763,"y":7528.684987193446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Flag Base Left","id":"362ecc6e-b0b5-456d-b727-f97b1bd60f5e","savedPayload":{"position":{"x":19043.273304164737,"y":6688.368325933289},"targetPosition":{"x":18640.873165979763,"y":7528.684987193446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Base Left","id":"c3182836-3d36-45b4-8384-d4ecf78ebcc0"}}},{"type":"Polygon Vertex","name":"Flag Base Right","id":"63d2fd83-f7a5-4267-a416-7a5ff9e163fc","savedPayload":{"position":{"x":19283.25521865058,"y":6853.926505035614},"targetPosition":{"x":18640.873165979763,"y":7528.684987193446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Base Right","id":"beb7e536-5af8-4b52-8194-8053bf181c4a"}}}],"id":"b4567b9b-e1e1-463b-bf64-ab3e25bcbced","savedPayload":{"position":{"x":22103.599802311037,"y":7822.992169041446},"targetPosition":{"x":21104.56436857462,"y":8203.271156113078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Zone 1","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support1Bounce1 > 0","id":"b5bd335d-555f-4cf5-a870-84130fccdf43","savedPayload":{"position":{"x":22924.714273867936,"y":7258.773896918339},"targetPosition":{"x":22151.87448630756,"y":7992.83405340194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"56f2b454-13f9-44ac-9714-9169421c3ab5","savedPayload":{"position":{"x":23799.114182441604,"y":6672.9986779303545},"targetPosition":{"x":23068.882458553264,"y":7449.43330651644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.support1Bounce1 > 1","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"bf1ec91e-798c-4f93-bfb3-d89c15f94b3e","savedPayload":{"position":{"x":24694.5475818936,"y":6070.493815560231},"targetPosition":{"x":23881.699431784677,"y":6759.9015904034695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"369f0304-059f-4776-b557-4bd973c8ebed","savedPayload":{"position":{"x":23881.699431784677,"y":6759.9015904034695},"targetPosition":{"x":23068.882458553264,"y":7449.43330651644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support1Bounce1 > 2","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"0245085a-a486-4195-ba1b-259323a5e8a5","savedPayload":{"position":{"x":24838.877676466065,"y":6261.400165822369},"targetPosition":{"x":23953.886025436397,"y":6855.37892331405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3014da4a-245e-47bb-b1c4-690199dae1de","savedPayload":{"position":{"x":23953.886025436397,"y":6855.37892331405},"targetPosition":{"x":23068.882458553264,"y":7449.43330651644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support1Bounce1 > 3","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"43cecedf-d860-49a4-96fe-9df0d1ddf168","savedPayload":{"position":{"x":24960.86598091362,"y":6467.218726021769},"targetPosition":{"x":24014.905073822094,"y":6958.331343231964},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ec472c0f-1f89-4700-8727-ef9439a38cea","savedPayload":{"position":{"x":24014.905073822094,"y":6958.331343231964},"targetPosition":{"x":23068.882458553264,"y":7449.43330651644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support1Bounce1 > 4","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"f4a644bc-9041-4f3a-9a8e-9e028d229848","savedPayload":{"position":{"x":25059.031281853244,"y":6685.424245430194},"targetPosition":{"x":24064.011718833797,"y":7067.499134368794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"787cc836-17ba-4215-9fee-bb95a8faaae7","savedPayload":{"position":{"x":24064.011718833797,"y":7067.499134368794},"targetPosition":{"x":23068.882458553264,"y":7449.43330651644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support1Bounce1 > 5","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"f9a74516-d1e2-4856-9a22-4478cdca1820","savedPayload":{"position":{"x":25132.214144421796,"y":6913.5690493987395},"targetPosition":{"x":24100.627184897185,"y":7181.690361337744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"26987001-a080-4d7c-86d2-d7962d00f6d1","savedPayload":{"position":{"x":24100.627184897185,"y":7181.690361337744},"targetPosition":{"x":23068.882458553264,"y":7449.43330651644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f57c1875-5b81-4ad3-a305-10c63f3f1c58","savedPayload":{"position":{"x":23068.882458553264,"y":7449.43330651644},"targetPosition":{"x":22151.87448630756,"y":7992.83405340194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"ba9a2688-0072-44cc-8a9a-968ecfaf7bf3","savedPayload":{"position":{"x":23166.864212199947,"y":7667.3101384410475},"targetPosition":{"x":22151.87448630756,"y":7992.83405340194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"99a2940d-3e17-43dc-82ae-6bfd948adaf5"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"4f693d5f-4a81-4dd4-b408-a9b01aa92b16","savedPayload":{"position":{"x":23213.896323354995,"y":7901.31565375355},"targetPosition":{"x":22151.87448630756,"y":7992.83405340194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"fbd722bf-0f89-46e6-9933-2ce46f906efa"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"4daa243a-7b3c-438d-b721-34db4423fe57","savedPayload":{"position":{"x":23207.67265305872,"y":8139.62307038106},"targetPosition":{"x":22151.87448630756,"y":7992.83405340194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"bef0f6c3-3a0d-4c72-a2df-7714001aeb59"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"76f18b23-1e2e-4234-995e-0af0e8b0ea33","savedPayload":{"position":{"x":23148.487560227608,"y":8370.94763625106},"targetPosition":{"x":22151.87448630756,"y":7992.83405340194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"c112aca0-14de-4cc3-9e05-20b28aed8dd2"}}}],"id":"d4705ff6-d94b-4f94-8fd0-9215cf9844ad","savedPayload":{"position":{"x":22152.58118233985,"y":7992.639239005851},"targetPosition":{"x":21104.56436857462,"y":8203.271156113078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Zone 2","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support2Bounce1 > 0","id":"6c4c67af-9468-47f7-b51a-b79b93a2d251","savedPayload":{"position":{"x":23055.493353765487,"y":7571.469416884136},"targetPosition":{"x":22172.60512554086,"y":8168.131947707536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"a50dcbd3-d699-44cf-a9f2-58d88a7ee84b","savedPayload":{"position":{"x":24014.092177338232,"y":7137.696544195593},"targetPosition":{"x":23166.265710144602,"y":7783.170578041277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.support2Bounce1 > 1","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"e1af646c-9718-461e-9b49-565c1c972f1e","savedPayload":{"position":{"x":24996.230076622996,"y":6690.955157298582},"targetPosition":{"x":24081.236461651173,"y":7236.993390788462},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"110cf71c-ed22-41e1-8ad6-a1bf36d645ed","savedPayload":{"position":{"x":24081.236461651173,"y":7236.993390788462},"targetPosition":{"x":23166.265710144602,"y":7783.170578041277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support2Bounce1 > 2","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"1058548a-13b4-4a58-9b33-d0aebfd91caa","savedPayload":{"position":{"x":25107.1350163858,"y":6902.967212998556},"targetPosition":{"x":24136.70939372379,"y":7343.02626279306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"52bd90e4-a17b-4890-b825-0b52f27b2c4d","savedPayload":{"position":{"x":24136.70939372379,"y":7343.02626279306},"targetPosition":{"x":23166.265710144602,"y":7783.170578041277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support2Bounce1 > 3","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"a8f6da8e-f165-4a12-983f-ef8a97327020","savedPayload":{"position":{"x":25193.5680353335,"y":7126.009075395291},"targetPosition":{"x":24179.94814417252,"y":7454.599287859351},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"47385aa9-0c34-4751-95bb-21858278cb38","savedPayload":{"position":{"x":24179.94814417252,"y":7454.599287859351},"targetPosition":{"x":23166.265710144602,"y":7783.170578041277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support2Bounce1 > 4","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"d9af1bcb-8bc7-4769-a529-9838c89427fa","savedPayload":{"position":{"x":25254.47383258446,"y":7357.335346005539},"targetPosition":{"x":24210.412958411867,"y":7570.339563039416},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ded9c2c3-27b0-482f-a30f-950ef8749323","savedPayload":{"position":{"x":24210.412958411867,"y":7570.339563039416},"targetPosition":{"x":23166.265710144602,"y":7783.170578041277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support2Bounce1 > 5","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"a0d2dd1f-91ef-4687-98a0-a5a01e852281","savedPayload":{"position":{"x":25289.094954628217,"y":7594.420035173941},"targetPosition":{"x":24227.7301856769,"y":7688.997706894176},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a9acf6d3-26d8-431e-bbba-4f6420852018","savedPayload":{"position":{"x":24227.7301856769,"y":7688.997706894176},"targetPosition":{"x":23166.265710144602,"y":7783.170578041277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8708e97c-7c5f-45c3-bb04-4cdb69f35d2a","savedPayload":{"position":{"x":23166.265710144602,"y":7783.170578041277},"targetPosition":{"x":22172.60512554086,"y":8168.131947707536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"4a490153-7666-425a-94db-a3407072e08d","savedPayload":{"position":{"x":23227.06008121665,"y":8014.194616255191},"targetPosition":{"x":22172.60512554086,"y":8168.131947707536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"c3c04eac-b594-45bd-9306-c615bdf6f960"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"bb165791-a19f-42c9-99fd-f55009e98305","savedPayload":{"position":{"x":23234.925218853125,"y":8252.368369854023},"targetPosition":{"x":22172.60512554086,"y":8168.131947707536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"afd0cabf-291e-464f-82f9-5a17f55afd09"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"ec5ae905-f05e-4f65-b5a2-8423bd220ec3","savedPayload":{"position":{"x":23189.5253382324,"y":8486.631379246857},"targetPosition":{"x":22172.60512554086,"y":8168.131947707536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"827e511d-aebc-49a2-86de-8869ef2a11b5"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"558801bf-b8f7-4caa-93c2-312ae077baff","savedPayload":{"position":{"x":23093.09461218946,"y":8705.002848474334},"targetPosition":{"x":22172.60512554086,"y":8168.131947707536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"cdd44658-8050-41fa-8a8f-82677b9a149b"}}}],"id":"40c0fced-4d4b-476f-becb-4201ccb21c2f","savedPayload":{"position":{"x":22172.969675744233,"y":8168.037162796453},"targetPosition":{"x":21104.56436857462,"y":8203.271156113078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Zone 3","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support3Bounce1 > 0","id":"677b5709-c562-4782-b8db-e5301a57aeab","savedPayload":{"position":{"x":23133.408040884544,"y":7900.31244885998},"targetPosition":{"x":22164.310243425498,"y":8343.497936621716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"d915645d-778e-46cd-be7c-9205cde4a151","savedPayload":{"position":{"x":24150.37317033378,"y":7630.283352000781},"targetPosition":{"x":23207.81956383266,"y":8127.379469706598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.support3Bounce1 > 1","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"88e66929-008b-44f9-8836-1555529a886c","savedPayload":{"position":{"x":25192.697639870723,"y":7351.330400774276},"targetPosition":{"x":24200.260814714897,"y":7739.286021567682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8024c736-7b70-4f68-9cd7-d8f250cc5da0","savedPayload":{"position":{"x":24200.260814714897,"y":7739.286021567682},"targetPosition":{"x":23207.81956383266,"y":8127.379469706598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support3Bounce1 > 2","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"dfc32a91-65d3-4e33-8120-e88b82c065ed","savedPayload":{"position":{"x":25267.205353794227,"y":7578.7094648768725},"targetPosition":{"x":24237.527871570597,"y":7853.005654765714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1cb52d9c-92a1-4ea3-8925-1addc66bc0db","savedPayload":{"position":{"x":24237.527871570597,"y":7853.005654765714},"targetPosition":{"x":23207.81956383266,"y":8127.379469706598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support3Bounce1 > 3","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"a5f79b1b-8f2e-4796-b074-08d4266f66ef","savedPayload":{"position":{"x":25315.74456371268,"y":7812.937063977015},"targetPosition":{"x":24261.807935150115,"y":7970.172386317125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"45e75d66-4aac-484c-942a-f8318f6e9179","savedPayload":{"position":{"x":24261.807935150115,"y":7970.172386317125},"targetPosition":{"x":23207.81956383266,"y":8127.379469706598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support3Bounce1 > 4","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"d1ec8f71-dd0c-4de4-b253-d9f80019a5dc","savedPayload":{"position":{"x":25337.73280532453,"y":8051.132077330652},"targetPosition":{"x":24272.805016558257,"y":8089.350470986737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"25eb0205-21fc-4b8f-9dfd-06521be651e3","savedPayload":{"position":{"x":24272.805016558257,"y":8089.350470986737},"targetPosition":{"x":23207.81956383266,"y":8127.379469706598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support3Bounce1 > 5","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"9139ee33-0888-47ca-8409-3dab12aeb215","savedPayload":{"position":{"x":25332.86480543081,"y":8290.052366870454},"targetPosition":{"x":24270.35389920843,"y":8208.927037193229},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a9cb240b-9c72-4f63-97cb-e96c9de9056e","savedPayload":{"position":{"x":24270.35389920843,"y":8208.927037193229},"targetPosition":{"x":23207.81956383266,"y":8127.379469706598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b8a6b5be-21fa-4e43-a687-d20a2149cb2f","savedPayload":{"position":{"x":23207.81956383266,"y":8127.379469706598},"targetPosition":{"x":22164.310243425498,"y":8343.497936621716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"d2da5bdd-6b2e-4284-af0f-1caaec186399","savedPayload":{"position":{"x":23229.766897303205,"y":8364.93651464545},"targetPosition":{"x":22164.310243425498,"y":8343.497936621716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"765f38a2-4cba-49fd-8c86-dd51c8e215db"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"ea5e5b65-da6f-49b3-89c2-d7fa902069c7","savedPayload":{"position":{"x":23198.27480982736,"y":8601.470927373073},"targetPosition":{"x":22164.310243425498,"y":8343.497936621716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"615e7f76-5ca1-4d42-84f6-0129a2eea01c"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"d0aca66f-f495-4355-b75e-b5f11c39cfc7","savedPayload":{"position":{"x":23114.928784007912,"y":8825.06406615641},"targetPosition":{"x":22164.310243425498,"y":8343.497936621716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"dd6e16bd-9458-47f8-bce8-856baa66a2d3"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"d05af5c5-9b11-4c9f-be10-b189ef3163fb","savedPayload":{"position":{"x":22983.872949300694,"y":9024.587590736885},"targetPosition":{"x":22164.310243425498,"y":8343.497936621716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"cf270516-0d12-45be-834a-c0024b840b3c"}}}],"id":"dfa786b7-df65-4c51-b088-dd550ae0c5df","savedPayload":{"position":{"x":22164.206817134072,"y":8344.20653788172},"targetPosition":{"x":21104.56436857462,"y":8203.271156113078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Zone 4","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support4Bounce1 > 0","id":"e751bdf0-0b5a-4063-84af-ea10f0e47a21","savedPayload":{"position":{"x":23155.37840289283,"y":8239.077664110033},"targetPosition":{"x":22126.571442467983,"y":8516.661977782444},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"251e1404-86d3-4985-8e43-486cc1d6867e","savedPayload":{"position":{"x":24202.91474851591,"y":8140.176209933307},"targetPosition":{"x":23191.41833165474,"y":8475.317874041482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.support4Bounce1 > 1","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"bffe3c87-6a71-4824-8446-5f070847eca1","savedPayload":{"position":{"x":25276.907861772816,"y":8036.62989238587},"targetPosition":{"x":24234.170978955866,"y":8255.914580346696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a7c57b61-1430-462d-8869-3bb85750888d","savedPayload":{"position":{"x":24234.170978955866,"y":8255.914580346696},"targetPosition":{"x":23191.41833165474,"y":8475.317874041482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support4Bounce1 > 2","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"f42177ce-d5a0-4226-8e34-b771cb3ed2fd","savedPayload":{"position":{"x":25312.985097062876,"y":8273.145322490758},"targetPosition":{"x":24252.22794584183,"y":8374.206194725884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dacf8a6e-f8c0-4c0e-9b70-25b69f62fe1a","savedPayload":{"position":{"x":24252.22794584183,"y":8374.206194725884},"targetPosition":{"x":23191.41833165474,"y":8475.317874041482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support4Bounce1 > 3","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"2b6ddd44-b538-437b-b367-f8e4c5a42e8a","savedPayload":{"position":{"x":25322.31534984377,"y":8511.5332181724},"targetPosition":{"x":24256.887749979654,"y":8493.451054405625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b4b1adb4-b1e3-450e-8fbb-267cf539096f","savedPayload":{"position":{"x":24256.887749979654,"y":8493.451054405625},"targetPosition":{"x":23191.41833165474,"y":8475.317874041482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support4Bounce1 > 4","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"07471740-91b1-4b7a-bdf2-9d9000ca954d","savedPayload":{"position":{"x":25304.77906693375,"y":8750.090197393953},"targetPosition":{"x":24248.110669860227,"y":8612.807897901299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b2157982-6f42-4894-b0dc-f54c76e26599","savedPayload":{"position":{"x":24248.110669860227,"y":8612.807897901299},"targetPosition":{"x":23191.41833165474,"y":8475.317874041482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support4Bounce1 > 5","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"66b9ff42-57a7-4e1a-90f8-88b9b48815a8","savedPayload":{"position":{"x":25260.54167789428,"y":8985.59696741663},"targetPosition":{"x":24225.9619105909,"y":8730.651861567272},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0ed11a98-f701-4fb3-bfbd-b85a77c75f77","savedPayload":{"position":{"x":24225.9619105909,"y":8730.651861567272},"targetPosition":{"x":23191.41833165474,"y":8475.317874041482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"20788642-ead1-4b31-abca-6877c0b3d548","savedPayload":{"position":{"x":23191.41833165474,"y":8475.317874041482},"targetPosition":{"x":22126.571442467983,"y":8516.661977782444},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"1fc429c5-f3e3-4cbc-b3c7-fa2b8be4b650","savedPayload":{"position":{"x":23173.88386240476,"y":8713.179526302476},"targetPosition":{"x":22126.571442467983,"y":8516.661977782444},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"8a3f2434-8ab8-44aa-931f-f0aa0bed6310"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"54aebf2a-bfb4-4a58-9a4d-12ae422638e0","savedPayload":{"position":{"x":23103.882933144174,"y":8941.313511411383},"targetPosition":{"x":22126.571442467983,"y":8516.661977782444},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"13dd9d54-d74f-4863-9e86-88b79c9ebe2b"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"006283cf-eb63-4341-8c76-b9ed8707c013","savedPayload":{"position":{"x":22984.8832254367,"y":9148.120328404411},"targetPosition":{"x":22126.571442467983,"y":8516.661977782444},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"73ecbfa9-1e21-4c80-8f17-6eff316dc2d5"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"3a0c604a-2ba5-40a4-9cef-6f8bda916c1c","savedPayload":{"position":{"x":22822.788681714,"y":9323.345109555963},"targetPosition":{"x":22126.571442467983,"y":8516.661977782444},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"6ae4a3ec-2a81-4bae-ae75-3ced2c5cd1cd"}}}],"id":"c246d453-c21e-4977-a94c-395c8ddfcee1","savedPayload":{"position":{"x":22126.524189374886,"y":8516.768525463707},"targetPosition":{"x":21104.56436857462,"y":8203.271156113078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Zone 5","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support5Bounce1 > 0","id":"eeaae66c-8f4b-4bc0-912f-f80476486d24","savedPayload":{"position":{"x":23121.498920565307,"y":8576.251258786442},"targetPosition":{"x":22060.95737901749,"y":8680.70057807981},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"7c2c5a70-1ccb-4b1e-89b9-93a35e3ff9bd","savedPayload":{"position":{"x":24171.138083892252,"y":8650.792951586393},"targetPosition":{"x":23118.183688450204,"y":8814.861195642654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.support5Bounce1 > 1","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"3503a74e-27ab-432d-b23b-384ea189b71c","savedPayload":{"position":{"x":25247.63076179945,"y":8725.43371534378},"targetPosition":{"x":24182.936006368378,"y":8770.08146038792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b0eb4942-d207-41d7-baea-235288d4c3ba","savedPayload":{"position":{"x":24182.936006368378,"y":8770.08146038792},"targetPosition":{"x":23118.183688450204,"y":8814.861195642654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support5Bounce1 > 2","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"0014c98f-7ca4-42ce-a904-5358de2ae8cb","savedPayload":{"position":{"x":25244.270584157926,"y":8964.07358426647},"targetPosition":{"x":24181.256640367847,"y":8889.436951259911},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"17498492-0347-435c-b51c-471ec5dde3f5","savedPayload":{"position":{"x":24181.256640367847,"y":8889.436951259911},"targetPosition":{"x":23118.183688450204,"y":8814.861195642654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support5Bounce1 > 3","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"9d45d527-de65-4e27-a6eb-bebd02822ac4","savedPayload":{"position":{"x":25214.127533113875,"y":9201.371227535285},"targetPosition":{"x":24166.178201390965,"y":9008.137972568922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"abc17a70-8a33-482c-98a1-1e9d8fb506d1","savedPayload":{"position":{"x":24166.178201390965,"y":9008.137972568922},"targetPosition":{"x":23118.183688450204,"y":8814.861195642654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support5Bounce1 > 4","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"095551e1-caff-4550-b6e3-e9fe57fdf87d","savedPayload":{"position":{"x":25157.58162222257,"y":9433.80869401764},"targetPosition":{"x":24137.88327995731,"y":9124.428385762474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6ce3a570-fffb-47b8-adbd-bb5e47ddce01","savedPayload":{"position":{"x":24137.88327995731,"y":9124.428385762474},"targetPosition":{"x":23118.183688450204,"y":8814.861195642654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support5Bounce1 > 5","style":{"type":"Style","name":"New Style","code":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"eb84ebd8-a82a-49eb-a125-7b73255da111","savedPayload":{"position":{"x":25075.198937905374,"y":9658.795167623175},"targetPosition":{"x":24096.639145616922,"y":9237.024956682635},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"af63db19-44f6-4044-a45e-b02db4d50245","savedPayload":{"position":{"x":24096.639145616922,"y":9237.024956682635},"targetPosition":{"x":23118.183688450204,"y":8814.861195642654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c53fa25f-d13c-4bba-ad54-f63bc4ab370e","savedPayload":{"position":{"x":23118.183688450204,"y":8814.861195642654},"targetPosition":{"x":22060.95737901749,"y":8680.70057807981},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"97ae8c75-04ed-4106-a8bc-860b928c801c","savedPayload":{"position":{"x":23061.668962352596,"y":9046.977457509003},"targetPosition":{"x":22060.95737901749,"y":8680.70057807981},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"f1da5793-706f-4884-af96-51be961434e8"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"ff09c05e-8165-4874-ab3e-6b4d536152f5","savedPayload":{"position":{"x":22955.078789157953,"y":9260.47030331678},"targetPosition":{"x":22060.95737901749,"y":8680.70057807981},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"ca37a88a-7a07-40c8-99ac-f8b8ff2d5d4d"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"d05060f1-47ba-4fb0-9cf1-112b43d7052d","savedPayload":{"position":{"x":22803.650974341894,"y":9444.887337603004},"targetPosition":{"x":22060.95737901749,"y":8680.70057807981},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"15092839-5205-4e95-b729-0ed82fcfe928"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"b45229f5-8479-4ece-a945-ffb00fd63b70","savedPayload":{"position":{"x":22614.906412104578,"y":9591.042624173462},"targetPosition":{"x":22060.95737901749,"y":8680.70057807981},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"e1833970-01d0-4715-ad2d-9e717510fd30"}}}],"id":"be7397f9-5610-4d38-86ee-90c2dfceceef","savedPayload":{"position":{"x":22060.866702796353,"y":8680.878873999247},"targetPosition":{"x":21104.56436857462,"y":8203.271156113078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6daa712b-9aa6-4363-a987-cbef7c95d404","savedPayload":{"position":{"x":21104.676173818494,"y":8203.178278649684},"targetPosition":{"x":20477.348103390224,"y":9066.660965948446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Support Levels","code":"{ \n\"codeName\": \"Resistances Rates & Periods\"\n}","panelData":[{"type":"Panel Data","name":"Rate 1","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support1Rate","id":"7e6ffb7b-700e-4870-be11-e85a42a4b1c4","savedPayload":{"position":{"x":18546.660163176282,"y":6548.605986960374},"targetPosition":{"x":18860.104402731817,"y":7425.864691148868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"645eb939-2442-4527-b2a9-41dc9fe757a9","savedPayload":{"position":{"x":18860.104402731817,"y":7425.864691148868},"targetPosition":{"x":19174.38463354809,"y":8303.186939128855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 1","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support1Period","id":"6c18d565-f06e-4461-93e0-5076f32d9599","savedPayload":{"position":{"x":18802.910496412827,"y":6476.97264444164},"targetPosition":{"x":18988.603401871507,"y":7390.156396575005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"eb9da961-accc-4205-8ae9-4ca89af0cdc2","savedPayload":{"position":{"x":18988.603401871507,"y":7390.156396575005},"targetPosition":{"x":19174.38463354809,"y":8303.186939128855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate 2","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support2Rate","id":"6e0aeeb7-3c81-4ecf-b6f8-09bb8fe599b3","savedPayload":{"position":{"x":19066.577441474892,"y":6442.978396430844},"targetPosition":{"x":19120.535268337004,"y":7372.874482589211},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a3c3d8ed-b1c8-454d-91f6-a1f178f12baa","savedPayload":{"position":{"x":19120.535268337004,"y":7372.874482589211},"targetPosition":{"x":19174.38463354809,"y":8303.186939128855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 2","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support2Period","id":"18e53d69-4c32-4e34-a1ae-c8017b851080","savedPayload":{"position":{"x":19332.227295516346,"y":6446.509411496246},"targetPosition":{"x":19253.24256945628,"y":7374.689845314186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a43ed0c5-2a03-4c06-8ecf-464f323253ce","savedPayload":{"position":{"x":19253.24256945628,"y":7374.689845314186},"targetPosition":{"x":19174.38463354809,"y":8303.186939128855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate 3","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support3Rate","id":"84073b24-07af-4253-91f0-1a3363515fea","savedPayload":{"position":{"x":19595.05709360456,"y":6488.0486447207995},"targetPosition":{"x":19384.614256409146,"y":7395.704921556323},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7ddd82f0-f22d-4b58-8c82-72da0faad6df","savedPayload":{"position":{"x":19384.614256409146,"y":7395.704921556323},"targetPosition":{"x":19174.38463354809,"y":8303.186939128855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 3","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support3Period","id":"cb9423ad-6fc8-4cf8-996c-f6c3ca9d6423","savedPayload":{"position":{"x":19848.829038324366,"y":6566.247214352912},"targetPosition":{"x":19511.713768074213,"y":7434.602667022901},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d65c13d2-d9b5-426d-916c-fcb049ca684a","savedPayload":{"position":{"x":19511.713768074213,"y":7434.602667022901},"targetPosition":{"x":19174.38463354809,"y":8303.186939128855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate 4","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support4Rate","id":"3eefba37-d0b5-48c7-8930-2065d0370fd6","savedPayload":{"position":{"x":20089.11684206343,"y":6680.067048991874},"targetPosition":{"x":19631.794303304676,"y":7491.617160333336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cc6ea81e-db56-45ca-ad89-43e3cab97406","savedPayload":{"position":{"x":19631.794303304676,"y":7491.617160333336},"targetPosition":{"x":19174.38463354809,"y":8303.186939128855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 4","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support4Period","id":"a39d8363-6920-4001-b0f2-0d194c34a7f2","savedPayload":{"position":{"x":20310.812233284916,"y":6826.626231984275},"targetPosition":{"x":19742.70161694287,"y":7564.940702442322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"99f78253-63c7-40f4-bc8a-7e37349ff6f6","savedPayload":{"position":{"x":19742.70161694287,"y":7564.940702442322},"targetPosition":{"x":19174.38463354809,"y":8303.186939128855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate 5","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support5Rate","id":"344a9d6b-1f59-401c-8b50-97f740c8f141","savedPayload":{"position":{"x":20510.124251618774,"y":7003.755987876878},"targetPosition":{"x":19842.257177825162,"y":7653.5408295973575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f01c7994-93d3-46f2-9135-e25955247914","savedPayload":{"position":{"x":19842.257177825162,"y":7653.5408295973575},"targetPosition":{"x":19174.38463354809,"y":8303.186939128855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 5","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support5Period","id":"27ddb6f4-212d-4220-82e7-04b4e3a45fd6","savedPayload":{"position":{"x":20681.874079540237,"y":7207.455013505455},"targetPosition":{"x":19928.24312033551,"y":7755.462505611233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c2195d70-d9d9-4377-8909-adefddae101f","savedPayload":{"position":{"x":19928.24312033551,"y":7755.462505611233},"targetPosition":{"x":19174.38463354809,"y":8303.186939128855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"635f72c8-0556-46db-87cf-4c15449c1e70","savedPayload":{"position":{"x":21492.454687296446,"y":8736.907989914771},"targetPosition":{"x":20477.348103390224,"y":9066.660965948446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Support Bounces","code":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Level 1 ZONE","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support1Bounce1","id":"d13fcc7c-cc42-4496-ba29-dc8724b5fb29","savedPayload":{"position":{"x":19525.779142588213,"y":7713.173044526588},"targetPosition":{"x":19574.368636809293,"y":7941.811789218368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"62364bde-b261-4f32-839d-ef2c3878c99f","savedPayload":{"position":{"x":19574.368636809293,"y":7941.811789218368},"targetPosition":{"x":19767.713958776312,"y":8853.446052333595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ 2 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support1Bounce2","id":"b6e48da2-5f15-4a39-b91a-164c7f27926f","savedPayload":{"position":{"x":19717.167424296866,"y":7688.80682567858},"targetPosition":{"x":19727.298415040375,"y":7922.419144931011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"cf514f7a-499b-48ac-90e9-f94e9808edd1","savedPayload":{"position":{"x":19727.298415040375,"y":7922.419144931011},"targetPosition":{"x":19767.713958776312,"y":8853.446052333595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ 3 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support1Bounce3","id":"642b6ab0-0e00-4f24-9ade-b09618f11590","savedPayload":{"position":{"x":19909.19640917747,"y":7696.320962441112},"targetPosition":{"x":19880.926387303825,"y":7928.459635723067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"5bdd2b93-c16d-4580-b7f3-b330bb69092d","savedPayload":{"position":{"x":19880.926387303825,"y":7928.459635723067},"targetPosition":{"x":19767.713958776312,"y":8853.446052333595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ 5 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support1Bounce5","id":"469287dc-1f38-42ce-975c-099fb1cd9f40","savedPayload":{"position":{"x":20097.8365720377,"y":7735.4439994308905},"targetPosition":{"x":20031.692421799537,"y":7959.744724550219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"c2d2df4c-2b45-4840-82f8-c012a1743b02","savedPayload":{"position":{"x":20031.692421799537,"y":7959.744724550219},"targetPosition":{"x":19767.713958776312,"y":8853.446052333595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ 10 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support1Bounce10","id":"19caf103-9282-4809-b7c6-a069ad289a2c","savedPayload":{"position":{"x":20277.431872527028,"y":7805.086689535821},"targetPosition":{"x":20175.23306317841,"y":8015.416411209666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"79e1a09f-925e-48b6-85c2-a22026e04dac","savedPayload":{"position":{"x":20175.23306317841,"y":8015.416411209666},"targetPosition":{"x":19767.713958776312,"y":8853.446052333595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ All","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support1BounceAll","id":"f19ab711-2207-4110-9d97-06477cfeb543","savedPayload":{"position":{"x":20443.09863744497,"y":7903.340869771657},"targetPosition":{"x":20307.64329965665,"y":8093.953506853188},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"eefbe053-1588-40a7-ac65-228590b7046b","savedPayload":{"position":{"x":20307.64329965665,"y":8093.953506853188},"targetPosition":{"x":19767.713958776312,"y":8853.446052333595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 ZONE","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support2Bounce1","id":"08a5148e-4fe4-45bf-aa97-2e58a63a74ef","savedPayload":{"position":{"x":20590.324741999728,"y":8027.522660245873},"targetPosition":{"x":20425.315969371735,"y":8193.21250307155},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"fb6ade4e-292b-47b3-b20f-05fb859b98b4","savedPayload":{"position":{"x":20425.315969371735,"y":8193.21250307155},"targetPosition":{"x":19767.713958776312,"y":8853.446052333595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ 2 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support2Bounce2","id":"c9b2a0ac-b81c-4fc7-8e1d-091853938587","savedPayload":{"position":{"x":20715.09655772215,"y":8174.242904578374},"targetPosition":{"x":20525.042598927157,"y":8310.485716785719},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"9a56c631-2c1c-4ae7-a194-89b346df3463","savedPayload":{"position":{"x":20525.042598927157,"y":8310.485716785719},"targetPosition":{"x":19767.713958776312,"y":8853.446052333595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ 3 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support2Bounce3","id":"0373e364-a16d-4b51-b329-012a61b7ace6","savedPayload":{"position":{"x":20814.01377266671,"y":8339.4984781471},"targetPosition":{"x":20604.104024278102,"y":8442.573816156506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"30071839-72eb-494e-afc6-9a6ab94f9b70","savedPayload":{"position":{"x":20604.104024278102,"y":8442.573816156506},"targetPosition":{"x":19767.713958776312,"y":8853.446052333595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ 5 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support2Bounce5","id":"a2473366-94ac-4849-b862-43428d6d0a98","savedPayload":{"position":{"x":20884.37584716818,"y":8518.779699708935},"targetPosition":{"x":20660.343971295766,"y":8585.874397866819},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"8deff06c-f8bc-4726-9907-4b14d0254746","savedPayload":{"position":{"x":20660.343971295766,"y":8585.874397866819},"targetPosition":{"x":19767.713958776312,"y":8853.446052333595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ 10 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support2Bounce10","id":"d4532f24-7d16-49af-a0ca-46e75a7c2f86","savedPayload":{"position":{"x":20924.265905407858,"y":8707.02262801641},"targetPosition":{"x":20692.227990542582,"y":8736.31417682391},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"ebc42c04-3f1f-4236-8367-ce463bf2c90f","savedPayload":{"position":{"x":20692.227990542582,"y":8736.31417682391},"targetPosition":{"x":19767.713958776312,"y":8853.446052333595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ All","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support2BounceAll","id":"6da34bd1-0980-452b-b6c8-89db0c82d5f5","savedPayload":{"position":{"x":20932.598831632502,"y":8898.973743835075},"targetPosition":{"x":20698.916174753955,"y":8889.8380600985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"f4a89e5c-6c86-4244-97c1-ad22ea7cd312","savedPayload":{"position":{"x":20698.916174753955,"y":8889.8380600985},"targetPosition":{"x":19767.713958776312,"y":8853.446052333595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 ZONE","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support3Bounce1","id":"84bdb475-2001-4b44-8cf2-03dfd526b973","savedPayload":{"position":{"x":20909.165635596062,"y":9090.14077866929},"targetPosition":{"x":20680.335313832362,"y":9042.811689912445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"b405e855-bb60-4161-93f2-9598d0622c20","savedPayload":{"position":{"x":20680.335313832362,"y":9042.811689912445},"targetPosition":{"x":19767.713958776312,"y":8853.446052333595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ 2 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support3Bounce2","id":"5ad12a0a-2cae-46ed-b896-7e5db84d4f22","savedPayload":{"position":{"x":20854.428207521203,"y":9274.848281919569},"targetPosition":{"x":20636.59035802931,"y":9190.55034010192},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"5edc75a9-9864-48d5-ae37-fa72c4aad2a9","savedPayload":{"position":{"x":20636.59035802931,"y":9190.55034010192},"targetPosition":{"x":19767.713958776312,"y":8853.446052333595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ 3 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support3Bounce3","id":"a9b8e084-a12c-496c-95b1-d99be5ef8b0e","savedPayload":{"position":{"x":20770.209341802478,"y":9448.305063333508},"targetPosition":{"x":20569.107493655792,"y":9329.008193689928},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"d88536c7-cf92-48b1-8501-20b57d8d8a0a","savedPayload":{"position":{"x":20569.107493655792,"y":9329.008193689928},"targetPosition":{"x":19767.713958776312,"y":8853.446052333595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ 5 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support3Bounce5","id":"8d5ba2b2-d7aa-44bf-861c-d584c25b2a6f","savedPayload":{"position":{"x":20658.63025503629,"y":9605.406716166506},"targetPosition":{"x":20479.95693931749,"y":9454.596238915994},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"4e750e36-67f4-41fc-b154-e516bc793142","savedPayload":{"position":{"x":20479.95693931749,"y":9454.596238915994},"targetPosition":{"x":19767.713958776312,"y":8853.446052333595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ 10 %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support3Bounce10","id":"01c3a535-80db-4473-9a07-0779645fd2aa","savedPayload":{"position":{"x":20522.538015316284,"y":9741.721396894196},"targetPosition":{"x":20371.212320270453,"y":9563.538487780601},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"f8eeae14-9884-4912-9eee-161a8b911600","savedPayload":{"position":{"x":20371.212320270453,"y":9563.538487780601},"targetPosition":{"x":19767.713958776312,"y":8853.446052333595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ All","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support3BounceAll","id":"778b179e-29a7-4ab3-bbb6-ce81bb805cad","savedPayload":{"position":{"x":20365.64079281724,"y":9853.949851155565},"targetPosition":{"x":20245.89379074915,"y":9653.263654773822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"0a53817d-766f-49f1-b233-6cd6bdddd754","savedPayload":{"position":{"x":20245.89379074915,"y":9653.263654773822},"targetPosition":{"x":19767.713958776312,"y":8853.446052333595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7d34b4e7-0593-4b2a-8e4f-a06e6625f6d5","savedPayload":{"position":{"x":21492.454080758882,"y":9396.415089518187},"targetPosition":{"x":20477.348103390224,"y":9066.660965948446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Support Zone Sizes","code":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Zone * 1","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone","id":"799aebef-4e58-4e2c-ba9f-16ea325ac998","savedPayload":{"position":{"x":19816.73026288472,"y":10147.567532250856},"targetPosition":{"x":19700.932037114137,"y":10130.41769237496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"f1f1c795-56fe-4091-804e-d4d472c9142c","savedPayload":{"position":{"x":19700.932037114137,"y":10130.41769237496},"targetPosition":{"x":19239.627754349905,"y":10061.257231511101},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Zone * 2","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone * 2","id":"32b7a21a-d80c-4bbd-9782-7300dea36122","savedPayload":{"position":{"x":19695.974219971205,"y":10424.847620864199},"targetPosition":{"x":19604.37685391599,"y":10351.950932939704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"19bdcbf6-4979-4b04-ae57-cbe7517c04ea","savedPayload":{"position":{"x":19604.37685391599,"y":10351.950932939704},"targetPosition":{"x":19239.627754349905,"y":10061.257231511101},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Zone * 3","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone * 3","id":"fbe0c934-822f-4d54-ad5a-d377b3611066","savedPayload":{"position":{"x":19452.817177615714,"y":10604.404303799472},"targetPosition":{"x":19410.040235475575,"y":10495.425659653112},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"3f670609-9458-4bb5-8ab5-cc6b36257377","savedPayload":{"position":{"x":19410.040235475575,"y":10495.425659653112},"targetPosition":{"x":19239.627754349905,"y":10061.257231511101},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Zone * 5","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone * 5","id":"5feb8c45-b7d1-49cb-83b7-74518d752328","savedPayload":{"position":{"x":19153.11372786809,"y":10638.2099264372},"targetPosition":{"x":19170.320438688843,"y":10522.45072687444},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"f4944a67-3321-49f2-9cfe-fa63ebaf74e1","savedPayload":{"position":{"x":19170.320438688843,"y":10522.45072687444},"targetPosition":{"x":19239.627754349905,"y":10061.257231511101},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Zone * 10","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone * 10","id":"68e84fc5-33ac-4e6b-a7c5-688ced53e4a7","savedPayload":{"position":{"x":18876.101551022057,"y":10517.049916243175},"targetPosition":{"x":18948.899507228234,"y":10425.723304408359},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"7d9369a7-6fbb-4e97-b447-6620d98d3089","savedPayload":{"position":{"x":18948.899507228234,"y":10425.723304408359},"targetPosition":{"x":19239.627754349905,"y":10061.257231511101},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"24739677-7e84-4013-81db-db4de744c467","savedPayload":{"position":{"x":21104.68874628169,"y":9930.134697475429},"targetPosition":{"x":20477.348103390224,"y":9066.660965948446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1a104c65-6470-4694-a39e-4663f15e490c","savedPayload":{"position":{"x":20453.655237567775,"y":8844.431229751526},"targetPosition":{"x":19407.730527114614,"y":9066.662429926711},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0fd59bed-c28b-434c-801e-a2671e609f0d","savedPayload":{"position":{"x":14151.684746590508,"y":17994.242515651273},"targetPosition":{"x":12814.422748313864,"y":18696.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"35be7b1c-a0f7-4b5f-9ee1-8fb51595e959","savedPayload":{"position":{"x":12814.422748313864,"y":18696.02928226611},"targetPosition":{"x":12814.422748313864,"y":18696.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"m"}}} \ No newline at end of file diff --git a/Data-Mines/Sparta.json b/Data-Mines/Sparta.json deleted file mode 100644 index 8b1e04a3a..000000000 --- a/Data-Mines/Sparta.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"Data Mine","name":"Sparta","code":"{\n\"codeName\": \"Sparta\"\n}","sensorBots":[],"indicatorBots":[{"type":"Indicator Bot","name":"SMA","code":"{\n\"codeName\": \"SMA\",\n\"repo\": \"SMA-Indicator-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates SMAs for Time Frames of 01-hs and above.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Popular SMAs","id":"5302effb-1f09-4a30-9f71-6956b8b9ca88","savedPayload":{"position":{"x":25224.612195682526,"y":17637.258863308474},"targetPosition":{"x":25551.770032741155,"y":17736.30836346064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"3b21f9d7-2cbc-4c23-80c8-cc5e5b06a22c"}}},{"type":"Output Dataset","name":"Multi-Period-Market Base11 SMAs","id":"8221593c-6298-4b4c-bfc2-cffbc9e5cd0f","savedPayload":{"position":{"x":25262.141129586627,"y":17552.00360556611},"targetPosition":{"x":25551.770032741155,"y":17736.30836346064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"af9b9cef-2a74-486f-b79e-047d68669a1f"}}},{"type":"Output Dataset","name":"Multi-Period-Market Base7 SMAs","id":"aabd0857-b4fc-404a-8967-967475ed3993","savedPayload":{"position":{"x":25316.405999626135,"y":17484.324590757144},"targetPosition":{"x":25551.770032741155,"y":17736.30836346064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"78a6ef37-4df8-4ac8-83a0-c9a732467c59"}}},{"type":"Output Dataset","name":"Multi-Period-Market Base6 SMAs","id":"dd00a77a-761e-404b-9e44-627335668112","savedPayload":{"position":{"x":25387.265564907873,"y":17430.333983048524},"targetPosition":{"x":25551.770032741155,"y":17736.30836346064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"c0862b3d-d35a-4d3e-8d80-258b8a01c37c"}}},{"type":"Output Dataset","name":"Muti-Period-Market Base5 SMAs","id":"b6426833-d2c7-4300-b610-801e12a7edfd","savedPayload":{"position":{"x":25505.340917270547,"y":17395.898346529495},"targetPosition":{"x":25551.770032741155,"y":17736.30836346064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Muti-Period-Market","id":"a5d28568-fb58-469a-9820-b9f0e8eab705"}}}],"id":"85a56739-9351-444b-95e9-a57470dca38a","savedPayload":{"position":{"x":25551.770032741155,"y":17736.30836346064},"targetPosition":{"x":25835.490765584105,"y":18051.59276535898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"SMA Multi-Period-Market","code":"{\"mainUtility\": \"Self Reference\"}","id":"d49d1e94-1960-4121-8e40-be8af52947ee","savedPayload":{"position":{"x":25501.272085602934,"y":17104.301251575565},"targetPosition":{"x":25694.522455665036,"y":17385.299824512178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"81346f2f-13f2-46f4-85f5-a04b4d80f455"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","code":"{\"mainUtility\": \"Market Ending Point\"}","id":"f7cf0949-06fc-4c98-a399-61fac1671c6e","savedPayload":{"position":{"x":25623.856655356725,"y":17051.612041326982},"targetPosition":{"x":25694.522455665036,"y":17385.299824512178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"4228fdf3-e992-46b2-a91e-de95108a753d","savedPayload":{"position":{"x":25757.08055863534,"y":17050.03612857998},"targetPosition":{"x":25694.522455665036,"y":17385.299824512178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"id":"f404e748-b631-4cc5-975c-2a0736e55c0d","savedPayload":{"position":{"x":25694.522455665036,"y":17385.299824512178},"targetPosition":{"x":25835.490765584105,"y":18051.59276535898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"81346f2f-13f2-46f4-85f5-a04b4d80f455","savedPayload":{"position":{"x":25968.971435777425,"y":17640.930216035507},"targetPosition":{"x":25835.490765584105,"y":18051.59276535898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes","id":"2bce272e-2712-4f28-9736-03b51929aba2","savedPayload":{"position":{"x":26156.54081251223,"y":17762.466431960936},"targetPosition":{"x":25835.490765584105,"y":18051.59276535898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"b569db86-9ab5-4ba2-be41-357a9bce84b4","savedPayload":{"position":{"x":26258.23235338542,"y":17961.426072433926},"targetPosition":{"x":25835.490765584105,"y":18051.59276535898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297","savedPayload":{"position":{"x":26019.5195661923,"y":17917.037143501675},"targetPosition":{"x":25764.26408653584,"y":18695.647329769585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Describe what the process does.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily Popular SMAs","id":"417d3141-1e22-4ee6-b2d6-531a55b95c88","savedPayload":{"position":{"x":25573.14640163293,"y":17565.23793782561},"targetPosition":{"x":25853.933763629877,"y":17760.859234094827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"2c338fe0-385f-45ab-b210-b98ef013228d"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Base11 SMAs","id":"022edfeb-ec62-4cd9-85bf-20e9f444e3c1","savedPayload":{"position":{"x":25635.239674792134,"y":17495.756748677763},"targetPosition":{"x":25853.933763629877,"y":17760.859234094827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"de5cfa30-edbf-4d5b-8d7f-facfb69a0f3e"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Base7 SMAs","id":"42e89cd9-acbe-49cd-b6f6-7671317796d6","savedPayload":{"position":{"x":25712.643521765378,"y":17446.96101051693},"targetPosition":{"x":25853.933763629877,"y":17760.859234094827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f155e2ed-7082-4021-a4ff-a6f3cfd5683d"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Base6 SMAs","id":"a270e81a-4d70-4293-8a37-19191cf2ec23","savedPayload":{"position":{"x":25794.431290106048,"y":17420.562101060103},"targetPosition":{"x":25853.933763629877,"y":17760.859234094827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f5050eb2-0a99-464e-b5e2-2d8f40453e9a"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Base5 SMAs","id":"d3d1bc15-201c-4d00-ba2e-6401e5392c14","savedPayload":{"position":{"x":25907.28868258716,"y":17421.972617454066},"targetPosition":{"x":25853.933763629877,"y":17760.859234094827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"01f32aa3-55e9-4f8c-80c7-997b52073274"}}}],"id":"ad03dff7-56b2-4980-bc14-1b6c41fdf6cf","savedPayload":{"position":{"x":25853.933763629877,"y":17760.859234094827},"targetPosition":{"x":26026.03518811845,"y":18148.72744724665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"SMA Multi-Period-Daily","code":"{\"mainUtility\": \"Self Reference\"}","id":"d674a833-b9c8-4bdb-84de-e007ab243860","savedPayload":{"position":{"x":25975.031709567502,"y":17153.089085189145},"targetPosition":{"x":26097.733714266913,"y":17471.534353053506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"d2727d60-b26b-4e8b-a635-fbe78bc81240"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","code":"{\"mainUtility\": \"Market Ending Point\"}","id":"ba857809-2273-4280-aa19-4b50837abccb","savedPayload":{"position":{"x":26080.072757775426,"y":17130.623694490183},"targetPosition":{"x":26097.733714266913,"y":17471.534353053506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","code":"{\"mainUtility\": \"Market Starting Point\"}","id":"40e12ba8-59dc-4eaf-a30d-07bb8192e0a6","savedPayload":{"position":{"x":26186.26112169956,"y":17141.87126582138},"targetPosition":{"x":26097.733714266913,"y":17471.534353053506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"5f5e40cb-841e-4b18-a249-a04d541d31a0","savedPayload":{"position":{"x":26284.31941351252,"y":17185.846463492504},"targetPosition":{"x":26097.733714266913,"y":17471.534353053506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"id":"b6aae3c7-2d70-4ffd-a5e5-951f0a565b13","savedPayload":{"position":{"x":26097.733714266913,"y":17471.534353053506},"targetPosition":{"x":26026.03518811845,"y":18148.72744724665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"d2727d60-b26b-4e8b-a635-fbe78bc81240","savedPayload":{"position":{"x":26280.121530270302,"y":17799.312993340518},"targetPosition":{"x":26026.03518811845,"y":18148.72744724665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes","id":"8b753072-e4c9-4671-a5ce-eea9e1c1ba0f","savedPayload":{"position":{"x":26420.943331137372,"y":17972.99550650113},"targetPosition":{"x":26026.03518811845,"y":18148.72744724665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"87c9e783-adc5-40e3-b1fb-fdb2994c1217","savedPayload":{"position":{"x":26455.830208369563,"y":18193.519919274222},"targetPosition":{"x":26026.03518811845,"y":18148.72744724665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f","savedPayload":{"position":{"x":26246.592928705526,"y":18032.086014792607},"targetPosition":{"x":25764.26408653584,"y":18695.647329769585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Popular SMAs","code":"{\n \"codeName\": \"Popular-SMAs\",\n \"singularVariableName\": \"popularSMA\",\n \"pluralVariableName\": \"popularSMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"3b21f9d7-2cbc-4c23-80c8-cc5e5b06a22c","savedPayload":{"position":{"x":26175.934039228123,"y":17950.741279583897},"targetPosition":{"x":26175.914721867786,"y":18299.256529248833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"2c338fe0-385f-45ab-b210-b98ef013228d","savedPayload":{"position":{"x":26380.236961965104,"y":18016.93957069811},"targetPosition":{"x":26175.914721867786,"y":18299.256529248833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"673a7fbf-1a73-4220-a561-84cf8b11c3a7","savedPayload":{"position":{"x":26627.680095169253,"y":17638.080027458287},"targetPosition":{"x":26840.8084276058,"y":17780.588358472043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"305fc918-e6df-48d7-a7b5-726e3fa8f958","savedPayload":{"position":{"x":26840.8084276058,"y":17780.588358472043},"targetPosition":{"x":27148.53522654829,"y":17983.795485389695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"002ffd5e-583c-4af5-87eb-a886fd3bc50e","savedPayload":{"position":{"x":27093.359095157495,"y":17360.51646528785},"targetPosition":{"x":27116.08664773393,"y":17615.550555404825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a305a94d-3af9-430a-8642-5ffb1229710f","savedPayload":{"position":{"x":27116.08664773393,"y":17615.550555404825},"targetPosition":{"x":27148.53522654829,"y":17983.795485389695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA20","code":"{\n \"codeName\": \"sma20\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma20","id":"5adb676d-35a8-47b2-aa47-dc0e6edf8a81","savedPayload":{"position":{"x":27600.57240188186,"y":17551.770606667826},"targetPosition":{"x":27416.381556300406,"y":17727.896614668036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1657736e-6bc4-4279-9e65-5b0b0cf737cb","savedPayload":{"position":{"x":27416.381556300406,"y":17727.896614668036},"targetPosition":{"x":27148.53522654829,"y":17983.795485389695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA50","code":"{\n \"codeName\": \"sma50\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma50","id":"85033109-c11c-43d2-84cc-4510dae276ca","savedPayload":{"position":{"x":27768.541339288226,"y":18067.202727180476},"targetPosition":{"x":27514.487187421888,"y":18033.49231945349},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e7f1f78d-3a6d-49a2-b522-4423bd8d6a82","savedPayload":{"position":{"x":27514.487187421888,"y":18033.49231945349},"targetPosition":{"x":27148.53522654829,"y":17983.795485389695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA100","code":"{\n \"codeName\": \"sma100\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma100","id":"43eebecb-65db-4e64-902a-582515e06daa","savedPayload":{"position":{"x":27470.48321507465,"y":18519.5950807371},"targetPosition":{"x":27338.490450062243,"y":18301.137618530505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"090fa9ea-f050-4315-9360-3958ce5debaa","savedPayload":{"position":{"x":27338.490450062243,"y":18301.137618530505},"targetPosition":{"x":27148.53522654829,"y":17983.795485389695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA200","code":"{\n \"codeName\": \"sma200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma200","id":"5bdf982c-5480-4f90-9ec2-7708bf2d4943","savedPayload":{"position":{"x":26930.906184497646,"y":18568.267974515384},"targetPosition":{"x":27019.406257444472,"y":18330.414994139035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8146fe70-3592-4f27-af4a-d3d8e93268d1","savedPayload":{"position":{"x":27019.406257444472,"y":18330.414994139035},"targetPosition":{"x":27148.53522654829,"y":17983.795485389695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1b29d760-f7fe-48a5-928c-212a6f9a2486","savedPayload":{"position":{"x":27147.679057296376,"y":17983.304211619314},"targetPosition":{"x":26175.914721867786,"y":18299.256529248833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code. This goes at the Code of the Procedure Loop Object */\n\nlet candle = record.current // Our main dependencies are candles \nvariable.last200.push(candle.close) // Add the current close value to the last 200 array.\n\nif (variable.last200.length > 200) {\n variable.last200.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 200 elements.\n}\n\nvariable.sma20 = calculateSMA(20)\nvariable.sma50 = calculateSMA(50)\nvariable.sma100 = calculateSMA(100)\nvariable.sma200 = calculateSMA(200)\n\nfunction calculateSMA(periods) { // Having a function avoids us to repeat code.\n /* We check we have enough values to make the calculation */\n if (variable.last200.length < periods) { return 0 } // If we dont, we define the value is zero.\n\n let sum = 0 // Initialize sum variable. \n for (let i = variable.last200.length - periods; i < variable.last200.length; i++) { // Iterate through the last periods\n sum = sum + variable.last200[i]\n /*\n if (index > 18 && index < 22) { // You can debug what is going on by console logging whatever you need. \n console.log(\"index=\" + index + \" i=\" + i + \" variable.last200.length=\" + variable.last200.length + \" periods=\" + periods + \" sum=\" + sum + \" sum/periods=\" + (sum / periods) + \" currentValue=\" + (variable.last200[i]))\n }\n */\n }\n let sma = sum / periods\n return sma\n}","id":"a9904080-6677-45e0-bcac-f336e882380a","savedPayload":{"position":{"x":26847.668148515426,"y":18254.89172653532},"targetPosition":{"x":26677.413898425722,"y":18289.261376331582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"shortcutKey":"f"}}},"id":"52a2ea69-6420-40f6-90f0-3330d33e6f67","savedPayload":{"position":{"x":26677.413898425722,"y":18289.261376331582},"targetPosition":{"x":26488.741344670092,"y":18341.469236057794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code. This goes at the Code of the Procedure Initialization Object */\n\n/* \nThis is the array where we are going to store the last 200 elements, since we will not \nhave access to such long backwards history while processing daily files. In those situations\nwe only have access to the last 2 days of candles, which in 45 min for example, means 36\ncandles from the current day and 36 from the previous one. For that reason we will keep\nthis array with the last 200 candle.close values so that we overecome that limitation.\n*/\n\nvariable.last200 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")","id":"2790fd06-6fe8-4175-bbfc-854d9909aeb4","savedPayload":{"position":{"x":26742.54143195848,"y":18594.80562429257},"targetPosition":{"x":26608.122646753698,"y":18466.081344573693},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6d5772df-819e-4968-9e27-61981c08f0e2","savedPayload":{"position":{"x":26608.122646753698,"y":18466.081344573693},"targetPosition":{"x":26488.741344670092,"y":18341.469236057794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f1f881ff-a04f-4663-9747-2042d4581953","savedPayload":{"position":{"x":26488.741344670092,"y":18341.469236057794},"targetPosition":{"x":26175.914721867786,"y":18299.256529248833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34","savedPayload":{"position":{"x":26428.148789333118,"y":18213.240251910953},"targetPosition":{"x":25764.26408653584,"y":18695.647329769585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"SMA Popular","id":"ddf21e96-c312-4ebe-9e2b-f56e8ea072aa"}}},{"type":"Product Definition","name":"Base7 SMAs","code":"{\n \"codeName\": \"Base7-SMAs\",\n \"singularVariableName\": \"base7SMA\",\n \"pluralVariableName\": \"base7SMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"78a6ef37-4df8-4ac8-83a0-c9a732467c59","savedPayload":{"position":{"x":26384.80735309389,"y":18143.03260429607},"targetPosition":{"x":26273.00502708043,"y":18487.74557265485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"f155e2ed-7082-4021-a4ff-a6f3cfd5683d","savedPayload":{"position":{"x":26553.065323910436,"y":18283.330200084856},"targetPosition":{"x":26273.00502708043,"y":18487.74557265485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"6d7e37c5-d80e-44a3-8484-f532bcfc7819","savedPayload":{"position":{"x":27224.653223442718,"y":18363.27700637062},"targetPosition":{"x":27455.569217170138,"y":18466.63821574685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"87203f0b-0fb8-4875-8127-d715198bf01b","savedPayload":{"position":{"x":27455.569217170138,"y":18466.63821574685},"targetPosition":{"x":27794.44329648252,"y":18617.12324376157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"bf74ad1e-a569-4428-a387-b0f39bb63759","savedPayload":{"position":{"x":27377.660860241267,"y":18152.621736318928},"targetPosition":{"x":27547.066313592954,"y":18341.851545256053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0bc477f0-8b7d-4c75-8613-0cc63a25a79d","savedPayload":{"position":{"x":27547.066313592954,"y":18341.851545256053},"targetPosition":{"x":27794.44329648252,"y":18617.12324376157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA7","code":"{\n \"codeName\": \"sma7\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma7","id":"1a89def9-4270-4584-93c3-86ca30cb184c","savedPayload":{"position":{"x":27602.213421090426,"y":18021.7047369324},"targetPosition":{"x":27680.778799905303,"y":18265.686146834854},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a87dddd8-9806-45be-b9a9-0e3196da48a7","savedPayload":{"position":{"x":27680.778799905303,"y":18265.686146834854},"targetPosition":{"x":27794.44329648252,"y":18617.12324376157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA14","code":"{\n \"codeName\": \"sma14\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma14","id":"c0b78d39-a652-4d13-9fce-1b56d4e6ffbb","savedPayload":{"position":{"x":27860.371745745706,"y":17993.85254869026},"targetPosition":{"x":27833.38061447485,"y":18249.04707925317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"114a04b9-e5b6-4f60-ad99-760c10275f9e","savedPayload":{"position":{"x":27833.38061447485,"y":18249.04707925317},"targetPosition":{"x":27794.44329648252,"y":18617.12324376157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA21","code":"{\n \"codeName\": \"sma21\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma21","id":"4740139a-d2d7-4050-a0f6-145eef002bed","savedPayload":{"position":{"x":28108.3065467368,"y":18074.061535208388},"targetPosition":{"x":27980.088679328925,"y":18295.925696603234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ac8182cd-7f7b-44e9-a91c-b470be594ef0","savedPayload":{"position":{"x":27980.088679328925,"y":18295.925696603234},"targetPosition":{"x":27794.44329648252,"y":18617.12324376157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA28","code":"{\n \"codeName\": \"sma28\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma28","id":"0a2f17a1-2663-477a-8c28-015592a67a7e","savedPayload":{"position":{"x":28299.409467752143,"y":18250.554476772602},"targetPosition":{"x":28095.834526640545,"y":18398.29145357094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"81c852eb-9b3e-4505-b81a-f236b39d770d","savedPayload":{"position":{"x":28095.834526640545,"y":18398.29145357094},"targetPosition":{"x":27794.44329648252,"y":18617.12324376157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA35","code":"{\n \"codeName\": \"sma35\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma35","id":"1a30763f-6398-475f-b232-ff0da4ad41fa","savedPayload":{"position":{"x":28406.547977881935,"y":18487.290626916838},"targetPosition":{"x":28155.6018570096,"y":18540.478526107217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a8a4dd40-6286-46b0-8f4d-61893d2d9234","savedPayload":{"position":{"x":28155.6018570096,"y":18540.478526107217},"targetPosition":{"x":27794.44329648252,"y":18617.12324376157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA70","code":"{\n \"codeName\": \"sma70\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma70","id":"07471d43-2432-4961-81b5-4aa1bb399df4","savedPayload":{"position":{"x":28407.825245698128,"y":18746.940003548927},"targetPosition":{"x":28155.835328270598,"y":18693.61674053727},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9dbc330c-e654-4591-92d0-c3e92262436e","savedPayload":{"position":{"x":28155.835328270598,"y":18693.61674053727},"targetPosition":{"x":27794.44329648252,"y":18617.12324376157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA140","code":"{\n \"codeName\": \"sma140\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma140","id":"0ef6719d-cfa8-458e-a137-6bd2e77aa6fd","savedPayload":{"position":{"x":28301.440803315047,"y":18984.717186802285},"targetPosition":{"x":28094.697777901725,"y":18834.835031466242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"93814c2c-8fff-4415-9934-1356bf555015","savedPayload":{"position":{"x":28094.697777901725,"y":18834.835031466242},"targetPosition":{"x":27794.44329648252,"y":18617.12324376157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA210","code":"{\n \"codeName\": \"sma210\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma210","id":"037c98d5-1eef-4928-ade0-a70021337aa5","savedPayload":{"position":{"x":28107.64825464273,"y":19158.443581641477},"targetPosition":{"x":27980.158027520116,"y":18938.07217107201},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"efbcaa0c-2bf3-44e6-aae3-4f73c6255c69","savedPayload":{"position":{"x":27980.158027520116,"y":18938.07217107201},"targetPosition":{"x":27794.44329648252,"y":18617.12324376157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA280","code":"{\n \"codeName\": \"sma280\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma280","id":"2bdc1e1e-b6a3-4e68-90b5-e88e64684804","savedPayload":{"position":{"x":27860.611470223088,"y":19239.114632949728},"targetPosition":{"x":27833.50604937348,"y":18984.94139163993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6b302071-d15f-43b3-9ab2-4b970a379ebc","savedPayload":{"position":{"x":27833.50604937348,"y":18984.94139163993},"targetPosition":{"x":27794.44329648252,"y":18617.12324376157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA350","code":"{\n \"codeName\": \"sma350\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma350","id":"18baf5c6-5aa5-4f66-8637-9966fdf4acf4","savedPayload":{"position":{"x":27602.407902657556,"y":19212.765569908326},"targetPosition":{"x":27680.828526683807,"y":18968.83655574005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f1de76b8-1665-4142-b8fc-712203bad655","savedPayload":{"position":{"x":27680.828526683807,"y":18968.83655574005},"targetPosition":{"x":27794.44329648252,"y":18617.12324376157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA700","code":"{\n \"codeName\": \"sma700\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma700","id":"c8f08ae8-f608-40f1-8df3-e4eb537a89ed","savedPayload":{"position":{"x":27377.158793510403,"y":19082.82030152799},"targetPosition":{"x":27547.09076954233,"y":18892.332553006952},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"83b3c070-c0cb-4a4b-86ea-0b6292f57c13","savedPayload":{"position":{"x":27547.09076954233,"y":18892.332553006952},"targetPosition":{"x":27794.44329648252,"y":18617.12324376157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA1400","code":"{\n \"codeName\": \"sma1400\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma1400","id":"ca4c686e-61d0-4dc0-96f9-9ee80d856422","savedPayload":{"position":{"x":27223.18226172313,"y":18870.309202269025},"targetPosition":{"x":27455.84107487965,"y":18767.06893140952},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e07922ab-0abb-4216-a534-07db74399c2a","savedPayload":{"position":{"x":27455.84107487965,"y":18767.06893140952},"targetPosition":{"x":27794.44329648252,"y":18617.12324376157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f3c4fe44-c417-4c98-9547-4b0c062f7bd7","savedPayload":{"position":{"x":27794.44329648252,"y":18617.12324376157},"targetPosition":{"x":26273.00502708043,"y":18487.74557265485},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code. This goes at the Code of the Procedure Loop Object */\n\nlet candle = record.current // Our main dependencies are candles \nvariable.last1400.push(candle.close) // Add the current close value to the last 1400 array.\n\nif (variable.last1400.length > 1400) {\n variable.last1400.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 1400 elements.\n}\n\nvariable.sma7 = calculateSMA(7)\nvariable.sma14 = calculateSMA(14)\nvariable.sma21 = calculateSMA(21)\nvariable.sma28 = calculateSMA(28)\nvariable.sma35 = calculateSMA(35)\nvariable.sma70 = calculateSMA(70)\nvariable.sma140 = calculateSMA(140)\nvariable.sma210 = calculateSMA(210)\nvariable.sma280 = calculateSMA(280)\nvariable.sma350 = calculateSMA(350)\nvariable.sma700 = calculateSMA(700)\nvariable.sma1400 = calculateSMA(1400)\n\nfunction calculateSMA(periods) { // Having a function avoids us to repeat code.\n /* We check we have enough values to make the calculation */\n if (variable.last1400.length < periods) { return 0 } // If we dont, we define the value is zero.\n\n let sum = 0 // Initialize sum variable. \n for (let i = variable.last1400.length - periods; i < variable.last1400.length; i++) { // Iterate through the last periods\n sum = sum + variable.last1400[i]\n /*\n if (index > 18 && index < 22) { // You can debug what is going on by console logging whatever you need. \n console.log(\"index=\" + index + \" i=\" + i + \" variable.last1400.length=\" + variable.last1400.length + \" periods=\" + periods + \" sum=\" + sum + \" sum/periods=\" + (sum / periods) + \" currentValue=\" + (variable.last1400[i]))\n }\n */\n }\n let sma = sum / periods\n return sma\n}","id":"27796e5a-2553-47c6-bddd-c8deaed05c2f","savedPayload":{"position":{"x":26996.724936585197,"y":18712.937372280056},"targetPosition":{"x":26826.171982942662,"y":18695.66637483862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e5d799ba-3a4f-45fb-8533-4c3de5d7886f","savedPayload":{"position":{"x":26826.171982942662,"y":18695.66637483862},"targetPosition":{"x":26655.15152202569,"y":18678.659662599868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code. This goes at the Code of the Procedure Initialization Object */\n\n/* \nThis is the array where we are going to store the last 1400 elements, since we will not \nhave access to such long backwards history while processing daily files. In those situations\nwe only have access to the last 2 days of candles, which in 45 min for example, means 36\ncandles from the current day and 36 from the previous one. For that reason we will keep\nthis array with the last 200 candle.close values so that we overecome that limitation.\n*/\n\nvariable.last1400 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")","id":"17ee3425-2a07-4523-b005-bac9dbf75184","savedPayload":{"position":{"x":26797.828744462473,"y":18989.06243334939},"targetPosition":{"x":26726.56453101096,"y":18833.41784905245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9e9e5c8c-98e2-4bbf-884a-071449177692","savedPayload":{"position":{"x":26726.56453101096,"y":18833.41784905245},"targetPosition":{"x":26655.15152202569,"y":18678.659662599868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6bd8fef6-49f7-45c5-9f9f-944785f8578e","savedPayload":{"position":{"x":26655.15152202569,"y":18678.659662599868},"targetPosition":{"x":26273.00502708043,"y":18487.74557265485},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6","savedPayload":{"position":{"x":26544.813666641156,"y":18443.222986680987},"targetPosition":{"x":25764.26408653584,"y":18695.647329769585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"SMA Base 7","id":"515565ff-dee2-4adf-adaf-b4cfea5f5dbd"}}},{"type":"Product Definition","name":"Base11 SMAs","code":"{\n \"codeName\": \"Base11-SMAs\",\n \"singularVariableName\": \"base11SMA\",\n \"pluralVariableName\": \"base11SMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"af9b9cef-2a74-486f-b79e-047d68669a1f","savedPayload":{"position":{"x":26528.252840926536,"y":18388.278566411613},"targetPosition":{"x":26306.37571582431,"y":18698.578051637356},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"de5cfa30-edbf-4d5b-8d7f-facfb69a0f3e","savedPayload":{"position":{"x":26636.259179957724,"y":18593.312604574883},"targetPosition":{"x":26306.37571582431,"y":18698.578051637356},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"a6c93c64-52da-4dad-bff9-9f6d9b4606b9","savedPayload":{"position":{"x":26973.075557835135,"y":18248.271705370542},"targetPosition":{"x":27088.104927929442,"y":18475.971589554323},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5e8f3d9c-8284-4b92-b7f5-ad7498e5ef3d","savedPayload":{"position":{"x":27088.104927929442,"y":18475.971589554323},"targetPosition":{"x":27255.092352943575,"y":18805.854290217492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"ac16b3d1-e3b0-4b79-9047-cd137c6eeafc","savedPayload":{"position":{"x":27450.843151106714,"y":18205.906932339996},"targetPosition":{"x":27371.280197367367,"y":18449.766271406777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"43337725-24dd-4c1a-ae8d-2562a028d02d","savedPayload":{"position":{"x":27371.280197367367,"y":18449.766271406777},"targetPosition":{"x":27255.092352943575,"y":18805.854290217492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA11","code":"{\n \"codeName\": \"sma11\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma11","id":"87a1e288-0966-46e9-8a4f-1ddbb3f8976c","savedPayload":{"position":{"x":27813.320686359857,"y":18521.834493953796},"targetPosition":{"x":27585.046501181325,"y":18637.95512035044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6a67dbd9-1e8e-4100-849f-5ea77ea67985","savedPayload":{"position":{"x":27585.046501181325,"y":18637.95512035044},"targetPosition":{"x":27255.092352943575,"y":18805.854290217492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA22","code":"{\n \"codeName\": \"sma22\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma22","id":"8652042b-c373-4024-9fbf-c582a55134e0","savedPayload":{"position":{"x":27850.238672073352,"y":18998.5494728662},"targetPosition":{"x":27607.37770910748,"y":18919.934546684002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a5665ca1-e399-4e8a-8e04-8c0b153702e4","savedPayload":{"position":{"x":27607.37770910748,"y":18919.934546684002},"targetPosition":{"x":27255.092352943575,"y":18805.854290217492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA33","code":"{\n \"codeName\": \"sma33\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma33","id":"738317b6-dcb4-4699-a48c-170491515eb5","savedPayload":{"position":{"x":27540.06192691655,"y":19362.665625040227},"targetPosition":{"x":27423.32980013615,"y":19134.63790413124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f35c54ed-6469-4cfa-94cf-f94f1c916e91","savedPayload":{"position":{"x":27423.32980013615,"y":19134.63790413124},"targetPosition":{"x":27255.092352943575,"y":18805.854290217492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA55","code":"{\n \"codeName\": \"sma55\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma55","id":"675e9f6c-1e0d-4d09-ab69-88252ef60fe2","savedPayload":{"position":{"x":27063.32061477702,"y":19399.259374116427},"targetPosition":{"x":27141.926000122694,"y":19157.573694722614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c17d77b3-4d80-462d-88ba-ef421928dde1","savedPayload":{"position":{"x":27141.926000122694,"y":19157.573694722614},"targetPosition":{"x":27255.092352943575,"y":18805.854290217492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA111","code":"{\n \"codeName\": \"sma111\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma111","id":"b32a4356-312c-4536-b30b-63bad302e857","savedPayload":{"position":{"x":26700.90593442815,"y":19090.334535203383},"targetPosition":{"x":26926.692661324734,"y":18973.622417386887},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f49152b4-5306-41d2-966b-dba92eef2590","savedPayload":{"position":{"x":26926.692661324734,"y":18973.622417386887},"targetPosition":{"x":27255.092352943575,"y":18805.854290217492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a099f207-16db-4f66-adfb-1529fa350385","savedPayload":{"position":{"x":27278.26743839606,"y":19013.986741268538},"targetPosition":{"x":26306.37571582431,"y":18698.578051637356},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code. This goes at the Code of the Procedure Loop Object */\n\nlet candle = record.current // Our main dependencies are candles \nvariable.last200.push(candle.close) // Add the current close value to the last 200 array.\n\nif (variable.last200.length > 200) {\n variable.last200.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 200 elements.\n}\n\nvariable.sma11 = calculateSMA(11)\nvariable.sma22 = calculateSMA(22)\nvariable.sma33 = calculateSMA(33)\nvariable.sma55 = calculateSMA(55)\nvariable.sma111 = calculateSMA(111)\n\nfunction calculateSMA(periods) { // Having a function avoids us to repeat code.\n /* We check we have enough values to make the calculation */\n if (variable.last200.length < periods) { return 0 } // If we dont, we define the value is zero.\n\n let sum = 0 // Initialize sum variable. \n for (let i = variable.last200.length - periods; i < variable.last200.length; i++) { // Iterate through the last periods\n sum = sum + variable.last200[i]\n /*\n if (index > 18 && index < 22) { // You can debug what is going on by console logging whatever you need. \n console.log(\"index=\" + index + \" i=\" + i + \" variable.last200.length=\" + variable.last200.length + \" periods=\" + periods + \" sum=\" + sum + \" sum/periods=\" + (sum / periods) + \" currentValue=\" + (variable.last200[i]))\n }\n */\n }\n let sma = sum / periods\n return sma\n}","id":"317788d5-11f5-48a6-ab0c-252cdcef7728","savedPayload":{"position":{"x":26874.63201185133,"y":19055.262394513666},"targetPosition":{"x":26717.403698551898,"y":18988.93572030865},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cce46065-5c04-428f-823f-4cb5e67b212a","savedPayload":{"position":{"x":26717.403698551898,"y":18988.93572030865},"targetPosition":{"x":26532.435624927253,"y":18914.354375783747},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code. This goes at the Code of the Procedure Initialization Object */\n\n/* \nThis is the array where we are going to store the last 200 elements, since we will not \nhave access to such long backwards history while processing daily files. In those situations\nwe only have access to the last 2 days of candles, which in 45 min for example, means 36\ncandles from the current day and 36 from the previous one. For that reason we will keep\nthis array with the last 200 candle.close values so that we overecome that limitation.\n*/\n\nvariable.last200 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")","id":"70d5537e-f682-4322-992b-99a55edb2582","savedPayload":{"position":{"x":26590.6966017987,"y":19269.503657788446},"targetPosition":{"x":26554.94938962656,"y":19088.532519964352},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f0707196-a2ac-4aee-99df-48a7fe77c365","savedPayload":{"position":{"x":26554.94938962656,"y":19088.532519964352},"targetPosition":{"x":26532.435624927253,"y":18914.354375783747},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"663d58c6-e03e-4923-8cc7-03cc860aa318","savedPayload":{"position":{"x":26532.435624927253,"y":18914.354375783747},"targetPosition":{"x":26306.37571582431,"y":18698.578051637356},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"05fabbf9-7798-4a53-995e-53ae74bef3de","savedPayload":{"position":{"x":26582.88325240526,"y":18696.56274982612},"targetPosition":{"x":25764.26408653584,"y":18695.647329769585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"SMA Base 11","id":"4a61ac35-a1ae-40f4-b3da-f81ae796ee00"}}},{"type":"Product Definition","name":"Base5 SMAs","code":"{\n \"codeName\": \"Base5-SMAs\",\n \"singularVariableName\": \"base5SMA\",\n \"pluralVariableName\": \"base5SMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Muti-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"a5d28568-fb58-469a-9820-b9f0e8eab705","savedPayload":{"position":{"x":26565.15021312965,"y":18694.826796365018},"targetPosition":{"x":26251.64738690377,"y":18927.877350195653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"01f32aa3-55e9-4f8c-80c7-997b52073274","savedPayload":{"position":{"x":26598.409173822358,"y":18936.828783883644},"targetPosition":{"x":26251.64738690377,"y":18927.877350195653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"949a2e58-5d07-475e-92b9-e0ef4b9fd9e7","savedPayload":{"position":{"x":26788.666364365312,"y":18967.355999975804},"targetPosition":{"x":26915.227557391794,"y":19189.048375382707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"65545f82-9022-4d4c-bd09-b900182bae75","savedPayload":{"position":{"x":26915.227557391794,"y":19189.048375382707},"targetPosition":{"x":27099.37920070458,"y":19508.813241239954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"551c49da-26d4-438e-aff4-2a0ecc18ce7f","savedPayload":{"position":{"x":27035.61808391708,"y":18886.2376668793},"targetPosition":{"x":27061.704986086665,"y":19141.71690022356},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"74445dab-2c42-4c71-b179-04b98b5a8e27","savedPayload":{"position":{"x":27061.704986086665,"y":19141.71690022356},"targetPosition":{"x":27099.37920070458,"y":19508.813241239954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA5","code":"{\n \"codeName\": \"sma5\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma5","id":"1c996969-c249-4b55-845c-62205e91fc68","savedPayload":{"position":{"x":27293.8915492135,"y":18914.484332193544},"targetPosition":{"x":27214.3088857623,"y":19157.228383562695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3b9f6fbf-20d8-4952-b5e8-34937746fef7","savedPayload":{"position":{"x":27214.3088857623,"y":19157.228383562695},"targetPosition":{"x":27099.37920070458,"y":19508.813241239954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA10","code":"{\n \"codeName\": \"sma10\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma10","id":"d16592d7-2f02-49ae-8857-dd7098990f20","savedPayload":{"position":{"x":27519.511102792847,"y":19043.697751546086},"targetPosition":{"x":27346.6337564343,"y":19234.825054096716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"73cb2d83-d59b-457e-af00-68a8d0e2b016","savedPayload":{"position":{"x":27346.6337564343,"y":19234.825054096716},"targetPosition":{"x":27099.37920070458,"y":19508.813241239954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA15","code":"{\n \"codeName\": \"sma15\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma15","id":"147ea31e-2735-4bae-b6a9-99072ed3d7a5","savedPayload":{"position":{"x":27672.094922023254,"y":19254.410852678637},"targetPosition":{"x":27437.82921049644,"y":19358.38672083127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"666f82ef-a002-4067-9edb-6ddbe2861056","savedPayload":{"position":{"x":27437.82921049644,"y":19358.38672083127},"targetPosition":{"x":27099.37920070458,"y":19508.813241239954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA20","code":"{\n \"codeName\": \"sma20\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma20","id":"f2507a4f-7f65-4d22-b062-1834c9269285","savedPayload":{"position":{"x":27726.142298224688,"y":19508.84654600249},"targetPosition":{"x":27469.738323136036,"y":19508.818090244375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a6a82705-0a6c-425e-afab-099a63570ada","savedPayload":{"position":{"x":27469.738323136036,"y":19508.818090244375},"targetPosition":{"x":27099.37920070458,"y":19508.813241239954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA25","code":"{\n \"codeName\": \"sma25\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma25","id":"53aead0b-0c80-4e74-b19b-7290672f7444","savedPayload":{"position":{"x":27671.95507375719,"y":19763.20244318539},"targetPosition":{"x":27438.058949599934,"y":19659.132293521823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cbc6da93-d064-4762-a32f-ae1071a1ebe2","savedPayload":{"position":{"x":27438.058949599934,"y":19659.132293521823},"targetPosition":{"x":27099.37920070458,"y":19508.813241239954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA50","code":"{\n \"codeName\": \"sma50\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma50","id":"0c126131-e3bd-4d43-a037-53e54e268300","savedPayload":{"position":{"x":27519.608121495337,"y":19974.42266854878},"targetPosition":{"x":27347.211457012472,"y":19783.344485246052},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1cda317e-4b82-4bd9-8b07-71ad7365e524","savedPayload":{"position":{"x":27347.211457012472,"y":19783.344485246052},"targetPosition":{"x":27099.37920070458,"y":19508.813241239954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA100","code":"{\n \"codeName\": \"sma100\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma100","id":"77c897e8-ab38-4c88-a215-e67d53401196","savedPayload":{"position":{"x":27293.71325064394,"y":20103.58327948494},"targetPosition":{"x":27214.52389199443,"y":19861.193099694905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f7a66586-158d-40e2-be75-1077a91b0d7e","savedPayload":{"position":{"x":27214.52389199443,"y":19861.193099694905},"targetPosition":{"x":27099.37920070458,"y":19508.813241239954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA150","code":"{\n \"codeName\": \"sma150\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma150","id":"1e5d6df6-a1af-49f0-a06e-08c362b1cd34","savedPayload":{"position":{"x":27035.932471259064,"y":20131.58468836492},"targetPosition":{"x":27061.720950961186,"y":19876.540171714172},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"83260971-1089-4349-9019-29ea469a9d24","savedPayload":{"position":{"x":27061.720950961186,"y":19876.540171714172},"targetPosition":{"x":27099.37920070458,"y":19508.813241239954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA200","code":"{\n \"codeName\": \"sma200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma200","id":"bc63f986-17dd-48fb-892b-7f2d2b033cc5","savedPayload":{"position":{"x":26787.966981260848,"y":20053.49704976036},"targetPosition":{"x":26916.947011364555,"y":19829.364753476024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"07a55760-46cf-44e8-b2f9-f55a6bb5a81c","savedPayload":{"position":{"x":26916.947011364555,"y":19829.364753476024},"targetPosition":{"x":27099.37920070458,"y":19508.813241239954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA250","code":"{\n \"codeName\": \"sma250\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma250","id":"1bdc84fd-9eac-4b07-9ff6-56f80ec08553","savedPayload":{"position":{"x":26593.30542044824,"y":19878.27186765555},"targetPosition":{"x":26800.63660563802,"y":19726.42926787116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8b672a62-1ae1-4e92-819e-597fa42da35b","savedPayload":{"position":{"x":26800.63660563802,"y":19726.42926787116},"targetPosition":{"x":27099.37920070458,"y":19508.813241239954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA 500","code":"{\n \"codeName\": \"sma500\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma500","id":"0d17399e-97d1-459d-8864-6c72967f0fd4","savedPayload":{"position":{"x":26488.912092366674,"y":19640.334165312943},"targetPosition":{"x":26737.189978644376,"y":19586.153774002873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"92405f1d-9adf-4a70-af18-f2537ba2b0a0","savedPayload":{"position":{"x":26737.189978644376,"y":19586.153774002873},"targetPosition":{"x":27099.37920070458,"y":19508.813241239954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA 1000","code":"{\n \"codeName\": \"sma1000\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma1000","id":"e2364abc-b940-4b52-a506-587c1a5941e3","savedPayload":{"position":{"x":26497.30774676156,"y":19381.540262963998},"targetPosition":{"x":26745.947118272306,"y":19433.25126242157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5318bf3f-6e8a-46c8-8b04-3769bde03438","savedPayload":{"position":{"x":26745.947118272306,"y":19433.25126242157},"targetPosition":{"x":27099.37920070458,"y":19508.813241239954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"69298c3e-479d-4eb6-a972-35f8f079ce86","savedPayload":{"position":{"x":27078.43264843964,"y":19528.175813580172},"targetPosition":{"x":26251.64738690377,"y":18927.877350195653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code. This goes at the Code of the Procedure Loop Object */\n\nlet candle = record.current // Our main dependencies are candles \nvariable.last1000.push(candle.close) // Add the current close value to the last 1000 array.\n\nif (variable.last1000.length > 1000) {\n variable.last1000.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 1000 elements.\n}\n\nvariable.sma5 = calculateSMA(5)\nvariable.sma10 = calculateSMA(10)\nvariable.sma15 = calculateSMA(15)\nvariable.sma20 = calculateSMA(20)\nvariable.sma25 = calculateSMA(25)\nvariable.sma50 = calculateSMA(50)\nvariable.sma100 = calculateSMA(100)\nvariable.sma150 = calculateSMA(150)\nvariable.sma200 = calculateSMA(200)\nvariable.sma250 = calculateSMA(250)\nvariable.sma500 = calculateSMA(500)\nvariable.sma1000 = calculateSMA(1000)\n\nfunction calculateSMA(periods) { // Having a function avoids us to repeat code.\n /* We check we have enough values to make the calculation */\n if (variable.last1000.length < periods) { return 0 } // If we dont, we define the value is zero.\n\n let sum = 0 // Initialize sum variable. \n for (let i = variable.last1000.length - periods; i < variable.last1000.length; i++) { // Iterate through the last periods\n sum = sum + variable.last1000[i]\n /*\n if (index > 18 && index < 22) { // You can debug what is going on by console logging whatever you need. \n console.log(\"index=\" + index + \" i=\" + i + \" variable.last1000.length=\" + variable.last1000.length + \" periods=\" + periods + \" sum=\" + sum + \" sum/periods=\" + (sum / periods) + \" currentValue=\" + (variable.last1000[i]))\n }\n */\n }\n let sma = sum / periods\n return sma\n}","id":"45ebc09e-bada-4bcd-8780-a2f56f23f037","savedPayload":{"position":{"x":26645.905273561184,"y":19559.21556423221},"targetPosition":{"x":26518.70573835362,"y":19445.255146815358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f65693cf-81ef-497e-86d2-a7ad9b74a1ca","savedPayload":{"position":{"x":26518.70573835362,"y":19445.255146815358},"targetPosition":{"x":26391.774675961235,"y":19329.447909815903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code. This goes at the Code of the Procedure Initialization Object */\n\n/* \nThis is the array where we are going to store the last 1000 elements, since we will not \nhave access to such long backwards history while processing daily files. In those situations\nwe only have access to the last 2 days of candles, which in 45 min for example, means 36\ncandles from the current day and 36 from the previous one. For that reason we will keep\nthis array with the last 200 candle.close values so that we overecome that limitation.\n*/\n\nvariable.last1000 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")","id":"22db43d3-db5d-43b6-80fc-1faa358bfadb","savedPayload":{"position":{"x":26343.802726091053,"y":19684.586558432286},"targetPosition":{"x":26378.599669221174,"y":19517.03676853745},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"12255c95-c680-43af-be1b-61ee37e0e827","savedPayload":{"position":{"x":26378.599669221174,"y":19517.03676853745},"targetPosition":{"x":26391.774675961235,"y":19329.447909815903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"cd8c13e4-2b9e-4a42-a576-539d412f239a","savedPayload":{"position":{"x":26391.774675961235,"y":19329.447909815903},"targetPosition":{"x":26251.64738690377,"y":18927.877350195653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3","savedPayload":{"position":{"x":26544.88973314362,"y":18950.124063258874},"targetPosition":{"x":25764.26408653584,"y":18695.647329769585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"SMA Base 5","id":"888c381d-457d-4421-8401-a7475b42ff03"}}},{"type":"Product Definition","name":"Base6 SMAs","code":"{\n \"codeName\": \"Base6-SMAs\",\n \"singularVariableName\": \"base6SMA\",\n \"pluralVariableName\": \"base6SMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"c0862b3d-d35a-4d3e-8d80-258b8a01c37c","savedPayload":{"position":{"x":26534.379417504726,"y":18982.63384352281},"targetPosition":{"x":26176.72217312134,"y":19099.118873208765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"f5050eb2-0a99-464e-b5e2-2d8f40453e9a","savedPayload":{"position":{"x":26505.797256471025,"y":19205.560701790873},"targetPosition":{"x":26176.72217312134,"y":19099.118873208765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Being","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"fc90c194-682d-4d5c-923b-89b19e49f234","savedPayload":{"position":{"x":26675.359466219077,"y":19236.903249760348},"targetPosition":{"x":26765.81135320796,"y":19474.790632470736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"37fc0238-a202-4c33-89ca-6a4e24d4e1ac","savedPayload":{"position":{"x":26765.81135320796,"y":19474.790632470736},"targetPosition":{"x":26898.55465162814,"y":19820.938387123388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"c1b3c2c1-68aa-443a-8c69-c50dcd34998f","savedPayload":{"position":{"x":26932.37601983345,"y":19196.770347335165},"targetPosition":{"x":26918.46333590891,"y":19450.558285015537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7757e0dd-c3b4-48b4-bdf7-e517ce8df601","savedPayload":{"position":{"x":26918.46333590891,"y":19450.558285015537},"targetPosition":{"x":26898.55465162814,"y":19820.938387123388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA6","code":"{\n \"codeName\": \"sma6\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma6","id":"8a633674-750f-492d-8bfc-ac6f2e79793a","savedPayload":{"position":{"x":27182.79826406189,"y":19264.57820364204},"targetPosition":{"x":27066.996086442534,"y":19491.256159130917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"12d5b8f1-c83c-43a3-bf45-6f85e85a6df9","savedPayload":{"position":{"x":27066.996086442534,"y":19491.256159130917},"targetPosition":{"x":26898.55465162814,"y":19820.938387123388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA12","code":"{\n \"codeName\": \"sma12\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma12","id":"11e2a0cd-851a-425e-b2bd-f3cff1b00c77","savedPayload":{"position":{"x":27387.199302591976,"y":19426.446105996958},"targetPosition":{"x":27185.881981664665,"y":19588.951168899966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6c1f3e32-9310-4ece-a796-cf9225172978","savedPayload":{"position":{"x":27185.881981664665,"y":19588.951168899966},"targetPosition":{"x":26898.55465162814,"y":19820.938387123388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA18","code":"{\n \"codeName\": \"sma18\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma18","id":"0cbf493f-fa5f-41a8-a928-754ec9720fe0","savedPayload":{"position":{"x":27504.608423046473,"y":19659.45280578198},"targetPosition":{"x":27257.75587873877,"y":19725.21760759085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"12bf3180-d354-451d-ba14-81cdd9d95c19","savedPayload":{"position":{"x":27257.75587873877,"y":19725.21760759085},"targetPosition":{"x":26898.55465162814,"y":19820.938387123388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA24","code":"{\n \"codeName\": \"sma24\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma24","id":"4d677df1-74ec-417e-a518-2b8946c84542","savedPayload":{"position":{"x":27517.377599525487,"y":19918.83136618582},"targetPosition":{"x":27265.62952399799,"y":19879.034375056755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3e3a6434-aaa4-4170-8cdc-cca21c8d0863","savedPayload":{"position":{"x":27265.62952399799,"y":19879.034375056755},"targetPosition":{"x":26898.55465162814,"y":19820.938387123388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA30","code":"{\n \"codeName\": \"sma30\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma30","id":"3a92b258-6c21-4747-ba08-16cf9ba814ec","savedPayload":{"position":{"x":27424.242518746025,"y":20162.07809489255},"targetPosition":{"x":27209.41399278756,"y":20022.635606944386},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"22bc84a6-f431-464c-a7e0-b9249b32abdf","savedPayload":{"position":{"x":27209.41399278756,"y":20022.635606944386},"targetPosition":{"x":26898.55465162814,"y":19820.938387123388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA60","code":"{\n \"codeName\": \"sma60\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma60","id":"d9a44db6-45eb-47f8-975b-ee8dccd0659d","savedPayload":{"position":{"x":27240.340680800713,"y":20346.548191189406},"targetPosition":{"x":27100.34396458374,"y":20131.218988233115},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c3d4d569-0b7e-44b9-b2f0-84d9a91ee6b0","savedPayload":{"position":{"x":27100.34396458374,"y":20131.218988233115},"targetPosition":{"x":26898.55465162814,"y":19820.938387123388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA120","code":"{\n \"codeName\": \"sma120\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma120","id":"90fee0af-0e23-44de-aa16-d446857485f4","savedPayload":{"position":{"x":26996.93175696522,"y":20440.267624967433},"targetPosition":{"x":26956.59896801549,"y":20186.575033774076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4f572d61-ff96-4ccb-90ca-7a26d5cc8322","savedPayload":{"position":{"x":26956.59896801549,"y":20186.575033774076},"targetPosition":{"x":26898.55465162814,"y":19820.938387123388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA180","code":"{\n \"codeName\": \"sma180\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma180","id":"031e5277-e225-4307-a247-f49dae98ac26","savedPayload":{"position":{"x":26737.307983622108,"y":20426.90025793038},"targetPosition":{"x":26803.23161597208,"y":20178.607840900317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9e3eb2e1-3cb4-4f0b-9a5a-5196bb4af3af","savedPayload":{"position":{"x":26803.23161597208,"y":20178.607840900317},"targetPosition":{"x":26898.55465162814,"y":19820.938387123388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA240","code":"{\n \"codeName\": \"sma240\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma240","id":"cb9604b0-3004-48d5-84fe-680747edb943","savedPayload":{"position":{"x":26505.57926305459,"y":20308.6440388689},"targetPosition":{"x":26666.255895095284,"y":20108.975893239123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"83c2137c-676d-4a43-88c1-e9a5f69cafeb","savedPayload":{"position":{"x":26666.255895095284,"y":20108.975893239123},"targetPosition":{"x":26898.55465162814,"y":19820.938387123388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA300","code":"{\n \"codeName\": \"sma300\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma300","id":"8c3259f1-e88b-40a2-9af2-a0e554affbd2","savedPayload":{"position":{"x":26341.449959423786,"y":20105.661670476733},"targetPosition":{"x":26569.39880944707,"y":19989.168281076163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"829bfd3a-8c69-4e51-8951-a1d7cb0b8c6f","savedPayload":{"position":{"x":26569.39880944707,"y":19989.168281076163},"targetPosition":{"x":26898.55465162814,"y":19820.938387123388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA600","code":"{\n \"codeName\": \"sma600\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma600","id":"501b1e82-840a-4288-801d-38a5e5c7f7cb","savedPayload":{"position":{"x":26273.956300268674,"y":19855.005814899934},"targetPosition":{"x":26529.799135943846,"y":19840.471865141044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f7174f99-231c-4188-8f4a-95a34c0c35f8","savedPayload":{"position":{"x":26529.799135943846,"y":19840.471865141044},"targetPosition":{"x":26898.55465162814,"y":19820.938387123388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA1200","code":"{\n \"codeName\": \"sma1200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma1200","id":"0554601a-009b-47a2-8e0c-c7d6f3901a9e","savedPayload":{"position":{"x":26314.5867743905,"y":19609.40689083536},"targetPosition":{"x":26554.032504446808,"y":19688.10378517681},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f6f0c544-4054-4cb4-9be1-14ffa23c5251","savedPayload":{"position":{"x":26554.032504446808,"y":19688.10378517681},"targetPosition":{"x":26898.55465162814,"y":19820.938387123388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a84f4438-cabc-4c9a-bd9c-0338e55a6e15","savedPayload":{"position":{"x":26899.25254732368,"y":19821.443438079306},"targetPosition":{"x":26176.72217312134,"y":19099.118873208765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code. This goes at the Code of the Procedure Loop Object */\n\nlet candle = record.current // Our main dependencies are candles \nvariable.last1200.push(candle.close) // Add the current close value to the last 1200 array.\n\nif (variable.last1200.length > 1200) {\n variable.last1200.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 1200 elements.\n}\n\nvariable.sma6 = calculateSMA(6)\nvariable.sma12 = calculateSMA(12)\nvariable.sma18 = calculateSMA(18)\nvariable.sma24 = calculateSMA(24)\nvariable.sma30 = calculateSMA(30)\nvariable.sma60 = calculateSMA(60)\nvariable.sma120 = calculateSMA(120)\nvariable.sma180 = calculateSMA(180)\nvariable.sma240 = calculateSMA(240)\nvariable.sma300 = calculateSMA(300)\nvariable.sma600 = calculateSMA(600)\nvariable.sma1200 = calculateSMA(1200)\n\nfunction calculateSMA(periods) { // Having a function avoids us to repeat code.\n /* We check we have enough values to make the calculation */\n if (variable.last1200.length < periods) { return 0 } // If we dont, we define the value is zero.\n\n let sum = 0 // Initialize sum variable. \n for (let i = variable.last1200.length - periods; i < variable.last1200.length; i++) { // Iterate through the last periods\n sum = sum + variable.last1200[i]\n /*\n if (index > 18 && index < 22) { // You can debug what is going on by console logging whatever you need. \n console.log(\"index=\" + index + \" i=\" + i + \" variable.last1200.length=\" + variable.last1200.length + \" periods=\" + periods + \" sum=\" + sum + \" sum/periods=\" + (sum / periods) + \" currentValue=\" + (variable.last1200[i]))\n }\n */\n }\n let sma = sum / periods\n return sma\n}","id":"f2c97b70-717a-4f98-be7c-d76dd94b8227","savedPayload":{"position":{"x":26424.154206551168,"y":19722.618439378977},"targetPosition":{"x":26338.228337974222,"y":19573.56371068612},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96841e7b-90d9-4508-8933-4f0f9769800e","savedPayload":{"position":{"x":26338.228337974222,"y":19573.56371068612},"targetPosition":{"x":26231.89358629586,"y":19407.360220920422},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code. This goes at the Code of the Procedure Initialization Object */\n\n/* \nThis is the array where we are going to store the last 1200 elements, since we will not \nhave access to such long backwards history while processing daily files. In those situations\nwe only have access to the last 2 days of candles, which in 45 min for example, means 36\ncandles from the current day and 36 from the previous one. For that reason we will keep\nthis array with the last 200 candle.close values so that we overecome that limitation.\n*/\n\nvariable.last1200 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")","id":"14dcff53-0599-4529-8a5d-5cf92a5c33c8","savedPayload":{"position":{"x":26068.988582285056,"y":19728.631683145115},"targetPosition":{"x":26147.689386222704,"y":19561.425439020695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2863a8f-8f38-4c47-9f48-0bd45b628fa0","savedPayload":{"position":{"x":26147.689386222704,"y":19561.425439020695},"targetPosition":{"x":26231.89358629586,"y":19407.360220920422},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"948be5d9-da96-488a-bb15-f8cd94777231","savedPayload":{"position":{"x":26231.89358629586,"y":19407.360220920422},"targetPosition":{"x":26176.72217312134,"y":19099.118873208765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac","savedPayload":{"position":{"x":26429.58623405358,"y":19175.926796344833},"targetPosition":{"x":25764.26408653584,"y":18695.647329769585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"SMA Base 6","id":"6ace920a-3a4b-4d28-8f04-4c2ecd3dfeb8"}}},{"type":"Product Definition","name":"Base12 SMAs","code":"{\n \"codeName\": \"Base12-SMAs\",\n \"singularVariableName\": \"base12SMA\",\n \"pluralVariableName\": \"base12SMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"6ba76363-0f50-4e67-8678-3eb4fd6d07d6","savedPayload":{"position":{"x":26370.78325135892,"y":19250.013396756996},"targetPosition":{"x":26025.572014378195,"y":19250.107201618273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"92d92b3e-6870-499b-bfec-33bab220bf62","savedPayload":{"position":{"x":26305.11456652855,"y":19452.826209063034},"targetPosition":{"x":26025.572014378195,"y":19250.107201618273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"d44292f3-8960-448b-8339-32147b8bb1c3","savedPayload":{"position":{"x":26425.77346374429,"y":19600.828372427175},"targetPosition":{"x":26390.794736775002,"y":19854.165712465907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bcec1860-262e-4125-bdf4-a8f798d9d4ff","savedPayload":{"position":{"x":26390.794736775002,"y":19854.165712465907},"targetPosition":{"x":26341.22798894141,"y":20220.8110286582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"91264df6-db08-498e-a039-fec9b0cd09a5","savedPayload":{"position":{"x":26685.704528813858,"y":19700.743985375753},"targetPosition":{"x":26546.030019537462,"y":19911.289684784068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0ef8d741-e876-446e-86ac-146b4f33d8e8","savedPayload":{"position":{"x":26546.030019537462,"y":19911.289684784068},"targetPosition":{"x":26341.22798894141,"y":20220.8110286582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA12","code":"{\n \"codeName\": \"sma12\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma12","id":"c694dcde-b622-4d71-b2cf-e42e1b4934ec","savedPayload":{"position":{"x":26878.85884369711,"y":19900.67506809121},"targetPosition":{"x":26658.08718413923,"y":20032.148380433064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"daf8aa00-f032-412e-b319-e7c581611db0","savedPayload":{"position":{"x":26658.08718413923,"y":20032.148380433064},"targetPosition":{"x":26341.22798894141,"y":20220.8110286582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA24","code":"{\n \"codeName\": \"sma24\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma24","id":"445b00ba-46a1-4e79-b762-72c521223b5f","savedPayload":{"position":{"x":26965.75760281801,"y":20165.50799634642},"targetPosition":{"x":26709.22543199614,"y":20188.140940708992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"255fdffa-cdbb-428b-a54e-14448f7cda29","savedPayload":{"position":{"x":26709.22543199614,"y":20188.140940708992},"targetPosition":{"x":26341.22798894141,"y":20220.8110286582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA36","code":"{\n \"codeName\": \"sma36\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma36","id":"c9c11106-98b6-4fcb-b30b-d49263a05d95","savedPayload":{"position":{"x":26928.42792760531,"y":20441.40434297301},"targetPosition":{"x":26688.020269766585,"y":20351.056772681182},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"628c3c4f-7ef7-4008-bada-76e4edf6de42","savedPayload":{"position":{"x":26688.020269766585,"y":20351.056772681182},"targetPosition":{"x":26341.22798894141,"y":20220.8110286582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA48","code":"{\n \"codeName\": \"sma48\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma48","id":"8e1cfb60-cb51-4625-a36b-75d64381840d","savedPayload":{"position":{"x":26773.248451476516,"y":20672.670269075843},"targetPosition":{"x":26597.993499770153,"y":20489.39493851255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1aa9fd38-51e5-4158-9bb2-31dbc8f933d0","savedPayload":{"position":{"x":26597.993499770153,"y":20489.39493851255},"targetPosition":{"x":26341.22798894141,"y":20220.8110286582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA60","code":"{\n \"codeName\": \"sma60\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma60","id":"6fe04671-6298-4ef4-9ef8-779eafc1645d","savedPayload":{"position":{"x":26534.775361126525,"y":20815.90797218583},"targetPosition":{"x":26455.53156689238,"y":20572.12729496007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d76d7819-b542-4ee8-98fd-539ec3325e2c","savedPayload":{"position":{"x":26455.53156689238,"y":20572.12729496007},"targetPosition":{"x":26341.22798894141,"y":20220.8110286582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA120","code":"{\n \"codeName\": \"sma120\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma120","id":"f8abde07-3312-4983-bff2-65ed4f475a3f","savedPayload":{"position":{"x":26257.834232256428,"y":20842.173466439202},"targetPosition":{"x":26292.119446336426,"y":20586.75124185841},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0e696147-e020-4056-8ad4-40ad79cba391","savedPayload":{"position":{"x":26292.119446336426,"y":20586.75124185841},"targetPosition":{"x":26341.22798894141,"y":20220.8110286582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA240","code":"{\n \"codeName\": \"sma240\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma240","id":"1ea2c145-6dcf-4e8a-908a-b12e08a8d658","savedPayload":{"position":{"x":25996.78152453827,"y":20744.07550698568},"targetPosition":{"x":26137.605327595676,"y":20529.95137394509},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e02938c9-f5b1-49f7-8e63-f8637f6d1d4d","savedPayload":{"position":{"x":26137.605327595676,"y":20529.95137394509},"targetPosition":{"x":26341.22798894141,"y":20220.8110286582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA360","code":"{\n \"codeName\": \"sma360\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma360","id":"16ab9e8b-cb14-4a59-b7b3-0a1d13dbea5b","savedPayload":{"position":{"x":25804.604469695485,"y":20542.804381152364},"targetPosition":{"x":26023.682125318628,"y":20411.10979583233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fe671bcf-1d71-4081-a100-f4bbc59203c7","savedPayload":{"position":{"x":26023.682125318628,"y":20411.10979583233},"targetPosition":{"x":26341.22798894141,"y":20220.8110286582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA480","code":"{\n \"codeName\": \"sma480\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma480","id":"135a34fc-3cc8-4555-b1b9-c8ea03150aff","savedPayload":{"position":{"x":25718.147537106637,"y":20276.9535560804},"targetPosition":{"x":25973.181934931254,"y":20254.266568587318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"85a59bf2-d419-43c9-a287-68902b8cb199","savedPayload":{"position":{"x":25973.181934931254,"y":20254.266568587318},"targetPosition":{"x":26341.22798894141,"y":20220.8110286582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA600","code":"{\n \"codeName\": \"sma600\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma600","id":"cacf8e3b-77d3-4697-9ca5-51cff50afb6c","savedPayload":{"position":{"x":25755.246949679782,"y":20002.276176915715},"targetPosition":{"x":25995.42283770925,"y":20091.44889088305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"608a2a98-bd6e-49e0-b202-afff3553337d","savedPayload":{"position":{"x":25995.42283770925,"y":20091.44889088305},"targetPosition":{"x":26341.22798894141,"y":20220.8110286582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA1200","code":"{\n \"codeName\": \"sma1200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma1200","id":"2e1c84ea-2cb3-4936-8106-623dcdff8782","savedPayload":{"position":{"x":25898.497309711,"y":19777.929112737176},"targetPosition":{"x":26086.818262615467,"y":19953.895408650955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dda31bad-8835-446a-9015-4e15ae4cb845","savedPayload":{"position":{"x":26086.818262615467,"y":19953.895408650955},"targetPosition":{"x":26341.22798894141,"y":20220.8110286582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f46175dc-dfd2-4e1e-a60c-554867b5f0a5","savedPayload":{"position":{"x":26341.337407992658,"y":20221.72130238518},"targetPosition":{"x":26025.572014378195,"y":19250.107201618273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code. This goes at the Code of the Procedure Loop Object */\n\nlet candle = record.current // Our main dependencies are candles \nvariable.last1200.push(candle.close) // Add the current close value to the last 1200 array.\n\nif (variable.last1200.length > 1200) {\n variable.last1200.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 1200 elements.\n}\n\nvariable.sma12 = calculateSMA(12)\nvariable.sma24 = calculateSMA(24)\nvariable.sma36 = calculateSMA(36)\nvariable.sma48 = calculateSMA(48)\nvariable.sma60 = calculateSMA(60)\nvariable.sma120 = calculateSMA(120)\nvariable.sma240 = calculateSMA(240)\nvariable.sma360 = calculateSMA(360)\nvariable.sma480 = calculateSMA(480)\nvariable.sma600 = calculateSMA(600)\nvariable.sma1200 = calculateSMA(1200)\n\nfunction calculateSMA(periods) { // Having a function avoids us to repeat code.\n /* We check we have enough values to make the calculation */\n if (variable.last1200.length < periods) { return 0 } // If we dont, we define the value is zero.\n\n let sum = 0 // Initialize sum variable. \n for (let i = variable.last1200.length - periods; i < variable.last1200.length; i++) { // Iterate through the last periods\n sum = sum + variable.last1200[i]\n /*\n if (index > 18 && index < 22) { // You can debug what is going on by console logging whatever you need. \n console.log(\"index=\" + index + \" i=\" + i + \" variable.last1200.length=\" + variable.last1200.length + \" periods=\" + periods + \" sum=\" + sum + \" sum/periods=\" + (sum / periods) + \" currentValue=\" + (variable.last1200[i]))\n }\n */\n }\n let sma = sum / periods\n return sma\n}","id":"fba7176b-58ff-4bd6-95de-ad6f88de4cda","savedPayload":{"position":{"x":25983.621338377743,"y":19919.626277402214},"targetPosition":{"x":25947.16994458355,"y":19752.021945413573},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"daf2fb19-bfda-4248-a0c6-8e364fe863ee","savedPayload":{"position":{"x":25947.16994458355,"y":19752.021945413573},"targetPosition":{"x":25917.255522566178,"y":19569.34830124031},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code. This goes at the Code of the Procedure Initialization Object */\n\n/* \nThis is the array where we are going to store the last 1200 elements, since we will not \nhave access to such long backwards history while processing daily files. In those situations\nwe only have access to the last 2 days of candles, which in 45 min for example, means 36\ncandles from the current day and 36 from the previous one. For that reason we will keep\nthis array with the last 200 candle.close values so that we overecome that limitation.\n*/\n\nvariable.last1200 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")","id":"4d3f1fee-e71d-46cd-a50b-69176de5e1e8","savedPayload":{"position":{"x":25664.223250323113,"y":19798.064007261088},"targetPosition":{"x":25790.1098519307,"y":19682.70960264202},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"08365c70-c9ba-481d-abb8-62dc21067754","savedPayload":{"position":{"x":25790.1098519307,"y":19682.70960264202},"targetPosition":{"x":25917.255522566178,"y":19569.34830124031},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4aa28d66-d2c5-40d1-9b42-b6adb1e94d1c","savedPayload":{"position":{"x":25917.255522566178,"y":19569.34830124031},"targetPosition":{"x":26025.572014378195,"y":19250.107201618273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"723d28e9-a010-48c5-bda0-43a4c2343ddf","savedPayload":{"position":{"x":26246.55701768626,"y":19359.10750883948},"targetPosition":{"x":25764.26408653584,"y":18695.647329769585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition","name":"Base30 SMAs","code":"{\n \"codeName\": \"Base30-SMAs\",\n \"singularVariableName\": \"base30SMA\",\n \"pluralVariableName\": \"base30SMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"4c486321-22e0-4991-9a1c-571bada649ad","savedPayload":{"position":{"x":26163.656946617153,"y":19453.673611189606},"targetPosition":{"x":25835.497892385298,"y":19347.1593379305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"819688c9-c7bd-444b-9658-2a4379125c72","savedPayload":{"position":{"x":26038.305205242166,"y":19626.620318079786},"targetPosition":{"x":25835.497892385298,"y":19347.1593379305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"16806650-2bfb-4709-acbd-aca1549c16e8","savedPayload":{"position":{"x":26125.81281610284,"y":19814.462045321645},"targetPosition":{"x":26006.80651358422,"y":20040.20230163699},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"265d3765-cd1d-4652-a0ed-01931674a151","savedPayload":{"position":{"x":26006.80651358422,"y":20040.20230163699},"targetPosition":{"x":25835.3579732802,"y":20367.38464705418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"d0b81562-348b-433f-8524-f9bc909de69e","savedPayload":{"position":{"x":26350.486545381762,"y":20012.772816810593},"targetPosition":{"x":26138.980865650083,"y":20158.17398444321},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fe6074be-18c6-46c0-abd4-5d31bc067798","savedPayload":{"position":{"x":26138.980865650083,"y":20158.17398444321},"targetPosition":{"x":25835.3579732802,"y":20367.38464705418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA30","code":"{\n \"codeName\": \"sma30\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma30","id":"2ef589ba-7f7d-4df5-91fd-9107d67a7792","savedPayload":{"position":{"x":26458.209208465418,"y":20292.52302236221},"targetPosition":{"x":26201.138423291475,"y":20323.345545272467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"72debf77-1c4b-4e8d-9a99-96951bd6d24c","savedPayload":{"position":{"x":26201.138423291475,"y":20323.345545272467},"targetPosition":{"x":25835.3579732802,"y":20367.38464705418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA60","code":"{\n \"codeName\": \"sma60\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma60","id":"d51798bf-2373-4f5e-b6e4-56aad8117820","savedPayload":{"position":{"x":26420.425613462936,"y":20589.39048438856},"targetPosition":{"x":26181.745222764246,"y":20498.829194810787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"78e59381-fcda-4204-a70a-4113eebdbba7","savedPayload":{"position":{"x":26181.745222764246,"y":20498.829194810787},"targetPosition":{"x":25835.3579732802,"y":20367.38464705418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA90","code":"{\n \"codeName\": \"sma90\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma90","id":"a35a40dd-e5b4-4444-a8da-14eeb79e76b3","savedPayload":{"position":{"x":26249.70632922829,"y":20835.288279089043},"targetPosition":{"x":26080.496225014365,"y":20644.2060587742},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"90b3598c-8f08-4dc1-ad41-a64caf0cab39","savedPayload":{"position":{"x":26080.496225014365,"y":20644.2060587742},"targetPosition":{"x":25835.3579732802,"y":20367.38464705418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA120","code":"{\n \"codeName\": \"sma120\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma120","id":"046bdfe3-d838-425e-8cc0-e117151bdbf8","savedPayload":{"position":{"x":25984.804619167255,"y":20974.499942605034},"targetPosition":{"x":25923.523864264887,"y":20725.490433892544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aa9f7095-66e7-4e42-b6b2-d3a51e3b35d9","savedPayload":{"position":{"x":25923.523864264887,"y":20725.490433892544},"targetPosition":{"x":25835.3579732802,"y":20367.38464705418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA150","code":"{\n \"codeName\": \"sma150\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma150","id":"8129644d-2b0a-4936-8255-22dc2aada9e7","savedPayload":{"position":{"x":25685.647531802,"y":20976.45470059112},"targetPosition":{"x":25747.42422621087,"y":20725.005070581432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b0c06b10-549c-4280-aac9-0b649ede898c","savedPayload":{"position":{"x":25747.42422621087,"y":20725.005070581432},"targetPosition":{"x":25835.3579732802,"y":20367.38464705418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA300","code":"{\n \"codeName\": \"sma300\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma300","id":"23ddb87c-8211-4032-8273-222af79863b5","savedPayload":{"position":{"x":25420.812313257666,"y":20835.811383965945},"targetPosition":{"x":25589.785324273264,"y":20644.858792044804},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"38b8e859-eda7-4cd9-afc2-ee0e3ed297b7","savedPayload":{"position":{"x":25589.785324273264,"y":20644.858792044804},"targetPosition":{"x":25835.3579732802,"y":20367.38464705418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA600","code":"{\n \"codeName\": \"sma600\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma600","id":"8f07691b-ccdc-47cc-9c07-3701b61322f9","savedPayload":{"position":{"x":25251.364313162914,"y":20589.197914195036},"targetPosition":{"x":25489.58790380378,"y":20498.695225847074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cebd7a57-eebb-4e4f-9315-6f1411970e55","savedPayload":{"position":{"x":25489.58790380378,"y":20498.695225847074},"targetPosition":{"x":25835.3579732802,"y":20367.38464705418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA900","code":"{\n \"codeName\": \"sma900\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma900","id":"ed66265d-f971-448f-b395-e0c12c178173","savedPayload":{"position":{"x":25214.350872335006,"y":20292.948599865198},"targetPosition":{"x":25469.266110977405,"y":20323.394870116448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fcbefbb9-2a6d-459a-8d3b-595d71caaa88","savedPayload":{"position":{"x":25469.266110977405,"y":20323.394870116448},"targetPosition":{"x":25835.3579732802,"y":20367.38464705418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA1200","code":"{\n \"codeName\": \"sma1200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma1200","id":"3e936d3b-8f40-49da-830c-f73ea5bf271a","savedPayload":{"position":{"x":25320.02832173354,"y":20012.84860177963},"targetPosition":{"x":25531.334257636412,"y":20157.93158861053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"311d2e2d-163e-4b8e-ae99-2b2d0fbbb2aa","savedPayload":{"position":{"x":25531.334257636412,"y":20157.93158861053},"targetPosition":{"x":25835.3579732802,"y":20367.38464705418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA1500","code":"{\n \"codeName\": \"sma1500\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma1500","id":"d4db0dc9-12a2-41c6-8511-43cbfdcfb136","savedPayload":{"position":{"x":25540.60610179165,"y":19816.04186033667},"targetPosition":{"x":25664.201708003886,"y":20040.269699386317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b71b603d-38de-401d-b1df-ca20710dba64","savedPayload":{"position":{"x":25664.201708003886,"y":20040.269699386317},"targetPosition":{"x":25835.3579732802,"y":20367.38464705418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"229b4129-39f9-4f46-bbb5-a86a714023f8","savedPayload":{"position":{"x":25835.502326573744,"y":20368.71046862216},"targetPosition":{"x":25835.497892385298,"y":19347.1593379305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code. This goes at the Code of the Procedure Loop Object */\n\nlet candle = record.current // Our main dependencies are candles \nvariable.last1500.push(candle.close) // Add the current close value to the last 1500 array.\n\nif (variable.last1500.length > 1500) {\n variable.last1500.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 1500 elements.\n}\n\nvariable.sma30 = calculateSMA(30)\nvariable.sma60 = calculateSMA(60)\nvariable.sma90 = calculateSMA(90)\nvariable.sma120 = calculateSMA(120)\nvariable.sma150 = calculateSMA(150)\nvariable.sma300 = calculateSMA(300)\nvariable.sma600 = calculateSMA(600)\nvariable.sma900 = calculateSMA(900)\nvariable.sma1200 = calculateSMA(1200)\nvariable.sma1500 = calculateSMA(1500)\n\nfunction calculateSMA(periods) { // Having a function avoids us to repeat code.\n /* We check we have enough values to make the calculation */\n if (variable.last1500.length < periods) { return 0 } // If we dont, we define the value is zero.\n\n let sum = 0 // Initialize sum variable. \n for (let i = variable.last1500.length - periods; i < variable.last1500.length; i++) { // Iterate through the last periods\n sum = sum + variable.last1500[i]\n /*\n if (index > 18 && index < 22) { // You can debug what is going on by console logging whatever you need. \n console.log(\"index=\" + index + \" i=\" + i + \" variable.last1500.length=\" + variable.last1500.length + \" periods=\" + periods + \" sum=\" + sum + \" sum/periods=\" + (sum / periods) + \" currentValue=\" + (variable.last1500[i]))\n }\n */\n }\n let sma = sum / periods\n return sma\n}","id":"382c5abf-a91a-40c0-88c2-7e230e93ed44","savedPayload":{"position":{"x":25600.48414666051,"y":19961.681122918653},"targetPosition":{"x":25618.187620935463,"y":19792.07015839498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d3dab655-2db2-4d4c-a776-91a6ae116304","savedPayload":{"position":{"x":25618.187620935463,"y":19792.07015839498},"targetPosition":{"x":25635.73411432442,"y":19622.483457452014},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code. This goes at the Code of the Procedure Initialization Object */\n\n/* \nThis is the array where we are going to store the last 1500 elements, since we will not \nhave access to such long backwards history while processing daily files. In those situations\nwe only have access to the last 2 days of candles, which in 45 min for example, means 36\ncandles from the current day and 36 from the previous one. For that reason we will keep\nthis array with the last 200 candle.close values so that we overecome that limitation.\n*/\n\nvariable.last1500 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")","id":"41af43f4-4f30-404d-8d9e-3ad5e752688c","savedPayload":{"position":{"x":25324.466564046495,"y":19761.35383386906},"targetPosition":{"x":25480.21412511515,"y":19691.844027617815},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f8611aff-7f4f-4df8-a2ac-b92ef5633ad4","savedPayload":{"position":{"x":25480.21412511515,"y":19691.844027617815},"targetPosition":{"x":25635.73411432442,"y":19622.483457452014},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e8bebfde-97db-42d7-93a2-972366bc002c","savedPayload":{"position":{"x":25635.73411432442,"y":19622.483457452014},"targetPosition":{"x":25835.497892385298,"y":19347.1593379305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"607ebabd-9602-4e5c-803d-d4207dbd6794","savedPayload":{"position":{"x":26016.287294761198,"y":19477.199257185337},"targetPosition":{"x":25764.26408653584,"y":18695.647329769585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c1c6f0e0-49f7-4723-bf22-dd24dfee6102","savedPayload":{"position":{"x":25764.26408653584,"y":18695.647329769585},"targetPosition":{"x":24943.90880679387,"y":18695.646004599515},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Indicator Bot","name":"EMA","code":"{\n\"codeName\": \"EMA\",\n\"repo\": \"EMA-Indicator-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates EMAs based on SMAs\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"New Output Dataset","id":"4e72640b-d384-434c-a607-47b1c8e4c9ef","savedPayload":{"position":{"x":26062.102357360247,"y":18715.265150012787},"targetPosition":{"x":26062.102357360247,"y":18540.157666825966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"ea1af06a-2584-43f0-aecf-ec8ad9169e9c"}}},{"type":"Output Dataset","name":"New Output Dataset","id":"e554af82-9965-4a5d-a59a-3dc873526ad9","savedPayload":{"position":{"x":25896.765052692786,"y":18635.61520418281},"targetPosition":{"x":26062.102357360247,"y":18540.157666825966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"4e36a5a5-7a03-43a9-b3e0-0c5763c29199"}}},{"type":"Output Dataset","name":"New Output Dataset","id":"fcefc8e1-6900-485f-a5b0-80366450aedf","savedPayload":{"position":{"x":25914.834577056776,"y":18455.132574224797},"targetPosition":{"x":26062.102357360247,"y":18540.157666825966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"5586aa74-2ecb-4b71-83ea-d621aa400660"}}}],"id":"268cf8f3-e871-4fed-bbdb-725a070e7cb6","savedPayload":{"position":{"x":26062.102357360247,"y":18540.157666825966},"targetPosition":{"x":26044.087694311005,"y":18883.897914851892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Self","code":"{\"mainUtility\": \"Self Reference\"}","id":"6c163397-f3a4-4acc-b281-567f2809b8a0","savedPayload":{"position":{"x":26419.03025401945,"y":18481.012283964163},"targetPosition":{"x":26419.03025401945,"y":18306.5370037139},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"8e7c0f51-727f-4a28-b516-087443ee369f"}}},{"type":"Status Dependency","name":"Ending: Candles Volumes","code":"{ \n\"mainUtility\": \"Market Ending Point.\"\n}","id":"eb2d5251-f873-4785-80c8-3a75186e6fa9","savedPayload":{"position":{"x":26277.839199415415,"y":18388.053697096704},"targetPosition":{"x":26419.03025401945,"y":18306.5370037139},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Volumes: Candles","id":"7715ed1a-35f7-4b1c-ad79-fcd2486fe2ca","savedPayload":{"position":{"x":26265.969283885002,"y":18218.16721140435},"targetPosition":{"x":26419.03025401945,"y":18306.5370037139},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"id":"39426478-777d-4ef5-a72a-2ad862c979c7","savedPayload":{"position":{"x":26419.03025401945,"y":18306.5370037139},"targetPosition":{"x":26044.087694311005,"y":18883.897914851892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"8e7c0f51-727f-4a28-b516-087443ee369f","savedPayload":{"position":{"x":26350.782812929243,"y":18727.628946680186},"targetPosition":{"x":26044.087694311005,"y":18883.897914851892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes","id":"19e3e53c-0752-4cae-93bd-162e0839b32f","savedPayload":{"position":{"x":25718.948399244302,"y":18778.253753865436},"targetPosition":{"x":26044.087694311005,"y":18883.897914851892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f865a93d-38fd-433f-92e6-ccb7f2d33b05","savedPayload":{"position":{"x":26332.76814988,"y":19071.369194706116},"targetPosition":{"x":26044.087694311005,"y":18883.897914851892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"278c34a7-199d-400e-8a06-087149e3d391","savedPayload":{"position":{"x":26257.351193845483,"y":18903.442709419483},"targetPosition":{"x":25525.110567146738,"y":19276.858840856687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Calculates EMAs based on SMAs.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"New Output Dataset","id":"24f5e41a-5839-4174-8e74-2fcde5c2f6a4","savedPayload":{"position":{"x":26234.00031391961,"y":18951.332776060004},"targetPosition":{"x":26234.00031391961,"y":18767.393051968393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"e7f5899c-fc4c-412d-a8db-77c1bef8ed21"}}},{"type":"Output Dataset","name":"New Output Dataset","id":"cf348b8d-e3cb-4841-b064-6bf2a8b54062","savedPayload":{"position":{"x":26087.694324321157,"y":18851.862854447114},"targetPosition":{"x":26234.00031391961,"y":18767.393051968393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"0198fa3f-98e3-4c57-a4a4-a7a8e27905d3"}}},{"type":"Output Dataset","name":"New Output Dataset","id":"49d8444c-a216-4d81-8039-fa15683ed461","savedPayload":{"position":{"x":26083.292577188713,"y":18680.38189959785},"targetPosition":{"x":26234.00031391961,"y":18767.393051968393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"15ccbcff-318d-46db-93f2-d649b57fd52a"}}}],"id":"3864c37f-f9dc-433d-96e4-e36a6720adf1","savedPayload":{"position":{"x":26234.00031391961,"y":18767.393051968393},"targetPosition":{"x":26110.645772947097,"y":19088.74261773621},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Self","code":"{\"mainUtility\": \"Self Reference\"}","id":"2b523347-3f95-43ab-9ac8-72470000c774","savedPayload":{"position":{"x":26645.651671023643,"y":18994.741500772587},"targetPosition":{"x":26645.651671023643,"y":18655.503383808667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"fb2c8ec5-75ff-41e9-8782-60a952bd06e8"}}},{"type":"Status Dependency","name":"Starting: Exchange Raw Data","code":"{\"mainUtility\": \"Market Starting Point\"}","id":"5c6a74d3-7f45-409c-a408-fe3c67c050e9","savedPayload":{"position":{"x":26401.12100820199,"y":18900.03404663032},"targetPosition":{"x":26645.651671023643,"y":18655.503383808667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}},{"type":"Status Dependency","name":"Ending: Candles Volumes","code":"{ \n\"mainUtility\": \"Market Ending Point\"\n}","id":"dbfe665f-e805-40f4-a494-231cc265acc8","savedPayload":{"position":{"x":26297.13998928601,"y":18655.503383808667},"targetPosition":{"x":26645.651671023643,"y":18655.503383808667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}}],"dataDependencies":[{"type":"Data Dependency","name":"New Data Dependency","id":"70d56a4f-6375-456e-b797-d590ab2109a3","savedPayload":{"position":{"x":26400.405181627375,"y":18410.2568944124},"targetPosition":{"x":26645.651671023643,"y":18655.503383808667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"id":"b5b3313a-d8e6-4b64-9300-fdc6693a2cb7","savedPayload":{"position":{"x":26645.651671023643,"y":18655.503383808667},"targetPosition":{"x":26110.645772947097,"y":19088.74261773621},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"fb2c8ec5-75ff-41e9-8782-60a952bd06e8","savedPayload":{"position":{"x":26450.619930883382,"y":19034.896001006666},"targetPosition":{"x":26110.645772947097,"y":19088.74261773621},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes","id":"41fe3adc-42c9-4f5d-b757-13cedd7e0155","savedPayload":{"position":{"x":25786.46866824021,"y":18983.411091349186},"targetPosition":{"x":26110.645772947097,"y":19088.74261773621},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"e232777d-86ee-4bb4-9a6d-659f06493aa5","savedPayload":{"position":{"x":26327.265389910866,"y":19356.245566774483},"targetPosition":{"x":26110.645772947097,"y":19088.74261773621},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2","savedPayload":{"position":{"x":26337.062793450892,"y":19148.711848211136},"targetPosition":{"x":25525.110567146738,"y":19276.858840856687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Popular EMAs","code":"{\n \"codeName\": \"Popular-EMAs\",\n \"singularVariableName\": \"popularEMA\",\n \"pluralVariableName\": \"popularEMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"ea1af06a-2584-43f0-aecf-ec8ad9169e9c","savedPayload":{"position":{"x":26627.331988967635,"y":19114.73129803628},"targetPosition":{"x":26336.152242338165,"y":19405.49363264208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"e7f5899c-fc4c-412d-a8db-77c1bef8ed21","savedPayload":{"position":{"x":26742.50875730892,"y":19341.55826830984},"targetPosition":{"x":26336.152242338165,"y":19405.49363264208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"a88a6b8e-0c81-45f5-b69f-33ead2c9af2a","savedPayload":{"position":{"x":26947.068304802346,"y":19154.235590345714},"targetPosition":{"x":26998.845547705987,"y":19412.586108721574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"60b742b7-4a6b-4c3a-a924-7ae2c7c284d8","savedPayload":{"position":{"x":26998.845547705987,"y":19412.586108721574},"targetPosition":{"x":27073.31261170643,"y":19782.4318753163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"f12e6638-8bbd-4bff-b969-232c1861b45c","savedPayload":{"position":{"x":27481.74993361551,"y":19294.10524598745},"targetPosition":{"x":27312.908899612426,"y":19495.935459054566},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"87688525-3fc6-4a15-806d-fd8d0f3fd876","savedPayload":{"position":{"x":27312.908899612426,"y":19495.935459054566},"targetPosition":{"x":27073.31261170643,"y":19782.4318753163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA20","code":"{\n \"codeName\": \"ema20\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema20","id":"71d926a1-6f74-452c-a8af-2df52ccfceb2","savedPayload":{"position":{"x":27708.829998703623,"y":19795.443574302513},"targetPosition":{"x":27446.06358186404,"y":19790.00453174327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5058b626-2b62-47c3-a915-12d6d451487c","savedPayload":{"position":{"x":27446.06358186404,"y":19790.00453174327},"targetPosition":{"x":27073.31261170643,"y":19782.4318753163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA50","code":"{\n \"codeName\": \"ema50\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema50","id":"7d744a34-29cc-46fa-89c9-a3258bbf79f6","savedPayload":{"position":{"x":27460.83918706828,"y":20285.748218122706},"targetPosition":{"x":27299.414683282368,"y":20076.100107194357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1293683f-1686-47f2-8856-ce40dc753450","savedPayload":{"position":{"x":27299.414683282368,"y":20076.100107194357},"targetPosition":{"x":27073.31261170643,"y":19782.4318753163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA100","code":"{\n \"codeName\": \"ema100\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema100","id":"c0465aae-99b4-488f-801b-f0c96c30a695","savedPayload":{"position":{"x":26933.102982513657,"y":20379.745533526377},"targetPosition":{"x":26981.95441771331,"y":20141.34250260429},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2b72da7-da22-46bb-8f7b-1f2b4fdc0324","savedPayload":{"position":{"x":26981.95441771331,"y":20141.34250260429},"targetPosition":{"x":27073.31261170643,"y":19782.4318753163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA200","code":"{\n \"codeName\": \"ema200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema200","id":"4ef9d626-2bf5-4a0b-bb72-6528f0ece6eb","savedPayload":{"position":{"x":26497.352770522324,"y":20041.663915311292},"targetPosition":{"x":26736.79819602307,"y":19933.846971751667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9e3b4c1a-8cff-4999-b8af-d8403ee3f614","savedPayload":{"position":{"x":26736.79819602307,"y":19933.846971751667},"targetPosition":{"x":27073.31261170643,"y":19782.4318753163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3a6ab821-f693-4929-a0d7-ad0499d23e68","savedPayload":{"position":{"x":27433.444841806668,"y":19964.421064674138},"targetPosition":{"x":26336.152242338165,"y":19405.49363264208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current \n\nvariable.ema20 = calculateEMA(20, candle.close, variable.previousEMA20)\nvariable.previousEMA20 = variable.ema20 \n \nvariable.ema50 = calculateEMA(50, candle.close, variable.previousEMA50)\nvariable.previousEMA50 = variable.ema50 \n\nvariable.ema100 = calculateEMA(100, candle.close, variable.previousEMA100)\nvariable.previousEMA100 = variable.ema100 \n\nvariable.ema200 = calculateEMA(200, candle.close, variable.previousEMA200)\nvariable.previousEMA200 = variable.ema200 \n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}","id":"25aad3fa-6c8f-46b0-8852-07a95544d6bd","savedPayload":{"position":{"x":26867.949849230212,"y":19994.317847952025},"targetPosition":{"x":26695.34402698032,"y":19882.43745520515},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d4805ae2-446b-4e54-89c6-0b2e9df3fade","savedPayload":{"position":{"x":26695.34402698032,"y":19882.43745520515},"targetPosition":{"x":26522.615546755904,"y":19770.6513207931},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.previousEMA20 = 0\nvariable.previousEMA50 = 0\nvariable.previousEMA100 = 0\nvariable.previousEMA200 = 0","id":"c5b50764-185a-43a8-b399-62dd6d81a249","savedPayload":{"position":{"x":26502.13108302131,"y":20181.310590202032},"targetPosition":{"x":26512.37983059894,"y":19975.869941692854},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6dd7dc20-5c47-4226-8abc-8551b6bd698f","savedPayload":{"position":{"x":26512.37983059894,"y":19975.869941692854},"targetPosition":{"x":26522.615546755904,"y":19770.6513207931},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4c2e867a-f31c-4356-be35-138cdc902c15","savedPayload":{"position":{"x":26522.615546755904,"y":19770.6513207931},"targetPosition":{"x":26336.152242338165,"y":19405.49363264208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d5894707-b065-429b-ba6b-78c71e6529fe","savedPayload":{"position":{"x":26336.301489018435,"y":19405.563415214583},"targetPosition":{"x":25525.110567146738,"y":19276.858840856687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"EMA Popular","id":"79bf7438-f77a-4c8d-a450-67027d5fd8bc"}}},{"type":"Product Definition","name":"Base5 EMAs","code":"{\n \"codeName\": \"Base5-EMAs\",\n \"singularVariableName\": \"base5EMA\",\n \"pluralVariableName\": \"base5EMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"85e3f0ce-5331-4c0b-900a-e73aaf53d96e","savedPayload":{"position":{"x":26365.832568767946,"y":19351.973306909164},"targetPosition":{"x":26052.603211640828,"y":19512.117352229994},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"e04edb48-09ab-4f92-beb7-14ba647de7d6","savedPayload":{"position":{"x":26399.726030716654,"y":19565.608557511856},"targetPosition":{"x":26052.603211640828,"y":19512.117352229994},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"6d1e00cd-ea21-4c5d-9f21-bbe4e18eaaa1","savedPayload":{"position":{"x":26584.32509825119,"y":19654.68801564461},"targetPosition":{"x":26677.110664320437,"y":19901.619491014957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7804f5d6-913b-48d3-941a-10135819f0d7","savedPayload":{"position":{"x":26677.110664320437,"y":19901.619491014957},"targetPosition":{"x":26808.65325895873,"y":20248.25327798495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"615487b1-0964-4bfc-800e-f8d3471dfeb0","savedPayload":{"position":{"x":26844.18960391296,"y":19613.87875935657},"targetPosition":{"x":26829.35835675674,"y":19876.530437272737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5aaf85b9-35bd-47f1-a2a4-dcfa881bc542","savedPayload":{"position":{"x":26829.35835675674,"y":19876.530437272737},"targetPosition":{"x":26808.65325895873,"y":20248.25327798495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA5","code":"{\n \"codeName\": \"ema5\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema5","id":"1abd53a1-2924-4db2-b50c-06e36aa91e47","savedPayload":{"position":{"x":27099.09079671337,"y":19681.76612492741},"targetPosition":{"x":26978.518837725485,"y":19916.821464328954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4912e0cb-1bba-4750-a063-d8d205091281","savedPayload":{"position":{"x":26978.518837725485,"y":19916.821464328954},"targetPosition":{"x":26808.65325895873,"y":20248.25327798495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA10","code":"{\n \"codeName\": \"ema10\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema10","id":"00ca97c2-f4e9-4d08-af83-3fee7e5d1887","savedPayload":{"position":{"x":27303.270253097944,"y":19848.87714744996},"targetPosition":{"x":27099.24530713789,"y":20013.574705205065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f7e888a6-a986-45fe-804d-c4cba934bd9b","savedPayload":{"position":{"x":27099.24530713789,"y":20013.574705205065},"targetPosition":{"x":26808.65325895873,"y":20248.25327798495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA15","code":"{\n \"codeName\": \"ema15\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema15","id":"f259ce57-d1c2-4196-8e55-dae9f1eb78f5","savedPayload":{"position":{"x":27424.26452591066,"y":20083.566222152298},"targetPosition":{"x":27168.19684945758,"y":20152.009792003835},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9720b3bd-fcb9-4997-9fe8-9d8682aa9dc9","savedPayload":{"position":{"x":27168.19684945758,"y":20152.009792003835},"targetPosition":{"x":26808.65325895873,"y":20248.25327798495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA20","code":"{\n \"codeName\": \"ema20\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema20","id":"5c7d8482-a86c-4ebc-8524-31b1a73900c3","savedPayload":{"position":{"x":27437.09153102265,"y":20346.74199357993},"targetPosition":{"x":27177.423115555546,"y":20306.000941157246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"716e98b8-640e-4653-9c50-ca0286c851c0","savedPayload":{"position":{"x":27177.423115555546,"y":20306.000941157246},"targetPosition":{"x":26808.65325895873,"y":20248.25327798495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA25","code":"{\n \"codeName\": \"ema25\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema25","id":"031e3d2f-b487-4df2-9892-845d3e43916a","savedPayload":{"position":{"x":27343.36212694367,"y":20594.3801195651},"targetPosition":{"x":27120.707360831653,"y":20450.59790990431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"56be5d1d-2bd8-42dd-9861-729f4bb72ccf","savedPayload":{"position":{"x":27120.707360831653,"y":20450.59790990431},"targetPosition":{"x":26808.65325895873,"y":20248.25327798495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA50","code":"{\n \"codeName\": \"ema50\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema50","id":"309f068f-74e5-4405-8267-418ea12ca20d","savedPayload":{"position":{"x":27158.07466290211,"y":20780.714308561743},"targetPosition":{"x":27012.84053088558,"y":20559.34550803545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ed5849ae-b0fe-4915-b8c3-8bdb004e5acf","savedPayload":{"position":{"x":27012.84053088558,"y":20559.34550803545},"targetPosition":{"x":26808.65325895873,"y":20248.25327798495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA100","code":"{\n \"codeName\": \"ema100\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema100","id":"6b164582-e3a2-4ea0-bc0a-e362929d556f","savedPayload":{"position":{"x":26944.691037576253,"y":20891.097616985808},"targetPosition":{"x":26868.672455922162,"y":20615.56313902641},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7f690611-834a-4048-bf59-5685995167e9","savedPayload":{"position":{"x":26868.672455922162,"y":20615.56313902641},"targetPosition":{"x":26808.65325895873,"y":20248.25327798495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA150","code":"{\n \"codeName\": \"ema150\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema150","id":"829731e3-421a-4b49-ac4d-69cc76cdbfab","savedPayload":{"position":{"x":26664.38548073494,"y":20869.59746146423},"targetPosition":{"x":26714.197863340596,"y":20607.361776863476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6b51dbbf-76eb-484b-9535-6043984a7ed6","savedPayload":{"position":{"x":26714.197863340596,"y":20607.361776863476},"targetPosition":{"x":26808.65325895873,"y":20248.25327798495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA200","code":"{\n \"codeName\": \"ema200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema200","id":"3786f9d4-064e-43ba-8098-d336cd64cfb4","savedPayload":{"position":{"x":26409.816592522155,"y":20735.595335313228},"targetPosition":{"x":26576.193747383324,"y":20536.491005853277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9f96cb9c-ac78-4d23-80e7-650dcff0a56a","savedPayload":{"position":{"x":26576.193747383324,"y":20536.491005853277},"targetPosition":{"x":26808.65325895873,"y":20248.25327798495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA250","code":"{\n \"codeName\": \"ema250\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema250","id":"710f1d8e-a59f-41d9-9576-e73e292d5cac","savedPayload":{"position":{"x":26257.06550865582,"y":20535.13654498732},"targetPosition":{"x":26479.39806720962,"y":20416.25047722235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9e3fc138-8765-46af-95a3-6ee316f49a72","savedPayload":{"position":{"x":26479.39806720962,"y":20416.25047722235},"targetPosition":{"x":26808.65325895873,"y":20248.25327798495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA500","code":"{\n \"codeName\": \"ema500\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema500","id":"8be9f984-f4ad-471c-885d-b0291c74f04f","savedPayload":{"position":{"x":26178.937854049258,"y":20278.6297577463},"targetPosition":{"x":26439.918586533502,"y":20266.295799466203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"05a21cb3-24bc-42cf-8269-62f14e8f3ed1","savedPayload":{"position":{"x":26439.918586533502,"y":20266.295799466203},"targetPosition":{"x":26808.65325895873,"y":20248.25327798495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA1000","code":"{\n \"codeName\": \"ema1000\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema1000","id":"1001e9de-822a-4a75-9526-390dc6be8fe7","savedPayload":{"position":{"x":26218.90736709688,"y":20021.04972828966},"targetPosition":{"x":26464.588496948036,"y":20113.61800691105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cc878593-3f3d-4533-9ed1-a7c7fd0cdd99","savedPayload":{"position":{"x":26464.588496948036,"y":20113.61800691105},"targetPosition":{"x":26808.65325895873,"y":20248.25327798495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7133bdf5-a6d6-4ca5-bc27-390fe276eca6","savedPayload":{"position":{"x":26799.709300112576,"y":20247.03485908959},"targetPosition":{"x":26052.603211640828,"y":19512.117352229994},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current \n\nvariable.ema5 = calculateEMA(5, candle.close, variable.previousEMA5)\nvariable.previousEMA5 = variable.ema5\n\nvariable.ema10 = calculateEMA(10, candle.close, variable.previousEMA10)\nvariable.previousEMA10 = variable.ema10\n\nvariable.ema15 = calculateEMA(15, candle.close, variable.previousEMA15)\nvariable.previousEMA15 = variable.ema15\n\nvariable.ema20 = calculateEMA(20, candle.close, variable.previousEMA20)\nvariable.previousEMA20 = variable.ema20\n\nvariable.ema25 = calculateEMA(25, candle.close, variable.previousEMA25)\nvariable.previousEMA25 = variable.ema25\n\nvariable.ema50 = calculateEMA(50, candle.close, variable.previousEMA50)\nvariable.previousEMA50 = variable.ema50\n\nvariable.ema100 = calculateEMA(100, candle.close, variable.previousEMA100)\nvariable.previousEMA100 = variable.ema100\n\nvariable.ema150 = calculateEMA(150, candle.close, variable.previousEMA150)\nvariable.previousEMA150 = variable.ema150\n\nvariable.ema200 = calculateEMA(200, candle.close, variable.previousEMA200)\nvariable.previousEMA200 = variable.ema200\n\nvariable.ema250 = calculateEMA(250, candle.close, variable.previousEMA250)\nvariable.previousEMA250 = variable.ema250\n\nvariable.ema500 = calculateEMA(500, candle.close, variable.previousEMA500)\nvariable.previousEMA500 = variable.ema500\n\nvariable.ema1000 = calculateEMA(1000, candle.close, variable.previousEMA1000)\nvariable.previousEMA1000 = variable.ema1000\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}\n","id":"3ea21697-ef5d-421a-825c-db6f04a041ce","savedPayload":{"position":{"x":26407.597262067262,"y":20091.56912837011},"targetPosition":{"x":26289.208897347882,"y":19959.761551181316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d955ad88-0ca4-443b-8d4e-fa0c322d7797","savedPayload":{"position":{"x":26289.208897347882,"y":19959.761551181316},"targetPosition":{"x":26162.802015917656,"y":19813.384973004908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.previousEMA5 = 0\nvariable.previousEMA10 = 0\nvariable.previousEMA15 = 0\nvariable.previousEMA20 = 0\nvariable.previousEMA25 = 0\nvariable.previousEMA50 = 0\nvariable.previousEMA100 = 0\nvariable.previousEMA150 = 0\nvariable.previousEMA200 = 0\nvariable.previousEMA250 = 0\nvariable.previousEMA500 = 0\nvariable.previousEMA1000 = 0","id":"b951bfdc-9216-4494-8bcf-66099ea9eb8f","savedPayload":{"position":{"x":26049.76627633421,"y":20157.05998416027},"targetPosition":{"x":26102.892602181113,"y":19980.77018721487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2aa36b6f-bde7-433d-a7b6-e646b19e2c20","savedPayload":{"position":{"x":26102.892602181113,"y":19980.77018721487},"targetPosition":{"x":26162.802015917656,"y":19813.384973004908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"54d9ab04-cfe7-433e-8c85-36a511b38d6d","savedPayload":{"position":{"x":26162.802015917656,"y":19813.384973004908},"targetPosition":{"x":26052.603211640828,"y":19512.117352229994},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9a37881e-7d9a-4279-95b2-8743de82eec5","savedPayload":{"position":{"x":26256.727635931235,"y":19649.59702661563},"targetPosition":{"x":25525.110567146738,"y":19276.858840856687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition","name":"Base6 EMAs","code":"{\n \"codeName\": \"Base6-EMAs\",\n \"singularVariableName\": \"base6EMA\",\n \"pluralVariableName\": \"base6EMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"6b6840f7-3b76-474a-9d27-9515cbcd6499","savedPayload":{"position":{"x":26714.491973788892,"y":19854.868130760355},"targetPosition":{"x":26308.486560292953,"y":19919.107512373866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"ef3d5a7d-11eb-4ead-8e24-49ac7c80b0c7","savedPayload":{"position":{"x":26674.671537571947,"y":20105.799557701393},"targetPosition":{"x":26308.486560292953,"y":19919.107512373866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"611ac809-a75a-4550-b9a7-2f5f43cae1e8","savedPayload":{"position":{"x":26386.121324713335,"y":20030.48729216705},"targetPosition":{"x":26398.450503977867,"y":20292.21799655919},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"77290003-4665-4c78-bce6-7cb50a44bb31","savedPayload":{"position":{"x":26398.450503977867,"y":20292.21799655919},"targetPosition":{"x":26414.879503431614,"y":20623.47287311717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"59bd5c2f-dd37-4724-8b40-593ba56967ba","savedPayload":{"position":{"x":26629.819153161563,"y":20068.989456709864},"targetPosition":{"x":26535.02542654125,"y":20313.476747772995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"70c54561-94ce-4d2a-a56e-cf1cd4d2a2f5","savedPayload":{"position":{"x":26535.02542654125,"y":20313.476747772995},"targetPosition":{"x":26414.879503431614,"y":20623.47287311717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA6","code":"{\n \"codeName\": \"ema6\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema6","id":"330b3cad-7015-4691-98ff-e6c0aaeaa807","savedPayload":{"position":{"x":26836.69068730526,"y":20203.34270689693},"targetPosition":{"x":26650.27938841249,"y":20388.909368288383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a7e48821-628f-4393-9272-055bcc8ea5f7","savedPayload":{"position":{"x":26650.27938841249,"y":20388.909368288383},"targetPosition":{"x":26414.879503431614,"y":20623.47287311717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA12","code":"{\n \"codeName\": \"ema12\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema12","id":"7679a1d7-49b9-4798-82d2-f00dbfd7db05","savedPayload":{"position":{"x":26971.89041410895,"y":20410.44516182024},"targetPosition":{"x":26725.56637292862,"y":20504.77603986634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"53cda9a0-2acf-4fa9-b52b-c860da5dbb32","savedPayload":{"position":{"x":26725.56637292862,"y":20504.77603986634},"targetPosition":{"x":26414.879503431614,"y":20623.47287311717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA18","code":"{\n \"codeName\": \"ema18\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema18","id":"092a466e-c714-41b3-8053-a4c060520f3c","savedPayload":{"position":{"x":27010.410393693546,"y":20654.426771300903},"targetPosition":{"x":26747.77412697971,"y":20640.793561442093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"446296f9-21fa-4a92-bc49-23fb81af896b","savedPayload":{"position":{"x":26747.77412697971,"y":20640.793561442093},"targetPosition":{"x":26414.879503431614,"y":20623.47287311717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA24","code":"{\n \"codeName\": \"ema24\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema24","id":"f666cf13-3e37-4649-a2fc-338fabb1f7d0","savedPayload":{"position":{"x":26945.788618969473,"y":20893.386752324768},"targetPosition":{"x":26712.052529309687,"y":20774.406601138147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"518927a0-e986-4c9e-a645-75c02c2f571b","savedPayload":{"position":{"x":26712.052529309687,"y":20774.406601138147},"targetPosition":{"x":26414.879503431614,"y":20623.47287311717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA30","code":"{\n \"codeName\": \"ema30\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema30","id":"3c76eaaf-56ac-4e91-9ee5-11b32219d2ea","savedPayload":{"position":{"x":26790.43663051653,"y":21085.27085051879},"targetPosition":{"x":26624.63557275755,"y":20881.62692712626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3b056114-3148-432d-908e-d82df0355b7f","savedPayload":{"position":{"x":26624.63557275755,"y":20881.62692712626},"targetPosition":{"x":26414.879503431614,"y":20623.47287311717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA60","code":"{\n \"codeName\": \"ema60\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema60","id":"ee78d4d5-f202-4d8e-ae88-eea38f2d0bc0","savedPayload":{"position":{"x":26571.3790738193,"y":21198.268532857135},"targetPosition":{"x":26502.123822865127,"y":20943.668964668857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"83802e58-4437-4ddc-b329-9ae962866387","savedPayload":{"position":{"x":26502.123822865127,"y":20943.668964668857},"targetPosition":{"x":26414.879503431614,"y":20623.47287311717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA120","code":"{\n \"codeName\": \"ema120\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema120","id":"ab81fc7a-4873-49d2-a3ef-c9c1eed99dba","savedPayload":{"position":{"x":26352.443636253698,"y":21201.119736669927},"targetPosition":{"x":26360.67400063592,"y":20949.49654602359},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bec21f4d-ac0c-4b70-a565-16d065d1e89c","savedPayload":{"position":{"x":26360.67400063592,"y":20949.49654602359},"targetPosition":{"x":26414.879503431614,"y":20623.47287311717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA180","code":"{\n \"codeName\": \"ema180\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema180","id":"ce0ce81c-9577-4cc6-8edd-ad99c52916aa","savedPayload":{"position":{"x":26098.68779407947,"y":21134.730000391628},"targetPosition":{"x":26236.028303494153,"y":20902.106127562914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7318a961-0663-4a33-9295-21a8ab990854","savedPayload":{"position":{"x":26236.028303494153,"y":20902.106127562914},"targetPosition":{"x":26414.879503431614,"y":20623.47287311717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA240","code":"{\n \"codeName\": \"ema240\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema240","id":"f9c4fe37-e76d-4601-9933-ce1ad3e8ad3d","savedPayload":{"position":{"x":25927.70719003481,"y":20959.00310051237},"targetPosition":{"x":26138.440068228287,"y":20803.372765470012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b2bfa489-cb63-498e-8a80-a82ebf19d0e6","savedPayload":{"position":{"x":26138.440068228287,"y":20803.372765470012},"targetPosition":{"x":26414.879503431614,"y":20623.47287311717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA300","code":"{\n \"codeName\": \"ema300\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema300","id":"8b93fa9d-ea11-4654-a6ac-70411f0db75a","savedPayload":{"position":{"x":25836.31806962668,"y":20726.70709634862},"targetPosition":{"x":26095.22275998499,"y":20686.164301244517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a6926058-2ae5-454e-b696-b9d49162e901","savedPayload":{"position":{"x":26095.22275998499,"y":20686.164301244517},"targetPosition":{"x":26414.879503431614,"y":20623.47287311717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA600","code":"{\n \"codeName\": \"ema600\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema600","id":"b67f8d22-c54d-4a21-a726-a8975c10d710","savedPayload":{"position":{"x":25843.410623220512,"y":20466.62561040282},"targetPosition":{"x":26096.45093598758,"y":20537.043946876252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cd299cac-3be1-4899-8816-70baccd30168","savedPayload":{"position":{"x":26096.45093598758,"y":20537.043946876252},"targetPosition":{"x":26414.879503431614,"y":20623.47287311717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA1200","code":"{\n \"codeName\": \"ema1200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema1200","id":"f7b1d5d4-86c8-4a90-a98a-774fe1171e73","savedPayload":{"position":{"x":25955.808192649314,"y":20252.540468082785},"targetPosition":{"x":26158.09296488689,"y":20416.972001337395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"717ba1d7-3b27-4f87-8e25-c2a26f435e67","savedPayload":{"position":{"x":26158.09296488689,"y":20416.972001337395},"targetPosition":{"x":26414.879503431614,"y":20623.47287311717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"003162cf-ab76-4dea-ac72-a4dd3a0e87ac","savedPayload":{"position":{"x":26867.771316814433,"y":21016.7748064026},"targetPosition":{"x":26308.486560292953,"y":19919.107512373866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current \n\nvariable.ema6 = calculateEMA(6, candle.close, variable.previousEMA6)\nvariable.previousEMA6 = variable.ema6\n\nvariable.ema12 = calculateEMA(12, candle.close, variable.previousEMA12)\nvariable.previousEMA12 = variable.ema12\n\nvariable.ema18 = calculateEMA(18, candle.close, variable.previousEMA18)\nvariable.previousEMA18 = variable.ema18\n\nvariable.ema24 = calculateEMA(24, candle.close, variable.previousEMA24)\nvariable.previousEMA24 = variable.ema24\n\nvariable.ema30 = calculateEMA(30, candle.close, variable.previousEMA30)\nvariable.previousEMA30 = variable.ema30\n\nvariable.ema60 = calculateEMA(60, candle.close, variable.previousEMA60)\nvariable.previousEMA60 = variable.ema60\n\nvariable.ema120 = calculateEMA(120, candle.close, variable.previousEMA120)\nvariable.previousEMA120 = variable.ema120\n\nvariable.ema180 = calculateEMA(180, candle.close, variable.previousEMA180)\nvariable.previousEMA180 = variable.ema180\n\nvariable.ema240 = calculateEMA(240, candle.close, variable.previousEMA240)\nvariable.previousEMA240 = variable.ema240\n\nvariable.ema300 = calculateEMA(300, candle.close, variable.previousEMA300)\nvariable.previousEMA300 = variable.ema300\n\nvariable.ema600 = calculateEMA(600, candle.close, variable.previousEMA600)\nvariable.previousEMA600 = variable.ema600\n\nvariable.ema1200 = calculateEMA(1200, candle.close, variable.previousEMA1200)\nvariable.previousEMA1200 = variable.ema1200\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}","id":"49789f74-3691-45b3-8c29-9a72500ae81c","savedPayload":{"position":{"x":26391.546536805137,"y":20707.86229136643},"targetPosition":{"x":26317.950962310704,"y":20515.974864095813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ed1c9899-0b00-4cc5-b30d-faefdbe914d6","savedPayload":{"position":{"x":26317.950962310704,"y":20515.974864095813},"targetPosition":{"x":26244.257765405076,"y":20324.145053935088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.previousEMA6 = 0\nvariable.previousEMA12 = 0\nvariable.previousEMA18 = 0\nvariable.previousEMA24 = 0\nvariable.previousEMA30 = 0\nvariable.previousEMA60 = 0\nvariable.previousEMA120 = 0\nvariable.previousEMA180 = 0\nvariable.previousEMA240 = 0\nvariable.previousEMA300 = 0\nvariable.previousEMA600 = 0\nvariable.previousEMA1200 = 0","id":"db307137-4eec-41a0-93ca-af5623c7ecf5","savedPayload":{"position":{"x":25985.802711945682,"y":20643.67606971672},"targetPosition":{"x":26115.09046085367,"y":20483.846168653225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2c17eb75-3069-47ad-b303-be44390e4736","savedPayload":{"position":{"x":26115.09046085367,"y":20483.846168653225},"targetPosition":{"x":26244.257765405076,"y":20324.145053935088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"bd1f404b-64bb-4f2e-95f6-8d52f40bebad","savedPayload":{"position":{"x":26244.257765405076,"y":20324.145053935088},"targetPosition":{"x":26308.486560292953,"y":19919.107512373866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e4267570-575b-4e59-9667-cb78aaae052c","savedPayload":{"position":{"x":26105.8349266137,"y":19857.39081595544},"targetPosition":{"x":25525.110567146738,"y":19276.858840856687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition","name":"Base7 EMAs","code":"{\n \"codeName\": \"Base7-EMAs\",\n \"singularVariableName\": \"base7EMA\",\n \"pluralVariableName\": \"base7EMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"4e36a5a5-7a03-43a9-b3e0-0c5763c29199","savedPayload":{"position":{"x":26303.854794310355,"y":20072.61271159919},"targetPosition":{"x":25897.809580012952,"y":20008.404272942706},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"15ccbcff-318d-46db-93f2-d649b57fd52a","savedPayload":{"position":{"x":26188.347501406683,"y":20299.161074161275},"targetPosition":{"x":25897.809580012952,"y":20008.404272942706},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"b91e2094-b8f7-4f7f-a956-30de55c693b7","savedPayload":{"position":{"x":26078.62252288038,"y":20239.450358813065},"targetPosition":{"x":26009.672239684845,"y":20492.390100067692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5163d7f4-3b6c-41c3-b7f6-ec13109fcb0e","savedPayload":{"position":{"x":26009.672239684845,"y":20492.390100067692},"targetPosition":{"x":25912.868684449062,"y":20851.218880789933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"ea560ee8-06c9-4348-a5b4-24992035245e","savedPayload":{"position":{"x":26313.468241302333,"y":20358.94462998634},"targetPosition":{"x":26147.93313981731,"y":20562.2562006243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4b5dcfda-66ec-4a20-9c4c-0718b51cf761","savedPayload":{"position":{"x":26147.93313981731,"y":20562.2562006243},"targetPosition":{"x":25912.868684449062,"y":20851.218880789933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA7","code":"{\n \"codeName\": \"ema7\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema7","id":"90e20354-4dd5-4e56-aaf5-cf725f02c1e6","savedPayload":{"position":{"x":26479.516054066335,"y":20563.856945452433},"targetPosition":{"x":26245.32412170723,"y":20682.55368195379},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4adf5737-3d1a-4610-9a31-89faddbe679e","savedPayload":{"position":{"x":26245.32412170723,"y":20682.55368195379},"targetPosition":{"x":25912.868684449062,"y":20851.218880789933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA14","code":"{\n \"codeName\": \"ema14\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema14","id":"b158c3b7-a93f-4e13-8d80-dff1a7172416","savedPayload":{"position":{"x":26547.482926579152,"y":20818.51937847067},"targetPosition":{"x":26285.549737308003,"y":20831.89608214096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6c0f0982-caf3-4c7e-a729-54c511ffb65e","savedPayload":{"position":{"x":26285.549737308003,"y":20831.89608214096},"targetPosition":{"x":25912.868684449062,"y":20851.218880789933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA21","code":"{\n \"codeName\": \"ema21\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema21","id":"3ce74000-2892-4b42-a12e-c8efc1504710","savedPayload":{"position":{"x":26510.858725286238,"y":21081.018802583847},"targetPosition":{"x":26265.683524338237,"y":20986.913698049626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ff999b95-7623-4eee-b11c-f53dae69f69c","savedPayload":{"position":{"x":26265.683524338237,"y":20986.913698049626},"targetPosition":{"x":25912.868684449062,"y":20851.218880789933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA28","code":"{\n \"codeName\": \"ema28\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema28","id":"95ccd057-5e33-4b72-a7b0-e44479f3b195","savedPayload":{"position":{"x":26362.566893552314,"y":21300.460978606214},"targetPosition":{"x":26176.651943961428,"y":21114.739736878335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a30ef925-4ab9-45f6-98f3-6723e57fbf97","savedPayload":{"position":{"x":26176.651943961428,"y":21114.739736878335},"targetPosition":{"x":25912.868684449062,"y":20851.218880789933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA35","code":"{\n \"codeName\": \"ema35\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema35","id":"83513896-dfd7-45a8-aa9a-1922dc9b5b97","savedPayload":{"position":{"x":26142.120846053986,"y":21444.545019102025},"targetPosition":{"x":26047.35037060983,"y":21198.545560355917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2d2b734-e754-4b6c-856b-053eb5b13694","savedPayload":{"position":{"x":26047.35037060983,"y":21198.545560355917},"targetPosition":{"x":25912.868684449062,"y":20851.218880789933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA70","code":"{\n \"codeName\": \"ema70\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema70","id":"23ca8b8e-400b-4638-946c-c871a632d17b","savedPayload":{"position":{"x":25881.123475836626,"y":21485.476602080285},"targetPosition":{"x":25894.013177051955,"y":21223.541247744593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"863c717d-d171-4616-ac79-dd4a5956bfb5","savedPayload":{"position":{"x":25894.013177051955,"y":21223.541247744593},"targetPosition":{"x":25912.868684449062,"y":20851.218880789933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA140","code":"{\n \"codeName\": \"ema140\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema140","id":"fb446f49-e024-4246-9783-d41ea25a8a63","savedPayload":{"position":{"x":25629.169502651082,"y":21420.617611751368},"targetPosition":{"x":25748.818914075524,"y":21185.189132038555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ba2fbf20-a074-4d89-b1f8-2e00f141b25e","savedPayload":{"position":{"x":25748.818914075524,"y":21185.189132038555},"targetPosition":{"x":25912.868684449062,"y":20851.218880789933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EM210","code":"{\n \"codeName\": \"ema210\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema210","id":"dd3ed495-e64d-4b76-ba8a-8a6fbaebc223","savedPayload":{"position":{"x":25422.3078912756,"y":21252.33305043982},"targetPosition":{"x":25625.386184431954,"y":21085.444174230102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fbc7524a-d8ff-40c4-9691-1397bd774535","savedPayload":{"position":{"x":25625.386184431954,"y":21085.444174230102},"targetPosition":{"x":25912.868684449062,"y":20851.218880789933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA280","code":"{\n \"codeName\": \"ema280\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema280","id":"45655778-7860-46a8-9ee1-12ab9d4f463b","savedPayload":{"position":{"x":25309.80957172015,"y":21033.15124349289},"targetPosition":{"x":25554.5799962661,"y":20946.832864676773},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"49670f83-5516-4fed-bfc9-3ea4ac3a4865","savedPayload":{"position":{"x":25554.5799962661,"y":20946.832864676773},"targetPosition":{"x":25912.868684449062,"y":20851.218880789933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA350","code":"{\n \"codeName\": \"ema350\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema350","id":"6203288d-a807-49ee-a209-4466b959be33","savedPayload":{"position":{"x":25292.57814710979,"y":20774.099615321},"targetPosition":{"x":25546.94908255217,"y":20794.13659051575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4f06f627-f385-494a-bb6a-a06c62d0d20f","savedPayload":{"position":{"x":25546.94908255217,"y":20794.13659051575},"targetPosition":{"x":25912.868684449062,"y":20851.218880789933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA700","code":"{\n \"codeName\": \"ema700\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema700","id":"1663af80-49b7-4593-ad91-6c79fc61f61c","savedPayload":{"position":{"x":25384.01665305714,"y":20506.645812823695},"targetPosition":{"x":25602.189922721922,"y":20648.707489529123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b3810873-e8ea-4466-b011-095b648f0064","savedPayload":{"position":{"x":25602.189922721922,"y":20648.707489529123},"targetPosition":{"x":25912.868684449062,"y":20851.218880789933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA1400","code":"{\n \"codeName\": \"ema1400\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema1400","id":"92eee4c6-788b-4aa2-8608-5a026f9f5590","savedPayload":{"position":{"x":25566.981447069193,"y":20322.001067789373},"targetPosition":{"x":25708.83757478792,"y":20541.60552306102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"26a199f6-c167-4de7-9513-0d9c453d8108","savedPayload":{"position":{"x":25708.83757478792,"y":20541.60552306102},"targetPosition":{"x":25912.868684449062,"y":20851.218880789933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e78e6e7a-03db-4e3b-ae8e-b1c309b6ec9e","savedPayload":{"position":{"x":26090.462947470638,"y":21225.10118433443},"targetPosition":{"x":25897.809580012952,"y":20008.404272942706},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current \n\nvariable.ema7 = calculateEMA(7, candle.close, variable.previousEMA7)\nvariable.previousEMA7 = variable.ema7\n\nvariable.ema14 = calculateEMA(14, candle.close, variable.previousEMA14)\nvariable.previousEMA14 = variable.ema14\n\nvariable.ema21 = calculateEMA(21, candle.close, variable.previousEMA21)\nvariable.previousEMA21 = variable.ema21\n\nvariable.ema28 = calculateEMA(28, candle.close, variable.previousEMA28)\nvariable.previousEMA28 = variable.ema28\n\nvariable.ema35 = calculateEMA(35, candle.close, variable.previousEMA35)\nvariable.previousEMA35 = variable.ema35\n\nvariable.ema70 = calculateEMA(70, candle.close, variable.previousEMA70)\nvariable.previousEMA70 = variable.ema70\n\nvariable.ema140 = calculateEMA(140, candle.close, variable.previousEMA140)\nvariable.previousEMA140 = variable.ema140\n\nvariable.ema210 = calculateEMA(210, candle.close, variable.previousEMA210)\nvariable.previousEMA210 = variable.ema210\n\nvariable.ema280 = calculateEMA(280, candle.close, variable.previousEMA280)\nvariable.previousEMA280 = variable.ema280\n\nvariable.ema350 = calculateEMA(350, candle.close, variable.previousEMA350)\nvariable.previousEMA350 = variable.ema350\n\nvariable.ema700 = calculateEMA(700, candle.close, variable.previousEMA700)\nvariable.previousEMA700 = variable.ema700\n\nvariable.ema1400 = calculateEMA(1400, candle.close, variable.previousEMA1400)\nvariable.previousEMA1400 = variable.ema1400\n\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}","id":"9eb652ba-7df8-41a2-bc5f-c6a1922d8b9c","savedPayload":{"position":{"x":25733.224920638633,"y":20784.57686369837},"targetPosition":{"x":25722.565042760998,"y":20579.294908480548},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"659c5fa3-33f6-4127-b4f0-dc1bb0c25691","savedPayload":{"position":{"x":25722.565042760998,"y":20579.294908480548},"targetPosition":{"x":25711.789854674946,"y":20374.025773506273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.previousEMA7 = 0\nvariable.previousEMA14 = 0\nvariable.previousEMA21 = 0\nvariable.previousEMA28 = 0\nvariable.previousEMA35 = 0\nvariable.previousEMA70 = 0\nvariable.previousEMA140 = 0\nvariable.previousEMA210 = 0\nvariable.previousEMA280 = 0\nvariable.previousEMA350 = 0\nvariable.previousEMA700 = 0\nvariable.previousEMA1400 = 0","id":"03253e10-8b5a-4d6d-abc1-1b171138444c","savedPayload":{"position":{"x":25367.19341967189,"y":20598.04932041775},"targetPosition":{"x":25539.573992471946,"y":20485.992979969822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"07d4aaa2-43ba-42a3-9a5b-73e5866c1307","savedPayload":{"position":{"x":25539.573992471946,"y":20485.992979969822},"targetPosition":{"x":25711.789854674946,"y":20374.025773506273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"91a31871-1901-4a45-9b00-c5aa30a37bf2","savedPayload":{"position":{"x":25711.789854674946,"y":20374.025773506273},"targetPosition":{"x":25897.809580012952,"y":20008.404272942706},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984","savedPayload":{"position":{"x":25898.207684765115,"y":20008.703651578024},"targetPosition":{"x":25525.110567146738,"y":19276.858840856687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"EMA Base 7","id":"a52a9764-3ef2-44e6-82bd-e6538058119d"}}},{"type":"Product Definition","name":"Base11 EMAs","code":"{\n \"codeName\": \"Base11-EMAs\",\n \"singularVariableName\": \"base11EMA\",\n \"pluralVariableName\": \"base11EMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"5586aa74-2ecb-4b71-83ea-d621aa400660","savedPayload":{"position":{"x":26019.733201770436,"y":20274.275291256483},"targetPosition":{"x":25653.460996461272,"y":20087.74798934222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"0198fa3f-98e3-4c57-a4a4-a7a8e27905d3","savedPayload":{"position":{"x":25839.896090736132,"y":20454.035141301803},"targetPosition":{"x":25653.460996461272,"y":20087.74798934222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"b0559af0-2d8b-401c-8619-1eb20942ec2a","savedPayload":{"position":{"x":25900.564716329045,"y":20544.428878266546},"targetPosition":{"x":25688.014936286487,"y":20697.962504688992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"33f46215-3b1a-422a-9305-89c6ffb342f6","savedPayload":{"position":{"x":25688.014936286487,"y":20697.962504688992},"targetPosition":{"x":25386.657142740118,"y":20915.95737269195},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"7bfaab7e-73a5-4086-9eb8-d4a6fdfbbbcf","savedPayload":{"position":{"x":26013.32765601795,"y":21015.5618330196},"targetPosition":{"x":25754.522880055847,"y":20974.426370839345},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6155e3b0-2648-407e-b085-4eac778ca3e8","savedPayload":{"position":{"x":25754.522880055847,"y":20974.426370839345},"targetPosition":{"x":25386.657142740118,"y":20915.95737269195},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA11","code":"{\n \"codeName\": \"ema11\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema11","id":"16f9f1d2-c73c-4eb6-9240-0d4015e3252a","savedPayload":{"position":{"x":25760.24631385866,"y":21429.68674803896},"targetPosition":{"x":25605.579476591385,"y":21216.929405443952},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b925a6aa-04ee-465b-aa93-fc02066b4e3c","savedPayload":{"position":{"x":25605.579476591385,"y":21216.929405443952},"targetPosition":{"x":25386.657142740118,"y":20915.95737269195},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA22","code":"{\n \"codeName\": \"ema22\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema22","id":"21cca6ba-53d3-4fd0-b3c9-43a71702e4f3","savedPayload":{"position":{"x":25289.04121216099,"y":21543.463759994964},"targetPosition":{"x":25329.533497230095,"y":21283.73916743492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7f02db91-5147-438c-98c9-e024fba210a2","savedPayload":{"position":{"x":25329.533497230095,"y":21283.73916743492},"targetPosition":{"x":25386.657142740118,"y":20915.95737269195},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA33","code":"{\n \"codeName\": \"ema33\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema33","id":"69184123-7d64-41a6-ad3f-8f53bf358f95","savedPayload":{"position":{"x":24884.58848508238,"y":21274.343800938874},"targetPosition":{"x":25086.45256296627,"y":21135.46040986139},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"55be1211-a38f-4ff4-8d12-fa78fa8ba2dd","savedPayload":{"position":{"x":25086.45256296627,"y":21135.46040986139},"targetPosition":{"x":25386.657142740118,"y":20915.95737269195},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA55","code":"{\n \"codeName\": \"ema55\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema55","id":"5281da7d-c090-4637-9a42-dc28599f0385","savedPayload":{"position":{"x":24748.460359692643,"y":20783.561652915516},"targetPosition":{"x":25021.446004665962,"y":20852.742204096085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"710e13ba-afd9-41c2-b7e8-f0ef7be4bb53","savedPayload":{"position":{"x":25021.446004665962,"y":20852.742204096085},"targetPosition":{"x":25386.657142740118,"y":20915.95737269195},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA111","code":"{\n \"codeName\": \"ema111\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema111","id":"f0dd0fa6-ace3-44ea-a701-e36808f6e348","savedPayload":{"position":{"x":25016.43264086293,"y":20403.420455938813},"targetPosition":{"x":25169.57674981919,"y":20615.311185015642},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"461f6d65-e227-4362-b62c-16b7225014f6","savedPayload":{"position":{"x":25169.57674981919,"y":20615.311185015642},"targetPosition":{"x":25386.657142740118,"y":20915.95737269195},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6a451383-677d-4da8-a15d-f746cda23991","savedPayload":{"position":{"x":25460.850704403987,"y":21304.537565284143},"targetPosition":{"x":25653.460996461272,"y":20087.74798934222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current \n\nvariable.ema11 = calculateEMA(11, candle.close, variable.previousEMA11)\nvariable.previousEMA11 = variable.ema11\n\nvariable.ema22 = calculateEMA(22, candle.close, variable.previousEMA22)\nvariable.previousEMA22 = variable.ema22\n\nvariable.ema33 = calculateEMA(33, candle.close, variable.previousEMA33)\nvariable.previousEMA33 = variable.ema33\n\nvariable.ema55 = calculateEMA(55, candle.close, variable.previousEMA55)\nvariable.previousEMA55 = variable.ema55\n\nvariable.ema111 = calculateEMA(111, candle.close, variable.previousEMA111)\nvariable.previousEMA111 = variable.ema111\n\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}","id":"38ceaace-d9e5-482a-a15b-c7bb06767056","savedPayload":{"position":{"x":25257.311445774827,"y":20775.016891833355},"targetPosition":{"x":25310.439432876705,"y":20576.49170413362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"db87f908-271b-44be-8756-706c3ff98c29","savedPayload":{"position":{"x":25310.439432876705,"y":20576.49170413362},"targetPosition":{"x":25363.464416239152,"y":20377.9511102169},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.previousEMA11 = 0\nvariable.previousEMA22 = 0\nvariable.previousEMA33 = 0\nvariable.previousEMA55 = 0\nvariable.previousEMA111 = 0","id":"5c34d18a-ac4e-4af6-aa52-cb4c0f016e6d","savedPayload":{"position":{"x":24966.44988949484,"y":20484.360157639167},"targetPosition":{"x":25165.038522159124,"y":20431.138704670135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f34dd488-d3ea-4bd0-b4f8-68ea81c4a635","savedPayload":{"position":{"x":25165.038522159124,"y":20431.138704670135},"targetPosition":{"x":25363.464416239152,"y":20377.9511102169},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e02efb2a-bb39-4a12-89c8-37c254e9bf5f","savedPayload":{"position":{"x":25363.464416239152,"y":20377.9511102169},"targetPosition":{"x":25653.460996461272,"y":20087.74798934222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"21df4f44-96eb-453b-8652-4ce2dc03424c","savedPayload":{"position":{"x":25654.03894292935,"y":20088.32018452506},"targetPosition":{"x":25525.110567146738,"y":19276.858840856687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"EMA Base 11","id":"cef26be6-07a9-415a-8439-99d06b1e1cfb"}}},{"type":"Product Definition","name":"Base12 EMAs","code":"{\n \"codeName\": \"Base12-EMAs\",\n \"singularVariableName\": \"base12EMA\",\n \"pluralVariableName\": \"base12EMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"ea61dfed-8f93-4b4f-8575-61ca2547ea90","savedPayload":{"position":{"x":25570.415949899085,"y":20133.293406360506},"targetPosition":{"x":25321.979945851028,"y":19885.288584644823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"b251aca0-1996-4d13-99ed-6fb9796ec8d6","savedPayload":{"position":{"x":25377.217817634213,"y":20231.808569938683},"targetPosition":{"x":25321.979945851028,"y":19885.288584644823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"f1df9aec-05c4-40d0-a82c-d17a0e2f1596","savedPayload":{"position":{"x":25356.817205556737,"y":20433.772973686944},"targetPosition":{"x":25148.03878743507,"y":20591.70335570065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2c0c9e78-796b-4845-8cbb-c153a6b7c791","savedPayload":{"position":{"x":25148.03878743507,"y":20591.70335570065},"targetPosition":{"x":24852.135570208357,"y":20816.45822831274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"355a63aa-8c8c-4eca-a246-272eb464d094","savedPayload":{"position":{"x":25473.805104652838,"y":20690.265137030176},"targetPosition":{"x":25216.424714717716,"y":20742.417395008502},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"256d27f8-b34e-46ca-9b5f-531823534e11","savedPayload":{"position":{"x":25216.424714717716,"y":20742.417395008502},"targetPosition":{"x":24852.135570208357,"y":20816.45822831274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA12","code":"{\n \"codeName\": \"ema12\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema12","id":"121d3c83-9fb4-44a1-93ed-e9755dfcc59e","savedPayload":{"position":{"x":25467.47874403112,"y":20971.915768927185},"targetPosition":{"x":25212.960686326933,"y":20907.60663460351},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b386dd09-a2a1-4669-a73b-6df619dee15d","savedPayload":{"position":{"x":25212.960686326933,"y":20907.60663460351},"targetPosition":{"x":24852.135570208357,"y":20816.45822831274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA24","code":"{\n \"codeName\": \"ema24\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema24","id":"e4418d5e-74e5-440c-bd58-f8f18245ba6d","savedPayload":{"position":{"x":25339.35100684274,"y":21223.4627332366},"targetPosition":{"x":25137.90701954582,"y":21055.173119065388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c23ef82a-9c9a-477f-8d48-14d93f06e3c6","savedPayload":{"position":{"x":25137.90701954582,"y":21055.173119065388},"targetPosition":{"x":24852.135570208357,"y":20816.45822831274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA36","code":"{\n \"codeName\": \"ema36\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema36","id":"21dc0fd4-01f5-428b-9a9e-45307981af50","savedPayload":{"position":{"x":25114.612359608487,"y":21394.37923225953},"targetPosition":{"x":25006.177298832186,"y":21155.55965934387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e613c9c6-61da-4830-9289-8b400c3b41d7","savedPayload":{"position":{"x":25006.177298832186,"y":21155.55965934387},"targetPosition":{"x":24852.135570208357,"y":20816.45822831274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA48","code":"{\n \"codeName\": \"ema48\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema48","id":"6afd224b-ba9c-49eb-973f-e7e3d609e82e","savedPayload":{"position":{"x":24838.487070182466,"y":21451.201424889026},"targetPosition":{"x":24844.15654363633,"y":21188.518886703663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e49e8056-f659-4090-91e7-0e83b4a3654e","savedPayload":{"position":{"x":24844.15654363633,"y":21188.518886703663},"targetPosition":{"x":24852.135570208357,"y":20816.45822831274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA60","code":"{\n \"codeName\": \"ema60\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema60","id":"2db84126-00b9-4cde-bb35-66f9fcb8bfc6","savedPayload":{"position":{"x":24565.019955777974,"y":21382.23323810505},"targetPosition":{"x":24683.791419055142,"y":21148.35446524848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"77a0ccf0-aa97-4a11-b1db-bd74d33c28b7","savedPayload":{"position":{"x":24683.791419055142,"y":21148.35446524848},"targetPosition":{"x":24852.135570208357,"y":20816.45822831274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA120","code":"{\n \"codeName\": \"ema120\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema120","id":"e3f30f2b-23c8-4bac-b19e-69ae740a4773","savedPayload":{"position":{"x":24348.143554584087,"y":21202.44960954314},"targetPosition":{"x":24557.140056856093,"y":21042.410106741332},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fca691ac-2651-4619-af01-48a0fafcfd75","savedPayload":{"position":{"x":24557.140056856093,"y":21042.410106741332},"targetPosition":{"x":24852.135570208357,"y":20816.45822831274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA240","code":"{\n \"codeName\": \"ema240\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema240","id":"99b8a3c3-7e86-40aa-ad44-82a0bdb1f208","savedPayload":{"position":{"x":24229.356266994084,"y":20937.472684027907},"targetPosition":{"x":24486.588142834633,"y":20883.638612459246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6f194951-d813-4418-be45-420680399c17","savedPayload":{"position":{"x":24486.588142834633,"y":20883.638612459246},"targetPosition":{"x":24852.135570208357,"y":20816.45822831274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA360","code":"{\n \"codeName\": \"ema360\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema360","id":"fd430a5b-2a43-40c5-ae9d-4c7f901b527d","savedPayload":{"position":{"x":24241.190720898725,"y":20663.021696964825},"targetPosition":{"x":24491.458582193944,"y":20728.245109121242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d9b00ca8-b18b-43da-9f3d-889fe101120c","savedPayload":{"position":{"x":24491.458582193944,"y":20728.245109121242},"targetPosition":{"x":24852.135570208357,"y":20816.45822831274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA480","code":"{\n \"codeName\": \"ema480\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema480","id":"4601277a-9f86-41a4-81b1-21b3c13d1d34","savedPayload":{"position":{"x":24363.707394414047,"y":20412.96302429223},"targetPosition":{"x":24564.96218466903,"y":20581.300340118956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2eccd071-3101-47bb-a8e6-008703cf6848","savedPayload":{"position":{"x":24564.96218466903,"y":20581.300340118956},"targetPosition":{"x":24852.135570208357,"y":20816.45822831274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA600","code":"{\n \"codeName\": \"ema600\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema600","id":"5c687030-e498-4126-8ce9-0c99a427168e","savedPayload":{"position":{"x":24591.491063048332,"y":20239.29639820555},"targetPosition":{"x":24699.604359325316,"y":20478.2300767266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e715e341-88d4-477c-9d7f-b0bb85ee3022","savedPayload":{"position":{"x":24699.604359325316,"y":20478.2300767266},"targetPosition":{"x":24852.135570208357,"y":20816.45822831274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA1200","code":"{\n \"codeName\": \"ema1200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema1200","id":"7c39560e-7434-4f50-aa3d-b93e131ce066","savedPayload":{"position":{"x":24851.391065520304,"y":20181.307338480805},"targetPosition":{"x":24861.710138433427,"y":20445.63676038859},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f1939b18-3af9-4376-b8ba-6f506b215f82","savedPayload":{"position":{"x":24861.710138433427,"y":20445.63676038859},"targetPosition":{"x":24852.135570208357,"y":20816.45822831274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"512144fe-195c-47ae-b5b7-8167ba61a4bb","savedPayload":{"position":{"x":24847.373637125333,"y":20818.66063867628},"targetPosition":{"x":25321.979945851028,"y":19885.288584644823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current \n\nvariable.ema12 = calculateEMA(12, candle.close, variable.previousEMA12)\nvariable.previousEMA12 = variable.ema12\n\nvariable.ema24 = calculateEMA(24, candle.close, variable.previousEMA24)\nvariable.previousEMA24 = variable.ema24\n\nvariable.ema36 = calculateEMA(36, candle.close, variable.previousEMA36)\nvariable.previousEMA36 = variable.ema36\n\nvariable.ema48 = calculateEMA(48, candle.close, variable.previousEMA48)\nvariable.previousEMA48 = variable.ema48\n\nvariable.ema60 = calculateEMA(60, candle.close, variable.previousEMA60)\nvariable.previousEMA60 = variable.ema60\n\nvariable.ema120 = calculateEMA(120, candle.close, variable.previousEMA120)\nvariable.previousEMA120 = variable.ema120\n\nvariable.ema240 = calculateEMA(240, candle.close, variable.previousEMA240)\nvariable.previousEMA240 = variable.ema240\n\nvariable.ema360 = calculateEMA(360, candle.close, variable.previousEMA360)\nvariable.previousEMA360 = variable.ema360\n\nvariable.ema480 = calculateEMA(480, candle.close, variable.previousEMA480)\nvariable.previousEMA480 = variable.ema480\n\nvariable.ema600 = calculateEMA(600, candle.close, variable.previousEMA600)\nvariable.previousEMA600 = variable.ema600\n\nvariable.ema1200 = calculateEMA(1200, candle.close, variable.previousEMA1200)\nvariable.previousEMA1200 = variable.ema1200\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}","id":"c3936de6-e8b4-4459-8c31-d97bea84cbfa","savedPayload":{"position":{"x":24817.31394573591,"y":20310.733344978133},"targetPosition":{"x":24910.511741391558,"y":20191.801189115824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c4c50d01-1dff-4700-853a-986821fd55c5","savedPayload":{"position":{"x":24910.511741391558,"y":20191.801189115824},"targetPosition":{"x":25011.55476637959,"y":20042.326732202295},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.previousEMA12 = 0\nvariable.previousEMA24 = 0\nvariable.previousEMA36 = 0\nvariable.previousEMA48 = 0\nvariable.previousEMA60 = 0\nvariable.previousEMA120 = 0\nvariable.previousEMA240 = 0\nvariable.previousEMA360 = 0\nvariable.previousEMA480 = 0\nvariable.previousEMA600 = 0\nvariable.previousEMA1200 = 0\n","id":"c1639309-d20d-47cb-bb44-f6d45fd498a2","savedPayload":{"position":{"x":24663.123415310245,"y":20024.05370476769},"targetPosition":{"x":24837.38536030288,"y":20032.60390268681},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6a845db8-4418-4417-80ac-11114304a476","savedPayload":{"position":{"x":24837.38536030288,"y":20032.60390268681},"targetPosition":{"x":25011.55476637959,"y":20042.326732202295},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1f5b9ce3-8278-4359-a57c-2c9e275a64cc","savedPayload":{"position":{"x":25011.55476637959,"y":20042.326732202295},"targetPosition":{"x":25321.979945851028,"y":19885.288584644823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"43d6f23d-d206-47e9-95d4-6bef34377014","savedPayload":{"position":{"x":25352.378363442902,"y":20133.116666869548},"targetPosition":{"x":25525.110567146738,"y":19276.858840856687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition","name":"Base30 EMAs","code":"{\n \"codeName\": \"Base30-EMAs\",\n \"singularVariableName\": \"base30EMA\",\n \"pluralVariableName\": \"base30EMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"dea3491f-aae7-4419-a98f-108cf5d69b87","savedPayload":{"position":{"x":25273.916703469793,"y":20132.14841187909},"targetPosition":{"x":25113.87771804794,"y":19818.113380863993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"6624337b-4afd-44b8-a2ea-3f1779ddda7e","savedPayload":{"position":{"x":25058.924487540575,"y":20164.54648090399},"targetPosition":{"x":25113.87771804794,"y":19818.113380863993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"d3c4e9c3-9823-4809-997e-dc36dac93b22","savedPayload":{"position":{"x":24978.64502651681,"y":20370.05354846599},"targetPosition":{"x":24729.212145139696,"y":20447.37598263185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cdf3538e-a8e5-44e5-9263-e5ffe18e65c2","savedPayload":{"position":{"x":24729.212145139696,"y":20447.37598263185},"targetPosition":{"x":24373.873486517914,"y":20558.121295547506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"af0bf0dd-e517-4723-b0cc-832261c78c76","savedPayload":{"position":{"x":24996.951154220522,"y":20672.565312609207},"targetPosition":{"x":24739.691418577826,"y":20625.23928236464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"27b3ce25-c547-4003-9a1c-2214b22e4fd8","savedPayload":{"position":{"x":24739.691418577826,"y":20625.23928236464},"targetPosition":{"x":24373.873486517914,"y":20558.121295547506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA30","code":"{\n \"codeName\": \"ema30\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema30","id":"d49aaf82-1063-490d-bedb-3c63d639e097","savedPayload":{"position":{"x":24872.767889445757,"y":20949.302423245175},"targetPosition":{"x":24666.29962238012,"y":20787.382783106994},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c92e3720-fc04-45ff-99e7-95abc2ddabea","savedPayload":{"position":{"x":24666.29962238012,"y":20787.382783106994},"targetPosition":{"x":24373.873486517914,"y":20558.121295547506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA60","code":"{\n \"codeName\": \"ema60\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema60","id":"47f6b7dc-d0e0-4707-9e20-4113af4916ce","savedPayload":{"position":{"x":24633.99007628884,"y":21136.739295695177},"targetPosition":{"x":24526.309321871464,"y":20897.172697442744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d489aab4-6b93-490a-95b0-5b586a80960a","savedPayload":{"position":{"x":24526.309321871464,"y":20897.172697442744},"targetPosition":{"x":24373.873486517914,"y":20558.121295547506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA90","code":"{\n \"codeName\": \"ema90\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema90","id":"d2ac9ce8-32ab-4802-ab41-b959112a696b","savedPayload":{"position":{"x":24335.688226395956,"y":21191.154052410282},"targetPosition":{"x":24351.447975582083,"y":20929.625164206518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7b763dc2-e990-44b7-b67f-93d27e5b7507","savedPayload":{"position":{"x":24351.447975582083,"y":20929.625164206518},"targetPosition":{"x":24373.873486517914,"y":20558.121295547506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA120","code":"{\n \"codeName\": \"ema120\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema120","id":"41283546-a88c-41a6-87a6-48f178b378f5","savedPayload":{"position":{"x":24045.998136140508,"y":21100.62454054773},"targetPosition":{"x":24181.413582896817,"y":20876.554442600373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"19b80a14-7510-4066-aa0a-43e8d92f8bec","savedPayload":{"position":{"x":24181.413582896817,"y":20876.554442600373},"targetPosition":{"x":24373.873486517914,"y":20558.121295547506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA150","code":"{\n \"codeName\": \"ema150\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema150","id":"d82aeb70-2857-4d97-8f42-6fa22acc3ec1","savedPayload":{"position":{"x":23831.67868118579,"y":20885.9088822409},"targetPosition":{"x":24055.671551326242,"y":20750.49801257186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2dcea6aa-8e40-44d9-b540-e831f54b0e19","savedPayload":{"position":{"x":24055.671551326242,"y":20750.49801257186},"targetPosition":{"x":24373.873486517914,"y":20558.121295547506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA300","code":"{\n \"codeName\": \"ema300\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema300","id":"3bfc5b00-3b36-4b7e-b549-4cac3826de4f","savedPayload":{"position":{"x":23740.32689402904,"y":20596.437821316293},"targetPosition":{"x":24003.409729558687,"y":20580.537005928105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7cc56b79-f74d-465e-8e4d-070be004c71b","savedPayload":{"position":{"x":24003.409729558687,"y":20580.537005928105},"targetPosition":{"x":24373.873486517914,"y":20558.121295547506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA600","code":"{\n \"codeName\": \"ema600\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema600","id":"22bc84a5-61f6-479e-a87d-b1aee1b8416d","savedPayload":{"position":{"x":23795.298249232153,"y":20298.157159959897},"targetPosition":{"x":24034.514837778883,"y":20405.610949237165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0e28ed26-69c1-4a8e-b13f-cef5faf27fc8","savedPayload":{"position":{"x":24034.514837778883,"y":20405.610949237165},"targetPosition":{"x":24373.873486517914,"y":20558.121295547506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA900","code":"{\n \"codeName\": \"ema900\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema900","id":"bd0354df-70f8-44e7-b988-49c514433ee3","savedPayload":{"position":{"x":23982.7574112061,"y":20059.520663439685},"targetPosition":{"x":24144.266358412508,"y":20265.341992965543},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1dfbb7b7-1ddc-4079-a17d-abef03fcd978","savedPayload":{"position":{"x":24144.266358412508,"y":20265.341992965543},"targetPosition":{"x":24373.873486517914,"y":20558.121295547506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA1200","code":"{\n \"codeName\": \"ema1200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema1200","id":"fed49d03-931b-45a8-ac59-60859500e8ea","savedPayload":{"position":{"x":24259.24226185727,"y":19934.766636885863},"targetPosition":{"x":24306.805904940677,"y":20192.755309339158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2854d03b-388d-42be-bd49-0b0ed1293a30","savedPayload":{"position":{"x":24306.805904940677,"y":20192.755309339158},"targetPosition":{"x":24373.873486517914,"y":20558.121295547506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA1500","code":"{\n \"codeName\": \"ema1500\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema1500","id":"1486d92f-10f4-4e34-b603-b0a18408713c","savedPayload":{"position":{"x":24557.898718323184,"y":19950.914964286785},"targetPosition":{"x":24484.50907386817,"y":20203.561318105003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9936d329-ffe9-4c8a-929c-b6f4a3a38954","savedPayload":{"position":{"x":24484.50907386817,"y":20203.561318105003},"targetPosition":{"x":24373.873486517914,"y":20558.121295547506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3dda31b0-7d30-43c2-9b91-74c25cffed38","savedPayload":{"position":{"x":24373.57667917734,"y":20558.470989095407},"targetPosition":{"x":25113.87771804794,"y":19818.113380863993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nvariable.ema30 = calculateEMA(30, candle.close, variable.previousEMA30)\nvariable.previousEMA30 = variable.ema30\n\nvariable.ema60 = calculateEMA(60, candle.close, variable.previousEMA60)\nvariable.previousEMA60 = variable.ema60\n\nvariable.ema90 = calculateEMA(90, candle.close, variable.previousEMA90)\nvariable.previousEMA90 = variable.ema90\n\nvariable.ema120 = calculateEMA(120, candle.close, variable.previousEMA120)\nvariable.previousEMA120 = variable.ema120\n\nvariable.ema150 = calculateEMA(150, candle.close, variable.previousEMA150)\nvariable.previousEMA150 = variable.ema150\n\nvariable.ema300 = calculateEMA(300, candle.close, variable.previousEMA300)\nvariable.previousEMA300 = variable.ema300\n\nvariable.ema600 = calculateEMA(600, candle.close, variable.previousEMA600)\nvariable.previousEMA600 = variable.ema600\n\nvariable.ema900 = calculateEMA(900, candle.close, variable.previousEMA900)\nvariable.previousEMA900 = variable.ema900\n\nvariable.ema1200 = calculateEMA(1200, candle.close, variable.previousEMA1200)\nvariable.previousEMA1200 = variable.ema1200\n\nvariable.ema1500 = calculateEMA(1500, candle.close, variable.previousEMA1500)\nvariable.previousEMA1500 = variable.ema1500\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}","id":"df900089-7554-4b01-88d1-801706c194a5","savedPayload":{"position":{"x":24498.161688934713,"y":20092.768542230308},"targetPosition":{"x":24633.92616363417,"y":19982.81927613517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ff38e18a-c36c-4c4a-8d5b-b7230451c098","savedPayload":{"position":{"x":24633.92616363417,"y":19982.81927613517},"targetPosition":{"x":24769.560124764976,"y":19872.75796402469},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.previousEMA30 = 0\nvariable.previousEMA60 = 0\nvariable.previousEMA90 = 0\nvariable.previousEMA120 = 0\nvariable.previousEMA150 = 0\nvariable.previousEMA300 = 0\nvariable.previousEMA600 = 0\nvariable.previousEMA900 = 0\nvariable.previousEMA1200 = 0\nvariable.previousEMA1500 = 0\n","id":"14cfa602-002c-439e-b658-24cc8d2d1c14","savedPayload":{"position":{"x":24443.331249459963,"y":19747.995220518034},"targetPosition":{"x":24606.57524913497,"y":19810.40648400728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2489fa2c-03cb-4007-b426-88158b8ab442","savedPayload":{"position":{"x":24606.57524913497,"y":19810.40648400728},"targetPosition":{"x":24769.560124764976,"y":19872.75796402469},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ff57a6a1-1133-4cce-abab-d958d5936360","savedPayload":{"position":{"x":24769.560124764976,"y":19872.75796402469},"targetPosition":{"x":25113.87771804794,"y":19818.113380863993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4394346c-7c25-478f-9be7-04f071dc673c","savedPayload":{"position":{"x":25152.062251970365,"y":20008.149272707018},"targetPosition":{"x":25525.110567146738,"y":19276.858840856687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"274a20f7-97c3-452d-9ef7-aa35f482f5e3","savedPayload":{"position":{"x":25525.110567146738,"y":19276.858840856687},"targetPosition":{"x":24943.90880679387,"y":18695.646004599515},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Indicator Bot","name":"MACD","code":"{\n\"codeName\": \"MACD\",\n\"repo\": \"MACD-Indicator-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Produces the MACD indicator.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market MACD 122609","id":"b1bf9ad6-e21f-43a9-b7a5-7d5dd0485b2e","savedPayload":{"position":{"x":25972.77782742684,"y":19189.039703540097},"targetPosition":{"x":25961.202596767136,"y":19572.562506974802},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"01d43ed0-2a80-4eca-bee6-db2fe40470fc"}}},{"type":"Output Dataset","name":"Multi-Period-Market MACD 031016","id":"a8aa057b-aa19-45cb-bca0-7c3b57a350f7","savedPayload":{"position":{"x":26195.989937709594,"y":19268.96181339316},"targetPosition":{"x":25961.202596767136,"y":19572.562506974802},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"19b1d791-d2ea-4f25-a6e1-fe0a64450745"}}},{"type":"Output Dataset","name":"Multi-Period-Market MACD 081709","id":"150637f5-1917-439e-916f-71e86edccd49","savedPayload":{"position":{"x":26329.501944534153,"y":19464.82952389729},"targetPosition":{"x":25961.202596767136,"y":19572.562506974802},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"c390cbd3-0ba0-4507-8614-42c88f4ce7e6"}}},{"type":"Output Dataset","name":"Multi-Period-Market MACD 245209","id":"6854acc9-b22d-46e6-8967-e3843ca6db76","savedPayload":{"position":{"x":26314.2407587319,"y":19698.047738668603},"targetPosition":{"x":25961.202596767136,"y":19572.562506974802},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"89254c6c-9be2-4037-b063-467edc660d10"}}}],"id":"af39ab1b-b1c0-4869-9093-47ad8ff63494","savedPayload":{"position":{"x":25961.202596767136,"y":19572.562506974802},"targetPosition":{"x":25634.785048854712,"y":19795.124031553147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"MACD Multi-Period-Market","code":"{\"mainUtility\": \"Self Reference\"}","id":"7e17f51a-deed-4976-a53b-d34c2e45f92f","savedPayload":{"position":{"x":26657.46104966852,"y":19451.132261784664},"targetPosition":{"x":26407.31934363505,"y":19741.88519649798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"101cc7d6-d35b-4907-b530-f28d5e02ff0a"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","code":"{\"mainUtility\": \"Market Ending Point\"}","id":"473dbe5e-6332-4005-8457-c77c3f5c65d0","savedPayload":{"position":{"x":26789.69937346052,"y":19713.24043102301},"targetPosition":{"x":26407.31934363505,"y":19741.88519649798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"fa10270c-f94c-479d-9094-f974018e2029","savedPayload":{"position":{"x":26697.897643706983,"y":19991.92707700693},"targetPosition":{"x":26407.31934363505,"y":19741.88519649798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"id":"7a34fbb2-19de-4b82-88f2-c016f6959f74","savedPayload":{"position":{"x":26407.31934363505,"y":19741.88519649798},"targetPosition":{"x":25634.785048854712,"y":19795.124031553147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"101cc7d6-d35b-4907-b530-f28d5e02ff0a","savedPayload":{"position":{"x":25984.947576612685,"y":19963.679699264987},"targetPosition":{"x":25634.785048854712,"y":19795.124031553147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"1bc17bd6-0c20-4dfe-87dd-68db36113733","savedPayload":{"position":{"x":25853.78050986747,"y":20116.15755644483},"targetPosition":{"x":25634.785048854712,"y":19795.124031553147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f2eca95a-37ae-448b-8ff9-c6dc4b133245","savedPayload":{"position":{"x":25664.094982458537,"y":20182.3371183138},"targetPosition":{"x":25634.785048854712,"y":19795.124031553147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"44019efe-950a-4eec-a546-cd2ee26818b9","savedPayload":{"position":{"x":25634.946088529396,"y":19795.08558490887},"targetPosition":{"x":24943.912345641576,"y":19462.636283096508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Produces the MACD indicator.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily MACD 122609","id":"c79ae046-983f-4acf-9c73-ab7e5d24fd85","savedPayload":{"position":{"x":25992.983908697875,"y":19662.132896916017},"targetPosition":{"x":25815.716136005987,"y":20002.788527914814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"dd5d3067-ff7b-4353-ba4f-c030bd3da796"}}},{"type":"Output Dataset","name":"Multi-Period-Daily MACD 081709","id":"daa8862c-2eda-4846-97d5-8684673baf3f","savedPayload":{"position":{"x":26159.342647258174,"y":19831.059436201733},"targetPosition":{"x":25815.716136005987,"y":20002.788527914814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"29e18539-f188-4d29-9531-25cd3ee8f282"}}},{"type":"Output Dataset","name":"Multi-Period-Daily MACD 245209","id":"59cb9a88-ccd4-4306-8822-bf9d0e526c02","savedPayload":{"position":{"x":26194.596944274326,"y":20065.28669505415},"targetPosition":{"x":25815.716136005987,"y":20002.788527914814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"8a9dde13-e4b8-40f3-80bc-ea51050b2f08"}}},{"type":"Output Dataset","name":"Multi-Period-Daily MACD 031016","id":"b09b8313-baaf-45f4-a0fb-b33614d58699","savedPayload":{"position":{"x":26079.253214250322,"y":20268.02445921865},"targetPosition":{"x":25815.716136005987,"y":20002.788527914814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"ec2611a6-699b-45a5-beec-679dd4b7734a"}}}],"id":"a95e4b61-4e49-4b99-bfb8-8bb917afe8df","savedPayload":{"position":{"x":25815.716136005987,"y":20002.788527914814},"targetPosition":{"x":25421.803417338866,"y":20061.98937568125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"MACD Multi-Period-Daily","code":"{\"mainUtility\": \"Self Reference\"}","id":"e02fb6a2-c775-46de-bce6-a40f7d40cd5c","savedPayload":{"position":{"x":26464.669256317033,"y":20143.465997486564},"targetPosition":{"x":26141.321194926917,"y":20350.02984695237},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a9d544cb-9643-4f7e-9220-d3ec7397bcdf"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","code":"{\"mainUtility\": \"Market Ending Point\"}","id":"650627ec-3cab-4024-a17d-a43174f869e9","savedPayload":{"position":{"x":26524.253723520083,"y":20372.767672551465},"targetPosition":{"x":26141.321194926917,"y":20350.02984695237},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","code":"{\"mainUtility\": \"Market Starting Point\"}","id":"62a1b4d7-e2fd-44bf-9e37-3108a7b5b956","savedPayload":{"position":{"x":26437.59538037893,"y":20593.476634371727},"targetPosition":{"x":26141.321194926917,"y":20350.02984695237},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"38aa26d5-f3b2-43e6-8533-cd51d7128221","savedPayload":{"position":{"x":26237.727217489388,"y":20721.12576576876},"targetPosition":{"x":26141.321194926917,"y":20350.02984695237},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"id":"e8291604-ea73-4217-b00c-51f65bdec1d6","savedPayload":{"position":{"x":26141.321194926917,"y":20350.02984695237},"targetPosition":{"x":25421.803417338866,"y":20061.98937568125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"a9d544cb-9643-4f7e-9220-d3ec7397bcdf","savedPayload":{"position":{"x":25669.40328794861,"y":20372.14823762481},"targetPosition":{"x":25421.803417338866,"y":20061.98937568125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"35b430c4-60bd-41ff-8a3a-7907146b0238","savedPayload":{"position":{"x":25516.972599177658,"y":20453.818971896842},"targetPosition":{"x":25421.803417338866,"y":20061.98937568125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"c6191bb8-66bf-4d67-9d1b-9364e7e6e84e","savedPayload":{"position":{"x":25278.897995747757,"y":20425.39769257694},"targetPosition":{"x":25421.803417338866,"y":20061.98937568125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8e5db945-8507-4489-9288-21cfa1e9301c","savedPayload":{"position":{"x":25421.849063898513,"y":20062.29727103315},"targetPosition":{"x":24943.912345641576,"y":19462.636283096508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"MACD 122609","code":"{\n \"codeName\": \"MACD-122609\",\n \"singularVariableName\": \"macd122609\",\n \"pluralVariableName\": \"macd122609s\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"01d43ed0-2a80-4eca-bee6-db2fe40470fc","savedPayload":{"position":{"x":25466.883376652557,"y":20360.457495911945},"targetPosition":{"x":25114.133149602145,"y":20209.6154082463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"dd5d3067-ff7b-4353-ba4f-c030bd3da796","savedPayload":{"position":{"x":25310.661651671293,"y":20539.032825908893},"targetPosition":{"x":25114.133149602145,"y":20209.6154082463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"c30a9207-3220-4aa4-b96e-64a82200e356","savedPayload":{"position":{"x":25493.509991899202,"y":20952.479478939465},"targetPosition":{"x":25272.643378801873,"y":21136.354644819694},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"16c55335-8817-4121-a068-1c2d184fd814","savedPayload":{"position":{"x":25272.643378801873,"y":21136.354644819694},"targetPosition":{"x":25011.1740611081,"y":21354.464684939278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"0f82ce78-91ac-4b61-b514-bb1a67c2ef0e","savedPayload":{"position":{"x":25637.102784964613,"y":21410.837339177455},"targetPosition":{"x":25349.83988496576,"y":21384.967029659456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dedc2ef0-61e4-45bd-921d-187c9a6f3ae1","savedPayload":{"position":{"x":25349.83988496576,"y":21384.967029659456},"targetPosition":{"x":25011.1740611081,"y":21354.464684939278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Line","code":"{\n \"codeName\": \"line\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.line","id":"42754005-58a0-4a8b-b839-938d11aeb0ab","savedPayload":{"position":{"x":25413.385912695798,"y":21836.46265270258},"targetPosition":{"x":25229.179637601406,"y":21615.725522013043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5fe10f78-a397-4fb1-bfeb-a506d44d60ef","savedPayload":{"position":{"x":25229.179637601406,"y":21615.725522013043},"targetPosition":{"x":25011.1740611081,"y":21354.464684939278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Signal","code":"{\n \"codeName\": \"signal\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.signal","id":"588045df-e0fb-4c07-adf3-1acd832088af","savedPayload":{"position":{"x":24955.186444747273,"y":21980.030042782564},"targetPosition":{"x":24980.882345323815,"y":21692.790091506726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2926733e-3962-4e7b-a492-7fcb437f536e","savedPayload":{"position":{"x":24980.882345323815,"y":21692.790091506726},"targetPosition":{"x":25011.1740611081,"y":21354.464684939278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA12","code":"{\n \"codeName\": \"ema12\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema12","id":"d9f6340c-15cd-499b-ba74-007b4c569b22","savedPayload":{"position":{"x":24525.50075910991,"y":21760.118381625973},"targetPosition":{"x":24746.397289088327,"y":21575.629201540352},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"29fb3e14-c1fd-4fa6-af1a-62b1c61ff1fc","savedPayload":{"position":{"x":24746.397289088327,"y":21575.629201540352},"targetPosition":{"x":25011.1740611081,"y":21354.464684939278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA26","code":"{\n \"codeName\": \"ema26\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema26","id":"748ed791-c88b-4776-b2cb-742758821641","savedPayload":{"position":{"x":24385.767695869028,"y":21298.845962569103},"targetPosition":{"x":24672.486700886155,"y":21324.319908786845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d1b7a8ce-c89b-4e0f-ac04-0f45d575524d","savedPayload":{"position":{"x":24672.486700886155,"y":21324.319908786845},"targetPosition":{"x":25011.1740611081,"y":21354.464684939278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Histogram","code":"{\n \"codeName\": \"histogram\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.histogram","id":"9652e52e-55c0-47ee-a90c-a1a700f6b989","savedPayload":{"position":{"x":24608.167506803853,"y":20872.790706465887},"targetPosition":{"x":24793.153646811337,"y":21093.503756113754},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6157c979-57a2-473c-b19f-f79bb2f12c09","savedPayload":{"position":{"x":24793.153646811337,"y":21093.503756113754},"targetPosition":{"x":25011.1740611081,"y":21354.464684939278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7985ad16-8c8a-460f-9445-711df5e062a7","savedPayload":{"position":{"x":25011.19317238594,"y":21354.661718193875},"targetPosition":{"x":25114.133149602145,"y":20209.6154082463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\n/* EMA12 and EMA26 Calculation */\n\nlet candle = record.current\n\nvariable.ema12 = calculateEMA(12, candle.close, variable.previousEMA12)\nvariable.previousEMA12 = variable.ema12\n\nvariable.ema26 = calculateEMA(26, candle.close, variable.previousEMA26)\nvariable.previousEMA26 = variable.ema26\n\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}\n\n\n/* MACD Line Calculation */\n\nmacdLine = variable.ema12 - variable.ema26\n\nvariable.line = macdLine.toFixed(2)\n\n/* Signal Line Calculation (EMA9 of MACD Line) */\n\nmacdSignal = calculateSignalEMA(9, variable.line, variable.previousSignal)\nvariable.signal = macdSignal.toFixed(2)\nvariable.previousSignal = variable.signal \n \nfunction calculateSignalEMA(periods, currentSignal, previousEMA) {\n let k = 2 / (periods + 1)\n return currentSignal * k + variable.previousSignal * (1-k)\n}\n\n/* Histogram Calculation */\n\nhistogram = variable.line - variable.signal\nvariable.histogram = histogram.toFixed(2)","id":"e1e871f6-1e87-423f-8214-ece80c4295eb","savedPayload":{"position":{"x":24788.42902510774,"y":20874.46261154788},"targetPosition":{"x":24825.432716942058,"y":20686.24742483691},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c3390f8c-4865-42b1-aa00-eaa49d293121","savedPayload":{"position":{"x":24825.432716942058,"y":20686.24742483691},"targetPosition":{"x":24862.325087168163,"y":20498.03074948565},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\n/* SMA Calculation */\n\n/* \nAlthough we don't really need to set an array to access a number of candles,\nwe will do so in order to reuse the code built for the SMA indicator, and also\nso that the same code may be used for other MACD products that may require\naccessing more candles than are available in the span of two days.\n*/\n\nvariable.last100 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")\n\n/* EMA Calculation */\n\nvariable.previousEMA12 = 0\nvariable.previousEMA26 = 0\n\n/* MACD Line calculation */\n\nvariable.previousSignal = 0","id":"a9600d4d-ddc7-4639-a8bd-d5f6840a1f04","savedPayload":{"position":{"x":24499.32193710421,"y":20622.066660222015},"targetPosition":{"x":24680.91235483844,"y":20560.018176949467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f8ff5320-c74f-4f6e-8b15-f7284242f24e","savedPayload":{"position":{"x":24680.91235483844,"y":20560.018176949467},"targetPosition":{"x":24862.325087168163,"y":20498.03074948565},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c69aae16-d38f-4d9a-8174-4e664a22e579","savedPayload":{"position":{"x":24862.325087168163,"y":20498.03074948565},"targetPosition":{"x":25114.133149602145,"y":20209.6154082463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119","savedPayload":{"position":{"x":25114.04173475577,"y":20209.587916709457},"targetPosition":{"x":24943.912345641576,"y":19462.636283096508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"MACD 122609","id":"fb08cb11-7983-4106-8b03-edf70baad4a0"}}},{"type":"Product Definition","name":"MACD 031016","code":"{\n \"codeName\": \"MACD-031016\",\n \"singularVariableName\": \"macd031016\",\n \"pluralVariableName\": \"macd031016s\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Sparta/MACD/Output/MACD-031016/Multi-Period-Market/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"19b1d791-d2ea-4f25-a6e1-fe0a64450745","savedPayload":{"position":{"x":25025.94434589599,"y":20498.230758573518},"targetPosition":{"x":24773.50032661494,"y":20209.476337556902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Sparta/MACD/Output/MACD-031016/Multi-Period-Daily/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Sparta/MACD/Output/MACD-031016/Multi-Period-Daily\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"ec2611a6-699b-45a5-beec-679dd4b7734a","savedPayload":{"position":{"x":24807.7095500207,"y":20591.41659866205},"targetPosition":{"x":24773.50032661494,"y":20209.476337556902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"7e2e4448-6bc6-4c1c-9a7f-54185fea3831","savedPayload":{"position":{"x":24741.971120106005,"y":21056.146566318355},"targetPosition":{"x":24463.014071586185,"y":21126.107398679047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"399e67a5-1b3c-4f13-b1a8-c8333b013471","savedPayload":{"position":{"x":24463.014071586185,"y":21126.107398679047},"targetPosition":{"x":24184.014523587313,"y":21196.278291441213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"0e12c2f0-25f8-48c6-9920-4291c0154f92","savedPayload":{"position":{"x":24678.065808661202,"y":21491.61261556789},"targetPosition":{"x":24431.076140059846,"y":21343.96734937583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1588b3ba-04e6-498f-baeb-857c55bf0c2f","savedPayload":{"position":{"x":24431.076140059846,"y":21343.96734937583},"targetPosition":{"x":24184.014523587313,"y":21196.278291441213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Line","code":"{\n \"codeName\": \"line\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.line","id":"5d5b5bb6-fcd8-4834-9da9-858c8fc756d6","savedPayload":{"position":{"x":24324.45103967739,"y":21754.594864982282},"targetPosition":{"x":24254.242502184155,"y":21475.500351205515},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a1c75f48-5568-46da-a828-6d26a69b5021","savedPayload":{"position":{"x":24254.242502184155,"y":21475.500351205515},"targetPosition":{"x":24184.014523587313,"y":21196.278291441213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Signal","code":"{\n \"codeName\": \"signal\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.signal","id":"a42bb9fd-fb33-4c25-b3d3-7ce7c8839e08","savedPayload":{"position":{"x":23888.819801698504,"y":21690.522376702524},"targetPosition":{"x":24036.38743242534,"y":21443.461250662378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7d0b5eee-4b62-4e35-a421-e3825b0cdb2c","savedPayload":{"position":{"x":24036.38743242534,"y":21443.461250662378},"targetPosition":{"x":24184.014523587313,"y":21196.278291441213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA3","code":"{\n \"codeName\": \"ema3\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema3","id":"c725639d-6fa1-480f-b962-90be561f8464","savedPayload":{"position":{"x":23625.746675137772,"y":21336.91349757442},"targetPosition":{"x":23904.8359161632,"y":21266.622386296483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4406003b-bf04-4d4e-b9e5-fb444be155ee","savedPayload":{"position":{"x":23904.8359161632,"y":21266.622386296483},"targetPosition":{"x":24184.014523587313,"y":21196.278291441213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA10","code":"{\n \"codeName\": \"ema10\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema10","id":"fbfc968a-1b7e-48f6-935b-b40fe63bdc85","savedPayload":{"position":{"x":23689.74692224246,"y":20901.379869384684},"targetPosition":{"x":23936.859212728057,"y":21048.813425164124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d5cc4f53-cc80-457a-842f-a2259450f02f","savedPayload":{"position":{"x":23936.859212728057,"y":21048.813425164124},"targetPosition":{"x":24184.014523587313,"y":21196.278291441213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Histogram","code":"{\n \"codeName\": \"histogram\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.histogram","id":"9724655b-b624-425d-b21c-87c69ede1d0a","savedPayload":{"position":{"x":24043.18255934953,"y":20638.659614645516},"targetPosition":{"x":24113.776658867457,"y":20917.40904769116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d0f070bb-08a6-4c05-8e49-49f7b6a3aa15","savedPayload":{"position":{"x":24113.776658867457,"y":20917.40904769116},"targetPosition":{"x":24184.014523587313,"y":21196.278291441213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b5df9321-87e6-4c0b-892b-0af0e9b47d8d","savedPayload":{"position":{"x":24184.014523587313,"y":21196.278291441213},"targetPosition":{"x":24773.50032661494,"y":20209.476337556902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\n/* EMA3 and EMA10 Calculation */\n\nlet candle = record.current\n\nvariable.ema3 = calculateEMA(3, candle.close, variable.previousEMA3)\nvariable.previousEMA3 = variable.ema3\n\nvariable.ema10 = calculateEMA(10, candle.close, variable.previousEMA10)\nvariable.previousEMA10 = variable.ema10\n\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}\n\n/* MACD Line Calculation */\n\nmacdLine = variable.ema3 - variable.ema10\n\nvariable.line = macdLine.toFixed(2)\n\n/* Signal Line Calculation (EMA16 of MACD Line) */\n\nmacdSignal = calculateSignalEMA(16, variable.line, variable.previousSignal)\nvariable.signal = macdSignal.toFixed(2)\nvariable.previousSignal = variable.signal \n \nfunction calculateSignalEMA(periods, currentSignal, previousEMA) {\n let k = 2 / (periods + 1)\n return currentSignal * k + variable.previousSignal * (1-k)\n}\n\n/* Histogram Calculation */\n\nhistogram = variable.line - variable.signal\nvariable.histogram = histogram.toFixed(2)","id":"6e3e0c8a-7600-4cf4-aa00-a29c8e94b42a","savedPayload":{"position":{"x":24191.92364398924,"y":20666.20304609787},"targetPosition":{"x":24306.767329696475,"y":20513.125548254906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ba2052e5-b0b2-4cae-b4a8-3212eb5cbe62","savedPayload":{"position":{"x":24306.767329696475,"y":20513.125548254906},"targetPosition":{"x":24421.594433842638,"y":20359.857128330226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\n/* SMA Calculation */\n\n/* \nAlthough we don't really need to set an array to access a number of candles,\nwe will do so in order to reuse the code built for the SMA indicator, and also\nso that the same code may be used for other MACD products that may require\naccessing more candles than are available in the span of two days.\n*/\n\nvariable.last100 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")\n\n/* EMA Calculation */\n\nvariable.previousEMA3 = 0\nvariable.previousEMA10 = 0\n\n/* MACD Line calculation */\n\nvariable.previousSignal = 0","id":"e009ff8c-ac89-4cff-b3c4-27777ff2173c","savedPayload":{"position":{"x":24040.65978938648,"y":20314.07114551328},"targetPosition":{"x":24231.258705574302,"y":20336.97732991252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fba3e3c4-5cf5-4925-9e02-36981e662f0d","savedPayload":{"position":{"x":24231.258705574302,"y":20336.97732991252},"targetPosition":{"x":24421.594433842638,"y":20359.857128330226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6659182a-7112-4c25-8fac-69f8745f9d2f","savedPayload":{"position":{"x":24421.594433842638,"y":20359.857128330226},"targetPosition":{"x":24773.50032661494,"y":20209.476337556902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a","savedPayload":{"position":{"x":24773.482835625546,"y":20209.48867686001},"targetPosition":{"x":24943.912345641576,"y":19462.636283096508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"MACD 031016","id":"03816d0f-361f-4c6c-8f85-0bf2dfff1c21"}}},{"type":"Product Definition","name":"MACD 081709","code":"{\n \"codeName\": \"MACD-081709\",\n \"singularVariableName\": \"macd081709\",\n \"pluralVariableName\": \"macd081709s\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Sparta/MACD/Output/MACD-081709/Multi-Period-Market/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"c390cbd3-0ba0-4507-8614-42c88f4ce7e6","savedPayload":{"position":{"x":24568.323561193512,"y":20431.28486044449},"targetPosition":{"x":24466.267157562095,"y":20061.56197758881},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Sparta/MACD/Output/MACD-081709/Multi-Period-Daily/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Sparta/MACD/Output/MACD-081709/Multi-Period-Daily\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"29e18539-f188-4d29-9531-25cd3ee8f282","savedPayload":{"position":{"x":24331.38502964202,"y":20420.594644954763},"targetPosition":{"x":24466.267157562095,"y":20061.56197758881},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"94ec28d4-c1bc-4c6d-8887-75877f9a2343","savedPayload":{"position":{"x":24162.010726084063,"y":20828.759951048232},"targetPosition":{"x":23880.10162074181,"y":20770.65852839093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5135ffe3-47fa-4642-8c46-0994438d7e7a","savedPayload":{"position":{"x":23880.10162074181,"y":20770.65852839093},"targetPosition":{"x":23507.460196574306,"y":20694.292207886618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"d3388f28-900d-452f-b83c-936c50b4344e","savedPayload":{"position":{"x":23875.00050261427,"y":21251.99251148477},"targetPosition":{"x":23716.784527551954,"y":21011.865002518636},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8056d769-ea76-4ec0-88ff-952921e48d2c","savedPayload":{"position":{"x":23716.784527551954,"y":21011.865002518636},"targetPosition":{"x":23507.460196574306,"y":20694.292207886618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Line","code":"{\n \"codeName\": \"line\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.line","id":"3864df8c-ee73-4f0e-be03-718954a4dbfc","savedPayload":{"position":{"x":23373.532198932786,"y":21348.755834441945},"targetPosition":{"x":23431.30971518446,"y":21066.305503917098},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a69347ff-6f46-464a-834a-4d441b8ff291","savedPayload":{"position":{"x":23431.30971518446,"y":21066.305503917098},"targetPosition":{"x":23507.460196574306,"y":20694.292207886618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Signal","code":"{\n \"codeName\": \"signal\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.signal","id":"9db26074-5aaf-4f3e-83aa-bb1064981c64","savedPayload":{"position":{"x":22950.275150689988,"y":21061.992173670198},"targetPosition":{"x":23190.405151827654,"y":20903.543226605652},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cf022fb7-6c7e-432d-ae6a-fe0f4ed28116","savedPayload":{"position":{"x":23190.405151827654,"y":20903.543226605652},"targetPosition":{"x":23507.460196574306,"y":20694.292207886618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA8","code":"{\n \"codeName\": \"ema8\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema8","id":"93f62cc4-1f47-4b75-8a7c-c8dbd75b0c9f","savedPayload":{"position":{"x":22853.180245124368,"y":20560.8576561901},"targetPosition":{"x":23135.39359105196,"y":20618.385788646123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"80e1f38f-36c5-440e-a12b-f9154efede9f","savedPayload":{"position":{"x":23135.39359105196,"y":20618.385788646123},"targetPosition":{"x":23507.460196574306,"y":20694.292207886618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA17","code":"{\n \"codeName\": \"ema17\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema17","id":"73b43260-1688-460b-862c-b8fb7406cc10","savedPayload":{"position":{"x":23139.0468198182,"y":20137.05362683894},"targetPosition":{"x":23297.90909704771,"y":20377.301240166926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a2552af4-df0a-4fcf-85ae-1e35dbcb2608","savedPayload":{"position":{"x":23297.90909704771,"y":20377.301240166926},"targetPosition":{"x":23507.460196574306,"y":20694.292207886618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Histogram","code":"{\n \"codeName\": \"histogram\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.histogram","id":"94cb6751-f4a9-4bad-a8a9-d53d3375a77c","savedPayload":{"position":{"x":23640.273992988125,"y":20039.82009546498},"targetPosition":{"x":23583.39194088001,"y":20321.522858234595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"52e3a47c-f282-4edc-83cb-8bce988e054b","savedPayload":{"position":{"x":23583.39194088001,"y":20321.522858234595},"targetPosition":{"x":23507.460196574306,"y":20694.292207886618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f5a29a3d-06eb-4298-80d0-3d6e22957829","savedPayload":{"position":{"x":23507.017198653903,"y":20694.73259440053},"targetPosition":{"x":24466.267157562095,"y":20061.56197758881},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\n/* EMA8 and EMA26 Calculation */\n\nlet candle = record.current\n\nvariable.ema8 = calculateEMA(8, candle.close, variable.previousEMA8)\nvariable.previousEMA8 = variable.ema8\n\nvariable.ema17 = calculateEMA(17, candle.close, variable.previousEMA17)\nvariable.previousEMA17 = variable.ema17\n\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}\n\n/* MACD Line Calculation */\n\nmacdLine = variable.ema8 - variable.ema17\n\nvariable.line = macdLine.toFixed(2)\n\n/* Signal Line Calculation (EMA9 of MACD Line) */\n\nmacdSignal = calculateSignalEMA(9, variable.line, variable.previousSignal)\nvariable.signal = macdSignal.toFixed(2)\nvariable.previousSignal = variable.signal \n \nfunction calculateSignalEMA(periods, currentSignal, previousEMA) {\n let k = 2 / (periods + 1)\n return currentSignal * k + variable.previousSignal * (1-k)\n}\n\n/* Histogram Calculation */\n\nhistogram = variable.line - variable.signal\nvariable.histogram = histogram.toFixed(2)","id":"0290fa4a-851b-4e21-b35e-61e106fc8f81","savedPayload":{"position":{"x":23743.520844366125,"y":20221.36948185816},"targetPosition":{"x":23913.783078309716,"y":20133.073151915883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2a30807-83b5-4c99-8f27-55783b4487ce","savedPayload":{"position":{"x":23913.783078309716,"y":20133.073151915883},"targetPosition":{"x":24083.93117542881,"y":20044.67407396636},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\n/* SMA Calculation */\n\n/* \nAlthough we don't really need to set an array to access a number of candles,\nwe will do so in order to reuse the code built for the SMA indicator, and also\nso that the same code may be used for other MACD products that may require\naccessing more candles than are available in the span of two days.\n*/\n\nvariable.last100 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")\n\n/* EMA Calculation */\n\nvariable.previousEMA8 = 0\nvariable.previousEMA17 = 0\n\n/* MACD Line calculation */\n\nvariable.previousSignal = 0","id":"b8dca759-eb3d-4b8b-8a20-99679727f272","savedPayload":{"position":{"x":23760.549797250937,"y":19838.386841983407},"targetPosition":{"x":23922.358041885007,"y":19941.58348697071},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a16923a7-9b13-4526-818d-9278fdc509a0","savedPayload":{"position":{"x":23922.358041885007,"y":19941.58348697071},"targetPosition":{"x":24083.93117542881,"y":20044.67407396636},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8136f190-cf6a-4ca3-8620-7153ad82a295","savedPayload":{"position":{"x":24083.93117542881,"y":20044.67407396636},"targetPosition":{"x":24466.267157562095,"y":20061.56197758881},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750","savedPayload":{"position":{"x":24466.300217937616,"y":20061.528055434785},"targetPosition":{"x":24943.912345641576,"y":19462.636283096508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"MACD 081709","id":"43695164-d8aa-40d8-bbf4-ee8cbbdec3f0"}}},{"type":"Product Definition","name":"MACD 245209","code":"{\n \"codeName\": \"MACD-245209\",\n \"singularVariableName\": \"macd245209\",\n \"pluralVariableName\": \"macd245209s\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Sparta/MACD/Output/MACD-245209/Multi-Period-Market/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"89254c6c-9be2-4037-b063-467edc660d10","savedPayload":{"position":{"x":24185.59861639777,"y":20172.40443682648},"targetPosition":{"x":24253.736985041858,"y":19794.942149948358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Sparta/MACD/Output/MACD-245209/Multi-Period-Daily/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Sparta/MACD/Output/MACD-245209/Multi-Period-Daily\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"8a9dde13-e4b8-40f3-80bc-ea51050b2f08","savedPayload":{"position":{"x":23976.58099048201,"y":20059.839950775375},"targetPosition":{"x":24253.736985041858,"y":19794.942149948358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"adee537e-2c4d-4454-9006-05171c09313a","savedPayload":{"position":{"x":23572.389825091155,"y":20297.639595413715},"targetPosition":{"x":23343.761620114765,"y":20123.26425437635},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"38a52afc-8a7c-49c9-8068-dbe438ac64d0","savedPayload":{"position":{"x":23343.761620114765,"y":20123.26425437635},"targetPosition":{"x":23114.911800232218,"y":19949.052188248912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"83439522-7972-454e-af41-d516ee51b26f","savedPayload":{"position":{"x":23191.720927051763,"y":20519.5481982982},"targetPosition":{"x":23153.32539458597,"y":20234.34090194127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"03c98b2f-4e9c-4800-9d9b-5c6ef3f94665","savedPayload":{"position":{"x":23153.32539458597,"y":20234.34090194127},"targetPosition":{"x":23114.911800232218,"y":19949.052188248912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Line","code":"{\n \"codeName\": \"line\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.line","id":"6aa9ee37-3044-444c-bc27-e09dd444f182","savedPayload":{"position":{"x":22766.089113867776,"y":20407.04051839331},"targetPosition":{"x":22940.45245588743,"y":20178.09557432319},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c9237bcd-4d76-4460-bcbb-8474843efc03","savedPayload":{"position":{"x":22940.45245588743,"y":20178.09557432319},"targetPosition":{"x":23114.911800232218,"y":19949.052188248912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Signal","code":"{\n \"codeName\": \"signal\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.signal","id":"35ac625e-5516-4a15-b92d-f3a5dc4d8ec0","savedPayload":{"position":{"x":22544.26962127812,"y":20026.09060903021},"targetPosition":{"x":22829.51947921132,"y":19987.581843938577},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8dd22ed9-76d1-4108-8a7f-ed4c03d7eede","savedPayload":{"position":{"x":22829.51947921132,"y":19987.581843938577},"targetPosition":{"x":23114.911800232218,"y":19949.052188248912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA24","code":"{\n \"codeName\": \"ema24\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema24","id":"e56fbdd1-4b1c-484b-bcbb-6b9ec6414080","savedPayload":{"position":{"x":22656.77502005649,"y":19600.403155485892},"targetPosition":{"x":22885.801706683524,"y":19774.692133480745},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"57f32362-cb33-471d-a855-2c3cddb88bf9","savedPayload":{"position":{"x":22885.801706683524,"y":19774.692133480745},"targetPosition":{"x":23114.911800232218,"y":19949.052188248912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA52","code":"{\n \"codeName\": \"ema52\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema52","id":"619feddc-3ff2-4a97-aa8b-a924b80bd099","savedPayload":{"position":{"x":23037.730971410412,"y":19378.69752462964},"targetPosition":{"x":23076.396039897503,"y":19663.831818920695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"93f3c29f-178d-44fb-8f64-21e617d2387e","savedPayload":{"position":{"x":23076.396039897503,"y":19663.831818920695},"targetPosition":{"x":23114.911800232218,"y":19949.052188248912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Histogram","code":"{\n \"codeName\": \"histogram\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.histogram","id":"615f9b7a-676f-444b-8fc8-8355c8c8aef6","savedPayload":{"position":{"x":24508.01340375869,"y":18117.907709654977},"targetPosition":{"x":23810.084241299657,"y":19035.367137304183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"650fc7dc-1ea8-426d-a720-89efdec4292e","savedPayload":{"position":{"x":23810.084241299657,"y":19035.367137304183},"targetPosition":{"x":23114.911800232218,"y":19949.052188248912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"371d2f8e-8868-4933-baee-9827c0496fc1","savedPayload":{"position":{"x":23114.911800232218,"y":19949.052188248912},"targetPosition":{"x":24253.736985041858,"y":19794.942149948358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\n/* EMA24 and EMA52 Calculation */\n\nlet candle = record.current\n\nvariable.ema24 = calculateEMA(24, candle.close, variable.previousEMA24)\nvariable.previousEMA24 = variable.ema24\n\nvariable.ema52 = calculateEMA(52, candle.close, variable.previousEMA52)\nvariable.previousEMA52 = variable.ema52\n\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}\n\n/* MACD Line Calculation */\n\nmacdLine = variable.ema24 - variable.ema52\n\nvariable.line = macdLine.toFixed(2)\n\n/* Signal Line Calculation (EMA9 of MACD Line) */\n\nmacdSignal = calculateSignalEMA(9, variable.line, variable.previousSignal)\nvariable.signal = macdSignal.toFixed(2)\nvariable.previousSignal = variable.signal \n \nfunction calculateSignalEMA(periods, currentSignal, previousEMA) {\n let k = 2 / (periods + 1)\n return currentSignal * k + variable.previousSignal * (1-k)\n}\n\n/* Histogram Calculation */\n\nhistogram = variable.line - variable.signal\nvariable.histogram = histogram.toFixed(2)","id":"4f4e66a9-4791-494a-ada7-72f3d5db7415","savedPayload":{"position":{"x":23533.9127097766,"y":19624.913656683973},"targetPosition":{"x":23725.28673385609,"y":19619.489060449112},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d8e07801-1e77-44a5-a232-fd672264f252","savedPayload":{"position":{"x":23725.28673385609,"y":19619.489060449112},"targetPosition":{"x":23916.77555313108,"y":19613.785407331867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\n/* SMA Calculation */\n\n/* \nAlthough we don't really need to set an array to access a number of candles,\nwe will do so in order to reuse the code built for the SMA indicator, and also\nso that the same code may be used for other MACD products that may require\naccessing more candles than are available in the span of two days.\n*/\n\nvariable.last100 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")\n\n/* EMA Calculation */\n\nvariable.previousEMA24 = 0\nvariable.previousEMA52 = 0\n\n/* MACD Line calculation */\n\nvariable.previousSignal = 0","id":"5f25ca07-07ce-49a7-a397-5d2f3e89c0c3","savedPayload":{"position":{"x":23715.247703718367,"y":19287.624015336478},"targetPosition":{"x":23816.149937445385,"y":19450.782435383222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dd01ebc2-8204-4b51-83d9-92d416521553","savedPayload":{"position":{"x":23816.149937445385,"y":19450.782435383222},"targetPosition":{"x":23916.77555313108,"y":19613.785407331867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e1a8b841-84d8-4ddd-822b-d81fe2b9a313","savedPayload":{"position":{"x":23916.77555313108,"y":19613.785407331867},"targetPosition":{"x":24253.736985041858,"y":19794.942149948358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"47984765-8180-45cf-a9eb-f0a8b22d165d","savedPayload":{"position":{"x":24253.690504970877,"y":19794.916976873006},"targetPosition":{"x":24943.912345641576,"y":19462.636283096508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"MACD 245209","id":"2fe60a0e-dd3a-4bb8-a321-4742389ab930"}}}],"id":"7724b857-30aa-4d3c-9ab7-e70895229f2a","savedPayload":{"position":{"x":24943.912345641576,"y":19462.636283096508},"targetPosition":{"x":24943.90880679387,"y":18695.646004599515},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Indicator Bot","name":"RSI","code":"{\n\"codeName\": \"RSI\",\n\"repo\": \"RSI-Indicator-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates RSI.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"New Output Dataset","id":"41eb05b7-0222-49b7-9b62-f14f43302f8f","savedPayload":{"position":{"x":25087.033986119506,"y":20075.878408814446},"targetPosition":{"x":24752.581812208577,"y":20075.878408814446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"5ec62760-e144-4496-98ab-0415a4b315ec"}}}],"id":"35d2683b-470d-44e0-97bb-6075e6b5cc92","savedPayload":{"position":{"x":24752.581812208577,"y":20075.878408814446},"targetPosition":{"x":24450.303780802,"y":19901.35810601175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Ending: Candles Volumes","code":"{\"mainUtility\": \"Market Ending Point\"}","id":"ea692963-60c5-445b-921c-f2be614186d7","savedPayload":{"position":{"x":24624.824083604697,"y":20552.513771114212},"targetPosition":{"x":24624.824083604697,"y":20203.636137418325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}},{"type":"Status Dependency","name":"Self","code":"{\"mainUtility\": \"Self Reference\"}","id":"4211e16a-a54f-4049-941e-fd3be8244852","savedPayload":{"position":{"x":24325.584504581435,"y":20376.402188919597},"targetPosition":{"x":24624.824083604697,"y":20203.636137418325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"bbff3247-937a-429e-9959-c896b8207f26"}}}],"dataDependencies":[{"type":"Data Dependency","name":"New Data Dependency","id":"9d9b2836-9eab-437b-9426-2cef828cd0e3","savedPayload":{"position":{"x":24319.398891155655,"y":20027.298820340577},"targetPosition":{"x":24624.824083604697,"y":20203.636137418325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"id":"1a42abe3-eaab-444f-8687-c3930dc28a06","savedPayload":{"position":{"x":24624.824083604697,"y":20203.636137418325},"targetPosition":{"x":24450.303780802,"y":19901.35810601175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"bbff3247-937a-429e-9959-c896b8207f26","savedPayload":{"position":{"x":24450.303780802,"y":20250.39871161714},"targetPosition":{"x":24450.303780802,"y":19901.35810601175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"New Execution Started Event","id":"b2babf3e-22f6-4064-b4e5-840eec9ff707","savedPayload":{"position":{"x":24119.014764356543,"y":19793.715779422993},"targetPosition":{"x":24450.303780802,"y":19901.35810601175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"ae4d9310-3446-41b3-88b9-90978defd305","savedPayload":{"position":{"x":24148.025749395427,"y":20075.878408814446},"targetPosition":{"x":24450.303780802,"y":19901.35810601175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"96f31416-5090-428a-be83-985a0b3ab275","savedPayload":{"position":{"x":24547.438555379653,"y":19580.83512602703},"targetPosition":{"x":24547.303780802,"y":19049.27689480097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Calculates RSI\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"New Output Dataset","id":"7539f591-7ca7-4fd5-9142-a6b470f8ef8e","savedPayload":{"position":{"x":24219.21626208436,"y":20034.042188444855},"targetPosition":{"x":24047.02417878073,"y":20034.042188444855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f1556d09-f134-4678-83fb-04002d1dcd34"}}}],"id":"f5a20865-68a4-4e3f-8547-afc741d7fb85","savedPayload":{"position":{"x":24047.02417878073,"y":20034.042188444855},"targetPosition":{"x":23956.68582253594,"y":19696.89485306703},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Self","code":"{\"mainUtility\": \"Self Reference\"}","id":"632dbd10-6cf7-453a-8e5c-4a74d33fcaf4","savedPayload":{"position":{"x":23866.347466291147,"y":20206.311835547265},"targetPosition":{"x":23866.347466291147,"y":20034.042188444855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2d1d4e5a-49c3-4d9a-958a-195d3f0949c2"}}},{"type":"Status Dependency","name":"Ending: Candles Volumes","code":"{\"mainUtility\": \"Market Ending Point\"}","id":"5a1a8917-5d85-4f33-b552-a314ee6c54db","savedPayload":{"position":{"x":23735.42228753363,"y":20164.96736720237},"targetPosition":{"x":23866.347466291147,"y":20034.042188444855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Starting: Exchange Raw Data","code":"{\"mainUtility\": \"Market Starting Point\"}","id":"9ea493a4-33b1-445e-975d-b202994079c8","savedPayload":{"position":{"x":23676.243476482887,"y":20034.042188444855},"targetPosition":{"x":23866.347466291147,"y":20034.042188444855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[{"type":"Data Dependency","name":"New Data Dependency","id":"86af23c8-eb30-499a-9d88-39e0e9df06e5","savedPayload":{"position":{"x":23747.074839054723,"y":19914.76956120843},"targetPosition":{"x":23866.347466291147,"y":20034.042188444855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"id":"6e2f9722-24f9-40dc-9e38-f4dcbbbeb38a","savedPayload":{"position":{"x":23866.347466291147,"y":20034.042188444855},"targetPosition":{"x":23956.68582253594,"y":19696.89485306703},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"2d1d4e5a-49c3-4d9a-958a-195d3f0949c2","savedPayload":{"position":{"x":23709.876843402908,"y":19943.703832200063},"targetPosition":{"x":23956.68582253594,"y":19696.89485306703},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"New Execution Started Event","id":"525140eb-d037-4b8d-9eef-f01574ca49ff","savedPayload":{"position":{"x":23586.018709494827,"y":19576.457807294184},"targetPosition":{"x":23956.68582253594,"y":19696.89485306703},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"9162d141-5486-4a0d-a3e4-71c74060beb8","savedPayload":{"position":{"x":23619.538487158115,"y":19606.55649682224},"targetPosition":{"x":23956.68582253594,"y":19696.89485306703},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f1177bcd-22dc-425b-8f30-878844aa82b8","savedPayload":{"position":{"x":24171.839967023327,"y":19425.270197179867},"targetPosition":{"x":24547.303780802,"y":19049.27689480097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"RSI14","code":"{\n \"codeName\": \"RSI-14\",\n \"singularVariableName\": \"rsi14\",\n \"pluralVariableName\": \"rsi14s\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"5ec62760-e144-4496-98ab-0415a4b315ec","savedPayload":{"position":{"x":23860.78108884921,"y":19264.866147563156},"targetPosition":{"x":24016.76019789278,"y":19049.290967268},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"f1556d09-f134-4678-83fb-04002d1dcd34","savedPayload":{"position":{"x":23763.853286829682,"y":19131.362345252557},"targetPosition":{"x":24016.76019789278,"y":19049.290967268},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"Begin","code":"record.current.begin","id":"069fdb18-b72b-4fd2-9255-061f7a4f0b7e","savedPayload":{"position":{"x":23273.48150399802,"y":19007.687948734332},"targetPosition":{"x":23392.879450606528,"y":18946.857774498134},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"309f6917-c246-4d84-89ac-abca872eb828","savedPayload":{"position":{"x":23392.879450606528,"y":18946.857774498134},"targetPosition":{"x":23512.04790391323,"y":18885.77694848449},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"2128f049-e006-4e71-b9a5-91655bfcb290","savedPayload":{"position":{"x":23256.944396172235,"y":18803.400589606044},"targetPosition":{"x":23384.644556699583,"y":18844.722175282986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"38a593cc-3232-4977-9597-18939c86bb5d","savedPayload":{"position":{"x":23384.644556699583,"y":18844.722175282986},"targetPosition":{"x":23512.04790391323,"y":18885.77694848449},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Value","code":"{\n \"codeName\": \"value\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.value","id":"c5e2ca09-53a7-4655-b0dc-242b7fbd11f0","savedPayload":{"position":{"x":23390.535751025673,"y":18647.587930597},"targetPosition":{"x":23451.389677717332,"y":18766.869812283374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5988292a-69bf-4e2d-833b-dccb78aa32a8","savedPayload":{"position":{"x":23451.389677717332,"y":18766.869812283374},"targetPosition":{"x":23512.04790391323,"y":18885.77694848449},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b12a20d9-1b6a-4525-b50c-8edf1fc3bff8","savedPayload":{"position":{"x":23512.04790391323,"y":18885.77694848449},"targetPosition":{"x":24016.76019789278,"y":19049.290967268},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\n/* \nCalculation method credit: https://www.macroption.com/rsi-calculation/\n\nRSI Calculation Formula\n\n RSI = 100 – 100 / ( 1 + RS )\n RS = Relative Strength = AvgU / AvgD\n AvgU = average of all up moves in the last N price bars\n AvgD = average of all down moves in the last N price bars\n N = the period of RSI\n There are 3 different commonly used methods for the exact calculation of AvgU and AvgD (see details below)\n\nRSI Calculation Step by Step\n\n Calculate up moves and down moves (get U and D)\n Average the up moves and down moves (get AvgU and AvgD)\n Calculate Relative Strength (get RS)\n Calculate the Relative Strength Index (get RSI)\n*/\n\n/* Calculating Up Moves and Down Moves */\n\n//let candle = record.current // Our main dependencies are candles \n//let candlePrevious = record.previous\n\nif (record.previous !== undefined) {\n if (record.current.close > record.previous.close) {\n variable.last14U.push(record.current.close - record.previous.close) // Add win to last 14 array.\n } else {\n variable.last14U.push(0) // Add 0 to keep proper count of records in the last 14 array.\n }\n \n if (record.current.close < record.previous.close) {\n variable.last14D.push(record.previous.close - record.current.close) // Add win to last 14 array.\n } else {\n variable.last14D.push(0) // Add 0 to keep proper count of records in the last 14 array.\n }\n \n if (variable.last14U.length > 14) {\n variable.last14U.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 14 elements.\n }\n \n if (variable.last14D.length > 14) {\n variable.last14D.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 14 elements.\n }\n \n /* Calculating Averages of Up Moves and Down Moves */\n \n variable.avgU = calculateAVGU(14)\n variable.avgD = calculateAVGD(14)\n \n /* Calculating Relative Strength */\n \n if (variable.avgD > 0) {\n relativeStrength = variable.avgU / variable.avgD\n } else {\n relativeStrength = 0\n }\n\n /* Calculating RSI */\n\n relativeStrengthIndex = 100 - 100 / ( 1 + relativeStrength)\n\n if (relativeStrengthIndex !== undefined) {\n variable.value = relativeStrengthIndex.toFixed(2)\n } else {\n variable.value = 0\n }\n} else {\n variable.value = 0\n}\n\nfunction calculateAVGU(periods) { // Having a function avoids us to repeat code.\n /* We check we have enough values to make the calculation */\n if (variable.last14U.length < periods) { return 0 } // If we dont, we define the value is zero.\n\n let sumU = 0 // Initialize sum variable. \n for (let j = variable.last14U.length - periods; j < variable.last14U.length; j++) { // Iterate through the last periods\n sumU = sumU + variable.last14U[j]\n }\n let averageU = sumU / periods\n return averageU\n}\n\nfunction calculateAVGD(periods) { // Having a function avoids us to repeat code.\n /* We check we have enough values to make the calculation */\n if (variable.last14D.length < periods) { return 0 } // If we dont, we define the value is zero.\n\n let sumD = 0 // Initialize sum variable. \n for (let i = variable.last14D.length - periods; i < variable.last14D.length; i++) { // Iterate through the last periods\n sumD = sumD + variable.last14D[i]\n }\n let averageD = sumD / periods\n return averageD\n}","id":"a00ed092-3bc1-4288-979d-34c204713d65","savedPayload":{"position":{"x":23618.680985176536,"y":18726.585454943684},"targetPosition":{"x":23739.85719491175,"y":18781.250687186126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c2f8b23a-4e60-4181-9c19-ed243eb151cb","savedPayload":{"position":{"x":23739.85719491175,"y":18781.250687186126},"targetPosition":{"x":23861.104816045787,"y":18835.063233474226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\n/* \nWe keep two separate arrays to store last 14 price increments or losses.\n*/\n\nvariable.last14U = []\nvariable.last14D = []","id":"59da2324-377e-4307-a6d1-b9cf170733ba","savedPayload":{"position":{"x":23833.52426899524,"y":18570.36163284585},"targetPosition":{"x":23847.447837325588,"y":18702.921446957807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aca0a380-6355-42b9-876b-6932d6d13105","savedPayload":{"position":{"x":23847.447837325588,"y":18702.921446957807},"targetPosition":{"x":23861.104816045787,"y":18835.063233474226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5c066df5-2a29-4c74-b7bc-dc5ea1329089","savedPayload":{"position":{"x":23861.104816045787,"y":18835.063233474226},"targetPosition":{"x":24016.76019789278,"y":19049.290967268},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7","savedPayload":{"position":{"x":24016.76019789278,"y":19049.290967268},"targetPosition":{"x":24547.303780802,"y":19049.27689480097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"RSI 14","id":"72403d40-2a64-4e51-8eaf-b1a872e4474e"}}}],"id":"276e2181-0c8d-4d56-94e0-1999ec317cb5","savedPayload":{"position":{"x":24367.083932244037,"y":19272.592619348416},"targetPosition":{"x":24943.90880679387,"y":18695.646004599515},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"tradingBots":[],"plotters":[{"type":"Plotter","name":"SMA","code":"{\n\"codeName\": \"Plotter SMA\"\n}","modules":[{"type":"Plotter Module","name":"SMA Popular","code":"{\n\t\"codeName\": \"SMA-Popular\",\n \"icon\": \"moving-average\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"SMA 20 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma20","id":"81557791-d18b-472c-b152-612294f281cc","savedPayload":{"position":{"x":22392.17774694965,"y":19921.854614811506},"targetPosition":{"x":23451.24855286871,"y":19829.197925422322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b932c738-3b05-4b1f-a822-2ba7bae30252","savedPayload":{"position":{"x":23451.24855286871,"y":19829.197925422322},"targetPosition":{"x":24510.319358787772,"y":19736.54123603314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 20 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma20","id":"dd573845-585b-4a89-8518-425173e02916","savedPayload":{"position":{"x":22768.61160351222,"y":18516.984336430884},"targetPosition":{"x":23639.465481149997,"y":19126.76278623201},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"44ba79ce-2ad1-4bb7-87db-df0aa58e6440","savedPayload":{"position":{"x":23639.465481149997,"y":19126.76278623201},"targetPosition":{"x":24510.319358787772,"y":19736.54123603314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 50 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma50","id":"054b7477-497f-46f9-b33e-de27dc3d494f","savedPayload":{"position":{"x":23960.00987569377,"y":17682.758285239346},"targetPosition":{"x":24235.16461724077,"y":18709.649760636243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"00efabf8-701d-44b1-a590-b8399149dfbb","savedPayload":{"position":{"x":24235.16461724077,"y":18709.649760636243},"targetPosition":{"x":24510.319358787772,"y":19736.54123603314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 50 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma50","id":"2e18404b-0350-4720-95d1-77533ced3986","savedPayload":{"position":{"x":25408.90407102364,"y":17809.520101979222},"targetPosition":{"x":24959.611714905706,"y":18773.03066900618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"084b4468-49d2-4ad2-a716-ebc338c34248","savedPayload":{"position":{"x":24959.611714905706,"y":18773.03066900618},"targetPosition":{"x":24510.319358787772,"y":19736.54123603314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 100 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma100","id":"9e730b8b-7f20-41df-9126-9d9aae2f8ca6","savedPayload":{"position":{"x":26437.34049284169,"y":18837.95652379727},"targetPosition":{"x":25473.82992581473,"y":19287.248879915205},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bbacba1b-6b2d-48b7-a440-986a04c61858","savedPayload":{"position":{"x":25473.82992581473,"y":19287.248879915205},"targetPosition":{"x":24510.319358787772,"y":19736.54123603314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 100 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma100","id":"922d462b-1e9f-4766-859d-330041428bc0","savedPayload":{"position":{"x":26564.102309581565,"y":20286.850719127142},"targetPosition":{"x":25537.21083418467,"y":20011.69597758014},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"270a8be8-ad51-4061-abe1-a4c7234eb88a","savedPayload":{"position":{"x":25537.21083418467,"y":20011.69597758014},"targetPosition":{"x":24510.319358787772,"y":19736.54123603314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 200 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma200","id":"4278cffb-da8c-458e-b014-449f8487204b","savedPayload":{"position":{"x":25729.876258390028,"y":21478.24899130869},"targetPosition":{"x":25120.0978085889,"y":20607.395113670915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cd242031-8d7a-4cee-a680-156b0be7c7c7","savedPayload":{"position":{"x":25120.0978085889,"y":20607.395113670915},"targetPosition":{"x":24510.319358787772,"y":19736.54123603314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 200 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma200","id":"a3b73c57-a9b2-4a55-9232-9bacf741a933","savedPayload":{"position":{"x":24325.005980009406,"y":21854.682847871263},"targetPosition":{"x":24417.66266939859,"y":20795.6120419522},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"328b048e-eb4a-4a02-ad95-a17cd170c4a7","savedPayload":{"position":{"x":24417.66266939859,"y":20795.6120419522},"targetPosition":{"x":24510.319358787772,"y":19736.54123603314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6755d98f-e1de-4ae9-b688-d06ab9cc543e","savedPayload":{"position":{"x":24510.319358787772,"y":19736.54123603314},"targetPosition":{"x":23758.582624937877,"y":20488.277969883035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"SMA 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"6368c66e-47fc-486d-8c03-e2ed303de825","savedPayload":{"position":{"x":25335.783583428776,"y":18709.649760636243},"targetPosition":{"x":25060.628841881775,"y":19736.54123603314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"b0d22693-8100-49e9-b92e-11a8a55a5480","savedPayload":{"position":{"x":25060.628841881775,"y":19736.54123603314},"targetPosition":{"x":24785.474100334774,"y":20763.432711430036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"d9dae274-33d5-403d-a5ff-5514104df62e","savedPayload":{"position":{"x":24243.23030345217,"y":21702.626517719767},"targetPosition":{"x":24785.474100334774,"y":20763.432711430036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 20 End","id":"44ba79ce-2ad1-4bb7-87db-df0aa58e6440"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"45823ead-7d67-409c-8160-ea36496c412e","savedPayload":{"position":{"x":24258.73718739567,"y":19851.09761599752},"targetPosition":{"x":24785.474100334774,"y":20763.432711430036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 20 Begin","id":"b932c738-3b05-4b1f-a822-2ba7bae30252"}}}],"id":"ffe11ebb-d04f-4bf6-b6ff-43382be7c347","savedPayload":{"position":{"x":24785.474100334774,"y":20763.432711430036},"targetPosition":{"x":23758.582624937877,"y":20488.277969883035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 50","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"b0de67a4-9a26-40ce-aa19-f5336145f871","savedPayload":{"position":{"x":26087.52031727867,"y":20964.85996218593},"targetPosition":{"x":25060.628841881775,"y":21240.01470373293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"f06c2d68-11d4-40e0-99df-43a758ca0123","savedPayload":{"position":{"x":25060.628841881775,"y":21240.01470373293},"targetPosition":{"x":24033.73736648488,"y":21515.16944527993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"baf11fde-1f46-4e77-a8fe-d19a3ee8a4b2","savedPayload":{"position":{"x":23513.412115604504,"y":22416.399216265763},"targetPosition":{"x":24033.73736648488,"y":21515.16944527993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 50 End","id":"084b4468-49d2-4ad2-a716-ebc338c34248"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"bb6ef8cd-1473-4200-9c0e-35b5eab40259","savedPayload":{"position":{"x":23508.490532583928,"y":20605.4152424488},"targetPosition":{"x":24033.73736648488,"y":21515.16944527993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 50 Begin","id":"00efabf8-701d-44b1-a590-b8399149dfbb"}}}],"id":"c867bef2-aa91-4753-9b27-68f88d42370e","savedPayload":{"position":{"x":24033.73736648488,"y":21515.16944527993},"targetPosition":{"x":23758.582624937877,"y":20488.277969883035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 100","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"b03ef9cb-fef3-4a54-bf5a-a85528fa2699","savedPayload":{"position":{"x":24821.69890928245,"y":21991.751437582825},"targetPosition":{"x":23758.582624937877,"y":21991.751437582825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"baf25122-e7de-4283-b638-cfe2766220ac","savedPayload":{"position":{"x":23758.582624937877,"y":21991.751437582825},"targetPosition":{"x":23006.84589108798,"y":21240.01470373293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"8657980b-1796-4291-bba6-87520122b302","savedPayload":{"position":{"x":22471.320671680394,"y":22167.57159248134},"targetPosition":{"x":23006.84589108798,"y":21240.01470373293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 100 Begin","id":"bbacba1b-6b2d-48b7-a440-986a04c61858"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"45403abf-a4b1-4f8a-9d18-8ee72fef1792","savedPayload":{"position":{"x":22480.743625380655,"y":20328.77884955074},"targetPosition":{"x":23006.84589108798,"y":21240.01470373293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 100 End","id":"270a8be8-ad51-4061-abe1-a4c7234eb88a"}}}],"id":"7473f9b9-7737-4ee1-8418-39b96d8365c3","savedPayload":{"position":{"x":23006.84589108798,"y":21240.01470373293},"targetPosition":{"x":23758.582624937877,"y":20488.277969883035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 200","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"9475aa23-1561-45f6-8129-9d7ffaf0bb22","savedPayload":{"position":{"x":22181.381666446978,"y":22266.906179129826},"targetPosition":{"x":22456.53640799398,"y":21240.01470373293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"9007d9ad-f2b5-45fb-a7b3-b9579c74866d","savedPayload":{"position":{"x":22456.53640799398,"y":21240.01470373293},"targetPosition":{"x":22731.69114954098,"y":20213.123228336033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"0b3d001b-060a-4d72-94e7-d8e9f76ef1ae","savedPayload":{"position":{"x":22206.499687807325,"y":21122.781523760088},"targetPosition":{"x":22731.69114954098,"y":20213.123228336033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 200 Begin","id":"cd242031-8d7a-4cee-a680-156b0be7c7c7"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"178f2776-a5db-4cb9-b8c7-11ecb471bf12","savedPayload":{"position":{"x":22199.573795617573,"y":19291.46893575158},"targetPosition":{"x":22731.69114954098,"y":20213.123228336033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 200 End","id":"328b048e-eb4a-4a02-ad95-a17cd170c4a7"}}}],"id":"5dbe47bb-9414-4edd-be08-5ab50755a852","savedPayload":{"position":{"x":22731.69114954098,"y":20213.123228336033},"targetPosition":{"x":23758.582624937877,"y":20488.277969883035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"340dc986-ccc9-4b47-ac54-294187daa2e0","savedPayload":{"position":{"x":24268.740837781548,"y":20791.527136470224},"targetPosition":{"x":24648.34293730514,"y":19802.817911370996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Popular SMA","code":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"SMA 20","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma20","id":"4f901876-b274-426e-9755-529b6241890d","savedPayload":{"position":{"x":22567.81482267122,"y":21309.550393789206},"targetPosition":{"x":22512.1756153326,"y":20247.89107336417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"57d75985-febe-441b-be12-31f5eb10881b","savedPayload":{"position":{"x":22512.1756153326,"y":20247.89107336417},"targetPosition":{"x":22456.53640799398,"y":19186.231752939137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 50","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma50","id":"dc2d66e9-8dc1-4092-bfa8-e147c7cf7226","savedPayload":{"position":{"x":20471.52729968492,"y":19948.205358836705},"targetPosition":{"x":21464.03185383945,"y":19567.21855588792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"74e3faab-246a-4c05-ae0a-b68f2095aa73","savedPayload":{"position":{"x":21464.03185383945,"y":19567.21855588792},"targetPosition":{"x":22456.53640799398,"y":19186.231752939137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 100","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma100","id":"1b045b3c-13a9-4091-a804-0040340cf1be","savedPayload":{"position":{"x":21118.45489640362,"y":17533.83869906408},"targetPosition":{"x":21787.4956521988,"y":18360.035226001608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f46c7caf-8907-4cc4-b048-efe691a24049","savedPayload":{"position":{"x":21787.4956521988,"y":18360.035226001608},"targetPosition":{"x":22456.53640799398,"y":19186.231752939137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 200","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma200","id":"ef7a7e7d-dec3-4da6-9646-d087e03b7a71","savedPayload":{"position":{"x":23614.56566242236,"y":17403.023076972546},"targetPosition":{"x":23035.55103520817,"y":18294.62741495584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8e1108c8-e8a4-4ae8-b6b1-765c4292580a","savedPayload":{"position":{"x":23035.55103520817,"y":18294.62741495584},"targetPosition":{"x":22456.53640799398,"y":19186.231752939137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7fc74763-c245-4b23-8121-7fe0d1e8e1db","savedPayload":{"position":{"x":23825.552353561437,"y":20469.5647035543},"targetPosition":{"x":24648.34293730514,"y":19802.817911370996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ddf21e96-c312-4ebe-9e2b-f56e8ea072aa","savedPayload":{"position":{"x":23703.77271832805,"y":19627.960072422542},"targetPosition":{"x":24235.043828155554,"y":18707.646981692462},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"SMA Base 11","code":"{\n\t\"codeName\": \"SMA-Base11\",\n \"icon\": \"moving-average\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"SMA 11 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma11","id":"ab8c79b6-26ed-436e-a9ed-5581e48403a9","savedPayload":{"position":{"x":23540.41711666867,"y":19247.50630153213},"targetPosition":{"x":23701.58252027462,"y":19365.06935347018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"77d02772-853e-4e30-9efe-7bea8e829d51","savedPayload":{"position":{"x":23701.58252027462,"y":19365.06935347018},"targetPosition":{"x":23862.978058930265,"y":19482.450507696303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 11 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma11","id":"e7f8c6de-4085-4886-ad93-c207274eb90c","savedPayload":{"position":{"x":23718.988162977435,"y":19110.180440256732},"targetPosition":{"x":23790.954190710672,"y":19296.366326771695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"185ca2e7-b561-4ce4-b219-bd54496885b5","savedPayload":{"position":{"x":23790.954190710672,"y":19296.366326771695},"targetPosition":{"x":23862.978058930265,"y":19482.450507696303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 22 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma22","id":"0c62dd54-916a-4187-be47-0715604a0632","savedPayload":{"position":{"x":23942.916532720206,"y":19091.521544213236},"targetPosition":{"x":23902.962592969976,"y":19287.01214187583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"08b23cb2-cf78-48ae-bd9a-efe0e8df4578","savedPayload":{"position":{"x":23902.962592969976,"y":19287.01214187583},"targetPosition":{"x":23862.978058930265,"y":19482.450507696303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 22 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma22","id":"f1d537b7-09a0-4031-8565-02ea33b66261","savedPayload":{"position":{"x":24141.815879669353,"y":19197.243775939063},"targetPosition":{"x":24002.41277255522,"y":19339.841007183975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3871971f-7f4b-49a0-a0d7-b1d08a4db951","savedPayload":{"position":{"x":24002.41277255522,"y":19339.841007183975},"targetPosition":{"x":23862.978058930265,"y":19482.450507696303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 33 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma33","id":"5cbdb800-4b2b-49e6-a8ef-678587ecd626","savedPayload":{"position":{"x":24252.082682337474,"y":19393.731921374147},"targetPosition":{"x":24057.54638571465,"y":19438.076855490854},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2734c9f2-1347-4b5b-8dbf-f7f42eb2c810","savedPayload":{"position":{"x":24057.54638571465,"y":19438.076855490854},"targetPosition":{"x":23862.978058930265,"y":19482.450507696303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 33 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma33","id":"d7051dab-455d-4d02-8e0b-59139c3546d3","savedPayload":{"position":{"x":24332.24513108263,"y":19651.759014316965},"targetPosition":{"x":24050.86217202129,"y":19550.267817539232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"id":"ce242fe6-2b52-4b89-a203-ce398b3545fd","savedPayload":{"position":{"x":24050.86217202129,"y":19550.267817539232},"targetPosition":{"x":23862.978058930265,"y":19482.450507696303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 55 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma55","id":"2c8a5860-2c8c-4a04-b0aa-d353817d3dab","savedPayload":{"position":{"x":24105.84945942509,"y":19799.88236713748},"targetPosition":{"x":23984.4144590265,"y":19641.157544400212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bdc5f0cf-2c2f-466c-963b-19d81a13b532","savedPayload":{"position":{"x":23984.4144590265,"y":19641.157544400212},"targetPosition":{"x":23862.978058930265,"y":19482.450507696303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 55 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma55","id":"62dfcbf0-e773-41db-80e0-bf46d47d977f","savedPayload":{"position":{"x":23895.80283778981,"y":19881.00871780962},"targetPosition":{"x":23879.378283043083,"y":19681.7098288851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2e58c59-c5d7-4b42-bb66-f012da23c12a","savedPayload":{"position":{"x":23879.378283043083,"y":19681.7098288851},"targetPosition":{"x":23862.978058930265,"y":19482.450507696303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 111 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma111","id":"b496251d-8005-4d21-9be0-1dec58cb58ba","savedPayload":{"position":{"x":23675.64852452729,"y":19835.595585988183},"targetPosition":{"x":23769.274110245144,"y":19658.98993521767},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"62ed1060-3233-4175-a4cc-8ad04a123105","savedPayload":{"position":{"x":23769.274110245144,"y":19658.98993521767},"targetPosition":{"x":23862.978058930265,"y":19482.450507696303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 11 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma111","id":"3e765b91-17a0-4b30-bcfb-d7491afa9635","savedPayload":{"position":{"x":23514.648962798336,"y":19677.900191077148},"targetPosition":{"x":23688.710954822705,"y":19580.081478689695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bdee0fe7-c635-483d-b547-6271410cc35a","savedPayload":{"position":{"x":23688.710954822705,"y":19580.081478689695},"targetPosition":{"x":23862.978058930265,"y":19482.450507696303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"853ae08f-85ed-48e9-82d9-7f00184ff7e7","savedPayload":{"position":{"x":23862.978058930265,"y":19482.450507696303},"targetPosition":{"x":22869.570019380342,"y":19429.935004894945},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"SMA 11","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"a36a0be4-c3be-4e17-8459-ce24d08c60d4","savedPayload":{"position":{"x":22985.3965598599,"y":20073.14517989858},"targetPosition":{"x":22941.83703278028,"y":19946.968370215443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"bc76dbe0-28fe-4811-b396-583cc810ad8c","savedPayload":{"position":{"x":22941.83703278028,"y":19946.968370215443},"targetPosition":{"x":22854.5683460304,"y":19695.48582974846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"007b0aa7-d129-4b66-97b1-a223b61465a9","savedPayload":{"position":{"x":22839.056589646767,"y":19961.437559991682},"targetPosition":{"x":22854.5683460304,"y":19695.48582974846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 11 Begin","id":"77d02772-853e-4e30-9efe-7bea8e829d51"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"8bf6c449-35d6-44c0-ac25-0da059e0c7d0","savedPayload":{"position":{"x":22772.079928311763,"y":19945.100010978796},"targetPosition":{"x":22854.5683460304,"y":19695.48582974846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 11 End","id":"185ca2e7-b561-4ce4-b219-bd54496885b5"}}}],"id":"82eff706-25ff-45ba-b066-0f20b64e26e1","savedPayload":{"position":{"x":22854.5683460304,"y":19695.48582974846},"targetPosition":{"x":22869.570019380342,"y":19429.935004894945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 22","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"48b5e69c-d187-40f8-aee9-89f02ac7b442","savedPayload":{"position":{"x":22675.04081614421,"y":20054.803450158204},"targetPosition":{"x":22690.60764514474,"y":19921.8954271635},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"13b6ae03-77c1-473a-9cd9-eee42cab5005","savedPayload":{"position":{"x":22690.60764514474,"y":19921.8954271635},"targetPosition":{"x":22740.328260712897,"y":19662.358005480037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"5101118b-d0b2-46b3-b752-c1e8f3e09842","savedPayload":{"position":{"x":22599.25795240091,"y":19893.683204873614},"targetPosition":{"x":22740.328260712897,"y":19662.358005480037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 22 End","id":"3871971f-7f4b-49a0-a0d7-b1d08a4db951"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"5d1290b9-98c2-4925-9da4-fcdf50d13c5b","savedPayload":{"position":{"x":22555.597823174852,"y":19849.33111121948},"targetPosition":{"x":22740.328260712897,"y":19662.358005480037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 22 Begin","id":"08b23cb2-cf78-48ae-bd9a-efe0e8df4578"}}}],"id":"b7186c69-0a02-4820-bb58-1e2cee5790b3","savedPayload":{"position":{"x":22740.328260712897,"y":19662.358005480037},"targetPosition":{"x":22869.570019380342,"y":19429.935004894945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 33","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"a8183072-9dc8-4f7c-b72b-742477e4c8fd","savedPayload":{"position":{"x":22421.660023726057,"y":19907.24493098807},"targetPosition":{"x":22493.471370534793,"y":19794.274964094002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"98a87528-cb66-4e15-a3b0-aadb8d25fcec","savedPayload":{"position":{"x":22493.471370534793,"y":19794.274964094002},"targetPosition":{"x":22652.107114284758,"y":19582.993056626136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"242e470b-2971-40b2-9f06-a95bf95e23fc","savedPayload":{"position":{"x":22423.911623307267,"y":19729.74422139828},"targetPosition":{"x":22652.107114284758,"y":19582.993056626136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 33 End","id":"ce242fe6-2b52-4b89-a203-ce398b3545fd"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"106e4253-deab-440c-828a-ea55aea78c97","savedPayload":{"position":{"x":22404.34428345752,"y":19671.046218620908},"targetPosition":{"x":22652.107114284758,"y":19582.993056626136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 33 Begin","id":"2734c9f2-1347-4b5b-8dbf-f7f42eb2c810"}}}],"id":"53f19bad-dcb0-476f-8b32-0d332d1ad130","savedPayload":{"position":{"x":22652.107114284758,"y":19582.993056626136},"targetPosition":{"x":22869.570019380342,"y":19429.935004894945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 55","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"ea853676-6bdc-4723-a515-1a4c683fa1fa","savedPayload":{"position":{"x":22258.94621100253,"y":19665.072316986432},"targetPosition":{"x":22372.684462641002,"y":19594.513050423186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"1fd3b244-b5ae-4a96-add5-50b228eac931","savedPayload":{"position":{"x":22372.684462641002,"y":19594.513050423186},"targetPosition":{"x":22607.15868909351,"y":19473.15916688941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"c0102a15-8594-4582-9714-75e555e3f2ac","savedPayload":{"position":{"x":22337.753646982048,"y":19506.343148670363},"targetPosition":{"x":22607.15868909351,"y":19473.15916688941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 55 End","id":"d2e58c59-c5d7-4b42-bb66-f012da23c12a"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"aa781190-aa71-4407-bc72-db67ffd67c7e","savedPayload":{"position":{"x":22345.68373504747,"y":19444.973066236253},"targetPosition":{"x":22607.15868909351,"y":19473.15916688941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 55 Begin","id":"bdc5f0cf-2c2f-466c-963b-19d81a13b532"}}}],"id":"8341d899-4df1-47f8-8e0d-bb87b76ed622","savedPayload":{"position":{"x":22607.15868909351,"y":19473.15916688941},"targetPosition":{"x":22869.570019380342,"y":19429.935004894945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 111","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"85056d46-5dd2-4dc2-9c40-55ef936aeea8","savedPayload":{"position":{"x":22217.98607032489,"y":19376.480389395754},"targetPosition":{"x":22350.951836345317,"y":19362.329767382438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"bd5b197d-7425-461d-a2ab-5ad6446d00ee","savedPayload":{"position":{"x":22350.951836345317,"y":19362.329767382438},"targetPosition":{"x":22614.51605006936,"y":19354.618879216097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"fbd2d02d-d58e-4d04-a5a6-9bbc6e877244","savedPayload":{"position":{"x":22357.270847877106,"y":19267.670137862806},"targetPosition":{"x":22614.51605006936,"y":19354.618879216097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 11 End","id":"bdee0fe7-c635-483d-b547-6271410cc35a"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"e79d988b-7d4a-4201-839a-a95f99dc26fe","savedPayload":{"position":{"x":22410.79200823705,"y":19182.028416333433},"targetPosition":{"x":22614.51605006936,"y":19354.618879216097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 111 Begin","id":"62ed1060-3233-4175-a4cc-8ad04a123105"}}}],"id":"5745a180-5f94-4109-b8e5-41b2c21e9f1a","savedPayload":{"position":{"x":22614.51605006936,"y":19354.618879216097},"targetPosition":{"x":22869.570019380342,"y":19429.935004894945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ade8af76-e9e6-4dda-8921-c3c5cc8a0ecc","savedPayload":{"position":{"x":22869.570019380342,"y":19429.935004894945},"targetPosition":{"x":23224.379528955076,"y":19035.74578541231},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"SMA Base 11","code":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"SMA 11","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma11","id":"bce6e5ba-e93b-4c0f-9013-db467727e721","savedPayload":{"position":{"x":21848.06278742359,"y":19138.68181043866},"targetPosition":{"x":22026.204084831006,"y":18941.172916676944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f4794965-6a35-4289-9e0e-718b931028de","savedPayload":{"position":{"x":22026.204084831006,"y":18941.172916676944},"targetPosition":{"x":22204.12786455065,"y":18743.580339156488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 22","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma22","id":"e8837d50-025b-4bbc-8199-328df7afbdda","savedPayload":{"position":{"x":21697.964269839962,"y":18907.744842056032},"targetPosition":{"x":21951.085092532667,"y":18825.672232701734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2b4712d6-5952-4bd0-bcac-7d396d95f842","savedPayload":{"position":{"x":21951.085092532667,"y":18825.672232701734},"targetPosition":{"x":22204.12786455065,"y":18743.580339156488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 33","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma33","id":"825bc681-cb31-4d26-85af-4f692538fc9d","savedPayload":{"position":{"x":21683.554974134655,"y":18633.15401968596},"targetPosition":{"x":21943.875913616852,"y":18688.35747241285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"377ff3cb-9d7b-45aa-a2c1-3cabf3540c8e","savedPayload":{"position":{"x":21943.875913616852,"y":18688.35747241285},"targetPosition":{"x":22204.12786455065,"y":18743.580339156488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 55","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma55","id":"24c4a804-6686-43ab-a664-db08d860034c","savedPayload":{"position":{"x":21808.644643664284,"y":18387.7872885707},"targetPosition":{"x":22006.44026439972,"y":18565.658997956805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4b0485d9-4d37-4402-939b-eb878c6750ec","savedPayload":{"position":{"x":22006.44026439972,"y":18565.658997956805},"targetPosition":{"x":22204.12786455065,"y":18743.580339156488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 111","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma111","id":"3d21e771-7edd-4460-aa23-da3c7880a629","savedPayload":{"position":{"x":22039.818595544664,"y":18237.967632619177},"targetPosition":{"x":22122.109629849787,"y":18490.705191755114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"738b01bd-a4da-4f90-a816-c021eeb81030","savedPayload":{"position":{"x":22122.109629849787,"y":18490.705191755114},"targetPosition":{"x":22204.12786455065,"y":18743.580339156488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fc702308-8514-4e8d-85d3-5d052aad782c","savedPayload":{"position":{"x":22204.12786455065,"y":18743.580339156488},"targetPosition":{"x":23224.379528955076,"y":19035.74578541231},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4a61ac35-a1ae-40f4-b3da-f81ae796ee00","savedPayload":{"position":{"x":23314.73400689149,"y":19238.934574371382},"targetPosition":{"x":24235.043828155554,"y":18707.646981692462},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"SMA Base 7","code":"{\n\t\"codeName\": \"SMA-Base7\",\n \"icon\": \"moving-average\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"SMA 7 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma7","id":"b459dee1-24d0-4794-9c4d-d9c58972f6e6","savedPayload":{"position":{"x":22081.693731495867,"y":20194.395385081236},"targetPosition":{"x":22432.664378279518,"y":20592.785246730466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8d6e2d59-fe23-4ba5-ad87-d9d15ad60340","savedPayload":{"position":{"x":22432.664378279518,"y":20592.785246730466},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 7 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma7","id":"3994ef79-ab0b-4552-bbde-f754a86f2e04","savedPayload":{"position":{"x":22323.064857798545,"y":20034.630617311574},"targetPosition":{"x":22553.390353647832,"y":20512.80231746894},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a95fee99-4a06-44d7-a6c4-0eea9ccec4d9","savedPayload":{"position":{"x":22553.390353647832,"y":20512.80231746894},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 14 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma14","id":"40d386cb-84a9-49b0-b28e-3d39e9e274cb","savedPayload":{"position":{"x":22598.659162247233,"y":19945.84456639733},"targetPosition":{"x":22691.164008661297,"y":20468.381076192723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c6d631e7-8cd0-4ccd-b7b4-90b8dda615d8","savedPayload":{"position":{"x":22691.164008661297,"y":20468.381076192723},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 21 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma21","id":"6d2cd604-9a38-4ab7-b19d-9e9e3ae8ad25","savedPayload":{"position":{"x":22887.478661940873,"y":19934.511760551395},"targetPosition":{"x":22835.60141427505,"y":20462.76313442795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4f1044fa-67dd-42dc-ba74-61e299e1f1e1","savedPayload":{"position":{"x":22835.60141427505,"y":20462.76313442795},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 21 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma21","id":"1de80488-5eeb-491c-bd5f-e5bd7569dc59","savedPayload":{"position":{"x":23168.93368384024,"y":20001.654026799115},"targetPosition":{"x":22976.37194200293,"y":20496.373553883685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"df7e58c1-c042-443b-bfd3-69d57894d358","savedPayload":{"position":{"x":22976.37194200293,"y":20496.373553883685},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 28 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma28","id":"93b50d69-b003-4590-b098-ff59dc226e22","savedPayload":{"position":{"x":23421.804586739607,"y":20142.26908059328},"targetPosition":{"x":23102.846449667086,"y":20566.707121292133},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7bd742dd-7c4c-4dfe-9415-e655a5e1cc88","savedPayload":{"position":{"x":23102.846449667086,"y":20566.707121292133},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 28 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma28","id":"36ddca01-d7c2-44e4-bac6-1efd92721b56","savedPayload":{"position":{"x":23627.35041306508,"y":20345.924538683164},"targetPosition":{"x":23205.646543312178,"y":20668.56050502073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7678774b-b068-4757-962b-8e126342898a","savedPayload":{"position":{"x":23205.646543312178,"y":20668.56050502073},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 35 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma35","id":"e631b84b-646b-41f7-b87b-7cb4fbf8ac76","savedPayload":{"position":{"x":23770.317899354584,"y":20597.493894125717},"targetPosition":{"x":23277.141076989625,"y":20794.371163759875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"93613bd9-2dbb-493c-a72e-414b0398733e","savedPayload":{"position":{"x":23277.141076989625,"y":20794.371163759875},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 35 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma35","id":"89e3900f-eeaf-47cb-97f6-9093b2f39811","savedPayload":{"position":{"x":23840.117927293933,"y":20878.3192233726},"targetPosition":{"x":23312.04947013971,"y":20934.8144329045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f620fdbe-48b5-4831-995d-b3c721738d1b","savedPayload":{"position":{"x":23312.04947013971,"y":20934.8144329045},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 70 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma70","id":"cacaceaf-b19d-4b2a-81b3-5ac6b44877b7","savedPayload":{"position":{"x":23831.56265532351,"y":21167.156725646633},"targetPosition":{"x":23307.772430847017,"y":21079.25946499542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9e506a85-5f72-4a3f-a773-cd85d8b15f21","savedPayload":{"position":{"x":23307.76543588165,"y":21079.25574033001},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 70 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma70","id":"8658d660-52c4-41f8-b423-db569ff19941","savedPayload":{"position":{"x":23745.268359935835,"y":21443.360436865136},"targetPosition":{"x":23264.616776618168,"y":21217.38761527259},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8392e1ff-33a6-4b95-baad-3f146bd3c121","savedPayload":{"position":{"x":23264.620684639573,"y":21217.39444574614},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 140 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma140","id":"a56e674e-ec4f-4448-a8bc-bfbc3a02eea4","savedPayload":{"position":{"x":23587.647225706543,"y":21686.04830368737},"targetPosition":{"x":23185.789673212348,"y":21338.754044242043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"39e65adb-6125-4e9a-8f15-5403b21aac40","savedPayload":{"position":{"x":23185.80188145606,"y":21338.756402186893},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 140 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma140","id":"9aeb4594-c7e0-41e1-83b3-8df31b0d44b0","savedPayload":{"position":{"x":23370.40408130073,"y":21877.223943157715},"targetPosition":{"x":23077.153288320136,"y":21434.365605462564},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7559cbf5-acba-4a60-91b4-d95f90293f22","savedPayload":{"position":{"x":23077.14580384131,"y":21434.371939037756},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 210 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma210","id":"8856ee41-b264-4468-9dac-eb808b483df3","savedPayload":{"position":{"x":23109.60825776314,"y":22002.681619729596},"targetPosition":{"x":22946.72960371705,"y":21497.11254037647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"479df802-576f-45f1-8322-6b2e493c5ecc","savedPayload":{"position":{"x":22946.7420018044,"y":21497.112082798965},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 210 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma210","id":"f4fa8a22-fe87-4174-bf51-cb574381ca0d","savedPayload":{"position":{"x":22824.64487656171,"y":22053.136645543625},"targetPosition":{"x":22804.219380562034,"y":21522.34296682117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"45a926f2-4bb2-4562-b40f-bd2532ff1d10","savedPayload":{"position":{"x":22804.222867716988,"y":21522.331663327735},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 280 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma280","id":"49f183b2-f8d1-4055-947d-291b7787d846","savedPayload":{"position":{"x":22537.040418893113,"y":22024.85401533115},"targetPosition":{"x":22660.389522216254,"y":21508.201199186664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d5e455bf-bb27-41fa-ba41-c8e7d0aa4d5e","savedPayload":{"position":{"x":22660.40054255809,"y":21508.203626871564},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 280 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma280","id":"012f6580-f9e9-47f6-b6f4-82598b8e8aa7","savedPayload":{"position":{"x":22267.330679055995,"y":21919.920677484384},"targetPosition":{"x":22525.51095624912,"y":21455.71807577555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"298d0ca9-1b4a-48d8-8efe-fda6b2fc2c34","savedPayload":{"position":{"x":22525.52460632505,"y":21455.72192676038},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 350 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma350","id":"4a3f6588-26e3-446b-ac4e-54ad3bc9ef3c","savedPayload":{"position":{"x":22035.940167999936,"y":21746.113706774275},"targetPosition":{"x":22409.796868597416,"y":21368.798696971404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f3c05d30-da2e-449e-8471-dcc216f4e630","savedPayload":{"position":{"x":22409.81103625787,"y":21368.79704561975},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 350 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma350","id":"1157762f-1236-43b1-a399-06d59a992d55","savedPayload":{"position":{"x":21860.031832759552,"y":21516.32533121127},"targetPosition":{"x":22321.832941795547,"y":21253.88095955267},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d6598381-9b15-4cb3-afba-b85ed6770ce3","savedPayload":{"position":{"x":22321.837423570607,"y":21253.86885366319},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"New Point","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.propertyA","id":"24151ce9-3ecb-4c6b-97e5-41a8a95b45a8","savedPayload":{"position":{"x":21752.641870952473,"y":21247.5871483179},"targetPosition":{"x":22268.13050144937,"y":21119.479264457063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"30f77a0a-81fd-4498-8510-cfca20b6b1d8","savedPayload":{"position":{"x":22268.12760851619,"y":21119.4859681114},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"New Point","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.propertyA","id":"0da81a21-3169-44c7-a896-17eb32bdfa17","savedPayload":{"position":{"x":21721.739900023054,"y":20960.250976400705},"targetPosition":{"x":22252.68199671055,"y":20975.773225802197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6fd2e88e-f5e1-45d5-8baf-4bc724bf2bae","savedPayload":{"position":{"x":22252.68199671055,"y":20975.773225802197},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 14 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma14","id":"78e7fbfb-c210-44b6-8399-1567f81c73c9","savedPayload":{"position":{"x":21769.657090626264,"y":20674.768568547748},"targetPosition":{"x":22276.663064199358,"y":20832.961162260774},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d5f823d6-8b99-44b5-99dc-04724a531323","savedPayload":{"position":{"x":22276.663064199358,"y":20832.961162260774},"targetPosition":{"x":22783.795884568084,"y":20991.32979942545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e561ee2d-8458-4001-8904-61cd2a3a815e","savedPayload":{"position":{"x":22783.795884568084,"y":20991.32979942545},"targetPosition":{"x":22819.977664423015,"y":18872.940535835056},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"SMA 7","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"38522e0c-85c4-49ae-93ac-9a04470855e0","savedPayload":{"position":{"x":22409.679423848873,"y":19703.701901117896},"targetPosition":{"x":22458.8327123933,"y":19579.710902085026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"fcc0c4b0-28ea-4482-8da8-16a0c88c1e52","savedPayload":{"position":{"x":22458.8327123933,"y":19579.710902085026},"targetPosition":{"x":22531.25149458351,"y":19319.135019751713},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"f11dbba2-2bd3-4d0a-a182-2ef78a492d32","savedPayload":{"position":{"x":22383.871181803643,"y":19559.05444146679},"targetPosition":{"x":22531.25149458351,"y":19319.135019751713},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 7 End","id":"a95fee99-4a06-44d7-a6c4-0eea9ccec4d9"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"c50700bc-305d-4cb6-b1bf-1c03c7459d2b","savedPayload":{"position":{"x":22335.916650560546,"y":19488.839606453097},"targetPosition":{"x":22531.25149458351,"y":19319.135019751713},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 7 Begin","id":"8d6e2d59-fe23-4ba5-ad87-d9d15ad60340"}}}],"id":"62ad882d-f16d-4476-8c17-0f6e2d6e2b76","savedPayload":{"position":{"x":22531.25149458351,"y":19319.135019751713},"targetPosition":{"x":22819.977664423015,"y":18872.940535835056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 14","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"14a21030-fa6b-44ef-8cb2-e4f3cb79126e","savedPayload":{"position":{"x":22194.61154959615,"y":19563.417277598208},"targetPosition":{"x":22274.599100691037,"y":19456.22963523122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"ca2fa8f2-f6a1-4084-8606-a35495dfd596","savedPayload":{"position":{"x":22274.599100691037,"y":19456.22963523122},"targetPosition":{"x":22425.319079297802,"y":19228.842439557353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"e7d170e8-3d4f-4a55-883a-3a3394fef2af","savedPayload":{"position":{"x":22221.584987381466,"y":19419.91866904447},"targetPosition":{"x":22425.319079297802,"y":19228.842439557353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 14 Begin","id":"d5f823d6-8b99-44b5-99dc-04724a531323"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"2383789a-4600-4b8b-a49b-51cbeb46d4f1","savedPayload":{"position":{"x":22191.45372833171,"y":19341.911607550726},"targetPosition":{"x":22425.319079297802,"y":19228.842439557353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 14 End","id":"c6d631e7-8cd0-4ccd-b7b4-90b8dda615d8"}}}],"id":"ab179cef-53c3-46f7-a83b-af29ccd8bc90","savedPayload":{"position":{"x":22425.319079297802,"y":19228.842439557353},"targetPosition":{"x":22819.977664423015,"y":18872.940535835056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 21","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"f8f0733e-0890-4d54-8d77-1b1fc8b8c92b","savedPayload":{"position":{"x":22036.227502448095,"y":19377.43318514927},"targetPosition":{"x":22141.40152367329,"y":19294.61677691305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"a0f2de63-1abd-4945-9c8c-84e21fd121e0","savedPayload":{"position":{"x":22141.40152367329,"y":19294.61677691305},"targetPosition":{"x":22346.552370395646,"y":19114.39487414295},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"69c3f249-07bf-4a03-b8a1-9d74d0255f23","savedPayload":{"position":{"x":22099.798873792148,"y":19245.92145115942},"targetPosition":{"x":22346.552370395646,"y":19114.39487414295},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 21 End","id":"df7e58c1-c042-443b-bfd3-69d57894d358"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"959961b9-9bf9-48ce-9ee0-08d2d6a62b8e","savedPayload":{"position":{"x":22091.688875147818,"y":19162.773839534217},"targetPosition":{"x":22346.552370395646,"y":19114.39487414295},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 21 Begin","id":"4f1044fa-67dd-42dc-ba74-61e299e1f1e1"}}}],"id":"9a17429f-8213-4a7e-8167-dc36d761973e","savedPayload":{"position":{"x":22346.552370395646,"y":19114.39487414295},"targetPosition":{"x":22819.977664423015,"y":18872.940535835056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 28","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"713c60e9-ee11-4551-ab62-58ce9c16e066","savedPayload":{"position":{"x":21931.794402523235,"y":19157.192011506104},"targetPosition":{"x":22054.878120748454,"y":19104.469860075253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"725a4d2f-0838-4d78-a8fa-a2b129feda2f","savedPayload":{"position":{"x":22054.878120748454,"y":19104.469860075253},"targetPosition":{"x":22300.117948292656,"y":18983.502606428247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"f4c161f4-6510-47a2-97f7-3f9f848d9892","savedPayload":{"position":{"x":22027.78134348722,"y":19046.598645687987},"targetPosition":{"x":22300.117948292656,"y":18983.502606428247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 28 Begin","id":"7bd742dd-7c4c-4dfe-9415-e655a5e1cc88"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"b1b22a6f-0a69-401f-90ea-2306baee0ea2","savedPayload":{"position":{"x":22041.297662935445,"y":18964.343798459853},"targetPosition":{"x":22300.117948292656,"y":18983.502606428247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 28 End","id":"7678774b-b068-4757-962b-8e126342898a"}}}],"id":"4f6e0c60-00a8-4a76-b1b1-4eaa25c5824c","savedPayload":{"position":{"x":22300.117948292656,"y":18983.502606428247},"targetPosition":{"x":22819.977664423015,"y":18872.940535835056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 35","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"73f591c5-286b-4441-aa59-f647f738e40e","savedPayload":{"position":{"x":21756.95561143389,"y":18936.665949974664},"targetPosition":{"x":22020.661199740247,"y":18898.54875345234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2c56cb10-43c9-447b-8b8a-30dae8e7fab8","savedPayload":{"position":{"x":22020.661199740247,"y":18898.54875345234},"targetPosition":{"x":22289.2034830023,"y":18845.271864477025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"3ad24108-1339-4c6d-abc6-27a9aa5bc046","savedPayload":{"position":{"x":22010.079585440984,"y":18835.781446298723},"targetPosition":{"x":22289.2034830023,"y":18845.271864477025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 35 End","id":"f620fdbe-48b5-4831-995d-b3c721738d1b"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"abfdefe3-b9d4-4816-b2cc-7aa64bb69734","savedPayload":{"position":{"x":22043.929492816405,"y":18759.662097987348},"targetPosition":{"x":22289.2034830023,"y":18845.271864477025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 35 Begin","id":"93613bd9-2dbb-493c-a72e-414b0398733e"}}}],"id":"a8a09eca-7bee-4f17-b7db-1f43f419441c","savedPayload":{"position":{"x":22289.2034830023,"y":18845.271864477025},"targetPosition":{"x":22819.977664423015,"y":18872.940535835056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 70","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"9ac33f9d-bce7-407a-8de9-3334bb263b69","savedPayload":{"position":{"x":21776.936722871604,"y":18659.60367870689},"targetPosition":{"x":22041.518850870696,"y":18690.844389531303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ea184e1f-5a0f-4ed3-b3ed-6ba18e7237f9","savedPayload":{"position":{"x":22041.518850870696,"y":18690.844389531303},"targetPosition":{"x":22314.490649621075,"y":18708.79224844942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"5505dd50-5ad7-48fc-9256-14cab581d92f","savedPayload":{"position":{"x":22047.356001518077,"y":18627.437090076637},"targetPosition":{"x":22314.490649621075,"y":18708.79224844942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 70 Begin","id":"9e506a85-5f72-4a3f-a773-cd85d8b15f21"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"b255b251-b73a-469c-a41f-e273d2909af2","savedPayload":{"position":{"x":22099.66690443254,"y":18562.585030105394},"targetPosition":{"x":22314.490649621075,"y":18708.79224844942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 70 End","id":"8392e1ff-33a6-4b95-baad-3f146bd3c121"}}}],"id":"31cf093b-6de4-4e4a-a8f4-f3ff989dd374","savedPayload":{"position":{"x":22314.490649621075,"y":18708.79224844942},"targetPosition":{"x":22819.977664423015,"y":18872.940535835056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 140","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.PATINATED_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"e9088da2-eb17-4e48-9fba-5bd00fba6a2b","savedPayload":{"position":{"x":21868.091641963005,"y":18397.032006852627},"targetPosition":{"x":22115.51659457901,"y":18495.65087916826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b93ae9ca-6c4e-47db-a998-045e845ab9cd","savedPayload":{"position":{"x":22115.51659457901,"y":18495.65087916826},"targetPosition":{"x":22374.30301981045,"y":18583.49151169883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"e1bdea5b-664c-4146-adf6-858405354f8c","savedPayload":{"position":{"x":22137.277247453894,"y":18435.68686158368},"targetPosition":{"x":22374.30301981045,"y":18583.49151169883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 140 Begin","id":"39e65adb-6125-4e9a-8f15-5403b21aac40"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"3d994072-d0b7-4065-a8be-3c718de28086","savedPayload":{"position":{"x":22204.798867901605,"y":18386.717228783815},"targetPosition":{"x":22374.30301981045,"y":18583.49151169883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 140 End","id":"7559cbf5-acba-4a60-91b4-d95f90293f22"}}}],"id":"41a149aa-efdf-4f53-82cf-cce9e904a000","savedPayload":{"position":{"x":22374.30301981045,"y":18583.49151169883},"targetPosition":{"x":22819.977664423015,"y":18872.940535835056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 210","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"08949257-633e-4013-b770-bbb798972d2d","savedPayload":{"position":{"x":22024.044107200156,"y":18166.94814287645},"targetPosition":{"x":22237.406915903648,"y":18326.137917971675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"53e088d8-8ec5-4dbe-b732-c65f31005105","savedPayload":{"position":{"x":22237.406915903648,"y":18326.137917971675},"targetPosition":{"x":22464.540582296224,"y":18477.899709075937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"15882e16-4782-48e8-9cac-fbb1d07ae51d","savedPayload":{"position":{"x":22273.923708747578,"y":18273.82290678468},"targetPosition":{"x":22464.540582296224,"y":18477.899709075937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 210 Begin","id":"479df802-576f-45f1-8322-6b2e493c5ecc"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"a6f51174-ea46-4282-a476-4e809f456682","savedPayload":{"position":{"x":22351.85967245826,"y":18243.932239144713},"targetPosition":{"x":22464.540582296224,"y":18477.899709075937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 210 End","id":"45a926f2-4bb2-4562-b40f-bd2532ff1d10"}}}],"id":"c3ee15c5-a5b3-4318-bc09-a9fd03592d83","savedPayload":{"position":{"x":22464.540582296224,"y":18477.899709075937},"targetPosition":{"x":22819.977664423015,"y":18872.940535835056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 280","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"942d9600-7935-4ca6-81d8-9bd014df736f","savedPayload":{"position":{"x":22234.58113689852,"y":17985.028755207608},"targetPosition":{"x":22399.122864732013,"y":18193.96335155123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1c6e0c3f-8ac7-4b0b-9da8-0f7faf9befd1","savedPayload":{"position":{"x":22399.122864732013,"y":18193.96335155123},"targetPosition":{"x":22579.11562699128,"y":18399.247967017982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"cc54382b-cf2b-42c7-8958-8816809dd7ba","savedPayload":{"position":{"x":22447.82102541068,"y":18152.426820853827},"targetPosition":{"x":22579.11562699128,"y":18399.247967017982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 280 Begin","id":"d5e455bf-bb27-41fa-ba41-c8e7d0aa4d5e"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"3629786a-8eed-4cff-9780-0e685aeed577","savedPayload":{"position":{"x":22531.14703253733,"y":18144.487366694873},"targetPosition":{"x":22579.11562699128,"y":18399.247967017982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 280 End","id":"298d0ca9-1b4a-48d8-8efe-fda6b2fc2c34"}}}],"id":"3bbf5574-e89c-4538-a95c-2da58e5a74d7","savedPayload":{"position":{"x":22579.11562699128,"y":18399.247967017982},"targetPosition":{"x":22819.977664423015,"y":18872.940535835056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 350","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.BLACK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"8142bd21-31e4-4edd-97d5-217e30321e0a","savedPayload":{"position":{"x":22484.80830085512,"y":17863.24666523072},"targetPosition":{"x":22589.524382340038,"y":18107.77165458195},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6eade211-19cf-48a7-87ac-faf30e387e10","savedPayload":{"position":{"x":22589.524382340038,"y":18107.77165458195},"targetPosition":{"x":22710.34278844673,"y":18352.904459965663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"f16d8eac-9e78-4167-b087-9803637412a6","savedPayload":{"position":{"x":22642.48776965642,"y":18079.182630120184},"targetPosition":{"x":22710.34278844673,"y":18352.904459965663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 350 End","id":"d6598381-9b15-4cb3-afba-b85ed6770ce3"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"b94a339d-5abf-4563-a693-edb5d812c24e","savedPayload":{"position":{"x":22752.923865032368,"y":18092.343335108475},"targetPosition":{"x":22710.34278844673,"y":18352.904459965663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 350 Begin","id":"f3c05d30-da2e-449e-8471-dcc216f4e630"}}}],"id":"046240f2-f70b-471d-b07b-0e7490222f0d","savedPayload":{"position":{"x":22710.34278844673,"y":18352.904459965663},"targetPosition":{"x":22819.977664423015,"y":18872.940535835056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"391b803a-4b4e-4c0b-bb6b-b4d68e989c9c","savedPayload":{"position":{"x":22819.977664423015,"y":18872.940535835056},"targetPosition":{"x":23224.68246383561,"y":18379.157101002664},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"SMA Base 7","code":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"SMA 7","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma7","id":"1c683838-c882-49bd-997a-2f4255347854","savedPayload":{"position":{"x":22089.00186161869,"y":17928.42648802548},"targetPosition":{"x":22046.641897807018,"y":17666.545263183936},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c26c14bd-b9ab-4121-89b2-eb3044534cf2","savedPayload":{"position":{"x":22046.641897807018,"y":17666.545263183936},"targetPosition":{"x":22003.915640987463,"y":17404.354850708267},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 14","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma14","id":"1060ea54-bb29-4c3b-8db0-522893543a36","savedPayload":{"position":{"x":21791.832600489015,"y":17891.829591962716},"targetPosition":{"x":21897.926502005048,"y":17648.14793083728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"94b29f18-cad5-49df-8b87-d6ef10f5ae61","savedPayload":{"position":{"x":21897.926502005048,"y":17648.14793083728},"targetPosition":{"x":22003.915640987463,"y":17404.354850708267},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 21","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma21","id":"c0287e9c-4b88-4b92-b6ac-f17474649958","savedPayload":{"position":{"x":21561.590595863727,"y":17699.978377503565},"targetPosition":{"x":21782.74591288314,"y":17552.173861624313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ffcb7173-b2bf-4d5d-90e5-6f8b26af4b86","savedPayload":{"position":{"x":21782.74591288314,"y":17552.173861624313},"targetPosition":{"x":22003.915640987463,"y":17404.354850708267},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 28","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma28","id":"9f1615e0-e437-4221-8e9a-a6dcb4556022","savedPayload":{"position":{"x":21471.70147692391,"y":17413.965218002428},"targetPosition":{"x":21737.774445101568,"y":17409.14279091725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"186d8c1a-5eef-44a1-aa09-b28e4f5b6b0e","savedPayload":{"position":{"x":21737.774445101568,"y":17409.14279091725},"targetPosition":{"x":22003.915640987463,"y":17404.354850708267},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 35","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma35","id":"423f3069-d5a3-4d29-bb35-68802f367c50","savedPayload":{"position":{"x":21550.736929157425,"y":17125.091703570073},"targetPosition":{"x":21777.288950636426,"y":17264.69145738219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6b047d8e-451d-4267-adc4-6e9496aa0025","savedPayload":{"position":{"x":21777.288950636426,"y":17264.69145738219},"targetPosition":{"x":22003.915640987463,"y":17404.354850708267},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 70","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma70","id":"62ed074e-5b1a-4306-b411-cd436680147d","savedPayload":{"position":{"x":21773.6304870009,"y":16924.4136787359},"targetPosition":{"x":21888.752324769408,"y":17164.33758452146},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9676685c-f20e-4d65-a0fe-8551e80132ee","savedPayload":{"position":{"x":21888.752324769408,"y":17164.33758452146},"targetPosition":{"x":22003.915640987463,"y":17404.354850708267},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 140","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma140","id":"2200abd2-2897-4eff-9804-f599c0e18f42","savedPayload":{"position":{"x":22069.210197894237,"y":16876.07059200243},"targetPosition":{"x":22036.56322576591,"y":17140.16653857795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a44d3c89-8463-4493-b195-70ee4146bbdb","savedPayload":{"position":{"x":22036.56322576591,"y":17140.16653857795},"targetPosition":{"x":22003.915640987463,"y":17404.354850708267},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 210","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma210","id":"38e3066f-1951-4c96-8a36-3bcf778328bd","savedPayload":{"position":{"x":22344.29800144184,"y":16995.410028545666},"targetPosition":{"x":22174.12852942135,"y":17199.852653462287},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"44198c4d-4d98-43a2-9c03-2d8794b9edac","savedPayload":{"position":{"x":22174.12852942135,"y":17199.852653462287},"targetPosition":{"x":22003.915640987463,"y":17404.354850708267},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 280","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma280","id":"eca55243-4492-4983-9e03-04694437c8ae","savedPayload":{"position":{"x":22511.169496389262,"y":17244.526256965357},"targetPosition":{"x":22257.574132706854,"y":17324.43768604895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96706885-fa55-4fad-82bd-fb43a2f331d7","savedPayload":{"position":{"x":22257.574132706854,"y":17324.43768604895},"targetPosition":{"x":22003.915640987463,"y":17404.354850708267},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 350","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma350","id":"64ea1867-2fb1-4191-a4c7-b5ac37f7be7a","savedPayload":{"position":{"x":22516.78261794654,"y":17543.879443866874},"targetPosition":{"x":22260.356568251467,"y":17474.22137376895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9f208b33-3d80-4d2e-ad88-13139a8e93f8","savedPayload":{"position":{"x":22260.356568251467,"y":17474.22137376895},"targetPosition":{"x":22003.915640987463,"y":17404.354850708267},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b73ac725-eea1-4aa2-974c-937de300b456","savedPayload":{"position":{"x":22003.915640987463,"y":17404.354850708267},"targetPosition":{"x":23224.68246383561,"y":18379.157101002664},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"515565ff-dee2-4adf-adaf-b4cfea5f5dbd","savedPayload":{"position":{"x":23172.34284369738,"y":18707.643723812616},"targetPosition":{"x":24235.043828155554,"y":18707.646981692462},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"SMA Base 6","code":"{\n\t\"codeName\": \"SMA-Base6\",\n \"icon\": \"moving-average\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"SMA 6 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma6","id":"28dce892-9996-45ac-af68-55d0056b6af2","savedPayload":{"position":{"x":22942.161660416263,"y":18058.808958647547},"targetPosition":{"x":22640.754251104212,"y":18795.49978751256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dece94e6-77de-4d21-9376-c2efc825b567","savedPayload":{"position":{"x":22640.754251104212,"y":18795.49978751256},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 6 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma6","id":"f878b59a-0787-4c44-a341-02db47b15aad","savedPayload":{"position":{"x":23289.788564545815,"y":18254.52578102874},"targetPosition":{"x":22814.508247841422,"y":18893.61233440505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"32025fb3-9ec4-4f50-b4c9-9a73100ce864","savedPayload":{"position":{"x":22814.508247841422,"y":18893.61233440505},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 12 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma12","id":"d3c24df7-68df-4d50-92d6-9f722ee8816a","savedPayload":{"position":{"x":23577.17438697091,"y":18531.54868101745},"targetPosition":{"x":22958.309620552813,"y":19031.874093399718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8662f4a4-41a4-4992-a333-017cd8764cd1","savedPayload":{"position":{"x":22958.309620552813,"y":19031.874093399718},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 18 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma18","id":"fc0e1a4a-8966-4340-83bc-2c43992486ed","savedPayload":{"position":{"x":23787.074036353762,"y":18871.144059875664},"targetPosition":{"x":23063.3308418619,"y":19201.72688603095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3260182a-83b5-4362-8962-84ec488b69cb","savedPayload":{"position":{"x":23063.3308418619,"y":19201.72688603095},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 18 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma18","id":"53ce5612-9c75-4a89-98cd-7dd278f67df3","savedPayload":{"position":{"x":23906.26685793252,"y":19252.087757629564},"targetPosition":{"x":23122.97976871666,"y":19392.12895960282},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"942b73d2-241e-43dd-b83b-0d3724f331a4","savedPayload":{"position":{"x":23122.97976871666,"y":19392.12895960282},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 24 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma24","id":"9c2d5563-016b-40e7-a45f-973a874ee6e3","savedPayload":{"position":{"x":23926.89313625334,"y":19650.17972464314},"targetPosition":{"x":23133.278928083077,"y":19591.1744027933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c0b2d03c-3cec-4ca2-b344-cdd99cb28362","savedPayload":{"position":{"x":23133.278928083077,"y":19591.1744027933},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 24 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma24","id":"3b3a0b5b-0290-47a3-8bef-d5b289e4f7b6","savedPayload":{"position":{"x":23847.73818409721,"y":20041.286428400577},"targetPosition":{"x":23093.68331028053,"y":19786.745669851538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4b33b779-8111-415c-a1e5-893ed5f49527","savedPayload":{"position":{"x":23093.68331028053,"y":19786.745669851538},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 30 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma30","id":"876a382a-7632-4dcf-b0d5-b36d8df8b92c","savedPayload":{"position":{"x":23673.78097138538,"y":20400.42438005552},"targetPosition":{"x":23006.687344652495,"y":19966.334445423032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fef118ef-22cb-4ff5-b971-c90c2a01265a","savedPayload":{"position":{"x":23006.687344652495,"y":19966.334445423032},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 30 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma30","id":"59c1198f-77ea-4780-b25b-e17b11bd0a0e","savedPayload":{"position":{"x":23415.952770562995,"y":20705.021962241815},"targetPosition":{"x":22877.759301749087,"y":20118.65084530336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8e2f5657-06b0-4e46-aa7e-8676683ffb77","savedPayload":{"position":{"x":22877.759301749087,"y":20118.65084530336},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 60 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma60","id":"deea8750-3324-4bdc-bc4d-7fc9db32ceca","savedPayload":{"position":{"x":23090.461929156656,"y":20935.936198543048},"targetPosition":{"x":22715.002219606675,"y":20234.12036800941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8e7fb950-9b88-4aaf-95a1-982abf35b9f3","savedPayload":{"position":{"x":22715.002219606675,"y":20234.12036800941},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 60 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma60","id":"4c4c6ec2-0ae2-4c37-bf9e-a2753f2b6ac5","savedPayload":{"position":{"x":22717.759899747158,"y":21078.66090085054},"targetPosition":{"x":22528.640202544848,"y":20305.49530749198},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"173b07f4-37d0-4831-8d6b-1b989d9e3213","savedPayload":{"position":{"x":22528.640202544848,"y":20305.49530749198},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 120 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma120","id":"4fae8019-4feb-4608-b26e-1b84bfa92eca","savedPayload":{"position":{"x":22321.66015088871,"y":21124.205149473248},"targetPosition":{"x":22330.58112372808,"y":20328.275789918305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2fb358ff-8b9f-4b95-95f8-8be509b5b3a1","savedPayload":{"position":{"x":22330.58112372808,"y":20328.275789918305},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 120 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma120","id":"94a5dfc2-27fa-48e5-8d60-125c185ee02c","savedPayload":{"position":{"x":21823.338336449553,"y":21452.777345793133},"targetPosition":{"x":22132.88443939786,"y":20301.04290976755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"id":"682e079f-319c-43dc-91a2-5732c3fb28c8","savedPayload":{"position":{"x":22132.88443939786,"y":20301.04290976755},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 180 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma180","id":"c2b1772b-a983-4ecd-baec-c3ca0c346515","savedPayload":{"position":{"x":21556.914554037772,"y":20918.663814125255},"targetPosition":{"x":21948.168833394764,"y":20225.505815077264},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5a2a1087-3910-4dd5-90d6-2370dc8949fa","savedPayload":{"position":{"x":21948.168833394764,"y":20225.505815077264},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 180 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma180","id":"b7886b86-1f12-4645-b2fb-ecb4182dbec2","savedPayload":{"position":{"x":21236.66110539307,"y":20680.479503521932},"targetPosition":{"x":21788.028745972962,"y":20106.412599677526},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1b5a66be-de8e-40c3-b3f2-e193e5deaeed","savedPayload":{"position":{"x":21788.028745972962,"y":20106.412599677526},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 240 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma240","id":"219f9e45-38cc-4c5f-a396-f7a0788f973e","savedPayload":{"position":{"x":20985.7292335773,"y":20370.176045464537},"targetPosition":{"x":21662.556840910427,"y":19951.26693185243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"854a73e9-f8d2-4b85-a0dd-65284e175ca0","savedPayload":{"position":{"x":21662.556840910427,"y":19951.26693185243},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 240 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma240","id":"57299592-e72a-4e7e-ac7a-e055ac925792","savedPayload":{"position":{"x":20819.825941637355,"y":20007.250561949568},"targetPosition":{"x":21579.587360276695,"y":19769.81755557696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"13eca50c-c1fb-4baa-8618-1f7eafde66c9","savedPayload":{"position":{"x":21579.587360276695,"y":19769.81755557696},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 300 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma300","id":"fc7307b3-aeb1-49c0-bac9-ac2d27ad5d05","savedPayload":{"position":{"x":20737.949766478196,"y":19618.904768983903},"targetPosition":{"x":21532.93660175541,"y":19577.83571778121},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"45ae2073-5312-48dc-b4ed-61326a2ce947","savedPayload":{"position":{"x":21532.93660175541,"y":19577.83571778121},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 300 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma300","id":"9754f895-ef8d-4165-ae3b-efd97f52f9ce","savedPayload":{"position":{"x":20778.783638594068,"y":19216.985217402133},"targetPosition":{"x":21558.962240735174,"y":19374.702175534734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"31514c9e-d4f7-4c54-94ca-4e04e5f1df5c","savedPayload":{"position":{"x":21558.962240735174,"y":19374.702175534734},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 12 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma12","id":"cb472a55-eacc-4dec-b337-087a1116e39f","savedPayload":{"position":{"x":20920.651186037623,"y":18817.82893097167},"targetPosition":{"x":21637.269915092726,"y":19164.552407249717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"48fe3ebc-6bbf-4a33-9068-2766eaf1599a","savedPayload":{"position":{"x":21637.269915092726,"y":19164.552407249717},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 600 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma600","id":"a22c9eff-f7ff-4867-ba2e-c123b4036f99","savedPayload":{"position":{"x":21124.332658824496,"y":18503.920037396692},"targetPosition":{"x":21731.854936922544,"y":19018.055961388098},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3ecee44a-2a84-41ac-b579-f6f48acc590a","savedPayload":{"position":{"x":21731.854936922544,"y":19018.055961388098},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 600 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma600","id":"2197c8c8-f750-4adf-a521-b1e4b347663c","savedPayload":{"position":{"x":21410.28541769876,"y":18241.738387081175},"targetPosition":{"x":21871.28387398584,"y":18890.583584079064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9bd8a9e7-09cf-4989-a9fa-c2f73d361134","savedPayload":{"position":{"x":21871.28387398584,"y":18890.583584079064},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 1200 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma1200","id":"17399e4a-5716-4e7b-9348-995fef5766eb","savedPayload":{"position":{"x":21770.995464056454,"y":18045.37334881244},"targetPosition":{"x":22055.37627926394,"y":18788.612165070645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0481ec1e-ae49-4c99-a5ad-16c427db6e45","savedPayload":{"position":{"x":22055.37627926394,"y":18788.612165070645},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 1200 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma1200","id":"5df49dd0-4b42-4be0-8493-2d762fa6b9c2","savedPayload":{"position":{"x":22158.17442253024,"y":17950.555543197646},"targetPosition":{"x":22249.040133215403,"y":18741.282589731065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"eacd5f37-bdf2-4756-b7db-46db919b08a7","savedPayload":{"position":{"x":22249.040133215403,"y":18741.282589731065},"targetPosition":{"x":22339.48512421432,"y":19532.187715298798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ddf91804-9a1f-44db-aea2-11db8bcd6aa1","savedPayload":{"position":{"x":22339.37171357546,"y":19532.233287873252},"targetPosition":{"x":22556.006091604853,"y":17958.533287752864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"SMA 6","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"34040727-f963-4459-9d11-6dfe71da067f","savedPayload":{"position":{"x":22027.706515961894,"y":19731.41185469493},"targetPosition":{"x":22075.768373580817,"y":19469.938797603587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"ec04ffcd-829f-41db-9aa0-c3807ff916ef","savedPayload":{"position":{"x":22075.768373580817,"y":19469.938797603587},"targetPosition":{"x":22163.76507027264,"y":18945.372732302025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"143eac37-51eb-4384-9455-94a62c781a28","savedPayload":{"position":{"x":21970.604942019294,"y":19442.470876589345},"targetPosition":{"x":22163.76507027264,"y":18945.372732302025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 6 End","id":"32025fb3-9ec4-4f50-b4c9-9a73100ce864"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"ffabc963-65ea-44af-9d15-d8bf6896a781","savedPayload":{"position":{"x":21864.087897556255,"y":19385.267758336307},"targetPosition":{"x":22163.76507027264,"y":18945.372732302025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 6 Begin","id":"dece94e6-77de-4d21-9376-c2efc825b567"}}}],"id":"12470549-c8b6-453f-a87a-396921a0a871","savedPayload":{"position":{"x":22163.76507027264,"y":18945.372732302025},"targetPosition":{"x":22556.006091604853,"y":17958.533287752864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 12","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"065e548b-05c8-4419-9bd1-0ef305c8b868","savedPayload":{"position":{"x":21611.292029909906,"y":19549.259470174147},"targetPosition":{"x":21720.6247802108,"y":19306.87791297381},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"bb849209-1786-43ce-b2cc-cb1d43252144","savedPayload":{"position":{"x":21720.6247802108,"y":19306.87791297381},"targetPosition":{"x":21938.833246192647,"y":18822.686502415905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"9af3283c-bb60-4843-beae-89f1d065c8ba","savedPayload":{"position":{"x":21630.15473611301,"y":19254.894660130463},"targetPosition":{"x":21938.833246192647,"y":18822.686502415905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 12 Begin","id":"48fe3ebc-6bbf-4a33-9068-2766eaf1599a"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"fee1b2e2-fdd0-4a53-b277-b7549e08aaf8","savedPayload":{"position":{"x":21551.6491730445,"y":19186.19604543062},"targetPosition":{"x":21938.833246192647,"y":18822.686502415905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 12 End","id":"8662f4a4-41a4-4992-a333-017cd8764cd1"}}}],"id":"986a8bf8-3b7a-4421-80bd-940fa3bfe496","savedPayload":{"position":{"x":21938.833246192647,"y":18822.686502415905},"targetPosition":{"x":22556.006091604853,"y":17958.533287752864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 18","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"4ee42ccb-7981-4865-990b-09a84732f649","savedPayload":{"position":{"x":21257.857555615534,"y":19276.719714553456},"targetPosition":{"x":21422.056781206647,"y":19067.586689523214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"557e774e-833c-4373-a833-24a2b8e1c98b","savedPayload":{"position":{"x":21422.056781206647,"y":19067.586689523214},"targetPosition":{"x":21749.844123994757,"y":18649.73189044671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"b73a1590-a667-4c62-b1b0-319bc1c35264","savedPayload":{"position":{"x":21346.65822949923,"y":18995.460768075434},"targetPosition":{"x":21749.844123994757,"y":18649.73189044671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 18 End","id":"942b73d2-241e-43dd-b83b-0d3724f331a4"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"370a951b-b7cb-47fe-8e09-799f7da546a6","savedPayload":{"position":{"x":21286.848478810036,"y":18909.93335374592},"targetPosition":{"x":21749.844123994757,"y":18649.73189044671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 18 Begin","id":"3260182a-83b5-4362-8962-84ec488b69cb"}}}],"id":"9f9eeee3-ebd5-4f65-9079-cd0ac3c373da","savedPayload":{"position":{"x":21749.844123994757,"y":18649.73189044671},"targetPosition":{"x":22556.006091604853,"y":17958.533287752864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 24","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"b30aa3da-65ea-4e03-88d0-d452114f94bc","savedPayload":{"position":{"x":20193.812351600613,"y":19411.241379433635},"targetPosition":{"x":20507.692091224162,"y":19165.860598555842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"42bded2a-28e5-457d-b8de-a71218db1630","savedPayload":{"position":{"x":20507.692091224162,"y":19165.860598555842},"targetPosition":{"x":21134.66924241522,"y":18675.51676180103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"a7a1b3d2-2c0a-47d0-8177-991c5b860ed4","savedPayload":{"position":{"x":20423.977905598316,"y":19033.967520747156},"targetPosition":{"x":21134.66924241522,"y":18675.51676180103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 24 Begin","id":"c0b2d03c-3cec-4ca2-b344-cdd99cb28362"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"8aac2b0b-8089-4adc-93d2-1544e0113105","savedPayload":{"position":{"x":20367.63760962442,"y":18888.29542741072},"targetPosition":{"x":21134.66924241522,"y":18675.51676180103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 24 End","id":"4b33b779-8111-415c-a1e5-893ed5f49527"}}}],"id":"5cde1b9e-eed8-4e90-9f31-9d0f38d4aef9","savedPayload":{"position":{"x":21134.66924241522,"y":18675.51676180103},"targetPosition":{"x":22556.006091604853,"y":17958.533287752864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 30","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"682c040c-2367-4838-92d2-5c14e6d65e0a","savedPayload":{"position":{"x":20551.991778254007,"y":18631.104683428315},"targetPosition":{"x":21036.515320561488,"y":18413.753336954956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e80caa85-ac79-4b2b-ab2d-04f54c46b24b","savedPayload":{"position":{"x":21036.515320561488,"y":18413.753336954956},"targetPosition":{"x":21520.98633918831,"y":18196.098381961958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"985225d1-7a9d-45f7-93d2-59fe91c4450c","savedPayload":{"position":{"x":21003.25002479083,"y":18314.797850036444},"targetPosition":{"x":21520.98633918831,"y":18196.098381961958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 30 End","id":"8e2f5657-06b0-4e46-aa7e-8676683ffb77"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"0e1a912e-34be-4976-8d43-141b0f89a8ee","savedPayload":{"position":{"x":20990.04046296297,"y":18211.31896879113},"targetPosition":{"x":21520.98633918831,"y":18196.098381961958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 30 Begin","id":"fef118ef-22cb-4ff5-b971-c90c2a01265a"}}}],"id":"ba9cdf50-c1e0-42c5-a81c-dbc068c3b10e","savedPayload":{"position":{"x":21520.98633918831,"y":18196.098381961958},"targetPosition":{"x":22556.006091604853,"y":17958.533287752864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 60","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"85247bae-4a81-4247-affa-a8889f32987c","savedPayload":{"position":{"x":20449.12021725157,"y":18131.955798739185},"targetPosition":{"x":20971.639564820296,"y":18036.873914670792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9a153786-a0a0-4686-b83d-f55fb7513c56","savedPayload":{"position":{"x":20971.639564820296,"y":18036.873914670792},"targetPosition":{"x":21494.17887512977,"y":17941.56499211901},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"389d9bf7-3844-4b65-9607-17dec104368f","savedPayload":{"position":{"x":20963.033412053144,"y":17933.083823802262},"targetPosition":{"x":21494.17887512977,"y":17941.56499211901},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 60 Begin","id":"8e7fb950-9b88-4aaf-95a1-982abf35b9f3"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"0386e3c3-f9a3-442c-b2e4-c9d069621958","savedPayload":{"position":{"x":20974.976638543078,"y":17829.447634969812},"targetPosition":{"x":21494.17887512977,"y":17941.56499211901},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 60 End","id":"173b07f4-37d0-4831-8d6b-1b989d9e3213"}}}],"id":"8170049e-056a-4818-8f0a-1a23f9c51bff","savedPayload":{"position":{"x":21494.17887512977,"y":17941.56499211901},"targetPosition":{"x":22556.006091604853,"y":17958.533287752864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 120","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.PATINATED_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"613b4c9b-b002-4c65-87b7-8b9d41eda4df","savedPayload":{"position":{"x":20468.80961111769,"y":17622.98040896255},"targetPosition":{"x":20998.92934860661,"y":17655.53269385809},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"27a6e346-8da3-4900-83c4-41680d2168f4","savedPayload":{"position":{"x":20998.92934860661,"y":17655.53269385809},"targetPosition":{"x":21529.12621468461,"y":17687.88175291085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"956a6867-d00a-4888-9ffe-cbfabcfbe4fa","savedPayload":{"position":{"x":21015.462435894016,"y":17552.506281761354},"targetPosition":{"x":21529.12621468461,"y":17687.88175291085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 120 Begin","id":"2fb358ff-8b9f-4b95-95f8-8be509b5b3a1"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"040f4fe5-147d-4ba9-9a2d-fa134ca5d178","savedPayload":{"position":{"x":21051.864008252942,"y":17454.73810808573},"targetPosition":{"x":21529.12621468461,"y":17687.88175291085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 120 End","id":"682e079f-319c-43dc-91a2-5732c3fb28c8"}}}],"id":"7da9bd30-a7f8-410b-93a5-6b76ac57708b","savedPayload":{"position":{"x":21529.12621468461,"y":17687.88175291085},"targetPosition":{"x":22556.006091604853,"y":17958.533287752864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 240","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"d2ac585e-594d-4031-b17d-2274efc677ec","savedPayload":{"position":{"x":20609.854202460647,"y":17133.132533514792},"targetPosition":{"x":21116.75517378548,"y":17291.627433638485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4e402467-2d78-4d95-ba03-3910f5120122","savedPayload":{"position":{"x":21116.75517378548,"y":17291.627433638485},"targetPosition":{"x":21623.776062454202,"y":17449.95150882419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"efe56d7d-f6e6-4944-aa32-26d3c4ed055b","savedPayload":{"position":{"x":21157.465368564826,"y":17195.551535260427},"targetPosition":{"x":21623.776062454202,"y":17449.95150882419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 180 Begin","id":"5a2a1087-3910-4dd5-90d6-2370dc8949fa"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"ec3a6f4b-adf2-4be1-ab28-313bbffb7491","savedPayload":{"position":{"x":21216.20961559539,"y":17109.33573633741},"targetPosition":{"x":21623.776062454202,"y":17449.95150882419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 180 End","id":"1b5a66be-de8e-40c3-b3f2-e193e5deaeed"}}}],"id":"adf40814-2b9a-4ee8-a154-364bfca32f7a","savedPayload":{"position":{"x":21623.776062454202,"y":17449.95150882419},"targetPosition":{"x":22556.006091604853,"y":17958.533287752864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 300","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"e79c6ed7-e52f-4191-a423-b14965211a19","savedPayload":{"position":{"x":20864.058086623234,"y":16691.273262031074},"targetPosition":{"x":21318.268691011726,"y":16966.494537348004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e5cd42c0-f52d-4608-91d5-966cc7bf39b3","savedPayload":{"position":{"x":21318.268691011726,"y":16966.494537348004},"targetPosition":{"x":21772.628406294938,"y":17241.585628760793},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"f29f45ac-86bb-4490-b8b1-9a50dc736782","savedPayload":{"position":{"x":21380.790823590418,"y":16882.953224705256},"targetPosition":{"x":21772.628406294938,"y":17241.585628760793},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 240 Begin","id":"854a73e9-f8d2-4b85-a0dd-65284e175ca0"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"eb330333-6b0f-4fad-97a7-a34e93cc3dee","savedPayload":{"position":{"x":21458.46544682676,"y":16813.30120160645},"targetPosition":{"x":21772.628406294938,"y":17241.585628760793},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 240 End","id":"13eca50c-c1fb-4baa-8618-1f7eafde66c9"}}}],"id":"60c00cdc-dbf4-460b-b021-7339dd7bbec8","savedPayload":{"position":{"x":21772.628406294938,"y":17241.585628760793},"targetPosition":{"x":22556.006091604853,"y":17958.533287752864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 600","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"182273b1-1d73-4dc7-93dc-b2a4644b18f1","savedPayload":{"position":{"x":21216.677147759743,"y":16323.079885673324},"targetPosition":{"x":21591.785927318335,"y":16699.023187017927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3342f900-2346-4377-b6b0-34566787d6d9","savedPayload":{"position":{"x":21591.785927318335,"y":16699.023187017927},"targetPosition":{"x":21967.053102404516,"y":17074.883833913857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"5b6c238c-a7cb-4002-85e5-5e84cd6ffdf8","savedPayload":{"position":{"x":21672.49062462211,"y":16632.872668937434},"targetPosition":{"x":21967.053102404516,"y":17074.883833913857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 600 Begin","id":"3ecee44a-2a84-41ac-b579-f6f48acc590a"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"b60e6d28-cb70-49c5-9e06-c67cfe81b1f1","savedPayload":{"position":{"x":21764.588454447614,"y":16583.833788697073},"targetPosition":{"x":21967.053102404516,"y":17074.883833913857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 600 End","id":"9bd8a9e7-09cf-4989-a9fa-c2f73d361134"}}}],"id":"93c1746c-2470-4032-84e1-c16a2d4e3921","savedPayload":{"position":{"x":21967.053102404516,"y":17074.883833913857},"targetPosition":{"x":22556.006091604853,"y":17958.533287752864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 1200","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"f0b2a565-d33f-42d4-85ed-d61766b82af7","savedPayload":{"position":{"x":21647.32235498912,"y":16049.95468346186},"targetPosition":{"x":21921.506738978664,"y":16504.753664589716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e108f855-0252-4113-8bd3-2cf2581abc47","savedPayload":{"position":{"x":21921.506738978664,"y":16504.753664589716},"targetPosition":{"x":22195.81262172762,"y":16959.525453920858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"f15e631f-a4ef-4493-bb68-8c3a082ba0aa","savedPayload":{"position":{"x":22015.72446595119,"y":16459.840748947878},"targetPosition":{"x":22195.81262172762,"y":16959.525453920858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 1200 Begin","id":"0481ec1e-ae49-4c99-a5ad-16c427db6e45"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"cf097102-9c66-4f90-95cd-1c1c9efc113b","savedPayload":{"position":{"x":22116.961982937366,"y":16434.25714817533},"targetPosition":{"x":22195.81262172762,"y":16959.525453920858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 1200 End","id":"eacd5f37-bdf2-4756-b7db-46db919b08a7"}}}],"id":"790efcb9-f3af-4e01-86f2-adbfcda6a356","savedPayload":{"position":{"x":22195.81262172762,"y":16959.525453920858},"targetPosition":{"x":22556.006091604853,"y":17958.533287752864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"93675e57-6b0f-4fe5-8c8a-a4c02f794650","savedPayload":{"position":{"x":22395.90514198133,"y":18707.977151968145},"targetPosition":{"x":23314.937186168943,"y":18176.4638901409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"SMA Base 6","code":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"SMA 6","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma6","id":"bf5de8a3-8c0b-41e8-8d21-bef5a721133f","savedPayload":{"position":{"x":23285.343275692318,"y":17332.069063056344},"targetPosition":{"x":23383.632247714635,"y":17085.067815674767},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"995dd126-9cef-4b6e-960f-6828cfc41777","savedPayload":{"position":{"x":23383.632247714635,"y":17085.067815674767},"targetPosition":{"x":23499.516418282463,"y":16793.381695245378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 12","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma12","id":"9d4756de-3019-4ab6-a77d-7a1452ce1813","savedPayload":{"position":{"x":23059.3831864871,"y":17170.572307807066},"targetPosition":{"x":23261.340430389853,"y":16997.5398209259},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"414bd6ad-d6c6-4100-867e-232c6e649de2","savedPayload":{"position":{"x":23261.340430389853,"y":16997.5398209259},"targetPosition":{"x":23499.516418282463,"y":16793.381695245378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 18","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma18","id":"8c7a57b7-0d00-4239-b7ce-018b8da0fce7","savedPayload":{"position":{"x":22934.58114101696,"y":16922.67900194118},"targetPosition":{"x":23193.938618693457,"y":16863.340151739158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2b73a8b5-c7a5-47b2-acad-87fa5aec85be","savedPayload":{"position":{"x":23193.938618693457,"y":16863.340151739158},"targetPosition":{"x":23499.516418282463,"y":16793.381695245378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 24","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma24","id":"3880e650-f608-4c97-8b5a-6956c8c2fba7","savedPayload":{"position":{"x":22939.273460464545,"y":16645.752094452397},"targetPosition":{"x":23196.565575223758,"y":16713.54793144336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7655b5d6-708e-4e05-9499-2058d8511689","savedPayload":{"position":{"x":23196.565575223758,"y":16713.54793144336},"targetPosition":{"x":23499.516418282463,"y":16793.381695245378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 30","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma30","id":"ae5edcfd-b4be-4c3e-bb28-333fade4b88d","savedPayload":{"position":{"x":23072.257446276744,"y":16402.37916625448},"targetPosition":{"x":23268.511954626818,"y":16581.980878566777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ad60eba1-2b62-4b1f-bed9-de38285f4acc","savedPayload":{"position":{"x":23268.511954626818,"y":16581.980878566777},"targetPosition":{"x":23499.516418282463,"y":16793.381695245378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 60","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma60","id":"cd97e51b-fa6a-4d6e-b7dd-43c9299bde4d","savedPayload":{"position":{"x":23303.00259527384,"y":16248.632404492462},"targetPosition":{"x":23393.291417405253,"y":16498.93827814103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5baddfba-9384-417f-954a-37abf160567e","savedPayload":{"position":{"x":23393.291417405253,"y":16498.93827814103},"targetPosition":{"x":23499.516418282463,"y":16793.381695245378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 120","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma120","id":"189b3ffd-8d2b-4124-af4c-52a9756c3409","savedPayload":{"position":{"x":23578.274584083523,"y":16219.619196673852},"targetPosition":{"x":23542.095759259606,"y":16483.249967750566},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"980faff9-33a9-4c63-b64c-3bdbeeeb1b8a","savedPayload":{"position":{"x":23542.095759259606,"y":16483.249967750566},"targetPosition":{"x":23499.516418282463,"y":16793.381695245378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 180","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma180","id":"7dac036e-a376-493f-8e5a-d8a7e211f262","savedPayload":{"position":{"x":23835.92087608768,"y":16322.041933771197},"targetPosition":{"x":23681.4411976349,"y":16538.496898594276},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d22d8f06-1510-43c7-a233-7a5dc67f809b","savedPayload":{"position":{"x":23681.4411976349,"y":16538.496898594276},"targetPosition":{"x":23499.516418282463,"y":16793.381695245378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 240","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma240","id":"2b86e2e4-bf2d-4b68-a54e-a781e56458bf","savedPayload":{"position":{"x":24016.66362920564,"y":16532.37663688018},"targetPosition":{"x":23779.133672292097,"y":16652.268856715466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"696305ab-09c2-41af-bfb3-85ce4fb5e705","savedPayload":{"position":{"x":23779.133672292097,"y":16652.268856715466},"targetPosition":{"x":23499.516418282463,"y":16793.381695245378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 300 ","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma300","id":"03bc78eb-d57f-41fc-a8ba-3592e222d5cc","savedPayload":{"position":{"x":24078.8420989035,"y":16802.29002270774},"targetPosition":{"x":23812.957331256588,"y":16798.237694642547},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f34223f9-87e3-49fe-8acf-77080dffa25f","savedPayload":{"position":{"x":23812.957331256588,"y":16798.237694642547},"targetPosition":{"x":23499.516418282463,"y":16793.381695245378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 600 ","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma600","id":"c6511ef3-8c3a-445c-9d90-1bb91a1763fb","savedPayload":{"position":{"x":24008.24571028735,"y":17070.716765327663},"targetPosition":{"x":23774.849423602864,"y":16943.526706789322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ff4236e0-4c9b-4b98-9dd3-b3c152bb12e2","savedPayload":{"position":{"x":23774.849423602864,"y":16943.526706789322},"targetPosition":{"x":23499.516418282463,"y":16793.381695245378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 1200 ","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma1200","id":"931713d5-2d25-428f-95bc-0a21e01892f7","savedPayload":{"position":{"x":23820.72464353744,"y":17275.642943443367},"targetPosition":{"x":23673.364677709204,"y":17054.514546740484},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e3345124-6aed-4164-ab86-041fd39608b0","savedPayload":{"position":{"x":23673.364677709204,"y":17054.514546740484},"targetPosition":{"x":23499.516418282463,"y":16793.381695245378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"40313dff-6c5d-4650-bd51-8767bba6f6ad","savedPayload":{"position":{"x":22785.21632131751,"y":17258.565991811178},"targetPosition":{"x":23314.937186168943,"y":18176.4638901409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6ace920a-3a4b-4d28-8f04-4c2ecd3dfeb8","savedPayload":{"position":{"x":23314.728145616114,"y":18176.345390013503},"targetPosition":{"x":24235.043828155554,"y":18707.646981692462},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"SMA Base 5","code":"{\n\t\"codeName\": \"SMA-Base7\",\n \"icon\": \"moving-average\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"SMA 5 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma5","id":"37d1cd48-3a3f-4477-a125-76dcec51195b","savedPayload":{"position":{"x":25411.840139183536,"y":13422.478351461974},"targetPosition":{"x":25546.58867527044,"y":15001.566604700662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9eca5bc8-cdb2-46fb-9a26-1c2da03b8818","savedPayload":{"position":{"x":25546.58867527044,"y":15001.566604700662},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 5 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma5","id":"3537c835-0158-465b-81d1-5440a40a649b","savedPayload":{"position":{"x":26204.999058865313,"y":13454.765479827574},"targetPosition":{"x":25943.21522236259,"y":15017.709895752214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"db00298d-2997-4640-93fe-17125aeb7f0e","savedPayload":{"position":{"x":25943.21522236259,"y":15017.709895752214},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 10 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma10","id":"3f1d398f-6d0a-4713-8fbf-29cbb133be3e","savedPayload":{"position":{"x":26965.887258315237,"y":13683.63911867441},"targetPosition":{"x":26323.647016041108,"y":15132.13721129463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b2e038ee-355d-4862-a454-514f7bcf31cf","savedPayload":{"position":{"x":26323.647016041108,"y":15132.13721129463},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 15 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma15","id":"cadaa709-8956-4c7a-9215-76ac92a53517","savedPayload":{"position":{"x":27646.01450704694,"y":14094.201095053095},"targetPosition":{"x":26663.72062099138,"y":15337.395335353734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"02f80e02-080a-4950-9ffc-2f3b5770b404","savedPayload":{"position":{"x":26663.72062099138,"y":15337.395335353734},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 15 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma15","id":"e4212208-3b31-47c0-aebd-966d4a77c0f9","savedPayload":{"position":{"x":28202.73810646137,"y":14660.951271338388},"targetPosition":{"x":26942.06871146756,"y":15620.772415841673},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"32c7c4d3-a210-4d4d-8d10-bb23f91edcda","savedPayload":{"position":{"x":26942.06871146756,"y":15620.772415841673},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 20 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma20","id":"73c6c2a6-b4b7-4d2a-be7e-5810261e68c7","savedPayload":{"position":{"x":28601.01134759807,"y":15348.297259041174},"targetPosition":{"x":27141.200602356017,"y":15964.461641386906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6b07cc40-e7da-48bc-a49b-cac5a0615c34","savedPayload":{"position":{"x":27141.200602356017,"y":15964.461641386906},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 20 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma20","id":"c8dd3770-668a-47d7-aad8-db412890bc28","savedPayload":{"position":{"x":28816.252076327575,"y":16113.118231465349},"targetPosition":{"x":27248.82879904742,"y":16346.871833589823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e2f2041d-b896-44d7-b251-85eb1cd7fadf","savedPayload":{"position":{"x":27248.82879904742,"y":16346.871833589823},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 25 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma25","id":"d7265ad0-64e1-4fb7-8cd0-bdbf329b3d6d","savedPayload":{"position":{"x":28834.194824148522,"y":16906.651889455705},"targetPosition":{"x":27257.800825649512,"y":16743.626508796453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"78b96701-c691-41fa-91d2-3bdb00e2e0fa","savedPayload":{"position":{"x":27257.800825649512,"y":16743.626508796453},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 25 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma25","id":"5cefb3f2-2429-478b-80a8-8f9e07e12c00","savedPayload":{"position":{"x":28653.535354021336,"y":17680.375899566767},"targetPosition":{"x":27167.48983815177,"y":17130.45378685862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c9293d92-6255-4c96-9bf9-f4c6dcf419a1","savedPayload":{"position":{"x":27167.48983815177,"y":17130.45378685862},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 50 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma50","id":"cfa001a1-ac90-4713-b542-4fab32f377e0","savedPayload":{"position":{"x":28286.65264251698,"y":18384.865635378992},"targetPosition":{"x":26984.019492159412,"y":17482.704320475015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1d352202-ba2e-41a7-9d4b-c4c97d2e391d","savedPayload":{"position":{"x":26984.019492159412,"y":17482.704320475015},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 50 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma50","id":"1655e27e-3738-4b5d-8961-105e11b5070c","savedPayload":{"position":{"x":27756.276297083932,"y":18975.869573186377},"targetPosition":{"x":26718.79914352302,"y":17778.205608260567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4e34e6e6-d370-4127-b4fe-0c9fd591e730","savedPayload":{"position":{"x":26718.79914352302,"y":17778.205608260567},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 100 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma100","id":"44d9a566-3392-4f8f-ae69-f16de47bdd50","savedPayload":{"position":{"x":27085.155156536035,"y":19434.14541223146},"targetPosition":{"x":26388.605631763312,"y":17998.252514878244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"651f424a-51be-4b25-a895-d50f75329384","savedPayload":{"position":{"x":26388.605631763312,"y":17998.252514878244},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 100 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma100","id":"05d2a007-3c1e-4e61-8cef-0aa1bdb3c0f5","savedPayload":{"position":{"x":26280.921620020446,"y":19638.14552523157},"targetPosition":{"x":25948.53176014105,"y":18080.014462794235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aada5c3d-5ff5-4afd-8dd1-298ce8fce853","savedPayload":{"position":{"x":25948.53176014105,"y":18080.014462794235},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 150 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma150","id":"f5f1a287-14c5-4b05-9032-85623b3e948f","savedPayload":{"position":{"x":25553.34038214414,"y":19747.92086398345},"targetPosition":{"x":25617.501912965792,"y":18164.221863020724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"55d6b376-dd20-4044-b6c2-51acd03bee71","savedPayload":{"position":{"x":25617.501912965792,"y":18164.221863020724},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 150 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma150","id":"e8805c13-2905-47dd-ad3d-eea5d645fd2f","savedPayload":{"position":{"x":24770.015064139505,"y":19615.853144852816},"targetPosition":{"x":25225.669154494604,"y":18098.133978166898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"812b92a9-2ba5-44e2-b255-976f8354e841","savedPayload":{"position":{"x":25225.669154494604,"y":18098.133978166898},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 200 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma200","id":"13b0144f-8413-43d8-97f9-61a50712a17b","savedPayload":{"position":{"x":24043.083434741857,"y":19292.937355342918},"targetPosition":{"x":24862.114694739335,"y":17936.055573940626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"652e1cae-11c0-489c-a820-03296a362c77","savedPayload":{"position":{"x":24862.114694739335,"y":17936.055573940626},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 200 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma200","id":"51211e13-8719-4d03-afb1-a7bb2f656f68","savedPayload":{"position":{"x":23420.447021827,"y":18800.84770561751},"targetPosition":{"x":24550.906322020855,"y":17690.473258422357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4e4458f4-c6ca-4235-8734-8e833d3722f2","savedPayload":{"position":{"x":24550.906322020855,"y":17690.473258422357},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 250 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma250","id":"a37e3e5a-dc59-4373-97c3-98de0c09fbb7","savedPayload":{"position":{"x":22939.10022698636,"y":18168.781021084917},"targetPosition":{"x":24310.387931106747,"y":17374.593746017283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"52aefae1-6ceb-47c4-a82d-ac55a7b91b25","savedPayload":{"position":{"x":24310.387931106747,"y":17374.593746017283},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 250 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma250","id":"aae7721e-b9d3-4629-94be-eecd49675c8f","savedPayload":{"position":{"x":22630.370910115198,"y":17437.20125808215},"targetPosition":{"x":24155.916428937766,"y":17008.734469514624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8ddf18b2-93b4-4422-9e64-f9fc22f5de52","savedPayload":{"position":{"x":24155.916428937766,"y":17008.734469514624},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 500 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.propertyA","id":"65cfa112-3dc1-4bbd-9f90-13076e630272","savedPayload":{"position":{"x":22494.793218806484,"y":16648.390352072896},"targetPosition":{"x":24096.92488099283,"y":16615.902465153715},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d1ec756e-a71c-433b-ad10-ef8234617768","savedPayload":{"position":{"x":24096.92488099283,"y":16615.902465153715},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 500 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.propertyA","id":"577145f8-de78-4ded-a41e-86f9b54ec8a2","savedPayload":{"position":{"x":22594.83423275761,"y":15861.669259125978},"targetPosition":{"x":24138.118909414377,"y":16221.154448824214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0b2fbef6-9a30-4ed6-a98e-5ccceb77aea3","savedPayload":{"position":{"x":24138.118909414377,"y":16221.154448824214},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 10 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma10","id":"520c2e51-b036-4267-928d-53f69d83747b","savedPayload":{"position":{"x":22874.198307729464,"y":15117.614090891668},"targetPosition":{"x":24276.248441421158,"y":15848.679304055111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7fe319a5-1a75-4f65-97da-20345cc502c2","savedPayload":{"position":{"x":24276.248441421158,"y":15848.679304055111},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 1000 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.propertyA","id":"3514870d-ad16-4bee-b5fa-a68739f3b332","savedPayload":{"position":{"x":23313.588736533075,"y":14469.7928486994},"targetPosition":{"x":24502.466380045073,"y":15522.154280279497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"db6c9de6-aeb9-46ff-a46d-893ac56a32a2","savedPayload":{"position":{"x":24502.466380045073,"y":15522.154280279497},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 1000 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.propertyA","id":"9cd8a206-16f2-446d-b63e-43faa32d7abd","savedPayload":{"position":{"x":23924.00903553489,"y":13943.758299496274},"targetPosition":{"x":24802.803040927516,"y":15262.113966507832},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e518b92f-f678-4868-ae0c-a0bd31f480eb","savedPayload":{"position":{"x":24802.803040927516,"y":15262.113966507832},"targetPosition":{"x":25681.40344875142,"y":16580.656616858923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f32ec0d3-ec1a-4f9d-b0dc-a394dac962ba","savedPayload":{"position":{"x":25681.40344875142,"y":16580.656616858923},"targetPosition":{"x":22583.941047504355,"y":16667.56818753249},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"SMA 5","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"a7e019b1-8c26-45dc-a717-de61a361f789","savedPayload":{"position":{"x":20055.860404559546,"y":17799.184155962594},"targetPosition":{"x":20398.849416777404,"y":17596.963446334685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"7da673e1-96be-42bb-ac8e-ba94da835b8d","savedPayload":{"position":{"x":20398.849416777404,"y":17596.963446334685},"targetPosition":{"x":21083.482597614562,"y":17192.89454958453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"e755e4bb-ff8f-4591-b0ae-878d71639fd5","savedPayload":{"position":{"x":20333.13650102396,"y":17455.364753108068},"targetPosition":{"x":21083.482597614562,"y":17192.89454958453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 5 End","id":"db00298d-2997-4640-93fe-17125aeb7f0e"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"c452cccc-8d2b-4630-9219-fb5e4d89fb1e","savedPayload":{"position":{"x":20296.205872147708,"y":17303.772724620987},"targetPosition":{"x":21083.482597614562,"y":17192.89454958453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 5 Begin","id":"9eca5bc8-cdb2-46fb-9a26-1c2da03b8818"}}}],"id":"9de00c59-ad47-414f-93f4-976d1a798e33","savedPayload":{"position":{"x":21083.482597614562,"y":17192.89454958453},"targetPosition":{"x":22583.941047504355,"y":16667.56818753249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 10","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"d99069f1-59c4-4dd2-a77f-15de8869aeaf","savedPayload":{"position":{"x":19867.46279129166,"y":17207.532776914843},"targetPosition":{"x":20246.87386511077,"y":17086.86513083032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6867a6be-eb3c-4c1f-a83e-f630c5a40ba3","savedPayload":{"position":{"x":20246.87386511077,"y":17086.86513083032},"targetPosition":{"x":21004.173010933187,"y":16845.514253120815},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"43ddbce7-424a-4718-9012-bd9327a7b6e0","savedPayload":{"position":{"x":20214.272867178817,"y":16934.27915133227},"targetPosition":{"x":21004.173010933187,"y":16845.514253120815},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 10 Begin","id":"7fe319a5-1a75-4f65-97da-20345cc502c2"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"f48c16c1-ca4a-4a64-ae78-78cbc754888e","savedPayload":{"position":{"x":20211.87402718193,"y":16778.748363101222},"targetPosition":{"x":21004.173010933187,"y":16845.514253120815},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 10 End","id":"b2e038ee-355d-4862-a454-514f7bcf31cf"}}}],"id":"0c387d26-20c4-4a66-aac4-599d98b8300e","savedPayload":{"position":{"x":21004.173010933187,"y":16845.514253120815},"targetPosition":{"x":22583.941047504355,"y":16667.56818753249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 15","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"e52e6176-fecb-48d3-ad99-7b66e11b02de","savedPayload":{"position":{"x":19815.270850775138,"y":16589.922915796797},"targetPosition":{"x":20212.141803910243,"y":16556.75008629233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"3850ed1d-dc3b-47b2-bee7-7aa961acfaa2","savedPayload":{"position":{"x":20212.141803910243,"y":16556.75008629233},"targetPosition":{"x":21004.21806657976,"y":16489.875643001276},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"3f50ad9c-b951-420f-92cb-564d050f144e","savedPayload":{"position":{"x":20214.242317625143,"y":16400.93457577858},"targetPosition":{"x":21004.21806657976,"y":16489.875643001276},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 15 End","id":"32c7c4d3-a210-4d4d-8d10-bb23f91edcda"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"5cce1576-091c-49fa-a98f-0ebcf033c933","savedPayload":{"position":{"x":20246.866356987306,"y":16248.321203351577},"targetPosition":{"x":21004.21806657976,"y":16489.875643001276},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 15 Begin","id":"02f80e02-080a-4950-9ffc-2f3b5770b404"}}}],"id":"9f49d18a-dfd7-4d55-8a1e-c186dbfc043e","savedPayload":{"position":{"x":21004.21806657976,"y":16489.875643001276},"targetPosition":{"x":22583.941047504355,"y":16667.56818753249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"e9126aac-9402-4bfc-9f89-b6996780d7ba","savedPayload":{"position":{"x":19901.786525653955,"y":15976.03485486766},"targetPosition":{"x":20295.900101953073,"y":16031.694559045527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"9ec36dc5-91e0-4861-8748-9f9b7d92bacc","savedPayload":{"position":{"x":20295.900101953073,"y":16031.694559045527},"targetPosition":{"x":21083.24603843,"y":16142.634767740941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"6a595b60-ea82-4ef7-ad14-f698d4885e0d","savedPayload":{"position":{"x":20332.79736207857,"y":15880.000677118576},"targetPosition":{"x":21083.24603843,"y":16142.634767740941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 20 Begin","id":"6b07cc40-e7da-48bc-a49b-cac5a0615c34"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"3d4d3854-f28c-462a-b08a-21db3bdf9d82","savedPayload":{"position":{"x":20398.598132313888,"y":15738.5759491797},"targetPosition":{"x":21083.24603843,"y":16142.634767740941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 20 End","id":"e2f2041d-b896-44d7-b251-85eb1cd7fadf"}}}],"id":"39db09d1-e5b2-4e83-80b5-41b5af443e3f","savedPayload":{"position":{"x":21083.24603843,"y":16142.634767740941},"targetPosition":{"x":22583.941047504355,"y":16667.56818753249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 25","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"938779af-a8c9-48dc-a936-7f196f976c5a","savedPayload":{"position":{"x":19751.319997603765,"y":15253.363481486798},"targetPosition":{"x":20494.479213758197,"y":15538.707351349367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c905d757-47ba-4c5b-9f85-73db3050e897","savedPayload":{"position":{"x":20494.479213758197,"y":15538.707351349367},"targetPosition":{"x":21237.80023868677,"y":15821.895941442464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"a952acf4-c97a-40f5-8f9d-edbae371305d","savedPayload":{"position":{"x":20564.643751119693,"y":15398.821200672104},"targetPosition":{"x":21237.80023868677,"y":15821.895941442464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 25 End","id":"c9293d92-6255-4c96-9bf9-f4c6dcf419a1"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"88efd4f2-dc1e-43d6-96f0-7e60ed1d4177","savedPayload":{"position":{"x":20660.005797499914,"y":15275.494657590767},"targetPosition":{"x":21237.80023868677,"y":15821.895941442464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 25 Begin","id":"78b96701-c691-41fa-91d2-3bdb00e2e0fa"}}}],"id":"9b80c90a-521b-4d8e-ba2b-781f3aee1fb2","savedPayload":{"position":{"x":21237.80023868677,"y":15821.895941442464},"targetPosition":{"x":22583.941047504355,"y":16667.56818753249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 50","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"b8842dee-7b08-40e5-818d-54df493e6e20","savedPayload":{"position":{"x":20131.453831468625,"y":14654.286375453305},"targetPosition":{"x":20793.12005892906,"y":15096.38967898415},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c1dfcdd1-96a1-49ee-82e6-7d78077c43c0","savedPayload":{"position":{"x":20798.794815495006,"y":15100.623499206702},"targetPosition":{"x":21459.691442102026,"y":15543.39793605725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"cdbfa16a-32ae-43e0-ba6f-940351c04786","savedPayload":{"position":{"x":20897.657895401248,"y":14981.303655072617},"targetPosition":{"x":21459.691442102026,"y":15543.39793605725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 50 Begin","id":"1d352202-ba2e-41a7-9d4b-c4c97d2e391d"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"5e17d592-e906-4b8b-b48b-97b98cdd2cd1","savedPayload":{"position":{"x":21018.245024459648,"y":14882.399409178011},"targetPosition":{"x":21459.691442102026,"y":15543.39793605725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 50 End","id":"4e34e6e6-d370-4127-b4fe-0c9fd591e730"}}}],"id":"39d6a3fc-1380-4e2d-8de6-13d0b9e7a8e3","savedPayload":{"position":{"x":21459.691442102026,"y":15543.39793605725},"targetPosition":{"x":22583.941047504355,"y":16667.56818753249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 100","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.PATINATED_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"2a39fe15-bcc6-49a4-9dcd-41c882a4b361","savedPayload":{"position":{"x":20640.2530451539,"y":14159.799392160263},"targetPosition":{"x":21186.829289846944,"y":14737.984453736653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ea97087b-647a-4900-8de5-2aabe7f95095","savedPayload":{"position":{"x":21186.96641489856,"y":14738.003434953014},"targetPosition":{"x":21733.79594295055,"y":15316.319882626873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"d87c3f75-6f43-4087-ab8b-0493e77a3a25","savedPayload":{"position":{"x":21315.22979059486,"y":14648.039911447539},"targetPosition":{"x":21738.26408115617,"y":15321.27743951415},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 100 Begin","id":"651f424a-51be-4b25-a895-d50f75329384"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"b6782eed-6d13-4cf8-98c1-b623da09e0d1","savedPayload":{"position":{"x":21454.98940188158,"y":14578.308192683924},"targetPosition":{"x":21738.26408115617,"y":15321.27743951415},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 100 End","id":"aada5c3d-5ff5-4afd-8dd1-298ce8fce853"}}}],"id":"c7c55c53-c6ee-4edc-8b4e-eab2ece17db9","savedPayload":{"position":{"x":21738.26408115617,"y":15321.27743951415},"targetPosition":{"x":22583.941047504355,"y":16667.56818753249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 150","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"7e3e32b9-1c64-43f1-85ab-6bb2d777c5a5","savedPayload":{"position":{"x":21247.334664737456,"y":13793.241693715481},"targetPosition":{"x":21651.280147986796,"y":14478.148429364974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"91bbb7a8-0800-4d46-a3ba-bd195153f61e","savedPayload":{"position":{"x":21650.427311356056,"y":14476.078599656374},"targetPosition":{"x":22054.80538634683,"y":15161.59878008032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"db2a660d-2315-482c-a29a-38acac0ca453","savedPayload":{"position":{"x":21796.560609142918,"y":14416.560657784463},"targetPosition":{"x":22059.053975683197,"y":15166.960836489678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 150 Begin","id":"55d6b376-dd20-4044-b6c2-51acd03bee71"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"2c0a8a74-58c0-4331-a438-2154306fb317","savedPayload":{"position":{"x":21947.997046571065,"y":14379.805086386916},"targetPosition":{"x":22059.053975683197,"y":15166.960836489678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 150 End","id":"812b92a9-2ba5-44e2-b255-976f8354e841"}}}],"id":"5c7935c9-6393-4e0f-8561-742533c1ebcf","savedPayload":{"position":{"x":22059.053975683197,"y":15166.960836489678},"targetPosition":{"x":22583.941047504355,"y":16667.56818753249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 200","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"0ab949bd-a21b-43e8-ae5d-ba2067fa9436","savedPayload":{"position":{"x":21919.727918019067,"y":13568.507636811417},"targetPosition":{"x":22161.095083128013,"y":14326.155576533984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"838799c3-76c5-4e9e-9291-e297d352969c","savedPayload":{"position":{"x":22160.711949163295,"y":14323.987669700242},"targetPosition":{"x":22402.36509646027,"y":15082.269390029463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"f36ca4d6-1114-4958-9bf2-09cd34536077","savedPayload":{"position":{"x":22317.221623778176,"y":14297.480337054045},"targetPosition":{"x":22406.175870547988,"y":15087.744474879746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 200 Begin","id":"652e1cae-11c0-489c-a820-03296a362c77"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"af95d8b6-43cf-4529-910a-8713ab69fb13","savedPayload":{"position":{"x":22472.828134750845,"y":14295.617292111903},"targetPosition":{"x":22406.175870547988,"y":15087.744474879746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 200 End","id":"4e4458f4-c6ca-4235-8734-8e833d3722f2"}}}],"id":"796fa379-26a6-4443-b515-1be86217f891","savedPayload":{"position":{"x":22406.175870547988,"y":15087.744474879746},"targetPosition":{"x":22583.941047504355,"y":16667.56818753249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 250","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.BLACK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"6f488fbe-fb26-4965-9ad2-be64bc66477e","savedPayload":{"position":{"x":22624.995728592203,"y":13499.017755941311},"targetPosition":{"x":22691.678244227718,"y":14291.404761817783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1860376f-2657-41cb-84d1-10c324f64535","savedPayload":{"position":{"x":22691.820170541137,"y":14289.209675845575},"targetPosition":{"x":22758.651392626234,"y":15082.2737082067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"e513348c-19d0-49e5-a77f-e6059d459335","savedPayload":{"position":{"x":22850.9607176534,"y":14297.74373603874},"targetPosition":{"x":22761.960772219696,"y":15087.839498371273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 250 End","id":"8ddf18b2-93b4-4422-9e64-f9fc22f5de52"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"ddd52ba0-601f-4121-908e-9cd42450ecaa","savedPayload":{"position":{"x":23003.392390407298,"y":14330.340987201249},"targetPosition":{"x":22761.960772219696,"y":15087.839498371273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 250 Begin","id":"52aefae1-6ceb-47c4-a82d-ac55a7b91b25"}}}],"id":"3ec27802-69a6-4c76-8bf5-ba92335ff928","savedPayload":{"position":{"x":22761.960772219696,"y":15087.839498371273},"targetPosition":{"x":22583.941047504355,"y":16667.56818753249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 500","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.BLACK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"b8892640-241d-4817-90b9-142d50f45575","savedPayload":{"position":{"x":23327.775295993553,"y":13588.292594081087},"targetPosition":{"x":23216.708847742455,"y":14375.672725282333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"640d28c5-0762-4fe0-8d3b-b2b2fd178cbe","savedPayload":{"position":{"x":23217.344430266447,"y":14373.493095459762},"targetPosition":{"x":23106.19640306206,"y":15161.617884901385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"cc1d57e4-c69b-4faf-987e-1ecc6402d774","savedPayload":{"position":{"x":23371.666793360608,"y":14416.390759147596},"targetPosition":{"x":23109.034167468304,"y":15166.960892787178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 500 Begin","id":"d1ec756e-a71c-433b-ad10-ef8234617768"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"f5f0ed9f-dc7d-40cb-94cb-9fca1de4aacf","savedPayload":{"position":{"x":23513.046095305777,"y":14482.340460755138},"targetPosition":{"x":23109.034167468304,"y":15166.960892787178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 500 End","id":"0b2fbef6-9a30-4ed6-a98e-5ccceb77aea3"}}}],"id":"d638a3eb-6f91-4c41-9f65-981ba269343a","savedPayload":{"position":{"x":23109.034167468304,"y":15166.960892787178},"targetPosition":{"x":22583.941047504355,"y":16667.56818753249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 1000","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.BLACK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"accb8fb4-da01-4314-bda3-a127f32443db","savedPayload":{"position":{"x":23994.62267165529,"y":13829.981712949326},"targetPosition":{"x":23711.027690131014,"y":14573.08333690361},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2139584e-6960-4ac5-a6b2-d45aae1cfae3","savedPayload":{"position":{"x":23711.42154520731,"y":14572.807168177225},"targetPosition":{"x":23427.621394236165,"y":15316.407060904494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"82d72489-eb93-4293-8b96-498e6756e89d","savedPayload":{"position":{"x":23853.00969375501,"y":14648.403840663648},"targetPosition":{"x":23430.01533751266,"y":15321.41598334728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 1000 Begin","id":"db6c9de6-aeb9-46ff-a46d-893ac56a32a2"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"e781d4f3-58b9-4fce-82aa-27b669582090","savedPayload":{"position":{"x":23976.3452587601,"y":14743.966979110712},"targetPosition":{"x":23430.01533751266,"y":15321.41598334728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 1000 End","id":"e518b92f-f678-4868-ae0c-a0bd31f480eb"}}}],"id":"8042e9e4-b3be-4d8b-94bc-558b8b97a3f0","savedPayload":{"position":{"x":23430.01533751266,"y":15321.41598334728},"targetPosition":{"x":22583.941047504355,"y":16667.56818753249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9847b54e-34cd-4a44-b43f-be3c091f5ec0","savedPayload":{"position":{"x":22583.941047504355,"y":16667.56818753249},"targetPosition":{"x":23704.059620573797,"y":17787.699762444016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"SMA Base 5","code":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"SMA 5","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma5","id":"5c11d2b4-671b-42ec-88b0-9dbbf0ba5a57","savedPayload":{"position":{"x":23434.3252149655,"y":17240.661011253156},"targetPosition":{"x":23558.12693934266,"y":17004.909317228015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ec513f64-7c7c-4693-ac51-b2e36f2f858c","savedPayload":{"position":{"x":23558.12693934266,"y":17004.909317228015},"targetPosition":{"x":23703.69692984165,"y":16727.10523220409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 10","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma10","id":"5e333385-55ff-48d1-abb0-0757ef26a20c","savedPayload":{"position":{"x":23222.294637046623,"y":17058.9785369466},"targetPosition":{"x":23441.43000043651,"y":16907.995304996384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c599221d-9b35-48c5-bb4d-4c4fd0c8c4e8","savedPayload":{"position":{"x":23441.43000043651,"y":16907.995304996384},"targetPosition":{"x":23703.69692984165,"y":16727.10523220409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 15","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma15","id":"0cb3bdcb-7c0b-4cfa-9357-0b142c1e230b","savedPayload":{"position":{"x":23128.396222235722,"y":16796.461229247154},"targetPosition":{"x":23392.867866018645,"y":16764.609112238988},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f3ff46f2-80e9-458f-b7ca-8f0fe7c7cff2","savedPayload":{"position":{"x":23392.867866018645,"y":16764.609112238988},"targetPosition":{"x":23703.69692984165,"y":16727.10523220409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 20","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma20","id":"8dc1f569-2c1e-4842-b135-528ba461ca30","savedPayload":{"position":{"x":23161.533793436145,"y":16521.53409944024},"targetPosition":{"x":23411.226205308572,"y":16616.205633881935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"14a4ef21-076b-418a-98a6-7b3ff64f2a9f","savedPayload":{"position":{"x":23411.226205308572,"y":16616.205633881935},"targetPosition":{"x":23703.69692984165,"y":16727.10523220409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 25","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma25","id":"2d76e840-cdda-48e8-9290-342c2a143b6d","savedPayload":{"position":{"x":23320.010188097414,"y":16293.920327607424},"targetPosition":{"x":23496.06409693967,"y":16492.68974263753},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d8d31fc6-55db-4a89-bcc8-4e33a3583542","savedPayload":{"position":{"x":23496.06409693967,"y":16492.68974263753},"targetPosition":{"x":23703.69692984165,"y":16727.10523220409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 50","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma50","id":"9a0af05e-b760-4a22-85ab-8b3c64b3ef29","savedPayload":{"position":{"x":23565.015842704557,"y":16163.779289312586},"targetPosition":{"x":23629.06018143407,"y":16423.983401188903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"48d5643b-e652-4c4d-b7cf-37e9656bfd43","savedPayload":{"position":{"x":23629.06018143407,"y":16423.983401188903},"targetPosition":{"x":23703.69692984165,"y":16727.10523220409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 100","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma100","id":"1987b0ae-9510-45e9-b7ed-3802c3f28e1d","savedPayload":{"position":{"x":23841.818020729115,"y":16165.128555589412},"targetPosition":{"x":23778.57105879782,"y":16422.50124355928},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4ad1bbaa-2c37-4009-bbdd-d154be78b2d0","savedPayload":{"position":{"x":23778.57105879782,"y":16422.50124355928},"targetPosition":{"x":23703.69692984165,"y":16727.10523220409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 150","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma150","id":"611d7c8b-2cb8-412b-bd1b-2a04b3a796c0","savedPayload":{"position":{"x":24087.39904512152,"y":16293.581974308576},"targetPosition":{"x":23910.70747693102,"y":16493.216086593347},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8ef64a02-b88d-4635-8d88-99121a55ed73","savedPayload":{"position":{"x":23910.70747693102,"y":16493.216086593347},"targetPosition":{"x":23703.69692984165,"y":16727.10523220409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 200","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma200","id":"d8bbc57a-1eda-43c8-a865-1ceeb879a755","savedPayload":{"position":{"x":24245.32803117265,"y":16521.58214856631},"targetPosition":{"x":23996.21038659814,"y":16616.110065440702},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"06680ab8-0ec9-448e-9854-97bf413f4133","savedPayload":{"position":{"x":23996.21038659814,"y":16616.110065440702},"targetPosition":{"x":23703.69692984165,"y":16727.10523220409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 250","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma250","id":"496ce598-2c93-40df-8f2e-effaeff2b665","savedPayload":{"position":{"x":24278.966605856338,"y":16796.404031194936},"targetPosition":{"x":24014.77461678876,"y":16764.62118192806},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"503ab933-6f8f-4fcb-a0e6-ecf1b6e8b24b","savedPayload":{"position":{"x":24014.77461678876,"y":16764.62118192806},"targetPosition":{"x":23703.69692984165,"y":16727.10523220409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 500","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma500","id":"67dd80e5-30f9-48b2-b661-e40acde070cc","savedPayload":{"position":{"x":24180.179195525718,"y":17055.749148185798},"targetPosition":{"x":23961.766716467973,"y":16905.173678501604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a4ab02a6-f6c0-4b8f-98d9-e24b66e492ab","savedPayload":{"position":{"x":23961.766716467973,"y":16905.173678501604},"targetPosition":{"x":23703.69692984165,"y":16727.10523220409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 1000","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma1000","id":"359489a0-97b9-49f8-8f35-2f6247b570a9","savedPayload":{"position":{"x":23972.298857607282,"y":17239.89659671409},"targetPosition":{"x":23848.919898683347,"y":17004.557954224958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"88560ba5-2c50-4236-90b6-47d19ac3afa5","savedPayload":{"position":{"x":23848.919898683347,"y":17004.557954224958},"targetPosition":{"x":23703.69692984165,"y":16727.10523220409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"aa2c0f1e-8a0e-4da1-97df-6815890e5770","savedPayload":{"position":{"x":23704.06543629702,"y":16729.01732773497},"targetPosition":{"x":23704.059620573797,"y":17787.699762444016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"888c381d-457d-4421-8401-a7475b42ff03","savedPayload":{"position":{"x":23703.758508770214,"y":17787.312150780876},"targetPosition":{"x":24235.043828155554,"y":18707.646981692462},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9b2443b7-9276-4fa3-b4b3-b9b991d886d8","savedPayload":{"position":{"x":24101.864842996623,"y":18695.78727343061},"targetPosition":{"x":24943.90880679387,"y":18695.646004599515},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"RSI","code":"{\n\"codeName\": \"Plotter RSI\"\n}","modules":[{"type":"Plotter Module","name":"RSI 14","code":"{\n\t\"codeName\": \"RSI 14\",\n\t\"slot\": {\n\t\t\"number\": 3,\n\t\t\"minValue\": 0,\n\t\t\"maxValue\": 100\n\t},\n \"banner\": \"Oscillator\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"Grid","points":[{"type":"Point","name":"Begin 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"88e15149-215e-42c8-bc00-78b63343daa0","savedPayload":{"position":{"x":23198.70238974374,"y":17544.869074996983},"targetPosition":{"x":23249.758274745032,"y":17674.956355737308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e376a028-b688-4bb5-a100-00be6d161bd6","savedPayload":{"position":{"x":23249.758274745032,"y":17674.956355737308},"targetPosition":{"x":23323.170192605896,"y":17798.287975933603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"6904030c-e751-4eb9-844a-d1cf45caa1f2","savedPayload":{"position":{"x":23302.108535506977,"y":17496.70841199548},"targetPosition":{"x":23304.56377400361,"y":17640.530800337823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f562d9d7-357b-4677-ac4b-3ddbb735ca2b","savedPayload":{"position":{"x":23304.56377400361,"y":17640.530800337823},"targetPosition":{"x":23323.170192605896,"y":17798.287975933603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 20","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 20","id":"4fc2797d-7023-461e-912e-23f2834d4141","savedPayload":{"position":{"x":23396.879246507517,"y":17533.310308428197},"targetPosition":{"x":23354.611620896296,"y":17665.319666308544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8227114d-f503-4f27-ae0b-4bc2804e2cdb","savedPayload":{"position":{"x":23354.611620896296,"y":17665.319666308544},"targetPosition":{"x":23323.170192605896,"y":17798.287975933603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 20","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 20","id":"e6640285-69e5-4a37-8907-9d8bbcc2008b","savedPayload":{"position":{"x":23524.033377011805,"y":17558.037049634535},"targetPosition":{"x":23435.670149966878,"y":17673.65092102731},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c9de9989-11da-44a7-bcbf-137435767d90","savedPayload":{"position":{"x":23435.670149966878,"y":17673.65092102731},"targetPosition":{"x":23323.170192605896,"y":17798.287975933603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 30","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 30","id":"db815155-dbec-4824-9132-470a173d328b","savedPayload":{"position":{"x":23529.965785198317,"y":17651.860116822354},"targetPosition":{"x":23384.721798194056,"y":17749.33543283541},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0f0a70c3-9f37-4e58-a93c-fcfcf9686c09","savedPayload":{"position":{"x":23384.721798194056,"y":17749.33543283541},"targetPosition":{"x":23323.170192605896,"y":17798.287975933603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 30","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 30","id":"db6c3539-81f5-465d-9d79-8004a60ac5fb","savedPayload":{"position":{"x":23598.756281546415,"y":17726.08959251719},"targetPosition":{"x":23497.365080362288,"y":17747.614361332642},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ac82bb81-5d37-4eea-ab52-0f698de71014","savedPayload":{"position":{"x":23497.365080362288,"y":17747.614361332642},"targetPosition":{"x":23323.170192605896,"y":17798.287975933603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 50","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 50","id":"a6a8718f-2c9a-4c5f-af7a-7029bddfb839","savedPayload":{"position":{"x":23552.07390708441,"y":17841.316039460075},"targetPosition":{"x":23423.885828038012,"y":17803.062068953695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a0cdc721-996a-44b2-b619-bbc0ef97cd62","savedPayload":{"position":{"x":23423.885828038012,"y":17803.062068953695},"targetPosition":{"x":23323.170192605896,"y":17798.287975933603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 50","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 50","id":"c996c1b4-2b1f-4d11-acd4-8aba4d3e3e5d","savedPayload":{"position":{"x":23595.106576635437,"y":17943.236080787286},"targetPosition":{"x":23470.771337669263,"y":17894.653680824194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"59a77a0b-bcee-4c1e-855c-854c3d3bc521","savedPayload":{"position":{"x":23470.771337669263,"y":17894.653680824194},"targetPosition":{"x":23323.170192605896,"y":17798.287975933603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 70","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 70","id":"bdcd3323-0da6-4667-95c2-b017623500af","savedPayload":{"position":{"x":23501.037790625567,"y":17989.985213015523},"targetPosition":{"x":23393.16085465358,"y":17867.595828462443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"228edebc-3b5b-4760-9791-2229cb76a662","savedPayload":{"position":{"x":23393.16085465358,"y":17867.595828462443},"targetPosition":{"x":23323.170192605896,"y":17798.287975933603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 70","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 70","id":"9977888b-2cf4-472e-8468-d6705690a57c","savedPayload":{"position":{"x":23422.21118720283,"y":18075.669956601727},"targetPosition":{"x":23388.956053962764,"y":17969.28384375756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4cbfd9aa-d595-4e06-ac82-a87bfdf9f680","savedPayload":{"position":{"x":23388.956053962764,"y":17969.28384375756},"targetPosition":{"x":23323.170192605896,"y":17798.287975933603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 80","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 80","id":"75cda528-f689-4d21-a8ed-ba08705d5ec7","savedPayload":{"position":{"x":23299.2033008692,"y":18007.094708380966},"targetPosition":{"x":23325.425808090455,"y":17873.870594384414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e7b453a3-5312-48e6-8797-6d96e058766b","savedPayload":{"position":{"x":23325.425808090455,"y":17873.870594384414},"targetPosition":{"x":23323.170192605896,"y":17798.287975933603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Eng 80","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 80","id":"df4c7f58-96c7-4ffb-9ce3-ff1b35ddf3c3","savedPayload":{"position":{"x":23168.71070968742,"y":18102.208781453926},"targetPosition":{"x":23241.049186608285,"y":17982.01884857602},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d64e2ceb-abb9-4cc0-b929-211bcbd934a7","savedPayload":{"position":{"x":23241.049186608285,"y":17982.01884857602},"targetPosition":{"x":23323.170192605896,"y":17798.287975933603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 100","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 100","id":"79f20ec4-c499-41ca-aa79-f56fe5b7bcbc","savedPayload":{"position":{"x":23154.31589520946,"y":17924.24904951204},"targetPosition":{"x":23272.919423296495,"y":17848.747209080993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7d5d4922-1d7d-45a3-b5ff-75d14016ee1d","savedPayload":{"position":{"x":23272.919423296495,"y":17848.747209080993},"targetPosition":{"x":23323.170192605896,"y":17798.287975933603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 100","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 100","id":"58d10fb8-87e5-4a4c-95ab-99be2f5b14ea","savedPayload":{"position":{"x":23045.56928684178,"y":17888.82951559156},"targetPosition":{"x":23157.815498601012,"y":17857.43488225158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dc11ae4c-bce1-4e88-986a-457a3612102a","savedPayload":{"position":{"x":23157.815498601012,"y":17857.43488225158},"targetPosition":{"x":23323.170192605896,"y":17798.287975933603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"RSI Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.value","id":"e068d3fa-623c-4349-a10f-4abdd6263b07","savedPayload":{"position":{"x":23088.451952013187,"y":17779.269590018033},"targetPosition":{"x":23253.949024989928,"y":17774.967607721566},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7f687c2f-3a91-4b53-b00d-8a651e82c97d","savedPayload":{"position":{"x":23253.949024989928,"y":17774.967607721566},"targetPosition":{"x":23323.170192605896,"y":17798.287975933603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"RSI End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.value","id":"bb45d3f0-e6e7-473a-b2f4-7016c65bd7ee","savedPayload":{"position":{"x":23070.399040310513,"y":17681.309551825507},"targetPosition":{"x":23182.894250276862,"y":17742.282733613833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f5d97a45-0db5-4d48-bf32-efdd6b2726c0","savedPayload":{"position":{"x":23182.894250276862,"y":17742.282733613833},"targetPosition":{"x":23323.170192605896,"y":17798.287975933603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ff9f35c7-b1ca-446e-905c-c971ca51dfbe","savedPayload":{"position":{"x":23323.170192605896,"y":17798.287975933603},"targetPosition":{"x":22939.21154380246,"y":17443.01875668324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Box 0-20","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.25,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.35,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"9e7202ce-11e7-4526-80d5-52f0dbdcb91c","savedPayload":{"position":{"x":22386.214777823752,"y":18712.94352414979},"targetPosition":{"x":22308.552493821895,"y":18462.58410530931},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"8716fe80-7aa5-4707-93d9-f47ac26e9a53","savedPayload":{"position":{"x":22308.552493821895,"y":18462.58410530931},"targetPosition":{"x":22230.500936905817,"y":18212.119362829395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"89a7b82e-5d1d-4359-80a8-0b85d997a62c","savedPayload":{"position":{"x":22173.002718611133,"y":18468.28996635286},"targetPosition":{"x":22230.500936905817,"y":18212.119362829395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 0","id":"e376a028-b688-4bb5-a100-00be6d161bd6"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"4ddfe945-d3dd-431a-a0bf-477d2f0c0af1","savedPayload":{"position":{"x":22052.799769500616,"y":18405.321140423304},"targetPosition":{"x":22230.500936905817,"y":18212.119362829395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 0","id":"f562d9d7-357b-4677-ac4b-3ddbb735ca2b"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"1fd4c8e3-47e3-4e05-8739-a34e8239b178","savedPayload":{"position":{"x":21980.193068401666,"y":18290.589870813932},"targetPosition":{"x":22230.500936905817,"y":18212.119362829395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 20","id":"c9de9989-11da-44a7-bcbf-137435767d90"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"2920b1c1-1d61-44b8-b31a-31e2d87fa9e4","savedPayload":{"position":{"x":21977.356406108687,"y":18154.78513729863},"targetPosition":{"x":22230.500936905817,"y":18212.119362829395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 20","id":"8227114d-f503-4f27-ae0b-4bc2804e2cdb"}}}],"id":"0dce63e6-acf6-482e-bcf9-3e44b7487cbf","savedPayload":{"position":{"x":22230.500936905817,"y":18212.119362829395},"targetPosition":{"x":22939.21154380246,"y":17443.01875668324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Box 80-100","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.25,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.35,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"f95287c0-8123-4025-8018-370eb91b6189","savedPayload":{"position":{"x":21715.919029700464,"y":18722.785096929754},"targetPosition":{"x":21833.153281405863,"y":18488.218578913635},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c46a4519-e917-410e-98d7-faf0ad80a99a","savedPayload":{"position":{"x":21833.153281405863,"y":18488.218578913635},"targetPosition":{"x":22067.031067963402,"y":18019.635223843234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"eb76ec36-eae3-424a-9105-d26eefca1b67","savedPayload":{"position":{"x":21719.647679630936,"y":18411.591283594338},"targetPosition":{"x":22067.031067963402,"y":18019.635223843234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 80","id":"e7b453a3-5312-48e6-8797-6d96e058766b"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"6facb2b7-b324-4e01-a53f-5d72541ba64f","savedPayload":{"position":{"x":21630.004463332676,"y":18308.375638692698},"targetPosition":{"x":22067.031067963402,"y":18019.635223843234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Eng 80","id":"d64e2ceb-abb9-4cc0-b929-211bcbd934a7"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"2e7bfaf4-7828-4021-9895-58882a03987e","savedPayload":{"position":{"x":21570.136521032797,"y":18185.50799710294},"targetPosition":{"x":22067.031067963402,"y":18019.635223843234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 100","id":"dc11ae4c-bce1-4e88-986a-457a3612102a"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"d2a601ff-7a5d-414e-bc06-be93e13e6ddb","savedPayload":{"position":{"x":21544.10203283386,"y":18051.260075423008},"targetPosition":{"x":22067.031067963402,"y":18019.635223843234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 100","id":"7d5d4922-1d7d-45a3-b5ff-75d14016ee1d"}}}],"id":"2429edaa-20db-4fd9-b834-c84953e78bf3","savedPayload":{"position":{"x":22067.031067963402,"y":18019.635223843234},"targetPosition":{"x":22939.21154380246,"y":17443.01875668324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Box 20-30","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.15,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"f1ac3d45-3f00-4269-a41f-872bcbc99620","savedPayload":{"position":{"x":21879.482351132923,"y":18181.49796181797},"targetPosition":{"x":21906.293209070085,"y":18051.404776983745},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"1aa28d17-1653-496a-8b8a-35fdf6691e0b","savedPayload":{"position":{"x":21906.293209070085,"y":18051.404776983745},"targetPosition":{"x":21954.090364458196,"y":17793.982063739346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"2e88069b-6333-45f8-8199-021fe3896667","savedPayload":{"position":{"x":21783.68114795338,"y":17993.618391259966},"targetPosition":{"x":21954.090364458196,"y":17793.982063739346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 20","id":"8227114d-f503-4f27-ae0b-4bc2804e2cdb"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"cdea2bf9-a545-4877-8d65-5a027352bb8a","savedPayload":{"position":{"x":21706.6320684897,"y":17882.0988489333},"targetPosition":{"x":21954.090364458196,"y":17793.982063739346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 20","id":"c9de9989-11da-44a7-bcbf-137435767d90"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"bfb22589-c1af-4822-8944-1767e3e691bc","savedPayload":{"position":{"x":21701.38933944357,"y":17773.14840010582},"targetPosition":{"x":21954.090364458196,"y":17793.982063739346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 30","id":"ac82bb81-5d37-4eea-ab52-0f698de71014"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"208c9dfc-a7fb-41ab-becc-3b68104e07ed","savedPayload":{"position":{"x":21758.992233597848,"y":17621.007343895908},"targetPosition":{"x":21954.090364458196,"y":17793.982063739346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 30","id":"0f0a70c3-9f37-4e58-a93c-fcfcf9686c09"}}}],"id":"4a0db3d1-061d-4587-9c05-f42c09c0b271","savedPayload":{"position":{"x":21954.090364458196,"y":17793.982063739346},"targetPosition":{"x":22939.21154380246,"y":17443.01875668324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Box 70-80","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.15,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"6335d57f-9462-4d19-b954-2f511308b9c8","savedPayload":{"position":{"x":21461.756489284206,"y":17831.007489537507},"targetPosition":{"x":21674.870770448542,"y":17677.670106736005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b01a727e-5773-47c2-b094-c19ad0ac71f4","savedPayload":{"position":{"x":21674.870770448542,"y":17677.670106736005},"targetPosition":{"x":21898.720697608336,"y":17547.74904063303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"c59e52e4-9b7e-4985-ab53-35f5cd29f250","savedPayload":{"position":{"x":21408.75939696311,"y":17733.212099950055},"targetPosition":{"x":21898.720697608336,"y":17547.74904063303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 70","id":"228edebc-3b5b-4760-9791-2229cb76a662"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"957f8c1e-cb14-4241-b805-abfdc50c07d0","savedPayload":{"position":{"x":21377.43658104985,"y":17600.169906295305},"targetPosition":{"x":21898.720697608336,"y":17547.74904063303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 70","id":"4cbfd9aa-d595-4e06-ac82-a87bfdf9f680"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"37688deb-5377-4f52-bde8-5e8abbf6e25f","savedPayload":{"position":{"x":21370.179862250046,"y":17493.36525891723},"targetPosition":{"x":21898.720697608336,"y":17547.74904063303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Eng 80","id":"d64e2ceb-abb9-4cc0-b929-211bcbd934a7"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"6d346213-f33f-4b5a-a519-5e1c3fb42e50","savedPayload":{"position":{"x":21425.11968825758,"y":17314.082286710745},"targetPosition":{"x":21898.720697608336,"y":17547.74904063303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 80","id":"e7b453a3-5312-48e6-8797-6d96e058766b"}}}],"id":"5835d367-23bc-4039-b2c1-1a23f3ca652f","savedPayload":{"position":{"x":21898.720697608336,"y":17547.74904063303},"targetPosition":{"x":22939.21154380246,"y":17443.01875668324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.15,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"6ad882da-10d9-427c-8fb5-3a7c55b678a1","savedPayload":{"position":{"x":21402.615008106935,"y":17415.070468997696},"targetPosition":{"x":21649.448699286928,"y":17361.154232183962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fa05777f-6288-4dd2-9b7a-61194bc43681","savedPayload":{"position":{"x":21649.448699286928,"y":17361.154232183962},"targetPosition":{"x":21903.57647783329,"y":17295.9036277303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"a9a9dd2d-d7f8-4a25-b81d-d1e2a2f9d5a6","savedPayload":{"position":{"x":21643.679817389493,"y":17258.937425680055},"targetPosition":{"x":21903.57647783329,"y":17295.9036277303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 20","id":"8227114d-f503-4f27-ae0b-4bc2804e2cdb"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"a717c7d2-3bc7-4d8c-9e9f-e1fb75fd0d42","savedPayload":{"position":{"x":21677.872645479656,"y":17162.105901506442},"targetPosition":{"x":21903.57647783329,"y":17295.9036277303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 20","id":"c9de9989-11da-44a7-bcbf-137435767d90"}}}],"id":"27aab97e-ce7f-47fc-bd22-d9b70ffec2d1","savedPayload":{"position":{"x":21903.57647783329,"y":17295.9036277303},"targetPosition":{"x":22939.21154380246,"y":17443.01875668324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 30","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"0b1d6f25-076c-4495-b462-435a8d1900d2","savedPayload":{"position":{"x":21313.796741415576,"y":17058.04774440852},"targetPosition":{"x":21445.19407934108,"y":17057.373221270456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"6cb61271-a82a-47a1-ac0c-404dc28b05e5","savedPayload":{"position":{"x":21445.19407934108,"y":17057.373221270456},"targetPosition":{"x":21968.8592252099,"y":17052.428090691497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"e656c0ce-1b57-420e-84f5-cd62a9bb602d","savedPayload":{"position":{"x":21482.99644161707,"y":16856.976190610367},"targetPosition":{"x":21968.8592252099,"y":17052.428090691497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 30","id":"ac82bb81-5d37-4eea-ab52-0f698de71014"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"8e2ee705-7be7-4705-a32f-242a5c1d286d","savedPayload":{"position":{"x":21612.415736106133,"y":16654.718011043176},"targetPosition":{"x":21968.8592252099,"y":17052.428090691497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 30","id":"0f0a70c3-9f37-4e58-a93c-fcfcf9686c09"}}}],"id":"18e4afd3-7536-405b-97b6-d36ec7ddc692","savedPayload":{"position":{"x":21968.8592252099,"y":17052.428090691497},"targetPosition":{"x":22939.21154380246,"y":17443.01875668324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 50","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"68ca10ec-d83d-4f61-b9ee-6a0f3a74cb12","savedPayload":{"position":{"x":21562.325190918215,"y":16742.37351193869},"targetPosition":{"x":21835.107784426375,"y":16771.67876287694},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fefbf0c0-287c-4bb7-81a7-6b745dcfcf3b","savedPayload":{"position":{"x":21835.107784426375,"y":16771.67876287694},"targetPosition":{"x":22090.548221207308,"y":16831.631048575124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"cfa25adf-05eb-49d0-956a-69e4fde9bacf","savedPayload":{"position":{"x":21877.640943884842,"y":16678.195307584636},"targetPosition":{"x":22090.548221207308,"y":16831.631048575124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 50","id":"a0cdc721-996a-44b2-b619-bbc0ef97cd62"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"de1447aa-e70f-419b-bab5-d94b333612c7","savedPayload":{"position":{"x":21952.894066821413,"y":16608.216673175495},"targetPosition":{"x":22090.548221207308,"y":16831.631048575124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 50","id":"59a77a0b-bcee-4c1e-855c-854c3d3bc521"}}}],"id":"bbe48886-b71e-4507-b6e8-7f073b691a6a","savedPayload":{"position":{"x":22090.548221207308,"y":16831.631048575124},"targetPosition":{"x":22939.21154380246,"y":17443.01875668324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 70","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"913293ac-040f-4348-ade4-5b3103fe1375","savedPayload":{"position":{"x":21562.078183139463,"y":16287.828432132868},"targetPosition":{"x":21795.52605419984,"y":16407.509224255802},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8640a48e-f7ca-419c-a687-3f52c3a5afa9","savedPayload":{"position":{"x":21795.52605419984,"y":16407.509224255802},"targetPosition":{"x":22261.584909881203,"y":16646.26684920782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"bc77b107-0a70-4038-86a6-3034ab4e86dd","savedPayload":{"position":{"x":21922.184006882184,"y":16247.029716619985},"targetPosition":{"x":22261.584909881203,"y":16646.26684920782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 70","id":"4cbfd9aa-d595-4e06-ac82-a87bfdf9f680"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"36882cd2-2ec4-4d2d-af00-98b4c54bf1e7","savedPayload":{"position":{"x":22100.737218692873,"y":16147.944077469674},"targetPosition":{"x":22261.584909881203,"y":16646.26684920782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 70","id":"228edebc-3b5b-4760-9791-2229cb76a662"}}}],"id":"508b71cf-79d3-4db4-a6d3-0b26226ad5b9","savedPayload":{"position":{"x":22261.584909881203,"y":16646.26684920782},"targetPosition":{"x":22939.21154380246,"y":17443.01875668324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 80","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.15,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"9506c6ad-440b-45a1-aadf-89004f5311fb","savedPayload":{"position":{"x":21975.00816838702,"y":16340.78659912324},"targetPosition":{"x":22223.426445014262,"y":16423.886207587828},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"59804538-89e9-485a-a2b1-88ff78eb5661","savedPayload":{"position":{"x":22223.426445014262,"y":16423.886207587828},"targetPosition":{"x":22471.994711994812,"y":16507.255971070383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"23df3ac4-6427-4a69-a5a3-8230186b46f3","savedPayload":{"position":{"x":22354.777383799563,"y":16272.471391352197},"targetPosition":{"x":22471.994711994812,"y":16507.255971070383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 80","id":"e7b453a3-5312-48e6-8797-6d96e058766b"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"7a5139be-30b6-4eab-994a-bb8b74be455d","savedPayload":{"position":{"x":22552.58715943864,"y":16260.070746368841},"targetPosition":{"x":22471.994711994812,"y":16507.255971070383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Eng 80","id":"d64e2ceb-abb9-4cc0-b929-211bcbd934a7"}}}],"id":"8499947d-a392-40ed-be9d-225a28429642","savedPayload":{"position":{"x":22471.994711994812,"y":16507.255971070383},"targetPosition":{"x":22939.21154380246,"y":17443.01875668324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"RSI Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"90fe9ece-e33a-4e2e-904a-779327e7155a","savedPayload":{"position":{"x":22206.70371020989,"y":15826.91219081077},"targetPosition":{"x":22408.19493054428,"y":15994.848921061286},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"(record.previous.value < 20 && record.value < 20) || (record.previous.value > 80 && record.value > 80)","style":{"type":"Style","name":"New Style","code":"{\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n}","id":"58f58e7a-3056-49c7-9117-f2a514d4479e","savedPayload":{"position":{"x":22227.575013528127,"y":15502.399124305835},"targetPosition":{"x":22317.980468627564,"y":15748.53372106875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9fcf2614-7ec8-407f-93a2-3c749f6683ef","savedPayload":{"position":{"x":22317.980468627564,"y":15748.53372106875},"targetPosition":{"x":22408.19493054428,"y":15994.848921061286},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6dc77d6e-5aa6-41ab-b247-43c4391fcc96","savedPayload":{"position":{"x":22408.19493054428,"y":15994.848921061286},"targetPosition":{"x":22709.685954250617,"y":16422.75941448975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"5312ee43-9c15-4d4b-9255-5fb7259c5734","savedPayload":{"position":{"x":22594.941890192404,"y":15911.846107947993},"targetPosition":{"x":22709.685954250617,"y":16422.75941448975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"RSI Begin","id":"7f687c2f-3a91-4b53-b00d-8a651e82c97d"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"01981eaa-b1c6-41e1-84b4-2dc8106ac095","savedPayload":{"position":{"x":22798.84235782592,"y":15906.675098352993},"targetPosition":{"x":22709.685954250617,"y":16422.75941448975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"RSI End","id":"f5d97a45-0db5-4d48-bf32-efdd6b2726c0"}}}],"id":"e8eb9949-277b-4493-a9f4-cbcb502aacbc","savedPayload":{"position":{"x":22709.685954250617,"y":16422.75941448975},"targetPosition":{"x":22939.21154380246,"y":17443.01875668324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Box 30-70","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.05,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.1,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"5b04f4bb-2cc4-48a5-b421-667c96b2dd27","savedPayload":{"position":{"x":22626.74128344536,"y":16191.263915787635},"targetPosition":{"x":22736.855931879258,"y":16261.252160046259},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"208ca141-b231-4a70-8b31-eeae09576822","savedPayload":{"position":{"x":22736.855931879258,"y":16261.252160046259},"targetPosition":{"x":22960.695544936476,"y":16397.272855577387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"7956c253-3704-46c0-b188-f6662bb58904","savedPayload":{"position":{"x":22834.773018954493,"y":16167.169398999578},"targetPosition":{"x":22960.695544936476,"y":16397.272855577387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 30","id":"0f0a70c3-9f37-4e58-a93c-fcfcf9686c09"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"b043ae0f-a172-4ebe-922b-a895b8a888c9","savedPayload":{"position":{"x":22966.211381151734,"y":16134.723669160885},"targetPosition":{"x":22960.695544936476,"y":16397.272855577387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 30","id":"ac82bb81-5d37-4eea-ab52-0f698de71014"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"5830f66c-dca5-4f62-8102-d7d8ea588d0d","savedPayload":{"position":{"x":23096.57179307331,"y":16172.59302838813},"targetPosition":{"x":22960.695544936476,"y":16397.272855577387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 70","id":"4cbfd9aa-d595-4e06-ac82-a87bfdf9f680"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"a8eb0500-2421-4879-9459-2ecdb4ae09d5","savedPayload":{"position":{"x":23190.604918639692,"y":16270.784039926839},"targetPosition":{"x":22960.695544936476,"y":16397.272855577387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 70","id":"228edebc-3b5b-4760-9791-2229cb76a662"}}}],"id":"b294fd86-15d6-4bc8-9379-0532df288eee","savedPayload":{"position":{"x":22960.695544936476,"y":16397.272855577387},"targetPosition":{"x":22939.21154380246,"y":17443.01875668324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"bc1170cc-a04b-4453-bd28-0e522f747617","savedPayload":{"position":{"x":22939.21154380246,"y":17443.01875668324},"targetPosition":{"x":23949.64258312214,"y":17714.64962611337},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"RSI 14","code":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"RSI 14","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.value","id":"fbec83cc-a090-491b-8cfb-833d40b2b843","savedPayload":{"position":{"x":23776.71079816258,"y":17060.13149828067},"targetPosition":{"x":23821.21724223931,"y":17229.24962577981},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e5fd8d57-8920-417e-8b9b-c1e0d6868a7a","savedPayload":{"position":{"x":23821.21724223931,"y":17229.24962577981},"targetPosition":{"x":23865.741699188,"y":17398.453725085117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ff06d653-f886-44f4-8b28-82bab51aa98d","savedPayload":{"position":{"x":23865.741699188,"y":17398.453725085117},"targetPosition":{"x":23949.64258312214,"y":17714.64962611337},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"72403d40-2a64-4e51-8eaf-b1a872e4474e","savedPayload":{"position":{"x":23968.6589614283,"y":17717.488156273022},"targetPosition":{"x":24442.32487180902,"y":18208.067229471},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"bbc529df-b938-47b5-8cb7-a5579c859b99","savedPayload":{"position":{"x":24442.32487180902,"y":18208.067229471},"targetPosition":{"x":24943.90880679387,"y":18695.646004599515},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"MACD","code":"{\n\"codeName\": \"Plotter-MACD\"\n}","modules":[{"type":"Plotter Module","name":"MACD 122609","code":"{\n\t\"codeName\": \"Module-MACD-122609\",\n \"icon\": \"histogram\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.line","id":"013bf1cc-f8e0-4355-9690-6fb63ca3d103","savedPayload":{"position":{"x":24114.949728781048,"y":17549.903192844078},"targetPosition":{"x":24132.776938876836,"y":17900.71562596004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"94440a25-a6c7-4e2d-a254-6479c643ff09","savedPayload":{"position":{"x":24132.776938876836,"y":17900.71562596004},"targetPosition":{"x":24055.744164335152,"y":18199.000517539742},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.line","id":"3c8d9416-40db-43cd-a0ae-07a9e0635ef7","savedPayload":{"position":{"x":24654.706329692595,"y":17941.977753650877},"targetPosition":{"x":24315.10135341352,"y":18033.797445287375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0b988153-3df8-402b-9c04-7e74699887f7","savedPayload":{"position":{"x":24315.10135341352,"y":18033.797445287375},"targetPosition":{"x":24055.744164335152,"y":18199.000517539742},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Signal Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.signal","id":"91037bb8-b0c7-4967-9706-9ead7aaecd8b","savedPayload":{"position":{"x":24657.74086248243,"y":18276.21728299143},"targetPosition":{"x":24341.18336935479,"y":18243.02218200983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"365f7baa-2fd3-48cc-aaff-24844093e7eb","savedPayload":{"position":{"x":24341.18336935479,"y":18243.02218200983},"targetPosition":{"x":24055.744164335152,"y":18199.000517539742},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Signal End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.signal","id":"39df31ee-2e46-4a02-a8fb-8629589eb362","savedPayload":{"position":{"x":24497.310831799292,"y":18656.94777234161},"targetPosition":{"x":24276.515247000345,"y":18428.021965169697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4c82a32a-feff-405d-bc3f-036793beee1b","savedPayload":{"position":{"x":24276.515247000345,"y":18428.021965169697},"targetPosition":{"x":24055.744164335152,"y":18199.000517539742},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"5522b77c-b212-4da0-b875-ec3ed641d6b9","savedPayload":{"position":{"x":24099.54018150518,"y":18834.20910895631},"targetPosition":{"x":24077.617371278757,"y":18516.277812091706},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c0cd1824-c456-4b8a-ba66-d74f5141f9d1","savedPayload":{"position":{"x":24077.617371278757,"y":18516.277812091706},"targetPosition":{"x":24055.744164335152,"y":18199.000517539742},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"0f1eceef-4664-4e5f-9f78-1e16eea87c82","savedPayload":{"position":{"x":23681.259330173365,"y":18713.99400840757},"targetPosition":{"x":23868.46730235505,"y":18456.428603888864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"580f0304-770f-4fe3-aa42-8e8556096b71","savedPayload":{"position":{"x":23868.46730235505,"y":18456.428603888864},"targetPosition":{"x":24055.744164335152,"y":18199.000517539742},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = (record.end - record.begin)/2 + record.begin\ny = 0","id":"266e904b-ce67-4b66-9474-4a4b030e055c","savedPayload":{"position":{"x":23437.995123992285,"y":18353.08255785464},"targetPosition":{"x":23746.810009678506,"y":18276.011151300016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ceed0b7c-ddfd-4395-ba25-d85353ed9b0c","savedPayload":{"position":{"x":23746.810009678506,"y":18276.011151300016},"targetPosition":{"x":24055.744164335152,"y":18199.000517539742},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Histogram","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = (record.end - record.begin)/2 + record.begin\ny = record.histogram","id":"82de3468-fabd-41ab-bb34-aa7be6f9a564","savedPayload":{"position":{"x":23483.733949543537,"y":17920.431246509805},"targetPosition":{"x":23769.649295387408,"y":18059.63370384578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"274108bd-33fb-46a0-b744-6500621a56c6","savedPayload":{"position":{"x":23769.649295387408,"y":18059.63370384578},"targetPosition":{"x":24055.744164335152,"y":18199.000517539742},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f2b8d463-e10e-4db3-b2b8-ed4d4a980312","savedPayload":{"position":{"x":24055.744164335152,"y":18199.000517539742},"targetPosition":{"x":23797.406416802714,"y":17618.412183582885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Line Zero","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"eb2c7353-ba05-45d2-8abf-e605899e2c25","savedPayload":{"position":{"x":22778.17457604873,"y":18339.069015474393},"targetPosition":{"x":22997.24808492324,"y":18108.29312564483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"35816f89-9448-4bd4-89fe-2d6a626c127e","savedPayload":{"position":{"x":22997.24808492324,"y":18108.29312564483},"targetPosition":{"x":23216.23669595117,"y":17877.25511942566},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"53278a2d-78c8-44f4-a450-46dd8a33967c","savedPayload":{"position":{"x":22925.379259169556,"y":18006.81928746396},"targetPosition":{"x":23216.23669595117,"y":17877.25511942566},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero Begin","id":"c0cd1824-c456-4b8a-ba66-d74f5141f9d1"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"8e67d151-e3aa-4831-8bf8-027cfc4caa17","savedPayload":{"position":{"x":22893.604196158296,"y":17913.560126032444},"targetPosition":{"x":23216.23669595117,"y":17877.25511942566},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero End","id":"580f0304-770f-4fe3-aa42-8e8556096b71"}}}],"id":"7efecae7-d203-47c5-8526-bb7135cf7581","savedPayload":{"position":{"x":23216.23669595117,"y":17877.25511942566},"targetPosition":{"x":23797.406416802714,"y":17618.412183582885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Histogram","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 1,\n \"lineWidth\": 3,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"87cb111c-9ab9-4708-a631-ea69bbe2ce9b","savedPayload":{"position":{"x":22908.71093308684,"y":17813.50882586531},"targetPosition":{"x":23175.887765039355,"y":17675.574129856817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.histogram < 0","style":{"type":"Style","name":"New Style","code":"{\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n}","id":"2f2bb59f-6665-45c6-ab49-dc5e3c886790","savedPayload":{"position":{"x":22539.421238670817,"y":17691.76986609779},"targetPosition":{"x":22857.57837747366,"y":17683.57268324122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5d880310-15ff-48fa-bdaa-2b5f756078ae","savedPayload":{"position":{"x":22857.57837747366,"y":17683.57268324122},"targetPosition":{"x":23175.887765039355,"y":17675.574129856817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ccbf5840-9d7d-4ff6-9072-2d6643b10017","savedPayload":{"position":{"x":23175.887765039355,"y":17675.574129856817},"targetPosition":{"x":23481.042297017266,"y":17585.257626434726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"6791722d-5183-48b7-b905-8c1604acae96","savedPayload":{"position":{"x":23164.4144638393,"y":17551.985883632446},"targetPosition":{"x":23481.042297017266,"y":17585.257626434726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero","id":"ceed0b7c-ddfd-4395-ba25-d85353ed9b0c"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"0ceaf5d8-b8c7-4d39-a8b3-fd58e402cf37","savedPayload":{"position":{"x":23201.312418794005,"y":17433.354126355378},"targetPosition":{"x":23481.042297017266,"y":17585.257626434726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Histogram","id":"274108bd-33fb-46a0-b744-6500621a56c6"}}}],"id":"e0c98602-420c-4f55-bad0-e27649a79e25","savedPayload":{"position":{"x":23481.042297017266,"y":17585.257626434726},"targetPosition":{"x":23797.406416802714,"y":17618.412183582885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"b027e8fb-cfc7-4658-89dd-28be20660c11","savedPayload":{"position":{"x":22663.594166472336,"y":17095.930311670312},"targetPosition":{"x":22973.032843108096,"y":17170.228206417065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"29f3ad41-e970-4817-8285-732bb172e30f","savedPayload":{"position":{"x":22973.032843108096,"y":17170.228206417065},"targetPosition":{"x":23282.65203658398,"y":17244.391010261217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"6819d608-167a-4d7f-a636-cd4f5a01969a","savedPayload":{"position":{"x":23025.05609367665,"y":17057.22715833947},"targetPosition":{"x":23282.65203658398,"y":17244.391010261217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Line End","id":"0b988153-3df8-402b-9c04-7e74699887f7"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"6d212921-f546-4874-a1ca-655ac05d6587","savedPayload":{"position":{"x":23116.328471060606,"y":16972.919917694016},"targetPosition":{"x":23282.65203658398,"y":17244.391010261217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Line Begin","id":"94440a25-a6c7-4e2d-a254-6479c643ff09"}}}],"id":"c5b15661-b8ab-46b6-bd98-9c2b74ebf550","savedPayload":{"position":{"x":23282.65203658398,"y":17244.391010261217},"targetPosition":{"x":23797.406416802714,"y":17618.412183582885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Signal","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"016d7265-d869-4534-8669-f6182a573d85","savedPayload":{"position":{"x":23206.721163457394,"y":16889.149406905963},"targetPosition":{"x":23437.361474213747,"y":17108.54228971262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"257492c0-dffd-4e78-854d-90bbf6423652","savedPayload":{"position":{"x":23437.361474213747,"y":17108.54228971262},"targetPosition":{"x":23668.181176796767,"y":17327.684612674973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"7c9842d1-9d91-49d2-bdd2-2b443b94a237","savedPayload":{"position":{"x":23538.820518099837,"y":17036.822879311298},"targetPosition":{"x":23668.181176796767,"y":17327.684612674973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Signal End","id":"4c82a32a-feff-405d-bc3f-036793beee1b"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"5f1617a3-28fe-4fbc-9e92-c466c30141a1","savedPayload":{"position":{"x":23660.148762688124,"y":17009.47272736748},"targetPosition":{"x":23668.181176796767,"y":17327.684612674973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Signal Begin","id":"365f7baa-2fd3-48cc-aaff-24844093e7eb"}}}],"id":"a783436f-fdf6-42e1-8394-633220627cf6","savedPayload":{"position":{"x":23668.181176796767,"y":17327.684612674973},"targetPosition":{"x":23797.406416802714,"y":17618.412183582885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4c2df818-f24d-4458-84d5-eb5e50c413e5","savedPayload":{"position":{"x":23797.406416802714,"y":17618.412183582885},"targetPosition":{"x":24429.290436285442,"y":17684.800446816807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"MACD 122609","code":"{ \n\"codeName\": \"Panel-MACD-122609\"\n}","panelData":[{"type":"Panel Data","name":"Line","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.line","id":"52edc6fd-3d02-4f47-ad41-f2937d00ff3d","savedPayload":{"position":{"x":23577.420902863716,"y":16875.350662909605},"targetPosition":{"x":23874.319274550748,"y":16989.872899338014},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a39ffdbe-3b95-48b9-b8b6-a760f44def62","savedPayload":{"position":{"x":23874.319274550748,"y":16989.872899338014},"targetPosition":{"x":24171.058385715944,"y":17104.09798571856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Signal","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.signal","id":"f8089efa-fde3-41df-b096-1a00df3581ae","savedPayload":{"position":{"x":23912.561091882555,"y":16522.487307627543},"targetPosition":{"x":24041.83803173517,"y":16813.275605850584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fadd439a-0ae7-473c-940c-4e0119bfa325","savedPayload":{"position":{"x":24041.83803173517,"y":16813.275605850584},"targetPosition":{"x":24171.058385715944,"y":17104.09798571856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Histogram","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.histogram","id":"1bfbffeb-bd62-4f0e-bf46-a69d97a19af7","savedPayload":{"position":{"x":24399.100672010238,"y":16509.873153028595},"targetPosition":{"x":24285.117876037086,"y":16806.971098418242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9b0b1888-dbfb-4ec1-ae2e-3cfa9fbd51fe","savedPayload":{"position":{"x":24285.117876037086,"y":16806.971098418242},"targetPosition":{"x":24171.058385715944,"y":17104.09798571856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"20625002-d334-440f-a473-88140625598f","savedPayload":{"position":{"x":24171.058385715944,"y":17104.09798571856},"targetPosition":{"x":24429.290436285442,"y":17684.800446816807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fb08cb11-7983-4106-8b03-edf70baad4a0","savedPayload":{"position":{"x":24429.025657047576,"y":17684.994515644208},"targetPosition":{"x":24943.912692145273,"y":18059.067094093436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"MACD 031016","code":"{\n\t\"codeName\": \"Module-MACD-031016\",\n \"icon\": \"histogram\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.line","id":"b5d7cbce-d6e7-401c-b79e-121856736ff4","savedPayload":{"position":{"x":24574.94603889002,"y":17156.840338467755},"targetPosition":{"x":24382.582823489145,"y":17453.964008376548},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1f9c9003-b080-49e5-8ab7-2b5b17086596","savedPayload":{"position":{"x":24382.582823489145,"y":17453.964008376548},"targetPosition":{"x":24143.10986007761,"y":17650.04142642608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.line","id":"032146dc-0480-4dbe-a91e-ad8067da7659","savedPayload":{"position":{"x":24796.95009455327,"y":17788.439391463675},"targetPosition":{"x":24461.60080856101,"y":17658.77043002661},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aecccad2-09c2-483f-ad7e-b58d463ecc31","savedPayload":{"position":{"x":24461.60080856101,"y":17658.77043002661},"targetPosition":{"x":24143.10986007761,"y":17650.04142642608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Signal Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.signal","id":"8016a3c1-2c79-4449-8075-3be7d559e628","savedPayload":{"position":{"x":24615.60189142774,"y":18075.911971762678},"targetPosition":{"x":24379.2958578876,"y":17863.214799290166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"10c05c23-c90c-45df-8aba-a2828c90f7e1","savedPayload":{"position":{"x":24379.2958578876,"y":17863.214799290166},"targetPosition":{"x":24143.10986007761,"y":17650.04142642608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Signal End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.signal","id":"4e570054-6ad8-4894-994f-33008806def2","savedPayload":{"position":{"x":24230.744519903837,"y":18280.297471655194},"targetPosition":{"x":24186.96217462334,"y":17965.190428306178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f3abb57c-7d3c-4803-9939-cf0bd64964d2","savedPayload":{"position":{"x":24186.96217462334,"y":17965.190428306178},"targetPosition":{"x":24143.10986007761,"y":17650.04142642608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"17fa15b8-c752-45e7-9ab0-91ceab45e38f","savedPayload":{"position":{"x":23805.395695540774,"y":18189.74474301502},"targetPosition":{"x":23974.226786042327,"y":17919.933499927232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"adbe6c72-d20f-4e31-a636-2efde1ffb8fe","savedPayload":{"position":{"x":23974.226786042327,"y":17919.933499927232},"targetPosition":{"x":24143.10986007761,"y":17650.04142642608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"11f10b6a-4de7-4c2e-8b08-ff25a0f391fe","savedPayload":{"position":{"x":23537.435511058324,"y":17846.65044861713},"targetPosition":{"x":23840.21556580189,"y":17748.361625270456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ba91f45f-78ef-4776-b0db-76626b4ab6a9","savedPayload":{"position":{"x":23840.21556580189,"y":17748.361625270456},"targetPosition":{"x":24143.10986007761,"y":17650.04142642608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero Middle","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = (record.end - record.begin)/2 + record.begin\ny = 0","id":"d6c3344a-031a-4abe-a954-84fb5f3a348a","savedPayload":{"position":{"x":23552.65927533217,"y":17411.822973652783},"targetPosition":{"x":23847.83667408429,"y":17530.904480119385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7910022b-7f2a-42c1-a8bb-a7dbfd7173fb","savedPayload":{"position":{"x":23847.83667408429,"y":17530.904480119385},"targetPosition":{"x":24143.10986007761,"y":17650.04142642608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Histogram","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = (record.end - record.begin)/2 + record.begin\ny = record.histogram","id":"9feab5b3-5a73-456b-a177-6a5cbbd1a542","savedPayload":{"position":{"x":23844.11508911933,"y":17088.50808335209},"targetPosition":{"x":23993.59213628491,"y":17369.15832846915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aa1b0de1-8ca0-414f-915b-b03fd6322cb7","savedPayload":{"position":{"x":23993.59213628491,"y":17369.15832846915},"targetPosition":{"x":24143.10986007761,"y":17650.04142642608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"95bb8ee2-447e-465c-aa18-fdf3cd1d9fe7","savedPayload":{"position":{"x":24143.10986007761,"y":17650.04142642608},"targetPosition":{"x":24275.49835400383,"y":17028.577751771416},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Line Zero","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"d3aedc59-15d6-43d5-9edb-41b17ba0b9a7","savedPayload":{"position":{"x":23027.163129622124,"y":17012.48826412128},"targetPosition":{"x":23340.09570988854,"y":16954.6271815073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"c9204ab8-9aa4-461f-bfef-f16e80dfcfde","savedPayload":{"position":{"x":23340.09570988854,"y":16954.6271815073},"targetPosition":{"x":23653.118754621282,"y":16896.504727481937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"a26ab460-419c-4c64-94b3-f344d333e427","savedPayload":{"position":{"x":23341.59916742525,"y":16830.488378190224},"targetPosition":{"x":23653.118754621282,"y":16896.504727481937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero Begin","id":"adbe6c72-d20f-4e31-a636-2efde1ffb8fe"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"8bcffc78-e71a-4a5b-b874-98335342557a","savedPayload":{"position":{"x":23370.799941241574,"y":16736.317985556267},"targetPosition":{"x":23653.118754621282,"y":16896.504727481937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero End","id":"ba91f45f-78ef-4776-b0db-76626b4ab6a9"}}}],"id":"b8ddf2bf-44ec-455e-b9e0-3aea2fe4c03b","savedPayload":{"position":{"x":23653.118754621282,"y":16896.504727481937},"targetPosition":{"x":24275.49835400383,"y":17028.577751771416},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Histogram","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 1,\n \"lineWidth\": 3,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"8387bbc3-546c-45d6-9bd3-efe1abdd3511","savedPayload":{"position":{"x":23441.692272083437,"y":16664.297891708957},"targetPosition":{"x":23739.069690213673,"y":16709.578075308018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.histogram < 0","style":{"type":"Style","name":"New Style","code":"{\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n}","id":"8b8ca847-0ee9-4a50-93d8-219afad9d2bb","savedPayload":{"position":{"x":23214.52029776399,"y":16348.816013747764},"targetPosition":{"x":23476.790140496483,"y":16529.07047620181},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"18c65f10-ca47-46aa-a74d-50ed3a7b3c21","savedPayload":{"position":{"x":23476.790140496483,"y":16529.07047620181},"targetPosition":{"x":23739.069690213673,"y":16709.578075308018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"836ad43b-dbbe-4145-b584-f06f92971981","savedPayload":{"position":{"x":23739.069690213673,"y":16709.578075308018},"targetPosition":{"x":24039.09431993991,"y":16815.756695643144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"d41ccd8f-9abd-4701-a00d-a0582cf90328","savedPayload":{"position":{"x":23802.550604532436,"y":16602.692621056776},"targetPosition":{"x":24039.09431993991,"y":16815.756695643144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero Middle","id":"7910022b-7f2a-42c1-a8bb-a7dbfd7173fb"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"5d816817-9b56-41c0-8e3d-9ee2c13d4a2d","savedPayload":{"position":{"x":23902.131608117154,"y":16528.403563947093},"targetPosition":{"x":24039.09431993991,"y":16815.756695643144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Histogram","id":"aa1b0de1-8ca0-414f-915b-b03fd6322cb7"}}}],"id":"34dac9ae-bbb4-4c68-9462-986a7102e87e","savedPayload":{"position":{"x":24039.09431993991,"y":16815.756695643144},"targetPosition":{"x":24275.49835400383,"y":17028.577751771416},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"8c239919-8420-451f-8d50-282b389d47cd","savedPayload":{"position":{"x":23665.508152959075,"y":15939.304526973292},"targetPosition":{"x":23872.119417313508,"y":16181.339501924509},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6c3dfcca-7012-4442-91be-64a8215832d5","savedPayload":{"position":{"x":23872.119417313508,"y":16181.339501924509},"targetPosition":{"x":24078.953509122282,"y":16423.374165173598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"340835c7-b097-4be7-a0f5-76958ceb2e46","savedPayload":{"position":{"x":23980.624657400036,"y":16120.501416646743},"targetPosition":{"x":24078.953509122282,"y":16423.374165173598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Line End","id":"aecccad2-09c2-483f-ad7e-b58d463ecc31"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"c14a8ccb-9184-4483-a0c7-73d2259fa7eb","savedPayload":{"position":{"x":24103.815946908282,"y":16105.943668449028},"targetPosition":{"x":24078.953509122282,"y":16423.374165173598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Line Begin","id":"1f9c9003-b080-49e5-8ab7-2b5b17086596"}}}],"id":"bfe93326-71d6-47d7-a34f-221c188a22a9","savedPayload":{"position":{"x":24078.953509122282,"y":16423.374165173598},"targetPosition":{"x":24275.49835400383,"y":17028.577751771416},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Signal","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"3536f467-d468-4b5b-974d-6835b3932a5c","savedPayload":{"position":{"x":24226.245217753807,"y":16091.254108299061},"targetPosition":{"x":24283.81767273298,"y":16404.357741538268},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"2b5adcee-bef1-4a94-b045-8c52317c89f7","savedPayload":{"position":{"x":24283.81767273298,"y":16404.357741538268},"targetPosition":{"x":24341.690916979715,"y":16717.36669476163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"c7c53102-0db0-44d5-935f-b4609ce0ad1a","savedPayload":{"position":{"x":24407.857712070087,"y":16405.97459374884},"targetPosition":{"x":24341.690916979715,"y":16717.36669476163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Signal End","id":"f3abb57c-7d3c-4803-9939-cf0bd64964d2"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"f6b5228a-83bf-42ee-b652-b7b71674e710","savedPayload":{"position":{"x":24522.089634860764,"y":16455.161760311887},"targetPosition":{"x":24341.690916979715,"y":16717.36669476163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Signal Begin","id":"10c05c23-c90c-45df-8aba-a2828c90f7e1"}}}],"id":"004e01d2-9a9b-4cec-935d-fd5427397838","savedPayload":{"position":{"x":24341.690916979715,"y":16717.36669476163},"targetPosition":{"x":24275.49835400383,"y":17028.577751771416},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cff04172-4157-400a-ba23-98428f3f8505","savedPayload":{"position":{"x":24275.49835400383,"y":17028.577751771416},"targetPosition":{"x":24747.632486721843,"y":17453.74856509616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"MACD 031016","code":"{ \n\"codeName\": \"Panel-MACD-031016\"\n}","panelData":[{"type":"Panel Data","name":"Line","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.line","id":"30e7b23c-7d15-4eb2-971b-442ef569578d","savedPayload":{"position":{"x":24534.230980458637,"y":16298.025428096764},"targetPosition":{"x":24707.050384998944,"y":16565.235474625388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fc80e234-9a51-434b-9a75-776ac31fb892","savedPayload":{"position":{"x":24707.050384998944,"y":16565.235474625388},"targetPosition":{"x":24879.914802786585,"y":16832.114597186333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Signal","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.signal","id":"e4b2dfeb-834f-4daf-8c65-5f10885d4dfa","savedPayload":{"position":{"x":25012.374363676237,"y":16209.539735881805},"targetPosition":{"x":24946.178275706254,"y":16520.828894218506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fe1b0c2a-0a40-42b7-a275-dfe9d14f0a7c","savedPayload":{"position":{"x":24946.178275706254,"y":16520.828894218506},"targetPosition":{"x":24879.914802786585,"y":16832.114597186333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Histogram","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.histogram","id":"3698be44-3c02-481a-94fa-d3b759c3fd16","savedPayload":{"position":{"x":25413.73019804904,"y":16485.546123102326},"targetPosition":{"x":25146.86268841168,"y":16658.840547442327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"251d6cd3-674e-4269-86ac-4ef977924055","savedPayload":{"position":{"x":25146.86268841168,"y":16658.840547442327},"targetPosition":{"x":24879.914802786585,"y":16832.114597186333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d05c86b5-c035-4dde-967b-fd9ec3f33d8d","savedPayload":{"position":{"x":24879.914802786585,"y":16832.114597186333},"targetPosition":{"x":24747.632486721843,"y":17453.74856509616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"03816d0f-361f-4c6c-8f85-0bf2dfff1c21","savedPayload":{"position":{"x":24747.339697059087,"y":17453.73229641221},"targetPosition":{"x":24943.912692145273,"y":18059.067094093436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"MACD 081709","code":"{\n\t\"codeName\": \"Module-MACD-081709\",\n \"icon\": \"histogram\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.line","id":"9a6467e7-6106-454b-b7ef-e7d3ef9bf6ff","savedPayload":{"position":{"x":25119.041624000223,"y":17063.529497863005},"targetPosition":{"x":24808.399317565934,"y":17212.697574127873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6d3d1eb7-854c-48c1-9f53-9a81d3d40d6a","savedPayload":{"position":{"x":24808.399317565934,"y":17212.697574127873},"targetPosition":{"x":24536.272950160786,"y":17257.247214405983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.line","id":"0820faf8-ca0c-4188-9af8-ebd57e41dfa3","savedPayload":{"position":{"x":24904.025669511797,"y":17763.470549407844},"targetPosition":{"x":24742.120117765782,"y":17452.330668180166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"075592ad-acd5-4389-ac67-5cc0cb03b92a","savedPayload":{"position":{"x":24742.120117765782,"y":17452.330668180166},"targetPosition":{"x":24536.272950160786,"y":17257.247214405983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Signal Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.signal","id":"eba62e43-3d37-46e0-aa8e-19f394d28745","savedPayload":{"position":{"x":24667.969015371855,"y":17879.64184498322},"targetPosition":{"x":24602.06584206073,"y":17568.54191117335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96975ec0-b8cd-41d9-90b1-4b3a7acdb4c2","savedPayload":{"position":{"x":24602.06584206073,"y":17568.54191117335},"targetPosition":{"x":24536.272950160786,"y":17257.247214405983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Signal End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.signal","id":"48465d15-62ec-4961-9b7c-b0f90cb6b661","savedPayload":{"position":{"x":24236.698709675784,"y":17818.56413270152},"targetPosition":{"x":24386.471677653135,"y":17537.649804438126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d6442860-3c2e-43f4-97b2-d4dfff64c72f","savedPayload":{"position":{"x":24386.471677653135,"y":17537.649804438126},"targetPosition":{"x":24536.272950160786,"y":17257.247214405983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"c83ddb1a-8e52-4163-b80e-3868cf6529a0","savedPayload":{"position":{"x":23945.719892693498,"y":17495.304726338672},"targetPosition":{"x":24240.928088140445,"y":17376.248546895342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2ae7ce7b-794a-454e-8260-1868d6b2909e","savedPayload":{"position":{"x":24240.928088140445,"y":17376.248546895342},"targetPosition":{"x":24536.272950160786,"y":17257.247214405983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"7e353304-2d0b-4718-8cfa-cc6a925ad6a5","savedPayload":{"position":{"x":23930.62965747047,"y":17060.59228910723},"targetPosition":{"x":24233.388509943838,"y":17158.885424235446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6fc15982-383b-4a39-8c6e-5acbf13ac87c","savedPayload":{"position":{"x":24233.388509943838,"y":17158.885424235446},"targetPosition":{"x":24536.272950160786,"y":17257.247214405983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = (record.end - record.begin)/2 + record.begin\ny = 0","id":"06a7bc4a-17b4-4aef-bfa0-c949e5c53484","savedPayload":{"position":{"x":24198.675798261822,"y":16717.55213877392},"targetPosition":{"x":24367.460188715955,"y":16987.336024764783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"00562b76-47c9-49fd-b8f2-902f22484df5","savedPayload":{"position":{"x":24367.460188715955,"y":16987.336024764783},"targetPosition":{"x":24536.272950160786,"y":17257.247214405983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Histogram","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = (record.end - record.begin)/2 + record.begin\ny = record.histogram","id":"65c9be94-3e68-4aba-9b52-e7b8848064ea","savedPayload":{"position":{"x":24624.16961218426,"y":16627.25458501737},"targetPosition":{"x":24580.282926567666,"y":16942.12944333095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f4fe4dc0-d4ab-4812-bd09-96953df3813a","savedPayload":{"position":{"x":24580.282926567666,"y":16942.12944333095},"targetPosition":{"x":24536.272950160786,"y":17257.247214405983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"247d8d0e-3330-4aa0-9e5e-0f3823bd7258","savedPayload":{"position":{"x":24536.272950160786,"y":17257.247214405983},"targetPosition":{"x":25008.75822742258,"y":16832.396270367353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Line Zero","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"a75405f5-da8a-487f-871c-6e2b7e800c42","savedPayload":{"position":{"x":24008.266242489943,"y":16085.85527409094},"targetPosition":{"x":24295.486073367632,"y":16222.848509323261},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"2bb22bfc-5bc6-46bd-b780-4269bd800d69","savedPayload":{"position":{"x":24295.486073367632,"y":16222.848509323261},"targetPosition":{"x":24582.936181993966,"y":16359.684207358194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"0ead2c7c-b1e2-4297-86c4-f1515df7f077","savedPayload":{"position":{"x":24369.787364553977,"y":16123.141018028575},"targetPosition":{"x":24582.936181993966,"y":16359.684207358194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero Begin","id":"2ae7ce7b-794a-454e-8260-1868d6b2909e"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"5da8d9fb-ca1e-429e-87e9-605b2493e037","savedPayload":{"position":{"x":24448.767148650935,"y":16064.110963409734},"targetPosition":{"x":24582.936181993966,"y":16359.684207358194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero End","id":"6fc15982-383b-4a39-8c6e-5acbf13ac87c"}}}],"id":"19fac3f2-d743-4b88-b051-294f37589fe5","savedPayload":{"position":{"x":24582.936181993966,"y":16359.684207358194},"targetPosition":{"x":25008.75822742258,"y":16832.396270367353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Histogram","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 1,\n \"lineWidth\": 3,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"6383ddc1-5bd7-4cd2-83ce-b7ffe7dbabff","savedPayload":{"position":{"x":24548.523712475882,"y":16047.499191084698},"targetPosition":{"x":24762.416868882785,"y":16258.948008057612},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.histogram < 0","style":{"type":"Style","name":"New Style","code":"{\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n}","id":"6ce4860c-7dc9-4fa0-9ac1-e768b669141b","savedPayload":{"position":{"x":24550.251824113024,"y":15658.700555973996},"targetPosition":{"x":24656.40324605566,"y":15958.720116747392},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"038a1be4-9af1-4942-a4db-258ccdbce08c","savedPayload":{"position":{"x":24656.40324605566,"y":15958.720116747392},"targetPosition":{"x":24762.416868882785,"y":16258.948008057612},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7fc825fc-7db0-47dc-bbdb-14d269d1fcb4","savedPayload":{"position":{"x":24762.416868882785,"y":16258.948008057612},"targetPosition":{"x":24942.660361780956,"y":16521.229853012093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"d48a6d8f-eab0-49f1-9b7f-1fc503cd1df9","savedPayload":{"position":{"x":24876.60289610992,"y":16209.791483666688},"targetPosition":{"x":24942.660361780956,"y":16521.229853012093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero","id":"00562b76-47c9-49fd-b8f2-902f22484df5"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"6892eda6-1689-49a2-8145-9ffd38d4bc3d","savedPayload":{"position":{"x":25000.633722695802,"y":16208.222791650285},"targetPosition":{"x":24942.660361780956,"y":16521.229853012093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Histogram","id":"f4fe4dc0-d4ab-4812-bd09-96953df3813a"}}}],"id":"68162ec3-a643-4567-818b-83362fc9e843","savedPayload":{"position":{"x":24942.660361780956,"y":16521.229853012093},"targetPosition":{"x":25008.75822742258,"y":16832.396270367353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"b93e8f5b-41db-44e6-8d00-b1aac544377a","savedPayload":{"position":{"x":25155.5434536357,"y":15592.514616247598},"targetPosition":{"x":25180.35453403237,"y":15909.800142399685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"541af95f-c876-4ba2-aaef-56e43a140ffd","savedPayload":{"position":{"x":25180.35453403237,"y":15909.800142399685},"targetPosition":{"x":25205.348418543617,"y":16227.215167882632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"a2c0de4e-cf82-4b65-a591-a364e6c3f9e8","savedPayload":{"position":{"x":25303.699644057302,"y":15924.361043268591},"targetPosition":{"x":25205.348418543617,"y":16227.215167882632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Line End","id":"075592ad-acd5-4389-ac67-5cc0cb03b92a"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"1c1fd64b-34ee-447c-b0d3-76ca645588c6","savedPayload":{"position":{"x":25412.081090206826,"y":15985.112023213462},"targetPosition":{"x":25205.348418543617,"y":16227.215167882632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Line Begin","id":"6d3d1eb7-854c-48c1-9f53-9a81d3d40d6a"}}}],"id":"9e96b118-c85c-4707-8063-a2651ae44740","savedPayload":{"position":{"x":25205.348418543617,"y":16227.215167882632},"targetPosition":{"x":25008.75822742258,"y":16832.396270367353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Signal","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"c1d9c98e-657c-4895-a557-bd2074056db5","savedPayload":{"position":{"x":25519.65771583407,"y":16045.169430813461},"targetPosition":{"x":25382.318533480822,"y":16332.340313899575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"64c671b3-60a7-4fc0-b7ba-a597fce77d38","savedPayload":{"position":{"x":25382.318533480822,"y":16332.340313899575},"targetPosition":{"x":25245.27199986606,"y":16619.61045433961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"faff0d49-252e-45e3-a42d-fa041b77dd34","savedPayload":{"position":{"x":25481.89743300231,"y":16406.677232391743},"targetPosition":{"x":25245.27199986606,"y":16619.61045433961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Signal End","id":"d6442860-3c2e-43f4-97b2-d4dfff64c72f"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"0469d29c-4fd7-4ab3-a5fc-433cd33e82c8","savedPayload":{"position":{"x":25545.402206818806,"y":16513.60954080295},"targetPosition":{"x":25245.27199986606,"y":16619.61045433961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Signal Begin","id":"96975ec0-b8cd-41d9-90b1-4b3a7acdb4c2"}}}],"id":"d3737a2f-c760-4373-a2ed-bc3c321a87b6","savedPayload":{"position":{"x":25245.27199986606,"y":16619.61045433961},"targetPosition":{"x":25008.75822742258,"y":16832.396270367353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e89f491f-20db-434b-810f-6c93c0096d3f","savedPayload":{"position":{"x":25008.75822742258,"y":16832.396270367353},"targetPosition":{"x":25140.76093918664,"y":17453.93420591615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"MACD 081709","code":"{ \n\"codeName\": \"Panel-MACD-081709\"\n}","panelData":[{"type":"Panel Data","name":"Line","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.line","id":"10eb7ea2-b8dd-4ddd-b200-71d0ecea3c6e","savedPayload":{"position":{"x":25647.191577461177,"y":16393.38827679285},"targetPosition":{"x":25630.075754400612,"y":16711.19909761975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1e07f765-13e9-49f2-8f76-90cb6e4466af","savedPayload":{"position":{"x":25630.075754400612,"y":16711.19909761975},"targetPosition":{"x":25613.195715307866,"y":17028.698887460167},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Signal","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.signal","id":"f2dcbee4-39a8-42aa-8fdd-8e4c3addb6d2","savedPayload":{"position":{"x":26086.250771131254,"y":16603.112381406736},"targetPosition":{"x":25849.700829133173,"y":16815.976985795958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"95d59325-db92-413c-a74a-5a12fea61b82","savedPayload":{"position":{"x":25849.700829133173,"y":16815.976985795958},"targetPosition":{"x":25613.195715307866,"y":17028.698887460167},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Histogram","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.histogram","id":"387de792-7d66-46a8-b11d-a96403f09dfe","savedPayload":{"position":{"x":26248.871147482758,"y":17061.822058673053},"targetPosition":{"x":25931.077509659943,"y":17045.303692579942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9d00b3d7-779a-452f-b800-6d2949df7a03","savedPayload":{"position":{"x":25931.077509659943,"y":17045.303692579942},"targetPosition":{"x":25613.195715307866,"y":17028.698887460167},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a858c3e2-ad02-4ee4-aea3-fd60ab8fe9d7","savedPayload":{"position":{"x":25613.195715307866,"y":17028.698887460167},"targetPosition":{"x":25140.76093918664,"y":17453.93420591615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"43695164-d8aa-40d8-bbf4-ee8cbbdec3f0","savedPayload":{"position":{"x":25140.487672165717,"y":17453.731940476766},"targetPosition":{"x":24943.912692145273,"y":18059.067094093436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"MACD 245209","code":"{\n\t\"codeName\": \"Module-MACD-245209\",\n \"icon\": \"histogram\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.line","id":"48f415e0-0abb-4867-a7d7-454bc5450e6b","savedPayload":{"position":{"x":25684.801825902396,"y":17428.417945036603},"targetPosition":{"x":25345.2122150209,"y":17336.420743004335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"36adae0b-9c21-40b9-abfb-e511d72f2b5d","savedPayload":{"position":{"x":25345.2122150209,"y":17336.420743004335},"targetPosition":{"x":25085.287640200546,"y":17171.226154617834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.line","id":"1e3e4460-9762-470f-9cbc-0efd86f722da","savedPayload":{"position":{"x":25152.83601821847,"y":17834.64605675286},"targetPosition":{"x":25173.36327159879,"y":17476.244634161594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6f0173db-8cbd-4530-a30d-ebe66906c578","savedPayload":{"position":{"x":25173.36327159879,"y":17476.244634161594},"targetPosition":{"x":25085.287640200546,"y":17171.226154617834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Signal Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.signal","id":"8f397084-7cae-4586-b410-c5970593562e","savedPayload":{"position":{"x":24826.099316254735,"y":17752.111232786658},"targetPosition":{"x":24955.583697407037,"y":17461.7376556689},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0cc9c494-c307-4bfe-9baf-8ed796fb602d","savedPayload":{"position":{"x":24955.583697407037,"y":17461.7376556689},"targetPosition":{"x":25085.287640200546,"y":17171.226154617834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Signal End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.signal","id":"dd38ae56-a770-4332-899e-6f8239fa815b","savedPayload":{"position":{"x":24512.792874906492,"y":17448.795582842686},"targetPosition":{"x":24799.14375968755,"y":17309.83127833787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cd80c183-d19f-48a6-b7fc-a69b1b794b2a","savedPayload":{"position":{"x":24799.14375968755,"y":17309.83127833787},"targetPosition":{"x":25085.287640200546,"y":17171.226154617834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"4939828f-043d-4764-be8b-eafcd061b524","savedPayload":{"position":{"x":24467.365997585126,"y":17016.655081011126},"targetPosition":{"x":24776.29540519904,"y":17093.851012267973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"957cc3a3-ac48-4a0e-b7b3-b0ad7f529cf4","savedPayload":{"position":{"x":24776.29540519904,"y":17093.851012267973},"targetPosition":{"x":25085.287640200546,"y":17171.226154617834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"eb1dcee7-230c-4970-9326-0359d3e67857","savedPayload":{"position":{"x":24710.951881944507,"y":16655.933271323975},"targetPosition":{"x":24898.08598652813,"y":16913.48789228086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"749f8342-4448-48d8-b663-9840ad6295c2","savedPayload":{"position":{"x":24898.08598652813,"y":16913.48789228086},"targetPosition":{"x":25085.287640200546,"y":17171.226154617834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = (record.end - record.begin)/2 + record.begin\ny = 0","id":"7de51d6d-a086-4c6f-b801-5f13b37c9feb","savedPayload":{"position":{"x":25129.02189880999,"y":16535.99444974009},"targetPosition":{"x":25107.18157542419,"y":16853.52467308094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2d60df1-8bd2-4371-9ce1-60a328cc80d3","savedPayload":{"position":{"x":25107.18157542419,"y":16853.52467308094},"targetPosition":{"x":25085.287640200546,"y":17171.226154617834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Histogram","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = (record.end - record.begin)/2 + record.begin\ny = record.histogram","id":"b8f5d987-aa7a-415e-ac1e-e36a3afa7db1","savedPayload":{"position":{"x":25526.575828653036,"y":16713.28613369214},"targetPosition":{"x":25306.078801794614,"y":16942.17027934168},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4292d954-54aa-45e3-acb4-a52622471108","savedPayload":{"position":{"x":25306.078801794614,"y":16942.17027934168},"targetPosition":{"x":25085.287640200546,"y":17171.226154617834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fd10b89d-abb6-4a47-b82b-1efc5196c46b","savedPayload":{"position":{"x":25085.287640200546,"y":17171.226154617834},"targetPosition":{"x":25717.032396589202,"y":17105.374665612955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Line Zero","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"c93101ad-3f34-469d-8141-6bbb810cf79c","savedPayload":{"position":{"x":25346.552547636566,"y":15913.341071097151},"targetPosition":{"x":25498.29417607375,"y":16193.038520386455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"c4c38f4b-d3a5-4a1c-8862-ebd87269fe24","savedPayload":{"position":{"x":25498.29417607375,"y":16193.038520386455},"targetPosition":{"x":25650.42488123931,"y":16472.74010665937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"0c3f9cb5-0866-4694-97e4-c195f216059e","savedPayload":{"position":{"x":25617.058822144765,"y":16155.976875287444},"targetPosition":{"x":25650.42488123931,"y":16472.74010665937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero Begin","id":"957cc3a3-ac48-4a0e-b7b3-b0ad7f529cf4"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"a6fba16b-f5a7-4c45-8348-28bb07430bad","savedPayload":{"position":{"x":25715.45964959391,"y":16154.535010252008},"targetPosition":{"x":25650.42488123931,"y":16472.74010665937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero End","id":"749f8342-4448-48d8-b663-9840ad6295c2"}}}],"id":"579cce76-9e03-43a3-b252-9d62ba988ed3","savedPayload":{"position":{"x":25650.42488123931,"y":16472.74010665937},"targetPosition":{"x":25717.032396589202,"y":17105.374665612955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Histogram","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 1,\n \"lineWidth\": 3,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"83f50f64-2a7f-49b1-9649-dd23f86374b1","savedPayload":{"position":{"x":25805.833603771276,"y":16199.86825441083},"targetPosition":{"x":25854.404017866436,"y":16496.6197113839},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.histogram < 0","style":{"type":"Style","name":"New Style","code":"{\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n}","id":"de351dae-2678-4a8a-a5cc-e2a42418f558","savedPayload":{"position":{"x":26035.34301327514,"y":15886.181060155126},"targetPosition":{"x":25945.033733681623,"y":16191.34353907546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6d9e5ad0-dd68-4192-ad7f-9986f34050af","savedPayload":{"position":{"x":25945.033733681623,"y":16191.34353907546},"targetPosition":{"x":25854.404017866436,"y":16496.6197113839},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0c056547-f273-4157-8c55-ca13da5adeb5","savedPayload":{"position":{"x":25854.404017866436,"y":16496.6197113839},"targetPosition":{"x":25846.24646641608,"y":16814.796648558982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"02e0cf18-f0d8-4c59-ae6a-37a1e516b67a","savedPayload":{"position":{"x":25975.738388576436,"y":16523.92754809901},"targetPosition":{"x":25846.24646641608,"y":16814.796648558982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero","id":"d2d60df1-8bd2-4371-9ce1-60a328cc80d3"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"e4c545cd-400d-4616-bf3a-f24a1fd24794","savedPayload":{"position":{"x":26077.167135463376,"y":16595.704647668124},"targetPosition":{"x":25846.24646641608,"y":16814.796648558982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Histogram","id":"4292d954-54aa-45e3-acb4-a52622471108"}}}],"id":"83a0d615-06f0-4daf-a684-211e42345717","savedPayload":{"position":{"x":25846.24646641608,"y":16814.796648558982},"targetPosition":{"x":25717.032396589202,"y":17105.374665612955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"cd8d0c68-f06e-43be-9c1c-d4d2b79fc680","savedPayload":{"position":{"x":26564.20212611699,"y":16188.576851897476},"targetPosition":{"x":26397.915027843595,"y":16459.881236078152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"dec1dd79-8e14-4104-86e1-ab9b5919055c","savedPayload":{"position":{"x":26397.915027843595,"y":16459.881236078152},"targetPosition":{"x":26231.730636760043,"y":16731.47288483843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"8a24dd4a-0202-40ea-95d6-127abe4893bf","savedPayload":{"position":{"x":26489.383838116457,"y":16544.304301936067},"targetPosition":{"x":26231.730636760043,"y":16731.47288483843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Line End","id":"6f0173db-8cbd-4530-a30d-ebe66906c578"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"11bd728e-9c76-4cd3-97e5-27965f60bd9d","savedPayload":{"position":{"x":26541.352645123723,"y":16657.181588468266},"targetPosition":{"x":26231.730636760043,"y":16731.47288483843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Line Begin","id":"36adae0b-9c21-40b9-abfb-e511d72f2b5d"}}}],"id":"c5dff6f5-ceea-4cf7-8d51-3f2bd9423d10","savedPayload":{"position":{"x":26231.730636760043,"y":16731.47288483843},"targetPosition":{"x":25717.032396589202,"y":17105.374665612955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Signal","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"263c0cb6-735f-48ae-a2fc-9835403317dc","savedPayload":{"position":{"x":26593.1914111899,"y":16769.184123899646},"targetPosition":{"x":26313.17180946761,"y":16920.612869342858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"630155a8-17d7-414a-801b-933cff540e61","savedPayload":{"position":{"x":26313.17180946761,"y":16920.612869342858},"targetPosition":{"x":26033.412775945708,"y":17072.389813729395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"9d1ae188-aa8e-4c73-a417-31c3968a9e6f","savedPayload":{"position":{"x":26350.04183417625,"y":17039.282637722314},"targetPosition":{"x":26033.412775945708,"y":17072.389813729395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Signal End","id":"cd80c183-d19f-48a6-b7fc-a69b1b794b2a"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"9ef44a8e-4e95-4e21-a7f7-0950844c58f3","savedPayload":{"position":{"x":26338.518998294105,"y":17162.912870230102},"targetPosition":{"x":26033.412775945708,"y":17072.389813729395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Signal Begin","id":"0cc9c494-c307-4bfe-9baf-8ed796fb602d"}}}],"id":"1c32305b-ed73-433e-af91-5c221e1c8254","savedPayload":{"position":{"x":26033.412775945708,"y":17072.389813729395},"targetPosition":{"x":25717.032396589202,"y":17105.374665612955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b1a0e87f-af0a-4354-a9a3-74ee5a667593","savedPayload":{"position":{"x":25717.032396589202,"y":17105.374665612955},"targetPosition":{"x":25458.851730724167,"y":17685.41911607298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"MACD 245209","code":"{ \n\"codeName\": \"Panel-MACD-245209\"\n}","panelData":[{"type":"Panel Data","name":"Line","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.line","id":"7449cbcf-82e3-44a9-b623-8ce89d3d0a90","savedPayload":{"position":{"x":26491.704555124878,"y":17125.811756215906},"targetPosition":{"x":26290.8954807154,"y":17372.650701506875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"03f0b78f-d66e-43d9-93fb-28ec2a0c78ad","savedPayload":{"position":{"x":26290.8954807154,"y":17372.650701506875},"targetPosition":{"x":26090.54831957588,"y":17619.41077725751},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Signal","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.signal","id":"d32b0179-d71f-4cc4-a53e-f65d850da700","savedPayload":{"position":{"x":26723.585979854328,"y":17553.430888636405},"targetPosition":{"x":26407.071208260655,"y":17586.464010313204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"22cd37eb-620d-4fc6-ba86-e09d58614393","savedPayload":{"position":{"x":26407.071208260655,"y":17586.464010313204},"targetPosition":{"x":26090.54831957588,"y":17619.41077725751},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Histogram","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.histogram","id":"bddd9afa-785d-4791-8d87-e2c984a74f12","savedPayload":{"position":{"x":26585.09451752734,"y":18019.80089590866},"targetPosition":{"x":26337.812846255274,"y":17819.663792513435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bfa738fb-7d49-4539-97be-707922adde3e","savedPayload":{"position":{"x":26337.812846255274,"y":17819.663792513435},"targetPosition":{"x":26090.54831957588,"y":17619.41077725751},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e864cbe9-0b24-45c0-b08b-85c2486bef8d","savedPayload":{"position":{"x":26090.54831957588,"y":17619.41077725751},"targetPosition":{"x":25458.851730724167,"y":17685.41911607298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2fe60a0e-dd3a-4bb8-a321-4742389ab930","savedPayload":{"position":{"x":25458.71963431256,"y":17684.98270698358},"targetPosition":{"x":24943.912692145273,"y":18059.067094093436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"24146ce7-bc0d-461a-8a43-0d2bd3059886","savedPayload":{"position":{"x":24943.912692145273,"y":18059.067094093436},"targetPosition":{"x":24943.90880679387,"y":18695.646004599515},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"EMA","code":"{\n\"codeName\": \"Plotter EMA\"\n}","modules":[{"type":"Plotter Module","name":"EMA Popular","code":"{\n\t\"codeName\": \"EMA-Popular\",\n \"icon\": \"moving-average\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"EMA 20 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema20","id":"7bf83ec0-5a84-4a81-a111-19d913e12135","savedPayload":{"position":{"x":25154.678541370868,"y":17379.45866201631},"targetPosition":{"x":24990.49565473094,"y":17439.000014376532},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6e1ff74e-36ba-460c-9f78-c8ee0b5e0837","savedPayload":{"position":{"x":24990.49565473094,"y":17439.000014376532},"targetPosition":{"x":24748.48871315241,"y":17512.014449871207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 20 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema20","id":"12164218-7531-4063-bbd3-32855e7f7847","savedPayload":{"position":{"x":25166.52686963662,"y":17664.04571573554},"targetPosition":{"x":25001.884313061903,"y":17604.070452531065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"83f1d130-42bd-45ae-9078-ed3f825531bb","savedPayload":{"position":{"x":25001.884313061903,"y":17604.070452531065},"targetPosition":{"x":24748.48871315241,"y":17512.014449871207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 50 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema50","id":"580ad5c4-aee7-4af2-b85d-0ef86d020823","savedPayload":{"position":{"x":24970.201299756875,"y":17896.264888926104},"targetPosition":{"x":24883.03378087158,"y":17745.42755340487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7084c0a2-8874-46a7-b240-d9605a7baf49","savedPayload":{"position":{"x":24883.03378087158,"y":17745.42755340487},"targetPosition":{"x":24748.48871315241,"y":17512.014449871207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 50 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema50","id":"1e7a4d05-3daf-4d0a-97ff-b53e35eab2aa","savedPayload":{"position":{"x":24671.327682655086,"y":17948.112354889054},"targetPosition":{"x":24701.783390594526,"y":17776.319654194715},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3861b379-3e51-43e2-b607-e3b7fba16a34","savedPayload":{"position":{"x":24701.783390594526,"y":17776.319654194715},"targetPosition":{"x":24748.48871315241,"y":17512.014449871207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 100 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema100","id":"b50c3599-e7bd-45ef-b348-4ddf85460bbf","savedPayload":{"position":{"x":24409.15007323385,"y":17796.787654747077},"targetPosition":{"x":24543.390491403683,"y":17684.104129281615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d3b1e9cb-8098-4e62-94ea-4e89852b4f6a","savedPayload":{"position":{"x":24543.390491403683,"y":17684.104129281615},"targetPosition":{"x":24748.48871315241,"y":17512.014449871207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 100 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema100","id":"f5cf8bb1-98bf-4c38-9e7c-f31678a656e4","savedPayload":{"position":{"x":24305.298148162754,"y":17511.988349303898},"targetPosition":{"x":24480.425374037422,"y":17511.994225535782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"32ca337a-699d-4c2f-9b6a-73d9a4481e78","savedPayload":{"position":{"x":24480.425374037422,"y":17511.994225535782},"targetPosition":{"x":24748.48871315241,"y":17512.014449871207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 200 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema200","id":"451d4c20-a9ad-4b8d-a116-fae9406ee356","savedPayload":{"position":{"x":24408.89830449089,"y":17227.411250942867},"targetPosition":{"x":24542.626059587135,"y":17339.40125152295},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"33d1fe7c-ff86-440a-8b42-0de9c296a632","savedPayload":{"position":{"x":24542.626059587135,"y":17339.40125152295},"targetPosition":{"x":24748.48871315241,"y":17512.014449871207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 200 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema200","id":"24e42cf3-2dc8-4257-a511-7dc52dc6f060","savedPayload":{"position":{"x":24671.27471712063,"y":17074.73295233284},"targetPosition":{"x":24701.798192562488,"y":17247.328114429733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"87e2a3ab-afc2-44cb-b2ca-03a715a4d673","savedPayload":{"position":{"x":24701.798192562488,"y":17247.328114429733},"targetPosition":{"x":24748.48871315241,"y":17512.014449871207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dd70bea3-9a52-4b2b-a364-31917b08d98d","savedPayload":{"position":{"x":24748.19453852925,"y":17512.242226482078},"targetPosition":{"x":25096.614642942586,"y":16909.206508337247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"SMA 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"d468c2f1-2586-4fe4-aa0c-fc3737d992f5","savedPayload":{"position":{"x":24442.962487780263,"y":16705.639959792858},"targetPosition":{"x":24616.163253841878,"y":16728.254438139375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"23236076-e29a-451e-8c95-e3812064279c","savedPayload":{"position":{"x":24616.163253841878,"y":16728.254438139375},"targetPosition":{"x":24794.60954434505,"y":16735.376577051862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"5f877b66-2ca6-4a8f-967e-70948cefc9ea","savedPayload":{"position":{"x":24630.829707345605,"y":16648.58159445387},"targetPosition":{"x":24794.60954434505,"y":16735.376577051862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 20 Begin","id":"6e1ff74e-36ba-460c-9f78-c8ee0b5e0837"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"d5971215-2792-4415-bfea-2e4b2b5b98fe","savedPayload":{"position":{"x":24705.662751349646,"y":16581.25931640407},"targetPosition":{"x":24794.60954434505,"y":16735.376577051862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 20 End","id":"83f1d130-42bd-45ae-9078-ed3f825531bb"}}}],"id":"17ca2f43-9ddf-47f8-9929-e4612b00dd4f","savedPayload":{"position":{"x":24794.60954434505,"y":16735.376577051862},"targetPosition":{"x":25096.614642942586,"y":16909.206508337247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 50","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"330fba24-ff59-48d2-a297-b4e6903efc3d","savedPayload":{"position":{"x":24632.835745101267,"y":16405.037564713235},"targetPosition":{"x":24771.397517603637,"y":16511.679753541808},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"0806f6fe-730c-4fde-b730-dcdf31825733","savedPayload":{"position":{"x":24771.397517603637,"y":16511.679753541808},"targetPosition":{"x":24922.370226305407,"y":16607.41850689492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"b00cf575-af36-4653-97ec-441912af5bb8","savedPayload":{"position":{"x":24824.00759361326,"y":16449.559949983843},"targetPosition":{"x":24922.370226305407,"y":16607.41850689492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 50 End","id":"3861b379-3e51-43e2-b607-e3b7fba16a34"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"da71a6f7-2917-4c07-bd77-dc1b0334c5ec","savedPayload":{"position":{"x":24922.85319410102,"y":16429.3616930136},"targetPosition":{"x":24922.370226305407,"y":16607.41850689492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 50 Begin","id":"7084c0a2-8874-46a7-b240-d9605a7baf49"}}}],"id":"36482493-d7f7-4a41-9588-a348e3204025","savedPayload":{"position":{"x":24922.370226305407,"y":16607.41850689492},"targetPosition":{"x":25096.614642942586,"y":16909.206508337247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 100","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"278d84a3-2d10-4db3-90cc-b38f6af88ecf","savedPayload":{"position":{"x":24947.159712957782,"y":16240.301177384767},"targetPosition":{"x":25013.828735197174,"y":16402.054570274533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"612138e2-6896-4f8f-956a-d5bf1b8c043a","savedPayload":{"position":{"x":25013.828735197174,"y":16402.054570274533},"targetPosition":{"x":25096.68210979724,"y":16560.63571812577},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"fc01c5ca-4323-4a71-9d83-1f288b80e8ed","savedPayload":{"position":{"x":25090.53760641432,"y":16374.621585816092},"targetPosition":{"x":25096.68210979724,"y":16560.63571812577},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 100 Begin","id":"d3b1e9cb-8098-4e62-94ea-4e89852b4f6a"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"fbd76a9e-5a2e-4cb8-a2ed-35d2616d9a2e","savedPayload":{"position":{"x":25186.21851819141,"y":16406.768967720902},"targetPosition":{"x":25096.68210979724,"y":16560.63571812577},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 100 End","id":"32ca337a-699d-4c2f-9b6a-73d9a4481e78"}}}],"id":"37a16b86-6ee7-4dfa-b32a-c8b9bcb9b484","savedPayload":{"position":{"x":25096.68210979724,"y":16560.63571812577},"targetPosition":{"x":25096.614642942586,"y":16909.206508337247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 200","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"b170fc33-32c4-452d-919d-cf2df82c224f","savedPayload":{"position":{"x":25301.950559175013,"y":16255.361935912937},"targetPosition":{"x":25278.918335744977,"y":16428.817701265394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"ad1ad1fa-9fe8-4a56-aade-dcade3d90c38","savedPayload":{"position":{"x":25278.918335744977,"y":16428.817701265394},"targetPosition":{"x":25271.29161569478,"y":16607.50946880628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"a98d63cf-bb2b-43f0-80cd-680c59ef741a","savedPayload":{"position":{"x":25359.04336294463,"y":16443.53459839834},"targetPosition":{"x":25271.29161569478,"y":16607.50946880628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 200 End","id":"87e2a3ab-afc2-44cb-b2ca-03a715a4d673"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"c9ce7524-76dd-4399-92d8-58d1d757ed89","savedPayload":{"position":{"x":25426.080284802305,"y":16519.36123381927},"targetPosition":{"x":25271.29161569478,"y":16607.50946880628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 200 Begin","id":"33d1fe7c-ff86-440a-8b42-0de9c296a632"}}}],"id":"2e225665-d05d-46cd-91d0-4b36803bcf67","savedPayload":{"position":{"x":25271.29161569478,"y":16607.50946880628},"targetPosition":{"x":25096.614642942586,"y":16909.206508337247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5ea59fb9-f0d6-438b-b1a7-a62ed1750004","savedPayload":{"position":{"x":25096.614642942586,"y":16909.206508337247},"targetPosition":{"x":25444.647236335983,"y":17511.937166455627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"EMA Popular","code":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"EMA 20","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema20","id":"c79a60a8-e960-4a7d-86b0-bb8d65272b30","savedPayload":{"position":{"x":25276.00883855253,"y":17114.60618656824},"targetPosition":{"x":25446.467460295415,"y":17150.617579325164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"80fa0565-6440-406f-a49d-57adcdaf20ae","savedPayload":{"position":{"x":25446.467460295415,"y":17150.617579325164},"targetPosition":{"x":25626.67013168127,"y":17197.262522435325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 50","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema50","id":"ad4b2bc1-bc45-4a8f-b07f-aa0f79f5e884","savedPayload":{"position":{"x":25591.387967278057,"y":16850.01679999431},"targetPosition":{"x":25609.242077771396,"y":17023.35155562219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f43975ff-c552-42b8-a504-d2b6a3a46b18","savedPayload":{"position":{"x":25609.242077771396,"y":17023.35155562219},"targetPosition":{"x":25626.67013168127,"y":17197.262522435325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 100","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema100","id":"2bfe0bed-a18d-452e-a59a-9ddbd135dd0a","savedPayload":{"position":{"x":25945.976402025473,"y":17055.26063591912},"targetPosition":{"x":25786.48105042881,"y":17125.98100189676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9507a099-6a7f-4d00-8b6e-623a7003055c","savedPayload":{"position":{"x":25786.48105042881,"y":17125.98100189676},"targetPosition":{"x":25626.67013168127,"y":17197.262522435325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 200","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema200","id":"ee01f76f-2b56-4d87-a278-4dd98436dca7","savedPayload":{"position":{"x":25871.552064066185,"y":17449.184998621688},"targetPosition":{"x":25754.323793703144,"y":17319.82253148905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5bf57692-7070-4a12-9bc3-487a841125b0","savedPayload":{"position":{"x":25754.323793703144,"y":17319.82253148905},"targetPosition":{"x":25626.67013168127,"y":17197.262522435325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a819c354-b152-4946-a403-62a8cf0f650f","savedPayload":{"position":{"x":25626.67013168127,"y":17197.262522435325},"targetPosition":{"x":25444.647236335983,"y":17511.937166455627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"79bf7438-f77a-4c8d-a450-67027d5fd8bc","savedPayload":{"position":{"x":25444.13409889249,"y":17510.782749078884},"targetPosition":{"x":25444.642453615023,"y":18208.940416616326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"EMA Base 11","code":"{\n\t\"codeName\": \"EMA-Base11\",\n \"icon\": \"moving-average\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"EMA 11 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema11","id":"41b049dc-e0da-471f-82f7-5f2c1eb61f90","savedPayload":{"position":{"x":25829.149202189943,"y":17363.736931557},"targetPosition":{"x":25654.373604075183,"y":17335.56767110074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c961312c-6bb2-4b38-a142-9f03d0b3eba4","savedPayload":{"position":{"x":25654.373604075183,"y":17335.56767110074},"targetPosition":{"x":25479.598005960423,"y":17307.39841064448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 11 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema11","id":"55db8355-8155-4c70-85b5-4a629aeefa45","savedPayload":{"position":{"x":25743.200280693494,"y":17543.77503486873},"targetPosition":{"x":25611.39914332696,"y":17425.586722756605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"750547e8-4963-4008-aa2b-8edc565afd79","savedPayload":{"position":{"x":25611.39914332696,"y":17425.586722756605},"targetPosition":{"x":25479.598005960423,"y":17307.39841064448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 22 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema22","id":"bda3c179-331d-444e-9b1e-e3cfd1a26bb7","savedPayload":{"position":{"x":25573.559499493957,"y":17648.765230146684},"targetPosition":{"x":25526.57875272719,"y":17478.081820395582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8ac0329a-2d0d-483f-a047-305198817a24","savedPayload":{"position":{"x":25526.57875272719,"y":17478.081820395582},"targetPosition":{"x":25479.598005960423,"y":17307.39841064448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 22 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema22","id":"08508d15-658f-40da-a580-76a5b512414d","savedPayload":{"position":{"x":25374.086607997717,"y":17645.37387221537},"targetPosition":{"x":25426.84230697907,"y":17476.386141429924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"adc1fb05-93dd-4a32-98dd-30577e4a68de","savedPayload":{"position":{"x":25426.84230697907,"y":17476.386141429924},"targetPosition":{"x":25479.598005960423,"y":17307.39841064448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 33 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema33","id":"bceee9f7-3824-498c-beb1-866463df7a7e","savedPayload":{"position":{"x":25208.112839846723,"y":17534.677693255802},"targetPosition":{"x":25343.855422903573,"y":17421.03805195014},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"25fd3a99-95c4-4514-b7f3-d195c9ee3189","savedPayload":{"position":{"x":25343.855422903573,"y":17421.03805195014},"targetPosition":{"x":25479.598005960423,"y":17307.39841064448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 33 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema33","id":"6c2cc6ab-b520-4d47-8165-db2abfd53ed8","savedPayload":{"position":{"x":25128.333693714307,"y":17351.82194794581},"targetPosition":{"x":25303.965849837365,"y":17329.610179295145},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0fe0c9b1-3079-499b-ad49-1b13e1e0af82","savedPayload":{"position":{"x":25303.965849837365,"y":17329.610179295145},"targetPosition":{"x":25479.598005960423,"y":17307.39841064448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 55 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema55","id":"5df6eee6-f3a0-406f-be6c-2e6bce745054","savedPayload":{"position":{"x":25160.078484805,"y":17154.86204342436},"targetPosition":{"x":25319.83824538271,"y":17231.13022703442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"27b05f8b-84e9-4ab2-944d-46b10c2a978c","savedPayload":{"position":{"x":25319.83824538271,"y":17231.13022703442},"targetPosition":{"x":25479.598005960423,"y":17307.39841064448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 55 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema55","id":"508f7fdf-3889-4b3f-bec4-9ee071f7aa21","savedPayload":{"position":{"x":25293.26846624549,"y":17006.33135772483},"targetPosition":{"x":25386.433236102956,"y":17156.864884184655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1eeef11e-809a-4e49-8b3b-48a955f42ce3","savedPayload":{"position":{"x":25386.433236102956,"y":17156.864884184655},"targetPosition":{"x":25479.598005960423,"y":17307.39841064448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 111 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema111","id":"b9f04b17-af03-4983-8266-0e63f8f3271c","savedPayload":{"position":{"x":25485.61676000385,"y":16953.387334089148},"targetPosition":{"x":25482.607382982136,"y":17130.392872366814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cb15539c-b3a0-4641-9417-861c48bd62ac","savedPayload":{"position":{"x":25482.607382982136,"y":17130.392872366814},"targetPosition":{"x":25479.598005960423,"y":17307.39841064448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 11 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema111","id":"abc69976-c994-40d1-a923-fd64ded26938","savedPayload":{"position":{"x":25676.054141879915,"y":17012.83932593704},"targetPosition":{"x":25577.82607392017,"y":17160.11886829076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"afa38489-5525-4f32-b766-cfe85d683a65","savedPayload":{"position":{"x":25577.82607392017,"y":17160.11886829076},"targetPosition":{"x":25479.598005960423,"y":17307.39841064448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"573429d9-05d9-41ea-9fac-5eaf95fcc06c","savedPayload":{"position":{"x":25479.598005960423,"y":17307.39841064448},"targetPosition":{"x":26128.638171428094,"y":17024.22508120454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"SMA 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"02c6627c-956c-4022-a3f9-a132627d02d8","savedPayload":{"position":{"x":25335.46988050154,"y":15883.915732747875},"targetPosition":{"x":25590.467361244846,"y":16129.550324242371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"48f091c0-5895-4615-a56d-f779d35b60c6","savedPayload":{"position":{"x":25590.467361244846,"y":16129.550324242371},"targetPosition":{"x":25845.464841988152,"y":16375.184915736867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"1143164d-0f70-46f0-80fe-6107db66ce29","savedPayload":{"position":{"x":25503.327181303423,"y":16466.860425617615},"targetPosition":{"x":25845.464841988152,"y":16375.184915736867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 11 End","id":"750547e8-4963-4008-aa2b-8edc565afd79"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"31fd051d-973f-4d8c-b9d3-ac1c13621ab0","savedPayload":{"position":{"x":25486.85599330981,"y":16279.09596433485},"targetPosition":{"x":25845.464841988152,"y":16375.184915736867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 11 Begin","id":"c961312c-6bb2-4b38-a142-9f03d0b3eba4"}}}],"id":"01f54960-957d-490a-91c7-cfd01f2bf806","savedPayload":{"position":{"x":25845.464841988152,"y":16375.184915736867},"targetPosition":{"x":26128.638171428094,"y":17024.22508120454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"76712d22-b3a8-490e-a964-b1f51641d472","savedPayload":{"position":{"x":25908.779918154978,"y":15652.699034650295},"targetPosition":{"x":26031.947854684,"y":15984.647414877229},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"61487dfb-c30e-41b5-b3bb-a52bbe476c22","savedPayload":{"position":{"x":26031.947854684,"y":15984.647414877229},"targetPosition":{"x":26155.115791213022,"y":16316.595795104162},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"bd3f3676-7a98-43ca-b661-395e53cc2d9c","savedPayload":{"position":{"x":25833.260809715226,"y":16402.83657747643},"targetPosition":{"x":26155.115791213022,"y":16316.595795104162},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 22 End","id":"adc1fb05-93dd-4a32-98dd-30577e4a68de"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"6a2c8c60-7c69-4372-bc67-b5bac89eb8a5","savedPayload":{"position":{"x":25787.314370420434,"y":16218.043701427769},"targetPosition":{"x":26155.115791213022,"y":16316.595795104162},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 22 Begin","id":"8ac0329a-2d0d-483f-a047-305198817a24"}}}],"id":"c9043797-16f8-4dc7-85c0-bd9d995dcec1","savedPayload":{"position":{"x":26155.115791213022,"y":16316.595795104162},"targetPosition":{"x":26128.638171428094,"y":17024.22508120454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"9ee24b06-2b0b-472a-9272-23f52d3ddc05","savedPayload":{"position":{"x":26525.635579253692,"y":15693.129890735887},"targetPosition":{"x":26492.579051183242,"y":16045.645611911594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"12acb041-6cf9-4cab-bc99-7d3413860838","savedPayload":{"position":{"x":26492.579051183242,"y":16045.645611911594},"targetPosition":{"x":26459.52252311279,"y":16398.1613330873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"e5ec4acb-cef0-48cc-8eb4-432547dc0541","savedPayload":{"position":{"x":26123.045923924932,"y":16488.31996611166},"targetPosition":{"x":26459.52252311279,"y":16398.1613330873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 33 End","id":"0fe0c9b1-3079-499b-ad49-1b13e1e0af82"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"46dfb895-487c-4a14-a8f4-e39f77a98f34","savedPayload":{"position":{"x":26125.96347471019,"y":16308.78445543973},"targetPosition":{"x":26459.52252311279,"y":16398.1613330873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 33 Begin","id":"25fd3a99-95c4-4514-b7f3-d195c9ee3189"}}}],"id":"d6e73bfe-e6af-4fff-b482-df4889701cf7","savedPayload":{"position":{"x":26459.52252311279,"y":16398.1613330873},"targetPosition":{"x":26128.638171428094,"y":17024.22508120454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"cb42e26b-ace9-47f5-a272-15645af64e39","savedPayload":{"position":{"x":27063.861034878853,"y":15997.200474104993},"targetPosition":{"x":26881.127293004996,"y":16300.463474329023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"cd8235f2-8641-4f92-9029-d30375e43f1f","savedPayload":{"position":{"x":26881.127293004996,"y":16300.463474329023},"targetPosition":{"x":26698.39355113114,"y":16603.726474553052},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"fff3b40f-45a5-424f-bbe3-b62c4811423d","savedPayload":{"position":{"x":26349.346871088183,"y":16697.253250591326},"targetPosition":{"x":26698.39355113114,"y":16603.726474553052},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 55 End","id":"1eeef11e-809a-4e49-8b3b-48a955f42ce3"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"e644af79-d267-4c8b-bebd-2d919eb5efd9","savedPayload":{"position":{"x":26360.05642116467,"y":16513.069313809072},"targetPosition":{"x":26698.39355113114,"y":16603.726474553052},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 55 Begin","id":"27b05f8b-84e9-4ab2-944d-46b10c2a978c"}}}],"id":"001084ac-f732-465a-aea1-bb8c63770971","savedPayload":{"position":{"x":26698.39355113114,"y":16603.726474553052},"targetPosition":{"x":26128.638171428094,"y":17024.22508120454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"5d5e3413-6b2a-49e0-8b7e-14441b448203","savedPayload":{"position":{"x":27416.854132641874,"y":16504.68587654038},"targetPosition":{"x":27120.635835625002,"y":16698.631199341744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"d1c5bddf-9fc3-47b8-b026-a0fd18fc7efd","savedPayload":{"position":{"x":27120.635835625002,"y":16698.631199341744},"targetPosition":{"x":26824.41753860813,"y":16892.576522143107},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"2aed0f5f-77bd-4297-a131-77c0c08914d5","savedPayload":{"position":{"x":26521.76897848745,"y":17067.310749798635},"targetPosition":{"x":26824.41753860813,"y":16892.576522143107},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 11 End","id":"afa38489-5525-4f32-b766-cfe85d683a65"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"dff4ca7d-4499-4a8a-834b-7315e9e784e4","savedPayload":{"position":{"x":26475.10590769033,"y":16798.978752731884},"targetPosition":{"x":26824.41753860813,"y":16892.576522143107},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 111 Begin","id":"cb15539c-b3a0-4641-9417-861c48bd62ac"}}}],"id":"47ab5422-37ad-4070-a2eb-248bbe9b007f","savedPayload":{"position":{"x":26824.41753860813,"y":16892.576522143107},"targetPosition":{"x":26128.638171428094,"y":17024.22508120454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"951aba38-5a6a-43df-8f70-f311d621c98d","savedPayload":{"position":{"x":26128.638171428094,"y":17024.22508120454},"targetPosition":{"x":25945.362071213734,"y":17708.22079901761},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"EMA 11","code":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"EMA 11","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema11","id":"ee21f97e-daa4-45b8-bebd-5c53d872534b","savedPayload":{"position":{"x":26037.00012132091,"y":17366.22294011107},"targetPosition":{"x":26162.18002572059,"y":17491.40284451075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a96b4bae-0ce3-4dc6-88df-af120452af6b","savedPayload":{"position":{"x":26162.18002572059,"y":17491.40284451075},"targetPosition":{"x":26287.35993012027,"y":17616.58274891043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 22","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema22","id":"583909a2-6932-4bfa-952d-a0c81123cc3f","savedPayload":{"position":{"x":26378.997980227447,"y":17274.584890003895},"targetPosition":{"x":26333.17895517386,"y":17445.583819457162},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2a2f4d65-a013-4c73-b851-1c9ac3dceb9f","savedPayload":{"position":{"x":26333.17895517386,"y":17445.583819457162},"targetPosition":{"x":26287.35993012027,"y":17616.58274891043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 33","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema33","id":"067efa03-229a-49e1-9dff-579ead9e6603","savedPayload":{"position":{"x":26629.357789026806,"y":17524.944698803254},"targetPosition":{"x":26458.35885957354,"y":17570.763723856842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a51bde01-b164-49bd-99fc-d048468e4cc0","savedPayload":{"position":{"x":26458.35885957354,"y":17570.763723856842},"targetPosition":{"x":26287.35993012027,"y":17616.58274891043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 55","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema55","id":"4663f0f2-cf79-4a80-b4c0-33c41bca9d88","savedPayload":{"position":{"x":26537.71973891963,"y":17866.94255770979},"targetPosition":{"x":26412.53983451995,"y":17741.76265331011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"782092b0-9e6c-4de0-aec6-0d6b47fac8b4","savedPayload":{"position":{"x":26412.53983451995,"y":17741.76265331011},"targetPosition":{"x":26287.35993012027,"y":17616.58274891043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 111","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema111","id":"8064c04e-1499-4c01-b056-aac2a1aecc01","savedPayload":{"position":{"x":26195.721880013094,"y":17958.580607816966},"targetPosition":{"x":26241.540905066682,"y":17787.5816783637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2c4a358f-23b6-433c-98de-623caad85051","savedPayload":{"position":{"x":26241.540905066682,"y":17787.5816783637},"targetPosition":{"x":26287.35993012027,"y":17616.58274891043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"efc451e7-a5c0-4377-877c-a6b1a60a6604","savedPayload":{"position":{"x":26287.35993012027,"y":17616.58274891043},"targetPosition":{"x":25945.362071213734,"y":17708.22079901761},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cef26be6-07a9-415a-8439-99d06b1e1cfb","savedPayload":{"position":{"x":25929.56360838927,"y":17729.252916753136},"targetPosition":{"x":25444.642453615023,"y":18208.940416616326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"EMA Base 7","code":"{\n\t\"codeName\": \"EMA-Base7\",\n \"icon\": \"moving-average\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"EMA 7 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema7","id":"d41ccc81-8740-46e9-9ed3-9ffc1df75ee0","savedPayload":{"position":{"x":26302.95730968715,"y":17888.577654398145},"targetPosition":{"x":26200.54201353546,"y":17747.262521064902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2bb8ca1-5fcc-4286-aba3-1d307d4f7168","savedPayload":{"position":{"x":26200.54201353546,"y":17747.262521064902},"targetPosition":{"x":26097.195012416505,"y":17606.24698116858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 7 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema7","id":"91431058-cccd-40c3-bb98-dd9484a0807d","savedPayload":{"position":{"x":26126.98567019443,"y":17957.176681800338},"targetPosition":{"x":26117.73426334955,"y":17782.72112620284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8ea750de-2b74-41ea-9897-637291621ae9","savedPayload":{"position":{"x":26117.73426334955,"y":17782.72112620284},"targetPosition":{"x":26097.195012416505,"y":17606.24698116858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 14 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema14","id":"753c8686-38ea-4fc2-9343-3598039aa890","savedPayload":{"position":{"x":25930.94634594475,"y":17919.120623294893},"targetPosition":{"x":26017.708403317254,"y":17766.747077626736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"77265bb0-8ba2-4c0b-a788-970cd44ddcc9","savedPayload":{"position":{"x":26017.708403317254,"y":17766.747077626736},"targetPosition":{"x":26097.195012416505,"y":17606.24698116858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 14 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema14","id":"c64e3670-c41d-44d0-bc7a-05c8f0a841b6","savedPayload":{"position":{"x":25816.293452565435,"y":17718.270520898757},"targetPosition":{"x":25984.542448558957,"y":17638.56503169559},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cd04ee65-bd26-4fbc-abed-76c6fc5c964b","savedPayload":{"position":{"x":25984.542448558957,"y":17638.56503169559},"targetPosition":{"x":26097.195012416505,"y":17606.24698116858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 21 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema21","id":"be27efec-c4ed-43ec-925a-f7d862f999c1","savedPayload":{"position":{"x":25727.91612206509,"y":17562.60093465353},"targetPosition":{"x":25902.7536242434,"y":17578.532589305727},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2f13bba0-f9c2-435f-ad66-8ad73082c502","savedPayload":{"position":{"x":25902.7536242434,"y":17578.532589305727},"targetPosition":{"x":26097.195012416505,"y":17606.24698116858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 21 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema21","id":"e6af4547-c256-4f33-95fc-9d9f3cd5d111","savedPayload":{"position":{"x":25819.869292209663,"y":17389.10388357367},"targetPosition":{"x":25958.47482248742,"y":17497.07304980346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a5e04840-b217-44cb-9f8f-2629bf4d1f6e","savedPayload":{"position":{"x":25958.47482248742,"y":17497.07304980346},"targetPosition":{"x":26097.195012416505,"y":17606.24698116858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 28 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema28","id":"a42e77a3-9107-4c33-853d-4ed8966f339d","savedPayload":{"position":{"x":25980.48852532626,"y":17273.308214939825},"targetPosition":{"x":26038.946107218162,"y":17439.093569004075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0d436286-6b79-4dca-a2f3-b7bd3b9a5671","savedPayload":{"position":{"x":26038.946107218162,"y":17439.093569004075},"targetPosition":{"x":26097.195012416505,"y":17606.24698116858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 28 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema28","id":"0e7f0922-d9b4-4ea3-9f5f-57ad9d4c9328","savedPayload":{"position":{"x":26177.868944100537,"y":17263.261241996173},"targetPosition":{"x":26137.929193878095,"y":17434.393193948814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f50599e9-c04f-4b07-aca0-f276dd08ea94","savedPayload":{"position":{"x":26137.929193878095,"y":17434.393193948814},"targetPosition":{"x":26097.195012416505,"y":17606.24698116858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 35 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema35","id":"db011cc5-705a-444a-9f7a-159466b19247","savedPayload":{"position":{"x":26349.503978418965,"y":17361.43069422703},"targetPosition":{"x":26223.737679041067,"y":17483.70989642611},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d7ac980a-16ab-4077-b3f1-05cf1f4c3a39","savedPayload":{"position":{"x":26223.737679041067,"y":17483.70989642611},"targetPosition":{"x":26097.195012416505,"y":17606.24698116858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 35 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema35","id":"6b3dc821-e0e9-4c09-965b-c8600bd3e9d5","savedPayload":{"position":{"x":26440.899252842868,"y":17538.57987680705},"targetPosition":{"x":26269.461290816722,"y":17573.177441913776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8992ec1b-4e8c-4f47-a08e-b6e18a0d9c31","savedPayload":{"position":{"x":26269.461290816722,"y":17573.177441913776},"targetPosition":{"x":26097.195012416505,"y":17606.24698116858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5a4d5b2f-63dc-403c-a545-6025652d9e81","savedPayload":{"position":{"x":26097.195012416505,"y":17606.24698116858},"targetPosition":{"x":26744.732663664923,"y":17861.05669739233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"SMA 7","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"496c35a4-5cf7-4def-97bc-ce71a6fc45f7","savedPayload":{"position":{"x":26732.109507551144,"y":17214.347574670235},"targetPosition":{"x":26801.702128018886,"y":17375.091158065192},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"671a56e0-b5eb-4833-aa19-3dca720b5b0e","savedPayload":{"position":{"x":26801.702128018886,"y":17375.091158065192},"targetPosition":{"x":26871.600500913635,"y":17535.812859166257},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"b0be4203-a40d-4ee7-83e0-d1ac87f0bd31","savedPayload":{"position":{"x":26935.37050229904,"y":17372.24379893015},"targetPosition":{"x":26871.600500913635,"y":17535.812859166257},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 7 End","id":"8ea750de-2b74-41ea-9897-637291621ae9"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"afe09e1e-c8fd-4fc7-8f09-324ee7d7d012","savedPayload":{"position":{"x":27031.822055451375,"y":17465.101601642615},"targetPosition":{"x":26871.600500913635,"y":17535.812859166257},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 7 Begin","id":"d2bb8ca1-5fcc-4286-aba3-1d307d4f7168"}}}],"id":"45946a01-a9fb-4ea8-bb82-ef6088fad08e","savedPayload":{"position":{"x":26871.600500913635,"y":17535.812859166257},"targetPosition":{"x":26744.732663664923,"y":17861.05669739233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 14","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"9c0f7800-bf53-4a63-94ba-fccbec15d0ea","savedPayload":{"position":{"x":27219.145532507533,"y":17146.194949790148},"targetPosition":{"x":27146.11372304075,"y":17305.455599803016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"651877b1-61a2-48a2-8fc4-86e809f89d42","savedPayload":{"position":{"x":27146.11372304075,"y":17305.455599803016},"targetPosition":{"x":27000.4962587722,"y":17623.462228712582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"72f9e17d-9c36-408d-9a2e-13da010f4d97","savedPayload":{"position":{"x":27260.97101820998,"y":17368.148839402114},"targetPosition":{"x":27000.4962587722,"y":17623.462228712582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 14 End","id":"cd04ee65-bd26-4fbc-abed-76c6fc5c964b"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"5a24fd6f-de93-4fcd-94f7-1f7fe268e8be","savedPayload":{"position":{"x":27330.463457132446,"y":17502.51651773014},"targetPosition":{"x":27000.4962587722,"y":17623.462228712582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 14 Begin","id":"77265bb0-8ba2-4c0b-a788-970cd44ddcc9"}}}],"id":"b1689975-de58-4f84-a802-c6f13e885dc6","savedPayload":{"position":{"x":27000.4962587722,"y":17623.462228712582},"targetPosition":{"x":26744.732663664923,"y":17861.05669739233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 21","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"14146df5-5a4a-46b7-9db5-4957b8445915","savedPayload":{"position":{"x":27237.13253516638,"y":17465.42472160943},"targetPosition":{"x":27160.7139382006,"y":17603.54393244606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"2552b9ce-3620-4245-9803-d55ad53969da","savedPayload":{"position":{"x":27160.7139382006,"y":17603.54393244606},"targetPosition":{"x":27078.375424809077,"y":17758.25455900322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"803ffc35-a2e2-426d-a8d2-7c770e5d0a6a","savedPayload":{"position":{"x":27246.267010304244,"y":17706.5879046147},"targetPosition":{"x":27078.375424809077,"y":17758.25455900322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 21 Begin","id":"2f13bba0-f9c2-435f-ad66-8ad73082c502"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"a0449481-80c2-4160-adb3-49d4327bf921","savedPayload":{"position":{"x":27233.670471908757,"y":17839.59375610275},"targetPosition":{"x":27078.375424809077,"y":17758.25455900322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 21 End","id":"a5e04840-b217-44cb-9f8f-2629bf4d1f6e"}}}],"id":"15f599b3-7620-4a0c-b9e0-29830383cd36","savedPayload":{"position":{"x":27078.375424809077,"y":17758.25455900322},"targetPosition":{"x":26744.732663664923,"y":17861.05669739233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 28","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"e4a06d7f-ecad-400a-acca-f3c340642354","savedPayload":{"position":{"x":27599.641019480754,"y":17787.060569207064},"targetPosition":{"x":27429.495576430236,"y":17829.04972636979},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"65f345ac-2766-411d-af4f-9390e525667c","savedPayload":{"position":{"x":27429.495576430236,"y":17829.04972636979},"targetPosition":{"x":27089.964339545942,"y":17913.18441653763},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"ca1f7537-47e7-4c48-a056-fedd8820a1de","savedPayload":{"position":{"x":27451.63937814697,"y":17957.675126863804},"targetPosition":{"x":27089.964339545942,"y":17913.18441653763},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 28 Begin","id":"0d436286-6b79-4dca-a2f3-b7bd3b9a5671"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"80c45995-463a-442a-a6d8-92cc9971a8b9","savedPayload":{"position":{"x":27390.295886701097,"y":18096.086448759765},"targetPosition":{"x":27089.964339545942,"y":17913.18441653763},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 28 End","id":"f50599e9-c04f-4b07-aca0-f276dd08ea94"}}}],"id":"e3c75e9c-a5ec-4755-9a86-909db1b690ca","savedPayload":{"position":{"x":27089.964339545942,"y":17913.18441653763},"targetPosition":{"x":26744.732663664923,"y":17861.05669739233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 35","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"9d05ca49-9de9-4c97-b4da-891614ed84a5","savedPayload":{"position":{"x":27360.93896217888,"y":18000.16760881777},"targetPosition":{"x":27205.064622294623,"y":18026.611344525903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"56422e5e-ccaa-4c0c-b5a1-79e62ebc1e74","savedPayload":{"position":{"x":27205.064622294623,"y":18026.611344525903},"targetPosition":{"x":27032.86028095037,"y":18058.24222513066},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"155db5be-8214-4154-a918-ab9469587cc7","savedPayload":{"position":{"x":27177.71817146713,"y":18157.421980688094},"targetPosition":{"x":27032.86028095037,"y":18058.24222513066},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 35 Begin","id":"d7ac980a-16ab-4077-b3f1-05cf1f4c3a39"}}},{"type":"Polygon Vertex","name":"New Polygon Vertex","id":"ee71f62a-adc7-4411-aeb1-54ca5712ce34","savedPayload":{"position":{"x":27065.501378149485,"y":18230.577715721312},"targetPosition":{"x":27032.86028095037,"y":18058.24222513066},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 35 End","id":"8992ec1b-4e8c-4f47-a08e-b6e18a0d9c31"}}}],"id":"3511cc8f-eb39-4dd0-8043-9f06a8faa698","savedPayload":{"position":{"x":27032.86028095037,"y":18058.24222513066},"targetPosition":{"x":26744.732663664923,"y":17861.05669739233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8e7cd7e8-5c59-4cc2-8d9e-ea86d7554205","savedPayload":{"position":{"x":26744.732663664923,"y":17861.05669739233},"targetPosition":{"x":26141.975366193583,"y":18209.036180248517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"EMA Base 7","code":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"EMA 7","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema7","id":"9d9efe26-4895-475c-ac3c-149f0331c6f7","savedPayload":{"position":{"x":26444.07153866264,"y":18035.138702299297},"targetPosition":{"x":26443.941676082275,"y":18209.365679560466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aeaebf9b-54bf-41f3-a833-b0e4fcc55c00","savedPayload":{"position":{"x":26443.941676082275,"y":18209.365679560466},"targetPosition":{"x":26443.941170468646,"y":18383.505425405456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 14","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema14","id":"7c922a65-b8a6-4ebf-a964-af3851b30367","savedPayload":{"position":{"x":26746.59368895917,"y":18210.069300219864},"targetPosition":{"x":26595.310139510337,"y":18296.723012363997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f749c1c5-25f9-4c3f-af87-c8df30a177e0","savedPayload":{"position":{"x":26595.310139510337,"y":18296.723012363997},"targetPosition":{"x":26443.941170468646,"y":18383.505425405456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 21","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema21","id":"f5a9c1c1-9331-4492-a263-1f69ff44711a","savedPayload":{"position":{"x":26747.073665549833,"y":18558.75801589893},"targetPosition":{"x":26595.43962026536,"y":18471.09084224792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"92f7a1a7-bd42-403f-9d0e-2eb907e8abea","savedPayload":{"position":{"x":26595.43962026536,"y":18471.09084224792},"targetPosition":{"x":26443.941170468646,"y":18383.505425405456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 28","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema28","id":"0fcdb422-d014-4dc8-927a-5484c5d7c34b","savedPayload":{"position":{"x":26444.66813563564,"y":18732.748013585926},"targetPosition":{"x":26444.12048525146,"y":18558.252852510057},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4c51ef79-f3dd-4f24-ad22-4e38f42f3ff2","savedPayload":{"position":{"x":26444.12048525146,"y":18558.252852510057},"targetPosition":{"x":26443.941170468646,"y":18383.505425405456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 35","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema35","id":"c23e6dd3-f9d5-498f-a01c-c951b11cbdf6","savedPayload":{"position":{"x":26141.775328601027,"y":18558.185791476568},"targetPosition":{"x":26292.96333300399,"y":18470.85689275639},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8cdd88af-871c-4f1b-966b-cf9d00483caa","savedPayload":{"position":{"x":26292.96333300399,"y":18470.85689275639},"targetPosition":{"x":26443.941170468646,"y":18383.505425405456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"481ef93a-bef5-4fe3-b87b-f8032a63c69f","savedPayload":{"position":{"x":26443.941170468646,"y":18383.505425405456},"targetPosition":{"x":26141.975366193583,"y":18209.036180248517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a52a9764-3ef2-44e6-82bd-e6538058119d","savedPayload":{"position":{"x":26141.975366193583,"y":18209.036180248517},"targetPosition":{"x":25444.642453615023,"y":18208.940416616326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6cb2807d-22bb-4f90-b4d8-c84cf84a0d5c","savedPayload":{"position":{"x":25444.642453615023,"y":18208.940416616326},"targetPosition":{"x":24943.90880679387,"y":18695.646004599515},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"a"}}}],"id":"9cfffc48-486a-48cb-b641-98c82e314d3a","savedPayload":{"position":{"x":24943.90880679387,"y":18695.646004599515},"targetPosition":{"x":24943.90880679387,"y":18695.646004599515},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}} \ No newline at end of file diff --git a/Data-Mines/TradingEngines.json b/Data-Mines/TradingEngines.json deleted file mode 100644 index c1fadc00f..000000000 --- a/Data-Mines/TradingEngines.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"Data Mine","name":"Trading Engines","code":"{ \n\"codeName\": \"TradingEngines\"\n}","sensorBots":[],"indicatorBots":[],"tradingBots":[{"type":"Trading Bot","name":"Protocol Engine","code":"{\n\"codeName\": \"Protocol-Engine\",\n\"repo\": \"Protocol-Engine-Trading-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period","code":"{\n \"codeName\": \"Multi-Period\",\n \"startMode\": {\n \"userDefined\": {\n \"run\": \"true\"\n }\n },\n \"deadWaitTime\": 0,\n \"liveWaitTime\": 60000,\n \"normalWaitTime\": 5000,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period\",\n \"validPeriods\": [\n \"45-min\",\n \"40-min\",\n \"30-min\",\n \"20-min\",\n \"15-min\",\n \"10-min\",\n \"05-min\",\n \"04-min\",\n \"03-min\",\n \"02-min\",\n \"01-min\"\n ],\n \"startDate\": {},\n \"endDate\": {}\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"New Output Dataset","id":"2448e10f-8851-4f99-bbc3-4114045de8c0","savedPayload":{"position":{"x":12616.197483671245,"y":20140.853579740375},"targetPosition":{"x":11869.94158089557,"y":20140.853579740375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"d7335089-1f50-4d48-bcbe-115136a88e6a"}}},{"type":"Output Dataset","name":"New Output Dataset","id":"d1b73084-294b-46f5-a2c4-da08b994b770","savedPayload":{"position":{"x":12449.156688273564,"y":20626.87276271356},"targetPosition":{"x":11869.94158089557,"y":20140.853579740375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"274082a4-1695-4e9b-a0ff-9464fa2d986f"}}},{"type":"Output Dataset","name":"New Output Dataset","id":"156aa7e6-0514-465e-9734-3983a51ab69c","savedPayload":{"position":{"x":11997.878022585815,"y":20866.417195564853},"targetPosition":{"x":11869.94158089557,"y":20140.853579740375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"52f26c43-552c-4557-af7a-878b951f5731"}}},{"type":"Output Dataset","name":"New Output Dataset","id":"8067fbac-fbc3-4712-9c24-4b4b9a24d78d","savedPayload":{"position":{"x":11497.788898746769,"y":20785.44093339513},"targetPosition":{"x":11869.94158089557,"y":20140.853579740375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"afb38dc6-0437-4215-8a7d-3091cd3c74fb"}}},{"type":"Output Dataset","name":"New Output Dataset","id":"72529350-c20e-4f28-a308-2611df7a6468","savedPayload":{"position":{"x":11151.505147800972,"y":20402.34305659919},"targetPosition":{"x":11869.94158089557,"y":20140.853579740375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"cb317eb0-047c-4076-bd46-7add2423aa87"}}},{"type":"Output Dataset","name":"New Output Dataset","id":"1b491b01-465a-4f98-831d-a587fc428b58","savedPayload":{"position":{"x":11191.18832670422,"y":19893.807598803403},"targetPosition":{"x":11869.94158089557,"y":20140.853579740375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"41498979-9228-4151-8b94-0d8acdf257e8"}}},{"type":"Output Dataset","name":"New Output Dataset","id":"5711ecc2-5192-4d97-a13d-5269264ea825","savedPayload":{"position":{"x":11500.627966186497,"y":19501.183635137346},"targetPosition":{"x":11869.94158089557,"y":20140.853579740375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"823a30de-093f-4c39-9181-5727c81bbad3"}}},{"type":"Output Dataset","name":"New Output Dataset","id":"3be12bcb-4634-4933-9ae1-bad5089b8062","savedPayload":{"position":{"x":12002.767486869507,"y":19387.560434016126},"targetPosition":{"x":11869.94158089557,"y":20140.853579740375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"486698b4-c159-4bb7-8d4a-7057aa94e903"}}},{"type":"Output Dataset","name":"New Output Dataset","id":"43aa8bfe-8aed-4cbb-98d7-342d857fb3d9","savedPayload":{"position":{"x":12427.890488540303,"y":19672.67885711991},"targetPosition":{"x":11869.94158089557,"y":20140.853579740375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Oficial History","id":"3ad0f044-95e9-4ae7-9169-9dacfc13c011"}}}],"id":"58e53ed7-a9ab-4327-a7b5-cc80d2a3e222","savedPayload":{"position":{"x":19543.90309832926,"y":17209.51965249541},"targetPosition":{"x":20070.02425838169,"y":17895.237685849293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Protocol Engine Multi-Period","code":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"8788fac1-b7a9-403b-a7d6-367c71ac9919","savedPayload":{"position":{"x":18123.128316870567,"y":16305.391093660375},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2addf3d0-ce67-4700-a2bb-aa9998cd5e77"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","code":"{\n\"mainUtility\": \"Market Ending Point\"\n}","id":"f1fdebab-b7be-411a-ac75-0280185b09d3","savedPayload":{"position":{"x":18118.966720520635,"y":16198.65631025587},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","code":"{\"mainUtility\": \"Market Starting Point\"}","id":"1915e12c-8285-453f-874d-131b5617a999","savedPayload":{"position":{"x":18121.40335241839,"y":16092.44680853075},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Bollinger Bands Multi-Period-Market","id":"5bc225fd-2469-426b-8690-9d1ddff24bcd","savedPayload":{"position":{"x":18130.387846509566,"y":15986.470357277454},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"f5b2a7d8-fc32-44a3-a002-9b0fc30a9719"}}},{"type":"Data Dependency","name":"Percentage Bandwidth Multi-Period-Market","id":"713606e5-61b8-4597-a878-6d16f4aa9c16","savedPayload":{"position":{"x":18145.879725572227,"y":15881.2723239015},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"207e9481-0730-4304-a938-cfe223d70856"}}},{"type":"Data Dependency","name":"Bollinger Channels Market","id":"23995773-d176-4440-bb23-f1fbbffbb61f","savedPayload":{"position":{"x":18167.818240228735,"y":15777.23925151378},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Market","id":"22c1f2c6-3838-4657-add8-2e01d7056917"}}},{"type":"Data Dependency","name":"Bollinger Sub-Channels Market","id":"3c59a984-a0ac-4fa4-a70b-ba5b5e2e2133","savedPayload":{"position":{"x":18196.11932777874,"y":15674.76041644917},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Market","id":"f8d44a4d-3771-4a71-97ca-dc604ff565d3"}}},{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"71c00672-f101-4b5b-b8db-b42b20b1fa92","savedPayload":{"position":{"x":18230.675242591053,"y":15574.222012654629},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}},{"type":"Data Dependency","name":"Bollinger Bands Multi-Period-Daily","id":"85a073ae-2e57-4e5f-881f-b4ebd47fb6df","savedPayload":{"position":{"x":18271.354678705673,"y":15476.004044323387},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"506104fa-e99a-4a46-930e-176bce311aff"}}},{"type":"Data Dependency","name":"Percentage Bandwidth Multi-Period-Daily","id":"782c081a-df9b-4a3f-a74f-c104146d6f35","savedPayload":{"position":{"x":18318.003196890062,"y":15380.478294701836},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"e60d62dd-87f7-4f2d-ac21-3ac5c30a50ea"}}},{"type":"Data Dependency","name":"Bollinger Channels Daily","id":"f04756ad-8cff-46d2-91e1-9fbdbfcdfdb7","savedPayload":{"position":{"x":18370.44376171923,"y":15288.006631331991},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Daily","id":"96b4e65b-e6db-44a0-80a5-ceb9d68a09ec"}}},{"type":"Data Dependency","name":"Bollinger Sub-Channels Daily","id":"63d8b075-b89d-41da-8d1e-231c2288fd1c","savedPayload":{"position":{"x":18428.477394673155,"y":15198.939507571842},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Daily","id":"ca71e765-0f66-4b18-b500-847b9d16169b"}}},{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"e0b50719-a6c6-4d8a-bf0f-4120bb02cda0","savedPayload":{"position":{"x":18491.88391793258,"y":15113.614565014326},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}},{"type":"Data Dependency","name":"Volumes Multi-Period-Market","id":"730b50a7-44e6-49e9-a007-60608ba28fd9","savedPayload":{"position":{"x":18560.4227833358,"y":15032.35531504903},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"9bf0483c-4825-4a46-9cf4-1b5262579fc1"}}},{"type":"Data Dependency","name":"Volumes Multi-Period-Daily","id":"81a192d8-a944-436f-a479-7ab3a1c150b5","savedPayload":{"position":{"x":18633.83398119805,"y":14955.469889621341},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"2e683057-f911-4105-bc77-16f2706d1915"}}},{"type":"Data Dependency","name":"Candles Channels Multi-Period-Market","id":"7e2b7482-fdf2-43ca-be98-e0929aec1cc7","savedPayload":{"position":{"x":18711.839024409815,"y":14883.24985886973},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"df7d1cd7-95b0-499c-b51a-772c3fb8a2b0"}}},{"type":"Data Dependency","name":"Candles Channels Multi-Period-Daily","id":"524dd1ff-69ba-406a-9c68-5bbc1c2ce130","savedPayload":{"position":{"x":18794.142003472643,"y":14815.969116475226},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"07734f1c-e2e7-4a35-8567-6a996c68883e"}}},{"type":"Data Dependency","name":"Candles Channels Objects Multi-Period-Market","id":"662c97ad-79f3-4580-bb19-afdc4e1f3b17","savedPayload":{"position":{"x":18880.430708115673,"y":14753.882834969048},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"566b9df4-da86-4b4f-a3f4-ef8a76443714"}}},{"type":"Data Dependency","name":"Candles Channels Objects Multi-Period-Daily","id":"1eea009c-13a5-4421-a700-5e24ba43201e","savedPayload":{"position":{"x":18970.377811023525,"y":14697.226493849084},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"8a7d224b-7571-4e1a-8b8f-8a35aa25dc63"}}},{"type":"Data Dependency","name":"Popular SMAs Multi-Period-Market","id":"9b453979-b654-4d97-8642-2fcbe831b4b5","savedPayload":{"position":{"x":19063.642109057528,"y":14646.214983554277},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"3b21f9d7-2cbc-4c23-80c8-cc5e5b06a22c"}}},{"type":"Data Dependency","name":"Popular SMAs Multi-Period-Daily","id":"5b707980-734b-4c30-a7c3-ccbaedefa68a","savedPayload":{"position":{"x":19159.86981719201,"y":14601.04178832318},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"2c338fe0-385f-45ab-b210-b98ef013228d"}}},{"type":"Data Dependency","name":"Base7 SMAs Multi-Period-Market","id":"f3fb10b2-5e10-4110-b185-e94713786b63","savedPayload":{"position":{"x":19258.695910226266,"y":14561.878250811978},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"78a6ef37-4df8-4ac8-83a0-c9a732467c59"}}},{"type":"Data Dependency","name":"Base7 SMAs Multi-Period-Daily","id":"ddaf9036-8f74-41a8-9666-82d167cdd732","savedPayload":{"position":{"x":19359.745507174142,"y":14528.872921118753},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f155e2ed-7082-4021-a4ff-a6f3cfd5683d"}}},{"type":"Data Dependency","name":"Base11 SMAs Multi-Period-Market","id":"70389efb-190f-4fd0-9a74-ecd1f0981d79","savedPayload":{"position":{"x":19462.63529308209,"y":14502.150992585603},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"af9b9cef-2a74-486f-b79e-047d68669a1f"}}},{"type":"Data Dependency","name":"Base11 SMAs Multi-Period-Daily","id":"0b509377-0c39-4477-b272-b1551c864b84","savedPayload":{"position":{"x":19566.974972886233,"y":14481.813826447673},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"de5cfa30-edbf-4d5b-8d7f-facfb69a0f3e"}}},{"type":"Data Dependency","name":"Popular EMAs Multi-Period-Market","id":"1d026445-1857-4526-a32c-bcc8d704a56b","savedPayload":{"position":{"x":19672.3687517949,"y":14467.938567079607},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"ea1af06a-2584-43f0-aecf-ec8ad9169e9c"}}},{"type":"Data Dependency","name":"Popular EMAs Multi-Period-Daily","id":"436e9e87-7640-4eda-ade0-275b6656326f","savedPayload":{"position":{"x":19778.416836578675,"y":14460.577849261814},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"e7f5899c-fc4c-412d-a8db-77c1bef8ed21"}}},{"type":"Data Dependency","name":"Base7 EMAs Multi-Period-Market","id":"f78b032e-d887-4023-8971-b46021ebd7d3","savedPayload":{"position":{"x":19884.522069072795,"y":14459.75963426972},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"4e36a5a5-7a03-43a9-b3e0-0c5763c29199"}}},{"type":"Data Dependency","name":"Base7 EMAs Multi-Period-Daily","id":"0c9a04d5-e50d-4201-a37d-af1dd7923326","savedPayload":{"position":{"x":19990.66906128029,"y":14465.487208479693},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"15ccbcff-318d-46db-93f2-d649b57fd52a"}}},{"type":"Data Dependency","name":"Base11 EMAs Multi-Period-Market","id":"36bcd83a-1717-4552-876e-6bc1ca3716db","savedPayload":{"position":{"x":20096.263817010742,"y":14477.738582812046},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"5586aa74-2ecb-4b71-83ea-d621aa400660"}}},{"type":"Data Dependency","name":"Base11 EMAs Multi-Period-Daily","id":"a88ad022-7023-4459-b76f-096bcd142dc4","savedPayload":{"position":{"x":20200.904316779313,"y":14496.467348694596},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"0198fa3f-98e3-4c57-a4a4-a7a8e27905d3"}}},{"type":"Data Dependency","name":"RSI14 Multi-Period-Daily","id":"548e55dd-1b23-424d-863c-7cd4fc1f42a5","savedPayload":{"position":{"x":20304.193488791534,"y":14521.602480097567},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f1556d09-f134-4678-83fb-04002d1dcd34"}}},{"type":"Data Dependency","name":"RSI14 Multi-Period-Market","id":"9d0f9b08-1595-4903-92f1-0fb71af08f01","savedPayload":{"position":{"x":20405.73949656357,"y":14553.048652236623},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"5ec62760-e144-4496-98ab-0415a4b315ec"}}},{"type":"Data Dependency","name":"Base6 SMAs Multi-Period-Market","id":"69ddd32f-02ea-42e5-8ebc-d65dee7f6d04","savedPayload":{"position":{"x":20505.157136265367,"y":14590.686606646688},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"c0862b3d-d35a-4d3e-8d80-258b8a01c37c"}}},{"type":"Data Dependency","name":"Base6 SMAs Multi-Period-Daily","id":"fbcfb06a-a49f-4fda-84b0-c69961de568b","savedPayload":{"position":{"x":20602.06928372366,"y":14634.373605708724},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f5050eb2-0a99-464e-b5e2-2d8f40453e9a"}}},{"type":"Data Dependency","name":"Base5 SMAs Muti-Period-Market","id":"717b4f63-17e4-4c9c-9d49-c455be5717b0","savedPayload":{"position":{"x":20696.108321712152,"y":14683.943976819059},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Muti-Period-Market","id":"a5d28568-fb58-469a-9820-b9f0e8eab705"}}},{"type":"Data Dependency","name":"Base5 SMAs Multi-Period-Daily","id":"eecb23a6-ca26-4c8c-a5f3-f2f1674a6e57","savedPayload":{"position":{"x":20786.917533679207,"y":14739.209744713435},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"01f32aa3-55e9-4f8c-80c7-997b52073274"}}},{"type":"Data Dependency","name":"MACD 122609 Multi-Period-Market","id":"b7635c02-93e0-490b-b894-85131f06083c","savedPayload":{"position":{"x":20874.15245698442,"y":14799.961350237561},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"01d43ed0-2a80-4eca-bee6-db2fe40470fc"}}},{"type":"Data Dependency","name":"MACD 122609 Multi-Period-Daily","id":"9e66d3c0-de19-4585-84cf-35863a0c2872","savedPayload":{"position":{"x":20957.482190180053,"y":14865.968453961448},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"dd5d3067-ff7b-4353-ba4f-c030bd3da796"}}},{"type":"Data Dependency","name":"MACD 031016 Multi-Period-Market","id":"86f9e0cf-e65e-4c97-94fa-acd36daa41d1","savedPayload":{"position":{"x":21036.590649452708,"y":14936.980823552025},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"19b1d791-d2ea-4f25-a6e1-fe0a64450745"}}},{"type":"Data Dependency","name":"MACD 031016 Multi-Period-Daily","id":"19a21ac5-7185-4073-b5e1-de697724084c","savedPayload":{"position":{"x":21111.177769822167,"y":15012.729305136587},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"ec2611a6-699b-45a5-beec-679dd4b7734a"}}},{"type":"Data Dependency","name":"MACD 081709 Multi-Period-Market","id":"a7be28a8-b872-48ce-a364-8ab10e739372","savedPayload":{"position":{"x":21180.96064735586,"y":15092.926881925103},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"c390cbd3-0ba0-4507-8614-42c88f4ce7e6"}}},{"type":"Data Dependency","name":"MACD 081709 Multi-Period-Daily","id":"cb6f1400-e317-4d5e-ac21-2fa1d68ea3ea","savedPayload":{"position":{"x":21245.674619852984,"y":15177.269830368934},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"29e18539-f188-4d29-9531-25cd3ee8f282"}}},{"type":"Data Dependency","name":"MACD 245209 Multi-Period-Market","id":"5fd10d11-f52b-4fab-8152-e0fb7b371228","savedPayload":{"position":{"x":21303.86700354899,"y":15263.536358726207},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"89254c6c-9be2-4037-b063-467edc660d10"}}},{"type":"Data Dependency","name":"MACD 245209 Multi-Period-Daily","id":"ff93870a-77c3-4db2-9061-836eaa971ad3","savedPayload":{"position":{"x":21356.658015138324,"y":15352.670680217783},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"8a9dde13-e4b8-40f3-80bc-ea51050b2f08"}}},{"type":"Data Dependency","name":"External Signals Single File","id":"80edc718-f175-42ab-825d-5669284d9d63","savedPayload":{"position":{"x":21406.42747189977,"y":15449.45024428517},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Single File","id":"c52d1012-5e3b-41a0-b5af-84098b0594bf"}}},{"type":"Data Dependency","name":"Resistances Multi-Period-Market","id":"846965ab-4df2-4dd8-9028-0ce763ca7f11","savedPayload":{"position":{"x":21448.76611728803,"y":15548.478177175648},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"44e905fc-719f-453b-a567-fd5e3bfcae91"}}},{"type":"Data Dependency","name":"Resistances Multi-Period-Daily","id":"fd373d28-4057-4079-999b-70af55267848","savedPayload":{"position":{"x":21484.64459661402,"y":15648.080974549379},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f4530d48-3239-4ab0-8c4d-d611cd55fde3"}}},{"type":"Data Dependency","name":"Supports Multi-Period-Market","id":"9a2f2139-301f-4027-b322-f467b74e6c38","savedPayload":{"position":{"x":21514.76601402189,"y":15751.230682885396},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"4a1bd251-76ed-4530-8723-08e41d50f12d"}}},{"type":"Data Dependency","name":"Supports Multi-Period-Daily","id":"46cb6860-5610-45df-8069-1ed1a5e39445","savedPayload":{"position":{"x":21541.418280309208,"y":15869.796607285696},"targetPosition":{"x":19844.741442692164,"y":16185.179344313414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"deaaf4ec-9352-40b6-af9a-8541a73a5e13"}}}],"id":"0c08b52a-8f7a-40cb-b424-3471225a2e7b","savedPayload":{"position":{"x":19844.945943554183,"y":16184.80299332481},"targetPosition":{"x":20070.02425838169,"y":17895.237685849293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"2addf3d0-ce67-4700-a2bb-aa9998cd5e77","savedPayload":{"position":{"x":20400.503594749553,"y":17097.190158583628},"targetPosition":{"x":20070.02425838169,"y":17895.237685849293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"","id":"3245ffee-1ffd-405c-8c81-bd960be73d42","savedPayload":{"position":{"x":20755.3109442254,"y":17369.397086530025},"targetPosition":{"x":20070.02425838169,"y":17895.237685849293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"92813b2f-21f3-4891-ae0d-db922ec3cc18","savedPayload":{"position":{"x":20926.483754131976,"y":17782.548914563642},"targetPosition":{"x":20070.02425838169,"y":17895.237685849293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6f95cc67-bad0-48dc-bb82-0075c43cb202","savedPayload":{"position":{"x":20070.04269140215,"y":17895.19985408952},"targetPosition":{"x":19739.430115806885,"y":18694.122679239677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Process Definition","name":"Context","code":"{\n\"codeName\": \"Context\"\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[],"id":"441aec7b-d710-4aa3-8c81-1acd8912b8fa","savedPayload":{"position":{"x":21124.858275578103,"y":13318.17517988723},"targetPosition":{"x":20832.03197000132,"y":14417.365246185595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[],"dataDependencies":[],"id":"d982ba6b-a59d-4934-abb2-912dc8e20660","savedPayload":{"position":{"x":21421.231885987043,"y":13407.584637911756},"targetPosition":{"x":20832.03197000132,"y":14417.365246185595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"a1317697-3b4f-4b41-bbb6-0a43fd08fa28","savedPayload":{"position":{"x":21645.59714771842,"y":13603.927651161577},"targetPosition":{"x":20832.03197000132,"y":14417.365246185595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"New Execution Started Event","id":"c3d58fd6-f0ce-41a4-b9cd-05b9f30ad640","savedPayload":{"position":{"x":21828.375077441906,"y":13842.1256351687},"targetPosition":{"x":20832.03197000132,"y":14417.365246185595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"c8086f00-19a8-4f0d-9a5d-44469da5caf2","savedPayload":{"position":{"x":21943.324888158433,"y":14119.564202374908},"targetPosition":{"x":20832.03197000132,"y":14417.365246185595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"24317ebe-1ed4-48bc-a7ae-518de665b43f","savedPayload":{"position":{"x":20350.906727312522,"y":18082.867755990603},"targetPosition":{"x":19739.430115806885,"y":18694.122679239677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Simulation","code":"{\n \"codeName\": \"Trading-Simulation\",\n \"singularVariableName\": \"tradingSimulation\",\n \"pluralVariableName\": \"tradingSimulations\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [\n \"24-hs\",\n \"12-hs\",\n \"08-hs\",\n \"06-hs\",\n \"04-hs\",\n \"03-hs\",\n \"02-hs\",\n \"01-hs\"\n ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/Protocol-Engine/Output/@Session/Trading-Simulation/Multi-Period-Market/@Period\",\n \"fileName\": \"Data.json\"\n}","id":"d7335089-1f50-4d48-bcbe-115136a88e6a","savedPayload":{"position":{"x":21558.76617717918,"y":14470.648561237398},"targetPosition":{"x":21080.33623029559,"y":14791.520870167911},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [\n \"45-min\",\n \"40-min\",\n \"30-min\",\n \"20-min\",\n \"15-min\",\n \"10-min\",\n \"05-min\",\n \"04-min\",\n \"03-min\",\n \"02-min\",\n \"01-min\"\n ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/Protocol-Engine/Output/@Session/Trading-Simulation/Multi-Period-Daily/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/Protocol-Engine/Output/@Session/Trading-Simulation/Multi-Period-Daily\",\n \"fileName\": \"Data.Range.json\"\n }\n}","id":"274082a4-1695-4e9b-a0ff-9464fa2d986f","savedPayload":{"position":{"x":21612.827582485974,"y":14571.78666062802},"targetPosition":{"x":21080.33623029559,"y":14791.520870167911},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"5332a4a9-98de-4406-ad5e-d9a6a1ff5cee","savedPayload":{"position":{"x":11377.065566704507,"y":19099.46120934351},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"70392162-bb77-48e0-9bba-22e8ed84f055","savedPayload":{"position":{"x":11373.19505738521,"y":19214.87595931803},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Type","code":"{\n \"codeName\": \"type\",\n \"isString\": true\n}","id":"6a4b1d81-2b7d-4a02-9d13-d3cb2442710f","savedPayload":{"position":{"x":11351.75192982298,"y":19328.3472668562},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Market Rate","code":"{\n \"codeName\": \"marketRate\",\n \"isString\": false\n}","id":"6a4b5c8e-8294-438c-a2da-ad812e59a131","savedPayload":{"position":{"x":11313.238792753522,"y":19437.215460683143},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Amount","code":"{\n \"codeName\": \"amount\",\n \"isString\": false\n}","id":"c7186621-e504-4cf5-9f74-0ff177d7aa24","savedPayload":{"position":{"x":11258.558361467522,"y":19538.928762607957},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Balance A","code":"{\n \"codeName\": \"balanceA\",\n \"isString\": false\n}","id":"64bddfff-11f9-4052-98c0-ab7b42a7615f","savedPayload":{"position":{"x":11188.99229892934,"y":19631.103099041728},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Balance B","code":"{\n \"codeName\": \"balanceB\",\n \"isString\": false\n}","id":"69dff994-7889-4c0c-9847-dd3949ff6a6f","savedPayload":{"position":{"x":11106.171174683412,"y":19711.577981661783},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Profit","code":"{\n \"codeName\": \"profit\",\n \"isString\": false\n}","id":"1fa2f30d-669a-45bd-9d11-9a62b82640ec","savedPayload":{"position":{"x":11012.036245686131,"y":19778.467147426865},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Last Trade Profit Loss","code":"{\n \"codeName\": \"lastTradeProfitLoss\",\n \"isString\": false\n}","id":"0805787c-8b11-4cda-8166-ab8d9cad0a7b","savedPayload":{"position":{"x":10908.793954888128,"y":19830.202770984066},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Stop Loss","code":"{\n \"codeName\": \"stopLoss\",\n \"isString\": false\n}","id":"92c16033-3882-4c75-bfe7-3b1b793e59ab","savedPayload":{"position":{"x":10798.8642140816,"y":19865.572213166284},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Roundtrips","code":"{\n \"codeName\": \"roundtrips\",\n \"isString\": false\n}","id":"6381add6-79c2-44e6-b590-c1dcfb99e2a1","savedPayload":{"position":{"x":10684.823683218923,"y":19883.746444226515},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hits","code":"{\n \"codeName\": \"hits\",\n \"isString\": false\n}","id":"b4290398-e1e5-44b5-b61a-d267ad9b8316","savedPayload":{"position":{"x":10569.34537568725,"y":19884.299475592477},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fails","code":"{\n \"codeName\": \"fails\",\n \"isString\": false\n}","id":"56099414-6c12-4e67-8f88-5182242967c4","savedPayload":{"position":{"x":10455.136005140244,"y":19867.218344677676},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hit Ratio","code":"{\n \"codeName\": \"hitRatio\",\n \"isString\": false\n}","id":"2213cf96-502e-4aa4-938a-96acb0f92557","savedPayload":{"position":{"x":10344.872542424157,"y":19832.90341871346},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ROI","code":"{\n \"codeName\": \"ROI\",\n \"isString\": false\n}","id":"b41213a7-07ad-426d-8bd3-fd4925594f11","savedPayload":{"position":{"x":10241.139469650074,"y":19782.15901048045},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Periods","code":"{\n \"codeName\": \"periods\",\n \"isString\": false\n}","id":"f41a7319-6b9a-46b3-ba04-8a58bc91e397","savedPayload":{"position":{"x":10146.368202123746,"y":19716.174525898656},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Days","code":"{\n \"codeName\": \"days\",\n \"isString\": false\n}","id":"67d293ba-6aea-40cc-bbb8-99f8f0cd5876","savedPayload":{"position":{"x":10062.780098031586,"y":19636.496585360826},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Anualized Rate Of Return","code":"{\n \"codeName\": \"anualizedRateOfReturn\",\n \"isString\": false\n}","id":"d78c501d-91c3-415a-850c-9115e0552230","savedPayload":{"position":{"x":9992.334391687526,"y":19544.992772261274},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Trade Position Rate","code":"{\n \"codeName\": \"tradePositionRate\",\n \"isString\": false\n}","id":"7912c4d4-d85d-48c3-9953-f0c194fbe4ac","savedPayload":{"position":{"x":9936.682270741256,"y":19443.807858424014},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Last Trade ROI","code":"{\n \"codeName\": \"lastTradeROI\",\n \"isString\": false\n}","id":"9996b0ef-da23-4c37-bbc5-b3d78baa8b4c","savedPayload":{"position":{"x":9897.128173739207,"y":19335.31353246904},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Current Strategy Index","code":"{\n \"codeName\": \"currentStrategyIndex\",\n \"isString\": false\n}","id":"6ff9ddc3-5989-425b-b406-6649c152ab24","savedPayload":{"position":{"x":9874.599215190608,"y":19222.052809441208},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Strategy Stage Number","code":"{\n \"codeName\": \"strategyStageNumber\",\n \"isString\": false\n}","id":"288a10b5-4c77-43aa-a548-c24629b3f7ee","savedPayload":{"position":{"x":9869.623454789182,"y":19106.680424692953},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Take Profit","code":"{\n \"codeName\": \"takeProfit\",\n \"isString\": false\n}","id":"66f26d4d-28d0-4896-88b0-890fc9a25ea9","savedPayload":{"position":{"x":9882.317520141476,"y":18991.900609137676},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Stop Loss Phase","code":"{\n \"codeName\": \"stopLossPhase\",\n \"isString\": false\n}","id":"71f92e69-779c-4643-9f7a-2a82f960f4e5","savedPayload":{"position":{"x":9912.383873114622,"y":18880.40370436913},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Take Profit Phase","code":"{\n \"codeName\": \"takeProfitPhase\",\n \"isString\": false\n}","id":"7d9ebb36-97b5-4bdf-95c9-40c52cb85f0e","savedPayload":{"position":{"x":9959.117783877993,"y":18774.803103334703},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Execution Record","code":"{\n \"codeName\": \"executionRecord\",\n \"isString\": true\n}","id":"a138bd75-7a4c-4dda-8977-5ac63f432b1f","savedPayload":{"position":{"x":10021.423849173118,"y":18677.573994619714},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Trade Position Size","code":"{\n \"codeName\": \"tradePositionSize\",\n \"isString\": false\n}","id":"d8c2810d-7c00-4383-b033-881a2c85fff2","savedPayload":{"position":{"x":10097.841667637653,"y":18590.995346124873},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Initial Balance A","code":"{\n \"codeName\": \"initialBalanceA\",\n \"isString\": false\n}","id":"9539791d-7864-48e4-801e-a798dbbdc4bb","savedPayload":{"position":{"x":10186.580070375529,"y":18517.096487990242},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Minimum Balance A","code":"{\n \"codeName\": \"minimumBalanceA\",\n \"isString\": false\n}","id":"e523f9bf-5f97-4089-b693-f861949641f8","savedPayload":{"position":{"x":10285.559104437749,"y":18457.609546816726},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Maximum Balance A","code":"{\n \"codeName\": \"maximumBalanceA\",\n \"isString\": false\n}","id":"0ff4c6e9-93c6-4da2-b5ed-86e225524f66","savedPayload":{"position":{"x":10392.45878515664,"y":18413.92884608664},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Initial Balance B","code":"{\n \"codeName\": \"initialBalanceB\",\n \"isString\": false\n}","id":"7c3b05c2-530e-453b-b776-7d55514456ef","savedPayload":{"position":{"x":10504.773474620113,"y":18387.078224403056},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Minimum Balance B","code":"{\n \"codeName\": \"minimumBalanceB\",\n \"isString\": false\n}","id":"f56fac84-b690-4aa2-a305-a430dde115c6","savedPayload":{"position":{"x":10619.870611700666,"y":18377.6870375807},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Maximum Balance B","code":"{\n \"codeName\": \"maximumBalanceB\",\n \"isString\": false\n}","id":"42605779-f1a6-48b7-992d-05124c2f5c99","savedPayload":{"position":{"x":10735.052417056935,"y":18385.97540707909},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Base Asset","code":"{\n \"codeName\": \"baseAsset\",\n \"isString\": true\n}","id":"3a26c1da-2c55-421a-a311-ba66a095cf70","savedPayload":{"position":{"x":10847.619126794945,"y":18411.749060542083},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Position Periods","code":"{\n \"codeName\": \"positionPeriods\",\n \"isString\": false\n}","id":"ad4cc73a-3cfe-48f3-9f77-8eea811acb0f","savedPayload":{"position":{"x":10954.932272645556,"y":18454.403885377236},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Position Days","code":"{\n \"codeName\": \"positionDays\",\n \"isString\": false\n}","id":"29a59888-daca-4440-aca1-7942f27426ad","savedPayload":{"position":{"x":11054.47652542443,"y":18512.94008864297},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Distance To Last Trigger On","code":"{\n \"codeName\": \"distanceToLastTriggerOn\",\n \"isString\": false\n}","id":"b3c41567-e36b-46ff-824d-aca57b0c6f57","savedPayload":{"position":{"x":11143.918652216229,"y":18585.985631347718},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Distance ToLast Trigger Off","code":"{\n \"codeName\": \"distanceToLastTriggerOff\",\n \"isString\": false\n}","id":"30280e51-780a-4593-b392-181ec71e6c95","savedPayload":{"position":{"x":11221.162205376588,"y":18671.828387881014},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Distance To Last Take Position","code":"{\n \"codeName\": \"distanceToLastTakePosition\",\n \"isString\": false\n}","id":"28dd29f5-c161-4132-be23-59f08a2ca8cc","savedPayload":{"position":{"x":11284.396661488021,"y":18768.456276786663},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Distance To Last Close Position","code":"{\n \"codeName\": \"distanceToLastClosePosition\",\n \"isString\": false\n}","id":"da0f85d8-ae29-4a25-b88e-f65fbc7b643c","savedPayload":{"position":{"x":11332.13985849432,"y":18873.60442224672},"targetPosition":{"x":10623.482870119064,"y":19131.961594501125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9886dcec-c49a-4b0e-af1d-8996a68fc2e1","savedPayload":{"position":{"x":22209.566233680795,"y":14566.788543549535},"targetPosition":{"x":21080.33623029559,"y":14791.520870167911},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"a3201051-46ba-4a92-aef3-a6c787b771fd","savedPayload":{"position":{"x":20537.684845021828,"y":18363.732568596402},"targetPosition":{"x":19739.430115806885,"y":18694.122679239677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Trading Simulation","id":"7864b9e4-3150-4d1d-abd9-0a43a9fe4c4f"}}},{"type":"Product Definition","name":"Conditions","code":"{\n \"codeName\": \"Simulation-Conditions\",\n \"singularVariableName\": \"simulationCondition\",\n \"pluralVariableName\": \"simulationConditions\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [\n \"24-hs\",\n \"12-hs\",\n \"08-hs\",\n \"06-hs\",\n \"04-hs\",\n \"03-hs\",\n \"02-hs\",\n \"01-hs\"\n ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/Protocol-Engine/Output/@Session/Simulation-Conditions/Multi-Period-Market/@Period\",\n \"fileName\": \"Data.json\"\n}","id":"52f26c43-552c-4557-af7a-878b951f5731","savedPayload":{"position":{"x":21732.49366793104,"y":15118.231415076756},"targetPosition":{"x":21167.86746331339,"y":15231.652340809325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [\n \"45-min\",\n \"40-min\",\n \"30-min\",\n \"20-min\",\n \"15-min\",\n \"10-min\",\n \"05-min\",\n \"04-min\",\n \"03-min\",\n \"02-min\",\n \"01-min\"\n ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/Protocol-Engine/Output/@Session/Simulation-Conditions/Multi-Period-Daily/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/Protocol-Engine/Output/@Session/Simulation-Conditions/Multi-Period-Daily\",\n \"fileName\": \"Data.Range.json\"\n }\n}","id":"afb38dc6-0437-4215-8a7d-3091cd3c74fb","savedPayload":{"position":{"x":21743.697720406657,"y":15232.18443000369},"targetPosition":{"x":21167.86746331339,"y":15231.652340809325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Current Strategy Index","code":"{\n \"codeName\": \"currentStrategyIndex\",\n \"isString\": false\n}","id":"bbfaa8e4-eac8-4f0d-a8b1-85844f96c564","savedPayload":{"position":{"x":22137.32095706353,"y":15216.356788107752},"targetPosition":{"x":22297.11201635209,"y":15455.992865334816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Strategy Stage Number","code":"{\n \"codeName\": \"strategyStageNumber\",\n \"isString\": false\n}","id":"b9b14fcf-e09b-4036-85d9-8f40304a7d13","savedPayload":{"position":{"x":22353.471825681045,"y":15173.240619813338},"targetPosition":{"x":22297.11201635209,"y":15455.992865334816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Stop Loss Phase","code":"{\n \"codeName\": \"stopLossPhase\",\n \"isString\": false\n}","id":"115e6942-c0f3-45e7-a2ba-8b661a95af3e","savedPayload":{"position":{"x":22536.92404638248,"y":15295.83339450043},"targetPosition":{"x":22297.11201635209,"y":15455.992865334816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Take Profit Phase","code":"{\n \"codeName\": \"takeProfitPhase\",\n \"isString\": false\n}","id":"599f27b7-7cd8-483b-81c9-bd131e9ab964","savedPayload":{"position":{"x":22579.99810830066,"y":15512.04177495234},"targetPosition":{"x":22297.11201635209,"y":15455.992865334816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Conditions Array Values","code":"{\n \"codeName\": \"conditionsArrayValues\",\n \"isString\": false\n}","id":"1359d846-f978-4a6a-9e94-4f23fcdde80b","savedPayload":{"position":{"x":22457.465309564184,"y":15695.462478977468},"targetPosition":{"x":22297.11201635209,"y":15455.992865334816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Formulas Errors","code":"{\n \"codeName\": \"formulasErrors\",\n \"isString\": false\n}","id":"1d4b7300-013b-4874-ba78-c77bb9aac9be","savedPayload":{"position":{"x":22241.289554219697,"y":15738.398803157694},"targetPosition":{"x":22297.11201635209,"y":15455.992865334816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Formulas Values","code":"{\n \"codeName\": \"formulasValues\",\n \"isString\": false\n}","id":"5306f8cc-6c59-477a-ac58-303eea4142cf","savedPayload":{"position":{"x":22057.81600908919,"y":15615.761688656728},"targetPosition":{"x":22297.11201635209,"y":15455.992865334816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2f2a6b6d-6c24-4b04-936b-3fdb66afc498","savedPayload":{"position":{"x":22297.11201635209,"y":15455.992865334816},"targetPosition":{"x":21167.86746331339,"y":15231.652340809325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0","savedPayload":{"position":{"x":20603.36363511174,"y":18694.129890206892},"targetPosition":{"x":19739.430115806885,"y":18694.122679239677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Conditions","id":"546d0a94-e878-41c1-a6e6-7dd28832f79b"}}},{"type":"Product Definition","name":"Strategies","code":"{\n \"codeName\": \"Simulation-Strategies\",\n \"singularVariableName\": \"simulationStrategy\",\n \"pluralVariableName\": \"simulationStrategies\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [\n \"24-hs\",\n \"12-hs\",\n \"08-hs\",\n \"06-hs\",\n \"04-hs\",\n \"03-hs\",\n \"02-hs\",\n \"01-hs\"\n ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/Protocol-Engine/Output/@Session/Simulation-Strategies/Multi-Period-Market/@Period\",\n \"fileName\": \"Data.json\"\n}","id":"cb317eb0-047c-4076-bd46-7add2423aa87","savedPayload":{"position":{"x":21645.427392603353,"y":15782.82941894635},"targetPosition":{"x":21080.372643799532,"y":15671.674889710368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [\n \"45-min\",\n \"40-min\",\n \"30-min\",\n \"20-min\",\n \"15-min\",\n \"10-min\",\n \"05-min\",\n \"04-min\",\n \"03-min\",\n \"02-min\",\n \"01-min\"\n ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/Protocol-Engine/Output/@Session/Simulation-Strategies/Multi-Period-Daily/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/Protocol-Engine/Output/@Session/Simulation-Strategies/Multi-Period-Daily\",\n \"fileName\": \"Data.Range.json\"\n }\n}","id":"41498979-9228-4151-8b94-0d8acdf257e8","savedPayload":{"position":{"x":21612.101969438372,"y":15892.580567984394},"targetPosition":{"x":21080.372643799532,"y":15671.674889710368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"77ad2d38-fbe8-480b-a8a0-0757a09f09d4","savedPayload":{"position":{"x":22013.815524304577,"y":16024.064636502942},"targetPosition":{"x":22037.69548815891,"y":16311.141578689296},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"23b7aa0b-5be6-4e07-a858-d89b588eec97","savedPayload":{"position":{"x":22247.26051574544,"y":16113.204151356951},"targetPosition":{"x":22037.69548815891,"y":16311.141578689296},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","code":"{\n \"codeName\": \"status\",\n \"isString\": false\n}","id":"fae7e152-d3b6-4508-a4de-a0db478ca92d","savedPayload":{"position":{"x":22323.225412140782,"y":16351.317623488956},"targetPosition":{"x":22037.69548815891,"y":16311.141578689296},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Number","code":"{\n \"codeName\": \"number\",\n \"isString\": false\n}","id":"6c18d6ae-089b-483f-979f-e434991bcae0","savedPayload":{"position":{"x":22184.305094325624,"y":16559.301378845896},"targetPosition":{"x":22037.69548815891,"y":16311.141578689296},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Rate","code":"{\n \"codeName\": \"beginRate\",\n \"isString\": false\n}","id":"2d17ff8b-946c-45bd-b665-426e7ed5ec64","savedPayload":{"position":{"x":21935.377762411652,"y":16580.232356370645},"targetPosition":{"x":22037.69548815891,"y":16311.141578689296},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Rate","code":"{\n \"codeName\": \"endRate\",\n \"isString\": false\n}","id":"60112244-d5d6-41df-8e89-685366751ecd","savedPayload":{"position":{"x":21763.531540912118,"y":16398.399932372697},"targetPosition":{"x":22037.69548815891,"y":16311.141578689296},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8d502c73-b428-4428-93cc-6336d63dd21d","savedPayload":{"position":{"x":22037.69548815891,"y":16311.141578689296},"targetPosition":{"x":21080.372643799532,"y":15671.674889710368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"36051f0f-5161-48a6-9d13-eb1766b5566b","savedPayload":{"position":{"x":20537.573812724633,"y":19024.68949204937},"targetPosition":{"x":19739.430115806885,"y":18694.122679239677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Strategies","id":"9b0c4f4b-d67c-48ae-97f1-bd614e85ced8"}}},{"type":"Product Definition","name":"Trades","code":"{\n \"codeName\": \"Simulation-Trades\",\n \"singularVariableName\": \"simulationTrade\",\n \"pluralVariableName\": \"simulationTrades\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [\n \"24-hs\",\n \"12-hs\",\n \"08-hs\",\n \"06-hs\",\n \"04-hs\",\n \"03-hs\",\n \"02-hs\",\n \"01-hs\"\n ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/Protocol-Engine/Output/@Session/Simulation-Trades/Multi-Period-Market/@Period\",\n \"fileName\": \"Data.json\"\n}","id":"823a30de-093f-4c39-9181-5727c81bbad3","savedPayload":{"position":{"x":21310.34302724592,"y":16363.973392381764},"targetPosition":{"x":20830.972038038042,"y":16044.991927642319},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [\n \"45-min\",\n \"40-min\",\n \"30-min\",\n \"20-min\",\n \"15-min\",\n \"10-min\",\n \"05-min\",\n \"04-min\",\n \"03-min\",\n \"02-min\",\n \"01-min\"\n ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/Protocol-Engine/Output/@Session/Simulation-Trades/Multi-Period-Daily/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/Protocol-Engine/Output/@Session/Simulation-Trades/Multi-Period-Daily\",\n \"fileName\": \"Data.Range.json\"\n }\n}","id":"486698b4-c159-4bb7-8d4a-7057aa94e903","savedPayload":{"position":{"x":21237.528420623774,"y":16452.62547493929},"targetPosition":{"x":20830.972038038042,"y":16044.991927642319},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"1481ecbc-72f4-4ae6-a80e-63e57be003c8","savedPayload":{"position":{"x":21526.749219532623,"y":16719.632146400974},"targetPosition":{"x":21470.510993024716,"y":17002.099097634855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"cdc28bbd-202e-4363-bf88-dc6a981b54b5","savedPayload":{"position":{"x":21710.257102518342,"y":16842.11318287327},"targetPosition":{"x":21470.510993024716,"y":17002.099097634855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","code":"{\n \"codeName\": \"status\",\n \"isString\": false\n}","id":"6b5b99b5-421a-42b2-a621-8b778742783d","savedPayload":{"position":{"x":21753.300838539453,"y":17058.313285027274},"targetPosition":{"x":21470.510993024716,"y":17002.099097634855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Last Trade ROI","code":"{\n \"codeName\": \"lastTradeROI\",\n \"isString\": false\n}","id":"4219b9f2-492d-4eab-9472-1f8195eb216a","savedPayload":{"position":{"x":21630.680241279813,"y":17241.817091470664},"targetPosition":{"x":21470.510993024716,"y":17002.099097634855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","code":"{\n \"codeName\": \"exitType\",\n \"isString\": false\n}","id":"c5612569-dc10-4153-aff5-dccfadbf2d16","savedPayload":{"position":{"x":21414.469511992465,"y":17284.885295586482},"targetPosition":{"x":21470.510993024716,"y":17002.099097634855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Rate","code":"{\n \"codeName\": \"beginRate\",\n \"isString\": false\n}","id":"fafe1ef3-e00e-482b-8bfb-c61171478260","savedPayload":{"position":{"x":21231.003655296427,"y":17162.283074609644},"targetPosition":{"x":21470.510993024716,"y":17002.099097634855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Rate","code":"{\n \"codeName\": \"endRate\",\n \"isString\": false\n}","id":"24385194-d717-4c93-a938-4ba3f6be3c67","savedPayload":{"position":{"x":21188.040179269356,"y":16946.0429660732},"targetPosition":{"x":21470.510993024716,"y":17002.099097634855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7201c4b3-e6c0-49eb-8f8d-bb24c51f3786","savedPayload":{"position":{"x":21470.510993024716,"y":17002.099097634855},"targetPosition":{"x":20830.972038038042,"y":16044.991927642319},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a26dc922-ca08-43ef-983e-029b76f39163","savedPayload":{"position":{"x":20350.26393995069,"y":19304.98804070431},"targetPosition":{"x":19739.430115806885,"y":18694.122679239677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Trades","id":"382004c6-e318-4d9d-9791-505f329f1e54"}}},{"type":"Product Definition","name":"Execution","code":"{\n \"codeName\": \"Live-Trading-History\",\n \"singularVariableName\": \"liveTradingHistory\",\n \"pluralVariableName\": \"liveTradingHistory\"\n}","datasets":[{"type":"Dataset Definition","name":"Oficial History","code":"{\n \"codeName\": \"Oficial History\",\n \"type\": \"File Sequence\",\n \"validTimeFrames\": [\n \"24-hs\",\n \"12-hs\",\n \"08-hs\",\n \"06-hs\",\n \"04-hs\",\n \"03-hs\",\n \"02-hs\",\n \"01-hs\",\n \"45-min\",\n \"40-min\",\n \"30-min\",\n \"20-min\",\n \"15-min\",\n \"10-min\",\n \"05-min\",\n \"04-min\",\n \"03-min\",\n \"02-min\",\n \"01-min\"\n ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/Protocol-Engine/Output/@Session/Trading-Process\",\n \"fileName\": \"Execution.History.Live.@Sequence.json\"\n}","id":"3ad0f044-95e9-4ae7-9169-9dacfc13c011","savedPayload":{"position":{"x":20745.560551482627,"y":16793.137906997705},"targetPosition":{"x":20457.706848108457,"y":16294.47234980171},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[],"id":"848b3eb1-afc1-406a-ab21-15ecbc893766","savedPayload":{"position":{"x":20755.575926854544,"y":17406.452734807775},"targetPosition":{"x":20457.706848108457,"y":16294.47234980171},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"05ce9ca7-8b5b-4974-a45e-ca319fc85330","savedPayload":{"position":{"x":20069.909069393714,"y":19492.282885869707},"targetPosition":{"x":19739.430115806885,"y":18694.122679239677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Simulation Execution","id":"96dede74-e7bc-4c50-a9ba-2bec8a5f4884"}}}],"id":"b4f01468-c3e6-405e-8152-e460f597f98a","savedPayload":{"position":{"x":19739.430115806885,"y":18694.122679239677},"targetPosition":{"x":18874.571706269082,"y":18694.127167364633},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}}],"plotters":[{"type":"Plotter","name":"Plotters-Trading-Simulation","code":"{\n\"codeName\" : \"PlottersTradingSimulation\"\n}","modules":[{"type":"Plotter Module","name":"Trading Simulation","code":"{\n\"codeName\": \"TradingSimulation\",\n\"isLegacy\": true,\n\"icon\": \"placeholder\"\n}","panels":[{"type":"Plotter Panel","name":"Trading Simulation Panel","code":"{ \n\"codeName\": \"TradingSimulationAssetBalancesPanel\" ,\n\"isLegacy\": true\n}","panelData":[],"id":"0061c7b0-341d-41a7-a0a6-b675f25b7da8","savedPayload":{"position":{"x":13721.273513044503,"y":16787.662119193374},"targetPosition":{"x":13932.52744544112,"y":17576.65107359537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Simulation Current Position","code":"{ \n\"codeName\": \"TradingSimulationCurrentPositionPanel\" ,\n\"isLegacy\": true\n}","panelData":[],"id":"27e36e5d-3553-4312-b0c0-85143c408e38","savedPayload":{"position":{"x":14340.855604578623,"y":16869.27420917963},"targetPosition":{"x":13932.52744544112,"y":17576.65107359537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Simulation Partial Results","code":"{ \n\"codeName\": \"TradingSimulationPartialResultsPanel\" ,\n\"isLegacy\": true\n}","panelData":[],"id":"f7258c3b-6e90-45af-b409-3f9969607bf6","savedPayload":{"position":{"x":14721.517804950498,"y":17365.24399743455},"targetPosition":{"x":13932.52744544112,"y":17576.65107359537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7864b9e4-3150-4d1d-abd9-0a43a9fe4c4f","savedPayload":{"position":{"x":16921.81438235152,"y":15752.60626753822},"targetPosition":{"x":17823.347866708307,"y":15231.798345622768},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Conditions","code":"{\n\"codeName\": \"Conditions\",\n\"isLegacy\": true,\n\"icon\": \"band\"\n}","panels":[],"id":"546d0a94-e878-41c1-a6e6-7dd28832f79b","savedPayload":{"position":{"x":16817.62004445079,"y":15501.254512482186},"targetPosition":{"x":17823.347866708307,"y":15231.798345622768},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Strategies","code":"{\n\"codeName\": \"Strategies\",\n\"isLegacy\": true,\n\"icon\": \"quality\"\n}","panels":[],"id":"9b0c4f4b-d67c-48ae-97f1-bd614e85ced8","savedPayload":{"position":{"x":16782.10966360884,"y":15231.800959101129},"targetPosition":{"x":17823.347866708307,"y":15231.798345622768},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Trades","code":"{\n\"codeName\": \"Trades\",\n\"isLegacy\": true,\n\"icon\": \"band\"\n}","panels":[],"id":"382004c6-e318-4d9d-9791-505f329f1e54","savedPayload":{"position":{"x":16817.619379696942,"y":14962.32630325959},"targetPosition":{"x":17823.347866708307,"y":15231.798345622768},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Simulation Execution","code":"{\n\"codeName\": \"SimulationExecution\",\n\"isLegacy\": true,\n\"icon\": \"band\"\n}","panels":[{"type":"Plotter Panel","name":"Simulation Execution Panel","code":"{ \n\"codeName\": \"SimulationExecutionPanel\" ,\n\"isLegacy\": true\n}","panelData":[],"id":"7a1177aa-d297-4452-bad5-58b681a740ca","savedPayload":{"position":{"x":15158.851817438146,"y":18286.32025294244},"targetPosition":{"x":14342.350844104969,"y":18286.323877646697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"96dede74-e7bc-4c50-a9ba-2bec8a5f4884","savedPayload":{"position":{"x":16921.81314213248,"y":14710.97480739201},"targetPosition":{"x":17823.347866708307,"y":15231.798345622768},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"90f0675d-f4d1-480f-aa75-c8162d53ea0f","savedPayload":{"position":{"x":17773.737412808296,"y":18694.131826028282},"targetPosition":{"x":18874.571706269082,"y":18694.127167364633},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6a54eece-4582-4cda-a854-1cd805e00fed","savedPayload":{"position":{"x":18874.571706269082,"y":18694.127167364633},"targetPosition":{"x":18874.571706269082,"y":18694.127167364633},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}} \ No newline at end of file diff --git a/DocSchema.json b/DocSchema.json new file mode 100644 index 000000000..090ebbfbe --- /dev/null +++ b/DocSchema.json @@ -0,0 +1 @@ +[{"type":"Plotter Module","definition":"A plotter module is a device within a plotter that contains the definitions to create the visualization for a product definition.","content":["\r","\r","A single plotter may have several modules. Different modules may be used to plot each product of the bot, or as best suits the expected use-pattern.\r","\r","[![Plotter-Module-01](https://user-images.githubusercontent.com/13994516/71016077-eab41180-20f4-11ea-87e7-7262ff10a1ab.gif)](https://user-images.githubusercontent.com/13994516/71016077-eab41180-20f4-11ea-87e7-7262ff10a1ab.gif)\r","\r","{% include important.html content=\"For a bot to use a plotter, the corresponding product definition must establish a reference with the plotter module built to interpret the dataset.\" %}\r","\r","[![Plotter-Module-02-Product-Link](https://user-images.githubusercontent.com/13994516/71016079-eab41180-20f4-11ea-8afb-96321f9c68d8.gif)](https://user-images.githubusercontent.com/13994516/71016079-eab41180-20f4-11ea-8afb-96321f9c68d8.gif)\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a plotter module, select *Add Plotter Module* on the plotter node menu.\r","\r"],"configuring":["\r","\r","Select *Configure Plotter Module* on the menu to access the configuration.\r","\r","```json\r","{\r"," \"codeName\": \"Module Name\",\r"," \"isLegacy\": true,\r"," \"icon\": \"histogram\"\r","}\r","```\r","\r","* ```codeName``` is the name used in the code to refer to the module.\r","\r","* ```isLegacy``` is ```true``` for plotters modules developed entirely in JavaScript, and is ```false``` or doesn't show in the configuration for plotters built with the tools featured in the data mine hierarchy.\r","\r","* ```icon``` is the name of the image that illustrates the corresponding layer in the Layers Panel. In case the banner is not specified, the *default banner* is used. Current possible values are:\r","\r","\r","| Value | Image|\r","| :---: | :---: |\r","| ```default``` | ![Default-Banner](https://user-images.githubusercontent.com/13994516/70896073-5bbdd100-1ff0-11ea-84e3-5bd90475976f.png) |\r","| ```histogram``` | ![Histogram-Banner](https://user-images.githubusercontent.com/13994516/70896074-5bbdd100-1ff0-11ea-8dad-ccc6cfe64beb.png) |\r","| ```band``` | ![Bands-Banner](https://user-images.githubusercontent.com/13994516/70896072-5bbdd100-1ff0-11ea-8626-61c36bd22a3c.png) |\r","| ```moving-average``` | ![Moving-Average-Banner](https://user-images.githubusercontent.com/13994516/70896075-5bbdd100-1ff0-11ea-9909-dae33e57f65f.png) |\r","| ```oscillator``` | ![Oscillator-Banner](https://user-images.githubusercontent.com/13994516/70896076-5c566780-1ff0-11ea-8a5b-20077257c560.png) |\r","| ```trend``` | ![trends-banner](https://user-images.githubusercontent.com/13994516/70989177-744aeb80-20c3-11ea-88f5-d10473fa79b9.png) |\r","\r","Custom images may be added too. To do that:\r","\r","1. name the image in the following format: ```image-name.png```;\r","\r","1. place images in the ```WebServer\\Images\\Icons``` folder;\r","\r","1. in the configuration of the module, use the name as is (e.g.: ```\"icon\": \"image-name\"```)\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Nodes Values"},{"type":"Nodes Highlights"},{"type":"Nodes Errors"},{"type":"Nodes Warnings"},{"type":"Nodes Infos"},{"type":"Nodes Status"},{"type":"Nodes Progress"},{"type":"Nodes Running"},{"type":"Nodes Announcements"},{"type":"Record Values"},{"type":"Shapes","definition":"The shapes node contains definitions of polygons and styles to be rendered on a per-period basis over the charts.","content":["\r","\r","A plotter recursively renders graphics for each period or candle. This means that a definition of what shapes need to be drawn for a single period is required. The plotter does the same thing for every period or candle that is visible on the screen at any point in time, for any time frame, as long as the corresponding data is available.\r","\r","[![Shapes-01-show-off](https://user-images.githubusercontent.com/13994516/71016080-eab41180-20f4-11ea-84c6-a514b87d568f.gif)](https://user-images.githubusercontent.com/13994516/71016080-eab41180-20f4-11ea-84c6-a514b87d568f.gif)\r","\r","In general terms, the process of defining what is going to be rendered on the screen consist of the following four steps:\r","\r"," 1. Identifying points defined by ```[x,y]``` coordinates\r"," 2. Defining polygons\r"," 3. Defining default styles\r"," 4. Defining conditional styles\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a shapes node, select *Add Shapes* on the plotter module menu.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Plotter Panel","definition":"A plotter panel usually shows numerical representations of data over the charts on a small window or panel. The plotter panel node features definitions to make that possible.","content":["\r","\r","Beyond the graphic representation of data over the charts, plotters may also feature a *data panel*, that is, a numerical representation of the data showing the exact figures corresponding to the column or period that is in focus (the point of the charts where the mouse pointer is at any point).\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a plotter panel, select *Add Plotter Panel* on the plotter module node menu.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Panel Data","definition":"A panel data node represents a data field to be plotted on the plotter panel.","content":["\r","\r","The system renders a panel featuring a centered, single-column vertical arrangement of data, with a label and a data field right below it. The label of each data field on the panel is given—by default—by the label set for each panel data node.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a panel data node, select *Add Panel Data* on the plotter panel menu.\r","\r"],"configuring":["\r","\r","Select *Configure Panel Data* on the menu to access the configuration.\r","\r","```json\r","{\r"," \"valueDecimals\": 2\r","}\r","```\r","\r","* ```valueDecimals``` sets the number of decimals to be shown on the corresponding data field.\r","\r","To override the default manner in which the data is assembled on the panel, the following properties may be included and defined:\r","\r","```json\r","{\r"," \"labelText\": \"The Label\",\r"," \"labelPosition\": 15,\r"," \"valuePosition\": 20,\r"," \"valueDecimals\": 2\r","}\r","```\r","\r","* ```labelPosition``` and ```valuePosition``` represent the vertical distance of the corresponding fields to the top margin of the panel.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Data Formula","definition":"A data formula is a device used to assign a value to the panel data, usually in the form of the name of the corresponding record property.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a data formula, select *Add Data Formula* on the plotter panel menu.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Javascript Code","definition":"The JavaScript code node may hold any snippet of valid JavaScript.","content":["\r","\r","In the case of the master script, the JavaScript Code node features the code required to run each template script and handle the operations beyond the scope of individual template scripts.\r","\r","In the case of a template script, the JavaScript Code node features the code that deals with the specific scope of the template script only.\r","\r"],"folderName":"super_scripts","adding":["\r","\r","To add a JavaScript code node, select *Add JavaScript Code* on the master script or the template script node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Chart Points","definition":"A chart points groups definitions of coordinate points used to define polygons.","content":["\r","\r","The definition of a point consists of the name of the point and the corresponding values for the ```x``` and ```y``` coordinates. To create such definitions, point and point formulas are used.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a chart points node, select *Add Chart Points* on the shapes menu.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Point","definition":"A point is a definition of an [x,y] coordinate. The value [x] usually represents a datetime. The value [y] may refer to a price or some other concept.","content":["\r","\r","These coordinate points are used to define polygons. Values for ```[x,y]```coordinates are entered with a point formula.\r","\r","{% include tip.html content=\"Each point should be given a significant name so that it is easier to identify them at the time of establishing references with polygon vertices.\" %}\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a point, select *Add Point* on the chart points node menu.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Point Formula","definition":"A point formula is a node used to input the [x,y] coordinates of a point.","content":["\r","\r","To represent some form of variation of the price or a price derivative over time, a typical point formula consists of the following two coordinates: ```x = datetime``` and ```y = rate```.\r","\r","For example:\r","\r","**Point *SMA 20 Begin***\r","```js\r","x = record.begin\r","y = record.previous.sma20\r","```\r","\r","The example above shows the definition of the first of two points necessary to draw the segment of the 20-periods SMA curve for any particular period or candle. In this case, ```x = record.begin``` is the starting datetime of the period and ```y = record.previous.sma20``` is the rate of the 20-periods SMA of the previous period.\r","\r","{% include note.html content=\"The above variables are constructed with information originating at the product definition that references the corresponding plotter module.\" %}\r","\r","To complete the line segment corresponding to a single period, the closing datetime of the period and the closing rate for the 20-periods SMA are required:\r","\r","**Point *SMA 20 End***\r","```js\r","x = record.end\r","y = record.sma20\r","```\r","\r","The above system works very well for plotting all sorts of information over the candles, on the charts.\r","\r","An oscillator like RSI too needs the definition of the starting and ending datetime of the period as the value for the *x-axis*. However, the value for *axis y* fits a different scale.\r","\r","Anyway, the points definition is just as straight forward, for example:\r","\r","**Point *RSI Begin***\r","```js\r","x = record.begin\r","y = record.previous.value\r","```\r","\r","**Point *RSI End***\r","```js\r","x = record.end\r","y = record.value\r","```\r","\r","Points do not necessarily need to refer to values on the dataset produced by the corresponding data product. For example, absolute values for the *y-axis* may be used to describe fixed graphical elements, for instance, a horizontal line, or a box.\r","\r","**Point *Begin 20***\r","```js\r","x = record.begin\r","y = 20\r","```\r","\r","**Point *End 20***\r","```js\r","x = record.end\r","y = 20\r","```\r","\r","**Point *Begin 30***\r","```js\r","x = record.begin\r","y = 30\r","```\r","\r","**Point *End 30***\r","```js\r","x = record.end\r","y = 30\r","```\r","\r","The above four points are used to paint the background of the 20 to 30 value range of the RSI chart. The first two points are also used to draw the dotted line signaling the 20-value mark, and the last two are used for the dotted line indicating the 30-value mark.\r","\r","{% include note.html content=\"The reason from separating the definition of points from the definition of polygons is that any point may be used by one or more polygons.\" %}\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a point formula, select *Add Point Formula* on the point node menu.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Image","definition":"The image node allows overlaying an image over the charts, controlling its position, size, and when it shall be rendered.","content":["\r","\r","The foremost requirement for images is that they are in the ```png``` format, 24 bits, with transparency, a low case extension, and are square.\r","\r","If you envision contributing your indicator so that the community may use it, then please follow the guidelines in the [contribute icons](contributing-icons.html#technical-requirements) page, in particular, the Technical Requirements.\r","\r","Images must the stored in the following path: ```\\BackendServers\\WebServer\\Images\\Icons\\style-01```\r","\r","{% include note.html content=\"See the configuration for further details.\" %}\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. \r","\r"],"configuring":["\r","\r","Select *Configure* on the menu to access the configuration.\r","\r","```json\r","{ \r"," \"codeName\": \"imagename\", \r"," \"size\": 15\r","}\r","```\r","\r","* ```codeName``` is the name of the image, without the ```.png``` extension.\r","\r","* ```size``` is the size at which the image shall be rendered, in pixels. \r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Image Condition","definition":"An image condition is a rule that allows establishing when an image shall be rendered and when not.","content":["\r","\r","The node is optional. When the node is not present in the definition of the image or when the condition validates ```true```, the image is rendered on screen. When the condition validates ```false``` the image is not rendered. As such, the node allows dynamically switching the rendering of the corresponding image on and off .\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Image Position","definition":"The image position node is a reference to a point defined in the chart points, and serves to determine the position in which the image shall be placed.","content":["\r","\r","The image position node works similarly to the polygon vertex in the sense that it must establish a reference with a point in the charts point to acquire a defined coordinate that determines where the image shall be placed.\r","\r","{% include note.html content=\"See the configuration for further details.\" %}\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. \r","\r"],"configuring":["\r","\r","Select *Configure* on the menu to access the configuration.\r","\r","```json\r","{ \r"," \"offsetX\": 0,\r"," \"offsetY\": 10\r","}\r","```\r","\r","* ```offsetX``` is an offset in the X axis, in pixels, applied to displace the image in relation to the coordinate point defined by the reference of the node. Negative values displace the image to the left and positive values to the right.\r","\r","* ```offsetY``` is an offset in the Y axis. Negative values displace the image downwards and positive values displace the image upwards.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Text","definition":"The text node allows overlaying text on the charts, controlling its position, size, appearance, and when it shall be rendered.","content":["\r","\r","The node's offspring control the different aspects of how, where, and when text shall be rendered over the charts.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Text Style","definition":"The text style is a definition of color, opacity, and font size that determines the appearance of the text to be rendered over the charts.","content":["\r","\r","{% include note.html content=\"See the configuration for further details.\" %}\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. \r","\r"],"configuring":["\r","\r","Select *Configure* on the menu to access the configuration.\r","\r","```json\r","{\r"," \"paletteColor\": \"UI_COLOR.GREY\",\r"," \"opacity\": 0.5,\r"," \"fontSize\": 10\r","}\r","```\r","\r","* ```paletteColor``` is one of the predefined colors available, as described in the configuration of the *Style* node.\r","\r","* ```opacity``` is probably self-explanatory, and may range from 0 for a fully transparent object to 1 for a solid object.\r","\r","* ```fontSize``` is self explanatory too; values above zero produce the expected results.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Text Condition","definition":"A text condition is a rule that allows establishing when text shall be rendered and when not.","content":["\r","\r","The node is optional. When the node is not present in the definition of the text node or when the condition validates ```true```, the text is rendered on screen. When the condition validates ```false```, text is not rendered. As such, the node allows dynamically switching the rendering of the corresponding text on and off .\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Text Position","definition":"The text position node is a reference to a point defined in the chart points, and serves to determine the position in which text shall be rendered.","content":["\r","\r","The text position node works similarly to the image position node in the sense that it must establish a reference with a point in the charts point to acquire a defined coordinate that determines where the text shall be placed.\r","\r","{% include note.html content=\"See the configuration for further details.\" %}\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. \r","\r"],"configuring":["\r","\r","Select *Configure* on the menu to access the configuration.\r","\r","```json\r","{ \r"," \"offsetX\": 0,\r"," \"offsetY\": 10\r","}\r","```\r","\r","* ```offsetX``` is an offset in the X axis, in pixels, applied to displace the text in relation to the coordinate point defined by the reference of the node. Negative values displace the text to the left and positive values to the right.\r","\r","* ```offsetY``` is an offset in the Y axis. Negative values displace the text downwards and positive values displace the image upwards.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Text Formula","definition":"The text formula determines the content that shall be rendered over the charts.","content":["\r","\r","The text formula may use any of the variables available to the plotter, and may produce either a numeric or a text string result.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Polygon","definition":"A polygon features definitions that makeup shapes and their styles.","content":["\r","\r","Polygons are defined by two or more vertices, which map points in a charts point. The graphic representation of polygons originates in styles applied to either or both polygon bodies and polygon borders. \r","\r","{% include note.html content=\"The order in which polygons are ordered around the parent shapes node determines the order in which they are drawn on the screen. In cases on which polygons intersect, those drawn last are drawn on top of those drawn first.\" %}\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a polygon, select *Add Polygon* on the shapes node menu.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Polygon Condition","definition":"A polygon condition is a rule that allows establishing when a polygon shall be rendered and when not.","content":["\r","\r","The node is optional. When the node is not present in the definition of the polygon or when the condition validates ```true```, the polygon is rendered on screen. When the condition validates ```false``` the polygon is not rendered. As such, the node allows dynamically switching the rendering of the corresponding polygon on and off.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a polygon condition, select *Add Polygon Condition* on a polygon node menu.\r","\r"],"configuring":["\r","\r","Select *Edit Condition* on the menu to access the configuration.\r","\r","Polygon conditions work pretty much like conditions used on trading systems. The main difference is that the variables available are solely those provided by the bot product definition that reference the corresponding plotter module.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Polygon Body","definition":"A polygon body is the fill of a shape made out of at least three vertices.","content":["\r","\r","A polygon body needs at least three vertices to be defined. A body serves to create a *fill* for the outlines of any sort of polygon, either closed or open, by giving it a style.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a polygon body, select *Add Polygon Body* on the polygon node menu.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Polygon Border","definition":"A polygon border is a shape defined by at least two vertices used to draw lines or to apply a style to the stroke of a closed shape.","content":["\r","\r","A polygon border needs at least two vertices to be defined. A border serves to create a *stroke* for the outlines of any sort of polygon, either closed or open, by giving it a style.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a polygon border, select *Add Polygon Border* on the polygon node menu.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Style Condition","definition":"A style condition is a rule that allows applying an alternative style in cases where the rule validates true.","content":["\r","\r","Style conditions offer a way to introduce additional intelligence on the visual representation of data by using styles that respond to certain conditions.\r","\r","For example, the *Percentage Bandwidth* plotter module assigns a different color to the Moving Average line when it's going up or down.\r","\r","To do that, a style condition features it's own style so that, when the condition validates true, the new style is applied.\r","\r","Style conditions me be created in a sequence so that the style may continue changing upon the validation of a series of style conditions. The system evaluates all style conditions in a sequential order determined by their position in the rotational symmetry around the parent node. Each condition that is met may modify or add up to the resulting style that is rendered on screen. That is, the final style is the result of the sequential application of the styles defined for each condition that is met, on top of the default style.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a style condition, select *Add Style Condition* on a polygon border or polygon body node menu.\r","\r"],"configuring":["\r","\r","Select *Edit Condition* on the menu to access the configuration.\r","\r","Style conditions work pretty much like conditions used on trading systems. The main difference is that the variables available are solely those provided by the bot product definition that reference the corresponding plotter module.\r","\r","To continue the example of the Percentage Bandwidth plotter, the following is the condition that determines the newly added styles:\r","\r","```js\r","record.previous.movingAverage > record.movingAverage\r","```\r","\r","As hinted earlier, when the condition is met, the default style is modified by a second style that may be created on the menu of the style condition node.\r","\r","The definition of secondary styles is slightly different from that of the default style, as—in such cases—the ```atMousePosition``` property may no longer be defined:\r","\r","```js\r","{\r"," \"opacity\": 0.55,\r"," \"lineWidth\": 1,\r"," \"lineDash\": [0,0],\r"," \"paletteColor\": \"UI_COLOR.RED\"\r","}\r","```\r","\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Style","definition":"A style is a definition of color and opacity in case of a polygon body, and color, opacity and line thickness in case of polygon borders.","content":["\r","\r","A style applied to a polygon body or a polygon border node acts as the default style. Styles including colors, opacity, line width, and more, are defined in the node's configuration.\r","\r","{% include note.html content=\"See the configuration for further details.\" %}\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a style, select *Add Style* on a polygon border or polygon body node menu.\r","\r"],"configuring":["\r","\r","Select *Configure Style* on the menu to access the configuration.\r","\r","A typical definition for a polygon *body style* looks like this:\r","\r","```json\r","{\r"," \"default\": {\r"," \"opacity\": 0.2,\r"," \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\r"," },\r"," \"atMousePosition\": {\r"," \"opacity\": 0.3,\r"," \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\r"," }\r","}\r","```\r","\r","A typical definition for a polygon *border style* has a couple more properties:\r","\r","```json\r","{\r"," \"default\": {\r"," \"opacity\": 0.2,\r"," \"lineWidth\": 1,\r"," \"lineDash\": [0,0],\r"," \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\r"," },\r"," \"atMousePosition\": {\r"," \"opacity\": 0.3,\r"," \"lineWidth\": 2,\r"," \"lineDash\": [0,0],\r"," \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\r"," }\r","}\r","```\r","\r","The first section of the definition refers, as explicitly stated, to the default state of the style.\r","\r","The second section refers to the style assigned to the column or period on which the mouse pointer is located. This is very useful for highlighting the specific zone of interest as the user browses the charts.\r","\r","* ```opacity``` is probably self-explanatory: it may range from ```0``` for a fully transparent object to ```1``` for a solid object.\r","\r","* ```paletteColor``` sets the color for the *fill* or *stroke* in cases of polygon bodies and polygon borders respectively. Use the variable ```UI_COLOR``` followed by a ```.``` and any of the properties in the following list for a selection of currently available colors:\r","\r","| Variable Value | RGB Value | Color Sample |\r","| :--- | :---: | :------------------- |\r","| ```DARK``` | 48, 48, 54 |   |\r","| ```LIGHT``` | 234, 226, 222 |   |\r","| ```GREY``` | 150, 150, 150 |   |\r","| ```LIGHT_GREY``` | 247, 247, 247 |   |\r","| ```WHITE``` | 255, 255, 255 |   |\r","| ```BLACK``` | 0, 0, 0 |   |\r","| ```GOLDEN_ORANGE``` | 240, 162, 2 |   |\r","| ```RUSTED_RED``` | 204, 88, 53 |   |\r","| ```GREEN``` | 188, 214, 67 |   |\r","| ```RED``` | 223, 70, 60 |   |\r","| ```PATINATED_TURQUOISE``` | 27, 153, 139 |   |\r","| ```TITANIUM_YELLOW``` | 244, 228, 9 |   |\r","| ```MANGANESE_PURPLE``` | 91,80, 122 |   |\r","| ```TURQUOISE``` | 74, 207, 217 |   |\r","| ```DARK_TURQUOISE``` | 2, 149, 170 |   |\r","\r","* ```lineWidth``` is the width of the border line, which should be greater than 0.\r","\r","* ```lineDash``` is used to turn the border into a dashed-line; the first value corresponds to the length of the dash while the second value defines the length of the space.\r","\r","{% include note.html content=\"When using dashed lines, bear in mind that the drawing from one column or period is independent of the next. Big values for dashes and spaces may not work well for lines that span several columns.\" %}\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Polygon Vertex","definition":"A polygon vertex is a reference to a point defined in the chart points, constituting a specific coordinate to be used as a vertex of a shape.","content":["\r","\r","Vertices are the main element defining polygons. Once created, each vertex must establish a reference to the corresponding point in the charts point.\r","\r","[![Vertex-01-add-and-link](https://user-images.githubusercontent.com/13994516/71016081-eb4ca800-20f4-11ea-8fee-4d38ecfb0596.gif)](https://user-images.githubusercontent.com/13994516/71016081-eb4ca800-20f4-11ea-8fee-4d38ecfb0596.gif)\r","\r","Drawing curves requires two vertices. Painting areas, such as the background of a chart, likely requires four vertices. Note that vertices are not capable of featuring a style. Instead, styles are applied to polygon borders and polygon bodies.\r","\r","{% include important.html content=\"Bear in mind that the order in which vertices in a polygon are arranged around the parent polygon node when their *rotational symmetry* property is selected, is the order in which the plotter computes the points. This means that points need to be in the correct order, for example, when drawing a box. Imagine drawing a box on a piece of paper without lifting the pencil... that is how the plotter does it.\" %}\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a polygon vertex, select *Add Polygon Vertex* on the polygon node menu.\r","\r","{% include tip.html content=\"Remember that a vertex must establish a reference to a point in the charts point to be properly defined\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Workspace"},{"type":"Situation","definition":"A situation refers to a specific state of the market in which a certain event should take place, as defined by any number of conditions.","content":["\r","\r","In other words, you define situations in which you wish a certain event to happen (*i.e.:* trigger on the strategy, take a position, etc.) and each situation is described as a set of conditions that need to be met for the event to be triggered.\r","\r","A situation gets validated when all conditions under it are true. \r","\r","An event may have more than one situation attached to it. In such a case, when any of the situations gets validated, the event gets triggered. That is, events may be triggered in different circumstances, meaning that you are free to define different situations upon which the same event would be triggered. In such a case, when any of the situations evaluate true, then the event is triggered.\r","\r"],"folderName":"trading_system","starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"adding":["\r","\r","To add a situation, select *Add Situation* on the corresponding event node menu. A situation is added along with a condition and JavaScript code node.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Condition","definition":"Conditions are rules within a situation. When all conditions under a situation validate true, then the situation gets validated as well, and the associated event is triggered.","content":["\r","\r","Therefore, conditions are used to mathematically describe what needs to happen with the market for a certain action to be taken.\r","\r","**For example:**\r","\r","**Situation 1**\r","\r","* Condition A: ```chart.at01hs.candle.close > chart.at01hs.bollingerBand.MovingAverage``` → This means that the latest candle at the 1 hour chart closed above the Bollinger Bands moving average.\r","\r","* Condition B: ```chart.at01hs.candle.previous.max > chart.at01hs.bollingerBand.previous.MovingAverage``` → This means that the maximum value of the candle before the last one, was higher than the Bollinger Bands moving average.\r"," \r","In the example above, conditions A and B are comparison statements that may evaluate either _true_ or _false_. In the case both would evaluate _true_ then Situation 1 would be true as well.\r","\r","{% include note.html content=\"To learn how to write conditions, start with the Syntax Overview.\" %}\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add a condition, select *Add Condition* on the corresponding situation node menu. A condition with its JavaScript code node is added.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Super Scripts","definition":"The super scripts hierarchy holds definitions of scripts used to automate certain aspects of the administration and maintenance of the workspace, such as installing and deleting markets.","content":["\r","\r","The super scripts hierarchy may be used by developers who wish to create their own scripts for automating the deployment or manitenance of all sorts of structures of nodes across any of the hierarchies in the design space.\r","\r","Regular users will find little to do with this hierarchy, even though they may use it indirectly, for instance, when installing or uninstalling markets.\r","\r","{% include important.html content=\"Changes made to super scripts shipping with the system may not be saved at the workspace level. If you wish to modify those hierarchies and use them in such modified versions, you need to clone them and modify the clone instead. To do this successfully, you need to learn more about [backups](suite-backups.html) and [clones](suite-clones.html).\" %}\r","\r"],"folderName":"super_scripts","adding":["\r","\r","To add a super scripts hierarchy, select *Add Super Scripts* on the workspace node menu. \r","\r"],"configuring":["\r","\r","Select *Configure Super Scripts* on the menu to access the configuration.\r","\r","```\r","{ \r","\"codeName\": \"Masters\"\r","}\r","```\r","\r","* ```codeName``` is the name of the hierarchy as is used in the system's code.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Scripts Library","definition":"A script library is a collection of related scripts.","content":["\r","\r","The script library node plays an organizational role, grouping masters scripts according to the criteria of the developer.\r","\r"],"folderName":"super_scripts","adding":["\r","\r","To add a scripts library, select *Add Scripts Library* on the super scripts node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Master Script","definition":"A master script contains the definitions of any number of template scripts along with the master JavaScript code providing the logic to implement them.","content":["\r","\r","In general terms, master scripts serve to atomize the complexity of the task at hand by subdividing the task into any number of specific scopes, handled by individual template scripts. The master script controls the execution of template scripts and solves issues beyond their scope.\r","\r","The current implementation of the Masters super scripts hierarchy features two master scripts you may use as examples. The Setup Market master script deals with all the steps required to install a new market, while the Delete Market Dependencies master script deals with uninstalling markets.\r","\r"],"folderName":"super_scripts","adding":["\r","\r","To add a master script, select *Add Master Script* on the scripts library node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Template Script","definition":"The template script node holds the definitions concerned with the scope of a particular structure of nodes.","content":["\r","\r","As such, a template script features all the components required to deal with such scope only.\r","\r","In the particular Masters super script implementation, each template script in the Setup Markets master script features a structure of nodes to be created in a specific location, and the associated JavaScript code deals with implementing such structure of nodes and establishing the corresponding references.\r","\r"],"folderName":"super_scripts","adding":["\r","\r","To add a template script, select *Add Template Script* on the scripts master script node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Template Structure","definition":"The template structure holds the structure of nodes with all its configurations and properties, exactly as it should be implemented.","content":["\r","\r","Properties include the physical arrangement of nodes, references and so on. \r","\r","{% include note.html content=\"The actual structure of nodes contained in the template usually originates as a clone of an existing structure of nodes.\" %}\r","\r"],"folderName":"super_scripts","adding":["\r","\r","To add a tempalte strucutre, select *Add Teemplate Structure* on the template script node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Template Target","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"super_scripts","adding":["\r","\r","To add a template target, select *Add Template Target* on the template script node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Super Action"},{"type":"Network","definition":"The network hierarchy provides the control functions for running data-mining and trading operations. Because operations may be run either on a single machine or distributed over a network of machines, it also contains definitions regarding the physical location in which nodes live or function.","content":["\r","\r","The network hierarchy defines where in the network you run each of the bots you choose to run, and where the data they output is stored. \r","\r","You will use the network hierarchy for the following purposes:\r","\r","* To control your data mining operation—that is, tasks running sensor and indicator bots. Data mining tasks process data that may be consumed by others; for example, so that your trading systems may count with quality information.\r","\r","* To control your testing environment—that is, trading sessions including backtesting and paper trading sessions.\r","\r","* To control your production environment—that is, forward testing, and live trading sessions.\r","\r","* To manage the storage of the data produced by the bots you run as outputs. This includes administering the physical locations on which the data products produced by bots reside.\r","\r","{% include note.html content=\"These processes may run together on a single machine, or may be distributed across a network of machines, or what we call a [trading farm](suite-fundamental-trading-farms-concepts.html). \" %}\r","\r","{% include warning.html content=\"At this stage, the system does not implement any form of security measures, therefore, Superalgos is to be run in the context of a restricted Local Area Network only, unless you implement your own network security.\" %}\r","\r"],"folderName":"network","adding":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Network Node","definition":"A network node represents a machine running Superalgos, on which processes run and data is stored.","content":["\r","\r","By default, processes are set up to run locally in a network node representing your local machine. However, the system is prepared to run distributed on a network of nodes, or what we call a trading farm.\r","\r","You may create unlimited network nodes and map them with different machines on a network. Each machine in the network runs an instance of the Superalgos backend, and you may control the whole network operation from a single machine, or—in general—from any machine in the network running the Superalgos frontend. To learn more about distributed setups, check the [trading farms](suite-fundamental-trading-farms-concepts.html) pages.\r","\r","The easiest and fastest way to set up a network node is using the *Install Market* function available on markets defined in the Crypto Ecosystem hierarchy, under the exchange markets node. This function adds data mining tasks for all sensor and indicator bots shipping with the system, backtesting and live trading tasks for trading systems shipping with the system, including the data storage definitions for both, and also creates the corresponding dashboards and charts in the Charting Space hierarchy. You may learn more about this function in the [how to install a new market](suite-how-to-install-a-new-market.html) page.\r","\r","If you need finer control over the operation you wish to deploy on the network, then you may use the individual functions available under each section of the hierarchy under the network node.\r","\r"],"folderName":"network","adding":["\r","\r","To add a network node, select *Add Network Node* on the *Superalgos Network* node menu. A network node is added along with the basic structure of nodes to set up a node.\r","\r"],"configuring":["\r","\r","Select *Configure Network Node* on the menu to access the configuration.\r","\r","```json\r","{ \r","\"host\": \"0.0.0.0\", \r","\"webPort\": \"34247\", \r","\"webSocketsPort\": \"8080\"\r","}\r","```\r","\r","* ```host``` is the machine or hardware represented by the network node, which must be identified by its IP address.\r","\r","* ```webPort``` is the port used by the Web Server, at this stage ```34247```.\r","\r","* ```webSocketsPort``` is the port used by the system to communicate over the local area network, by default set at ```8080```.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Task Manager","definition":"A task manager is a device used to organize and control any number of tasks, which, in turn, control bot instances. You use a task manager to start or stop several tasks at the same time.","content":["\r","\r","Task managers are used both in the context of data mining and trading operations, to facilitate the organization of tasks. \r","\r","For example, you may set up a task manager to handle tasks related to a particular set of indicators used with a certain strategy. Or, for example, to organize multiple backtesting sessions.\r","\r","{% include tip.html content=\"The key aspect of a task manager is that it allows starting and stopping all tasks at once.\" %}\r","\r"],"folderName":"network","adding":["\r","\r","To add a task manager, select *Add Task Manager* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","Select *Run All Tasks* or *Stop All Tasks* on the menu to start and stop all tasks respectively.\r","\r"]},{"type":"Task","definition":"A task is the device used to control bot instances, that is, to start and stop bots, including sensors, indicators and the trading bot.","content":["\r","\r","Each task controls a single bot. A bot instance running on its own task is independent from other bots at the operating system level, thus, may not be affected by errors ocurring on those other bots.\r","\r"],"folderName":"network","adding":["\r","\r","To add a task, select *Add Task* on the task manager node menu.\r","\r","{% include tip.html content=\"Instead of adding nodes, configuring them, and setting references one by one, you may want to clone an existing, fully functional task with all its offspring.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","Select *Run* on the menu to start a task. When a task is started, the process instance of the bot instance attached to the task is started. Also, a visual indication that both the task and the process instance are running appear surrounding the corresponding nodes, in the form of a progress ring.\r","\r","To stop a task, select *Stop* on the menu.\r","\r"]},{"type":"Trading Bot Instance","definition":"A trading bot instance is a reference to the trading bot as defined in the Masters data mine. The instance of the bot runs the defined processes and generates the defined data products.","content":["\r","\r","{{site.data.concepts.trading_bot}}\r","\r","The trading bot instance holds no definitions as to what the bot does. Instead, its process instance references the process definition in the Masters data mine. That is how the indicator bot instance obtains the information of what it needs to do once it is run.\r","\r"],"folderName":"network","adding":["\r","\r","To add a trading bot instance, select *Add Trading Bot Instance* on the task node menu. When a trading bot instance is added, it is created with one trading process instance, and a market reference.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","You do not start or stop a trading bot instance directly. Instead, you start or stop the corresponding task.\r","\r"]},{"type":"Sensor Process Instance","definition":"A sensor process instance is a reference to the process definition of a sensor bot, as defined in a data mine.","content":["\r","\r","For example, in the case of an instance of the Masters data mine Exchange Raw Data sensor bot, the bot process instance references the *Historic OHLCVs* process definition. Once the reference is established, the sensor process instance adopts the name of the process definition it references.\r","\r"],"folderName":"network","adding":["\r","\r","To add a sensor process instance, select *Add Sensor Process Instance* on the sensor bot instance node menu.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","You do not start or stop a sensor process instance directly. Instead, you start or stop the corresponding task.\r","\r"]},{"type":"Indicator Process Instance","definition":"An indicator process instance is a reference to the process definition of an indicator bot, as defined in a data mine.","content":["\r","\r","Indicator bot instances usually require two indicator process instances. One of them references the indicator's *multi-period-market* process definition and the second references the *multi-period-daily* process definition.\r","\r","Once the reference is established, the indicator process instance adopts the name of the process definition it references.\r","\r"],"folderName":"network","adding":["\r","\r","To add an indicator process instance, select *Add Indicator Process Instance* on the indicator bot instance node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","You do not start or stop an indicator process instance directly. Instead, you start or stop the corresponding task.\r","\r"]},{"type":"Trading Process Instance","definition":"A trading process instance is a reference to the process definition of the trading bot, as defined in the Masters data mine.","content":["\r","\r","The trading process instance must reference the *Multi-Period* process definition of the Jason trading bot in the Masters data mine.\r","\r"],"folderName":"network","adding":["\r","\r","To add a trading process instance, select *Add Trading Process Instance* on the trading bot instance node menu. When a trading process instance is added, it is created with a market reference.\r","\r","{% include note.html content=\"After adding a trading process instance node, make sure you establish the reference to the *Multi-Period* process definition of the Jason trading bot in the Masters data mine.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","You do not start or stop a trading process instance directly. Instead, you start or stop the corresponding task.\r","\r"]},{"type":"Backtesting Session","definition":"A backtesting session is a trading mode by which the trading bot instance reads historic market data in a user-defined datetime range, applies the rules defined in the associated trading system, and generates a trading simulation.","content":["\r","\r","A backtesting session node must reference a trading system to gain access to the trading logic to be applied during the session. Other considerations framing the session come from the set of parameters attached to it.\r","\r"],"folderName":"network","adding":["\r","\r","To add a backtesting session, select *Add Backtesting Session* on the trading process instance node menu. When a session is added, it is created with the full set of parameters.\r","\r","{% include note.html content=\"After adding a session node, make sure you establish a reference to the trading system you want it to work with.\" %}\r","\r"],"configuring":["\r","\r","Select *Configure Session* on the menu to access the configuration.\r","\r","```json\r","{\r","\"folderName\": \"Session-Name\"\r","}\r","```\r","\r","* ```folderName``` allows you to set a significant name to the folder in which the data products—and logs—generated by the session are stored. If left blank, the system names the folders with the session id. This may be handy when you intend to consult the raw data generated by the session, as, otherwise, the folder would be hard to identify.\r","\r"],"starting":["\r","\r","Before you start a backtesting session, the corresponding task needs to be running, as it is the task that puts the trading bot instance to run. Once the trading bot instance is running, select *Run* on the menu to start the session.\r","\r","After a few seconds, a literal indication of the progress of the calculations appears below the session node, displaying the date that is currently being processed. Once the calculation is finished, the session stops and the date below the session node dissapears.\r","\r","To stop a backtesting session, select *Stop* on the menu.\r","\r"]},{"type":"Trading Engine","definition":"The trading engine hierarchy is the data structure used by the trading bot to keep runtime information highly accessible and exposed to others.","content":["\r","\r","You will use this hierarchy for two main purposes:\r","\r","* **To let your trading systems access the information processed by the trading bot.** This allows strategies to keep track of and react to current and past events—including those involving the exchange, such as orders placed or filled—as the bot is running.\r","\r","* **To keep track of the actions of the trading bot via the design space visual environment and panels over the charts.** By analyzing runtime information, you may gain a detailed understanding of what happens, when, and why, throughout a trading session.\r","\r","The hierarchy exposes—literally—all the information processed by the trading bot, providing a comprehensive feedback loop to trading systems and analysis capabilities to users.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","{% include tip.html content=\"There may be more than one trading engine in a workspace. Cloning the default trading engine is the best way to start a new one.\" %}\r","\r","To add the {{ title | downcase }} node from scratch, select *Add Trading Engine* on the workspace node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Dynamic Indicators","definition":"","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Indicator Function","definition":"","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Episode","definition":"Episode is the object that handles the information corresponding to the whole run of the trading bot—beginning to end—between the specified initial datetime and final datetime, in the time range parameter of the trading session.","content":["\r","\r","In other words, episode is the context framed between the datetimes that make up the whole trading session, as per the session's configuration. As such, an episode keeps track of—and accumulates—the results of all positions entered throughout a complete run of a trading session.\r","\r","In this section of the hierarchy, you have access to:\r","\r","* **[running balances and overall performance metrics](suite-trading-engine-accounts-and-metrics.html)** denominated in both the base and quoted assets;\r","\r","* **[counters](suite-trading-engine-counters.html)**, such as the number of positions taken, orders placed, hits, fails, and so on;\r","\r","* **[statistics](suite-trading-engine-statistics.html)**, such as performance metrics consolidating both assets, number of days in the episode, or user-defined statistics;\r","\r","* **[the distance to certain events](suite-trading-engine-distance-to-event.html)**, such as the number of candles to the last take position event, or the last create order event;\r","\r","* **[rates describing each candle](suite-trading-engine-candle.html)** in the episode, such as the open, close, min and max rates;\r","\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Episode Counters","definition":"The episode counters node features counters of instances of objects that come to exist during the duration of the episode.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Position Counters","definition":"The position counters node features counters of instances of objects that come to exist during the duration of the position.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Strategy Counters","definition":"The strategy counters node features counters of instances of objects that come to exist while the strategy is open.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Order Counters","definition":"The order counters node features counters of instances of objects that come to exist while the order is open.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Positions","definition":"Positions counts the number of times positions have been opened, in the context of the parent node.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Strategies","definition":"Strategies counts the number of times strategies have been triggered-on, in the context of the parent node.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Orders","definition":"Orders counts the number of times orders have been placed, in the context of the parent node.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Fails","definition":"Fails counts the number of positions that closed with a negative profit loss, in the context of the parent node.","content":["\r","\r","{% include note.html content=\"The workings of the fail counts are analogous to the workings of the hits counts, reversing the sign. That is, when profit loss is negative, it is counted as a fail. Please refer to the definition of *hits* for the details.\" %}\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Hits","definition":"Hits counts the number of positions that closed with a positive profit loss, in the context of the parent node.","content":["\r","\r","In the context of the quoted asset or the base asset, *hits* are calculated relative to the asset in question. That is, if the base asset profit loss is positive, then a hit is counted for the base asset.\r","\r","However, when the context of the asset is not specified—such as under the statistics node—then *hits* are calculated in a consolidated manner, converting the respective balances to perform the calculations. \r","\r","{% include note.html content=\"The consolidated calculations are explained thoroughly in the profit loss node.\" %}\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Periods","definition":"Periods counts the number of candles that have been evaluated, in the context of the parent node.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"User Defined Counter","definition":"","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Episode Statistics","definition":"Episode statistics keeps track of several metrics in the context of the episode.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Stop Loss","definition":"Stop loss is the current stop loss target, as defined in the manage stage of the corresponding strategy.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Take Profit","definition":"Take profit is the current take profit target, as defined in the manage stage of the corresponding strategy.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Stop Loss Phase","definition":"Stop loss phase is the numeric value of the phase that is currently open, and thus, defining the value of the stop loss.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Take Profit Phase","definition":"Take profit phase is the numeric value of the phase that is currently open, and thus, defining the value of the take profit.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Take Profit Position","definition":"Take profit position indicates if the take profit target is above or below the position rate.","content":["\r","\r","Possible values are ```Above``` and ```Below```.\r","\r","The implications of setting the take profit target above or below the position rate are explained on the trading system section of the documentation, in particular while describing the [initial target rate definition](suite-strategies-open-targets.html#target-rate).\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Stop Loss Position","definition":"Stop Loss position indicates if the stop loss target is above or below the position rate.","content":["\r","\r","Possible values are ```Above``` and ```Below```.\r","\r","The implications of setting the stop loss target above or below the position rate are explained on the trading system section of the documentation, in particular while describing the [initial target rate definition](suite-strategies-open-targets.html#target-rate).\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Position Statistics","definition":"Position statistics keeps track of several metrics in the context of the position.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Stage Base Asset","definition":"The stage base asset node keeps track of the evolution of variables related to the base asset throughout the stage.","content":["\r","\r","{% include note.html content=\"Learn more about how accounts for the base asset and the quoted asset are kept in the [base asset and quoted asset](suite-trading-engine-base-asset-and-quoted-asset.html) page on the trading engine section of the documentation.\" %}\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Stage Quoted Asset","definition":"The stage quoted asset node keeps track of the evolution of variables related to the quoted asset throughout the stage.","content":["\r","\r","{% include note.html content=\"Learn more about how accounts for the base asset and the quoted asset are kept in the [base asset and quoted asset](suite-trading-engine-base-asset-and-quoted-asset.html) page on the trading engine section of the documentation.\" %}\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Episode Base Asset","definition":"The episode base asset node keeps track of the evolution of variables and metrics denominated in the base asset, throughout the episode.","content":["\r","\r","{% include note.html content=\"Learn more about how accounts for the base asset and the quoted asset are kept in the [base asset and quoted asset](suite-trading-engine-base-asset-and-quoted-asset.html) page on the trading engine section of the documentation.\" %}\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Episode Quoted Asset","definition":"The episode quoted asset node keeps track of the evolution of variables and metrics denominated in the quoted asset, throughout the episode.","content":["\r","\r","{% include note.html content=\"Learn more about how accounts for the base asset and the quoted asset are kept in the [base asset and quoted asset](suite-trading-engine-base-asset-and-quoted-asset.html) page on the trading engine section of the documentation.\" %}\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Position Base Asset","definition":"The position base asset node keeps track of the evolution of variables related to the base asset throughout the position.","content":["\r","\r","{% include note.html content=\"Learn more about how accounts for the base asset and the quoted asset are kept in the [base asset and quoted asset](suite-trading-engine-base-asset-and-quoted-asset.html) page on the trading engine section of the documentation.\" %}\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Position Quoted Asset","definition":"The position quoted asset node keeps track of the evolution of variables related to the quoted asset throughout the position.","content":["\r","\r","{% include note.html content=\"Learn more about how accounts for the base asset and the quoted asset are kept in the [base asset and quoted asset](suite-trading-engine-base-asset-and-quoted-asset.html) page on the trading engine section of the documentation.\" %}\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Order Statistics","definition":"Order statistics keeps track of several metrics in the context of the order.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Order Base Asset","definition":"The order base asset node keeps track of the evolution of certain properties of orders, denominated in the base asset.","content":["\r","\r","{% include note.html content=\"Learn more about how accounts for the base asset and the quoted asset are kept in the [base asset and quoted asset](suite-trading-engine-base-asset-and-quoted-asset.html) page on the trading engine section of the documentation.\" %}\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Order Quoted Asset","definition":"The order quoted asset node keeps track of the evolution of certain properties of orders, denominated in the quoted asset.","content":["\r","\r","{% include note.html content=\"Learn more about how accounts for the base asset and the quoted asset are kept in the [base asset and quoted asset](suite-trading-engine-base-asset-and-quoted-asset.html) page on the trading engine section of the documentation.\" %}\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"User Defined Statistic","definition":"A user defined statistic allows users to create custom metrics by defining the corresponding calculation in a formula, in the context of the parent node.","content":["\r","\r","The current contexts in which custom statistics may be defined are episodes, positions, and orders.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Profit Loss","definition":"Profit loss is the difference between the balance at the end and the balance at the beginning of a certain period, given by the context.","content":["\r","\r","In the context of the base asset or the quoted asset, the calculation is done by subtracting the balances in the corresponding assets, using the variable appropriate to the larger context (i.e.: episode, position, etc.).\r","\r","*In general terms:*\r","\r","* ```base asset profit loss = base asset end balance - base asset begin balance```\r","\r","* ```quoted asset profit loss = quoted asset end balance - quoted asset begin balance```\r","\r","*In the case of the episode base asset and episode quoted asset:*\r","\r","```\r","tradingEngine.current.episode.episodeBaseAsset.profitLoss.value =\r"," tradingEngine.current.episode.episodeBaseAsset.balance.value -\r"," sessionParameters.sessionBaseAsset.config.initialBalance\r"," \r","tradingEngine.current.episode.episodeQuotedAsset.profitLoss.value =\r"," tradingEngine.current.episode.episodeQuotedAsset.balance.value -\r"," sessionParameters.sessionQuotedAsset.config.initialBalance\r","```\r","\r","*In the case of the position base asset and position quoted asset:*\r","\r","```\r","tradingEngine.current.position.positionBaseAsset.profitLoss.value =\r"," tradingEngine.current.episode.episodeBaseAsset.balance.value -\r"," tradingEngine.current.position.positionBaseAsset.beginBalance\r"," \r","tradingEngine.current.position.positionQuotedAsset.profitLoss.value =\r"," tradingEngine.current.episode.episodeQuotedAsset.balance.value -\r"," tradingEngine.current.position.positionQuotedAsset.beginBalance\r","```\r","\r","In the context of the episode statistics or the position statistics, the calculation is done consolidating the profits of both assets. \r","\r","{% include note.html content=\"When the context does not refer to either of the assets in particular, then both assets are taken into account in the calculation.\" %}\r","\r","*In the context of the episode statistics:*\r","\r","```\r","tradingEngine.current.episode.episodeStatistics.profitLoss.value =\r"," tradingEngine.current.episode.episodeBaseAsset.profitLoss.value * \r"," tradingEngine.current.episode.candle.close.value +\r"," tradingEngine.current.episode.episodeQuotedAsset.profitLoss.value\r","```\r","\r","*In the context of the position statistics:*\r","\r","```\r","tradingEngine.current.position.positionStatistics.profitLoss.value =\r"," tradingEngine.current.episode.episodeBaseAsset.profitLoss.value * \r"," tradingEngine.current.position.endRate.value +\r"," tradingEngine.current.episode.episodeQuotedAsset.profitLoss.value\r","```\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Hit Ratio","definition":"Hit ratio is the percentage of positions that closed with a positive profit loss, in the context of the parent node.","content":["\r","\r","Hit ratio results from multiplying the number of hits by 100 and dividing it by the number of positions: ```hit ratio = hits * 100 / positions```.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Days","definition":"Days counts the number of days through which the trading bot has cycled since the object represented by the parent node was open.","content":["\r","\r","In the context of an episode, it counts the number of days in the episode.\r","\r","In the context of a position, it counts the number of days a position has been open.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Size Filled","definition":"Size filled is the amount of the order that has been filled at the exchange.","content":["\r","\r","In the context of a strategy stage, the size filled refers to the sum of the size filled for all orders placed on the corresponding stage.\r","\r","In the context of an order, it refers to the size filled for the particular order.\r","\r","Upon each execution of the trading bot, the system asks the exchange about the status of the orders placed, and the exchange reports back with the size filled and the actual rate at which orders are filled.\r","\r","In liquid markets, market orders should usually fill immediately. However, limit orders may fill incrementally. Size filled keeps track of how much of the size placed has been filled on every execution.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Percentage Filled","definition":"Percentage filled represents the portion of the order that has been filled, expressed as a percentage.","content":["\r","\r","*The formula:*\r","\r","```percentage filled = size filled * 100 / size```\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Actual Rate","definition":"Actual rate is the number reported by the exchange as the rate at which an order was filled.","content":["\r","\r","When the system consults the status of open orders with the exchange, the exchange responds with the size filled and the actual rate for the particular order. In case an order is filled incrementally, the value is updated accordingly. \r","\r","The system uses the actual rate to update the calculation of balances, which are otherwise calculated with the original rate, by default.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Fees Paid","definition":"Fees paid is the amount paid in fees.","content":["\r","\r","The exchange does not explicitly indicate how much has been paid in fees for a given transaction. Instead, when Superalgos verifies if an order has been filled or not, the exchange reports the size filled and the actual rate only.\r","\r","{% include callout.html type=\"success\" content=\"Exchange fees are *estimated* using the *fee structure* parameter set for the trading session. It is, therefore, important to set the correct values for that parameter.\" %}\r","\r","Exchanges deduct fees from the asset you are receiving. For instance, if you are selling BTC in the BTC-USDT market, then you are receiving USDT, and the exchange will deduct the fees directly from the amount of USDT you are receiving.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"ROI","definition":"ROI is a ratio that compares the profit loss with the cost of the investment, expressed as a percentage."},{"type":"Annualized Rate Of Return","definition":"Annualized rate of return is the equivalent ROI scaled to one year.","content":["\r","\r","In other words, it is the equivalent annual return received over a given period.\r","\r","*The formula:*\r","\r","```annualized rate of return = (((investment + profits) / investments) ^ (365 / days)) - 1```\r","\r","In the context of the episode base asset and episode quoted asset, the calculation is done relative to the corresponding assets, and the overall context.\r","\r","*The formulas:*\r","\r","```\r","tradingEngine.current.episode.episodeBaseAsset.annualizedRateOfReturn.value = \r","((( tradingEngine.current.episode.episodeBaseAsset.beginBalance.value +\r","tradingEngine.current.episode.episodeBaseAsset.profitLoss.value ) / \r","tradingEngine.current.episode.episodeBaseAsset.beginBalance.value) ^\r","(365 / tradingEngine.current.episode.episodeStatistics.days.value)) - 1\r","\r","tradingEngine.current.episode.episodeQuotedAsset.annualizedRateOfReturn.value = \r","((( tradingEngine.current.episode.episodeQuotedAsset.beginBalance.value +\r","tradingEngine.current.episode.episodeQuotedAsset.profitLoss.value ) / \r","tradingEngine.current.episode.episodeQuotedAsset.beginBalance.value) ^\r","(365 / tradingEngine.current.episode.episodeStatistics.days.value)) - 1\r","```\r","\r","*The JavaScript code:*\r","\r","```js\r","tradingEngine.current.episode.episodeBaseAsset.annualizedRateOfReturn.value = \r","Math.pow(\r"," ( tradingEngine.current.episode.episodeBaseAsset.beginBalance.value +\r"," tradingEngine.current.episode.episodeBaseAsset.profitLoss.value ) / \r"," tradingEngine.current.episode.episodeBaseAsset.beginBalance.value\r"," , \r"," (365 / tradingEngine.current.episode.episodeStatistics.days.value)\r"," ) - 1\r","\r","tradingEngine.current.episode.episodeQuotedAsset.annualizedRateOfReturn.value = \r","Math.pow(\r"," ( tradingEngine.current.episode.episodeQuotedAsset.beginBalance.value +\r"," tradingEngine.current.episode.episodeQuotedAsset.profitLoss.value ) / \r"," tradingEngine.current.episode.episodeQuotedAsset.beginBalance.value\r"," , \r"," (365 / tradingEngine.current.episode.episodeStatistics.days.value)\r"," ) - 1\r","```\r","\r","In the context of the episode statistics, the calculation is done using the consolidated balance, as explained in the profit loss definition. \r","\r","{% include note.html content=\"When the context does not refer to either of the assets in particular, then both asset balances are consolidated, and denominated in the quoted asset.\" %}\r","\r","*The JavaScript code:*\r","\r","```js\r","tradingEngine.current.episode.episodeStatistics.annualizedRateOfReturn.value =\r","Math.pow(\r"," (\r"," tradingEngine.current.episode.episodeBaseAsset.beginBalance.value * \r"," tradingEngine.current.episode.beginRate.value +\r"," tradingEngine.current.episode.episodeQuotedAsset.beginBalance.value +\r"," tradingEngine.current.episode.episodeBaseAsset.profitLoss.value +\r"," tradingEngine.current.episode.episodeQuotedAsset.profitLoss.value\r"," ) / \r"," (\r"," tradingEngine.current.episode.episodeBaseAsset.beginBalance.value * \r"," tradingEngine.current.episode.beginRate.value +\r"," tradingEngine.current.episode.episodeQuotedAsset.beginBalance.value \r"," ) \r"," , \r"," (\r"," 365 / tradingEngine.current.episode.episodeStatistics.days.value\r"," ) \r"," ) - 1\r","```\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Hit Fail","definition":"Hit fail states whether a transaction is successful or not, hit meaning it is successful and fail meaning it is not.","content":["\r","\r","Superalgos marks positions and even entire episodes as hits or fails, by evaluating profit loss for the corresponding context. If profit loss is positive, then the position or episode is a hit. If profit loss is negative, it is a fail.\r","\r","{% include note.html content=\"Please refer to the definition of *hits* for the details.\" %}\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Current","definition":"The current object refers to the context in which instances of several other objects exist—like episode, strategy, position, strategy stages, and so on—in particular, the instances that are open at the time of evaluation, hence the adjective current.","content":["\r","\r","Conceptually, current is used as an adjective applied to different concepts, such as the current episode, the current strategy, the current position, or the current strategy stage, to indicate the instance that is passing at the moment.\r","\r","The generation of offspring nodes under the current section of the hierarchy keeps track of information within the scope of the embodied concept: episode, strategy, position, and so on. \r","\r","In other words, the episode, strategy and position nodes within the current section of the hierarchy feature information relative to the instances of the episode, strategy, and position that are currently passing, at any point in time.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the current node, select *Add Missing Items* on the trading engine node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Balance","definition":"Balance is the running balance, that is, the amount of the asset that exists at any point in time.","content":["\r","\r","The balance of an asset changes every time an order involving the asset is filled. When the trading bot consults the exchange to find out the status of each order placed, the exchange answers with the size filled and actual rate for the order. That is the information used to calculate balances.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Begin Balance","definition":"Begin balance is the balance at the datetime of the begin property of the parent node or concept.","content":["\r","\r","In the context of an episode, it is the balance at the datetime the episode started.\r","\r","In the context of a position, it is the balance at the datetime the position started.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"End Balance","definition":"End balance is the balance at the datetime of the end property of the parent node or concept.","content":["\r","\r","In the context of an episode, it is the balance at the datetime the episode ended.\r","\r","In the context of a position, it is the balance at the datetime the position was closed.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Distance To Event","definition":"Distance to event features counters indicating how many periods (candles) have passed since the last occurrence of certain events, in the context of the episode.","content":["\r","\r","The information may be used from within strategies, for example, to leave a cool-down period in-between positions, to separate orders in specific intervals, or to achieve any particular logic that may require counting how much time has passed since the last time a specific event was triggered.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Trigger On","definition":"Counts the periods since the last time a strategy was triggered on.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Trigger Off","definition":"Counts the periods since the last time a strategy was triggered off.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Take Position","definition":"Counts the periods since the last time a position was taken.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Close Position","definition":"Counts the periods since the last time a position was closed.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Next Phase","definition":"Counts the periods since the last time a next phase event was triggered.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Move To Phase","definition":"Counts the periods since the last time a move to phase event was triggered.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Create Order","definition":"Counts the periods since the last time an order was created.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Cancel Order","definition":"Counts the periods since the last time an order was canceled.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Close Order","definition":"Counts the periods since the last time an order was closed.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Strategy Trigger Stage","definition":"Strategy trigger stage is the section of the data structure that keeps track of information specific to the scope of the trigger stage during the period the stage is open.","content":["\r","\r","The trigger stage is active from the instant the trigger-on event is triggered until either the trigger-off event or the take position event gets triggered. Therefore, this section of the data structure features information spaning those periods only.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Strategy Manage Stage","definition":"Strategy manage stage is the section of the data structure that keeps track of information specific to the scope of the manage stage during the period the stage is open.","content":["\r","\r","The manage stage is active from the instant the take position event is triggered until the instant either the stop or take profit targets are hit.\r","\r","Therefore, this section of the data structure features information spaning those periods only.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Strategy Open Stage","definition":"Strategy open stage is the section of the data structure that keeps track of information specific to the scope of the open stage during the period the stage is open.","content":["\r","\r","The open stage is open from the instant the take position event gets triggered, and starts closing from the instant one of the following things happen:\r","\r","* the target size is filled, \r","\r","* the close stage event is triggered, \r","\r","* the take profit or stop loss targets are hit. \r","\r","Therefore, this section of the data structure features information spaning those periods only.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Strategy Close Stage","definition":"Strategy close stage is the section of the data structure that keeps track of information specific to the scope of the close stage during the period the stage is open.","content":["\r","\r","The close stage is active from the instant either the stop loss or take profit targets are hit until the instant the target size is filled or the close stage event is triggered.\r","\r","Therefore, this section of the data structure features information spaning those periods only.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Strategy","definition":"The strategy section of the trading engine keeps track of information relating to the trading strategies that are triggered-on, during the time they remain open.","content":["\r","\r","The strategy node is available both in the current context and the last context, that is, you may retrieve information of the strategy that was last triggered or the one currently open.\r","\r","A strategy is open from the instant it is triggered-on until the instant it is triggered-off. Therefore, this section of the data structure features information spaning those periods only.\r","\r","This section provides all the basic details about the strategy, which is particularly useful when the trading system features multiple strategies. It also provides information about the context, that is, what is going on with the market at the time strategies are triggered-on and off.\r","\r","Most interestingly, the strategy section provides information such as which situation was responsible for triggering the strategy. This may be particularly useful in complex strategies in which the trigger on event may be defined by multiple situations.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Strategy Name","definition":"Strategy name features the name of the strategy that is currently open.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Index","definition":"Index is the position of the parent object in the corresponding data collection, as determined by the context.","content":["\r","\r","In the context of a candle, *index* is the position of the current candle in the array of candles within the larger context, for example, an episode.\r","\r","Trading systems may feature more than one strategy. In the context of a strategy, *index* is the position of the strategy within the trading system. \r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Status","definition":"Status refers to the state of the object represented by the parent node at the moment of evaluation.","content":["\r","\r","There are three possible status:\r","\r","* ```Not Open```: the object is not open at the current candle.\r","\r","* ```Open```: the object is open at the current candle.\r","\r","* ```Closed```: the object closes at the current candle.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Situation Name","definition":"Situation name features the name of the situation that triggered a certain event, which is dependent on the context.","content":["\r","\r","In the context of a strategy, it is the name of the situation that triggered-on the strategy.\r","\r","In the context of a position, it's the name of the situation that triggered the take position event.\r","\r","In the context of an order, it's the situation that triggered the create order event.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Algorithm Name","definition":"Algorithm name is the name of the execution algorithm that opened the order, as specified in the trading system.","content":["\r","\r","Assigning names to execution algorithms in the definition of the trading system makes tracking the execution of orders easier.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Order Name","definition":"Order name is the name of the order as specified in the trading system.","content":["\r","\r","Assigning names to orders in the definition of the trading system makes tracking the execution of orders easier.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Serial Number","definition":"Serial number is a sequential number assigned to the object represented by the parent node at the moment it is opened.","content":["\r","\r","Serial numbers start at 1 and increment by 1 with each intance of the object that is opened.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Identifier","definition":"Identifier is a unique alphanumeric string by which the object represented by the parent node may be unequivocally identified.","content":["\r","\r","The property is what would be used to access a specific known record.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Exchange Id","definition":"Exchange ID is a unique identifier the exchange assigns to the order, so that it may be unequivocally identified.","content":["\r","\r","By default, it is the rate at the close of the last candle at the moment the order is placed. All market orders have the default rate value.\r","\r","In the case of limit orders, it is the rate as specified by the formula under the order rate node. If no such definition exists, then limit orders use the default value as well.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Lock","definition":"Lock is an internal mechanism that blocks the data structure of the order at the trading engine when the definition of the order at the trading system disallows spawning multiple orders.","content":["\r","\r","Possible values for lock are ```open``` and ```closed```.\r","\r","The moment an order is closed, the system checks the ```spawnMultipleOrders``` parameter at the order's configuration in the trading system. If the value is ```false```, the system sets the lock to ```closed``` so that the data structure may not be used again during the same position.\r","\r","At the moment of opening an order, the system checks the ```spawnMultipleOrders``` parameter at the order's configuration in the trading system. If the value is ```false```, the system checks the value of the lock. If the value is ```open```, then it may create the order; if it is ```closed``` then the order may not be created.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Begin","definition":"Begin is the datetime at the moment the object represented by the parent node began to exist.","content":["\r","\r","In the context of a candle, it is the datetime of the open of the candle as provided by the exchange.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"End","definition":"End is the datetime on which the object represented by the parent node ceased to exist. In case the object has not been closed yet, it is the datetime at the moment of evaluation.","content":["\r","\r","In the context of a candle, it is the datetime of the close of the candle as provided by the exchange.\r","\r","In every other context, the datetime is given by the datetime of the moment of evaluation. When evaluating a point in time in which the object remains open, *end* stores the datetime of that moment, because the object existed until that point in time when the value was last being updated. Once the object is closed, the end value is not modified again.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Open","definition":"Open is the rate at the datetime of the begin property, as provided by the exchange. That is, the rate at the open of the candle.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Close","definition":"Close is the rate at the datetime of the end property, as provided by the exchange. That is, the rate at the close of the candle.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Min","definition":"Min is the minimum rate registered by the exchange during the period between the datetimes of the begin and end properties, as provided by the exchange.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Max","definition":"Max is the maximum rate registered by the exchange during the period between the datetimes of the begin and end properties, as provided by the exchange.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Begin Rate","definition":"Begin rate is the close rate of the candle corresponding to the datetime of the begin property.","content":["\r","\r","In the context of a strategy, it is the close rate of the last closed candle at the moment the strategy was triggered.\r","\r","In the context of a position, it is the close rate of the last closed candle at the moment the take position event was triggered.\r","\r","In the context of an episode, it is the close rate of the last closed candle at the moment the episode starts.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"End Rate","definition":"End rate is the close rate of the candle corresponding to the datetime of the end property.","content":["\r","\r","In the context of a strategy, it is the close rate of the last closed candle at the moment the strategy is triggered-off.\r","\r","In the context of a position, it is the close rate of the last closed candle at the moment the close stage is closed.\r","\r","In the context of an episode, it is the close rate of the last closed candle at the moment the episode ends.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Position","definition":"Position is the section of the data structure that keeps track of information within the scope of each position, and during the time a position is open.","content":["\r","\r","The position node is available both in the current context and the last context, that is, you may retrieve information of the position that was last opened or the one currently open.\r","\r","A position is open from the instant the take position event is triggered until the instant the close stage is closed. Therefore, this section of the data structure features information spaning those periods only.\r","\r","In this section of the hierarchy, you have access to:\r","\r","* **[balances and position performance metrics](suite-trading-engine-accounts-and-metrics.html)** denominated in both the base and quoted assets;\r","\r","* **[counters](suite-trading-engine-counters.html)**, such as the number of periods the position has been open;\r","\r","* **[statistics](suite-trading-engine-statistics.html)**, such as performance metrics consolidating both assets, or user-defined statistics;\r","\r","* **[the distance to certain events](suite-trading-engine-distance-to-event.html)**, such as the number of candles to the last take position event, or the last create order event;\r","\r","* **[rates describing each candle](suite-trading-engine-candle.html)** in the episode, such as the open, close, min and max rates;\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Rate","definition":"Rate is the rate at which the order is placed.","content":["\r","\r","By default, it is the rate at the close of the last candle at the moment the order is placed. All market orders have the default rate value.\r","\r","In the case of limit orders, it is the rate as specified by the formula under the order rate node. If no such definition exists, then limit orders use the default value as well.\r","\r","The rate is used by the system for all internal calculations affecting the accounts kept in both assets.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Entry Target Rate","definition":"Entry target rate is the target rate set on the initial targets definition, in the open stage of the strategy.","content":["\r","\r","Refresh this concepts by reading about the [initial target definitions](suite-strategies-open-targets.html) at the trading system.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Exit Target Rate","definition":"Exit target rate is the target rate set on the initial targets definition, in the close stage of the strategy.","content":["\r","\r","Refresh this concepts by reading about the [initial target definitions](suite-strategies-open-targets.html) at the trading system.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Stage Defined In"},{"type":"Size","definition":"Size is the size set for the order through a combination of formulas and configurations defined in the trading system, and is the value passed on to the exchange as the size of the order.","content":["\r","\r","The system provides a flexible and robust infrastructure to control execution. The size of a single order results from the combination of multiple settings.\r","\r","* **The target size in base asset or target size in quoted asset**: The formulas under these nodes define the absolute maximum size allowed for the position. The implications of using one or the other are explained under the initial targets node in the open stage.\r","\r","* **The configuration of the execution algorithm**: The parameter ```percentageOfStageTargetSize``` determines what fraction of the target size the algorithm will attempt to execute.\r","\r","* **The configuration of the order**: The parameter ```percentageOfAlgorithmSize``` determines what fraction of the size handled by the algorithm the order shall be constrained to.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Entry Target Size","definition":"Entry target size is the target size set on the initial targets definition, in the open stage of the strategy.","content":["\r","\r","Refer to the explanations on the entry target size for some relevant context.\r","\r","Refresh this concepts by reading about the [initial target definitions](suite-strategies-open-targets.html) at the trading system.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Exit Target Size","definition":"Exit target size is the target size set on the initial targets definition, in the close stage of the strategy.","content":["\r","\r","Both entry and exit target sizes may be defined either denominated in the base asset or the quoted asset. Nevertheless, the sytem keeps track of target sizes in both assets. If the target is defined denominated in the base asset, then the target for the quoted asset is calculated using the current rate, and viceversa.\r","\r","Refresh this concepts by reading about the [initial target definitions](suite-strategies-open-targets.html) at the trading system.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Size Placed","definition":"Size placed is the size of the order placed at the exchange.","content":["\r","\r","In the context of a strategy stage, the size placed refers to the sum of the sizes placed for all orders placed on the corresponding stage.\r","\r","In the context of an order, it refers to the size placed for the particular order.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Target Size","definition":"Target size is the target set on the initial targets definition which, in the context of a strategy stage, acts as a limit.","content":["\r","\r","Both the close and open stages may have multiple execution algorithms, each with multiple orders defined. In this context, the target size acts as a limit, as it is defined by the user as the maximum size allowed for any given position.\r","\r","Before placing an order, the system makes sure that the size limit embodied in the target size would not be breached by opening a new order.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Exit Type","definition":"Exit type refers to the reason why the object is closed.","content":["\r","```No Exit``` is the default value until a new value is assigned before the object is closed. Other possible values vary with the context.\r","\r","In the context of the episode object:\r","\r","* ```Last Candle Reached```: the object was closed because the last candle was reached.\r","\r","In the context of the strategy object:\r","\r","* ```Position Closed```: the position was closed.\r","\r","In the context of the position object:\r","\r","* ```Take Profit```: the take profit target was hit.\r","\r","* ```Stop Loss```: the stop loss target was hit.\r","\r","In the context of an order:\r","\r","* ```Closing Stage```: the current stage started closing because the Close Stage is opening.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Process Date"},{"type":"Head Of The Market"},{"type":"Last","definition":"The last object stores instances of position and strategy objects, in particular the instances that were last open at the time of evaluation, hence the adjective last.","content":["\r","\r","Conceptually, last is used as an adjective applied to these concepts, such as the last position or the last strategy, providing the context on which those concepts exist.\r","\r","The *last* context exists so that you may easily access information about the strategy that was last triggered or the position that was last opened. \r","\r","This is valuable information, both for users and trading systems alike.\r","\r","* As a user, you will value being able to visually follow what happened with the last position after it closed, or the last strategy after it triggered off, and at the same time see what is going on with the current position or the current strategy.\r","\r","* From within a trading system, your strategies may make decisions factoring in what happened with the last position or strategy. For example, you may want to affect the size of the next position depending on the result of the last one.\r","\r","If you can code, you may actually access any object that was open in the past at any point in time, and not just the last one.\r","\r","\r","\r","\r","\r","\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Candle","definition":"The candle structure of nodes stores the properties that make up each candle in the episode, including open and close datetime, and the rates for open, min, max, and close.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Cycle","definition":"The trading bot performs its duties in regards to exchange orders and accounts in two consecutive cycles for each candle.","content":["\r","\r","In the first cycle, it checks the status of orders at the exchange, synchronizes the accounts, and verifies if conditions to place new orders are met.\r","\r","In the second cycle, it creates the orders at the exchange, provided conditions where met on the previous cycle.\r","\r","The two possible values for the cycle node are ```First``` and ```Second```.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","Select *Configure* on the menu to access the configuration.\r","\r","```json\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","```\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Exchange Orders","definition":"Exchange orders is the section of the data structure that keeps track of orders of all types.","content":["\r","\r","The function of this section of the trading engine is to provide the data structure to hold the information of orders as they are open and closed. \r","\r","Orders are organized by type, such as market orders and limit orders, and also by the type of transaction, such as buy or sell orders.\r","\r","Each section of the hierarchy must have the definition of as many orders of each type as the trading system is capable of placing concurrently. For example, if the execution algorithm may place up to three limit buy orders to open a position, then three limit orders must exist under the limit buy orders section of the hierarchy. Each order defined in the trading system must reference the data structure of a matching type of order in the trading engine.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Market Buy Orders","definition":"Market buy orders is the section of the data structure that keeps track of this specific type of order.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Market Order","definition":"Market order is the section of the data structure that keeps track of the properties of a specific market order, as defined in the trading system.","content":["\r","\r","Each market order defined in the trading system must reference the data structure of a market order in the trading engine.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Market Sell Orders","definition":"Market sell orders is the section of the data structure that keeps track of this specific type of order.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Limit Buy Orders","definition":"Limit buy orders is the section of the data structure that keeps track of this specific type of order.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Limit Sell Orders","definition":"Limit sell orders is the section of the data structure that keeps track of this specific type of order.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Limit Order","definition":"Limit order is the section of the data structure that keeps track of the properties of a specific limit order, as defined in the trading system.","content":["\r","\r","Each limit order defined in the trading system must reference the data structure of a limit order in the trading engine.\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Parameters","definition":"Parameters are properties of trading sessions, defined by users, to determine their behavior and improve the quality of simulations.","content":["\r","\r","The behavior of parameters may vary depending on the type of session.\r","\r","Each testing session has its own set of parameters. This allows you to configure different trading sessions with different parameters, and go back and forth between them as required. For instance, you may have different backtesting sessions with different date ranges, different exchange fees or different slippage settings to account for different possible scenarios.\r","\r"],"folderName":"network","starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"adding":["\r","\r","To add a parameters node, select *Add Parameters* on the session or the trading system menu, depending on the context. When a parameters node is added, the full set of parameters are created with it.\r","\r","If you already have a parameters node but are missing some of the parameters, then select *Add Missing Params* on the menu.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Trading System Reference","definition":"A trading engine reference determines which trading system shall be evaluated by the trading bot to run the trading session.","content":["\r","\r","In other words, the trading system reference lets the process instance know which trading rules to process for the given session.\r","\r"],"folderName":"network","adding":["\r","\r","To add a trading ensystemgine reference, select *Add Missing Children* on the trading session node menu.\r","\r","{% include note.html content=\"After adding a trading system reference node, make sure you establish the reference to the corresponding trading system hierarchy.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Trading Engine Reference","definition":"A trading engine reference determines which trading engine the trading bot shall use to structure the data it processes while running the trading session.","content":["\r","\r","In other words, the trading engine reference lets the process instance know which data structure to use to store information related to the trading session. This means that a workspace may have more than one trading engine.\r","\r"],"folderName":"network","adding":["\r","\r","To add a trading engine reference, select *Add Missing Children* on the trading session node menu.\r","\r","{% include note.html content=\"After adding a trading engine reference node, make sure you establish the reference to the corresponding trading engine hierarchy.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Session Base Asset","definition":"The base asset is the asset whose price is determined by the market. It is usually the first asset in the pair, as listed by the exchange.","adding":["\r","\r","To add a parameter that may be missing, select *Add Missing Params* on the parameters node menu. \r","\r","{% include note.html content=\"After adding a base asset node, make sure you establish a reference to the asset in a specific market of a specific exchange in the Crypto Ecosystem hierarchy.\" %}\r","\r"],"folderName":"network","configuring":["\r","\r","Select *Configure Base Asset* on the menu to access the configuration.\r","\r","```json\r","{\r","\"initialBalance\": 0.001,\r","\"minimumBalance\": 0.0001,\r","\"maximumBalance\": 0.1\r","}\r","```\r","\r","* ```initialBalance``` is the amount of capital you wish to allocate to the trading system.\r","\r","* ```minimumBalance``` is the threshold of accummulated losses that switches off the session; when your overall balance (balanceAssetA + balanceAssetB) drops to this value, all trading stops; think of the ```minimumBalance``` as a general safety switch.\r","\r","* ```maximumBalance``` is a similar concept as with the ```minimumBalance``` but on the high side of the ```initialBalance```.\r","\r","\r"]},{"type":"Session Quoted Asset","definition":"The quoted asset is the asset on which the price of the base asset is denominated in the market. It is usually the second asset in the pair, as listed by the exchange.","content":["\r","\r","The parameter allows defining an initial balance of the corresponding asset, which may be used for trading with the corresponding trading system and trading session. Please see the configuration.\r","\r"],"folderName":"network","starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"adding":["\r","\r","To add a parameter that may be missing, select *Add Missing Params* on the parameters node menu. \r","\r","{% include note.html content=\"After adding a quoted asset node, make sure you establish a reference to the second asset in the same market of the same exchange as the reference established with the base asset.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Market Base Asset","definition":"The market base asset is the asset in the pair used to provide a quote—a price—for the quoted asset, as listed at the exchange.","content":["\r","\r","A market base asset must reference an asset defined under the exchange assets node.\r","\r"],"folderName":"crypto_ecosystem","adding":["\r","\r","To add a market base asset, select *Add Market Base Asset* on the market node menu. \r","\r","{% include note.html content=\"Remember to establish a reference with an asset defined under the exchange assets node.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Market Quoted Asset","definition":"The market quoted asset is the asset in the pair for which a quote is given, denominated in the base asset, as listed at the exchange.","content":["\r","\r","A market quoted asset must reference an asset defined under the exchange assets node.\r","\r"],"folderName":"crypto_ecosystem","adding":["\r","\r","To add a market quoted asset, select *Add Market Quoted Asset* on the market node menu. \r","\r","{% include note.html content=\"Remember to establish a reference with an asset defined under the exchange assets node.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Time Range","definition":"The time range parameter determines the period of time on which the trading session is run.","content":["\r","\r","The parameter offers precise control over the duration, starting and ending points of the session. Several options are available, and there are differences in how backtesting and the rest of the types of trading sessions function in this regard. \r","\r","Check the configuration to learn more.\r","\r"],"folderName":"network","starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"adding":["\r","\r","To add a parameter that may be missing, select *Add Missing Params* on the parameters node menu. \r","\r"],"configuring":["\r","\r","Select *Configure Time Range* on the menu to access the configuration. The configuration varies slightly depending on the type of session you are running.\r","\r","{{include.configuring}}# On Backtesting Sessions\r","\r","```json\r","{\r","\"initialDatetime\": \"2019-09-01T00:00:00.000Z\",\r","\"finalDatetime\": \"2019-09-25T00:00:00.000Z\"\r","}\r","```\r","\r","* ```initialDatetime``` is the datetime the session starts at.\r","\r","* ```finalDatetime``` is the datetime the session finishes at. If you don't set a *finalDatetime*, the session runs until the date data is available.\r","\r","{{include.configuring}}# On Paper Trading, Forward Testing and Live Trading Sessions\r","\r","```json\r","{\r","\"initialDatetime\": \"2019-09-01T00:00:00.000Z\",\r","\"finalDatetime\": \"2019-09-25T00:00:00.000Z\",\r","\"allowStartingFromThePast\": false\r","}\r","```\r","\r","* ```finalDatetime``` is the datetime the session finishes at. If you don't set a *finalDatetime* at the level of the testing session or the trading system, then the session runs for one year.\r","\r","By default, paper trading, forward testing and live trading sessions start at the datetime the session is run, that is, the present time. Such a behavior is in accordance with the most common use case, by which a user starting a new live trading session usually wishes the session to start at that moment.\r","\r","However, users have requested to be allowed to start live sessions in the past. Such a feature may be useful, for example, to take an opportunity that was just missed for whatever reason, including technical ones.\r","\r","* ```initialDatetime```, in combination with the ```allowStartingFromThePast``` parameter, is a hack to allow a live session to start from a date in the past. If there is a valid ```initialDatetime``` and ```allowStartingFromThePast``` is ```true```, then the live session effectively starts from the specified date in the past. If ```allowStartingFromThePast``` is ```false``` the ```initialDatetime``` is ignored and the session starts from the present time.\r","\r","* ```allowStartingFromThePast``` may be ```true``` or ```false```.\r","\r","{% include warning.html content=\"In the case of forward testing and live trading sessions, starting from the past may involve placing orders at the exchange while evaluating past events. That is, if conditions to take a position and place orders validate true for candles in the past, the position is taken and orders are placed.\" %}\r","\r"]},{"type":"Time Frame","definition":"The time frame determines the collection of candles to be analyzed during a backtesting session, and the frequency with which the trading bot runs on paper trading, forward testing, and live trading sessions.","content":["\r","\r","In the context of backtesting sessions, what time frame you decide to run the session depends on the trading system being tested. If the trading system makes decisions based on the 1-hour candle and above, then ```01-hs``` may be the best choice. However, if decisions are influenced by sub-hour candles then you should match the time frame accordingly.\r","\r","In other words, in backtesting sessions, you should match the time frame to the smallest period on which the trading system makes decisions.\r","\r","In the context of live sessions, that is, paper trading, forward testing, and live trading, you should run the session on the ```01-min``` time frame so that the trading bot reacts fast when the price tags the take profit or stop loss targets. Remember that stop and take profit orders are not placed at the exchange after the take position event, that is, once you enter the position. Instead, the trading bot checks the current price upon each execution cycle and determines whether targets have been hit or not. If targets are hit, only then orders are placed. That is why running live trading sessions at the ```01-min``` time frame is recommended. Learn more about the [management](suite-strategies-manage.html) of take profit and stop loss targets.\r","\r","If for whatever reason you don't need to minimize the potential for slippage when hitting stop or take profit targets, you may choose whatever time frame you like, taking into account the explanations below.\r","\r","{{include.heading}}## Why the Time Frame Matters\r","\r","{% include callout.html type=\"success\" content=\"Running trading sessions of any given trading system on different time frames may produce different results. This is because the behavior of a trading session may vary depending on how well the time frame on which the session is run matches the logic of the strategy.\" %}\r","\r","This is why:\r","\r","The trading bot evaluates closed candles only. At any given point in time, the current candle in each time frame is the candle that closed last.\r","\r","*For example:*\r","\r","Let's say it's ```2020-06-11T11:39:30:00.000Z```, that is, 11 hours, 39 minutes and 30 seconds of June 11th, 2020.\r","\r","* The current 1-minute candle is the one which closed at 11:38:59.999.\r","* The current 5-minute candle is the one which closed at 11:34:59.999.\r","* The current 30-minute candle is the one which closed at 11:29:59.999.\r","* The current 1-hour candle is the one which closed at 10:59:59.999.\r","* The current 2-hour candle is the one which closed at 09:59:59.999.\r","* The current 6-hour candle is the one which closed at 05:59:59.999.\r","* The current 24-hour candle is the one which closed at 23:59:59.999 of June 10th!\r","\r","... and so on.\r","\r","Let's say the trading system implements conditions that evaluate 30-minute and 1-hour candles.\r","\r","If a session is run at the 30-minutes time frame, all 30-minutes candles are evaluated. Also, all 1-hour candles are evaluated twice.\r","\r","However, if the session is run at the 1-hour time frame, only one out of two 30-minute candles are evaluated.\r","\r","And if the session is run at the 2-hour time frame, only one out of four 30-minute candles and one out of two 1-hour candles are evaluated.\r","\r","This means that running the session (for this particular trading system) at the 30-minute time frame has higher probabilities of conditions evaluating 30-minute candles to be ```true``` during the session.\r","\r","{% include callout.html type=\"success\" content=\"In other words, when running the session on time frames higher than the time frame on which decisions are made, chances are the bot will eventually skip candles on which conditions would have evaluated true, potentially skipping trading opportunities.\" %}\r","\r","The above is true for all types of trading sessions.\r","\r","{{include.heading}}## Backtesting Vs. Live Sessions\r","\r","In a backtesting session, the collection of candles evaluated is determined by the time frame selected to better simulate what would happen if the live trading session was run in the same time frame.\r","\r","\r"],"folderName":"network","starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"adding":["\r","\r","To add a parameter that may be missing, select *Add Missing Params* on the parameters node menu. \r","\r"],"configuring":["\r","\r","Select *Configure Time Frame* on the menu to access the configuration.\r","\r","```js\r","{\r","\"value\": \"01-min\"\r","}\r","```\r","\r","* ```value``` is the setting for the time frame. You may use any of the values below.\r","\r","Available options at the sub-hour level are:\r","\r","```json\r","01-min\r","02-min\r","03-min\r","04-min\r","05-min\r","10-min\r","15-min\r","20-min\r","30-min\r","45-min\r","```\r","\r","Available options at larger time frames are:\r","\r","```json\r","01-hs\r","02-hs\r","03-hs\r","04-hs\r","06-hs\r","08-hs\r","12-hs\r","24-hs\r","```\r","\r"]},{"type":"Slippage","definition":"The slippage is an assumption on the difference between the simulated rate and the actual fill rate of an order, most relevant in the context of backtesting and paper-trading sessions. The parameter is a tool to make simulations more realistic.","content":["\r","\r","In the context of forward testing and live trading sessions, slippage does not affect the actual transactions. However, the parameter is taken into account when creating simulation layers, which are also available during forward testing and live trading.\r","\r","Slippage is factored both in the session reports and in the graphic representation of each trade provided by the simulation trades product of the trading bot.\r","\r"],"folderName":"network","starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"adding":["\r","\r","To add a parameter that may be missing, select *Add Missing Params* on the parameters node menu. \r","\r"],"configuring":["\r","\r","Select *Configure Slippage* on the menu to access the configuration.\r","\r","```json\r","{\r","\"positionRate\": 0.1,\r","\"stopLoss\": 0.2,\r","\"takeProfit\": 0.3\r","}\r","```\r","\r","* ```positionRate``` is the slippage value to be applied to the rate of the take position order, expressed as a percentage (*i.e.:* 0.1 means 0.1%).\r","\r","* ```stopLoss``` is the slippage value to be applied to the rate of the stop order, expressed as a percentage (*i.e.:* 0.2 means 0.2%).\r","\r","* ```takeProfit``` is the slippage value to be applied to the rate of the take profit order, expressed as a percentage (*i.e.:* 0.3 means 0.3%).\r","\r","The number you enter is applied as a percentage of the price of the order and added or subtracted from the price depending on the circumstances, always working against you. For instance, ```\"positionRate\": 0.1``` means the position will be set at a price 0.1% higher or lower depending on which of the assets in the pair is your base asset. \r","\r","{% include note.html content=\"If the slippage parameter is left empty or detached both from your session and your trading system, slippage is not computed during simulations.\"%}\r","\r"]},{"type":"Fee Structure","definition":"The fee structure is a parameter fundamental to the calculation of fees, both in testing and live trading sessions.","content":["\r","\r","Exchange fees are a crucial part of trading. A strategy may work like a charm when you leave fees out of the equation but would lead you to bankruptcy in a live trading situation.\r","\r","Exchanges don't usually report the amount charged in fees on each transaction, thus, the system calculates fees and subtract them from balances. Learn more about the handling of [fees](suite-trading-engine-order-specific.html#fees-paid).\r","\r","{% include important.html content=\"The accuracy of the internal account-keeping depends on this parameter. Make sure you obtain the correct fee structure from the exchange corresponding to the tier of your account.\" %}\r","\r","To illustrate how fees affect your bottom line, take a look at the image below.\r","\r","[![Trading-Simulation-Fees-Fails](https://user-images.githubusercontent.com/13994516/63636432-8d8cdf80-c66f-11e9-86a3-480d157d8126.gif)](https://user-images.githubusercontent.com/13994516/63636432-8d8cdf80-c66f-11e9-86a3-480d157d8126.gif)\r","\r","The trade hits the take profit target above the Position Rate level, however, due to fees, the trade has a negative 0.32% ROI.\r","\r"],"folderName":"network","starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"adding":["\r","\r","To add a parameter that may be missing, select *Add Missing Params* on the parameters node menu. \r","\r"],"configuring":["\r","\r","Select *Configure Fee Structure* on the menu to access the configuration.\r","\r","```json\r","{\r","\"maker\": 0.15,\r","\"taker\": 0.25\r","}\r","```\r","\r","* ```maker``` is the setting for the fee the exchange charges when an order adds liquidity to the market, such as with limit orders.\r","\r","* ```taker``` is the setting for the fee the exchange charges when an order takes liquidity from the market, such as with market or instant orders.\r","\r","{% include note.html content=\"Check the fees structure in your exchange, carefully looking into the tier you fall in to feed accurate assumptions to your backtesting and paper trading sessions.\" %}\r","\r","{% include note.html content=\"If the fee structure parameter is left empty or detached both from your session and your trading system, fees are not computed during simulations.\" %}\r","\r","{% include important.html content=\"Remember that, for the time being, and until the new execution engine is released, all orders placed by the trading bot are *market orders*, thus, the *taker* fee applies in all cases.\" %}\r","\r"]},{"type":"Snapshots","definition":"Snapshots are CSV files output by the trading bot listing every trade in a backtesting session. The snapshots parameter determines whether snapshots shall be produced, and how.","content":["\r","\r","Learn more about [snapshots](suite-snapshots.html) and check the configuration file to control if and how snapshots are produced.\r","\r"],"folderName":"network","adding":["\r","\r","To add a parameter that may be missing, select *Add Missing Params* on the parameters node menu. \r","\r"],"configuring":["\r","\r","Select *Configure Slippage* on the menu to access the configuration.\r","\r","```json\r","{ \r"," \"strategy\": true,\r"," \"position\": true\r","}\r","```\r","\r","* ```strategy``` determines whether to take a snapshot at the trigger on event or not; possible values are ```true``` or ```false```.\r","\r","* ```position``` determines whether to take a snapshot at the take position event or not; possible values are ```true``` or ```false```.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Heartbeats","definition":"During a trading session, the backend communicates with the front end via heartbeats to inform the frontend about the status of the session. The parameter controls what information is made available to the user through the frontend.","content":["\r","\r","This parameter affects how you see the progress of the trading session below the trading bot instance node on the design space.\r","\r"],"folderName":"network","adding":["\r","\r","To add a parameter that may be missing, select *Add Missing Params* on the parameters node menu. \r","\r"],"configuring":["\r","\r","Select *Configure Slippage* on the menu to access the configuration.\r","\r","```json\r","{ \r"," \"date\": true,\r"," \"candleIndex\": false\r","}\r","```\r","\r","* ```date``` determines whether the date is shown in the progress notice below the trading process instance node; possible values are ```true``` or ```false```.\r","\r","* ```candleIndex``` determines whether the index of the candle is shown in the progress notice below the trading process instance node; possible values are ```true``` or ```false```.\r","\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"User Defined Parameters","definition":"Users may define parameters to be used within the trading system during the trading session.","content":["\r","\r","Parameters defined in the configuration file of these node become available to trading systems using the following path: ```sessionParameters.userDefinedParameters.config.parameterName```.\r","\r","These parameters may be useful, for example, when you wish to use a *constant* multiple times across several nodes in the definition of a strategy. Instead of feeding a constant value to all formulas involved, you may feed the parameter instead. This gives you the added benefit of being able to change the value of such a constant in a single point.\r","\r"],"folderName":"network","adding":["\r","\r","To add a parameter that may be missing, select *Add Missing Params* on the parameters node menu. \r","\r"],"configuring":["\r","\r","Select *Configure Slippage* on the menu to access the configuration.\r","\r","```json\r","{ \r"," \"param1Name\": \"A text string value example\",\r"," \"param2Name\": 0\r","}\r","```\r","\r","* ```param1Name``` is an example of a name. You may change the names of the parameters as required. Values including text strings go between quotation marks, while numeric values, without. You may define as many parameters as you wish; simply separate them with a comma to keep a valid JSON format for the configuration file.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Time Frames Filter","definition":"The time frame filters node allows control over which time frames are to be calculated by each indicator bot instance running on the data mining operation.","content":["\r","\r","Limiting the number of time frames calculated by any given indicator to the few that may be required by a particular trading system has a significant positive impact on performance: it reduces the load on the CPU, the memory requirements, and the requirements of storage space, in proportion with the time frames you remove.\r","\r","When a time frames filter is set up, a ```Time.Frames.json``` file is created by the indicator process in the corresponding output folder. This file is read by others—such as the charting system—to get the information regarding which time frames are available and which are not, to avoid reporting errors.\r","\r","{% include important.html content=\"Before applying a time frames filter or changing the configuration, that is, changing which time frames are produced and which are not, it is highly recommended to delete the data corresponding to the affected indicator, to avoid inconsistencies in the data that may later cause confusion.\" %}\r","\r","{% include note.html content=\"When no time frames filter is defined, the bot processes all time frames by default.\" %}\r","\r"],"folderName":"network","starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"adding":["\r","\r","To add the {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. \r","\r"],"configuring":["\r","\r","Select *Configure* on the menu to access the configuration.\r","\r","```json\r","{ \r","\"dailyTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\r","\"marketTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\"]\r","}\r","```\r","\r","* ```dailyTimeFrames``` features the time frames corresponding to the *daily files* type of data structure; in practical terms, the time frames below one hour.\r","\r","* ```marketTimeFrames``` features the time frames corresponding to the *market files* type of data structure; in practical terms, the time frames of one hour and above.\r","\r","{% include tip.html content=\"Remove the time frames you are not interested in, making sure the JSON file is still valid.\" %}\r","\r"]},{"type":"Paper Trading Session","definition":"A paper trading session is a trading mode by which the trading bot instance reads a live market data feed, applies the rules defined in the associated trading system, and generates a trading simulation.","content":["\r","\r","A paper trading session node must reference a trading system to gain access to the trading logic to be applied during the session. Other considerations framing the session come from the set of parameters attached to it.\r","\r"],"folderName":"network","adding":["\r","\r","To add a paper trading session, select *Add Paper Trading Session* on the trading process instance node menu. When a session is added, it is created with the full set of parameters.\r","\r","{% include note.html content=\"After adding a session node, make sure you establish a reference to the trading system you want it to work with.\" %}\r","\r"],"configuring":["\r","\r","Select *Configure Session* on the menu to access the configuration.\r","\r","```json\r","{\r","\"folderName\": \"Session-Name\"\r","}\r","```\r","\r","* ```folderName``` allows you to set a significant name to the folder in which the data products—and logs—generated by the session are stored. If left blank, the system names the folders with the session id. This may be handy when you intend to consult the raw data generated by the session, as, otherwise, the folder would be hard to identify.\r","\r"],"starting":["\r","\r","Before you start a paper trading session, the corresponding task needs to be running, as it is the task that puts the trading bot instance to run. Once the trading bot instance is running, select *Run* on the menu to start the session.\r","\r","To stop a backtesting session, select *Stop* on the menu.\r","\r"]},{"type":"Forward Testing Session","definition":"A forward testing session is a trading mode by which the trading bot instance performs live trading with a user-defined fraction of the available capital.","content":["\r","\r","A forward testing session node must reference a trading system to gain access to the trading logic to be applied during the session. Other considerations framing the session come from the set of parameters attached to it.\r","\r","{% include important.html content=\"Running a live session requires the setup of a key reference at the market reference. It also requires a live data feed, meaning that the corresponding sensor bot, along with all indicators used by the referenced trading system, must be up and running. Finally, a live session also requires at least 48 hours of historic market data. Bear in mind that the trading system may require even more historic market data to properly analyze the market.\" %}\r","\r"],"folderName":"network","adding":["\r","\r","To add a forward testing session, select *Add Forward Testing Session* on the trading process instance node menu. When a session is added, it is created with the full set of parameters.\r","\r","{% include note.html content=\"After adding a session node, make sure you establish a reference to the trading system you want it to work with.\" %}\r","\r"],"configuring":["\r","\r","Select *Configure Session* on the menu to access the configuration.\r","\r","```json\r","{ \r","\"folderName\": \"Session-Name\",\r","\"balancePercentage\": 1\r","}\r","```\r","\r","* ```folderName``` allows you to set a significant name to the folder in which the data products—and logs—generated by the session are stored. If left blank, the system names the folders with the session id. This may be handy when you intend to consult the raw data generated by the session, as, otherwise, the folder would be hard to identify.\r","\r","* ```balancePercentage``` is a number defining the percentage of the initialBalance specified in the base aset configuration that will be used for trading. For instance, ```\"balancePercentage\": 1``` means that 1% of your balance will be made available. Just like the ```initialBalance``` is scaled down, the ```minimumBalance``` and ```maximumBalance``` are also scaled down accordingly (see base asset).\r","\r","Let's draw a quick example:\r","\r","Your base asset is USDT and your initialBalance is USDT 10,000.\r","\r","If you set up your forward-testing session with \"balancePercentage\": \"1\", then USDT 10,000 * 1% = USDT 100. This is the balance that will be available to your forward-testing session.\r","\r","{% include important.html content=\"You need to take this into account at the time of defining your positionSize formula. If the formula is a constant, you may easily run out of balance, as only a fraction of the balance will be available for the strategy to use. It may be a good idea to set up your positionSize as a function of your available balance instead.\" %}\r","\r"],"starting":["\r","\r","Before you start a forward testing session, the corresponding task needs to be running, as it is the task that puts the trading bot instance to run. Once the trading bot instance is running, select *Run* on the menu to start the session.\r","\r","To stop a backtesting session, select *Stop* on the menu.\r","\r"]},{"type":"Key Reference","definition":"The key reference is a reference to an exchange account key as defined in a specific user account, in a specific exchange, on the Crypto Ecosystem hierarchy.","content":["\r","\r","Usually, exchanges require autentication via your exchange account key for monetary transactions only. However, some exchanges may require autentication in other contexts as well, for instance, to retrieve information above a certain quota, or to retrieve raw trades data instead of OHLCV data.\r","\r","For those reasons, exchange key references are available both in the context of data mining and trading operations, and are always attached to the corresponding task.\r","\r","Forward testing and live trading sessions always require setting up key references, as that is the kind of scenario in which the user must validate with the exchange.\r","\r","In all cases, the key reference node must reference a valid exchange account key from an account with the exchange, as defined in the Crypto Ecosystem hierarchy.\r","\r","{% include important.html content=\"Most exchanges do not allow the same exchange account key to be used with multiple processes querying the exchange API. This means that if you are trading with multiple trading systems or multiple sessions on the same exchange, each session requires different exchange account keys.\" %}\r","\r"],"folderName":"network","adding":["\r","\r","To add a key reference, select *Add Key Reference* on the task node menu.\r","\r","{% include note.html content=\"Remember to establish a reference with a valid exchange account key after creating the key reference.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Live Trading Session","definition":"A live trading session is a trading mode by which the trading bot instance reads a live market data feed, applies the rules as defined in the associated trading system, places the corresponding orders at the associated exchange, and stores the defined data products.","content":["\r","\r","A live trading session node must reference a trading system to gain access to the trading logic to be applied during the session. Other considerations framing the session come from the set of parameters attached to it.\r","\r","{% include important.html content=\"Running a live session requires the setup of a key reference at the market reference. It also requires a live data feed, meaning that the corresponding sensor bot, along with all indicators used by the referenced trading system, must be up and running. Finally, a live session also requires at least 48 hours of historic market data. Bear in mind that the trading system may require even more historic market data to properly analyze the market.\" %}\r","\r"],"folderName":"network","adding":["\r","\r","To add a live trading session, select *Add Live Trading Session* on the trading process instance node menu. When a session is added, it is created with the full set of parameters.\r","\r","{% include note.html content=\"After adding a session node, make sure you establish a reference to the trading system you want it to work with.\" %}\r","\r"],"configuring":["\r","\r","Select *Configure Session* on the menu to access the configuration.\r","\r","```json\r","{\r","\"folderName\": \"Session-Name\"\r","}\r","```\r","\r","* ```folderName``` allows you to set a significant name to the folder in which the data products—and logs—generated by the session are stored. If left blank, the system names the folders with the session id. This may be handy when you intend to consult the raw data generated by the session, as, otherwise, the folder would be hard to identify.\r","\r"],"starting":["\r","\r","Before you start a live trading session, the corresponding task needs to be running, as it is the task that puts the trading bot instance to run. Once the trading bot instance is running, select *Run* on the menu to start the session.\r","\r","To stop a backtesting session, select *Stop* on the menu.\r","\r"]},{"type":"Sensor Bot Instance","definition":"A sensor bot instance is a reference to a sensor bot as defined in a data mine. The instance of the bot runs the defined processes and generates the defined data products.","content":["\r","\r","{{site.data.concepts.sensor_bot}}\r","\r","The sensor bot instance holds no definitions as to what the bot does. Instead, its process instance references a process definition in the corresponding data mine. That is how the sensor bot instance obtains the information regarding what it needs to do once it is run.\r","\r"],"folderName":"network","adding":["\r","\r","To add a sensor bot instance, select *Add Sensor Bot Instance* on the task node menu.\r","\r"],"configuring":["\r","\r","Select *Configure Sensor Bot Instance* on the menu to access the configuration.\r","\r","```json\r"," {\r"," \"startDate\": \"2020-01-01\"\r"," }\r","```\r","\r","* ```startDate``` is the *desired starting date* of the data product the sensor bot instance builds, in the ```YYYY-MM-DD``` format. The sensor bot instance queries its data source for data starting on the configured ```startDate```.\r","\r"," * The actual date in which the dataset starts depends on external factors: A. The market may start at a later date. B. The exchange may limit how far in the past data may be retrieved. In both cases, the sensor bot automatically discovers the date closest to the *desired starting date* that is possible to start with, and proceeds accordingly.\r","\r"," * In the case the ```startDate``` is changed after the sensor bot has started building a data product, either for an earlier or later date, the sensor re-evaluates the feasibility of starting at the new date. The actual date may or may not change; regardless, the sensor bot discards the existing data product and starts over from the newly discovered date. In other words, if the ```startDate``` is changed, the sensor bot starts over.\r"," \r"," * Notice that the above starts a chain reaction among all indicator bots that have a data dependency with the sensor bot's output dataset. Also, if the actual date ends up changing, all indicators that determine the starting date of the market by looking at the date discovered by the sensor bot have to discard their existing data products and start over from the new date.\r","\r","\r"],"starting":["\r","\r","You do not start or stop a sensor bot instance directly. Instead, you start or stop the corresponding task.\r","\r"]},{"type":"Indicator Bot Instance","definition":"An indicator bot instance is a reference to an indicator bot as defined in a data mine. The instance of the bot runs the defined processes and generates the defined data products.","content":["\r","\r","{{site.data.concepts.indicator_bot}}\r","\r","The indicator bot instance holds no definitions as to what the bot does. Instead, its processes instances reference the process definitions in the corresponding data mine. That is how the indicator bot instance obtains the information of what it needs to do once it is run.\r","\r"],"folderName":"network","adding":["\r","\r","To add an indicator bot instance, select *Add Indicator Bot Instance* on the task node menu.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","You do not start or stop an indicator bot instance directly. Instead, you start or stop the corresponding task.\r","\r"]},{"type":"Data Mine","definition":"A data mine is a hierarchy that contains definitions of bots, including the trading bot, sensors, indicators, and even plotters. These definitions make up the actual programs of such bots—the source code.","content":["\r","\r","In a way, data mines are catalogs of bots that anyone may create. This hierarchy provides all the tools required to create sensors, indicators, and plotters, with minimal coding required.\r","\r","Because the hierarchy provides definitions, it does not intervene in the execution of bots. Instead, the definitions in data mines are instantiated from the network hierarchy by bot instances. Bot instances and process instances are the ones running the code according to the definitions in the corresponding data mine.\r","\r","{% include important.html content=\"Changes made to data mines shipping with the system may not be saved at the workspace level. If you wish to modify those hierarchies and use them in such modified versions, you need to clone them and modify the clone instead. To do this successfully, you need to learn more about [backups](suite-backups.html) and [clones](suite-clones.html).\" %}\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a data mine, select *Add Data Mine* on the workspace node menu.\r","\r"],"configuring":["\r","\r","Select *Configure Data Mine* on the menu to access the configuration.\r","\r","```json\r","{\r","\"codeName\": \"Supermine\"\r","}\r","```\r","\r","* ```codeName``` is the name of the data mine as used within the code of the system.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Trading Mine"},{"type":"Sensor Bot","definition":"A sensor bot is an algorithm that extracts raw data from external sources (i.e.: exchanges, Twitter, etc.) and stores it in a dataset that other bots may consume.","content":["\r","\r","The sensor bot node holds all definitions required for a sensor bot to function. Definitions are split between the definition of processes and products. A sensor's processes is an algorithm that obtains data from a third pary and produces an output for other bots to consume. Part of that output is the data products the bot creates.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a sensor bot, select *Add Sensor Bot* on the data mine node menu. A sensor bot is created along with the basic structure of nodes required to define it.\r","\r"],"configuring":["\r","\r","Select *Configure Bot* on the menu to access the configuration.\r","\r","```json\r","{\r","\"codeName\": \"Super\",\r","\"repo\": \"Super-Sensor-Bot\"\r","}\r","```\r","\r","* ```codeName``` is the name of the bot as used within the code of the system.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Process Definition","definition":"The process definition node groups all definitions required for a process to function. The Multi-Period-Market Process deals with time frames of one hour and above. The Multi-Period-Daily Process deals with time frames of 45 minutes and below.","content":["\r","\r","As hinted above, most bots—in particular indicators—have two different processes. The reason is that different data structures need to be handled in different manners. The Multi-Period-Daily process handles *daily files*, while the Multi-Period-Market process handles *market files*.\r","\r","The Multi-Period-Market process deals with time frames of one hour and above. Because these time frames produce relatively small numbers of records, the process builds one single file per time frame spanning the whole market history—hence the name Multi-Period-*Market*.\r","\r","On the other hand, the Multi-Period-Daily process deals with time frames below one hour. These time frames produce huge numbers of records, therefore, the corresponding data must be fragmented in multiple files. The Multi-Period-Daily process builds one file per day for each time frame—hence the name Multi-Period-*Daily*.\r","\r","{% include note.html content=\"The way in which datasets are structured by each of the processes is determined by the corresponding dataset definitions.\" %}\r","\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a process definition, select *Add Process Definition* on the bot's menu. A process definition node is created along with the basic structure of nodes comprising the definition.\r","\r"],"configuring":["\r","\r","Select *Configure Process* on the menu to access the configuration.\r","\r","**Multi-Period-Market:**\r","\r","```json\r"," {\r"," \"codeName\": \"Multi-Period-Market\",\r"," \"normalWaitTime\": 0,\r"," \"retryWaitTime\": 10000,\r"," \"framework\": {\r"," \"name\": \"Multi-Period-Market\"\r"," }\r"," }\r","```\r","\r","**Multi-Period-Daily:**\r","\r","```json\r"," {\r"," \"codeName\": \"Multi-Period-Daily\",\r"," \"normalWaitTime\": 0,\r"," \"retryWaitTime\": 10000,\r"," \"framework\": {\r"," \"name\": \"Multi-Period-Daily\"\r"," }\r"," }\r","```\r","\r","* ```codeName``` is the name of the process as used within the code of the system.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Process Output","definition":"The process output groups the definitions of which datasets are impacted by the process, that is, which datasets the process builds or takes a part in building.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a process output node, select *Add Missing Items* on the process definition node menu. Items that may be missing are created along with the basic structure of nodes required to define them.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Process Dependencies","definition":"Process dependencies are references to various data structures on which the process depends to function.","content":["\r","\r","While processes run autonomously, most processes participate in a value-adding chain by which a process produces a data product that other processes may consume as an input to be processed further. This means that bots—while autonomous in their particular jobs—do depend both on other bots and on the data other bots produce.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a process dependencies node, select *Add Missing Items* on the process definition node menu. Items that may be missing are created along with the basic structure of nodes required to define them.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Status Dependency","definition":"Status dependencies are references to a status report that define which process the process establishing the reference depends on.","content":["\r","\r","The reference is established to acquire the information relative to what the target process is doing. For example, by reading a status report a process may learn when was the last time the referenced process ran, and what was the last file processed.\r","\r","The status report referenced may belong to the same process— which is called a self-reference. In such a case, the process is learning what it did the last time it ran. Also, the status report referenced may belong to another process—another bot. In that case, the dependency may be of the Market Starting Point or Market Ending Point types.\r","\r","* **Self Reference** is mandatory, as a process needs to read its own status report every time it wakes up.\r","\r","* **Market Starting Point** is a status dependency existing on Multi-Period-Daily processes so that the process establishing the reference learns the datetime of the start of the market. Usually, the reference is established with the sensor's Historic-OHLCVs process status report. Multi-Period-Market processes do not have this type of status dependency as the date of the start of the market is implied in their dataset (a single file with all market data).\r","\r","* **Market Ending Point** is a status dependency existing both in Multi-Period-Market and Multi-Period-Daily processes so that the process establishing the reference knows the datetime of the end of the market.\r","\r","[![Indicators-Process-Dependencies-01](https://user-images.githubusercontent.com/13994516/68991956-dfa36280-0864-11ea-87ec-f0e4e3b7bf0f.gif)](https://user-images.githubusercontent.com/13994516/68991956-dfa36280-0864-11ea-87ec-f0e4e3b7bf0f.gif)\r","\r","The image above shows a case of a self-reference status dependency as well as a market ending point status dependency.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a status dependency, select *Add Status Dependency* on the process dependencies node menu.\r","\r","{% include tip.html content=\"Remember that a status dependency must be configured, and must establish a reference to the appropriate status report.\" %}\r","\r"],"configuring":["\r","\r","Select *Configure Status Dependency* on the menu to access the configuration.\r","\r","```json\r","{ \r","\"mainUtility\": \"Self Reference|Market Starting Point|Market Ending Point\"\r","}\r","```\r","\r","* ```mainUtility``` determines the type of status dependency, with possible values being ```Self Reference```, ```Market Starting Point```, or ```Market Ending Point```.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Status Report","definition":"Status reports serve as temporal annotations that bots read every time they run to know what was done in the previous cycle and what the state of affairs is at present. Status reports are dynamic, and they change constantly, with updates after every cycle of the associated process.","content":["\r","\r","Bots do not run continuously. Instead, they run in cycles. A cycle usually lasts until there is no more data to process, and once they finish, they shut down until the next cycle is due. A status report is a file every bot writes at the end of each cycle with information about the last run, including the datetime of the run and the last record processed.\r","\r","A status report may be consumed by the same bot producing it, or by other bots.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a status report, select *Add Missing Items* on the process definition node menu. Items that may be missing are created along with the basic structure of nodes required to define them.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Execution Started Event","definition":"The execution started event is the event that triggers the execution of a process. It usually references the execution finished event of another process on which the process depends on.","content":["\r","\r","These references determine when a process is due for another run. By listening to the execution finished event of the process it depends on, it may wake up just in time to process the new batch of data the dependency has just delivered.\r","\r","Bots form a sort of multi-branched execution sequence with an indeterminate number of dependencies. Every time the bot further down the tree of dependencies finishes a cycle, it triggers the execution of multiple bots listening to its execution finished event.\r","\r","In the context of a trading process instance running a trading session on the network hierarchy, the execution started event may be used to force the trading process to run only after the last indicator bot dependency finishes its job. This guarantees that all dependencies are up to date and that the trading bot will evaluate the information corresponding to the same candles for all indicators used by the trading system.\r","\r","Not setting up this event on a trading session may result in eventual data inconsistencies, as—in theory—the trading bot may run with some indicators up to date and some slightly delayed.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add an execution started event, select *Add Missing Items* on the process definition node menu. Items that may be missing are created along with the basic structure of nodes required to define them.\r","\r","{% include tip.html content=\"Remember that an execution started event must establish a reference to the appropriate execution finished event.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Execution Finished Event","definition":"The execution finished event is the event that processes trigger once they have finished an execution cycle. The event is broadcasted to whoever wants to listen, so that other bots may know when the process has finished its execution cycle.","content":["\r","\r","The execution finished event is responsible for triggering the execution of every process that depends on the data a bot produces. If bot Alice depends on bot Bob, Alice listens to the execution finished event of Bob so that it may start a new execution cycle as soon as Bob finishes its cycle. Alice listens to Bob's execution finished event by establishing a reference from its execution started event.\r","\r","[![Indicators-Process-Execution-Started-Finished-Events-01](https://user-images.githubusercontent.com/13994516/68993254-39605880-0876-11ea-9ee7-9f49976bd2dc.gif)](https://user-images.githubusercontent.com/13994516/68993254-39605880-0876-11ea-9ee7-9f49976bd2dc.gif)\r","\r","The image above shows a reference established from the execution started event of a process to the execution finished event of another process.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add an execution finished event, select *Add Missing Items* on the process definition node menu. Items that may be missing are created along with the basic structure of nodes required to define them.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Output Dataset Folder","definition":"An output dataset folder is an organizational device used to create arrangements of output datasets, particularly useful when the bot has many products.","content":["\r","\r","In cases in which a single bot has many different products, output dataset folders may help organize the outputs referencing each product, making their management easier. Folders may be nested like folders in the file system.\r","\r","The use of output dataset folders is optional, as product definitions may also exist outside of folders.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. \r","\r"],"configuring":["\r","\r","Select *Configure* on the menu to access the configuration.\r","\r","```json\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","```\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Product Definition Folder","definition":"A product definition folder is an organizational device used to create arrangements of product definitions, particularly useful when the bot has many products.","content":["\r","\r","In cases in which a single bot has many different products, product definitions folders may help organize those products, making their management easier. Folders may be nested like folders in the file system.\r","\r","The use of product definition folders is optional, as product definitions may also exist outside of folders.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Product Definition","definition":"The product definition node holds all definitions that make up a product, including how the product is calculated and the datasets the product is comprised of.","content":["\r","\r","A bot may feature multiple products, thus, there may be multiple product definitions. Three main aspects need to be defined in terms of products: the characteristics of the dataset, the composition of each record, and the way records are calculated.\r","\r","{% include note.html content=\"A product definition usually references a plotter module, which provides a graphic representation of the underlying dataset\" %}\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a product definition, select *Add Product Definition* on the bot's node menu. A product definition is created along with the basic structure of nodes required to make up a product.\r","\r"],"configuring":["\r","\r","Select *Configure Product* on the menu to access the configuration.\r","\r","```json\r","{\r"," \"codeName\": \"Product-Name\",\r"," \"singularVariableName\": \"productName\",\r"," \"pluralVariableName\": \"productNames\"\r","}\r","```\r","\r","* ```codeName``` is the name of the product as it is used within the bot's code.\r","\r","* ```singularVariableName``` is the singular form of the name of the variable representing the product, as is used on strategies (*i.e.:* ```bollingerChannel.direction```, where *bollingerChannel* is the name of the product as defined in its configuration and *direction* is the name of the property.\r","\r","* ```pluralVariableName``` is the plural form of the variable.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Dataset Definition","definition":"A dataset definition contains a configuration file that defines many aspects of the dataset. There are two types of dataset definitions: Multi-Period-Market and Multi-Period-Daily.","content":["\r","\r","A good part of what makes datasets easy to consume by other bots is the fact that they are standardized in terms of their structure. It is that structure that is specified in the dataset definitions.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a dataset definition, select *Add Dataset Definition* on the bot's node menu.\r","\r"],"configuring":["\r","\r","Select *Configure Definition* on the menu to access the configuration.\r","\r","**Multi-Period-Market:**\r","\r","```json\r","{\r"," \"codeName\": \"Multi-Period-Market\",\r"," \"type\": \"Market Files\",\r"," \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\r"," \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\r"," \"fileName\": \"Data.json\",\r"," \"timeFrames\": {\r"," \"filePath\": \"\",\r"," \"fileName\": \"\"\r"," }\r","}\r","```\r","\r","**Multi-Period-Daily:**\r","\r","```json\r","{\r"," \"codeName\": \"Multi-Period-Daily\",\r"," \"type\": \"Daily Files\",\r"," \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\r"," \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\r"," \"fileName\": \"Data.json\",\r"," \"dataRange\": {\r"," \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\r"," \"fileName\": \"Data.Range.json\"\r"," },\r"," \"timeFrames\": {\r"," \"filePath\": \"\",\r"," \"fileName\": \"\"\r"," }\r","}\r","```\r","\r","\r","* ```codeName``` is the name of the dataset as used within the code.\r","\r","* ```type``` refers to the type of dataset; possible values are ```Market Files``` and ```Daily Files```.\r","\r","* ```validTimeFrames``` refers to the time frames handled by the dataset.\r","\r","* ```filePath``` sets the path on which files are stored; the proper name of the data mine, the bot and the product need to be entered.\r","\r","* ```fileName``` sets the name of the files that constitute the dataset.\r","\r","* ```timeFrames``` sets the name and path of the file indicating which time frames shall be filtered when the users sets a time frames filter.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Indicator Bot","definition":"An indicator bot is an algorithm that processes information that other bots have generated, and produces elaborate datasets for others to consume.","content":["\r","\r","The indicator bot node holds all definitions required for an indicator bot to function. Definitions are split between the definition of processes and products. Processes are algorithms that go through an input dataset, perform certain calculations, and produce an output. Products are the outcome of the work produced by these algorithms, in the form of ellaborate data sets.\r","\r","Most of the behavior expected from an indicator bot is defined by the structure of nodes in the hierarchy and the references among the nodes within these definitions. As such, you do not need to code any of the functions that make up the infrastructure functionality. Dependencies, outputs, data structures, execution sequences, and several other problems are handled by the definitions embodied in the structure of nodes that make up an indicator, and are configured in the visual environment of the design space. Coding is limited to the actual calculation and data building procedures.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add an indicator bot, select *Add Indicator Bot* on the data mine node menu. An indicator bot is created along with the basic structure of nodes required to define it.\r","\r"],"configuring":["\r","\r","Select *Configure Bot* on the menu to access the configuration.\r","\r","```json\r","{\r","\"codeName\": \"Superbot\"\r","}\r","```\r","\r","* ```codeName``` is the name of the bot as used within the code of the system.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Output Dataset","definition":"The output dataset is a reference to a dataset definition. By establishing such reference, the process acquires the definitions as of how the dataset is to be constructed.","content":["\r","\r","There are other effects of establishing a reference from the output dataset to a product dataset definition. Upon execution, every time a process finishes a processing cycle, it triggers an event that may be consumed by other entities. This event indicates that the datasets impacted by the process have been updated.\r","\r","An example of other entities that may be listening to such events is that of plotters. Plotters read datasets and create graphical representations of this data over the charts. Charts are constantly updating the information in the form of candles and indicators in realtime, synchronized with the data being extracted from the exchange by the sensor bot. That kind of automatism is possible thanks to the events that processes trigger every time an execution cycle is finished, signaling to everyone listening that new data is available on each of the impacted datasets.\r","\r","[![Indicators-Process-Output-01](https://user-images.githubusercontent.com/13994516/68976798-f01cf400-07f6-11ea-9ffb-198b5853a220.gif)](https://user-images.githubusercontent.com/13994516/68976798-f01cf400-07f6-11ea-9ffb-198b5853a220.gif)\r","\r","The image above shows the typical references from output datasets to datasets definitions.\r","\r","{% include note.html content=\"An output dataset must reference a dataset definition.\" %}\r","\r"],"folderName":"data_mine","adding":["\r","\r","Output datasets may be added in bulk, for all defined products, or one by one.\r","\r","To add a single {{ title | downcase }} node, select *Add {{ title }}* on the process output menu. \r","\r","{% include tip.html content=\"Remember that an output dataset must reference a valid dataset definition. Make sure you establish the reference after creating the output dataset.\" %}\r","\r","If you have defined multiple products, each with their dataset definitions, and wish to create all corresponding output datasets in bulk, select *Add All Output Datasets\" on the process output menu. The system maps the product definition folder structure with output dataset folders, creates all required output datasets, and establishes the references with the corresponding dataset definitions, with a single click of the button.\r","\r","{% include note.html content=\"Make sure each product has properly defined dataset definitions before creating output datasets in bulk. You may always delete the output datasets and re-create them at will.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Data Dependency","definition":"Data dependencies are references established with dataset definitions of other bots, determining which datasets the process establishing the reference uses as input.","content":["\r","\r","Most bots consume data other bots have produced. Because bots need the data as input for their calculations, processes establish a data dependency with the dataset definitions of other bots. The reference provides the process with all the information needed to decode the dataset, enabling it to perform the required calculations.\r","\r","[![Indicators-Process-Dependencies-02](https://user-images.githubusercontent.com/13994516/68993034-7840df00-0873-11ea-804d-d24e88ce25f7.gif)](https://user-images.githubusercontent.com/13994516/68993034-7840df00-0873-11ea-804d-d24e88ce25f7.gif)\r","\r","The image above shows data dependencies in one bot referencing dataset definitions of another bot.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a single data dependency, select *Add Data Dependency* on the process dependencies, bot data dependencies, or data dependency folder node menus.\r","\r","{% include tip.html content=\"Remember that a data dependency must establish a reference to the appropriate dataset definition. When adding data dependencies manually, you also need to manually establish the reference.\" %}\r","\r","In cases in which multiple data dependencies must be established, you may use the option to create data dependencies in bulk:\r","\r","* The *Add All Data Dependencies* option on the data mine data dependencies node menu adds a bot data dependency for each bot in the data mine, and a data dependency for each dataset definition or each product of each bot. You may use this option after manually adding a data mine data dependencies node and manually establishing the reference with the desired data mine, or after adding all data mine data dependencies, by which the references with data mines are established automatically.\r","\r","It is unlikely that a bot requires numerous data dependencies, thus, the most common scenario is setting up individual data dependencies and establishing references manually. However, if your bot requires multiple data dependencies, the bulk features may be quite useful, as you may create all data dependencies for any given data mine, and simply delete those that are not required.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Record Definition","definition":"The record definition is where indicators define how many properties, what properties and in which order those properties will be made available in each record.","content":["\r","\r","Bots store data in the form of arrays of records, in a minimized plain text file and the standard JSON format, although not as objects with named properties, but as arrays.\r","\r","{% include image-ext.html file='https://user-images.githubusercontent.com/13994516/68998023-303eae00-08ad-11ea-9baa-ddea801c7d6d.png' url='yes' max-width='100' caption='Typical dataset file showing records as arrays.' %}\r","\r","The choice of plain text for storage of large volumes of information has benefits in terms of not requiring any sophisticated technology to store and serve the data (*i.e.:* no database is required).\r","\r","Best practice indicates that there needs to be a balance between the amount of data that is stored and calculations that may be performed at runtime.\r","\r","Storing objects with named properties in the JSON format would be inappropriate as labels would repeat over and over, creating a ridiculous amount of unnecessary information. However, storing arrays in the JSON standard facilitates the handling of files in the context of JavaScript and Node.JS.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a record definition node, select *Add Record Definition* on the product definition node menu. A record definition node is created along with the first record property.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Record Property","definition":"A record property is a piece of information that may be stored as part of the dataset or made available as a calculated property.","content":["\r","\r","Records may have as many properties as required. \r","\r","{% include important.html content=\"The order in which record properties are defined around the parent record definition node is the order in which they are stored in the actual record.\" %}\r","\r","{% include tip.html content=\"The first two records are usually the *begin* and *end* records, featuring the corresponding datetimes that indicate when the record starts and ends.\" %}\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a record property, select *Add Record Property* on the bot's node menu.\r","\r"],"configuring":["\r","\r","Select *Configure Property* on the menu to access the configuration.\r","\r","```js\r","{\r"," \"codeName\": \"record-name\",\r"," \"isString\": false,\r"," \"isCalculated\": true\r","}\r","```\r","\r","* ```codeName``` is the name of the record as it is used in the bot's code. \r","\r","* ```isString``` determines if the field is a text string or if, in turn, is a numeric field. Dates are stored in the *epoch* format, which is numeric. The reason why this configuration is important is that fields that are strings need to be stored between \"double quotes\".\r","\r","* ```isCalculated``` determines if the field is stored in the dataset or if, instead, is calculated at a later stage. A value *true* means that the record is not stored. In the case ```isCaculated``` is not defined in the configuration, it is assumed to be false.\r","\r","[![Indicators-Record-Definitions-01](https://user-images.githubusercontent.com/13994516/69139160-3ce72000-0ac0-11ea-9566-a259c9ea6194.gif)](https://user-images.githubusercontent.com/13994516/69139160-3ce72000-0ac0-11ea-9566-a259c9ea6194.gif)\r","\r","The image above shows a record definition with four record properties.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Formula","definition":"A formula is a mathematical expression intended to determine a numerical value to be applied dynamically to a certain property.","content":["\r","\r","In the context of the trading engine, formulas are used to create user defined statistics.\r","\r","Formulas may use indicators and object properties made available by the trading engine. They must evaluate to a number.\r","\r","{% include note.html content=\"To learn how to write formulas, see [syntax overview](suite-syntax-overview.html).\" %}\r","\r"],"folderName":"trading_engine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Announcement Formula"},{"type":"Calculations Procedure","definition":"The calculations procedure processes information to be fed to calculated properties. Calculated properties are not stored in the data set; instead, they are calculated in real-time as the data is consumed by others.","content":["\r","\r","Bots store data in the minimized array format as a strategy to build the lightest possible datasets. For the same reason, a bot may choose not to store easily calculable information.\r","\r","For example, imagine an indicator that stores buy and sell volumes... does it *need* to store the total volume? Given that it is so easy to calculate, the answer is *probably* not. It is up to the developer to decide, but it is certainly not required.\r","\r","{% include note.html content=\"The calculations procedure is used to calculate properties that the developer chooses not to store in the dataset.\" %}\r","\r","{% include note.html content=\"To fully understand the role of the calculations procedure, please refer to the [data mining workflow](suite-data-mining-workflow.html) page.\" %}\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a calculations procedure, select *Add Missing Items* on the product definition node menu. Items that may be missing are created along with the basic structure of nodes required to define them.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Procedure Initialization","definition":"The procedure initialization is used to initialize variables used by the procedure loop.","content":["\r","\r","This is an example of a procedure loop code snippet, in particular, the code that initializes the array used in the calculation of the Popular SMAs product of the Simple Moving Average (SMA) indicator.\r","\r","```js\r","/* Initialization Code. */\r","variable.last200 = []\r","```\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a procedure initialization, select *Add Procedure Initialization* on the corresponding procedure node menu. A procedure initialization node is created along with the corresponding JavaScript node.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Procedure Loop","definition":"The procedure loop holds the JavaScript code that reads an input, processes the information, and generates an output recursively.","content":["\r","\r","{% include note.html content=\"Please refer to the [coding references](suite-coding-the-indicator-logic.html) page to learn how to code the indicator's logic.\" %}\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a procedure loop, select *Add Procedure loop* on the corresponding procedure node menu. A procedure loop node is created along with the corresponding JavaScript node.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Data Building Procedure","definition":"The data building procedure processes information to be fed to properties that are stored in the output dataset.","content":["\r","\r","This procedure holds the core logic of the bot, as it features the code that performs the calculations required to produce the new data set. The code is split between a procedure initialization and a procedure loop.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a data buildings procedure, select *Add Missing Items* on the product definition node menu. Items that may be missing are created along with the basic structure of nodes required to define them.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Trading Bot","definition":"Based on datasets exposed as products by other bots (counting sensors, indicators and even other trading bots), a trading bot applies the trading logic defined on a trading system to, on one side, generate a complete trading simulation (outputting datasets that include trades, the action of strategies, validation of conditions, etc.), and on the other side, manage the execution of orders when on a forward testing or live trading session.","content":["\r","\r","Trading bots are complex pieces of software. The system does not yet encourage the creation of further trading bots, as it is not currently possible to create them with minimal coding. However, developers are free to clone the existing trading bot and improve it as they see fit.\r","\r"],"folderName":"data_mine","adding":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Plotter","definition":"A plotter is a device used to produce a graphic representation of datasets generated by bots.","content":["\r","\r","Plotters usually have a one-to-one relationship with bots, as they are often created as a customized solution. However, in practice, there is no constraint to creating any number of plotters for a single bot or a single plotter for multiple bots.\r","\r","The overall workflow of a plotter, while reading a dataset, consists in:\r","\r","* Applying a set of rules to identify certain data points;\r","\r","* Use those points to form lines and polygons;\r","\r","* Apply graphical styles to those lines and polygons.\r","\r","Those actions are performed recursively for each record, and the graphics are plotted on the charts in real-time as data is processed.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a plotter, select *Add Plotter* on the data mine node menu. An indicator bot is created along with the basic structure of nodes required to define it.\r","\r"],"configuring":["\r","\r","Select *Configure Plotter* on the menu to access the configuration.\r","\r","```json\r","{\r"," \"codeName\": \"Plotter-Name\"\r","}\r","```\r","\r","* ```codeName``` is the name of the plotter as it is used within the bot's code.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Trading System","definition":"A trading system is a framework handling the low-level logic that serves to structure the processes and methods used to implement and deploy trading strategies.","content":["\r","\r","In practical terms, a trading system is a hierarchical arrangement organizing the actionable aspects of your investment plan. The hierarchy contains definitions regarding any number of trading strategies, all operating on the same market and sharing the same initial capital allocation.\r","\r","You use a trading system to define strategies following the Superalgos Protocol, splitting strategies into four stages: trigger, open, manage, and close.\r","\r","The concept of describing strategies in stages is fundamental to the methodical aspect of the trading system, as it provides a framework to run every strategy with the same framework, which contributes to developing scalable trading systems that may grow to any number of strategies.\r","\r","When a trading system features more than one strategy, the first strategy has precedence over the second, the second over the third, and so on. This means that strategies are evaluated in a sequence. When a given strategy is triggered-on, the remaining strategies in the queue are no longer evaluated until the strategy triggers off. In other words, when multiple strategies are deployed within a single trading system, only one strategy may trade at any given moment, and precedence is given by the order around the trading system node.\r","\r","As a corollary to the above, if you wish strategies to operate in different markets, or you wish strategies to be able to take positions simultaneously, then you must set up those strategies in different trading systems.\r","\r","{% include important.html content=\"Changes made to trading systems shipping with Superalgos may not be saved at the workspace level. If you wish to modify those hierarchies and use them in such modified versions, you need to clone them and modify the clone instead.\" %}\r","\r"],"folderName":"trading_system","starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"adding":["\r","\r","To add a trading system, select *Add Trading System* on the workspace node menu. \r","\r","{% include tip.html content=\"You may work with as many trading systems as you wish\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Trading Strategy","definition":"A trading strategy is a set of actions occurring in stages, designed to achieve a specific goal within a broader plan, via taking and managing positions.","content":["\r","\r","The definition of a strategy may be analyzed in three sections:\r","\r","{% include callout.html type=\"success\" content=\"A strategy is a set of actions occurring in stages\" %}\r","\r","Strategies are defined in the following stages:\r","\r","* Trigger Stage\r","* Open Stage\r","* Manage Stage\r","* Close Stage\r","\r","These stages are played in a sequence: once a strategy is *triggered* it looks to *open* a position; once a position is open, it is time to *manage* it as the trade develops; and once a stop or take profit target is hit, it is time to *close* the position.\r","\r","While stages are played in a sequence, upon execution there are overlaps. That is, a stage doesn't need to be closed for the next stage to be opened. The framework sets a clear separation of the concepts embodied in each stage to facilitate the process of defining and developing a trading system. But the truth is that, both at the conceptual level and during execution, the lines between stages are rather blurry.\r","\r","{% include callout.html type=\"success\" content=\"designed to achieve a specific goal within a broader plan\" %}\r","\r","Your investment plan or trading career may have any number of goals *(e.g.: accumulating a certain asset, diversifying on a basket of coins, annual profit targets, etc.)*. If you attempt to achieve more than one goal with a single strategy, you will sooner or later run into problems. It may be doable, but the strategy would certainly be more complex than is necessary or desirable. In any case, the logical thing to do is to analyze each goal separately so that you may design (at least) one clear, straightforward strategy for each goal.\r","\r","One of the edges granted by trading automation is the capacity to develop and deploy an unlimited number of strategies. At the same time, Superalgos allows the administration of complexity by breaking down and structuring concepts in small units: a trading system contains strategies, which contain stages, which contain specific definitions. \r","\r","Understanding that keeping things simple is important will help you develop a robust and extensible arsenal of bots. Simplicity is the key to sustainability.\r","\r","In other words, the infrastructure provided by Superalgos enables the hyperspecialization of strategies. Do not aim to trade in all sorts of market situations with the same strategy. Instead, develop a strategy for each market situation you wish to trade.\r","\r","{% include callout.html type=\"success\" content=\"via taking and managing positions\" %}\r","\r","The definition of strategy points to the concept of a *position*. A position is a process that exchanges the base asset for the quoted asset and that—after some time, as the position develops and targets are hit—exchanges back the quoted asset for the base asset. \r","\r","The framework implemented in the Superalgos Protocol is optimized to work with such a concept.\r","\r","However, Superalgos is flexible enough to allow you to override this hard interpretation of the concept of *a position*. For example, you may design market-making strategies, a strategy to balance portfolios, or develop all sorts of ideas that don't necessarily fit in that part of the definition.\r","\r"],"folderName":"trading_system","starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"adding":["\r","\r","To add a strategy, select *Add Strategy* on the trading system node menu. The strategy node is created along with the rest of the basic structure of nodes required to define each of the strategy stages and their events.\r","\r","{% include tip.html content=\"You may work with as many strategies as you wish. \" %}\r","\r","{% include important.html content=\"Strategies within the same trading system work in the same market, have the same base asset, and —most importantly—share the same capital. This means that only one strategy in the trading system may be triggered at any one point and that no other strategy in the trading system may be triggered until the first one is triggered off. If you wish to have more than one strategy trading at the same time, then those strategies must be put in separate trading systems. \" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Trigger Stage","definition":"The trigger stage deals with monitoring the market in search of trading opportunities with the corresponding strategy.","content":["\r","\r","A trading system may have multiple strategies designed for the same market.\r","\r","An important aspect of trading systems is that they are allocated a certain amount of capital (see the base asset parameter of the trading session). As a consequence, strategies within a trading system share a certain capital allocation. \r","\r","The logic behind the concept of the trigger stage assumes that different strategies within a trading system may be specialized for trading in different market situations. The trigger stage in each strategy is, therefore, the mechanism by which any particular strategy within the trading system may be selected to trade, given any particular market situation.\r","\r","The triggering-on of a strategy effectively blocks the selection of any other strategy in the trading system and reserves the whole capital allocation for the one strategy selected, until the strategy is triggered-off.\r","\r","Therefore, if certain strategies are meant to trade under the same market situations and open trades concurrently, then those strategies should be deployed in separate trading systems.\r","\r","Once a strategy is triggered, the strategy may decide—or not—to take a position. If a position is taken, then the rest of the stages eventually become active.\r","\r","However, the strategy may also be triggered off without taking a position. When a strategy is triggered off, the trading system goes back to monitoring the trigger-on definitions for all strategies, and capital is released to be used by whatever strategy is triggered-on next.\r","\r"],"folderName":"trading_system","starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"adding":["\r","\r","To add a trigger stage node, select *Add Missing Stages* on the strategy node menu. All stages that may be missing are created along with the rest of the basic structure of nodes required to define each of them and their events.\r","\r","{% include note.html content=\"Only one trigger stage may exist in each strategy.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Trigger On Event","definition":"The trigger-on event defines the set of rules that need to be met for the corresponding strategy to be triggered on. A strategy that is triggered may use all the capital available to the trading system, and prevents other strategies in the system from triggering.","content":["\r","\r","In conceptual terms, the trigger-on event is the mechanism you use to define the specific situations in which you would consider trading with the corresponding strategy. Think of the trigger-on event as the definition of the scenario in which the trading idea behind the strategy should be carefully considered.\r","\r","Once a strategy is triggered-on, the system starts evaluating the take position event. In conceptual terms, it means that the system has been alerted that the trading idea behind the corresponding trading strategy has produced a signal and that it should carefully monitor the market for the opportunity to take a position.\r","\r"],"folderName":"trading_system","starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"adding":["\r","\r","To add a trigger-on event node, select *Add Missing Events* on the trigger stage node menu. All events that may be missing are created along with the rest of the basic structure of nodes required to define each of them.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Trigger Off Event","definition":"The trigger-off event defines the situation in which the corresponding strategy shall be triggered-off. A strategy that is triggered-off releases the capital in reserve and makes it available to other strategies in the trading system.","content":["\r","\r","In conceptual terms, the trigger-off event is the mechanism you use to define the situation in which the corresponding strategy should stop considering the trading opportunity signaled by the trigger-on event. That is, you use the trigger off event to describe the scenario for the invalidation of the trading idea behind the strategy.\r","\r","Once a strategy is triggered-on, only two possible scenarios may follow. Either the take position event is triggered, thus, taking a position, or the trigger-off event is triggered first.\r","\r","In the first scenario, the strategy remains *on* until the position is closed. As the position is closed, the strategy is triggered-off. In the second scenario, the strategy is triggered-off immediately.\r","\r"],"folderName":"trading_system","starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"adding":["\r","\r","To add a trigger-off event node, select *Add Missing Events* on the trigger stage node menu. All events that may be missing are created along with the rest of the basic structure of nodes required to define each of them.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Take Position Event","definition":"The take position event defines the situation that needs to be met to take a position.","content":["\r","\r","The trigger-on event merely selects a strategy to be considered for trading under the current market situation. The actual decision to enter a position may require more specific conditions to be met. For that reason, the take position event is a separate entity from the trigger-on event.\r","\r","Therefore, the take position event is defined with its own set of situations and conditions.\r","\r","Once the take position event is triggered, the decision to take a position has been made and there is nothing else to consider in that regard. Therefore, the runtime evaluation of the trading system shifts from the trigger stage to the open stage. \r","\r"],"folderName":"trading_system","starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"adding":["\r","\r","To add a take position event node, select *Add Missing Events* on the trigger stage node menu. All events that may be missing are created along with the rest of the basic structure of nodes required to define each of them.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Open Stage","definition":"The open stage deals with the definitions that make up the logic to enter a position, including the target rate and size, and order execution.","content":["\r","\r","The open stage comes into play once the take position event is triggered. \r","Conceptually, the open stage deals with the details concerning how the position shall be opened once the decision to take a position has been made. That is, the open stage does not participate in the process of deciding whether a position should be open or not.\r","\r","To take a position, several definitions are required. In particular, those concerning targets, such as the rate and size of the position, and the logic of the execution strategy, that is, how many of which orders shall be placed at the exchange—and when—to enter the position.\r","\r","The open stage closes as soon as one of the following events happen:\r","\r","* the target size gets filled,\r","\r","* the close stage event is triggered,\r","\r","* the take profit or stop loss targets are hit.\r","\r"],"folderName":"trading_system","starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"adding":["\r","\r","To add an open stage node, select *Add Missing Stages* on the strategy node menu. All stages that may be missing are created along with the rest of the basic structure of nodes required to define each of them and their events.\r","\r","{% include note.html content=\"Only one open stage may exist in each strategy.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Close Stage Event","definition":"The close stage event defines the set of rules that need to be met for the corresponding stage to be closed.","content":["\r","\r","Both the open and close stages are closed once the target size is filled. \r","\r","However, Superalgos allows an extra level of control so that the user may choose to close either stage given specific market situations. Such is the intent of the close stage event.\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Initial Targets","definition":"The initial targets node holds the most basic definitions about the position to be taken: the target rate and the target size.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Managed Stop Loss","definition":"The managed stop loss node features the definition of the phases that make up the management of the stop loss target as the position develops.","content":["\r","\r","A stop loss target is a crucial element of a trading strategy, as it is the device in charge of preserving capital. Used wisely, the management of the stop loss may also play the role of protecting unrealized profits. \r","\r","The system for managing the stop loss provided by Superalgos is highly flexible. It may start as simple as a constant value at a certain rate, but may switch to a trailing stop as soon as the price moves away from the target rate by a certain percentage, or when a certain market situation arises.\r","\r","In fact, the formula may change as many times as required, as you may set up unlimited phases, and switch back and forth as required using predefined events to make the switch.\r","\r","{% include note.html content=\"The above example of a constant stop loss followed by a trailing stop is merely an example of a typical setup. The formulas you use to determine the rate of the target on each phase may be anything you choose, thus, you may achieve whatever behavior you imagine and can describe mathematically.\" %}\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add a stop node, select *Add Missing Items* on the manage stage node menu. All items that may be missing are created along with the rest of the basic structure of nodes required to define each of them.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Phase","definition":"The management of take profit and stop loss targets is done in phases. Phase 1 sets the initial targets, either for the managed stop loss or the managed take profit, and becomes active as soon as the first order is placed. Subsequent phases allows switching to different formulas given certain market situations.","content":["\r","\r","The default management of phases is sequential, meaning that phase 2 comes after phase 1, phase 3 comes after phase 2, and so on. \r","\r","To switch from one phase to the next phase in the sequence, the next phase event is used. When the situation described in the next phase event validates ```true```, the switch occurs and the next phase becomes the active phase.\r","\r","However, management does not need to happen sequentially. By using the move to phase event instead of the next phase event, the system may activate any other phase and not just the one next in the sequence.\r","\r","Both events may be used at the same time, and whichever event is triggered first takes precedence.\r","\r","{% include note.html content=\"Notice that stop loss and take profit phases are independent and defined separately from each other, each below the corresponding managed stop loss and managed take profit nodes.\" %}\r","\r","{% include note.html content=\"The value of the target set for a phase is expressed by a formula. Learn more about [formulas](suite-situations-conditions-formulas.html) and how to write them.\" %}\r","\r","{% include tip.html content=\"This explanation about phase 1 may be extended to any other phase, as they all work similarly, and it applies both for managed stop loss phases and managed take profit phases.\" %}\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add a new phase, select *Add Phase* on the stop or take-profit node menu. A new phase is added along with the basic structure of nodes required to define each of them and their events.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Next Phase Event","definition":"The next phase event determines when there should be a switch of phases to the next phase in a predefined sequence.","content":["\r","\r","The management of a position is —by default—done in sequential phases, each phase with its formula. To move from one phase to the next, a situation you define must be validated. \r","\r","When that happens, the next phase event is triggered, the current phase is abandoned, and the next phase is activated. From that instant on, the system evaluates the formula corresponding to the next phase.\r","\r","The sequence of phases may be as long as the number of phases you choose to add and define. There may be unlimited numbers of phases.\r","\r","{% include note.html content=\"Events are triggered by situations, which are defined by conditions. Both are explained in the situations, conditions, and formulas page.\" %}\r","\r","{% include tip.html content=\"To set up a next phase event, add the node and define the situation that should trigger the event.\" %}\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add a next phase event, select *Add Next Phase Event* on the corresponding phase node menu. The event is added along with the basic structure of nodes to define it.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Move To Phase Event","definition":"The move to phase event determines when there should be a switch of phases from the current phase to an arbitrary phase determined by a reference.","content":["\r","\r","While phases are defined in a sequence and you may choose to manage the position by shifting from one phase to the next in the sequence, the move to phase event offers an alternative.\r","\r","With the move to phase event, you may arbitrarily decide which will be the next phase. To do that, you must establish a reference from the move to phase event, to the phase that should be activated once the event is triggered.\r","\r","Any number of move-to-phase events may be set up for each and every phase, allowing complete flexibility on how the position is managed. This feature allows setting up versatile position-management algorithms that may switch to different formulas back and forth, or in any configuration imaginable.\r","\r","{% include note.html content=\"A move-to-phase event must reference a phase node. When the situation in the move-to-phase event evaluates ```true``` the management shifts to the referenced phase.\" %}\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add a move-to-phase event, select *Add Move to Phase Event* on the corresponding phase node menu. The event is added along with the basic structure of nodes to define it.\r","\r","{% include note.html content=\"Remember to establish a reference with the phase you wish to activate once the situation associated with the event validates true.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Managed Take Profit","definition":"The managed take profit node features the definition of the phases that make up the management of the take profit target as the position develops.","content":["\r","\r","A take profit target bears an important role in your strategy, as it plays a crucial role in determining the risk/reward ratio of the trading opportunity that materialized, and upon which your strategy acted to take a position.\r","\r","The foremost goal of trading is to increase your capital, and how you set your initial take profit target and manage it afterward determines how much you may increase your capital given a favorable price action.\r","\r","{% include note.html content=\"The system provides the same functionality for managing the take profit target as explained for the managed stop loss target, so please make sure you go through that section too. \" %}\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add a take profit node, select *Add Missing Items* on the manage stage node menu. All items that may be missing are created along with the rest of the basic structure of nodes required to define each of them.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Target Size In Base Asset","definition":"Target size in base asset is used to define the size of the position, denominating it in the base asset.","content":["\r","\r","The system supports defining the size of the position in either asset involved in the market: the base asset, or the quoted asset, as per the exchange listing of the market. \r","\r","The target size may be defined in one of the two assets only, to avoid inconsistencies. \r","\r","The target size is the maximum size the position may achieve. That is, the definition of the target size is used as a cap for the total size of orders that may be placed during the open stage.\r","\r","If you prefer to define the size of the position denominated in the base asset, then use this node and delete the target size in quoted asset node.\r","\r","{% include important.html content=\"Only one target size definition may exist at a time.\" %}\r","\r","Even though the definition of the target size is denominated in one of the two assets in the market, the system keeps track of accounts for both assets. That is, performance metrics such as profit loss, ROI, hit ratio, or the annualized rate of return are calculated both based on the base asset and the quoted asset. In fact, metrics are also calculated in a consolidated manner, taking into account both assets at the same time. \r","\r","All of this information is made available for multiple contexts, for instance, for each position or the whole episode, through the data structure of the trading engine.\r","\r","When tracking the results of your trading operation, make sure you refer to the set of accounts that make sense for your trading system. This will all become clearer once you read about the trading engine and the layer managers available on the charts.\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Target Size In Quoted Asset","definition":"Target size in quoted asset is used to define the size of the position, denominating it in the quoted asset.","content":["\r","\r","If you prefer to define the size of the position denominated in the quoted asset, then use this node and delete the target size in base asset node.\r","\r","{% include important.html content=\"Make sure you read the definition of the target size in base asset node to get the proper context for this definition.\" %}\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Target Rate","definition":"The target rate is a reference rate that, in combination with the placement of managed stop loss and managed take profit targets, is used to determine whether the targets have been hit.","content":["\r","\r","The system needs to determine when the managed stop loss and managed take profit targets have been hit. To do this, the system observes how the user places the targets in relation to the target rate.\r","\r","*For example:*\r","\r","If the phase 1 managed stop loss target is placed below the target rate and the phase 1 managed take profit target above it, the system assumes that:\r","\r","* the stop loss target is hit when the current rate is equal to or smaller than the managed stop loss value;\r","\r","* the stop loss target is hit when the current rate is equal to or greater than the managed take profit value;\r","\r","The reversed example is true, as well.\r","\r","This is how the system uses the target rate internally.\r","\r","Additionally, defining a target rate at the level of the stage may be of use so that you may retrieve the value from formulas while setting the rate of limit orders.\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Order Rate","definition":"The order rate node defines the rate of limit orders.","content":["\r","\r","Because the purpose of limit orders is to have control over the rate at which the order is executed, the definition of the order rate is required for all limit orders.\r","\r","{% include note.html content=\"Please, read about [limit orders](suite-strategies-open-execution.html#limit-buy-order) to complement the information in this definition.\" %}\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Open Execution","definition":"The open execution node groups all execution algorithms involved in the process of opening a position.","content":["\r","\r","One of the crucial elements that make up trading intelligence is the capacity to control every aspect of order execution, as the execution itself entails strategic elements that directly affect performance. \r","\r","Superalgos' trading engine is designed as a generic infrastructure that allows building execution logic from the ground up, with as much simplicity or complexity as may be required.\r","\r","The trading system splits the definitions of the execution logic by trading strategy. That is, each strategy in a trading system may have its execution logic. \r","\r","The next layer of control comes in the form of execution algorithms. Each strategy may have as many algorithms as required, and each algorithm may have as many instructions as required.\r","\r","This model allows the granular control of orders with which you may build algorithms that may interact with other algorithms, and so on.\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Execution Algorithm","definition":"An execution algorithm is a set of instructions used to place and manage orders at the exchange.","content":["\r","\r","Any given strategy may have simple or very complex execution requirements. To deal with complexity, Superalgos allows users to set up as many execution algorithms as required.\r","\r","Then, the logic in each algorithm may remain simple, while the combined work of multiple algorithms may deal with the required complexity.\r","\r","Each algorithm may be assigned a fraction of the target size (see the configuration section), thus, the extent of each algorithm's involvement in the execution is defined by this parameter.\r","\r","An execution algorithm is a set of instructions in the sense that the orders defined in each algorithm are themselves the instructions. That is, an execution algorithm is a set of predefined orders which may be created or canceled given specific market situations.\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","To configure the {{ title | downcase }} node, select *Configure* on the menu. \r","\r","```json\r","{\r"," \"percentageOfStageTargetSize\": 100 \r","}\r","```\r","\r","* ```percentageOfStageTargetSize``` is the definition of how much of the target size of the whole stage will be handled by the one specific execution algorithm, expressed as a percentage of the total target size. Posible values are real numbers between ```0``` and ```100```, including the extremes. If you set the value to ```0```, the algorithm will not be executed.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Market Buy Order","definition":"A market buy order is an instruction sent to the exchange to buy the base asset, for immediate execution at current market prices.","content":["\r","\r","Traders usually use market orders when the priority is the certainty of execution over the rate of execution. Depending on the size of the order and the liquidity of the particular market/exchange, market orders may experience more or less slippage.\r","\r","###### Market Orders' Rate\r","\r","Users have no control over the rate at which a market order is filled. The exchange fills the order with available bids/asks at the time of execution.\r","\r","{% include tip.html content=\"The information below this banner is valid for all types of orders.\" %}\r","\r","###### Order Size\r","\r","As explained in the definition of the execution algorithm, each algorithm is allocated a percentage of the target size defined under the initial targets node.\r","\r","*The simplified logic for non-coders:*\r","\r","```algorithmSize = targetSize * percentageOfStageTargetSize / 100```\r","\r","*The actual code:*\r","\r","```js\r","let algorithmSizeInBaseAsset = tradingEngineStage.stageBaseAsset.targetSize.value * executionAlgorithm.config.percentageOfStageTargetSize / 100\r","\r","let algorithmSizeInQuotedAsset = tradingEngineStage.stageQuotedAsset.targetSize.value * executionAlgorithm.config.percentageOfStageTargetSize / 100\r","```\r","\r","Similarly, the size of an order is defined as a percentage of the size that the particular algorithm is allowed to execute *(see the configuration)*. \r","\r","*The simplified logic for non-coders:*\r","\r","```orderSize = algorithmSize * percentageOfAlgorithmSize / 100```\r","\r","*The actual code:*\r","\r","```js\r","tradingEngineOrder.orderBaseAsset.size.value = algorithmSizeInBaseAsset * tradingSystemOrder.config.percentageOfAlgorithmSize / 100\r","```\r","\r","Because each execution algorithm may define multiple orders, the typical scenario is that all orders defined within an algorithm add up to 100% of the size allocated to the algorithm. \r","\r","However, it is up to the user how to manage this setting, as different hacks may be found to achieve different behaviors.\r","\r","{% include callout.html type=\"success\" content=\"If orders defined add up to more than 100% of the size allocated to the algorithm, the trading engine does not enforce a cap.\" %}\r","\r","Pretty much like the user may decide to define the size of orders within an algorithm above or below the 100% mark, the same is true when defining multiple algorithms. In other words, the user may choose to set up algorithms whose combined sizes amount to more or less than 100%.\r","\r","In cases in which the combined sizes amount to less than 100%, the target size would be partially filled at best. On the other hand, in cases in which the combined sizes amount to more than 100%, then the orders and/or algorithms would compete with each other.\r","\r","{% include callout.html type=\"success\" content=\"The one validation the trading engine does is to enforce the target size defined under the initial targets node. The target size is treated as a hard cap, so that no position may ever be sized larger than the target.\" %}\r","\r","If the order size as defined would cause the target size to be breached, then the order size is lowered to match the hard cap.\r","\r","*The simplified logic for non-coders:*\r","\r","```js\r","if ( targetSize + sizePlaced > targetSize )\r"," { orderSize = targetSize - sizePlaced }\r","```\r","\r","*The actual code:*\r","\r","```js\r","if (\r"," tradingEngineOrder.orderBaseAsset.size.value + tradingEngineStage.stageBaseAsset.sizePlaced.value >\r"," tradingEngineStage.stageBaseAsset.targetSize.value\r"," ) {\r"," tradingEngineOrder.orderBaseAsset.size.value = tradingEngineStage.stageBaseAsset.targetSize.value - tradingEngineStage.stageBaseAsset.sizePlaced.value\r"," }\r","```\r","\r","{% include note.html content=\"See the order's configuration to learn how to set up the order size.\" %}\r","\r","###### Placing and Filling of Orders\r","\r","The trading engine keeps track of the amounts placed and the amounts filled based on the feedback obtained from the exchange, and makes the information available in the size placed and size filled nodes. The nodes are present in multiple contexts, such as the particular stage (open and close) or the particular order type, and are denominated both in the base asset and quoted asset. You may learn more about how to track the size placed and size filled on the trading engine pages.\r","\r","###### Closing of Orders\r","\r","Orders may be closed upon the occurrence of the following two events:\r","\r","* The exchange reports the order was filled. In such a case, the trading engine closes the order.\r","\r","* The cancel order event is triggered. This is an event the user may configure with the typical set up of situations and conditions.\r","\r","###### Spawning Multiple Orders\r","\r","All of the available types of orders may be configured so that multiple orders may be spawned, one after the other, through the same order definition.\r","\r","This allows, for example, setting an order for 1% of the size allocated to the algorithm, and have the trading engine spawn one order per execution cycle until the 100% mark is reached. Such a feature may allow many more hacks and is yet another tool that—combined with the rest—enables a great deal of control over orders execution.\r","\r","A new instance of an order may be spawned only under the following context:\r","\r","* The previous instance of the order is closed. That is, two instances of the same order may not exist at the same time.\r","\r","* The size filled at the level of the execution algorithm is within the limit established in the algorithm's configuration.\r","\r","* The size filled at the level of the stage must be within the target size defined under the initial targets node.\r","\r","{% include note.html content=\"See the order's configuration to learn how to configure the parameter affecting this behavior.\" %}\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","To configure the {{ title | downcase }} node, select *Configure* on the menu. \r","\r","```json\r","{\r"," \"percentageOfAlgorithmSize\": 100, \r"," \"spawnMultipleOrders\": false \r","}\r","```\r","\r","* ```percentageOfAlgorithmSize``` is the definition of how much of the size handled by the algorithm shall be allocated to this particular order. Posible values are real numbers between ```0``` and ```100```, including the extremes. If you set the value to ```0```, the order will not be executed.\r","\r","* ```spawnMultipleOrders``` is the parameter that indicates whether additional spawned orders are allowed (```true```) or not (```false```).\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Market Sell Order","definition":"A market sell order is an instruction sent to the exchange to sell the base asset, for immediate execution at current market prices.","content":["\r","\r","{% include tip.html content=\"Please read the definition of [market buy order](suite-strategies-open.html#market-buy-order) for relevant information about how orders in general—and market orders in particular—work. \" %}\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","To configure the {{ title | downcase }} node, select *Configure* on the menu. \r","\r","```json\r","{\r"," \"percentageOfAlgorithmSize\": 100, \r"," \"spawnMultipleOrders\": false \r","}\r","```\r","\r","* ```percentageOfAlgorithmSize``` is the definition of how much of the size handled by the algorithm shall be allocated to this particular order. Posible values are real numbers between ```0``` and ```100```, including the extremes. If you set the value to ```0```, the order will not be executed.\r","\r","* ```spawnMultipleOrders``` is the parameter that indicates whether additional spawned orders are allowed (```true```) or not (```false```).\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Limit Buy Order","definition":"A limit buy order is an instruction sent to the exchange to buy the base asset, for execution at a specific rate or better.","content":["\r","\r","Traders usually use limit orders when the priority is the rate of execution over the certainty of execution. Limit orders are much more efficient than market orders in terms of rate, particularly for larger sizes which—when executed as market orders—may suffer considerable slippage filled as fast as possible with the order book of the particular instant.\r","\r","Also, many exchanges regard limit orders as market makers, that is, orders that bring liquidity to the market, and, therefore, may charge relatively better fees.\r","\r","###### Limit Orders' Rate\r","\r","Superalgos users must define the rate at wish they wish the order to be filled. The exchange is responsible for not filling the order unless it can match it with bids/asks at the rate set by the user, or at a better rate.\r","\r","Small discrepancies between the actual rate and the order rate are to be expected, as not all exchanges handle decimals and other conversions involving, for example, fees, in the same manner.\r","\r","{% include note.html content=\"Limit orders must define a rate using the appropriate child node, otherwise, the target rate defined as an initial target is used. If no rate is defined at all, the system stops with an error upon execution. The configuration of the order deals with the size. \" %}\r","\r","{% include tip.html content=\"Please read the definition of [market buy order](suite-strategies-open.html#market-buy-order) for relevant information about how orders in general work, in particular, the section about Order Size, Filling of Orders, Closing of Orders, and Spawning Multiple Orders. \" %}\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","To configure the {{ title | downcase }} node, select *Configure* on the menu. \r","\r","```json\r","{\r"," \"percentageOfAlgorithmSize\": 100, \r"," \"spawnMultipleOrders\": false \r","}\r","```\r","\r","* ```percentageOfAlgorithmSize``` is the definition of how much of the size handled by the algorithm shall be allocated to this particular order. Posible values are real numbers between ```0``` and ```100```, including the extremes. If you set the value to ```0```, the order will not be executed.\r","\r","* ```spawnMultipleOrders``` is the parameter that indicates whether additional spawned orders are allowed (```true```) or not (```false```).\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Limit Sell Order","definition":"A limit sell order is an instruction sent to the exchange to sell the base asset, for execution at a specific rate or better.","content":["\r","\r","{% include tip.html content=\"Please read the definition of [limit buy order](suite-strategies-open.html#limit-buy-order) for relevant information about how limit orders work. Also, please read the definition of [market buy order](suite-strategies-open.html#market-buy-order) for relevant information about how orders in general work, in particular, the section about Order Size, Filling of Orders, Closing of Orders, and Spawning Multiple Orders. \" %}\r","\r","\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","To configure the {{ title | downcase }} node, select *Configure* on the menu. \r","\r","```json\r","{\r"," \"percentageOfAlgorithmSize\": 100, \r"," \"spawnMultipleOrders\": false \r","}\r","```\r","\r","* ```percentageOfAlgorithmSize``` is the definition of how much of the size handled by the algorithm shall be allocated to this particular order. Posible values are real numbers between ```0``` and ```100```, including the extremes. If you set the value to ```0```, the order will not be executed.\r","\r","* ```spawnMultipleOrders``` is the parameter that indicates whether additional spawned orders are allowed (```true```) or not (```false```).\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Create Order Event","definition":"The create order event controls the placement of orders.","content":["\r","\r","Even though the decision to take a position may have been made, the user may still decide to exert additional control over the placement of orders. Such is the intent of the create order event.\r","\r","An order defined in an execution algorithm will be executed only if the event evaluates ```true```.\r","\r","If you wish orders to be placed as defined immediately after the take position event has been triggered, the use the statement ```true``` your only create order event condition.\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Cancel Order Event","definition":"The cancel order event makes cancelling limit orders possible.","content":["\r","\r","The cancel order event defines the market situations in which a limit order shall be canceled. When the event is triggered, the order is closed, even when the order may have been partially filled. In such a case, the size filled remains as is, and all accounts are computed accordingly, with the partial fill.\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Simulated Exchange Events","definition":"The simulated exchange event node allows to override the parameters set at the level of the trading session on a per order basis to determine how each order shall be simulated.","content":["\r","\r","The offspring nodes under simulated exchange events allow setting order-specific parameters for the size filled, actual rate, and fees paid, so that each order may be simulated in a specific manner.\r","\r","If either of the offspring nodes is not present or is undefined, then the parameters configured at the level of the trading session are factored in by default.\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Simulated Partial Fill","definition":"The simulated partial fill parameter allows simulating the partial fill of orders.","content":["\r","\r","Upon each execution, the simulation verifies if the current candle intersects the rate set for the order. If it does, it uses the value in this parameter as a factor to determine and keep track of what percentage of the order is filled.\r","\r","The same process repeats for each subsequent candle, until the order is filled.\r","\r","When the parameter is not present or undefined, the simulation assumes the order is filled as soon as the rate is hit.\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","To configure the {{ title | downcase }} node, select *Configure* on the menu. \r","\r","```json\r","{ \r"," \"fillProbability\": 1\r","}\r","```\r","\r","* ```fillProbability``` indicates the probability of an order getting filled upon each tag of the price. Values may range from ```0``` to ```1```. The value ```0``` indicates that there are 0% chances of the order getting filled. With such a setting, the order will never get filled in the simulation. The value ```1``` indicates that there is a 100% probability of the order getting filled. With such a setting, the order is filled upon the first tag of the price. A value of ```0.5``` indicates a 50% probability, thus, it takes two tags of the price for the order to fill completely with such a setting.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Simulated Actual Rate","definition":"The simulated actual rate node allows setting a specific rate value for the simulation of each order, overriding the slippage parameter of the trading session.","content":["\r","\r","The slippage parameter of the trading session allows setting a blanket slippage for all orders in the trading system. The simulated actual rate node allows control on a per-order basis, so each order may be simulated with a specific rate. \r","\r","{% include note.html content=\"If the node is not present or the parameter is undefined, the slippage parameter set up for the trading session is used.\" %}\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Simulated Fees Paid","definition":"The simulated fees paid node allows setting a specific fee for the simulation of each order, overriding the fee structure parameter of the trading session.","content":["\r","\r","The fee structure parameter of the trading session allows setting a blanket fee structure (maker and taker) for all orders in the trading system. The simulated fees paid node allows control on a per-order basis, so each order may be simulated with a specific fee. \r","\r","{% include note.html content=\"If the node is not present or the parameter is undefined, the fee structure parameter set up for the trading session is used.\" %}\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add Missing Items* on the parent node menu. \r","\r"],"configuring":["\r","\r","To configure the {{ title | downcase }} node, select *Configure* on the menu. \r","\r","```json\r","{ \r","\"percentage\": 0.1\r","}\r","```\r","\r","* ```percentage``` is the percentage to be applied to calculate the fees for the specific order.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Manage Stage","definition":"The manage stage deals with the setting and management of stop loss and take profit targets, both to protect your capital and to increase the efficiency of your trading system.","content":["\r","\r","The first and foremost rule of trading is to preserve capital and its main goal is to increase it.\r","\r","Conceptually, a position is not an instantaneous event, but an event which has an opening, a period of maturation, and a closing. The management of the position happens throughout the process.\r","\r","The concept of managing the position refers to the fact that the formulas that determine the take profit and stop loss targets may change as the position develops. A typical situation in which you may want to change your original take profit and stop loss formulas is when the position seems to be developing well in your favor.\r","\r","It may be in your best interest to manage the stop loss, moving the target in the direction that would help protect unrealized profits. It may also be in your interest to move the take profit target to extract a larger profit than originally expected. Or you may wish to set up a mechanism that closes the trade as soon as a certain market situation materializes.\r","\r","The management of take profit and stop loss is done independently of each other, in phases. Therefore, each concept has its own set of management phases.\r","\r","Each phase has its formula to describe the corresponding target. Users may define situations in which the current phase shall be abandoned and a different phase—with its formula—shall be implemented. \r","\r","Keep in mind that the position is in constant development, so there may be as many phases as you deem appropriate for your particular strategy.\r","\r","The idea of managing targets in phases derives from the notion that big market moves tend to provide clues as to what may come up next. For instance, rallies may accelerate as more traders join the move. Recognizable patterns may emerge. Signs of exhaustion may be identified.\r","\r","All of these considerations may feed the dynamic analysis performed in each phase as the position develops.\r","\r","Upon execution, the system verifies if the current candle has tagged either of the targets. If—or when—it does, the close stage kicks in and closing execution begins.\r","\r","{% include callout.html type=\"success\" content=\"It is crucial to understand that Superalgos does not place orders to close a position until the stop loss or take profit targets are hit. That is, stop loss and take profit are not orders sitting at the exchange waiting to be filled at a certain rate. Instead, Superalgos keeps track of targets internally, and places the orders at the exchange during the execution cycle in which it detects either of the targets has been hit.\" %}\r","\r","This behavior has advantages and disadvantages, but it was designed as is because the former outweigh the latter.\r","\r","By not placing stop or take profit orders at the exchange, Superalgos keeps your targets—and the underlying strategy—secret. This guarantees that such a crucial piece of information may not be used against you by the exchange itself or any third party that may have access to privileged information.\r","\r","On the other hand, not placing a stop order in advance may occasionally cause relatively more slippage, for instance, in cases of massive flash market moves. \r","\r","That said, the default behavior of the system may be hacked to avoid the eventual risk of excessive slippage: set your stop loss and take profit targets tighter than intended.\r","\r"],"folderName":"trading_system","starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"adding":["\r","\r","To add a manage stage node, select *Add Missing Stages* on the strategy node menu. All stages that may be missing are created along with the rest of the basic structure of nodes required to define each of them and their events.\r","\r","{% include note.html content=\"Only one manage stage may exist in each strategy.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Close Stage","definition":"The close stage deals with the definitions that make up the logic to close a position, including the target rate and size, and order execution.","content":["\r","\r","The close stage is opened when either the stop loss or take profit targets are hit. \r","\r","In a way, the close stage is virtually a mirror of the open stage, as the same definitions are required to close a position. There are a few logical differences, though.\r","\r","For example, in the open stage, you probably defined the target size as a function of the capital allocated to the trading system. In the close stage, you will likely want to define the target size as a function of the size filled, that is, the amount of the orders placed that was filled during the open stage.\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add a close stage node, select *Add Missing Stages* on the strategy node menu. All stages that may be missing are created along with the rest of the basic structure of nodes required to define each of them and their events.\r","\r","{% include note.html content=\"Only one close stage may exist in each strategy.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Close Execution","definition":"The close execution node groups all execution algorithms involved in the process of closing a position.","content":["\r","\r","The close execution section of the close stage works similarly to the open execution in the open stage. Please refer to the explanations of the open stage for the details.\r","\r"],"folderName":"trading_system","adding":["\r","\r","To add a close execution node, select *Add Close Execution* on the open stage node menu.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Social Bots"},{"type":"Telegram Bot"},{"type":"Announcement"},{"type":"Announcement Condition"},{"type":"Crypto Ecosystem","definition":"The crypto ecosystem is a hierarchy that contains definitions about third-parties, including exchanges and their markets, as well as accounts of users with those third parties.","content":["\r","\r","There is only one crypto ecosystem hierarchy. You will use it to define which exchanges and which markets you wish to work with, as well as the details of your accounts with those exchanges. \r","\r"],"folderName":"crypto_ecosystem","adding":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Super Actions"},{"type":"Signals Providers"},{"type":"Signals Provider"},{"type":"Crypto Exchanges","definition":"The crypto exchanges node groups definitions of the different exchanges the user may interact with.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"crypto_ecosystem","adding":["\r","\r","To add a crypto exchanges node, select *Add Crypto Exchanges* on the crypto ecosystem node menu. \r","\r","{% include note.html content=\"Only one crypto exchanges node may exist on the hierarchy.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Crypto Exchange","definition":"A crypto exchange node holds the definitions of assets and markets in a specific exchange.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"crypto_ecosystem","adding":["\r","\r","To add a crypto exchange, select *Add Crypto Exchange* on the crypto exchanges node menu. The crypto exchange node is created along with the rest of the basic structure of nodes required to define assets, markets and user accounts.\r","\r"],"configuring":["\r","\r","Select *Configure Crypto Exchange* on the menu to access the configuration.\r","\r","```json\r","{\r"," \"codeName\": \"binance\",\r"," \"API\": [\r"," {\r"," \"method\": \"fetchTrades\",\r"," \"fetchType\": \"by Id\",\r"," \"fetchTradesMethod\": \"publicGetHistoricalTrades\",\r"," \"firstId\": \"f\"\r"," }\r"," ]\r","}\r","```\r","\r","* ```codeName``` is the name of the exchange as handled in the code of the system. \r","\r","* ```API``` holds a series of definitions used only in the case in which the sensor bot fetches trades (using the Historic-Trades process) instead of the OHLCV process that fetches one-minute candles and is the current default. In such a case, finding the right set of parameters to work with a specific exchange may be challenging, nd involves understanding how the exchanges API and the CCXT Library API work. In other words, there is no hard rule as of what each of the values should be. Determining each of this values requires exploring the exchange's API documentation, as well as the documentation of the CCXT Library.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Exchange Assets","definition":"The exchange assets node groups the definitions of assets.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"crypto_ecosystem","adding":["\r","\r","To add an exchange assets node, select *Add Exchange Assets* on the crypto exchanges node menu. The exchange assets node is created along with a first asset.\r","\r","{% include note.html content=\"Only one exchange assets node may exist on each exchange.\" %}\r","\r"],"configuring":["\r","\r","Select *Configure Exchange Assets* on the menu to access the configuration.\r","\r","```json\r","{ \r","\"addMissingAssets\": { \"quotedAsset\": \"BTC\"} \r","}\r","```\r","\r","* ```addMissingAssets``` acts as a filter to determine which assets of a (potentially long) list of assets listed at the exchange will be added when the *Add Missing Assets* option in the menu is used. Because many exchanges do not offer a list of assets, the system fetches assets from actual markets (pairs) listed at the exchange. You may add missing assets filtered by the ```quotedAsset``` or by the ```baseAsset```. For example, the above configuration would add all assets listed in markets in which BTC is the quoted asset.\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Asset","definition":"An asset node is the definition of an asset listed at the corresponding exchange.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"crypto_ecosystem","adding":["\r","\r","To add an asset, select *Add Asset* on the exchange assets node menu. \r","\r","To add assets in bulk, select *Add Missing Assets* on the exchange assets node menu. Beware that the exchange may handle hundreds of assets. Before using this option you may want to implement a filter using the exchange assets configuration.\r","\r","{% include /crypto_ecosystem/exchange-assets.md heading=\"\" icon=\"no\" adding=\"\" configuring=\"#####\" starting=\"\" content=\"no\" definition=\"no\" table=\"\" more=\"yes\"%}\r","\r"],"configuring":["\r","\r","Select *Configure Asset* on the menu to access the configuration.\r","\r","```json\r","{ \r","\"codeName\": \"BTC\"\r","}\r","```\r","\r","* ```codeName``` is the ticker of the asset as listed by the exchange (*i.e.:* BTC, BTH, ETH, LTC, BNB, USDT, USD, etc.)\r","\r","{% include note.html content=\"When a configured asset is within the system's icon catalog, the standard asset icon is replaced with the logotype of the corresponding asset.\" %}\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Exchange Markets","definition":"The exchange markets node groups the definitions of markets.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"crypto_ecosystem","adding":["\r","\r","To add an exchange markets node, select *Add Exchange Markets* on the crypto exchange node menu. The exchange markets node is created along with the basic structure of nodes to define the first market.\r","\r","{% include note.html content=\"Only one exchange assets node may exist on each exchange.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Market","definition":"A market is the definition of a pair of assets (i.e.: BTC-USDT) listed as a market in the corresponding exchange.","content":["\r","\r","{% include important.html content=\"Only markets that are effectively listed on the exchange may be configured and used with the system. Check with the exchange and make sure you understand what tickers they are using, which is the base asset and which the quoted asset on the listed markets.\" %}\r","\r"],"folderName":"crypto_ecosystem","adding":["\r","\r","To add a market, select *Add Market* on the exchange markets node menu. The market node is created along with the basic structure of nodes used to define the market. This option does not generate the super actions required to install and uninstall markets.\r","\r","To add markets in bulk, select *Add Missing Markets* on the exchange markets node menu. This option adds all markets listed at the exchange that may result from the combination of assets listed under the exchange assets node, along with the required super actions to intall those markets.\r","\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Exchange Accounts","definition":"The exchange accounts node groups the different accounts the user may have with the corresponding exchange.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"crypto_ecosystem","adding":["\r","\r","To add an exchange accounts node, select *Add Exchange Account* on the crypto exchange node menu. The exchange account node is created along with the basic structure of nodes used to define keys and user assets with the exchange.\r","\r","{% include note.html content=\"Only one exchange accounts node may exist on each exchange.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"User Account","definition":"A user account represents a single account with the corresponding exchange, holding the definitions of user assets, including keys and balances.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"crypto_ecosystem","adding":["\r","\r","To add a user account, select *Add User Account* on the exchange accounts node menu. The user account node is created along with the basic structure of nodes used to define keys and user assets with the exchange.\r","\r","{% include tip.html content=\"You may add and administer as many user accounts as you wish.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"User Assets","definition":"The user assets node groups the assets the user has at the exchange.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"crypto_ecosystem","adding":["\r","\r","To add user assets node, select *Add User Assets* on the user account node menu. The user assets node is created along with the first exchange account asset.\r","\r","{% include note.html content=\"Only one user assets node may exist under a user account.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"User Keys","definition":"The user keys node groups the various exchange account keys the user may have under the corresponding account with the exchange.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"crypto_ecosystem","adding":["\r","\r","To add user keys node, select *Add User Keys* on the user account node menu. The user keys node is created along with the first exchange account key.\r","\r","{% include note.html content=\"Only one user keys node may exist under a user account.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Exchange Account Asset","definition":"The exchange account asset represents a single asset the user has at the exchange.","content":["\r","\r","The exchange account asset is a reference to an asset defined under the exchange assets node.\r","\r"],"folderName":"crypto_ecosystem","adding":["\r","\r","To add an exchange account asset node, select *Add Asset* on the user assets node menu. \r","\r","{% include note.html content=\"Remember to establish a reference with an asset defined under the exchange assets node.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Exchange Account Key","definition":"The exchange account key holds the definition of the key name and secret provided by the corresponding exchange to access the user account via the exchange API.","content":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"folderName":"crypto_ecosystem","adding":["\r","\r","To add an exchange account key, select *Add Key* on the user keys node menu.\r","\r"],"configuring":["\r","\r","Select *Configure Key* on the menu to access the configuration.\r","\r","```json\r","{ \r","\"codeName\": \"Paste your exchange API name or label here\",\r","\"secret\": \"Paste your exchange API secret key here.\"\r","}\r","```\r","\r","* ```codeName``` is the name or label of your key, as supplied by the exchange.\r","\r","* ```secret``` is the *secret key* as supplied by the exchange.\r","\r","{% include warning.html content=\"To keep your exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\" %}\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Charting Space","definition":"The charting space is the hierarchy that governs the configuration of the charts, and the bidimensional space on which charts are drawn.","content":["\r","\r","Think of the charting space as a huge drawing board. You may have lots of information plotted on different parts of the space and use a viewport to look into that space.\r","\r","There is only one charting space hierarchy, thus all charts are configured here. As is common throughout the system, different concepts and elements of the charts such as scales, data layers and so on, are represented by nodes in the hierarchy. The system allows great flexibility on how to visualize information over the charts by adding, configuring, and arranging these nodes.\r","\r"],"folderName":"charting_space","adding":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"charts":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Dashboard","definition":"A dashboard is a collection of time machines, each containing any number of charts.","content":["\r","\r","The concept of the dashboard allows having multiple charts configured all at once, so that you may consult different exchanges, different markets, different time frames, or different technical studies on demand, simply by moving around and zooming in or out. You may put charts side by side, or even superimpose them to study market flows, search for arbitrage opportunities, or simply keep them in sight when you analyze particular market situations.\r","\r","At the moment, the functionality of a dashboard is trivial: grouping time machines. However, in the future, it will offer various features to enhance the user experience.\r","\r"],"folderName":"charting_space","adding":["\r","\r","To add a dashboard, select *Add Dashboard* on the Charting Space node menu.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"charts":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Time Machine","definition":"A time machine synchronizes multiple timeline charts over the same timeline. Timeline charts within a time machine may have different rate scales or time frame scales, but their time scale will always match.","content":["\r","\r","Think of a time machine as an aide that helps you keep any number of pieces of information synchronized on the same time scale. Every data structure that you set up within the same time machine, will always be synchronized in time. Put in other words, the open and closing datetime of each dataset will always be aligned on the vertical axis.\r","\r","On the other hand, when you arrange charts on different time machines, they are completely independent of one another.\r","\r"],"folderName":"charting_space","adding":["\r","\r","To add a time machine, select *Add Time Machine* on the Dashboard node menu.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"charts":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Viewport","definition":"The viewport is a window through which you may look into the charting space.","content":["\r","\r","The viewport offers an opening into the visual environment in which you may see, analyze and go over every piece of data involved in the process of trading cryptocurrencies:\r","\r","* Live and historic market data;\r","* Data crunched in the form of indicators;\r","* The specific effects of the rules you will program into your strategies, and how strategies behave during testing and live trading sessions.\r","\r","At this point, the system supports one viewport only. In the future, different viewports may give you direct access to different parts of the charting space.\r","\r","{% include note.html content=\"The information that is out of focus, that is, out of the viewport, is not read nor rendered graphically, thus, does not consume resources.\" %}\r","\r"],"folderName":"charting_space","adding":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"charts":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Time Scale","definition":"The time scale controls the scale of the horizontal axis, that is, the timeline of the corresponding time machine, and of all of the timeline charts within it.","content":["\r","\r","{% if include.heading == \"more\" %}##{% else %}{{include.heading}}{% endif %}### Scale Minimum and Maximum Values\r","\r","A time scale has a minimum and a maximum value. The minimum value is the value at the left border of the chart. The maximum, is the value at the right border of the chart.\r","\r","In technical terms, the minimum and maximum scale values are constantly changing as, whenever you pan across the charts, you are directly affecting the minimum and maximum scale values. That said, the actual scale doesn't change when panning across a chart.\r","\r","{% if include.heading == \"more\" %}##{% else %}{{include.heading}}{% endif %}### Automatic Scale\r","\r","The system features an automatic adjustment of the scale, which is turned on by default in our shared workspaces. The scale may be automatic in its minimum value, in its maximum value, or both. \r","\r","When the scale is automatic in the minimum value, the scale is adjusted so that the chart shows all data from the beginning of the market. Panning the charts under such setting has the effect of compressing and decompressing the data against the left border of the chart.\r","\r","When the scale is automatic in the maximum value, the scale is adjusted so that the chart shows all data until the end of the market. In such case, panning the charts has the effect of compressing and decompressing the data against the right border of the chart.\r","\r","When the scale is automatic in both the minimum and maximum value, the scale is adjusted so that the chart shows the whole market. In such case, when you click and drag to pan the charts, the settings turns back to manual on both ends of the chart.\r","\r","{% include note.html content=\"Having the time scale set to automatic by default helps finding the data as soon as it starts being processed the first time you run the Masters bot instances.\" %}\r","\r","{% if include.heading == \"more\" %}##{% else %}{{include.heading}}{% endif %}### Manual Scale\r","\r","The scale features a manual mode. When in manual mode the scale does not change, even if the minimum and maximum values change while panning through a chart. This is the natural state of the time scale. \r","\r"],"folderName":"charting_space","adding":["\r","\r","To add a time scale, select *Add Time Scale* on the time machine node menu.\r","\r"],"configuring":["\r","\r","Select *Configure Rate Scale* on the menu to access the configuration.\r","\r","```json\r","{\r"," \"fromDate\": \"2019-05-02T20:07:50.872Z\",\r"," \"toDate\": \"2019-05-22T20:28:21.515Z\",\r"," \"autoMinScale\": false,\r"," \"autoMaxScale\": false\r","}\r","```\r","\r","* ```minValue``` is a date in the Epoch time format that represents the value of the scale at the left border of the chart.\r","\r","* ```maxValue``` is a date in the Epoch time format that represents the value of the scale at the right border of the chart.\r","\r","* ```autoMinScale``` sets the mode of the scale for the minimum value; ```true``` sets the value to automatic, ```false``` sets the value to manual. \r","\r","* ```autoMaxScale``` sets the mode of the scale for the maximum value; ```true``` sets the value to automatic, ```false``` sets the value to manual. \r","\r","{% include note.html content=\"The ```minValue``` and ```maxValue``` may be entered via the design space and the charts. Both input methods are synchronized and the resulting values are stored in the node.\" %}\r","\r"],"charts":["\r","\r","{{include.charts}}# Automatic Scale\r","\r","**1. To change the automatic scale settings**, place the mouse pointer over the corresponding time box, press the Shift key and slowly scroll the wheel of the mouse. The action cycles through different possible scale automation settings. Notice a tiny green triangle to the sides of the time scale icon. \r","\r","* A triangle pointing right means that the maximum value of the scale is automatic. \r","\r","* A triangle pointing left means that the minimum value of the scale is automatic.\r","\r","* Both triangles present at the same time means that both minimum and maximum values are automatic.\r","\r","* No triangle means that both minimum and maximum values are in manual mode.\r","\r","{% include image.html file='interface/time-scale-00.gif' url='yes' max-width='100' caption='Pay attention to the effects of the different setting for the automatic and manual time scales.' %}\r","\r","{{include.charts}}# Manual Scale\r","\r","**2. To adjust the scale**, make sure either or both minimum and maximum values are in manual mode. Place the mouse pointer over the time box and scroll the wheel of the mouse. The scale will increase or decrease accordingly, depending on which values are set to manual.\r","\r","{% include image.html file='interface/time-scale-01.gif' url='yes' max-width='100' caption='When the scale is set to manual, scrolling the mouse wheel on top of the time scale box changes the scale.' %}\r","\r","Notice that, while changing the scale, a number is displayed replacing the actual datetime. This is a reference value of the scale, that may serve for comparison purposes, with scales in other charts.\r","\r","{% include note.html content=\"This action has no effect when both minimum and maximum values are set to automatic mode.\" %}\r","\r"]},{"type":"Rate Scale","definition":"The rate scale controls the scale of the vertical axis, that is, the scale of the quoted asset, either of the time machine or of the timeline chart, depending on where the node is located.","content":["\r","\r","Rate scales may exist both at the level of a time machine and at the level of a timeline chart, each affecting the corresponding concept.\r","\r","When set at the level of the time machine, the scale settings affect all charts within the time machine. When set at the level of the timeline chart, the settings override the rate scale at the time machine level. This allows having multiple charts on the same time machine, each with a different rate scale.\r","\r","{% if include.heading == \"more\" %}##{% else %}{{include.heading}}{% endif %}### Scale Minimum and Maximum Values\r","\r","A rate scale has a minimum and a maximum value. The minimum value is the value at bottom of the chart. The maximum, is the value at the top of the chart.\r","\r","In technical terms, the minimum and maximum scale values are constantly changing as, whenever you pan across the charts, you are directly affecting the minimum and maximum scale values. That said, the actual scale may change dynamically or not, depending on the scale-automation settings.\r","\r","{% if include.heading == \"more\" %}##{% else %}{{include.heading}}{% endif %}### Automatic Scale\r","\r","The system features an automatic adjustment of the scale, which is turned on by default in our shared workspaces. The scale may be automatic in its minimum value, in its maximum value, or both. \r","\r","When the scale is automatic in the minimum value, the scale is adjusted so that no piece of information in the span of the chart ever remains below the bottom of the chart. As a result, the lowest data point aligns with the bottom of the chart.\r","\r","When the scale is automatic in the maximum value, the scale is adjusted so that no piece of information in the span of the chart ever remains above the top of the chart. As a result, the highest data point aligns with the top of the chart.\r","\r","The scale may be automated on either, or both minimum and maximum values at the same time. In the later case, no data point in the span of the chart ever remains out of the visible area of the chart, as the lowest data point aligns with the bottom of the chart and the highest aligns with the top.\r","\r","{% if include.heading == \"more\" %}##{% else %}{{include.heading}}{% endif %}### Manual Scale\r","\r","The system also features a manual mode. When in manual mode the scale does not change, even if the minimum and maximum values change while panning across a chart. This design feature allows comparing different periods using the same scale, which may be valuable in many cases. \r","\r","{% if include.heading == \"more\" %}##{% else %}{{include.heading}}{% endif %}### Scale Offset\r","\r","The offset is a feature of the rate scale by which the scale may be shifted upwards or downwards. As a result, charts aligned on the vertical axis—synchronized in datetime by a shared time machine—may be put one above the other. In technical terms, what happens is that the scale is shifted upwards or downwards.\r","\r"],"folderName":"charting_space","adding":["\r","\r","To add a rate scale, select *Add Rate Scale* on the time machine or the timeline chart node menu.\r","\r"],"configuring":["\r","\r","Select *Configure Rate Scale* on the menu to access the configuration.\r","\r","```json\r","{\r"," \"minValue\": 388.60416666666424,\r"," \"maxValue\": 9715.104166666664,\r"," \"autoMinScale\": true,\r"," \"autoMaxScale\": true\r","}\r","```\r","\r","* ```minValue``` is a numerical value that represents the value of the scale at the bottom of the chart.\r","\r","* ```maxValue``` is a numerical value that represents the value of the scale at the top of the chart.\r","\r","* ```autoMinScale``` sets the mode of the scale for the minimum value; ```true``` sets the value to automatic, ```false``` sets the value to manual. \r","\r","* ```autoMaxScale``` sets the mode of the scale for the maximum value; ```true``` sets the value to automatic, ```false``` sets the value to manual. \r","\r","{% include note.html content=\"The ```minValue``` and ```maxValue``` may be entered via the design space and the charts. Both input methods are synchronized and the resulting values are stored in the node.\" %}\r","\r"],"charts":["\r","\r","{{include.charts}}# Automatic Scale\r","\r","**1. To change the automatic scale settings**, place the mouse pointer over the corresponding time machine or timeline chart rate box, press the Shift key and slowly scroll the wheel of the mouse. The action cycles through different possible scale automation settings. Notice a tiny green triangle below and/or above the rate scale icon. \r","\r","* A triangle pointing up means that the maximum value of the scale is automatic. \r","\r","* A triangle pointing down means that the minimum value of the scale is automatic.\r","\r","* Both triangles present at the same time means that both minimum and maximum values are automatic.\r","\r","* No triangle means that both minimum and maximum values are in manual mode.\r","\r","{% include image.html file='interface/rate-scale-00.gif' url='yes' max-width='100' caption='Pay attention to the effects of the different setting for the automatic and manual time scales.' %}\r","\r","{{include.charts}}# Manual Scale\r","\r","**2. To adjust the scale**, make sure either or both minimum and maximum values are in manual mode. Place the mouse pointer over the corresponding time machine or timeline chart rate box and scroll the wheel of the mouse. The scale will increase or decrease accordingly, depending on which values are set to manual.\r","\r","{% include image.html file='interface/rate-scale-01.gif' url='yes' max-width='100' caption='When the scale is set to manual, scrolling the mouse wheel on top of the rate scale box changes the scale.' %}\r","\r","Notice that, while changing the scale, a number is displayed replacing the actual rate. This is a reference value of the scale, that may serve for comparison purposes, with scales in other charts.\r","\r","{% include note.html content=\"This action has no effect when both minimum and maximum values are set to automatic mode.\" %}\r","\r","{{include.charts}}# Scale Offset\r","\r","**3. To shift or offset a timeline chart on the vertical axis**, place the mouse pointer on the rate box, left-click and drag upwards or downwards, as desired. The timeline chart will shift in the specified direction while the remaining charts stay in the same position.\r","\r","{% include image.html file='interface/rate-scale-02.gif' url='yes' max-width='100' caption='To control the offset between timeline charts, right-click on the rate box and drag upwards or downwards.' %}\r","\r","{% include note.html content=\"Setting an offset in a timeline chart only makes sense in the context of a time machine with multiple charts. That is, if you are browsing a single chart, an offset behaves the same as moving the single chart up or down.\" %}\r","\r","\r"]},{"type":"Time Frame Scale","definition":"The time frame scale controls the time frame setting, that is, the period represented by each candle, either of the time machine or of the timeline chart, depending on where the node is located.","content":["\r","\r","When the time frame scale is set at the level of the time machine, the scale setting affects all charts within the time machine. When set at the level of the timeline chart, the setting overrides the time frame scale at the time machine level. This allows comparing charts in different time frames, but still synchronized at the datetime level.\r","\r"],"folderName":"charting_space","adding":["\r","\r","To add a time frame scale, select *Add Time Frame Scale* on the time machine or the timeline chart node menu.\r","\r"],"configuring":["\r","\r","Select *Configure Frame Scale* on the menu to access the configuration.\r","\r","```json\r","{\r"," \"value\":\"06-hs\"\r","}\r","```\r","\r","* ```value``` can be any of the time frames supported by the system:\r","\r"," * ```01-min```, ```02-min```, ```03-min```, ```04-min```, ```05-min```, ```10-min```, ```15-min```, ```20-min```, ```30-min```, ```40-min```, and ```45-min```.\r","\r"," * ```01-hs```, ```02-hs```, ```03-hs```, ```04-hs```, ```06-hs```, ```08-hs```, ```12-hs```, and ```24-hs```.\r","\r"," {% include note.html content=\"The values entered via the design space and the charts are synchronized and stored in the node.\" %}\r","\r"],"charts":["\r","\r","**1. To set a time frame value**, place the mouse pointer over the corresponding time machine or timeline chart time frame box and scroll the mouse wheel.\r","\r","{% include image.html file='interface/time-frame-scale-00.gif' url='yes' max-width='100' caption='To set a time frame, scroll the wheel of the mouse over the time frame scale box.' %}\r","\r"]},{"type":"Timeline Chart","definition":"The timeline chart represents a chart within a time machine, which may have independent rate and time frame scales, as well as particular layers.","content":["\r","\r","In other words, a timeline chart—often referred simply as *chart*—is a set of information to be displayed over a timeline. The information may include candles—the main and foremost resource—as well as any other indicator, study or—in general—data products that may be available.\r","\r","You may add as many charts as you wish. Charts within the same time machine are synchronized in the y-axis, that is, in the datetime dimension. Charts in different time machines are independent of each other concerning the datetime. In either case, you may also add rate scales and time frame scales at the timeline charts level.\r","\r","The information that each timeline chart makes available on the screen is given by the layers set up in the corresponding layers manager.\r","\r"],"folderName":"charting_space","adding":["\r","\r","To add a timeline chart, select *Add Timeline Chart* on the preferred time machine node menu.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"charts":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Layers Manager","definition":"The layer manager determines which layers will be visible on the corresponding timeline chart.","content":["\r","\r","In other words, you use the layers manager node to configure which data products you wish to be made available for visualization purposes on the charts, in particular, on a specific timeline chart to which the layers manager node is attached to.\r","\r"],"folderName":"charting_space","adding":["\r","\r","To add a layers manager, select *Add Layers Manager* on the preferred timeline chart node menu.\r","\r"],"configuring":["\r","Select *Configure Layers Manager* in the menu to access the configuration.\r","\r","```json\r","{\r"," \"visibleLayers\": 3,\r"," \"panelLocation\": {\r"," \"upOrDown\": \"up\",\r"," \"leftOrRight\": \"left\"\r"," },\r"," \"label2FontSize\": 12\r","}\r","```\r","\r","* ```visibleLayers``` keeps track of how many layers the managers is rolled to, that is, how many layers it is displaying.\r","\r","* ```panelLocation``` keeps track of the position of the panel relative to the four screen corners.\r","\r","* ```label2FontSize``` allows adjusting the font size of the second-order label of each layer, displaying the name of the exchange and market.\r","\r"],"charts":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Layer","definition":"A layer represents a reference to a data product in the data storage node of the network hierarchy. Conceptually, it means that a certain data product, which exists in a certain location on the network, holds the data to be rendered on the charts.","content":["\r","\r","To set up a layer, you need to establish a reference with the data product of your choice.\r","\r"],"folderName":"charting_space","adding":["\r","\r","To add a layer, select *Add Layer* on the layer manager node menu. \r","\r","{% include note.html content=\"After adding a layer node, make sure you establish a reference to the corresponding data product in the data storage node of the network hierarchy.\" %}\r","\r"],"configuring":["\r","\r","Select *Configure Layer* on the menu to access the configuration.\r","\r","```json\r","{\r"," \"status\":\"on\", \r"," \"showPanels\":true\r","}\r","```\r","\r","* ```status``` may be *on* or *off* and refers to the layer being visible or not on the charts.\r","\r","* ```showPanels``` may be *true* or *false*; *true* shows the plotter panel that may be associated with the data product as per the plotter module definitions; *false* makes panels invisible.\r","\r"],"charts":["\r","\r","To turn layers on and off, simply click on the layer in the corresponding products panel.\r","\r","To turn on and off a layer panel, click the panel button on the bottom-left corner of the layer.\r","\r"]},{"type":"Bot Layers"},{"type":"Layer Folder"},{"type":"Data Storage","definition":"The data storage node holds the definitions as to what data is stored in the corresponding network node.","content":["\r","\r","Bot instances running on the data mining and trading sections of a network node produce data products that need to be stored somewhere, specifically. The data storage node and its chain of offspring determine which data is to be stored where; that is, in what network node.\r","\r","Like with the data mining section and the sections referring to trading operations (testing and production environments), the data storage section is too organized by exchange, market, and data or trading mines. See the [sorting of tasks](suite-sorting-of-tasks.html) page for the details.\r","\r","The storage of data is split between [data mines data](suite-data-mines-data.html) and [trading mines data](suite-trading-mines-data.html). This is to facilitate the management of data storage definitions in [trading farms](suite-fundamental-trading-farms-concepts.html), on which data mining operations may be separate from trading operations.\r","\r","The data stored on each node of the network may be accessed by others, including the charting system, to visualize information via plotters defined in data mines, by trading systems to make trading decisions, and even by third-party systems. The information regarding trading mine data is explained in length in the [trading engine](suite-trading-engine.html) section of the documentation.\r","\r","The setup of data storage definitions is done automatically when the [install market](suite-how-to-install-a-new-market.html) function under the exchange markets node of the Crypto Ecosystem hierarchy is used. However, when data mining or trading tasks are created manually, the data storage definitions must be created manually as well, using the tools available in each of the data structures below this node.\r","\r","{% include node-deletion-warning.html %}\r","\r"],"folderName":"network","adding":["\r","\r","To add a data storage, select *Add Data Storage* on the network node menu. \r","\r","{% include note.html content=\"Only one data storage node may exist on each network node.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Data Mine Tasks","definition":"The data mine tasks node is an organizational device that groups tasks corresponding to the referenced data mine.","content":["\r","\r","The data mine tasks node must reference the definition of a data mine. The node may spawn tasks for each bot in the data mine.\r","\r"],"folderName":"network","adding":["\r","\r","To add a {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. This action adds the node but does not establish a reference with any data mine.\r","\r","The smarter use of the node involves using the *Add Missing Data Mine Tasks* option on the parent node menu. This action creates a data mine tasks node for each data mine in the workspace, establishing a reference with the corresponding data mines. This is the first step in the direction of quickly setting up tasks for each bot in a given data mine.\r","\r","{% include note.html content=\"See the task node definition and the *Adding a Task Node* section for all the details.\" %}\r","\r"],"configuring":["\r","\r","Select *Configure* on the menu to access the configuration.\r","\r","```json\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","```\r","\r"],"starting":["\r","\r","Select *Run All Task Managers* or *Stop All Task Managers* on the menu to start and stop all tasks under this node.\r","\r"]},{"type":"Trading Mine Tasks","definition":"The trading mine tasks node is an organizational device that groups tasks corresponding to the referenced trading mine.","content":["\r","\r","The market trading tasks node must reference the definition of a data mine. The node may spawn tasks for each bot in the data mine.\r","\r"],"folderName":"network","adding":["\r","\r","To add a {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. This action adds the node but does not establish a reference with any data mine.\r","\r","The smarter use of the node involves using the *Add Missing market trading tasks* option on the parent node menu. This action creates a market trading tasks node for each data mine in the workspace, establishing a reference with the corresponding data mines. This is the first step in the direction of quickly setting up tasks for each bot in a given data mine.\r","\r","{% include note.html content=\"See the task node definition and the *Adding a Task Node* section for all the details.\" %}\r","\r"],"configuring":["\r","\r","Select *Configure* on the menu to access the configuration.\r","\r","```json\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","```\r","\r"],"starting":["\r","\r","Select *Run All Task Managers* or *Stop All Task Managers* on the menu to start and stop all tasks under this node.\r","\r"]},{"type":"Market Data Tasks","definition":"A market data tasks node groups data mining tasks operating in a specific market.","content":["\r","\r","The market data tasks node must reference a market defined in the Crypto Ecosystem hierarchy.\r","\r","This node may spawn individual data products or may deploy data products in bulk organized by data mine and by bots. See the data products node for the details.\r","\r"],"folderName":"network","adding":["\r","\r","To add a market data tasks node, select *Add Market Data* on the parent node menu. \r","\r","{% include note.html content=\"Remember to establish a reference with a market defined in the Crypto Ecosystem hierarchy after adding the node.\" %}\r","\r","You may also add market data tasks nodes in bulk for all markets that may have been previously defined in the Crypto Ecosystem hierarchy. To do that, select *Add Missing Markets* on the parent node menu. A market data tasks node is created for each defined market, each with the corresponding reference.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","Select *Run All Data Mine Tasks* or *Stop All Data Mine Tasks* on the menu to start and stop all tasks under this node.\r","\r"]},{"type":"Market Trading Tasks","definition":"A market trading tasks node groups trading tasks operating in a specific market.","content":["\r","\r","The market trading tasks node must reference a market defined in the Crypto Ecosystem hierarchy.\r","\r","This node may spawn individual data products or may deploy data products in bulk organized by data mine and by bots. See the data products node for the details.\r","\r"],"folderName":"network","adding":["\r","\r","To add a market trading tasks node, select *Add Market Data* on the parent node menu. \r","\r","{% include note.html content=\"Remember to establish a reference with a market defined in the Crypto Ecosystem hierarchy after adding the node.\" %}\r","\r","You may also add market trading tasks nodes in bulk for all markets that may have been previously defined in the Crypto Ecosystem hierarchy. To do that, select *Add Missing Markets* on the parent node menu. A market trading tasks node is created for each defined market, each with the corresponding reference.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","Select *Run All Trading Mine Tasks* or *Stop All Trading Mine Tasks* on the menu to start and stop all tasks under this node.\r","\r"]},{"type":"Exchange Data Tasks","definition":"The exchange data tasks node organizes data mining tasks by exchange. That is, each exchange installed in the system has an exchange data tasks node grouping all market data tasks corresponding to the said exchange.","content":["\r","\r","The exchange data tasks node must reference the exchange of choice. This reference constraints the rest of the definitions to the context of the said exchange.\r","\r","When representing an exchange featured in the system's icons library, the standard exchange data tasks icon is replaced by the exchange's logo.\r","\r"],"folderName":"network","adding":["\r","\r","To add a specific {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. \r","\r","{% include note.html content=\"Remember to establish a reference to the desired exchange in the Crypto Ecosystem hierarchy.\" %}\r","\r","You may also add exchange data tasks node in bulk for all exchanges that may have been previously defined in the Crypto Ecosystem hierarchy. To do that, select *Add Missing Exchanges* on the parent node menu. An exchange data tasks node is created for each defined exchange, each with the corresponding reference.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","Select *Run All Market Data Tasks* or *Stop All Market Data Tasks* on the menu to start and stop all tasks under this node.\r","\r"]},{"type":"Exchange Trading Tasks","definition":"The exchange trading tasks node organizes trading tasks by exchange. That is, each exchange installed in the system has an exchange trading tasks node grouping all market trading tasks corresponding to the said exchange.","content":["\r","\r","The exchange trading tasks node must reference the exchange of choice. This reference constraints the rest of the definitions to the context of the said exchange.\r","\r","When representing an exchange featured in the system's icons library, the standard exchange trading tasks icon is replaced by the exchange's logo.\r","\r"],"folderName":"network","adding":["\r","\r","To add a specific {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. \r","\r","{% include note.html content=\"Remember to establish a reference to the desired exchange in the Crypto Ecosystem hierarchy.\" %}\r","\r","You may also add exchange trading tasks node in bulk for all exchanges that may have been previously defined in the Crypto Ecosystem hierarchy. To do that, select *Add Missing Exchanges* on the parent node menu. An exchange trading tasks node is created for each defined exchange, each with the corresponding reference.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","Select *Run All Market Trading Tasks* or *Stop All Market Trading Tasks* on the menu to start and stop all tasks under this node.\r","\r"]},{"type":"Data Mining","definition":"Data mining is the activity of processing data. You need to process data to feed charts, and so that your trading systems may make decisions based on quality information.","content":["\r","\r","Having access to quality information is a crucial element of trading. For that reason, Superalgos strives to give users full control over how, where, and when data is processed. You will use this section of the network hierarchy to exert that control.\r","\r","Data mining is done through tasks running instances of sensor and indicator bots. The data structure under this node allows organizing the data mining operation by exchange, market, and data mine.\r","\r","The setup of the data mining operation may be done using the *Install Market* function of the market you wish to install as defined in the Crypto Ecosystem hierarchy under the exchange markets node. Learn more about this function on the [how to install a new market](suite-how-to-install-a-new-market.html) page.\r","\r","You may also set up data mining tasks by using the different functions in this section of the hierarchy, starting with the options in the menu of this node. This route offers finer control over what tasks you set up, and how. \r","\r","{% include node-deletion-warning.html %}\r","\r"],"folderName":"network","adding":["\r","\r","To add a {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Testing Environment","definition":"The testing environment node organizes trading sessions involving testing of trading systems.","content":["\r","\r","Thorough and comprehensive testing of strategies is at the core of successful trading. Superalgos strives to put you in control of the testing process providing you with flexible tools to fit your criteria.\r","\r","Depending on how you use the system, how many markets and exchanges you work with, the number of trading systems you use, or the way you choose to test your strategies, you may find yourself with a large number of testing sessions. As explained in the [sorting of tasks](suite-sorting-of-tasks.html) page, the testing environment helps you organize large numbers of tasks sorting them by exchange, market, and trading mine.\r","\r","Superalgos handles two types of simulated tests: backtesting and paper trading. Backtesting involves testing over historic data, while paper trading is about testing on a live data stream, but without placing orders at the exchange.\r","\r","Trading sessions are controlled by a number of parameters that determine how the session is run. The built-in parameters provide great control and flexibility as to how to handle data sets and how to produce the resulting simulations.\r","\r","{% include note.html content=\"Please, read on and study the workings of the chain of nodes under the testing environment node. The investment of time is well worth it, as you will learn how to make the most out of the strategy-testing features built-in Superalgos.\" %}\r","\r","{% include node-deletion-warning.html %}\r","\r"],"folderName":"network","adding":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Production Environment","definition":"The production environment node organizes trading sessions involving live trading.","content":["\r","\r","Superalgos aims to provide a flexible and robust trading bots deployment toolbox.\r","\r","With Superalgos, you may deploy as many trading bots as you wish and have them running on a single computer or in as many machines as you wish, in a [trading farm](suite-fundamental-trading-farms-concepts.html) type of setup. To help with the management of large numbers of live trading sessions, the system helps you with [sorting tasks](suite-sorting-of-tasks.html) by exchange, market, and trading mine.\r","\r","The production environment works pretty much in the same way as the testing environment, save for two important differences:\r","\r","* The production environment runs forward testing and live trading sessions, instead of backtesting and paper trading sessions.\r","\r","* These two types of sessions involve monetary transactions at the exchange, thus require the set up of a key reference to authenticate your account with the exchange.\r","\r","{% include note.html content=\"If you are familiar with the testing environment, there isn't much more to learn to understand the production environment. If you are not familiar with either, please refer to the [tesing environment](suite-testing-evironment.html) page for the details.\" %}\r","\r","{% include node-deletion-warning.html %}\r","\r"],"folderName":"network","adding":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Exchange Data Products","definition":"The exchange data products node organizes data mines data by exchange. That is, each exchange installed in the system has an exchange data products node grouping all market data products nodes corresponding to the said exchange.","content":["\r","\r","The exchange data products node must reference the exchange of choice. This reference constraints the rest of the definitions to the context of the said exchange.\r","\r","When representing an exchange featured in the system's icons library, the standard exchange data tasks icon is replaced by the exchange's logo.\r","\r"],"folderName":"network","adding":["\r","\r","To add a specific {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. \r","\r","{% include note.html content=\"Remember to establish a reference to the desired exchange in the Crypto Ecosystem hierarchy.\" %}\r","\r","You may also add exchange data products nodes in bulk for all exchanges that may have been previously defined in the Crypto Ecosystem hierarchy. To do that, select *Add Missing Exchanges* on the parent node menu. An exchange data products node is created for each defined exchange, each with the corresponding reference.\r","\r","\r"],"configuring":["\r","\r","Select *Configure* on the menu to access the configuration.\r","\r","```json\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","```\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Data Mines Data","definition":"Session independent data refers to data generated by sensors and indicators, not related to trading sessions.","content":["\r","\r","As explained in the [sorting of tasks](suite-sorting-of-tasks.html) page, data mines data is sorted by exchange, market, and the corresponding data mine, sensor or indicator bot, and bot product. That is, most of the nodes in this section of the hierarchy play an organizational role.\r","\r","Many of them require references to the nodes that delimit the context for which the data is applicable. For example, the market data products node must reference one of the installed markets, in particular, the market on which the data mining operation is run. These references help other entities understand the context to which the data belongs to.\r","\r","Whenever you create data mining tasks manually from within the Network hierarchy (as opposed to using the [install market](suite-how-to-install-a-new-market.html) function under the exchange markets node of the Crypto Ecosystem hierarchy), you need to create the proper definitions for the storage of data mines data.\r","\r"],"folderName":"network","adding":["\r","\r","To add a session-independent data node, select *Add Session-independent Data* on the network node menu. \r","\r","{% include note.html content=\"Only one session-independent data node may exist on each data storage node.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Exchange Trading Products","definition":"The exchange trading products node organizes trading mines data by exchange. That is, each exchange installed in the system has an exchange trading products node grouping all session references corresponding to the said exchange.","content":["\r","\r","The exchange trading products node must reference the exchange of choice. This reference constraints the rest of the definitions to the context of the said exchange.\r","\r","When representing an exchange featured in the system's icons library, the standard exchange trading products icon is replaced by the exchange's logo.\r","\r"],"folderName":"network","adding":["\r","\r","To add a specific {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. \r","\r","{% include note.html content=\"Remember to establish a reference to the desired exchange in the Crypto Ecosystem hierarchy.\" %}\r","\r","You may also add exchange trading products nodes in bulk for all exchanges that may have been previously defined in the Crypto Ecosystem hierarchy. To do that, select *Add Missing Exchanges* on the trading mines data node menu. An exchange trading products node is created for each defined exchange, each with the corresponding reference.\r","\r","\r"],"configuring":["\r","\r","Select *Configure* on the menu to access the configuration.\r","\r","```json\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","```\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Trading Mines Data","definition":"Session-based data refers to data that is generated as a consequence of running a trading session, that is, data the trading bot instance generates while running backtesting, paper trading, forward testing, or live trading sessions.","content":["\r","\r","As explained in the [sorting of tasks](suite-sorting-of-tasks.html) page, trading mines data is sorted by exchange, market, the corresponding trading session, and the corresponding trading mine, trading bot, and bot product. That is, most of the nodes in this section of the hierarchy play an organizational role.\r","\r","Many of them require references to the nodes that delimit the context for which the data is applicable. For example, the exchange trading products node must reference one of the installed exchanges, in particular, the exchange on which the trading operation is run. These references help other entities understand the context to which the data belongs to.\r","\r","Whenever you create trading tasks manually from within the Network hierarchy (as opposed to using the [install market](suite-how-to-install-a-new-market.html) function under the exchange markets node of the Crypto Ecosystem hierarchy), you need to create the proper definitions for the storage of trading mines data.\r","\r"],"folderName":"network","adding":["\r","\r","To add a session-based data node, select *Add Session-based Data* on the network node menu. \r","\r","{% include note.html content=\"Only one session-based data node may exist on each data storage node.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Session Reference","definition":"A session reference establishes which session is the one which shall store data in the current location.","content":["\r","\r","A such, the session reference node must establish a reference with a trading session. Also, its offspring nodes determine precisely which data products are stored.\r","\r"],"folderName":"network","adding":["\r","\r","To add a session reference node, select *Add Session Reference* on the network node menu. \r","\r","{% include note.html content=\"Remember to establish a reference with a trading session after adding the node.\" %}\r","\r","You may also add session reference nodes in bulk for all sessions defined in the same network that are not yet defined. To do that, select *Add Missing Sessions* on the exchange trading products node menu. A session reference node is created for each defined trading session in the node, each with the corresponding reference.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Market Data Products","definition":"A market data products node represents the group of data products generated in a specific market.","content":["\r","\r","The market data products node must reference a market defined in the Crypto Ecosystem hierarchy.\r","\r","This node may spawn individual data products or may deploy data products in bulk organized by data mine and by bots. See the data products node for the details.\r","\r"],"folderName":"network","adding":["\r","\r","To add a market data products node, select *Add Market Data* on the parent node menu. \r","\r","{% include note.html content=\"Remember to establish a reference with a market defined in the Crypto Ecosystem hierarchy after adding the node.\" %}\r","\r","You may also add market data products nodes in bulk for all markets that may have been previously defined in the Crypto Ecosystem hierarchy. To do that, select *Add Missing Markets* on the parent node menu. A market data products node is created for each defined market, each with the corresponding reference.\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Market Trading Products","definition":"A market trading products node features the group of data products generated by the referenced session in a specific market.","content":["\r","\r","The market trading products node must reference a market defined in the Crypto Ecosystem hierarchy.\r","\r","This node may spawn individual data products or may deploy data products in bulk organized by trading mine and by trading bots. See the data products node for the details.\r","\r"],"folderName":"network","adding":["\r","\r","To add a market trading products node, select *Add Market Trading Data* on the parent node menu. \r","\r","{% include note.html content=\"Remember to establish a reference with a market defined in the Crypto Ecosystem hierarchy after adding the node.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Data Product","definition":"A data product represents the collection of datasets generated by the instance of a bot as defined in the corresponding data mine or trading mine.","content":["\r","\r","Data products exist in the context of trading mines data and data mines data nodes. In the first case, a data product is the collection of datasets generated by an instance of a trading bot as defined in a trading mine, running a trading session. In the latter case, it is the collection of datasets generated by either a sensor bot or an indicator bot instance, as defined in a data mine, and running a data mining task.\r","\r","A data product node must reference a product definition in the corresponding bot.\r","\r","{% include important.html content=\"Data products may only be stored on the same network node on which the task—data mining or trading—runs.\" %}\r","\r"],"folderName":"network","adding":["\r","\r","To add a single data product, select *Add Data Product* on the market trading products, market data products, bot products, or data products folder node menus. \r","\r","{% include note.html content=\"Remember to establish a reference with a product definition of the corresponding bot in the corresponding data or trading mine.\" %}\r","\r","In cases in which multiple data products must be added, you may use the option to create data products in bulk.\r","\r","Select the *Add All Data Products* option on the data or trading mine products node menu. This adds a bot products node for each bot in the data or trading mine, and a data product for each product definition of each bot. \r","\r","You may use this option after manually adding a data or trading mine products node and manually establishing the reference with the desired data mine, or after adding all data or trading mine data products, by which the references with data or trading mines are established automatically.\r","\r","{% include tip.html content=\"If adding data products in bulk results in adding data products that are not required, you may easily delete those.\" %}\r","\r"],"configuring":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Data Mine Products","definition":"Data mine products are references established with data mines to facilitate establishing data product references with multiple products in the given data mine.","content":["\r","\r","The node may be used as an organizational device, simply to arrange bot products. However, the smart use of the node involves automating the deployment of multiple data products.\r","\r","The use of the {{ title | downcase }} node is optional, as data products may also exist outside of {{ title | downcase }} nodes.\r","\r"],"folderName":"network","adding":["\r","\r","To add a {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. This action adds the node but does not establish a reference with any data mine. \r","\r","The smarter use of the node involves using the *Add All Data Mine Products* option on the parent node menu. This action creates a data mine products node for each data mine in the workspace, establishing a reference with the corresponding data mines. This is the first step in the direction of quickly setting up multiple data products when needed.\r","\r","{% include note.html content=\"See the data product node definition and the *Adding a Data Product Node* section for all the details.\" %}\r","\r"],"configuring":["\r","\r","Select *Configure* on the menu to access the configuration.\r","\r","```json\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","```\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Trading Mine Products","definition":"Trading mine products are references established with trading mines to facilitate establishing data product references with multiple products in the given mine.","content":["\r","\r","At this point, Superalgos ships with a single trading mine, featuring a single *low frequency* trading bot. However, developers may create their own trading bots or fork the existing one. \r","\r","The node may be used as an organizational device, simply to arrange bot products. However, the smart use of the node involves automating the deployment of multiple data products.\r","\r","The use of the {{ title | downcase }} node is optional, as data products may also exist outside of {{ title | downcase }} nodes.\r","\r"],"folderName":"network","adding":["\r","\r","To add a {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. This action adds the node but does not establish a reference with any trading mine. \r","\r","The smarter use of the node involves using the *Add All Trading Mine Products* option on the parent node menu. This action creates a trading mine products node for each trading mine in the workspace, establishing a reference with the corresponding trading mines. This is the first step in the direction of quickly setting up multiple data products when needed.\r","\r","{% include note.html content=\"See the data product node definition and the *Adding a Data Product Node* section for all the details.\" %}\r","\r"],"configuring":["\r","\r","Select *Configure* on the menu to access the configuration.\r","\r","```json\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","```\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Bot Products","definition":"A bot products node is an organizational device used to arrange data products corresponding to a specific bot.","content":["\r","\r","The device exists as an offspring of a data or trading mine products node, and does not require a reference to a bot in the given data or trading mine. \r","\r","The use of the {{ title | downcase }} node is optional, as data products may also exist outside of {{ title | downcase }}.\r","\r"],"folderName":"network","adding":["\r","\r","To add a {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu.\r","\r","The bot products node may also be created automatically. When created using the *Add All Data Products* option on the data mine products node, the node inherits the label of the corresponding bot in the corresponding data mine. \r","\r","{% include note.html content=\"See the data product node definition and the *Adding a Data Product Node* section for all the details.\" %}\r","\r"],"configuring":["\r","\r","Select *Configure* on the menu to access the configuration.\r","\r","```json\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","```\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Data Product Folder","definition":"A data product folder node is an organizational device used to map the arrangement of product definition folders as may exist in the bot definition of the corresponding data or trading mine.","content":["\r","\r","The use of the {{ title | downcase }} node is optional, as data products may also exist outside of {{ title | downcase }}s.\r","\r"],"folderName":"network","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. \r","\r"],"configuring":["\r","\r","Select *Configure* on the menu to access the configuration.\r","\r","```json\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","```\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Tutorial"},{"type":"Tutorial Topic"},{"type":"Tutorial Step"},{"type":"Data Mine Data Dependencies","definition":"Data mine data dependencies are references established with entire data mines to facilitate establishing data dependencies with multiple datasets in the given data mine.","content":["\r","\r","The node may be used as an organizational device, simply to arrange bot data dependencies. However, the smart use of the node involves automating the deployment of multiple data dependencies and their references.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add a {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. This action adds the node but does not establish a reference with any data mine. \r","\r","The smarter use of the node involves using the *Add All Data Mine Dependencies* option on the parent node menu. This action creates a data mine data dependencies node for each data mine in the workspace, establishing a reference with the corresponding data mines. This is the first step in the direction of quickly setting up multiple data dependencies when needed.\r","\r","{% include note.html content=\"See the data dependency node definition and the *Adding a Data Dependecy Node* section for all the details.\" %}\r","\r"],"configuring":["\r","\r","Select *Configure* on the menu to access the configuration.\r","\r","```json\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","```\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Bot Data Dependencies","definition":"A bot data dependencies node is an organizational device used to arrange data dependencies corresponding to a specific bot.","content":["\r","\r","The device exists as an offspring of a data mine data dependencies node, and does not require a reference to a bot in the given data mine. \r","\r"],"folderName":"data_mine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu. When adding a bot data dependency in this manner, the node does not inherit any particular label. In fact, it may even host data dependencies pointing to other data mines.\r","\r","The bot data dependencies node may also be created automatically. When created using the *Add All Data Dependencies* option on the data mine data dependencies node, the node inherits the label of the corresponding bot in the corresponding data mine. \r","\r","{% include note.html content=\"See the data dependency node definition and the *Adding a Data Dependecy Node* section for all the details.\" %}\r","\r"],"configuring":["\r","\r","Select *Configure* on the menu to access the configuration.\r","\r","```json\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","```\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]},{"type":"Data Dependency Folder","definition":"A data dependency folder node is an organizational device used to map the arrangement of product definition folders of a given bot.","content":["\r","\r","The use of product data dependency folders is optional, as data dependencies may also exist outside of folders.\r","\r"],"folderName":"data_mine","adding":["\r","\r","To add the {{ title | downcase }} node, select *Add {{ title }}* on the parent node menu.\r","\r","The {{ title | downcase }} node may be added automatically when using the *Add All Data Dependencies* option on the data mine data dependencies node menu.\r","\r"],"configuring":["\r","\r","Select *Configure* on the menu to access the configuration.\r","\r","```json\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","```\r","\r"],"starting":["\r","\r","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r","\r"]}] \ No newline at end of file diff --git a/Files-Component/src/DailyFiles.js b/Files-Component/src/DailyFiles.js index 55cb27de9..f28017eb2 100644 --- a/Files-Component/src/DailyFiles.js +++ b/Files-Component/src/DailyFiles.js @@ -1,5 +1,5 @@ -  -function newDailyFiles () { + +function newDailyFiles() { const MODULE_NAME = 'Daily Files' const ERROR_LOG = true const logger = newWebDebugLog() @@ -26,7 +26,7 @@ function newDailyFiles () { return thisObject - function finalize () { + function finalize() { try { thisObject.eventHandler.finalize() thisObject.eventHandler = undefined @@ -37,7 +37,7 @@ function newDailyFiles () { fileCursors.forEach(finalizeEach) - function finalizeEach (item, key, mapObj) { + function finalizeEach(item, key, mapObj) { item.finalize() } } catch (err) { @@ -45,45 +45,43 @@ function newDailyFiles () { } } - function initialize (pDataMine, pBot, pSession, pProduct, pDataset, pExchange, pMarket, pDatetime, pTimeFrame, pHost, pPort, pEventsServerClient, callBackFunction) { + function initialize(pDataMine, pBot, pSession, pProduct, pDataset, pExchange, pMarket, pDatetime, pTimeFrame, pHost, pPort, pEventsServerClient, callBackFunction) { try { callBackWhenFileReceived = callBackFunction let exchange = pExchange + let beginDateRange + let endDateRange + let timeFrames fileCloud = newFileCloud() fileCloud.initialize(pBot, pHost, pPort) - /* Some Validations */ - if (pDataset.code.validTimeFrames === undefined) { - if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> err = Can not initialize Market Files for bot ' + pBot.name) } + /* Config Validations */ + if (pDataset.config.validTimeFrames === undefined) { + if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> err = Can not initialize Daily Files for bot ' + pBot.name) } if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> err = You need to define validTimeFrames at the Dataset config. ') } callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) return } - /* First we will get the Data Range */ + getDataRangeFile() - fileCloud.getFile(pDataMine, pBot, pSession, pProduct, pDataset, exchange, pMarket, undefined, undefined, undefined, true, onDataRangeReceived) - - function onDataRangeReceived (err, pFile) { - try { - let beginDateRange - let endDateRange + function getDataRangeFile() { + /* First we will get the Data Range */ + fileCloud.getFile(pDataMine, pBot, pSession, pProduct, pDataset, exchange, pMarket, undefined, undefined, undefined, true, undefined, onDataRangeReceived) + function onDataRangeReceived(err, pFile) { switch (err.result) { case GLOBAL.DEFAULT_OK_RESPONSE.result: { beginDateRange = pFile.begin endDateRange = pFile.end - break } - case GLOBAL.DEFAULT_FAIL_RESPONSE.result: { callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) return } - case GLOBAL.CUSTOM_FAIL_RESPONSE.result: { if (err.message === 'File does not exist.') { beginDateRange = new Date() @@ -97,7 +95,6 @@ function newDailyFiles () { endDateRange = new Date() break } - /* If none of the previous conditions are met, the we return the err to the caller. */ callBackFunction(err) return } @@ -106,59 +103,115 @@ function newDailyFiles () { return } } - /* Now we will get the daily files */ + getTimeFramesFile() + } + } + + function getTimeFramesFile() { + /* First we will get the Data Range */ + fileCloud.getFile(pDataMine, pBot, pSession, pProduct, pDataset, exchange, pMarket, undefined, undefined, undefined, undefined, true, onTimeFramesReceived) + + function onTimeFramesReceived(err, pFile) { + switch (err.result) { + case GLOBAL.DEFAULT_OK_RESPONSE.result: { + timeFrames = pFile + break + } + case GLOBAL.DEFAULT_FAIL_RESPONSE.result: { + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } + case GLOBAL.CUSTOM_FAIL_RESPONSE.result: { + if (err.message === 'File does not exist.') { + /* It is ok, we will deal with this later */ + break + } + if (err.message === 'Configured to not Support This.') { + /* It is ok, we will deal with this later */ + break + } + if (err.message === 'Missing Configuration.') { + if (ERROR_LOG === true) { logger.write('[WARN] initialize -> onFileReceived -> The needed configuration to locate the timeFrames is missing at the dataSet.') } + if (ERROR_LOG === true) { logger.write('[WARN] initialize -> onFileReceived -> Time Frames Filters will be ignored -> Product = ' + pProduct.config.codeName) } + break + } + callBackFunction(err) + return + } + default: { + callBackFunction(err) + return + } + } + createFileCursors() + } + } + + function createFileCursors() { + try { + /* Now we will get the daily files */ for (i = 0; i < dailyFilePeriods.length; i++) { let periodTime = dailyFilePeriods[i][0] let periodName = dailyFilePeriods[i][1] - if (pDataset.code.validTimeFrames.includes(periodName) === true) { - let fileCursor = newFileCursor() - fileCursor.eventHandler = thisObject.eventHandler // We share our event handler with each file cursor, so that they can raise events there when files are changed.s - fileCursor.initialize(fileCloud, pDataMine, pBot, pSession, pProduct, pDataset, exchange, pMarket, periodName, periodTime, pDatetime, pTimeFrame, beginDateRange, endDateRange, pEventsServerClient, onInitialized) - function onInitialized (err) { - try { - switch (err.result) { - case GLOBAL.DEFAULT_OK_RESPONSE.result: { - break - } - case GLOBAL.DEFAULT_FAIL_RESPONSE.result: { - callBackWhenFileReceived(GLOBAL.DEFAULT_FAIL_RESPONSE) - return - } - default: { - callBackWhenFileReceived(err) - return - } + if (pDataset.config.validTimeFrames.includes(periodName) === false) { + continue + } + if (timeFrames !== undefined) { + if (timeFrames.includes(periodName) === false) { + continue + } + } + + let fileCursor = newFileCursor() + fileCursor.eventHandler = thisObject.eventHandler // We share our event handler with each file cursor, so that they can raise events there when files are changed.s + fileCursor.initialize(fileCloud, pDataMine, pBot, pSession, pProduct, pDataset, exchange, pMarket, periodName, periodTime, pDatetime, pTimeFrame, beginDateRange, endDateRange, pEventsServerClient, onInitialized) + function onInitialized(err) { + try { + switch (err.result) { + case GLOBAL.DEFAULT_OK_RESPONSE.result: { + break + } + case GLOBAL.DEFAULT_FAIL_RESPONSE.result: { + callBackWhenFileReceived(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } + default: { + callBackWhenFileReceived(err) + return } - fileCursors.set(periodTime, fileCursor) - expectedFiles = expectedFiles + fileCursor.getExpectedFiles() - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> onFileReceived -> onInitialized -> err = ' + err.stack) } - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) } + fileCursors.set(periodTime, fileCursor) + expectedFiles = expectedFiles + fileCursor.getExpectedFiles() + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> onFileReceived -> onInitialized -> err = ' + err.stack) } + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) } } } loadThemAll() + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> createFileCursors -> err = ' + err.stack) } + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + } + } - function loadThemAll () { - try { - for (i = 0; i < dailyFilePeriods.length; i++) { - let periodTime = dailyFilePeriods[i][0] - let periodName = dailyFilePeriods[i][1] + function loadThemAll() { + try { + for (i = 0; i < dailyFilePeriods.length; i++) { + let periodTime = dailyFilePeriods[i][0] + let periodName = dailyFilePeriods[i][1] - if (pDataset.code.validTimeFrames.includes(periodName) === true) { - let fileCursor = fileCursors.get(periodTime) - fileCursor.reload(onFileReceived) - } + if (pDataset.config.validTimeFrames.includes(periodName) === true) { + let fileCursor = fileCursors.get(periodTime) + if (fileCursor !== undefined) { + fileCursor.reload(onFileReceived) } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> onFileReceived -> loadThemAll -> err = ' + err.stack) } - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) } } + callBackWhenFileReceived(GLOBAL.DEFAULT_OK_RESPONSE, thisObject) } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> onFileReceived -> err = ' + err.stack) } + if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> loadThemAll -> err = ' + err.stack) } callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) } } @@ -168,7 +221,7 @@ function newDailyFiles () { } } - function onFileReceived (err) { + function onFileReceived(err) { try { switch (err.result) { case GLOBAL.DEFAULT_OK_RESPONSE.result: { @@ -195,7 +248,7 @@ function newDailyFiles () { } } - function getFileCursor (pPeriod) { + function getFileCursor(pPeriod) { try { return fileCursors.get(pPeriod) } catch (err) { @@ -203,13 +256,13 @@ function newDailyFiles () { } } - function setDatetime (pDatetime) { + function setDatetime(pDatetime) { try { filesLoaded = 0 expectedFiles = 0 fileCursors.forEach(setDatetimeToEach) - function setDatetimeToEach (fileCursor, key, map) { + function setDatetimeToEach(fileCursor, key, map) { fileCursor.setDatetime(pDatetime) expectedFiles = expectedFiles + fileCursor.getExpectedFiles() fileCursor.reload(onFileReceived) @@ -219,13 +272,13 @@ function newDailyFiles () { } } - function setTimeFrame (pTimeFrame, pDatetime) { + function setTimeFrame(pTimeFrame, pDatetime) { try { filesLoaded = 0 expectedFiles = 0 fileCursors.forEach(setTimeFrameToEach) - function setTimeFrameToEach (fileCursor, key, map) { + function setTimeFrameToEach(fileCursor, key, map) { fileCursor.setTimeFrame(pTimeFrame, pDatetime) expectedFiles = expectedFiles + fileCursor.getExpectedFiles() fileCursor.reload(onFileReceived) @@ -235,11 +288,11 @@ function newDailyFiles () { } } - function getExpectedFiles () { + function getExpectedFiles() { return expectedFiles } - function getFilesLoaded () { + function getFilesLoaded() { return filesLoaded } } diff --git a/Files-Component/src/FileCloud.js b/Files-Component/src/FileCloud.js index 051705797..cfc819f98 100644 --- a/Files-Component/src/FileCloud.js +++ b/Files-Component/src/FileCloud.js @@ -1,15 +1,12 @@ function newFileCloud () { const MODULE_NAME = 'File Cloud' - const INFO_LOG = false const ERROR_LOG = true const logger = newWebDebugLog() logger.fileName = MODULE_NAME /* - This is the module in the system that actually connects to the cloud storage and grabs from there the needed files. - */ let thisObject = { @@ -18,47 +15,64 @@ function newFileCloud () { } let fileStorage - return thisObject function initialize (pBot, pHost, pPort) { fileStorage = newFileStorage(pHost, pPort) } - function getFile (pDataMine, pBot, pSession, pProduct, pDataset, pExchange, pMarket, pPeriodName, pDatetime, pSequence, pDataRange, callBackFunction) { + function getFile (pDataMine, pBot, pSession, pProduct, pDataset, pExchange, pMarket, pPeriodName, pDatetime, pSequence, pDataRange, pTimeFrames, callBackFunction) { try { - if (INFO_LOG === true) { logger.write('[INFO] getFile -> Entering function.') } - const MAX_RETRIES = 3 + getFileRecursively(0, pDataMine, pBot, pSession, pProduct, pDataset, pExchange, pMarket, pPeriodName, pDatetime, pSequence, pDataRange, pTimeFrames, callBackFunction) - getFileRecursively(0, pDataMine, pBot, pSession, pProduct, pDataset, pExchange, pMarket, pPeriodName, pDatetime, pSequence, pDataRange, callBackFunction) - - function getFileRecursively (pRetryCounter, pDataMine, pBot, pSession, pProduct, pDataset, pExchange, pMarket, pPeriodName, pDatetime, pSequence, pDataRange, callBackFunction) { + function getFileRecursively (pRetryCounter, pDataMine, pBot, pSession, pProduct, pDataset, pExchange, pMarket, pPeriodName, pDatetime, pSequence, pDataRange, pTimeFrames, callBackFunction) { try { - if (INFO_LOG === true) { logger.write('[INFO] getFile -> getFileRecursively -> Entering function.') } - if (INFO_LOG === true) { logger.write('[INFO] getFile -> getFileRecursively -> key = ' + pDataMine.code.codeName + '-' + pBot.code.codeName + '-' + pDataset.code.filePath + '-' + pDataset.code.fileName) } - let fileName let filePath - if (pDataRange === undefined) { - fileName = pDataset.code.fileName - filePath = pDataset.code.filePath + if (pDataRange === undefined && pTimeFrames === undefined) { + fileName = pDataset.config.fileName + filePath = pDataset.config.filePath } else { - if (pDataset.code.dataRange !== undefined) { - fileName = pDataset.code.dataRange.fileName - filePath = pDataset.code.dataRange.filePath - } else { - let customErr = { - result: GLOBAL.CUSTOM_FAIL_RESPONSE.result, - message: 'Missing Configuration.' + if (pDataRange !== undefined) { + if (pDataset.config.dataRange !== undefined) { + fileName = pDataset.config.dataRange.fileName + filePath = pDataset.config.dataRange.filePath + } else { + let customErr = { + result: GLOBAL.CUSTOM_FAIL_RESPONSE.result, + message: 'Missing Configuration.' + } + if (ERROR_LOG === true) { logger.write('[WARN] getFile -> getFileRecursively -> onFileReceived -> customErr.message = ' + customErr.message) } + if (ERROR_LOG === true) { logger.write('[WARN] getFile -> getFileRecursively -> onFileReceived -> Data Range configuration could not be found at Dataset ' + pDataset.name) } + callBackFunction(customErr) + return + } + } + if (pTimeFrames !== undefined) { + if (pDataset.config.timeFrames !== undefined) { + if (pDataset.config.timeFrames.fileName !== '') { + fileName = pDataset.config.timeFrames.fileName + filePath = pDataset.config.timeFrames.filePath + } else { + let customErr = { + result: GLOBAL.CUSTOM_FAIL_RESPONSE.result, + message: 'Configured to not Support This.' + } + callBackFunction(customErr) + return + } + } else { + let customErr = { + result: GLOBAL.CUSTOM_FAIL_RESPONSE.result, + message: 'Missing Configuration.' + } + if (ERROR_LOG === true) { logger.write('[WARN] getFile -> getFileRecursively -> onFileReceived -> customErr.message = ' + customErr.message) } + if (ERROR_LOG === true) { logger.write('[WARN] getFile -> getFileRecursively -> onFileReceived -> Time Frames configuration could not be found at Dataset ' + pDataset.name) } + callBackFunction(customErr) + return } - - if (ERROR_LOG === true) { logger.write('[WARN] getFile -> getFileRecursively -> onFileReceived -> customErr.message = ' + customErr.message) } - if (ERROR_LOG === true) { logger.write('[WARN] getFile -> getFileRecursively -> onFileReceived -> Data Range configuration could not be found. ') } - - callBackFunction(customErr) - return } } @@ -80,19 +94,19 @@ function newFileCloud () { } if (pDataMine !== undefined) { - filePath = filePath.replace('@DataMine', pDataMine.code.codeName) + filePath = filePath.replace('@DataMine', pDataMine.config.codeName) } if (pBot !== undefined) { - filePath = filePath.replace('@Bot', pBot.code.codeName) + filePath = filePath.replace('@Bot', pBot.config.codeName) } if (pSession !== undefined) { - let code - let sessionFolderName = pSession.id - if (pSession.code !== undefined) { - if (pSession.code.folderName !== undefined) { - sessionFolderName = pSession.code.folderName + '-' + pSession.id + let config + let sessionFolderName = pSession.type.replace(' ', '-').replace(' ', '-') + '-' + pSession.id + if (pSession.config !== undefined) { + if (pSession.config.folderName !== undefined) { + sessionFolderName = pSession.type.replace(' ', '-').replace(' ', '-') + '-' + pSession.config.folderName } } filePath = filePath.replace('@Session', sessionFolderName) @@ -103,8 +117,8 @@ function newFileCloud () { } filePath = filePath.replace('@Period', pPeriodName) - filePath = filePath.replace('@Dataset', pDataset.code.codeName) - filePath = filePath.replace('@Product', pProduct.code.codeName) + filePath = filePath.replace('@Dataset', pDataset.config.codeName) + filePath = filePath.replace('@Product', pProduct.config.codeName) if (pDatetime !== undefined) { filePath = filePath.replace('@Year', pDatetime.getUTCFullYear()) @@ -118,17 +132,10 @@ function newFileCloud () { fileName = fileName.replace('@Sequence', pSequence) } - if (INFO_LOG === true) { logger.write('[INFO] getFile -> getFileRecursively -> filePath = ' + filePath) } - if (INFO_LOG === true) { logger.write('[INFO] getFile -> getFileRecursively -> fileName = ' + fileName) } - fileStorage.getFileFromHost(filePath + '/' + fileName, onFileReceived) function onFileReceived (err, text, response) { try { - if (INFO_LOG === true) { logger.write('[INFO] getFile -> getFileRecursively -> onFileReceived -> Entering function.') } - if (INFO_LOG === true) { logger.write('[INFO] getFile -> getFileRecursively -> onFileReceived -> filePath = ' + filePath) } - if (INFO_LOG === true) { logger.write('[INFO] getFile -> getFileRecursively -> onFileReceived -> fileName = ' + fileName) } - let data if (err && err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { @@ -137,9 +144,6 @@ function newFileCloud () { result: GLOBAL.CUSTOM_FAIL_RESPONSE.result, message: 'File does not exist.' } - - if (INFO_LOG === true) { logger.write('[WARN] getFile -> getFileRecursively -> onFileReceived -> customErr.message = ' + customErr.message) } - callBackFunction(customErr) return } @@ -171,9 +175,6 @@ function newFileCloud () { } else { try { data = JSON.parse(text) - - if (INFO_LOG === true) { logger.write('[INFO] getFile -> getFileRecursively -> onFileReceived -> Data received is valid JSON.') } - callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE, data) return } catch (err) { diff --git a/Files-Component/src/FileCursor.js b/Files-Component/src/FileCursor.js index 29ddb900e..4d46879ad 100644 --- a/Files-Component/src/FileCursor.js +++ b/Files-Component/src/FileCursor.js @@ -1,5 +1,5 @@ -function newFileCursor () { +function newFileCursor() { const MODULE_NAME = 'File Cursor' const INFO_LOG = false const ERROR_LOG = true @@ -43,7 +43,7 @@ function newFileCursor () { return thisObject - function finalize () { + function finalize() { try { eventsServerClient.stopListening('Dataset Updated', eventSubscriptionIdDatasetUpdated) eventsServerClient.stopListening('Data Range Updated', eventSubscriptionIdDataRangeUpdated) @@ -75,7 +75,7 @@ function newFileCursor () { } } - function initialize ( + function initialize( pFileCloud, pDataMine, pBot, @@ -108,21 +108,21 @@ function newFileCursor () { endDateRange = pEndDateRange eventsServerClient = pEventsServerClient - let key = dataMine.code.codeName + '-' + bot.code.codeName + '-' + product.code.codeName + '-' + dataset.code.codeName + '-' + exchange.name + '-' + market.baseAsset + '/' + market.quotedAsset + let key = dataMine.config.codeName + '-' + bot.config.codeName + '-' + product.config.codeName + '-' + dataset.config.codeName + '-' + exchange.name + '-' + market.baseAsset + '/' + market.quotedAsset let callerId = key + '-' + periodName + newUniqueId() eventsServerClient.listenToEvent(key, 'Dataset Updated', undefined, callerId, onResponseDataSet, updateFiles) - key = dataMine.code.codeName + '-' + bot.code.codeName + '-' + product.code.codeName + '-' + exchange.name + '-' + market.baseAsset + '/' + market.quotedAsset + key = dataMine.config.codeName + '-' + bot.config.codeName + '-' + product.config.codeName + '-' + exchange.name + '-' + market.baseAsset + '/' + market.quotedAsset callerId = key + '-' + periodName + newUniqueId() eventsServerClient.listenToEvent(key, 'Data Range Updated', undefined, callerId, onResponseDataRange, updateDataRange) callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE) - function onResponseDataSet (message) { + function onResponseDataSet(message) { eventSubscriptionIdDatasetUpdated = message.eventSubscriptionId } - function onResponseDataRange (message) { + function onResponseDataRange(message) { eventSubscriptionIdDataRangeUpdated = message.eventSubscriptionId } } catch (err) { @@ -131,7 +131,7 @@ function newFileCursor () { } } - function updateDataRange (message) { + function updateDataRange(message) { try { if (finalized === true) { return } @@ -156,7 +156,7 @@ function newFileCursor () { } } - function updateFiles (message) { + function updateFiles(message) { try { if (finalized === true) { return } @@ -168,9 +168,9 @@ function newFileCursor () { dateString = targetDate.getUTCFullYear() + '-' + pad(targetDate.getUTCMonth() + 1, 2) + '-' + pad(targetDate.getUTCDate(), 2) - fileCloud.getFile(dataMine, bot, session, product, dataset, exchange, market, periodName, targetDate, undefined, undefined, onFileReceived) + fileCloud.getFile(dataMine, bot, session, product, dataset, exchange, market, periodName, targetDate, undefined, undefined, undefined, onFileReceived) - function onFileReceived (err, file) { + function onFileReceived(err, file) { try { if (finalized === true) { return } @@ -188,7 +188,7 @@ function newFileCursor () { } } - function setTimeFrame (pTimeFrame, pDatetime) { + function setTimeFrame(pTimeFrame, pDatetime) { try { if (finalized === true) { return } @@ -225,7 +225,7 @@ function newFileCursor () { enterSavingMode() } - function enterSavingMode () { + function enterSavingMode() { try { switch (timeFrame) { @@ -302,7 +302,7 @@ function newFileCursor () { } } - function exitSavingMode () { + function exitSavingMode() { try { switch (timeFrame) { @@ -383,7 +383,7 @@ function newFileCursor () { } } - function setDatetime (pDatetime) { + function setDatetime(pDatetime) { try { if (finalized === true) { return } @@ -398,7 +398,7 @@ function newFileCursor () { } } - function reload (callBackFunction) { + function reload(callBackFunction) { try { if (finalized === true) { return } @@ -411,7 +411,7 @@ function newFileCursor () { } } - function getFiles (callBackFunction) { + function getFiles(callBackFunction) { try { if (finalized === true) { return } @@ -422,7 +422,7 @@ function newFileCursor () { getNextFile() - function getNextFile () { + function getNextFile() { try { let targetDate = new Date(cursorDate) targetDate.setUTCDate(targetDate.getUTCDate() + j) @@ -442,7 +442,7 @@ function newFileCursor () { if (beginDateRange !== undefined) { let compareBeginDate = removeTime(beginDateRange) - if (compareTargetDate.valueOf() < compareBeginDate) { + if (compareTargetDate.valueOf() < compareBeginDate.valueOf()) { controlLoop() return } @@ -451,7 +451,7 @@ function newFileCursor () { if (endDateRange !== undefined) { let compareEndDate = removeTime(endDateRange) - if (compareTargetDate.valueOf() > compareEndDate) { + if (compareTargetDate.valueOf() >= compareEndDate.valueOf()) { controlLoop() return } @@ -468,7 +468,7 @@ function newFileCursor () { if (thisObject.files.get(dateString) === undefined) { // We dont reload files we already have. - fileCloud.getFile(dataMine, bot, session, product, dataset, exchange, market, periodName, targetDate, undefined, undefined, onFileReceived) + fileCloud.getFile(dataMine, bot, session, product, dataset, exchange, market, periodName, targetDate, undefined, undefined, undefined, onFileReceived) } else { controlLoop() } @@ -479,7 +479,7 @@ function newFileCursor () { } } - function onFileReceived (err, file) { + function onFileReceived(err, file) { try { if (INFO_LOG === true) { logger.write('[INFO] getFiles -> onFileReceived -> Entering function.') } @@ -524,7 +524,7 @@ function newFileCursor () { } } - function controlLoop () { + function controlLoop() { try { if (INFO_LOG === true) { logger.write('[INFO] getFiles -> controlLoop -> Entering function.') } @@ -548,7 +548,7 @@ function newFileCursor () { } } - function collectGarbage (callBackFunction) { + function collectGarbage(callBackFunction) { try { if (finalized === true) { return } @@ -570,7 +570,7 @@ function newFileCursor () { } } - function getExpectedFiles () { + function getExpectedFiles() { if (finalized === true) { return } if (INFO_LOG === true) { logger.write('[INFO] getExpectedFiles -> Entering function.') } diff --git a/Files-Component/src/FileSequence.js b/Files-Component/src/FileSequence.js index f14de19f4..67ac3b493 100644 --- a/Files-Component/src/FileSequence.js +++ b/Files-Component/src/FileSequence.js @@ -88,7 +88,7 @@ function newFileSequence () { callerId = newUniqueId() - let key = dataMine.code.codeName + '-' + bot.code.codeName + '-' + product.code.codeName + '-' + dataset.code.codeName + '-' + exchange.name + '-' + market.baseAsset + '/' + market.quotedAsset + let key = dataMine.config.codeName + '-' + bot.config.codeName + '-' + product.config.codeName + '-' + dataset.config.codeName + '-' + exchange.name + '-' + market.baseAsset + '/' + market.quotedAsset eventsServerClient.listenToEvent(key, 'Dataset Updated', undefined, callerId, onResponse, updateFiles) function onResponse (message) { @@ -97,7 +97,7 @@ function newFileSequence () { /* First we will get the sequence max number */ - fileCloud.getFile(dataMine, bot, session, product, dataset, exchange, market, undefined, undefined, 'Sequence', undefined, onSequenceFileReceived) + fileCloud.getFile(dataMine, bot, session, product, dataset, exchange, market, undefined, undefined, 'Sequence', undefined, undefined, onSequenceFileReceived) function onSequenceFileReceived (err, file) { try { @@ -142,7 +142,7 @@ function newFileSequence () { /* Now we will get the sequence of files */ for (let i = 0; i <= maxSequence; i++) { - fileCloud.getFile(dataMine, bot, session, product, dataset, exchange, market, undefined, undefined, i, undefined, onFileReceived) + fileCloud.getFile(dataMine, bot, session, product, dataset, exchange, market, undefined, undefined, i, undefined, undefined, onFileReceived) function onFileReceived (err, file) { try { @@ -207,7 +207,7 @@ function newFileSequence () { let currentMaxSequence = maxSequence - fileCloud.getFile(dataMine, bot, session, product, dataset, exchange, market, undefined, undefined, 'Sequence', undefined, onSequenceFileReceived) + fileCloud.getFile(dataMine, bot, session, product, dataset, exchange, market, undefined, undefined, 'Sequence', undefined, undefined, onSequenceFileReceived) function onSequenceFileReceived (err, sequenceFile) { try { @@ -243,7 +243,7 @@ function newFileSequence () { /* Now we will get the sequence of files, but in this case only from the currentMaxSequence and above. */ for (let i = currentMaxSequence; i <= maxSequence; i++) { - fileCloud.getFile(dataMine, bot, session, product, dataset, exchange, market, undefined, undefined, i, undefined, onFileReceived) + fileCloud.getFile(dataMine, bot, session, product, dataset, exchange, market, undefined, undefined, i, undefined, undefined, onFileReceived) function onFileReceived (err, file) { try { diff --git a/Files-Component/src/FileStorage.js b/Files-Component/src/FileStorage.js index ee85468b0..113e9f2aa 100644 --- a/Files-Component/src/FileStorage.js +++ b/Files-Component/src/FileStorage.js @@ -1,4 +1,4 @@ -function newFileStorage (host, port) { +function newFileStorage(host, port) { const MODULE_NAME = 'File Storage' const INFO_LOG = false const logger = newWebDebugLog() @@ -27,12 +27,9 @@ function newFileStorage (host, port) { getFileFromHost: getFileFromHost } - if (host === '' || host === undefined) { host = 'localhost' } - if (port === '' || port === undefined) { port = '34247' } - return thisObject - async function getFileFromHost (filePath, callBackFunction, pathComplete) { + async function getFileFromHost(filePath, callBackFunction, pathComplete) { try { if (INFO_LOG === true) { logger.write('[INFO] getFileFromHost -> Entering function.') } @@ -41,8 +38,10 @@ function newFileStorage (host, port) { folder = 'Storage/' } let url = folder + filePath - if (host !== undefined) { + if (host !== undefined && port !== undefined) { url = 'http://' + host + ':' + port + '/' + folder + filePath + } else { + url = folder + filePath } callServer(undefined, url, (response, fileContent) => { @@ -67,7 +66,7 @@ function newFileStorage (host, port) { } } - function verifyRetry (errorCode) { + function verifyRetry(errorCode) { for (let i = 0; i < recoverableErrors.length; i++) { const error = recoverableErrors[i] if (error === errorCode) { diff --git a/Files-Component/src/MarketFiles.js b/Files-Component/src/MarketFiles.js index 666389d08..cbb8028c8 100644 --- a/Files-Component/src/MarketFiles.js +++ b/Files-Component/src/MarketFiles.js @@ -1,5 +1,5 @@ -  -function newMarketFiles () { + +function newMarketFiles() { const MODULE_NAME = 'Market Files' const ERROR_LOG = true const logger = newWebDebugLog() @@ -17,6 +17,7 @@ function newMarketFiles () { let filesLoaded = 0 let filesNotLoaded = 0 + let filesExpected = 0 let fileCloud @@ -41,7 +42,7 @@ function newMarketFiles () { return thisObject - function finalize () { + function finalize() { try { for (let i = 0; i < eventSubscriptionIdDatasetUpdated.length; i++) { eventsServerClient.stopListening('Dataset Updated', eventSubscriptionIdDatasetUpdated[i]) @@ -69,7 +70,7 @@ function newMarketFiles () { } } - function initialize ( + function initialize( pDataMine, pBot, pSession, @@ -82,6 +83,8 @@ function newMarketFiles () { pEventsServerClient, callBackFunction) { try { + let timeFrames + exchange = pExchange market = pMarket dataMine = pDataMine @@ -95,23 +98,76 @@ function newMarketFiles () { fileCloud.initialize(pBot, pHost, pPort) /* Some Validations */ - if (dataset.code.validTimeFrames === undefined) { + if (dataset.config.validTimeFrames === undefined) { if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> err = Can not initialize Market Files for bot ' + pBot.name) } if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> err = You need to define validTimeFrames at the Dataset config. ') } callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) return } - /* Now we will get the market files */ + getTimeFramesFile() - for (let i = 0; i < marketFilesPeriods.length; i++) { - let periodTime = marketFilesPeriods[i][0] - let periodName = marketFilesPeriods[i][1] + function getTimeFramesFile() { + /* First we will get the Data Range */ + fileCloud.getFile(pDataMine, pBot, pSession, pProduct, pDataset, exchange, pMarket, undefined, undefined, undefined, undefined, true, onTimeFramesReceived) - if (dataset.code.validTimeFrames.includes(periodName) === true) { - fileCloud.getFile(dataMine, bot, session, product, dataset, exchange, market, periodName, undefined, undefined, undefined, onFileReceived) + function onTimeFramesReceived(err, pFile) { + switch (err.result) { + case GLOBAL.DEFAULT_OK_RESPONSE.result: { + timeFrames = pFile + break + } + case GLOBAL.DEFAULT_FAIL_RESPONSE.result: { + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } + case GLOBAL.CUSTOM_FAIL_RESPONSE.result: { + if (err.message === 'File does not exist.') { + /* It is ok, we will deal with this later */ + break + } + if (err.message === 'Configured to not Support This.') { + /* It is ok, we will deal with this later */ + break + } + if (err.message === 'Missing Configuration.') { + if (ERROR_LOG === true) { logger.write('[WARN] initialize -> onFileReceived -> The needed configuration to locate the timeFrames is missing at the dataSet.') } + if (ERROR_LOG === true) { logger.write('[WARN] initialize -> onFileReceived -> Time Frames Filters will be ignored -> Product = ' + pProduct.config.codeName) } + break + } + callBackFunction(err) + return + } + default: { + callBackFunction(err) + return + } + } + getMarketFiles() + } + } - function onFileReceived (err, file) { + function getMarketFiles() { + /* Now we will get the market files */ + for (let i = 0; i < marketFilesPeriods.length; i++) { + let periodTime = marketFilesPeriods[i][0] + let periodName = marketFilesPeriods[i][1] + + if (dataset.config.validTimeFrames.includes(periodName) === false) { + filesNotLoaded++ + continue + } + if (timeFrames !== undefined) { + if (timeFrames.includes(periodName) === false) { + filesNotLoaded++ + continue + } + } + + filesExpected++ + fileCloud.getFile(dataMine, bot, session, product, dataset, exchange, market, periodName, undefined, undefined, undefined, undefined, onFileReceived) + + function onFileReceived(err, file) { try { if (finalized === true) { return } if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { @@ -122,13 +178,13 @@ function newMarketFiles () { } if (filesLoaded + filesNotLoaded === marketFilesPeriods.length) { - let key = dataMine.code.codeName + '-' + bot.code.codeName + '-' + product.code.codeName + '-' + dataset.code.codeName + '-' + exchange.name + '-' + market.baseAsset + '/' + market.quotedAsset + let key = dataMine.config.codeName + '-' + bot.config.codeName + '-' + product.config.codeName + '-' + dataset.config.codeName + '-' + exchange.name + '-' + market.baseAsset + '/' + market.quotedAsset let callerId = key + '-' + periodName + newUniqueId() eventsServerClient.listenToEvent(key, 'Dataset Updated', undefined, callerId, onResponse, updateFiles) callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE, thisObject) - function onResponse (message) { + function onResponse(message) { eventSubscriptionIdDatasetUpdated.push(message.eventSubscriptionId) } } @@ -138,6 +194,8 @@ function newMarketFiles () { } } } + + callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE, thisObject) } } catch (err) { if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> err = ' + err.stack) } @@ -145,32 +203,36 @@ function newMarketFiles () { } } - function updateFiles () { + function updateFiles(message) { try { if (finalized === true) { return } let updatedFiles = 0 - /* Now we will get the market files */ + /* Now we will get the market files */ for (let i = 0; i < marketFilesPeriods.length; i++) { let periodTime = marketFilesPeriods[i][0] let periodName = marketFilesPeriods[i][1] - if (dataset.code.validTimeFrames.includes(periodName) === true) { - fileCloud.getFile(dataMine, bot, session, product, dataset, exchange, market, periodName, undefined, undefined, undefined, onFileReceived) + if (dataset.config.validTimeFrames.includes(periodName) !== true) { continue } + if (message.event !== undefined) { + if (message.event.timeFrames !== undefined) { + if (message.event.timeFrames.includes(periodName) !== true) { continue } + } + } + fileCloud.getFile(dataMine, bot, session, product, dataset, exchange, market, periodName, undefined, undefined, undefined, undefined, onFileReceived) - function onFileReceived (err, file) { - try { - if (finalized === true) { return } - files.set(periodTime, file) - updatedFiles++ + function onFileReceived(err, file) { + try { + if (finalized === true) { return } + files.set(periodTime, file) + updatedFiles++ - if (updatedFiles === marketFilesPeriods.length) { - thisObject.eventHandler.raiseEvent('Files Updated') - } - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] updateFiles -> onFileReceived -> err = ' + err.stack) } + if (updatedFiles === filesExpected) { + thisObject.eventHandler.raiseEvent('Files Updated') } + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] updateFiles -> onFileReceived -> err = ' + err.stack) } } } } @@ -179,19 +241,19 @@ function newMarketFiles () { } } - function getFile (pPeriod) { + function getFile(pPeriod) { return files.get(pPeriod) } - function getExpectedFiles () { + function getExpectedFiles() { return marketFilesPeriods.length } - function getFilesLoaded () { + function getFilesLoaded() { return filesLoaded } - function getFilesNotLoaded () { + function getFilesNotLoaded() { return filesNotLoaded } } diff --git a/Files-Component/src/SingleFile.js b/Files-Component/src/SingleFile.js index 17d2542de..3103d1207 100644 --- a/Files-Component/src/SingleFile.js +++ b/Files-Component/src/SingleFile.js @@ -30,7 +30,7 @@ function newSingleFile () { callBackFunction) { try { if (INFO_LOG === true) { logger.write('[INFO] initialize -> Entering function.') } - if (INFO_LOG === true) { logger.write('[INFO] initialize -> key = ' + pDataMine.code.codeName + '-' + pBot.code.codeName + '-' + pProduct.code.codeName) } + if (INFO_LOG === true) { logger.write('[INFO] initialize -> key = ' + pDataMine.config.codeName + '-' + pBot.config.codeName + '-' + pProduct.config.codeName) } let exchange = pExchange @@ -39,7 +39,7 @@ function newSingleFile () { /* Now we will get the file */ - fileCloud.getFile(pDataMine, pBot, pSession, pProduct, pDataset, exchange, pMarket, undefined, undefined, undefined, undefined, onFileReceived) + fileCloud.getFile(pDataMine, pBot, pSession, pProduct, pDataset, exchange, pMarket, undefined, undefined, undefined, undefined, undefined, onFileReceived) function onFileReceived (err, pFile) { try { diff --git a/Includes/Data-Mines/Alpha.json b/Includes/Data-Mines/Alpha.json new file mode 100644 index 000000000..f8fc502b9 --- /dev/null +++ b/Includes/Data-Mines/Alpha.json @@ -0,0 +1 @@ +{"type":"Data Mine","name":"Alpha","config":"{ \n\"codeName\": \"Alpha\"\n}","sensorBots":[],"indicatorBots":[{"type":"Indicator Bot","name":"ATR","config":"{\n\"codeName\": \"ATR\",\n\"repo\": \"ATR-Indicator-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates RSI.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market ATR - SMA","id":"5cdfa018-5ade-469b-90bf-cc523ef0a46e","savedPayload":{"position":{"x":19535.762374007485,"y":11327.820253166241},"targetPosition":{"x":19762.622973748803,"y":11607.811267667386},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2570d2c7-72e3-4131-97dc-a9f97f493e93"}}},{"type":"Output Dataset","name":"Multi-Period-Market ATR - RMA","id":"e7e58e02-fef8-4400-9928-f29805a96f98","savedPayload":{"position":{"x":19706.507683380943,"y":11251.956085818223},"targetPosition":{"x":19762.622973748803,"y":11607.811267667386},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"67695466-be2d-43b4-9824-83baa7a08412"}}}],"outputDatasetFolders":[],"id":"b345304f-fbb3-4889-934a-8f9b4941ed29","savedPayload":{"position":{"x":19738.859765635832,"y":11554.168396191428},"targetPosition":{"x":19894.23788406715,"y":11902.908122552459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","config":"{\"mainUtility\": \"Market Ending Point\"}","id":"eb499527-0f18-45f9-99ab-a7bc7fabb3aa","savedPayload":{"position":{"x":19717.131342721197,"y":11320.7267994623},"targetPosition":{"x":19928.160705026097,"y":11581.461456533132},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}},{"type":"Status Dependency","name":"ATR Multi-Period-Market","config":"{\"mainUtility\": \"Self Reference\"}","id":"025a6f70-c187-4b4d-aa62-6f4ebfc116ba","savedPayload":{"position":{"x":19963.090304275516,"y":11247.851174842832},"targetPosition":{"x":19928.160705026097,"y":11581.461456533132},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"8a6c8b1e-950d-4819-88a9-9c45272a0799"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"f25ba171-3c78-4e4f-acb8-66446be1ce0a","savedPayload":{"position":{"x":20191.5270901223,"y":11367.935486457443},"targetPosition":{"x":19928.160705026097,"y":11581.461456533132},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"dataMineDataDependencies":[],"id":"bf337039-bd28-4f50-89d1-5115e631e6cf","savedPayload":{"position":{"x":19935.055434949005,"y":11514.699143420201},"targetPosition":{"x":19894.23788406715,"y":11902.908122552459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"8a6c8b1e-950d-4819-88a9-9c45272a0799","savedPayload":{"position":{"x":20116.73230690759,"y":11596.604235186449},"targetPosition":{"x":19894.23788406715,"y":11902.908122552459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"d150911d-47e9-4046-b365-ac817667cf32","savedPayload":{"position":{"x":20239.947834199706,"y":11749.000090247524},"targetPosition":{"x":19894.23788406715,"y":11902.908122552459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"faac5fcf-e7b2-4883-84bd-427aa74bc3c1","savedPayload":{"position":{"x":20276.94180388497,"y":11942.989838556792},"targetPosition":{"x":19894.23788406715,"y":11902.908122552459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"83a07439-ad71-463a-9727-5f43ad0b03d2","savedPayload":{"position":{"x":19519.91558354081,"y":12096.810775556498},"targetPosition":{"x":19276.690854807195,"y":12431.337105672637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Calculates RSI\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily ATR - SMA","id":"570c8470-a4ae-40a8-b647-d3859887c148","savedPayload":{"position":{"x":20176.755500431755,"y":11553.657740883536},"targetPosition":{"x":20195.70708599251,"y":11909.908946857666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"93eb665f-d903-4825-9fb1-2783e917ac89"}}},{"type":"Output Dataset","name":"Multi-Period-Daily ATR - RMA","id":"60d2cf94-0cf3-4cdf-a2ec-69c012f74019","savedPayload":{"position":{"x":20357.874073170504,"y":11591.568352872933},"targetPosition":{"x":20195.70708599251,"y":11909.908946857666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"e3d0bccf-5f97-4902-92df-4ac8fe8c41a8"}}}],"outputDatasetFolders":[],"id":"d6545bbe-389f-4dbe-b31e-de9d7ad95e4b","savedPayload":{"position":{"x":20208.273130968897,"y":11852.70329123834},"targetPosition":{"x":20128.954728790166,"y":12225.967585160153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"ATR Multi-Period-Daily","config":"{\"mainUtility\": \"Self Reference\"}","id":"89b9660c-6005-4381-a692-e320b9422268","savedPayload":{"position":{"x":20275.450642619813,"y":11657.52736008485},"targetPosition":{"x":20344.916904284695,"y":11985.709632633238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"619713bc-8cf4-4152-b36d-d470361f8a3b"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","config":"{\"mainUtility\": \"Market Ending Point\"}","id":"6aba1eb8-b5b6-4749-a323-16016a453194","savedPayload":{"position":{"x":20481.301553834437,"y":11679.500319271443},"targetPosition":{"x":20344.916904284695,"y":11985.709632633238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\"mainUtility\": \"Market Starting Point\"}","id":"77cb48bb-f6ca-4eba-ab3d-2b5583f7285a","savedPayload":{"position":{"x":20635.363334119178,"y":11818.073979983463},"targetPosition":{"x":20344.916904284695,"y":11985.709632633238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"b7383dbe-549f-4ffe-8764-9ea324d5025d","savedPayload":{"position":{"x":20678.50520084428,"y":12020.629490990144},"targetPosition":{"x":20344.916904284695,"y":11985.709632633238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"dataMineDataDependencies":[],"id":"e1b3e953-5756-4810-abcb-67535b51f3ca","savedPayload":{"position":{"x":20389.261660360353,"y":11937.329947024627},"targetPosition":{"x":20128.954728790166,"y":12225.967585160153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"619713bc-8cf4-4152-b36d-d470361f8a3b","savedPayload":{"position":{"x":20498.32300740775,"y":12106.107509909038},"targetPosition":{"x":20128.954728790166,"y":12225.967585160153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"54a8ad94-41a9-4b8d-83f7-c40056140ef4","savedPayload":{"position":{"x":20503.538308028204,"y":12305.606801243997},"targetPosition":{"x":20128.954728790166,"y":12225.967585160153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"0b02390a-fc39-4f1a-a53c-8bae1492e292","savedPayload":{"position":{"x":20413.208589831574,"y":12482.079740342086},"targetPosition":{"x":20128.954728790166,"y":12225.967585160153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"61dde091-7c09-4384-ab2d-1fec0dbef7c5","savedPayload":{"position":{"x":19670.046342141603,"y":12304.162159671041},"targetPosition":{"x":19276.690854807195,"y":12431.337105672637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"ATR - RMA","config":"{\n \"codeName\": \"ATR-RMA\",\n \"singularVariableName\": \"atrRMA\",\n \"pluralVariableName\": \"atrRMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"67695466-be2d-43b4-9824-83baa7a08412","savedPayload":{"position":{"x":20050.85898206879,"y":12411.125605599784},"targetPosition":{"x":19823.124277187413,"y":12576.693808499522},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"e3d0bccf-5f97-4902-92df-4ac8fe8c41a8","savedPayload":{"position":{"x":20104.247239917975,"y":12577.078750595801},"targetPosition":{"x":19823.124277187413,"y":12576.693808499522},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"Begin","code":"record.current.begin","id":"a0cb3931-383f-4c9d-8f01-fe812c22181e","savedPayload":{"position":{"x":21127.77752202986,"y":12791.719410372956},"targetPosition":{"x":20980.072180235507,"y":12857.518291039612},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e538eb1e-f296-4e00-bdbb-8a904c5b897a","savedPayload":{"position":{"x":20980.072180235507,"y":12857.518291039612},"targetPosition":{"x":20650.915769254825,"y":13004.231371830318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"566fa39a-58b3-439a-a666-9c0d6927dfcc","savedPayload":{"position":{"x":21175.51156214975,"y":13059.057929229819},"targetPosition":{"x":21014.183265508735,"y":13042.258308636054},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3a3dfa55-78be-4e15-90ae-b64d7db87d29","savedPayload":{"position":{"x":21014.183265508735,"y":13042.258308636054},"targetPosition":{"x":20650.915769254825,"y":13004.231371830318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ATR2","config":"{\n \"codeName\": \"atr2\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.atr2","id":"fc05c629-916b-40a9-a62d-06b309420ee6","savedPayload":{"position":{"x":21073.530097500443,"y":13311.203411385133},"targetPosition":{"x":20942.542889034943,"y":13216.052890854224},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b4e9fd6c-b742-4378-851f-ec6a84183727","savedPayload":{"position":{"x":20942.542889034943,"y":13216.052890854224},"targetPosition":{"x":20650.915769254825,"y":13004.231371830318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ATR3","config":"{\n \"codeName\": \"atr3\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.atr3","id":"2521d41c-60fa-421e-ba7d-8d9b6ff19477","savedPayload":{"position":{"x":20863.209161147854,"y":13481.353035307968},"targetPosition":{"x":20797.420968502163,"y":13333.467652450734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"039f8d7d-2ea5-44b1-b758-4f86a4445a63","savedPayload":{"position":{"x":20797.420968502163,"y":13333.467652450734},"targetPosition":{"x":20650.915769254825,"y":13004.231371830318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ATR14","config":"{\n \"codeName\": \"atr14\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.atr14","id":"65b7d85e-1da0-4a77-b96f-eaa5d3b24036","savedPayload":{"position":{"x":20595.82122117619,"y":13528.409212479004},"targetPosition":{"x":20612.678423686677,"y":13367.490719861991},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c6b1bb6e-17b8-45ff-8a25-b1ae575dde04","savedPayload":{"position":{"x":20612.678423686677,"y":13367.490719861991},"targetPosition":{"x":20650.915769254825,"y":13004.231371830318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2838dfa4-22e5-4583-9b08-fed43081af24","savedPayload":{"position":{"x":20219.399717193817,"y":12864.420988282252},"targetPosition":{"x":19823.124277187413,"y":12576.693808499522},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current // get current candle data\nlet tr = calculateTR() // get true range value\n\nvariable.atr2 = calculateATR(tr, 2, variable.previousATR2)\nvariable.atr3 = calculateATR(tr, 3, variable.previousATR3)\nvariable.atr14 = calculateATR(tr, 14, variable.previousATR14)\n\nvariable.prevClose = candle.close\nvariable.previousATR2 = variable.atr2\nvariable.previousATR3 = variable.atr3\nvariable.previousATR14 = variable.atr14\n\n/* Helper Functions */\n\n/* Calculate True Range */\nfunction calculateTR() {\n let hl = candle.max - candle.min\n \n if (variable.prevClose === 0) { return hl } // Return High-Low when previous Close is 0\n \n let hcp = Math.abs(candle.max - variable.prevClose)\n let lcp = Math.abs(candle.min - variable.prevClose)\n \n return Math.max(hl, hcp, lcp)\n}\n\n/* Calculate Average True Range - Smoothing Function RMA*/\nfunction calculateATR(source, length, previousATR) {\n return (source + (length - 1) * previousATR) / length\n}","id":"0814b5ad-81ed-4d17-ba6c-2ecad55f5f31","savedPayload":{"position":{"x":20286.30563487476,"y":13211.953745234017},"targetPosition":{"x":20104.19578007958,"y":13047.409820701128},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"752cd82a-205d-43f5-b6ee-06f5c0a82f33","savedPayload":{"position":{"x":20104.19578007958,"y":13047.409820701128},"targetPosition":{"x":19922.724571514173,"y":12883.849370819098},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.prevClose = 0\n\nvariable.previousATR2 = 0\nvariable.previousATR3 = 0\nvariable.previousATR14 = 0","id":"b1ee7e9d-a89a-4c18-beaf-9b1ebdc25dd1","savedPayload":{"position":{"x":19821.2092439031,"y":13363.09767636692},"targetPosition":{"x":19871.788382288076,"y":13122.883779304742},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c1dbc0e9-06b0-426a-9e7b-731bd1c2305f","savedPayload":{"position":{"x":19871.788382288076,"y":13122.883779304742},"targetPosition":{"x":19922.724571514173,"y":12883.849370819098},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7779fc37-e563-4515-8c11-7732793ebfe0","savedPayload":{"position":{"x":19922.724571514173,"y":12883.849370819098},"targetPosition":{"x":19823.124277187413,"y":12576.693808499522},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"660570d1-36e0-4099-817c-6c8a29b32689","savedPayload":{"position":{"x":19687.147527210633,"y":12564.539409146812},"targetPosition":{"x":19276.690854807195,"y":12431.337105672637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"ATR - RMA","id":"99088549-f1c0-4157-ba7e-ffd6dfd0d140"}}},{"type":"Product Definition","name":"ATR - SMA","config":"{\n \"codeName\": \"ATR-SMA\",\n \"singularVariableName\": \"atrSMA\",\n \"pluralVariableName\": \"atrSMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"2570d2c7-72e3-4131-97dc-a9f97f493e93","savedPayload":{"position":{"x":20183.411295823353,"y":12916.188347836502},"targetPosition":{"x":19828.400592218597,"y":12916.188657402168},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"93eb665f-d903-4825-9fb1-2783e917ac89","savedPayload":{"position":{"x":20115.04517097611,"y":13124.532696027478},"targetPosition":{"x":19828.400592218597,"y":12916.188657402168},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"Begin","code":"record.current.begin","id":"8b1f8ca7-d741-489f-a1f9-3851920e6d59","savedPayload":{"position":{"x":20275.284947163724,"y":13386.670894841965},"targetPosition":{"x":20155.406700841166,"y":13361.363065014648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7c4a6317-bc3a-45d8-9dcc-4c42fa6a653b","savedPayload":{"position":{"x":20155.406700841166,"y":13361.363065014648},"targetPosition":{"x":19796.882427596323,"y":13286.169124448372},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"42ca9eb2-da3a-4972-8be8-756fa50a5585","savedPayload":{"position":{"x":20160.080443868323,"y":13612.931721171493},"targetPosition":{"x":20068.89300290481,"y":13531.100763825934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d4ccc9d1-616c-44e1-8019-f5dfbbac5d4c","savedPayload":{"position":{"x":20068.89300290481,"y":13531.100763825934},"targetPosition":{"x":19796.882427596323,"y":13286.169124448372},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ATR2","config":"{\n \"codeName\": \"atr2\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.atr2","id":"fa760872-a812-4bc6-8fe4-8669ec91bbe0","savedPayload":{"position":{"x":19947.745651764093,"y":13751.921645113765},"targetPosition":{"x":19909.835199195157,"y":13633.831484098213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"02df8c90-68ec-44ef-8abf-fb7d255815d2","savedPayload":{"position":{"x":19909.835199195157,"y":13633.831484098213},"targetPosition":{"x":19796.882427596323,"y":13286.169124448372},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ATR3","config":"{\n \"codeName\": \"atr3\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.atr3","id":"ee78802d-f297-45d6-8fa7-df7800ebf295","savedPayload":{"position":{"x":19694.72046592385,"y":13764.88214995503},"targetPosition":{"x":19720.97364869217,"y":13644.31805564144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3e3dd4c6-8f81-4e2b-bcba-34d1ca11abf0","savedPayload":{"position":{"x":19720.97364869217,"y":13644.31805564144},"targetPosition":{"x":19796.882427596323,"y":13286.169124448372},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ATR14","config":"{\n \"codeName\": \"atr14\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.atr14","id":"fdcc52bb-2dd9-4597-8399-eba8f2e36639","savedPayload":{"position":{"x":19469.190305918266,"y":13649.23305371411},"targetPosition":{"x":19551.363624154583,"y":13558.458995395247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"93cc0b1e-9414-406b-bbf7-7708bf303a9a","savedPayload":{"position":{"x":19551.363624154583,"y":13558.458995395247},"targetPosition":{"x":19796.882427596323,"y":13286.169124448372},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"de04ae72-affd-4bea-aab2-d7e4b1e8345d","savedPayload":{"position":{"x":20013.724843227406,"y":13486.18620417686},"targetPosition":{"x":19828.400592218597,"y":12916.188657402168},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current // get current candle data\nvariable.last14TR.push(calculateTR()) // Add the current true range value to last 14 array\n\nif (variable.last14TR.length > 14) {\n variable.last14TR.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 14 elements\n}\n\nvariable.atr2 = calculateATR(2)\nvariable.atr3 = calculateATR(3)\nvariable.atr14 = calculateATR(14)\nvariable.prevClose = candle.close\n\n/* Helper Functions */\n\n/* Calculate True Range */\nfunction calculateTR() {\n let hl = candle.max - candle.min\n \n if (variable.prevClose === 0) { return hl } // Return High-Low when previous Close is 0\n \n let hcp = Math.abs(candle.max - variable.prevClose)\n let lcp = Math.abs(candle.min - variable.prevClose)\n \n return Math.max(hl, hcp, lcp)\n}\n\n/* Calculate Average True Range - Smoothing Function SMA */\nfunction calculateATR(length) {\n /* We check we have enough values to make the calculation */\n if (variable.last14TR.length < length) { return 0 } // If we dont, we define the value is zero.\n\n let sum = 0 // Initialize sum variable. \n for (let i = variable.last14TR.length - length; i < variable.last14TR.length; i++) { // Iterate through the last periods\n sum = sum + variable.last14TR[i]\n }\n \n let atr = sum / length\n return atr\n}","id":"de821ecb-f4c2-4645-abe3-f2ec25c5b50f","savedPayload":{"position":{"x":19824.111041663902,"y":13900.304329612658},"targetPosition":{"x":19761.948585399947,"y":13606.310545724935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"81ad9ba0-f387-4884-8b7d-32ee9d44d73e","savedPayload":{"position":{"x":19761.948585399947,"y":13606.310545724935},"targetPosition":{"x":19699.046753526065,"y":13314.73451474569},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.last14TR = []\nvariable.prevClose = 0","id":"d388972a-f1b2-4b99-8406-35d07a7a5ab0","savedPayload":{"position":{"x":19371.944570492244,"y":13818.271122487902},"targetPosition":{"x":19535.614115343666,"y":13565.504089454846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ad6cc9e7-46c3-4500-924b-7523e5c9fa7f","savedPayload":{"position":{"x":19535.614115343666,"y":13565.504089454846},"targetPosition":{"x":19699.046753526065,"y":13314.73451474569},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4a310776-ce28-4e79-97fb-90fb350614c2","savedPayload":{"position":{"x":19699.046753526065,"y":13314.73451474569},"targetPosition":{"x":19828.400592218597,"y":12916.188657402168},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d83ffb9c-d01c-49eb-991d-3dc31baac747","savedPayload":{"position":{"x":19576.1269877399,"y":12757.177937520648},"targetPosition":{"x":19276.690854807195,"y":12431.337105672637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"ATR - SMA","id":"a6a3f5a6-8c33-482d-a922-5719afc35325"}}}],"id":"3f716c19-6b29-4a9e-aef4-e4a867838e57","savedPayload":{"position":{"x":19342.695559117834,"y":12431.33731211912},"targetPosition":{"x":18876.639522961566,"y":12431.333069545388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Indicator Bot","name":"ROC","config":"{\n\"codeName\": \"ROC\",\n\"repo\": \"ROC-Indicator-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates RSI.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market ROC 32","id":"6687ee94-004b-4834-a145-867151c4e37c","savedPayload":{"position":{"x":19720.22857055064,"y":12796.702677654643},"targetPosition":{"x":19650.114715072326,"y":13058.964936040778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"41a488be-c66c-458d-99fc-490b9e8172ef"}}},{"type":"Output Dataset","name":"Multi-Period-Market ROC 76","id":"a27232dd-4d69-46b8-8d8e-67499c9ddc30","savedPayload":{"position":{"x":19885.373027485468,"y":12923.317540123688},"targetPosition":{"x":19650.114715072326,"y":13058.964936040778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"40268fec-e5e8-4b05-9f27-c4072ebda94a"}}},{"type":"Output Dataset","name":"Multi-Period-Market ROC 9","id":"bbeb8cb6-5465-45be-80a9-2cbb46e3f5fa","savedPayload":{"position":{"x":19912.626266605064,"y":13129.409336618995},"targetPosition":{"x":19650.114715072326,"y":13058.964936040778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"9c6b7d85-01f5-449c-a5be-9a357b6588bc"}}}],"outputDatasetFolders":[],"id":"b6c54494-092a-4220-b0e9-1db9da7fd411","savedPayload":{"position":{"x":19650.114715072326,"y":13058.964936040778},"targetPosition":{"x":19338.626485947727,"y":13239.00458224002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","config":"{\"mainUtility\": \"Market Ending Point\"}","id":"5f954d97-d843-483e-919b-d94dd8329497","savedPayload":{"position":{"x":19545.749273323723,"y":11629.726237711973},"targetPosition":{"x":19756.778635628623,"y":11890.460894782806},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}},{"type":"Status Dependency","name":"ROC Multi-Period-Market","config":"{\"mainUtility\": \"Self Reference\"}","id":"7820dbef-88ab-4682-b542-88f6d2ae9f59","savedPayload":{"position":{"x":19791.708234878042,"y":11556.850613092505},"targetPosition":{"x":19756.778635628623,"y":11890.460894782806},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"87a0c5e3-20b4-48f7-a9db-4a9280ecb4b3"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"805d6b40-cc28-470f-8f39-67b2b48f155a","savedPayload":{"position":{"x":20020.145020724827,"y":11676.934924707117},"targetPosition":{"x":19756.778635628623,"y":11890.460894782806},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"dataMineDataDependencies":[],"id":"aa85fa69-abb3-4423-8d78-8bf1dd6c42d5","savedPayload":{"position":{"x":19705.977058830525,"y":13239.291684534825},"targetPosition":{"x":19338.626485947727,"y":13239.00458224002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"87a0c5e3-20b4-48f7-a9db-4a9280ecb4b3","savedPayload":{"position":{"x":19657.979450249466,"y":13423.327634476842},"targetPosition":{"x":19338.626485947727,"y":13239.00458224002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"3a6b674a-eb56-4f63-866b-f4e41dde72bb","savedPayload":{"position":{"x":19522.929628876067,"y":13557.633988828986},"targetPosition":{"x":19338.626485947727,"y":13239.00458224002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"c97508ab-c7eb-4047-911a-3ee3265c352b","savedPayload":{"position":{"x":19339.22249218282,"y":13613.042028207508},"targetPosition":{"x":19338.626485947727,"y":13239.00458224002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a2a141ba-08ed-4f30-9c7d-f811c6a7c571","savedPayload":{"position":{"x":19490.276660530006,"y":12777.354061475491},"targetPosition":{"x":19076.668826775607,"y":12777.69068688004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Calculates RSI\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily ROC 32","id":"3c5e8fe8-cf8d-4a96-967a-2d4d534bbd71","savedPayload":{"position":{"x":19689.88097914654,"y":13246.315837011934},"targetPosition":{"x":19497.899829905025,"y":13438.367172938375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"30276899-0d68-40e3-9c35-a28442485b55"}}},{"type":"Output Dataset","name":"Multi-Period-Daily ROC 76","id":"daf0c646-8592-4fd2-9f7d-bab86663faaf","savedPayload":{"position":{"x":19769.33406122563,"y":13438.451692618868},"targetPosition":{"x":19497.899829905025,"y":13438.367172938375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"cb60d68b-b11d-4317-8830-65c212a8c728"}}},{"type":"Output Dataset","name":"Multi-Period-Daily ROC 9","id":"0dbd1ffd-047b-4bf7-a74a-9df95d5b534c","savedPayload":{"position":{"x":19689.586989211923,"y":13630.812502227272},"targetPosition":{"x":19497.899829905025,"y":13438.367172938375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"66f59b6d-9d4b-4cef-9ffd-aed019219809"}}}],"outputDatasetFolders":[],"id":"09d69ba1-345f-4d96-b3e4-a98f1f778a70","savedPayload":{"position":{"x":19497.899829905025,"y":13438.367172938375},"targetPosition":{"x":19139.54145845901,"y":13438.1357569816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"ROC Multi-Period-Daily","config":"{\"mainUtility\": \"Self Reference\"}","id":"b1e59db1-0480-4533-940c-e6ede212b124","savedPayload":{"position":{"x":20104.06857322234,"y":11966.526798334524},"targetPosition":{"x":20173.53483488722,"y":12294.709070882911},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"af0bcf3a-4021-4861-870a-a06f5aad8761"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","config":"{\"mainUtility\": \"Market Ending Point\"}","id":"67e616b0-72f4-4e9c-b144-e6f6bde5777b","savedPayload":{"position":{"x":20309.919484436963,"y":11988.499757521116},"targetPosition":{"x":20173.53483488722,"y":12294.709070882911},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\"mainUtility\": \"Market Starting Point\"}","id":"c4cbf20f-ff4e-4611-8e4a-4340231bc3c5","savedPayload":{"position":{"x":20463.981264721704,"y":12127.073418233136},"targetPosition":{"x":20173.53483488722,"y":12294.709070882911},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"b95527eb-2205-43ef-a1e6-7d3a08219e27","savedPayload":{"position":{"x":20507.123131446806,"y":12329.628929239818},"targetPosition":{"x":20173.53483488722,"y":12294.709070882911},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"dataMineDataDependencies":[],"id":"d1a1f76c-a070-4958-8821-b3abcac7b176","savedPayload":{"position":{"x":19455.37362889004,"y":13621.365857181509},"targetPosition":{"x":19139.54145845901,"y":13438.1357569816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"af0bcf3a-4021-4861-870a-a06f5aad8761","savedPayload":{"position":{"x":19322.34915338128,"y":13755.486925742496},"targetPosition":{"x":19139.54145845901,"y":13438.1357569816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"f75ad3de-ba1f-4c68-a869-1bdad8587c71","savedPayload":{"position":{"x":19139.54084820627,"y":13804.62444934628},"targetPosition":{"x":19139.54145845901,"y":13438.1357569816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"bd45fa4a-4611-4126-b746-e9d56b9991bd","savedPayload":{"position":{"x":18956.756803010194,"y":13754.756665173643},"targetPosition":{"x":19139.54145845901,"y":13438.1357569816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"eea3cb55-83e5-400f-acc4-b71f5631d351","savedPayload":{"position":{"x":19434.723514355188,"y":12985.111146348623},"targetPosition":{"x":19076.668826775607,"y":12777.69068688004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"ROC 76","config":"{\n \"codeName\": \"ROC-76\",\n \"singularVariableName\": \"roc76\",\n \"pluralVariableName\": \"roc76s\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"40268fec-e5e8-4b05-9f27-c4072ebda94a","savedPayload":{"position":{"x":19025.416461722903,"y":13709.47822742592},"targetPosition":{"x":18783.73199816421,"y":13534.304523509167},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"cb60d68b-b11d-4317-8830-65c212a8c728","savedPayload":{"position":{"x":18875.918522938293,"y":13817.837722270451},"targetPosition":{"x":18783.73199816421,"y":13534.304523509167},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"Begin","code":"record.current.begin","id":"f3985849-3dba-4ab4-be09-45855ceb32a5","savedPayload":{"position":{"x":18801.652614388542,"y":14414.365670146055},"targetPosition":{"x":18739.731858542247,"y":14292.67726988976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ca08ef1e-44f8-4b51-8412-ab5ea4cd4383","savedPayload":{"position":{"x":18739.731858542247,"y":14292.67726988976},"targetPosition":{"x":18616.335738842776,"y":14050.589041887879},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"f84ebdb9-1371-4a1b-a55a-ec0fff505e8d","savedPayload":{"position":{"x":18490.558530388662,"y":14439.12351593014},"targetPosition":{"x":18532.58720277903,"y":14309.130754608306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"9b6434b8-6a14-4b15-9071-560f91991c1e","savedPayload":{"position":{"x":18532.58720277903,"y":14309.130754608306},"targetPosition":{"x":18616.335738842776,"y":14050.589041887879},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Value","config":"{\n \"codeName\": \"value\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.value","id":"4b4cc4ab-233d-4366-bb1c-c6cf4945e87e","savedPayload":{"position":{"x":18252.856623989013,"y":14236.4744743906},"targetPosition":{"x":18374.323492621614,"y":14174.047626160138},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a3ee4969-b28a-4d7c-9ceb-eba3ba2c8a21","savedPayload":{"position":{"x":18374.323492621614,"y":14174.047626160138},"targetPosition":{"x":18616.335738842776,"y":14050.589041887879},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8b1a0793-6111-4773-b83f-4fdc596aebfc","savedPayload":{"position":{"x":18616.335738842776,"y":14050.589041887879},"targetPosition":{"x":18783.73199816421,"y":13534.304523509167},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current // get current candle data\n\n/* Calculate Rate of Change */\nvariable.value = calculateROC(candle.close, variable.length)\n\nvariable.lastCloses.push(candle.close) // Add the current close value to the last closes array.\n\nif (variable.lastCloses.length > variable.length) {\n variable.lastCloses.splice(0, 1) // Remove the first element of the array to keep it at a maximun of n elements.\n}\n\n/* Helper Functions */\n\n/* Calculate Rate of Change */\nfunction calculateROC(source, length) {\n /* Check if we have enough values to make the calculation */\n if (variable.lastCloses.length < length) { return 0 }\n \n /* Check if n-last candle close is zero, avoid division by zero */\n if (variable.lastCloses[0] === 0) { return 0 }\n \n return 100 * (source - variable.lastCloses[0]) / variable.lastCloses[0]\n}","id":"37483919-8084-4d28-8763-02cfd1bdc45d","savedPayload":{"position":{"x":18188.356314144854,"y":14140.826286326077},"targetPosition":{"x":18359.019224163505,"y":13930.22346699362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5eb39756-772a-4cc2-b0f2-4b7eab6abf57","savedPayload":{"position":{"x":18359.019224163505,"y":13930.22346699362},"targetPosition":{"x":18530.062805438676,"y":13718.90420011088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.length = 76\nvariable.lastCloses = []","id":"3157aaee-5248-4767-b339-45835c0cffa7","savedPayload":{"position":{"x":18022.688040470184,"y":13913.60406586082},"targetPosition":{"x":18276.067674676575,"y":13816.51892040417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1392b12a-4221-4e2a-b692-cb7a07b40f84","savedPayload":{"position":{"x":18276.067674676575,"y":13816.51892040417},"targetPosition":{"x":18530.062805438676,"y":13718.90420011088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"bd3ccec7-4ec5-40e8-81f2-1402651648b7","savedPayload":{"position":{"x":18530.062805438676,"y":13718.90420011088},"targetPosition":{"x":18783.73199816421,"y":13534.304523509167},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9c2b6696-872f-44a4-b6b2-ab15a0c8541a","savedPayload":{"position":{"x":19291.93533475741,"y":13151.419397886832},"targetPosition":{"x":19076.668826775607,"y":12777.69068688004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"ROC 76","id":"a21bb3ba-b24d-4163-b7d0-ea60220fc368"}}},{"type":"Product Definition","name":"ROC 32","config":"{\n \"codeName\": \"ROC-32\",\n \"singularVariableName\": \"roc32\",\n \"pluralVariableName\": \"roc32s\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"41a488be-c66c-458d-99fc-490b9e8172ef","savedPayload":{"position":{"x":18429.913563760507,"y":13585.09047420639},"targetPosition":{"x":18429.78600945148,"y":13286.85186936537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"30276899-0d68-40e3-9c35-a28442485b55","savedPayload":{"position":{"x":18254.440548648832,"y":13527.81697858496},"targetPosition":{"x":18429.78600945148,"y":13286.85186936537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"Begin","code":"record.current.begin","id":"905bb06a-9b7f-4484-8031-22b0bdf76c79","savedPayload":{"position":{"x":17700.45586570483,"y":13872.835482186483},"targetPosition":{"x":17762.09520102737,"y":13752.310592914753},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"23ba960b-4a3f-410d-8d95-d7fb8419557e","savedPayload":{"position":{"x":17762.09520102737,"y":13752.310592914753},"targetPosition":{"x":17914.152520512544,"y":13454.076672606056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"8b6f20e9-ffae-470f-9da0-0fc12d2bbd6d","savedPayload":{"position":{"x":17466.530307311714,"y":13599.777258689828},"targetPosition":{"x":17595.603255777227,"y":13557.459740420441},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"40737f74-0e6d-4ea4-9e77-023af6343601","savedPayload":{"position":{"x":17595.603255777227,"y":13557.459740420441},"targetPosition":{"x":17914.152520512544,"y":13454.076672606056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Value","config":"{\n \"codeName\": \"value\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.value","id":"11ce21e7-ebc3-401d-b550-7b129f3f86b5","savedPayload":{"position":{"x":17494.41717783017,"y":13240.557792198559},"targetPosition":{"x":17615.048446998044,"y":13301.55404605385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"4bae0e4f-fa97-4b6e-99de-a61bd75014b1","savedPayload":{"position":{"x":17615.048446998044,"y":13301.55404605385},"targetPosition":{"x":17914.152520512544,"y":13454.076672606056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"048e2c90-bb92-4b32-a847-f337d3953392","savedPayload":{"position":{"x":17913.48587101754,"y":13454.66789279106},"targetPosition":{"x":18429.78600945148,"y":13286.85186936537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current // get current candle data\n\n/* Calculate Rate of Change */\nvariable.value = calculateROC(candle.close, variable.length)\n\nvariable.lastCloses.push(candle.close) // Add the current close value to the last closes array.\n\nif (variable.lastCloses.length > variable.length) {\n variable.lastCloses.splice(0, 1) // Remove the first element of the array to keep it at a maximun of n elements.\n}\n\n/* Helper Functions */\n\n/* Calculate Rate of Change */\nfunction calculateROC(source, length) {\n /* Check if we have enough values to make the calculation */\n if (variable.lastCloses.length < length) { return 0 }\n \n /* Check if n-last candle close is zero, avoid division by zero */\n if (variable.lastCloses[0] === 0) { return 0 }\n \n return 100 * (source - variable.lastCloses[0]) / variable.lastCloses[0]\n}","id":"f84b95ea-bfa6-4c2b-bf49-ff4810a11b97","savedPayload":{"position":{"x":17599.78458977607,"y":13302.011014899279},"targetPosition":{"x":17865.59316505905,"y":13245.776334184402},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7848d1ed-fedd-4d0e-8ea6-1212b2d614e5","savedPayload":{"position":{"x":17865.59316505905,"y":13245.776334184402},"targetPosition":{"x":18131.262080330467,"y":13189.815341765341},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.length = 32\nvariable.lastCloses = []","id":"858ab5d5-0fdc-406a-bbf8-18b648879abe","savedPayload":{"position":{"x":17675.566628606884,"y":12894.091246401182},"targetPosition":{"x":17903.43765279042,"y":13041.923558354529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"428a7ff5-a19a-448d-92d9-d11815613c67","savedPayload":{"position":{"x":17903.43765279042,"y":13041.923558354529},"targetPosition":{"x":18131.262080330467,"y":13189.815341765341},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"37ee9d85-7676-4ae0-956a-7c13706f4311","savedPayload":{"position":{"x":18131.262080330467,"y":13189.815341765341},"targetPosition":{"x":18429.78600945148,"y":13286.85186936537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ff5aacca-1783-4247-9702-ee5dd01fb3ff","savedPayload":{"position":{"x":19077.14024349357,"y":13208.490545310035},"targetPosition":{"x":19076.668826775607,"y":12777.69068688004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"ROC 32","id":"7812b3a3-8375-4f0d-9671-acc05b256d74"}}},{"type":"Product Definition","name":"ROC 9","config":"{\n \"codeName\": \"ROC-9\",\n \"singularVariableName\": \"roc9\",\n \"pluralVariableName\": \"roc9s\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"9c6b7d85-01f5-449c-a5be-9a357b6588bc","savedPayload":{"position":{"x":18367.90028466003,"y":13538.450602446082},"targetPosition":{"x":18398.997778660316,"y":13239.059781476399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"66f59b6d-9d4b-4cef-9ffd-aed019219809","savedPayload":{"position":{"x":18197.644978343116,"y":13462.125315009505},"targetPosition":{"x":18398.997778660316,"y":13239.059781476399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"Begin","code":"record.current.begin","id":"d0c1361d-9b94-4eaf-9b94-b7fe36e11779","savedPayload":{"position":{"x":17612.69006169516,"y":13746.615112193705},"targetPosition":{"x":17686.18227637778,"y":13633.277323166074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"805c77d6-442d-408a-b767-f0bc03b78d68","savedPayload":{"position":{"x":17686.18227637778,"y":13633.277323166074},"targetPosition":{"x":17868.68621590931,"y":13351.947780330196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"b9a17c63-21ea-4295-af8e-e6a3329c2b99","savedPayload":{"position":{"x":17408.268815031122,"y":13449.329723506547},"targetPosition":{"x":17541.53394454785,"y":13421.746497299271},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fc34bcb4-0c85-4aa6-a08a-a78120167ed0","savedPayload":{"position":{"x":17541.53394454785,"y":13421.746497299271},"targetPosition":{"x":17868.68621590931,"y":13351.947780330196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Value","config":"{\n \"codeName\": \"value\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.value","id":"d035de65-da5d-4c9f-bf6f-390de346f264","savedPayload":{"position":{"x":17474.03980507627,"y":13096.385008733812},"targetPosition":{"x":17586.650335631628,"y":13169.121590768646},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2dda380a-bda1-4bc5-9132-86956e080f01","savedPayload":{"position":{"x":17586.650335631628,"y":13169.121590768646},"targetPosition":{"x":17868.68621590931,"y":13351.947780330196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"31966558-4e25-4512-bc6a-1a83d05affac","savedPayload":{"position":{"x":17867.894630549497,"y":13352.073880303331},"targetPosition":{"x":18398.997778660316,"y":13239.059781476399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current // get current candle data\n\n/* Calculate Rate of Change */\nvariable.value = calculateROC(candle.close, variable.length)\n\nvariable.lastCloses.push(candle.close) // Add the current close value to the last closes array.\n\nif (variable.lastCloses.length > variable.length) {\n variable.lastCloses.splice(0, 1) // Remove the first element of the array to keep it at a maximun of n elements.\n}\n\n/* Helper Functions */\n\n/* Calculate Rate of Change */\nfunction calculateROC(source, length) {\n /* Check if we have enough values to make the calculation */\n if (variable.lastCloses.length < length) { return 0 }\n \n /* Check if n-last candle close is zero, avoid division by zero */\n if (variable.lastCloses[0] === 0) { return 0 }\n \n return 100 * (source - variable.lastCloses[0]) / variable.lastCloses[0]\n}","id":"9073d856-36e6-4fbb-86a8-b0244be2ff2a","savedPayload":{"position":{"x":17566.449746753377,"y":13165.12418334502},"targetPosition":{"x":17837.184522707743,"y":13137.150783720674},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8bb88eaa-9d57-470b-8bb4-b443917ce585","savedPayload":{"position":{"x":17837.184522707743,"y":13137.150783720674},"targetPosition":{"x":18106.59630413276,"y":13108.904969869845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.length = 9\nvariable.lastCloses = []","id":"d8f4eb7f-979c-423f-96b4-519046ede40b","savedPayload":{"position":{"x":17684.471436737742,"y":12767.370713626966},"targetPosition":{"x":17896.13679169914,"y":12938.376294583113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ed52861e-b8e3-40fa-88e8-2d7a1fde01d4","savedPayload":{"position":{"x":17896.13679169914,"y":12938.376294583113},"targetPosition":{"x":18106.59630413276,"y":13108.904969869845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a77a13e5-83be-4f7d-803b-6a18e202ae7e","savedPayload":{"position":{"x":18106.59630413276,"y":13108.904969869845},"targetPosition":{"x":18398.997778660316,"y":13239.059781476399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"83bfd082-1c10-4c42-be63-379a2100cc0e","savedPayload":{"position":{"x":18879.89593797149,"y":13148.443360629082},"targetPosition":{"x":19076.668826775607,"y":12777.69068688004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"ROC 9","id":"5ecd7465-9f89-4e20-bea9-2216863e2990"}}}],"id":"aa47dd1b-60cc-4ab1-8cd1-d5f54005e54c","savedPayload":{"position":{"x":19109.62256060589,"y":12834.996898181322},"targetPosition":{"x":18876.639522961566,"y":12431.333069545388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Indicator Bot","name":"Stochastic","config":"{\n\"codeName\": \"Stochastic\",\n\"repo\": \"Stoch-Indicator-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates RSI.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Stoch-14-3-3","id":"2c380e74-2851-45ff-975d-32344bb1ac34","savedPayload":{"position":{"x":18850.844038402716,"y":13845.816669561791},"targetPosition":{"x":18616.297146920613,"y":13655.791584619852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"88b1ff0e-ad99-474c-8833-7b76a5a57ebd"}}}],"outputDatasetFolders":[],"id":"40b215c0-0e30-4315-b501-1335125297ce","savedPayload":{"position":{"x":18616.297146920613,"y":13655.791584619852},"targetPosition":{"x":18326.6535779888,"y":13421.598355457092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","config":"{\"mainUtility\": \"Market Ending Point\"}","id":"5f810842-42b7-47cf-b1c8-cafff231ca57","savedPayload":{"position":{"x":19070.746059666842,"y":11398.905895282},"targetPosition":{"x":19281.775421971743,"y":11659.640552352832},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}},{"type":"Status Dependency","name":"Stochastic Multi-Period-Market","config":"{\"mainUtility\": \"Self Reference\"}","id":"c8f7ce8f-1aee-4433-8395-e4b6c2e24ba7","savedPayload":{"position":{"x":19316.70502122116,"y":11326.030270662532},"targetPosition":{"x":19281.775421971743,"y":11659.640552352832},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"94b42891-942c-4026-aeff-60fd555096f4"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"7d9dc95c-39e1-45a4-b982-3d5bb0994db5","savedPayload":{"position":{"x":19545.141807067947,"y":11446.114582277143},"targetPosition":{"x":19281.775421971743,"y":11659.640552352832},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"dataMineDataDependencies":[],"id":"1262c170-5760-4cb8-8fbc-d8c002bf3a66","savedPayload":{"position":{"x":18461.79698456986,"y":13775.092352171849},"targetPosition":{"x":18326.6535779888,"y":13421.598355457092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"94b42891-942c-4026-aeff-60fd555096f4","savedPayload":{"position":{"x":18267.595715704567,"y":13794.626758819633},"targetPosition":{"x":18326.6535779888,"y":13421.598355457092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"8e13aff4-da04-49bb-81d2-322fd6d0b412","savedPayload":{"position":{"x":18088.675406169965,"y":13715.615254735158},"targetPosition":{"x":18326.6535779888,"y":13421.598355457092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"962fd00f-ab4c-4f0d-af74-a39c6c5a9c38","savedPayload":{"position":{"x":17973.594642271953,"y":13557.106986085999},"targetPosition":{"x":18326.6535779888,"y":13421.598355457092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6a6a6533-21a9-4be9-b2f0-ace1adfe45b8","savedPayload":{"position":{"x":18784.079572674502,"y":13176.773614224885},"targetPosition":{"x":18676.765155024474,"y":12777.592814437801},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Calculates RSI\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily Stoch-14-3-3","id":"d834ef3b-b891-43d0-b5ba-ab072e0fc98b","savedPayload":{"position":{"x":18004.176829829234,"y":13849.679664062029},"targetPosition":{"x":17972.73252923636,"y":13549.991783612186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"4b941e0d-8b0a-41e2-bc20-54e0bc0d936a"}}}],"outputDatasetFolders":[],"id":"3068bb07-0fec-4c91-bfc1-8060bfed5f51","savedPayload":{"position":{"x":17972.73252923636,"y":13549.991783612186},"targetPosition":{"x":17934.01174659362,"y":13180.97318632419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Stochastic Multi-Period-Daily","config":"{\"mainUtility\": \"Self Reference\"}","id":"1cafc2e1-ea17-4b18-bd08-9ce02fd49de3","savedPayload":{"position":{"x":19629.06535956546,"y":11735.70645590455},"targetPosition":{"x":19698.53162123034,"y":12063.888728452937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"494234e3-13b6-4f90-a529-77b23ee55bc8"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","config":"{\"mainUtility\": \"Market Ending Point\"}","id":"31a36ff7-480e-4472-8286-ab91f424d2f2","savedPayload":{"position":{"x":19834.916270780082,"y":11757.679415091143},"targetPosition":{"x":19698.53162123034,"y":12063.888728452937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\"mainUtility\": \"Market Starting Point\"}","id":"bf8a555b-95d9-4a79-8889-4b9e3fe0bc06","savedPayload":{"position":{"x":19988.978051064823,"y":11896.253075803163},"targetPosition":{"x":19698.53162123034,"y":12063.888728452937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"a38119ba-cc6a-4cc8-8138-c9fe971073c0","savedPayload":{"position":{"x":20032.119917789925,"y":12098.808586809844},"targetPosition":{"x":19698.53162123034,"y":12063.888728452937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"dataMineDataDependencies":[],"id":"c9030a10-5dbe-4438-9b47-e3c2e21e9c45","savedPayload":{"position":{"x":17780.786585759455,"y":13524.29676147628},"targetPosition":{"x":17934.01174659362,"y":13180.97318632419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"494234e3-13b6-4f90-a529-77b23ee55bc8","savedPayload":{"position":{"x":17629.132101377345,"y":13402.492094824607},"targetPosition":{"x":17934.01174659362,"y":13180.97318632419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"0141c05e-dd7a-4466-b87c-6f5ff6248096","savedPayload":{"position":{"x":17559.876260714213,"y":13220.523267642347},"targetPosition":{"x":17934.01174659362,"y":13180.97318632419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"e8651790-aada-42d6-85c7-b98b6bd2f7d6","savedPayload":{"position":{"x":17586.355426415023,"y":13046.43923101368},"targetPosition":{"x":17934.01174659362,"y":13180.97318632419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6a39c43d-0ad2-4c98-ae06-6e40f55d1753","savedPayload":{"position":{"x":18470.16068870952,"y":13135.34578952624},"targetPosition":{"x":18676.765155024474,"y":12777.592814437801},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Stoch-14-3-3","config":"{\n \"codeName\": \"Stoch-14-3-3\",\n \"singularVariableName\": \"stoch1433\",\n \"pluralVariableName\": \"stoch1433s\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"88b1ff0e-ad99-474c-8833-7b76a5a57ebd","savedPayload":{"position":{"x":17715.362799060564,"y":13535.36247067419},"targetPosition":{"x":17841.86557042898,"y":13205.428816337679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"4b941e0d-8b0a-41e2-bc20-54e0bc0d936a","savedPayload":{"position":{"x":17545.399691714287,"y":13397.684976254226},"targetPosition":{"x":17841.86557042898,"y":13205.428816337679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"Begin","code":"record.current.begin","id":"f75f0660-8a0c-44cb-bf93-db351ab8d05c","savedPayload":{"position":{"x":16833.660628203244,"y":13580.274136151585},"targetPosition":{"x":16942.329752354115,"y":13445.968000099982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8c35b00f-6b83-47b6-8f23-ecef14656d97","savedPayload":{"position":{"x":16942.329752354115,"y":13445.968000099982},"targetPosition":{"x":17169.417477438717,"y":13165.232793876308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"c7303daa-523a-4153-ae52-a8cac30aa567","savedPayload":{"position":{"x":16654.023222085438,"y":13303.25936750756},"targetPosition":{"x":16820.662424520906,"y":13258.665579642433},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"db80f524-af49-4d39-b4b4-d70d87e47745","savedPayload":{"position":{"x":16820.662424520906,"y":13258.665579642433},"targetPosition":{"x":17169.417477438717,"y":13165.232793876308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fast Line","config":"{\n \"codeName\": \"fastLine\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.fastLine","id":"430718f7-482d-4a44-96ce-a85dd76680b1","savedPayload":{"position":{"x":16664.577788925882,"y":12971.837537808511},"targetPosition":{"x":16826.432230957893,"y":13033.78467225453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a2b00adf-0b72-44cf-82a0-bcd6b95ff7c1","savedPayload":{"position":{"x":16826.432230957893,"y":13033.78467225453},"targetPosition":{"x":17169.417477438717,"y":13165.232793876308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Line","config":"{\n \"codeName\": \"slowLine\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.slowLine","id":"9ad4bcac-98b9-4880-93fe-a6319635384a","savedPayload":{"position":{"x":16860.542294716754,"y":12712.716760475183},"targetPosition":{"x":16973.006152976825,"y":12867.624110275301},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c7620ef0-d47f-4eba-ae08-386c7cae1491","savedPayload":{"position":{"x":16973.006152976825,"y":12867.624110275301},"targetPosition":{"x":17169.417477438717,"y":13165.232793876308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"77ed625d-dbbc-4dc0-a707-de3ca5066341","savedPayload":{"position":{"x":17136.33411336475,"y":13168.637723975211},"targetPosition":{"x":17841.86557042898,"y":13205.428816337679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current // get current candle data\nvariable.lastHighs.push(candle.max) // Add the current high value to the last highs array.\nvariable.lastLows.push(candle.min) // Add the current low value to the last lows array.\n\n/* Remove the first element of the array to keep it at a maximun of n elements */\nif (variable.lastHighs.length > variable.length) {\n variable.lastHighs.splice(0, 1)\n variable.lastLows.splice(0, 1)\n}\n\n/* Calculate Stoch - Signal */\nvariable.signal = calculateStoch(candle.close, variable.length)\n\n\nvariable.lastSignals.push(variable.signal)\n\n/* Remove the first element of the array to keep it at a maximun of n elements */\nif (variable.lastSignals.length > variable.smaFast) {\n variable.lastSignals.splice(0, 1)\n}\n\n/* Calculate Stoch - Fast Line */\nvariable.fastLine = calculateSMA(variable.lastSignals, variable.smaFast)\n\n\nvariable.lastSMAFast.push(variable.fastLine)\n\n/* Remove the first element of the array to keep it at a maximun of n elements */\nif (variable.lastSMAFast.length > variable.smaSlow) {\n variable.lastSMAFast.splice(0, 1)\n}\n\n/* Calculate Stoch - Slow Line */\nvariable.slowLine = calculateSMA(variable.lastSMAFast, variable.smaSlow)\n\n\n/* Helper Functions */\n\n/* Calculate Sochastic Signal */\nfunction calculateStoch(source, length) {\n /* Check if we have enough values to make the calculation */\n if (variable.lastHighs.length < length) { return 0 }\n \n /* Get highest high and lowest low of n-last elements */\n let high = Math.max(...variable.lastHighs)\n let low = Math.min(...variable.lastLows)\n\n /* Check on division by Zero */\n if(high === low) { return 0 }\n \n return 100 * (source - low) / (high - low)\n}\n\n/* Calculate Simple Moving Average */\nfunction calculateSMA(values, length) {\n /* We check we have enough values to make the calculation */\n if (values.length < length) { return 0 } // If we dont, we define the value is zero.\n\n let sum = 0 // Initialize sum variable. \n for (let i = values.length - length; i < values.length; i++) { // Iterate through the last periods\n sum = sum + values[i]\n }\n \n return sum / length\n}","id":"cb01047f-16aa-4507-8e97-a96d7a8bbb75","savedPayload":{"position":{"x":16870.320661644033,"y":12872.903058193695},"targetPosition":{"x":17219.107404440012,"y":12928.084722714058},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2e7b0c32-92cc-4e9e-a130-ae33bc248b40","savedPayload":{"position":{"x":17219.107404440012,"y":12928.084722714058},"targetPosition":{"x":17567.632529211838,"y":12983.34402669353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.length = 14\nvariable.smaFast = 3\nvariable.smaSlow = 3\n\nvariable.signal = 0\nvariable.lastSignals = []\nvariable.lastSMAFast = []\nvariable.lastHighs = []\nvariable.lastLows = []","id":"18cf20b6-0b7b-4520-9cf4-89ee085ab8b9","savedPayload":{"position":{"x":17152.484858644868,"y":12411.942262317445},"targetPosition":{"x":17360.01984943355,"y":12697.557456418921},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bc5124f7-650e-476b-b997-1257e4f89c2f","savedPayload":{"position":{"x":17360.01984943355,"y":12697.557456418921},"targetPosition":{"x":17567.632529211838,"y":12983.34402669353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"169e9a70-4b42-426c-8d9a-b60c41ab7f17","savedPayload":{"position":{"x":17567.632529211838,"y":12983.34402669353},"targetPosition":{"x":17841.86557042898,"y":13205.428816337679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"393dc97b-76ee-409a-9b8f-f264ed652b0b","savedPayload":{"position":{"x":18260.594323336485,"y":12889.044742310707},"targetPosition":{"x":18676.765155024474,"y":12777.592814437801},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Stoch 14-3-3","id":"6a85fbb1-5a99-4ccc-93e8-092f5dbf6c4a"}}}],"id":"87754aba-6878-4841-9688-352e8c565d16","savedPayload":{"position":{"x":18643.632204422534,"y":12835.102668681284},"targetPosition":{"x":18876.639522961566,"y":12431.333069545388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"plotters":[{"type":"Plotter","name":"ATR","config":"{\n\"codeName\": \"Plotter-ATR\"\n}","modules":[{"type":"Plotter Module","name":"ATR - RMA","config":"{\n\t\"codeName\": \"Module-ATR-RMA\",\n\t\"banner\": \"Oscillator\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"Grid","points":[{"type":"Point","name":"Begin 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"a7d2fc22-a7d8-4e61-ab21-f9a39f1d8c60","savedPayload":{"position":{"x":18365.1664892535,"y":13294.211107995805},"targetPosition":{"x":18330.827896916617,"y":13490.395050148758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2b15da18-c6ba-45b4-9c1d-35c84f50ec2c","savedPayload":{"position":{"x":18330.827896916617,"y":13490.395050148758},"targetPosition":{"x":18296.334029359645,"y":13687.090202270685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"95e093d9-e212-4ee4-abc0-6b5deffc8db6","savedPayload":{"position":{"x":18603.21982858512,"y":13430.936676241612},"targetPosition":{"x":18449.80803813718,"y":13558.868718144025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8c0ff77b-ba09-41be-9ff5-cb6d8bae710d","savedPayload":{"position":{"x":18449.80803813718,"y":13558.868718144025},"targetPosition":{"x":18296.334029359645,"y":13687.090202270685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-2 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.atr2","id":"75a4f710-e619-4578-ad51-a01b965800db","savedPayload":{"position":{"x":18697.162103193514,"y":13687.701573070524},"targetPosition":{"x":18496.77427281961,"y":13687.339505078757},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a5d5cdc1-5731-4ec5-b8cd-001e4e62ef54","savedPayload":{"position":{"x":18496.77427281961,"y":13687.339505078757},"targetPosition":{"x":18296.334029359645,"y":13687.090202270685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-2 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.atr2","id":"fcb4421d-ee8a-4a27-8bd2-100cdb0cdbf9","savedPayload":{"position":{"x":18603.32798101745,"y":13945.271498876202},"targetPosition":{"x":18449.879208933526,"y":13816.139657254213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d548a98e-d369-45da-abaf-2e5a758e5379","savedPayload":{"position":{"x":18449.879208933526,"y":13816.139657254213},"targetPosition":{"x":18296.334029359645,"y":13687.090202270685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-3 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.atr3","id":"fb2683a4-a28c-4f2b-9345-93937db60072","savedPayload":{"position":{"x":18365.728445158547,"y":14082.353622536526},"targetPosition":{"x":18331.104289614545,"y":13884.678894822227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"08c720e8-2c9a-435d-baf4-06e38a7c7ce0","savedPayload":{"position":{"x":18331.104289614545,"y":13884.678894822227},"targetPosition":{"x":18296.334029359645,"y":13687.090202270685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-3 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.atr3","id":"bdb5b37c-6890-4186-9877-84c01b1672af","savedPayload":{"position":{"x":18096.155336067073,"y":14034.741121963181},"targetPosition":{"x":18196.34424686941,"y":13860.867162893623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a25effcc-2adc-4fc1-939c-45630c3ccd75","savedPayload":{"position":{"x":18196.34424686941,"y":13860.867162893623},"targetPosition":{"x":18296.334029359645,"y":13687.090202270685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-14 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.atr14","id":"df8f75d2-2e35-4567-a43a-6ef38a1d9b6e","savedPayload":{"position":{"x":17919.88017247672,"y":13824.755394405303},"targetPosition":{"x":18108.229420731488,"y":13755.845901874392},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"87985d52-78d7-4796-9918-81c7a534035d","savedPayload":{"position":{"x":18108.229420731488,"y":13755.845901874392},"targetPosition":{"x":18296.334029359645,"y":13687.090202270685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-14 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.atr14","id":"9f5379b7-8632-4873-8534-a13505a8cd92","savedPayload":{"position":{"x":17920.299031014518,"y":13551.512038463052},"targetPosition":{"x":18108.42226000009,"y":13618.954558593492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"48292688-3718-49fe-9580-97d9ac87fcd4","savedPayload":{"position":{"x":18108.42226000009,"y":13618.954558593492},"targetPosition":{"x":18296.334029359645,"y":13687.090202270685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a1cc0e5a-f1dd-4723-a632-51abeb3f696c","savedPayload":{"position":{"x":18296.334029359645,"y":13687.090202270685},"targetPosition":{"x":17897.77809647619,"y":12996.234797063113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Line 0","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.15,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"4f411d32-d31c-4f70-880d-14400f3f8e20","savedPayload":{"position":{"x":18169.20257289008,"y":13868.233932844762},"targetPosition":{"x":18018.12899830363,"y":13704.532820017313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"18c69ccb-7152-4204-b34e-0d1d92840067","savedPayload":{"position":{"x":18018.12899830363,"y":13704.532820017313},"targetPosition":{"x":17803.77140927641,"y":13490.130822855392},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"End 0","id":"e1973335-e34b-410f-8c60-6e4f77e4f7fc","savedPayload":{"position":{"x":17803.77147274134,"y":13793.12253653917},"targetPosition":{"x":17803.77140927641,"y":13490.130822855392},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 0","id":"8c0ff77b-ba09-41be-9ff5-cb6d8bae710d"}}},{"type":"Polygon Vertex","name":"Begin 0","id":"5cf3f400-725e-4f2f-8fbb-f9d9d75210a9","savedPayload":{"position":{"x":17587.196614543034,"y":13706.895382195766},"targetPosition":{"x":17803.77140927641,"y":13490.130822855392},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 0","id":"2b15da18-c6ba-45b4-9c1d-35c84f50ec2c"}}}],"id":"b24d41f5-7cc8-4b4b-a0a9-b31b5799c74c","savedPayload":{"position":{"x":17897.62179467013,"y":13396.048845939102},"targetPosition":{"x":17897.77809647619,"y":12996.234797063113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"ATR-14 Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"97f64b46-e6ae-4a56-89fe-808c11a09ec4","savedPayload":{"position":{"x":17715.70506238412,"y":13943.079038994856},"targetPosition":{"x":17657.579694205902,"y":13725.582256284597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"fab23f0e-9455-47a4-ba56-17c3ae1f0c7f","savedPayload":{"position":{"x":17657.579694205902,"y":13725.582256284597},"targetPosition":{"x":17578.46478393204,"y":13429.702923531191},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"ATR-14 End","id":"872ffd8b-6c72-42dc-90b4-2c8c73d89173","savedPayload":{"position":{"x":17425.291731685884,"y":13694.941353393006},"targetPosition":{"x":17578.46478393204,"y":13429.702923531191},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-14 End","id":"48292688-3718-49fe-9580-97d9ac87fcd4"}}},{"type":"Polygon Vertex","name":"ATR-14 Begin","id":"76fc0dd8-8e4c-4392-93a7-25c0906e6d90","savedPayload":{"position":{"x":17282.49658883046,"y":13508.986946522635},"targetPosition":{"x":17578.46478393204,"y":13429.702923531191},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-14 Begin","id":"87985d52-78d7-4796-9918-81c7a534035d"}}}],"id":"ecec9e37-265d-4f9e-8e82-68f6333fbbea","savedPayload":{"position":{"x":17697.659130394102,"y":13342.79132216112},"targetPosition":{"x":17897.77809647619,"y":12996.234797063113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"ATR-3 Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"0bf6c9ec-c077-4ec0-aee5-461ca992952f","savedPayload":{"position":{"x":17447.031945741448,"y":13583.185338218904},"targetPosition":{"x":17499.202322643858,"y":13389.708411094725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"e2ed8b31-4016-421b-b4a5-be4a1efe7dce","savedPayload":{"position":{"x":17499.202322643858,"y":13389.708411094725},"targetPosition":{"x":17551.282569512707,"y":13196.23122108648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"ATR-3 Begin","id":"1f566a4a-a727-4315-bf57-98f6bda4f9f9","savedPayload":{"position":{"x":17377.495895991968,"y":13296.40439128693},"targetPosition":{"x":17551.282569512707,"y":13196.23122108648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-3 Begin","id":"08c720e8-2c9a-435d-baf4-06e38a7c7ce0"}}},{"type":"Polygon Vertex","name":"ATR-3 End","id":"e2ebb5ae-1776-4084-b22d-f8bb1f0f9ce2","savedPayload":{"position":{"x":17357.442148812104,"y":13144.77398493514},"targetPosition":{"x":17551.282569512707,"y":13196.23122108648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-3 End","id":"a25effcc-2adc-4fc1-939c-45630c3ccd75"}}}],"id":"faed1922-2c6f-404f-aa89-bd0279d4a7f6","savedPayload":{"position":{"x":17551.282569512707,"y":13196.23122108648},"targetPosition":{"x":17897.77809647619,"y":12996.234797063113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"ATR-2 Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"5cf73947-8357-482f-b35f-8e9b53437b6a","savedPayload":{"position":{"x":16980.181013841222,"y":13413.597727756063},"targetPosition":{"x":17139.45340377757,"y":13254.28607461191},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"4caa937b-ddf0-4ca2-af43-2d464ccad98d","savedPayload":{"position":{"x":17139.45340377757,"y":13254.28607461191},"targetPosition":{"x":17353.629301093646,"y":13040.077803787752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"ATR-2 Begin","id":"c163eb42-687b-4fba-9db6-0084e18e52ce","savedPayload":{"position":{"x":17050.657353601335,"y":13040.110381300823},"targetPosition":{"x":17353.629301093646,"y":13040.077803787752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-2 Begin","id":"a5d5cdc1-5731-4ec5-b8cd-001e4e62ef54"}}},{"type":"Polygon Vertex","name":"ATR-2 End","id":"a44429f7-6721-4619-9419-d14c0a30de19","savedPayload":{"position":{"x":17138.233170019852,"y":12824.686880354306},"targetPosition":{"x":17353.629301093646,"y":13040.077803787752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-2 End","id":"d548a98e-d369-45da-abaf-2e5a758e5379"}}}],"id":"2a6fc3b7-2f9f-4a82-8a96-c05208c308b6","savedPayload":{"position":{"x":17504.149478644245,"y":13001.5276075664},"targetPosition":{"x":17897.77809647619,"y":12996.234797063113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"b5cf58d5-da89-4fff-83cc-000ac1095b32","savedPayload":{"position":{"x":17897.77809647619,"y":12996.234797063113},"targetPosition":{"x":18097.33827011886,"y":12650.34059148171},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"ATR - RMA","config":"{ \n\"codeName\": \"Panel-ATR-RMA\"\n}","panelData":[{"type":"Panel Data","name":"ATR-2","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.atr2","id":"437acbb9-8126-4866-9a59-5624ab0212fa","savedPayload":{"position":{"x":17400.90123731678,"y":12922.000602895401},"targetPosition":{"x":17556.25339979169,"y":12791.343412009779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"08c2e812-c653-45fa-8350-f79c9be57419","savedPayload":{"position":{"x":17556.25339979169,"y":12791.343412009779},"targetPosition":{"x":17697.93834005369,"y":12650.228675374876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"ATR-3","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.atr3","id":"d1bb96e2-10c5-41c8-9599-b1220ca00fae","savedPayload":{"position":{"x":17297.00613507086,"y":12650.105179683724},"targetPosition":{"x":17497.43780916644,"y":12650.189932725036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e940e706-b774-413a-9b2f-24d4f2d3403d","savedPayload":{"position":{"x":17497.43780916644,"y":12650.189932725036},"targetPosition":{"x":17697.93834005369,"y":12650.228675374876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"ATR-14","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.atr14","id":"9d2b2ba5-4b4c-4323-b66f-25d703cd7522","savedPayload":{"position":{"x":17414.545484865655,"y":12367.020404559553},"targetPosition":{"x":17556.22605589632,"y":12508.638103963449},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c4283089-0809-4a02-bb24-fb061af3430a","savedPayload":{"position":{"x":17556.22605589632,"y":12508.638103963449},"targetPosition":{"x":17697.93834005369,"y":12650.228675374876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ea919b0e-a30e-44d7-8d5b-cd83f2c0c3e5","savedPayload":{"position":{"x":17697.93834005369,"y":12650.228675374876},"targetPosition":{"x":18097.33827011886,"y":12650.34059148171},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"99088549-f1c0-4157-ba7e-ffd6dfd0d140","savedPayload":{"position":{"x":18097.33827011886,"y":12650.34059148171},"targetPosition":{"x":18476.763004076147,"y":12431.451501295342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Plotter Module","name":"ATR - SMA","config":"{\n\t\"codeName\": \"Module-ATR-SMA\",\n\t\"banner\": \"Oscillator\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"Grid","points":[{"type":"Point","name":"Begin 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"24c4ad6e-7531-4c02-a4d1-a92fa0c2d0bd","savedPayload":{"position":{"x":17682.415175593782,"y":12692.293134100793},"targetPosition":{"x":17471.06486524202,"y":12769.042365157678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8e1b746f-f708-49a5-9717-eebf4bb6c91a","savedPayload":{"position":{"x":17471.06486524202,"y":12769.042365157678},"targetPosition":{"x":17193.073030293213,"y":12870.107203286787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"96531747-4036-4cf3-91ce-53a592c111db","savedPayload":{"position":{"x":17682.382457356245,"y":13048.1696342317},"targetPosition":{"x":17470.76158136292,"y":12971.233172887845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"51c6cdeb-f974-49f5-a8d6-4a3e4c57539e","savedPayload":{"position":{"x":17470.76158136292,"y":12971.233172887845},"targetPosition":{"x":17193.073030293213,"y":12870.107203286787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-2 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.atr2","id":"a0a91f69-8665-4c10-97ed-b344d46e24e9","savedPayload":{"position":{"x":17453.473755875893,"y":13321.088209094281},"targetPosition":{"x":17340.717281825368,"y":13126.069346031514},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"84bd5028-9dd1-4128-b903-2e8e27afee2c","savedPayload":{"position":{"x":17340.717281825368,"y":13126.069346031514},"targetPosition":{"x":17193.073030293213,"y":12870.107203286787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-2 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.atr2","id":"b79ea353-e9af-486d-bd59-f647c1d34121","savedPayload":{"position":{"x":17102.611301411034,"y":13382.860913387722},"targetPosition":{"x":17141.766147932485,"y":13161.118658176858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ebcf383a-71f7-4caf-8c4b-1334e60dfb49","savedPayload":{"position":{"x":17141.766147932485,"y":13161.118658176858},"targetPosition":{"x":17193.073030293213,"y":12870.107203286787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-3 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.atr3","id":"5e321a40-2362-4534-b465-2a9989aecdf8","savedPayload":{"position":{"x":16794.142959077188,"y":13204.822488698917},"targetPosition":{"x":16966.760836679172,"y":13060.028164512227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"806649c5-aef9-4da4-8c8a-e041bc9e71e2","savedPayload":{"position":{"x":16966.760836679172,"y":13060.028164512227},"targetPosition":{"x":17193.073030293213,"y":12870.107203286787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-3 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.atr3","id":"210cdd54-6060-47ff-be8a-06d80daf1438","savedPayload":{"position":{"x":16642.335398368596,"y":12870.114152415601},"targetPosition":{"x":16872.49555877069,"y":12870.105945114628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e5945b52-ef11-4a12-9503-8c8accbefcc5","savedPayload":{"position":{"x":16872.49555877069,"y":12870.105945114628},"targetPosition":{"x":17193.073030293213,"y":12870.107203286787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-14 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.atr14","id":"37501854-7854-49b5-8ab0-d36febe18a65","savedPayload":{"position":{"x":16793.83868420046,"y":12535.597804511846},"targetPosition":{"x":16966.513151087835,"y":12680.246944348384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"57b4f263-265b-4a4f-9470-6c1503961d61","savedPayload":{"position":{"x":16966.513151087835,"y":12680.246944348384},"targetPosition":{"x":17193.073030293213,"y":12870.107203286787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-14 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.atr14","id":"8395b74a-3ceb-49b7-a2e5-f7b00866bd7b","savedPayload":{"position":{"x":17100.575590924178,"y":12353.433416655234},"targetPosition":{"x":17141.28609343837,"y":12576.436875820915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"79026076-fe40-4641-a1c7-903c20ecff2d","savedPayload":{"position":{"x":17141.28609343837,"y":12576.436875820915},"targetPosition":{"x":17193.073030293213,"y":12870.107203286787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"bfab9870-bf09-49c5-86cd-975ee33e64ca","savedPayload":{"position":{"x":17129.17428221901,"y":12978.418845351887},"targetPosition":{"x":17578.50666204247,"y":12200.174004229772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Line 0","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.15,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"2f3896e2-233c-4413-b989-bb111636a6f1","savedPayload":{"position":{"x":17029.45949459933,"y":12969.401880746553},"targetPosition":{"x":17100.893262761496,"y":12753.470078916724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"9e5ef462-76d3-417a-8e33-9481761ba313","savedPayload":{"position":{"x":17100.893262761496,"y":12753.470078916724},"targetPosition":{"x":17188.796291040704,"y":12425.365950130321},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"End 0","id":"510f0f9c-b8c3-405f-93fa-150f2ba98b44","savedPayload":{"position":{"x":16896.12224284491,"y":12594.234574701604},"targetPosition":{"x":17188.796291040704,"y":12425.365950130321},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 0","id":"51c6cdeb-f974-49f5-a8d6-4a3e4c57539e"}}},{"type":"Polygon Vertex","name":"Begin 0","id":"aac1fbbe-4728-4c97-92ea-7ab4ab1e976a","savedPayload":{"position":{"x":16857.462399080247,"y":12336.762005217415},"targetPosition":{"x":17188.796291040704,"y":12425.365950130321},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 0","id":"8e1b746f-f708-49a5-9717-eebf4bb6c91a"}}}],"id":"dae87eed-2840-45ec-b8fd-97868408e748","savedPayload":{"position":{"x":17188.592817317498,"y":12425.322644003152},"targetPosition":{"x":17578.50666204247,"y":12200.174004229772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"ATR-14 Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"7026f16e-1ad8-4eaa-bbab-ce47b2ad820d","savedPayload":{"position":{"x":16752.542751746627,"y":12575.964852457919},"targetPosition":{"x":16911.731571259916,"y":12416.866264803632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"f8abfda8-11a5-4159-8b25-70b123bb3da8","savedPayload":{"position":{"x":16911.731571259916,"y":12416.866264803632},"targetPosition":{"x":17128.490814308956,"y":12200.19288170574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"ATR-14 End","id":"aa7480fd-e24a-43db-b0b9-96fbbf6a8190","savedPayload":{"position":{"x":16822.076223532462,"y":12200.197329948402},"targetPosition":{"x":17128.490814308956,"y":12200.19288170574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-14 End","id":"79026076-fe40-4641-a1c7-903c20ecff2d"}}},{"type":"Polygon Vertex","name":"ATR-14 Begin","id":"a0c299f5-5134-4d5f-9f32-1589e26f8e94","savedPayload":{"position":{"x":16911.72124660305,"y":11983.67168410116},"targetPosition":{"x":17128.490814308956,"y":12200.19288170574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-14 Begin","id":"57b4f263-265b-4a4f-9470-6c1503961d61"}}}],"id":"60444df5-1f4a-4553-92bb-5af88cc3b422","savedPayload":{"position":{"x":17128.19495096931,"y":12200.169123023723},"targetPosition":{"x":17578.50666204247,"y":12200.174004229772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"ATR-3 Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"0fdd9432-2ce4-4f80-987e-6683bee9b731","savedPayload":{"position":{"x":16672.028039123074,"y":12113.300711827369},"targetPosition":{"x":16889.74209984117,"y":12055.097040472527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"89eab967-e7d1-4bf5-b4d0-3919f59392bb","savedPayload":{"position":{"x":16889.74209984117,"y":12055.097040472527},"targetPosition":{"x":17188.782366757896,"y":11975.13400299072},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"ATR-3 Begin","id":"74dc9232-405c-4361-a9c1-52b0cb48a8ab","savedPayload":{"position":{"x":16922.012264448505,"y":11821.106150194959},"targetPosition":{"x":17188.782366757896,"y":11975.13400299072},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-3 Begin","id":"806649c5-aef9-4da4-8c8a-e041bc9e71e2"}}},{"type":"Polygon Vertex","name":"ATR-3 End","id":"f5142bc0-0a8a-4b51-bb55-37d55d2b07b2","savedPayload":{"position":{"x":17108.65863711013,"y":11676.044568948273},"targetPosition":{"x":17188.782366757896,"y":11975.13400299072},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-3 End","id":"e5945b52-ef11-4a12-9503-8c8accbefcc5"}}}],"id":"61c9a80d-5f39-438c-9c90-9ebb93e3ebf1","savedPayload":{"position":{"x":17188.543937549064,"y":11975.050689415299},"targetPosition":{"x":17578.50666204247,"y":12200.174004229772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"ATR-2 Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"3cd2a5a6-65a3-4459-9b82-9df07a560744","savedPayload":{"position":{"x":16841.983260358866,"y":11673.228429967196},"targetPosition":{"x":17059.45366856224,"y":11731.461447479664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"7e31615a-3abe-4749-be9c-9d4e7d0e8290","savedPayload":{"position":{"x":17059.45366856224,"y":11731.461447479664},"targetPosition":{"x":17353.709920861347,"y":11810.32319693567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"ATR-2 Begin","id":"05f68187-ffcb-4e54-9ff2-c46dc076fded","savedPayload":{"position":{"x":17201.395949984653,"y":11546.407404214147},"targetPosition":{"x":17353.709920861347,"y":11810.32319693567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-2 Begin","id":"84bd5028-9dd1-4128-b903-2e8e27afee2c"}}},{"type":"Polygon Vertex","name":"ATR-2 End","id":"fde40884-dc75-4eb5-b93d-b8ec1d19d93a","savedPayload":{"position":{"x":17432.49197094909,"y":11515.987709906536},"targetPosition":{"x":17353.709920861347,"y":11810.32319693567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-2 End","id":"ebcf383a-71f7-4caf-8c4b-1334e60dfb49"}}}],"id":"ae2cd4db-eebd-4bda-813a-9d9a788f8838","savedPayload":{"position":{"x":17353.47712656675,"y":11810.181627112506},"targetPosition":{"x":17578.50666204247,"y":12200.174004229772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"9a053fa4-ca14-432c-8927-15ef216b2faf","savedPayload":{"position":{"x":17086.30530692973,"y":12114.229229426532},"targetPosition":{"x":17707.30529673078,"y":12114.23056856211},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"ATR - SMA","config":"{ \n\"codeName\": \"Panel-ATR-SMA\"\n}","panelData":[{"type":"Panel Data","name":"ATR-2","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.atr2","id":"71d72170-f480-46e5-9fb7-3f79eef990d6","savedPayload":{"position":{"x":16796.05860861698,"y":11415.733255384872},"targetPosition":{"x":17096.498066138698,"y":11496.172003428761},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"00581f1e-843d-436b-8625-71b0814676f7","savedPayload":{"position":{"x":17096.498066138698,"y":11496.172003428761},"targetPosition":{"x":17396.946430774966,"y":11576.53699229655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"ATR-3","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.atr3","id":"ac407a65-ed19-4863-b039-0e53dcf6744d","savedPayload":{"position":{"x":17086.006673275406,"y":11037.751251341493},"targetPosition":{"x":17241.482504497777,"y":11307.153629479675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bded503d-8475-4b34-886e-ec67a698a06d","savedPayload":{"position":{"x":17241.482504497777,"y":11307.153629479675},"targetPosition":{"x":17396.946430774966,"y":11576.53699229655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"ATR-14","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.atr14","id":"07af6d07-5ef8-4c38-a1c4-5f07355e9274","savedPayload":{"position":{"x":17557.673481927337,"y":10975.68499535168},"targetPosition":{"x":17477.350601807888,"y":11276.124630364451},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0eda57d2-0c10-4511-b3ab-7c6f1c5b953a","savedPayload":{"position":{"x":17477.350601807888,"y":11276.124630364451},"targetPosition":{"x":17396.946430774966,"y":11576.53699229655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d841e272-ce7b-4f3d-9774-545f69e8fc79","savedPayload":{"position":{"x":17396.946430774966,"y":11576.53699229655},"targetPosition":{"x":17707.30529673078,"y":12114.23056856211},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a6a3f5a6-8c33-482d-a922-5719afc35325","savedPayload":{"position":{"x":18097.365350402022,"y":12212.692044612826},"targetPosition":{"x":18476.763004076147,"y":12431.451501295342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"17f8f37a-bf30-4c1d-82f2-f587830576a0","savedPayload":{"position":{"x":18421.553485800432,"y":12431.335106789233},"targetPosition":{"x":18876.639522961566,"y":12431.333069545388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"ROC","config":"{\n\"codeName\": \"Plotter-ROC\"\n}","modules":[{"type":"Plotter Module","name":"ROC 76","config":"{\n\t\"codeName\": \"Module-ROC-76\",\n\t\"banner\": \"Oscillator\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"Grid","points":[{"type":"Point","name":"Begin 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"5b9a08e3-0df5-4f24-9e46-cfd57c00dbda","savedPayload":{"position":{"x":17402.06063105902,"y":11884.365535765039},"targetPosition":{"x":17256.86050108026,"y":11660.554801734756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a39c9f60-84e3-4e05-8ef0-24539ac40325","savedPayload":{"position":{"x":17256.86050108026,"y":11660.554801734756},"targetPosition":{"x":17111.30875851695,"y":11436.517187244659},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"7860512f-766c-4e66-be5f-7702f9c9f047","savedPayload":{"position":{"x":16774.661171309617,"y":11851.731677536245},"targetPosition":{"x":16942.98089408211,"y":11644.079456261825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0fc534f6-3e3f-408a-b25b-f5c973ec0f63","savedPayload":{"position":{"x":16942.98089408211,"y":11644.079456261825},"targetPosition":{"x":17111.30875851695,"y":11436.517187244659},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Value Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.value","id":"721530f2-7ad7-411e-b73a-69d45c002577","savedPayload":{"position":{"x":16612.6184186908,"y":11245.08170339822},"targetPosition":{"x":16862.01447149842,"y":11340.712903313572},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3b4f240c-66f5-4a3f-9527-47ea197ccf47","savedPayload":{"position":{"x":16862.01447149842,"y":11340.712903313572},"targetPosition":{"x":17111.30875851695,"y":11436.517187244659},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Value End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.value","id":"9eee04a2-4bc6-4277-9716-4db129bc6a03","savedPayload":{"position":{"x":17138.597477773117,"y":10902.880911776634},"targetPosition":{"x":17124.999859712334,"y":11169.58139236608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f1de1d87-6d4a-4aea-bf10-74d64ddfb4ed","savedPayload":{"position":{"x":17124.999859712334,"y":11169.58139236608},"targetPosition":{"x":17111.30875851695,"y":11436.517187244659},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e60e3722-01e4-421e-a06f-371bcb71aac4","savedPayload":{"position":{"x":17111.30875851695,"y":11436.517187244659},"targetPosition":{"x":18139.599832550648,"y":11161.23889089255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Line 0","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.15,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"cc082fda-c47e-438f-8157-f2d870c218ac","savedPayload":{"position":{"x":17863.591634760505,"y":14218.69530279828},"targetPosition":{"x":17712.518060174054,"y":14054.994189970832},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"cc2ec800-b3ff-4031-8bdd-688d475b2d5e","savedPayload":{"position":{"x":17712.518060174054,"y":14054.994189970832},"targetPosition":{"x":17498.160471146835,"y":13840.59219280891},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"End 0","id":"511d620d-335d-4b07-b181-ae732630d137","savedPayload":{"position":{"x":17498.160534611765,"y":14143.583906492688},"targetPosition":{"x":17498.160471146835,"y":13840.59219280891},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 0","id":"0fc534f6-3e3f-408a-b25b-f5c973ec0f63"}}},{"type":"Polygon Vertex","name":"Begin 0","id":"ea7d0d25-e182-41a9-9451-99402984c131","savedPayload":{"position":{"x":17281.58567641346,"y":14057.356752149284},"targetPosition":{"x":17498.160471146835,"y":13840.59219280891},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 0","id":"a39c9f60-84e3-4e05-8ef0-24539ac40325"}}}],"id":"526bbff1-0ab2-4b5f-ad73-6886c6ef295c","savedPayload":{"position":{"x":17677.1130007338,"y":10894.21007341197},"targetPosition":{"x":18139.599832550648,"y":11161.23889089255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Value","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"d0fdbc54-377b-4862-b50f-b4a4c97eac09","savedPayload":{"position":{"x":17630.901744823528,"y":10263.270584938304},"targetPosition":{"x":17838.256885339444,"y":10431.083826204936},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"d829f8bb-3737-4cef-ab7a-e92700ca7a6a","savedPayload":{"position":{"x":17838.256885339444,"y":10431.083826204936},"targetPosition":{"x":18083.440633838258,"y":10629.749711030432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Value Begin","id":"29d5faa8-13a8-45a0-ba94-f43c2c200222","savedPayload":{"position":{"x":18050.443243749894,"y":10316.473213453328},"targetPosition":{"x":18083.440633838258,"y":10629.749711030432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Value Begin","id":"3b4f240c-66f5-4a3f-9527-47ea197ccf47"}}},{"type":"Polygon Vertex","name":"Value End","id":"adf14091-c476-40aa-a560-fe8d90b8b8f3","savedPayload":{"position":{"x":18295.322841453723,"y":10367.837877799437},"targetPosition":{"x":18083.440633838258,"y":10629.749711030432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Value End","id":"f1de1d87-6d4a-4aea-bf10-74d64ddfb4ed"}}}],"id":"2e3e77ee-7057-47ca-b0fb-01f483c00949","savedPayload":{"position":{"x":18001.47072826569,"y":10645.276784280544},"targetPosition":{"x":18139.599832550648,"y":11161.23889089255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"ae6b4dd4-c45f-4398-91cf-50cb16a36b42","savedPayload":{"position":{"x":18139.279845986457,"y":11161.290134307634},"targetPosition":{"x":18601.392150728843,"y":11427.93714863309},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"ROC 76","config":"{ \n\"codeName\": \"Panel-ROC-76\"\n}","panelData":[{"type":"Panel Data","name":"Value","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.value","id":"f9921989-1157-49ad-894e-9f4e9d197d46","savedPayload":{"position":{"x":18601.388940378645,"y":10360.793812823535},"targetPosition":{"x":18601.39384193047,"y":10627.699567392896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fcffae02-a826-4058-930a-f1eba1c3c0dc","savedPayload":{"position":{"x":18601.39384193047,"y":10627.699567392896},"targetPosition":{"x":18601.393031401203,"y":10894.583893278375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b44763a3-2604-4204-9275-1c822bf7b85f","savedPayload":{"position":{"x":18601.393031401203,"y":10894.583893278375},"targetPosition":{"x":18601.392150728843,"y":11427.93714863309},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a21bb3ba-b24d-4163-b7d0-ea60220fc368","savedPayload":{"position":{"x":18253.582315983433,"y":11972.241613847995},"targetPosition":{"x":18676.649901835928,"y":12085.266823221684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Plotter Module","name":"ROC 32","config":"{\n\t\"codeName\": \"Module-ROC-32\",\n\t\"banner\": \"Oscillator\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"Grid","points":[{"type":"Point","name":"Begin 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"360c9616-373e-4b79-8623-507a4e126b2d","savedPayload":{"position":{"x":17600.050191106104,"y":11151.590363618157},"targetPosition":{"x":17586.297391346892,"y":10884.855695666405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3830e3a4-e15c-4f83-9530-9d24a940d5a6","savedPayload":{"position":{"x":17586.297391346892,"y":10884.855695666405},"targetPosition":{"x":17572.495107752293,"y":10618.125030147003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"251012cf-5083-4a10-932c-d6ffe369acc2","savedPayload":{"position":{"x":17073.50835432089,"y":10809.388516341247},"targetPosition":{"x":17322.994963282603,"y":10713.75382611708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"050405b7-8bd9-413b-b1cf-3ea9259b6e20","savedPayload":{"position":{"x":17322.994963282603,"y":10713.75382611708},"targetPosition":{"x":17572.495107752293,"y":10618.125030147003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Value Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.value","id":"f5e02d75-2c37-431b-91d2-e4ee89f6b4ca","savedPayload":{"position":{"x":17236.191169899826,"y":10202.824674400666},"targetPosition":{"x":17404.333794307317,"y":10410.470484211477},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f277e303-3eb8-49f8-a70f-36e5fa6acb05","savedPayload":{"position":{"x":17404.333794307317,"y":10410.470484211477},"targetPosition":{"x":17572.495107752293,"y":10618.125030147003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Value End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.value","id":"a551a375-2f95-469d-9748-f5ffa94cb8a2","savedPayload":{"position":{"x":17863.25978115714,"y":10169.938475614177},"targetPosition":{"x":17717.88577141392,"y":10394.05121925873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"010b0145-7fa3-41bd-8d4c-ad221abe3f75","savedPayload":{"position":{"x":17717.88577141392,"y":10394.05121925873},"targetPosition":{"x":17572.495107752293,"y":10618.125030147003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c45748d1-cb04-4a9f-8564-d6489e1ca532","savedPayload":{"position":{"x":17572.495107752293,"y":10618.125030147003},"targetPosition":{"x":18601.76621750996,"y":10893.858720429216},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Line 0","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.15,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"4f8b88e5-1ef4-4094-be2a-c62f3aace8a0","savedPayload":{"position":{"x":16723.848556469755,"y":13319.863250700071},"targetPosition":{"x":16795.28232463192,"y":13103.931448870242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"5ecae3ca-c6ff-4de7-91c8-186c9d242586","savedPayload":{"position":{"x":16795.28232463192,"y":13103.931448870242},"targetPosition":{"x":16883.18535291113,"y":12775.82732008384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"End 0","id":"4d8a5169-ff68-4d76-bdda-70533b12857d","savedPayload":{"position":{"x":16590.511304715335,"y":12944.695944655123},"targetPosition":{"x":16883.18535291113,"y":12775.82732008384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 0","id":"050405b7-8bd9-413b-b1cf-3ea9259b6e20"}}},{"type":"Polygon Vertex","name":"Begin 0","id":"7562f064-db9f-48d1-b085-6b0378a9e230","savedPayload":{"position":{"x":16551.85146095067,"y":12687.223375170934},"targetPosition":{"x":16883.18535291113,"y":12775.82732008384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 0","id":"3830e3a4-e15c-4f83-9530-9d24a940d5a6"}}}],"id":"aadad370-9c78-49cd-8360-c290b42eb47c","savedPayload":{"position":{"x":18334.738046376704,"y":10431.182180224878},"targetPosition":{"x":18601.76621750996,"y":10893.858720429216},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Value Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"54dc15cf-f4b0-4575-92b5-32047ac32fef","savedPayload":{"position":{"x":19664.23668007515,"y":9974.909633344258},"targetPosition":{"x":19620.998975349492,"y":10240.202338744059},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"7b8cb64d-2d91-4aea-9e7d-9d0541095294","savedPayload":{"position":{"x":19620.998975349492,"y":10240.202338744059},"targetPosition":{"x":19568.1275495615,"y":10580.117888838951},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Value Begin","id":"e4131510-0ce7-4fcb-82f9-03582a5c861c","savedPayload":{"position":{"x":19847.492652851703,"y":10376.79105234567},"targetPosition":{"x":19568.1275495615,"y":10580.117888838951},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Value Begin","id":"f277e303-3eb8-49f8-a70f-36e5fa6acb05"}}},{"type":"Polygon Vertex","name":"Value End","id":"8a780be1-a258-4af4-8450-e57384ff7bf0","savedPayload":{"position":{"x":19909.00333977193,"y":10632.70939317035},"targetPosition":{"x":19568.1275495615,"y":10580.117888838951},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Value End","id":"010b0145-7fa3-41bd-8d4c-ad221abe3f75"}}}],"id":"2b87e0ff-d5a1-4b9b-b713-743f46573249","savedPayload":{"position":{"x":18739.945584665544,"y":10377.767756247365},"targetPosition":{"x":18601.76621750996,"y":10893.858720429216},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"66c3abab-2df5-4d90-a119-1a18c24536a5","savedPayload":{"position":{"x":18601.76621750996,"y":10893.858720429216},"targetPosition":{"x":18868.64001773526,"y":11356.193243214339},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"ROC 32","config":"{ \n\"codeName\": \"Panel-ROC-32\"\n}","panelData":[{"type":"Panel Data","name":"Value","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.value","id":"a7d719e2-be07-47cc-a91c-ebdab4dbc814","savedPayload":{"position":{"x":19402.574712292033,"y":10431.038205560872},"targetPosition":{"x":19269.017724038047,"y":10662.447365867727},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0aa50f71-8801-4d7c-b04e-136adbb3592a","savedPayload":{"position":{"x":19269.017724038047,"y":10662.447365867727},"targetPosition":{"x":19135.47871590969,"y":10893.856026298845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4d4fdc48-dca1-47e8-8f2e-e595adf26c0e","savedPayload":{"position":{"x":19135.47871590969,"y":10893.856026298845},"targetPosition":{"x":18868.64001773526,"y":11356.193243214339},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7812b3a3-8375-4f0d-9671-acc05b256d74","savedPayload":{"position":{"x":18457.36813448796,"y":11706.357350122516},"targetPosition":{"x":18676.649901835928,"y":12085.266823221684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Plotter Module","name":"ROC 9","config":"{\n\t\"codeName\": \"Module-ROC-9\",\n\t\"banner\": \"Oscillator\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"Grid","points":[{"type":"Point","name":"Begin 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"d30a2a69-8977-4528-aac6-abebe3aad8b1","savedPayload":{"position":{"x":17911.38008958264,"y":11268.393442175937},"targetPosition":{"x":17953.181382976763,"y":11073.119219976192},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"44d4ab03-4306-43f7-8c94-08976c57625a","savedPayload":{"position":{"x":17953.181382976763,"y":11073.119219976192},"targetPosition":{"x":17994.859274447834,"y":10877.91344823762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"c9bcf00d-9a15-4444-94f3-bf493cacdc4e","savedPayload":{"position":{"x":17596.724795093185,"y":10918.918608660046},"targetPosition":{"x":17795.82357664093,"y":10898.405618323304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5a0efe28-4669-4f77-af30-322b9c8fad72","savedPayload":{"position":{"x":17795.82357664093,"y":10898.405618323304},"targetPosition":{"x":17994.859274447834,"y":10877.91344823762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Value Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.value","id":"388b4734-3b11-4b4c-9fca-0ea51581be66","savedPayload":{"position":{"x":17832.03103790248,"y":10511.992486096846},"targetPosition":{"x":17913.443077654145,"y":10694.995022672932},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"473c0f5f-22eb-4212-bd6f-3e7b4b81e563","savedPayload":{"position":{"x":17913.443077654145,"y":10694.995022672932},"targetPosition":{"x":17994.859274447834,"y":10877.91344823762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Value End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.value","id":"bc667db2-4e37-427b-a581-e3f29086f305","savedPayload":{"position":{"x":18291.423750239588,"y":10609.68361988907},"targetPosition":{"x":18143.120383954552,"y":10743.897851278982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"79ce261d-2055-4a8a-9604-41b37653759a","savedPayload":{"position":{"x":18143.120383954552,"y":10743.897851278982},"targetPosition":{"x":17994.859274447834,"y":10877.91344823762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cc49ad50-0be2-43c9-8f4a-ccccea8dc087","savedPayload":{"position":{"x":17994.859274447834,"y":10877.91344823762},"targetPosition":{"x":18685.539591915072,"y":11276.513089164218},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Line 0","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.15,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"28729ed0-43c3-4adb-8dd6-a708dda9d798","savedPayload":{"position":{"x":17337.83900699323,"y":15910.091223710579},"targetPosition":{"x":17186.765432406777,"y":15746.39011088313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"7c568a67-a0af-49ed-bae4-71e9fb835dcc","savedPayload":{"position":{"x":17186.765432406777,"y":15746.39011088313},"targetPosition":{"x":16972.40784337956,"y":15531.988113721209},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"End 0","id":"f13ef470-67b1-4ea9-b5f9-d1323b9e5921","savedPayload":{"position":{"x":16972.407906844488,"y":15834.979827404986},"targetPosition":{"x":16972.40784337956,"y":15531.988113721209},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 0","id":"5a0efe28-4669-4f77-af30-322b9c8fad72"}}},{"type":"Polygon Vertex","name":"Begin 0","id":"382b90b0-c454-438c-8342-f625c475b183","savedPayload":{"position":{"x":16755.833048646182,"y":15748.752673061583},"targetPosition":{"x":16972.40784337956,"y":15531.988113721209},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 0","id":"44d4ab03-4306-43f7-8c94-08976c57625a"}}}],"id":"79c02166-9fb5-41f8-9a93-c86f198d046d","savedPayload":{"position":{"x":18581.74149723641,"y":10890.108133188045},"targetPosition":{"x":18685.539591915072,"y":11276.513089164218},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Value","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"6475bd9e-d457-4fa6-a0e2-6bab43c1b900","savedPayload":{"position":{"x":17105.14911705625,"y":11954.666505850602},"targetPosition":{"x":17312.504257572167,"y":12122.479747117235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"3dbc0e73-14ef-4ffc-8284-f16c461778f3","savedPayload":{"position":{"x":17312.504257572167,"y":12122.479747117235},"targetPosition":{"x":17557.68800607098,"y":12321.14563194273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Value Begin","id":"a2794b60-36b4-4896-899b-20f60c519042","savedPayload":{"position":{"x":17524.690615982618,"y":12007.869134365626},"targetPosition":{"x":17557.68800607098,"y":12321.14563194273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Value Begin","id":"473c0f5f-22eb-4212-bd6f-3e7b4b81e563"}}},{"type":"Polygon Vertex","name":"Value End","id":"759aba24-d4ed-4266-a9c4-9ea04a19f8f7","savedPayload":{"position":{"x":17769.570213686446,"y":12059.233798711735},"targetPosition":{"x":17557.68800607098,"y":12321.14563194273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Value End","id":"79ce261d-2055-4a8a-9604-41b37653759a"}}}],"id":"5ee0dccd-325b-410f-b069-f0f3e3881447","savedPayload":{"position":{"x":18884.10449626965,"y":10929.19461644008},"targetPosition":{"x":18685.539591915072,"y":11276.513089164218},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"05a0cab0-cf12-4ee7-92a8-76fe96e42805","savedPayload":{"position":{"x":18685.539591915072,"y":11276.513089164218},"targetPosition":{"x":18789.576352199732,"y":11662.186050539307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"ROC 9","config":"{ \n\"codeName\": \"Panel-ROC-9\"\n}","panelData":[{"type":"Panel Data","name":"Value","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.value","id":"488e613d-484a-4750-8b22-a20f0434d1ea","savedPayload":{"position":{"x":19354.073228000252,"y":11098.745731117371},"targetPosition":{"x":19212.7436540789,"y":11239.676697553426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"521fa5b1-2419-4550-b8fb-ef2dcc284693","savedPayload":{"position":{"x":19212.7436540789,"y":11239.676697553426},"targetPosition":{"x":19071.408999653133,"y":11380.402601573975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a1be3230-a9a3-4d36-95d0-f6ba0ddcd5e5","savedPayload":{"position":{"x":19071.408999653133,"y":11380.402601573975},"targetPosition":{"x":18789.576352199732,"y":11662.186050539307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5ecd7465-9f89-4e20-bea9-2216863e2990","savedPayload":{"position":{"x":18789.576352199732,"y":11662.186050539307},"targetPosition":{"x":18676.649901835928,"y":12085.266823221684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"85e9a7d0-c411-4fac-9297-95d71a9ae363","savedPayload":{"position":{"x":18649.132241768082,"y":12037.25826182755},"targetPosition":{"x":18876.639522961566,"y":12431.333069545388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"Stochastic","config":"{\n\"codeName\": \"Plotter-Stoch\"\n}","modules":[{"type":"Plotter Module","name":"Stoch 14-3-3","config":"{\n\t\"codeName\": \"Module-Stoch-14-3-3\",\n \"icon\": \"Oscillator\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Slow Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.slowLine","id":"55d7707a-30e2-4879-8be5-ca7ecd2f3873","savedPayload":{"position":{"x":19211.70772996421,"y":10891.340773170297},"targetPosition":{"x":19070.294453855393,"y":11052.95088622906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"bc0a51ed-fc21-4517-80a9-742f8a28ede7","savedPayload":{"position":{"x":19070.294453855393,"y":11052.95088622906},"targetPosition":{"x":18784.96699212777,"y":11374.72122640322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Slow Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.slowLine","id":"bacc0912-cfd8-4cf1-91b7-9754df472dae","savedPayload":{"position":{"x":19345.63224714163,"y":11055.27062305377},"targetPosition":{"x":19157.95033815023,"y":11162.796286502615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d97911db-336c-414a-b163-69cb135de17b","savedPayload":{"position":{"x":19157.95033815023,"y":11162.796286502615},"targetPosition":{"x":18784.96699212777,"y":11374.72122640322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Fast Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.fastLine","id":"17a984a0-223a-4e41-87b5-1cbe8ff2e51d","savedPayload":{"position":{"x":19420.600515167174,"y":11255.967019605427},"targetPosition":{"x":19208.67823591708,"y":11295.365608723654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"97e0ce46-a22d-49ce-bf5c-bb50ec060d86","savedPayload":{"position":{"x":19208.67823591708,"y":11295.365608723654},"targetPosition":{"x":18784.96699212777,"y":11374.72122640322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Fast Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.fastLine","id":"013e38de-657d-461b-8b9b-beee034d1a28","savedPayload":{"position":{"x":19400.951024255537,"y":11507.385031587628},"targetPosition":{"x":19209.881335563496,"y":11436.333380542344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"5b1e120b-33fa-434a-9913-135f3f94edad","savedPayload":{"position":{"x":19209.881335563496,"y":11436.333380542344},"targetPosition":{"x":18784.96699212777,"y":11374.72122640322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"a6b82c72-273b-4bb0-a20f-672e868a8bc4","savedPayload":{"position":{"x":19359.37704013541,"y":11669.461169071748},"targetPosition":{"x":19168.07515577478,"y":11571.813484911403},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e894f129-e11d-4ec6-8d76-50d39dab5dd5","savedPayload":{"position":{"x":19168.07515577478,"y":11571.813484911403},"targetPosition":{"x":18784.96699212777,"y":11374.72122640322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"ed878528-be4d-4b54-b05c-14be099d2e0a","savedPayload":{"position":{"x":19237.755727884596,"y":11831.917636680442},"targetPosition":{"x":19082.93160344607,"y":11684.683133535378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"93278c60-4529-454e-989f-771ce3beb3c1","savedPayload":{"position":{"x":19082.93160344607,"y":11684.683133535378},"targetPosition":{"x":18784.96699212777,"y":11374.72122640322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 20","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 20","id":"4c062900-b756-40f7-8538-dabb9ae12c16","savedPayload":{"position":{"x":19056.53343774804,"y":11958.746489772924},"targetPosition":{"x":18965.804576657647,"y":11763.79335185824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"59d32253-47b9-4227-bc5b-e2f1d5416844","savedPayload":{"position":{"x":18965.804576657647,"y":11763.79335185824},"targetPosition":{"x":18784.96699212777,"y":11374.72122640322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 20","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 20","id":"3a560a43-44d0-4d9e-b897-465c472fa9ea","savedPayload":{"position":{"x":18851.75327353808,"y":12018.556331680727},"targetPosition":{"x":18830.040498666327,"y":11803.344269282537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ce6a0861-712e-4cf4-81e9-92ab6c8a5f4d","savedPayload":{"position":{"x":18830.040498666327,"y":11803.344269282537},"targetPosition":{"x":18784.96699212777,"y":11374.72122640322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 30","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 30","id":"a492b3aa-e876-4762-a297-e3fd36964bb8","savedPayload":{"position":{"x":18642.494352915477,"y":12005.585559063424},"targetPosition":{"x":18689.051691860823,"y":11792.51342385793},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3ea0b783-3d43-47d1-90aa-99366cd09a7d","savedPayload":{"position":{"x":18689.051691860823,"y":11792.51342385793},"targetPosition":{"x":18784.96699212777,"y":11374.72122640322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 30","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 30","id":"45566c80-77fd-4246-8fc3-50692ff479a2","savedPayload":{"position":{"x":18443.894971225,"y":11921.418823360818},"targetPosition":{"x":18557.21333316469,"y":11739.3392806544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"4e7322f7-3bfa-41cc-b9a0-c5dcbe16e83e","savedPayload":{"position":{"x":18557.21333316469,"y":11739.3392806544},"targetPosition":{"x":18784.96699212777,"y":11374.72122640322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 70","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 70","id":"c982c6b7-9b74-4b02-a2b8-8c6fb6df231e","savedPayload":{"position":{"x":18283.035619758433,"y":11780.311263928159},"targetPosition":{"x":18450.319785118503,"y":11646.009729964928},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"4f226496-b6a0-436d-97c5-d6e61dd00c23","savedPayload":{"position":{"x":18450.319785118503,"y":11646.009729964928},"targetPosition":{"x":18784.96699212777,"y":11374.72122640322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 70","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 70","id":"a66f14af-1cd6-4b48-979c-13bd4171828c","savedPayload":{"position":{"x":18177.96211712606,"y":11596.988229279023},"targetPosition":{"x":18381.915914581765,"y":11522.116800931843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"22287519-c930-4dfb-bb4a-298da4e32cdf","savedPayload":{"position":{"x":18381.915914581765,"y":11522.116800931843},"targetPosition":{"x":18784.96699212777,"y":11374.72122640322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 80","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 80","id":"742160f2-7cd8-4565-9536-5c0dca39a3e9","savedPayload":{"position":{"x":18139.54319478825,"y":11386.069562609697},"targetPosition":{"x":18354.193591870964,"y":11382.06153056554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fb48eeab-d538-4fc5-81fe-dd916f749477","savedPayload":{"position":{"x":18354.193591870964,"y":11382.06153056554},"targetPosition":{"x":18784.96699212777,"y":11374.72122640322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 80","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 80","id":"9057daf5-069d-4489-aaf5-dd803f642a86","savedPayload":{"position":{"x":18169.363472138466,"y":11179.98546625783},"targetPosition":{"x":18374.604649007666,"y":11244.679991904168},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"9a3c052a-a6b6-4392-b2fd-54151febb8f5","savedPayload":{"position":{"x":18374.604649007666,"y":11244.679991904168},"targetPosition":{"x":18784.96699212777,"y":11374.72122640322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 100","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 100","id":"2e17f6ae-23e6-4411-a0a5-69be7d7d3232","savedPayload":{"position":{"x":18266.6925844321,"y":10988.206846272426},"targetPosition":{"x":18438.594936648904,"y":11118.215310628302},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f3e69d47-f137-412e-a515-7dc262af7f8b","savedPayload":{"position":{"x":18438.594936648904,"y":11118.215310628302},"targetPosition":{"x":18784.96699212777,"y":11374.72122640322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 100","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 100","id":"a7a616cf-f882-4088-b1d0-eb4fdb4ffd11","savedPayload":{"position":{"x":18420.19247695232,"y":10839.178705615726},"targetPosition":{"x":18542.285586898797,"y":11018.386577989255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"29103f63-7cd6-4005-bec7-a385cf373eaf","savedPayload":{"position":{"x":18542.285586898797,"y":11018.386577989255},"targetPosition":{"x":18784.96699212777,"y":11374.72122640322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 50","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 50","id":"8b212cf0-fab5-45dd-b645-0f4e79656653","savedPayload":{"position":{"x":18613.639127939165,"y":10751.16096477049},"targetPosition":{"x":18670.789687509077,"y":10959.553687249934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"99b1d6a8-0904-43ff-b209-c7c6868181b5","savedPayload":{"position":{"x":18670.789687509077,"y":10959.553687249934},"targetPosition":{"x":18784.96699212777,"y":11374.72122640322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 50","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 50","id":"864cc94d-3947-45bd-8a85-a19d06609b9a","savedPayload":{"position":{"x":18824.364793742505,"y":10728.322338121208},"targetPosition":{"x":18812.034733651788,"y":10944.344335502165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"84db0a13-44f1-4953-ab27-d7425ab1ee6b","savedPayload":{"position":{"x":18812.034733651788,"y":10944.344335502165},"targetPosition":{"x":18784.96699212777,"y":11374.72122640322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8ac3440e-1b64-4a12-8c31-38783846da01","savedPayload":{"position":{"x":18784.96699212777,"y":11374.72122640322},"targetPosition":{"x":19295.731931919814,"y":11307.295571575507},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Slow Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"d89f9f7e-12c9-4883-a753-41cf0e061dde","savedPayload":{"position":{"x":19593.177827769643,"y":9632.881686013821},"targetPosition":{"x":19616.217020777553,"y":9926.946772923098},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"7ef54320-7e6d-4e77-9345-9f4e5742a18e","savedPayload":{"position":{"x":19616.217020777553,"y":9926.946772923098},"targetPosition":{"x":19641.829431028516,"y":10250.78030344025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Slow Line End","id":"f093f915-dc4b-4ba3-bc51-57e593a3025a","savedPayload":{"position":{"x":19742.033656227148,"y":9942.211730017547},"targetPosition":{"x":19641.829431028516,"y":10250.78030344025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Slow Line End","id":"d97911db-336c-414a-b163-69cb135de17b"}}},{"type":"Polygon Vertex","name":"Slow Line Begin","id":"a2116df6-c3ec-4017-a51d-ae12cc47e021","savedPayload":{"position":{"x":19853.65851976569,"y":10002.962550223081},"targetPosition":{"x":19641.829431028516,"y":10250.78030344025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Slow Line Begin","id":"bc0a51ed-fc21-4517-80a9-742f8a28ede7"}}}],"id":"c28b1cfd-4cf5-4382-8bce-45930b5e8a15","savedPayload":{"position":{"x":18913.28914717888,"y":11177.452357714023},"targetPosition":{"x":19295.731931919814,"y":11307.295571575507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Fast Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"a5147142-56f2-4fd8-a06e-449cfb1a997d","savedPayload":{"position":{"x":18336.67688431759,"y":10365.406597858622},"targetPosition":{"x":18626.4839262722,"y":10424.109978107394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"b7bec76c-a5d6-4b78-a0f5-8315ca1c0dba","savedPayload":{"position":{"x":18626.4839262722,"y":10424.109978107394},"targetPosition":{"x":18951.43590525981,"y":10488.814561305986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Fast Line End","id":"88ffc758-994a-4385-a9d6-c28361403f5a","savedPayload":{"position":{"x":18676.1702312484,"y":10304.753643881455},"targetPosition":{"x":18951.43590525981,"y":10488.814561305986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Fast Line End","id":"5b1e120b-33fa-434a-9913-135f3f94edad"}}},{"type":"Polygon Vertex","name":"Fast Line Begin","id":"3a43f15c-ff64-4415-bee8-f458601a3e96","savedPayload":{"position":{"x":18768.077836025142,"y":10213.09812432243},"targetPosition":{"x":18951.43590525981,"y":10488.814561305986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Fast Line Begin","id":"97e0ce46-a22d-49ce-bf5c-bb50ec060d86"}}}],"id":"53d89dd3-df4f-4001-a9cc-a9fa5c7808d4","savedPayload":{"position":{"x":18947.6560621906,"y":11089.009862817702},"targetPosition":{"x":19295.731931919814,"y":11307.295571575507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 0","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"258f1f9e-4410-4a64-9cd6-e445d4444ba7","savedPayload":{"position":{"x":18414.040996892,"y":10049.296647190567},"targetPosition":{"x":18680.654688898638,"y":10176.442904091939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"805ec3ae-e0ec-42ba-ba1c-617d5fe24e09","savedPayload":{"position":{"x":18680.654688898638,"y":10176.442904091939},"targetPosition":{"x":19000.933675139804,"y":10328.998686243876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 0","id":"379a9e22-27fa-4f50-900a-0730cbe0b3d3","savedPayload":{"position":{"x":18763.62667013396,"y":10065.370658427086},"targetPosition":{"x":19000.933675139804,"y":10328.998686243876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 0","id":"e894f129-e11d-4ec6-8d76-50d39dab5dd5"}}},{"type":"Polygon Vertex","name":"End 0","id":"0ff4fba2-0167-41df-99e5-542a673adf30","savedPayload":{"position":{"x":18882.69127936664,"y":9994.648859812203},"targetPosition":{"x":19000.933675139804,"y":10328.998686243876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 0","id":"93278c60-4529-454e-989f-771ce3beb3c1"}}}],"id":"e8f5af9d-ba4b-4482-aca7-295b92f60f17","savedPayload":{"position":{"x":19002.58600117918,"y":11021.55423804162},"targetPosition":{"x":19295.731931919814,"y":11307.295571575507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"1172daa1-fe47-4069-818e-50a800f539ef","savedPayload":{"position":{"x":18604.356385543502,"y":9974.320632250998},"targetPosition":{"x":18850.326090992232,"y":10138.674031674953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"1efe1989-3881-41f4-af21-bf32d3fdc64a","savedPayload":{"position":{"x":18850.326090992232,"y":10138.674031674953},"targetPosition":{"x":19126.050062755392,"y":10322.63721812444},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 20","id":"0617cdf2-2290-4f79-b132-ce46e33f3eb8","savedPayload":{"position":{"x":18941.757573152245,"y":10046.706972193078},"targetPosition":{"x":19126.050062755392,"y":10322.63721812444},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 20","id":"59d32253-47b9-4227-bc5b-e2f1d5416844"}}},{"type":"Polygon Vertex","name":"End 20","id":"cbc04d73-2faf-4808-b1ef-43aa2d1cf509","savedPayload":{"position":{"x":19061.62862552123,"y":9997.28852335796},"targetPosition":{"x":19126.050062755392,"y":10322.63721812444},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 20","id":"ce6a0861-712e-4cf4-81e9-92ab6c8a5f4d"}}}],"id":"3d7a22fa-7a63-4cea-8ce7-d3358bd79ac8","savedPayload":{"position":{"x":19065.693042834664,"y":10965.170358790881},"targetPosition":{"x":19295.731931919814,"y":11307.295571575507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 30","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.15,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"c10e1ba8-3255-4eab-8d43-83315dca23e1","savedPayload":{"position":{"x":18791.249287301325,"y":9822.293660020887},"targetPosition":{"x":19000.628564037324,"y":10031.683680668362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"c4dbb4e0-6e92-4304-bba1-76013eb739d4","savedPayload":{"position":{"x":19000.628564037324,"y":10031.683680668362},"targetPosition":{"x":19233.669004051742,"y":10264.465605572439},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 30","id":"1bb29f63-48b2-405c-8b76-5b42be6c1e3f","savedPayload":{"position":{"x":19105.625052973348,"y":9954.898095296743},"targetPosition":{"x":19233.669004051742,"y":10264.465605572439},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 30","id":"3ea0b783-3d43-47d1-90aa-99366cd09a7d"}}},{"type":"Polygon Vertex","name":"End 30","id":"86cc6fd9-ca44-42ff-817c-c33d9a4a4558","savedPayload":{"position":{"x":19233.703448312528,"y":9932.930098376395},"targetPosition":{"x":19233.669004051742,"y":10264.465605572439},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 30","id":"4e7322f7-3bfa-41cc-b9a0-c5dcbe16e83e"}}}],"id":"49ef61a8-1381-45f0-b7d4-0a95ed9d7e60","savedPayload":{"position":{"x":19139.179096485703,"y":10929.986184700985},"targetPosition":{"x":19295.731931919814,"y":11307.295571575507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 50","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"f18a4f3f-1b4a-4816-9c76-9b6171a6c886","savedPayload":{"position":{"x":19035.982902590287,"y":9704.10277232897},"targetPosition":{"x":19177.82300252629,"y":9965.497110141489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"bdcda8bd-a2a3-4dae-8774-7fe7a1bd8df9","savedPayload":{"position":{"x":19177.82300252629,"y":9965.497110141489},"targetPosition":{"x":19332.369691625325,"y":10250.264709895495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 50","id":"155ecca7-3c3a-40b0-98e0-c4cc97021ba2","savedPayload":{"position":{"x":19297.755576129242,"y":9925.106451332927},"targetPosition":{"x":19332.369691625325,"y":10250.264709895495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 50","id":"99b1d6a8-0904-43ff-b209-c7c6868181b5"}}},{"type":"Polygon Vertex","name":"End 50","id":"3f22cf14-5acc-4f4d-b19a-108f02fa2e53","savedPayload":{"position":{"x":19424.148820510418,"y":9936.045697049058},"targetPosition":{"x":19332.369691625325,"y":10250.264709895495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 50","id":"84db0a13-44f1-4953-ab27-d7425ab1ee6b"}}}],"id":"eb850831-fe4c-4fda-9294-df765f377e3e","savedPayload":{"position":{"x":19216.786562364752,"y":10899.228448163802},"targetPosition":{"x":19295.731931919814,"y":11307.295571575507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 70","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.15,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"871bf7be-3e85-43f3-9537-fae86fe3f821","savedPayload":{"position":{"x":19223.68792229862,"y":9643.248687229312},"targetPosition":{"x":19336.682495137753,"y":9916.204368726818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"692686f4-d4a0-4fd3-b9ac-32ced49b8633","savedPayload":{"position":{"x":19336.682495137753,"y":9916.204368726818},"targetPosition":{"x":19462.48733772469,"y":10219.608205145338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 70","id":"4742a27b-2eb2-4a18-835e-6fbefb47bdcd","savedPayload":{"position":{"x":19462.489270458926,"y":9889.488563562862},"targetPosition":{"x":19462.48733772469,"y":10219.608205145338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 70","id":"4f226496-b6a0-436d-97c5-d6e61dd00c23"}}},{"type":"Polygon Vertex","name":"End 70","id":"57aca36d-e53c-428f-a961-00f95c636a8c","savedPayload":{"position":{"x":19588.917275035805,"y":9914.680482034724},"targetPosition":{"x":19462.48733772469,"y":10219.608205145338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 70","id":"22287519-c930-4dfb-bb4a-298da4e32cdf"}}}],"id":"cd93957c-2562-4f27-b3c3-4278231b1241","savedPayload":{"position":{"x":19295.518319925428,"y":10905.777633917702},"targetPosition":{"x":19295.731931919814,"y":11307.295571575507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 80","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"0a960c41-faa4-4456-8d7c-91215785612f","savedPayload":{"position":{"x":19359.697978341093,"y":9691.962036912388},"targetPosition":{"x":19493.49556267628,"y":9954.912001457145},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"d4446b75-1844-4114-9faf-ae3b5641e43d","savedPayload":{"position":{"x":19493.49556267628,"y":9954.912001457145},"targetPosition":{"x":19643.75693574602,"y":10250.584271025575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 80","id":"7b104c6b-0b09-4efe-9af7-21e18088158a","savedPayload":{"position":{"x":19746.64454962103,"y":9933.807824855396},"targetPosition":{"x":19643.75693574602,"y":10250.584271025575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 80","id":"fb48eeab-d538-4fc5-81fe-dd916f749477"}}},{"type":"Polygon Vertex","name":"End 80","id":"4bf87284-559e-4154-93f5-988ea7755e80","savedPayload":{"position":{"x":19939.126258735923,"y":10099.882501803992},"targetPosition":{"x":19643.75693574602,"y":10250.584271025575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 80","id":"9a3c052a-a6b6-4392-b2fd-54151febb8f5"}}}],"id":"a25d52fa-a178-4454-8ebc-500572b38d04","savedPayload":{"position":{"x":19385.905061252513,"y":10888.569470247909},"targetPosition":{"x":19295.731931919814,"y":11307.295571575507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 100","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"a169ba02-78c5-49d9-b212-236fb5e48bad","savedPayload":{"position":{"x":20386.0792119928,"y":10186.151828188044},"targetPosition":{"x":20221.527031901194,"y":10432.195358271658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"b71ce594-e5f7-48f0-94a3-8f44ac26c01c","savedPayload":{"position":{"x":20221.527031901194,"y":10432.195358271658},"targetPosition":{"x":20040.125852749123,"y":10703.108850078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 100","id":"6b947ced-abe6-41e4-8e11-a8777d52a977","savedPayload":{"position":{"x":20362.007443540504,"y":10639.301862812645},"targetPosition":{"x":20040.125852749123,"y":10703.108850078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 100","id":"f3e69d47-f137-412e-a515-7dc262af7f8b"}}},{"type":"Polygon Vertex","name":"End 100","id":"9ff21949-3190-45a4-8b36-e6d8f291ea7f","savedPayload":{"position":{"x":20313.00719181154,"y":10885.349657516887},"targetPosition":{"x":20040.125852749123,"y":10703.108850078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 100","id":"29103f63-7cd6-4005-bec7-a385cf373eaf"}}}],"id":"a4dacfad-5901-4ba9-a728-132f0d452680","savedPayload":{"position":{"x":19439.08052120228,"y":10959.798903196033},"targetPosition":{"x":19295.731931919814,"y":11307.295571575507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Box 0-20","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.25,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.35,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"e740b91d-1364-49ea-9878-df9cddbfc805","savedPayload":{"position":{"x":19513.29034885955,"y":9764.611262597064},"targetPosition":{"x":19643.39147634371,"y":10029.06698514852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6c079371-854a-41cb-82cb-3066463c51c5","savedPayload":{"position":{"x":19643.39147634371,"y":10029.06698514852},"targetPosition":{"x":19786.734435974515,"y":10320.98323492851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 0","id":"fbfe5ddc-2890-4be2-9c46-446bbb49cde0","savedPayload":{"position":{"x":19808.169873824234,"y":9996.659449090474},"targetPosition":{"x":19786.734435974515,"y":10320.98323492851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 0","id":"e894f129-e11d-4ec6-8d76-50d39dab5dd5"}}},{"type":"Polygon Vertex","name":"End 0","id":"007fe5a0-0fac-4958-8c95-aba6e504e4d5","savedPayload":{"position":{"x":19967.355407189385,"y":10050.759303300782},"targetPosition":{"x":19786.734435974515,"y":10320.98323492851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 0","id":"93278c60-4529-454e-989f-771ce3beb3c1"}}},{"type":"Polygon Vertex","name":"End 20","id":"3d285cd7-11f6-4e20-969b-eec492cab81e","savedPayload":{"position":{"x":20078.317838509054,"y":10177.258948552626},"targetPosition":{"x":19786.734435974515,"y":10320.98323492851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 20","id":"ce6a0861-712e-4cf4-81e9-92ab6c8a5f4d"}}},{"type":"Polygon Vertex","name":"Begin 20","id":"779ba063-a7c9-4fa8-bb93-a64917dacbd4","savedPayload":{"position":{"x":20113.012946294693,"y":10342.118218640959},"targetPosition":{"x":19786.734435974515,"y":10320.98323492851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 20","id":"59d32253-47b9-4227-bc5b-e2f1d5416844"}}}],"id":"518be834-5410-4eee-afc5-369ec833199c","savedPayload":{"position":{"x":19558.466882732122,"y":10940.200456973755},"targetPosition":{"x":19295.731931919814,"y":11307.295571575507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Box 20-30","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.15,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"42dcb813-82a7-439d-96db-e1838746a098","savedPayload":{"position":{"x":19755.496050626316,"y":9938.544822229622},"targetPosition":{"x":19793.472987185327,"y":10081.72536159024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"057fa196-0288-45ff-ba35-62465f6ea603","savedPayload":{"position":{"x":19793.472987185327,"y":10081.72536159024},"targetPosition":{"x":19877.013336329765,"y":10395.571347744622},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 20","id":"1f65bf18-a749-4221-880b-dc1e2e573ed7","savedPayload":{"position":{"x":19961.64046540261,"y":10080.497576617052},"targetPosition":{"x":19877.013336329765,"y":10395.571347744622},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 20","id":"59d32253-47b9-4227-bc5b-e2f1d5416844"}}},{"type":"Polygon Vertex","name":"End 20","id":"4a723692-de81-4fa5-9292-88573a34b816","savedPayload":{"position":{"x":20106.633495523824,"y":10166.049568349194},"targetPosition":{"x":19877.013336329765,"y":10395.571347744622},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 20","id":"ce6a0861-712e-4cf4-81e9-92ab6c8a5f4d"}}},{"type":"Polygon Vertex","name":"End 30","id":"ada9ee7e-b823-452e-aab3-2bbb4bf10cc3","savedPayload":{"position":{"x":20192.38615383093,"y":10311.050094574784},"targetPosition":{"x":19877.013336329765,"y":10395.571347744622},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 30","id":"4e7322f7-3bfa-41cc-b9a0-c5dcbe16e83e"}}},{"type":"Polygon Vertex","name":"Begin 30","id":"5d96b5d5-7e34-4a43-891b-273fb9bbf4b6","savedPayload":{"position":{"x":20190.60905775728,"y":10479.186549846594},"targetPosition":{"x":19877.013336329765,"y":10395.571347744622},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 30","id":"3ea0b783-3d43-47d1-90aa-99366cd09a7d"}}}],"id":"bd729215-749b-4893-b21e-fe8add8e3199","savedPayload":{"position":{"x":19548.46955333136,"y":11050.117592618819},"targetPosition":{"x":19295.731931919814,"y":11307.295571575507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Box 30-70","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.05,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.1,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"48f54b6c-7cd5-4089-b6e2-1f39e2361be7","savedPayload":{"position":{"x":19908.67439950611,"y":9862.02199341307},"targetPosition":{"x":19927.654425947163,"y":10156.832493511798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"20728a48-6ba3-4bf8-b51e-bb57303594f2","savedPayload":{"position":{"x":19927.654425947163,"y":10156.832493511798},"targetPosition":{"x":19948.34118449159,"y":10480.639002420017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 30","id":"058eb800-ac91-44dd-8b28-6a740f6470ee","savedPayload":{"position":{"x":20092.114920293687,"y":10189.69829458236},"targetPosition":{"x":19948.34118449159,"y":10480.639002420017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 30","id":"3ea0b783-3d43-47d1-90aa-99366cd09a7d"}}},{"type":"Polygon Vertex","name":"End 30","id":"d01decaf-72ca-41e6-aa58-d6dbe505fe29","savedPayload":{"position":{"x":20218.857928351863,"y":10300.204172503361},"targetPosition":{"x":19948.34118449159,"y":10480.639002420017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 30","id":"4e7322f7-3bfa-41cc-b9a0-c5dcbe16e83e"}}},{"type":"Polygon Vertex","name":"End 70","id":"f87349bc-dc97-46fd-a88f-a28ba9678a43","savedPayload":{"position":{"x":20272.99498873019,"y":10459.333516552011},"targetPosition":{"x":19948.34118449159,"y":10480.639002420017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 70","id":"22287519-c930-4dfb-bb4a-298da4e32cdf"}}},{"type":"Polygon Vertex","name":"Begin 70","id":"fa0278c8-e861-4c72-8795-32186c329c89","savedPayload":{"position":{"x":20241.25869670966,"y":10625.105743976535},"targetPosition":{"x":19948.34118449159,"y":10480.639002420017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 70","id":"4f226496-b6a0-436d-97c5-d6e61dd00c23"}}}],"id":"f95afd47-9495-44f4-bf5a-8577bd0750c5","savedPayload":{"position":{"x":19673.077774983085,"y":11063.160358259385},"targetPosition":{"x":19295.731931919814,"y":11307.295571575507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Box 70-80","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.15,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"191e1de4-e807-46e0-9cac-5b0eb4df5b7d","savedPayload":{"position":{"x":20376.777387320457,"y":10088.7385986246},"targetPosition":{"x":20196.687410393348,"y":10323.295160984906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"baa9237a-41ad-49a1-b78d-664bcb893f79","savedPayload":{"position":{"x":20196.687410393348,"y":10323.295160984906},"targetPosition":{"x":20004.715411107172,"y":10586.432061021722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 70","id":"bdd3f8c1-1194-4472-a681-96a6ee1eedc0","savedPayload":{"position":{"x":20262.703035491566,"y":10384.005087517247},"targetPosition":{"x":20004.715411107172,"y":10586.432061021722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 70","id":"4f226496-b6a0-436d-97c5-d6e61dd00c23"}}},{"type":"Polygon Vertex","name":"End 70","id":"5c4b0947-4269-4fc3-ae1f-c6707c0488d2","savedPayload":{"position":{"x":20307.66324619718,"y":10459.351229810793},"targetPosition":{"x":20004.715411107172,"y":10586.432061021722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 70","id":"22287519-c930-4dfb-bb4a-298da4e32cdf"}}},{"type":"Polygon Vertex","name":"End 80","id":"c2c40046-c4c9-42de-887d-892ed868bc4e","savedPayload":{"position":{"x":20330.78210573431,"y":10542.380845778242},"targetPosition":{"x":20004.715411107172,"y":10586.432061021722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 80","id":"9a3c052a-a6b6-4392-b2fd-54151febb8f5"}}},{"type":"Polygon Vertex","name":"Begin 80","id":"e5d1db7f-bceb-4548-a136-bac0f2d23d33","savedPayload":{"position":{"x":20328.20603488717,"y":10645.426368690114},"targetPosition":{"x":20004.715411107172,"y":10586.432061021722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 80","id":"fb48eeab-d538-4fc5-81fe-dd916f749477"}}}],"id":"b75a1367-e45d-4561-9cf9-b537eba7e103","savedPayload":{"position":{"x":19635.98505296473,"y":11159.049832212326},"targetPosition":{"x":19295.731931919814,"y":11307.295571575507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Box 80-100","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.25,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.35,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"da7f5472-50e7-4083-86e9-5a24dede1557","savedPayload":{"position":{"x":20389.621750181857,"y":10380.791769310255},"targetPosition":{"x":20277.870512533438,"y":10478.550474178259},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6ef84309-4ee8-44c5-a4a9-d5dd9634d09f","savedPayload":{"position":{"x":20277.870512533438,"y":10478.550474178259},"targetPosition":{"x":20038.424176596152,"y":10699.120281335961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 80","id":"fef200a2-c609-4684-9d4d-a84d720f1ee1","savedPayload":{"position":{"x":20330.95636059724,"y":10550.830481080351},"targetPosition":{"x":20038.424176596152,"y":10699.120281335961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 80","id":"fb48eeab-d538-4fc5-81fe-dd916f749477"}}},{"type":"Polygon Vertex","name":"End 80","id":"dd767960-3de1-49ec-914a-f0b3d54e7786","savedPayload":{"position":{"x":20360.450503995104,"y":10633.476077391835},"targetPosition":{"x":20038.424176596152,"y":10699.120281335961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 80","id":"9a3c052a-a6b6-4392-b2fd-54151febb8f5"}}},{"type":"Polygon Vertex","name":"End 100","id":"6fbf425e-e7e4-481a-a14b-762d2879b614","savedPayload":{"position":{"x":20366.53944461144,"y":10719.54023112879},"targetPosition":{"x":20038.424176596152,"y":10699.120281335961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 100","id":"29103f63-7cd6-4005-bec7-a385cf373eaf"}}},{"type":"Polygon Vertex","name":"Begin 100","id":"41244682-e765-41f6-940a-3cced032f765","savedPayload":{"position":{"x":20343.82757421265,"y":10820.003308419475},"targetPosition":{"x":20038.424176596152,"y":10699.120281335961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 100","id":"f3e69d47-f137-412e-a515-7dc262af7f8b"}}}],"id":"e9077695-93a9-4ef5-ae32-3da768e946b1","savedPayload":{"position":{"x":19713.33516419894,"y":11263.329242885553},"targetPosition":{"x":19295.731931919814,"y":11307.295571575507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"b824fc17-2864-430d-93f2-00d42d159b5a","savedPayload":{"position":{"x":19295.731931919814,"y":11307.295571575507},"targetPosition":{"x":19295.65568568499,"y":11706.61870772455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Stoch 14-3-3","config":"{ \n\"codeName\": \"Panel-Stoch-14-3-3\"\n}","panelData":[{"type":"Panel Data","name":"Slow Line","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.slowLine","id":"158086f9-9654-4e33-8292-6a9b7041526a","savedPayload":{"position":{"x":19921.619709733837,"y":11216.744848395816},"targetPosition":{"x":19779.388361570258,"y":11357.921688176839},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c332ec98-c6fb-4eeb-a13a-2bda02958a9d","savedPayload":{"position":{"x":19779.388361570258,"y":11357.921688176839},"targetPosition":{"x":19642.039104007865,"y":11507.570628533516},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Fast Line","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.fastLine","id":"474d9024-e7ff-46d2-a46f-830c5e55ec30","savedPayload":{"position":{"x":20036.70559771111,"y":11418.38785148865},"targetPosition":{"x":19843.056429825156,"y":11469.53864852771},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8249ea87-9d41-431a-b827-c3153fcddd0b","savedPayload":{"position":{"x":19843.056429825156,"y":11469.53864852771},"targetPosition":{"x":19642.039104007865,"y":11507.570628533516},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"af6182b0-9814-4ebe-bbe7-7a455d8a6a0e","savedPayload":{"position":{"x":19642.039104007865,"y":11507.570628533516},"targetPosition":{"x":19295.65568568499,"y":11706.61870772455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6a85fbb1-5a99-4ccc-93e8-092f5dbf6c4a","savedPayload":{"position":{"x":19295.65568568499,"y":11706.61870772455},"targetPosition":{"x":19076.48216043151,"y":12085.425556591052},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3fcd7ef7-fe1a-42f4-9339-a3bda6859248","savedPayload":{"position":{"x":19104.12163334952,"y":12037.324751929184},"targetPosition":{"x":18876.639522961566,"y":12431.333069545388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"511bef1e-62d8-4ff9-8d87-15bd0d3d630c","savedPayload":{"position":{"x":18876.639522961566,"y":12431.333069545388},"targetPosition":{"x":18876.639522961566,"y":12431.333069545388},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}} \ No newline at end of file diff --git a/Includes/Data-Mines/Buddha.json b/Includes/Data-Mines/Buddha.json new file mode 100644 index 000000000..9608475a0 --- /dev/null +++ b/Includes/Data-Mines/Buddha.json @@ -0,0 +1 @@ +{"type":"Data Mine","name":"Buddha","config":"{ \n\"codeName\": \"Buddha\"\n}","sensorBots":[],"indicatorBots":[{"type":"Indicator Bot","name":"Candle Patterns","config":"{\n\"codeName\": \"Candle-Patterns\",\n\"repo\": \"Candle-Patterns-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates Candles Patterns for Time Frames of 01-hs and above.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Basic Candles","id":"3e933426-1c7b-45e1-845f-08a7d2684620","savedPayload":{"position":{"x":13014.983786246557,"y":11582.257138896071},"targetPosition":{"x":13214.778358558542,"y":11672.136629478231},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"07be5b9b-e8fd-49fc-ab77-20f89fdea10f"}}},{"type":"Output Dataset","name":"Multi-Period-Market One-Candle Patterns","id":"201dc796-db42-49ce-8b9c-1b26c0f3a0ce","savedPayload":{"position":{"x":13055.077268021229,"y":11513.03974999541},"targetPosition":{"x":13214.778358558542,"y":11672.136629478231},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"144d8665-1ff0-4db3-9340-a33fd7d0d098"}}},{"type":"Output Dataset","name":"Multi-Period-Market Two-Candles Patterns","id":"c20616cc-d93f-40fc-904a-025fc2799a75","savedPayload":{"position":{"x":13115.919477111813,"y":11469.572073629888},"targetPosition":{"x":13214.778358558542,"y":11672.136629478231},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"8c35ce52-9dee-4d20-92e6-50ba7fd2882b"}}},{"type":"Output Dataset","name":"Multi-Period-Market Three-Candles Patterns","id":"c8074ffc-f5ff-4cb5-8e83-0adcecc82a0c","savedPayload":{"position":{"x":13212.772990245361,"y":11473.777495327486},"targetPosition":{"x":13214.778358558542,"y":11672.136629478231},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"087fc67e-78f9-4204-ba5e-8b670566a716"}}}],"outputDatasetFolders":[],"id":"0dc09316-0987-4d22-b600-bd3868942026","savedPayload":{"position":{"x":13214.778358558542,"y":11672.136629478231},"targetPosition":{"x":13428.975206324332,"y":11986.086624547845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candle Patterns Multi-Period-Market","config":"{\"mainUtility\": \"Self Reference\"}","id":"2d079388-93e4-4005-b392-c4a997904ccb","savedPayload":{"position":{"x":13237.534092975908,"y":11373.149986684633},"targetPosition":{"x":13395.171017360753,"y":11533.418739091607},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"401fbf30-8faa-40e9-9707-fac2d35f6195"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","config":"{ \n\"mainUtility\": \"Market Starting Point\"\n}","id":"418e1725-b690-4a55-b5f7-a4a92465c162","savedPayload":{"position":{"x":13379.394277197825,"y":11319.028125288029},"targetPosition":{"x":13395.171017360753,"y":11533.418739091607},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"85c548fd-9ef7-4936-a86d-2a206cf90039","savedPayload":{"position":{"x":13535.423300602335,"y":11370.612466915685},"targetPosition":{"x":13395.171017360753,"y":11533.418739091607},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"dataMineDataDependencies":[],"id":"de8bf1ab-cf7b-41ab-b8cb-ae38b1e587ce","savedPayload":{"position":{"x":13395.171017360753,"y":11533.418739091607},"targetPosition":{"x":13428.975206324332,"y":11986.086624547845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"401fbf30-8faa-40e9-9707-fac2d35f6195","savedPayload":{"position":{"x":13604.484245632055,"y":11621.514438425625},"targetPosition":{"x":13428.975206324332,"y":11986.086624547845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"e100074c-7981-49e1-9d06-813104ee4c41","savedPayload":{"position":{"x":13763.808053874669,"y":11757.047730018578},"targetPosition":{"x":13428.975206324332,"y":11986.086624547845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"2a8f2e62-256b-4281-a470-3f640af21337","savedPayload":{"position":{"x":13839.376069589081,"y":11955.762164903854},"targetPosition":{"x":13428.975206324332,"y":11986.086624547845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3aaf9f93-0516-4b3d-9772-44be91615154","savedPayload":{"position":{"x":13673.547055064315,"y":11828.852792025047},"targetPosition":{"x":13413.800171630588,"y":12369.642948734469},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Calculates Candles Patterns for Time Frames of 45-min and below.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily Basic Candles","id":"3fc6cd67-c356-41fc-89d9-5c1cdcdd7360","savedPayload":{"position":{"x":13816.13407582038,"y":11218.229821634788},"targetPosition":{"x":14024.914213441818,"y":11509.084076315567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"9e6d7f95-b2fe-466e-9a5d-175479cbf85d"}}},{"type":"Output Dataset","name":"Multi-Period-Daily One-Candle Patterns","id":"7b078979-c28c-4ba5-8305-d469c8d4ec84","savedPayload":{"position":{"x":13916.696660630845,"y":11167.747691783157},"targetPosition":{"x":14024.914213441818,"y":11509.084076315567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f0a11771-dd69-4b9a-9347-7cb2d1f231ff"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Two-Candles Patterns","id":"5ab95923-5553-40a7-836e-14b96f8a4764","savedPayload":{"position":{"x":14027.35509650732,"y":11151.098641199766},"targetPosition":{"x":14024.914213441818,"y":11509.084076315567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"4f1260c8-6d74-454e-963a-fa3ff910329c"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Three-Candles Patterns","id":"cb6acbaf-bf43-4bf6-b8ca-7689130cc9cf","savedPayload":{"position":{"x":14138.30595741663,"y":11169.800424894716},"targetPosition":{"x":14024.914213441818,"y":11509.084076315567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"b60cb94f-79c5-410c-b166-abc97d0f2bc3"}}}],"outputDatasetFolders":[],"id":"bcfa61bd-e1d0-4a60-9fd5-ab7dabe4fd39","savedPayload":{"position":{"x":14024.914213441818,"y":11509.084076315567},"targetPosition":{"x":14088.25245833815,"y":11932.210584772864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candle Patterns Multi-Period-Daily","config":"{\"mainUtility\": \"Self Reference\"}","id":"a7ea36fb-cc2e-4d55-b021-e67d8c5a7020","savedPayload":{"position":{"x":14157.216465758505,"y":10965.952053157951},"targetPosition":{"x":14349.440119741212,"y":11267.566043881061},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"3a20d7e9-d551-4346-81c7-e3b0098bef99"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\"mainUtility\": \"Market Starting Point\"}","id":"48b53dc5-015c-43f1-9485-047aaaffe0f7","savedPayload":{"position":{"x":14370.867752494796,"y":10910.523138152665},"targetPosition":{"x":14349.440119741212,"y":11267.566043881061},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","config":"{ \n\"mainUtility\": \"Market Ending Point\"\n}","id":"49d2c9ad-bdde-427a-8590-801aa4422cca","savedPayload":{"position":{"x":14576.58288046427,"y":10991.340786924691},"targetPosition":{"x":14349.440119741212,"y":11267.566043881061},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"19bf518a-1e20-4e3a-8f40-8e07324f634b","savedPayload":{"position":{"x":14695.563216568724,"y":11177.673065190746},"targetPosition":{"x":14349.440119741212,"y":11267.566043881061},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"dataMineDataDependencies":[],"id":"2a7a3bf2-9044-4040-95a7-28c1a339a37f","savedPayload":{"position":{"x":14349.440119741212,"y":11267.566043881061},"targetPosition":{"x":14088.25245833815,"y":11932.210584772864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"3a20d7e9-d551-4346-81c7-e3b0098bef99","savedPayload":{"position":{"x":14646.865168525226,"y":11487.237317302151},"targetPosition":{"x":14088.25245833815,"y":11932.210584772864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"4d03c099-0d5e-4668-a347-c0de2f42f8bd","savedPayload":{"position":{"x":14517.205694996726,"y":11867.65780896113},"targetPosition":{"x":14088.25245833815,"y":11932.210584772864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"3ef2f54d-64c9-4264-a298-0c5a908458ab","savedPayload":{"position":{"x":14488.627801072143,"y":12088.774738519493},"targetPosition":{"x":14088.25245833815,"y":11932.210584772864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8a7ce3e2-20a1-496b-86bf-2d7842f88536","savedPayload":{"position":{"x":13883.029605259044,"y":11995.836643571278},"targetPosition":{"x":13413.800171630588,"y":12369.642948734469},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Basic Candles","config":"{\n \"codeName\": \"Basic-Candles\",\n \"singularVariableName\": \"basicCandle\",\n \"pluralVariableName\": \"basicCandles\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"07be5b9b-e8fd-49fc-ab77-20f89fdea10f","savedPayload":{"position":{"x":14429.499428495954,"y":11862.421488975693},"targetPosition":{"x":14283.329852522562,"y":12204.806962333805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"9e6d7f95-b2fe-466e-9a5d-175479cbf85d","savedPayload":{"position":{"x":14602.818863919903,"y":12014.30756076982},"targetPosition":{"x":14283.329852522562,"y":12204.806962333805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"Basic Candles Variables","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"7d35e864-2f37-4d1c-912d-225952131ffd","savedPayload":{"position":{"x":15129.243287532458,"y":11824.134815744605},"targetPosition":{"x":15388.99249074521,"y":11926.599241905862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"52215804-fb71-43ed-a232-3b29d843cb58","savedPayload":{"position":{"x":15388.99249074521,"y":11926.599241905862},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"bdeaed7f-2923-4fde-a7ea-257f00bb7ee9","savedPayload":{"position":{"x":15247.376659101321,"y":11616.429862222518},"targetPosition":{"x":15467.824581886814,"y":11788.171272692558},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b8f2240b-03a9-4fd5-8e37-d43237554239","savedPayload":{"position":{"x":15467.824581886814,"y":11788.171272692558},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"name","config":"{\n \"codeName\": \"name\",\n \"isString\": true\n}","formula":{"type":"Formula","code":"variable.name","id":"5ac4a021-ae1b-45d7-80ea-09587174c038","savedPayload":{"position":{"x":15419.011314631667,"y":11451.044136715682},"targetPosition":{"x":15582.279156445209,"y":11677.806977603619},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8220f919-2232-47b2-8bcb-1d30a905c026","savedPayload":{"position":{"x":15582.279156445209,"y":11677.806977603619},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"size","config":"{ \n\"codeName\": \"size\",\n\"isString\": true\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.size","id":"8162dea0-df67-42b5-8223-7533f950af7a","savedPayload":{"position":{"x":15630.6078130856,"y":11340.325751231114},"targetPosition":{"x":15723.178341340054,"y":11604.138136336996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2bff73a1-c5c2-4413-91ed-9d2aaf642d83","savedPayload":{"position":{"x":15723.178341340054,"y":11604.138136336996},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"direction","config":"{ \n\"codeName\": \"direction\",\n\"isString\": true\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.direction","id":"770f6a35-9069-49ba-9c12-99dc6e5ff54a","savedPayload":{"position":{"x":15864.6019370542,"y":11294.021315218213},"targetPosition":{"x":15879.140202020233,"y":11573.350186612335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"871bc42d-f3f7-4896-b575-ca23f325e50f","savedPayload":{"position":{"x":15879.140202020233,"y":11573.350186612335},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"upperShadowPercent","config":"{ \n\"codeName\": \"upperShadowPercent\",\n\"isString\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.upperShadowPercent","id":"1645f231-45ab-48b5-9891-45f27e2b4d7e","savedPayload":{"position":{"x":16101.688147018427,"y":11315.385043740624},"targetPosition":{"x":16037.203167345226,"y":11587.439677066533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"dec83c16-8f66-4403-9dda-e536223e7577","savedPayload":{"position":{"x":16037.203167345226,"y":11587.439677066533},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bodyPercent","config":"{ \n\"codeName\": \"bodyPercent\",\n\"isString\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bodyPercent","id":"36408e7c-d9cc-4d63-9115-feffa763b85f","savedPayload":{"position":{"x":16323.3271767567,"y":11402.876662737315},"targetPosition":{"x":16185.002270012663,"y":11645.769192265496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cba04177-1edd-444f-94a3-79784d84d70e","savedPayload":{"position":{"x":16185.002270012663,"y":11645.769192265496},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"lowerShadowPercent","config":"{ \n\"codeName\": \"lowerShadowPercent\",\n\"isString\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.lowerShadowPercent","id":"71464adc-3bd3-47b8-b018-cbacf897c119","savedPayload":{"position":{"x":16511.899377484784,"y":11549.415296286841},"targetPosition":{"x":16310.588429800731,"y":11743.351766947995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c2c5753a-2e74-4429-9b6a-aa016a753be2","savedPayload":{"position":{"x":16310.588429800731,"y":11743.351766947995},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"body","config":"{ \n\"codeName\": \"body\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.body","id":"1bc97398-5645-4452-9169-f62efc0a7fe1","savedPayload":{"position":{"x":16651.166773352088,"y":11742.835073049886},"targetPosition":{"x":16403.42177829525,"y":11872.281392297455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f0019951-d651-4fcf-888e-0a0cf1564c98","savedPayload":{"position":{"x":16403.42177829525,"y":11872.281392297455},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"upperShadow","config":"{ \n\"codeName\": \"upperShadow\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.upperShadow","id":"cf426ed9-53d3-411e-acf1-1694c5d45b89","savedPayload":{"position":{"x":16730.380746441642,"y":11968.19154389479},"targetPosition":{"x":16456.162628415535,"y":12022.378329780688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2d3b26eb-15bc-4272-b296-9658ac24baa9","savedPayload":{"position":{"x":16456.162628415535,"y":12022.378329780688},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"lowerShadow","config":"{ \n\"codeName\": \"lowerShadow\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.lowerShadow","id":"a0909b34-9ad9-4290-aa93-5b1731b74a66","savedPayload":{"position":{"x":16743.31632659626,"y":12205.797448695635},"targetPosition":{"x":16464.707488103875,"y":12180.795524895917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2369782b-6afb-41e1-a93f-721c7442e5c3","savedPayload":{"position":{"x":16464.707488103875,"y":12180.795524895917},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"length","config":"{ \n\"codeName\": \"length\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.length","id":"3639b9ee-c558-4699-9b48-2ddfdc59fa33","savedPayload":{"position":{"x":16688.273081653006,"y":12437.82198027461},"targetPosition":{"x":16428.126570073153,"y":12335.541564105808},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a6773db1-97fb-418d-b7cf-d4298054f376","savedPayload":{"position":{"x":16428.126570073153,"y":12335.541564105808},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"meanBody","config":"{ \n\"codeName\": \"meanBody\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.meanBody","id":"a45ab78a-fa03-469b-ab64-78fd184d9dd5","savedPayload":{"position":{"x":16569.867932578516,"y":12645.266998771447},"targetPosition":{"x":16349.247405251437,"y":12473.599366566521},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c32b5645-7bbe-4f06-aaef-d9efc3a5c9da","savedPayload":{"position":{"x":16349.247405251437,"y":12473.599366566521},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"avgRef","config":"{ \n\"codeName\": \"avgRef\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.avgRef","id":"26313abc-cd03-4fb9-b54d-2a0d67a3c0da","savedPayload":{"position":{"x":16398.261419139122,"y":12810.825002702051},"targetPosition":{"x":16234.862290877978,"y":12584.014468388723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0bdc3b36-d092-421f-8741-a0ecfa8fcc41","savedPayload":{"position":{"x":16234.862290877978,"y":12584.014468388723},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Nbodies","config":"{ \n\"codeName\": \"Nbodies\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.Nbodies","id":"f5b650b4-497d-4eef-84f8-c53b5703dbed","savedPayload":{"position":{"x":16186.760705380975,"y":12921.189377405359},"targetPosition":{"x":16093.936192872909,"y":12657.556085203687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cf0a624b-44cb-4926-8e26-867ea485e3fe","savedPayload":{"position":{"x":16093.936192872909,"y":12657.556085203687},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"dojiFactor","config":"{ \n\"codeName\": \"dojiFactor\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.dojiFactor","id":"8e3696bf-dace-4ecb-a9e7-db654ba86ed8","savedPayload":{"position":{"x":15952.642682322414,"y":12967.68130835875},"targetPosition":{"x":15937.968286973177,"y":12688.550813565324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cda80e33-8ed9-4579-8c45-99da25652634","savedPayload":{"position":{"x":15937.968286973177,"y":12688.550813565324},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"sizeFactor","config":"{ \n\"codeName\": \"sizeFactor\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.sizeFactor","id":"08e5507c-e88f-410e-ac54-886d8ce157d2","savedPayload":{"position":{"x":15716.216018659268,"y":12946.362671417126},"targetPosition":{"x":15780.184456097635,"y":12674.089581342421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"20fadb1a-1f55-4b10-ba45-cda61d8d0157","savedPayload":{"position":{"x":15780.184456097635,"y":12674.089581342421},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Nlengths","config":"{ \n\"codeName\": \"Nlengths\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.Nlengths","id":"addc3851-bbe2-47ac-8652-5b745e12918a","savedPayload":{"position":{"x":15483.007484289848,"y":12861.900448901255},"targetPosition":{"x":15632.195168072496,"y":12615.836762976822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0a736450-a2e1-41a0-8c29-cd2434296872","savedPayload":{"position":{"x":15632.195168072496,"y":12615.836762976822},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"sizeMethod","config":"{ \n\"codeName\": \"sizeMethod\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.sizeMethod","id":"e2109d1f-c4aa-46d6-a6b7-75d1ffd9c0ee","savedPayload":{"position":{"x":15305.868101737338,"y":12712.201889069782},"targetPosition":{"x":15506.756772073697,"y":12518.276975819734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"23853614-5c16-4e3e-b1ae-d3fda37d5884","savedPayload":{"position":{"x":15506.756772073697,"y":12518.276975819734},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"meanLength","config":"{ \n\"codeName\": \"meanLength\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.meanLength","id":"4731c75f-5e23-4972-ba37-10bd4363ee0d","savedPayload":{"position":{"x":15166.333772429985,"y":12518.535002264252},"targetPosition":{"x":15413.754311010802,"y":12389.220491605309},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fc7702c5-1b49-4ed6-b2b3-fde741557115","savedPayload":{"position":{"x":15413.754311010802,"y":12389.220491605309},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"min","config":"{ \n\"codeName\": \"min\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.candleMin","id":"016b76f2-2f06-408e-986f-e29cd5edc107","savedPayload":{"position":{"x":15087.192376188927,"y":12293.040838855068},"targetPosition":{"x":15360.929549903689,"y":12238.98465603514},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"31730ec0-eedf-404d-9a38-bd065bdc2064","savedPayload":{"position":{"x":15360.929549903689,"y":12238.98465603514},"targetPosition":{"x":15908.457406498463,"y":12130.867596842687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4d364dfd-44f1-4d8e-87fd-5aa54564e167","savedPayload":{"position":{"x":15908.457406498463,"y":12130.867596842687},"targetPosition":{"x":14283.329852522562,"y":12204.806962333805},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* ¡¡¡ VERY IMPORTANT !!!\n\"PLEASE READ BEFORE STARTING ALL DOCUMENTATION RELATED TO THIS INDICATOR ON THE SUPERALGOS WEBSITE\" */\n\n/* INTRODUCTION:\nThere are a lot of combinations in order to construct a candle. That's why we are going to define 4 families of candles based on their appearence.\n1) “CLASSIC CANDLES”: These candles have two shadows shorter than the body.\n2) “MARUBOZU CANDLES”: These candles have no at least one shadow. The shadow, if present, cannot be longer than the body. \n3) “SPINNING TOP CANDLES”: These candles have differents opening and closing prices and have at least one shadow. At the same time at least one shadow has to be longer than the body.\n4) “DOJI CANDLES”: These candles have no body. The open price is equal to the close price. */\n\n// ---------------------------------------------------------------------------------------------------------------------\n// From here the variables to be used will be defined\n// ---------------------------------------------------------------------------------------------------------------------\n\n/* The following variables could be modified by the user to adapt the indicator with his preferences\n(Please, read the documentation before) */\n\nlet sizeMethod = \"SMA\" // Choose \"SMA\" or \"EMA\" to calculate the average length of the last \"Nlengths\" candles\nlet Nlengths = 20 // Default value: 20 - \"Nlengths\" is the number of candles to calculate the average length value\nlet sizeFactor = 75 // Default value: 75% - \"sizeFactor\" is to define \"Long\" or \"Short\" size\nlet Nbodies = 10 // Default value: 10 - \"Nbodies\" is the number of bodies to calculate the average bodie value\nlet dojiFactor = 3 // Default value: 3% - \"dojiFactor\" is to define when a candle is \"doji\" or not\n\n /* In order to avoid errors, the initial condition of the name of the candle is defined */\nvariable.name = \"Unknown\" // To be used on the Plotter Panel and Conditions\n\n/* Candles as dependencies are defined */\nlet candle = record.current \n\n/* The height of the body */\nlet body = Math.abs (candle.close-candle.open)\n\n/* Array of N bodies is defined to verify if a candle has a Short Body or a Long Body */\nif (variable.lastNbodies.length > Nbodies) {\n variable.lastNbodies.shift() // Remove the first element of the array to keep it at a maximun of N elements\n}\nlet meanBody \nif (variable.lastNbodies.length < Nbodies) { // If \"lastNbodies\" array hasn't enough bodies, zero value is defined\n meanBody = 0 \n} else { \n let sum = 0 // Initialize sum variable \n for (let i = variable.lastNbodies.length-Nbodies; i < variable.lastNbodies.length; i++) { // Iterate through the last periods\n sum = sum + variable.lastNbodies[i]\n } \n meanBody = sum/Nbodies\n}\nvariable.lastNbodies.push(body) // Add the current body value to the \"lastNbodies\" array for next cycle\n\n /* Total length of the candle, equivalent to the sum of upper shadow, lower shadow and body */\nlet length = candle.max - candle.min \n\n/* Calculating average candles length \"EMA\" or \"SMA\" */\nif (sizeMethod === \"EMA\") {\n let k = 2 / (Nlengths + 1)\n variable.EMAlength = length * k + variable.previousEMAlength * (1-k)\n variable.previousEMAlength = variable.EMAlength\n variable.avgRef = variable.EMAlength * sizeFactor / 100\n variable.SMAlength = 0\n} \nif (sizeMethod === \"SMA\") {\n variable.EMAlength = 0\n if (variable.lastNlengths.length > Nlengths) {\n variable.lastNlengths.shift() // Remove the first element of the array to keep it at a maximun of N elements \n } \n if (variable.lastNlengths.length < Nlengths) { // If \"lastNlengths\" array hasn't enough candles length, zero value is defined\n variable.SMAlength = 0 \n variable.avgRef = 0 \n } else { \n let sum = 0 // Initialize sum variable \n for (let i = variable.lastNlengths.length-Nlengths; i < variable.lastNlengths.length; i++) { // Iterate through the last periods\n sum = sum + variable.lastNlengths[i]\n } \n variable.SMAlength = sum/Nlengths\n variable.avgRef = variable.SMAlength * sizeFactor / 100 // To be used in Shapes\n }\n variable.lastNlengths.push(length) // Add the current length value to the \"lastNlengths\" array for next cycle\n}\n\n/* Only one MA is calculated, the other is defined as 0. It is useful to integrate both variables into one for future operations */\nvariable.meanLength = variable.SMAlength + variable.EMAlength // To be used in Shapes and Conditions\n\n/* Defining if a candle is \"Long\" or \"Short\" */\nlet size\nif (length > variable.avgRef) {\n size = \"Long\"\n} else {\n size = \"Short\"\n} \n\n/* Green candles are \"Bullish\" and red candles are \"Bearish\" */\nlet direction \nif (candle.close > candle.open) {\n direction = \"Bullish\"\n} else {\n direction = \"Bearish\"\n}\n\n/* The value of the upper shadow */\nlet upperShadow \nif (direction === \"Bullish\") {\n upperShadow = candle.max-candle.close\n} else {\n upperShadow = candle.max-candle.open\n}\n\n/* The value of the lower shadow */\nlet lowerShadow \nif (direction === \"Bullish\") {\n lowerShadow = candle.open-candle.min\n} else {\n lowerShadow = candle.close-candle.min\n}\n\n/* Four possibilities of combinations of the shadows are defined: \"lower\", \"upper\", \"both\", \"none\" */\nlet shadow\nif (upperShadow > 0 && lowerShadow > 0) {\n shadow = \"Both\"\n}\nif (upperShadow === 0 && lowerShadow === 0) {\n shadow = \"None\"\n}\nif (upperShadow > 0 && lowerShadow === 0) {\n shadow = \"Upper\"\n}\nif (upperShadow === 0 && lowerShadow > 0) {\n shadow = \"Lower\"\n}\n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here the name of the candles will be defined\n// ----------------------------------------------------------------------------------------------------------------------------\n\nif (body > length*dojiFactor/100) { // From here all kind of candles that are NOT \"doji\" are defined\n\n/* \"CLASSIC CANDLES\" family:\nThese candles have the following characteristics in common:\n1) Both shadows are present.\n2) Each shadow is shorter than the body. \n3) The opening price differs from the closing price. */\n\nif (shadow === \"Both\" && upperShadow <= body && lowerShadow <= body) {\n\n/* \"SHORT GREEN CANDLE\" and \"SHORT RED CANDLE\" properties:\n1) Bullish or Bearish.\n2) Relative Size: Short. */\n\nif (direction === \"Bullish\" && size === \"Short\") {\n variable.name = \"Short Green Candle\"\n}\nif (direction === \"Bearish\" && size === \"Short\") {\n variable.name = \"Short Red Candle\"\n}\n\n/* \"GREEN CANDLE\" and \"RED CANDLE\" properties: \n1) Bullish or Bearish.\n2) Relative Size: Long . */\n\nif (direction === \"Bullish\" && size === \"Long\") {\n variable.name = \"Green Candle\"\n}\nif (direction === \"Bearish\" && size === \"Long\") {\n variable.name = \"Red Candle\"\n}\n\n/* \"LONG GREEN CANDLE\" and \"LONG RED CANDLE\" properties:\n1) Bullish or Bearish respectively.\n2) The body is at least three times higher than the mean body.\n4) Relative Size: Long. */\n\nif (direction === \"Bullish\" && size === \"Long\" && body >= meanBody*3) {\n variable.name = \"Long Green Candle\"\n}\nif (direction === \"Bearish\" && size === \"Long\" && body >= meanBody*3) {\n variable.name = \"Long Red Candle\"\n}\n\n} // Closing \"Classic Candles\" Family \n\n/* \"MARUBOZU CANDLES\" family:\nThese candles have the following characteristics in common:\n1) Lack at least one shadow.\n2) If it has one shadow, it must be shorter than the body.\n3) The opening price differs from the closing price.\n4) Relative Size: Short or Long. */\n\n/* \"GREEN MARUBOZU\" and \"RED MARUBOZU\" properties: \n1) Bullish or Barish.\n2) No shadows. */\n\nif (direction === \"Bullish\" && shadow === \"None\") {\n variable.name = \"Green Marubozu\"\n}\nif (direction === \"Bearish\" && shadow === \"None\") {\n variable.name = \"Red Marubozu\"\n}\n\n/* \"OPENING GREEN MARUBOZU\" properties: \n1) Bullish.\n2) No lower shadow. */\n\nif (direction === \"Bullish\" && shadow === \"Upper\" && upperShadow <= body) {\n variable.name = \"Opening Green Marubozu\"\n}\n\n/* \"CLOSING GREEN MARUBOZU\" properties:\n1) Bullish.\n2) No upper shadow. */\n\nif (direction === \"Bullish\" && shadow === \"Lower\" && lowerShadow <= body) {\n variable.name = \"Closing Green Marubozu\"\n}\n\n/* \"CLOSING RED MARUBOZU\" properties:\n1) Bearish.\n2) No lower shadow. */\n\nif (direction === \"Bearish\" && shadow === \"Upper\" && upperShadow <= body) {\n variable.name = \"Closing Red Marubozu\"\n}\n\n/* \"OPENING RED MARUBOZU\" properties: \n1) Bearish.\n2) No upper shadow. */\n\nif (direction === \"Bearish\" && shadow === \"Lower\" && lowerShadow <= body) {\n variable.name = \"Opening Red Marubozu\"\n}\n\n/* \"SPINNING TOP CANDLES\" family:\nThese candles have the following characteristics in common:\n1) Have at least one shadow.\n2) At least one shadow is greater than the body.\n3) The opening price differs from the closing price. */\n\n/* \"GREEN SPINNING TOP\" and \"RED SPINNING TOP\" properties:\n1) Bullish or Bearish.\n4) Relative Size: Short or Long. \n5) If it's relative size is Long, none of the shadows can exceed three times the body. */\n\nif (shadow !== \"None\") { \n if (upperShadow > body || lowerShadow > body) { \n if (size === \"Long\") {\n if (upperShadow > 3*body || lowerShadow > 3*body) {\n } else {\n if (direction === \"Bullish\") {\n variable.name = \"Green Spinning Top\"\n } else {\n variable.name = \"Red Spinning Top\"\n }\n } \n } else {\n if (direction === \"Bullish\") {\n variable.name = \"Green Spinning Top\"\n } else {\n variable.name = \"Red Spinning Top\"\n }\n }\n } \n} \n\n/* \"HIGH WAVE\" properties:\n1) Bullish or Bearish.\n2) Relative Size: Long.\n3) The length of at least one shadow is at least 3 times larger than the body.*/\n\nif (shadow !== \"None\" && size === \"Long\") {\n if (upperShadow > 3*body || lowerShadow > 3*body) { \n variable.name = \"High Wave\"\n } \n}\n\n} else { // Closing the initial \"dojiFactor\" if condition, from here \"Doji Candles\" family are defined \n\n/* \"DOJI CANDLES\" family:\nThese candles have the following characteristics in common:\n1) Have no body, or very small body if it is allowed. */\n\n/* \"FOUR-PRICE DOJI\" properties:\n1) No shadows.\n2) Relative Size: Short.*/\n\nif (shadow === \"None\" && size === \"Short\") {\n variable.name = \"Four-Price Doji\"\n}\n\n/* \"STAR DOJI\" properties:\n1) Body is located nearly mid-range (between 60% and 40% of total length).\n2) Relative Size: Short. */\n\nif (size === \"Short\" && upperShadow <= length * 0.6 && upperShadow >= length * (0.4 - dojiFactor/100)) {\n variable.name = \"Star Doji\"\n}\n\n/* \"LONG-LEGGED DOJI\" properties:\n1) Body is located nearly mid-range (between 60% and 40% of total length).\n2) Relative Size: Long. */\n\nif (size === \"Long\" && upperShadow <= length * 0.6 && upperShadow >= length * (0.4 - dojiFactor/100)) {\n variable.name = \"Long-Legged Doji\"\n}\n\n/* \"DRAGONFLY DOJI\" properties:\n1) Upper shadow shorter than 1% of total candle length.\n2) Relative Size: Long. */\n\nif (size === \"Long\" && upperShadow <= length * 0.01) {\n variable.name = \"Dragonfly Doji\"\n}\n\n/* \"GRAVESTONE DOJI\" properties:\n1) Lower shadow shorter than 1% of total candle length.\n2) Relative Size: Long.*/\n\nif (size === \"Long\" && lowerShadow <= length * 0.01) {\n variable.name = \"Gravestone Doji\"\n}\n\n/* \"GENERIC DOJI\" properties:\n1) None of the above five Doji. */\n\nif (variable.name === \"Unknown\") {\n variable.name = \"Generic Doji\"\n}\n\n} // Closing the \"dojiFactor\" else\n\n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here all the variables that will be written in the records are defined \n// ----------------------------------------------------------------------------------------------------------------------------\n\nvariable.size = size // To be used on the Plotter Panel and Conditions\nvariable.direction = direction // To be used on the Plotter Panel and Conditions\nif (length > 0) { // Condition to avoid dividing by 0\n variable.upperShadowPercent = upperShadow/length*100 // To be used on the Plotter Panel\n variable.bodyPercent = body/length*100 // To be used on the Plotter Panel\n variable.lowerShadowPercent = lowerShadow/length*100 // To be used on the Plotter Panel\n} else {\n variable.lowerShadowPercent = 0\n variable.bodyPercent = 0\n variable.upperShadowPercent = 0\n}\nvariable.Nbodies = Nbodies // To be used on the Plotter Panel\nvariable.sizeFactor = sizeFactor // To be used on the Plotter Panel\nvariable.dojiFactor = dojiFactor // To be used on the Plotter Panel\nvariable.Nlengths = Nlengths // To be used on the Plotter Panel\nvariable.sizeMethod = sizeMethod // To be used on the Plotter Panel\nvariable.candleMin = candle.min // To be used in Shapes\nvariable.length = length // To be used in Conditions\nvariable.upperShadow = upperShadow // To be used in Conditions\nvariable.lowerShadow = lowerShadow // To be used in Conditions\nvariable.body = body // To be used in Conditions\nvariable.meanBody = meanBody // To be used in Conditions\n","id":"119670a5-5f25-4a75-aaad-6939a18aebf0","savedPayload":{"position":{"x":15579.516220036843,"y":12833.79593882529},"targetPosition":{"x":15204.206835650482,"y":12764.548294837272},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"shortcutKey":"f"}}},"id":"351fa6f0-1fbb-4e1b-9d95-3599476aed35","savedPayload":{"position":{"x":15204.206835650482,"y":12764.548294837272},"targetPosition":{"x":14840.804608935641,"y":12692.328685529812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"/* ¡¡¡ VERY IMPORTANT !!!\n\"PLEASE READ BEFORE STARTING ALL DOCUMENTATION RELATED TO THIS INDICATOR ON THE SUPERALGOS WEBSITE\" */\n\n/* It is necessary to define when a candle has a long or a short body. To do that, the bodies of the last N candles have to be averaged. */\nvariable.lastNbodies = [ ] // Define \"lastNbodies\" array to record the value of the last N bodies (SMA)\n\n/* It is necessary to define when a candle is \"Long\" or \"Short\". To do that, the length of the last N candles have to be averaged. */\nvariable.previousEMAlength = 0 // Initialize the variable previous enter to the main loop (EMA)\nvariable.lastNlengths = [ ] // Define \"lastNlengths\" array to record the value of the last N candles length (SMA)","id":"70e6788a-2518-48cf-8493-27f1e7e5ad61","savedPayload":{"position":{"x":15020.37890023752,"y":13220.843768053062},"targetPosition":{"x":14960.579661234819,"y":13044.348974023158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0b2207a1-b217-4c06-92bd-6985d621d035","savedPayload":{"position":{"x":14960.579661234819,"y":13044.348974023158},"targetPosition":{"x":14840.804608935641,"y":12692.328685529812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f2638b08-3f3b-4574-9e89-dc41f984273d","savedPayload":{"position":{"x":14840.804608935641,"y":12692.328685529812},"targetPosition":{"x":14283.329852522562,"y":12204.806962333805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7519e3d8-b5ec-47eb-84c9-8c9262c9efc6","savedPayload":{"position":{"x":13998.460742582565,"y":12236.531792711887},"targetPosition":{"x":13413.800171630588,"y":12369.642948734469},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Basic Candles","id":"09e0a24c-ead1-40c6-9e43-72b46e4294c5"}}},{"type":"Product Definition","name":"One-Candle Patterns","config":"{\n \"codeName\": \"One-Candle-Patterns\",\n \"singularVariableName\": \"oneCandlePattern\",\n \"pluralVariableName\": \"oneCandlePatterns\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"144d8665-1ff0-4db3-9340-a33fd7d0d098","savedPayload":{"position":{"x":14265.53207855157,"y":12269.273955199298},"targetPosition":{"x":13998.206916384088,"y":12502.65451533993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"f0a11771-dd69-4b9a-9347-7cb2d1f231ff","savedPayload":{"position":{"x":14351.946244442994,"y":12471.653787653035},"targetPosition":{"x":13998.206916384088,"y":12502.65451533993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"One-Candle Patterns Records","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"6269672d-95af-44a9-8f10-52f7d4a6892b","savedPayload":{"position":{"x":14473.8524896505,"y":12288.612654418435},"targetPosition":{"x":14649.901188811004,"y":12643.417319301294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"023fd450-0cae-4b41-8cb2-c446ac69bf32","savedPayload":{"position":{"x":14649.901188811004,"y":12643.417319301294},"targetPosition":{"x":14835.511165473516,"y":13016.43466830023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"6902c73f-da76-4ca0-b8c2-4ac0351c9a59","savedPayload":{"position":{"x":14926.189834389774,"y":12208.380102559275},"targetPosition":{"x":14882.159237823356,"y":12602.621949843126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ebafaaab-38a0-4bed-a8ea-169f0e92b1cb","savedPayload":{"position":{"x":14882.159237823356,"y":12602.621949843126},"targetPosition":{"x":14835.511165473516,"y":13016.43466830023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"name","config":"{ \n\"codeName\": \"name\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.name","id":"ae345ad9-8364-4e58-bd0a-8b44803b1d98","savedPayload":{"position":{"x":15348.03021166192,"y":12385.058327194482},"targetPosition":{"x":15098.51072113082,"y":12692.50978268222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b633fced-5335-4a72-b0cf-ebb6237e2a17","savedPayload":{"position":{"x":15098.51072113082,"y":12692.50978268222},"targetPosition":{"x":14835.511165473516,"y":13016.43466830023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trend","config":"{ \n\"codeName\": \"trend\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trend","id":"5cd8361b-112f-4a4f-9fcd-42a2ff493e96","savedPayload":{"position":{"x":15608.487815845818,"y":12761.989618686854},"targetPosition":{"x":15231.13617583379,"y":12886.023149732213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"853f4eb3-8068-47d1-9726-22b0c7e835ad","savedPayload":{"position":{"x":15231.13617583379,"y":12886.023149732213},"targetPosition":{"x":14835.511165473516,"y":13016.43466830023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"forecast","config":"{ \n\"codeName\": \"forecast\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.forecast","id":"3b9c18d5-c9e8-4fad-bb3c-1c46751b91a9","savedPayload":{"position":{"x":15622.446093923038,"y":13219.698462899583},"targetPosition":{"x":15239.613291640406,"y":13121.034943380095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1325daec-fb39-4cb8-acec-14adc2ee94e9","savedPayload":{"position":{"x":15239.613291640406,"y":13121.034943380095},"targetPosition":{"x":14835.511165473516,"y":13016.43466830023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trendLine","config":"{ \n\"codeName\": \"trendLine\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trendLine","id":"d4a6b997-360b-442b-a08c-b75c331a6a84","savedPayload":{"position":{"x":15187.675663544322,"y":13396.476996388561},"targetPosition":{"x":15117.853286544918,"y":13321.592753983668},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"e1a74ac9-f660-4d09-89e9-f8eaebf137c4","savedPayload":{"position":{"x":15117.853286544918,"y":13321.592753983668},"targetPosition":{"x":14835.511165473516,"y":13016.43466830023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bearishArrowHead","config":"{ \n\"codeName\": \"bearishArrowHead\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bearishArrowHead","id":"7ca628f3-61d6-4b1f-a4a8-610d07bd8bdb","savedPayload":{"position":{"x":14926.722552424842,"y":13526.113964868788},"targetPosition":{"x":14908.492220087795,"y":13425.763796985188},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"d9837267-f999-420e-8906-169c546fc7f5","savedPayload":{"position":{"x":14908.492220087795,"y":13425.763796985188},"targetPosition":{"x":14835.511165473516,"y":13016.43466830023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bullishArrowHead","config":"{ \n\"codeName\": \"bullishArrowHead\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bullishArrowHead","id":"9ddcf2bf-57b5-489e-a7a5-496afd9b7301","savedPayload":{"position":{"x":14642.55236953215,"y":13499.861945306066},"targetPosition":{"x":14681.069393878104,"y":13408.688552965164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"c474fa25-64ec-470c-ab04-4132e0f3f9a3","savedPayload":{"position":{"x":14681.069393878104,"y":13408.688552965164},"targetPosition":{"x":14835.511165473516,"y":13016.43466830023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"period","config":"{ \n\"codeName\": \"period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.period","id":"4986b4c7-0753-4bab-bf62-906acab4c408","savedPayload":{"position":{"x":14329.018776064038,"y":13366.23591873779},"targetPosition":{"x":14493.157768528112,"y":13252.702501087604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"49eea75b-d5c8-44cd-afa7-8689127ac9ae","savedPayload":{"position":{"x":14493.157768528112,"y":13252.702501087604},"targetPosition":{"x":14835.511165473516,"y":13016.43466830023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trendMethod","config":"{ \n\"codeName\": \"trendMethod\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trendMethod","id":"8fdf87c8-a467-49a9-9b6a-e70cd12a2b93","savedPayload":{"position":{"x":14220.488111480323,"y":13036.859866732877},"targetPosition":{"x":14419.778101048061,"y":13030.109839394509},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6337c29e-3df8-4e54-82ab-a2cdeb800a1b","savedPayload":{"position":{"x":14419.778101048061,"y":13030.109839394509},"targetPosition":{"x":14835.511165473516,"y":13016.43466830023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"02d96f47-c6f0-4423-a144-4799f4023c99","savedPayload":{"position":{"x":14835.511165473516,"y":13016.43466830023},"targetPosition":{"x":13998.206916384088,"y":12502.65451533993},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","name":"One-Candle Patterns Code","code":"// -----------------------------------------------------------------------------------------------------------------------------\n// From here the variables that will be used during the definition of the patterns will be defined\n// -----------------------------------------------------------------------------------------------------------------------------\n\n/* The following variables could be modified by the user to adapt the indicator with his preferences\n(Please, read the documentation before) */\nlet N = 10 // Default value: 10 periods - \"N\" is the period to calculate the Moving Average of the trend line (between 5 and 20) \nvariable.trendMethod = \"SMA\" // Choose \"SMA\" or \"EMA\" to calculate the Moving Average of the trend line\n\n /* In order to avoid errors, the initial condition of the output variables are defined */\nvariable.name = \"No Pattern\" // The name of the one-candle pattern\nvariable.forecast = \"None\" // The forecast of the pattern\n\n/* \"Candles\" and \"Basic Candles\" are dependencies */\nlet candle = record.current // Calling \"Candles\"\nlet basicCandle = getElement ('basicCandles', candle) // Calling \"Basic Candles\"\n\n/* To define if the trend is Up or Down , it is necessary to average the candle closes of the last N candles. */\nif (variable.trendMethod === \"SMA\") {\n variable.lastN.push(candle.close) // Add the current Candle Close value to the \"lastN\" array\n if (variable.lastN.length > N) {\n variable.lastN.shift() // Remove the first element of the array to keep it at a maximun of N elements\n }\n let smaN\n if (variable.lastN.length < N) { // If the array \"lastN\" has not enough Candle Closes, the value zero for the smaN is defined\n smaN = 0 \n } else { \n let sum = 0 // Initialize sum variable \n for (let i = variable.lastN.length-N; i < variable.lastN.length; i++) { // Iterate through the last periods\n sum = sum + variable.lastN[i]\n } \n smaN = sum/N\n variable.lastMA.push(smaN) // Add the current SMA value to the \"lastMA\" array\n if (variable.lastMA.length > 4) {\n variable.lastMA.shift() // Remove the first element of the array to keep it at a maximun of 4 SMA's\n }\n }\n}\n\nif (variable.trendMethod === \"EMA\") {\n let k = 2 / (N + 1)\n variable.ema = candle.close * k + variable.previousEMA * (1-k)\n variable.previousEMA = variable.ema\n if (variable.ema === undefined) {\n variable.lastMA.push(0)\n } else { \n variable.lastMA.push(variable.ema) // Add the current EMA value to the \"lastMA\" array\n } \n if (variable.lastMA.length > 4) {\n variable.lastMA.shift() // Remove the first element of the array to keep it at a maximun of 4 EMA's\n }\n} \n\n/* Calling the 3 last and current Moving Averages of the \"lastMA\" array */\nlet ma3Back = variable.lastMA [0] \nlet ma2Back = variable.lastMA [1]\nlet ma1Back = variable.lastMA [2]\nlet trendLine = variable.lastMA [3]\n\n/* Defining trend (Uptrend or Downtrend). It is important to avoid \"undefined\" candles or ma's */\nlet trend = \"None\"\nlet candle1Back = mainDependency.records[index - 1] // Calling previous candle\nlet candle2Back = mainDependency.records[index - 2] // Calling 2 previous candle\nlet candle3Back = mainDependency.records[index - 3] // Calling 3 previous candle\n\nif (candle1Back !== undefined && candle2Back !== undefined && candle3Back !== undefined) { \n if (ma1Back !== undefined && ma2Back !== undefined && ma3Back !== undefined) { \n if (candle1Back.close >= ma1Back && candle1Back.open >= ma1Back) {\n if (candle2Back.close >= ma2Back && candle2Back.open >= ma2Back) {\n if (candle3Back.close >= ma3Back && candle3Back.open >= ma3Back) {\n trend = \"Uptrend\"\n }\n }\n }\n if (candle1Back.close <= ma1Back && candle1Back.open <= ma1Back) {\n if (candle2Back.close <= ma2Back && candle2Back.open <= ma2Back) {\n if (candle3Back.close <= ma3Back && candle3Back.open <= ma3Back) {\n trend = \"Downtrend\"\n }\n }\n }\n }\n}\n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here patterns will be defined\n// ----------------------------------------------------------------------------------------------------------------------------\n\n/* Patterns will be grouped as follows:\n1) Bearish continuation --> These patterns indicates that the current downtrend could continue.\n2) Bearish Reversal --> These patterns indicates that the current uptrend could turn to downtrend.\n3) Bullish Continuation --> These patterns indicates that the current uptrend could continue.\n4) Bullish Reversal --> These patterns indicates that the current downtrend could turn to uptrend. */\n\n/* \"BEARISH CONTINUATION\" group:\nThese patterns should appear during a downtrend to be valid*/\nif (trend === \"Downtrend\") {\n\n/* \"BEARISH STRONG LINE\" properties:\n1) Basic Candle can be \"Long Red Candle\", \"Red Marubozu\", \"Opening Red Marubozu\" or \"Closing Red Marubozu\".\n2) Average size: Long.\n3) The body has to be three times higher than the mean body.\n4) The body is placed below the trend line. */\n\nif (basicCandle.name === \"Long Red Candle\" || basicCandle.name === \"Red Marubozu\" || basicCandle.name === \"Opening Red Marubozu\" || basicCandle.name === \"Closing Red Marubozu\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.body >= basicCandle.meanBody*3) {\n if (candle.open <= trendLine) {\n variable.name = \"Bearish Strong Line\"\n variable.forecast = \"Bearish Continuation\"\n }\n }\n }\n}\n\n} // Closing \"Bearish Continuation\" group\n\n//-------------------------------------------------------\n\n/* \"BEARISH REVERSAL\" group:\nThese patterns should appear during an uptrend to be valid */\nif (trend === \"Uptrend\") {\n\n/* \"BEARISH BELT HOLD\" properties:\n1) Basic Candle is \"Opening Red Marubozu\". \n2) Average size: Long.\n3) Short lower shadow. (20 percent of the candle is defined, user can change it). */\n\nif (basicCandle.name === \"Opening Red Marubozu\") {\n if (basicCandle.size === \"Long\") {\n if(basicCandle.lowerShadow <= basicCandle.length*0.2) {\n variable.name = \"Bearish Belt Hold\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n}\n\n/* \"HANGING MAN\" properties:\n1) Basic Candle can be \"Green Spinning Top\", \" Red Spinning Top\" or \"High Wave\".\n2) Average size: Long.\n3) The upper shadow shorter than the body.\n4) Long lower shadow that is at least twice the size as the body.\n5) The body above the trend line. */\n\nif (basicCandle.name === \"Green Spinning Top\" || basicCandle.name === \"Red Spinning Top\" || basicCandle.name === \"High Wave\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.upperShadow <= basicCandle.body) {\n if (basicCandle.lowerShadow >= basicCandle.body*2) {\n if (candle.close >= trendLine && candle.open >= trendLine) {\n variable.name = \"Hanging Man\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n } \n}\n\n/* \"SHOOTING STAR\" properties:\n1) Basic Candle can be \"Green Spinning Top\", \" Red Spinning Top\" or \"High Wave\".\n2) Average size: Long.\n3) The lower shadow shorter than the body.\n4) Upper shadow that is at least two times longer than the body.\n5) The body above the trend line. */\n\nif (basicCandle.name === \"Green Spinning Top\" || basicCandle.name === \"Red Spinning Top\" || basicCandle.name === \"High Wave\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.lowerShadow <= basicCandle.body) {\n if (basicCandle.upperShadow >= basicCandle.body*2) {\n if (candle.close >= trendLine && candle.open >= trendLine) {\n variable.name = \"Shooting Star\"\n variable.forecast = \"Bearish Reversal\"\n } \n }\n }\n } \n}\n\n/* \"BEARISH STRONG LINE\" properties:\n1) Basic Candle can be \"Long Red Candle\", \"Red Marubozu\", \"Opening Red Marubozu\" or \"Closing Red Marubozu\". \n2) Average size: Long.\n3) The body has to be three times higher than the mean body.\n4) The opening price is above the trendline (Remember, if the body is below the trendline, belongs to bearish continuation). */\n\nif (basicCandle.name === \"Long Red Candle\" || basicCandle.name === \"Red Marubozu\" || basicCandle.name === \"Opening Red Marubozu\" || basicCandle.name === \"Closing Red Marubozu\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.body >= basicCandle.meanBody*3) {\n if (candle.open >= trendLine) {\n variable.name = \"Bearish Strong Line\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n} // Closing \"Bearish Reversal\" group\n\n//-------------------------------------------------------\n\n/* \"BULLISH CONTINUATION\" group:\nThese patterns should appear during an uptrend to be valid */\nif (trend === \"Uptrend\") {\n\n/* \"BULLISH STRONG LINE\" properties:\n1) Basic Candle can be \"Long Green Candle\", \"Green Marubozu\", \"Opening Green Marubozu\" or \"Closing Green Marubozu\".\n2) Average size: Long.\n3) The body has to be three times higher than the mean body.\n4) The body is placed above the trendline. */\n\nif (basicCandle.name === \"Long Green Candle\" || basicCandle.name === \"Green Marubozu\" || basicCandle.name === \"Opening Green Marubozu\" || basicCandle.name === \"Closing Green Marubozu\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.body >= basicCandle.meanBody*3) {\n if (candle.open >= trendLine) {\n variable.name = \"Bullish Strong Line\"\n variable.forecast = \"Bullish Continuation\"\n }\n }\n }\n}\n\n} // Closing \"Bullish Continuation\" group\n\n//-------------------------------------------------------\n\n/* \"BULLISH REVERSAL\" group:\nThese patterns should appear during a downtrend*/\nif (trend === \"Downtrend\") {\n\n/* \"BULLISH BELT HOLD\" properties:\n1) Basic Candle is \"Opening Green Marubozu\".\n2) Average size: Long.\n3) Short upper shadow. 20 percent of the candle length, user can change it value. */\n\nif (basicCandle.name === \"Opening Green Marubozu\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.upperShadow <= basicCandle.length*0.2) {\n variable.name = \"Bullish Belt Hold\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n}\n\n/* \"HAMMER\" properties:\n1) Basic Candle can be \"Green Spinning Top\", \" Red Spinning Top\" or \"High Wave\".\n2) Average size: Long.\n3) The upper shadow shorter than the body.\n4) Lower shadow at least two times longer than the body. \n5) The body has to be below the trend line. */\n\nif (basicCandle.name === \"Green Spinning Top\" || basicCandle.name === \"Red Spinning Top\" || basicCandle.name === \"High Wave\" ) {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.upperShadow <= basicCandle.body) {\n if (basicCandle.lowerShadow >= basicCandle.body*2) {\n if (candle.close <= trendLine && candle.open <= trendLine) {\n variable.name = \"Hammer\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n }\n } \n}\n \n/* \"BULLISH STRONG LINE\" properties:\n1) Basic Candle can be \"Long Green Candle\", \"Green Marubozu\", \"Opening Green Marubozu\" or \"Closing Green Marubozu\". \n2) Average size: Long.\n3) The body three times higher than the mean body.\n4) The opening price is below the trendline (Remember, if the body is placed above the trendline, belongs to bulliish continuation). */\n\nif (basicCandle.name === \"Long Green Candle\" || basicCandle.name === \"Green Marubozu\" || basicCandle.name === \"Opening Green Marubozu\" || basicCandle.name === \"Closing Green Marubozu\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.body >= basicCandle.meanBody*3) {\n if (candle.open <= trendLine) {\n variable.name = \"Bullish Strong Line\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n }\n}\n\n} // Closing \"Bullish Reversal\" group\n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here all the variables that will be written in the records are defined \n// ----------------------------------------------------------------------------------------------------------------------------\n\nvariable.trend = trend\nvariable.trendLine = trendLine\nvariable.period = N // This record will be for pattern visualization on the chart\nvariable.bearishArrowHead = candle.max*1.02 // This record will be for pattern visualization on the chart\nvariable.bullishArrowHead = candle.min*0.98 // This record will be for pattern visualization on the chart","id":"08e03d17-e3d4-4a60-9e76-8b0c246f6eab","savedPayload":{"position":{"x":14594.124021170985,"y":13323.171880631664},"targetPosition":{"x":14474.045168646944,"y":13232.41564425125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"45f3274c-5f6c-4730-83cc-3a4a80be5f11","savedPayload":{"position":{"x":14474.045168646944,"y":13232.41564425125},"targetPosition":{"x":14233.60814591393,"y":13052.913962672783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"/* It is necessary to define Moving Average of N Periods to define the trend of the market. */\nvariable.lastN = [ ] // Define lastN array to record the value of the last N candle closes (SMA)\nvariable.previousEMA = 0 // Initialize the variable previous enter to the main loop (EMA)\nvariable.lastMA = [0, 0, 0, 0] // Define lastMA array to record the value of the last 3 and current Moving Averages of N Periods","id":"dcdb9df8-32b5-4c90-b392-8eb147d91a1e","savedPayload":{"position":{"x":14179.943427637229,"y":13500.070059182952},"targetPosition":{"x":14198.295396972324,"y":13350.390311059506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0571fcc4-4f29-4c5b-8de0-54da0ee0dd44","savedPayload":{"position":{"x":14198.295396972324,"y":13350.390311059506},"targetPosition":{"x":14233.60814591393,"y":13052.913962672783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"61de6419-4760-4b57-a184-d5aac5114be8","savedPayload":{"position":{"x":14233.60814591393,"y":13052.913962672783},"targetPosition":{"x":13998.206916384088,"y":12502.65451533993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f3c0863c-ac0c-4fc0-b9ee-5f0f2bd722ea","savedPayload":{"position":{"x":13998.697632798014,"y":12503.088739756528},"targetPosition":{"x":13413.800171630588,"y":12369.642948734469},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"One-Candle Patterns","id":"14f83391-e4a6-470c-90c0-19763f83429b"}}},{"type":"Product Definition","name":"Two-Candles Patterns","config":"{\n \"codeName\": \"Two-Candles-Patterns\",\n \"singularVariableName\": \"twoCandlePattern\",\n \"pluralVariableName\": \"twoCandlePatterns\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"8c35ce52-9dee-4d20-92e6-50ba7fd2882b","savedPayload":{"position":{"x":13991.68430805685,"y":12525.110388391031},"targetPosition":{"x":13578.375673580053,"y":12639.385445487314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"4f1260c8-6d74-454e-963a-fa3ff910329c","savedPayload":{"position":{"x":13979.43792141321,"y":12789.730965402716},"targetPosition":{"x":13578.375673580053,"y":12639.385445487314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"Two-Candles Patterns Records","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"61a74369-9fad-4af6-99d8-c6e4821d4750","savedPayload":{"position":{"x":14397.448864287227,"y":12938.54167872223},"targetPosition":{"x":14398.57431392667,"y":13047.087038906997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d0948117-06a2-44e6-a9c6-eed01b943780","savedPayload":{"position":{"x":14398.57431392667,"y":13047.087038906997},"targetPosition":{"x":14401.43293617999,"y":13262.001287466961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"73933242-2824-4a63-bb50-d6043c1796a0","savedPayload":{"position":{"x":14573.324329664345,"y":12987.4496004336},"targetPosition":{"x":14515.513347637345,"y":13079.660243760527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d5bcbb61-ab9d-4908-91c4-0bbbdade33c0","savedPayload":{"position":{"x":14515.513347637345,"y":13079.660243760527},"targetPosition":{"x":14401.43293617999,"y":13262.001287466961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"name","config":"{ \n\"codeName\": \"name\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.name","id":"34cec9a0-7a4d-430c-a69e-b67150a8701d","savedPayload":{"position":{"x":14688.855806833966,"y":13126.777660862073},"targetPosition":{"x":14595.535099837201,"y":13170.609116021238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"c8a5978b-4038-4493-9c79-697d6508604f","savedPayload":{"position":{"x":14595.535099837201,"y":13170.609116021238},"targetPosition":{"x":14401.43293617999,"y":13262.001287466961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trend","config":"{ \n\"codeName\": \"trend\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trend","id":"d5af582e-67e7-4bd4-80c8-561fb4b28f0b","savedPayload":{"position":{"x":14716.540185906528,"y":13303.218324324693},"targetPosition":{"x":14614.233344349985,"y":13289.864546723746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"ceed7f12-8a54-43bf-9bd0-c9297493d6a1","savedPayload":{"position":{"x":14614.233344349985,"y":13289.864546723746},"targetPosition":{"x":14401.43293617999,"y":13262.001287466961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"forecast","config":"{ \n\"codeName\": \"forecast\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.forecast","id":"ce5d5a36-b9dd-404d-90c1-a6556cc15145","savedPayload":{"position":{"x":14644.14531214954,"y":13467.050579578145},"targetPosition":{"x":14565.346488666291,"y":13400.494255351496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"0e22e091-4ace-44ab-b1c9-aa386e928299","savedPayload":{"position":{"x":14565.346488666291,"y":13400.494255351496},"targetPosition":{"x":14401.43293617999,"y":13262.001287466961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bullishArrowHead","config":"{ \n\"codeName\": \"bullishArrowHead\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bullishArrowHead","id":"7095f60c-5b45-4f3c-b026-97c89a480135","savedPayload":{"position":{"x":14494.692357761083,"y":13565.7432998857},"targetPosition":{"x":14464.421344791252,"y":13467.137660008057},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"228d8125-2609-45c6-9cc7-e644c017ee0e","savedPayload":{"position":{"x":14464.421344791252,"y":13467.137660008057},"targetPosition":{"x":14401.43293617999,"y":13262.001287466961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bearishArrowHead","config":"{ \n\"codeName\": \"bearishArrowHead\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bearishArrowHead","id":"409212af-d4f2-4371-9cc2-4402e16c1889","savedPayload":{"position":{"x":14316.164781042502,"y":13567.960716325802},"targetPosition":{"x":14343.75339340866,"y":13468.630943490887},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"fa50b0e1-d8df-4a16-91c9-361541808fbf","savedPayload":{"position":{"x":14343.75339340866,"y":13468.630943490887},"targetPosition":{"x":14401.43293617999,"y":13262.001287466961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trendLine","config":"{ \n\"codeName\": \"trendLine\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trendLine","id":"7302e487-d514-4964-bdc3-9901ba318dea","savedPayload":{"position":{"x":14164.447956301166,"y":13472.996197322751},"targetPosition":{"x":14241.261495998879,"y":13404.475339213779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"64444857-2818-42de-a4c1-69c4d2804ebf","savedPayload":{"position":{"x":14241.261495998879,"y":13404.475339213779},"targetPosition":{"x":14401.43293617999,"y":13262.001287466961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"period","config":"{ \n\"codeName\": \"period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.period","id":"dfdef370-336e-4650-a441-4b65f7304047","savedPayload":{"position":{"x":14081.91430933151,"y":13311.980960060871},"targetPosition":{"x":14189.134617557567,"y":13295.142078284722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6dafe978-a5df-4f5b-a7ae-d496b83bcc94","savedPayload":{"position":{"x":14189.134617557567,"y":13295.142078284722},"targetPosition":{"x":14401.43293617999,"y":13262.001287466961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trendMethod","config":"{ \n\"codeName\": \"trendMethod\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trendMethod","id":"aea83576-35e1-4190-b284-faf3f696436b","savedPayload":{"position":{"x":14106.347426856079,"y":13130.982750518875},"targetPosition":{"x":14205.288939259488,"y":13174.787645810798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"552e82f9-e5e6-4802-9cf2-d9a7bbbc5a22","savedPayload":{"position":{"x":14205.288939259488,"y":13174.787645810798},"targetPosition":{"x":14401.43293617999,"y":13262.001287466961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"17ec2118-b9df-415f-b5f3-120fb3b3155a","savedPayload":{"position":{"x":14401.43293617999,"y":13262.001287466961},"targetPosition":{"x":13578.375673580053,"y":12639.385445487314},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","name":"Two-Candles Patterns Code","code":"// -----------------------------------------------------------------------------------------------------------------------------\n// From here the variables that will be used during the definition of the patterns will be defined\n// -----------------------------------------------------------------------------------------------------------------------------\n\n /* In order to avoid errors, the initial condition of the output variables are defined */\nvariable.name = \"No Pattern\" // The name of the two-candle pattern, for panel visualization\nvariable.forecast = \"None\" // The forecast of the two-candle pattern, for panel visualization\nvariable.trend = \"None\" // The trend of the current pattern, for panel visualization\nvariable.trendLine = 1 // This record will be for pattern shapes visualization on the chart\nvariable.bearishArrowHead = 1 // This record will be for pattern shapes visualization on the chart\nvariable.bullishArrowHead = 1 // This record will be for pattern shapes visualization on the chart\nvariable.period = 0 // The period of the trend MA, for panel visualization\n \n/* \"Candles\", \"Basic Candles\" and \"One-Candle Patterns\" are dependencies */\nlet candle = record.current // Calling \"Candles\"\nlet basicCandle = getElement ('basicCandles', candle) // Calling \"Basic Candles\" product\nlet oneCandlePattern = getElement ('oneCandlePatterns', candle) // Calling \"One-Candle Patterns\" product\n\n/* Some properties of the previous candle are needed (max, min, open and close) */\nlet candle1Back = mainDependency.records[index - 1] \n\n/* In order to avoid \"undefined\" elements during calculations */\nif (basicCandle !== undefined && oneCandlePattern !== undefined && candle1Back !== undefined) { \n\n/*Another properties of the previous candle are needed (trend, span, name and direction)*/\nvariable.records1Back.push(oneCandlePattern.trend, basicCandle.size, basicCandle.name, basicCandle.direction)\nlet trend1Back = \"None\"\nlet size1Back = \"None\"\nlet name1Back = \"None\"\nlet direction1Back = \"None\"\nif (variable.records1Back[0] !== undefined) {\n trend1Back = variable.records1Back[0] // Taking first element of the array (index 0)\n}\nif (variable.records1Back[1] !== undefined) {\n size1Back = variable.records1Back[1] // Taking second element of the array (index 1)\n}\nif (variable.records1Back[2] !== undefined) {\n name1Back = variable.records1Back[2] // Taking third element of the array (index 2)\n}\nif (variable.records1Back[3] !== undefined) {\n direction1Back = variable.records1Back[3] // Taking fourth element of the array (index 3)\n}\nif (variable.records1Back.length === 8) { // Array with 8 elements, 4 currents and 4 from previous\n variable.records1Back.splice(0, 4) // Remove the first 4 elements of the array\n} \n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here patterns will be defined\n// ----------------------------------------------------------------------------------------------------------------------------\n\n/* Patterns will be grouped as follows:\n1) Bearish continuation --> These patterns indicates that the current downtrend could continue.\n2) Bearish Reversal --> These patterns indicates that the current uptrend could turn to downtrend.\n3) Bullish Continuation --> These patterns indicates that the current uptrend could continue.\n4) Bullish Reversal --> These patterns indicates that the current downtrend could turn to uptrend. */\n\n/* \"BEARISH CONTINUATION\" group:\nThese patterns should appear during a downtrend to be valid*/\nif (trend1Back === \"Downtrend\") {\n\n/* \"LAST ENGULFING BOTTOM\" properties:\nIt is important to know that this pattern has a \"Bearish Continuation\" or \"Bullish Reversal\" forecast, depending on the context.\n--First candle\n1) Can be any green basic candle, excluding Four-Price Doji.\n--Second candle\n1) Can be the following red basic candles: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Candle's body engulfs the prior candle's body.\n3) Average size: long. */\n\nif (direction1Back === \"Bullish\" && name1Back !== \"Four-Price Doji\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.name === \"Red Candle\" || basicCandle.name === \"Long Red Candle\" || basicCandle.name === \"Red Marubozu\" || basicCandle.name === \"Opening Red Marubozu\" || basicCandle.name === \"Closing Red Marubozu\") {\n if (candle1Back.close <= candle.open && candle1Back.open > candle.close) {\n variable.name = \"Last Engulfing Bottom\"\n variable.forecast = \"Depends On The Context\"\n }\n }\n }\n}\n\n} // Closing \"Bearish Continuation\" group\n\n//-------------------------------------------------------\n\n/* \"BEARISH REVERSAL\" group:\nThese patterns should appear during an uptrend to be valid */\nif (trend1Back === \"Uptrend\") {\n\n/* \"BEARISH ENGULFING\" properties:\n--First candle\n1) Can be any green basic candle, excluding Four-Price Doji.\n--Second candle\n1) Can be the following red basic candles: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Candle's body engulfs the prior candle's body.\n3) Average size: long. */\n\nif (direction1Back === \"Bullish\" && name1Back !== \"Four-Price Doji\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.name === \"Red Candle\" || basicCandle.name === \"Long Red Candle\" || basicCandle.name === \"Red Marubozu\" || basicCandle.name === \"Opening Red Marubozu\" || basicCandle.name === \"Closing Red Marubozu\") {\n if (candle1Back.close <= candle.open && candle1Back.open > candle.close) {\n variable.name = \"Bearish Engulfing\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n/* \"BEARISH HARAMI\" properties:\n--First candle\n1) Can be the following green basic candles: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Average size: Long.\n--Second candle\n1) Can be any red basic candle, excluding Four-Price Doji.\n2) Candle's body engulfed by the previous candle's body. */\n\nif (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Green Marubozu\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\") {\n if (size1Back === \"Long\") {\n if (basicCandle.direction === \"Bearish\" && basicCandle.name !== \"Four-Price Doji\") {\n if (candle1Back.close >= candle.open && candle1Back.open < candle.close) {\n variable.name = \"Bearish Harami\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n/* \"BEARISH HARAMI CROSS\" properties:\n--First candle\n1) Can be the following green basic candles: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Average size: Long.\n--Second candle\n1) Should be a Classic Doji.\n2) Candle's body (including shadows) engulfed by the prior candle's body. */\n\nif (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Green Marubozu\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\") {\n if (size1Back === \"Long\") {\n if (basicCandle.name === \"Classic Doji\") {\n if (candle1Back.close >= candle.max && candle1Back.open <= candle.min) {\n variable.name = \"Bearish Harami Cross\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n/* \"BEARISH TASUKI LINE\" properties:\n--First candle\n1) Bullish candle.\n2) Average size: Long.\n--Second candle\n1) Bearish candle.\n2) Opening price below or equal to the previous closing price.\n3) Closing price below the previous opening price.\n4) Average size: Long. */\n\nif (direction1Back === \"Bullish\" && size1Back === \"Long\") {\n if (basicCandle.direction === \"Bearish\" && basicCandle.size === \"Long\") {\n if (candle.open <= candle1Back.close && candle.close < candle1Back.open) {\n variable.name = \"Bearish Tasuki Line\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n}\n\n/* \"DESCENDING HAWK\" properties:\n--First candle\n1) Can be the following green basic candles: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Average size: Long.\n--Second candle\n1) Can be the following green basic candles: Short Green Candle, Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Candle's body engulfed by the prior candle's body. */\n\nif (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Green Marubozu\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\") {\n if (size1Back === \"Long\") {\n if (basicCandle.name === \"Short Green Candle\" || basicCandle.name === \"Green Candle\" || basicCandle.name === \"Long Green Candle\" || basicCandle.name === \"Green Marubozu\" || basicCandle.name === \"Opening Green Marubozu\" || basicCandle.name === \"Closing Green Marubozu\") {\n if (candle1Back.close >= candle.close && candle1Back.open < candle.open) {\n variable.name = \"Descending Hawk\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n/* \"TWEEZERS TOP\" properties:\n--First candle\n1) Any candle except the Four-Price Doji.\n2) Could be \"Bullish\" or \"Bearish\" candle.\n--Second candle\n1) Any candle except the Four-Price Doji.\n2) Could be \"Bullish\" or \"Bearish\" candle.\n3) High price equal to the previous high price. */\n\nif (candle1Back.name !== \"Four-Price Doji\" && basicCandle.name !== \"Four-Price Doji\" && candle.max === candle1Back.max) {\n variable.name = \"Tweezers Top\"\n variable.forecast = \"Bearish Reversal\"\n}\n\n/* \"TWO-CANDLE SHOOTING STAR\" properties:\n--First candle\n1) Can be the following green basic candles: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Average size: Long.\n--Second candle\n1) Can be the following basic candles: Red Spinning Top, Green Spinning Top, High Wave. \n2) No lower shadow or the shadow cannot be longer than then body.\n3) Upper shadow at least 2.5 times longer than the body.\n4) The open above or at the level of the previous candle’s close. */\n\nif (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Green Marubozu\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\") {\n if (size1Back === \"Long\") {\n if (basicCandle.name === \"Red Spinning Top\" || basicCandle.name === \"Green Spinning Top\" || basicCandle.name === \"High Wave\") {\n if (basicCandle.lowerShadow <= basicCandle.body && basicCandle.upperShadow >= basicCandle.body*2.5 && candle.open >= candle1Back.close) {\n variable.name = \"Two-Candle Shooting Star\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n} // Closing \"Bearish Reversal\" group\n\n//-------------------------------------------------------\n\n/* \"BULLISH CONTINUATION\" group:\nThese patterns should appear during an uptrend to be valid */\nif (trend1Back === \"Uptrend\") {\n\n/* \"LAST ENGULFING TOP\" properties:\nIt is important to know that this pattern has a \"Bearish Continuation\" or \"Bullish Reversal\" forecast, depending on the context.\n--First candle\n1) Bearish candle, excluding \"Four-Price Doji\".\n--Second candle\n1) Can be the following green basic candles: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Candle's body engulfs the prior candle's body. \n3) Average size: Long. */\n\nif (direction1Back === \"Bearish\" && name1Back !== \"Four-Price Doji\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.name === \"Green Candle\" || basicCandle.name === \"Long Green Candle\" || basicCandle.name === \"Green Marubozu\" || basicCandle.name === \"Opening Green Marubozu\" || basicCandle.name === \"Closing Green Marubozu\") {\n if (candle1Back.close >= candle.open && candle1Back.open < candle.close) { \n variable.name = \"Last Engulfing Top\"\n variable.forecast = \"Depends On The Context\"\n }\n }\n }\n}\n\n} // Closing \"Bullish Continuation\" group\n \n//-------------------------------------------------------\n\n/* \"BULLISH REVERSAL\" group:\nThese patterns should appear during a downtrend*/\nif (trend1Back === \"Downtrend\") {\n\n/* \"BULLISH ENGULFING\" properties:\n--First candle\n1) Bearish candle, excluding \"Four-Price Doji\".\n--Second candle\n1) Can be the following green basic candles: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Candle's body engulfs the prior candle's body. \n3) Average size: Long. */\n\nif (direction1Back === \"Bearish\" && name1Back !== \"Four-Price Doji\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.name === \"Green Candle\" || basicCandle.name === \"Long Green Candle\" || basicCandle.name === \"Green Marubozu\" || basicCandle.name === \"Opening Green Marubozu\" || basicCandle.name === \"Closing Green Marubozu\") {\n if (candle1Back.close >= candle.open && candle1Back.open < candle.close) { \n variable.name = \"Bullish Engulfing\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n }\n}\n\n/* \"BULLISH HARAMI\" properties:\n--First candle\n1) Can be the following red basic candles: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Average size: Long.\n--Second candle\n1) Can be any green basic candle, excluding Four-Price Doji.\n2) Candle's body engulfed by the prior candle's body. */\n\nif (name1Back === \"Red Candle\" || name1Back === \"Long Red Candle\" || name1Back === \"Red Marubozu\" || name1Back === \"Opening Red Marubozu\" || name1Back === \"Closing Red Marubozu\") {\n if (size1Back === \"Long\") {\n if (basicCandle.direction === \"Bullish\" && basicCandle.name !== \"Four-Price Doji\") {\n if (candle1Back.close <= candle.open && candle1Back.open > candle.close) {\n variable.name = \"Bullish Harami\"\n variable.forecast = \"Bulliish Reversal\"\n }\n }\n }\n}\n\n/* \"BULLISH HARAMI CROSS\" properties:\n--First candle\n1) Can be the following red basic candles: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Average size: Long.\n--Second candle\n1) Should be a Classic Doji.\n2) Candle's body (including shadows) engulfed by the prior candle's body. */\n\nif (name1Back === \"Red Candle\" || name1Back === \"Long Red Candle\" || name1Back === \"Red Marubozu\" || name1Back === \"Opening Red Marubozu\" || name1Back === \"Closing Red Marubozu\") {\n if (size1Back === \"Long\") {\n if (basicCandle.name === \"Classic Doji\") {\n if (candle1Back.open >= candle.max && candle1Back.close <= candle.min) {\n variable.name = \"Bullish Harami Cross\"\n variable.forecast = \"Bulliish Reversal\"\n }\n }\n }\n}\n\n/* \"BULLISH TASUKI LINE\" properties:\n--First candle\n1) Bearish candle.\n2) Average size: Long.\n--Second candle\n1) Bullish candle.\n2) Opening price above or equal to the previous closing price\n3) Closing price above the previous opening price\n4) Average size: Long. */\n\nif (direction1Back === \"Bearish\" && size1Back === \"Long\") {\n if (basicCandle.direction === \"Bullish\" && basicCandle.size === \"Long\") {\n if (candle.open >= candle1Back.close && candle.close > candle1Back.open) {\n variable.name = \"Bullish Tasuki Line\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n}\n\n/* \"TWEEZERS BOTTOM\" properties:\n--First candle\n1) Any candle except the Four-Price Doji.\n2) Could be \"Bullish\" or \"Bearish\" candle.\n--Second candle\n1) Any candle except the Four-Price Doji.\n2) Could be \"Bullish\" or \"Bearish\" candle.\n3) Low price equal to the previous low price. */\n\nif (candle1Back.name !== \"Four-Price Doji\" && basicCandle.name !== \"Four-Price Doji\" && candle.min === candle1Back.min) {\n variable.name = \"Tweezers Bottom\"\n variable.forecast = \"Bullish Reversal\"\n}\n\n} // Closing \"Bullish Reversal\" group\n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here all the variables that will be written in the records are defined \n// ----------------------------------------------------------------------------------------------------------------------------\n\nvariable.trend = trend1Back\nvariable.trendLine = oneCandlePattern.trendLine\nvariable.period = oneCandlePattern.period\nvariable.trendMethod = oneCandlePattern.trendMethod\nvariable.bearishArrowHead = candle.max*1.02 \nvariable.bullishArrowHead = candle.min*0.98\n\n} // Closing initial \"undefined\" avoid\n","id":"0df41d0a-e490-427e-a355-9043e81eb3c1","savedPayload":{"position":{"x":13755.528447648896,"y":13447.512291420955},"targetPosition":{"x":13657.40757812238,"y":13256.98251395223},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"36593fb7-a9ab-4e3f-95ff-9c291e0f96f6","savedPayload":{"position":{"x":13657.40757812238,"y":13256.98251395223},"targetPosition":{"x":13559.105250630211,"y":13066.765095328212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"/* Because this pattern has two candles, the properties of the previous candle are needed. */\nvariable.records1Back = [ ] // The properties will be record in this array","id":"36e0e453-9058-45de-bcff-bc1e17fe7aa8","savedPayload":{"position":{"x":13327.969640462394,"y":13428.28742578026},"targetPosition":{"x":13443.54991779977,"y":13247.4281381943},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a939b7f6-400d-483f-9017-676c53451613","savedPayload":{"position":{"x":13443.54991779977,"y":13247.4281381943},"targetPosition":{"x":13559.105250630211,"y":13066.765095328212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"896e9b4a-04e0-497d-be61-af2c96bb9d86","savedPayload":{"position":{"x":13559.105250630211,"y":13066.765095328212},"targetPosition":{"x":13578.375673580053,"y":12639.385445487314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"29283392-6a01-4acd-8f41-328e92281980","savedPayload":{"position":{"x":13882.339098726425,"y":12743.52855565509},"targetPosition":{"x":13413.800171630588,"y":12369.642948734469},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Two-Candles Patterns","id":"3bf46641-3478-41fd-8407-0af20e72f30b"}}},{"type":"Product Definition","name":"Three-Candles Patterns","config":"{\n \"codeName\": \"Three-Candles-Patterns\",\n \"singularVariableName\": \"threeCandlePattern\",\n \"pluralVariableName\": \"threeCandlePatterns\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"087fc67e-78f9-4204-ba5e-8b670566a716","savedPayload":{"position":{"x":13851.175863746987,"y":12834.903173390992},"targetPosition":{"x":13429.193521637542,"y":12758.445533257673},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"b60cb94f-79c5-410c-b166-abc97d0f2bc3","savedPayload":{"position":{"x":13725.421448780311,"y":13068.420472961838},"targetPosition":{"x":13429.193521637542,"y":12758.445533257673},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"Three-Candles Patterns Records","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"1c316dcb-6d17-4108-ac41-f2d059685e5e","savedPayload":{"position":{"x":13712.542565581156,"y":12928.267567628754},"targetPosition":{"x":13646.2528020738,"y":13076.332916058009},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8328e683-8704-4b65-a774-63da0346e252","savedPayload":{"position":{"x":13646.2528020738,"y":13076.332916058009},"targetPosition":{"x":13515.517478056532,"y":13395.737992434184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"db0992c2-3fd6-4eb9-bbe9-40dad5ae53f6","savedPayload":{"position":{"x":13949.88679638202,"y":13123.784127773868},"targetPosition":{"x":13814.455798605359,"y":13209.582329209828},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fbef0b72-edde-4678-aca5-f405068271b3","savedPayload":{"position":{"x":13814.455798605359,"y":13209.582329209828},"targetPosition":{"x":13515.517478056532,"y":13395.737992434184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"name","config":"{ \n\"codeName\": \"name\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.name","id":"c397cffb-3ba1-435b-af0b-e920b319b23b","savedPayload":{"position":{"x":13968.27807280601,"y":13400.681599528385},"targetPosition":{"x":13866.011553168468,"y":13400.088148035276},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"2f7591d7-6877-4fde-aafb-1b9580f6ad60","savedPayload":{"position":{"x":13866.011553168468,"y":13400.088148035276},"targetPosition":{"x":13515.517478056532,"y":13395.737992434184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trend","config":"{ \n\"codeName\": \"trend\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trend","id":"ea48eb6b-63a3-444c-abd2-166097bb50c5","savedPayload":{"position":{"x":13892.98151652456,"y":13644.320307843322},"targetPosition":{"x":13808.232018963066,"y":13589.060834230897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"162b594a-c0a4-45c0-a52c-45682978d00a","savedPayload":{"position":{"x":13808.232018963066,"y":13589.060834230897},"targetPosition":{"x":13515.517478056532,"y":13395.737992434184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"forecast","config":"{ \n\"codeName\": \"forecast\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.forecast","id":"fd07c697-966a-4a3c-a123-61198f194538","savedPayload":{"position":{"x":13699.765694019978,"y":13808.449358024422},"targetPosition":{"x":13658.291154118539,"y":13715.873340430791},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"c1afb085-e6cd-4c27-af62-6765cb270c1d","savedPayload":{"position":{"x":13658.291154118539,"y":13715.873340430791},"targetPosition":{"x":13515.517478056532,"y":13395.737992434184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bullishArrowHead","config":"{ \n\"codeName\": \"bullishArrowHead\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bullishArrowHead","id":"dd019f19-f96a-4e88-a2e1-0159ba87fbe3","savedPayload":{"position":{"x":13445.396619806143,"y":13843.248853638384},"targetPosition":{"x":13462.243205171326,"y":13742.129893275567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"7059a7a5-021b-4277-80b9-8ef4c5387736","savedPayload":{"position":{"x":13462.243205171326,"y":13742.129893275567},"targetPosition":{"x":13515.517478056532,"y":13395.737992434184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bearishArrowHead","config":"{ \n\"codeName\": \"bearishArrowHead\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bearishArrowHead","id":"bc455c93-3c64-4cf4-ab94-0116da22c404","savedPayload":{"position":{"x":13217.155985388858,"y":13734.590390467974},"targetPosition":{"x":13283.265704468504,"y":13657.842210763614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"ec8749b1-4f5f-4163-b079-3dd9bec6eefa","savedPayload":{"position":{"x":13283.265704468504,"y":13657.842210763614},"targetPosition":{"x":13515.517478056532,"y":13395.737992434184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trendLine","config":"{ \n\"codeName\": \"trendLine\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trendLine","id":"54625f1a-aa6f-44a6-bf2e-bcf1f5210674","savedPayload":{"position":{"x":13081.677823664977,"y":13520.117187573072},"targetPosition":{"x":13178.99428754648,"y":13492.594215428027},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"7a781a34-4af5-4eb1-b237-1746ea2e69d0","savedPayload":{"position":{"x":13178.99428754648,"y":13492.594215428027},"targetPosition":{"x":13515.517478056532,"y":13395.737992434184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"period","config":"{ \n\"codeName\": \"period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.period","id":"fd68bb74-c7f3-48ff-941c-121031aaf6a1","savedPayload":{"position":{"x":13034.85048473964,"y":13241.29427636059},"targetPosition":{"x":13188.32743666253,"y":13290.020273219629},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b738ac34-a6eb-41c3-9871-0fc1732be676","savedPayload":{"position":{"x":13188.32743666253,"y":13290.020273219629},"targetPosition":{"x":13515.517478056532,"y":13395.737992434184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trendMethod","config":"{ \n\"codeName\": \"trendMethod\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trendMethod","id":"65ed19cf-524e-4ccd-94df-c60c9b41c40a","savedPayload":{"position":{"x":13180.451706501946,"y":13007.881107759697},"targetPosition":{"x":13286.409565424477,"y":13129.715292073894},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"32ff1b3e-acb0-4961-82b9-1dd37a795c41","savedPayload":{"position":{"x":13286.409565424477,"y":13129.715292073894},"targetPosition":{"x":13515.517478056532,"y":13395.737992434184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8a01e390-aea9-494b-a002-9c7498f23189","savedPayload":{"position":{"x":13515.464703469806,"y":13395.67991671183},"targetPosition":{"x":13429.193521637542,"y":12758.445533257673},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","name":"Three-Candles Patterns Code","code":"// -----------------------------------------------------------------------------------------------------------------------------\n// From here the variables that will be used during the definition of the patterns will be defined\n// -----------------------------------------------------------------------------------------------------------------------------\n\n /* In order to avoid errors, the initial condition of the output variables are defined */\nvariable.name = \"No Pattern\" // The name of the pattern, for panel visualization\nvariable.forecast = \"None\" // The forecast of the pattern, for panel visualization\nvariable.trend = \"None\" // The trend of the current pattern, for panel visualization\nvariable.trendLine = 1 // This record will be for pattern shapes visualization on the chart\nvariable.bearishArrowHead = 1 // This record will be for pattern shapes visualization on the chart\nvariable.bullishArrowHead = 1 // This record will be for pattern shapes visualization on the chart\nvariable.period = 0 // The period of the trend MA, for panel visualization\n\n/* \"Candles\", \"Basic Candles\" and \"One-Candle Patterns\" are dependencies */\nlet candle = record.current // Calling \"Candles\" records\nlet basicCandle = getElement ('basicCandles', candle) // Calling \"Basic Candles\" records\nlet oneCandlePattern = getElement ('oneCandlePatterns', candle) // Calling \"One-Candle Patterns\" records\n\n/* Some properties of the previous 2 candles are needed (max, min, open and close) */\nlet candle1Back = mainDependency.records[index - 1] \nlet candle2Back = mainDependency.records[index - 2] \n\n/* To avoid \"undefined\" elements during calculations, the following if() condition will include all the entire code */\nif (basicCandle !== undefined && oneCandlePattern !== undefined && candle1Back !== undefined && candle2Back !== undefined) { \n\n/*To define patterns, another properties of the 2 previous candles are needed (trend, size, name and direction)*/\nvariable.recordsBack.push(oneCandlePattern.trend, basicCandle.size, basicCandle.name, basicCandle.direction)\nlet trend1Back = \"None\"\nlet size1Back = \"None\"\nlet name1Back = \"None\"\nlet direction1Back = \"None\"\nlet trend2Back = \"None\"\nlet size2Back = \"None\"\nlet name2Back = \"None\"\nlet direction2Back = \"None\"\n\nif (variable.recordsBack[0] !== undefined) {\n trend2Back = variable.recordsBack[0] // Taking first element of the array (index 0)\n}\nif (variable.recordsBack[1] !== undefined) {\n size2Back = variable.recordsBack[1] // Taking second element of the array (index 1)\n}\nif (variable.recordsBack[2] !== undefined) {\n name2Back = variable.recordsBack[2] // Taking third element of the array (index 2)\n}\nif (variable.recordsBack[3] !== undefined) {\n direction2Back = variable.recordsBack[3] // Taking fourth element of the array (index 3)\n}\nif (variable.recordsBack[0] !== undefined) {\n trend1Back = variable.recordsBack[4] // Taking fifth element of the array (index 4)\n}\nif (variable.recordsBack[1] !== undefined) {\n size1Back = variable.recordsBack[5] // Taking sixth element of the array (index 5)\n}\nif (variable.recordsBack[2] !== undefined) {\n name1Back = variable.recordsBack[6] // Taking seventh element of the array (index 6)\n}\nif (variable.recordsBack[3] !== undefined) {\n direction1Back = variable.recordsBack[7] // Taking eigthth element of the array (index 7)\n}\nif (variable.recordsBack.length === 12) { // Array with 12 elements, 4 currents, 4 from 1 previous and 4 from 2 previous \n variable.recordsBack.splice(0, 4) // Remove the first 4 elements of the array\n} \n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here patterns will be defined\n// ----------------------------------------------------------------------------------------------------------------------------\n\n/* Patterns will be grouped as follows:\n1) Bearish continuation --> These patterns indicates that the current downtrend could continue.\n2) Bearish Reversal --> These patterns indicates that the current uptrend could turn to downtrend.\n3) Bullish Continuation --> These patterns indicates that the current uptrend could continue.\n4) Bullish Reversal --> These patterns indicates that the current downtrend could turn to uptrend. */\n\n/* \"BEARISH CONTINUATION\" group:\nThese patterns should appear during a downtrend to be valid*/\nif (trend2Back === \"Downtrend\") {\n\n} // Closing \"Bearish Continuation\" group\n\n//-------------------------------------------------------\n\n/* \"BEARISH REVERSAL\" group:\nThese patterns should appear during an uptrend to be valid */\nif (trend2Back === \"Uptrend\") {\n\n/* \"ADVANCE BLOCK\" properties:\n--First candle\n1) Any following bullish basic candle: Green Candle, Long Green Candle, Opening Green Marubozu, Closing Green Marubozu or Green Marubozu.\n2) Average size: Long.\n--Second candle\n1) Bullish.\n2) Body shortet than the previous candle.\n3) Shadows longer than the first candle.\n--Third Candle \n1) Bullish.\n2) Body shortet than the previous candle.\n3) Shadows longer than the first candle. */\n\nif (name2Back === \"Green Candle\" || name2Back === \"Long Green Candle\" || name2Back === \"Opening Green Marubozu\" || name2Back === \"Closing Green Marubozu\" || name2Back === \"Green Marubozu\") {\n if (size2Back === \"Long\") {\n if (direction1Back === \"Bullish\" && (candle1Back.close - candle1Back.open) < (candle2Back.close - candle2Back.open) ) {\n if (basicCandle.direction === \"Bullish\" && (candle.close-candle.open) < (candle1Back.close - candle1Back.open) ) {\n variable.name = \"Advance Block\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n/* \"DELIBERATION\" properties:\n--First candle\n1) Any following bullish basic candle: Green Candle, Long Green Candle, Opening Green Marubozu, Closing Green Marubozu or Green Marubozu.\n--Second candle\n1) Any following bullish basic candle: Green Candle, Long Green Candle, Opening Green Marubozu, Closing Green Marubozu or Green Marubozu.\n2) Opening price is above the previous opening price.\n3) Closing price is above the previous closing price.\n--Third Candle \n1) Any following bullish basic candle: Short Green Candle or Green Spinning Top.\n2) Opening price is slightly lower or higher than the previous closing price.\n3) Closing price is above the previous closing price.\n4) Average size: Short. */\n\nif (name2Back === \"Green Candle\" || name2Back === \"Long Green Candle\" || name2Back === \"Opening Green Marubozu\" || name2Back === \"Closing Green Marubozu\" || name2Back === \"Green Marubozu\") {\n if (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\" || name1Back === \"Green Marubozu\") {\n if (candle1Back.open > candle2Back.open && candle1Back.close > candle2Back.close) {\n if (basicCandle.name === \"Short Green Candle\" || basicCandle.name === \"Green Spinning Top\") { \n if (basicCandle.size === \"Short\" && candle.close > candle1Back.close) {\n variable.name = \"Deliberation\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n }\n}\n\n/* \"IDENTICAL THREE CROWS\" properties:\n--First candle\n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Average size: Long.\n--Second candle\n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Average size: Long. \n3) Opening price at or near the prior close.\n--Third Candle\n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Average size: Long. \n3) Opening price at or near the prior close.*/\n\nif (name2Back === \"Red Candle\" || name2Back === \"Long Red Candle\" || name2Back === \"Red Marubozu\" || name2Back === \"Opening Red Marubozu\" || name2Back === \"Closing Red Marubozu\") {\n if (name1Back === \"Red Candle\" || name1Back === \"Long Red Candle\" || name1Back === \"Red Marubozu\" || name1Back === \"Opening Red Marubozu\" || name1Back === \"Closing Red Marubozu\") {\n if (basicCandle.name === \"Red Candle\" || basicCandle.name === \"Long Red Candle\" || basicCandle.name === \"Red Marubozu\" || basicCandle.name === \"Opening Red Marubozu\" || basicCandle.name === \"Closing Red Marubozu\") {\n if (size2Back === \"Long\" && size1Back === \"Long\" && basicCandle.size === \"Long\") {\n variable.name = \"Identical Three Crows\"\n variable.forecast = \"Bulliish Reversal\"\n }\n }\n }\n}\n\n/* \"THREE INSIDE DOWN\" properties:\n1) Any following bullish basic candle: Green Candle, Long Green Candle, Opening Green Marubozu, Closing Green Marubozu or Green Marubozu.\n2) Average size: Long.\n--Second candle\n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu or Red Spinning Top.\n2) Candle body is engulfed by the prior candle body.\n--Third Candle \n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu or Red Spinning Top.\n2) Closing price is below the previous closing price. */\n\nif (name2Back === \"Green Candle\" || name2Back === \"Long Green Candle\" || name2Back === \"Opening Green Marubozu\" || name2Back === \"Closing Green Marubozu\" || name2Back === \"Green Marubozu\") {\n if (size2Back === \"Long\") {\n if (name1Back === \"Red Candle\" || name1Back === \"Long Red Candle\" || name1Back === \"Red Marubozu\" || name1Back === \"Opening Red Marubozu\" || name1Back === \"Closing Red Marubozu\" || name1Back === \"Red Spinning Top\") {\n if (candle1Back.close > candle2Back.open) {\n if (basicCandle.name === \"Red Candle\" || basicCandle.name === \"Long Red Candle\" || basicCandle.name === \"Red Marubozu\" || basicCandle.name === \"Opening Red Marubozu\" || basicCandle.name === \"Closing Red Marubozu\" || basicCandle.name === \"Red Spinning Top\") {\n variable.name = \"Three Inside Down\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n }\n}\n\n/* \"THREE OUTSIDE DOWN\" properties:\n1) Any bullish basic candle except \"Four-Price Doji\".\n--Second candle\n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Candle's body engulfs the prior candle's body. \n3) Average size: Long.\n--Third Candle \n1) Any bearish basic candle except \"Four-Price Doji\".\n2) Closing price is below the previous closing price. */ \n\nif (direction2Back === \"Bullish\" && name2Back !== \"Four-Price Doji\") {\n if (name1Back === \"Red Candle\" || name1Back === \"Long Red Candle\" || name1Back === \"Red Marubozu\" || name1Back === \"Opening Red Marubozu\" || name1Back === \"Closing Red Marubozu\") {\n if (candle1Back.close < candle2Back.open && size1Back === \"Long\") {\n if (basicCandle.direction === \"Bearish\" && basicCandle.name !== \"Four-Price Doji\") {\n variable.name = \"Three Outside Down\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n} // Closing \"Bearish Reversal\" group\n\n//-------------------------------------------------------\n\n/* \"BULLISH CONTINUATION\" group:\nThese patterns should appear during an uptrend to be valid */\nif (trend2Back === \"Uptrend\") {\n\n\n\n} // Closing \"Bullish Continuation\" group\n \n//-------------------------------------------------------\n\n/* \"BULLISH REVERSAL\" group:\nThese patterns should appear during a downtrend*/\nif (trend2Back === \"Downtrend\") {\n\n/* \"THREE INSIDE UP\" properties:\n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Average size: Long.\n--Second candle\n1) Any following bullish basic candle: Green Candle, Long Green Candle, Opening Green Marubozu, Closing Green Marubozu, Green Marubozu or Green Spinning Top.\n2) Candle body is engulfed by the prior candle body.\n--Third Candle \n1) Any following bullish basic candle: Green Candle, Long Green Candle, Opening Green Marubozu, Closing Green Marubozu, Green Marubozu or Green Spinning Top.\n2) Closing price is above the previous closing price. */\n\nif (name2Back === \"Red Candle\" || name2Back === \"Long Red Candle\" || name2Back === \"Opening Red Marubozu\" || name2Back === \"Closing Red Marubozu\" || name2Back === \"Red Marubozu\") {\n if (size2Back === \"Long\") {\n if (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Green Marubozu\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\" || name1Back === \"Green Spinning Top\") {\n if (candle1Back.close < candle2Back.open) {\n if (basicCandle.name === \"Green Candle\" || basicCandle.name === \"Long Green Candle\" || basicCandle.name === \"Green Marubozu\" || basicCandle.name === \"Opening Green Marubozu\" || basicCandle.name === \"Closing Green Marubozu\" || basicCandle.name === \"Green Spinning Top\") {\n variable.name = \"Three Inside Up\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n }\n }\n}\n\n/* \"THREE OUTSIDE UP\" properties:\n1) Any bearish basic candle except \"Four-Price Doji\".\n--Second candle\n1) Any following bearish basic candle: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Candle's body engulfs the prior candle's body. \n3) Average size: Long.\n--Third Candle \n1) Any bullish basic candle except \"Four-Price Doji\".\n2) Closing price is above the previous closing price. */ \n\nif (direction2Back === \"Bearish\" && name2Back !== \"Four-Price Doji\") {\n if (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Green Marubozu\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\") {\n if (candle1Back.close > candle2Back.open && size1Back === \"Long\") {\n if (basicCandle.direction === \"Bullish\" && basicCandle.name !== \"Four-Price Doji\") {\n variable.name = \"Three Outside Up\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n }\n}\n\n} // Closing \"Bullish Reversal\" group\n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here all the variables that will be written in the records are defined \n// ----------------------------------------------------------------------------------------------------------------------------\n\nvariable.trend = trend2Back\nvariable.trendLine = oneCandlePattern.trendLine\nvariable.period = oneCandlePattern.period\nvariable.trendMethod = oneCandlePattern.trendMethod\nvariable.bearishArrowHead = candle.max*1.02\nvariable.bullishArrowHead = candle.min*0.98 \n\n} // Closing initial \"undefined\" avoid","id":"e4b8fa10-e9de-48b2-871b-fd5bc2be8544","savedPayload":{"position":{"x":13144.217059892999,"y":13965.83677913675},"targetPosition":{"x":13134.711156761423,"y":13644.568772894461},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a3ca00b1-8cb7-40f0-9d46-e86bcae26607","savedPayload":{"position":{"x":13134.711156761423,"y":13644.568772894461},"targetPosition":{"x":13125.212433068718,"y":13323.386475315809},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"/* Because of these patterns have three candles, the properties of the previous 2 candles are needed. */\nvariable.recordsBack = [ ] // The properties will be recorded in this array","id":"69da8b87-1e7f-45f4-bd47-9a9b0a2057e0","savedPayload":{"position":{"x":12578.355481404851,"y":13661.337852891424},"targetPosition":{"x":12851.757409287682,"y":13492.383073897743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"20684141-89f4-4049-8130-5219f9934b94","savedPayload":{"position":{"x":12851.757409287682,"y":13492.383073897743},"targetPosition":{"x":13125.212433068718,"y":13323.386475315809},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1193e656-0fce-4d39-8f46-316d51a8bb95","savedPayload":{"position":{"x":13125.212433068718,"y":13323.386475315809},"targetPosition":{"x":13429.193521637542,"y":12758.445533257673},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1b6f79d8-d1ba-49e5-a808-42f71fba5657","savedPayload":{"position":{"x":13673.602530210288,"y":12909.838162752221},"targetPosition":{"x":13413.800171630588,"y":12369.642948734469},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Three-Candles Patterns","id":"acdb9c43-0859-42be-87b0-1a600cf513d4"}}}],"id":"254b4e7d-0ede-4208-8f0a-a486dd1a0faf","savedPayload":{"position":{"x":13414.087650454898,"y":12369.640922591701},"targetPosition":{"x":12814.727007364905,"y":12369.63867824567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"plotters":[{"type":"Plotter","name":"Candle Patterns","config":"{\n\"codeName\": \"Candle-Patterns\"\n}","modules":[{"type":"Plotter Module","name":"Basic Candles","config":"{ \n\"codeName\": \"Basic-Candles\"\n}","shapes":{"type":"Shapes","name":"Basic Candles","chartPoints":[{"type":"Chart Points","name":"Candle Min","points":[{"type":"Point","name":"Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)/2\ny = record.previous.min","id":"da43ce7b-c3af-49b7-a95c-025494c40a6e","savedPayload":{"position":{"x":13110.282195608808,"y":12195.993125135315},"targetPosition":{"x":12994.216483409029,"y":12473.561191110108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"84c72ff6-fc9c-4869-bd8e-ea8404df0a0f","savedPayload":{"position":{"x":12994.216483409029,"y":12473.561191110108},"targetPosition":{"x":12875.686282346545,"y":12756.617284659204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.min","id":"ee2ef08b-7253-46c1-a087-49feaeae0bd9","savedPayload":{"position":{"x":13360.512048293152,"y":12387.825358003378},"targetPosition":{"x":13120.78983976505,"y":12569.94772595611},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b077cf02-7c54-4023-9182-4de81327ff35","savedPayload":{"position":{"x":13120.78983976505,"y":12569.94772595611},"targetPosition":{"x":12875.686282346545,"y":12756.617284659204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2fe07cd8-53ed-4533-a747-05b3906b4755","savedPayload":{"position":{"x":12903.35665618375,"y":12941.244625580674},"targetPosition":{"x":12638.251559040937,"y":13284.489270665135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Mean Length","points":[{"type":"Point","name":"Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)/2\ny = record.previous.min + record.previous.meanLength","id":"c8b8a404-7746-458c-91a4-61d13114c824","savedPayload":{"position":{"x":13674.981762867,"y":12515.834200242623},"targetPosition":{"x":13350.408326842142,"y":12803.009587984676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2b2ed3d9-a095-403e-8ed8-62f7e73e9f1c","savedPayload":{"position":{"x":13350.408326842142,"y":12803.009587984676},"targetPosition":{"x":13026.034916144921,"y":13090.580745141615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.min + record.meanLength","id":"372fd8b2-9346-4c0a-8465-cb4e2ece90bc","savedPayload":{"position":{"x":13875.784481988381,"y":12917.116743276165},"targetPosition":{"x":13450.964955069625,"y":13003.942012342452},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"628ac9f1-445b-4638-8fd5-aa62f6fd859c","savedPayload":{"position":{"x":13450.964955069625,"y":13003.942012342452},"targetPosition":{"x":13026.034916144921,"y":13090.580745141615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"86515391-e909-4183-a0bb-2f6b6d452087","savedPayload":{"position":{"x":13026.32617734286,"y":13090.269643847589},"targetPosition":{"x":12638.251559040937,"y":13284.489270665135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"avgRef","points":[{"type":"Point","name":"Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)/2\ny = record.previous.min + record.previous.avgRef","id":"a231e15f-f884-4326-983c-001a812d2e08","savedPayload":{"position":{"x":13580.10769680475,"y":12824.10424286175},"targetPosition":{"x":13290.893379454068,"y":12905.233289258958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"41fec509-9af9-4ef7-b947-90382ad5ee5d","savedPayload":{"position":{"x":13290.893379454068,"y":12905.233289258958},"targetPosition":{"x":12992.173878231406,"y":12989.990520965595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.min + record.avgRef","id":"69d5c95c-ec98-4656-9057-54ab9fc64a1e","savedPayload":{"position":{"x":13590.10808012087,"y":13126.102004076825},"targetPosition":{"x":13290.760663334695,"y":13065.4114836196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9703549c-8ca6-4293-b4ec-83a4f899c806","savedPayload":{"position":{"x":13290.760663334695,"y":13065.4114836196},"targetPosition":{"x":12992.173878231406,"y":12989.990520965595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3fe2df6a-c2fe-4f66-8529-c959ba7dd010","savedPayload":{"position":{"x":13072.217717807223,"y":13277.909182153533},"targetPosition":{"x":12638.251559040937,"y":13284.489270665135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Candle Min","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 0.4,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"e19cb185-a1ae-4595-b22f-825aabca3f15","savedPayload":{"position":{"x":13899.325606638775,"y":13502.189010473792},"targetPosition":{"x":13466.00072215658,"y":13484.298235988446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"0c47d43f-28d6-4e22-bcab-ce1a5ba86b13","savedPayload":{"position":{"x":13466.00072215658,"y":13484.298235988446},"targetPosition":{"x":13032.449816978864,"y":13466.686272810779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin","id":"aeb3daf8-939c-472d-a653-bb053b201626","savedPayload":{"position":{"x":13426.266173008375,"y":13648.937392022211},"targetPosition":{"x":13032.449816978864,"y":13466.686272810779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin","id":"84c72ff6-fc9c-4869-bd8e-ea8404df0a0f"}}},{"type":"Polygon Vertex","name":"End","id":"cf9cdbd9-6a4d-4958-906f-555616617a31","savedPayload":{"position":{"x":13342.014716791742,"y":13763.213382731363},"targetPosition":{"x":13032.449816978864,"y":13466.686272810779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End","id":"b077cf02-7c54-4023-9182-4de81327ff35"}}}],"id":"0e718fe1-b457-49b9-a1cd-118bd9f111f4","savedPayload":{"position":{"x":13032.449816978864,"y":13466.686272810779},"targetPosition":{"x":12638.251559040937,"y":13284.489270665135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Mean Length","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 0.4,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"51351071-cd12-48d6-aa76-8755bd6322b4","savedPayload":{"position":{"x":13666.999573020848,"y":14050.185199194617},"targetPosition":{"x":13284.381789462774,"y":13846.123152442866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"8487ed2a-b56a-4d41-895c-569bf127fedc","savedPayload":{"position":{"x":13284.381789462774,"y":13846.123152442866},"targetPosition":{"x":12917.019884931922,"y":13619.27300968067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin","id":"4db28f87-f9dd-4420-87bc-d210699f8a01","savedPayload":{"position":{"x":13192.651560435994,"y":13954.60359648621},"targetPosition":{"x":12917.019884931922,"y":13619.27300968067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin","id":"2b2ed3d9-a095-403e-8ed8-62f7e73e9f1c"}}},{"type":"Polygon Vertex","name":"End","id":"a4fa988d-7488-4bf4-90f9-2ee6fd939475","savedPayload":{"position":{"x":13065.544990465556,"y":14023.63434542394},"targetPosition":{"x":12917.019884931922,"y":13619.27300968067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End","id":"628ac9f1-445b-4638-8fd5-aa62f6fd859c"}}}],"id":"32840d7a-c3be-4c5c-8604-ddec41903a8e","savedPayload":{"position":{"x":12917.019884931922,"y":13619.27300968067},"targetPosition":{"x":12638.251559040937,"y":13284.489270665135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"avgRef","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 0.4,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n }\n}","id":"dc036a39-a0d7-43f5-ae0a-f49f80566f35","savedPayload":{"position":{"x":13230.635172673361,"y":14417.838540049765},"targetPosition":{"x":12974.46818008449,"y":14067.767486930798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"332c16f9-b95f-4a5d-a0a7-825adec7b190","savedPayload":{"position":{"x":12974.46818008449,"y":14067.767486930798},"targetPosition":{"x":12740.57905830516,"y":13706.618600196296},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin","id":"6df63fd0-62c4-49d9-aa62-43e4ebb9e2a3","savedPayload":{"position":{"x":12843.079505076355,"y":14128.428182546144},"targetPosition":{"x":12740.57905830516,"y":13706.618600196296},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin","id":"41fec509-9af9-4ef7-b947-90382ad5ee5d"}}},{"type":"Polygon Vertex","name":"End","id":"66870fcb-caf4-4e03-9db2-4f7fc0f8cae2","savedPayload":{"position":{"x":12674.343097693361,"y":14135.709533911344},"targetPosition":{"x":12740.57905830516,"y":13706.618600196296},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End","id":"9703549c-8ca6-4293-b4ec-83a4f899c806"}}}],"id":"b504d259-c93f-4dfa-af0f-ffc23b3e616d","savedPayload":{"position":{"x":12740.57905830516,"y":13706.618600196296},"targetPosition":{"x":12638.251559040937,"y":13284.489270665135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"dc146044-78b9-46c7-8e91-47619c333444","savedPayload":{"position":{"x":12638.251559040937,"y":13284.489270665135},"targetPosition":{"x":12214.033103903701,"y":13194.687290359432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Basic Candles","config":"{ \n\"codeName\": \"Basic-Candles\"\n}","panelData":[{"type":"Panel Data","name":"Name","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.name","id":"b94b9d37-1552-4a01-b14b-4897feedd52f","savedPayload":{"position":{"x":12950.934519170283,"y":13190.023846682448},"targetPosition":{"x":12531.916496280735,"y":13304.099017127919},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6c416dd7-5075-49cc-b404-52fcca7a314c","savedPayload":{"position":{"x":12531.916496280735,"y":13304.099017127919},"targetPosition":{"x":11997.218136246851,"y":13378.24956362483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Size","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.size","id":"7ab67e86-30c4-4d4c-9048-156de658edaa","savedPayload":{"position":{"x":12818.121609097314,"y":13639.906577355407},"targetPosition":{"x":12410.56426043612,"y":13508.565731215724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"84776c6f-6b89-4889-a119-f407ad30a39b","savedPayload":{"position":{"x":12410.56426043612,"y":13508.565731215724},"targetPosition":{"x":11997.218136246851,"y":13378.24956362483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Upper Shadow %","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.upperShadowPercent","id":"1515c038-a83d-4a33-803d-93f19df9d44f","savedPayload":{"position":{"x":12551.685585087776,"y":14045.079212062652},"targetPosition":{"x":12274.567066006663,"y":13711.72979369883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5bfcb212-425e-481c-93ee-4ddfe0365d04","savedPayload":{"position":{"x":12274.567066006663,"y":13711.72979369883},"targetPosition":{"x":11997.218136246851,"y":13378.24956362483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Body %","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.bodyPercent","id":"13fb74c6-4320-4755-b896-e3c15b507a8c","savedPayload":{"position":{"x":12103.605016969954,"y":14239.488944626926},"targetPosition":{"x":12050.378830236372,"y":13808.968344141702},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4787fdfa-a1b4-4252-be30-1c394ae28d23","savedPayload":{"position":{"x":12050.378830236372,"y":13808.968344141702},"targetPosition":{"x":11997.218136246851,"y":13378.24956362483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Lower Shadow %","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.lowerShadowPercent","id":"621a0736-7286-407f-be3c-7f9237c1c4e6","savedPayload":{"position":{"x":11621.729505574809,"y":14160.576139425897},"targetPosition":{"x":11809.396154587215,"y":13769.515187812322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"10570ba3-e68c-4aa0-83b9-daed46a61cee","savedPayload":{"position":{"x":11809.396154587215,"y":13769.515187812322},"targetPosition":{"x":11997.218136246851,"y":13378.24956362483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Parameter: \"Nbodies\"","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.Nbodies","id":"1ae2288d-9479-410d-9243-21430691060b","savedPayload":{"position":{"x":11258.374361905973,"y":13833.36156291626},"targetPosition":{"x":11627.688712830246,"y":13605.87956361189},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"34f62235-4353-4f23-8630-841fbee8665b","savedPayload":{"position":{"x":11627.688712830246,"y":13605.87956361189},"targetPosition":{"x":11997.218136246851,"y":13378.24956362483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Parameter: \"dojiFactor\" %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.dojiFactor","id":"165f2a72-3eac-4740-8445-c9aa133e0ae4","savedPayload":{"position":{"x":11129.516280374326,"y":13362.337376733321},"targetPosition":{"x":11563.267092073813,"y":13370.303761730143},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8fe17343-1ae4-4ba8-990a-bfe78872d998","savedPayload":{"position":{"x":11563.267092073813,"y":13370.303761730143},"targetPosition":{"x":11997.218136246851,"y":13378.24956362483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Parameter: \"sizeFactor\" %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeFactor","id":"6d9b3c35-1b25-46fb-8b16-ad551cf53493","savedPayload":{"position":{"x":11331.231078352494,"y":12922.89489083281},"targetPosition":{"x":11636.606888539442,"y":13137.046255151176},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6c2bd7cb-ea2a-48fe-9328-6e7cf397abe5","savedPayload":{"position":{"x":11636.606888539442,"y":13137.046255151176},"targetPosition":{"x":11997.218136246851,"y":13378.24956362483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Parameter: \"Nlengths\"","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.Nlengths","id":"42a0f840-7b6f-4e38-ac13-442a40767d70","savedPayload":{"position":{"x":11651.534439863974,"y":12582.697671998065},"targetPosition":{"x":11824.373947648963,"y":12980.413002185789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"26d5e8b8-22fc-40fc-bb28-c3d5272845d0","savedPayload":{"position":{"x":11824.373947648963,"y":12980.413002185789},"targetPosition":{"x":11997.218136246851,"y":13378.24956362483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Average Size Method","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeMethod","id":"867e57e7-6fc8-4e52-834d-f20f077f37fd","savedPayload":{"position":{"x":12101.999381865786,"y":12464.470191722743},"targetPosition":{"x":12032.629345417734,"y":12893.170450699885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"87d0bb1d-c8e2-47a6-85cc-4e747082305f","savedPayload":{"position":{"x":12032.629345417734,"y":12893.170450699885},"targetPosition":{"x":11997.218136246851,"y":13378.24956362483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7e6dc8b6-bdeb-4f1a-bf39-a239fa100200","savedPayload":{"position":{"x":11997.218136246851,"y":13378.24956362483},"targetPosition":{"x":12214.033103903701,"y":13194.687290359432},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"09e0a24c-ead1-40c6-9e43-72b46e4294c5","savedPayload":{"position":{"x":12400.221306912656,"y":12940.15860808845},"targetPosition":{"x":12215.097662258146,"y":12369.642313054686},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"One-Candle Patterns","config":"{ \n\"codeName\": \"One-Candle-Patterns\"\n}","shapes":{"type":"Shapes","name":"One-Candle Pattern","chartPoints":[{"type":"Chart Points","name":"Bearish Arrow","points":[{"type":"Point","name":"-1-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)\ny = record.bearishArrowHead*1.01","id":"e175ab11-cdad-4cfa-bc0e-e9d68fd56419","savedPayload":{"position":{"x":12966.787314972113,"y":12876.25269471072},"targetPosition":{"x":12753.134832990097,"y":13111.60081755436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f0e4b32d-4c67-44a9-b215-46dd2de99095","savedPayload":{"position":{"x":12753.134832990097,"y":13111.60081755436},"targetPosition":{"x":12326.43647678502,"y":13582.024177115438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-2-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bearishArrowHead*1.01","id":"ad0cc3d5-6a7a-45ac-b7db-41438836230c","savedPayload":{"position":{"x":13188.698583313915,"y":13175.382547406043},"targetPosition":{"x":12900.901006833647,"y":13310.765620915807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"23dc1c78-a55d-482c-be5b-f6893e5294c7","savedPayload":{"position":{"x":12900.901006833647,"y":13310.765620915807},"targetPosition":{"x":12326.43647678502,"y":13582.024177115438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-3-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bearishArrowHead*1.03","id":"16686f17-868b-406b-a3ab-f4e9dbc8a002","savedPayload":{"position":{"x":13279.42407252152,"y":13536.112534371197},"targetPosition":{"x":12961.563746018306,"y":13551.287785059485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2c9565a9-49d5-4f04-91ad-a073ff669a46","savedPayload":{"position":{"x":12961.563746018306,"y":13551.287785059485},"targetPosition":{"x":12326.43647678502,"y":13582.024177115438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-4-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bearishArrowHead*1.03","id":"1c6a13b5-d22c-4c2f-b692-a387651394ab","savedPayload":{"position":{"x":13224.043950707455,"y":13903.667239582453},"targetPosition":{"x":12924.463794507476,"y":13796.300601228326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fe68b37d-0bf8-4347-9e38-4013fa120bc8","savedPayload":{"position":{"x":12924.463794507476,"y":13796.300601228326},"targetPosition":{"x":12326.43647678502,"y":13582.024177115438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-5-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bearishArrowHead*1.01","id":"7de429ac-d43c-4d1f-970a-69cfdcbc1fcc","savedPayload":{"position":{"x":13032.693144240584,"y":14223.005189380063},"targetPosition":{"x":12797.046356190494,"y":14009.011846078227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a4e0461d-4d13-4a01-9332-3fd94aa6647a","savedPayload":{"position":{"x":12797.046356190494,"y":14009.011846078227},"targetPosition":{"x":12326.43647678502,"y":13582.024177115438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-6-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end+(record.end-record.begin)\ny = record.bearishArrowHead*1.01","id":"e156a730-1cf6-40a2-8272-8ba1ff8534a7","savedPayload":{"position":{"x":12733.447295989048,"y":14444.410884497265},"targetPosition":{"x":12597.601234203059,"y":14156.747031613177},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7b205c46-8dc6-4e0b-bca6-258a84c652c5","savedPayload":{"position":{"x":12597.601234203059,"y":14156.747031613177},"targetPosition":{"x":12326.43647678502,"y":13582.024177115438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-7-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.bearishArrowHead","id":"459bad82-6540-43d3-8c3c-73b119d4dfed","savedPayload":{"position":{"x":12372.086359532801,"y":14534.785266190853},"targetPosition":{"x":12356.993283442112,"y":14216.765673787346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"71bbdced-dc17-4019-a104-c37bd0ecdc98","savedPayload":{"position":{"x":12356.993283442112,"y":14216.765673787346},"targetPosition":{"x":12326.43647678502,"y":13582.024177115438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fccdf048-5edb-4377-9f0e-27a4c21e21f1","savedPayload":{"position":{"x":12354.671762636895,"y":13513.06381252222},"targetPosition":{"x":11790.262266933503,"y":13310.57843518611},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Trend Line","points":[{"type":"Point","name":"Trend Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.trendLine\n","id":"1b000a16-4143-4eb2-8b9c-9661ddad10ed","savedPayload":{"position":{"x":12564.49479407521,"y":13763.907165468876},"targetPosition":{"x":12257.881406036257,"y":13679.151491924744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0a20e46e-5535-4cb4-b34a-36faec96f4da","savedPayload":{"position":{"x":12257.881406036257,"y":13679.151491924744},"targetPosition":{"x":11951.44041975115,"y":13594.17043507212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Trend Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.trendLine","id":"f159d45c-483e-4c46-b6ef-b1cd92d00cb7","savedPayload":{"position":{"x":12111.507160177891,"y":14210.237987526816},"targetPosition":{"x":12031.576519139893,"y":13902.108203546411},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"58992b77-271b-4362-b130-251d65d8be55","savedPayload":{"position":{"x":12031.576519139893,"y":13902.108203546411},"targetPosition":{"x":11951.44041975115,"y":13594.17043507212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"edfd4367-c042-4fa0-8f77-31c218fc8d78","savedPayload":{"position":{"x":12006.161461237527,"y":13529.99650656366},"targetPosition":{"x":11790.262266933503,"y":13310.57843518611},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Bullish Arrow","points":[{"type":"Point","name":"-1-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)\ny = record.bullishArrowHead*0.99","id":"fba54222-55a5-437d-92aa-756f08eecdb5","savedPayload":{"position":{"x":12885.354952421774,"y":14028.932565732335},"targetPosition":{"x":12567.912568288637,"y":14008.926367535896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e8aef2aa-6d0c-42f5-82a4-7c37a157c8de","savedPayload":{"position":{"x":12567.912568288637,"y":14008.926367535896},"targetPosition":{"x":11933.81300443226,"y":13968.648511355981},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-2-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bullishArrowHead*0.99","id":"187b028b-4696-4003-90a1-b5beb8ea2ba3","savedPayload":{"position":{"x":12789.899498575149,"y":14388.773065057232},"targetPosition":{"x":12504.145401287908,"y":14248.446399478964},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b834103f-86be-4106-ac3c-47b326cd97b4","savedPayload":{"position":{"x":12504.145401287908,"y":14248.446399478964},"targetPosition":{"x":11933.81300443226,"y":13968.648511355981},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-3-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bullishArrowHead*0.97","id":"e51d81db-649a-4b1b-8aad-ed2f24a9affa","savedPayload":{"position":{"x":12563.882243896085,"y":14684.427811136024},"targetPosition":{"x":12353.660014438548,"y":14445.50648548972},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"54a1db25-bb24-4ef9-bcbd-1432848214fd","savedPayload":{"position":{"x":12353.660014438548,"y":14445.50648548972},"targetPosition":{"x":11933.81300443226,"y":13968.648511355981},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-4-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bullishArrowHead*0.97","id":"bb33e4b3-dea3-40d4-89d6-4621df7a0ae0","savedPayload":{"position":{"x":12241.933905765505,"y":14871.320693196978},"targetPosition":{"x":12139.245567248166,"y":14570.18492023167},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"800f7290-42e1-4970-a00c-f4a5cd30312b","savedPayload":{"position":{"x":12139.245567248166,"y":14570.18492023167},"targetPosition":{"x":11933.81300443226,"y":13968.648511355981},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-5-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bullishArrowHead*0.99","id":"a09fda1a-0f15-45d2-92ae-e780435c819e","savedPayload":{"position":{"x":11873.45260293195,"y":14920.782241319534},"targetPosition":{"x":11893.483288525418,"y":14602.982567952586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"4a83e816-d5a4-47f0-a30e-3f5e5320147e","savedPayload":{"position":{"x":11893.483288525418,"y":14602.982567952586},"targetPosition":{"x":11933.81300443226,"y":13968.648511355981},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-6-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end+(record.end-record.begin)\ny = record.bullishArrowHead*0.99","id":"1b3b0d03-bef2-4f05-9460-19227819c39b","savedPayload":{"position":{"x":11513.550259808453,"y":14824.757072203447},"targetPosition":{"x":11653.794136719385,"y":14539.1797776978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c6806791-bd74-413b-b86c-61383118cba6","savedPayload":{"position":{"x":11653.794136719385,"y":14539.1797776978},"targetPosition":{"x":11933.81300443226,"y":13968.648511355981},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-7-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.bullishArrowHead","id":"931a9f64-7ec8-44a9-8555-6d03477940f2","savedPayload":{"position":{"x":11217.948185681664,"y":14598.528591439175},"targetPosition":{"x":11456.881715231077,"y":14388.474815937436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2f37b7be-5805-419d-a0a8-3e2fc5eb9e3b","savedPayload":{"position":{"x":11456.881715231077,"y":14388.474815937436},"targetPosition":{"x":11933.81300443226,"y":13968.648511355981},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2591fc95-5f9b-409c-8816-11a3dd6d8581","savedPayload":{"position":{"x":11984.034903042007,"y":13878.26836015154},"targetPosition":{"x":11790.262266933503,"y":13310.57843518611},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Bearish Arrow","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.forecast === \"Bearish Reversal\" || record.forecast === \"Bearish Continuation\" ","id":"c92a8076-d1cf-4879-88e2-16f89c878649","savedPayload":{"position":{"x":12236.919464866973,"y":14249.652779563718},"targetPosition":{"x":11652.814775683713,"y":13999.315916591968},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n\"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.5,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"921dec12-c29d-4656-8ea5-6e5fc7c92469","savedPayload":{"position":{"x":12387.847506262078,"y":14606.982338984702},"targetPosition":{"x":12142.688138862082,"y":14404.326269880788},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"d7ca8665-bd27-421a-be79-e5b48c4ffd3f","savedPayload":{"position":{"x":12142.688138862082,"y":14404.326269880788},"targetPosition":{"x":11652.814775683713,"y":13999.315916591968},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n }\n}","id":"2360af46-2b53-4cea-a26b-019107a4e4dc","savedPayload":{"position":{"x":12186.54012938603,"y":14789.682064850464},"targetPosition":{"x":12008.458799711643,"y":14525.941864105822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"1beaa578-f91e-4eb9-bcc9-4c979bc9a87c","savedPayload":{"position":{"x":12008.458799711643,"y":14525.941864105822},"targetPosition":{"x":11652.814775683713,"y":13999.315916591968},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"-1-","id":"6c20d736-5211-4bb1-836f-3ee460ba4f75","savedPayload":{"position":{"x":11718.157168676698,"y":14631.841471928905},"targetPosition":{"x":11652.814775683713,"y":13999.315916591968},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-1-","id":"f0e4b32d-4c67-44a9-b215-46dd2de99095"}}},{"type":"Polygon Vertex","name":"-2-","id":"7870b61d-7540-4f9e-9d57-bc8b54dab81d","savedPayload":{"position":{"x":11624.89657207443,"y":14635.27817700005},"targetPosition":{"x":11652.814775683713,"y":13999.315916591968},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-2-","id":"23dc1c78-a55d-482c-be5b-f6893e5294c7"}}},{"type":"Polygon Vertex","name":"-3-","id":"666d3979-14ea-4753-8d79-36a17ace6f3b","savedPayload":{"position":{"x":11533.282209875164,"y":14624.848411462455},"targetPosition":{"x":11652.814775683713,"y":13999.315916591968},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-3-","id":"2c9565a9-49d5-4f04-91ad-a073ff669a46"}}},{"type":"Polygon Vertex","name":"-4-","id":"58596c8a-eab1-4926-a006-4c287afd7096","savedPayload":{"position":{"x":11444.700485827816,"y":14601.338808958732},"targetPosition":{"x":11652.814775683713,"y":13999.315916591968},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-4-","id":"fe68b37d-0bf8-4347-9e38-4013fa120bc8"}}},{"type":"Polygon Vertex","name":"-5-","id":"e6073465-7636-48b1-8344-5e82a314ac1d","savedPayload":{"position":{"x":11360.688968006954,"y":14565.417394796572},"targetPosition":{"x":11652.814775683713,"y":13999.315916591968},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-5-","id":"a4e0461d-4d13-4a01-9332-3fd94aa6647a"}}},{"type":"Polygon Vertex","name":"-6-","id":"87a3f44c-5361-4e65-a9f3-1c5a461600b0","savedPayload":{"position":{"x":11282.814859785536,"y":14517.89628046691},"targetPosition":{"x":11652.814775683713,"y":13999.315916591968},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-6-","id":"7b205c46-8dc6-4e0b-bca6-258a84c652c5"}}},{"type":"Polygon Vertex","name":"-7-","id":"dcd75a74-5275-4181-8801-8bb625ab2545","savedPayload":{"position":{"x":11205.520630976142,"y":14451.976917011723},"targetPosition":{"x":11652.814775683713,"y":13999.315916591968},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-7-","id":"71bbdced-dc17-4019-a104-c37bd0ecdc98"}}}],"id":"d503108f-9b4f-4aae-9e99-b92e1aedb6c8","savedPayload":{"position":{"x":11718.599893852523,"y":13906.926183828604},"targetPosition":{"x":11790.262266933503,"y":13310.57843518611},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Trend Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"8b777f5a-b79e-45c5-ae85-3693d946b577","savedPayload":{"position":{"x":11755.795556519053,"y":14229.537455705191},"targetPosition":{"x":11691.974757580614,"y":13936.342768517028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"9ec3107b-2173-46b2-b831-7144910bd2ed","savedPayload":{"position":{"x":11691.974757580614,"y":13936.342768517028},"targetPosition":{"x":11641.97832566877,"y":13585.037797474235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Trend Line End","id":"66cee7f2-7951-4c23-84d9-8af01e017f34","savedPayload":{"position":{"x":11447.825494466091,"y":13889.138205582145},"targetPosition":{"x":11641.97832566877,"y":13585.037797474235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Trend Line End","id":"58992b77-271b-4362-b130-251d65d8be55"}}},{"type":"Polygon Vertex","name":"Trend Line Begin","id":"968f315d-33e1-4866-b061-42fb61964ad6","savedPayload":{"position":{"x":11292.792146015767,"y":13673.018585806767},"targetPosition":{"x":11641.97832566877,"y":13585.037797474235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Trend Line Begin","id":"0a20e46e-5535-4cb4-b34a-36faec96f4da"}}}],"id":"2e0fe089-4dae-4895-b46b-4f5e07ac9926","savedPayload":{"position":{"x":11624.330112647156,"y":13570.418318077336},"targetPosition":{"x":11790.262266933503,"y":13310.57843518611},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Bullish Arrow","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.forecast === \"Bullish Reversal\" || record.forecast === \"Bullish Continuation\" ","id":"e32f5ba5-7e4e-4b48-9255-985134b35bf6","savedPayload":{"position":{"x":11357.63811093109,"y":14316.804391704909},"targetPosition":{"x":11186.964671412112,"y":13702.781651538931},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n\"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.5,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"dc4c1077-65c7-4b76-8420-ea719c497798","savedPayload":{"position":{"x":11173.099002965217,"y":14658.344153738277},"targetPosition":{"x":11177.049699712854,"y":14338.541827205963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"8f42597b-9b13-46a3-b926-bf79570f27eb","savedPayload":{"position":{"x":11177.049699712854,"y":14338.541827205963},"targetPosition":{"x":11186.964671412112,"y":13702.781651538931},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n }\n}","id":"97b28c5b-f7c8-41d4-82a7-2db8fe1bd533","savedPayload":{"position":{"x":10901.876094837367,"y":14615.545589640153},"targetPosition":{"x":10997.225461465077,"y":14310.93055541748},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"fc855e6f-bb88-485d-8079-99653a800a36","savedPayload":{"position":{"x":10997.225461465077,"y":14310.93055541748},"targetPosition":{"x":11186.964671412112,"y":13702.781651538931},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"-1-","id":"6f1e0d8e-a1a7-4fc7-ab01-d2e4d5cb0807","savedPayload":{"position":{"x":10731.981428910665,"y":14147.842086652166},"targetPosition":{"x":11186.964671412112,"y":13702.781651538931},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-1-","id":"e8aef2aa-6d0c-42f5-82a4-7c37a157c8de"}}},{"type":"Polygon Vertex","name":"-2-","id":"7bff821f-bb70-4a9f-89b9-74bd1dcde01f","savedPayload":{"position":{"x":10670.759484440765,"y":14076.638430646832},"targetPosition":{"x":11186.964671412112,"y":13702.781651538931},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-2-","id":"b834103f-86be-4106-ac3c-47b326cd97b4"}}},{"type":"Polygon Vertex","name":"-3-","id":"e14aa3b8-ed10-4358-87db-81d0f2fd580c","savedPayload":{"position":{"x":10620.33615940385,"y":13998.902027767084},"targetPosition":{"x":11186.964671412112,"y":13702.781651538931},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-3-","id":"54a1db25-bb24-4ef9-bcbd-1432848214fd"}}},{"type":"Polygon Vertex","name":"-4-","id":"fa285436-8897-49fa-81bf-bcf727e368de","savedPayload":{"position":{"x":10582.000977310683,"y":13915.198526121476},"targetPosition":{"x":11186.964671412112,"y":13702.781651538931},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-4-","id":"800f7290-42e1-4970-a00c-f4a5cd30312b"}}},{"type":"Polygon Vertex","name":"-5-","id":"cb9d9c29-9b41-42ba-bb6b-3e63dcbd253e","savedPayload":{"position":{"x":10557.67319869675,"y":13826.913879151696},"targetPosition":{"x":11186.964671412112,"y":13702.781651538931},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-5-","id":"4a83e816-d5a4-47f0-a30e-3f5e5320147e"}}},{"type":"Polygon Vertex","name":"-6-","id":"56ccabba-f502-416d-92ff-da20ee90ddf3","savedPayload":{"position":{"x":10548.680698550143,"y":13736.272153476048},"targetPosition":{"x":11186.964671412112,"y":13702.781651538931},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-6-","id":"c6806791-bd74-413b-b86c-61383118cba6"}}},{"type":"Polygon Vertex","name":"-7-","id":"688ebb45-45d7-4e2a-bfbc-f0bb799b2360","savedPayload":{"position":{"x":10553.135485379262,"y":13634.736848053803},"targetPosition":{"x":11186.964671412112,"y":13702.781651538931},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-7-","id":"2f37b7be-5805-419d-a0a8-3e2fc5eb9e3b"}}}],"id":"2cd7982f-ecc8-41ce-8b27-ede1d1ad7d8c","savedPayload":{"position":{"x":11279.330376373975,"y":13626.297597199202},"targetPosition":{"x":11790.262266933503,"y":13310.57843518611},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"0a02f148-0036-4d1c-aac5-a4e4ee5c25e7","savedPayload":{"position":{"x":11790.289595781247,"y":13310.758361954844},"targetPosition":{"x":11727.758891013418,"y":12713.932689713762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"One-Candle Patterns","config":"{ \n\"codeName\": \"One-Candle-Patterns\"\n}","panelData":[{"type":"Panel Data","name":"Pattern Name","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.name","id":"664bc7e8-5c76-4dea-82ad-acef43eaa2da","savedPayload":{"position":{"x":11503.24166222379,"y":13184.55543328808},"targetPosition":{"x":11427.667996814627,"y":12893.673944833996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"119aa231-cf07-40a8-98ee-679e8d4e99ce","savedPayload":{"position":{"x":11427.667996814627,"y":12893.673944833996},"targetPosition":{"x":11405.71685621441,"y":12570.897585009838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Direction","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trend","id":"d4102f27-72a7-412c-b9b4-244e3ef5100d","savedPayload":{"position":{"x":11045.261667304432,"y":13051.792456705032},"targetPosition":{"x":11225.271673051557,"y":12811.312124155755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2409211c-7992-4b1a-8273-25ce7e284b72","savedPayload":{"position":{"x":11225.271673051557,"y":12811.312124155755},"targetPosition":{"x":11405.71685621441,"y":12570.897585009838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Forecast","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.forecast","id":"19821933-d558-452e-9dc0-5df90116fcc1","savedPayload":{"position":{"x":10805.053787332723,"y":12588.731544187445},"targetPosition":{"x":11105.158566719565,"y":12579.758005317319},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e240fe07-156c-4766-8fe0-f123781842ef","savedPayload":{"position":{"x":11105.158566719565,"y":12579.758005317319},"targetPosition":{"x":11405.71685621441,"y":12570.897585009838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Method","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trendMethod","id":"7541dc87-d801-48bc-b2d8-391e605c0c5e","savedPayload":{"position":{"x":11017.11827995778,"y":12112.733939621294},"targetPosition":{"x":11211.203537965612,"y":12341.740726136326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e0c328ed-84b7-43a2-bfb2-274d1b1d3bae","savedPayload":{"position":{"x":11211.203537965612,"y":12341.740726136326},"targetPosition":{"x":11405.71685621441,"y":12570.897585009838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Period","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"6b66e742-6d13-43d6-a00f-a6ed9d070249","savedPayload":{"position":{"x":11520.496218124354,"y":11981.382989475835},"targetPosition":{"x":11463.211475389435,"y":12276.13478941713},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e457e54c-7cbb-4866-9b67-3bb71332e2c5","savedPayload":{"position":{"x":11463.211475389435,"y":12276.13478941713},"targetPosition":{"x":11405.71685621441,"y":12570.897585009838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Value","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trendLine","id":"e33fff96-c3f5-4376-8d90-4feafc0df08b","savedPayload":{"position":{"x":11926.287700064935,"y":12232.983607795482},"targetPosition":{"x":11659.762930427045,"y":12370.396923435794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"42d2f0eb-65fa-4358-af25-484517433307","savedPayload":{"position":{"x":11659.762930427045,"y":12370.396923435794},"targetPosition":{"x":11405.71685621441,"y":12570.897585009838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d2af80dc-8d17-42f3-b88a-af1726c59859","savedPayload":{"position":{"x":11405.71685621441,"y":12570.897585009838},"targetPosition":{"x":11727.758891013418,"y":12713.932689713762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"14f83391-e4a6-470c-90c0-19763f83429b","savedPayload":{"position":{"x":11729.82337237241,"y":12721.99448120311},"targetPosition":{"x":12215.097662258146,"y":12369.642313054686},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Two-Candles Patterns","config":"{ \n\"codeName\": \"Two-Candles Patterns\"\n}","shapes":{"type":"Shapes","name":"Two-Candles Patterns","chartPoints":[{"type":"Chart Points","name":"Bearish Arrow","points":[{"type":"Point","name":"-1-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)\ny = record.bearishArrowHead*1.01","id":"7dc394b3-ca00-4738-a554-420b393aa4f8","savedPayload":{"position":{"x":12081.669025957919,"y":13228.392352613271},"targetPosition":{"x":11791.55312586025,"y":13097.721183581312},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7291f0d5-78e1-4d7c-a73d-2068e491344b","savedPayload":{"position":{"x":11791.55312586025,"y":13097.721183581312},"targetPosition":{"x":11212.187861029877,"y":12837.026324270992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-2-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bearishArrowHead*1.01","id":"cfdc25f2-f236-4fd0-a09c-11759c6a4e07","savedPayload":{"position":{"x":11865.558890901124,"y":13531.377115242738},"targetPosition":{"x":11647.364506388607,"y":13299.452236485917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"87745033-dc64-4d86-8579-29cf35124f9a","savedPayload":{"position":{"x":11647.364506388607,"y":13299.452236485917},"targetPosition":{"x":11212.187861029877,"y":12837.026324270992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-3-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bearishArrowHead*1.04","id":"f30d7904-2195-4bab-93d4-d5083000fe6b","savedPayload":{"position":{"x":11550.176871809374,"y":13728.931502827954},"targetPosition":{"x":11437.462553360401,"y":13431.390771359956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"87fc7e3a-455f-49bb-ab44-fc06ba845f00","savedPayload":{"position":{"x":11437.462553360401,"y":13431.390771359956},"targetPosition":{"x":11212.187861029877,"y":12837.026324270992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-4-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bearishArrowHead*1.04","id":"f29b34a0-8604-4cde-b52c-237a422ccb31","savedPayload":{"position":{"x":11183.744630904748,"y":13790.501521813234},"targetPosition":{"x":11193.199657975041,"y":13472.326136769318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2bab7192-a08c-4461-b36e-f369491dfd42","savedPayload":{"position":{"x":11193.199657975041,"y":13472.326136769318},"targetPosition":{"x":11212.187861029877,"y":12837.026324270992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-5-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bearishArrowHead*1.01","id":"20df1362-6e33-45c3-bf48-c4a76035b428","savedPayload":{"position":{"x":10820.975126093734,"y":13706.937999852966},"targetPosition":{"x":10951.501038153674,"y":13416.645609543397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3c9d80e6-ad20-4b47-a8f5-1bf19a0b80e2","savedPayload":{"position":{"x":10951.501038153674,"y":13416.645609543397},"targetPosition":{"x":11212.187861029877,"y":12837.026324270992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-6-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end+(record.end-record.begin)\ny = record.bearishArrowHead*1.01","id":"64a8c860-86c4-40da-9ca0-d5e424ade757","savedPayload":{"position":{"x":10517.731202702806,"y":13490.880507975051},"targetPosition":{"x":10749.511929986398,"y":13272.72308501484},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c6a0d716-6534-453b-9d0f-a8c6faa502f0","savedPayload":{"position":{"x":10749.511929986398,"y":13272.72308501484},"targetPosition":{"x":11212.187861029877,"y":12837.026324270992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-7-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.bearishArrowHead","id":"62fc84a0-55e5-452c-b72d-4c91174ea85a","savedPayload":{"position":{"x":10320.372953175593,"y":13175.106787574574},"targetPosition":{"x":10617.961927952889,"y":13062.323461507352},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fef9ea3b-84c5-43cd-9602-96f8170065bd","savedPayload":{"position":{"x":10617.961927952889,"y":13062.323461507352},"targetPosition":{"x":11212.187861029877,"y":12837.026324270992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9020cd21-a011-4b59-aec4-56469a5ce79f","savedPayload":{"position":{"x":11213.38664517409,"y":12801.495822030201},"targetPosition":{"x":11231.392565405375,"y":12201.823501341809},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Trend Line","points":[{"type":"Point","name":"Trend Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.trendLine\n","id":"aed6b5b4-e6e5-4e5c-a13b-1d707c93c15a","savedPayload":{"position":{"x":11113.507682889966,"y":13142.659108467704},"targetPosition":{"x":11099.45874563968,"y":12824.284507716442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"691a374a-ab65-4dc5-b788-979162f87185","savedPayload":{"position":{"x":11099.45874563968,"y":12824.284507716442},"targetPosition":{"x":11084.830629780052,"y":12484.184133961455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Trend Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.trendLine","id":"9b3acde4-3360-4869-8685-c08922111bd5","savedPayload":{"position":{"x":10529.632935158039,"y":12839.196166765416},"targetPosition":{"x":10797.891779860525,"y":12667.866308006245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1e2e8a50-8a93-4696-9ed7-f8ea1da75c5e","savedPayload":{"position":{"x":10797.891779860525,"y":12667.866308006245},"targetPosition":{"x":11084.830629780052,"y":12484.184133961455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7af63af8-4b52-4c71-b427-906a0eaa37d2","savedPayload":{"position":{"x":11092.916769534419,"y":12468.478518411388},"targetPosition":{"x":11231.392565405375,"y":12201.823501341809},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Bullish Arrow","points":[{"type":"Point","name":"-1-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)\ny = record.bullishArrowHead*0.99","id":"7cd5ae63-7c34-4ce3-84f9-8de0b14fbafa","savedPayload":{"position":{"x":10959.299595238615,"y":13506.956982416497},"targetPosition":{"x":10880.512397454935,"y":13198.619706443913},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"38b0018b-d162-492e-90b3-604efc79c16e","savedPayload":{"position":{"x":10880.512397454935,"y":13198.619706443913},"targetPosition":{"x":10723.008860865695,"y":12582.979038431424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-2-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bullishArrowHead*0.99","id":"3221cc5c-76c7-4335-bc1c-a781c1c7a6f4","savedPayload":{"position":{"x":10588.109178089904,"y":13527.18531335486},"targetPosition":{"x":10633.099332738737,"y":13212.082254254374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"66a65473-db28-42bf-8491-3497a35cc42b","savedPayload":{"position":{"x":10633.099332738737,"y":13212.082254254374},"targetPosition":{"x":10723.008860865695,"y":12582.979038431424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-3-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bullishArrowHead*0.96","id":"5dbc1498-0b47-48cd-a37c-1a4f19f6c788","savedPayload":{"position":{"x":10236.942369559187,"y":13403.573252047388},"targetPosition":{"x":10399.134866069639,"y":13129.728681760449},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cb37189b-fdb7-4cd7-aa78-1dfd71c8e614","savedPayload":{"position":{"x":10399.134866069639,"y":13129.728681760449},"targetPosition":{"x":10723.008860865695,"y":12582.979038431424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-4-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bullishArrowHead*0.96","id":"1bcf2a18-15b8-4a2c-b7b6-1167c00ff5e9","savedPayload":{"position":{"x":9959.818895956381,"y":13154.961562770124},"targetPosition":{"x":10214.505855448824,"y":12964.10500188361},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"aae0a6cc-e05b-402f-800c-807df07b1f37","savedPayload":{"position":{"x":10214.505855448824,"y":12964.10500188361},"targetPosition":{"x":10723.008860865695,"y":12582.979038431424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-5-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bullishArrowHead*0.99","id":"8011dcdd-1c27-4bcb-8ea6-3344573aa905","savedPayload":{"position":{"x":9798.912670083482,"y":12819.251404014767},"targetPosition":{"x":10107.310366028767,"y":12740.442011037694},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a5f609bd-7162-4155-8778-d085b000ef04","savedPayload":{"position":{"x":10107.310366028767,"y":12740.442011037694},"targetPosition":{"x":10723.008860865695,"y":12582.979038431424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-6-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end+(record.end-record.begin)\ny = record.bullishArrowHead*0.99","id":"37fa781c-1480-47fd-a862-39894108dc46","savedPayload":{"position":{"x":9778.739027659627,"y":12448.092869156477},"targetPosition":{"x":10093.864823424738,"y":12493.063795838532},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6edd83d4-739a-4651-9204-2a0f617e1256","savedPayload":{"position":{"x":10093.864823424738,"y":12493.063795838532},"targetPosition":{"x":10723.008860865695,"y":12582.979038431424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-7-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.bullishArrowHead","id":"65f9907e-ab3a-4ef4-a902-b8204afc49d7","savedPayload":{"position":{"x":9902.427525553674,"y":12096.831762536813},"targetPosition":{"x":10176.248977247458,"y":12259.029136441137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b98d1777-f3a2-4bcc-8312-6d89d1c6662e","savedPayload":{"position":{"x":10176.248977247458,"y":12259.029136441137},"targetPosition":{"x":10723.008860865695,"y":12582.979038431424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"20da6d05-3166-4ba2-bd3c-b21770ae1958","savedPayload":{"position":{"x":10751.570622963045,"y":12561.484678552326},"targetPosition":{"x":11231.392565405375,"y":12201.823501341809},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Bearish Arrow","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.forecast === \"Bearish Reversal\" || record.forecast === \"Bearish Continuation\" ","id":"bebcd91f-d028-4d8c-bc25-317d19f1b955","savedPayload":{"position":{"x":10547.225810413958,"y":12958.070836037545},"targetPosition":{"x":10605.874193045394,"y":12323.99630942156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n\"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.5,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"8d874a62-2e9c-43e9-9632-e93a7e25d8c3","savedPayload":{"position":{"x":10255.774920760836,"y":13211.578104172451},"targetPosition":{"x":10371.835461133287,"y":12915.08309564192},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6e948385-96a4-40ba-b8db-eb11d079aad1","savedPayload":{"position":{"x":10371.835461133287,"y":12915.08309564192},"targetPosition":{"x":10605.874193045394,"y":12323.99630942156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 3,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n }\n}","id":"65302767-1fb6-4a56-b981-4ca898e3fc1f","savedPayload":{"position":{"x":10020.659017568367,"y":13075.667244235188},"targetPosition":{"x":10215.521348619495,"y":12825.329035117491},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6365634c-c753-4be1-9f4e-d81a88690b96","savedPayload":{"position":{"x":10215.521348619495,"y":12825.329035117491},"targetPosition":{"x":10605.874193045394,"y":12323.99630942156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"-1-","id":"952bb578-3cc3-4576-b7dd-a043f2b4d719","savedPayload":{"position":{"x":10023.48833843214,"y":12581.564788637845},"targetPosition":{"x":10605.874193045394,"y":12323.99630942156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-1-","id":"7291f0d5-78e1-4d7c-a73d-2068e491344b"}}},{"type":"Polygon Vertex","name":"-2-","id":"bc4ee454-7c2b-4808-a99c-002afae05d39","savedPayload":{"position":{"x":9991.618731545608,"y":12493.602361444893},"targetPosition":{"x":10605.874193045394,"y":12323.99630942156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-2-","id":"87745033-dc64-4d86-8579-29cf35124f9a"}}},{"type":"Polygon Vertex","name":"-3-","id":"6ad8a90c-4d6e-47ed-a4be-ae3a5684b26d","savedPayload":{"position":{"x":9972.902987588292,"y":12403.16211735402},"targetPosition":{"x":10605.874193045394,"y":12323.99630942156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-3-","id":"87fc7e3a-455f-49bb-ab44-fc06ba845f00"}}},{"type":"Polygon Vertex","name":"-4-","id":"a49d5c98-f797-45ec-832a-c89de61c5030","savedPayload":{"position":{"x":9967.760318235112,"y":12311.561734142659},"targetPosition":{"x":10605.874193045394,"y":12323.99630942156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-4-","id":"2bab7192-a08c-4461-b36e-f369491dfd42"}}},{"type":"Polygon Vertex","name":"-5-","id":"5ee4c947-de43-4212-adf9-28d28820da8e","savedPayload":{"position":{"x":9975.866852210052,"y":12220.490826727377},"targetPosition":{"x":10605.874193045394,"y":12323.99630942156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-5-","id":"3c9d80e6-ad20-4b47-a8f5-1bf19a0b80e2"}}},{"type":"Polygon Vertex","name":"-6-","id":"c6e490ea-bdfd-4738-84e7-dcd8e1078605","savedPayload":{"position":{"x":9998.040124198185,"y":12132.058684612664},"targetPosition":{"x":10605.874193045394,"y":12323.99630942156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-6-","id":"c6a0d716-6534-453b-9d0f-a8c6faa502f0"}}},{"type":"Polygon Vertex","name":"-7-","id":"2aaa39e8-be04-491e-862e-b1bb03c8d29d","savedPayload":{"position":{"x":10036.898820107854,"y":12038.160441326048},"targetPosition":{"x":10605.874193045394,"y":12323.99630942156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-7-","id":"fef9ea3b-84c5-43cd-9602-96f8170065bd"}}}],"id":"49566c3d-5038-4737-a68a-4f1f99a53296","savedPayload":{"position":{"x":10642.267838474036,"y":12317.753793122203},"targetPosition":{"x":11231.392565405375,"y":12201.823501341809},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Trend Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"5d90400c-c680-452a-b5d6-dd01f3483a67","savedPayload":{"position":{"x":10337.348569543352,"y":12458.139436776717},"targetPosition":{"x":10611.682653683314,"y":12297.471357014598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6ab5c6b9-d4e4-4b61-a135-17bb3a0204cb","savedPayload":{"position":{"x":10611.682653683314,"y":12297.471357014598},"targetPosition":{"x":10923.100711187111,"y":12121.738134005163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Trend Line End","id":"d99e5489-5977-4ca7-9d11-a65feaeb3e1e","savedPayload":{"position":{"x":10569.715657597928,"y":12029.772984986777},"targetPosition":{"x":10923.100711187111,"y":12121.738134005163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Trend Line End","id":"1e2e8a50-8a93-4696-9ed7-f8ea1da75c5e"}}},{"type":"Polygon Vertex","name":"Trend Line Begin","id":"0f83b930-9073-41a5-a3e6-59ea6b3ebafd","savedPayload":{"position":{"x":10728.471841649476,"y":11858.17832191613},"targetPosition":{"x":10923.100711187111,"y":12121.738134005163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Trend Line Begin","id":"691a374a-ab65-4dc5-b788-979162f87185"}}}],"id":"f826e8bf-cc5c-4b7f-9d15-1fc6a45d7ced","savedPayload":{"position":{"x":10940.393728528645,"y":12126.25059692012},"targetPosition":{"x":11231.392565405375,"y":12201.823501341809},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Bullish Arrow","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.forecast === \"Bullish Reversal\" || record.forecast === \"Bullish Continuation\" ","id":"edbfaf8f-8507-4d7b-9057-353f9571e615","savedPayload":{"position":{"x":10215.082383948044,"y":12139.878913886543},"targetPosition":{"x":10746.107838810822,"y":11790.509484034019},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n\"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.5,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"010c4131-393a-474e-98af-444ebfbb7a8d","savedPayload":{"position":{"x":9833.414670144659,"y":12069.145526322616},"targetPosition":{"x":10138.042642929075,"y":11976.09447933373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"5f6e62fc-4d25-4af4-86df-ca18bdd1e897","savedPayload":{"position":{"x":10138.042642929075,"y":11976.09447933373},"targetPosition":{"x":10746.107838810822,"y":11790.509484034019},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 3,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n }\n}","id":"51545ef3-4202-4f31-8746-908b4d04e273","savedPayload":{"position":{"x":9792.30270377977,"y":11800.387114389887},"targetPosition":{"x":10110.39586784242,"y":11797.362033645104},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"504af6cf-5682-4ec9-90f1-3b5ac174cb67","savedPayload":{"position":{"x":10110.39586784242,"y":11797.362033645104},"targetPosition":{"x":10746.107838810822,"y":11790.509484034019},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"-1-","id":"e9090bdf-ffe5-4031-89d1-3de33dec1105","savedPayload":{"position":{"x":10182.22258092722,"y":11496.631581233105},"targetPosition":{"x":10746.107838810822,"y":11790.509484034019},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-1-","id":"38b0018b-d162-492e-90b3-604efc79c16e"}}},{"type":"Polygon Vertex","name":"-2-","id":"4a190301-2d52-49ae-a061-9bb553ea1c0f","savedPayload":{"position":{"x":10230.791616757273,"y":11416.978910183603},"targetPosition":{"x":10746.107838810822,"y":11790.509484034019},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-2-","id":"66a65473-db28-42bf-8491-3497a35cc42b"}}},{"type":"Polygon Vertex","name":"-3-","id":"f5a0eaa5-7837-4d60-8040-37f4353e3b27","savedPayload":{"position":{"x":10290.110630286388,"y":11346.42736434188},"targetPosition":{"x":10746.107838810822,"y":11790.509484034019},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-3-","id":"cb37189b-fdb7-4cd7-aa78-1dfd71c8e614"}}},{"type":"Polygon Vertex","name":"-4-","id":"13577516-ccb2-469f-9d59-f5bc71c16e77","savedPayload":{"position":{"x":10358.219467968815,"y":11285.06903206751},"targetPosition":{"x":10746.107838810822,"y":11790.509484034019},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-4-","id":"aae0a6cc-e05b-402f-800c-807df07b1f37"}}},{"type":"Polygon Vertex","name":"-5-","id":"9884c89e-fbb3-4101-b19f-0522b933175c","savedPayload":{"position":{"x":10434.439258931961,"y":11234.635423189224},"targetPosition":{"x":10746.107838810822,"y":11790.509484034019},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-5-","id":"a5f609bd-7162-4155-8778-d085b000ef04"}}},{"type":"Polygon Vertex","name":"-6-","id":"a089c901-705c-4b1a-bf29-fca8669ad902","savedPayload":{"position":{"x":10517.104889258939,"y":11196.058618230374},"targetPosition":{"x":10746.107838810822,"y":11790.509484034019},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-6-","id":"6edd83d4-739a-4651-9204-2a0f617e1256"}}},{"type":"Polygon Vertex","name":"-7-","id":"6a3d330f-6852-4cb0-80fe-72c3bf02aa31","savedPayload":{"position":{"x":10614.605112626243,"y":11167.719391985378},"targetPosition":{"x":10746.107838810822,"y":11790.509484034019},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-7-","id":"b98d1777-f3a2-4bcc-8312-6d89d1c6662e"}}}],"id":"ba0bcada-77c5-450e-a1fc-7708bcaca60b","savedPayload":{"position":{"x":10773.334134915302,"y":11813.695355340686},"targetPosition":{"x":11231.392565405375,"y":12201.823501341809},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"e0c63725-4cfb-4d1e-9b70-80343de2e9b3","savedPayload":{"position":{"x":11231.392565405375,"y":12201.823501341809},"targetPosition":{"x":11727.615567480334,"y":12007.611552648877},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Two-Candles Patterns","config":"{ \n\"codeName\": \"Two-Candles Patterns\"\n}","panelData":[{"type":"Panel Data","name":"Pattern Name","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.name","id":"6d2625d7-82c7-4186-95a7-8bfe0892446a","savedPayload":{"position":{"x":11283.60325910434,"y":11733.771042901757},"targetPosition":{"x":11536.816677975617,"y":11572.497201734053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f5538abe-a9aa-42ad-9c30-798dc41ddb80","savedPayload":{"position":{"x":11536.816677975617,"y":11572.497201734053},"targetPosition":{"x":11790.037630675673,"y":11411.122620839005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Direction","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trend","id":"7f273725-f758-4f3e-bc3a-d7d47f919c7a","savedPayload":{"position":{"x":11221.342167567727,"y":11216.763111093916},"targetPosition":{"x":11505.65711683382,"y":11313.913731340108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2e819599-22c9-4acd-ac77-92f18b20cb61","savedPayload":{"position":{"x":11505.65711683382,"y":11313.913731340108},"targetPosition":{"x":11790.037630675673,"y":11411.122620839005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Forecast","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.forecast","id":"43090bdd-e415-48e8-ba75-4b80d4f0aeee","savedPayload":{"position":{"x":11587.433740239627,"y":10845.22732612298},"targetPosition":{"x":11688.715066228397,"y":11128.116867002602},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"39649444-cba8-41d2-bb32-064f43cf8df4","savedPayload":{"position":{"x":11688.715066228397,"y":11128.116867002602},"targetPosition":{"x":11790.037630675673,"y":11411.122620839005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Method","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trendMethod","id":"f7a45eca-7fe0-4837-b719-92e81fa0774d","savedPayload":{"position":{"x":12105.583378364245,"y":10899.670490615743},"targetPosition":{"x":11947.815008030855,"y":11155.347252365762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6cb4eef6-735b-409a-92c4-fe2b2e1e82be","savedPayload":{"position":{"x":11947.815008030855,"y":11155.347252365762},"targetPosition":{"x":11790.037630675673,"y":11411.122620839005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Period","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"75c3e3bd-c749-463d-bae4-296abf83f078","savedPayload":{"position":{"x":12386.315782092952,"y":11338.958272360718},"targetPosition":{"x":12088.185253307467,"y":11375.065651970302},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4c31ec17-bf6c-4dfc-8f42-1e7fe7e77297","savedPayload":{"position":{"x":12088.185253307467,"y":11375.065651970302},"targetPosition":{"x":11790.037630675673,"y":11411.122620839005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Value","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trendLine","id":"d9e33fbf-8990-4363-b674-f1ec7f71bfcd","savedPayload":{"position":{"x":12217.052442251977,"y":11831.949764622583},"targetPosition":{"x":12003.765004696092,"y":11621.516368520652},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d4f75b19-1a90-48d8-b6fe-9f064505ae93","savedPayload":{"position":{"x":12003.765004696092,"y":11621.516368520652},"targetPosition":{"x":11790.037630675673,"y":11411.122620839005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6426039f-b3dc-443b-bf6a-faa1dd1e3f2c","savedPayload":{"position":{"x":11790.037630675673,"y":11411.122620839005},"targetPosition":{"x":11727.615567480334,"y":12007.611552648877},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3bf46641-3478-41fd-8407-0af20e72f30b","savedPayload":{"position":{"x":11729.812000058475,"y":12017.18166248464},"targetPosition":{"x":12215.097662258146,"y":12369.642313054686},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Three-Candles Patterns","config":"{ \n\"codeName\": \"Three-Candles Patterns\"\n}","shapes":{"type":"Shapes","name":"Three-Candles Patterns","chartPoints":[{"type":"Chart Points","name":"Bearish Arrow","points":[{"type":"Point","name":"-1-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)\ny = record.bearishArrowHead*1.01","id":"050fd307-0763-423f-b0a7-488f1e22b2f0","savedPayload":{"position":{"x":11324.527384500681,"y":12406.38229840523},"targetPosition":{"x":11357.150548904494,"y":12107.926819744322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b20f834d-a9d0-419e-87ce-c9d56cdfe948","savedPayload":{"position":{"x":11357.150548904494,"y":12107.926819744322},"targetPosition":{"x":11422.182189384399,"y":11511.591811699003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-2-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bearishArrowHead*1.01","id":"ea09a04d-33f3-430d-9210-b60a0d93accf","savedPayload":{"position":{"x":10989.478246943294,"y":12300.968866784184},"targetPosition":{"x":11133.9280344324,"y":12037.54285531861},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d119f364-4c32-4605-afcb-025e62d32f20","savedPayload":{"position":{"x":11133.9280344324,"y":12037.54285531861},"targetPosition":{"x":11422.182189384399,"y":11511.591811699003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-3-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bearishArrowHead*1.05","id":"c472d80d-ff4c-4bdf-af76-b8fb1c9dd3f5","savedPayload":{"position":{"x":10720.279513907313,"y":12075.314930641796},"targetPosition":{"x":10954.548563945656,"y":11887.204487159095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0e94de71-51dc-4d00-81fc-db6a47af48e9","savedPayload":{"position":{"x":10954.548563945656,"y":11887.204487159095},"targetPosition":{"x":11422.182189384399,"y":11511.591811699003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-4-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bearishArrowHead*1.05","id":"c851f754-5148-4d6c-abef-446f4dcbf95c","savedPayload":{"position":{"x":10557.890581790769,"y":11763.786865343474},"targetPosition":{"x":10846.355432312044,"y":11679.660655609789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"54f3f9d8-a0fd-489b-a280-5791c92afe4a","savedPayload":{"position":{"x":10846.355432312044,"y":11679.660655609789},"targetPosition":{"x":11422.182189384399,"y":11511.591811699003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-5-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bearishArrowHead*1.01","id":"305bea41-e179-499b-bff8-687f861b575a","savedPayload":{"position":{"x":10527.04933326846,"y":11414.42376465991},"targetPosition":{"x":10825.810832847692,"y":11446.807725358429},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"75712c99-427f-4995-ad28-116f514f1b1d","savedPayload":{"position":{"x":10825.810832847692,"y":11446.807725358429},"targetPosition":{"x":11422.182189384399,"y":11511.591811699003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-6-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end+(record.end-record.begin)\ny = record.bearishArrowHead*1.01","id":"3fd2696f-e7e8-41f5-ae74-e757cb72b755","savedPayload":{"position":{"x":10632.428468545808,"y":11079.358718626241},"targetPosition":{"x":10896.042154075487,"y":11223.571957293143},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"32a9e24a-ecbb-4272-868f-8a2c1131d780","savedPayload":{"position":{"x":10896.042154075487,"y":11223.571957293143},"targetPosition":{"x":11422.182189384399,"y":11511.591811699003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-7-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.bearishArrowHead","id":"b02696af-5430-4311-a2b8-b7a69d5f085b","savedPayload":{"position":{"x":10869.253470113206,"y":10821.079679334563},"targetPosition":{"x":11046.26565264284,"y":11044.443042101777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"da13c2e7-5b21-44b3-98ef-e101a208cd82","savedPayload":{"position":{"x":11046.26565264284,"y":11044.443042101777},"targetPosition":{"x":11422.182189384399,"y":11511.591811699003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ed6c9b38-f0d8-49d8-b6e6-831ba4391e67","savedPayload":{"position":{"x":11421.68395596676,"y":11511.47674623867},"targetPosition":{"x":11997.592944821114,"y":11343.485927538779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Trend Line","points":[{"type":"Point","name":"Trend Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.trendLine\n","id":"8df901ad-9507-4c1b-aa66-e80e52142e64","savedPayload":{"position":{"x":11018.026290779453,"y":11461.988224626097},"targetPosition":{"x":11317.434770425523,"y":11350.838236765072},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f05e403b-b940-4007-be9d-517cd5f5b761","savedPayload":{"position":{"x":11317.434770425523,"y":11350.838236765072},"targetPosition":{"x":11636.051175870336,"y":11232.40613407486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Trend Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.trendLine","id":"c790f239-fe7c-488c-a22c-ea82c2ea43f3","savedPayload":{"position":{"x":11125.28057644652,"y":10814.392352371871},"targetPosition":{"x":11372.021622670312,"y":11016.85472000743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e185278f-a45c-43e3-8691-6252e48809cc","savedPayload":{"position":{"x":11372.021622670312,"y":11016.85472000743},"targetPosition":{"x":11636.051175870336,"y":11232.40613407486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"30170318-2cab-4bb6-ad3b-362b5a25d245","savedPayload":{"position":{"x":11701.163255670075,"y":11294.346218428935},"targetPosition":{"x":11997.592944821114,"y":11343.485927538779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Bullish Arrow","points":[{"type":"Point","name":"-1-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)\ny = record.bullishArrowHead*0.99","id":"91cd5c4e-6dc9-41f4-abba-e66c6d9c7c3e","savedPayload":{"position":{"x":10624.026319850509,"y":11428.916637310593},"targetPosition":{"x":10892.929330483097,"y":11258.604149943585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a9852c0f-8ac8-4b9d-ac29-e8d8f29da720","savedPayload":{"position":{"x":10892.929330483097,"y":11258.604149943585},"targetPosition":{"x":11429.678966932031,"y":10918.512902833403},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-2-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bullishArrowHead*0.99","id":"99075b18-7979-4f15-915a-272a4debd949","savedPayload":{"position":{"x":10489.902495174934,"y":11081.532900246073},"targetPosition":{"x":10803.601612376347,"y":11027.166570653368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"bb29fdb8-abfe-4377-9063-6790f2eb8d8f","savedPayload":{"position":{"x":10803.601612376347,"y":11027.166570653368},"targetPosition":{"x":11429.678966932031,"y":10918.512902833403},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-3-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bullishArrowHead*0.94","id":"9ab43674-72c8-4525-8697-49cbf37785e0","savedPayload":{"position":{"x":10499.031312302577,"y":10709.954769775604},"targetPosition":{"x":10809.668994068212,"y":10779.570251055515},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a46f8fdb-d00f-46f6-8ec9-3ef0166107ef","savedPayload":{"position":{"x":10809.668994068212,"y":10779.570251055515},"targetPosition":{"x":11429.678966932031,"y":10918.512902833403},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-4-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bullishArrowHead*0.94","id":"cb153aae-7f46-4fbc-aa01-26f7193e8eaf","savedPayload":{"position":{"x":10649.76934057926,"y":10369.596547442874},"targetPosition":{"x":10910.115834958771,"y":10552.784819583858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2e60f4be-e8cc-4489-81f6-27fa3f61921b","savedPayload":{"position":{"x":10910.115834958771,"y":10552.784819583858},"targetPosition":{"x":11429.678966932031,"y":10918.512902833403},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-5-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bullishArrowHead*0.99","id":"0b2f59a6-9de6-4ccd-81bc-28288491d705","savedPayload":{"position":{"x":10919.28648169888,"y":10112.852760097594},"targetPosition":{"x":11089.584569288465,"y":10381.771367946058},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"1740e52b-986e-49cf-bb3f-c373200c4449","savedPayload":{"position":{"x":11089.584569288465,"y":10381.771367946058},"targetPosition":{"x":11429.678966932031,"y":10918.512902833403},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-6-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end+(record.end-record.begin)\ny = record.bullishArrowHead*0.99","id":"ee129388-9aec-4709-bf79-3a3b83fe769e","savedPayload":{"position":{"x":11266.543621745615,"y":9978.735012460302},"targetPosition":{"x":11320.985363948239,"y":10292.34083148858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c8b169eb-6d38-41ab-bc48-e5a08c6f9f45","savedPayload":{"position":{"x":11320.985363948239,"y":10292.34083148858},"targetPosition":{"x":11429.678966932031,"y":10918.512902833403},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-7-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.bullishArrowHead","id":"c58904a7-8615-4a27-bd74-1966b35e8924","savedPayload":{"position":{"x":11638.357912139312,"y":9987.858888721516},"targetPosition":{"x":11568.778168261073,"y":10298.485678645851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f5cee1fe-b34d-47e5-8d4a-26061487b242","savedPayload":{"position":{"x":11568.778168261073,"y":10298.485678645851},"targetPosition":{"x":11429.678966932031,"y":10918.512902833403},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b8b4b3de-a98c-4d32-a385-61a186871641","savedPayload":{"position":{"x":11506.915828734796,"y":10998.315396612685},"targetPosition":{"x":11997.592944821114,"y":11343.485927538779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Bearish Arrow","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.forecast === \"Bearish Reversal\" || record.forecast === \"Bearish Continuation\" ","id":"4db8acef-2d4b-4e56-b319-d32b145c4fc1","savedPayload":{"position":{"x":11120.432354843659,"y":10951.91529565518},"targetPosition":{"x":11705.462132060955,"y":10819.194767333567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n\"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.5,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"da54ef22-f928-44a9-ba54-ddc157d6e2fd","savedPayload":{"position":{"x":10806.873898190148,"y":10763.18839847818},"targetPosition":{"x":11106.744354147279,"y":10781.812418494985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"bd6aeeb9-f9ce-4289-84ee-b89e5bce37ed","savedPayload":{"position":{"x":11106.744354147279,"y":10781.812418494985},"targetPosition":{"x":11705.462132060955,"y":10819.194767333567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n }\n}","id":"e73e98ac-0abf-488c-88c7-5f218487754a","savedPayload":{"position":{"x":10859.245614224761,"y":10511.929220489948},"targetPosition":{"x":11141.630684939842,"y":10614.4482885281},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"871328e3-7832-4dc2-8758-72612387f556","savedPayload":{"position":{"x":11141.630684939842,"y":10614.4482885281},"targetPosition":{"x":11705.462132060955,"y":10819.194767333567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"-1-","id":"bc05844f-b3a3-4f25-8688-b555ff25cd31","savedPayload":{"position":{"x":11302.355236872623,"y":10373.968629056248},"targetPosition":{"x":11705.462132060955,"y":10819.194767333567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-1-","id":"b20f834d-a9d0-419e-87ce-c9d56cdfe948"}}},{"type":"Polygon Vertex","name":"-2-","id":"a7f33d57-8a91-4bf6-a755-2f9572b02d0b","savedPayload":{"position":{"x":11372.476521465542,"y":10318.134391215368},"targetPosition":{"x":11705.462132060955,"y":10819.194767333567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-2-","id":"d119f364-4c32-4605-afcb-025e62d32f20"}}},{"type":"Polygon Vertex","name":"-3-","id":"4f2d69c6-4919-44a1-b4f4-b11c4d07a8d5","savedPayload":{"position":{"x":11448.79650033747,"y":10274.624091469272},"targetPosition":{"x":11705.462132060955,"y":10819.194767333567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-3-","id":"0e94de71-51dc-4d00-81fc-db6a47af48e9"}}},{"type":"Polygon Vertex","name":"-4-","id":"cae92b34-1055-4413-8521-b00838b6b3a1","savedPayload":{"position":{"x":11529.858019041756,"y":10243.13761569657},"targetPosition":{"x":11705.462132060955,"y":10819.194767333567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-4-","id":"54f3f9d8-a0fd-489b-a280-5791c92afe4a"}}},{"type":"Polygon Vertex","name":"-5-","id":"26a5fbf5-1e3c-49a3-a80e-89a38760a6ce","savedPayload":{"position":{"x":11614.189489712771,"y":10223.814351728308},"targetPosition":{"x":11705.462132060955,"y":10819.194767333567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-5-","id":"75712c99-427f-4995-ad28-116f514f1b1d"}}},{"type":"Polygon Vertex","name":"-6-","id":"85dd4fe1-e267-4e2c-8249-e5a4ad8ac57b","savedPayload":{"position":{"x":11700.198918122824,"y":10216.841913644419},"targetPosition":{"x":11705.462132060955,"y":10819.194767333567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-6-","id":"32a9e24a-ecbb-4272-868f-8a2c1131d780"}}},{"type":"Polygon Vertex","name":"-7-","id":"0b35f295-6655-45ea-8050-3ea4d565b0a8","savedPayload":{"position":{"x":11801.24425344072,"y":10225.681176289936},"targetPosition":{"x":11705.462132060955,"y":10819.194767333567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-7-","id":"da13c2e7-5b21-44b3-98ef-e101a208cd82"}}}],"id":"d6bca38f-dad2-4bad-b869-718840793911","savedPayload":{"position":{"x":11705.146105578871,"y":10818.856726081758},"targetPosition":{"x":11997.592944821114,"y":11343.485927538779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Trend Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"735def02-7235-4d8d-b742-2606e271785c","savedPayload":{"position":{"x":11435.336042631767,"y":10501.686121738185},"targetPosition":{"x":11673.194319314665,"y":10712.54742741141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"1cb25c02-7f14-4290-a1dd-cdecfa3d41f1","savedPayload":{"position":{"x":11673.194319314665,"y":10712.54742741141},"targetPosition":{"x":11929.748562154677,"y":10966.35778378913},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Trend Line End","id":"ca4b7aaa-e204-477b-917d-5b0d73dcd9ae","savedPayload":{"position":{"x":11907.826965656746,"y":10602.14416881982},"targetPosition":{"x":11929.748562154677,"y":10966.35778378913},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Trend Line End","id":"e185278f-a45c-43e3-8691-6252e48809cc"}}},{"type":"Polygon Vertex","name":"Trend Line Begin","id":"1e9cb0f5-9153-4ebf-bea2-e4cdff34e27d","savedPayload":{"position":{"x":12147.289057803955,"y":10669.790708918592},"targetPosition":{"x":11929.748562154677,"y":10966.35778378913},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Trend Line Begin","id":"f05e403b-b940-4007-be9d-517cd5f5b761"}}}],"id":"954cc880-be0c-444b-b810-ddf42e1d6d03","savedPayload":{"position":{"x":11979.707908369968,"y":11043.57282104919},"targetPosition":{"x":11997.592944821114,"y":11343.485927538779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Bullish Arrow","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.forecast === \"Bullish Reversal\" || record.forecast === \"Bullish Continuation\" ","id":"71c1088c-78e4-4b13-a432-48488e81f5a9","savedPayload":{"position":{"x":11693.859176247388,"y":10298.699813689967},"targetPosition":{"x":12190.31256805528,"y":10695.476926829411},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n\"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.5,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"26a20027-9ab4-483f-8e8b-54c5feae8eb7","savedPayload":{"position":{"x":11643.419820689563,"y":9914.086480326054},"targetPosition":{"x":11825.93356954951,"y":10174.82963028933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"784e3863-e27c-439a-b219-d2257040f9a8","savedPayload":{"position":{"x":11825.93356954951,"y":10174.82963028933},"targetPosition":{"x":12190.31256805528,"y":10695.476926829411},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n }\n}","id":"c87d6249-dfd9-4bfc-b6d5-1033dc34ab93","savedPayload":{"position":{"x":11886.106262010857,"y":9791.47362789698},"targetPosition":{"x":11987.584767777058,"y":10093.17626721764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"c307cae0-1d47-4fbd-b17e-c71ed0b460a2","savedPayload":{"position":{"x":11987.584767777058,"y":10093.17626721764},"targetPosition":{"x":12190.31256805528,"y":10695.476926829411},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"-1-","id":"01f59ec4-922f-4f32-89ff-271b4a1715ff","savedPayload":{"position":{"x":12295.557058389408,"y":10068.33744954726},"targetPosition":{"x":12190.31256805528,"y":10695.476926829411},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-1-","id":"a9852c0f-8ac8-4b9d-ac29-e8d8f29da720"}}},{"type":"Polygon Vertex","name":"-2-","id":"63a0a7cf-0e25-4c76-a647-7bce1cf8349d","savedPayload":{"position":{"x":12386.33054812473,"y":10089.876159037365},"targetPosition":{"x":12190.31256805528,"y":10695.476926829411},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-2-","id":"bb29fdb8-abfe-4377-9063-6790f2eb8d8f"}}},{"type":"Polygon Vertex","name":"-3-","id":"34336858-138b-4d29-8e19-963f987eeb7a","savedPayload":{"position":{"x":12471.86690608988,"y":10124.273647152782},"targetPosition":{"x":12190.31256805528,"y":10695.476926829411},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-3-","id":"a46f8fdb-d00f-46f6-8ec9-3ef0166107ef"}}},{"type":"Polygon Vertex","name":"-4-","id":"41b893b7-8450-497e-a10e-378e2aad4f86","savedPayload":{"position":{"x":12551.009679730356,"y":10170.481086604059},"targetPosition":{"x":12190.31256805528,"y":10695.476926829411},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-4-","id":"2e60f4be-e8cc-4489-81f6-27fa3f61921b"}}},{"type":"Polygon Vertex","name":"-5-","id":"b298e992-97da-4b07-b1b5-2419ef56b05a","savedPayload":{"position":{"x":12622.44964132423,"y":10227.442882455296},"targetPosition":{"x":12190.31256805528,"y":10695.476926829411},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-5-","id":"1740e52b-986e-49cf-bb3f-c373200c4449"}}},{"type":"Polygon Vertex","name":"-6-","id":"c38d5012-bbf9-4b31-916a-e98a2557f2c3","savedPayload":{"position":{"x":12684.883982586343,"y":10293.962514879924},"targetPosition":{"x":12190.31256805528,"y":10695.476926829411},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-6-","id":"c8b169eb-6d38-41ab-bc48-e5a08c6f9f45"}}},{"type":"Polygon Vertex","name":"-7-","id":"fd3144a6-1558-42b5-82d8-54975ee48863","savedPayload":{"position":{"x":12741.82717498493,"y":10378.0021732053},"targetPosition":{"x":12190.31256805528,"y":10695.476926829411},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-7-","id":"f5cee1fe-b34d-47e5-8d4a-26061487b242"}}}],"id":"f8d58d58-6d2e-454f-ae56-4f57ab357a85","savedPayload":{"position":{"x":12225.195554812315,"y":10787.668480565417},"targetPosition":{"x":11997.592944821114,"y":11343.485927538779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"01e600b6-8d17-4ea5-bb31-30308e68433e","savedPayload":{"position":{"x":11997.592944821114,"y":11343.485927538779},"targetPosition":{"x":12398.961661973364,"y":11789.177716002274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Three-Candles Patterns","config":"{ \n\"codeName\": \"Three-Candles Patterns\"\n}","panelData":[{"type":"Panel Data","name":"Pattern Name","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.name","id":"5a0d3dea-2329-4eb2-8c13-a112d1f03368","savedPayload":{"position":{"x":12521.529451619575,"y":11282.104632913197},"targetPosition":{"x":12753.336135929472,"y":11473.097355738706},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8b719d3b-612d-4978-bde8-a748068d4366","savedPayload":{"position":{"x":12753.336135929472,"y":11473.097355738706},"targetPosition":{"x":12985.309461535395,"y":11664.157620741606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Direction","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trend","id":"9d7f27b8-56b3-4b97-a3b4-1687a546f367","savedPayload":{"position":{"x":12994.102830402499,"y":11062.834893162257},"targetPosition":{"x":12989.685271820555,"y":11363.418511128384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bdf5aa9a-a121-4275-969e-5eed6ebd878d","savedPayload":{"position":{"x":12989.685271820555,"y":11363.418511128384},"targetPosition":{"x":12985.309461535395,"y":11664.157620741606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Forecast","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.forecast","id":"04bc641a-62a0-4441-b4d5-58fa30fe413e","savedPayload":{"position":{"x":13460.65130741904,"y":11295.93637445114},"targetPosition":{"x":13222.96465937862,"y":11479.97347535613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6ddacd18-8603-4112-bd00-80fe0cb03dcb","savedPayload":{"position":{"x":13222.96465937862,"y":11479.97347535613},"targetPosition":{"x":12985.309461535395,"y":11664.157620741606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Method","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trendMethod","id":"3b43a0f7-d76f-4b8a-8228-9b0282826022","savedPayload":{"position":{"x":13569.398264324223,"y":11804.241251740332},"targetPosition":{"x":13277.003171117074,"y":11734.41244801159},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"950a394b-df06-4b90-88fc-b59cb3cc1cb5","savedPayload":{"position":{"x":13277.003171117074,"y":11734.41244801159},"targetPosition":{"x":12985.309461535395,"y":11664.157620741606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Period","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"2b0825d5-9e69-4b0a-861a-c88870b859c4","savedPayload":{"position":{"x":13236.937029970217,"y":12208.224780499606},"targetPosition":{"x":13111.138350440473,"y":11936.12827339466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"63fbe7e3-b323-40ea-bfdc-0aac0df03c0f","savedPayload":{"position":{"x":13111.138350440473,"y":11936.12827339466},"targetPosition":{"x":12985.309461535395,"y":11664.157620741606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Value","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trendLine","id":"e838b1bb-2079-479e-b85a-38019fca078d","savedPayload":{"position":{"x":12716.199880878816,"y":12200.301115628657},"targetPosition":{"x":12850.874297561895,"y":11932.297848995104},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f36e0123-4262-45d3-8e18-699407c0bb78","savedPayload":{"position":{"x":12850.874297561895,"y":11932.297848995104},"targetPosition":{"x":12985.309461535395,"y":11664.157620741606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1f14d068-2fc4-42b5-8edf-7d552f50d1ed","savedPayload":{"position":{"x":12985.309461535395,"y":11664.157620741606},"targetPosition":{"x":12398.961661973364,"y":11789.177716002274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"acdb9c43-0859-42be-87b0-1a600cf513d4","savedPayload":{"position":{"x":12400.198493102642,"y":11799.030724932194},"targetPosition":{"x":12215.097662258146,"y":12369.642313054686},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e10e4374-b30c-4974-b2ff-bd789f50fde2","savedPayload":{"position":{"x":12215.059921412198,"y":12369.634706235254},"targetPosition":{"x":12814.727007364905,"y":12369.63867824567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"38d04c99-51a6-4c1c-853e-ba67e216854b","savedPayload":{"position":{"x":12814.727007364905,"y":12369.63867824567},"targetPosition":{"x":12814.727007364905,"y":12369.63867824567},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}} \ No newline at end of file diff --git a/Includes/Data-Mines/Masters.json b/Includes/Data-Mines/Masters.json new file mode 100644 index 000000000..3c31aad7b --- /dev/null +++ b/Includes/Data-Mines/Masters.json @@ -0,0 +1 @@ +{"type":"Data Mine","name":"Masters","config":"{\n\"codeName\": \"Masters\"\n}","sensorBots":[{"type":"Sensor Bot","name":"Exchange Raw Data","config":"{\n\"codeName\": \"Exchange-Raw-Data\",\n\"repo\": \"Exchange-Raw-Data-Sensor-Bot\"\n}","processes":[{"type":"Process Definition","name":"Historic-OHLCVs","config":"{\n \"codeName\": \"Historic-OHLCVs\",\n \"description\": \"Retrieves and saves historical maket data\",\n \"startMode\": {\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 60000,\n \"retryWaitTime\": 10000\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[],"outputDatasetFolders":[],"id":"dfe2556e-a765-4e38-9d30-7f91090c0069","savedPayload":{"position":{"x":19694.65896528582,"y":18079.80666168302},"targetPosition":{"x":19674.617425695335,"y":18486.33639924593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"ea39c98b-18e2-44ce-9f7f-86a8a76a688a","savedPayload":{"position":{"x":20111.534021268813,"y":17814.56375630177},"targetPosition":{"x":19893.316491438505,"y":18150.31980838774},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[],"dataMineDataDependencies":[],"id":"5c7fae5a-6da6-4864-a167-f2f21d578c72","savedPayload":{"position":{"x":19893.316491438505,"y":18150.31980838774},"targetPosition":{"x":19674.617425695335,"y":18486.33639924593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e","savedPayload":{"position":{"x":20031.71582860312,"y":18304.406526432995},"targetPosition":{"x":19674.617425695335,"y":18486.33639924593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"","id":"957e7e3a-b167-40be-93b5-9ba4ceff56e5","savedPayload":{"position":{"x":20075.30856507894,"y":18506.680081128765},"targetPosition":{"x":19674.617425695335,"y":18486.33639924593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"fe40a546-43ee-49df-908a-7e72f598f0cd","savedPayload":{"position":{"x":20019.51506449239,"y":18694.64493952324},"targetPosition":{"x":19674.617425695335,"y":18486.33639924593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc","savedPayload":{"position":{"x":19674.617425695335,"y":18486.33639924593},"targetPosition":{"x":19278.707614323983,"y":18688.55263969416},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Trades","config":"{\n\"codeName\": \"Trades\"\n}","datasets":[{"type":"Dataset Definition","name":"Trades","config":"{\n\"codeName\": \"Trades\"\n}","id":"fbb7c17e-a909-4fa2-b3c5-eb8ca86297c4","savedPayload":{"position":{"x":19939.732540593195,"y":18584.456194349146},"targetPosition":{"x":19741.31504137297,"y":18616.06022300575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"id":"38dbb942-a15b-450b-a867-02a94030965f","savedPayload":{"position":{"x":19741.31504137297,"y":18616.06022300575},"targetPosition":{"x":19278.707614323983,"y":18688.55263969416},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition","name":"Candles","config":"{\n\"codeName\": \"Candles\"\n}","datasets":[{"type":"Dataset Definition","name":"One-Min","config":"{\n\"codeName\": \"One-Min\"\n}","id":"1c3696e4-c28e-4744-9100-706d6dce0c3c","savedPayload":{"position":{"x":19935.702085675992,"y":18798.91268093051},"targetPosition":{"x":19741.509774678925,"y":18762.218280191744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc","savedPayload":{"position":{"x":19741.509774678925,"y":18762.218280191744},"targetPosition":{"x":19278.707614323983,"y":18688.55263969416},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition","name":"Volumes","config":"{\n\"codeName\": \"Volumes\"\n}","datasets":[{"type":"Dataset Definition","name":"One-Min","config":"{\n\"codeName\": \"One-Min\"\n}","id":"73dcce78-c223-49e1-a93c-7e1ab7283f86","savedPayload":{"position":{"x":19874.882330587618,"y":18993.833201781243},"targetPosition":{"x":19695.926716177968,"y":18901.844106893066},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"id":"3a43c6f3-bac0-404e-865f-822eb48c8660","savedPayload":{"position":{"x":19695.926716177968,"y":18901.844106893066},"targetPosition":{"x":19278.707614323983,"y":18688.55263969416},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"af924204-66a2-47d4-9910-66ab78acb06f","savedPayload":{"position":{"x":19879.260650389308,"y":18688.55543162568},"targetPosition":{"x":18879.35218735615,"y":18688.55301821844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Sensor Bot","name":"Webhooks","config":"{\n\"codeName\": \"Webhooks\",\n\"repo\": \"Webhooks-Sensor-Bot\"\n}","processes":[{"type":"Process Definition","name":"Check-Webhook","config":"{\n \"codeName\": \"Check-Webhook\",\n \"description\": \"Retrieves and saves Webhooks Messages Received at the Web Server\",\n \"startMode\": {\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 30000,\n \"retryWaitTime\": 10000\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[],"outputDatasetFolders":[],"id":"9b932f7d-fee5-4d42-97a3-beda58fa0322","savedPayload":{"position":{"x":20040.615969082315,"y":18890.527535538495},"targetPosition":{"x":19654.987788431827,"y":19003.792082372143},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Webhooks Check-Webhook","config":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"d6965837-6a98-474c-aee3-8053ac436b9c","savedPayload":{"position":{"x":20462.358624336022,"y":19000.60507911844},"targetPosition":{"x":20062.341160815606,"y":19000.64395783069},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"57bc4c48-663d-4944-8b5b-b09cf6ae3578"}}}],"dataDependencies":[],"dataMineDataDependencies":[],"id":"ff50f64f-12f6-49e7-83a6-659109b89a6a","savedPayload":{"position":{"x":20062.341160815606,"y":19000.64395783069},"targetPosition":{"x":19654.987788431827,"y":19003.792082372143},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"57bc4c48-663d-4944-8b5b-b09cf6ae3578","savedPayload":{"position":{"x":20048.27085263396,"y":19107.672661680022},"targetPosition":{"x":19654.987788431827,"y":19003.792082372143},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"","id":"ed7c8dbc-8f81-4a3f-a525-a839f3b30440","savedPayload":{"position":{"x":20007.872857125974,"y":19206.901703380066},"targetPosition":{"x":19654.987788431827,"y":19003.792082372143},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1982bdf9-4889-430b-a004-7760307852b9","savedPayload":{"position":{"x":19923.276435345117,"y":19294.476536014416},"targetPosition":{"x":19654.987788431827,"y":19003.792082372143},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"69f37820-ab16-4e19-bfd8-386dd6e249a3","savedPayload":{"position":{"x":19654.987788431827,"y":19003.792082372143},"targetPosition":{"x":19225.31033631989,"y":18888.921797853156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"External Signals","config":"{\n\"codeName\": \"External-Signals\",\n \"singularVariableName\": \"externalSignal\",\n \"pluralVariableName\": \"externalSignals\"\n}","datasets":[{"type":"Dataset Definition","name":"Single File","config":"{\n \"codeName\": \"Single-File\",\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.json\",\n \"validTimeFrames\": [\n \"Any Time Frame\"\n ]\n }","id":"c52d1012-5e3b-41a0-b5af-84098b0594bf","savedPayload":{"position":{"x":19901.545719594727,"y":19426.83241312261},"targetPosition":{"x":19556.15210854508,"y":19221.022604227408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Timestamp","config":"{ \n\"codeName\": \"timestamp\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"d27e836f-1cea-41e1-b4e8-c411fb50addc","savedPayload":{"position":{"x":20010.713109921744,"y":19751.796163529514},"targetPosition":{"x":19707.14157423291,"y":19519.88545650953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Source","config":"{ \n\"codeName\": \"source\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"6aea41d8-153e-4196-9a55-ec40700c6c0e","savedPayload":{"position":{"x":19899.477593141124,"y":19851.397210770727},"targetPosition":{"x":19707.14157423291,"y":19519.88545650953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Message","config":"{ \n\"codeName\": \"message\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"7c1feeae-6fdb-4886-aeb7-f16d10433acd","savedPayload":{"position":{"x":19758.537442232293,"y":19900.313032213515},"targetPosition":{"x":19707.14157423291,"y":19519.88545650953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6e1d5a0a-c082-4916-bce1-3a8a1651ff02","savedPayload":{"position":{"x":19755.45982919394,"y":19567.879453639307},"targetPosition":{"x":19556.15210854508,"y":19221.022604227408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"29196db8-4c41-47ea-be7e-952cd9be9a0b","savedPayload":{"position":{"x":19556.15210854508,"y":19221.022604227408},"targetPosition":{"x":19225.31033631989,"y":18888.921797853156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f0d7c835-cf51-447a-8d00-1aeb854bc909","savedPayload":{"position":{"x":19745.264487118675,"y":19188.499509244975},"targetPosition":{"x":18879.35218735615,"y":18688.55301821844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"indicatorBots":[{"type":"Indicator Bot","name":"Candles Volumes","config":"{\n\"codeName\": \"Candles-Volumes\",\n\"repo\": \"Candles-Volumes-Indicator-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Produces different files with multi-period candles and volumes for entire markets.\",\n \"startMode\": {\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000\n }","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Candles","id":"5d82f670-e692-40ca-8d24-9273d0f5e08f","savedPayload":{"position":{"x":21143.98429835023,"y":20011.550055512715},"targetPosition":{"x":20700.04069382657,"y":20046.94804287678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}},{"type":"Output Dataset","name":"Multi-Period-Market Volumes","id":"b198c9ea-3141-4407-9953-2b2ebb672450","savedPayload":{"position":{"x":21137.85436153343,"y":20128.339412659363},"targetPosition":{"x":20700.04069382657,"y":20046.94804287678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"9bf0483c-4825-4a46-9cf4-1b5262579fc1"}}}],"outputDatasetFolders":[],"id":"d529ec20-8461-40d6-9dc3-14f9ab8b64be","savedPayload":{"position":{"x":20700.04069382657,"y":20046.94804287678},"targetPosition":{"x":19810.96885586955,"y":20001.193297321748},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\n \"mainUtility\": \"Market Starting Point\"\n}","id":"ff665e30-1d31-429b-88dc-f5e623b9a5f8","savedPayload":{"position":{"x":21572.83853187912,"y":20093.231340143804},"targetPosition":{"x":20685.800711777763,"y":20163.56507481898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\n \"mainUtility\": \"Market Ending Point\"\n}","id":"6d911e31-cef3-4c4f-82e3-d7b9b1ba9541","savedPayload":{"position":{"x":21574.433556877557,"y":20209.890320292656},"targetPosition":{"x":20685.800711777763,"y":20163.56507481898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","config":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"957ffa57-d4df-4866-b99f-86cf8add689d","savedPayload":{"position":{"x":21560.739291402093,"y":20325.643222528008},"targetPosition":{"x":20685.800711777763,"y":20163.56507481898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles One-Min","id":"982efbd9-6a54-4322-9a0f-52a6483d67d9","savedPayload":{"position":{"x":21532.026738993336,"y":20438.60717618138},"targetPosition":{"x":20685.800711777763,"y":20163.56507481898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"One-Min","id":"1c3696e4-c28e-4744-9100-706d6dce0c3c"}}},{"type":"Data Dependency","name":"Volumes One-Min","id":"fe28906a-90b1-4a5e-88b1-110d994cb397","savedPayload":{"position":{"x":21488.652052344507,"y":20547.123018143175},"targetPosition":{"x":20685.800711777763,"y":20163.56507481898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"One-Min","id":"73dcce78-c223-49e1-a93c-7e1ab7283f86"}}}],"dataMineDataDependencies":[],"id":"09645f1b-96c2-4dbb-a99f-803c8ebe7a00","savedPayload":{"position":{"x":20685.800711777763,"y":20163.56507481898},"targetPosition":{"x":19810.96885586955,"y":20001.193297321748},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d","savedPayload":{"position":{"x":20657.141804395924,"y":20276.297626070642},"targetPosition":{"x":19810.96885586955,"y":20001.193297321748},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Exchange Raw Data Historic-OHLCVs","id":"c086e5db-7777-45d9-bb4d-381f9566341f","savedPayload":{"position":{"x":20613.967985406376,"y":20384.48012248691},"targetPosition":{"x":19810.96885586955,"y":20001.193297321748},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"fe40a546-43ee-49df-908a-7e72f598f0cd"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5","savedPayload":{"position":{"x":20556.83127781857,"y":20486.374926191565},"targetPosition":{"x":19810.96885586955,"y":20001.193297321748},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1","savedPayload":{"position":{"x":19489.654884384498,"y":19078.426746296744},"targetPosition":{"x":19078.649897563497,"y":19035.365653220895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Produces different files with multi-period candles and volumes on a daily format.\",\n \"startMode\": {\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000\n }","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily Candles","id":"f60fba20-b9d6-4362-b667-020096340e38","savedPayload":{"position":{"x":20667.481666365347,"y":21090.313044189574},"targetPosition":{"x":20287.45541484719,"y":20858.00348926279},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Volumes","id":"a507b588-ce8f-4d5c-9053-d130015560b5","savedPayload":{"position":{"x":20593.750762433498,"y":21181.343185389993},"targetPosition":{"x":20287.45541484719,"y":20858.00348926279},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"2e683057-f911-4105-bc77-16f2706d1915"}}}],"outputDatasetFolders":[],"id":"4d806ace-6f82-449d-b908-afcd7d029a68","savedPayload":{"position":{"x":20287.45541484719,"y":20858.00348926279},"targetPosition":{"x":19595.1611827014,"y":20298.224373033212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\n \"mainUtility\": \"Market Starting Point\"\n}","id":"14730a16-e01e-4bc5-9886-0eed386152f2","savedPayload":{"position":{"x":20966.43411550158,"y":21408.381412236547},"targetPosition":{"x":20207.40347705322,"y":20943.949353274325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","config":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"1baff60d-84c4-4e27-b03d-663158ca6bba","savedPayload":{"position":{"x":20899.033133550325,"y":21503.85446506962},"targetPosition":{"x":20207.40347705322,"y":20943.949353274325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\n \"mainUtility\": \"Market Ending Point\"\n}","id":"4e77c03b-367c-450c-82ca-c7211c2fab8e","savedPayload":{"position":{"x":20819.91313908028,"y":21589.4476079781},"targetPosition":{"x":20207.40347705322,"y":20943.949353274325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles One-Min","id":"2d324ca2-acc5-4390-ae37-0d350fe8e8fa","savedPayload":{"position":{"x":20730.283243412297,"y":21663.95728998525},"targetPosition":{"x":20207.40347705322,"y":20943.949353274325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"One-Min","id":"1c3696e4-c28e-4744-9100-706d6dce0c3c"}}},{"type":"Data Dependency","name":"Volumes One-Min","id":"4051019a-9548-4541-a7e7-11097fe3f103","savedPayload":{"position":{"x":20631.403596403114,"y":21726.252359979717},"targetPosition":{"x":20207.40347705322,"y":20943.949353274325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"One-Min","id":"73dcce78-c223-49e1-a93c-7e1ab7283f86"}}}],"dataMineDataDependencies":[],"id":"1e4c5a40-0c64-423f-968d-31b178056cf3","savedPayload":{"position":{"x":20207.40347705322,"y":20943.949353274325},"targetPosition":{"x":19595.1611827014,"y":20298.224373033212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7","savedPayload":{"position":{"x":20117.967773079406,"y":21018.297133071348},"targetPosition":{"x":19595.1611827014,"y":20298.224373033212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Exchange Raw Data Historic-OHLCVs","id":"fa826f1b-2a52-4542-89b2-7190e137ef56","savedPayload":{"position":{"x":20019.47078702596,"y":21080.434167665804},"targetPosition":{"x":19595.1611827014,"y":20298.224373033212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"fe40a546-43ee-49df-908a-7e72f598f0cd"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3","savedPayload":{"position":{"x":19913.37599394389,"y":21129.287105440468},"targetPosition":{"x":19595.1611827014,"y":20298.224373033212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d","savedPayload":{"position":{"x":19385.523603809645,"y":19312.365835532793},"targetPosition":{"x":19078.649897563497,"y":19035.365653220895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Candles","config":"{\n \"codeName\": \"Candles\",\n \"singularVariableName\": \"candle\",\n \"pluralVariableName\": \"candles\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"\",\n \"fileName\": \"\"\n }\n }","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8","savedPayload":{"position":{"x":18952.498575250793,"y":20720.048284053253},"targetPosition":{"x":18905.684260678427,"y":20207.30460119875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"\",\n \"fileName\": \"\"\n }\n }","id":"678a567c-f08d-49b9-813b-4e54fd6afadb","savedPayload":{"position":{"x":18823.27505139588,"y":20715.50055027883},"targetPosition":{"x":18905.684260678427,"y":20207.30460119875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Min","config":"{\n \"codeName\": \"min\",\n \"isString\": false\n}","id":"95264fe8-6089-4a70-bf6d-158bc43c04f3","savedPayload":{"position":{"x":18854.573338889553,"y":21068.497108163752},"targetPosition":{"x":18631.095597067186,"y":21193.854001331765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Max","config":"{\n \"codeName\": \"max\",\n \"isString\": false\n}","id":"b716bfaa-d785-45e3-b8ca-370284ac901c","savedPayload":{"position":{"x":18878.247374391587,"y":21263.1074541122},"targetPosition":{"x":18631.095597067186,"y":21193.854001331765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Open","config":"{\n \"codeName\": \"open\",\n \"isString\": false\n}","id":"7d809ac3-9b7d-4687-83bb-40b851e522d0","savedPayload":{"position":{"x":18757.07757530648,"y":21417.616226623468},"targetPosition":{"x":18631.095597067186,"y":21193.854001331765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Close","config":"{\n \"codeName\": \"close\",\n \"isString\": false\n}","id":"b0ea41f8-03da-454e-8d0f-bb0f2fc5d328","savedPayload":{"position":{"x":18562.31750531808,"y":21441.305473856948},"targetPosition":{"x":18631.095597067186,"y":21193.854001331765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"21b8be1f-0437-4fc8-9bc0-31779a9ea47e","savedPayload":{"position":{"x":18407.639755778822,"y":21320.33259348552},"targetPosition":{"x":18631.095597067186,"y":21193.854001331765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"91ba9479-fdb4-42b7-ad02-1b2ac24b13d6","savedPayload":{"position":{"x":18382.230408900123,"y":21125.489772257217},"targetPosition":{"x":18631.095597067186,"y":21193.854001331765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Direction","config":"{\n \"codeName\": \"direction\",\n \"isString\": true,\n \"isCalculated\": true,\n \"possibleValues\": [\"Up\", \"Down\", \"Side\"]\n}","formula":{"type":"Formula","code":"variable.direction","id":"becdde12-efb6-464b-bfb0-ac98e3c2b8e3","savedPayload":{"position":{"x":18379.05524596377,"y":20749.561052178222},"targetPosition":{"x":18505.14156682159,"y":20971.369393220626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aafd0a4b-da5d-40c1-94b8-e79f0b1eca9b","savedPayload":{"position":{"x":18505.14156682159,"y":20971.369393220626},"targetPosition":{"x":18631.095597067186,"y":21193.854001331765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"65ea4bea-6b8f-4df9-8716-d8af0ce2044c","savedPayload":{"position":{"x":18631.095597067186,"y":21193.854001331765},"targetPosition":{"x":18905.684260678427,"y":20207.30460119875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"calculations":{"type":"Calculations Procedure","name":"New Calculations Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"let candle = product.candle\n\nif (candle.close > candle.open) {\n variable.direction = \"Up\"\n}\n\nif (candle.close < candle.open) {\n variable.direction = \"Down\"\n}\n\nif (candle.close === candle.open) {\n variable.direction = \"Side\"\n}","id":"798bc1e0-90d2-435f-980d-b457b30046dd","savedPayload":{"position":{"x":18482.88093976261,"y":21139.25729951231},"targetPosition":{"x":18586.582894098996,"y":20905.74074880026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"abbcb291-c048-49e7-b0d0-fdf20891faea","savedPayload":{"position":{"x":18586.582894098996,"y":20905.74074880026},"targetPosition":{"x":18692.61217313568,"y":20673.07716322584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f7846b50-ae42-46b4-aeb6-9f6217477a1b","savedPayload":{"position":{"x":18692.61217313568,"y":20673.07716322584},"targetPosition":{"x":18905.684260678427,"y":20207.30460119875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7","savedPayload":{"position":{"x":19167.873677214207,"y":19457.257140322585},"targetPosition":{"x":19078.649897563497,"y":19035.365653220895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Candles","id":"0aed75a3-fee8-4ddc-97ff-b6768e6f12a3"}}},{"type":"Product Definition","name":"Volumes","config":"{\n \"codeName\": \"Volumes\",\n \"singularVariableName\": \"volume\",\n \"pluralVariableName\": \"volumes\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"\",\n \"fileName\": \"\"\n }\n }","id":"2e683057-f911-4105-bc77-16f2706d1915","savedPayload":{"position":{"x":18305.296618189535,"y":20468.150274263506},"targetPosition":{"x":18599.651333073693,"y":20044.845801872307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"\",\n \"fileName\": \"\"\n }\n }","id":"9bf0483c-4825-4a46-9cf4-1b5262579fc1","savedPayload":{"position":{"x":18210.020959068082,"y":20379.570609743452},"targetPosition":{"x":18599.651333073693,"y":20044.845801872307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Buy","config":"{\n \"codeName\": \"buy\",\n \"isString\": false\n}","id":"bc8405e2-4a80-416c-bccf-1334e53d371b","savedPayload":{"position":{"x":18088.19099906643,"y":20575.8470715178},"targetPosition":{"x":17942.499083461124,"y":20450.692587589383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Sell","config":"{\n \"codeName\": \"sell\",\n \"isString\": false\n}","id":"f08f11a8-d092-4b7e-a7e6-c67adac04a33","savedPayload":{"position":{"x":17868.88354446626,"y":20629.037878861865},"targetPosition":{"x":17942.499083461124,"y":20450.692587589383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"8e2624b0-48ee-4d00-821e-0c6a72b3838f","savedPayload":{"position":{"x":17749.975588063906,"y":20436.431317107716},"targetPosition":{"x":17942.499083461124,"y":20450.692587589383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"62964ed9-14c4-442d-b272-602d0c714654","savedPayload":{"position":{"x":17896.3415503285,"y":20263.589478304482},"targetPosition":{"x":17942.499083461124,"y":20450.692587589383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7edf78c7-c63d-4e7e-a643-99aaf52ac967","savedPayload":{"position":{"x":17942.499083461124,"y":20450.692587589383},"targetPosition":{"x":18599.651333073693,"y":20044.845801872307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f","savedPayload":{"position":{"x":18928.971769005922,"y":19465.67440814858},"targetPosition":{"x":19078.649897563497,"y":19035.365653220895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Volumes","id":"a6177fb7-51d1-4b7c-bcbb-04861a5bf0c1"}}}],"id":"285a4618-0423-4ac9-9df9-7a78be6fd915","savedPayload":{"position":{"x":19378.737094532593,"y":19553.61977642965},"targetPosition":{"x":18879.35218735615,"y":18688.55301821844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"l"}}},{"type":"Indicator Bot","name":"Bollinger Bands","config":"{\n\"codeName\": \"Bollinger-Bands\",\n\"repo\": \"Bollinger-Bands-Indicator-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Produces a single file for each time frame covering all the market.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000\n }","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Bollinger Bands","id":"b8c1f684-7327-488b-8c76-4a73d811e312","savedPayload":{"position":{"x":18264.599479994627,"y":21506.43639964578},"targetPosition":{"x":18076.967583126854,"y":21054.21750109069},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"f5b2a7d8-fc32-44a3-a002-9b0fc30a9719"}}},{"type":"Output Dataset","name":"Multi-Period-Market Percentage Bandwidth","id":"fa1205c0-3b6e-4064-aca4-ffdaba7e1bd4","savedPayload":{"position":{"x":18140.42522795884,"y":21539.718795521127},"targetPosition":{"x":18076.967583126854,"y":21054.21750109069},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"207e9481-0730-4304-a938-cfe223d70856"}}}],"outputDatasetFolders":[],"id":"72887b4d-8868-4f0c-a051-81b83c366c99","savedPayload":{"position":{"x":18076.967583126854,"y":21054.21750109069},"targetPosition":{"x":17823.175493648643,"y":20108.925078329048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Bollinger Bands Multi-Period-Market","config":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"603f6167-ef54-4464-9b7b-5ff7f59c24e7","savedPayload":{"position":{"x":18264.92586813004,"y":22004.979410919095},"targetPosition":{"x":17950.449244040392,"y":21078.774182967245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"4f8197fa-2627-46df-bd36-7d30fdb12d8c"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","config":"{\n \"mainUtility\": \"Market Ending Point\"\n}","id":"79c51f8f-95eb-451c-98ac-cce4028e23e2","savedPayload":{"position":{"x":18077.990289915662,"y":22048.576946262823},"targetPosition":{"x":17950.449244040392,"y":21078.774182967245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"25d943b0-45aa-45b3-b8b1-f83d5a8b636f","savedPayload":{"position":{"x":17886.356844236314,"y":22054.81616287104},"targetPosition":{"x":17950.449244040392,"y":21078.774182967245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"dataMineDataDependencies":[],"id":"bd55a584-c9dd-4f2e-836c-a34a16ef01dc","savedPayload":{"position":{"x":17950.449244040392,"y":21078.774182967245},"targetPosition":{"x":17823.175493648643,"y":20108.925078329048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"4f8197fa-2627-46df-bd36-7d30fdb12d8c","savedPayload":{"position":{"x":17823.11925991474,"y":21087.120505718573},"targetPosition":{"x":17823.175493648643,"y":20108.925078329048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"a2cf5c7f-ffbf-4c38-9640-699fd3a37454","savedPayload":{"position":{"x":17695.421186396783,"y":21078.748791601873},"targetPosition":{"x":17823.175493648643,"y":20108.925078329048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"4a9c8cc7-0ebf-43eb-b7f9-0b280630ff67","savedPayload":{"position":{"x":17569.62707613594,"y":21053.671521198325},"targetPosition":{"x":17823.175493648643,"y":20108.925078329048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"id":"941a0543-0cc0-4a5d-a782-728d2835c100","savedPayload":{"position":{"x":19213.536708361393,"y":19331.36765275876},"targetPosition":{"x":18879.0781010326,"y":19088.524440869747},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Produces a Daily File at each time frame.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000\n }","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily Bollinger Bands","id":"1f8cdcbe-c7dc-49fd-b106-e59bb4fb4ad9","savedPayload":{"position":{"x":16960.61565554588,"y":21369.797502356432},"targetPosition":{"x":17074.4461659177,"y":20893.569810833134},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"506104fa-e99a-4a46-930e-176bce311aff"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Percentage Bandwidth","id":"6362cf0d-c71e-4d08-8dea-c9b8d5d0e38b","savedPayload":{"position":{"x":16840.571489698952,"y":21323.7164589424},"targetPosition":{"x":17074.4461659177,"y":20893.569810833134},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"e60d62dd-87f7-4f2d-ac21-3ac5c30a50ea"}}}],"outputDatasetFolders":[],"id":"3ab24229-73fe-439a-9684-986aac94f220","savedPayload":{"position":{"x":17074.4461659177,"y":20893.569810833134},"targetPosition":{"x":17424.58745161835,"y":19979.52374056843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\n \"mainUtility\": \"Market Starting Point\"\n}","id":"aee6dca7-b8e8-4a33-9bc6-37830080a3a2","savedPayload":{"position":{"x":16704.853985118927,"y":21783.96978952322},"targetPosition":{"x":16957.645779833852,"y":20839.045415002096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","config":"{\n \"mainUtility\": \"Market Ending Point\"\n}","id":"40701c78-7ace-40a8-a943-7b76d73147ce","savedPayload":{"position":{"x":16559.869680049553,"y":21732.66590437464},"targetPosition":{"x":16957.645779833852,"y":20839.045415002096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Bollinger Bands Multi-Period-Daily","config":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"442d1d63-f28a-4bff-8dda-9bab7a5ad708","savedPayload":{"position":{"x":16424.865606487278,"y":21659.351927969587},"targetPosition":{"x":16957.645779833852,"y":20839.045415002096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"7323fef7-870a-48b6-b96f-586111253b40"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"603dbf64-0ee0-45b6-a1b8-14065b398893","savedPayload":{"position":{"x":16302.890183934502,"y":21565.689282377214},"targetPosition":{"x":16957.645779833852,"y":20839.045415002096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"dataMineDataDependencies":[],"id":"312620aa-b556-43c4-9603-6a80acb7ab00","savedPayload":{"position":{"x":16957.645779833852,"y":20839.045415002096},"targetPosition":{"x":17424.58745161835,"y":19979.52374056843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"7323fef7-870a-48b6-b96f-586111253b40","savedPayload":{"position":{"x":16849.46702280367,"y":20770.80076973417},"targetPosition":{"x":17424.58745161835,"y":19979.52374056843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"7ec89351-b852-416a-961a-7e66717c6473","savedPayload":{"position":{"x":16751.039273033595,"y":20688.946711973855},"targetPosition":{"x":17424.58745161835,"y":19979.52374056843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"acebc3ed-4f3f-4a4b-b403-f16cbe987dde","savedPayload":{"position":{"x":16663.9590603656,"y":20594.6968439595},"targetPosition":{"x":17424.58745161835,"y":19979.52374056843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca","savedPayload":{"position":{"x":19006.267764897762,"y":19481.80126042578},"targetPosition":{"x":18879.0781010326,"y":19088.524440869747},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Bollinger Bands","config":"{\n\"codeName\": \"Bollinger-Bands\",\n\"singularVariableName\": \"bollingerBand\",\n\"pluralVariableName\": \"bollingerBands\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"\",\n \"fileName\": \"\"\n }\n }","id":"f5b2a7d8-fc32-44a3-a002-9b0fc30a9719","savedPayload":{"position":{"x":17932.50002876863,"y":21006.254268603956},"targetPosition":{"x":18028.88938223587,"y":20376.470851865848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"\",\n \"fileName\": \"\"\n }\n }","id":"506104fa-e99a-4a46-930e-176bce311aff","savedPayload":{"position":{"x":17772.11706184403,"y":20959.405326123684},"targetPosition":{"x":18028.88938223587,"y":20376.470851865848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"1e7186ee-c481-401d-827f-a30ee7434d92","savedPayload":{"position":{"x":17539.218707020606,"y":21285.64405176033},"targetPosition":{"x":17231.65484352792,"y":21369.313556617082},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"15f90f2e-80f0-4575-94d8-6d8957eceee1","savedPayload":{"position":{"x":17529.77062894075,"y":21482.558763842586},"targetPosition":{"x":17231.65484352792,"y":21369.313556617082},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Moving Average","config":"{\n \"codeName\": \"movingAverage\",\n \"isString\": false\n}","id":"9786a9cd-1eff-4b5c-ae7c-1dde51659f82","savedPayload":{"position":{"x":17406.319844973616,"y":21636.259407864643},"targetPosition":{"x":17231.65484352792,"y":21369.313556617082},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Standard Deviation","config":"{\n \"codeName\": \"standardDeviation\",\n \"isString\": false\n}","id":"e92d7855-bb18-494e-ab37-a895bbcb8287","savedPayload":{"position":{"x":17216.31371697825,"y":21688.054069868987},"targetPosition":{"x":17231.65484352792,"y":21369.313556617082},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Deviation","config":"{\n \"codeName\": \"deviation\",\n \"isString\": false\n}","id":"03043530-caa1-416e-8303-840b732e516e","savedPayload":{"position":{"x":17031.924105951894,"y":21618.14174849871},"targetPosition":{"x":17231.65484352792,"y":21369.313556617082},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Direction","config":"{\n \"codeName\": \"direction\",\n \"isString\": true,\n \"isCalculated\": true,\n \"possibleValues\": [\"Up\", \"Down\", \"Side\"]\n}","formula":{"type":"Formula","code":"variable.direction","id":"f72926d9-c869-4b7c-ba1e-b36d134e2bc6","savedPayload":{"position":{"x":16616.238455121395,"y":21536.907785374187},"targetPosition":{"x":16923.824198365364,"y":21453.17780749845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"856f24c9-f5f1-491b-98e7-6e1d3c5c5874","savedPayload":{"position":{"x":16923.824198365364,"y":21453.17780749845},"targetPosition":{"x":17231.65484352792,"y":21369.313556617082},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Slope","config":"{\n \"codeName\": \"slope\",\n \"isString\": true,\n \"isCalculated\": true,\n \"possibleValues\": [\"Side\", \"Gentle\", \"Medium\", \"Steep\", \"Extreme\"]\n}","formula":{"type":"Formula","code":"variable.slope","id":"fac935fe-b448-4b34-aed7-b35f70808911","savedPayload":{"position":{"x":16635.203465930896,"y":21143.540549199795},"targetPosition":{"x":16933.340510140424,"y":21256.411163704204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4c027b0c-da8a-4146-a51a-d0a7a126150b","savedPayload":{"position":{"x":16933.340510140424,"y":21256.411163704204},"targetPosition":{"x":17231.65484352792,"y":21369.313556617082},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Upper Band","config":"{ \n \"codeName\": \"upperBand\",\n \"isString\": false,\n \"isCalculated\": true\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.upperBand","id":"72cf5305-7f63-413b-a469-70ae053cfbcf","savedPayload":{"position":{"x":16881.937529551346,"y":20836.17129716886},"targetPosition":{"x":17056.77137748996,"y":21102.685736153784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"58990232-dba9-485d-8246-540554dfeb20","savedPayload":{"position":{"x":17056.77137748996,"y":21102.685736153784},"targetPosition":{"x":17231.65484352792,"y":21369.313556617082},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Lower Band","config":"{ \n \"codeName\": \"lowerBand\",\n \"isString\": false,\n \"isCalculated\": true\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.lowerBand","id":"c165f7e7-03d7-442d-8182-1c7e913e06a5","savedPayload":{"position":{"x":17257.09803707044,"y":20726.082046806612},"targetPosition":{"x":17246.81381614676,"y":21051.108616959344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f1db553a-f738-4a1e-89c0-82b6b0cac9ba","savedPayload":{"position":{"x":17246.81381614676,"y":21051.108616959344},"targetPosition":{"x":17231.65484352792,"y":21369.313556617082},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b5a5ec97-7246-42bd-97e4-28fb4a148b2c","savedPayload":{"position":{"x":17231.65484352792,"y":21369.313556617082},"targetPosition":{"x":18028.88938223587,"y":20376.470851865848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"calculations":{"type":"Calculations Procedure","name":"New Calculations Procedure","initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"variable.lastMovingAverage = 0\nvariable.SIDE_TOLERANCE = 0.5 * system.timeFrame / system.ONE_DAY_IN_MILISECONDS\nvariable.SMALL_SLOPE = 1.0 * system.timeFrame / system.ONE_DAY_IN_MILISECONDS\nvariable.MEDIUM_SLOPE = 2.0 * system.timeFrame / system.ONE_DAY_IN_MILISECONDS\nvariable.HIGH_SLOPE = 4.0 * system.timeFrame / system.ONE_DAY_IN_MILISECONDS\n","id":"f00ac417-cd99-493c-b959-35eddd6fe4f3","savedPayload":{"position":{"x":17397.79082116958,"y":20924.823468138446},"targetPosition":{"x":17513.019525196694,"y":20814.966893322304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d144ab2f-5b4e-4153-806a-d471e9f281dd","savedPayload":{"position":{"x":17513.019525196694,"y":20814.966893322304},"targetPosition":{"x":17739.62854386153,"y":20590.719802003474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"\nif (variable.lastMovingAverage > product.bollingerBand.movingAverage) { variable.direction = \"Down\" }\nif (variable.lastMovingAverage < product.bollingerBand.movingAverage) { variable.direction = \"Up\" }\nif (variable.lastMovingAverage === product.bollingerBand.movingAverage) { variable.direction = \"Side\" }\n\nvariable.delta = Math.abs(product.bollingerBand.movingAverage - variable.lastMovingAverage)\n\nvariable.slope = \"Extreme\"\nif (variable.delta < product.bollingerBand.movingAverage * variable.HIGH_SLOPE / 100) { variable.slope = \"Steep\" }\nif (variable.delta < product.bollingerBand.movingAverage * variable.MEDIUM_SLOPE / 100) { variable.slope = \"Medium\" }\nif (variable.delta < product.bollingerBand.movingAverage * variable.SMALL_SLOPE / 100) { variable.slope = \"Gentle\" }\nif (variable.delta < product.bollingerBand.movingAverage * variable.SIDE_TOLERANCE / 100) { variable.slope = \"Side\" }\n\nvariable.lastMovingAverage = product.bollingerBand.movingAverage\n\nvariable.upperBand = product.bollingerBand.movingAverage + product.bollingerBand.deviation\nvariable.lowerBand = product.bollingerBand.movingAverage - product.bollingerBand.deviation","id":"14fc0c9c-cd10-4931-95b5-4bc7d549942a","savedPayload":{"position":{"x":17315.743191430513,"y":20812.682040533215},"targetPosition":{"x":17450.990462183872,"y":20729.847487142863},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8a669548-845b-4d80-ae96-29f68e9c9ac7","savedPayload":{"position":{"x":17450.990462183872,"y":20729.847487142863},"targetPosition":{"x":17739.62854386153,"y":20590.719802003474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d72c7cb2-8886-4101-a83a-f9788b8400a0","savedPayload":{"position":{"x":17739.62854386153,"y":20590.719802003474},"targetPosition":{"x":18028.88938223587,"y":20376.470851865848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","id":"139484b3-3a3f-4268-801e-a8c441746c7a","savedPayload":{"position":{"x":17676.659398689473,"y":20506.19447913298},"targetPosition":{"x":18028.88938223587,"y":20376.470851865848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"29088877-8d63-4217-8d34-8742afc262f4","savedPayload":{"position":{"x":18745.665926600832,"y":19498.425437101218},"targetPosition":{"x":18879.0781010326,"y":19088.524440869747},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Bollinger Bands","id":"a11bfdf8-595c-4b50-b259-6a9f777d0ea8"}}},{"type":"Product Definition","name":"Percentage Bandwidth","config":"{\n \"codeName\": \"Percentage-Bandwidth\",\n \"singularVariableName\": \"percentageBandwidth\",\n \"pluralVariableName\": \"percentageBandwidths\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"\",\n \"fileName\": \"\"\n }\n }","id":"207e9481-0730-4304-a938-cfe223d70856","savedPayload":{"position":{"x":17309.21890218844,"y":20437.564976672227},"targetPosition":{"x":17812.96855440468,"y":20047.58516268604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"\",\n \"fileName\": \"\"\n }\n }","id":"e60d62dd-87f7-4f2d-ac21-3ac5c30a50ea","savedPayload":{"position":{"x":17198.355038110716,"y":20214.791857342745},"targetPosition":{"x":17812.96855440468,"y":20047.58516268604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"7c793ff3-0356-4f05-b471-4510e9cdaf58","savedPayload":{"position":{"x":16672.886353341855,"y":20180.516968427648},"targetPosition":{"x":16550.055689944937,"y":19886.629832171537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"b02c38c3-216c-4a83-903d-d50a599b55dc","savedPayload":{"position":{"x":16356.969989472023,"y":20140.222407480698},"targetPosition":{"x":16550.055689944937,"y":19886.629832171537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Value","config":"{\n \"codeName\": \"value\",\n \"isString\": false\n}","id":"2c279136-20b1-4f9c-9d35-6a4fd36a4a99","savedPayload":{"position":{"x":16233.791743097749,"y":19846.427170412557},"targetPosition":{"x":16550.055689944937,"y":19886.629832171537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Moving Average","config":"{\n \"codeName\": \"movingAverage\",\n \"isString\": false\n}","id":"a9e3bbb1-9eaf-4ab1-93bb-ee27357daa76","savedPayload":{"position":{"x":16426.84666653562,"y":19592.697089641402},"targetPosition":{"x":16550.055689944937,"y":19886.629832171537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Bandwidth","config":"{\n \"codeName\": \"bandwidth\",\n \"isString\": false\n}","id":"90d9694f-ed29-4b2e-8c75-c4bdcf35e36a","savedPayload":{"position":{"x":16742.790625037076,"y":19633.0735383494},"targetPosition":{"x":16550.055689944937,"y":19886.629832171537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d04d8ca7-18d0-4360-babf-7c49c3c97f50","savedPayload":{"position":{"x":16550.055689944937,"y":19886.629832171537},"targetPosition":{"x":17812.96855440468,"y":20047.58516268604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068","savedPayload":{"position":{"x":18527.01000655687,"y":19370.218473615736},"targetPosition":{"x":18879.0781010326,"y":19088.524440869747},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Percentage B","id":"06b2f3f6-b138-415f-8974-31c22a930f92"}}}],"id":"1b7ecdbd-82e9-4a27-8fdd-467c0ca6bf23","savedPayload":{"position":{"x":18879.36884625844,"y":19687.435829911843},"targetPosition":{"x":18879.35218735615,"y":18688.55301821844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"c"}}},{"type":"Indicator Bot","name":"Bollinger Channels","config":"{\n\"codeName\": \"Bollinger-Channels\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Produces for each market two files with bollinger channels respectively.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n }","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Market Bollinger Channels Objects","id":"d804e799-7c12-42f5-8de2-52a3a7d5daa4","savedPayload":{"position":{"x":17638.83254378968,"y":20415.22008805878},"targetPosition":{"x":17449.844212951095,"y":19839.165287758613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Market","id":"610cd062-ab88-4892-b711-0fb430305c61"}}},{"type":"Output Dataset","name":"Market Bollinger Channels","id":"e524685d-8da0-41f6-839d-9a4100e6e3fe","savedPayload":{"position":{"x":17544.501268457345,"y":20438.490666699323},"targetPosition":{"x":17449.844212951095,"y":19839.165287758613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Market","id":"22c1f2c6-3838-4657-add8-2e01d7056917"}}},{"type":"Output Dataset","name":"Market Bollinger Sub-Channels Objects","id":"eb0e7947-95e4-4f4a-87ea-1fb430b8b503","savedPayload":{"position":{"x":17448.573503403437,"y":20446.12989855655},"targetPosition":{"x":17449.844212951095,"y":19839.165287758613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Market","id":"869f615e-0cc0-44fd-8648-4a951c23a410"}}},{"type":"Output Dataset","name":"Market Bollinger Sub-Channels","id":"dc96b9ac-f8d5-4bf8-a135-45cd5d6369f1","savedPayload":{"position":{"x":17373.054877559247,"y":20436.898417802186},"targetPosition":{"x":17449.844212951095,"y":19839.165287758613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Market","id":"f8d44a4d-3771-4a71-97ca-dc604ff565d3"}}}],"outputDatasetFolders":[],"id":"dd39a54a-3714-446a-9a41-dfd83557664c","savedPayload":{"position":{"x":17449.844212951095,"y":19839.165287758613},"targetPosition":{"x":17404.26775969621,"y":19234.72697514764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Bollinger Channels Multi-Period-Market","config":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"ae627a69-4089-432d-b379-1b12ce4bd75e","savedPayload":{"position":{"x":17275.59984707742,"y":20436.43407239605},"targetPosition":{"x":17291.43260554821,"y":19830.094213449596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"af8aded9-002a-475a-88f5-d29573740969"}}},{"type":"Status Dependency","name":"Bollinger Bands Multi-Period-Market","config":"{\n \"mainUtility\": \"Market Ending Point\"\n}","id":"4a603114-d464-46db-90a1-62304274117a","savedPayload":{"position":{"x":17173.25233871856,"y":20424.94332501257},"targetPosition":{"x":17291.43260554821,"y":19830.094213449596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"4f8197fa-2627-46df-bd36-7d30fdb12d8c"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Bollinger Bands Multi-Period-Market","id":"ea27be54-93a3-48e3-8c52-72bc397b6c66","savedPayload":{"position":{"x":17064.154362540903,"y":20391.86581398357},"targetPosition":{"x":17291.43260554821,"y":19830.094213449596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"f5b2a7d8-fc32-44a3-a002-9b0fc30a9719"}}}],"dataMineDataDependencies":[],"id":"8b509294-6028-40e2-88a8-655a34245ed8","savedPayload":{"position":{"x":17291.43260554821,"y":19830.094213449596},"targetPosition":{"x":17404.26775969621,"y":19234.72697514764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"af8aded9-002a-475a-88f5-d29573740969","savedPayload":{"position":{"x":17141.174428826467,"y":19780.649530292114},"targetPosition":{"x":17404.26775969621,"y":19234.72697514764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Bollinger Bands Multi-Period-Market","id":"f4720e04-5def-4c0b-be42-33e50ac6a6b7","savedPayload":{"position":{"x":17008.78681934299,"y":19693.962680817225},"targetPosition":{"x":17404.26775969621,"y":19234.72697514764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"4a9c8cc7-0ebf-43eb-b7f9-0b280630ff67"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"671530dc-5ba5-4c8d-bc23-f228e22c56b3","savedPayload":{"position":{"x":16903.28026232123,"y":19575.808161887333},"targetPosition":{"x":17404.26775969621,"y":19234.72697514764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"28be432d-80ca-46b3-859a-55541e24b2b4","savedPayload":{"position":{"x":18912.496962705274,"y":19376.031895615743},"targetPosition":{"x":18679.11969780613,"y":19034.711166046447},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Process Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Produces for each market two files with bollinger channels respectively at each day of the market history.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n }","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Daily Bollinger Channels Objects","id":"64430a93-38c2-4c71-8085-71661bbf804e","savedPayload":{"position":{"x":18700.73293919518,"y":20051.278104634916},"targetPosition":{"x":18131.44682463724,"y":20051.278104634916},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Daily","id":"64910fea-c92a-4a55-850a-aa62d98b478e"}}},{"type":"Output Dataset","name":"Daily Bollinger Sub-Channels","id":"b536a078-e32a-4489-93f6-75107a90b527","savedPayload":{"position":{"x":18131.44682463724,"y":20653.63555279872},"targetPosition":{"x":18131.44682463724,"y":20051.278104634916},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Daily","id":"ca71e765-0f66-4b18-b500-847b9d16169b"}}},{"type":"Output Dataset","name":"Daily Bollinger Sub-Channels Objects","id":"d5bcc7c4-2798-4c34-9504-cc4617b64a04","savedPayload":{"position":{"x":17515.275433681243,"y":20051.278104634916},"targetPosition":{"x":18131.44682463724,"y":20051.278104634916},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Daily","id":"029479ae-275d-4854-ad3e-66948656a053"}}},{"type":"Output Dataset","name":"Daily Bollinger Channels","id":"57898dc1-83a2-4ee9-8a0b-6674f988f0fa","savedPayload":{"position":{"x":18131.44682463724,"y":19459.67232421349},"targetPosition":{"x":18131.44682463724,"y":20051.278104634916},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Daily","id":"96b4e65b-e6db-44a0-80a5-ceb9d68a09ec"}}}],"outputDatasetFolders":[],"id":"b8fc5ac0-021d-4230-aa59-9876c5f0f3e1","savedPayload":{"position":{"x":16789.369074094677,"y":19855.634637865216},"targetPosition":{"x":17121.279789379994,"y":19009.365219603875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Bollinger Bands Multi-Period-Daily","config":"{\n \"mainUtility\": \"Market Ending Point\"\n}","id":"3cb29ee1-02de-452a-a79f-2451700fe335","savedPayload":{"position":{"x":16228.324752960918,"y":20576.98837337425},"targetPosition":{"x":16581.807705705723,"y":19740.2743726891},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"7323fef7-870a-48b6-b96f-586111253b40"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\n \"mainUtility\": \"Market Starting Point\"\n}","id":"d5f34469-0ae1-45e6-acd9-4155d5940c77","savedPayload":{"position":{"x":16101.504207926038,"y":20511.225698208673},"targetPosition":{"x":16581.807705705723,"y":19740.2743726891},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}},{"type":"Status Dependency","name":"Bollinger Channels Multi-Period-Daily","config":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"7f6266a5-bddb-4d49-962d-100b1993043d","savedPayload":{"position":{"x":15986.702235865283,"y":20426.498442199554},"targetPosition":{"x":16581.807705705723,"y":19740.2743726891},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"b1dd07bf-a698-4bbb-995a-356c929a1e94"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Bollinger Bands Multi-Period-Daily","id":"073e24ab-6b47-482a-b117-0d3554f63c1f","savedPayload":{"position":{"x":15886.47699749988,"y":20324.695665981362},"targetPosition":{"x":16581.807705705723,"y":19740.2743726891},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"506104fa-e99a-4a46-930e-176bce311aff"}}}],"dataMineDataDependencies":[],"id":"c0cb34fe-9268-4ebb-a8ce-7d53a13a6d4d","savedPayload":{"position":{"x":16581.807705705723,"y":19740.2743726891},"targetPosition":{"x":17121.279789379994,"y":19009.365219603875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"b1dd07bf-a698-4bbb-995a-356c929a1e94","savedPayload":{"position":{"x":16410.95288583859,"y":19575.75856978832},"targetPosition":{"x":17121.279789379994,"y":19009.365219603875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Bollinger Bands Multi-Period-Daily","id":"4548cff9-f388-4f4f-b148-665d22ffaf9e","savedPayload":{"position":{"x":16288.500880492782,"y":19372.666186540282},"targetPosition":{"x":17121.279789379994,"y":19009.365219603875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"acebc3ed-4f3f-4a4b-b403-f16cbe987dde"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"34e17fad-2c62-4c45-875c-774ac6b6cc99","savedPayload":{"position":{"x":16222.764771933402,"y":19144.73552892972},"targetPosition":{"x":17121.279789379994,"y":19009.365219603875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"id":"bc15b49d-4547-4bac-a28b-193eb0158fe3","savedPayload":{"position":{"x":18739.80259031474,"y":19443.68561694246},"targetPosition":{"x":18679.11969780613,"y":19034.711166046447},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Bollinger Channels Objects","config":"{\n \"codeName\": \"Bollinger-Channels-Objects\",\n \"singularVariableName\": \"bollingerChannelsObject\",\n \"pluralVariableName\": \"bollingerChannelsObjects\"\n}","datasets":[{"type":"Dataset Definition","name":"Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"610cd062-ab88-4892-b711-0fb430305c61","savedPayload":{"position":{"x":17672.448820627968,"y":20376.842039713905},"targetPosition":{"x":17752.37214823314,"y":19841.68980280316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }\n","id":"64910fea-c92a-4a55-850a-aa62d98b478e","savedPayload":{"position":{"x":17510.444340643044,"y":20325.39117066673},"targetPosition":{"x":17752.37214823314,"y":19841.68980280316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"06edb099-ff64-4528-b8c6-599154bc2ddf","savedPayload":{"position":{"x":17263.066464699972,"y":20586.71920011219},"targetPosition":{"x":16993.740935815145,"y":20611.466443000772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"94656d1f-508a-4e94-a8d2-013690aac596","savedPayload":{"position":{"x":17216.489827423713,"y":20765.723309041696},"targetPosition":{"x":16993.740935815145,"y":20611.466443000772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Direction","config":"{\n \"codeName\": \"direction\",\n \"isString\": true,\n \"possibleValues\": [\"Up\", \"Down\", \"Side\"]\n}","id":"edc0f697-f5e2-446f-bae8-8db7adf91d23","savedPayload":{"position":{"x":17065.45592827716,"y":20872.971752499136},"targetPosition":{"x":16993.740935815145,"y":20611.466443000772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Period","config":"{\n \"codeName\": \"period\",\n \"isString\": false\n}","id":"eb733f85-6cf5-485e-9bd3-2bf78733c492","savedPayload":{"position":{"x":16880.993301145212,"y":20858.10244168039},"targetPosition":{"x":16993.740935815145,"y":20611.466443000772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"First Moving Average","config":"{\n \"codeName\": \"firstMovingAverage\",\n \"isString\": false\n}","id":"a67a15ee-6f7f-48bd-9d55-82c57efc993b","savedPayload":{"position":{"x":16749.03588726621,"y":20728.092013533493},"targetPosition":{"x":16993.740935815145,"y":20611.466443000772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Last Moving Average","config":"{\n \"codeName\": \"lastMovingAverage\",\n \"isString\": false\n}","id":"0f05bffe-d668-4d25-ab67-d55a4a7c8f5d","savedPayload":{"position":{"x":16731.546884299147,"y":20544.11260943463},"targetPosition":{"x":16993.740935815145,"y":20611.466443000772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"First Deviation","config":"{\n \"codeName\": \"firstDeviation\",\n \"isString\": false\n}","id":"eae84509-b689-4a76-9277-eed72af491dd","savedPayload":{"position":{"x":16819.377937431214,"y":20379.941335987285},"targetPosition":{"x":16993.740935815145,"y":20611.466443000772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Last Deviation","config":"{\n \"codeName\": \"lastDeviation\",\n \"isString\": false\n}","id":"d5c32d1f-9e3c-48e8-8025-a17d57c0812e","savedPayload":{"position":{"x":17020.795456780816,"y":20350.359026729468},"targetPosition":{"x":16993.740935815145,"y":20611.466443000772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6c3e68b0-b781-4c53-9ff7-67c3f747ac8a","savedPayload":{"position":{"x":16993.740935815145,"y":20611.466443000772},"targetPosition":{"x":17752.37214823314,"y":19841.68980280316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"\n\nif (record.next !== undefined) {\n\n if (\n record.current.direction === record.next.direction) {\n\n if (variable.channel === undefined) {\n\n variable.channel = {\n begin: undefined,\n end: undefined,\n direction: undefined,\n period: 0,\n firstMovingAverage: 0,\n lastMovingAverage: 0,\n firstDeviation: 0,\n lastDeviation: 0\n }\n\n variable.channel.direction = record.current.direction\n variable.channel.period = 2\n\n variable.channel.begin = record.current.begin\n variable.channel.end = record.next.end\n\n variable.channel.firstMovingAverage = record.current.movingAverage\n variable.channel.lastMovingAverage = record.next.movingAverage\n\n variable.channel.firstDeviation = record.current.deviation\n variable.channel.lastDeviation = record.next.deviation\n\n } else {\n\n variable.channel.period++\n variable.channel.end = record.next.end\n variable.channel.lastMovingAverage = record.next.movingAverage\n variable.channel.lastDeviation = record.next.deviation\n\n }\n } else {\n\n if (variable.channel !== undefined) {\n results.push(variable.channel)\n variable.channel = undefined\n } else {\n /* The variable.channel has only one period */\n\n variable.channel = {}\n\n variable.channel.direction = record.current.direction\n variable.channel.period = 1\n\n variable.channel.begin = record.current.begin\n variable.channel.end = record.current.end\n\n variable.channel.firstMovingAverage = record.current.movingAverage\n variable.channel.lastMovingAverage = record.current.movingAverage\n\n variable.channel.firstDeviation = record.current.deviation\n variable.channel.lastDeviation = record.current.deviation\n\n results.push(variable.channel)\n variable.channel = undefined\n }\n }\n} else {\n if (variable.channel !== undefined) {\n variable.channel.period++\n variable.channel.end = record.current.end\n variable.channel.lastMovingAverage = record.current.movingAverage\n variable.channel.lastDeviation = record.current.deviation\n results.push(variable.channel)\n variable.channel = undefined\n } else {\n /* The variable.channel has only one period */\n\n variable.channel = {}\n\n variable.channel.direction = record.current.direction\n variable.channel.period = 1\n\n variable.channel.begin = record.current.begin\n variable.channel.end = record.current.end\n\n variable.channel.firstMovingAverage = record.current.movingAverage\n variable.channel.lastMovingAverage = record.current.movingAverage\n\n variable.channel.firstDeviation = record.current.deviation\n variable.channel.lastDeviation = record.current.deviation\n\n results.push(variable.channel)\n variable.channel = undefined\n }\n}","id":"b81d6adc-e721-4089-b4c3-2fd772f33d25","savedPayload":{"position":{"x":16964.831899350396,"y":20265.35830305781},"targetPosition":{"x":17215.49530486263,"y":20156.83113083025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a2b92c75-e272-4d05-b098-121a70371450","savedPayload":{"position":{"x":17215.49530486263,"y":20156.83113083025},"targetPosition":{"x":17474.177769930226,"y":19986.305163081706},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"116ccf8c-26bc-4b86-99e6-bb3075527713","savedPayload":{"position":{"x":17474.177769930226,"y":19986.305163081706},"targetPosition":{"x":17752.37214823314,"y":19841.68980280316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1f111f72-624f-4166-9f99-ab8d785d5267","savedPayload":{"position":{"x":18551.18893440088,"y":19446.761195073395},"targetPosition":{"x":18679.11969780613,"y":19034.711166046447},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Plotter Module","name":"Bollinger Channels Objects","id":"52881346-3e4b-45e0-92d2-af130d381b8e"}}},{"type":"Product Definition","name":"Bollinger Channels","config":"{\n \"codeName\": \"Bollinger-Channels\",\n \"singularVariableName\": \"bollingerChannel\",\n \"pluralVariableName\": \"bollingerChannels\"\n}","datasets":[{"type":"Dataset Definition","name":"Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"22c1f2c6-3838-4657-add8-2e01d7056917","savedPayload":{"position":{"x":17288.78182008501,"y":20108.937132190145},"targetPosition":{"x":17592.984490489507,"y":19661.70573780189},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }\n","id":"96b4e65b-e6db-44a0-80a5-ceb9d68a09ec","savedPayload":{"position":{"x":17165.110599982894,"y":19992.36978637957},"targetPosition":{"x":17592.984490489507,"y":19661.70573780189},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"b243e3c4-e528-4e7b-9644-b03e47c8ca34","savedPayload":{"position":{"x":16905.417174643073,"y":20454.991946235863},"targetPosition":{"x":16740.43432303405,"y":20240.57105463168},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"74268e18-735f-405b-b9db-412ce6cf7438","savedPayload":{"position":{"x":16740.43432303405,"y":20240.57105463168},"targetPosition":{"x":16575.55191916672,"y":20026.181828373017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"bc705d0f-6df6-45f6-8d3a-44b81bf785bd","savedPayload":{"position":{"x":16270.09238367227,"y":20473.566806524508},"targetPosition":{"x":16422.78851476263,"y":20249.968657238584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ad08f6a7-5d37-4fd3-9d84-5eebddcd8cb5","savedPayload":{"position":{"x":16422.78851476263,"y":20249.968657238584},"targetPosition":{"x":16575.55191916672,"y":20026.181828373017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Direction","config":"{\n \"codeName\": \"direction\",\n \"isString\": true,\n \"possibleValues\": [\"Up\", \"Down\", \"Side\"]\n}","formula":{"type":"Formula","code":"record.current.direction","id":"7b7fd5fc-c820-4c1b-ae3e-400d7b90bb0b","savedPayload":{"position":{"x":16058.5300989656,"y":19879.97717973212},"targetPosition":{"x":16318.717117373944,"y":19955.41575765341},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"31720cda-be3c-453e-8c6e-c4816299c440","savedPayload":{"position":{"x":16318.717117373944,"y":19955.41575765341},"targetPosition":{"x":16575.55191916672,"y":20026.181828373017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Period","config":"{\n \"codeName\": \"period\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.period","id":"9c44699b-a743-4f46-82f6-0351e8b1a206","savedPayload":{"position":{"x":16577.432810248945,"y":19492.039725488277},"targetPosition":{"x":16574.99401143354,"y":19763.988441961355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8af98ad4-3062-49a1-bff6-593bd9638f72","savedPayload":{"position":{"x":16574.99401143354,"y":19763.988441961355},"targetPosition":{"x":16575.55191916672,"y":20026.181828373017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9106250d-b042-4e96-9121-c760b4c1eab2","savedPayload":{"position":{"x":16575.55191916672,"y":20026.181828373017},"targetPosition":{"x":17592.984490489507,"y":19661.70573780189},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"if (record.previous !== undefined) {\n if (record.current.direction === record.previous.direction) {\n variable.period++\n } else {\n variable.period = 1\n }\n}","id":"8f05a74a-f85c-4eb1-9de1-3363d2e3cb8a","savedPayload":{"position":{"x":16260.184420734107,"y":19872.24779312609},"targetPosition":{"x":16534.291531829425,"y":19837.11294326198},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7e54fecc-8443-4aad-a541-0b6a3fcac877","savedPayload":{"position":{"x":16534.291531829425,"y":19837.11294326198},"targetPosition":{"x":17072.748502778526,"y":19738.24733002328},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"variable.period = 1","id":"491600d9-228d-41b8-bedb-22b8ba22a7c9","savedPayload":{"position":{"x":16258.663305601474,"y":19645.604867259342},"targetPosition":{"x":16528.83168001653,"y":19672.534733812015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3c3de682-9ac0-4bf9-b1ff-97a3e0cb24b4","savedPayload":{"position":{"x":16528.83168001653,"y":19672.534733812015},"targetPosition":{"x":17072.748502778526,"y":19738.24733002328},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9ace6abd-5ef9-4c37-9dbc-7aefc8b8b905","savedPayload":{"position":{"x":17072.748502778526,"y":19738.24733002328},"targetPosition":{"x":17592.984490489507,"y":19661.70573780189},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"94bc3958-cc85-43a1-a178-103e84f42910","savedPayload":{"position":{"x":18385.673055092426,"y":19350.70025303725},"targetPosition":{"x":18679.11969780613,"y":19034.711166046447},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Bollinger Channels","id":"a045ea45-c8ff-49a5-86cd-5d38cd3e6d22"}}},{"type":"Product Definition","name":"Bollinger Sub-Channels Objects","config":"{\n \"codeName\": \"Bollinger-Sub-Channels-Objects\",\n \"singularVariableName\": \"bollingerSubChannelsObject\",\n \"pluralVariableName\": \"bollingerSubChannelsObjects\"\n}","datasets":[{"type":"Dataset Definition","name":"Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"869f615e-0cc0-44fd-8648-4a951c23a410","savedPayload":{"position":{"x":17059.34892552682,"y":19701.28352815608},"targetPosition":{"x":17527.382750949502,"y":19430.342922508906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }\n","id":"029479ae-275d-4854-ad3e-66948656a053","savedPayload":{"position":{"x":16998.572262723006,"y":19542.601783737446},"targetPosition":{"x":17527.382750949502,"y":19430.342922508906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"8f0513f5-d78e-4efd-a554-a6ee2a4781ac","savedPayload":{"position":{"x":16653.119594968113,"y":19498.604721973905},"targetPosition":{"x":16452.580331805133,"y":19317.231197455596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"677f9a11-1fa3-4880-ad4f-81a4490d82e8","savedPayload":{"position":{"x":16508.183430196128,"y":19582.351583150015},"targetPosition":{"x":16452.580331805133,"y":19317.231197455596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Direction","config":"{\n \"codeName\": \"direction\",\n \"isString\": true,\n \"possibleValues\": [\"Up\", \"Down\", \"Side\"]\n}","id":"610f6b9f-9404-4603-a42b-80de31498f2f","savedPayload":{"position":{"x":16341.904851001469,"y":19564.715770140738},"targetPosition":{"x":16452.580331805133,"y":19317.231197455596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Slope","config":"{\n \"codeName\": \"slope\",\n \"isString\": true,\n \"possibleValues\": [\"Side\", \"Gentle\", \"Medium\", \"Steep\", \"Extreme\"]\n}","id":"65600005-8272-4297-8716-b08841eb5e73","savedPayload":{"position":{"x":16217.56123609495,"y":19452.5996329137},"targetPosition":{"x":16452.580331805133,"y":19317.231197455596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Period","config":"{\n \"codeName\": \"period\",\n \"isString\": false\n}","id":"ef18438f-7a1f-4432-8fce-494bc9b5ae01","savedPayload":{"position":{"x":16182.787914404,"y":19288.985128796416},"targetPosition":{"x":16452.580331805133,"y":19317.231197455596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"First Moving Average","config":"{\n \"codeName\": \"firstMovingAverage\",\n \"isString\": false\n}","id":"e5694d55-735b-4cb2-919e-02a71679c682","savedPayload":{"position":{"x":16250.88291793041,"y":19136.04986467839},"targetPosition":{"x":16452.580331805133,"y":19317.231197455596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Last Moving Average","config":"{\n \"codeName\": \"lastMovingAverage\",\n \"isString\": false\n}","id":"d49bae2d-b519-49ba-8fd2-9a3a4c2e8dc3","savedPayload":{"position":{"x":16395.65994007663,"y":19052.537378850735},"targetPosition":{"x":16452.580331805133,"y":19317.231197455596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"First Deviation","config":"{\n \"codeName\": \"firstDeviation\",\n \"isString\": false\n}","id":"a11b4d44-937d-456e-b2bd-9cd025289c34","savedPayload":{"position":{"x":16561.803771124527,"y":19070.315201887897},"targetPosition":{"x":16452.580331805133,"y":19317.231197455596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Last Deviation","config":"{\n \"codeName\": \"lastDeviation\",\n \"isString\": false\n}","id":"4d1b7a3f-c452-4002-ab8c-bfa7d396ac2c","savedPayload":{"position":{"x":16685.738528118745,"y":19186.38524681939},"targetPosition":{"x":16452.580331805133,"y":19317.231197455596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a2ff91c2-cfee-487c-959d-fd3ed3dea861","savedPayload":{"position":{"x":16452.580331805133,"y":19317.231197455596},"targetPosition":{"x":17527.382750949502,"y":19430.342922508906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"if (record.next !== undefined) {\n\n if (\n record.current.direction === record.next.direction &&\n record.current.slope === record.next.slope) {\n\n if (variable.channel === undefined) {\n\n variable.channel = {\n begin: undefined,\n end: undefined,\n direction: undefined,\n slope: undefined,\n period: 0,\n firstMovingAverage: 0,\n lastMovingAverage: 0,\n firstDeviation: 0,\n lastDeviation: 0\n }\n\n variable.channel.direction = record.current.direction\n variable.channel.slope = record.current.slope\n variable.channel.period = 2\n\n variable.channel.begin = record.current.begin\n variable.channel.end = record.next.end\n\n variable.channel.firstMovingAverage = record.current.movingAverage\n variable.channel.lastMovingAverage = record.next.movingAverage\n\n variable.channel.firstDeviation = record.current.deviation\n variable.channel.lastDeviation = record.next.deviation\n\n } else {\n\n variable.channel.period++\n variable.channel.end = record.next.end\n variable.channel.lastMovingAverage = record.next.movingAverage\n variable.channel.lastDeviation = record.next.deviation\n\n }\n } else {\n\n if (variable.channel !== undefined) {\n results.push(variable.channel)\n variable.channel = undefined\n } else {\n /* The channel has only one period */\n\n variable.channel = {}\n\n variable.channel.direction = record.current.direction\n variable.channel.slope = record.current.slope\n variable.channel.period = 1\n\n variable.channel.begin = record.current.begin\n variable.channel.end = record.current.end\n\n variable.channel.firstMovingAverage = record.current.movingAverage\n variable.channel.lastMovingAverage = record.current.movingAverage\n\n variable.channel.firstDeviation = record.current.deviation\n variable.channel.lastDeviation = record.current.deviation\n\n results.push(variable.channel)\n variable.channel = undefined\n }\n }\n\n} else {\n if (variable.channel !== undefined) {\n variable.channel.period++\n variable.channel.end = record.current.end\n variable.channel.lastMovingAverage = record.current.movingAverage\n variable.channel.lastDeviation = record.current.deviation\n results.push(variable.channel)\n variable.channel = undefined\n } else {\n /* The channel has only one period */\n\n variable.channel = {}\n\n variable.channel.direction = record.current.direction\n variable.channel.slope = record.current.slope\n variable.channel.period = 1\n\n variable.channel.begin = record.current.begin\n variable.channel.end = record.current.end\n\n variable.channel.firstMovingAverage = record.current.movingAverage\n variable.channel.lastMovingAverage = record.current.movingAverage\n\n variable.channel.firstDeviation = record.current.deviation\n variable.channel.lastDeviation = record.current.deviation\n\n results.push(variable.channel)\n variable.channel = undefined\n }\n}","id":"a1af769c-2a2d-4e78-8f0d-8dfb773982f0","savedPayload":{"position":{"x":16697.894285752278,"y":19085.905564086184},"targetPosition":{"x":16944.914923612876,"y":19201.746507025935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"128aac86-66b5-4685-a75d-4e60ba697c90","savedPayload":{"position":{"x":16944.914923612876,"y":19201.746507025935},"targetPosition":{"x":17241.21872235764,"y":19302.94330775281},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5bfe184e-396e-431a-a640-76c05d1c6e06","savedPayload":{"position":{"x":17241.21872235764,"y":19302.94330775281},"targetPosition":{"x":17527.382750949502,"y":19430.342922508906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"080c87fc-4546-4482-ab11-180a33f6d9ab","savedPayload":{"position":{"x":18278.00067668466,"y":19192.217479609},"targetPosition":{"x":18679.11969780613,"y":19034.711166046447},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Bollinger Sub Channels Objects","id":"f8c4b699-1f40-4832-b427-68da3341daa8"}}},{"type":"Product Definition","name":"Bollinger Sub-Channels","config":"{\n \"codeName\": \"Bollinger-Sub-Channels\",\n \"singularVariableName\": \"bollingerSubChannel\",\n \"pluralVariableName\": \"bollingerSubChannels\"\n}","datasets":[{"type":"Dataset Definition","name":"Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"f8d44a4d-3771-4a71-97ca-dc604ff565d3","savedPayload":{"position":{"x":17029.63145992537,"y":19234.21249025992},"targetPosition":{"x":17568.626129399723,"y":19193.389927005283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }\n","id":"ca71e765-0f66-4b18-b500-847b9d16169b","savedPayload":{"position":{"x":17043.906200916026,"y":19065.025606747342},"targetPosition":{"x":17568.626129399723,"y":19193.389927005283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"421aeb2e-dd1b-44ec-bf78-00d8691d4110","savedPayload":{"position":{"x":16865.837530948622,"y":19172.612570734796},"targetPosition":{"x":16872.705864116244,"y":18969.653199395907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2a101e7-8183-42b4-94c4-99bfcbf2c3c2","savedPayload":{"position":{"x":16872.705864116244,"y":18969.653199395907},"targetPosition":{"x":16879.241453136434,"y":18766.96961272045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"febf55a5-de85-4830-b4fe-df78acfc60b5","savedPayload":{"position":{"x":16520.86808614403,"y":18958.896243858828},"targetPosition":{"x":16699.98716042973,"y":18862.969731229834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0cc9b985-b780-41ef-838b-7f764824f244","savedPayload":{"position":{"x":16699.98716042973,"y":18862.969731229834},"targetPosition":{"x":16879.241453136434,"y":18766.96961272045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Direction","config":"{\n \"codeName\": \"direction\",\n \"isString\": true,\n \"possibleValues\": [\"Up\", \"Down\", \"Side\"]\n}","formula":{"type":"Formula","code":"record.current.direction","id":"73113162-c56d-4ca1-9e8b-f6a5bf84c30f","savedPayload":{"position":{"x":16533.251154761587,"y":18553.211657115142},"targetPosition":{"x":16706.1930839116,"y":18660.077340426382},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"91f3e346-3d02-48f9-aa0c-e55bae62f870","savedPayload":{"position":{"x":16706.1930839116,"y":18660.077340426382},"targetPosition":{"x":16879.241453136434,"y":18766.96961272045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Slope","config":"{\n \"codeName\": \"slope\",\n \"isString\": true,\n \"possibleValues\": [\"Side\", \"Gentle\", \"Medium\", \"Steep\", \"Extreme\"]\n}","formula":{"type":"Formula","code":"record.current.slope","id":"f9e484d0-138a-4d19-a876-a6067f5a1619","savedPayload":{"position":{"x":16865.599195624694,"y":18384.02092002164},"targetPosition":{"x":16885.13431338851,"y":18563.97060266024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"478a7021-7233-4eb4-958d-f127c6a4891c","savedPayload":{"position":{"x":16885.13431338851,"y":18563.97060266024},"targetPosition":{"x":16879.241453136434,"y":18766.96961272045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Period","config":"{\n \"codeName\": \"period\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.period","id":"35c1cfa6-c691-40b0-b680-bd7c94be19e3","savedPayload":{"position":{"x":17236.661387315195,"y":18574.579606575226},"targetPosition":{"x":17057.97202542508,"y":18670.83069619328},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"61f63128-268f-4679-a0ef-e9b53a0a655b","savedPayload":{"position":{"x":17057.97202542508,"y":18670.83069619328},"targetPosition":{"x":16879.241453136434,"y":18766.96961272045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"afe778f1-4343-4102-8eb4-0b9340d7ad5b","savedPayload":{"position":{"x":16879.241453136434,"y":18766.96961272045},"targetPosition":{"x":17568.626129399723,"y":19193.389927005283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"if (record.previous !== undefined) {\n if (record.current.direction === record.previous.direction && record.current.slope === record.previous.slope) {\n variable.period++\n } else {\n variable.period = 1\n }\n}","id":"c450c940-f800-414b-a2c4-bda3481f55c7","savedPayload":{"position":{"x":16420.50748449911,"y":18055.893932188468},"targetPosition":{"x":16820.292655726582,"y":18418.996312763822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a580c9a8-c70a-483e-8dd3-d3b62464f8f4","savedPayload":{"position":{"x":16820.292655726582,"y":18418.996312763822},"targetPosition":{"x":17220.629783564094,"y":18781.785289917614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"variable.period = 1","id":"e0efa286-41a0-45e0-8ce3-dfc27b4dce3e","savedPayload":{"position":{"x":16649.2106568899,"y":17860.756178529038},"targetPosition":{"x":16941.323671923652,"y":18314.963623246447},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2decc091-6c76-458b-be8e-39e3e72cecd6","savedPayload":{"position":{"x":16941.323671923652,"y":18314.963623246447},"targetPosition":{"x":17220.629783564094,"y":18781.785289917614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f16f2ab8-7ba2-4acf-bf85-8ed89bd1e5af","savedPayload":{"position":{"x":17220.629783564094,"y":18781.785289917614},"targetPosition":{"x":17568.626129399723,"y":19193.389927005283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"79ce9c05-8a4c-4b58-850f-288037acc702","savedPayload":{"position":{"x":18215.45417046328,"y":18993.723220497246},"targetPosition":{"x":18679.11969780613,"y":19034.711166046447},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Bollinger Sub Channels","id":"88bdc751-5a1d-499d-a4ba-888dbcf6dc7a"}}}],"id":"bd0f325d-6f98-468b-8b7b-99a42a175d80","savedPayload":{"position":{"x":18380.24446398573,"y":19553.68728690241},"targetPosition":{"x":18879.35218735615,"y":18688.55301821844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Indicator Bot","name":"Candle Channels","config":"{\n\"codeName\": \"Candle-Channels\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\"\n }\n }","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Candles Channels","id":"98bb0dce-e233-4f70-a4ab-9051ee23abd5","savedPayload":{"position":{"x":17251.908018020375,"y":20099.022145471292},"targetPosition":{"x":17235.360422479636,"y":19469.683657052396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"df7d1cd7-95b0-499c-b51a-772c3fb8a2b0"}}},{"type":"Output Dataset","name":"Multi-Period-Market Candles Channels Objects","id":"e5d3a974-b3e5-4f0c-acaf-9cf9915850ee","savedPayload":{"position":{"x":17088.245022860014,"y":20081.747763895364},"targetPosition":{"x":17235.360422479636,"y":19469.683657052396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"566b9df4-da86-4b4f-a3f4-ef8a76443714"}}}],"outputDatasetFolders":[],"id":"81b11bce-fa94-4295-b3a9-a24b6c0c45d3","savedPayload":{"position":{"x":17238.13762471803,"y":19473.54101744554},"targetPosition":{"x":17303.660242249513,"y":18847.089042837826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","config":"{\n \"mainUtility\": \"Market Ending Point\"\n}","id":"8c5feff4-7b13-404f-9fb7-844f3945715c","savedPayload":{"position":{"x":16968.984844244158,"y":20051.559495583846},"targetPosition":{"x":17075.199457793264,"y":19430.96199190855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}},{"type":"Status Dependency","name":"Candle Channels Multi-Period-Market","config":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"34699cb0-bf71-4fbc-8671-9570617b1cd0","savedPayload":{"position":{"x":16849.580893599617,"y":20018.79699345384},"targetPosition":{"x":17075.199457793264,"y":19430.96199190855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"902925d3-1d23-4894-9459-0be8df3965df"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"ab069a67-5e2f-4a3b-91e1-967d56ba62b6","savedPayload":{"position":{"x":16738.87670904697,"y":19963.23361209863},"targetPosition":{"x":17075.199457793264,"y":19430.96199190855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"dataMineDataDependencies":[],"id":"4775daf3-4ac9-4971-a4fb-4cf66d4fbb45","savedPayload":{"position":{"x":17077.922178884866,"y":19434.886091384604},"targetPosition":{"x":17303.660242249513,"y":18847.089042837826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"902925d3-1d23-4894-9459-0be8df3965df","savedPayload":{"position":{"x":16933.586498910965,"y":19356.493978189144},"targetPosition":{"x":17303.660242249513,"y":18847.089042837826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"e9a9ec41-7040-4301-911f-8911d731c7cb","savedPayload":{"position":{"x":16814.368487506,"y":19243.348394427485},"targetPosition":{"x":17303.660242249513,"y":18847.089042837826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"0ee514b6-0528-4ff9-a901-a519856fbee4","savedPayload":{"position":{"x":16728.47997609013,"y":19103.061629765027},"targetPosition":{"x":17303.660242249513,"y":18847.089042837826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb","savedPayload":{"position":{"x":18489.968338733295,"y":19299.53196417753},"targetPosition":{"x":18532.828393172356,"y":18888.264579279552},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\"\n }\n }","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily Candles Channels","id":"2950c6a6-f1fc-4641-8376-96debaf2e213","savedPayload":{"position":{"x":16294.00034296545,"y":19514.961835247865},"targetPosition":{"x":16650.336846619743,"y":18995.858999211407},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"07734f1c-e2e7-4a35-8567-6a996c68883e"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Candles Channels Objects","id":"f1f62696-e584-4b36-b69f-1a557409297a","savedPayload":{"position":{"x":16175.708406231357,"y":19409.814020294343},"targetPosition":{"x":16650.336846619743,"y":18995.858999211407},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"8a7d224b-7571-4e1a-8b8f-8a35aa25dc63"}}}],"outputDatasetFolders":[],"id":"f81d660c-db1f-44d2-81e5-5fe6c591bab2","savedPayload":{"position":{"x":16650.336846619743,"y":18995.858999211407},"targetPosition":{"x":17071.739552830593,"y":18527.80796840977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\n \"mainUtility\": \"Market Starting Point\"\n}","id":"7bdf41eb-4243-4417-8df8-6dbf82cf637f","savedPayload":{"position":{"x":16107.287708304988,"y":19323.30125729359},"targetPosition":{"x":16543.45973859763,"y":18870.381159261604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","config":"{\n \"mainUtility\": \"Market Ending Point\"\n}","id":"43a935c4-46a1-478e-81d0-65c18f1128dc","savedPayload":{"position":{"x":16044.214508839867,"y":19254.617300652793},"targetPosition":{"x":16543.45973859763,"y":18870.381159261604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Candle Channels Multi-Period-Daily","config":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"71232c95-96bd-4c90-8571-be97495baab0","savedPayload":{"position":{"x":15991.355662662163,"y":19174.796241786273},"targetPosition":{"x":16543.45973859763,"y":18870.381159261604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"4a89ffcd-ef6d-4dd2-bbf6-6e2f1dba24cd"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"97ac78ed-bc8d-49f0-8111-527d7802b559","savedPayload":{"position":{"x":15946.834676009636,"y":19073.43055335313},"targetPosition":{"x":16543.45973859763,"y":18870.381159261604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"dataMineDataDependencies":[],"id":"41a2dd93-007f-4835-ac77-0bedbe22b128","savedPayload":{"position":{"x":16543.45973859763,"y":18870.381159261604},"targetPosition":{"x":17071.739552830593,"y":18527.80796840977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"4a89ffcd-ef6d-4dd2-bbf6-6e2f1dba24cd","savedPayload":{"position":{"x":16472.769314223744,"y":18722.08084599146},"targetPosition":{"x":17071.739552830593,"y":18527.80796840977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"31740e1a-525b-4ff3-bd71-7fb9c95a0a72","savedPayload":{"position":{"x":16442.854246985,"y":18560.456467520664},"targetPosition":{"x":17071.739552830593,"y":18527.80796840977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"e29dc92e-bbd9-45ae-ac52-1ee785e44928","savedPayload":{"position":{"x":16455.856589609582,"y":18396.674771418962},"targetPosition":{"x":17071.739552830593,"y":18527.80796840977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f","savedPayload":{"position":{"x":18255.847668977432,"y":19195.249620264007},"targetPosition":{"x":18532.828393172356,"y":18888.264579279552},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Candles Channels","config":"{\n \"codeName\": \"Candles-Channels\",\n \"singularVariableName\": \"candlesChannel\",\n \"pluralVariableName\": \"candlesChannels\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"df7d1cd7-95b0-499c-b51a-772c3fb8a2b0","savedPayload":{"position":{"x":17242.904425029534,"y":19026.868191132056},"targetPosition":{"x":17633.402467776,"y":18861.17686559241},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"07734f1c-e2e7-4a35-8567-6a996c68883e","savedPayload":{"position":{"x":17211.037805225875,"y":18896.94497010918},"targetPosition":{"x":17633.402467776,"y":18861.17686559241},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"bb911132-56d2-4368-ac9d-b013c2bf25ae","savedPayload":{"position":{"x":16773.381257120323,"y":18928.288394465217},"targetPosition":{"x":16894.32403150144,"y":18823.687897692063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ed49d0b4-d13f-42ea-ac30-18fcf718b664","savedPayload":{"position":{"x":16894.32403150144,"y":18823.687897692063},"targetPosition":{"x":17014.528664960304,"y":18717.208487487922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"58e1bae8-a892-4d59-bd35-d87458cf8bae","savedPayload":{"position":{"x":16694.32592370417,"y":18745.232668414712},"targetPosition":{"x":16853.80602443837,"y":18731.66928673323},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2553b276-b77a-4044-9a25-8fde8158c3fa","savedPayload":{"position":{"x":16853.80602443837,"y":18731.66928673323},"targetPosition":{"x":17014.528664960304,"y":18717.208487487922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Direction","config":"{\n \"codeName\": \"direction\",\n \"isString\": true,\n \"possibleValues\": [\"Up\", \"Down\", \"Side\"]\n}","formula":{"type":"Formula","code":"record.current.direction","id":"7273b074-f439-4ff1-82c7-86bf0eb38fb3","savedPayload":{"position":{"x":16738.91502314107,"y":18551.714501594648},"targetPosition":{"x":16876.086772683295,"y":18634.198323987817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a400d6da-4e0c-417f-bc02-b33b7f64c94f","savedPayload":{"position":{"x":16876.086772683295,"y":18634.198323987817},"targetPosition":{"x":17014.528664960304,"y":18717.208487487922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Period","config":"{\n \"codeName\": \"period\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.period","id":"41659e98-8488-4d01-9ed4-04520fe9a923","savedPayload":{"position":{"x":16882.70260632794,"y":18442.41359710132},"targetPosition":{"x":16945.50276229015,"y":18589.619630349735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"01cf59b3-450b-47cc-a235-d334957ed2bd","savedPayload":{"position":{"x":16945.50276229015,"y":18589.619630349735},"targetPosition":{"x":17014.528664960304,"y":18717.208487487922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e186e788-474c-47be-9685-6060c60963d9","savedPayload":{"position":{"x":17014.528664960304,"y":18717.208487487922},"targetPosition":{"x":17633.402467776,"y":18861.17686559241},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"if (record.previous !== undefined) {\n if (record.current.direction === record.previous.direction) {\n variable.period++\n } else {\n variable.period = 1\n }\n}","id":"ed8b3159-b7bb-44a0-850e-d55a4c0c76a2","savedPayload":{"position":{"x":16976.263022886764,"y":18506.547492573864},"targetPosition":{"x":17064.08954276958,"y":18580.973489054675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ffc37ffd-9763-42c5-8a92-53962e11190e","savedPayload":{"position":{"x":17064.08954276958,"y":18580.973489054675},"targetPosition":{"x":17271.404383916066,"y":18642.79733648045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"variable.period = 1","id":"0c8b195c-a6a6-4e83-b1e6-43a4aca039a6","savedPayload":{"position":{"x":17035.3237186149,"y":18424.8531931758},"targetPosition":{"x":17110.756692825806,"y":18502.578612489917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"5668a3b7-6ebc-4e90-8431-2b7f832e4434","savedPayload":{"position":{"x":17110.756692825806,"y":18502.578612489917},"targetPosition":{"x":17271.404383916066,"y":18642.79733648045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"694d2276-7466-4884-a5b3-99a52e16ea91","savedPayload":{"position":{"x":17271.404383916066,"y":18642.79733648045},"targetPosition":{"x":17633.402467776,"y":18861.17686559241},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8c81d378-0947-4e9d-be25-58e69120152e","savedPayload":{"position":{"x":18111.001098692643,"y":18977.557293859758},"targetPosition":{"x":18532.828393172356,"y":18888.264579279552},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Candles Channels","id":"864f26cb-b191-47c1-801e-57bb2436294e"}}},{"type":"Product Definition","name":"Candles Channels Objects","config":"{\n \"codeName\": \"Candles-Channels-Objects\",\n \"singularVariableName\": \"candlesChannelObjects\",\n \"pluralVariableName\": \"candlesChannelsObjects\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"566b9df4-da86-4b4f-a3f4-ef8a76443714","savedPayload":{"position":{"x":17319.209219482967,"y":18523.404553974284},"targetPosition":{"x":17732.44227679275,"y":18618.554958470417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"8a7d224b-7571-4e1a-8b8f-8a35aa25dc63","savedPayload":{"position":{"x":17369.531000793508,"y":18399.62922916669},"targetPosition":{"x":17732.44227679275,"y":18618.554958470417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"b5fad2c7-a8bc-464d-b459-a925a7d1bc95","savedPayload":{"position":{"x":17171.559086614314,"y":18218.587730595205},"targetPosition":{"x":17317.61074054695,"y":18138.6623681341},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"89ecb579-a25e-4db4-8f3c-599d6cf4bbb7","savedPayload":{"position":{"x":17139.4368698448,"y":18148.25709615196},"targetPosition":{"x":17317.61074054695,"y":18138.6623681341},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Direction","config":"{\n \"codeName\": \"direction\",\n \"isString\": true,\n \"possibleValues\": [\"Up\", \"Down\", \"Side\"]\n}","id":"c72882a9-25bc-4be9-b90c-072040321213","savedPayload":{"position":{"x":17153.391885194513,"y":18084.393092538383},"targetPosition":{"x":17317.61074054695,"y":18138.6623681341},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Period","config":"{\n \"codeName\": \"period\",\n \"isString\": false\n}","id":"c253b3ab-56f4-4aa8-8dd2-801721fd07a7","savedPayload":{"position":{"x":17179.214804893687,"y":18019.24185539099},"targetPosition":{"x":17317.61074054695,"y":18138.6623681341},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"First Min","config":"{ \n\"codeName\": \"firstMin\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"4e21dc37-1099-4ed7-8d63-e32e0764ab01","savedPayload":{"position":{"x":17236.642047590165,"y":18009.204587029315},"targetPosition":{"x":17317.61074054695,"y":18138.6623681341},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Last Min","config":"{ \n\"codeName\": \"lastMin\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"62d4e90b-f3d5-4e32-9ef2-a3b460e17522","savedPayload":{"position":{"x":17304.33300588584,"y":17929.646209563867},"targetPosition":{"x":17317.61074054695,"y":18138.6623681341},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"First Max","config":"{ \n\"codeName\": \"firstMax\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"3d4a753f-2b69-49e3-8a3d-4c99ed137495","savedPayload":{"position":{"x":17332.205218785995,"y":18022.711181572715},"targetPosition":{"x":17317.61074054695,"y":18138.6623681341},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Last Max","config":"{ \n\"codeName\": \"lastMax\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"55381285-2fa6-4ffc-a174-38e3e126708b","savedPayload":{"position":{"x":17429.80222214847,"y":17986.554396202762},"targetPosition":{"x":17317.61074054695,"y":18138.6623681341},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a4c69128-a306-4eac-83a7-20002c4a6b4b","savedPayload":{"position":{"x":17317.61074054695,"y":18138.6623681341},"targetPosition":{"x":17732.44227679275,"y":18618.554958470417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"\n\nif (record.next !== undefined) {\n\n if (\n record.current.direction === record.next.direction) {\n\n if (variable.channel === undefined) {\n\n variable.channel = {\n begin: undefined,\n end: undefined,\n direction: undefined,\n period: 0,\n firstMin: 0,\n lastMin: 0,\n firstMax: 0,\n lastMax: 0\n }\n\n variable.channel.direction = record.current.direction\n variable.channel.period = 2\n\n variable.channel.begin = record.current.begin\n variable.channel.end = record.next.end\n\n variable.channel.firstMin = record.current.min\n variable.channel.lastMin = record.next.min\n\n variable.channel.firstMax = record.current.max\n variable.channel.lastMax = record.next.max\n\n } else {\n\n variable.channel.period++\n variable.channel.end = record.next.end\n variable.channel.lastMin = record.next.min\n variable.channel.lastMax = record.next.max\n\n }\n } else {\n\n if (variable.channel !== undefined) {\n results.push(variable.channel)\n variable.channel = undefined\n } else {\n /* The variable.channel has only one period */\n\n variable.channel = {}\n\n variable.channel.direction = record.current.direction\n variable.channel.period = 1\n\n variable.channel.begin = record.current.begin\n variable.channel.end = record.current.end\n\n variable.channel.firstMin = record.current.min\n variable.channel.lastMin = record.current.min\n\n variable.channel.firstMax = record.current.max\n variable.channel.lastMax = record.current.max\n\n results.push(variable.channel)\n variable.channel = undefined\n }\n }\n} else {\n if (variable.channel !== undefined) {\n variable.channel.period++\n variable.channel.end = record.current.end\n variable.channel.lastMin = record.current.min\n variable.channel.lastMax = record.current.max\n results.push(variable.channel)\n variable.channel = undefined\n } else {\n /* The variable.channel has only one period */\n\n variable.channel = {}\n\n variable.channel.direction = record.current.direction\n variable.channel.period = 1\n\n variable.channel.begin = record.current.begin\n variable.channel.end = record.current.end\n\n variable.channel.firstMin = record.current.min\n variable.channel.lastMin = record.current.min\n\n variable.channel.firstMax = record.current.max\n variable.channel.lastMax = record.current.max\n\n results.push(variable.channel)\n variable.channel = undefined\n }\n}","id":"3d8fcb90-fd49-4a4a-b905-63c2db9a6148","savedPayload":{"position":{"x":17539.478747207682,"y":18153.035851452714},"targetPosition":{"x":17576.956818299986,"y":18245.020922877444},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"58776129-39ee-4063-8f51-ca59c75bcae6","savedPayload":{"position":{"x":17576.956818299986,"y":18245.020922877444},"targetPosition":{"x":17617.107889269,"y":18343.056170861608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d2d46944-c474-417b-a12c-d9b011ffcaa5","savedPayload":{"position":{"x":17617.107889269,"y":18343.056170861608},"targetPosition":{"x":17732.44227679275,"y":18618.554958470417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047","savedPayload":{"position":{"x":18120.24920524968,"y":18762.22948557813},"targetPosition":{"x":18532.828393172356,"y":18888.264579279552},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Candles Channels Objects","id":"7aa1e889-ae4f-4945-b0e5-9ad87ded05a5"}}}],"id":"c4adde4f-8ed9-4a02-8994-90f0967c8be1","savedPayload":{"position":{"x":18014.898357304523,"y":19188.127283096066},"targetPosition":{"x":18879.35218735615,"y":18688.55301821844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Indicator Bot","name":"Resistances and Supports","config":"{ \n\"codeName\": \"Resistances-And-Supports\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates SMAs for Time Frames of 01-hs and above.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Resistances","id":"5ccce358-1e38-4b97-9bd4-2634d38f4bc4","savedPayload":{"position":{"x":18612.122434797726,"y":19784.831447311924},"targetPosition":{"x":18289.190043051367,"y":19549.792404718366},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"44e905fc-719f-453b-a567-fd5e3bfcae91"}}},{"type":"Output Dataset","name":"Multi-Period-Market Supports","id":"0f3718f9-e4ed-4217-b59f-77ace0cf9aef","savedPayload":{"position":{"x":18247.890588026716,"y":19947.24537559074},"targetPosition":{"x":18289.190043051367,"y":19549.792404718366},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"4a1bd251-76ed-4530-8723-08e41d50f12d"}}}],"outputDatasetFolders":[],"id":"cf7a746c-31f5-4a6e-9ea1-96d1163905cc","savedPayload":{"position":{"x":17790.831508278116,"y":19550.259170445108},"targetPosition":{"x":17587.469872225178,"y":19093.252019173895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","config":"{\"mainUtility\": \"Market Ending Point\"}","id":"a27c7e9d-a3ea-4f6e-b682-9474ccfe5366","savedPayload":{"position":{"x":18134.65776622203,"y":19931.68601210266},"targetPosition":{"x":18033.467898216048,"y":19590.048016400255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}},{"type":"Status Dependency","name":"Resistances and Supports Multi-Period-Market","config":"{ \n\"mainUtility\": \"Self Reference|Market Starting Point|Market Ending Point\"\n}","id":"d0c6a69b-9ee7-4b2e-b58f-050878def5fd","savedPayload":{"position":{"x":17996.081618403732,"y":19944.510215325165},"targetPosition":{"x":18033.467898216048,"y":19590.048016400255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"61f870e5-33d1-401e-8ca6-f4da59d955bc"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"899c04ed-0144-4193-a7f0-658061c4b719","savedPayload":{"position":{"x":17863.113660916475,"y":19903.019667116365},"targetPosition":{"x":18033.467898216048,"y":19590.048016400255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"dataMineDataDependencies":[],"id":"46684253-b8e4-447d-b8d0-6b13ed7ab29b","savedPayload":{"position":{"x":17535.213721056854,"y":19590.68565268388},"targetPosition":{"x":17587.469872225178,"y":19093.252019173895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"61f870e5-33d1-401e-8ca6-f4da59d955bc","savedPayload":{"position":{"x":17293.62890426842,"y":19497.958027415352},"targetPosition":{"x":17587.469872225178,"y":19093.252019173895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"02633aff-3554-4a49-9fd7-a348c9b3671d","savedPayload":{"position":{"x":17130.7232882573,"y":19296.893688147262},"targetPosition":{"x":17587.469872225178,"y":19093.252019173895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"e69d76de-05e3-428a-b823-bfb0e191c659","savedPayload":{"position":{"x":17090.157405320326,"y":19041.545074478767},"targetPosition":{"x":17587.469872225178,"y":19093.252019173895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5d9b2729-43fb-4e7e-aa4f-b8477c424e51","savedPayload":{"position":{"x":17587.469872225178,"y":19093.252019173895},"targetPosition":{"x":17881.085155905155,"y":18688.55339034958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Describe what the process does.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily Resistances","id":"e990eaed-a1b4-4668-9778-b0310f249235","savedPayload":{"position":{"x":18261.581681799875,"y":19802.568587857393},"targetPosition":{"x":18027.029545585065,"y":19479.32356517798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f4530d48-3239-4ab0-8c4d-d611cd55fde3"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Supports","id":"a4208abc-dbfe-4568-8697-4fdbc1bef5c9","savedPayload":{"position":{"x":17867.228538567775,"y":19804.465509445017},"targetPosition":{"x":18027.029545585065,"y":19479.32356517798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"deaaf4ec-9352-40b6-af9a-8541a73a5e13"}}}],"outputDatasetFolders":[],"id":"86d9d925-de8e-4e76-b08c-2b6fb2303d37","savedPayload":{"position":{"x":17799.784087408556,"y":19332.246277778948},"targetPosition":{"x":17903.918461338348,"y":18842.838894147102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Resistances and Supports Multi-Period-Daily","config":"{\"mainUtility\": \"Self Reference\"}","id":"c8e28e76-f11d-493e-8961-6c26a1eed57d","savedPayload":{"position":{"x":18021.272062902986,"y":19871.953783527057},"targetPosition":{"x":17771.61953260993,"y":19438.724916519095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"3842d7ea-292c-438c-af35-f5e6a6c68105"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","config":"{\"mainUtility\": \"Market Ending Point\"}","id":"56bc0c89-e012-47b1-9e33-3ed4fdc3aa52","savedPayload":{"position":{"x":17734.453791451717,"y":19792.958547052887},"targetPosition":{"x":17771.61953260993,"y":19438.724916519095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\"mainUtility\": \"Market Starting Point\"}","id":"723d9197-6349-4499-9dd4-f6443cba19be","savedPayload":{"position":{"x":17533.19349117183,"y":19703.564367015257},"targetPosition":{"x":17771.61953260993,"y":19438.724916519095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"1e51570a-18ba-4d61-8fc2-4019acc2ffeb","savedPayload":{"position":{"x":17423.14171627106,"y":19512.76908973245},"targetPosition":{"x":17771.61953260993,"y":19438.724916519095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"dataMineDataDependencies":[],"id":"bf0382d1-1529-4cb0-8c9c-39659093d9e8","savedPayload":{"position":{"x":17569.122411180117,"y":19214.418462224465},"targetPosition":{"x":17903.918461338348,"y":18842.838894147102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"3842d7ea-292c-438c-af35-f5e6a6c68105","savedPayload":{"position":{"x":17428.250341420648,"y":18997.364583846913},"targetPosition":{"x":17903.918461338348,"y":18842.838894147102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"ab23ac12-59f4-42a2-86f3-5c32619f4c6e","savedPayload":{"position":{"x":17414.722870508336,"y":18739.185648653536},"targetPosition":{"x":17903.918461338348,"y":18842.838894147102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"7e2fdde9-8b64-44a3-85f1-10c3935bd3e3","savedPayload":{"position":{"x":17532.35790582143,"y":18508.619122453205},"targetPosition":{"x":17903.918461338348,"y":18842.838894147102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"be19d91b-9337-4f84-96b3-f4e54ea12df5","savedPayload":{"position":{"x":17405.77038283014,"y":18843.11449652354},"targetPosition":{"x":17881.085155905155,"y":18688.55339034958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Resistances","config":"{ \n\"codeName\": \"Resistances\",\n \"singularVariableName\": \"resistance\",\n \"pluralVariableName\": \"resistances\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"\n{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"44e905fc-719f-453b-a567-fd5e3bfcae91","savedPayload":{"position":{"x":17203.93376484131,"y":18681.16974260434},"targetPosition":{"x":17406.26388249718,"y":18533.96122788228},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }\n","id":"f4530d48-3239-4ab0-8c4d-d611cd55fde3","savedPayload":{"position":{"x":17156.19456741488,"y":18533.714367782428},"targetPosition":{"x":17406.26388249718,"y":18533.96122788228},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"8fc59f80-7313-43a0-be1f-3601c653253f","savedPayload":{"position":{"x":15634.822854414375,"y":19096.47744382827},"targetPosition":{"x":15961.49797414399,"y":18718.441581573574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"4db89c62-71d4-4add-8a8a-3fd37b230993","savedPayload":{"position":{"x":15961.49797414399,"y":18718.441581573574},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"8cd95902-f17d-49c6-947f-b574dab41637","savedPayload":{"position":{"x":15530.406809619482,"y":19004.084482402155},"targetPosition":{"x":15888.1037721704,"y":18655.187134667103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ca4c0849-7e58-4dee-958a-7b9567c9bc22","savedPayload":{"position":{"x":15888.1037721704,"y":18655.187134667103},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Rate Resistance","config":"{\n \"codeName\": \"rateResistance\"\n}","formula":{"type":"Formula","code":"variable.resistance.rate","id":"3ead495c-b3d7-4232-bd44-a0201833230e","savedPayload":{"position":{"x":15440.680729092112,"y":18905.233379306366},"targetPosition":{"x":15826.739920049706,"y":18587.955442264814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a198ddb9-bfdc-4ba5-8772-6ddb98a1151d","savedPayload":{"position":{"x":15826.739920049706,"y":18587.955442264814},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Period Resistance","config":"{\n \"codeName\": \"periodResistance\"\n}","formula":{"type":"Formula","code":"variable.resistance.period","id":"5ad98412-3b69-4eba-b1ea-6aa86e0db304","savedPayload":{"position":{"x":15361.390571354046,"y":18801.431014184927},"targetPosition":{"x":15773.012189717636,"y":18518.054400532732},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"561ab821-c7be-4df8-abb4-3d1a5421b27b","savedPayload":{"position":{"x":15773.012189717636,"y":18518.054400532732},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Type Resistance","config":"{\n \"codeName\": \"typeResistance\",\n \"isString\": true,\n \"possibleValues\": [\"Resistance\", \"Support\"]\n}","formula":{"type":"Formula","code":"variable.resistance.type","id":"2d379184-f16b-4c87-8ed4-a0c57d1e2837","savedPayload":{"position":{"x":15292.7634313142,"y":18692.057670411203},"targetPosition":{"x":15726.968641727093,"y":18444.627364778178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7cdcd891-d5e4-4237-9189-8ad7691d41ac","savedPayload":{"position":{"x":15726.968641727093,"y":18444.627364778178},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 1 Rate","config":"{ \n\"codeName\": \"resistance1Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance1Rate","id":"b3da6d1a-38f0-4b52-88eb-926d32db8bf3","savedPayload":{"position":{"x":15233.49948018286,"y":18578.116716569042},"targetPosition":{"x":15687.152353118496,"y":18368.41559247706},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"bea03586-2505-4e03-9a2b-3a9477955e66","savedPayload":{"position":{"x":15687.152353118496,"y":18368.41559247706},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 1 Period","config":"{ \n\"codeName\": \"resistance1Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance1Period","id":"292c00a5-59ff-4075-a386-6b5222b26019","savedPayload":{"position":{"x":15185.142690582757,"y":18459.716386917782},"targetPosition":{"x":15654.934267789573,"y":18289.152773150334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b8872bec-843c-41cb-a42a-9da8248dc514","savedPayload":{"position":{"x":15654.934267789573,"y":18289.152773150334},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 2 Rate","config":"{ \n\"codeName\": \"resistance2Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance2Rate","id":"f9904c9a-9244-4d2d-a5b6-22600493c059","savedPayload":{"position":{"x":15146.025587679684,"y":18338.052449956107},"targetPosition":{"x":15628.59997141893,"y":18207.85786219907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"33f9cf94-552f-418d-b93a-8d073def39e7","savedPayload":{"position":{"x":15628.59997141893,"y":18207.85786219907},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 2 Period","config":"{ \n\"codeName\": \"resistance2Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance2Period","id":"4b08a91c-42f9-4354-b197-a6a84d08d0cb","savedPayload":{"position":{"x":15118.816012584659,"y":18213.178719575877},"targetPosition":{"x":15610.733813420564,"y":18124.49584373593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e67af800-29c1-49fc-9162-13b8a750bfbf","savedPayload":{"position":{"x":15610.733813420564,"y":18124.49584373593},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 3 Rate","config":"{ \n\"codeName\": \"resistance3Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance3Rate","id":"69de03a4-e0a2-4136-8353-20c7a61cf4e5","savedPayload":{"position":{"x":15100.316083543375,"y":18086.838283239947},"targetPosition":{"x":15598.020729741325,"y":18040.088533280723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"688458ca-7c03-4ba9-a09f-97c556e5bbae","savedPayload":{"position":{"x":15598.020729741325,"y":18040.088533280723},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 3 Period","config":"{ \n\"codeName\": \"resistance3Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance3Period","id":"12621061-eba5-477c-add4-85a431de92a4","savedPayload":{"position":{"x":15095.512430604103,"y":17959.152892715236},"targetPosition":{"x":15595.378651996765,"y":17955.00088210838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3be3022d-d812-4570-8d01-849a104da943","savedPayload":{"position":{"x":15595.378651996765,"y":17955.00088210838},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 4 Rate","config":"{ \n\"codeName\": \"resistance4Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance4Rate","id":"acd8a299-32f4-4646-9acf-f679612e7ff7","savedPayload":{"position":{"x":15097.50606445316,"y":17831.555094254243},"targetPosition":{"x":15595.999086463335,"y":17869.581360993092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"97f41f84-75e6-4b28-a948-6971fa6a3c95","savedPayload":{"position":{"x":15595.999086463335,"y":17869.581360993092},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 4 Period","config":"{ \n\"codeName\": \"resistance4Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance4Period","id":"0dcb8ce8-61a4-4acc-a78b-8323d2d265af","savedPayload":{"position":{"x":15116.104580406047,"y":17705.068584900768},"targetPosition":{"x":15609.424606107405,"y":17785.62313687811},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b23829c6-2cac-4cbe-bf10-0dff088077ba","savedPayload":{"position":{"x":15609.424606107405,"y":17785.62313687811},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 5 Rate","config":"{ \n\"codeName\": \"resistance5Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance5Rate","id":"8ca891d5-65e6-4b57-840f-355241255c69","savedPayload":{"position":{"x":15137.314958928146,"y":17579.25896044046},"targetPosition":{"x":15622.221022099384,"y":17700.90530031392},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e7a2bbe6-f265-4069-8d11-377fba99a6c3","savedPayload":{"position":{"x":15622.221022099384,"y":17700.90530031392},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 5 Period","config":"{ \n\"codeName\": \"resistance5Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance5Period","id":"a862b407-8962-4b48-8add-169cdd893269","savedPayload":{"position":{"x":15180.225697123204,"y":17458.6327795357},"targetPosition":{"x":15652.735062950444,"y":17621.59423488543},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"30bb7e73-32f0-4cbb-bc41-eb3bdc086718","savedPayload":{"position":{"x":15652.735062950444,"y":17621.59423488543},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 1 Bounce 1","config":"{ \n\"codeName\": \"resistance1Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance1Bounce1","id":"2238f0b3-c9e0-45b2-ab8e-66b4ce2ff98e","savedPayload":{"position":{"x":15218.208451364524,"y":17336.545289746486},"targetPosition":{"x":15675.590833381066,"y":17538.28720006268},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c111cf47-76d4-44d5-9c39-60f72eca4226","savedPayload":{"position":{"x":15675.590833381066,"y":17538.28720006268},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 1 Bounce 2","config":"{ \n\"codeName\": \"resistance1Bounce2\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance1Bounce2","id":"5de72a19-6f28-4e45-ab8c-532f77ddffbb","savedPayload":{"position":{"x":15286.186620664303,"y":17228.125664768733},"targetPosition":{"x":15724.44122225913,"y":17468.384778092404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"9018b3af-c080-48b4-82c6-8489268c0690","savedPayload":{"position":{"x":15724.44122225913,"y":17468.384778092404},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 1 Bounce 3","config":"{ \n\"codeName\": \"resistance1Bounce3\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance1Bounce3","id":"ce754586-45d8-44d3-b6df-4abd1303671c","savedPayload":{"position":{"x":15337.8945313159,"y":17109.018708189156},"targetPosition":{"x":15754.419389044784,"y":17385.392343984604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0b7458a1-dd88-4b0a-91b7-b92df6263fb4","savedPayload":{"position":{"x":15754.419389044784,"y":17385.392343984604},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 1 Bounce 5","config":"{ \n\"codeName\": \"resistance1Bounce5\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance1Bounce5","id":"4520275c-befa-4070-8b21-9b741381ff87","savedPayload":{"position":{"x":15431.009672476654,"y":17020.772233872623},"targetPosition":{"x":15822.50625985896,"y":17331.439644293438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f0479991-f060-44bf-8ac5-5b895362f3ef","savedPayload":{"position":{"x":15822.50625985896,"y":17331.439644293438},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 1 Bounce 10","config":"{ \n\"codeName\": \"resistance1Bounce10\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance1Bounce10","id":"2185c09e-8439-4776-9cb8-503d08e2eaed","savedPayload":{"position":{"x":15493.356600533998,"y":16903.029469107685},"targetPosition":{"x":15857.18512056529,"y":17245.85312028069},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"33826a2e-6432-4a0c-accb-d3a930a1dd73","savedPayload":{"position":{"x":15857.18512056529,"y":17245.85312028069},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 1 Bounce All","config":"{ \n\"codeName\": \"resistance1BounceAll\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance1BounceAll","id":"81fabb3a-9c41-41e9-b09e-f168ca8c7032","savedPayload":{"position":{"x":15609.262128975115,"y":16842.461388555592},"targetPosition":{"x":15942.590072390738,"y":17214.82336173659},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"99647cd5-b683-4014-a213-d24fa859d561","savedPayload":{"position":{"x":15942.590072390738,"y":17214.82336173659},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 2 Bounce 1","config":"{ \n\"codeName\": \"resistance2Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance2Bounce1","id":"c810907a-f21c-4163-9e8e-8a884e8aa0f7","savedPayload":{"position":{"x":15682.265199516734,"y":16726.01778750016},"targetPosition":{"x":15982.920127304931,"y":17125.428635370736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d93c9b19-9366-444c-b1e2-40c0d7f5685d","savedPayload":{"position":{"x":15982.920127304931,"y":17125.428635370736},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 2 Bounce 2","config":"{ \n\"codeName\": \"resistance2Bounce2\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance2Bounce2","id":"348406a5-5031-4393-becb-19c4f325b698","savedPayload":{"position":{"x":15812.510671730994,"y":16695.838642585222},"targetPosition":{"x":16078.090013673662,"y":17119.175920084945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0458195f-bd6e-474e-8387-0e15f4730aef","savedPayload":{"position":{"x":16078.090013673662,"y":17119.175920084945},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 2 Bounce 3","config":"{ \n\"codeName\": \"resistance2Bounce3\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance2Bounce3","id":"eebbde09-23ce-4403-b792-17c9fd5da771","savedPayload":{"position":{"x":15900.171481475089,"y":16586.7434971562},"targetPosition":{"x":16128.990554973181,"y":17031.24237298613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"9b56c44a-4141-4a6c-8b97-345cd1fc5ff3","savedPayload":{"position":{"x":16128.990554973181,"y":17031.24237298613},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 2 Bounce 5","config":"{ \n\"codeName\": \"resistance2Bounce5\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance2Bounce5","id":"6b64ca08-f049-4a3b-97a3-91eb11d07f70","savedPayload":{"position":{"x":16034.887523588266,"y":16582.146364723372},"targetPosition":{"x":16225.083548921044,"y":17044.283999498195},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fb3c325e-8229-4879-9a16-d0b00b12b527","savedPayload":{"position":{"x":16225.083548921044,"y":17044.283999498195},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 2 Bounce 10","config":"{ \n\"codeName\": \"resistance2Bounce10\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance2Bounce10","id":"eae97d09-1001-4c26-9337-ba15de4b6b16","savedPayload":{"position":{"x":16139.612989632762,"y":16489.077181520137},"targetPosition":{"x":16290.002347256708,"y":16965.865019923003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"bdeb35a8-ff0d-4441-8507-595bf5152fdb","savedPayload":{"position":{"x":16290.002347256708,"y":16965.865019923003},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 2 Bounce All","config":"{ \n\"codeName\": \"resistance2BounceAll\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance2BounceAll","id":"8f31479b-9788-4b26-9e29-17b021e080bc","savedPayload":{"position":{"x":16273.114441032883,"y":16505.7762725656},"targetPosition":{"x":16382.452861956928,"y":16993.421403629498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f762cc91-2102-4f76-81d0-47ebc238f7b2","savedPayload":{"position":{"x":16382.452861956928,"y":16993.421403629498},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 3 Bounce 1","config":"{ \n\"codeName\": \"resistance3Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance3Bounce1","id":"dc591f82-09c1-4a97-9571-db4dea91848a","savedPayload":{"position":{"x":16392.526692349264,"y":16433.49906370096},"targetPosition":{"x":16460.1534054653,"y":16928.850339594053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"108588b4-799b-4a53-880c-09e6241a0d83","savedPayload":{"position":{"x":16460.1534054653,"y":16928.850339594053},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 3 Bounce 2","config":"{ \n\"codeName\": \"resistance3Bounce2\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance3Bounce2","id":"99fdd4d2-2681-45c5-a10c-b5a26d9146f5","savedPayload":{"position":{"x":16521.35328423482,"y":16471.064104874687},"targetPosition":{"x":16546.6821060255,"y":16970.18054071551},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cc680268-6a77-4bf3-8fb6-d52fe13c501c","savedPayload":{"position":{"x":16546.6821060255,"y":16970.18054071551},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 3 Bounce 3","config":"{ \n\"codeName\": \"resistance3Bounce3\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance3Bounce3","id":"d9cfaabe-04b9-4b3a-8143-f5ef50ac58ed","savedPayload":{"position":{"x":16651.108758943796,"y":16420.889059726458},"targetPosition":{"x":16634.222226875572,"y":16920.54388967072},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"31034bc5-b30a-4073-ad24-968a1f879551","savedPayload":{"position":{"x":16634.222226875572,"y":16920.54388967072},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 3 Bounce 5","config":"{ \n\"codeName\": \"resistance3Bounce5\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance3Bounce5","id":"db83ae1b-24e1-460f-bea8-f7273ca83e26","savedPayload":{"position":{"x":16771.77432765878,"y":16479.244302740073},"targetPosition":{"x":16712.557973001007,"y":16975.459444952212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ebb1a278-c6a4-4834-8fae-486ccd553308","savedPayload":{"position":{"x":16712.557973001007,"y":16975.459444952212},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 3 Bounce 10","config":"{ \n\"codeName\": \"resistance3Bounce10\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance3Bounce10","id":"570566fa-85ca-4603-aad1-36275eb97f39","savedPayload":{"position":{"x":16908.235137462165,"y":16452.140447117326},"targetPosition":{"x":16807.1241855336,"y":16941.708345615953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"80df4b28-5835-43dc-a7a8-6e84f9d57525","savedPayload":{"position":{"x":16807.1241855336,"y":16941.708345615953},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 3 Bounce All","config":"{ \n\"codeName\": \"resistance3BounceAll\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance3BounceAll","id":"e3da0929-67a0-46ca-83b5-526873922999","savedPayload":{"position":{"x":17017.441125245576,"y":16529.754704356914},"targetPosition":{"x":16875.182104993142,"y":17008.76892838015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"096eb127-6766-4d53-a365-12bf9c50c540","savedPayload":{"position":{"x":16875.182104993142,"y":17008.76892838015},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support Resistance Zone","config":"{ \n\"codeName\": \"supportResistanceZone\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.supportResistanceZone","id":"9f06c41a-3f69-409f-b0a8-03a32014f95e","savedPayload":{"position":{"x":17156.534451851046,"y":16526.21661268327},"targetPosition":{"x":16974.099997236186,"y":16991.582287011286},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7b4e7478-e4c0-4664-a95e-8afddd3b245c","savedPayload":{"position":{"x":16974.099997236186,"y":16991.582287011286},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 4 Bounce 1","config":"{ \n\"codeName\": \"resistance4Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance4Bounce1","id":"bbceb956-d606-4ee1-86cb-30d3c9e4d16e","savedPayload":{"position":{"x":17250.970735442235,"y":16621.512961978984},"targetPosition":{"x":17029.69560268618,"y":17069.50526971817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c6eace47-c896-4784-9693-6e9d8b678ae4","savedPayload":{"position":{"x":17029.69560268618,"y":17069.50526971817},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Resistance 5 Bounce 1","config":"{ \n\"codeName\": \"resistance5Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.resistance5Bounce1","id":"335496af-0d73-49cf-bc2e-88237434d4a6","savedPayload":{"position":{"x":17416.02885003635,"y":16675.308374523007},"targetPosition":{"x":17157.534418080257,"y":17102.921360247004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8f735c80-9a12-4061-ab17-7a733f941173","savedPayload":{"position":{"x":17157.534418080257,"y":17102.921360247004},"targetPosition":{"x":16597.63252604717,"y":17946.921535537247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dbfa5564-4cfd-4bec-8748-c0dc7b1afd98","savedPayload":{"position":{"x":16597.63252604717,"y":17946.921535537247},"targetPosition":{"x":17406.26388249718,"y":18533.96122788228},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"\n\nlet candle = record.current\nlet previousCandle = record.previous\n\nvariable.supportResistanceZone = calculateSupportResistanceZone()\n\ndeleteResistances(candle.max)\nincreasePeriods()\n\nvariable.resistance = {}\n\nvariable.resistance.rate = 0\nvariable.resistance.period = 0\nvariable.resistance.type = ''\n\nif (previousCandle !== undefined) {\n\n let previousPreviousCandle = record.previous.previous\n\n if (previousPreviousCandle !== undefined) {\n\n if (previousCandle.max > previousPreviousCandle.max && previousCandle.max > candle.max) {\n variable.resistance.rate = previousCandle.max\n variable.resistance.period = 0\n variable.resistance.type = 'Resistance'\n increaseResistancesBounces(variable.resistance.rate)\n rememberResistance(variable.resistance.rate)\n }\n }\n}\n\nsetClosestResistances()\n\nfunction deleteResistances(rate) {\n\n let max\n\n for (let i = 0; i < variable.resistances.length; i++) {\n let currenRecord = variable.resistances[i]\n let currentRate = currenRecord[0]\n\n if (rate >= currentRate + currentRate * variable.supportResistanceZone / 2 / 100) { // It must go through the support / resistance zone around the current rate value\n max = i\n }\n }\n if (max !== undefined) {\n variable.resistances.splice(0, max + 1)\n }\n}\n\nfunction increasePeriods() {\n\n for (let i = 0; i < variable.resistances.length; i++) {\n let currenRecord = variable.resistances[i]\n currenRecord[1] = currenRecord[1] + 1\n }\n}\n\nfunction setClosestResistances() {\n let record\n\n record = variable.resistances[0]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.resistance1Rate = record[0]\n variable.resistance1Period = record[1]\n variable.resistance1Bounce1 = record[2]\n variable.resistance1Bounce2 = record[3]\n variable.resistance1Bounce3 = record[4]\n variable.resistance1Bounce5 = record[5]\n variable.resistance1Bounce10 = record[6]\n variable.resistance1BounceAll = record[7]\n\n record = variable.resistances[1]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.resistance2Rate = record[0]\n variable.resistance2Period = record[1]\n variable.resistance2Bounce1 = record[2]\n variable.resistance2Bounce2 = record[3]\n variable.resistance2Bounce3 = record[4]\n variable.resistance2Bounce5 = record[5]\n variable.resistance2Bounce10 = record[6]\n variable.resistance2BounceAll = record[7]\n\n record = variable.resistances[2]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.resistance3Rate = record[0]\n variable.resistance3Period = record[1]\n variable.resistance3Bounce1 = record[2]\n variable.resistance3Bounce2 = record[3]\n variable.resistance3Bounce3 = record[4]\n variable.resistance3Bounce5 = record[5]\n variable.resistance3Bounce10 = record[6]\n variable.resistance3BounceAll = record[7]\n\n record = variable.resistances[3]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.resistance4Rate = record[0]\n variable.resistance4Period = record[1]\n variable.resistance4Bounce1 = record[2]\n\n record = variable.resistances[4]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.resistance5Rate = record[0]\n variable.resistance5Period = record[1]\n variable.resistance5Bounce1 = record[2]\n\n}\n\nfunction rememberResistance(rate) {\n if (variable.resistances.length === 0) {\n variable.resistances.push([rate, 1, 0, 0, 0, 0, 0, 0])\n return\n }\n for (let i = 0; i < variable.resistances.length; i++) {\n let currenRecord = variable.resistances[i]\n let currentRate = currenRecord[0]\n\n if (rate > currentRate - currentRate * variable.supportResistanceZone / 2 / 100 && rate < currentRate + currentRate * variable.supportResistanceZone / 2 / 100) {\n // We are not going to remember this new level since it is absorved by this existing one.\n return\n }\n\n if (rate < currentRate) {\n variable.resistances.splice(i, 0, [rate, 1, 0, 0, 0, 0, 0, 0])\n return\n }\n\n if (i === variable.resistances.length - 1) {\n variable.resistances.push([rate, 1, 0, 0, 0, 0, 0, 0])\n return\n }\n }\n}\n\nfunction increaseResistancesBounces(rate) {\n\n for (let i = 0; i < variable.resistances.length; i++) {\n let currenRecord = variable.resistances[i]\n let currentRate = currenRecord[0]\n let percentage = 100 - rate * 100 / currentRate\n\n if (percentage <= variable.supportResistanceZone / 2 * 1) {\n currenRecord[2] = currenRecord[2] + 1\n }\n\n if (percentage <= variable.supportResistanceZone / 2 * 2) {\n currenRecord[3] = currenRecord[3] + 1\n }\n\n if (percentage <= variable.supportResistanceZone / 2 * 3) {\n currenRecord[4] = currenRecord[4] + 1\n }\n\n if (percentage <= variable.supportResistanceZone / 2 * 5) {\n currenRecord[5] = currenRecord[5] + 1\n }\n\n if (percentage <= variable.supportResistanceZone / 2 * 10) {\n currenRecord[6] = currenRecord[6] + 1\n }\n\n currenRecord[7] = currenRecord[7] + 1\n }\n}\n\nfunction calculateSupportResistanceZone() {\n /* \n The variable % is a percentage we will use for support and resistance based on the time frame.\n We will fix the % for 1 minute candles and for 24 hs candle and the use the formula to obtain\n y on a line by knowing 2 points of the line as described here: https://en.wikipedia.org/wiki/Line_(geometry)\n */\n\n let x0 = system.ONE_MIN_IN_MILISECONDS\n let y0 = 0.1 // At one min, we will consider the resistance / support zone to be 0.1% resistance \n let x1 = system.ONE_DAY_IN_MILISECONDS\n let y1 = 4 // At one day, we will consider the resistance / support zone to be 4% resistance\n\n let x = system.timeFrame // This is the current time frame being calculated\n let y = (x - x0) * (y1 - y0) / (x1 - x0) + y0\n\n return y\n\n}","id":"1c051e71-b2ff-4b5e-9239-98cca169e8fe","savedPayload":{"position":{"x":16981.536860647917,"y":17640.011452162824},"targetPosition":{"x":17116.990815610443,"y":17849.96134609424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"27aac2c1-d423-475c-86ae-84041aa2f3f0","savedPayload":{"position":{"x":17116.990815610443,"y":17849.96134609424},"targetPosition":{"x":17252.589529076038,"y":18059.461257394643},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"variable.resistances = []","id":"fdefa569-f171-4d85-8761-d732ebf64ea1","savedPayload":{"position":{"x":17227.803414408954,"y":17559.993794819595},"targetPosition":{"x":17240.270803525964,"y":17809.786318940016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fc16fb34-f72b-4da5-ade1-7598d51a8fbe","savedPayload":{"position":{"x":17240.270803525964,"y":17809.786318940016},"targetPosition":{"x":17252.589529076038,"y":18059.461257394643},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a8703574-5d20-4fe2-a8e9-d01de4a958a9","savedPayload":{"position":{"x":17252.589529076038,"y":18059.461257394643},"targetPosition":{"x":17406.26388249718,"y":18533.96122788228},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7a734501-a0fb-4305-803e-7e95d477c513","savedPayload":{"position":{"x":17406.26388249718,"y":18533.96122788228},"targetPosition":{"x":17881.085155905155,"y":18688.55339034958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Resistances","id":"156b4fa7-7f8f-4464-8ddb-6eb6123bc5c3"}}},{"type":"Product Definition","name":"Supports","config":"{ \n\"codeName\": \"Supports\",\n \"singularVariableName\": \"support\",\n \"pluralVariableName\": \"supports\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"\n{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"4a1bd251-76ed-4530-8723-08e41d50f12d","savedPayload":{"position":{"x":17534.99462759608,"y":18082.28032686648},"targetPosition":{"x":17939.462665530053,"y":18082.282674424147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"deaaf4ec-9352-40b6-af9a-8541a73a5e13","savedPayload":{"position":{"x":17612.598590336267,"y":17844.401696444565},"targetPosition":{"x":17939.462665530053,"y":18082.282674424147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"7cf0c803-eb36-4ada-930f-d129bdffb558","savedPayload":{"position":{"x":16697.410586060014,"y":16896.682051479966},"targetPosition":{"x":17058.18218429674,"y":16808.978688096704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"500e7345-95eb-4430-8171-32caa2356bdf","savedPayload":{"position":{"x":17058.18218429674,"y":16808.978688096704},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"ecbd13b3-2af2-45a5-800c-a34fe73e0db6","savedPayload":{"position":{"x":16559.005060637555,"y":16725.887826857106},"targetPosition":{"x":16927.063553628344,"y":16635.9701363075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a44b1626-282b-49d2-9ad1-cd5c81cc9f4a","savedPayload":{"position":{"x":16927.063553628344,"y":16635.9701363075},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Rate Support","config":"{\n \"codeName\": \"rateSupport\"\n}","formula":{"type":"Formula","code":"variable.support.rate","id":"14075730-a865-48f7-9f44-5c2d201ed16d","savedPayload":{"position":{"x":16735.67283603187,"y":16764.76260140626},"targetPosition":{"x":17094.920675785997,"y":16750.7944722687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b2612e72-07b1-4756-834a-6db765bd386c","savedPayload":{"position":{"x":17094.920675785997,"y":16750.7944722687},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Period Support","config":"{\n \"codeName\": \"periodSupport\"\n}","formula":{"type":"Formula","code":"variable.support.period","id":"a47c1c1f-8e5e-4e03-9177-33fbf3f5d5a7","savedPayload":{"position":{"x":16741.760548868693,"y":16635.888089167787},"targetPosition":{"x":17110.274332967983,"y":16673.713998265506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bd719e1d-c639-4577-b0f1-89663028daa3","savedPayload":{"position":{"x":17110.274332967983,"y":16673.713998265506},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Type Support","config":"{\n \"codeName\": \"typeSupport\",\n \"isString\": true,\n \"possibleValues\": [\"Resistance\", \"Support\"]\n}","formula":{"type":"Formula","code":"variable.support.type","id":"18bf2427-ca89-4840-ba97-c9187b76da8c","savedPayload":{"position":{"x":16573.636622381313,"y":16551.42688223863},"targetPosition":{"x":16950.085007969035,"y":16585.491850511753},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"005b24fe-a5d4-47b7-aa13-03c2aa091d8a","savedPayload":{"position":{"x":16950.085007969035,"y":16585.491850511753},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 1 Rate","config":"{ \n\"codeName\": \"support1Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support1Rate","id":"40e08fb6-52ff-4f0a-99a6-989f5bc81610","savedPayload":{"position":{"x":16769.799321468894,"y":16511.026139497306},"targetPosition":{"x":17137.33508415793,"y":16595.13594872236},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f7755d99-afae-4dfe-a429-5de300b3a64a","savedPayload":{"position":{"x":17137.33508415793,"y":16595.13594872236},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 1 Period","config":"{ \n\"codeName\": \"support1Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support1Period","id":"c65fb3e0-42b1-4de7-9d71-613919f6a7ec","savedPayload":{"position":{"x":16607.251985858526,"y":16419.402175473166},"targetPosition":{"x":16971.66520344222,"y":16517.249461623156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"78fb954c-336d-4a3d-8724-65786fcf8cbf","savedPayload":{"position":{"x":16971.66520344222,"y":16517.249461623156},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 2 Rate","config":"{ \n\"codeName\": \"support2Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support2Rate","id":"0ce65da3-57d2-4161-89aa-68bf1802c52a","savedPayload":{"position":{"x":16826.398813478074,"y":16376.134344540102},"targetPosition":{"x":17160.491618076954,"y":16526.294250221334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5d52e50a-ccad-4487-aebb-ac4b8fbecb1e","savedPayload":{"position":{"x":17160.491618076954,"y":16526.294250221334},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 2 Period","config":"{ \n\"codeName\": \"support2Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support2Period","id":"28425604-1922-47d0-9479-c53c56923197","savedPayload":{"position":{"x":16651.90454365993,"y":16316.09490734007},"targetPosition":{"x":16997.926067680943,"y":16437.369935440584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fa4c6abd-7eee-4f94-b2b6-65e638c5f1c1","savedPayload":{"position":{"x":16997.926067680943,"y":16437.369935440584},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 3 Rate","config":"{ \n\"codeName\": \"support3Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support3Rate","id":"ab99a0da-1377-4cf4-986c-197e52b4c696","savedPayload":{"position":{"x":16695.830341049306,"y":16197.586932199438},"targetPosition":{"x":17192.240060217435,"y":16476.609069727747},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7b87217d-8e2a-425a-a1e1-d5d0a09a98de","savedPayload":{"position":{"x":17192.240060217435,"y":16476.609069727747},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 3 Period","config":"{ \n\"codeName\": \"support3Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support3Period","id":"052e5b14-17d6-45f9-b680-388146cb6852","savedPayload":{"position":{"x":16901.09339489036,"y":16315.684153989841},"targetPosition":{"x":17030.2962171601,"y":16368.604379297627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aa81f2c7-4fb7-4ce8-a52c-9ced275a240b","savedPayload":{"position":{"x":17030.2962171601,"y":16368.604379297627},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 4 Rate","config":"{ \n\"codeName\": \"support4Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support4Rate","id":"d7409aeb-b96f-4591-abc6-94c3feae3243","savedPayload":{"position":{"x":16813.029416251313,"y":15998.527698293292},"targetPosition":{"x":17296.26549427805,"y":16295.784552044413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0b188be8-ca50-4b70-b54c-01bee5c8fe6e","savedPayload":{"position":{"x":17296.26549427805,"y":16295.784552044413},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 4 Period","config":"{ \n\"codeName\": \"support4Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support4Period","id":"44d44f24-2c72-4679-8eac-3c571073eb5b","savedPayload":{"position":{"x":16904.688465807696,"y":16189.2615201181},"targetPosition":{"x":17060.490493922764,"y":16395.73813714418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bd577b4c-73a5-4ce1-ba77-30dee0f2d456","savedPayload":{"position":{"x":17060.490493922764,"y":16395.73813714418},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 5 Rate","config":"{ \n\"codeName\": \"support5Rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support5Rate","id":"362400a8-620f-4a50-ac69-ca970d2c8e2c","savedPayload":{"position":{"x":16931.368069158187,"y":15970.558159035925},"targetPosition":{"x":17232.11451934844,"y":16374.171289653463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6a84dce6-0b33-4acd-8eef-ec00e8c1f565","savedPayload":{"position":{"x":17232.11451934844,"y":16374.171289653463},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 5 Period","config":"{ \n\"codeName\": \"support5Period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support5Period","id":"a3c54d4a-d24f-48d2-9bd6-8c97e72988d6","savedPayload":{"position":{"x":17000.91758531391,"y":16070.697626709505},"targetPosition":{"x":17130.17042602376,"y":16294.027697887277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aad90b32-0fc6-42e6-97ad-92369d92c75d","savedPayload":{"position":{"x":17130.17042602376,"y":16294.027697887277},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 1 Bounce 1","config":"{ \n\"codeName\": \"support1Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support1Bounce1","id":"f8588e9b-1b98-4d42-9c9e-87a1ccbf5f85","savedPayload":{"position":{"x":16962.184033837093,"y":15862.636021331899},"targetPosition":{"x":17074.76778335479,"y":16021.783977597664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"b01a5c8f-7c91-497d-b859-14a28ed2dab0","savedPayload":{"position":{"x":17074.76778335479,"y":16021.783977597664},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 1 Bounce 2","config":"{ \n\"codeName\": \"support1Bounce2\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support1Bounce2","id":"5ced6adc-834d-42d3-8fda-922e22c010b3","savedPayload":{"position":{"x":17047.857074016774,"y":15812.401968511705},"targetPosition":{"x":17138.723173503506,"y":15974.39262832407},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"237bb47a-cad5-4d17-8082-4a668a520c0f","savedPayload":{"position":{"x":17138.723173503506,"y":15974.39262832407},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 1 Bounce 3","config":"{ \n\"codeName\": \"support1Bounce3\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support1Bounce3","id":"b4699add-3195-4db4-8bd7-9a9afbf47bfe","savedPayload":{"position":{"x":17145.989484750513,"y":15749.204092721178},"targetPosition":{"x":17211.930276296232,"y":15968.638082768493},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"7ab00eae-5fff-41cb-a438-2e938663d10b","savedPayload":{"position":{"x":17211.930276296232,"y":15968.638082768493},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 1 Bounce 5","config":"{ \n\"codeName\": \"support1Bounce5\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support1Bounce5","id":"a447aee8-c957-4bc8-b2ee-8e90b69820f1","savedPayload":{"position":{"x":17256.212455328507,"y":15801.566681135659},"targetPosition":{"x":17284.044677866925,"y":15861.578891595946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"e9f2282a-5328-4765-9e6a-e388f22b0664","savedPayload":{"position":{"x":17284.044677866925,"y":15861.578891595946},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 1 Bounce 10","config":"{ \n\"codeName\": \"support1Bounce10\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support1Bounce10","id":"ccb5af69-8ba1-4050-8e5c-d7bb6d7ca7e6","savedPayload":{"position":{"x":17315.78062212343,"y":15657.144885036752},"targetPosition":{"x":17353.549905172225,"y":15994.938368924019},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"bff9046e-7f89-4bf1-94fa-374623c25270","savedPayload":{"position":{"x":17353.549905172225,"y":15994.938368924019},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 1 Bounce All","config":"{ \n\"codeName\": \"support1BounceAll\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support1BounceAll","id":"db228fdf-d598-4e15-ac14-ee5f9abc9f04","savedPayload":{"position":{"x":17380.470711116377,"y":15774.385513603766},"targetPosition":{"x":17385.179728991672,"y":15875.072684703362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"92fe7b52-2018-4a57-9d5a-68146cb40679","savedPayload":{"position":{"x":17385.179728991672,"y":15875.072684703362},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 2 Bounce 1","config":"{ \n\"codeName\": \"support2Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support2Bounce1","id":"668ef50d-cc9c-472d-8f1e-01501af5dcf5","savedPayload":{"position":{"x":17456.36843801888,"y":15673.051676192334},"targetPosition":{"x":17465.767515079955,"y":15957.716125338498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"1dfa6ecc-7354-4ae2-b82c-3b67c1dc9714","savedPayload":{"position":{"x":17465.767515079955,"y":15957.716125338498},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 2 Bounce 2","config":"{ \n\"codeName\": \"support2Bounce2\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support2Bounce2","id":"879626cc-4c25-4a48-9664-b09a8ef0898b","savedPayload":{"position":{"x":17529.98122981742,"y":15759.830028020562},"targetPosition":{"x":17547.565857503923,"y":15842.821860504817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"2ac63aa9-1097-4384-b9d9-a09591216b46","savedPayload":{"position":{"x":17547.565857503923,"y":15842.821860504817},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 2 Bounce 3","config":"{ \n\"codeName\": \"support2Bounce3\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support2Bounce3","id":"6d35756c-cbf6-4dbb-9e0e-87eec91ae9c7","savedPayload":{"position":{"x":17632.693588452512,"y":15682.618875839353},"targetPosition":{"x":17579.85621933036,"y":15980.946158413253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"0f78e402-d6d9-47c8-a71f-ba19d31fdaa9","savedPayload":{"position":{"x":17579.85621933036,"y":15980.946158413253},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 2 Bounce 5","config":"{ \n\"codeName\": \"support2Bounce5\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support2Bounce5","id":"7ea5cc0c-062a-4ab1-bc29-0cfef7646609","savedPayload":{"position":{"x":17680.452717217257,"y":15785.849045533225},"targetPosition":{"x":17655.2997663091,"y":15882.009053701842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"65e72b1c-36bb-4242-9cea-d0fa1ef8aacc","savedPayload":{"position":{"x":17655.2997663091,"y":15882.009053701842},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 2 Bounce 10","config":"{ \n\"codeName\": \"support2Bounce10\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support2Bounce10","id":"c2e95035-bc39-4a60-bc3d-816d78ec154d","savedPayload":{"position":{"x":17787.130201586664,"y":15716.555014946032},"targetPosition":{"x":17696.058555663938,"y":15993.44497520382},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"f8bdb4d7-0a2a-4730-9bd1-a77c3eacb76b","savedPayload":{"position":{"x":17696.058555663938,"y":15993.44497520382},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 2 Bounce All","config":"{ \n\"codeName\": \"support2BounceAll\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support2BounceAll","id":"467b8765-e0cd-449b-8773-5eaf03de28b7","savedPayload":{"position":{"x":17825.51317104185,"y":15831.555160924563},"targetPosition":{"x":17805.449618869057,"y":15916.004864617234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"2fda2cca-b8bc-4b85-919a-f8df88913ec4","savedPayload":{"position":{"x":17805.449618869057,"y":15916.004864617234},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 3 Bounce 1","config":"{ \n\"codeName\": \"support3Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support3Bounce1","id":"77a3826e-5aa8-4f72-b389-964cd68e7b74","savedPayload":{"position":{"x":17958.034106929892,"y":15778.234924390212},"targetPosition":{"x":17803.358016098613,"y":16054.101086730861},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"7add9106-d78b-4ba4-b08b-6251d16edde3","savedPayload":{"position":{"x":17803.358016098613,"y":16054.101086730861},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 3 Bounce 2","config":"{ \n\"codeName\": \"support3Bounce2\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support3Bounce2","id":"6cc16e19-c604-46e8-9bbb-0d03e52e34aa","savedPayload":{"position":{"x":17959.481468341015,"y":15900.365617956357},"targetPosition":{"x":17915.19358116479,"y":15982.445172256494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"eb85b0d0-36b0-4c43-bbb6-3946c0e44075","savedPayload":{"position":{"x":17915.19358116479,"y":15982.445172256494},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 3 Bounce 3","config":"{ \n\"codeName\": \"support3Bounce3\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support3Bounce3","id":"d680f9ce-a7d0-4a1b-86ad-a03b3edf9469","savedPayload":{"position":{"x":18085.495261273616,"y":15873.76717226345},"targetPosition":{"x":17902.220091223604,"y":16113.890570767093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"32259491-a337-4c85-9ae8-b296c401c80b","savedPayload":{"position":{"x":17902.220091223604,"y":16113.890570767093},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 3 Bounce 5","config":"{ \n\"codeName\": \"support3Bounce5\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support3Bounce5","id":"0131d473-e06b-4082-b349-4368a71c15b8","savedPayload":{"position":{"x":18084.7446303984,"y":15992.344352610828},"targetPosition":{"x":18027.3591647715,"y":16065.405584382244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"917cfbe5-6374-4170-b28d-e9d9f7920503","savedPayload":{"position":{"x":18027.3591647715,"y":16065.405584382244},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 3 Bounce 10","config":"{ \n\"codeName\": \"support3Bounce10\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support3Bounce10","id":"58020873-bc14-436c-ab34-70ea0c165e75","savedPayload":{"position":{"x":18220.957952996265,"y":15993.551250765657},"targetPosition":{"x":17988.021280006873,"y":16191.311547572057},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"5d70fe41-e6ce-42db-a5c0-12dcaa35a724","savedPayload":{"position":{"x":17988.021280006873,"y":16191.311547572057},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 3 Bounce All","config":"{ \n\"codeName\": \"support3BounceAll\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support3BounceAll","id":"5d24f8e3-9f2f-4d48-9c8e-d8a11a6dc019","savedPayload":{"position":{"x":18207.935337898147,"y":16116.359019087147},"targetPosition":{"x":18113.818601832227,"y":16195.115379147208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"79faaac2-1e37-4667-a4fc-0bdb696cde15","savedPayload":{"position":{"x":18113.818601832227,"y":16195.115379147208},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support Resistance Zone","config":"{ \n\"codeName\": \"supportResistanceZone\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.supportResistanceZone","id":"5f2c5c5d-b624-4642-b235-ce65d442e721","savedPayload":{"position":{"x":17944.563365528742,"y":16356.70448027642},"targetPosition":{"x":17835.155062101087,"y":16426.601340813664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"8405cbdf-a97b-40c8-9e4d-1b5187c7304b","savedPayload":{"position":{"x":17835.155062101087,"y":16426.601340813664},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 4 Bounce 1","config":"{ \n\"codeName\": \"support4Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support4Bounce1","id":"c6a343f3-b85c-460d-b8d9-59c4bc638215","savedPayload":{"position":{"x":18312.990523690925,"y":16191.097344078176},"targetPosition":{"x":18123.606997144114,"y":16287.894220533399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"65d9c0e2-d16d-4702-99af-bba32a73e82b","savedPayload":{"position":{"x":18123.606997144114,"y":16287.894220533399},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Support 5 Bounce 1","config":"{ \n\"codeName\": \"support5Bounce1\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.support5Bounce1","id":"b715565a-3502-464a-bd5e-e29bb7c8f7fc","savedPayload":{"position":{"x":18350.26803726474,"y":16336.748798838878},"targetPosition":{"x":18188.81324102373,"y":16404.201537252313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"04cf3b6f-3549-4459-9628-1435764305ca","savedPayload":{"position":{"x":18188.81324102373,"y":16404.201537252313},"targetPosition":{"x":17476.726708638387,"y":16657.044628940333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a2958a95-82c5-480d-a552-69ff3a01cade","savedPayload":{"position":{"x":17476.68584992769,"y":16657.055630158833},"targetPosition":{"x":17939.462665530053,"y":18082.282674424147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"\n\nlet candle = record.current\nlet previousCandle = record.previous\n\nvariable.supportResistanceZone = calculateSupportResistanceZone()\n\ndeleteSupports(candle.min)\nincreasePeriods()\n\nvariable.support = {}\n\nvariable.support.rate = 0\nvariable.support.period = 0\nvariable.support.type = ''\n\nif (previousCandle !== undefined) {\n\n let previousPreviousCandle = record.previous.previous\n\n if (previousPreviousCandle !== undefined) {\n\n if (previousCandle.min < previousPreviousCandle.min && previousCandle.min < candle.min) {\n variable.support.rate = previousCandle.min\n variable.support.period = 0\n variable.support.type = 'Support'\n increaseSupportsBounces(variable.support.rate)\n rememberSupports(variable.support.rate)\n }\n }\n}\n\nsetClosestSupports()\n\nfunction deleteSupports(rate) {\n\n let max\n\n for (let i = 0; i < variable.supports.length; i++) {\n let currenRecord = variable.supports[i]\n let currentRate = currenRecord[0]\n\n if (rate <= currentRate - currentRate * variable.supportResistanceZone / 2 / 100) { // It must go through the support / resistance zone around the current rate value\n max = i\n }\n }\n if (max !== undefined) {\n variable.supports.splice(0, max + 1)\n }\n}\n\nfunction increasePeriods() {\n\n for (let i = 0; i < variable.supports.length; i++) {\n let currenRecord = variable.supports[i]\n currenRecord[1] = currenRecord[1] + 1\n }\n}\n\nfunction setClosestSupports() {\n let record\n\n record = variable.supports[0]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.support1Rate = record[0]\n variable.support1Period = record[1]\n variable.support1Bounce1 = record[2]\n variable.support1Bounce2 = record[3]\n variable.support1Bounce3 = record[4]\n variable.support1Bounce5 = record[5]\n variable.support1Bounce10 = record[6]\n variable.support1BounceAll = record[7]\n\n record = variable.supports[1]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.support2Rate = record[0]\n variable.support2Period = record[1]\n variable.support2Bounce1 = record[2]\n variable.support2Bounce2 = record[3]\n variable.support2Bounce3 = record[4]\n variable.support2Bounce5 = record[5]\n variable.support2Bounce10 = record[6]\n variable.support2BounceAll = record[7]\n\n record = variable.supports[2]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.support3Rate = record[0]\n variable.support3Period = record[1]\n variable.support3Bounce1 = record[2]\n variable.support3Bounce2 = record[3]\n variable.support3Bounce3 = record[4]\n variable.support3Bounce5 = record[5]\n variable.support3Bounce10 = record[6]\n variable.support3BounceAll = record[7]\n\n record = variable.supports[3]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.support4Rate = record[0]\n variable.support4Period = record[1]\n variable.support4Bounce1 = record[2]\n\n record = variable.supports[4]\n if (record === undefined) { record = [0, 0, 0, 0, 0, 0, 0, 0] }\n variable.support5Rate = record[0]\n variable.support5Period = record[1]\n variable.support5Bounce1 = record[2]\n\n}\n\n\nfunction rememberSupports(rate) {\n if (variable.supports.length === 0) {\n variable.supports.push([rate, 1, 0, 0, 0, 0, 0, 0])\n return\n }\n for (let i = 0; i < variable.supports.length; i++) {\n let currenRecord = variable.supports[i]\n let currentRate = currenRecord[0]\n\n if (rate > currentRate - currentRate * variable.supportResistanceZone / 2 / 100 && rate < currentRate + currentRate * variable.supportResistanceZone / 2 / 100) {\n // We are not going to remember this new level since it is absorved by this existing one.\n return\n }\n\n if (rate > currentRate) {\n variable.supports.splice(i, 0, [rate, 1, 0, 0, 0, 0, 0, 0])\n return\n }\n\n if (i === variable.supports.length - 1) {\n variable.supports.push([rate, 1, 0, 0, 0, 0, 0, 0])\n return\n }\n }\n}\n\nfunction increaseSupportsBounces(rate) {\n\n for (let i = 0; i < variable.supports.length; i++) {\n let currenRecord = variable.supports[i]\n let currentRate = currenRecord[0]\n let percentage = rate * 100 / currentRate - 100\n\n if (percentage <= variable.supportResistanceZone / 2 * 1) {\n currenRecord[2] = currenRecord[2] + 1\n }\n\n if (percentage <= variable.supportResistanceZone / 2 * 2) {\n currenRecord[3] = currenRecord[3] + 1\n }\n\n if (percentage <= variable.supportResistanceZone / 2 * 3) {\n currenRecord[4] = currenRecord[4] + 1\n }\n\n if (percentage <= variable.supportResistanceZone / 2 * 5) {\n currenRecord[5] = currenRecord[5] + 1\n }\n\n if (percentage <= variable.supportResistanceZone / 2 * 10) {\n currenRecord[6] = currenRecord[6] + 1\n }\n\n currenRecord[7] = currenRecord[7] + 1\n }\n}\n\nfunction calculateSupportResistanceZone() {\n /* \n The variable % is a percentage we will use for support and resistance based on the time frame.\n We will fix the % for 1 minute candles and for 24 hs candle and the use the formula to obtain\n y on a line by knowing 2 points of the line as described here: https://en.wikipedia.org/wiki/Line_(geometry)\n */\n\n let x0 = system.ONE_MIN_IN_MILISECONDS\n let y0 = 0.1 // At one min, we will consider the resistance / support zone to be 0.1% resistance \n let x1 = system.ONE_DAY_IN_MILISECONDS\n let y1 = 4 // At one day, we will consider the resistance / support zone to be 4% resistance\n\n let x = system.timeFrame // This is the current time frame being calculated\n let y = (x - x0) * (y1 - y0) / (x1 - x0) + y0\n\n return y\n\n}","id":"2f38e534-5b92-4ded-9c74-1a8c1fef392c","savedPayload":{"position":{"x":18209.663474380242,"y":16622.596057047802},"targetPosition":{"x":18190.03121054525,"y":16996.87764957636},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4f6dbb7b-b13f-45a9-ba9e-e1c9f06970d6","savedPayload":{"position":{"x":18190.03121054525,"y":16996.87764957636},"targetPosition":{"x":18170.556839602163,"y":17370.997667091895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"variable.supports = []","id":"a62efae4-3818-4048-ad13-bfb7c4bd22d9","savedPayload":{"position":{"x":18578.97180837835,"y":16742.212716805923},"targetPosition":{"x":18374.82231923708,"y":17056.54804921604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"793f079f-9623-4e8c-bd38-8dbd351caf8f","savedPayload":{"position":{"x":18374.82231923708,"y":17056.54804921604},"targetPosition":{"x":18170.556839602163,"y":17370.997667091895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3d26c2d9-7dd2-4796-91b4-768026944d66","savedPayload":{"position":{"x":18170.556839602163,"y":17370.997667091895},"targetPosition":{"x":17939.462665530053,"y":18082.282674424147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"bc3c43de-6312-47d4-ae3d-0c95c1b039e0","savedPayload":{"position":{"x":17587.764623182185,"y":18284.151298171222},"targetPosition":{"x":17881.085155905155,"y":18688.55339034958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Supports","id":"1a104c65-6470-4694-a39e-4663f15e490c"}}}],"id":"c037980d-d455-41a0-b058-2d7849ddf582","savedPayload":{"position":{"x":17881.085155905155,"y":18688.55339034958},"targetPosition":{"x":18879.35218735615,"y":18688.55301821844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"plotters":[{"type":"Plotter","name":"Plotters Candles Volumes","config":"{\n\"codeName\": \"PlottersCandlesVolumes\"\n}","modules":[{"type":"Plotter Module","name":"Candles","config":"{\n\"codeName\": \"Candles\",\n\"isLegacy\": true,\n\"icon\": \"layer-candles\"\n}","panels":[{"type":"Plotter Panel","name":"New Plotter Panel","config":"{ \n\"codeName\": \"CandlePanel\" ,\n\"isLegacy\": true\n}","panelData":[],"id":"9336f4e6-d56b-4ed4-819d-0bb762ba1fdd","savedPayload":{"position":{"x":17694.84751934299,"y":18488.627271703706},"targetPosition":{"x":18094.697643704378,"y":18488.63670885975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0aed75a3-fee8-4ddc-97ff-b6768e6f12a3","savedPayload":{"position":{"x":18094.697643704378,"y":18488.63670885975},"targetPosition":{"x":18532.74651536602,"y":18488.633965043242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Volumes","config":"{\n\"codeName\": \"Volumes\",\n\"isLegacy\": true,\n\"icon\": \"layer-volume\"\n}","panels":[{"type":"Plotter Panel","name":"New Plotter Panel","config":"{ \n\"codeName\": \"VolumePanel\" ,\n\"isLegacy\": true\n}","panelData":[],"id":"42dbd098-4550-44a0-987f-54a28dd5f40b","savedPayload":{"position":{"x":18113.819148242663,"y":17763.146660225102},"targetPosition":{"x":18313.620991059444,"y":18109.19510870052},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a6177fb7-51d1-4b7c-bcbb-04861a5bf0c1","savedPayload":{"position":{"x":18313.620991059444,"y":18109.19510870052},"targetPosition":{"x":18532.74651536602,"y":18488.633965043242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e4347543-21b5-4274-b690-e6b3b5899862","savedPayload":{"position":{"x":18014.211219678167,"y":18188.742928054962},"targetPosition":{"x":18879.35218735615,"y":18688.55301821844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Plotter","name":"Plotters Bollinger Bands","config":"{\n\"codeName\" : \"PlottersBollingerBands\"\n}","modules":[{"type":"Plotter Module","name":"Percentage B","config":"{\n\t\"codeName\": \"Percentage Bandwidth\",\n \"icon\": \"layer-oscilator\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Begin Previous Value","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.value","id":"ad85e84e-166f-41c7-bc08-b6a50ca4524d","savedPayload":{"position":{"x":18543.478882888063,"y":15023.666037334766},"targetPosition":{"x":18312.755780980428,"y":15397.231152130485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"534c2cd4-d020-43cf-9284-433a57fdcfce","savedPayload":{"position":{"x":18312.755780980428,"y":15397.231152130485},"targetPosition":{"x":18075.840070442548,"y":15762.237460916263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End Value","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.value","id":"1e029480-c6d7-4455-9ae9-5677b99752de","savedPayload":{"position":{"x":18806.115757454616,"y":15288.431434289378},"targetPosition":{"x":18441.01015276532,"y":15525.262395936657},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5b05abcc-76cf-4f9d-82e5-671ab7471678","savedPayload":{"position":{"x":18441.01015276532,"y":15525.262395936657},"targetPosition":{"x":18075.840070442548,"y":15762.237460916263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin Previous MA","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.movingAverage","id":"7bafa19b-086c-41cf-b2e4-a41485841f4c","savedPayload":{"position":{"x":18935.922801643243,"y":15626.49169808991},"targetPosition":{"x":18505.96968309221,"y":15694.322227599285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0993c95f-2054-48d8-9977-2d4eb24dabf7","savedPayload":{"position":{"x":18505.96968309221,"y":15694.322227599285},"targetPosition":{"x":18075.840070442548,"y":15762.237460916263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End MA","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.movingAverage","id":"412d8820-facc-4065-a235-d35d86c3b569","savedPayload":{"position":{"x":18916.930127869105,"y":15987.360550912848},"targetPosition":{"x":18496.47850402864,"y":15874.892623408701},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"35bdf97d-abf8-4f1e-922c-d853e6980b0c","savedPayload":{"position":{"x":18496.47850402864,"y":15874.892623408701},"targetPosition":{"x":18075.840070442548,"y":15762.237460916263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Being Previous Bandwidth","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.bandwidth * 250","id":"cbd72abc-e6c4-44d6-bd58-1bab7c0b2960","savedPayload":{"position":{"x":18653.660755217454,"y":16254.944226406587},"targetPosition":{"x":18414.195057601537,"y":16036.300513607752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"943da81e-c0ca-4213-ba8a-5dbafd3ead18","savedPayload":{"position":{"x":18414.195057601537,"y":16036.300513607752},"targetPosition":{"x":18075.840070442548,"y":15762.237460916263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End Bandwidth","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bandwidth * 250","id":"6ac14886-32ee-490f-a600-4f704458f24e","savedPayload":{"position":{"x":18470.755583531576,"y":16538.1736637859},"targetPosition":{"x":18273.375694986004,"y":16150.329847586352},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cdf38478-d5d4-410e-98fd-14b7b74bfd8b","savedPayload":{"position":{"x":18273.375694986004,"y":16150.329847586352},"targetPosition":{"x":18075.840070442548,"y":15762.237460916263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"54cece5b-472f-4c86-b6b6-83342e2890f7","savedPayload":{"position":{"x":18120.871825512608,"y":16631.936727147364},"targetPosition":{"x":18098.367404085348,"y":16197.233011798142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8e21c88b-bfb7-41dd-9cbe-678d5dc4fc54","savedPayload":{"position":{"x":18098.367404085348,"y":16197.233011798142},"targetPosition":{"x":18075.840070442548,"y":15762.237460916263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"1572cfc8-0318-43b5-8405-a04cc00cbd16","savedPayload":{"position":{"x":17763.687885695195,"y":16575.27847523917},"targetPosition":{"x":17919.717030001797,"y":16168.890138229115},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"75670aaa-849d-4156-af74-61a25ce49713","savedPayload":{"position":{"x":17919.717030001797,"y":16168.890138229115},"targetPosition":{"x":18075.840070442548,"y":15762.237460916263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 30","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 30","id":"6039db7e-9c71-4906-b999-3d7848989c5a","savedPayload":{"position":{"x":17459.866420177117,"y":16377.980633158873},"targetPosition":{"x":17767.757815001652,"y":16070.20867704773},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ffea0ed5-39b4-4c14-b1fc-2164a6e189fd","savedPayload":{"position":{"x":17767.757815001652,"y":16070.20867704773},"targetPosition":{"x":18075.840070442548,"y":15762.237460916263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 30","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 30","id":"89393793-42d5-4dea-bca5-aee8f3349659","savedPayload":{"position":{"x":17262.55751903746,"y":16074.1685645361},"targetPosition":{"x":17669.07349858534,"y":15918.253669696809},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4bc7f337-74a7-42b7-89b7-9d4edc10fca5","savedPayload":{"position":{"x":17669.07349858534,"y":15918.253669696809},"targetPosition":{"x":18075.840070442548,"y":15762.237460916263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 70","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 70","id":"c616cf49-abaf-490e-a3b7-f978442c8b4a","savedPayload":{"position":{"x":17205.87502457219,"y":15716.99136120428},"targetPosition":{"x":17640.7287344203,"y":15739.615877278511},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"827e424f-3036-4645-9246-94b4bb0ebaea","savedPayload":{"position":{"x":17640.7287344203,"y":15739.615877278511},"targetPosition":{"x":18075.840070442548,"y":15762.237460916263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 70","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 70","id":"d3003e73-9318-4282-a293-d61c0d98bd4b","savedPayload":{"position":{"x":17299.60057121593,"y":15367.110934348344},"targetPosition":{"x":17687.607068632664,"y":15564.644027068349},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"84bdd434-48af-4f4a-8f14-62df15022d05","savedPayload":{"position":{"x":17687.607068632664,"y":15564.644027068349},"targetPosition":{"x":18075.840070442548,"y":15762.237460916263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 100","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 100","id":"8d13712b-3f9e-424e-b85c-e6794ce39ca9","savedPayload":{"position":{"x":17194.352589630114,"y":16579.157904501102},"targetPosition":{"x":17450.06034831803,"y":16745.21646463255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ec589261-f564-4ad0-b866-8c63b8a15150","savedPayload":{"position":{"x":17801.56020597385,"y":15424.04340658767},"targetPosition":{"x":18075.840070442548,"y":15762.237460916263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 100","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 100","id":"8c06033c-c2b7-42a7-b509-e45a1b7edf42","savedPayload":{"position":{"x":17373.65098674305,"y":16399.859507388166},"targetPosition":{"x":17539.709546874503,"y":16655.567266076083},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8949ce4a-bdad-47c2-a85f-0728ed7f9746","savedPayload":{"position":{"x":17963.31316505051,"y":15342.199292004392},"targetPosition":{"x":18075.840070442548,"y":15762.237460916263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9388e24f-4147-4878-8754-b6f6b8807813","savedPayload":{"position":{"x":18075.840070442548,"y":15762.237460916263},"targetPosition":{"x":18211.749754128177,"y":14904.328179385053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Area From 0 to 30","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n }\n}","id":"05578d4b-01e3-42fc-a4dd-b473414f467d","savedPayload":{"position":{"x":18080.91270630445,"y":16548.740205735805},"targetPosition":{"x":17776.43401127021,"y":16564.69725798155},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"14810299-01f6-443c-8bbf-de8450c9efd6","savedPayload":{"position":{"x":17776.43401127021,"y":16564.69725798155},"targetPosition":{"x":17471.955316235966,"y":16580.65431022729},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 0","id":"d8eda99d-df16-4e21-b621-6f547914c461","savedPayload":{"position":{"x":17570.036329596143,"y":16882.516630355378},"targetPosition":{"x":17471.955316235966,"y":16580.65431022729},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 0","id":"8e21c88b-bfb7-41dd-9cbe-678d5dc4fc54"}}},{"type":"Polygon Vertex","name":"End 0","id":"3a844186-fa2d-45e3-9453-d11750bafb51","savedPayload":{"position":{"x":17218.021105603977,"y":16765.148313566904},"targetPosition":{"x":17471.955316235966,"y":16580.65431022729},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 0","id":"75670aaa-849d-4156-af74-61a25ce49713"}}},{"type":"Polygon Vertex","name":"End 30","id":"95d52cc3-0a06-4181-bcd7-1e65b41194d8","savedPayload":{"position":{"x":17221.70570796832,"y":16398.837327204164},"targetPosition":{"x":17471.955316235966,"y":16580.65431022729},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 30","id":"4bc7f337-74a7-42b7-89b7-9d4edc10fca5"}}},{"type":"Polygon Vertex","name":"Begin 30","id":"a65fe0bd-5517-45b2-ac29-16bd198653a5","savedPayload":{"position":{"x":17557.30252758968,"y":16317.982602900158},"targetPosition":{"x":17471.955316235966,"y":16580.65431022729},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 30","id":"ffea0ed5-39b4-4c14-b1fc-2164a6e189fd"}}}],"id":"d76f185f-5219-4f0b-adb3-9a339b0468c6","savedPayload":{"position":{"x":17903.518916710633,"y":15211.806826668022},"targetPosition":{"x":18211.749754128177,"y":14904.328179385053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Area From 30 to 70","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.1,\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n }\n}","id":"2bdd38d2-0e04-4760-a8e7-af12d8a3baa7","savedPayload":{"position":{"x":17850.126157580933,"y":16779.526754459323},"targetPosition":{"x":17594.418398893016,"y":16613.468194327874},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"de6f5e6b-a281-4d29-af86-72f7a545257d","savedPayload":{"position":{"x":17594.418398893016,"y":16613.468194327874},"targetPosition":{"x":17338.7106402051,"y":16447.409634196425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 30","id":"e9bfd52e-bc47-469f-8187-4e79d79ba866","savedPayload":{"position":{"x":17431.657575409765,"y":16733.47088650673},"targetPosition":{"x":17338.7106402051,"y":16447.409634196425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 30","id":"ffea0ed5-39b4-4c14-b1fc-2164a6e189fd"}}},{"type":"Polygon Vertex","name":"End 30","id":"f562f71b-2e79-4fa0-a9d5-e1d5c4ba12b4","savedPayload":{"position":{"x":17106.05833441109,"y":16616.44142859428},"targetPosition":{"x":17338.7106402051,"y":16447.409634196425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 30","id":"4bc7f337-74a7-42b7-89b7-9d4edc10fca5"}}},{"type":"Polygon Vertex","name":"End 70","id":"3c79161c-e899-4147-bd75-21805b23f76f","savedPayload":{"position":{"x":17091.09937838169,"y":16267.509522068647},"targetPosition":{"x":17338.7106402051,"y":16447.409634196425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 70","id":"84bdd434-48af-4f4a-8f14-62df15022d05"}}},{"type":"Polygon Vertex","name":"Begin 70","id":"4cd041c2-e445-46eb-99bf-c3ceee94f101","savedPayload":{"position":{"x":17431.327707682904,"y":16162.363610358529},"targetPosition":{"x":17338.7106402051,"y":16447.409634196425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 70","id":"827e424f-3036-4645-9246-94b4bb0ebaea"}}}],"id":"1a7969dd-af18-4e44-b4c9-96dd2be57f7c","savedPayload":{"position":{"x":17781.159675307194,"y":14972.09210222645},"targetPosition":{"x":18211.749754128177,"y":14904.328179385053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Area From 70 to 100","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n }\n}","id":"b34d9e0e-ed4a-4b99-8e29-b7ed66a3658e","savedPayload":{"position":{"x":17527.762987823306,"y":16830.584064682633},"targetPosition":{"x":17418.49783811344,"y":16545.938618021333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"2c35b477-500f-4c85-867f-630e2105278f","savedPayload":{"position":{"x":17418.49783811344,"y":16545.938618021333},"targetPosition":{"x":17309.232688403572,"y":16261.293171360036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 70","id":"1777fb76-c1e2-415d-a517-2e365401490c","savedPayload":{"position":{"x":17404.367476395826,"y":16554.087942176448},"targetPosition":{"x":17309.232688403572,"y":16261.293171360036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 70","id":"827e424f-3036-4645-9246-94b4bb0ebaea"}}},{"type":"Polygon Vertex","name":"End 70","id":"4652d8cf-d922-44a3-b8cf-c6d329883ca0","savedPayload":{"position":{"x":17077.458614295025,"y":16429.68689308896},"targetPosition":{"x":17309.232688403572,"y":16261.293171360036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 70","id":"84bdd434-48af-4f4a-8f14-62df15022d05"}}},{"type":"Polygon Vertex","name":"End 100","id":"ef3e750e-8380-40a2-830b-3f364960e44e","savedPayload":{"position":{"x":17058.40316648419,"y":16079.054856406348},"targetPosition":{"x":17309.232688403572,"y":16261.293171360036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 100","id":"8949ce4a-bdad-47c2-a85f-0728ed7f9746"}}},{"type":"Polygon Vertex","name":"Begin 100","id":"c8905f10-3c25-4fec-978a-ef356c0ad395","savedPayload":{"position":{"x":17406.56406397446,"y":15961.737999114905},"targetPosition":{"x":17309.232688403572,"y":16261.293171360036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 100","id":"ec589261-f564-4ad0-b866-8c63b8a15150"}}}],"id":"cb1bcd11-0fb0-4377-bff2-dee4630e0f3f","savedPayload":{"position":{"x":17823.337733513057,"y":14706.353741948498},"targetPosition":{"x":18211.749754128177,"y":14904.328179385053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 30","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n }\n}","id":"3f69a3f7-af79-47a2-9e0b-17524fc986d8","savedPayload":{"position":{"x":16963.592207225018,"y":16524.583913931543},"targetPosition":{"x":17179.18662186293,"y":16308.989499293632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"30e98617-1cfd-4fa7-814c-a5898caac0da","savedPayload":{"position":{"x":17179.18662186293,"y":16308.989499293632},"targetPosition":{"x":17394.781036500844,"y":16093.395084655718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 30","id":"2f5d4ab1-0d70-4baa-988a-2b7077e7b1e6","savedPayload":{"position":{"x":17237.434324854523,"y":16365.927583631037},"targetPosition":{"x":17394.781036500844,"y":16093.395084655718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 30","id":"ffea0ed5-39b4-4c14-b1fc-2164a6e189fd"}}},{"type":"Polygon Vertex","name":"End 30","id":"b23626ca-e521-4fad-9a8b-8c9f30711de7","savedPayload":{"position":{"x":17253.067061136615,"y":15847.939279182305},"targetPosition":{"x":17394.781036500844,"y":16093.395084655718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 30","id":"4bc7f337-74a7-42b7-89b7-9d4edc10fca5"}}}],"id":"857043cc-f467-44d2-89eb-2e73f35f638d","savedPayload":{"position":{"x":18013.89517193423,"y":14515.839130876158},"targetPosition":{"x":18211.749754128177,"y":14904.328179385053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 30","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n }\n}","id":"9e67e8dc-0a07-4d57-be52-6023ff9087da","savedPayload":{"position":{"x":16960.393597734794,"y":16103.239392425643},"targetPosition":{"x":17261.536360469974,"y":16055.543064492045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"767e0eba-ad98-49a9-a08d-58b5ebfaf655","savedPayload":{"position":{"x":17261.536360469974,"y":16055.543064492045},"targetPosition":{"x":17562.679123205162,"y":16007.846736558447},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"End 70","id":"9bed0cf3-56c3-4508-88c8-5dede6e574df","savedPayload":{"position":{"x":17406.262320450798,"y":16278.768586086482},"targetPosition":{"x":17562.679123205162,"y":16007.846736558447},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 70","id":"84bdd434-48af-4f4a-8f14-62df15022d05"}}},{"type":"Polygon Vertex","name":"Begin 70","id":"1ce29315-82a5-4b62-8e85-be087a037d73","savedPayload":{"position":{"x":17405.958506446437,"y":15736.398665738809},"targetPosition":{"x":17562.679123205162,"y":16007.846736558447},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 70","id":"827e424f-3036-4645-9246-94b4bb0ebaea"}}}],"id":"984a1917-1d81-4142-a50f-269a18a07c9d","savedPayload":{"position":{"x":18279.739366968068,"y":14473.69801559204},"targetPosition":{"x":18211.749754128177,"y":14904.328179385053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Bandwidth","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 2,\n \"lineDash\": [2,2],\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREY\"\n }\n}","id":"ccb32f55-1b5e-4813-b614-0581593434a7","savedPayload":{"position":{"x":17205.46596417423,"y":15760.484418554388},"targetPosition":{"x":17477.13077510789,"y":15898.90455345718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"57a26967-b019-4352-9d9d-cc10668837c4","savedPayload":{"position":{"x":17477.13077510789,"y":15898.90455345718},"targetPosition":{"x":17748.79558604155,"y":16037.324688359971},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Being Previous Bandwidth","id":"0d8a9c6b-b0e6-4ce1-b1ad-71bd2a506a55","savedPayload":{"position":{"x":17613.070273979938,"y":16272.407824723829},"targetPosition":{"x":17748.79558604155,"y":16037.324688359971},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Being Previous Bandwidth","id":"943da81e-c0ca-4213-ba8a-5dbafd3ead18"}}},{"type":"Polygon Vertex","name":"End Bandwidth","id":"38f87d68-5678-46bd-9e26-45b8a8ee75f1","savedPayload":{"position":{"x":17605.018584120346,"y":15788.295616072519},"targetPosition":{"x":17748.79558604155,"y":16037.324688359971},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bandwidth","id":"cdf38478-d5d4-410e-98fd-14b7b74bfd8b"}}}],"id":"0f7a4004-177c-4412-b0ef-2608f3c13da6","savedPayload":{"position":{"x":18519.846404426193,"y":14596.020965957381},"targetPosition":{"x":18211.749754128177,"y":14904.328179385053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Value","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.85,\n \"lineWidth\": 2.25,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"6e43dca6-e750-49ff-b025-2a76185e5914","savedPayload":{"position":{"x":17605.199992266833,"y":15627.239742523518},"targetPosition":{"x":17743.620127169626,"y":15898.904553457178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"56c0efd0-d13a-4c29-98f2-d27cb6071099","savedPayload":{"position":{"x":17743.620127169626,"y":15898.904553457178},"targetPosition":{"x":17882.04026207242,"y":16170.569364390838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Previous Value","id":"68e8f2a3-54ee-4fb7-abd2-add6496c08e0","savedPayload":{"position":{"x":17726.375082528684,"y":16440.18936432991},"targetPosition":{"x":17882.04026207242,"y":16170.569364390838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Previous Value","id":"534c2cd4-d020-43cf-9284-433a57fdcfce"}}},{"type":"Polygon Vertex","name":"End Value","id":"a01aa765-6bd5-49d7-afbe-44d543191f76","savedPayload":{"position":{"x":17723.517725578262,"y":15896.000277038263},"targetPosition":{"x":17882.04026207242,"y":16170.569364390838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Value","id":"5b05abcc-76cf-4f9d-82e5-671ab7471678"}}}],"id":"4598a671-83b9-4460-9e65-175df73eba71","savedPayload":{"position":{"x":18642.2512936641,"y":14835.9961630349},"targetPosition":{"x":18211.749754128177,"y":14904.328179385053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Moving Average","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.55,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"544bf8f4-dfd5-4cd7-aba3-a47f6b477da8","savedPayload":{"position":{"x":17722.265423079836,"y":15863.665451466723},"targetPosition":{"x":17959.214541807538,"y":16055.543064492043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.previous.movingAverage > record.movingAverage","style":{"type":"Style","name":"New Style","config":"{\n \"opacity\": 0.55,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n}","id":"c89114e1-7181-4091-8c2d-0301a8b00478","savedPayload":{"position":{"x":18528.505435130133,"y":15837.012765072313},"targetPosition":{"x":18243.859988468837,"y":15946.277914782178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"12891c27-2ec5-4a56-892e-1d29a277d5da","savedPayload":{"position":{"x":18243.859988468837,"y":15946.277914782178},"targetPosition":{"x":17959.214541807538,"y":16055.543064492043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c9847967-ecf5-4f6a-9fe7-2759ca4795b6","savedPayload":{"position":{"x":17959.214541807538,"y":16055.543064492043},"targetPosition":{"x":17911.51821387394,"y":16356.685827227227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"a"}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Previous MA","id":"81660820-6035-481b-a909-9e89e145d61f","savedPayload":{"position":{"x":17757.83767542101,"y":16622.868327962246},"targetPosition":{"x":17911.51821387394,"y":16356.685827227227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Previous MA","id":"0993c95f-2054-48d8-9977-2d4eb24dabf7"}}},{"type":"Polygon Vertex","name":"End MA","id":"2d18f4cf-e5d4-4bde-9a69-85b87c410125","savedPayload":{"position":{"x":17752.357115157527,"y":16081.010717661913},"targetPosition":{"x":17911.51821387394,"y":16356.685827227227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End MA","id":"35bdf97d-abf8-4f1e-922c-d853e6980b0c"}}}],"id":"69c19382-ed5b-48d1-9249-426a8e1e4e51","savedPayload":{"position":{"x":18603.163169421285,"y":15106.25799030341},"targetPosition":{"x":18211.749754128177,"y":14904.328179385053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"da344cd9-3c37-449a-b5be-6c65814f8562","savedPayload":{"position":{"x":18211.749754128177,"y":14904.328179385053},"targetPosition":{"x":18997.629395054435,"y":16447.60473545489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"%B Panel","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"%B Value","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.value","id":"c6ca5acc-cc3d-4802-8627-d3461747e731","savedPayload":{"position":{"x":18726.702940016236,"y":13002.534277442845},"targetPosition":{"x":18892.56424079351,"y":14147.377004494465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d34065b9-ce7c-4971-8270-d0819da6b188","savedPayload":{"position":{"x":18892.56424079351,"y":14147.377004494465},"targetPosition":{"x":19058.437696933004,"y":15292.358760967492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Bandwidth","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.bandwidth","id":"5193f538-5133-4561-a9e4-939cfa4d9af9","savedPayload":{"position":{"x":19179.367009246984,"y":12981.80704935833},"targetPosition":{"x":19118.95385583555,"y":14137.025615067221},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ba215bbb-99c2-4433-83f8-47f2b00ee378","savedPayload":{"position":{"x":19118.95385583555,"y":14137.025615067221},"targetPosition":{"x":19058.437696933004,"y":15292.358760967492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Moving Average","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.movingAverage","id":"d721b3b0-ffe7-459f-b146-954073605f0e","savedPayload":{"position":{"x":19628.00363757383,"y":13049.922923761722},"targetPosition":{"x":19343.32987806297,"y":14171.113535072656},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8705ee2c-1bd8-4e90-b841-d2864f83f14b","savedPayload":{"position":{"x":19343.32987806297,"y":14171.113535072656},"targetPosition":{"x":19058.437696933004,"y":15292.358760967492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"36548f31-d96c-4c80-b923-dea5dd5b56c7","savedPayload":{"position":{"x":19058.437696933004,"y":15292.358760967492},"targetPosition":{"x":18997.629395054435,"y":16447.60473545489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"06b2f3f6-b138-415f-8974-31c22a930f92","savedPayload":{"position":{"x":18300.0010907256,"y":18122.862337337472},"targetPosition":{"x":18679.51705866605,"y":18341.922829266656},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Bollinger Bands","config":"{\n\"codeName\": \"BollingerBands\",\n\"isLegacy\": true,\n\"icon\": \"layer-bands\"\n}","panels":[{"type":"Plotter Panel","name":"New Plotter Panel","config":"{ \n\"codeName\": \"BollingerBandsPanel\" ,\n\"isLegacy\": true\n}","panelData":[],"id":"de7b7008-6f66-4d7d-96dd-1aa7b1ede335","savedPayload":{"position":{"x":18679.315340805675,"y":17504.038435354378},"targetPosition":{"x":18679.35211316975,"y":17903.853220973506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a11bfdf8-595c-4b50-b259-6a9f777d0ea8","savedPayload":{"position":{"x":18679.35211316975,"y":17903.853220973506},"targetPosition":{"x":18679.51705866605,"y":18341.922829266656},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"abd0f050-2f42-4c50-81a9-ffb0d6442cef","savedPayload":{"position":{"x":18379.917638473646,"y":17822.91395214714},"targetPosition":{"x":18879.35218735615,"y":18688.55301821844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"Plotters Bollinger Channels","config":"{\n\"codeName\" : \"Plotter Bollinger Channels\"\n}","modules":[{"type":"Plotter Module","name":"Bollinger Channels Objects","config":"{\n\"codeName\": \"Bollinger-Channels-Objects\",\n \"icon\": \"layer-trends\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"New Point","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.firstMovingAverage - record.firstDeviation","id":"8117b381-e9c7-41e3-8a51-ed49a1ca6868","savedPayload":{"position":{"x":17285.642224172876,"y":15962.3036159057},"targetPosition":{"x":17597.312984914002,"y":16024.760231993172},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9be61e7d-ae1e-4b39-9ebf-27285a5a67a9","savedPayload":{"position":{"x":17597.312984914002,"y":16024.760231993172},"targetPosition":{"x":17919.081543844703,"y":16049.895419851315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"New Point","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.lastMovingAverage - record.lastDeviation","id":"69cb3498-4e18-458a-b48e-e65c98b183be","savedPayload":{"position":{"x":17285.776760363224,"y":15829.806846400135},"targetPosition":{"x":17583.542817374393,"y":15940.497076473794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f87b3204-8901-4774-afcb-b4e5394e255d","savedPayload":{"position":{"x":17583.542817374393,"y":15940.497076473794},"targetPosition":{"x":17919.081543844703,"y":16049.895419851315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"New Point","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.lastMovingAverage + record.lastDeviation","id":"4c7b46d8-f76b-4039-af87-345c3f72a0a4","savedPayload":{"position":{"x":17457.921233062218,"y":15731.508935089088},"targetPosition":{"x":17734.20757538695,"y":15888.321092349795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5ce82101-6f77-4f54-bef5-d97edae6d44b","savedPayload":{"position":{"x":17734.20757538695,"y":15888.321092349795},"targetPosition":{"x":17919.081543844703,"y":16049.895419851315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"New Point","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.firstMovingAverage + record.lastDeviation","id":"89e5dbc2-33ed-42b9-9b9b-376097e04aff","savedPayload":{"position":{"x":17377.32364254802,"y":15622.767305832034},"targetPosition":{"x":17626.797326310385,"y":15819.317808363388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"45dbe6c3-9433-4b6d-8aa5-691cf6eba8a1","savedPayload":{"position":{"x":17626.797326310385,"y":15819.317808363388},"targetPosition":{"x":17919.081543844703,"y":16049.895419851315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"703b0e1b-e2d6-457a-95d6-7b6516b2f772","savedPayload":{"position":{"x":17919.081543844703,"y":16049.895419851315},"targetPosition":{"x":18494.294401729676,"y":16316.83542882676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"New Polygon","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.2\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"09105647-a665-4fb4-910d-49bcf90eb91e","savedPayload":{"position":{"x":17538.146854642277,"y":14808.347930685106},"targetPosition":{"x":18054.21598731423,"y":15179.760108077046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Side'","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.LIGHT\"\n}","id":"ad17706f-09f0-4424-b5f3-b66fb2c76160","savedPayload":{"position":{"x":17149.721331086643,"y":14282.59833201751},"targetPosition":{"x":17596.21047240923,"y":14733.144349417309},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3975ecc2-db5b-4cab-a9ab-9e13b2da3015","savedPayload":{"position":{"x":17596.21047240923,"y":14733.144349417309},"targetPosition":{"x":18054.21598731423,"y":15179.760108077046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Up'","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR. GREEN\"\n}","id":"0b263642-8fc7-4fdc-a915-9480c8493e68","savedPayload":{"position":{"x":17279.191730237282,"y":14168.635270025714},"targetPosition":{"x":17662.994224214883,"y":14673.763338538225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e218ed70-9da7-43c5-9c23-9e010e08b5b5","savedPayload":{"position":{"x":17662.994224214883,"y":14673.763338538225},"targetPosition":{"x":18054.21598731423,"y":15179.760108077046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Down'","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n}","id":"ce3abe3f-eb38-4e0f-94bb-9c397ed78f49","savedPayload":{"position":{"x":17420.25270014268,"y":14074.01400172028},"targetPosition":{"x":17734.61221552927,"y":14624.818390740997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"251d5031-13f9-493b-aa35-126f5221bb21","savedPayload":{"position":{"x":17734.61221552927,"y":14624.818390740997},"targetPosition":{"x":18054.21598731423,"y":15179.760108077046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"atMousePosition === true","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.1\n}","id":"2ea26fbc-74c5-4fb5-b64f-c4c7b289003c","savedPayload":{"position":{"x":17622.094341269396,"y":14024.70216450926},"targetPosition":{"x":17862.098140684546,"y":14611.87766824623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8a0f9c00-67be-47fa-9cde-ec6c499c9bec","savedPayload":{"position":{"x":17862.098140684546,"y":14611.87766824623},"targetPosition":{"x":18054.21598731423,"y":15179.760108077046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f2d2ac14-9859-4228-81d9-280c639c1b37","savedPayload":{"position":{"x":18054.21598731423,"y":15179.760108077046},"targetPosition":{"x":18438.022151979312,"y":15684.230003457562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n }\n}","id":"d85d9603-7ff2-4d45-aa58-9b8ebe23a65f","savedPayload":{"position":{"x":17949.356126833678,"y":14877.576558928491},"targetPosition":{"x":18176.767367766446,"y":15106.660163629645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Side'","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.DARK\"\n}","id":"d09de0b4-f477-42e9-a944-6bde9a9a68dd","savedPayload":{"position":{"x":17831.592662225696,"y":14488.078343744604},"targetPosition":{"x":17993.865459028333,"y":14803.174377064697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"08167019-4685-45ca-8572-74706f2fb971","savedPayload":{"position":{"x":17993.865459028333,"y":14803.174377064697},"targetPosition":{"x":18176.767367766446,"y":15106.660163629645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Up'","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.PATINATED_TURQUOISE\"\n}","id":"ebab2c53-c230-4622-a5d1-a3e0bd1d4139","savedPayload":{"position":{"x":18034.08951149458,"y":14565.51503935586},"targetPosition":{"x":18141.515020633582,"y":14864.509991029734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5b721945-b84b-4e19-a7db-777bc1c1fee1","savedPayload":{"position":{"x":18141.515020633582,"y":14864.509991029734},"targetPosition":{"x":18176.767367766446,"y":15106.660163629645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Down'","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n}","id":"8bef9d11-9184-420e-a841-97a19f6a160b","savedPayload":{"position":{"x":18047.622336779496,"y":14428.845029720846},"targetPosition":{"x":18106.95822924535,"y":14741.585717268857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a530140d-d0bb-4989-8ca8-d9846adbc91d","savedPayload":{"position":{"x":18106.95822924535,"y":14741.585717268857},"targetPosition":{"x":18176.767367766446,"y":15106.660163629645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"add24099-1310-4e86-99fc-9db01a272b6e","savedPayload":{"position":{"x":18176.767367766446,"y":15106.660163629645},"targetPosition":{"x":18438.022151979312,"y":15684.230003457562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"New Point","id":"7be4c16d-772a-4750-9735-09d3d9e16037","savedPayload":{"position":{"x":18312.017617835256,"y":15062.666240237037},"targetPosition":{"x":18438.022151979312,"y":15684.230003457562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"New Point","id":"9be61e7d-ae1e-4b39-9ebf-27285a5a67a9"}}},{"type":"Polygon Vertex","name":"New Point","id":"1a592de1-eb28-41eb-8ddb-b22e5034be53","savedPayload":{"position":{"x":18453.33952476974,"y":15050.115251217785},"targetPosition":{"x":18438.022151979312,"y":15684.230003457562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"New Point","id":"f87b3204-8901-4774-afcb-b4e5394e255d"}}},{"type":"Polygon Vertex","name":"New Point","id":"e90a30b1-cd5d-4331-bf74-7cfd4242db34","savedPayload":{"position":{"x":18594.012058059874,"y":15069.340892489414},"targetPosition":{"x":18438.022151979312,"y":15684.230003457562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"New Point","id":"5ce82101-6f77-4f54-bef5-d97edae6d44b"}}},{"type":"Polygon Vertex","name":"New Point","id":"ae4311e5-a02d-46d7-a41c-79e6945f9f21","savedPayload":{"position":{"x":18727.002573971153,"y":15119.407592716574},"targetPosition":{"x":18438.022151979312,"y":15684.230003457562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"New Point","id":"45dbe6c3-9433-4b6d-8aa5-691cf6eba8a1"}}}],"id":"6e21446c-93e7-44ad-814d-3cd2fa8f8baf","savedPayload":{"position":{"x":18438.022151979312,"y":15684.230003457562},"targetPosition":{"x":18494.294401729676,"y":16316.83542882676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"0b08f6f6-2317-42fb-ab3a-db8957d76dfa","savedPayload":{"position":{"x":18494.294401729676,"y":16316.83542882676},"targetPosition":{"x":18858.879582593865,"y":16835.496984165897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"o"}}},"panels":[{"type":"Plotter Panel","name":"Bollinger Channels Objects","config":"{ \n\"codeName\": \"Bollinger Channels Objects\"\n}","panelData":[{"type":"Panel Data","name":"Direction","config":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.direction","id":"479f9520-4cad-4fe3-a2fc-c7f48d93344d","savedPayload":{"position":{"x":18537.372387164076,"y":15807.139878649514},"targetPosition":{"x":18621.6239822188,"y":15941.274033455491},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"24fefe09-fa8d-4904-9c6c-9c775d3866d0","savedPayload":{"position":{"x":18621.6239822188,"y":15941.274033455491},"targetPosition":{"x":18803.105369490375,"y":16204.172033911998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Total Periods","config":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"69b5e792-b174-4046-9219-786da4601f58","savedPayload":{"position":{"x":18679.846012628193,"y":15737.371034626938},"targetPosition":{"x":18718.197026062095,"y":15891.681881599787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e79b5734-072e-4432-91d5-8f41eef59b26","savedPayload":{"position":{"x":18718.197026062095,"y":15891.681881599787},"targetPosition":{"x":18803.105369490375,"y":16204.172033911998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"First Moving Average","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.firstMovingAverage","id":"b6818aef-a3dc-4d78-9684-46f1ddbf234a","savedPayload":{"position":{"x":18834.00631209217,"y":15720.72570271403},"targetPosition":{"x":18822.87490011158,"y":15879.578159773782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"75fe02cd-776b-45cb-a965-ecbfac163ad4","savedPayload":{"position":{"x":18822.87490011158,"y":15879.578159773782},"targetPosition":{"x":18803.105369490375,"y":16204.172033911998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Last Moving Average","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.lastMovingAverage","id":"25d5ce35-768a-4f5b-b541-65dfdcf77414","savedPayload":{"position":{"x":19005.623779986217,"y":15769.421851491643},"targetPosition":{"x":18945.93119757564,"y":15917.004401300304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c5af78de-d153-4002-b6df-79a1fd009100","savedPayload":{"position":{"x":18945.93119757564,"y":15917.004401300304},"targetPosition":{"x":18803.105369490375,"y":16204.172033911998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"09c8f781-3e54-4bed-bd9a-83e8179fdd66","savedPayload":{"position":{"x":18803.105369490375,"y":16204.172033911998},"targetPosition":{"x":18858.879582593865,"y":16835.496984165897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"52881346-3e4b-45e0-92d2-af130d381b8e","savedPayload":{"position":{"x":18679.854460820614,"y":17898.207265853114},"targetPosition":{"x":18879.4717712538,"y":18288.525033205115},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Bollinger Sub Channels Objects","config":"{\n\"codeName\": \"Bollinger-Sub-Channels-Objects\",\n\"icon\": \"layer-trends\"\n}","javascriptCode":{"type":"Javascript Code","code":"/* Definition of the points we are going to use while drawing */\nlet point1\nlet point2\nlet point3\nlet point4\n\npoint1 = {\n x: record.begin,\n y: record.firstMovingAverage - record.firstDeviation\n}\n\npoint2 = {\n x: record.end,\n y: record.lastMovingAverage - record.lastDeviation\n}\n\npoint3 = {\n x: record.end,\n y: record.lastMovingAverage + record.lastDeviation\n}\n\npoint4 = {\n x: record.begin,\n y: record.firstMovingAverage + record.firstDeviation\n}\n\n/* Contributing to Auto-Scale*/\ncoordinateSystem.reportYValue(record.firstMovingAverage - record.firstDeviation)\ncoordinateSystem.reportYValue(record.lastMovingAverage - record.lastDeviation)\ncoordinateSystem.reportYValue(record.lastMovingAverage + record.lastDeviation)\ncoordinateSystem.reportYValue(record.firstMovingAverage + record.firstDeviation)\n\n/*\nThe information we store in files is independent from the charing system and its coordinate systems.\nThat means that the first thing we allways need to do is to trasform these points to the coordinate system of the timeline.\n*/\npoint1 = coordinateSystem.transformThisPoint(point1)\npoint2 = coordinateSystem.transformThisPoint(point2)\npoint3 = coordinateSystem.transformThisPoint(point3)\npoint4 = coordinateSystem.transformThisPoint(point4)\n\n/*\nThe browser canvas object does not care about our timeline and its coordinate system. In order to draw on a html canvas we\nneed the points to be converted into the canvas coordinate system.\nNext we transform again to the screen coordinate system.\n*/\npoint1 = transformThisPoint(point1, thisObject.container)\npoint2 = transformThisPoint(point2, thisObject.container)\npoint3 = transformThisPoint(point3, thisObject.container)\npoint4 = transformThisPoint(point4, thisObject.container)\n\n/* We make sure the points do not fall outside the canvas.chartingSpace.viewport visible area. This step allways need to be done. */\npoint1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point1)\npoint2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2)\npoint3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3)\npoint4 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point4)\n\npoint1 = thisObject.fitFunction(point1);\npoint2 = thisObject.fitFunction(point2);\npoint3 = thisObject.fitFunction(point3);\npoint4 = thisObject.fitFunction(point4);\n\n/*\nNow that we have our 4 points as coordinates of the actual screen (or html canvas object), we can actaully start drawing.\nFirst we are going to draw the shape backgound.\n*/\nbrowserCanvasContext.beginPath()\n\nbrowserCanvasContext.moveTo(point1.x, point1.y)\nbrowserCanvasContext.lineTo(point2.x, point2.y)\nbrowserCanvasContext.lineTo(point3.x, point3.y)\nbrowserCanvasContext.lineTo(point4.x, point4.y)\n\nbrowserCanvasContext.closePath()\n\nlet opacity = '0.25' // The backgound will be quite transparent. Possible values goes from 0..1\n\n/* Depending on the direction of the channel, we use a different color for the border lines. */\nif (record.direction === 'Side') { browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.DARK + ', ' + opacity + ')' }\nif (record.direction === 'Up') { browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.PATINATED_TURQUOISE + ', ' + opacity + ')' }\nif (record.direction === 'Down') { browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RED + ', ' + opacity + ')' }\n\nswitch (record.slope) {\n case 'Side': {\n opacity = '0.1';\n break;\n }\n case 'Gentle': {\n opacity = '0.1';\n break;\n }\n case 'Medium': {\n opacity = '0.15';\n break;\n }\n case 'Steep': {\n opacity = '0.2';\n break;\n }\n case 'Extreme': {\n opacity = '0.25';\n break;\n }\n}\n\n/* Depending on the direction of the channel, we use a different color for the background. */\nif (record.direction === 'Side' || record.slope === 'Side') { browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.LIGHT + ', ' + opacity + ')'; }\nif (record.direction === 'Up') { browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.GREEN + ', ' + opacity + ')' }\nif (record.direction === 'Down') { browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + opacity + ')' }\n\n/* If the mouse is positioned in betwheen the begining and ending of our object, we can opt for changing the color of that specific object. */\nif (atMousePosition) {\n browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', 0.1)'\n}\n\nbrowserCanvasContext.fill() // This is what actually apply the previous instructions on the html canvas object of the browser.\n\n/* Second we are going to draw the shape borders. */\nbrowserCanvasContext.beginPath()\n\nbrowserCanvasContext.moveTo(point1.x, point1.y)\nbrowserCanvasContext.lineTo(point2.x, point2.y)\nbrowserCanvasContext.lineTo(point3.x, point3.y)\nbrowserCanvasContext.lineTo(point4.x, point4.y)\n\nbrowserCanvasContext.closePath()\n\nbrowserCanvasContext.lineWidth = 1 // We use 1 as standard line width\nbrowserCanvasContext.setLineDash([0, 0]) // We do not want dashed lines in this case.\nbrowserCanvasContext.stroke() // This actually draw the borders of our shape.","id":"63406674-a797-430a-96c7-e5bcacb286bc","savedPayload":{"position":{"x":19301.020295186147,"y":16241.527610232179},"targetPosition":{"x":19366.967325736696,"y":16867.30107172941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"panels":[{"type":"Plotter Panel","name":"Bollinger Sub Channels Objects","config":"{ \n\"codeName\": \"Bollinger Sub Channels Objects\"\n}","panelData":[{"type":"Panel Data","name":"Direction","config":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.direction","id":"f1793208-a0a5-49a5-a21c-88f848563433","savedPayload":{"position":{"x":19562.37005370875,"y":15822.400336125926},"targetPosition":{"x":19579.14181537817,"y":15979.321895048712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"029cc150-77ee-44eb-b52b-4c83f0d79e6a","savedPayload":{"position":{"x":19579.14181537817,"y":15979.321895048712},"targetPosition":{"x":19622.751286136787,"y":16292.705224194367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Total Periods","config":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"f09cfc38-2f4e-4f5f-b6fe-3f8255657081","savedPayload":{"position":{"x":19692.104650487036,"y":15821.083826572523},"targetPosition":{"x":19667.620757672536,"y":15977.078678640386},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6020f40d-2141-4f21-b4ae-3a4f32073eda","savedPayload":{"position":{"x":19667.620757672536,"y":15977.078678640386},"targetPosition":{"x":19622.751286136787,"y":16292.705224194367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"First Moving Average","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.firstMovingAverage","id":"be429ff9-1656-4db6-8ddb-758ca900d6f0","savedPayload":{"position":{"x":19815.775533190426,"y":15856.29854174326},"targetPosition":{"x":19751.622712933662,"y":16000.586986695265},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ab7f25ee-dad0-4b3e-80b1-a9fcffde8424","savedPayload":{"position":{"x":19751.622712933662,"y":16000.586986695265},"targetPosition":{"x":19622.751286136787,"y":16292.705224194367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Last Moving Average","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.lastMovingAverage","id":"5501c8e2-7406-453a-9cae-75f8628e321f","savedPayload":{"position":{"x":19922.119864577977,"y":15920.713046440656},"targetPosition":{"x":19822.668579010937,"y":16043.328338089223},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e0df05de-65cf-45da-a0b5-ee6ce21b4ed8","savedPayload":{"position":{"x":19822.668579010937,"y":16043.328338089223},"targetPosition":{"x":19622.751286136787,"y":16292.705224194367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Slope","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.slope","id":"567bc3e1-3a15-43f1-9bf4-625c7ad1cad8","savedPayload":{"position":{"x":20017.74824136928,"y":16029.740388783783},"targetPosition":{"x":19889.942761923045,"y":16122.22583623621},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c6f2ce73-44ac-4515-bcc3-b394fa3a66e4","savedPayload":{"position":{"x":19889.942761923045,"y":16122.22583623621},"targetPosition":{"x":19622.751286136787,"y":16292.705224194367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8ce4c7ca-3496-4df8-9d57-335d40cc77a0","savedPayload":{"position":{"x":19622.751286136787,"y":16292.705224194367},"targetPosition":{"x":19366.967325736696,"y":16867.30107172941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f8c4b699-1f40-4832-b427-68da3341daa8","savedPayload":{"position":{"x":18810.85739189229,"y":17855.720107004225},"targetPosition":{"x":18879.4717712538,"y":18288.525033205115},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"x"}}},{"type":"Plotter Module","name":"Bollinger Channels","config":"{\n\"codeName\": \"Bollinger-Channels\",\n \"icon\": \"layer-trends\"\n}","panels":[{"type":"Plotter Panel","name":"Bollinger Channels","config":"{ \n\"codeName\": \"Bollinger Channels\"\n}","panelData":[{"type":"Panel Data","name":"Direction","config":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.direction","id":"f1bb6cde-263f-4582-aeef-8e0bed99d53f","savedPayload":{"position":{"x":19937.79724193654,"y":15905.478421702597},"targetPosition":{"x":19905.23684309855,"y":16059.688630726074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b7afdb03-dc66-4f9a-b3c7-e8886521b7cc","savedPayload":{"position":{"x":19905.23684309855,"y":16059.688630726074},"targetPosition":{"x":19840.07664955603,"y":16367.698292939625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period","config":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"991dd9e3-c5d0-4a61-953a-81b3ee218695","savedPayload":{"position":{"x":20156.121945712468,"y":16016.661252755728},"targetPosition":{"x":20050.720745511615,"y":16133.799896972812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"1fbd683b-9294-456f-9464-97d887a49cdc","savedPayload":{"position":{"x":20050.720745511615,"y":16133.799896972812},"targetPosition":{"x":19840.07664955603,"y":16367.698292939625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"abb4f289-c374-43e0-b8dc-d586d8e3328e","savedPayload":{"position":{"x":19840.07664955603,"y":16367.698292939625},"targetPosition":{"x":19554.615203857928,"y":16928.231628146696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a045ea45-c8ff-49a5-86cd-5d38cd3e6d22","savedPayload":{"position":{"x":18947.939713788986,"y":17855.781889793205},"targetPosition":{"x":18879.4717712538,"y":18288.525033205115},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Bollinger Sub Channels","config":"{\n\"codeName\": \"Bollinger-Sub-Channels\",\n\"icon\": \"layer-trends\"\n}","panels":[{"type":"Plotter Panel","name":"Bollinger Sub Channels","config":"{ \n\"codeName\": \"Bollinger Sub Channels\"\n}","panelData":[{"type":"Panel Data","name":"Direction","config":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.direction","id":"6b969637-0945-4ae4-970c-49f8fd940fd2","savedPayload":{"position":{"x":20339.685178831736,"y":16163.557782958249},"targetPosition":{"x":20279.37581434154,"y":16309.291794113838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"67136278-2bc4-4814-b71a-0fd87c85b422","savedPayload":{"position":{"x":20279.37581434154,"y":16309.291794113838},"targetPosition":{"x":20159.152568648147,"y":16600.115056105074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period","config":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"0e6dcc09-7f32-431f-ab15-08764e0ad29b","savedPayload":{"position":{"x":20493.439989176695,"y":16266.154326736854},"targetPosition":{"x":20381.777420698414,"y":16377.58740385329},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"24f260af-1679-444e-9d08-17f39b3af2a8","savedPayload":{"position":{"x":20381.777420698414,"y":16377.58740385329},"targetPosition":{"x":20159.152568648147,"y":16600.115056105074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Slope","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.slope","id":"bd4510b2-1062-4142-81b7-207b292d36c6","savedPayload":{"position":{"x":20596.14841557013,"y":16420.27277401673},"targetPosition":{"x":20450.18081035182,"y":16480.31593617826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c520fa0d-f783-4f91-8951-d83cfe470522","savedPayload":{"position":{"x":20450.18081035182,"y":16480.31593617826},"targetPosition":{"x":20159.152568648147,"y":16600.115056105074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1beae26c-7235-46ef-a732-1d0c9f18dda5","savedPayload":{"position":{"x":20159.152568648147,"y":16600.115056105074},"targetPosition":{"x":19714.419161527025,"y":17044.487992248072},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"88bdc751-5a1d-499d-a4ba-888dbcf6dc7a","savedPayload":{"position":{"x":19078.734799678354,"y":17898.360366936333},"targetPosition":{"x":18879.4717712538,"y":18288.525033205115},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"343f37be-cc77-4513-a296-7925edfcf0c4","savedPayload":{"position":{"x":18879.41035359019,"y":17689.03605204679},"targetPosition":{"x":18879.35218735615,"y":18688.55301821844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"Plotter Candles Channels","config":"{\n\"codeName\" : \"Candles Channels\"\n}","modules":[{"type":"Plotter Module","name":"Candles Channels","config":"{ \n\"codeName\": \"Candles Channels\",\n\"icon\": \"layer-trends\"\n}","panels":[{"type":"Plotter Panel","name":"Candles Channels","config":"{ \n\"codeName\": \"Candles Channels\"\n}","panelData":[{"type":"Panel Data","name":"Direction","config":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.direction","id":"34e4348e-6bc2-4626-8d84-070efa8e81e2","savedPayload":{"position":{"x":20566.54130593636,"y":16963.412466270413},"targetPosition":{"x":20526.20149355021,"y":17054.934179082127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"eeb8fe38-bb85-441a-933f-d44fc990d037","savedPayload":{"position":{"x":20526.20149355021,"y":17054.934179082127},"targetPosition":{"x":20474.242609069093,"y":17199.316492668164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period","config":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"facfde0d-c82e-40f5-9659-2b844def9ddd","savedPayload":{"position":{"x":20685.676692098386,"y":17059.60196222462},"targetPosition":{"x":20603.924217170104,"y":17119.04514129341},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7991ff70-72ba-44e0-a980-75f0b13672b5","savedPayload":{"position":{"x":20603.924217170104,"y":17119.04514129341},"targetPosition":{"x":20474.242609069093,"y":17199.316492668164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d21f5c62-0455-4671-89c1-f9d96a75f349","savedPayload":{"position":{"x":20474.242609069093,"y":17199.316492668164},"targetPosition":{"x":20222.56064513682,"y":17510.176243384365},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"864f26cb-b191-47c1-801e-57bb2436294e","savedPayload":{"position":{"x":19192.511792829053,"y":17918.837952548256},"targetPosition":{"x":19079.549434475768,"y":18342.03673774104},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Candles Channels Objects","config":"{ \n\"codeName\": \"Candles Channels Objects\",\n\"icon\": \"layer-trends\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"First Min","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.firstMin","id":"35f51e5f-816b-4067-9c32-b6a95aae79a3","savedPayload":{"position":{"x":21220.959098204938,"y":16272.32616179364},"targetPosition":{"x":21166.763294349388,"y":16567.417386119025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"91a70976-e9d9-4d8e-9f83-719cab4d1497","savedPayload":{"position":{"x":21166.763294349388,"y":16567.417386119025},"targetPosition":{"x":21138.18409613746,"y":16869.123962314337},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Last Min","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.lastMin","id":"f4c70158-779d-4ea9-a50c-1610ded698f5","savedPayload":{"position":{"x":21331.695363815106,"y":16287.168643961057},"targetPosition":{"x":21231.69766815812,"y":16570.184135316125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"588627dd-bbc9-4ca5-b413-52dd000e6f30","savedPayload":{"position":{"x":21231.69766815812,"y":16570.184135316125},"targetPosition":{"x":21138.18409613746,"y":16869.123962314337},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Last Max","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.lastMax","id":"02969b43-c942-49a2-a50c-3b11f20dc61c","savedPayload":{"position":{"x":21412.103456644352,"y":16352.29813857878},"targetPosition":{"x":21268.901326461633,"y":16615.85878821496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"eb4d4b7c-cb3c-4855-8016-88a4df1b667b","savedPayload":{"position":{"x":21268.901326461633,"y":16615.85878821496},"targetPosition":{"x":21138.18409613746,"y":16869.123962314337},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"First Max","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.firstMax","id":"6a44702b-c381-4dc2-beaa-005d5dfc7e59","savedPayload":{"position":{"x":21548.42159144824,"y":16406.592956103872},"targetPosition":{"x":21365.701015349616,"y":16644.541639618965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7cf30b7b-b68a-46e4-9c89-65fa7859be97","savedPayload":{"position":{"x":21365.701015349616,"y":16644.541639618965},"targetPosition":{"x":21138.18409613746,"y":16869.123962314337},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cfed2fd2-3791-4c86-ac53-f248831fa7a1","savedPayload":{"position":{"x":21138.18409613746,"y":16869.123962314337},"targetPosition":{"x":20894.751324321594,"y":17416.29036203038},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"New Polygon","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.2\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"e06b5939-31b9-477b-81a2-1aaf3475144e","savedPayload":{"position":{"x":22312.429152158955,"y":16496.83922791383},"targetPosition":{"x":21961.720156764764,"y":16983.633018380417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Side'","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.LIGHT\"\n}","id":"8bf6a1ad-69e9-44ff-8e3a-4f70fe523572","savedPayload":{"position":{"x":22796.85627924806,"y":16121.161555059402},"targetPosition":{"x":22378.097352273442,"y":16549.687075253765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"76a1c12f-0b87-40c2-9dae-6768884a5076","savedPayload":{"position":{"x":22378.097352273442,"y":16549.687075253765},"targetPosition":{"x":21961.720156764764,"y":16983.633018380417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Up'","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR. GREEN\"\n}","id":"a57b9ead-b4b8-40e3-82df-1461cad237c0","savedPayload":{"position":{"x":22904.527101895856,"y":16239.6433016223},"targetPosition":{"x":22433.316069671015,"y":16609.736792819782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d3d09c74-7274-4fce-8413-815c1ad546ee","savedPayload":{"position":{"x":22433.316069671015,"y":16609.736792819782},"targetPosition":{"x":21961.720156764764,"y":16983.633018380417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Down'","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n}","id":"2f1ff3f4-94a9-4a3d-b290-fbde30b79e7e","savedPayload":{"position":{"x":22994.562132442978,"y":16370.311334676344},"targetPosition":{"x":22479.016652079506,"y":16675.67218834078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"75f374ef-accc-444d-856f-ba01eba29ced","savedPayload":{"position":{"x":22479.016652079506,"y":16675.67218834078},"targetPosition":{"x":21961.720156764764,"y":16983.633018380417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"atMousePosition === true","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.1\n}","id":"4361ea11-4004-44d7-a94c-9bf27aa75a64","savedPayload":{"position":{"x":23045.5194071637,"y":16519.582560848976},"targetPosition":{"x":22494.493049154877,"y":16754.886474463718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"db98a447-4c7f-43bd-9b9f-d94978b05e14","savedPayload":{"position":{"x":22494.493049154877,"y":16754.886474463718},"targetPosition":{"x":21961.720156764764,"y":16983.633018380417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a7862bd3-6421-4855-86aa-6b2f86b9dde2","savedPayload":{"position":{"x":21961.720156764764,"y":16983.633018380417},"targetPosition":{"x":21490.910803445477,"y":17353.825870474648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n }\n}","id":"702d82d3-6978-4c3e-8ffc-cd6f33318efd","savedPayload":{"position":{"x":22250.94034648427,"y":16888.25158254186},"targetPosition":{"x":22032.47188805625,"y":17098.132027250533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Side'","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.DARK\"\n}","id":"875f9634-88be-4f74-8adc-bb6b5b284a96","savedPayload":{"position":{"x":22587.117051801808,"y":16791.05712917824},"targetPosition":{"x":22298.715822394646,"y":16932.6598592077},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6a9f57c4-7ce6-45b3-a2c2-82ff785f32e4","savedPayload":{"position":{"x":22298.715822394646,"y":16932.6598592077},"targetPosition":{"x":22032.47188805625,"y":17098.132027250533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Up'","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.PATINATED_TURQUOISE\"\n}","id":"3bbfe7c5-b635-4b18-94b5-06ac68408de9","savedPayload":{"position":{"x":22575.059744356255,"y":16891.4918436275},"targetPosition":{"x":22295.04352643356,"y":16992.831415660978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b99aaa3f-25d7-4570-b689-60eb4200b42c","savedPayload":{"position":{"x":22295.04352643356,"y":16992.831415660978},"targetPosition":{"x":22032.47188805625,"y":17098.132027250533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.direction === 'Down'","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n}","id":"897c7976-49b7-401c-a3f0-5d5a5f4edfca","savedPayload":{"position":{"x":22647.100656070597,"y":17014.825948394704},"targetPosition":{"x":22353.264615482927,"y":17075.65259904647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"06096ed6-281e-4075-a709-2fd07c18fa9c","savedPayload":{"position":{"x":22353.264615482927,"y":17075.65259904647},"targetPosition":{"x":22032.47188805625,"y":17098.132027250533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7c42653b-6268-4c6b-ab1c-522e044bc761","savedPayload":{"position":{"x":22032.47188805625,"y":17098.132027250533},"targetPosition":{"x":21490.910803445477,"y":17353.825870474648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"First Min","id":"67773b40-e975-42a8-b994-b94ff359cc52","savedPayload":{"position":{"x":22075.99264246352,"y":17225.27823926194},"targetPosition":{"x":21490.910803445477,"y":17353.825870474648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"First Min","id":"91a70976-e9d9-4d8e-9f83-719cab4d1497"}}},{"type":"Polygon Vertex","name":"Last Min","id":"edd79469-619d-4723-b678-1c415b3ebecb","savedPayload":{"position":{"x":22090.067557411334,"y":17358.542827614492},"targetPosition":{"x":21490.910803445477,"y":17353.825870474648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Last Min","id":"588627dd-bbc9-4ca5-b413-52dd000e6f30"}}},{"type":"Polygon Vertex","name":"Last Max","id":"5a204cef-fd62-4c53-af97-79f9963f70cb","savedPayload":{"position":{"x":22074.03717932826,"y":17491.73496799267},"targetPosition":{"x":21490.910803445477,"y":17353.825870474648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Last Max","id":"eb4d4b7c-cb3c-4855-8016-88a4df1b667b"}}},{"type":"Polygon Vertex","name":"First Max","id":"32e5e2d7-3818-4e0c-b36f-712da90e4025","savedPayload":{"position":{"x":22028.672597468863,"y":17618.119753426563},"targetPosition":{"x":21490.910803445477,"y":17353.825870474648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"First Max","id":"7cf30b7b-b68a-46e4-9c89-65fa7859be97"}}}],"id":"5383ea8f-c9ed-463e-a7d4-dc5cb6c40dff","savedPayload":{"position":{"x":21490.910803445477,"y":17353.825870474648},"targetPosition":{"x":20894.751324321594,"y":17416.29036203038},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"9651d021-d2af-4172-bc8f-7265407cf181","savedPayload":{"position":{"x":20894.751324321594,"y":17416.29036203038},"targetPosition":{"x":20410.098477690823,"y":17768.3138615241},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"o"}}},"panels":[{"type":"Plotter Panel","name":"Candles Channels Objects","config":"{ \n\"codeName\": \"Candles Channels Objects\"\n}","panelData":[{"type":"Panel Data","name":"Direction","config":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.direction","id":"daf86ccc-bbf4-4a18-bcd8-583ded1b98a7","savedPayload":{"position":{"x":20957.102872950258,"y":18112.63321910131},"targetPosition":{"x":20865.354482504958,"y":18072.12231043034},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"73bc1fd7-799b-4b19-98fa-856575b9ad33","savedPayload":{"position":{"x":20865.354482504958,"y":18072.12231043034},"targetPosition":{"x":20721.01880280734,"y":18020.112726711614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Total Periods","config":"{\n \n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"32edb120-129e-4734-bfd1-224213e3e8f8","savedPayload":{"position":{"x":20860.809774577865,"y":18231.698065830442},"targetPosition":{"x":20801.2456896746,"y":18150.01929567359},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6384ead6-8afc-490a-a6db-055b7b622877","savedPayload":{"position":{"x":20801.2456896746,"y":18150.01929567359},"targetPosition":{"x":20721.01880280734,"y":18020.112726711614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8b63674c-b728-4a00-8b3c-331d7ba2a93b","savedPayload":{"position":{"x":20721.01880280734,"y":18020.112726711614},"targetPosition":{"x":20410.098477690823,"y":17768.3138615241},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7aa1e889-ae4f-4945-b0e5-9ad87ded05a5","savedPayload":{"position":{"x":19389.362552895152,"y":18032.375775940265},"targetPosition":{"x":19079.549434475768,"y":18342.03673774104},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7c38b69d-fabc-4ca6-b35e-6fef6f1d8b13","savedPayload":{"position":{"x":19379.14486715528,"y":17822.97038505833},"targetPosition":{"x":18879.35218735615,"y":18688.55301821844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"Resistances And Supports","config":"{ \n\"codeName\": \"Resistances-And-Supports\"\n}","modules":[{"type":"Plotter Module","name":"Resistances","config":"{ \n\"codeName\": \"Resistances-And-Supports\",\n\"icon\": \"layer-resistance\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"Base Resistance","points":[{"type":"Point","name":"Base Left","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin - (record.end - record.begin)\ny = record.rateResistance","id":"5781a245-e686-4b11-a000-2fa096a32d87","savedPayload":{"position":{"x":22112.20609856361,"y":9285.016584236704},"targetPosition":{"x":22810.751206132474,"y":8667.952422536484},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6e8169a3-28a2-412f-8100-577c4a9a97bb","savedPayload":{"position":{"x":22810.751206132474,"y":8667.952422536484},"targetPosition":{"x":23509.31739944706,"y":8050.857009265341},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Base Right","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end- (record.end - record.begin)\ny = record.rateResistance","id":"5a15539d-b94c-4110-a165-9a3bb5fc4fed","savedPayload":{"position":{"x":21682.188605084826,"y":8420.978407826498},"targetPosition":{"x":22595.718516726527,"y":8235.912401697156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b23883d4-d592-4d0a-822e-82165e22598f","savedPayload":{"position":{"x":22595.718516726527,"y":8235.912401697156},"targetPosition":{"x":23509.31739944706,"y":8050.857009265341},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8da1ef7b-5f0a-477b-9179-2c09c2fbdeb8","savedPayload":{"position":{"x":18966.700032260524,"y":17262.884970869796},"targetPosition":{"x":19690.753840141355,"y":17072.520169746942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Resistance Levels","points":[{"type":"Point","name":"Begin 1","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance1Rate","id":"3c34f0a9-1a8e-4452-803c-ea488111c3a5","savedPayload":{"position":{"x":24011.1308567527,"y":10725.932064632736},"targetPosition":{"x":23855.483402210182,"y":10115.98720248982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2a3a3e15-93dd-43f0-95f7-ae2ed478607f","savedPayload":{"position":{"x":23855.483402210182,"y":10115.98720248982},"targetPosition":{"x":23694.135311427966,"y":9506.3391650838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 1","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance1Rate","id":"d1968565-ac35-4c42-9760-2b46f17bae96","savedPayload":{"position":{"x":23831.499802286657,"y":10759.195090271402},"targetPosition":{"x":23764.339599576128,"y":10133.308099194302},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fe77f4a2-627c-4f27-9d4c-2dab9ddd8926","savedPayload":{"position":{"x":23764.339599576128,"y":10133.308099194302},"targetPosition":{"x":23694.135311427966,"y":9506.3391650838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 2","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance2Rate","id":"fe7ad1f2-d9b5-4e47-af1c-7d29b86e1a0a","savedPayload":{"position":{"x":23650.57811084114,"y":10766.174520559154},"targetPosition":{"x":23672.95545013847,"y":10137.112600724482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"71ddeaf4-849d-4973-9b6a-a2ddcaccb86d","savedPayload":{"position":{"x":23672.95545013847,"y":10137.112600724482},"targetPosition":{"x":23694.135311427966,"y":9506.3391650838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 2","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance2Rate","id":"992d9a81-4292-4943-bc67-c6ce84ed7e3a","savedPayload":{"position":{"x":23470.956189631375,"y":10746.984171527083},"targetPosition":{"x":23582.65629391293,"y":10127.58226062798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"19746197-9ebc-4af8-b4ba-8217fa0eba77","savedPayload":{"position":{"x":23582.65629391293,"y":10127.58226062798},"targetPosition":{"x":23694.135311427966,"y":9506.3391650838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 3","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance3Rate","id":"c29b8386-bb00-4b15-92ee-fa280c7b721f","savedPayload":{"position":{"x":23296.19891569173,"y":10702.402039336974},"targetPosition":{"x":23494.965923146854,"y":10105.301501761869},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"febd94d0-09c7-40c5-b7b2-552ca2cca2b9","savedPayload":{"position":{"x":23494.965923146854,"y":10105.301501761869},"targetPosition":{"x":23694.135311427966,"y":9506.3391650838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 3","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance3Rate","id":"ff8a40a3-ebed-4e5a-854b-2ca20f2bc441","savedPayload":{"position":{"x":23129.79801915564,"y":10633.521524818045},"targetPosition":{"x":23411.52252072894,"y":10070.748701193052},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7003801a-ea76-43e2-a013-72e6d41aff5c","savedPayload":{"position":{"x":23411.52252072894,"y":10070.748701193052},"targetPosition":{"x":23694.135311427966,"y":9506.3391650838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 4","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance4Rate","id":"f927d491-29ca-4b19-aa80-c413e4148b38","savedPayload":{"position":{"x":22974.963800779242,"y":10541.650742889562},"targetPosition":{"x":23333.949742799425,"y":10024.659813748309},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"12059a23-6280-499c-8ebc-f8c0de0e5647","savedPayload":{"position":{"x":23333.949742799425,"y":10024.659813748309},"targetPosition":{"x":23694.135311427966,"y":9506.3391650838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 4","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance4Rate","id":"8a5e95cc-9871-49e8-a610-bff6fc2883a4","savedPayload":{"position":{"x":22834.792248807316,"y":10428.697362224682},"targetPosition":{"x":23263.734688043212,"y":9968.04741756012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2e5e4668-102d-4d9a-addc-9b154e7889a9","savedPayload":{"position":{"x":23263.734688043212,"y":9968.04741756012},"targetPosition":{"x":23694.135311427966,"y":9506.3391650838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 5","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance5Rate","id":"ac834b1e-4605-456b-8861-2fcf9f2eb9db","savedPayload":{"position":{"x":22712.197990553068,"y":10296.844292986516},"targetPosition":{"x":23202.394136089,"y":9901.959477738505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1cebdfa8-d6f3-44fb-bf7e-0f8bfaeff946","savedPayload":{"position":{"x":23202.394136089,"y":9901.959477738505},"targetPosition":{"x":23694.135311427966,"y":9506.3391650838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 5","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance5Rate","id":"b8fc5e20-494e-471d-8f0e-97d42a64094b","savedPayload":{"position":{"x":22604.449802463572,"y":10138.38386156201},"targetPosition":{"x":23145.930389242305,"y":9817.422059810682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bbc97ad3-5c93-460f-8463-127d21e3dca4","savedPayload":{"position":{"x":23145.930389242305,"y":9817.422059810682},"targetPosition":{"x":23694.135311427966,"y":9506.3391650838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d0075edc-e3f2-4d8f-84ba-900c9b431782","savedPayload":{"position":{"x":18944.671813593137,"y":17140.213118474385},"targetPosition":{"x":19690.753840141355,"y":17072.520169746942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Resistance Zone 1","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance1Rate - record.resistance1Rate * record.supportResistanceZone / 2 / 100","id":"a86b7e96-ad20-45e9-85f9-811c71852651","savedPayload":{"position":{"x":22860.201976697703,"y":8213.250127262583},"targetPosition":{"x":23047.00238171864,"y":8072.345100307168},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0c275c7e-5012-454c-8772-a3c2f1621567","savedPayload":{"position":{"x":23047.00238171864,"y":8072.345100307168},"targetPosition":{"x":23420.022867420623,"y":7791.011170850505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance1Rate - record.resistance1Rate * record.supportResistanceZone / 2 / 100","id":"39fdd36d-0413-47d2-92d9-3257837c89de","savedPayload":{"position":{"x":22741.0493163952,"y":8044.198262106242},"targetPosition":{"x":22973.723292346134,"y":7960.168657175891},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e4ca8d91-e86c-4b97-b327-a1a631b28ade","savedPayload":{"position":{"x":22973.723292346134,"y":7960.168657175891},"targetPosition":{"x":23420.022867420623,"y":7791.011170850505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance1Rate + record.resistance1Rate * record.supportResistanceZone / 2 / 100","id":"e9e224f5-1483-4d72-97f7-13cbd566ce75","savedPayload":{"position":{"x":22722.694861006807,"y":7849.686878776539},"targetPosition":{"x":22945.813716234177,"y":7815.291751210991},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"1614af55-2a6c-40a5-9339-958d2944f719","savedPayload":{"position":{"x":22945.813716234177,"y":7815.291751210991},"targetPosition":{"x":23420.022867420623,"y":7791.011170850505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance1Rate + record.resistance1Rate * record.supportResistanceZone / 2 / 100","id":"552f846f-64f1-4d31-b37d-2da573c20b7f","savedPayload":{"position":{"x":22775.9083656073,"y":7580.283897480603},"targetPosition":{"x":22997.073082742685,"y":7648.680945240682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e6764b3a-2fdb-4df1-abde-1f6e9fca5a27","savedPayload":{"position":{"x":22997.073082742685,"y":7648.680945240682},"targetPosition":{"x":23420.022867420623,"y":7791.011170850505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1db48443-fc08-4f05-bf9e-4be80c377fe2","savedPayload":{"position":{"x":18943.439330667657,"y":17015.889453745807},"targetPosition":{"x":19690.753840141355,"y":17072.520169746942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Resistance Zone 2","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance2Rate - record.resistance2Rate * record.supportResistanceZone / 2 / 100","id":"31533409-bde7-41ad-b252-1c80e8874519","savedPayload":{"position":{"x":22815.20990236402,"y":8083.642682793237},"targetPosition":{"x":23013.29121881963,"y":7959.14177004327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"055d64bb-b823-4593-b606-4f0a35ac620a","savedPayload":{"position":{"x":23013.29121881963,"y":7959.14177004327},"targetPosition":{"x":23408.86134805867,"y":7710.5316340853315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance2Rate - record.resistance2Rate * record.supportResistanceZone / 2 / 100","id":"ab6b9bed-1420-4c4f-b572-73274d1beeff","savedPayload":{"position":{"x":22710.716640064395,"y":7902.549240987641},"targetPosition":{"x":22950.494879881684,"y":7838.3454450579375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6d8e2772-7475-406d-b048-4599982d04e2","savedPayload":{"position":{"x":22950.494879881684,"y":7838.3454450579375},"targetPosition":{"x":23408.86134805867,"y":7710.5316340853315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance2Rate + record.resistance2Rate * record.supportResistanceZone / 2 / 100","id":"54021cad-c5f9-4756-94a4-6216e9e0bcf7","savedPayload":{"position":{"x":22709.61363775503,"y":7711.234190968904},"targetPosition":{"x":22937.12802943186,"y":7694.9893998088555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d3cc8bbf-1f3e-49bc-9331-5e498064cb88","savedPayload":{"position":{"x":22937.12802943186,"y":7694.9893998088555},"targetPosition":{"x":23408.86134805867,"y":7710.5316340853315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance2Rate + record.resistance2Rate * record.supportResistanceZone / 2 / 100","id":"e44758af-409b-4797-ac44-0cdc0928dfa4","savedPayload":{"position":{"x":22785.192182154045,"y":7448.98633030049},"targetPosition":{"x":22995.058417247077,"y":7534.577896005389},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e2c53993-70fa-48f0-96b0-3c73a3baa50f","savedPayload":{"position":{"x":22995.058417247077,"y":7534.577896005389},"targetPosition":{"x":23408.86134805867,"y":7710.5316340853315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2881845a-2d94-42f8-bffd-12b8f0674dc6","savedPayload":{"position":{"x":18962.85913736162,"y":16893.250900105755},"targetPosition":{"x":19690.753840141355,"y":17072.520169746942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Resistance Zone 3","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance3Rate - record.resistance3Rate * record.supportResistanceZone / 2 / 100","id":"b863599f-a422-4d49-be0c-5962371d571d","savedPayload":{"position":{"x":22784.889541350585,"y":7955.235426666454},"targetPosition":{"x":22992.714259427165,"y":7848.164701089102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e18fe7d1-bb71-4228-89ad-6eef714ec53f","savedPayload":{"position":{"x":22992.714259427165,"y":7848.164701089102},"targetPosition":{"x":23407.66925211863,"y":7634.397506800638},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance3Rate - record.resistance3Rate * record.supportResistanceZone / 2 / 100","id":"aa5baeac-1910-4f48-a6c2-b3ffb7293d4a","savedPayload":{"position":{"x":22715.915953152733,"y":7746.629091844334},"targetPosition":{"x":22946.83950661652,"y":7709.228064169429},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"30f76ba8-3516-4b19-bb42-ae4613d5ce10","savedPayload":{"position":{"x":22946.83950661652,"y":7709.228064169429},"targetPosition":{"x":23407.66925211863,"y":7634.397506800638},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance3Rate + record.resistance3Rate * record.supportResistanceZone / 2 / 100","id":"a6a1afe8-e380-4979-ba63-703903bc50db","savedPayload":{"position":{"x":22714.89088367613,"y":7527.78430392422},"targetPosition":{"x":22946.22051987807,"y":7563.333574748388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fc07018f-23a9-46dc-bb6a-f6ddac68be6c","savedPayload":{"position":{"x":22946.22051987807,"y":7563.333574748388},"targetPosition":{"x":23407.66925211863,"y":7634.397506800638},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance3Rate + record.resistance3Rate * record.supportResistanceZone / 2 / 100","id":"84cba419-b3e2-4cfc-9c32-69a2a56aa550","savedPayload":{"position":{"x":22782.175807176285,"y":7318.4095252522875},"targetPosition":{"x":22990.88379921562,"y":7423.901820520607},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d4105484-8b89-48f5-af7f-964d2e541120","savedPayload":{"position":{"x":22990.88379921562,"y":7423.901820520607},"targetPosition":{"x":23407.66925211863,"y":7634.397506800638},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a833c73a-2d81-40b3-9d44-3388046804ce","savedPayload":{"position":{"x":19002.271894454723,"y":16775.594400091475},"targetPosition":{"x":19690.753840141355,"y":17072.520169746942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Resistance Zone 4","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance4Rate - record.resistance4Rate * record.supportResistanceZone / 2 / 100","id":"02bf9b17-6651-4e71-bef8-8bb2ba8fe6b3","savedPayload":{"position":{"x":22760.63853600429,"y":7818.66829715428},"targetPosition":{"x":22976.884734423293,"y":7729.635692733591},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"79408eb2-e914-4f85-96c6-0baa918f5f91","savedPayload":{"position":{"x":22976.884734423293,"y":7729.635692733591},"targetPosition":{"x":23408.77496067369,"y":7551.718184325453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance4Rate - record.resistance4Rate * record.supportResistanceZone / 2 / 100","id":"64545435-1cc4-4cd5-9c6e-700f76fb976d","savedPayload":{"position":{"x":22709.752439530548,"y":7604.984747319489},"targetPosition":{"x":22943.009847357313,"y":7587.244392821164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"9479606b-5668-40a4-8e34-40976668e11b","savedPayload":{"position":{"x":22943.009847357313,"y":7587.244392821164},"targetPosition":{"x":23408.77496067369,"y":7551.718184325453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance4Rate + record.resistance4Rate * record.supportResistanceZone / 2 / 100","id":"fc0e0a28-306b-42cc-95b2-d0264ca224b3","savedPayload":{"position":{"x":22727.467592549147,"y":7386.626684131934},"targetPosition":{"x":22954.817619924146,"y":7441.685497548577},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"09f1f62c-723a-4588-ae76-d195aa1cb276","savedPayload":{"position":{"x":22954.817619924146,"y":7441.685497548577},"targetPosition":{"x":23408.77496067369,"y":7551.718184325453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance4Rate + record.resistance4Rate * record.supportResistanceZone / 2 / 100","id":"1a8ba3fb-7c20-4c56-a7e5-e9bb8ab8b00b","savedPayload":{"position":{"x":22812.040808088997,"y":7183.933938536505},"targetPosition":{"x":23011.142225038315,"y":7306.617907795377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"98ef8287-1ef2-498f-ae25-580a148f8fae","savedPayload":{"position":{"x":23011.142225038315,"y":7306.617907795377},"targetPosition":{"x":23408.77496067369,"y":7551.718184325453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"10d84102-de4a-4f5e-b511-8d948b16c186","savedPayload":{"position":{"x":19060.56011244692,"y":16666.105808811222},"targetPosition":{"x":19690.753840141355,"y":17072.520169746942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Resistance Zone 5","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance5Rate - record.resistance5Rate * record.supportResistanceZone / 2 / 100","id":"8fff05a9-9d0e-4dcb-ba56-15e7758ed61e","savedPayload":{"position":{"x":22749.725823178353,"y":7683.988287868161},"targetPosition":{"x":22972.75412937916,"y":7613.623891257932},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8ae90185-2a00-4958-95c1-83aa4b6402ee","savedPayload":{"position":{"x":22972.75412937916,"y":7613.623891257932},"targetPosition":{"x":23418.216861152734,"y":7472.990431882484},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance5Rate - record.resistance5Rate * record.supportResistanceZone / 2 / 100","id":"d1499c5d-5a9b-428a-abfe-d05d946bbfff","savedPayload":{"position":{"x":22717.16302333062,"y":7467.206719885565},"targetPosition":{"x":22951.091709043,"y":7469.098997934359},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"1f76e686-6537-4818-a4c8-f70dc4ec3c4f","savedPayload":{"position":{"x":22951.091709043,"y":7469.098997934359},"targetPosition":{"x":23418.216861152734,"y":7472.990431882484},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.resistance5Rate + record.resistance5Rate * record.supportResistanceZone / 2 / 100","id":"e54f3a16-7835-487d-8b09-6dc517bda1d9","savedPayload":{"position":{"x":22753.366777463107,"y":7250.695078006392},"targetPosition":{"x":22975.21680041965,"y":7324.843873028295},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"72bab256-b619-4bb5-b188-e3da6d412f2f","savedPayload":{"position":{"x":22975.21680041965,"y":7324.843873028295},"targetPosition":{"x":23418.216861152734,"y":7472.990431882484},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.resistance5Rate + record.resistance5Rate * record.supportResistanceZone / 2 / 100","id":"d5530e82-a1fb-4108-ac6e-ada9fe0b161b","savedPayload":{"position":{"x":22854.810826606954,"y":7055.909610455719},"targetPosition":{"x":23042.786687500604,"y":7195.04292493732},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ee66793e-1c2d-4a17-8c0c-f086656eb0a6","savedPayload":{"position":{"x":23042.786687500604,"y":7195.04292493732},"targetPosition":{"x":23418.216861152734,"y":7472.990431882484},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e6120640-850a-4f6f-a55a-b3e7dbca6ab5","savedPayload":{"position":{"x":19134.162744503028,"y":16569.58378324537},"targetPosition":{"x":19690.753840141355,"y":17072.520169746942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Resistance Line 1","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance1Rate > 0","id":"2a6b550a-7631-4e45-b740-9c46586d71a3","savedPayload":{"position":{"x":22864.811602764246,"y":9113.69258275183},"targetPosition":{"x":23407.193956365645,"y":8792.380714747067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"8f2da42d-c563-4db6-b431-78520c3c282e","savedPayload":{"position":{"x":22235.25600240754,"y":9257.398099527572},"targetPosition":{"x":22821.224979386592,"y":9024.88940713732},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"ab5ed6ec-35cf-4709-b14d-548495163c99","savedPayload":{"position":{"x":22821.224979386592,"y":9024.88940713732},"targetPosition":{"x":23407.193956365645,"y":8792.380714747067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 1","id":"366d0b55-988c-4995-8dcb-8738605be64b","savedPayload":{"position":{"x":22792.0668569417,"y":8930.361095864051},"targetPosition":{"x":23407.193956365645,"y":8792.380714747067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 1","id":"2a3a3e15-93dd-43f0-95f7-ae2ed478607f"}}},{"type":"Polygon Vertex","name":"End 1","id":"7f2cb9ed-59bc-4f03-bf33-f34ca52db445","savedPayload":{"position":{"x":22778.055205174427,"y":8832.435249677052},"targetPosition":{"x":23407.193956365645,"y":8792.380714747067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 1","id":"fe77f4a2-627c-4f27-9d4c-2dab9ddd8926"}}}],"id":"0c38b25a-d207-430e-ae5a-9ba55227c974","savedPayload":{"position":{"x":19224.66053077498,"y":16484.275544137872},"targetPosition":{"x":19690.753840141355,"y":17072.520169746942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Line 2","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance2Rate > 0","id":"27b432e9-4988-4457-8e68-13a06a1341fb","savedPayload":{"position":{"x":22801.988328589665,"y":8937.415641950529},"targetPosition":{"x":23386.201768387997,"y":8700.530457150158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.TURQUOISE\"\n }\n}","id":"500b1402-adbe-46d7-9410-92a9cc84b492","savedPayload":{"position":{"x":22158.04614825201,"y":8985.685693475927},"targetPosition":{"x":22772.123958320004,"y":8843.108075313043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"c1565617-e60a-4688-bcaf-061fb5ef8f02","savedPayload":{"position":{"x":22772.123958320004,"y":8843.108075313043},"targetPosition":{"x":23386.201768387997,"y":8700.530457150158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 2","id":"b06bed94-85e8-4405-8372-fa5af8fa10f4","savedPayload":{"position":{"x":22757.380221741623,"y":8745.289774528403},"targetPosition":{"x":23386.201768387997,"y":8700.530457150158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 2","id":"71ddeaf4-849d-4973-9b6a-a2ddcaccb86d"}}},{"type":"Polygon Vertex","name":"End 2","id":"a6ad0c69-98e2-459a-a5e4-28b863e7e679","savedPayload":{"position":{"x":22758.12015858074,"y":8646.369350802252},"targetPosition":{"x":23386.201768387997,"y":8700.530457150158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 2","id":"19746197-9ebc-4af8-b4ba-8217fa0eba77"}}}],"id":"532beef7-8d2e-4899-9c99-850db799d9a2","savedPayload":{"position":{"x":19328.77006452935,"y":16414.69716601755},"targetPosition":{"x":19690.753840141355,"y":17072.520169746942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Line 3","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance3Rate > 0","id":"6532e5e3-4b6f-4f9b-a52f-f42d588109aa","savedPayload":{"position":{"x":22766.170261291874,"y":8753.745068683631},"targetPosition":{"x":23379.16442442569,"y":8606.57819067511},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n }\n}","id":"f0c15419-ec71-4bfd-8be7-14b5f7ab6213","savedPayload":{"position":{"x":22122.226105199596,"y":8705.501381771472},"targetPosition":{"x":22750.695264812643,"y":8656.039786223291},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"3122acb4-11b4-4b42-801d-e6f0f3bc88f5","savedPayload":{"position":{"x":22750.695264812643,"y":8656.039786223291},"targetPosition":{"x":23379.16442442569,"y":8606.57819067511},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 3","id":"86879433-37a4-4d4c-94b2-f56509927833","savedPayload":{"position":{"x":22750.695264812643,"y":8557.11659512693},"targetPosition":{"x":23379.16442442569,"y":8606.57819067511},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 3","id":"febd94d0-09c7-40c5-b7b2-552ca2cca2b9"}}},{"type":"Polygon Vertex","name":"End 3","id":"ced94fbd-8b64-45a4-af9d-fb2366e9c08f","savedPayload":{"position":{"x":22766.170261291874,"y":8459.41131266659},"targetPosition":{"x":23379.16442442569,"y":8606.57819067511},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 3","id":"7003801a-ea76-43e2-a013-72e6d41aff5c"}}}],"id":"9eb7ed64-8225-41de-ab73-3297d19e1529","savedPayload":{"position":{"x":19442.52386268212,"y":16363.729065464266},"targetPosition":{"x":19690.753840141355,"y":17072.520169746942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Line 4","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance4Rate > 0","id":"2c5d8280-e687-4ab6-8dc4-a37d33dac54c","savedPayload":{"position":{"x":22758.132616229323,"y":8566.783963601774},"targetPosition":{"x":23386.21422603658,"y":8512.622857253868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n }\n}","id":"981c71a0-44f8-40a7-935b-de7a0d29c125","savedPayload":{"position":{"x":22128.571132743833,"y":8423.104222497379},"targetPosition":{"x":22757.392679390206,"y":8467.863539875623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"66da2fbe-77f0-47ba-b520-cd646ffbc4bf","savedPayload":{"position":{"x":22757.392679390206,"y":8467.863539875623},"targetPosition":{"x":23386.21422603658,"y":8512.622857253868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 4","id":"2b0a1310-20d6-45cd-a05b-ed8cbddcbb81","savedPayload":{"position":{"x":22772.136415968587,"y":8370.045239090983},"targetPosition":{"x":23386.21422603658,"y":8512.622857253868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 4","id":"12059a23-6280-499c-8ebc-f8c0de0e5647"}}},{"type":"Polygon Vertex","name":"End 4","id":"db596f4f-6410-4250-a837-dad5cd2d61e8","savedPayload":{"position":{"x":22802.000786238248,"y":8275.737672453497},"targetPosition":{"x":23386.21422603658,"y":8512.622857253868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 4","id":"2e5e4668-102d-4d9a-addc-9b154e7889a9"}}}],"id":"b8b29e5a-49aa-45cb-b6f3-0ba78dd97899","savedPayload":{"position":{"x":19562.88057730029,"y":16332.39556288217},"targetPosition":{"x":19690.753840141355,"y":17072.520169746942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Line 5","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance5Rate > 0","id":"d29fe2ec-f038-419b-a308-caa26a5a8185","savedPayload":{"position":{"x":22778.04752793479,"y":8380.707033101417},"targetPosition":{"x":23407.186279126006,"y":8420.761568031401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"2fb5a769-94e1-480d-9e37-e95b3e6d2391","savedPayload":{"position":{"x":22176.93208027812,"y":8144.800805797433},"targetPosition":{"x":22792.059179702064,"y":8282.781186914417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"5c4e3fb7-482b-4830-b279-ce65f5dde542","savedPayload":{"position":{"x":22792.059179702064,"y":8282.781186914417},"targetPosition":{"x":23407.186279126006,"y":8420.761568031401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 5","id":"94bd59ac-0e4f-4f0c-a8fc-98dda2d4f485","savedPayload":{"position":{"x":22821.217302146953,"y":8188.252875641148},"targetPosition":{"x":23407.186279126006,"y":8420.761568031401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 5","id":"1cebdfa8-d6f3-44fb-bf7e-0f8bfaeff946"}}},{"type":"Polygon Vertex","name":"End 5","id":"890c39f7-712c-4b93-849a-cd652f600124","savedPayload":{"position":{"x":22864.803925524608,"y":8099.449700026638},"targetPosition":{"x":23407.186279126006,"y":8420.761568031401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 5","id":"bbc97ad3-5c93-460f-8463-127d21e3dca4"}}}],"id":"0582dc0b-1512-4762-8340-aabeadad6643","savedPayload":{"position":{"x":19686.62084587429,"y":16321.410552443756},"targetPosition":{"x":19690.753840141355,"y":17072.520169746942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Base","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.typeResistance=== 'Resistance'","id":"ea67ee97-0c26-4369-969a-4b207c45acf2","savedPayload":{"position":{"x":24191.602922031503,"y":5819.129353217336},"targetPosition":{"x":24483.424440291477,"y":6704.597702552334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0,\n \"paletteColor\": \"UI_COLOR.DARK\"\n }\n}","id":"65722c8b-1977-4cfa-ba63-c2cc7434891b","savedPayload":{"position":{"x":24354.084253587862,"y":4848.656826210774},"targetPosition":{"x":24479.62593266458,"y":5772.256942090791},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.typeResistance=== 'Resistance'","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.DARK\",\n \"opacity\": 0.5\n}","id":"8322fb8f-d018-4855-a288-20ca625c95a3","savedPayload":{"position":{"x":24714.972711477327,"y":3923.0388259071274},"targetPosition":{"x":24597.33546923093,"y":4847.6180781783405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ad690e4e-7590-4b4d-960e-97510c4fce0d","savedPayload":{"position":{"x":24597.33546923093,"y":4847.6180781783405},"targetPosition":{"x":24479.62593266458,"y":5772.256942090791},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c3e776eb-ac3c-49a1-b8bb-0a3b37dcff10","savedPayload":{"position":{"x":24479.62593266458,"y":5772.256942090791},"targetPosition":{"x":24483.424440291477,"y":6704.597702552334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Base Left","id":"b6a079f5-8719-4beb-93c5-ae45a48f6bc4","savedPayload":{"position":{"x":24767.77117875084,"y":5816.71955401174},"targetPosition":{"x":24483.424440291477,"y":6704.597702552334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Base Left","id":"6e8169a3-28a2-412f-8100-577c4a9a97bb"}}},{"type":"Polygon Vertex","name":"Base Right","id":"d43b33c2-6d6c-4552-85b6-07300acc05c4","savedPayload":{"position":{"x":25028.266184239812,"y":5948.118589747753},"targetPosition":{"x":24483.424440291477,"y":6704.597702552334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Base Right","id":"b23883d4-d592-4d0a-822e-82165e22598f"}}}],"id":"c62d156c-4686-45a4-af42-283999dd1200","savedPayload":{"position":{"x":19810.393665019743,"y":16331.032304645463},"targetPosition":{"x":19690.753840141355,"y":17072.520169746942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Zone 1","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance1Bounce1 > 0","id":"f4fdf8db-0009-4053-acdd-90f790ef2dc1","savedPayload":{"position":{"x":22126.520077981288,"y":6922.547484262857},"targetPosition":{"x":23148.59561429064,"y":7224.691044576978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"678098f3-5628-4c48-baac-daaaa46f7cb6","savedPayload":{"position":{"x":21182.124834266746,"y":6458.342136850457},"targetPosition":{"x":22219.58413413792,"y":6702.400333077423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.resistance1Bounce1 > 1","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"34b995fd-453d-47b9-8967-3d283ce8c5c9","savedPayload":{"position":{"x":20212.699907848608,"y":5984.258872515949},"targetPosition":{"x":21216.09894517732,"y":6343.374970813501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e9625315-0f08-473d-ae16-972cf0dacef6","savedPayload":{"position":{"x":21216.09894517732,"y":6343.374970813501},"targetPosition":{"x":22219.58413413792,"y":6702.400333077423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance1Bounce1 > 2","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"9c07eec3-733b-415a-9eb2-75bdbb926913","savedPayload":{"position":{"x":20305.85622152817,"y":5763.830204708295},"targetPosition":{"x":21262.68746415424,"y":6233.129064676901},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2e9532be-e479-4863-a652-2db78d854596","savedPayload":{"position":{"x":21262.68746415424,"y":6233.129064676901},"targetPosition":{"x":22219.58413413792,"y":6702.400333077423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance1Bounce1 > 3","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"055dcb1d-7351-4348-ba05-d69e35f1e5c9","savedPayload":{"position":{"x":20423.09583989368,"y":5555.294836276061},"targetPosition":{"x":21321.332788649415,"y":6128.817100373193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"13ae1317-69bb-4a8a-aaa0-170868016d4a","savedPayload":{"position":{"x":21321.332788649415,"y":6128.817100373193},"targetPosition":{"x":22219.58413413792,"y":6702.400333077423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance1Bounce1 > 4","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"1274e868-d24c-4722-9cfb-a390e63afea4","savedPayload":{"position":{"x":20562.978552080072,"y":5361.188802447787},"targetPosition":{"x":21391.31657624183,"y":6031.712995051981},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ee88e538-166d-4c03-b284-d2723f8683f0","savedPayload":{"position":{"x":21391.31657624183,"y":6031.712995051981},"targetPosition":{"x":22219.58413413792,"y":6702.400333077423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance1Bounce1 > 5","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"c5639eed-1b4a-4374-a8ad-300810a6da68","savedPayload":{"position":{"x":20723.93264421566,"y":5183.778132681687},"targetPosition":{"x":21471.899548117348,"y":5942.91062813292},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b84e5eee-04d8-4bfe-b252-409df978d9d9","savedPayload":{"position":{"x":21471.899548117348,"y":5942.91062813292},"targetPosition":{"x":22219.58413413792,"y":6702.400333077423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2cd93655-284b-4e59-9959-749211d0c13b","savedPayload":{"position":{"x":22219.58413413792,"y":6702.400333077423},"targetPosition":{"x":23148.59561429064,"y":7224.691044576978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"61265cbf-c690-4531-8e1c-63012f033dec","savedPayload":{"position":{"x":22359.228964981543,"y":6508.605742580075},"targetPosition":{"x":23148.59561429064,"y":7224.691044576978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"0c275c7e-5012-454c-8772-a3c2f1621567"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"d86b1af1-cc3b-4953-8e11-715de1e47305","savedPayload":{"position":{"x":22538.348280724073,"y":6350.890092214581},"targetPosition":{"x":23148.59561429064,"y":7224.691044576978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"e4ca8d91-e86c-4b97-b327-a1a631b28ade"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"0a2d374a-1bef-4db3-9259-5fe2d4a4352f","savedPayload":{"position":{"x":22748.07189873325,"y":6236.992765584912},"targetPosition":{"x":23148.59561429064,"y":7224.691044576978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"e6764b3a-2fdb-4df1-abde-1f6e9fca5a27"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"f22ffe77-c62c-4cc1-9c27-35e5a3831104","savedPayload":{"position":{"x":22977.97454603257,"y":6172.593292686594},"targetPosition":{"x":23148.59561429064,"y":7224.691044576978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"1614af55-2a6c-40a5-9339-958d2944f719"}}}],"id":"ca9666cf-e40b-46af-902d-050c1956b702","savedPayload":{"position":{"x":19930.85021059316,"y":16360.908150800295},"targetPosition":{"x":19690.753840141355,"y":17072.520169746942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Zone 2","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance2Bounce1 > 0","id":"8e52a153-4da1-4d25-9070-a9cab7901642","savedPayload":{"position":{"x":22354.54562109447,"y":6647.986103323697},"targetPosition":{"x":23312.847617603806,"y":7114.216609131299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"0d2e9e03-1e4b-406a-8807-a56b112e4bf9","savedPayload":{"position":{"x":21499.471658606635,"y":6034.690481797106},"targetPosition":{"x":22482.521586109408,"y":6446.161539354873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.resistance2Bounce1 > 1","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"909e78e1-4f46-48a0-b49f-d448973a5321","savedPayload":{"position":{"x":20621.372636006272,"y":5407.529901976444},"targetPosition":{"x":21551.892854788995,"y":5926.883591794229},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"eb9bc072-5c45-4901-8cce-f2c26a2f4505","savedPayload":{"position":{"x":21551.892854788995,"y":5926.883591794229},"targetPosition":{"x":22482.521586109408,"y":6446.161539354873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance2Bounce1 > 2","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"ca020c35-f86f-4b23-a952-ac6dbb8b1826","savedPayload":{"position":{"x":20749.53330173767,"y":5205.452137311162},"targetPosition":{"x":21615.988870242454,"y":5825.814642263096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b5c6aa09-4166-4c94-9967-b91524c21464","savedPayload":{"position":{"x":21615.988870242454,"y":5825.814642263096},"targetPosition":{"x":22482.521586109408,"y":6446.161539354873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance2Bounce1 > 3","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"36071756-7d18-4da4-a70c-51f4c463ebba","savedPayload":{"position":{"x":20899.486426247575,"y":5019.07054065306},"targetPosition":{"x":21690.99845798183,"y":5732.583250143839},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fa8a71d2-4cc4-4fbe-a186-dcae6715bdae","savedPayload":{"position":{"x":21690.99845798183,"y":5732.583250143839},"targetPosition":{"x":22482.521586109408,"y":6446.161539354873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance2Bounce1 > 4","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"1fd4231d-7109-4078-a500-e8392f75f443","savedPayload":{"position":{"x":21069.395165888003,"y":4850.650240258045},"targetPosition":{"x":21776.00650922228,"y":5648.327253367198},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"44d57144-5dce-4b2a-aca2-2a2fb6cce4f5","savedPayload":{"position":{"x":21776.00650922228,"y":5648.327253367198},"targetPosition":{"x":22482.521586109408,"y":6446.161539354873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance2Bounce1 > 5","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"dc876bc9-5380-4127-9091-b9d1855127e2","savedPayload":{"position":{"x":21257.36676087108,"y":4702.14424404338},"targetPosition":{"x":21870.105774485884,"y":5574.001408957016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7ec7f8db-d303-479e-970d-11b1c6b585f8","savedPayload":{"position":{"x":21870.105774485884,"y":5574.001408957016},"targetPosition":{"x":22482.521586109408,"y":6446.161539354873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6f9d86e1-164c-4ea4-992d-2917fda244ac","savedPayload":{"position":{"x":22482.521586109408,"y":6446.161539354873},"targetPosition":{"x":23312.847617603806,"y":7114.216609131299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"496ec3db-d47e-478d-be79-a266a0f1ee4b","savedPayload":{"position":{"x":22652.196138281863,"y":6278.015219230152},"targetPosition":{"x":23312.847617603806,"y":7114.216609131299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"055d64bb-b823-4593-b606-4f0a35ac620a"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"92e88ed6-dfb5-4d69-b739-2596eabe9562","savedPayload":{"position":{"x":22854.815656749695,"y":6151.944065451095},"targetPosition":{"x":23312.847617603806,"y":7114.216609131299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"6d8e2772-7475-406d-b048-4599982d04e2"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"06940067-8e78-4652-80bb-53a20db38d36","savedPayload":{"position":{"x":23080.407901379007,"y":6074.126758253147},"targetPosition":{"x":23312.847617603806,"y":7114.216609131299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"e2c53993-70fa-48f0-96b0-3c73a3baa50f"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"44754c48-5c48-4911-8782-729f29d1b01e","savedPayload":{"position":{"x":23317.44989093582,"y":6048.450444948178},"targetPosition":{"x":23312.847617603806,"y":7114.216609131299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"d3cc8bbf-1f3e-49bc-9331-5e498064cb88"}}}],"id":"3032c972-5916-496b-9aec-fb9f49a9237f","savedPayload":{"position":{"x":20044.71918321386,"y":16410.214310478765},"targetPosition":{"x":19690.753840141355,"y":17072.520169746942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Zone 3","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance3Bounce1 > 0","id":"1c336053-c230-4ad3-ab58-4b85d364a707","savedPayload":{"position":{"x":22601.15827332604,"y":6416.136794417079},"targetPosition":{"x":23469.574526589204,"y":7033.7240036098765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"e7bdfc4c-a887-4a47-9402-e3be2aa390fa","savedPayload":{"position":{"x":21858.73183907116,"y":5670.503495015667},"targetPosition":{"x":22760.565332323335,"y":6238.145869042005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.resistance3Bounce1 > 1","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"65f80810-1132-493b-86c5-b7ac04fb2e1b","savedPayload":{"position":{"x":21095.918980336704,"y":4907.393621465767},"targetPosition":{"x":21928.176585145127,"y":5572.8001232418255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"af73149e-c55e-4cd1-8008-a4a0e0dc4bce","savedPayload":{"position":{"x":21928.176585145127,"y":5572.8001232418255},"targetPosition":{"x":22760.565332323335,"y":6238.145869042005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance3Bounce1 > 2","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"1fe17781-8019-412d-bce7-e4015502c1dc","savedPayload":{"position":{"x":21255.58495219887,"y":4729.175731484268},"targetPosition":{"x":22008.031329250207,"y":5483.66307563011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"66a99f55-071a-4c17-8a4c-0a3ca27b49c5","savedPayload":{"position":{"x":22008.031329250207,"y":5483.66307563011},"targetPosition":{"x":22760.565332323335,"y":6238.145869042005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance3Bounce1 > 3","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"68425fb0-290a-4f0a-bc37-0afacae35c6f","savedPayload":{"position":{"x":21434.16005420964,"y":4570.019167860538},"targetPosition":{"x":22097.35866987255,"y":5404.05024496836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a8b5a03e-3f6c-4e73-893f-a2ead5f90bc4","savedPayload":{"position":{"x":22097.35866987255,"y":5404.05024496836},"targetPosition":{"x":22760.565332323335,"y":6238.145869042005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance3Bounce1 > 4","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"3fa93e36-a9e8-49db-830d-bdceda8dd236","savedPayload":{"position":{"x":21629.460977466326,"y":4431.873573377781},"targetPosition":{"x":22195.075364631026,"y":5334.941866991743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"78bcd2f8-69b6-46ae-a646-d9584ec851f6","savedPayload":{"position":{"x":22195.075364631026,"y":5334.941866991743},"targetPosition":{"x":22760.565332323335,"y":6238.145869042005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance3Bounce1 > 5","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"2d5b8980-b779-4c09-a2ba-eec5e1ec4ac3","savedPayload":{"position":{"x":21839.327086063444,"y":4316.325982698348},"targetPosition":{"x":22300.119719677936,"y":5277.119250075863},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8aaddafc-5dcf-43a1-a4ad-2c2ecd043e2f","savedPayload":{"position":{"x":22300.119719677936,"y":5277.119250075863},"targetPosition":{"x":22760.565332323335,"y":6238.145869042005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4b1db531-9768-4f0c-85e9-6f6f03685281","savedPayload":{"position":{"x":22760.565332323335,"y":6238.145869042005},"targetPosition":{"x":23469.574526589204,"y":7033.7240036098765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"a5770e2d-61db-4f56-ab84-0892dad59567","savedPayload":{"position":{"x":22955.626480439198,"y":6100.220415431574},"targetPosition":{"x":23469.574526589204,"y":7033.7240036098765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"e18fe7d1-bb71-4228-89ad-6eef714ec53f"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"c122c5b3-0024-426a-9965-e1e78daec055","savedPayload":{"position":{"x":23176.220881274457,"y":6009.222761296894},"targetPosition":{"x":23469.574526589204,"y":7033.7240036098765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"30f76ba8-3516-4b19-bb42-ae4613d5ce10"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"66a2a41d-c2d3-424b-a5ad-cf339cb4d20f","savedPayload":{"position":{"x":23411.532108671603,"y":5969.600686490271},"targetPosition":{"x":23469.574526589204,"y":7033.7240036098765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"d4105484-8b89-48f5-af7f-964d2e541120"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"c050df08-5b55-49ec-91e2-19bc9e16fe91","savedPayload":{"position":{"x":23649.544498496285,"y":5983.342480479015},"targetPosition":{"x":23469.574526589204,"y":7033.7240036098765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"fc07018f-23a9-46dc-bb6a-f6ddac68be6c"}}}],"id":"753efd9a-f48d-4826-89ac-7f046667a26c","savedPayload":{"position":{"x":20148.895428288764,"y":16477.60584884328},"targetPosition":{"x":19690.753840141355,"y":17072.520169746942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Zone 4","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance4Bounce1 > 0","id":"0931fce8-e103-4a66-b479-207e0662359e","savedPayload":{"position":{"x":22882.748431252185,"y":6227.6622519396005},"targetPosition":{"x":23637.657792833186,"y":6979.804259330142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"03da2d32-5673-4d64-b99a-1b7dd6df2fe6","savedPayload":{"position":{"x":22273.17086677996,"y":5369.959548488604},"targetPosition":{"x":23069.260819523246,"y":6078.339997390203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.resistance4Bounce1 > 1","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"6913a704-6ff8-4978-bba2-2a0acf0d8672","savedPayload":{"position":{"x":21646.370885750715,"y":4491.657519764404},"targetPosition":{"x":22357.746270608353,"y":5285.017920918324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aad10167-a2b9-4055-90a6-e094f118e5d6","savedPayload":{"position":{"x":22357.746270608353,"y":5285.017920918324},"targetPosition":{"x":23069.260819523246,"y":6078.339997390203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance4Bounce1 > 2","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"b930f4ad-fcba-439d-864d-20082c52ed4e","savedPayload":{"position":{"x":21833.196251644957,"y":4342.14580080979},"targetPosition":{"x":22451.18303668134,"y":5210.23974876725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7cc16cba-79d9-4ebb-af5e-2e9f19e4faaa","savedPayload":{"position":{"x":22451.18303668134,"y":5210.23974876725},"targetPosition":{"x":23069.260819523246,"y":6078.339997390203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance4Bounce1 > 3","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"9532bb2f-ad66-44dd-a5e4-58848c302734","savedPayload":{"position":{"x":22035.540147065665,"y":4214.555715935624},"targetPosition":{"x":22552.400551126004,"y":5146.41799388178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ce42776f-7050-49de-9d8c-9a616656e668","savedPayload":{"position":{"x":22552.400551126004,"y":5146.41799388178},"targetPosition":{"x":23069.260819523246,"y":6078.339997390203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance4Bounce1 > 4","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"342c81eb-3f45-4f5c-afdf-51dc77db3926","savedPayload":{"position":{"x":22250.919519456,"y":4110.4339732998205},"targetPosition":{"x":22660.15765302608,"y":5094.329276049995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"970ed430-5c9c-4d26-bb87-a8a5a8dc0498","savedPayload":{"position":{"x":22660.15765302608,"y":5094.329276049995},"targetPosition":{"x":23069.260819523246,"y":6078.339997390203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance4Bounce1 > 5","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"d60fc74e-067a-4b1a-80f9-8f298c70c256","savedPayload":{"position":{"x":22476.927126874518,"y":4031.008043976099},"targetPosition":{"x":22773.291790602685,"y":5054.584630818643},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d647e933-5853-4c85-9f38-7734330f63bf","savedPayload":{"position":{"x":22773.291790602685,"y":5054.584630818643},"targetPosition":{"x":23069.260819523246,"y":6078.339997390203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d181f92f-7c33-429e-9f32-13afcadaac04","savedPayload":{"position":{"x":23069.260819523246,"y":6078.339997390203},"targetPosition":{"x":23637.657792833186,"y":6979.804259330142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"9edd9a7b-2d22-45b3-b481-b8ac59d25f32","savedPayload":{"position":{"x":23284.39015695967,"y":5974.395521857387},"targetPosition":{"x":23637.657792833186,"y":6979.804259330142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"79408eb2-e914-4f85-96c6-0baa918f5f91"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"40a3e87b-ccb4-4c11-9553-a1934ffe3397","savedPayload":{"position":{"x":23516.95661628582,"y":5920.947070989743},"targetPosition":{"x":23637.657792833186,"y":6979.804259330142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"9479606b-5668-40a4-8e34-40976668e11b"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"d985e769-5063-49f1-825a-8c469bebb1fc","savedPayload":{"position":{"x":23755.273708798923,"y":5920.600344385861},"targetPosition":{"x":23637.657792833186,"y":6979.804259330142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"98ef8287-1ef2-498f-ae25-580a148f8fae"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"3d630c8d-3820-4190-adcf-cc372272af3f","savedPayload":{"position":{"x":23988.089125331353,"y":5973.382353530127},"targetPosition":{"x":23637.657792833186,"y":6979.804259330142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"09f1f62c-723a-4588-ae76-d195aa1cb276"}}}],"id":"0fb57b23-fb5d-429c-bc75-84008becc00e","savedPayload":{"position":{"x":20240.560538637612,"y":16561.216305017566},"targetPosition":{"x":19690.753840141355,"y":17072.520169746942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Resistance Zone 5","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.resistance5Bounce1 > 0","id":"082cf5a1-8c77-42c1-a19e-def34f93c0c3","savedPayload":{"position":{"x":20629.97388834997,"y":15984.3660015995},"targetPosition":{"x":20321.2596124104,"y":16666.180852926285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"50abec57-e340-4709-9f4c-9fae0b30a09a","savedPayload":{"position":{"x":20603.702791903164,"y":15736.51081106629},"targetPosition":{"x":20774.167850990612,"y":16070.361636063233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.resistance5Bounce1 > 1","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"15f87ebf-d18f-4e4f-93aa-545c0bbf36ab","savedPayload":{"position":{"x":20757.151738985533,"y":15320.73556055138},"targetPosition":{"x":20765.73502667427,"y":15695.420003299518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"468bd43d-c2d6-4597-b1a5-6a401b0fe336","savedPayload":{"position":{"x":20765.522896663184,"y":15695.57702975171},"targetPosition":{"x":20774.167850990612,"y":16070.361636063233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance5Bounce1 > 2","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"2a0d3dfc-d790-4eb4-9951-389ad56d9a10","savedPayload":{"position":{"x":21083.776857884786,"y":15387.400334653941},"targetPosition":{"x":20929.069442720658,"y":15728.762623389139},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6247696c-f48e-41fb-aef2-e051ead37498","savedPayload":{"position":{"x":20928.857257654086,"y":15728.919652962963},"targetPosition":{"x":20774.167850990612,"y":16070.361636063233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance5Bounce1 > 3","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"c4c3fb3e-85a5-4f01-ad3f-b86d52b965b3","savedPayload":{"position":{"x":21349.473669233244,"y":15589.35586522555},"targetPosition":{"x":21061.938807742266,"y":15829.753939215681},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6bc50b65-7c74-440e-8a08-e1d28540dff8","savedPayload":{"position":{"x":21061.72658823847,"y":15829.910956852611},"targetPosition":{"x":20774.167850990612,"y":16070.361636063233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance5Bounce1 > 4","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"1ba3d543-f241-4ce5-85f1-98579b075881","savedPayload":{"position":{"x":21501.00991652822,"y":15886.75041739805},"targetPosition":{"x":21137.639282634922,"y":15978.550452292608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"edbd4422-89b8-4074-8ea5-994d62142496","savedPayload":{"position":{"x":21137.639282634922,"y":15978.550452292608},"targetPosition":{"x":20774.167850990612,"y":16070.361636063233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.resistance5Bounce1 > 5","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"d91e1d41-dcc5-4992-aff7-eba6f8aae36a","savedPayload":{"position":{"x":21508.753100059323,"y":16220.043267975685},"targetPosition":{"x":21141.517571973312,"y":16145.24052860987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b46b6072-5682-463b-abec-ba1b8433d5c1","savedPayload":{"position":{"x":21141.517571973312,"y":16145.24052860987},"targetPosition":{"x":20774.167850990612,"y":16070.361636063233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2db093f9-9a3d-4633-afc3-47d7b7a1ba43","savedPayload":{"position":{"x":20774.167850990612,"y":16070.361636063233},"targetPosition":{"x":20321.2596124104,"y":16666.180852926285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"9b24e6a9-06da-4deb-8710-91d5bd430b2c","savedPayload":{"position":{"x":20895.525564722666,"y":16186.22488480235},"targetPosition":{"x":20321.2596124104,"y":16666.180852926285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"8ae90185-2a00-4958-95c1-83aa4b6402ee"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"31685577-64d9-4165-8f22-9ee5687950d5","savedPayload":{"position":{"x":20988.042429447127,"y":16326.108850931108},"targetPosition":{"x":20321.2596124104,"y":16666.180852926285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"1f76e686-6537-4818-a4c8-f70dc4ec3c4f"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"60b0dc5b-992a-4c56-baed-99f61db77df2","savedPayload":{"position":{"x":21047.090193496795,"y":16482.96811277562},"targetPosition":{"x":20321.2596124104,"y":16666.180852926285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"ee66793e-1c2d-4a17-8c0c-f086656eb0a6"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"3381e89f-ca2d-4f2a-808d-6dd705b6da98","savedPayload":{"position":{"x":21069.707804954687,"y":16649.11664831077},"targetPosition":{"x":20321.2596124104,"y":16666.180852926285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"72bab256-b619-4bb5-b188-e3da6d412f2f"}}}],"id":"550e31bb-a95f-4fad-bfbb-b42aae7dc5d3","savedPayload":{"position":{"x":20321.2596124104,"y":16666.180852926285},"targetPosition":{"x":19690.753840141355,"y":17072.520169746942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"706e4ed7-a497-41a4-a9b0-28f07c4c3b69","savedPayload":{"position":{"x":19690.753840141355,"y":17072.520169746942},"targetPosition":{"x":19994.96192255288,"y":17756.278712918516},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Resistance Bounces","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Level 1 ZONE","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance1Bounce1","id":"19e11730-5eb7-4185-8d37-0ff69d6124ad","savedPayload":{"position":{"x":24787.98324380965,"y":6787.553294432173},"targetPosition":{"x":24930.845152383063,"y":6972.600687194404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"efea3cfd-0f4a-4ae0-9370-33474500839b","savedPayload":{"position":{"x":24930.845152383063,"y":6972.600687194404},"targetPosition":{"x":25502.29278667671,"y":7712.790258243326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ 2 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance1Bounce2","id":"271bbb18-0632-42ad-82c4-c4212c705df2","savedPayload":{"position":{"x":24950.01449391244,"y":6682.600834120359},"targetPosition":{"x":25060.470152465296,"y":6888.638718944952},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"928c418e-3c43-4207-b50d-23bad01797e1","savedPayload":{"position":{"x":25060.470152465296,"y":6888.638718944952},"targetPosition":{"x":25502.29278667671,"y":7712.790258243326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ 3 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance1Bounce3","id":"a8976927-0aa4-40ea-86d7-027862c25e8e","savedPayload":{"position":{"x":25127.110456159782,"y":6605.749255795217},"targetPosition":{"x":25202.146922263168,"y":6827.157456284839},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"fa920c04-f22d-4664-ba32-da5b20c08547","savedPayload":{"position":{"x":25202.146922263168,"y":6827.157456284839},"targetPosition":{"x":25502.29278667671,"y":7712.790258243326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ 5 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance1Bounce5","id":"20cbe22e-edd4-4907-97a7-845941d2c1dd","savedPayload":{"position":{"x":25314.44041435628,"y":6559.094870176349},"targetPosition":{"x":25352.010888820365,"y":6789.833947789744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"af681228-ea92-40fa-ad2b-52dd554054e4","savedPayload":{"position":{"x":25352.010888820365,"y":6789.833947789744},"targetPosition":{"x":25502.29278667671,"y":7712.790258243326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ 10 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance1Bounce10","id":"7763bf76-320a-46eb-b178-96d26ce2397a","savedPayload":{"position":{"x":25506.894495575092,"y":6543.910287284528},"targetPosition":{"x":25505.974153795414,"y":6777.686281476287},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"b51a6189-7b10-413f-b7ac-774c1d3101b0","savedPayload":{"position":{"x":25505.974153795414,"y":6777.686281476287},"targetPosition":{"x":25502.29278667671,"y":7712.790258243326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ All","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance1BounceAll","id":"485706b2-81af-4cea-8073-be49adbfb553","savedPayload":{"position":{"x":25699.223054170918,"y":6560.60970295779},"targetPosition":{"x":25659.837000672076,"y":6791.045814014898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"696352b4-4de4-42a0-9262-cc44f98ad112","savedPayload":{"position":{"x":25659.837000672076,"y":6791.045814014898},"targetPosition":{"x":25502.29278667671,"y":7712.790258243326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 ZONE","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance2Bounce1","id":"5b9eb49c-20c0-4635-90b4-f67412864b48","savedPayload":{"position":{"x":25886.179868428397,"y":6608.737600668696},"targetPosition":{"x":25809.40245207806,"y":6829.548132183622},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"33f2c959-9c62-4372-b925-a4cb4caed593","savedPayload":{"position":{"x":25809.40245207806,"y":6829.548132183622},"targetPosition":{"x":25502.29278667671,"y":7712.790258243326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ 2 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance2Bounce2","id":"3e974257-e6e9-4b40-b1df-24c9ecc00ad1","savedPayload":{"position":{"x":26062.66524381462,"y":6686.9811768277605},"targetPosition":{"x":25950.590752387037,"y":6892.142993110873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"0b9de83a-dc2c-4031-a516-4410130e45e4","savedPayload":{"position":{"x":25950.590752387037,"y":6892.142993110873},"targetPosition":{"x":25502.29278667671,"y":7712.790258243326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ 3 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance2Bounce3","id":"3c98c74a-5f60-4493-9c7d-398b6c84ce7d","savedPayload":{"position":{"x":26223.865119352096,"y":6793.206150643142},"targetPosition":{"x":26079.55065281702,"y":6977.122972163179},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"e318ca5e-f179-42c4-a81e-d267697a9d4f","savedPayload":{"position":{"x":26079.55065281702,"y":6977.122972163179},"targetPosition":{"x":25502.29278667671,"y":7712.790258243326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ 5 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance2Bounce5","id":"79505072-1808-46e6-95be-3676d263ade3","savedPayload":{"position":{"x":26365.38238265287,"y":6924.5149817369975},"targetPosition":{"x":26192.76446345764,"y":7082.170037038263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"41586c08-f8d7-4786-8659-fdd065c250f1","savedPayload":{"position":{"x":26192.76446345764,"y":7082.170037038263},"targetPosition":{"x":25502.29278667671,"y":7712.790258243326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ 10 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance2Bounce10","id":"506022c0-8f3e-48c2-a0b6-8f1dc42f31c1","savedPayload":{"position":{"x":26483.35681168208,"y":7077.325907493664},"targetPosition":{"x":26287.144006681006,"y":7204.4187776435965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"4e44fa84-0ff5-414c-ba9c-37444ff4c34b","savedPayload":{"position":{"x":26287.144006681006,"y":7204.4187776435965},"targetPosition":{"x":25502.29278667671,"y":7712.790258243326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ All","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance2BounceAll","id":"3267f58b-c446-4ca9-a0c1-614b28dd45da","savedPayload":{"position":{"x":26574.57037155218,"y":7247.470644206852},"targetPosition":{"x":26360.11485457709,"y":7340.534567014147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"1a91ff9b-6df8-4e5a-8369-f962e2cf0939","savedPayload":{"position":{"x":26360.11485457709,"y":7340.534567014147},"targetPosition":{"x":25502.29278667671,"y":7712.790258243326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 ZONE","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance3Bounce1","id":"b8fefe16-88c8-46c7-aff6-f1f6a82a2235","savedPayload":{"position":{"x":26636.534994125926,"y":7430.30808699325},"targetPosition":{"x":26409.68655263608,"y":7486.804521243265},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"82c0551b-691c-4d7f-8380-9dcab27af775","savedPayload":{"position":{"x":26409.68655263608,"y":7486.804521243265},"targetPosition":{"x":25502.29278667671,"y":7712.790258243326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ 2 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance3Bounce2","id":"c750976a-b090-4018-98c4-5b435b20586c","savedPayload":{"position":{"x":26667.560446029216,"y":7620.850907035288},"targetPosition":{"x":26434.506914158716,"y":7639.238777276896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"726070ae-bc63-4509-a421-164dfb43a1ec","savedPayload":{"position":{"x":26434.506914158716,"y":7639.238777276896},"targetPosition":{"x":25502.29278667671,"y":7712.790258243326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ 3 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance3Bounce3","id":"69d28461-7ed2-448f-a240-5bcbe67477d4","savedPayload":{"position":{"x":26666.80043381145,"y":7813.901592910283},"targetPosition":{"x":26433.898904384503,"y":7793.679325976892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"07b0eac7-9674-4894-813b-6750063b7c77","savedPayload":{"position":{"x":26433.898904384503,"y":7793.679325976892},"targetPosition":{"x":25502.29278667671,"y":7712.790258243326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ 5 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance3Bounce5","id":"67145f61-12a8-4ebd-a4c3-4ea001b8d0e8","savedPayload":{"position":{"x":26634.275688624726,"y":8004.194225153138},"targetPosition":{"x":26407.879108235124,"y":7945.913431771176},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"1a5e3bc0-ea93-49fd-a4e3-47734fd92d8a","savedPayload":{"position":{"x":26407.879108235124,"y":7945.913431771176},"targetPosition":{"x":25502.29278667671,"y":7712.790258243326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ 10 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance3Bounce10","id":"cd167fdb-412f-4319-b2e6-9f181d0d8255","savedPayload":{"position":{"x":26570.87340073205,"y":8186.53811681214},"targetPosition":{"x":26357.157277920982,"y":8091.788545098378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"6064d4e0-e627-4f14-8d25-9f7634703aa2","savedPayload":{"position":{"x":26357.157277920982,"y":8091.788545098378},"targetPosition":{"x":25502.29278667671,"y":7712.790258243326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ All","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance3BounceAll","id":"0b609743-af25-4879-af19-a29fe6b69c70","savedPayload":{"position":{"x":26478.32301926971,"y":8355.959401857885},"targetPosition":{"x":26283.116972751108,"y":8227.325573134973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"04d4d459-e942-407a-9fdf-7a010a610e3a","savedPayload":{"position":{"x":26283.116972751108,"y":8227.325573134973},"targetPosition":{"x":25502.29278667671,"y":7712.790258243326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ae66154f-2772-495c-a77b-1989dba9a3e7","savedPayload":{"position":{"x":20099.102107421048,"y":17267.995744491647},"targetPosition":{"x":19994.96192255288,"y":17756.278712918516},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Resistance Levels","config":"{ \n\"codeName\": \"Resistances Rates & Periods\"\n}","panelData":[{"type":"Panel Data","name":"Rate 1","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance1Rate","id":"bc06940a-6869-473e-9c2b-51e2c842595d","savedPayload":{"position":{"x":23400.652480641485,"y":6167.808546951855},"targetPosition":{"x":24063.92851230107,"y":6821.980888849994},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6128b932-f039-4825-aff3-9b000b167e1b","savedPayload":{"position":{"x":24063.92851230107,"y":6821.980888849994},"targetPosition":{"x":24727.524656551253,"y":7475.910371957571},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 1","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance1Period","id":"c32e2d59-7d5b-49b7-b094-4d3cb9110cf0","savedPayload":{"position":{"x":23600.623058144225,"y":5992.027181639252},"targetPosition":{"x":24163.983754612833,"y":6734.001139905176},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"99549259-ee7d-4cc2-9539-4e6fc71685fe","savedPayload":{"position":{"x":24163.983754612833,"y":6734.001139905176},"targetPosition":{"x":24727.524656551253,"y":7475.910371957571},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate 2","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance2Rate","id":"a6a4f0a8-8c28-4044-8a6c-5d4570b7e2d4","savedPayload":{"position":{"x":23823.411376922722,"y":5846.65111826482},"targetPosition":{"x":24275.409365063173,"y":6661.281822478833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fdb40161-0479-4dc2-8597-6a07de70a255","savedPayload":{"position":{"x":24275.409365063173,"y":6661.281822478833},"targetPosition":{"x":24727.524656551253,"y":7475.910371957571},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 2","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance2Period","id":"7db005db-700c-4b6c-8778-754f72c74872","savedPayload":{"position":{"x":24064.573731892586,"y":5734.498572286655},"targetPosition":{"x":24396.025541122286,"y":6605.1846371404645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c2ae4875-3ec7-43a4-903d-3e60f9c44e97","savedPayload":{"position":{"x":24396.025541122286,"y":6605.1846371404645},"targetPosition":{"x":24727.524656551253,"y":7475.910371957571},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate 3","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance3Rate","id":"d845f56a-ff31-412a-8a32-0b579d044f09","savedPayload":{"position":{"x":24319.263372448277,"y":5657.815109802395},"targetPosition":{"x":24523.381822744628,"y":6566.839141955126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"098554ac-043a-43c1-a87c-09bec4bbd3af","savedPayload":{"position":{"x":24523.381822744628,"y":6566.839141955126},"targetPosition":{"x":24727.524656551253,"y":7475.910371957571},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 3","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance3Period","id":"92d8b4e1-da71-47b1-9501-e693f9e76290","savedPayload":{"position":{"x":24582.2716847018,"y":5618.177153296828},"targetPosition":{"x":24654.89529413411,"y":6547.016766522994},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bb93a05d-7b62-4a48-9fbd-e6f47a8bd962","savedPayload":{"position":{"x":24654.89529413411,"y":6547.016766522994},"targetPosition":{"x":24727.524656551253,"y":7475.910371957571},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate 4","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance4Rate","id":"654cbecf-716f-4df3-a49a-816c0607ea25","savedPayload":{"position":{"x":24847.629016182702,"y":5616.382559126916},"targetPosition":{"x":24787.60596027019,"y":6546.119957006159},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dfb65955-2b62-485a-adc3-78dab8ed4602","savedPayload":{"position":{"x":24787.60596027019,"y":6546.119957006159},"targetPosition":{"x":24727.524656551253,"y":7475.910371957571},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 4","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance4Period","id":"32e7a536-bc8a-4e1d-b5ae-2f495604218e","savedPayload":{"position":{"x":25111.152564143515,"y":5652.46980035962},"targetPosition":{"x":24919.39746555529,"y":6564.172893159583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c5d75ff9-cee7-4d53-ac2c-81c6f5ee5f28","savedPayload":{"position":{"x":24919.39746555529,"y":6564.172893159583},"targetPosition":{"x":24727.524656551253,"y":7475.910371957571},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate 5","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance5Rate","id":"f4ba1f5e-7fc6-4afa-8cc9-7588c9dd63eb","savedPayload":{"position":{"x":25366.893389800298,"y":5725.719396054287},"targetPosition":{"x":25047.307109085836,"y":6600.817669168045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"57a7830b-b73c-4332-81d2-8fd13a6f2666","savedPayload":{"position":{"x":25047.307109085836,"y":6600.817669168045},"targetPosition":{"x":24727.524656551253,"y":7475.910371957571},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 5","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.resistance5Period","id":"aa5f5bdc-b7c9-4480-a31a-aecd9d050335","savedPayload":{"position":{"x":25609.79781804385,"y":5834.74460655656},"targetPosition":{"x":25168.854623729858,"y":6655.392358358297},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"94b8ef36-ab61-481b-94e2-59c12afa224a","savedPayload":{"position":{"x":25168.854623729858,"y":6655.392358358297},"targetPosition":{"x":24727.524656551253,"y":7475.910371957571},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dfd9d091-e377-4ece-be8c-5916271e161b","savedPayload":{"position":{"x":20366.33263212541,"y":17422.250302163462},"targetPosition":{"x":19994.96192255288,"y":17756.278712918516},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Resistance Zone Sizes","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Zone * 1","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone","id":"d6cb0538-10ab-4849-8966-1e5e4071140e","savedPayload":{"position":{"x":25783.427513582068,"y":9351.469501150506},"targetPosition":{"x":25667.629287811484,"y":9334.31966127461},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"65b668fb-93ae-465b-b8cd-4bb809d1133b","savedPayload":{"position":{"x":25667.629287811484,"y":9334.31966127461},"targetPosition":{"x":25206.325005047252,"y":9265.159200410752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Zone * 2","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone * 2","id":"0b1d7b11-e52c-4174-bdf1-7073e0ca3cdd","savedPayload":{"position":{"x":25662.671470668553,"y":9628.74958976385},"targetPosition":{"x":25571.074104613337,"y":9555.852901839355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"4c85c218-3b93-4066-9f5a-502c6185f65b","savedPayload":{"position":{"x":25571.074104613337,"y":9555.852901839355},"targetPosition":{"x":25206.325005047252,"y":9265.159200410752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Zone * 3","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone * 3","id":"a736e939-3c77-474a-811a-5415d69645d2","savedPayload":{"position":{"x":25419.51442831306,"y":9808.306272699123},"targetPosition":{"x":25376.737486172922,"y":9699.327628552763},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"3207cf58-21a5-46a5-859b-09097ae163cc","savedPayload":{"position":{"x":25376.737486172922,"y":9699.327628552763},"targetPosition":{"x":25206.325005047252,"y":9265.159200410752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Zone * 5","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone * 5","id":"29bf1a3e-b2a3-4f4d-aa89-cb399a82b956","savedPayload":{"position":{"x":25119.810978565438,"y":9842.11189533685},"targetPosition":{"x":25137.01768938619,"y":9726.35269577409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"4c83cdb9-4a58-455f-ac1a-f945a002d59d","savedPayload":{"position":{"x":25137.01768938619,"y":9726.35269577409},"targetPosition":{"x":25206.325005047252,"y":9265.159200410752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Zone * 10","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone * 10","id":"3d9c734f-8270-4a2e-9bc8-a2b44ba14c67","savedPayload":{"position":{"x":24842.798801719404,"y":9720.951885142826},"targetPosition":{"x":24915.59675792558,"y":9629.62527330801},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"13dac5fd-938e-4c10-a9bc-3a81bfa60c4f","savedPayload":{"position":{"x":24915.59675792558,"y":9629.62527330801},"targetPosition":{"x":25206.325005047252,"y":9265.159200410752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5341a87b-52b4-455d-b8f6-d1cbc4102fb1","savedPayload":{"position":{"x":20491.852482710914,"y":17704.216226129145},"targetPosition":{"x":19994.96192255288,"y":17756.278712918516},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"156b4fa7-7f8f-4464-8ddb-6eb6123bc5c3","savedPayload":{"position":{"x":19994.96192255288,"y":17756.278712918516},"targetPosition":{"x":19744.882151971833,"y":18189.01488977119},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Supports","config":"{ \n\"codeName\": \"Resistances-And-Supports\",\n\"icon\": \"layer-support\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"Base Support","points":[{"type":"Point","name":"Base Left","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin - (record.end - record.begin)\ny = record.rateSupport","id":"8bb830a6-b8f7-45c5-9f5e-b32b13680bff","savedPayload":{"position":{"x":22003.525731022088,"y":9746.793231879943},"targetPosition":{"x":22779.489251153667,"y":9230.67398394475},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c3182836-3d36-45b4-8384-d4ecf78ebcc0","savedPayload":{"position":{"x":22779.489251153667,"y":9230.67398394475},"targetPosition":{"x":23555.49123240532,"y":8714.514063231194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Base Right","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end- (record.end - record.begin)\ny = record.rateSupport","id":"a8ca9f48-585e-4f2d-adb4-e4909bdf4791","savedPayload":{"position":{"x":21695.190442117895,"y":8832.34565009053},"targetPosition":{"x":22625.302552951227,"y":8773.42246415238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"beb7e536-5af8-4b52-8194-8053bf181c4a","savedPayload":{"position":{"x":22625.302552951227,"y":8773.42246415238},"targetPosition":{"x":23555.49123240532,"y":8714.514063231194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f84691c4-7a7e-4dba-bd93-82443b0b1f22","savedPayload":{"position":{"x":26420.913642755677,"y":7434.907853431423},"targetPosition":{"x":27169.49380761691,"y":8195.794892065409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Support Levels","points":[{"type":"Point","name":"Begin 1","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support1Rate","id":"09444c80-7a46-4b7a-8c68-5e01e88e589d","savedPayload":{"position":{"x":23942.57767050824,"y":11856.482786265573},"targetPosition":{"x":23778.174006868183,"y":10938.21265760778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d621b89c-3082-47ed-836e-7a98d611df2b","savedPayload":{"position":{"x":23778.174006868183,"y":10938.21265760778},"targetPosition":{"x":23613.760101426054,"y":10019.84135803557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 1","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support1Rate","id":"67cb9789-cfe5-40e4-95c8-9b979a1fab14","savedPayload":{"position":{"x":23677.755746831128,"y":11884.60161151117},"targetPosition":{"x":23645.690265121455,"y":10952.267153648349},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bed52b2e-acb6-4b21-90de-8fd08dcd5d34","savedPayload":{"position":{"x":23645.690265121455,"y":10952.267153648349},"targetPosition":{"x":23613.760101426054,"y":10019.84135803557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 2","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support2Rate","id":"03925809-b409-4894-bfda-530b1a0459d1","savedPayload":{"position":{"x":23375.753811231774,"y":11896.885786221335},"targetPosition":{"x":23512.837600532424,"y":10947.333976248292},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"95e33e9a-7524-4efa-b431-7b4532cf947b","savedPayload":{"position":{"x":23512.837600532424,"y":10947.333976248292},"targetPosition":{"x":23613.760101426054,"y":10019.84135803557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 2","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support2Rate","id":"a62f6b4c-385c-478a-93c1-859aa0474043","savedPayload":{"position":{"x":23149.965615788995,"y":11827.080550700666},"targetPosition":{"x":23381.87962861463,"y":10923.51775405988},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"636187fb-4abe-4524-a3e2-c5930abb7b15","savedPayload":{"position":{"x":23381.87962861463,"y":10923.51775405988},"targetPosition":{"x":23613.760101426054,"y":10019.84135803557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 3","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support3Rate","id":"7212b514-8bde-4ae1-a992-fb4071aa8488","savedPayload":{"position":{"x":22897.611111221864,"y":11742.694369243236},"targetPosition":{"x":23255.714593704655,"y":10881.330507701045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"85f4f1ed-4b3d-4381-af30-a85e4bfd6dd7","savedPayload":{"position":{"x":23255.714593704655,"y":10881.330507701045},"targetPosition":{"x":23613.760101426054,"y":10019.84135803557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 3","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support3Rate","id":"a9fc5970-796f-4544-87ca-00348ed4046a","savedPayload":{"position":{"x":22660.23456273253,"y":11623.248270142389},"targetPosition":{"x":23137.288943454198,"y":10821.629955352988},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9fc5841d-ba9c-4ae6-a445-d609b0e947dd","savedPayload":{"position":{"x":23137.288943454198,"y":10821.629955352988},"targetPosition":{"x":23613.760101426054,"y":10019.84135803557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 4","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support4Rate","id":"118ccc56-a5b5-4920-a501-4189b994d311","savedPayload":{"position":{"x":22451.178304816698,"y":11428.431460734637},"targetPosition":{"x":23037.44164320069,"y":10702.907044891488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e69a3f5b-dcde-4d4a-8ac7-87616ebf68f3","savedPayload":{"position":{"x":23037.44164320069,"y":10702.907044891488},"targetPosition":{"x":23613.760101426054,"y":10019.84135803557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 4","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support4Rate","id":"ebba1443-0bea-488a-96eb-296a71982003","savedPayload":{"position":{"x":22246.166279780355,"y":11288.932013141362},"targetPosition":{"x":22929.759124841177,"y":10654.225525873111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1832f8f2-ac4a-4e1f-94ff-c29c18a350d7","savedPayload":{"position":{"x":22929.759124841177,"y":10654.225525873111},"targetPosition":{"x":23613.760101426054,"y":10019.84135803557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 5","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support5Rate","id":"423203ac-08c7-48d8-a842-2b604424d7fb","savedPayload":{"position":{"x":22079.587151342213,"y":11081.555840628385},"targetPosition":{"x":22846.55413713599,"y":10550.622253893142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aa501f2a-8d27-40af-aaea-58bc7c5f42db","savedPayload":{"position":{"x":22846.55413713599,"y":10550.622253893142},"targetPosition":{"x":23613.760101426054,"y":10019.84135803557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 5","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support5Rate","id":"7e6b4f5d-ef8e-4dd6-bc79-4df9a7bed772","savedPayload":{"position":{"x":21944.02484239402,"y":10852.254347177015},"targetPosition":{"x":22778.766683019592,"y":10435.929304196705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6aa7f5e1-5987-4619-8ec7-39a424d7734a","savedPayload":{"position":{"x":22778.766683019592,"y":10435.929304196705},"targetPosition":{"x":23613.760101426054,"y":10019.84135803557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"97155ce8-2969-4d0a-8626-1205a45a0ada","savedPayload":{"position":{"x":26556.444248076506,"y":7321.999271313831},"targetPosition":{"x":27169.49380761691,"y":8195.794892065409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Support Zone 1","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support1Rate - record.support1Rate * record.supportResistanceZone / 2 / 100","id":"37e59f5d-ac15-478b-8d47-f834a01baa5b","savedPayload":{"position":{"x":22348.415504733937,"y":8669.725443016196},"targetPosition":{"x":22576.610192862092,"y":8618.451498141789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"99a2940d-3e17-43dc-82ae-6bfd948adaf5","savedPayload":{"position":{"x":22576.610192862092,"y":8618.451498141789},"targetPosition":{"x":23032.324465401984,"y":8515.965582582136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support1Rate - record.support1Rate * record.supportResistanceZone / 2 / 100","id":"79ea9f9a-e251-47d9-ac57-a549e0e31dd5","savedPayload":{"position":{"x":22334.173931246434,"y":8450.937046737065},"targetPosition":{"x":22567.049068199838,"y":8472.617127337653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fbd722bf-0f89-46e6-9933-2ce46f906efa","savedPayload":{"position":{"x":22567.049068199838,"y":8472.617127337653},"targetPosition":{"x":23032.324465401984,"y":8515.965582582136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support1Rate + record.support1Rate * record.supportResistanceZone / 2 / 100","id":"14e3bbb5-81e4-4016-866f-6b7bd9772d27","savedPayload":{"position":{"x":22388.536398596636,"y":8238.258046120369},"targetPosition":{"x":22603.38224429456,"y":8330.913345376663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c112aca0-14de-4cc3-9e05-20b28aed8dd2","savedPayload":{"position":{"x":22603.38224429456,"y":8330.913345376663},"targetPosition":{"x":23032.324465401984,"y":8515.965582582136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support1Rate + record.support1Rate * record.supportResistanceZone / 2 / 100","id":"90cb47a2-5e59-4c6b-b160-0c9df8ba924d","savedPayload":{"position":{"x":22505.997951086356,"y":8052.67539189195},"targetPosition":{"x":22681.6147042578,"y":8207.257082724589},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"bef0f6c3-3a0d-4c72-a2df-7714001aeb59","savedPayload":{"position":{"x":22681.6147042578,"y":8207.257082724589},"targetPosition":{"x":23032.324465401984,"y":8515.965582582136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"70ec5d22-e80f-4a61-b20e-ed94be657d01","savedPayload":{"position":{"x":26708.65640332233,"y":7232.985107966997},"targetPosition":{"x":27169.49380761691,"y":8195.794892065409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Support Zone 2","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support2Rate - record.support2Rate * record.supportResistanceZone / 2 / 100","id":"2a58f164-97fc-4550-b028-d35ef0900bcc","savedPayload":{"position":{"x":22235.17797300179,"y":8371.843453405316},"targetPosition":{"x":22466.863383464904,"y":8340.154432154693},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c3c04eac-b594-45bd-9306-c615bdf6f960","savedPayload":{"position":{"x":22466.863383464904,"y":8340.154432154693},"targetPosition":{"x":22929.646932340664,"y":8276.76697423093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support2Rate - record.support2Rate * record.supportResistanceZone / 2 / 100","id":"f77871dc-1447-4dc9-8c31-ea23dbd0a485","savedPayload":{"position":{"x":22239.757485942566,"y":8152.64093975554},"targetPosition":{"x":22469.906142391894,"y":8194.023870030407},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"afd0cabf-291e-464f-82f9-5a17f55afd09","savedPayload":{"position":{"x":22469.906142391894,"y":8194.023870030407},"targetPosition":{"x":22929.646932340664,"y":8276.76697423093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support2Rate + record.support2Rate * record.supportResistanceZone / 2 / 100","id":"ec1b5181-9ba5-43b5-8ece-8f4c21ef4202","savedPayload":{"position":{"x":22311.965488065485,"y":7945.377877245793},"targetPosition":{"x":22518.071918549012,"y":8055.929182541061},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cdd44658-8050-41fa-8a8f-82677b9a149b","savedPayload":{"position":{"x":22518.071918549012,"y":8055.929182541061},"targetPosition":{"x":22929.646932340664,"y":8276.76697423093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support2Rate + record.support2Rate * record.supportResistanceZone / 2 / 100","id":"ed068681-8ff2-4d6b-a448-b23473de9729","savedPayload":{"position":{"x":22444.782857096932,"y":7770.493715259553},"targetPosition":{"x":22606.536449822237,"y":7939.374709887046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"827e511d-aebc-49a2-86de-8869ef2a11b5","savedPayload":{"position":{"x":22606.536449822237,"y":7939.374709887046},"targetPosition":{"x":22929.646932340664,"y":8276.76697423093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a339b25e-ffc5-4c3c-84d3-f27b72414868","savedPayload":{"position":{"x":26873.431968158253,"y":7170.245917190777},"targetPosition":{"x":27169.49380761691,"y":8195.794892065409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Support Zone 3","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support3Rate - record.support3Rate * record.supportResistanceZone / 2 / 100","id":"eacddf75-c7b4-47a1-a099-68e8fcc7f84d","savedPayload":{"position":{"x":22883.839534156687,"y":8072.192962811262},"targetPosition":{"x":23117.44785873425,"y":8060.324063612088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"765f38a2-4cba-49fd-8c86-dd51c8e215db","savedPayload":{"position":{"x":23117.44785873425,"y":8060.324063612088},"targetPosition":{"x":23584.00439745008,"y":8036.488172763839},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support3Rate - record.support3Rate * record.supportResistanceZone / 2 / 100","id":"0bff84b6-e263-4c4b-ae96-a7ef1ef6bd3c","savedPayload":{"position":{"x":22907.062325054903,"y":7854.212296327264},"targetPosition":{"x":23132.959257477538,"y":7915.007956869462},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"615e7f76-5ca1-4d42-84f6-0129a2eea01c","savedPayload":{"position":{"x":23132.959257477538,"y":7915.007956869462},"targetPosition":{"x":23584.00439745008,"y":8036.488172763839},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support3Rate + record.support3Rate * record.supportResistanceZone / 2 / 100","id":"6d7cb8d5-bcc9-4a40-adbc-84f31327e14d","savedPayload":{"position":{"x":22996.6714722819,"y":7653.80297531816},"targetPosition":{"x":23192.670147820976,"y":7781.488671059743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cf270516-0d12-45be-834a-c0024b840b3c","savedPayload":{"position":{"x":23192.670147820976,"y":7781.488671059743},"targetPosition":{"x":23584.00439745008,"y":8036.488172763839},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support3Rate + record.support3Rate * record.supportResistanceZone / 2 / 100","id":"958558ab-3e1b-40b1-bebe-0a7ef60ab54d","savedPayload":{"position":{"x":23143.882597422555,"y":7490.83198742221},"targetPosition":{"x":23290.72388552337,"y":7672.880535149921},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"dd6e16bd-9458-47f8-bce8-856baa66a2d3","savedPayload":{"position":{"x":23290.72388552337,"y":7672.880535149921},"targetPosition":{"x":23584.00439745008,"y":8036.488172763839},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"84a9a192-bc61-4080-855b-9cc491fd71fe","savedPayload":{"position":{"x":27046.278947654933,"y":7135.485028970711},"targetPosition":{"x":27169.49380761691,"y":8195.794892065409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Support Zone 4","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support4Rate - record.support4Rate * record.supportResistanceZone / 2 / 100","id":"97800a02-901d-46ef-9174-b40d1fbeb396","savedPayload":{"position":{"x":23490.906009771767,"y":7139.104432828727},"targetPosition":{"x":23675.29103283157,"y":7282.9742710306955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8a3f2434-8ab8-44aa-931f-f0aa0bed6310","savedPayload":{"position":{"x":23675.29103283157,"y":7282.9742710306955},"targetPosition":{"x":24043.438694160093,"y":7570.374820670971},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support4Rate - record.support4Rate * record.supportResistanceZone / 2 / 100","id":"bcf5f895-aee0-4e65-b4d6-291f37c6708f","savedPayload":{"position":{"x":23651.533082324408,"y":6989.259868470931},"targetPosition":{"x":23782.35071924742,"y":7183.176340979468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"13dd9d54-d74f-4863-9e86-88b79c9ebe2b","savedPayload":{"position":{"x":23782.35071924742,"y":7183.176340979468},"targetPosition":{"x":24043.438694160093,"y":7570.374820670971},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support4Rate + record.support4Rate * record.supportResistanceZone / 2 / 100","id":"25dce519-15a1-4420-a05b-49257bfb8995","savedPayload":{"position":{"x":23850.48742340411,"y":6896.706068796566},"targetPosition":{"x":23914.904251129083,"y":7121.587872330534},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6ae4a3ec-2a81-4bae-ae75-3ced2c5cd1cd","savedPayload":{"position":{"x":23914.904251129083,"y":7121.587872330534},"targetPosition":{"x":24043.438694160093,"y":7570.374820670971},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support4Rate + record.support4Rate * record.supportResistanceZone / 2 / 100","id":"11d60ea2-9963-46dc-a7c1-953cf8e06e4a","savedPayload":{"position":{"x":24067.859464600384,"y":6869.718511763622},"targetPosition":{"x":24059.763122051907,"y":7103.505534293173},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"73ecbfa9-1e21-4c80-8f17-6eff316dc2d5","savedPayload":{"position":{"x":24059.763122051907,"y":7103.505534293173},"targetPosition":{"x":24043.438694160093,"y":7570.374820670971},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e1efc35b-b8ca-4abb-bfcc-2b18747ad690","savedPayload":{"position":{"x":27222.276869237074,"y":7129.645412183475},"targetPosition":{"x":27169.49380761691,"y":8195.794892065409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Support Zone 5","points":[{"type":"Point","name":"Begin - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support5Rate - record.support5Rate * record.supportResistanceZone / 2 / 100","id":"3a397c6e-4bcc-464b-8dda-084c9083d8ac","savedPayload":{"position":{"x":23554.13823722282,"y":7092.698107309524},"targetPosition":{"x":23730.48488514783,"y":7246.358460063202},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f1da5793-706f-4884-af96-51be961434e8","savedPayload":{"position":{"x":23730.48488514783,"y":7246.358460063202},"targetPosition":{"x":24082.438760467197,"y":7553.191866803906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End - Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support5Rate - record.support5Rate * record.supportResistanceZone / 2 / 100","id":"bb8bdab3-a9c1-4288-aa35-3836872c0879","savedPayload":{"position":{"x":23722.67645878617,"y":6951.786711685946},"targetPosition":{"x":23842.805296235514,"y":7152.544541868501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ca37a88a-7a07-40c8-99ac-f8b8ff2d5d4d","savedPayload":{"position":{"x":23842.805296235514,"y":7152.544541868501},"targetPosition":{"x":24082.438760467197,"y":7553.191866803906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.support5Rate + record.support5Rate * record.supportResistanceZone / 2 / 100","id":"3331746d-bc53-41a4-990f-5eb061c90f71","savedPayload":{"position":{"x":23926.22583168194,"y":6869.910113749787},"targetPosition":{"x":23978.354432851916,"y":7098.012578426997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e1833970-01d0-4715-ad2d-9e717510fd30","savedPayload":{"position":{"x":23978.354432851916,"y":7098.012578426997},"targetPosition":{"x":24082.438760467197,"y":7553.191866803906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End + Zone Resistance","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.support5Rate + record.support5Rate * record.supportResistanceZone / 2 / 100","id":"39bc39ce-251f-4b18-8979-503e0ff9ccf2","savedPayload":{"position":{"x":24144.817507990614,"y":6854.847135777271},"targetPosition":{"x":24124.06200651955,"y":7087.891657975346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"15092839-5205-4e95-b729-0ed82fcfe928","savedPayload":{"position":{"x":24124.06200651955,"y":7087.891657975346},"targetPosition":{"x":24082.438760467197,"y":7553.191866803906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fc8b9272-d199-4b95-b168-a8da25c5b86b","savedPayload":{"position":{"x":27396.962715127247,"y":7152.865492749289},"targetPosition":{"x":27169.49380761691,"y":8195.794892065409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Support Line 1","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support1Rate > 0","id":"e5678d95-7929-42d1-8eb2-ba51b0572876","savedPayload":{"position":{"x":22923.67707561487,"y":8988.288047722448},"targetPosition":{"x":23539.81904810893,"y":9121.663471808117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"1b1df2b6-4914-4feb-a4f7-c8f512b9782d","savedPayload":{"position":{"x":22364.435589574296,"y":8665.425089513543},"targetPosition":{"x":22952.127318841613,"y":8893.54428066083},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"c7501b66-ee83-48ae-8985-758803465027","savedPayload":{"position":{"x":22952.127318841613,"y":8893.54428066083},"targetPosition":{"x":23539.81904810893,"y":9121.663471808117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 1","id":"7df5f6a2-5785-4f8d-a580-1b389606d6e9","savedPayload":{"position":{"x":22995.04848287994,"y":8804.417565169446},"targetPosition":{"x":23539.81904810893,"y":9121.663471808117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 1","id":"d621b89c-3082-47ed-836e-7a98d611df2b"}}},{"type":"Polygon Vertex","name":"End 1","id":"78cc5e46-abcc-4801-9115-a66e8ac81704","savedPayload":{"position":{"x":23051.38370622406,"y":8723.102496778309},"targetPosition":{"x":23539.81904810893,"y":9121.663471808117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 1","id":"bed52b2e-acb6-4b21-90de-8fd08dcd5d34"}}}],"id":"8baf5a5e-fde5-4405-aea2-035bfa3872c1","savedPayload":{"position":{"x":27566.098798298764,"y":7203.1390268384575},"targetPosition":{"x":27169.49380761691,"y":8195.794892065409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Line 2","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support2Rate > 0","id":"0ae326f3-874b-47bb-9064-2e04fa2e38eb","savedPayload":{"position":{"x":22997.574366531968,"y":8816.351278703847},"targetPosition":{"x":23586.955966807313,"y":9040.068205367377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.TURQUOISE\"\n }\n}","id":"b09aa70a-6823-45fb-aa40-9ebf5df20f73","savedPayload":{"position":{"x":22492.699372786898,"y":8413.743814561427},"targetPosition":{"x":23039.827669797105,"y":8726.906009964401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"87204e2e-e562-426d-aed8-5ead73ef48f7","savedPayload":{"position":{"x":23039.827669797105,"y":8726.906009964401},"targetPosition":{"x":23586.955966807313,"y":9040.068205367377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 2","id":"787fc2c9-a2c4-447e-b7ab-fa46c78b9653","savedPayload":{"position":{"x":23095.553087549346,"y":8645.171833801518},"targetPosition":{"x":23586.955966807313,"y":9040.068205367377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 2","id":"95e33e9a-7524-4efa-b431-7b4532cf947b"}}},{"type":"Polygon Vertex","name":"End 2","id":"3e493a72-7315-4688-93f2-54973cdba641","savedPayload":{"position":{"x":23163.37847506157,"y":8573.161316892503},"targetPosition":{"x":23586.955966807313,"y":9040.068205367377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 2","id":"636187fb-4abe-4524-a3e2-c5930abb7b15"}}}],"id":"baca2e09-2b91-4b8b-9176-e758bfcb4258","savedPayload":{"position":{"x":27724.175154924298,"y":7282.018436563371},"targetPosition":{"x":27169.49380761691,"y":8195.794892065409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Line 3","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support3Rate > 0","id":"07949760-a5fe-4a9c-a3e7-85628f7703ad","savedPayload":{"position":{"x":23096.222084798883,"y":8657.350783994067},"targetPosition":{"x":23645.67750182914,"y":8966.411746774891},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n }\n}","id":"25eef631-4528-4acd-b69c-26a6d97436fb","savedPayload":{"position":{"x":22656.991656428767,"y":8183.992399378264},"targetPosition":{"x":23151.334579128954,"y":8575.202073076576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"66ae3554-cec4-4591-a346-32f09e0212ab","savedPayload":{"position":{"x":23151.334579128954,"y":8575.202073076576},"targetPosition":{"x":23645.67750182914,"y":8966.411746774891},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 3","id":"b5b6232d-dde2-49f8-854d-722a4cbf9f01","savedPayload":{"position":{"x":23218.619436846002,"y":8502.68624267601},"targetPosition":{"x":23645.67750182914,"y":8966.411746774891},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 3","id":"85f4f1ed-4b3d-4381-af30-a85e4bfd6dd7"}}},{"type":"Polygon Vertex","name":"End 3","id":"0ff2207e-8476-4417-acb7-e799b37e48ee","savedPayload":{"position":{"x":23296.419881447393,"y":8441.58887320307},"targetPosition":{"x":23645.67750182914,"y":8966.411746774891},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 3","id":"9fc5841d-ba9c-4ae6-a445-d609b0e947dd"}}}],"id":"fbe179c2-99ac-44f0-952c-c9ebb205b252","savedPayload":{"position":{"x":27867.0478373185,"y":7385.810201358223},"targetPosition":{"x":27169.49380761691,"y":8195.794892065409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Line 4","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support4Rate > 0","id":"38995b73-26f1-4211-81b1-4bc4500c9715","savedPayload":{"position":{"x":23217.51408345215,"y":8514.811361494301},"targetPosition":{"x":23714.769391168607,"y":8902.312449191762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n }\n}","id":"0e256852-2fcc-44db-b917-47ac825583c9","savedPayload":{"position":{"x":22853.73990242034,"y":7981.276100516253},"targetPosition":{"x":23284.254646794474,"y":8441.794274854008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"8dcde804-7625-49ec-95ea-938eaf512aa6","savedPayload":{"position":{"x":23284.254646794474,"y":8441.794274854008},"targetPosition":{"x":23714.769391168607,"y":8902.312449191762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 4","id":"f0498624-74bb-4833-8113-f5570e7078f8","savedPayload":{"position":{"x":23361.59591193981,"y":8380.116674038103},"targetPosition":{"x":23714.769391168607,"y":8902.312449191762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 4","id":"e69a3f5b-dcde-4d4a-8ac7-87616ebf68f3"}}},{"type":"Polygon Vertex","name":"End 4","id":"1f0b03df-f4f7-4a58-80c5-6690c44859fb","savedPayload":{"position":{"x":23447.633480259337,"y":8331.2972662749},"targetPosition":{"x":23714.769391168607,"y":8902.312449191762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 4","id":"1832f8f2-ac4a-4e1f-94ff-c29c18a350d7"}}}],"id":"764238be-83c1-4523-a7a8-8f8245651b61","savedPayload":{"position":{"x":27990.87634349693,"y":7511.696629881782},"targetPosition":{"x":27169.49380761691,"y":8195.794892065409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Line 5","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support5Rate > 0","id":"d6c0fe91-6372-42e7-b594-2effc21b9086","savedPayload":{"position":{"x":23358.664656460503,"y":8391.944796595759},"targetPosition":{"x":23792.611992978436,"y":8849.229875236966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [1,5],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"7d618b16-acc1-481e-a9a1-a5fe7702098b","savedPayload":{"position":{"x":23078.472836852514,"y":7810.150955345232},"targetPosition":{"x":23435.542414915475,"y":8329.6904152911},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"1ed4cfc8-ac56-40de-9fc0-038c38385637","savedPayload":{"position":{"x":23435.542414915475,"y":8329.6904152911},"targetPosition":{"x":23792.611992978436,"y":8849.229875236966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 5","id":"841fe68b-d131-4a9e-8968-0fdd36967327","savedPayload":{"position":{"x":23521.212411428347,"y":8280.228819742919},"targetPosition":{"x":23792.611992978436,"y":8849.229875236966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 5","id":"aa501f2a-8d27-40af-aaea-58bc7c5f42db"}}},{"type":"Polygon Vertex","name":"End 5","id":"212c5989-a35a-42a2-b0e5-2427d138c950","savedPayload":{"position":{"x":23613.565166362554,"y":8244.777918587239},"targetPosition":{"x":23792.611992978436,"y":8849.229875236966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 5","id":"6aa7f5e1-5987-4619-8ec7-39a424d7734a"}}}],"id":"96977063-3da0-4745-9c71-782818e4a157","savedPayload":{"position":{"x":28092.291485988622,"y":7656.245899244096},"targetPosition":{"x":27169.49380761691,"y":8195.794892065409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Base","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.typeSupport=== 'Support'","id":"056d896f-1067-4317-92af-3d201055435d","savedPayload":{"position":{"x":24537.417309534718,"y":6604.758943849875},"targetPosition":{"x":24705.80260502205,"y":7521.208723145777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0,\n \"paletteColor\": \"UI_COLOR.DARK\"\n }\n}","id":"068045f8-ddda-41c1-92b4-2d42f9e9608d","savedPayload":{"position":{"x":24829.823393195347,"y":5666.046564955249},"targetPosition":{"x":24828.705384033194,"y":6597.572469877323},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.typeSupport=== 'Support'","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.DARK\",\n \"opacity\": 0.5\n}","id":"05143777-f193-4148-95f6-ea719e452836","savedPayload":{"position":{"x":25313.361446872794,"y":4798.804541246717},"targetPosition":{"x":25071.080454964704,"y":5698.161205794715},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"73181d20-e10c-44c4-b54c-2504b7474582","savedPayload":{"position":{"x":25071.080454964704,"y":5698.161205794715},"targetPosition":{"x":24828.705384033194,"y":6597.572469877323},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"40d55683-c8d8-407f-9fe3-f13a713fc79d","savedPayload":{"position":{"x":24828.705384033194,"y":6597.572469877323},"targetPosition":{"x":24705.80260502205,"y":7521.208723145777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Base Left","id":"362ecc6e-b0b5-456d-b727-f97b1bd60f5e","savedPayload":{"position":{"x":25108.202743207024,"y":6680.89206188562},"targetPosition":{"x":24705.80260502205,"y":7521.208723145777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Base Left","id":"c3182836-3d36-45b4-8384-d4ecf78ebcc0"}}},{"type":"Polygon Vertex","name":"Base Right","id":"63d2fd83-f7a5-4267-a416-7a5ff9e163fc","savedPayload":{"position":{"x":25348.18465769287,"y":6846.450240987945},"targetPosition":{"x":24705.80260502205,"y":7521.208723145777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Base Right","id":"beb7e536-5af8-4b52-8194-8053bf181c4a"}}}],"id":"b4567b9b-e1e1-463b-bf64-ab3e25bcbced","savedPayload":{"position":{"x":28168.529241353324,"y":7815.5159049937765},"targetPosition":{"x":27169.49380761691,"y":8195.794892065409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Zone 1","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support1Bounce1 > 0","id":"b5bd335d-555f-4cf5-a870-84130fccdf43","savedPayload":{"position":{"x":28989.643712910223,"y":7251.29763287067},"targetPosition":{"x":28216.803925349846,"y":7985.357789354271},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"56f2b454-13f9-44ac-9714-9169421c3ab5","savedPayload":{"position":{"x":29864.043621483892,"y":6665.522413882685},"targetPosition":{"x":29133.81189759555,"y":7441.957042468771},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.support1Bounce1 > 1","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"bf1ec91e-798c-4f93-bfb3-d89c15f94b3e","savedPayload":{"position":{"x":30759.477020935887,"y":6063.017551512562},"targetPosition":{"x":29946.628870826964,"y":6752.4253263558},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"369f0304-059f-4776-b557-4bd973c8ebed","savedPayload":{"position":{"x":29946.628870826964,"y":6752.4253263558},"targetPosition":{"x":29133.81189759555,"y":7441.957042468771},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support1Bounce1 > 2","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"0245085a-a486-4195-ba1b-259323a5e8a5","savedPayload":{"position":{"x":30903.807115508353,"y":6253.9239017746995},"targetPosition":{"x":30018.815464478685,"y":6847.90265926638},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3014da4a-245e-47bb-b1c4-690199dae1de","savedPayload":{"position":{"x":30018.815464478685,"y":6847.90265926638},"targetPosition":{"x":29133.81189759555,"y":7441.957042468771},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support1Bounce1 > 3","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"43cecedf-d860-49a4-96fe-9df0d1ddf168","savedPayload":{"position":{"x":31025.795419955906,"y":6459.7424619741},"targetPosition":{"x":30079.83451286438,"y":6950.8550791842945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ec472c0f-1f89-4700-8727-ef9439a38cea","savedPayload":{"position":{"x":30079.83451286438,"y":6950.8550791842945},"targetPosition":{"x":29133.81189759555,"y":7441.957042468771},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support1Bounce1 > 4","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"f4a644bc-9041-4f3a-9a8e-9e028d229848","savedPayload":{"position":{"x":31123.96072089553,"y":6677.947981382525},"targetPosition":{"x":30128.941157876085,"y":7060.022870321125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"787cc836-17ba-4215-9fee-bb95a8faaae7","savedPayload":{"position":{"x":30128.941157876085,"y":7060.022870321125},"targetPosition":{"x":29133.81189759555,"y":7441.957042468771},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support1Bounce1 > 5","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"f9a74516-d1e2-4856-9a22-4478cdca1820","savedPayload":{"position":{"x":31197.143583464083,"y":6906.09278535107},"targetPosition":{"x":30165.556623939472,"y":7174.214097290075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"26987001-a080-4d7c-86d2-d7962d00f6d1","savedPayload":{"position":{"x":30165.556623939472,"y":7174.214097290075},"targetPosition":{"x":29133.81189759555,"y":7441.957042468771},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f57c1875-5b81-4ad3-a305-10c63f3f1c58","savedPayload":{"position":{"x":29133.81189759555,"y":7441.957042468771},"targetPosition":{"x":28216.803925349846,"y":7985.357789354271},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"ba9a2688-0072-44cc-8a9a-968ecfaf7bf3","savedPayload":{"position":{"x":29231.793651242235,"y":7659.833874393378},"targetPosition":{"x":28216.803925349846,"y":7985.357789354271},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"99a2940d-3e17-43dc-82ae-6bfd948adaf5"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"4f693d5f-4a81-4dd4-b408-a9b01aa92b16","savedPayload":{"position":{"x":29278.825762397282,"y":7893.83938970588},"targetPosition":{"x":28216.803925349846,"y":7985.357789354271},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"fbd722bf-0f89-46e6-9933-2ce46f906efa"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"4daa243a-7b3c-438d-b721-34db4423fe57","savedPayload":{"position":{"x":29272.602092101006,"y":8132.1468063333905},"targetPosition":{"x":28216.803925349846,"y":7985.357789354271},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"bef0f6c3-3a0d-4c72-a2df-7714001aeb59"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"76f18b23-1e2e-4234-995e-0af0e8b0ea33","savedPayload":{"position":{"x":29213.416999269895,"y":8363.47137220339},"targetPosition":{"x":28216.803925349846,"y":7985.357789354271},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"c112aca0-14de-4cc3-9e05-20b28aed8dd2"}}}],"id":"d4705ff6-d94b-4f94-8fd0-9215cf9844ad","savedPayload":{"position":{"x":28217.51062138214,"y":7985.162974958182},"targetPosition":{"x":27169.49380761691,"y":8195.794892065409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Zone 2","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support2Bounce1 > 0","id":"6c4c67af-9468-47f7-b51a-b79b93a2d251","savedPayload":{"position":{"x":29120.422792807774,"y":7563.993152836467},"targetPosition":{"x":28237.534564583148,"y":8160.655683659867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"a50dcbd3-d699-44cf-a9f2-58d88a7ee84b","savedPayload":{"position":{"x":30079.02161638052,"y":7130.220280147923},"targetPosition":{"x":29231.19514918689,"y":7775.6943139936075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.support2Bounce1 > 1","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"e1af646c-9718-461e-9b49-565c1c972f1e","savedPayload":{"position":{"x":31061.159515665284,"y":6683.478893250913},"targetPosition":{"x":30146.16590069346,"y":7229.517126740793},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"110cf71c-ed22-41e1-8ad6-a1bf36d645ed","savedPayload":{"position":{"x":30146.16590069346,"y":7229.517126740793},"targetPosition":{"x":29231.19514918689,"y":7775.6943139936075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support2Bounce1 > 2","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"1058548a-13b4-4a58-9b33-d0aebfd91caa","savedPayload":{"position":{"x":31172.064455428088,"y":6895.490948950886},"targetPosition":{"x":30201.63883276608,"y":7335.54999874539},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"52bd90e4-a17b-4890-b825-0b52f27b2c4d","savedPayload":{"position":{"x":30201.63883276608,"y":7335.54999874539},"targetPosition":{"x":29231.19514918689,"y":7775.6943139936075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support2Bounce1 > 3","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"a8f6da8e-f165-4a12-983f-ef8a97327020","savedPayload":{"position":{"x":31258.49747437579,"y":7118.532811347622},"targetPosition":{"x":30244.877583214806,"y":7447.123023811681},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"47385aa9-0c34-4751-95bb-21858278cb38","savedPayload":{"position":{"x":30244.877583214806,"y":7447.123023811681},"targetPosition":{"x":29231.19514918689,"y":7775.6943139936075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support2Bounce1 > 4","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"d9af1bcb-8bc7-4769-a529-9838c89427fa","savedPayload":{"position":{"x":31319.403271626747,"y":7349.859081957869},"targetPosition":{"x":30275.342397454155,"y":7562.863298991747},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ded9c2c3-27b0-482f-a30f-950ef8749323","savedPayload":{"position":{"x":30275.342397454155,"y":7562.863298991747},"targetPosition":{"x":29231.19514918689,"y":7775.6943139936075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support2Bounce1 > 5","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"a0d2dd1f-91ef-4687-98a0-a5a01e852281","savedPayload":{"position":{"x":31354.024393670505,"y":7586.943771126272},"targetPosition":{"x":30292.65962471919,"y":7681.521442846507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a9acf6d3-26d8-431e-bbba-4f6420852018","savedPayload":{"position":{"x":30292.65962471919,"y":7681.521442846507},"targetPosition":{"x":29231.19514918689,"y":7775.6943139936075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8708e97c-7c5f-45c3-bb04-4cdb69f35d2a","savedPayload":{"position":{"x":29231.19514918689,"y":7775.6943139936075},"targetPosition":{"x":28237.534564583148,"y":8160.655683659867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"4a490153-7666-425a-94db-a3407072e08d","savedPayload":{"position":{"x":29291.989520258936,"y":8006.718352207522},"targetPosition":{"x":28237.534564583148,"y":8160.655683659867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"c3c04eac-b594-45bd-9306-c615bdf6f960"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"bb165791-a19f-42c9-99fd-f55009e98305","savedPayload":{"position":{"x":29299.854657895412,"y":8244.892105806353},"targetPosition":{"x":28237.534564583148,"y":8160.655683659867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"afd0cabf-291e-464f-82f9-5a17f55afd09"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"ec5ae905-f05e-4f65-b5a2-8423bd220ec3","savedPayload":{"position":{"x":29254.45477727469,"y":8479.155115199188},"targetPosition":{"x":28237.534564583148,"y":8160.655683659867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"827e511d-aebc-49a2-86de-8869ef2a11b5"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"558801bf-b8f7-4caa-93c2-312ae077baff","savedPayload":{"position":{"x":29158.024051231747,"y":8697.526584426665},"targetPosition":{"x":28237.534564583148,"y":8160.655683659867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"cdd44658-8050-41fa-8a8f-82677b9a149b"}}}],"id":"40c0fced-4d4b-476f-becb-4201ccb21c2f","savedPayload":{"position":{"x":28237.89911478652,"y":8160.560898748784},"targetPosition":{"x":27169.49380761691,"y":8195.794892065409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Zone 3","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support3Bounce1 > 0","id":"677b5709-c562-4782-b8db-e5301a57aeab","savedPayload":{"position":{"x":29198.33747992683,"y":7892.83618481231},"targetPosition":{"x":28229.239682467785,"y":8336.021672574047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"d915645d-778e-46cd-be7c-9205cde4a151","savedPayload":{"position":{"x":30215.302609376067,"y":7622.8070879531115},"targetPosition":{"x":29272.74900287495,"y":8119.9032056589285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.support3Bounce1 > 1","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"88e66929-008b-44f9-8836-1555529a886c","savedPayload":{"position":{"x":31257.62707891301,"y":7343.854136726607},"targetPosition":{"x":30265.190253757184,"y":7731.809757520013},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8024c736-7b70-4f68-9cd7-d8f250cc5da0","savedPayload":{"position":{"x":30265.190253757184,"y":7731.809757520013},"targetPosition":{"x":29272.74900287495,"y":8119.9032056589285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support3Bounce1 > 2","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"dfc32a91-65d3-4e33-8120-e88b82c065ed","savedPayload":{"position":{"x":31332.134792836514,"y":7571.233200829203},"targetPosition":{"x":30302.457310612885,"y":7845.529390718045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1cb52d9c-92a1-4ea3-8925-1addc66bc0db","savedPayload":{"position":{"x":30302.457310612885,"y":7845.529390718045},"targetPosition":{"x":29272.74900287495,"y":8119.9032056589285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support3Bounce1 > 3","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"a5f79b1b-8f2e-4796-b074-08d4266f66ef","savedPayload":{"position":{"x":31380.674002754968,"y":7805.460799929346},"targetPosition":{"x":30326.737374192402,"y":7962.696122269455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"45e75d66-4aac-484c-942a-f8318f6e9179","savedPayload":{"position":{"x":30326.737374192402,"y":7962.696122269455},"targetPosition":{"x":29272.74900287495,"y":8119.9032056589285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support3Bounce1 > 4","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"d1ec8f71-dd0c-4de4-b253-d9f80019a5dc","savedPayload":{"position":{"x":31402.662244366817,"y":8043.655813282982},"targetPosition":{"x":30337.734455600545,"y":8081.874206939067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"25eb0205-21fc-4b8f-9dfd-06521be651e3","savedPayload":{"position":{"x":30337.734455600545,"y":8081.874206939067},"targetPosition":{"x":29272.74900287495,"y":8119.9032056589285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support3Bounce1 > 5","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"9139ee33-0888-47ca-8409-3dab12aeb215","savedPayload":{"position":{"x":31397.794244473098,"y":8282.576102822784},"targetPosition":{"x":30335.283338250716,"y":8201.45077314556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a9cb240b-9c72-4f63-97cb-e96c9de9056e","savedPayload":{"position":{"x":30335.283338250716,"y":8201.45077314556},"targetPosition":{"x":29272.74900287495,"y":8119.9032056589285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b8a6b5be-21fa-4e43-a687-d20a2149cb2f","savedPayload":{"position":{"x":29272.74900287495,"y":8119.9032056589285},"targetPosition":{"x":28229.239682467785,"y":8336.021672574047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"d2da5bdd-6b2e-4284-af0f-1caaec186399","savedPayload":{"position":{"x":29294.696336345492,"y":8357.46025059778},"targetPosition":{"x":28229.239682467785,"y":8336.021672574047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"765f38a2-4cba-49fd-8c86-dd51c8e215db"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"ea5e5b65-da6f-49b3-89c2-d7fa902069c7","savedPayload":{"position":{"x":29263.204248869646,"y":8593.994663325404},"targetPosition":{"x":28229.239682467785,"y":8336.021672574047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"615e7f76-5ca1-4d42-84f6-0129a2eea01c"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"d0aca66f-f495-4355-b75e-b5f11c39cfc7","savedPayload":{"position":{"x":29179.8582230502,"y":8817.587802108741},"targetPosition":{"x":28229.239682467785,"y":8336.021672574047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"dd6e16bd-9458-47f8-bce8-856baa66a2d3"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"d05af5c5-9b11-4c9f-be10-b189ef3163fb","savedPayload":{"position":{"x":29048.80238834298,"y":9017.111326689215},"targetPosition":{"x":28229.239682467785,"y":8336.021672574047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"cf270516-0d12-45be-834a-c0024b840b3c"}}}],"id":"dfa786b7-df65-4c51-b088-dd550ae0c5df","savedPayload":{"position":{"x":28229.13625617636,"y":8336.730273834051},"targetPosition":{"x":27169.49380761691,"y":8195.794892065409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Zone 4","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support4Bounce1 > 0","id":"e751bdf0-0b5a-4063-84af-ea10f0e47a21","savedPayload":{"position":{"x":29220.30784193512,"y":8231.601400062364},"targetPosition":{"x":28191.50088151027,"y":8509.185713734774},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"251e1404-86d3-4985-8e43-486cc1d6867e","savedPayload":{"position":{"x":30267.844187558196,"y":8132.699945885638},"targetPosition":{"x":29256.347770697026,"y":8467.841609993813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.support4Bounce1 > 1","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"bffe3c87-6a71-4824-8446-5f070847eca1","savedPayload":{"position":{"x":31341.837300815103,"y":8029.153628338201},"targetPosition":{"x":30299.100417998154,"y":8248.438316299027},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a7c57b61-1430-462d-8869-3bb85750888d","savedPayload":{"position":{"x":30299.100417998154,"y":8248.438316299027},"targetPosition":{"x":29256.347770697026,"y":8467.841609993813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support4Bounce1 > 2","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"f42177ce-d5a0-4226-8e34-b771cb3ed2fd","savedPayload":{"position":{"x":31377.914536105163,"y":8265.669058443089},"targetPosition":{"x":30317.157384884118,"y":8366.729930678215},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dacf8a6e-f8c0-4c0e-9b70-25b69f62fe1a","savedPayload":{"position":{"x":30317.157384884118,"y":8366.729930678215},"targetPosition":{"x":29256.347770697026,"y":8467.841609993813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support4Bounce1 > 3","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"2b6ddd44-b538-437b-b367-f8e4c5a42e8a","savedPayload":{"position":{"x":31387.24478888606,"y":8504.056954124731},"targetPosition":{"x":30321.817189021942,"y":8485.974790357955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b4b1adb4-b1e3-450e-8fbb-267cf539096f","savedPayload":{"position":{"x":30321.817189021942,"y":8485.974790357955},"targetPosition":{"x":29256.347770697026,"y":8467.841609993813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support4Bounce1 > 4","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"07471740-91b1-4b7a-bdf2-9d9000ca954d","savedPayload":{"position":{"x":31369.708505976036,"y":8742.613933346283},"targetPosition":{"x":30313.040108902514,"y":8605.33163385363},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b2157982-6f42-4894-b0dc-f54c76e26599","savedPayload":{"position":{"x":30313.040108902514,"y":8605.33163385363},"targetPosition":{"x":29256.347770697026,"y":8467.841609993813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support4Bounce1 > 5","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"66b9ff42-57a7-4e1a-90f8-88b9b48815a8","savedPayload":{"position":{"x":31325.47111693657,"y":8978.12070336896},"targetPosition":{"x":30290.891349633188,"y":8723.175597519603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0ed11a98-f701-4fb3-bfbd-b85a77c75f77","savedPayload":{"position":{"x":30290.891349633188,"y":8723.175597519603},"targetPosition":{"x":29256.347770697026,"y":8467.841609993813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"20788642-ead1-4b31-abca-6877c0b3d548","savedPayload":{"position":{"x":29256.347770697026,"y":8467.841609993813},"targetPosition":{"x":28191.50088151027,"y":8509.185713734774},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"1fc429c5-f3e3-4cbc-b3c7-fa2b8be4b650","savedPayload":{"position":{"x":29238.813301447048,"y":8705.703262254807},"targetPosition":{"x":28191.50088151027,"y":8509.185713734774},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"8a3f2434-8ab8-44aa-931f-f0aa0bed6310"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"54aebf2a-bfb4-4a58-9a4d-12ae422638e0","savedPayload":{"position":{"x":29168.81237218646,"y":8933.837247363714},"targetPosition":{"x":28191.50088151027,"y":8509.185713734774},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"13dd9d54-d74f-4863-9e86-88b79c9ebe2b"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"006283cf-eb63-4341-8c76-b9ed8707c013","savedPayload":{"position":{"x":29049.812664478988,"y":9140.644064356742},"targetPosition":{"x":28191.50088151027,"y":8509.185713734774},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"73ecbfa9-1e21-4c80-8f17-6eff316dc2d5"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"3a0c604a-2ba5-40a4-9cef-6f8bda916c1c","savedPayload":{"position":{"x":28887.718120756286,"y":9315.868845508294},"targetPosition":{"x":28191.50088151027,"y":8509.185713734774},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"6ae4a3ec-2a81-4bae-ae75-3ced2c5cd1cd"}}}],"id":"c246d453-c21e-4977-a94c-395c8ddfcee1","savedPayload":{"position":{"x":28191.453628417174,"y":8509.292261416038},"targetPosition":{"x":27169.49380761691,"y":8195.794892065409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Support Zone 5","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.support5Bounce1 > 0","id":"eeaae66c-8f4b-4bc0-912f-f80476486d24","savedPayload":{"position":{"x":29186.428359607595,"y":8568.774994738773},"targetPosition":{"x":28125.88681805978,"y":8673.22431403214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"7c2c5a70-1ccb-4b1e-89b9-93a35e3ff9bd","savedPayload":{"position":{"x":30236.06752293454,"y":8643.316687538723},"targetPosition":{"x":29183.113127492492,"y":8807.384931594985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.support5Bounce1 > 1","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\",\n \"opacity\": 0.2\n}","id":"3503a74e-27ab-432d-b23b-384ea189b71c","savedPayload":{"position":{"x":31312.560200841737,"y":8717.95745129611},"targetPosition":{"x":30247.865445410665,"y":8762.605196340251},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b0eb4942-d207-41d7-baea-235288d4c3ba","savedPayload":{"position":{"x":30247.865445410665,"y":8762.605196340251},"targetPosition":{"x":29183.113127492492,"y":8807.384931594985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support5Bounce1 > 2","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.2\n}","id":"0014c98f-7ca4-42ce-a904-5358de2ae8cb","savedPayload":{"position":{"x":31309.200023200214,"y":8956.597320218802},"targetPosition":{"x":30246.186079410134,"y":8881.960687212242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"17498492-0347-435c-b51c-471ec5dde3f5","savedPayload":{"position":{"x":30246.186079410134,"y":8881.960687212242},"targetPosition":{"x":29183.113127492492,"y":8807.384931594985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support5Bounce1 > 3","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.2\n}","id":"9d45d527-de65-4e27-a6eb-bebd02822ac4","savedPayload":{"position":{"x":31279.056972156162,"y":9193.894963487615},"targetPosition":{"x":30231.107640433253,"y":9000.661708521253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"abc17a70-8a33-482c-98a1-1e9d8fb506d1","savedPayload":{"position":{"x":30231.107640433253,"y":9000.661708521253},"targetPosition":{"x":29183.113127492492,"y":8807.384931594985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support5Bounce1 > 4","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.2\n}","id":"095551e1-caff-4550-b6e3-e9fe57fdf87d","savedPayload":{"position":{"x":31222.511061264857,"y":9426.33242996997},"targetPosition":{"x":30202.812718999598,"y":9116.952121714805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6ce3a570-fffb-47b8-adbd-bb5e47ddce01","savedPayload":{"position":{"x":30202.812718999598,"y":9116.952121714805},"targetPosition":{"x":29183.113127492492,"y":8807.384931594985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Style Condition","name":"New Style Condition","code":"record.support5Bounce1 > 5","style":{"type":"Style","name":"New Style","config":"{\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\",\n \"opacity\": 0.4\n}","id":"eb84ebd8-a82a-49eb-a125-7b73255da111","savedPayload":{"position":{"x":31140.12837694766,"y":9651.318903575506},"targetPosition":{"x":30161.56858465921,"y":9229.548692634966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"af63db19-44f6-4044-a45e-b02db4d50245","savedPayload":{"position":{"x":30161.56858465921,"y":9229.548692634966},"targetPosition":{"x":29183.113127492492,"y":8807.384931594985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c53fa25f-d13c-4bba-ad54-f63bc4ab370e","savedPayload":{"position":{"x":29183.113127492492,"y":8807.384931594985},"targetPosition":{"x":28125.88681805978,"y":8673.22431403214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin - Zone Resistance","id":"97ae8c75-04ed-4106-a8bc-860b928c801c","savedPayload":{"position":{"x":29126.598401394884,"y":9039.501193461334},"targetPosition":{"x":28125.88681805978,"y":8673.22431403214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin - Zone Resistance","id":"f1da5793-706f-4884-af96-51be961434e8"}}},{"type":"Polygon Vertex","name":"End - Zone Resistance","id":"ff09c05e-8165-4874-ab3e-6b4d536152f5","savedPayload":{"position":{"x":29020.00822820024,"y":9252.994039269111},"targetPosition":{"x":28125.88681805978,"y":8673.22431403214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End - Zone Resistance","id":"ca37a88a-7a07-40c8-99ac-f8b8ff2d5d4d"}}},{"type":"Polygon Vertex","name":"End + Zone Resistance","id":"d05060f1-47ba-4fb0-9cf1-112b43d7052d","savedPayload":{"position":{"x":28868.58041338418,"y":9437.411073555335},"targetPosition":{"x":28125.88681805978,"y":8673.22431403214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End + Zone Resistance","id":"15092839-5205-4e95-b729-0ed82fcfe928"}}},{"type":"Polygon Vertex","name":"Begin + Zone Resistance","id":"b45229f5-8479-4ece-a945-ffb00fd63b70","savedPayload":{"position":{"x":28679.835851146865,"y":9583.566360125793},"targetPosition":{"x":28125.88681805978,"y":8673.22431403214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin + Zone Resistance","id":"e1833970-01d0-4715-ad2d-9e717510fd30"}}}],"id":"be7397f9-5610-4d38-86ee-90c2dfceceef","savedPayload":{"position":{"x":28125.79614183864,"y":8673.402609951578},"targetPosition":{"x":27169.49380761691,"y":8195.794892065409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"6daa712b-9aa6-4363-a987-cbef7c95d404","savedPayload":{"position":{"x":27169.60561286078,"y":8195.702014602015},"targetPosition":{"x":26542.277542432512,"y":9059.184701900776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Support Levels","config":"{ \n\"codeName\": \"Resistances Rates & Periods\"\n}","panelData":[{"type":"Panel Data","name":"Rate 1","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support1Rate","id":"7e6ffb7b-700e-4870-be11-e85a42a4b1c4","savedPayload":{"position":{"x":24611.58960221857,"y":6541.129722912705},"targetPosition":{"x":24925.033841774104,"y":7418.388427101198},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"645eb939-2442-4527-b2a9-41dc9fe757a9","savedPayload":{"position":{"x":24925.033841774104,"y":7418.388427101198},"targetPosition":{"x":25239.314072590376,"y":8295.710675081185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 1","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support1Period","id":"6c18d565-f06e-4461-93e0-5076f32d9599","savedPayload":{"position":{"x":24867.839935455115,"y":6469.496380393971},"targetPosition":{"x":25053.532840913795,"y":7382.680132527335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"eb9da961-accc-4205-8ae9-4ca89af0cdc2","savedPayload":{"position":{"x":25053.532840913795,"y":7382.680132527335},"targetPosition":{"x":25239.314072590376,"y":8295.710675081185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate 2","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support2Rate","id":"6e0aeeb7-3c81-4ecf-b6f8-09bb8fe599b3","savedPayload":{"position":{"x":25131.50688051718,"y":6435.502132383175},"targetPosition":{"x":25185.46470737929,"y":7365.398218541542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a3c3d8ed-b1c8-454d-91f6-a1f178f12baa","savedPayload":{"position":{"x":25185.46470737929,"y":7365.398218541542},"targetPosition":{"x":25239.314072590376,"y":8295.710675081185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 2","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support2Period","id":"18e53d69-4c32-4e34-a1ae-c8017b851080","savedPayload":{"position":{"x":25397.156734558634,"y":6439.0331474485765},"targetPosition":{"x":25318.172008498568,"y":7367.2135812665165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a43ed0c5-2a03-4c06-8ecf-464f323253ce","savedPayload":{"position":{"x":25318.172008498568,"y":7367.2135812665165},"targetPosition":{"x":25239.314072590376,"y":8295.710675081185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate 3","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support3Rate","id":"84073b24-07af-4253-91f0-1a3363515fea","savedPayload":{"position":{"x":25659.986532646846,"y":6480.57238067313},"targetPosition":{"x":25449.543695451433,"y":7388.228657508654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7ddd82f0-f22d-4b58-8c82-72da0faad6df","savedPayload":{"position":{"x":25449.543695451433,"y":7388.228657508654},"targetPosition":{"x":25239.314072590376,"y":8295.710675081185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 3","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support3Period","id":"cb9423ad-6fc8-4cf8-996c-f6c3ca9d6423","savedPayload":{"position":{"x":25913.758477366653,"y":6558.770950305243},"targetPosition":{"x":25576.6432071165,"y":7427.126402975232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d65c13d2-d9b5-426d-916c-fcb049ca684a","savedPayload":{"position":{"x":25576.6432071165,"y":7427.126402975232},"targetPosition":{"x":25239.314072590376,"y":8295.710675081185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate 4","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support4Rate","id":"3eefba37-d0b5-48c7-8930-2065d0370fd6","savedPayload":{"position":{"x":26154.04628110572,"y":6672.590784944205},"targetPosition":{"x":25696.723742346963,"y":7484.140896285667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cc6ea81e-db56-45ca-ad89-43e3cab97406","savedPayload":{"position":{"x":25696.723742346963,"y":7484.140896285667},"targetPosition":{"x":25239.314072590376,"y":8295.710675081185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 4","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support4Period","id":"a39d8363-6920-4001-b0f2-0d194c34a7f2","savedPayload":{"position":{"x":26375.741672327204,"y":6819.149967936606},"targetPosition":{"x":25807.63105598516,"y":7557.4644383946525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"99f78253-63c7-40f4-bc8a-7e37349ff6f6","savedPayload":{"position":{"x":25807.63105598516,"y":7557.4644383946525},"targetPosition":{"x":25239.314072590376,"y":8295.710675081185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate 5","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support5Rate","id":"344a9d6b-1f59-401c-8b50-97f740c8f141","savedPayload":{"position":{"x":26575.05369066106,"y":6996.279723829209},"targetPosition":{"x":25907.18661686745,"y":7646.064565549688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f01c7994-93d3-46f2-9135-e25955247914","savedPayload":{"position":{"x":25907.18661686745,"y":7646.064565549688},"targetPosition":{"x":25239.314072590376,"y":8295.710675081185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Period 5","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support5Period","id":"27ddb6f4-212d-4220-82e7-04b4e3a45fd6","savedPayload":{"position":{"x":26746.803518582525,"y":7199.978749457786},"targetPosition":{"x":25993.1725593778,"y":7747.986241563563},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c2195d70-d9d9-4377-8909-adefddae101f","savedPayload":{"position":{"x":25993.1725593778,"y":7747.986241563563},"targetPosition":{"x":25239.314072590376,"y":8295.710675081185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"635f72c8-0556-46db-87cf-4c15449c1e70","savedPayload":{"position":{"x":27557.384126338733,"y":8729.431725867102},"targetPosition":{"x":26542.277542432512,"y":9059.184701900776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Support Bounces","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Level 1 ZONE","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support1Bounce1","id":"d13fcc7c-cc42-4496-ba29-dc8724b5fb29","savedPayload":{"position":{"x":25590.7085816305,"y":7705.696780478918},"targetPosition":{"x":25639.29807585158,"y":7934.335525170699},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"62364bde-b261-4f32-839d-ef2c3878c99f","savedPayload":{"position":{"x":25639.29807585158,"y":7934.335525170699},"targetPosition":{"x":25832.6433978186,"y":8845.969788285925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ 2 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support1Bounce2","id":"b6e48da2-5f15-4a39-b91a-164c7f27926f","savedPayload":{"position":{"x":25782.096863339153,"y":7681.330561630911},"targetPosition":{"x":25792.227854082663,"y":7914.942880883342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"cf514f7a-499b-48ac-90e9-f94e9808edd1","savedPayload":{"position":{"x":25792.227854082663,"y":7914.942880883342},"targetPosition":{"x":25832.6433978186,"y":8845.969788285925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ 3 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support1Bounce3","id":"642b6ab0-0e00-4f24-9ade-b09618f11590","savedPayload":{"position":{"x":25974.12584821976,"y":7688.844698393443},"targetPosition":{"x":25945.855826346113,"y":7920.983371675397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"5bdd2b93-c16d-4580-b7f3-b330bb69092d","savedPayload":{"position":{"x":25945.855826346113,"y":7920.983371675397},"targetPosition":{"x":25832.6433978186,"y":8845.969788285925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ 5 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support1Bounce5","id":"469287dc-1f38-42ce-975c-099fb1cd9f40","savedPayload":{"position":{"x":26162.766011079988,"y":7727.967735383221},"targetPosition":{"x":26096.621860841824,"y":7952.26846050255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"c2d2df4c-2b45-4840-82f8-c012a1743b02","savedPayload":{"position":{"x":26096.621860841824,"y":7952.26846050255},"targetPosition":{"x":25832.6433978186,"y":8845.969788285925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ 10 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support1Bounce10","id":"19caf103-9282-4809-b7c6-a069ad289a2c","savedPayload":{"position":{"x":26342.361311569315,"y":7797.610425488152},"targetPosition":{"x":26240.162502220697,"y":8007.940147161997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"79e1a09f-925e-48b6-85c2-a22026e04dac","savedPayload":{"position":{"x":26240.162502220697,"y":8007.940147161997},"targetPosition":{"x":25832.6433978186,"y":8845.969788285925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 1 @ All","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support1BounceAll","id":"f19ab711-2207-4110-9d97-06477cfeb543","savedPayload":{"position":{"x":26508.02807648726,"y":7895.864605723988},"targetPosition":{"x":26372.57273869894,"y":8086.4772428055185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"eefbe053-1588-40a7-ac65-228590b7046b","savedPayload":{"position":{"x":26372.57273869894,"y":8086.4772428055185},"targetPosition":{"x":25832.6433978186,"y":8845.969788285925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 ZONE","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support2Bounce1","id":"08a5148e-4fe4-45bf-aa97-2e58a63a74ef","savedPayload":{"position":{"x":26655.254181042015,"y":8020.046396198204},"targetPosition":{"x":26490.245408414023,"y":8185.736239023881},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"fb6ade4e-292b-47b3-b20f-05fb859b98b4","savedPayload":{"position":{"x":26490.245408414023,"y":8185.736239023881},"targetPosition":{"x":25832.6433978186,"y":8845.969788285925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ 2 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support2Bounce2","id":"c9b2a0ac-b81c-4fc7-8e1d-091853938587","savedPayload":{"position":{"x":26780.025996764438,"y":8166.7666405307045},"targetPosition":{"x":26589.972037969445,"y":8303.00945273805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"9a56c631-2c1c-4ae7-a194-89b346df3463","savedPayload":{"position":{"x":26589.972037969445,"y":8303.00945273805},"targetPosition":{"x":25832.6433978186,"y":8845.969788285925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ 3 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support2Bounce3","id":"0373e364-a16d-4b51-b329-012a61b7ace6","savedPayload":{"position":{"x":26878.943211708996,"y":8332.02221409943},"targetPosition":{"x":26669.03346332039,"y":8435.097552108837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"30071839-72eb-494e-afc6-9a6ab94f9b70","savedPayload":{"position":{"x":26669.03346332039,"y":8435.097552108837},"targetPosition":{"x":25832.6433978186,"y":8845.969788285925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ 5 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support2Bounce5","id":"a2473366-94ac-4849-b862-43428d6d0a98","savedPayload":{"position":{"x":26949.305286210467,"y":8511.303435661266},"targetPosition":{"x":26725.273410338054,"y":8578.39813381915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"8deff06c-f8bc-4726-9907-4b14d0254746","savedPayload":{"position":{"x":26725.273410338054,"y":8578.39813381915},"targetPosition":{"x":25832.6433978186,"y":8845.969788285925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ 10 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support2Bounce10","id":"d4532f24-7d16-49af-a0ca-46e75a7c2f86","savedPayload":{"position":{"x":26989.195344450145,"y":8699.54636396874},"targetPosition":{"x":26757.15742958487,"y":8728.83791277624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"ebc42c04-3f1f-4236-8367-ce463bf2c90f","savedPayload":{"position":{"x":26757.15742958487,"y":8728.83791277624},"targetPosition":{"x":25832.6433978186,"y":8845.969788285925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 2 @ All","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support2BounceAll","id":"6da34bd1-0980-452b-b6c8-89db0c82d5f5","savedPayload":{"position":{"x":26997.52827067479,"y":8891.497479787406},"targetPosition":{"x":26763.845613796242,"y":8882.36179605083},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"f4a89e5c-6c86-4244-97c1-ad22ea7cd312","savedPayload":{"position":{"x":26763.845613796242,"y":8882.36179605083},"targetPosition":{"x":25832.6433978186,"y":8845.969788285925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 ZONE","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support3Bounce1","id":"84bdb475-2001-4b44-8cf2-03dfd526b973","savedPayload":{"position":{"x":26974.09507463835,"y":9082.664514621621},"targetPosition":{"x":26745.26475287465,"y":9035.335425864776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"b405e855-bb60-4161-93f2-9598d0622c20","savedPayload":{"position":{"x":26745.26475287465,"y":9035.335425864776},"targetPosition":{"x":25832.6433978186,"y":8845.969788285925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ 2 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support3Bounce2","id":"5ad12a0a-2cae-46ed-b896-7e5db84d4f22","savedPayload":{"position":{"x":26919.35764656349,"y":9267.3720178719},"targetPosition":{"x":26701.519797071596,"y":9183.07407605425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"5edc75a9-9864-48d5-ae37-fa72c4aad2a9","savedPayload":{"position":{"x":26701.519797071596,"y":9183.07407605425},"targetPosition":{"x":25832.6433978186,"y":8845.969788285925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ 3 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support3Bounce3","id":"a9b8e084-a12c-496c-95b1-d99be5ef8b0e","savedPayload":{"position":{"x":26835.138780844765,"y":9440.828799285839},"targetPosition":{"x":26634.03693269808,"y":9321.531929642259},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"d88536c7-cf92-48b1-8501-20b57d8d8a0a","savedPayload":{"position":{"x":26634.03693269808,"y":9321.531929642259},"targetPosition":{"x":25832.6433978186,"y":8845.969788285925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ 5 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support3Bounce5","id":"8d5ba2b2-d7aa-44bf-861c-d584c25b2a6f","savedPayload":{"position":{"x":26723.559694078576,"y":9597.930452118837},"targetPosition":{"x":26544.886378359777,"y":9447.119974868325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"4e750e36-67f4-41fc-b154-e516bc793142","savedPayload":{"position":{"x":26544.886378359777,"y":9447.119974868325},"targetPosition":{"x":25832.6433978186,"y":8845.969788285925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ 10 %","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support3Bounce10","id":"01c3a535-80db-4473-9a07-0779645fd2aa","savedPayload":{"position":{"x":26587.46745435857,"y":9734.245132846527},"targetPosition":{"x":26436.14175931274,"y":9556.062223732932},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"f8eeae14-9884-4912-9eee-161a8b911600","savedPayload":{"position":{"x":26436.14175931274,"y":9556.062223732932},"targetPosition":{"x":25832.6433978186,"y":8845.969788285925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Level 3 @ All","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.support3BounceAll","id":"778b179e-29a7-4ab3-bbb6-ce81bb805cad","savedPayload":{"position":{"x":26430.57023185953,"y":9846.473587107896},"targetPosition":{"x":26310.823229791436,"y":9645.787390726153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"0a53817d-766f-49f1-b233-6cd6bdddd754","savedPayload":{"position":{"x":26310.823229791436,"y":9645.787390726153},"targetPosition":{"x":25832.6433978186,"y":8845.969788285925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7d34b4e7-0593-4b2a-8e4f-a06e6625f6d5","savedPayload":{"position":{"x":27557.38351980117,"y":9388.938825470517},"targetPosition":{"x":26542.277542432512,"y":9059.184701900776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Support Zone Sizes","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Zone * 1","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone","id":"799aebef-4e58-4e2c-ba9f-16ea325ac998","savedPayload":{"position":{"x":25881.65970192701,"y":10140.091268203187},"targetPosition":{"x":25765.861476156424,"y":10122.94142832729},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"f1f1c795-56fe-4091-804e-d4d472c9142c","savedPayload":{"position":{"x":25765.861476156424,"y":10122.94142832729},"targetPosition":{"x":25304.557193392193,"y":10053.780967463432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Zone * 2","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone * 2","id":"32b7a21a-d80c-4bbd-9782-7300dea36122","savedPayload":{"position":{"x":25760.903659013493,"y":10417.37135681653},"targetPosition":{"x":25669.306292958277,"y":10344.474668892035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"19bdcbf6-4979-4b04-ae57-cbe7517c04ea","savedPayload":{"position":{"x":25669.306292958277,"y":10344.474668892035},"targetPosition":{"x":25304.557193392193,"y":10053.780967463432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Zone * 3","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone * 3","id":"fbe0c934-822f-4d54-ad5a-d377b3611066","savedPayload":{"position":{"x":25517.746616658,"y":10596.928039751803},"targetPosition":{"x":25474.969674517863,"y":10487.949395605443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"3f670609-9458-4bb5-8ab5-cc6b36257377","savedPayload":{"position":{"x":25474.969674517863,"y":10487.949395605443},"targetPosition":{"x":25304.557193392193,"y":10053.780967463432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Zone * 5","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone * 5","id":"5feb8c45-b7d1-49cb-83b7-74518d752328","savedPayload":{"position":{"x":25218.04316691038,"y":10630.73366238953},"targetPosition":{"x":25235.24987773113,"y":10514.97446282677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"f4944a67-3321-49f2-9cfe-fa63ebaf74e1","savedPayload":{"position":{"x":25235.24987773113,"y":10514.97446282677},"targetPosition":{"x":25304.557193392193,"y":10053.780967463432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Zone * 10","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.supportResistanceZone * 10","id":"68e84fc5-33ac-4e6b-a7c5-688ced53e4a7","savedPayload":{"position":{"x":24941.030990064344,"y":10509.573652195506},"targetPosition":{"x":25013.82894627052,"y":10418.24704036069},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"7d9369a7-6fbb-4e97-b447-6620d98d3089","savedPayload":{"position":{"x":25013.82894627052,"y":10418.24704036069},"targetPosition":{"x":25304.557193392193,"y":10053.780967463432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"24739677-7e84-4013-81db-db4de744c467","savedPayload":{"position":{"x":27169.618185323976,"y":9922.65843342776},"targetPosition":{"x":26542.277542432512,"y":9059.184701900776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1a104c65-6470-4694-a39e-4663f15e490c","savedPayload":{"position":{"x":20244.968237195473,"y":18189.016558443953},"targetPosition":{"x":19744.882151971833,"y":18189.01488977119},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0fd59bed-c28b-434c-801e-a2671e609f0d","savedPayload":{"position":{"x":19744.983170909545,"y":18188.81576210081},"targetPosition":{"x":18879.35218735615,"y":18688.55301821844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"35be7b1c-a0f7-4b5f-9ee1-8fb51595e959","savedPayload":{"position":{"x":18879.35218735615,"y":18688.55301821844},"targetPosition":{"x":18879.35218735615,"y":18688.55301821844},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"m"}}} \ No newline at end of file diff --git a/Includes/Data-Mines/Samurai.json b/Includes/Data-Mines/Samurai.json new file mode 100644 index 000000000..6827c45ae --- /dev/null +++ b/Includes/Data-Mines/Samurai.json @@ -0,0 +1 @@ +{"type":"Data Mine","name":"Samurai","config":"{\n\"codeName\": \"Samurai\"\n}","sensorBots":[],"indicatorBots":[{"type":"Indicator Bot","name":"Candles Probabilities","config":"{\n\"codeName\": \"Candles-Probabilities\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates SMAs for Time Frames of 01-hs and above.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Candles Probabilities","id":"ab027b2e-4e02-4c71-8da5-6b43c37de20b","savedPayload":{"position":{"x":24441.807558180073,"y":11178.172754360203},"targetPosition":{"x":24757.91289199851,"y":11360.695699284031},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"85c67513-347a-4948-9121-dee04543fcff"}}}],"outputDatasetFolders":[],"id":"1a087bb8-af2f-4384-85dd-c86d4b39aeff","savedPayload":{"position":{"x":24740.813740813894,"y":11764.307395546577},"targetPosition":{"x":25087.495634870367,"y":11964.565651629404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","config":"{\"mainUtility\": \"Market Ending Point\"}","id":"09588f6b-2193-4c9e-bc33-2ac075e8e4f4","savedPayload":{"position":{"x":25757.82661988232,"y":10782.55282705661},"targetPosition":{"x":25863.974750655703,"y":11140.122654848603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}},{"type":"Status Dependency","name":"Candles Probabilities Multi-Period-Market","config":"{ \n\"mainUtility\": \"Self Reference|Market Starting Point|Market Ending Point\"\n}","id":"83721123-d178-4ab3-8d6f-da06e8416eb8","savedPayload":{"position":{"x":25902.870176218516,"y":10769.51496828574},"targetPosition":{"x":25863.974750655703,"y":11140.122654848603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"24ca1130-0386-4088-9417-48eb5d8ac96a"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"2cfeb861-3ce6-4f63-b974-acc395f744cc","savedPayload":{"position":{"x":26042.027883264192,"y":10813.091690317255},"targetPosition":{"x":25863.974750655703,"y":11140.122654848603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"dataMineDataDependencies":[],"id":"08845d0d-a0a1-4d26-bb44-1072dfcf0b07","savedPayload":{"position":{"x":24887.60865246401,"y":11617.60490303291},"targetPosition":{"x":25087.495634870367,"y":11964.565651629404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"24ca1130-0386-4088-9417-48eb5d8ac96a","savedPayload":{"position":{"x":25087.495721365332,"y":11563.948027561915},"targetPosition":{"x":25087.495634870367,"y":11964.565651629404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"82529746-2044-48f0-b1f6-d1454ba5682d","savedPayload":{"position":{"x":25287.48635377009,"y":11617.520908314928},"targetPosition":{"x":25087.495634870367,"y":11964.565651629404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"05bcb9a5-4065-44cf-88db-77bb2b61b99a","savedPayload":{"position":{"x":25433.894299862637,"y":11764.005247841533},"targetPosition":{"x":25087.495634870367,"y":11964.565651629404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b9db962a-525e-409c-99b7-81fc0116b4b9","savedPayload":{"position":{"x":25087.495634870367,"y":11964.565651629404},"targetPosition":{"x":25087.50120815478,"y":12377.918620322398},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Describe what the process does.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily Candles Probabilities","id":"b16f70b2-d7a8-434c-a36c-a3200f3414ab","savedPayload":{"position":{"x":25800.15762928091,"y":11856.993253131839},"targetPosition":{"x":25700.09936916545,"y":12031.377364212467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"fa17370b-0a9c-4350-9cce-1df4be39b58c"}}}],"outputDatasetFolders":[],"id":"e156d437-ff71-4a1c-9239-abfc3b1dd3cb","savedPayload":{"position":{"x":25700.09936916545,"y":12031.377364212467},"targetPosition":{"x":25500.52302256196,"y":12377.922330520758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candles Probabilities Multi-Period-Daily","config":"{\"mainUtility\": \"Self Reference\"}","id":"f102b96d-854c-4fa1-9c1f-7689da34d35b","savedPayload":{"position":{"x":25864.631248982016,"y":11977.268573438294},"targetPosition":{"x":25846.96565654448,"y":12178.380472930085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"ac04d901-b5ee-4b27-abc7-e0eeb7d79cc3"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","config":"{\"mainUtility\": \"Market Ending Point\"}","id":"6a656f04-04eb-4ee8-ac17-d87d8ada1264","savedPayload":{"position":{"x":25982.93203012055,"y":12026.011319771422},"targetPosition":{"x":25846.96565654448,"y":12178.380472930085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\"mainUtility\": \"Market Starting Point\"}","id":"86adad3f-7780-4a41-8ec5-5f2f9bdb1e10","savedPayload":{"position":{"x":26047.23987952665,"y":12135.594570941714},"targetPosition":{"x":25846.96565654448,"y":12178.380472930085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"d4417217-99e4-4644-8b6b-3d8168b01090","savedPayload":{"position":{"x":26029.651478786353,"y":12266.185580591813},"targetPosition":{"x":25846.96565654448,"y":12178.380472930085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"dataMineDataDependencies":[],"id":"1cab7bdf-ecd1-4054-90ff-54f2cf683b2e","savedPayload":{"position":{"x":25846.96565654448,"y":12178.380472930085},"targetPosition":{"x":25500.52302256196,"y":12377.922330520758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"ac04d901-b5ee-4b27-abc7-e0eeb7d79cc3","savedPayload":{"position":{"x":25900.769277193373,"y":12378.352432245998},"targetPosition":{"x":25500.52302256196,"y":12377.922330520758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"34548656-528b-4e6b-89d9-ec56d7818f88","savedPayload":{"position":{"x":25847.330845607605,"y":12578.258678209299},"targetPosition":{"x":25500.52302256196,"y":12377.922330520758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"3900deae-546f-4277-8fcb-e78c03a7fb0d","savedPayload":{"position":{"x":25700.722998160323,"y":12724.712009640398},"targetPosition":{"x":25500.52302256196,"y":12377.922330520758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2212f26a-27aa-4e1f-b2aa-73ede1434477","savedPayload":{"position":{"x":25500.52302256196,"y":12377.922330520758},"targetPosition":{"x":25087.50120815478,"y":12377.918620322398},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Candles Probabilities","config":"{\n \"codeName\": \"Candles-Probabilities\",\n \"singularVariableName\": \"candlesProbability\",\n \"pluralVariableName\": \"candlesProbabilities\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"85c67513-347a-4948-9121-dee04543fcff","savedPayload":{"position":{"x":25254.64494643838,"y":12922.902131668741},"targetPosition":{"x":25087.459431383417,"y":12808.393420005701},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"fa17370b-0a9c-4350-9cce-1df4be39b58c","savedPayload":{"position":{"x":25145.01695205679,"y":13002.476099621948},"targetPosition":{"x":25087.459431383417,"y":12808.393420005701},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"7f630e20-9ead-4b62-a13a-d98dfde35569","savedPayload":{"position":{"x":25162.434371911262,"y":13254.384074775951},"targetPosition":{"x":25065.188222509194,"y":13163.170697781212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8356c5bd-3acf-46d5-bb60-5ca4784b0a48","savedPayload":{"position":{"x":25065.188222509194,"y":13163.170697781212},"targetPosition":{"x":24942.317080824618,"y":13116.847867476527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"abb35458-3007-4a6f-9926-b2034eef794f","savedPayload":{"position":{"x":25053.11057114337,"y":13382.232236976475},"targetPosition":{"x":25018.0129586287,"y":13265.516421128646},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"12a6b10a-22b5-459a-81d9-9de037af4f4e","savedPayload":{"position":{"x":25018.0129586287,"y":13265.516421128646},"targetPosition":{"x":24942.317080824618,"y":13116.847867476527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Direction Up","config":"{\n \"codeName\": \"directionUp\"\n}","formula":{"type":"Formula","code":"variable.directionUp","id":"cf8a68a3-d2e2-402a-ab5e-ae493f62b1ae","savedPayload":{"position":{"x":24880.42705984978,"y":13396.878111510241},"targetPosition":{"x":24908.81172241415,"y":13287.556777019521},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0b88c6ec-e33a-46e8-9a17-24e9158d476e","savedPayload":{"position":{"x":24908.81172241415,"y":13287.556777019521},"targetPosition":{"x":24942.317080824618,"y":13116.847867476527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Direction Down","config":"{\n \"codeName\": \"directionDown\"\n}","formula":{"type":"Formula","code":"variable.directionDown","id":"dcf8a2e7-3f11-4237-a3bb-433d99f3dde7","savedPayload":{"position":{"x":24739.56912073904,"y":13305.346621069506},"targetPosition":{"x":24813.68322906005,"y":13236.74616930508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"528446c8-b8b6-4b1c-94f6-0895ba1fba83","savedPayload":{"position":{"x":24813.68322906005,"y":13236.74616930508},"targetPosition":{"x":24942.317080824618,"y":13116.847867476527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Direction Side","config":"{\n \"codeName\": \"directionSide\"\n}","formula":{"type":"Formula","code":"variable.directionSide","id":"b1e369f5-64b2-4a81-b21b-52976b8949e8","savedPayload":{"position":{"x":24714.0046270875,"y":13126.020662912204},"targetPosition":{"x":24836.593442093323,"y":13107.683217286347},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c2214ffd-7628-4ae3-9731-3c08329dfbd1","savedPayload":{"position":{"x":24836.593442093323,"y":13107.683217286347},"targetPosition":{"x":24942.317080824618,"y":13116.847867476527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f5fdf31a-a5bd-47b9-91a7-2698538af74e","savedPayload":{"position":{"x":24942.317080824618,"y":13116.847867476527},"targetPosition":{"x":25087.459431383417,"y":12808.393420005701},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"let candle = record.current // Our main dependencies are candles\nvariable.count++\n\nif (candle.direction === \"Up\") {\n variable.countUp++\n}\n\nif (candle.direction === \"Down\") {\n variable.countDown++\n}\n\nif (candle.direction === \"Side\") {\n variable.countSide++\n}\n\nvariable.directionUp = variable.countUp / variable.count\nvariable.directionDown = variable.countDown / variable.count\nvariable.directionSide = variable.countSide / variable.count\n","id":"cd5da888-ac24-4ab0-a249-28237a881fa6","savedPayload":{"position":{"x":24560.555992799847,"y":13412.961755843506},"targetPosition":{"x":24641.168434324656,"y":13229.265486499004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"97a50cc8-8086-43e2-8a2c-5ee5394676b4","savedPayload":{"position":{"x":24641.168434324656,"y":13229.265486499004},"targetPosition":{"x":24740.399273351544,"y":13022.168937689474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"variable.count = 0 \nvariable.countUp = 0\nvariable.countDown = 0\nvariable.countSide = 0\n","id":"9d71f7ab-bffc-4898-bdbe-132b864e989c","savedPayload":{"position":{"x":24341.926715740938,"y":13064.284260488737},"targetPosition":{"x":24540.26170899307,"y":13043.239727302123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0a1f47a1-f5f9-4e1b-9cdb-f0fff0e01e59","savedPayload":{"position":{"x":24540.26170899307,"y":13043.239727302123},"targetPosition":{"x":24740.399273351544,"y":13022.168937689474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6d6c4442-0674-4782-a79f-8f18b5d7a688","savedPayload":{"position":{"x":24740.399273351544,"y":13022.168937689474},"targetPosition":{"x":25087.459431383417,"y":12808.393420005701},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d0e9521c-2ba8-44ce-b81e-7baf841008e0","savedPayload":{"position":{"x":25087.459431383417,"y":12808.393420005701},"targetPosition":{"x":25087.50120815478,"y":12377.918620322398},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Candles Probabilities","id":"ecab3716-75a4-4752-b826-1d5df9ec7325"}}}],"id":"07fee895-ee90-4175-829a-df0bbd498178","savedPayload":{"position":{"x":25154.085156252113,"y":12377.923660201921},"targetPosition":{"x":24687.956165025786,"y":12377.91976516634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Indicator Bot","name":"Candles Channels Probabilities","config":"{\n\"codeName\": \"Candles-Channels-Probabilities\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates SMAs for Time Frames of 01-hs and above.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Candles Channels Probabilities","id":"46154f7d-e7dc-423a-b297-8d6a1bc36a0c","savedPayload":{"position":{"x":25400.705997815578,"y":12256.821381644872},"targetPosition":{"x":25300.56117467831,"y":12430.85939004045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"fdee2b9c-3036-4db2-af42-b3507a6ffacf"}}}],"outputDatasetFolders":[],"id":"1c1a6fa0-6969-4353-81ff-56d0c82aee08","savedPayload":{"position":{"x":25300.56117467831,"y":12430.85939004045},"targetPosition":{"x":25100.623551706616,"y":12777.474383576235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candles Channels Probabilities Multi-Period-Market","config":"{\"mainUtility\": \"Self Reference\"}","id":"b08e8123-6edf-4b08-80e2-13e37b81d415","savedPayload":{"position":{"x":25551.981076084558,"y":12398.429281754543},"targetPosition":{"x":25447.18633665856,"y":12577.864210966018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"e1e05f4b-5d1f-463c-8c99-f09066fd485b"}}},{"type":"Status Dependency","name":"Candle Channels Multi-Period-Market","config":"{ \n\"mainUtility\": \"Market Ending Point\"\n}","id":"831c0a8c-aa09-480d-b790-54352d40ae93","savedPayload":{"position":{"x":25634.169411512965,"y":12459.479045854692},"targetPosition":{"x":25447.18633665856,"y":12577.864210966018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"902925d3-1d23-4894-9459-0be8df3965df"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Channels Objects Multi-Period-Market","id":"53e98a6b-95d8-4b9b-aa37-71b565b73a6c","savedPayload":{"position":{"x":25651.01224295164,"y":12590.287851478954},"targetPosition":{"x":25447.18633665856,"y":12577.864210966018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"566b9df4-da86-4b4f-a3f4-ef8a76443714"}}}],"dataMineDataDependencies":[],"id":"f2f59d93-f4ba-47f0-bd3a-4b5dbe76841d","savedPayload":{"position":{"x":25447.18633665856,"y":12577.864210966018},"targetPosition":{"x":25100.623551706616,"y":12777.474383576235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"e1e05f4b-5d1f-463c-8c99-f09066fd485b","savedPayload":{"position":{"x":25501.07016556492,"y":12777.65097033437},"targetPosition":{"x":25100.623551706616,"y":12777.474383576235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candle Channels Multi-Period-Market","id":"861617d8-0cff-491f-862d-11b5fd292351","savedPayload":{"position":{"x":25447.530767517725,"y":12977.61137841059},"targetPosition":{"x":25100.623551706616,"y":12777.474383576235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"0ee514b6-0528-4ff9-a901-a519856fbee4"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"a05d99eb-b96a-4594-8b29-eb2b544a9036","savedPayload":{"position":{"x":25300.988218061226,"y":13123.947666412903},"targetPosition":{"x":25100.623551706616,"y":12777.474383576235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"87fd6735-ee38-41aa-8a58-1a75f89aea5e","savedPayload":{"position":{"x":25100.623551706616,"y":12777.474383576235},"targetPosition":{"x":24687.68912809008,"y":12777.467848396518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Describe what the process does.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily Candles Channels Probabilities","id":"1d0c0cce-6113-49d7-afac-85d9938d9655","savedPayload":{"position":{"x":25208.042820630555,"y":13490.079850609169},"targetPosition":{"x":25033.790697527613,"y":13389.965522121705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"2774470d-7382-48e3-bd0a-957f0332a698"}}}],"outputDatasetFolders":[],"id":"8e168ff4-ad08-493f-b804-1786cf2e2431","savedPayload":{"position":{"x":25033.790697527613,"y":13389.965522121705},"targetPosition":{"x":24687.406046567008,"y":13190.327739908722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candles Channels Probabilities Multi-Period-Daily","config":"{\"mainUtility\": \"Self Reference\"}","id":"abd6c6ca-b442-47bf-9820-ab2243bdf2fa","savedPayload":{"position":{"x":25087.808083439053,"y":13554.42005670689},"targetPosition":{"x":24886.826934550867,"y":13536.751877019422},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"3fd6046f-ea3c-4b62-ab4e-7d84a5b9bb9f"}}},{"type":"Status Dependency","name":"Candle Channels Multi-Period-Daily","config":"{\"mainUtility\": \"Market Ending Point\"}","id":"772d5c04-73a6-44eb-af42-bc94d6f24618","savedPayload":{"position":{"x":25039.123745723547,"y":13672.69625903119},"targetPosition":{"x":24886.826934550867,"y":13536.751877019422},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"4a89ffcd-ef6d-4dd2-bbf6-6e2f1dba24cd"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\"mainUtility\": \"Market Starting Point\"}","id":"d9e96093-0e4b-4b5a-86bc-5361d4dd5744","savedPayload":{"position":{"x":24929.561159001747,"y":13737.037219711607},"targetPosition":{"x":24886.826934550867,"y":13536.751877019422},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Channels Objects Multi-Period-Daily","id":"bbee33b8-ad71-44c0-8900-9ff8527615a6","savedPayload":{"position":{"x":24798.86532442198,"y":13719.38293822478},"targetPosition":{"x":24886.826934550867,"y":13536.751877019422},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"8a7d224b-7571-4e1a-8b8f-8a35aa25dc63"}}}],"dataMineDataDependencies":[],"id":"6c06360e-fef9-4cb5-a94e-69cefb1e68d5","savedPayload":{"position":{"x":24886.826934550867,"y":13536.751877019422},"targetPosition":{"x":24687.406046567008,"y":13190.327739908722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"3fd6046f-ea3c-4b62-ab4e-7d84a5b9bb9f","savedPayload":{"position":{"x":24686.861355901,"y":13590.531498988108},"targetPosition":{"x":24687.406046567008,"y":13190.327739908722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candle Channels Multi-Period-Daily","id":"da961f64-aab7-46a7-b5ca-48246c13a938","savedPayload":{"position":{"x":24486.945233584673,"y":13537.01249080571},"targetPosition":{"x":24687.406046567008,"y":13190.327739908722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"e29dc92e-bbd9-45ae-ac52-1ee785e44928"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"a739e56b-d98c-46ca-8fcb-dc3508bf2d89","savedPayload":{"position":{"x":24340.465332387867,"y":13390.294116060772},"targetPosition":{"x":24687.406046567008,"y":13190.327739908722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b2261546-4415-4425-aedf-72bfc5c9fdba","savedPayload":{"position":{"x":24687.406046567008,"y":13190.327739908722},"targetPosition":{"x":24687.68912809008,"y":12777.467848396518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Candles Channels Probabilities","config":"{\n \"codeName\": \"Candles-Channels-Probabilities\",\n \"singularVariableName\": \"candlesChannelsProbability\",\n \"pluralVariableName\": \"candlesChannelsProbabilities\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"fdee2b9c-3036-4db2-af42-b3507a6ffacf","savedPayload":{"position":{"x":24273.699129139193,"y":13372.905080227374},"targetPosition":{"x":24365.94914810566,"y":13088.257412841824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"2774470d-7382-48e3-bd0a-957f0332a698","savedPayload":{"position":{"x":24123.67105690275,"y":13263.908155943009},"targetPosition":{"x":24365.94914810566,"y":13088.257412841824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"339d7be1-ca04-4765-a1ef-e4e94d8fa506","savedPayload":{"position":{"x":23928.073057760197,"y":13139.10863920847},"targetPosition":{"x":23659.360570975146,"y":13131.957327901217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"58a58c23-588e-44d5-a294-ff055b12823a","savedPayload":{"position":{"x":23659.360570975146,"y":13131.957327901217},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"5f29de35-5c6f-4adb-bc0a-5c4fbc540c79","savedPayload":{"position":{"x":23963.854546983683,"y":13235.12586412383},"targetPosition":{"x":23677.375683208174,"y":13152.757250025265},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"29d683db-c178-4d5e-9023-8b38a44eeae1","savedPayload":{"position":{"x":23677.375683208174,"y":13152.757250025265},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Count All","config":"{\n \"codeName\": \"countAll\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.count.all","id":"526500fd-4057-44b7-a130-0149cb982475","savedPayload":{"position":{"x":23819.088476709883,"y":13271.411522581531},"targetPosition":{"x":23546.73267394651,"y":13209.377833227896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e2444603-4120-42fe-a655-3967d334e404","savedPayload":{"position":{"x":23546.73267394651,"y":13209.377833227896},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Count Up","config":"{\n \"codeName\": \"countUp\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.count.up","id":"6501ff4c-1d67-4c0c-bcff-7037f4936720","savedPayload":{"position":{"x":23932.902420534552,"y":13353.1532917655},"targetPosition":{"x":23684.49644635098,"y":13233.573614849183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f1e38827-72ba-43c3-af89-462bda3ab733","savedPayload":{"position":{"x":23684.49644635098,"y":13233.573614849183},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Count Down","config":"{\n \"codeName\": \"countDown\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.count.down","id":"ba9191b5-5130-44ea-887b-97c13c119022","savedPayload":{"position":{"x":23826.215810082213,"y":13374.323551162699},"targetPosition":{"x":23650.737459321972,"y":13280.033236501278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"20761e96-657c-453b-870b-33c65b105b1b","savedPayload":{"position":{"x":23650.737459321972,"y":13280.033236501278},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Count Side","config":"{\n \"codeName\": \"countSide\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.count.side","id":"5a61ff39-689a-4fcf-8d71-833a83b1d916","savedPayload":{"position":{"x":23863.969862167098,"y":13511.928566868777},"targetPosition":{"x":23514.591254037343,"y":13273.447198190011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96a9ee06-1ae3-44c4-9ab6-ac6b165fbf8b","savedPayload":{"position":{"x":23514.591254037343,"y":13273.447198190011},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Max Up","config":"{\n \"codeName\": \"maxUp\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.max.up","id":"0703509d-2bd1-4216-bdd1-1c1b4a34428b","savedPayload":{"position":{"x":23736.271438317697,"y":13462.684072261356},"targetPosition":{"x":23619.414272873142,"y":13356.61075172193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"24101201-acb1-4d59-b459-6d54443fa8c9","savedPayload":{"position":{"x":23619.414272873142,"y":13356.61075172193},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Max Down","config":"{\n \"codeName\": \"maxDown\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.max.down","id":"29169bea-d6de-491e-a7de-03f3012d0a1a","savedPayload":{"position":{"x":23773.014067942288,"y":13597.535140845253},"targetPosition":{"x":23560.67425476423,"y":13343.777356835775},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dacb52f7-f537-4f6d-9863-a571d0d8b075","savedPayload":{"position":{"x":23560.67425476423,"y":13343.777356835775},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Max Side","config":"{\n \"codeName\": \"maxSide\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.max.side","id":"80356b40-83df-450c-9f47-f18f656b9ecd","savedPayload":{"position":{"x":23640.86663230046,"y":13548.230073512823},"targetPosition":{"x":23453.00382049131,"y":13513.27390389505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"65d31025-6197-4023-9710-62695081e6ab","savedPayload":{"position":{"x":23453.00382049131,"y":13513.27390389505},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Up","config":"{\n \"codeName\": \"probabilityUp\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.probability.up","id":"9667a091-1e5d-4333-903d-5c11e94418ba","savedPayload":{"position":{"x":23665.50843617633,"y":13683.226994738647},"targetPosition":{"x":23532.06615496165,"y":13358.50859834083},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6386661f-d590-4ddb-a220-8e248e67c523","savedPayload":{"position":{"x":23532.06615496165,"y":13358.50859834083},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Down","config":"{\n \"codeName\": \"probabilityDown\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.probability.down","id":"a0459d9d-dba1-4a1c-886b-b18439204b74","savedPayload":{"position":{"x":23551.146901124426,"y":13614.389512073114},"targetPosition":{"x":23461.720995259882,"y":13372.347013107457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"784b6455-4277-4fdb-b57e-278cc47b69d2","savedPayload":{"position":{"x":23461.720995259882,"y":13372.347013107457},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Side","config":"{\n \"codeName\": \"probabilitySide\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.probability.side","id":"7f62f7d5-5b86-4d97-8732-301bdf8db799","savedPayload":{"position":{"x":23538.43764964113,"y":13754.218742759816},"targetPosition":{"x":23398.305284698094,"y":13381.664194028577},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d1c041f4-81bf-471d-8365-cbfd12e1102c","savedPayload":{"position":{"x":23398.305284698094,"y":13381.664194028577},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Up 1","config":"{\n \"codeName\": \"probabilityUp1\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[1].probability.toFixed(2)","id":"168044ac-5997-4b3a-a8c1-7d34290ac7f3","savedPayload":{"position":{"x":23446.197663871575,"y":13659.64976454776},"targetPosition":{"x":23391.83048806139,"y":13514.324257938719},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2d9ee19a-7694-44eb-a6d1-4822e4731338","savedPayload":{"position":{"x":23391.83048806139,"y":13514.324257938719},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Down 1","config":"{\n \"codeName\": \"probabilityDown1\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[1].probability.toFixed(2)","id":"468b91b1-4c86-4606-af93-d263be661ae3","savedPayload":{"position":{"x":23400.22102124491,"y":13793.953490448723},"targetPosition":{"x":23336.059717786575,"y":13396.728229308996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e27c1bb9-4986-4b9c-b620-65258db2bc29","savedPayload":{"position":{"x":23336.059717786575,"y":13396.728229308996},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Side 1","config":"{\n \"codeName\": \"probabilitySide1\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arraySide[1].probability.toFixed(2)","id":"22f8a518-bd3c-4d6c-81c3-53a298995517","savedPayload":{"position":{"x":23330.502355537075,"y":13680.142054789107},"targetPosition":{"x":23310.503387155208,"y":13524.49452149448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b667e2f8-7ede-4514-bb40-56a4043f1270","savedPayload":{"position":{"x":23310.503387155208,"y":13524.49452149448},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Up 2","config":"{\n \"codeName\": \"probabilityUp2\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[2].probability","id":"00eb6eae-eaa0-48b1-baff-47bf23e2b58b","savedPayload":{"position":{"x":23258.205394649955,"y":13802.702580100795},"targetPosition":{"x":23274.26146562044,"y":13403.42604569225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3d827117-fa9c-4dd3-9276-d2954e592bc7","savedPayload":{"position":{"x":23274.26146562044,"y":13403.42604569225},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Down 2","config":"{\n \"codeName\": \"probabilityDown2\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[2].probability.toFixed(2)","id":"47eb727a-2d95-4478-b028-ee983fe1dcdf","savedPayload":{"position":{"x":23209.339929454953,"y":13675.027467503853},"targetPosition":{"x":23223.736112305534,"y":13522.562066496426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ce463489-7789-459d-846d-1d4d999b9724","savedPayload":{"position":{"x":23223.736112305534,"y":13522.562066496426},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Side 2","config":"{\n \"codeName\": \"probabilitySide2\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arraySide[2].probability.toFixed(2)","id":"59c2243d-3340-4f65-a8bf-1ea0ddbcd9ec","savedPayload":{"position":{"x":23118.52160088095,"y":13783.414445861516},"targetPosition":{"x":23213.136225271497,"y":13399.047002298066},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"89a3c63f-12ea-435e-8150-2c0965f3ec27","savedPayload":{"position":{"x":23213.136225271497,"y":13399.047002298066},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Up 3","config":"{\n \"codeName\": \"probabilityUp3\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[3].probability.toFixed(2)","id":"37662cb1-05e1-4a4d-b753-09cd88973f7d","savedPayload":{"position":{"x":23095.788690040637,"y":13654.06700336164},"targetPosition":{"x":23135.728420283842,"y":13503.934149625898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9383f539-81a6-4e16-9a23-e6702c662e58","savedPayload":{"position":{"x":23135.728420283842,"y":13503.934149625898},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Down 3","config":"{\n \"codeName\": \"probabilityDown3\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[3].probability.toFixed(2)","id":"3cf1663b-33ed-4bee-b3bb-a9d3ff81ecec","savedPayload":{"position":{"x":22981.3516316003,"y":13738.241405851468},"targetPosition":{"x":23154.171334415627,"y":13381.645336385423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fb60deb4-7593-4ffe-9d36-06f654ab1398","savedPayload":{"position":{"x":23154.171334415627,"y":13381.645336385423},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Side 3","config":"{\n \"codeName\": \"probabilitySide3\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arraySide[3].probability.toFixed(2)","id":"a4e814b0-4278-41b1-9275-319a21c12ad2","savedPayload":{"position":{"x":22987.767266840652,"y":13605.179286682698},"targetPosition":{"x":23056.881731523747,"y":13466.239926401431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d29e40d0-8b0a-49d7-9287-5ee1713eac4e","savedPayload":{"position":{"x":23056.881731523747,"y":13466.239926401431},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Up 4","config":"{\n \"codeName\": \"probabilityUp4\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[4].probability.toFixed(2)","id":"d6ddfe51-ed65-4317-a6db-8dd7c29ced59","savedPayload":{"position":{"x":22860.010874924803,"y":13665.92255027016},"targetPosition":{"x":23098.47568973903,"y":13347.470914262787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"903d6dd1-9cd8-4e8a-9a9b-f554658ce564","savedPayload":{"position":{"x":23098.47568973903,"y":13347.470914262787},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Down 4","config":"{\n \"codeName\": \"probabilityDown4\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[4].probability.toFixed(2)","id":"2bf22e1b-6a16-4199-8b72-4283ae8ea725","savedPayload":{"position":{"x":22890.84243165661,"y":13532.9435546622},"targetPosition":{"x":22987.6215846214,"y":13414.87101907985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0526403b-4378-41d5-b3fa-79bccdc31750","savedPayload":{"position":{"x":22987.6215846214,"y":13414.87101907985},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Side 4","config":"{\n \"codeName\": \"probabilitySide4\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arraySide[4].probability.toFixed(2)","id":"148cba98-c7b3-4278-ac40-c0805a2a31d9","savedPayload":{"position":{"x":22756.039018429245,"y":13572.041282312362},"targetPosition":{"x":23050.397678672463,"y":13306.61679466823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5b2780a7-e06f-4929-afa3-45931c83a70f","savedPayload":{"position":{"x":23050.397678672463,"y":13306.61679466823},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Up 5","config":"{\n \"codeName\": \"probabilityUp5\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[5].probability.toFixed(2)","id":"833d2de2-62f0-4b87-9c8d-07da620c766f","savedPayload":{"position":{"x":22809.178018346887,"y":13446.708827237833},"targetPosition":{"x":22928.10845096726,"y":13350.505367602593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1f067a3e-21bd-434c-99d3-467032a2176a","savedPayload":{"position":{"x":22928.10845096726,"y":13350.505367602593},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Down 5","config":"{\n \"codeName\": \"probabilityDown5\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[5].probability.toFixed(2)","id":"8bbd333f-8733-4c12-9f48-f44b6409f4ca","savedPayload":{"position":{"x":22668.559509332514,"y":13459.305831969243},"targetPosition":{"x":23011.72753784357,"y":13256.590229892116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2fa08b17-9fcc-4d03-b7f4-5f02c44183c6","savedPayload":{"position":{"x":23011.72753784357,"y":13256.590229892116},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Side 5","config":"{\n \"codeName\": \"probabilitySide5\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arraySide[5].probability.toFixed(2)","id":"ddcb3fba-ab34-4c66-aa82-991ce4a21f3e","savedPayload":{"position":{"x":22745.93122601684,"y":13351.069775292017},"targetPosition":{"x":22883.217040934403,"y":13275.682872315037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"491077de-5fe1-4cc4-98a4-72648541d766","savedPayload":{"position":{"x":22883.217040934403,"y":13275.682872315037},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Up 6","config":"{\n \"codeName\": \"probabilityUp6\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[6].probability.toFixed(2)","id":"4c8885df-b460-492a-8fd7-7f6e692a1c18","savedPayload":{"position":{"x":22605.068565237256,"y":13328.379128062006},"targetPosition":{"x":22984.174093813686,"y":13198.962925741103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7628b231-d7c0-4f56-a875-c40f9dc5d453","savedPayload":{"position":{"x":22984.174093813686,"y":13198.962925741103},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Down 6","config":"{\n \"codeName\": \"probabilityDown6\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[6].probability.toFixed(2)","id":"4a93051d-2d10-449c-b503-77dba2e9fe28","savedPayload":{"position":{"x":22706.39612932584,"y":13238.443947375617},"targetPosition":{"x":22854.21733149409,"y":13194.042582820939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"78255cd6-c8f7-4533-a542-fe93e1b748f9","savedPayload":{"position":{"x":22854.21733149409,"y":13194.042582820939},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Side 6","config":"{\n \"codeName\": \"probabilitySide6\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arraySide[6].probability.toFixed(2)","id":"4182a108-ece7-4a17-b932-5c1d9a4756b6","savedPayload":{"position":{"x":22572.495904299816,"y":13191.114390567414},"targetPosition":{"x":22966.587811346566,"y":13139.442142689226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ca625650-fc68-403e-8bee-3c38a51bb70f","savedPayload":{"position":{"x":22966.587811346566,"y":13139.442142689226},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Up 7","config":"{\n \"codeName\": \"probabilityUp7\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[7].probability.toFixed(2)","id":"b5ccdd41-090d-4123-af8b-30eb08c3c67b","savedPayload":{"position":{"x":22687.88947792669,"y":13121.704951739654},"targetPosition":{"x":22839.824930775485,"y":13105.592731027426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"91ee1783-d1e9-48b5-bae9-5db7887904da","savedPayload":{"position":{"x":22839.824930775485,"y":13105.592731027426},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Down 7","config":"{\n \"codeName\": \"probabilityDown7\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[7].probability.toFixed(2)","id":"f4704dcd-2c14-47f7-9fc9-bd18d5582621","savedPayload":{"position":{"x":22565.722137797708,"y":13048.87285619763},"targetPosition":{"x":22960.907211268655,"y":13078.390096463427},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cb6c389f-adbc-4dfe-8d4e-f12bb5a52077","savedPayload":{"position":{"x":22960.907211268655,"y":13078.390096463427},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Side 7","config":"{\n \"codeName\": \"probabilitySide7\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arraySide[7].probability.toFixed(2)","id":"4ac32582-3f5f-4e70-889b-44163296a6d4","savedPayload":{"position":{"x":22693.21479954812,"y":13003.959491382095},"targetPosition":{"x":22845.666634732548,"y":13017.251397645723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d0889582-9ed3-476b-a9cd-8d797a16d727","savedPayload":{"position":{"x":22845.666634732548,"y":13017.251397645723},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Up 8","config":"{\n \"codeName\": \"probabilityUp8\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[8].probability.toFixed(2)","id":"6e5231b7-4720-4f4d-a665-7e1a404a46b5","savedPayload":{"position":{"x":22588.094896424827,"y":12909.528997817213},"targetPosition":{"x":22973.560615841037,"y":13013.719388251846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0065cbce-fa3b-42ef-a96f-ebd05efa496f","savedPayload":{"position":{"x":22973.560615841037,"y":13013.719388251846},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Down 8","config":"{\n \"codeName\": \"probabilityDown8\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[8].probability.toFixed(2)","id":"f11b3a77-6419-4080-9676-975024dfb661","savedPayload":{"position":{"x":22719.35342397775,"y":12889.825308953226},"targetPosition":{"x":22869.135509244003,"y":12936.274465098155},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0b5cf9f1-6c7d-42be-95d1-afdbd3b3351f","savedPayload":{"position":{"x":22869.135509244003,"y":12936.274465098155},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Side 8","config":"{\n \"codeName\": \"probabilitySide8\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arraySide[8].probability","id":"f6edd4f5-a848-41cd-90dc-02f3847588db","savedPayload":{"position":{"x":22636.863751823643,"y":12773.157933146487},"targetPosition":{"x":22992.502481725376,"y":12954.508326167226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9f5d322b-0dc5-4ae9-bc17-5381f9a70c62","savedPayload":{"position":{"x":22992.502481725376,"y":12954.508326167226},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Up 9","config":"{\n \"codeName\": \"probabilityUp9\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[9].probability.toFixed(2)","id":"321132b1-60e5-4a83-98de-ab4b96ccdeb7","savedPayload":{"position":{"x":22769.546327701264,"y":12783.494063762504},"targetPosition":{"x":22907.08333198296,"y":12856.670327011658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d4276b44-3c7e-490e-a5fe-d634f33f8daf","savedPayload":{"position":{"x":22907.08333198296,"y":12856.670327011658},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Down 9","config":"{\n \"codeName\": \"probabilityDown9\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[9].probability.toFixed(2)","id":"a166f651-bde0-4120-88bc-1ca1cf43aa74","savedPayload":{"position":{"x":22712.3193616455,"y":12652.388405907912},"targetPosition":{"x":23024.72867469466,"y":12900.170264095388},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a81432a2-6778-4063-94bf-6618b1feeadd","savedPayload":{"position":{"x":23024.72867469466,"y":12900.170264095388},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Side 9","config":"{\n \"codeName\": \"probabilitySide9\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arraySide[9].probability.toFixed(2)","id":"1b71e277-d4a1-4e61-bbb1-bf7ca148575f","savedPayload":{"position":{"x":22839.640046397242,"y":12688.526234705954},"targetPosition":{"x":22960.322579871066,"y":12786.675245515838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"65426441-c082-4d12-94d9-de1d25ba697d","savedPayload":{"position":{"x":22960.322579871066,"y":12786.675245515838},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Up 10","config":"{\n \"codeName\": \"probabilityUp10\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[10].probability.toFixed(2)","id":"eb7ecf8d-987a-4425-a45a-c2d2c79e392a","savedPayload":{"position":{"x":22809.976462387953,"y":12549.51314382067},"targetPosition":{"x":23065.524760275228,"y":12853.282891025357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f30dad9f-282a-47f6-bc54-ee76701c824b","savedPayload":{"position":{"x":23065.524760275228,"y":12853.282891025357},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Down 10","config":"{\n \"codeName\": \"probabilityDown10\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[10].probability.toFixed(2)","id":"f0c4e430-c1dd-4c35-82f8-4a35623f2429","savedPayload":{"position":{"x":22929.263532063535,"y":12609.258662410533},"targetPosition":{"x":23023.319749069942,"y":12730.392140514497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a582ab2e-41f4-41b6-a281-14813c1f83e6","savedPayload":{"position":{"x":23023.319749069942,"y":12730.392140514497},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Probability Side 10","config":"{\n \"codeName\": \"probabilitySide10\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arraySide[10].probability.toFixed(2)","id":"880c3925-d3ef-4ad8-a454-069e5ca4c188","savedPayload":{"position":{"x":22908.363595298586,"y":12469.892486755578},"targetPosition":{"x":23114.318791976497,"y":12814.94256027692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8045f35a-2f67-4a07-af52-a7a66343ae03","savedPayload":{"position":{"x":23114.318791976497,"y":12814.94256027692},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Up 1","config":"{\n \"codeName\": \"nextUp1\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[1].greaterProbability.toFixed(2)","id":"b53e83dd-00b7-460e-92ed-b5c4a24e5459","savedPayload":{"position":{"x":23063.348841482122,"y":12698.358738586936},"targetPosition":{"x":23134.99780574916,"y":12676.136800504995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"4a694c4e-5318-4298-b7f1-d9103f77ebf9","savedPayload":{"position":{"x":23134.99780574916,"y":12676.136800504995},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Down 1","config":"{\n \"codeName\": \"nextDown1\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[1].greaterProbability.toFixed(2)","id":"33d00317-95c1-4d35-be64-d513e1223b77","savedPayload":{"position":{"x":23078.389939924695,"y":12598.101803693517},"targetPosition":{"x":23157.296004711476,"y":12789.269219601834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"5d8da44f-fb39-4b0f-9cc7-fa9d32a4d209","savedPayload":{"position":{"x":23157.296004711476,"y":12789.269219601834},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Up 2","config":"{\n \"codeName\": \"nextUp2\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[2].greaterProbability.toFixed(2)","id":"bc732386-1448-4b48-bf55-70d5cd2196ba","savedPayload":{"position":{"x":23306.568824748494,"y":12590.785955268326},"targetPosition":{"x":23194.49363454916,"y":12771.216665703238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"ac16b3e9-e9d7-42ea-b428-9c8ec11d7e2b","savedPayload":{"position":{"x":23194.49363454916,"y":12771.216665703238},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Down 2","config":"{\n \"codeName\": \"nextDown2\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[2].greaterProbability.toFixed(2)","id":"cb9ff30d-2792-45ab-80e8-ca606f92758e","savedPayload":{"position":{"x":23156.70060078536,"y":12585.96499801733},"targetPosition":{"x":23210.5220059041,"y":12687.678568580575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"9acdb9db-3669-45a8-b02a-053f2faf6058","savedPayload":{"position":{"x":23210.5220059041,"y":12687.678568580575},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Up 3","config":"{\n \"codeName\": \"nextUp3\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[3].greaterProbability.toFixed(2)","id":"9f22f2e4-d461-4402-a9a4-248a815876c9","savedPayload":{"position":{"x":23257.4041492741,"y":12588.350146194543},"targetPosition":{"x":23284.514239866254,"y":12782.625710890274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"192e85df-e1bb-4292-ae05-ce740133fb29","savedPayload":{"position":{"x":23284.514239866254,"y":12782.625710890274},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Down 3","config":"{\n \"codeName\": \"nextDown3\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[3].greaterProbability.toFixed(2)","id":"e34c5d6c-6bfb-4733-a3e7-28e0e1bbd3a7","savedPayload":{"position":{"x":23391.776212484252,"y":12502.351092909881},"targetPosition":{"x":23294.273966874112,"y":12633.754510531266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"4e60fdb7-fc23-4989-8706-7d81271f6225","savedPayload":{"position":{"x":23294.273966874112,"y":12633.754510531266},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Up 4","config":"{\n \"codeName\": \"nextUp4\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[4].greaterProbability.toFixed(2)","id":"09f989af-7270-4671-afda-2073458e77c7","savedPayload":{"position":{"x":23256.827796506164,"y":12712.460148556152},"targetPosition":{"x":23455.286635412143,"y":12693.329795126687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"2959103e-d4b4-4ead-8f6b-fbe06e89ff7a","savedPayload":{"position":{"x":23455.286635412143,"y":12693.329795126687},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Down 4","config":"{\n \"codeName\": \"nextDown4\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[4].greaterProbability.toFixed(2)","id":"e7eae73d-ee2e-477a-91ac-a2dbf6b8bba9","savedPayload":{"position":{"x":23384.799041379647,"y":12596.703024269083},"targetPosition":{"x":23335.23267686281,"y":12697.003196630363},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"2a921871-4c5f-4424-a85f-9081ee420b55","savedPayload":{"position":{"x":23335.23267686281,"y":12697.003196630363},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Up 5","config":"{\n \"codeName\": \"nextUp5\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[5].greaterProbability.toFixed(2)","id":"e7709492-43e5-45e0-b94c-f6c63b5c4df4","savedPayload":{"position":{"x":23548.76054343602,"y":12712.652362356817},"targetPosition":{"x":23373.4273861981,"y":12769.588935164249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"5567d2d1-97d3-4551-ad1d-68b5fe8fca5e","savedPayload":{"position":{"x":23373.4273861981,"y":12769.588935164249},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Down 5","config":"{\n \"codeName\": \"nextDown5\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[5].greaterProbability.toFixed(2)","id":"95292d68-dcaa-475d-bb56-12634a6ef26e","savedPayload":{"position":{"x":23467.990213304132,"y":12605.033866064345},"targetPosition":{"x":23414.040457085746,"y":12792.997798624987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"c4baa1b9-4879-4632-90bd-6b4aca0cc145","savedPayload":{"position":{"x":23414.040457085746,"y":12792.997798624987},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Up 6","config":"{\n \"codeName\": \"nextUp6\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[6].greaterProbability.toFixed(2)","id":"f459f2bb-0cf3-44da-a6e0-37495f592d7e","savedPayload":{"position":{"x":23562.631581606976,"y":12640.177614702225},"targetPosition":{"x":23562.350053848593,"y":12729.860228781854},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"0c024e0d-6a5a-4631-9484-a563525dfad2","savedPayload":{"position":{"x":23562.350053848593,"y":12729.860228781854},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Down 6","config":"{\n \"codeName\": \"nextDown6\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[6].greaterProbability.toFixed(2)","id":"38310cb6-0f60-412b-b694-35a4d324f5c8","savedPayload":{"position":{"x":23748.90383373148,"y":12945.8723578533},"targetPosition":{"x":23448.179668996625,"y":12824.85654769626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"b8fb4ea6-e301-46e2-b3ca-7d1fa5d1dbb5","savedPayload":{"position":{"x":23448.179668996625,"y":12824.85654769626},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Up 7","config":"{\n \"codeName\": \"nextUp7\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[7].greaterProbability.toFixed(2)","id":"80bbe6d4-50ca-4ea2-b66c-ce3c71fd6fcc","savedPayload":{"position":{"x":23666.043489534175,"y":12699.094365701163},"targetPosition":{"x":23506.324920981784,"y":12785.801058590128},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"7c29b4a9-94e3-4b6c-b359-03ef39258389","savedPayload":{"position":{"x":23506.324920981784,"y":12785.801058590128},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Down 7","config":"{\n \"codeName\": \"nextDown7\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[7].greaterProbability.toFixed(2)","id":"30b30cd2-4c85-4b3f-b589-358db9495959","savedPayload":{"position":{"x":23630.777057043535,"y":12752.338093165232},"targetPosition":{"x":23551.946981853536,"y":12811.289369349995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"5914dd39-dadd-4294-acb5-8088f81921df","savedPayload":{"position":{"x":23551.946981853536,"y":12811.289369349995},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Up 8","config":"{\n \"codeName\": \"nextUp8\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[8].greaterProbability.toFixed(2)","id":"c14ab122-acfa-46ff-8aa8-b6e4e01f29b4","savedPayload":{"position":{"x":23814.145255432177,"y":12837.665824600092},"targetPosition":{"x":23541.728176646415,"y":12977.068002326238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"da43c6d0-55f3-4422-9b23-24e6d19318ea","savedPayload":{"position":{"x":23541.728176646415,"y":12977.068002326238},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Down 8","config":"{\n \"codeName\": \"nextDown8\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[8].greaterProbability.toFixed(2)","id":"fac4074e-62de-461d-9c5e-78b492764124","savedPayload":{"position":{"x":23699.80665965415,"y":12835.024331159371},"targetPosition":{"x":23582.34554213275,"y":12844.658698537594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"2257ff95-2ad1-436c-8c75-d97ee7911623","savedPayload":{"position":{"x":23582.34554213275,"y":12844.658698537594},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Up9","config":"{\n \"codeName\": \"nextUp9\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[9].greaterProbability.toFixed(2)","id":"a5634a8e-ac5f-4542-98ab-6fbc7c6799e9","savedPayload":{"position":{"x":23669.1584318763,"y":12863.741458133596},"targetPosition":{"x":23621.23833482398,"y":12913.358068914158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"89252867-2e51-49cc-8061-710857117262","savedPayload":{"position":{"x":23621.23833482398,"y":12913.358068914158},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Down 9","config":"{\n \"codeName\": \"nextDown9\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[9].greaterProbability.toFixed(2)","id":"09d70a53-4761-4fb7-ac02-3bc9d3c9f118","savedPayload":{"position":{"x":23766.259277238514,"y":12926.86762714071},"targetPosition":{"x":23729.52324236529,"y":12985.231142411598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"3fb2d973-7ed0-4266-9bbe-927c880f27fc","savedPayload":{"position":{"x":23729.52324236529,"y":12985.231142411598},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Up 10","config":"{\n \"codeName\": \"nextUp10\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayUp[10].greaterProbability.toFixed(2)","id":"971a4486-0ee2-4451-99f8-2d1183e3519c","savedPayload":{"position":{"x":23655.564329373778,"y":13128.62085612311},"targetPosition":{"x":23577.108900562383,"y":12986.284998083325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"c5370b4b-5736-4f38-b026-7ee211e550f0","savedPayload":{"position":{"x":23577.108900562383,"y":12986.284998083325},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Down 10","config":"{\n \"codeName\": \"nextDown10\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.arrayDown[10].greaterProbability.toFixed(2)","id":"aa0f0d5f-47b7-4c30-a8e5-c0204646b0b8","savedPayload":{"position":{"x":23772.03111045089,"y":13077.705923515923},"targetPosition":{"x":23659.84606657961,"y":13026.656201799564},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"8393bb69-756c-4809-95b1-71b459e49d89","savedPayload":{"position":{"x":23659.84606657961,"y":13026.656201799564},"targetPosition":{"x":23279.742180013905,"y":13088.290447563973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3a8e6c45-0172-4d5d-913d-4d9da74a66c2","savedPayload":{"position":{"x":23279.751367406945,"y":13088.26245973231},"targetPosition":{"x":24365.94914810566,"y":13088.257412841824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"let channel = record.current // Our main dependencies are candles\nvariable.count.all++\n\nif (channel.direction === \"Up\") {\n\n variable.count.up++\n\n if (channel.period > variable.max.up) { variable.max.up = channel.period }\n\n if (channel.period <= variable.MAX_PERIODS) {\n let data = variable.arrayUp[channel.period]\n data.count++\n data.probability = data.count / variable.count.up\n variable.arrayUp[channel.period] = data\n }\n\n for (let i = 1; i <= variable.MAX_PERIODS; i++) {\n if (channel.period > i) {\n let data = variable.arrayUp[i]\n data.greaterCount++\n data.greaterProbability = data.greaterCount / variable.count.up\n variable.arrayUp[i] = data\n }\n }\n}\n\nif (channel.direction === \"Down\") {\n\n variable.count.down++\n\n if (channel.period > variable.max.down) { variable.max.down = channel.period }\n\n if (channel.period <= variable.MAX_PERIODS) {\n let data = variable.arrayDown[channel.period]\n data.count++\n data.probability = data.count / variable.count.down\n variable.arrayDown[channel.period] = data\n }\n\n for (let i = 1; i <= variable.MAX_PERIODS; i++) {\n if (channel.period > i) {\n let data = variable.arrayDown[i]\n data.greaterCount++\n data.greaterProbability = data.greaterCount / variable.count.up\n variable.arrayDown[i] = data\n }\n }\n}\n\nif (channel.direction === \"Side\") {\n\n variable.count.side++\n\n if (channel.period > variable.max.side) { variable.max.side = channel.period }\n\n if (channel.period <= variable.MAX_PERIODS) {\n let data = variable.arraySide[channel.period]\n data.count++\n data.probability = data.count / variable.count.side\n variable.arraySide[channel.period] = data\n }\n\n for (let i = 1; i <= variable.MAX_PERIODS; i++) {\n if (channel.period > i) {\n let data = variable.arraySide[i]\n data.greaterCount++\n data.greaterProbability = data.greaterCount / variable.count.up\n variable.arraySide[i] = data\n }\n }\n}\n\nvariable.probability.up = variable.count.up / variable.count.all\nvariable.probability.down = variable.count.down / variable.count.all\nvariable.probability.side = variable.count.side / variable.count.all\n\n","id":"c15afb69-a887-4bb7-90b0-7828ed44cc36","savedPayload":{"position":{"x":23840.29812720107,"y":12876.117110924382},"targetPosition":{"x":23976.245455225304,"y":12890.463156261889},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6363cb92-acac-4e9f-b390-e759c691b3f4","savedPayload":{"position":{"x":23976.245455225304,"y":12890.463156261889},"targetPosition":{"x":24111.60035113327,"y":12903.920413605096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"variable = {\n MAX_PERIODS: 10,\n count: {\n all: 0,\n up: 0,\n down: 0,\n side: 0\n },\n max: {\n up: 0,\n down: 0,\n side: 0\n },\n probability: {\n up: 0,\n down: 0,\n side: 0\n },\n arrayUp: [],\n arrayDown: [],\n arraySide: []\n}\n\nfor (let i = 0; i <= variable.MAX_PERIODS; i++) {\n let dataUp = {\n count: 0,\n probability: 0,\n greaterCount: 0,\n greaterProbability: 0\n }\n let dataDown = {\n count: 0,\n probability: 0,\n greaterCount: 0,\n greaterProbability: 0\n }\n let dataSide = {\n count: 0,\n probability: 0,\n greaterCount: 0,\n greaterProbability: 0\n }\n variable.arrayUp.push(dataUp)\n variable.arrayDown.push(dataDown)\n variable.arraySide.push(dataSide)\n}\n","id":"3ab58fbc-1e9c-42c6-9396-85f2476039ea","savedPayload":{"position":{"x":24021.627765735666,"y":12613.67723158462},"targetPosition":{"x":24078.11335591874,"y":12739.13668888178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"51e8fb5d-98ce-4eae-9b92-cdea22017c3e","savedPayload":{"position":{"x":24078.11335591874,"y":12739.13668888178},"targetPosition":{"x":24111.60035113327,"y":12903.920413605096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"216d8d3f-305e-41d7-844f-044244ba4c86","savedPayload":{"position":{"x":24111.60035113327,"y":12903.920413605096},"targetPosition":{"x":24365.94914810566,"y":13088.257412841824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6f5208bc-786c-4fe8-876a-e1d3550db36d","savedPayload":{"position":{"x":24256.493339480294,"y":12777.469525516837},"targetPosition":{"x":24687.68912809008,"y":12777.467848396518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Candles Channels Probabilities","id":"194dbe67-1ef8-47a3-8d1f-d769f9d19b55"}}}],"id":"4309c865-1bac-404b-8904-5ac6405d2993","savedPayload":{"position":{"x":24687.959001850253,"y":12844.043964355043},"targetPosition":{"x":24687.956165025786,"y":12377.91976516634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"plotters":[{"type":"Plotter","name":"Candles Probabilities","config":"{\n\"codeName\": \"Candles-Probabilities\"\n}","modules":[{"type":"Plotter Module","name":"Candles Probabilities","config":"{\n\t\"codeName\": \"Candles-Probabilities\",\n \"icon\": \"moving-average\"\n}","panels":[{"type":"Plotter Panel","name":"Candles Probabilities","config":"{ \n\"codeName\": \"Candles-Probabilities\"\n}","panelData":[{"type":"Panel Data","name":"Direction Up","config":"{\n \"valueDecimals\": 6\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.directionUp","id":"896d5095-3ca6-47b8-8108-145e2e363f32","savedPayload":{"position":{"x":23450.78270336168,"y":12777.731533784625},"targetPosition":{"x":23451.09081655848,"y":12577.758957696398},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1b7eea96-210d-4fd8-a160-76f7bca629ba","savedPayload":{"position":{"x":23451.09081655848,"y":12577.758957696398},"targetPosition":{"x":23451.062752882197,"y":12377.914865074006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Direction Down","config":"{\n \"valueDecimals\": 6\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.directionDown","id":"28b81006-e70c-4608-a695-bce4a8933a8f","savedPayload":{"position":{"x":23050.868506631003,"y":12377.91701435546},"targetPosition":{"x":23251.17130210325,"y":12377.911682663043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"11a6da40-b053-4c51-a929-af711aa02cf6","savedPayload":{"position":{"x":23251.17130210325,"y":12377.911682663043},"targetPosition":{"x":23451.062752882197,"y":12377.914865074006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Direction Side","config":"{\n \"valueDecimals\": 6\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.directionSide","id":"fbd5a4b7-18ff-47d5-82b8-c600cc4fac99","savedPayload":{"position":{"x":23450.776938579078,"y":11978.087830479888},"targetPosition":{"x":23451.08772439287,"y":12178.050604192098},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"46500c39-2a45-4836-ab76-baaac8b98100","savedPayload":{"position":{"x":23451.08772439287,"y":12178.050604192098},"targetPosition":{"x":23451.062752882197,"y":12377.914865074006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3102069a-4a2a-41e6-aa8d-f71dc48148f2","savedPayload":{"position":{"x":23451.062752882197,"y":12377.914865074006},"targetPosition":{"x":23850.105611657826,"y":12377.917823892521},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ecab3716-75a4-4752-b826-1d5df9ec7325","savedPayload":{"position":{"x":23850.105611657826,"y":12377.917823892521},"targetPosition":{"x":24288.1375769354,"y":12377.91676551125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"bf60e853-e860-4fbf-8922-c7430406b12d","savedPayload":{"position":{"x":24232.91647456989,"y":12377.915953972333},"targetPosition":{"x":24687.956165025786,"y":12377.91976516634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"Candles Channels Probabilities","config":"{\n\"codeName\": \"Candles-Channels-Probabilities\"\n}","modules":[{"type":"Plotter Module","name":"Candles Channels Probabilities","config":"{ \n\"codeName\": \"Candles-Channels-Probabilities\"\n}","panels":[{"type":"Plotter Panel","name":"Candles Channels Probabilities","config":"{ \n\"codeName\": \"Candles Channels Probabilities\"\n}","panelData":[{"type":"Panel Data","name":"Count All","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.countAll","id":"fa576991-5a1c-4a7b-b6f0-16a26b50b534","savedPayload":{"position":{"x":25031.786543082988,"y":11637.949705239684},"targetPosition":{"x":24676.38490468017,"y":11537.410396498097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0ead2e06-daea-4212-aff2-3564d6f1ac14","savedPayload":{"position":{"x":24676.38490468017,"y":11537.410396498097},"targetPosition":{"x":24320.692770899135,"y":11429.035326538513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Count Up","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.countUp","id":"b495344a-0ee6-4b91-a38e-c59728bc4fa8","savedPayload":{"position":{"x":24803.56801826581,"y":11972.489483838015},"targetPosition":{"x":24555.13487210452,"y":11702.008752459622},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"786019d8-2fec-4feb-a784-d32f35c013e6","savedPayload":{"position":{"x":24555.13487210452,"y":11702.008752459622},"targetPosition":{"x":24320.692770899135,"y":11429.035326538513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Count Down","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.countDown","id":"1cd50ef3-9d6e-4c28-9789-785d250dfd77","savedPayload":{"position":{"x":24445.125426540406,"y":12152.802184843835},"targetPosition":{"x":24382.872587188085,"y":11791.109170247972},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"adebe92f-1d1a-4afb-b61d-7081f6b290f4","savedPayload":{"position":{"x":24382.872587188085,"y":11791.109170247972},"targetPosition":{"x":24320.692770899135,"y":11429.035326538513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Count Side","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.countSide","id":"3aa9ba59-e653-4247-8cbf-4905f7382cc8","savedPayload":{"position":{"x":24034.20013371697,"y":12105.497012289932},"targetPosition":{"x":24177.402355381313,"y":11767.4284801743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fdb8d804-d6e6-4fa7-a71a-a79f4bb5c00a","savedPayload":{"position":{"x":24177.402355381313,"y":11767.4284801743},"targetPosition":{"x":24320.692770899135,"y":11429.035326538513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Max Periods Up","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.maxUp","id":"9ae88e84-07a2-4398-a17b-069443eef06a","savedPayload":{"position":{"x":23713.55136502789,"y":11843.401658441768},"targetPosition":{"x":24017.02373119288,"y":11636.268970049447},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f2fb198b-3027-4037-8b77-656c1a09e6fe","savedPayload":{"position":{"x":24017.02373119288,"y":11636.268970049447},"targetPosition":{"x":24320.692770899135,"y":11429.035326538513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Max Periods Down","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.maxDown","id":"5ab6f852-4d60-42e9-a268-7719ae05c039","savedPayload":{"position":{"x":23585.5861331559,"y":11449.364967677835},"targetPosition":{"x":23953.011037979744,"y":11439.186243052976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5836b0c5-4a10-4efa-b732-cfccb42f7bb3","savedPayload":{"position":{"x":23953.011037979744,"y":11439.186243052976},"targetPosition":{"x":24320.692770899135,"y":11429.035326538513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Max Periods Side","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.maxSide","id":"9bed7e40-98c0-4894-afb3-f65c8df9feef","savedPayload":{"position":{"x":23690.94952967508,"y":11049.233103090544},"targetPosition":{"x":24005.70179524251,"y":11239.057499315979},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"85e693e8-b634-4cb1-b983-6bd0d125d95b","savedPayload":{"position":{"x":24005.70179524251,"y":11239.057499315979},"targetPosition":{"x":24320.692770899135,"y":11429.035326538513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Probability Up","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityUp","id":"e68177d3-b01e-4d0d-a1f0-0cab3cdf295e","savedPayload":{"position":{"x":23996.21477026832,"y":10768.986414334948},"targetPosition":{"x":24158.36156819031,"y":11098.90204800275},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9187cf3a-e693-4f3f-a675-a0b677ebbf47","savedPayload":{"position":{"x":24158.36156819031,"y":11098.90204800275},"targetPosition":{"x":24320.692770899135,"y":11429.035326538513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Probability Down","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityDown","id":"1053b129-d1bf-4c28-9a67-bfa678f3149b","savedPayload":{"position":{"x":24404.0990151672,"y":10698.274452736934},"targetPosition":{"x":24362.40818122062,"y":11063.61678811194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e023b233-b20a-4645-a96b-9ca6f9ed1f2d","savedPayload":{"position":{"x":24362.40818122062,"y":11063.61678811194},"targetPosition":{"x":24320.692770899135,"y":11429.035326538513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Probability Side","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilitySide","id":"ec9d0a16-b97b-44e0-a659-8a4876f759fc","savedPayload":{"position":{"x":24766.74965101587,"y":10835.246015163139},"targetPosition":{"x":24540.095129045265,"y":11126.988392369043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0897183b-3295-4559-93b5-d961822f9e3f","savedPayload":{"position":{"x":24540.095129045265,"y":11126.988392369043},"targetPosition":{"x":24320.692770899135,"y":11429.035326538513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9b4851ba-9cd0-42e4-9929-6e4650800b94","savedPayload":{"position":{"x":24218.975849311275,"y":11913.038037832059},"targetPosition":{"x":24687.959017102425,"y":11540.076428488494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Candles Channels Up Probabilities","config":"{ \n\"codeName\": \"Candles Channels Up Probabilities\"\n}","panelData":[{"type":"Panel Data","name":"1 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityUp1","id":"07e00144-4d7c-4be0-9446-fcce6a7c0e6a","savedPayload":{"position":{"x":24401.488226526602,"y":11970.421992573934},"targetPosition":{"x":24370.33180270917,"y":11420.722579257872},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bc260d63-484b-4fb2-850a-c8a57b386c95","savedPayload":{"position":{"x":24370.33180270917,"y":11420.722579257872},"targetPosition":{"x":24339.207975975743,"y":10870.946994565682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"2 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityUp2","id":"35ca47e6-f52a-4ee5-9839-b2841f987d78","savedPayload":{"position":{"x":23797.251828303957,"y":11829.738113597405},"targetPosition":{"x":24068.180430871325,"y":11350.31084991745},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4908d680-f84a-49d5-ba5f-7abec1219b9f","savedPayload":{"position":{"x":24068.180430871325,"y":11350.31084991745},"targetPosition":{"x":24339.207975975743,"y":10870.946994565682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"3 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityUp3","id":"44a7d661-accf-4962-90f0-1ab53c99c5ab","savedPayload":{"position":{"x":23364.727559694693,"y":11384.674953693157},"targetPosition":{"x":23851.916876420855,"y":11127.815653453981},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e658351e-118c-481f-8387-53e1c7dc3d1e","savedPayload":{"position":{"x":23851.916876420855,"y":11127.815653453981},"targetPosition":{"x":24339.207975975743,"y":10870.946994565682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"4 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityUp4","id":"a6387b2c-5f86-44e3-a298-a25fb5667e37","savedPayload":{"position":{"x":23241.490894375147,"y":10776.677817604135},"targetPosition":{"x":23790.298015104174,"y":10823.792807939371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9679e258-89b4-4cbc-81e0-78c2d53f2a76","savedPayload":{"position":{"x":23790.298015104174,"y":10823.792807939371},"targetPosition":{"x":24339.207975975743,"y":10870.946994565682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"5 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityUp5","id":"7867c03a-d26f-4ea3-a7d2-6e3042e4a5e9","savedPayload":{"position":{"x":23466.78385195505,"y":10198.13520086962},"targetPosition":{"x":23902.953588559987,"y":10534.497144540357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"000c1693-1ca1-481f-99ad-64dc0b3d864f","savedPayload":{"position":{"x":23902.953588559987,"y":10534.497144540357},"targetPosition":{"x":24339.207975975743,"y":10870.946994565682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"6 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityUp6","id":"8dde6fd4-76ad-43cd-b65a-c8b2cd344fde","savedPayload":{"position":{"x":23969.106079861893,"y":9833.197349098384},"targetPosition":{"x":24154.13473491888,"y":10352.010896242717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d59a341d-36d1-4780-86f0-332a60cdc7a8","savedPayload":{"position":{"x":24154.13473491888,"y":10352.010896242717},"targetPosition":{"x":24339.207975975743,"y":10870.946994565682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"7 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityUp7","id":"3e3d36c0-c609-47cd-b50c-b67ef9033d13","savedPayload":{"position":{"x":24588.52560519175,"y":9797.784959843999},"targetPosition":{"x":24463.87437877179,"y":10334.299837034167},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"15c0e7d0-aef2-485a-8e47-225002493c8a","savedPayload":{"position":{"x":24463.87437877179,"y":10334.299837034167},"targetPosition":{"x":24339.207975975743,"y":10870.946994565682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"8 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityUp8","id":"915d2648-2b9f-4594-904d-3310da162972","savedPayload":{"position":{"x":25129.011391108626,"y":10103.141280879736},"targetPosition":{"x":24734.137535828293,"y":10486.977596800602},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3c5cc745-31f0-442c-86ab-2de4fe641a8a","savedPayload":{"position":{"x":24734.137535828293,"y":10486.977596800602},"targetPosition":{"x":24339.207975975743,"y":10870.946994565682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"9 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityUp9","id":"7ecb2b5b-f932-48fe-95a0-9c2f86d771f9","savedPayload":{"position":{"x":25418.641289452295,"y":10651.962738912085},"targetPosition":{"x":24878.903918027194,"y":10761.349356873445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"64ef6260-28c6-4aca-9899-5b5e422716c8","savedPayload":{"position":{"x":24878.903918027194,"y":10761.349356873445},"targetPosition":{"x":24339.207975975743,"y":10870.946994565682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"10 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityUp10","id":"4a25b034-61a2-4050-85c7-9e39c5ebbafb","savedPayload":{"position":{"x":25365.78097028512,"y":11269.834232942343},"targetPosition":{"x":24852.51758385689,"y":11070.352890745271},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"57f242de-4438-408a-8e7d-17554c1d8602","savedPayload":{"position":{"x":24852.51758385689,"y":11070.352890745271},"targetPosition":{"x":24339.207975975743,"y":10870.946994565682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c9b2fa2a-7993-4602-9c5c-180175745dd4","savedPayload":{"position":{"x":24104.328708664765,"y":11406.989467748628},"targetPosition":{"x":24687.959017102425,"y":11540.076428488494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Candles Channels Down Probabilities","config":"{ \n\"codeName\": \"Candles Channels Down Probabilities\"\n}","panelData":[{"type":"Panel Data","name":"1 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityDown1","id":"23dca426-62bb-472d-a631-6de325f9f9e3","savedPayload":{"position":{"x":23960.0092206138,"y":11270.025357933253},"targetPosition":{"x":24473.363587782027,"y":11070.464386606489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"82ea7539-87d8-4801-8a55-5d72341f7981","savedPayload":{"position":{"x":24473.363587782027,"y":11070.464386606489},"targetPosition":{"x":24986.75788514276,"y":10870.974599099456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"2 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityDown2","id":"9f42086f-9981-47d0-a6ca-40b9f8cd555b","savedPayload":{"position":{"x":23907.14361723959,"y":10651.985126293901},"targetPosition":{"x":24446.968609020867,"y":10761.384170726704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5659eebc-8ea9-4d6c-bcc0-1bb7cfa83c8a","savedPayload":{"position":{"x":24446.968609020867,"y":10761.384170726704},"targetPosition":{"x":24986.75788514276,"y":10870.974599099456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"3 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityDown3","id":"1024ff8c-10a7-4bc0-bfd5-6fde53b25151","savedPayload":{"position":{"x":24196.84229575479,"y":10103.080761236564},"targetPosition":{"x":24591.776016343032,"y":10486.96841415433},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4e4162b5-9989-4ced-954c-024c643b354b","savedPayload":{"position":{"x":24591.776016343032,"y":10486.96841415433},"targetPosition":{"x":24986.75788514276,"y":10870.974599099456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"4 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityDown4","id":"cfee4218-a9d7-4649-8118-c68f4c04917d","savedPayload":{"position":{"x":24737.457605104104,"y":9797.849668506351},"targetPosition":{"x":24862.102456226654,"y":10334.348991709097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"40026d30-b3ce-4a0c-8ae4-50ab1847b6f8","savedPayload":{"position":{"x":24862.102456226654,"y":10334.348991709097},"targetPosition":{"x":24986.75788514276,"y":10870.974599099456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"5 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityDown5","id":"49be0cfe-1c4e-4bee-96c5-93cc97022dfc","savedPayload":{"position":{"x":25356.83427458366,"y":9833.305437497711},"targetPosition":{"x":25171.820468628877,"y":10352.079042844025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2534a50-5cc5-4fca-a800-859c88427ab3","savedPayload":{"position":{"x":25171.820468628877,"y":10352.079042844025},"targetPosition":{"x":24986.75788514276,"y":10870.974599099456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"6 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityDown6","id":"a9411068-45d1-409c-b8d3-91750a9f1f61","savedPayload":{"position":{"x":25859.125293677116,"y":10198.214815011685},"targetPosition":{"x":25422.986554496136,"y":10534.548878913622},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"043a6c35-a878-4082-8b98-b58ca01fb5a0","savedPayload":{"position":{"x":25422.986554496136,"y":10534.548878913622},"targetPosition":{"x":24986.75788514276,"y":10870.974599099456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"7 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityDown7","id":"a2d057f6-857e-41cc-b88e-ef6240cda541","savedPayload":{"position":{"x":26084.273253238458,"y":10776.72924963025},"targetPosition":{"x":25535.573342411364,"y":10823.828497712922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"982ba082-d3a1-4c25-a712-fd22585e4473","savedPayload":{"position":{"x":25535.573342411364,"y":10823.828497712922},"targetPosition":{"x":24986.75788514276,"y":10870.974599099456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"8 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityDown8","id":"6837746d-276b-473f-9a1b-6a2ee79bdb4d","savedPayload":{"position":{"x":25961.05317826982,"y":11384.509465944962},"targetPosition":{"x":25473.95421333837,"y":11127.750106840474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9379c93b-0cdd-40b0-a8b0-fc1019f5b082","savedPayload":{"position":{"x":25473.95421333837,"y":11127.750106840474},"targetPosition":{"x":24986.75788514276,"y":10870.974599099456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"9 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityDown9","id":"f59472a9-6507-4c28-8820-06d2ff4d4cc7","savedPayload":{"position":{"x":25528.614727914424,"y":11829.364366124597},"targetPosition":{"x":25257.743614082236,"y":11350.157861767471},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d612b2c7-503f-4327-a7d3-a6d0ca9e7b91","savedPayload":{"position":{"x":25257.743614082236,"y":11350.157861767471},"targetPosition":{"x":24986.75788514276,"y":10870.974599099456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"10 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilityDown10","id":"0c2a9662-fb18-45c1-8f0a-fb7339601cd2","savedPayload":{"position":{"x":24924.557045445123,"y":11970.019227915036},"targetPosition":{"x":24955.693922649385,"y":11420.552014227083},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4f766ff2-0076-41b3-836d-4cbba53b6b4b","savedPayload":{"position":{"x":24955.693922649385,"y":11420.552014227083},"targetPosition":{"x":24986.75788514276,"y":10870.974599099456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"af3d5d0c-21a1-4fe7-83f9-9afabd3cf16f","savedPayload":{"position":{"x":24428.323624924153,"y":11000.836473659861},"targetPosition":{"x":24687.959017102425,"y":11540.076428488494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Candles Channels Side Probabilities","config":"{ \n\"codeName\": \"Candles Channels Side Probabilities\"\n}","panelData":[{"type":"Panel Data","name":"1 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilitySide1","id":"f7bc6a24-6277-4c81-89cf-b07a285b9fda","savedPayload":{"position":{"x":24039.36721113717,"y":10988.652538723367},"targetPosition":{"x":24589.741287978035,"y":11014.897031011817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1ae051e6-771f-4332-87fa-ccb3faa468d5","savedPayload":{"position":{"x":24589.741287978035,"y":11014.897031011817},"targetPosition":{"x":25140.047813791247,"y":11041.257103328917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"2 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilitySide2","id":"cfc70522-309f-4f8a-962d-e98bbd6bfc06","savedPayload":{"position":{"x":24255.512558245417,"y":10381.716663821095},"targetPosition":{"x":24704.16743710518,"y":10701.2460075604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c8f2d5bb-14c3-4094-bc2b-2b5c46f4dc59","savedPayload":{"position":{"x":24704.16743710518,"y":10701.2460075604},"targetPosition":{"x":25140.047813791247,"y":11041.257103328917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"3 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilitySide3","id":"269c5548-643a-4c77-a4bb-33d3741b5aa2","savedPayload":{"position":{"x":24730.796719546437,"y":10018.337477761706},"targetPosition":{"x":24935.421998100916,"y":10529.731969459968},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ebc2b7eb-e399-4025-a222-0c288a218b9c","savedPayload":{"position":{"x":24935.421998100916,"y":10529.731969459968},"targetPosition":{"x":25140.047813791247,"y":11041.257103328917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"4 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilitySide4","id":"3cb178ac-79a4-4742-b056-4242f1a44a4f","savedPayload":{"position":{"x":25348.418847282705,"y":9959.366332019994},"targetPosition":{"x":25244.248954110248,"y":10500.25271306042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9b18832c-c75a-48d5-84a8-10c87c3ecaa7","savedPayload":{"position":{"x":25244.248954110248,"y":10500.25271306042},"targetPosition":{"x":25140.047813791247,"y":11041.257103328917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"5 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilitySide5","id":"886987c2-c671-4fb1-8e4f-2531678fdf27","savedPayload":{"position":{"x":25900.292524328037,"y":10243.881674638014},"targetPosition":{"x":25520.206597911812,"y":10642.52100496909},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"02d20e04-267c-4947-aaef-975b0afbc6be","savedPayload":{"position":{"x":25520.206597911812,"y":10642.52100496909},"targetPosition":{"x":25140.047813791247,"y":11041.257103328917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"6 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilitySide6","id":"1c3ef0f9-8202-4bd1-b2cf-d5f093a0b93e","savedPayload":{"position":{"x":26210.767425085658,"y":10781.5773648049},"targetPosition":{"x":25675.4634381429,"y":10911.387590877597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8263c56f-f813-4b09-a3ec-d03873f61cfb","savedPayload":{"position":{"x":25675.4634381429,"y":10911.387590877597},"targetPosition":{"x":25140.047813791247,"y":11041.257103328917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"7 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilitySide7","id":"65c5aefe-26f5-43b7-9db4-92869f50c17d","savedPayload":{"position":{"x":26181.27997930872,"y":11401.295667615694},"targetPosition":{"x":25660.71972795057,"y":11221.265762447514},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"defe61e1-b9f0-4a78-89fb-d9793c2b6a30","savedPayload":{"position":{"x":25660.71972795057,"y":11221.265762447514},"targetPosition":{"x":25140.047813791247,"y":11041.257103328917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"8 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilitySide8","id":"4ec4604d-2c8a-43e2-9c86-e4cd4f84e6cc","savedPayload":{"position":{"x":25821.309587723706,"y":11906.995953084137},"targetPosition":{"x":25480.729108967014,"y":11474.085314254056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"34bc4b9d-8740-49d3-b289-3a15f1e5ad90","savedPayload":{"position":{"x":25480.729108967014,"y":11474.085314254056},"targetPosition":{"x":25140.047813791247,"y":11041.257103328917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"9 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilitySide9","id":"7896244a-82de-46a3-9ad5-973a8a46bc47","savedPayload":{"position":{"x":25270.11793328525,"y":12136.877910647114},"targetPosition":{"x":25217.719282376278,"y":11588.59974956341},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3700449f-d0f2-4dc6-aad2-8ed6ba3dffb3","savedPayload":{"position":{"x":25217.719282376278,"y":11588.59974956341},"targetPosition":{"x":25140.047813791247,"y":11041.257103328917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"10 Periods","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.probabilitySide10","id":"eefa0c8e-3bbd-4f17-bf18-da2ea4adce72","savedPayload":{"position":{"x":24635.560322455225,"y":12020.301318342992},"targetPosition":{"x":24887.916785093585,"y":11530.774342251336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"319c7144-ca2d-47de-acc4-ea71a008def2","savedPayload":{"position":{"x":24887.916785093585,"y":11530.774342251336},"targetPosition":{"x":25140.047813791247,"y":11041.257103328917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f4f7ebb6-52dc-4031-9822-f0391e95e043","savedPayload":{"position":{"x":24947.594749828182,"y":11000.837883563845},"targetPosition":{"x":24687.959017102425,"y":11540.076428488494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Candles Channels Next Up","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"1 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextUp1","id":"4c2ab782-9799-4259-99ee-7ffeb3428f92","savedPayload":{"position":{"x":24958.75971512385,"y":11239.754024382648},"targetPosition":{"x":25007.12581779335,"y":11334.01237976527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"6ab10cae-4aa4-45f6-b5c7-9baf4c0691a1","savedPayload":{"position":{"x":25007.12581779335,"y":11334.01237976527},"targetPosition":{"x":25139.89472119673,"y":11591.786930692188},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"2 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextUp2","id":"751ec0df-e3bc-404f-a1b0-d17647bb854e","savedPayload":{"position":{"x":25177.621066135634,"y":11197.32726421574},"targetPosition":{"x":25167.249870552205,"y":11305.502341348198},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"17e442b4-eb1a-4c17-8b63-d731b95c983a","savedPayload":{"position":{"x":25167.249870552205,"y":11305.502341348198},"targetPosition":{"x":25139.89472119673,"y":11591.786930692188},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"3 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextUp3","id":"4ebf70da-30e3-4b0e-bc5c-029e30a705ec","savedPayload":{"position":{"x":25384.748207265126,"y":11280.54236567676},"targetPosition":{"x":25319.173032682967,"y":11363.874228412984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"162d2a00-b00c-4284-9c01-1837f0161e1b","savedPayload":{"position":{"x":25319.173032682967,"y":11363.874228412984},"targetPosition":{"x":25139.89472119673,"y":11591.786930692188},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"4 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextUp4","id":"1101c09f-831c-4a7d-9ce2-0c23a66a240f","savedPayload":{"position":{"x":25514.092506393747,"y":11462.376620086816},"targetPosition":{"x":25413.846317868913,"y":11497.022434896207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"fa5a33a9-8d8a-408c-93bd-8b06b3fbafe6","savedPayload":{"position":{"x":25413.846317868913,"y":11497.022434896207},"targetPosition":{"x":25139.89472119673,"y":11591.786930692188},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"5 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextUp5","id":"211e8218-8abd-476b-8b61-f95235f54548","savedPayload":{"position":{"x":25524.528479751152,"y":11684.805886480775},"targetPosition":{"x":25421.626069955975,"y":11659.985360464652},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"0c4098da-6a1c-45a2-b0cc-e67f995f265d","savedPayload":{"position":{"x":25421.626069955975,"y":11659.985360464652},"targetPosition":{"x":25139.89472119673,"y":11591.786930692188},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"6 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextUp6","id":"a471a5b8-7716-42d9-8c4e-c493e427733c","savedPayload":{"position":{"x":25413.402621164536,"y":11878.28322891039},"targetPosition":{"x":25340.089326850302,"y":11801.567610726866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"f4b0d4a0-fa30-4e94-a2f1-f8a2e94eb991","savedPayload":{"position":{"x":25340.089326850302,"y":11801.567610726866},"targetPosition":{"x":25139.89472119673,"y":11591.786930692188},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"7 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextUp7","id":"fc8aa338-c938-4827-acfd-335a685a45a7","savedPayload":{"position":{"x":25214.938558017926,"y":11980.360147401909},"targetPosition":{"x":25194.819872931144,"y":11876.359041759575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"dd6b2919-8a58-4817-91da-8e2d591633e2","savedPayload":{"position":{"x":25194.819872931144,"y":11876.359041759575},"targetPosition":{"x":25139.89472119673,"y":11591.786930692188},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"8 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextUp8","id":"97cdc151-6085-4925-bf5f-b51f757f12c9","savedPayload":{"position":{"x":24993.176571467688,"y":11959.273887459098},"targetPosition":{"x":25032.34757338953,"y":11860.937606416444},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"d3c74a33-f336-4d3a-9646-064fee673e10","savedPayload":{"position":{"x":25032.34757338953,"y":11860.937606416444},"targetPosition":{"x":25139.89472119673,"y":11591.786930692188},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"9 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextUp9","id":"26a6b54f-5c6f-43a6-94da-ea5381b4f53d","savedPayload":{"position":{"x":24817.502553833237,"y":11821.782757809538},"targetPosition":{"x":24903.790390169765,"y":11760.052109942166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"dff2a6e7-8415-4f8a-bfce-a5b7106db6e6","savedPayload":{"position":{"x":24903.790390169765,"y":11760.052109942166},"targetPosition":{"x":25139.89472119673,"y":11591.786930692188},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"10 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextUp10","id":"2b04f728-46ee-4056-bdee-d7b643308401","savedPayload":{"position":{"x":24744.817182324765,"y":11611.175396342676},"targetPosition":{"x":24850.66447573532,"y":11605.271655500492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"3ac887b6-7bdb-494d-8490-dab0c77aec2e","savedPayload":{"position":{"x":24850.66447573532,"y":11605.271655500492},"targetPosition":{"x":25139.89472119673,"y":11591.786930692188},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3b367a4d-115a-4d9e-b783-2d0c6e542735","savedPayload":{"position":{"x":25271.58987753905,"y":11406.996064070105},"targetPosition":{"x":24687.959017102425,"y":11540.076428488494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Candles Channels Next Down","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"1 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextDown1","id":"b3bb2ecb-6337-4d2c-8c89-245c7f73e108","savedPayload":{"position":{"x":24967.023669164948,"y":11285.641630844104},"targetPosition":{"x":24999.985782087977,"y":11383.71066621041},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"61b3b455-eb49-41a9-9de5-03d92c567f4a","savedPayload":{"position":{"x":24999.985782087977,"y":11383.71066621041},"targetPosition":{"x":25093.182395310658,"y":11659.551013432003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"2 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextDown2","id":"e989918e-5605-496d-a7f2-0ca713de39f0","savedPayload":{"position":{"x":25187.970633533092,"y":11283.186203202493},"targetPosition":{"x":25162.720401436225,"y":11381.218474789242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"2b917503-223e-4dde-8cf0-cb40412a6ec6","savedPayload":{"position":{"x":25162.720401436225,"y":11381.218474789242},"targetPosition":{"x":25093.182395310658,"y":11659.551013432003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"3 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextDown3","id":"63721d6c-2bb1-4da6-a8c6-ae21295382b0","savedPayload":{"position":{"x":25381.64112129956,"y":11388.322526005162},"targetPosition":{"x":25306.21279651732,"y":11459.179036246476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"2a8d6136-b67f-468a-8c38-d5b30701b1b8","savedPayload":{"position":{"x":25306.21279651732,"y":11459.179036246476},"targetPosition":{"x":25093.182395310658,"y":11659.551013432003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"4 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextDown4","id":"2fd80a46-7a01-4de0-b98e-3ac645d3b8ac","savedPayload":{"position":{"x":25481.488189094867,"y":11587.64391144822},"targetPosition":{"x":25382.096804497698,"y":11606.00201430045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"bc71245e-73f8-4442-ae03-7daa88da531c","savedPayload":{"position":{"x":25382.096804497698,"y":11606.00201430045},"targetPosition":{"x":25093.182395310658,"y":11659.551013432003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"5 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextDown5","id":"382438e9-28c2-4ff2-851a-20fca2d466e0","savedPayload":{"position":{"x":25459.282506567026,"y":11808.572195979426},"targetPosition":{"x":25365.353991317417,"y":11770.442460658844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"d63906ec-7de0-4edf-8947-96baca8dc478","savedPayload":{"position":{"x":25365.353991317417,"y":11770.442460658844},"targetPosition":{"x":25093.182395310658,"y":11659.551013432003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"6 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextDown6","id":"731bf25d-359a-463a-8a63-a0c5d3d0c306","savedPayload":{"position":{"x":25320.025641915898,"y":11982.108970402567},"targetPosition":{"x":25261.979417704584,"y":11899.725557417321},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"d25e4daa-306d-47b9-98fb-c8bb25dec5e0","savedPayload":{"position":{"x":25261.979417704584,"y":11899.725557417321},"targetPosition":{"x":25093.182395310658,"y":11659.551013432003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"7 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextDown7","id":"d0e9fb29-52c5-48e3-81c9-b6d74b42733f","savedPayload":{"position":{"x":25109.43879283625,"y":12053.653178794857},"targetPosition":{"x":25105.24481595322,"y":11952.965096499938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"22726c47-81aa-40ac-8b23-0b6f280f067c","savedPayload":{"position":{"x":25105.24481595322,"y":11952.965096499938},"targetPosition":{"x":25093.182395310658,"y":11659.551013432003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"8 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextDown8","id":"e0ce0822-3eb2-4429-8a67-b41c8fbf0cdd","savedPayload":{"position":{"x":24893.987984999883,"y":12000.100064948094},"targetPosition":{"x":24944.891097587486,"y":11912.879935570649},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"4ebe2345-d360-4de4-b58a-73a711fefa7a","savedPayload":{"position":{"x":24944.891097587486,"y":11912.879935570649},"targetPosition":{"x":25093.182395310658,"y":11659.551013432003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"9 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextDown9","id":"80873b6e-5349-407f-993a-2b5247f73b3f","savedPayload":{"position":{"x":24742.279388428866,"y":11838.101887201037},"targetPosition":{"x":24831.677023546636,"y":11792.314158681924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"1738151b-da20-4cc6-8565-87a08de1c2db","savedPayload":{"position":{"x":24831.677023546636,"y":11792.314158681924},"targetPosition":{"x":25093.182395310658,"y":11659.551013432003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"10 Period","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.nextDown10","id":"253de26c-204d-49f7-af4c-2945ce71dee3","savedPayload":{"position":{"x":24717.777503375833,"y":11598.148054067537},"targetPosition":{"x":24812.395175275815,"y":11633.885399724844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"c030125c-1b29-4743-bbd5-93a86a2bad7d","savedPayload":{"position":{"x":24812.395175275815,"y":11633.885399724844},"targetPosition":{"x":25093.182395310658,"y":11659.551013432003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c16dc1ed-9da7-45da-bf32-c205a1d52d55","savedPayload":{"position":{"x":25157.15019949812,"y":11913.066333936931},"targetPosition":{"x":24687.959017102425,"y":11540.076428488494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"194dbe67-1ef8-47a3-8d1f-d769f9d19b55","savedPayload":{"position":{"x":24687.959017102425,"y":11540.076428488494},"targetPosition":{"x":24687.95947714835,"y":11978.07499246695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a2224a2d-77d4-40ff-b632-a3629ce984f7","savedPayload":{"position":{"x":24687.956061134973,"y":11922.877378570005},"targetPosition":{"x":24687.956165025786,"y":12377.91976516634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"37e312af-e076-47aa-a1cd-bf5b2e16127d","savedPayload":{"position":{"x":24687.956165025786,"y":12377.91976516634},"targetPosition":{"x":24687.956165025786,"y":12377.91976516634},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}} \ No newline at end of file diff --git a/Includes/Data-Mines/Sparta.json b/Includes/Data-Mines/Sparta.json new file mode 100644 index 000000000..442e22d05 --- /dev/null +++ b/Includes/Data-Mines/Sparta.json @@ -0,0 +1 @@ +{"type":"Data Mine","name":"Sparta","config":"{\n\"codeName\": \"Sparta\"\n}","sensorBots":[],"indicatorBots":[{"type":"Indicator Bot","name":"SMA","config":"{\n\"codeName\": \"SMA\",\n\"repo\": \"SMA-Indicator-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates SMAs for Time Frames of 01-hs and above.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Popular SMAs","id":"5302effb-1f09-4a30-9f71-6956b8b9ca88","savedPayload":{"position":{"x":12646.524875439341,"y":17884.15279726723},"targetPosition":{"x":13033.370493339022,"y":17995.57687432203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"3b21f9d7-2cbc-4c23-80c8-cc5e5b06a22c"}}},{"type":"Output Dataset","name":"Multi-Period-Market Base11 SMAs","id":"8221593c-6298-4b4c-bfc2-cffbc9e5cd0f","savedPayload":{"position":{"x":12689.995349186209,"y":17780.21156437467},"targetPosition":{"x":13033.370493339022,"y":17995.57687432203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"af9b9cef-2a74-486f-b79e-047d68669a1f"}}},{"type":"Output Dataset","name":"Multi-Period-Market Base7 SMAs","id":"aabd0857-b4fc-404a-8967-967475ed3993","savedPayload":{"position":{"x":12759.155247109566,"y":17695.32100880714},"targetPosition":{"x":13033.370493339022,"y":17995.57687432203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"78a6ef37-4df8-4ac8-83a0-c9a732467c59"}}},{"type":"Output Dataset","name":"Multi-Period-Market Base6 SMAs","id":"dd00a77a-761e-404b-9e44-627335668112","savedPayload":{"position":{"x":12847.436629228832,"y":17633.27877304669},"targetPosition":{"x":13033.370493339022,"y":17995.57687432203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"c0862b3d-d35a-4d3e-8d80-258b8a01c37c"}}},{"type":"Output Dataset","name":"Muti-Period-Market Base5 SMAs","id":"b6426833-d2c7-4300-b610-801e12a7edfd","savedPayload":{"position":{"x":12974.065102353947,"y":17596.653739637215},"targetPosition":{"x":13033.370493339022,"y":17995.57687432203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Muti-Period-Market","id":"a5d28568-fb58-469a-9820-b9f0e8eab705"}}}],"outputDatasetFolders":[],"id":"85a56739-9351-444b-95e9-a57470dca38a","savedPayload":{"position":{"x":13033.370493339022,"y":17995.57687432203},"targetPosition":{"x":13340.035580225098,"y":18336.206545759305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"SMA Multi-Period-Market","config":"{\"mainUtility\": \"Self Reference\"}","id":"d49d1e94-1960-4121-8e40-be8af52947ee","savedPayload":{"position":{"x":13105.099120061017,"y":17722.726154577205},"targetPosition":{"x":13243.188191290305,"y":17877.49234657597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"81346f2f-13f2-46f4-85f5-a04b4d80f455"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","config":"{\"mainUtility\": \"Market Ending Point\"}","id":"f7cf0949-06fc-4c98-a399-61fac1671c6e","savedPayload":{"position":{"x":13188.582010418977,"y":17663.949280770838},"targetPosition":{"x":13243.188191290305,"y":17877.49234657597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"4228fdf3-e992-46b2-a91e-de95108a753d","savedPayload":{"position":{"x":13318.830192725001,"y":17687.462656207295},"targetPosition":{"x":13243.188191290305,"y":17877.49234657597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"dataMineDataDependencies":[],"id":"f404e748-b631-4cc5-975c-2a0736e55c0d","savedPayload":{"position":{"x":13243.188191290305,"y":17877.49234657597},"targetPosition":{"x":13340.035580225098,"y":18336.206545759305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"81346f2f-13f2-46f4-85f5-a04b4d80f455","savedPayload":{"position":{"x":13485.476074183298,"y":17890.225751836602},"targetPosition":{"x":13340.035580225098,"y":18336.206545759305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"2bce272e-2712-4f28-9736-03b51929aba2","savedPayload":{"position":{"x":13688.909460910472,"y":18022.421021414073},"targetPosition":{"x":13340.035580225098,"y":18336.206545759305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"b569db86-9ab5-4ba2-be41-357a9bce84b4","savedPayload":{"position":{"x":13799.411628560307,"y":18238.694086233143},"targetPosition":{"x":13340.035580225098,"y":18336.206545759305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297","savedPayload":{"position":{"x":13346.194501511281,"y":18327.1026161811},"targetPosition":{"x":13223.777190505187,"y":18710.89260208997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Describe what the process does.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily Popular SMAs","id":"417d3141-1e22-4ee6-b2d6-531a55b95c88","savedPayload":{"position":{"x":12945.481166306128,"y":17744.864478971638},"targetPosition":{"x":13278.966740149108,"y":17970.603129821582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"2c338fe0-385f-45ab-b210-b98ef013228d"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Base11 SMAs","id":"022edfeb-ec62-4cd9-85bf-20e9f444e3c1","savedPayload":{"position":{"x":13018.754214583862,"y":17659.00105006673},"targetPosition":{"x":13278.966740149108,"y":17970.603129821582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"de5cfa30-edbf-4d5b-8d7f-facfb69a0f3e"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Base7 SMAs","id":"42e89cd9-acbe-49cd-b6f6-7671317796d6","savedPayload":{"position":{"x":13110.996364690647,"y":17599.94934418037},"targetPosition":{"x":13278.966740149108,"y":17970.603129821582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f155e2ed-7082-4021-a4ff-a6f3cfd5683d"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Base6 SMAs","id":"a270e81a-4d70-4293-8a37-19191cf2ec23","savedPayload":{"position":{"x":13214.157992519797,"y":17568.232104188133},"targetPosition":{"x":13278.966740149108,"y":17970.603129821582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f5050eb2-0a99-464e-b5e2-2d8f40453e9a"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Base5 SMAs","id":"d3d1bc15-201c-4d00-ba2e-6401e5392c14","savedPayload":{"position":{"x":13345.875753147784,"y":17572.7686546539},"targetPosition":{"x":13278.966740149108,"y":17970.603129821582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"01f32aa3-55e9-4f8c-80c7-997b52073274"}}}],"outputDatasetFolders":[],"id":"ad03dff7-56b2-4980-bc14-1b6c41fdf6cf","savedPayload":{"position":{"x":13278.966740149108,"y":17970.603129821582},"targetPosition":{"x":13465.404115530702,"y":18389.378841623642},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"SMA Multi-Period-Daily","config":"{\"mainUtility\": \"Self Reference\"}","id":"d674a833-b9c8-4bdb-84de-e007ab243860","savedPayload":{"position":{"x":13409.872131316684,"y":17742.276622109373},"targetPosition":{"x":13515.076068765844,"y":17923.8304713826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"d2727d60-b26b-4e8b-a635-fbe78bc81240"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","config":"{\"mainUtility\": \"Market Ending Point\"}","id":"ba857809-2273-4280-aa19-4b50837abccb","savedPayload":{"position":{"x":13495.182008124093,"y":17691.851394751226},"targetPosition":{"x":13515.076068765844,"y":17923.8304713826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\"mainUtility\": \"Market Starting Point\"}","id":"40e12ba8-59dc-4eaf-a30d-07bb8192e0a6","savedPayload":{"position":{"x":13553.721089303755,"y":17741.18628709045},"targetPosition":{"x":13515.076068765844,"y":17923.8304713826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"5f5e40cb-841e-4b18-a249-a04d541d31a0","savedPayload":{"position":{"x":13684.048032973782,"y":17766.26178576011},"targetPosition":{"x":13515.076068765844,"y":17923.8304713826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"dataMineDataDependencies":[],"id":"b6aae3c7-2d70-4ffd-a5e5-951f0a565b13","savedPayload":{"position":{"x":13515.076068765844,"y":17923.8304713826},"targetPosition":{"x":13465.404115530702,"y":18389.378841623642},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"d2727d60-b26b-4e8b-a635-fbe78bc81240","savedPayload":{"position":{"x":13718.328962790618,"y":18043.289750735767},"targetPosition":{"x":13465.404115530702,"y":18389.378841623642},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"8b753072-e4c9-4671-a5ce-eea9e1c1ba0f","savedPayload":{"position":{"x":13857.970188745609,"y":18215.2544916171},"targetPosition":{"x":13465.404115530702,"y":18389.378841623642},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"87c9e783-adc5-40e3-b1fb-fdb2994c1217","savedPayload":{"position":{"x":13891.761341045496,"y":18434.202469140975},"targetPosition":{"x":13465.404115530702,"y":18389.378841623642},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f","savedPayload":{"position":{"x":13473.80992577683,"y":18378.85139265755},"targetPosition":{"x":13223.777190505187,"y":18710.89260208997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Popular SMAs","config":"{\n \"codeName\": \"Popular-SMAs\",\n \"singularVariableName\": \"popularSMA\",\n \"pluralVariableName\": \"popularSMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"3b21f9d7-2cbc-4c23-80c8-cc5e5b06a22c","savedPayload":{"position":{"x":13553.892239987252,"y":18056.644514359323},"targetPosition":{"x":13553.651536018762,"y":18477.902135419405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"2c338fe0-385f-45ab-b210-b98ef013228d","savedPayload":{"position":{"x":13801.540237730316,"y":18137.180692088798},"targetPosition":{"x":13553.651536018762,"y":18477.902135419405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"673a7fbf-1a73-4220-a561-84cf8b11c3a7","savedPayload":{"position":{"x":14507.924695051623,"y":17653.16657471693},"targetPosition":{"x":14721.05302748817,"y":17795.674905730688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"305fc918-e6df-48d7-a7b5-726e3fa8f958","savedPayload":{"position":{"x":14721.05302748817,"y":17795.674905730688},"targetPosition":{"x":15028.77982643066,"y":17998.88203264834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"002ffd5e-583c-4af5-87eb-a886fd3bc50e","savedPayload":{"position":{"x":14973.603695039865,"y":17375.603012546493},"targetPosition":{"x":14996.3312476163,"y":17630.63710266347},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a305a94d-3af9-430a-8642-5ffb1229710f","savedPayload":{"position":{"x":14996.3312476163,"y":17630.63710266347},"targetPosition":{"x":15028.77982643066,"y":17998.88203264834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA20","config":"{\n \"codeName\": \"sma20\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma20","id":"5adb676d-35a8-47b2-aa47-dc0e6edf8a81","savedPayload":{"position":{"x":15480.817001764228,"y":17566.85715392647},"targetPosition":{"x":15296.626156182776,"y":17742.98316192668},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1657736e-6bc4-4279-9e65-5b0b0cf737cb","savedPayload":{"position":{"x":15296.626156182776,"y":17742.98316192668},"targetPosition":{"x":15028.77982643066,"y":17998.88203264834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA50","config":"{\n \"codeName\": \"sma50\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma50","id":"85033109-c11c-43d2-84cc-4510dae276ca","savedPayload":{"position":{"x":15648.785939170595,"y":18082.28927443912},"targetPosition":{"x":15394.731787304258,"y":18048.578866712134},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e7f1f78d-3a6d-49a2-b522-4423bd8d6a82","savedPayload":{"position":{"x":15394.731787304258,"y":18048.578866712134},"targetPosition":{"x":15028.77982643066,"y":17998.88203264834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA100","config":"{\n \"codeName\": \"sma100\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma100","id":"43eebecb-65db-4e64-902a-582515e06daa","savedPayload":{"position":{"x":15350.727814957021,"y":18534.681627995746},"targetPosition":{"x":15218.735049944613,"y":18316.22416578915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"090fa9ea-f050-4315-9360-3958ce5debaa","savedPayload":{"position":{"x":15218.735049944613,"y":18316.22416578915},"targetPosition":{"x":15028.77982643066,"y":17998.88203264834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA200","config":"{\n \"codeName\": \"sma200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma200","id":"5bdf982c-5480-4f90-9ec2-7708bf2d4943","savedPayload":{"position":{"x":14811.150784380015,"y":18583.35452177403},"targetPosition":{"x":14899.650857326842,"y":18345.50154139768},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8146fe70-3592-4f27-af4a-d3d8e93268d1","savedPayload":{"position":{"x":14899.650857326842,"y":18345.50154139768},"targetPosition":{"x":15028.77982643066,"y":17998.88203264834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1b29d760-f7fe-48a5-928c-212a6f9a2486","savedPayload":{"position":{"x":14124.568856395072,"y":18292.468754961246},"targetPosition":{"x":13553.651536018762,"y":18477.902135419405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code. This goes at the Code of the Procedure Loop Object */\n\nlet candle = record.current // Our main dependencies are candles \nvariable.last200.push(candle.close) // Add the current close value to the last 200 array.\n\nif (variable.last200.length > 200) {\n variable.last200.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 200 elements.\n}\n\nvariable.sma20 = calculateSMA(20)\nvariable.sma50 = calculateSMA(50)\nvariable.sma100 = calculateSMA(100)\nvariable.sma200 = calculateSMA(200)\n\nfunction calculateSMA(periods) { // Having a function avoids us to repeat code.\n /* We check we have enough values to make the calculation */\n if (variable.last200.length < periods) { return 0 } // If we dont, we define the value is zero.\n\n let sum = 0 // Initialize sum variable. \n for (let i = variable.last200.length - periods; i < variable.last200.length; i++) { // Iterate through the last periods\n sum = sum + variable.last200[i]\n /*\n if (index > 18 && index < 22) { // You can debug what is going on by console logging whatever you need. \n console.log(\"index=\" + index + \" i=\" + i + \" variable.last200.length=\" + variable.last200.length + \" periods=\" + periods + \" sum=\" + sum + \" sum/periods=\" + (sum / periods) + \" currentValue=\" + (variable.last200[i]))\n }\n */\n }\n let sma = sum / periods\n return sma\n}","id":"a9904080-6677-45e0-bcac-f336e882380a","savedPayload":{"position":{"x":14367.761855199802,"y":18531.73783609256},"targetPosition":{"x":14171.597578569494,"y":18573.043473819063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"shortcutKey":"f"}}},"id":"52a2ea69-6420-40f6-90f0-3330d33e6f67","savedPayload":{"position":{"x":14171.597578569494,"y":18573.043473819063},"targetPosition":{"x":13975.579578563997,"y":18614.561951246375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code. This goes at the Code of the Procedure Initialization Object */\n\n/* \nThis is the array where we are going to store the last 200 elements, since we will not \nhave access to such long backwards history while processing daily files. In those situations\nwe only have access to the last 2 days of candles, which in 45 min for example, means 36\ncandles from the current day and 36 from the previous one. For that reason we will keep\nthis array with the last 200 candle.close values so that we overecome that limitation.\n*/\n\nvariable.last200 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")","id":"2790fd06-6fe8-4175-bbfc-854d9909aeb4","savedPayload":{"position":{"x":14244.229098947464,"y":18911.824220377955},"targetPosition":{"x":14110.001679170702,"y":18763.1211926291},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6d5772df-819e-4968-9e27-61981c08f0e2","savedPayload":{"position":{"x":14110.001679170702,"y":18763.1211926291},"targetPosition":{"x":13975.579578563997,"y":18614.561951246375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f1f881ff-a04f-4663-9747-2042d4581953","savedPayload":{"position":{"x":13975.579578563997,"y":18614.561951246375},"targetPosition":{"x":13553.651536018762,"y":18477.902135419405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34","savedPayload":{"position":{"x":13578.822803793733,"y":18460.940080771084},"targetPosition":{"x":13223.777190505187,"y":18710.89260208997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"SMA Popular","id":"ddf21e96-c312-4ebe-9e2b-f56e8ea072aa"}}},{"type":"Product Definition","name":"Base7 SMAs","config":"{\n \"codeName\": \"Base7-SMAs\",\n \"singularVariableName\": \"base7SMA\",\n \"pluralVariableName\": \"base7SMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"78a6ef37-4df8-4ac8-83a0-c9a732467c59","savedPayload":{"position":{"x":13741.317215876734,"y":18186.6061081173},"targetPosition":{"x":13610.18122244346,"y":18589.421304231524},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"f155e2ed-7082-4021-a4ff-a6f3cfd5683d","savedPayload":{"position":{"x":13952.574876909077,"y":18340.98548372221},"targetPosition":{"x":13610.18122244346,"y":18589.421304231524},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"6d7e37c5-d80e-44a3-8484-f532bcfc7819","savedPayload":{"position":{"x":15104.897823325087,"y":18378.363553629264},"targetPosition":{"x":15335.813817052507,"y":18481.724763005495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"87203f0b-0fb8-4875-8127-d715198bf01b","savedPayload":{"position":{"x":15335.813817052507,"y":18481.724763005495},"targetPosition":{"x":15674.68789636489,"y":18632.209791020214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"bf74ad1e-a569-4428-a387-b0f39bb63759","savedPayload":{"position":{"x":15257.905460123637,"y":18167.708283577573},"targetPosition":{"x":15427.310913475323,"y":18356.938092514698},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0bc477f0-8b7d-4c75-8613-0cc63a25a79d","savedPayload":{"position":{"x":15427.310913475323,"y":18356.938092514698},"targetPosition":{"x":15674.68789636489,"y":18632.209791020214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA7","config":"{\n \"codeName\": \"sma7\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma7","id":"1a89def9-4270-4584-93c3-86ca30cb184c","savedPayload":{"position":{"x":15482.458020972796,"y":18036.791284191044},"targetPosition":{"x":15561.023399787673,"y":18280.7726940935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a87dddd8-9806-45be-b9a9-0e3196da48a7","savedPayload":{"position":{"x":15561.023399787673,"y":18280.7726940935},"targetPosition":{"x":15674.68789636489,"y":18632.209791020214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA14","config":"{\n \"codeName\": \"sma14\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma14","id":"c0b78d39-a652-4d13-9fce-1b56d4e6ffbb","savedPayload":{"position":{"x":15740.616345628076,"y":18008.939095948906},"targetPosition":{"x":15713.625214357218,"y":18264.133626511815},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"114a04b9-e5b6-4f60-ad99-760c10275f9e","savedPayload":{"position":{"x":15713.625214357218,"y":18264.133626511815},"targetPosition":{"x":15674.68789636489,"y":18632.209791020214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA21","config":"{\n \"codeName\": \"sma21\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma21","id":"4740139a-d2d7-4050-a0f6-145eef002bed","savedPayload":{"position":{"x":15988.55114661917,"y":18089.148082467033},"targetPosition":{"x":15860.333279211294,"y":18311.01224386188},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ac8182cd-7f7b-44e9-a91c-b470be594ef0","savedPayload":{"position":{"x":15860.333279211294,"y":18311.01224386188},"targetPosition":{"x":15674.68789636489,"y":18632.209791020214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA28","config":"{\n \"codeName\": \"sma28\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma28","id":"0a2f17a1-2663-477a-8c28-015592a67a7e","savedPayload":{"position":{"x":16179.654067634512,"y":18265.641024031247},"targetPosition":{"x":15976.079126522915,"y":18413.378000829583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"81c852eb-9b3e-4505-b81a-f236b39d770d","savedPayload":{"position":{"x":15976.079126522915,"y":18413.378000829583},"targetPosition":{"x":15674.68789636489,"y":18632.209791020214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA35","config":"{\n \"codeName\": \"sma35\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma35","id":"1a30763f-6398-475f-b232-ff0da4ad41fa","savedPayload":{"position":{"x":16286.792577764305,"y":18502.377174175483},"targetPosition":{"x":16035.846456891968,"y":18555.565073365862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a8a4dd40-6286-46b0-8f4d-61893d2d9234","savedPayload":{"position":{"x":16035.846456891968,"y":18555.565073365862},"targetPosition":{"x":15674.68789636489,"y":18632.209791020214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA70","config":"{\n \"codeName\": \"sma70\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma70","id":"07471d43-2432-4961-81b5-4aa1bb399df4","savedPayload":{"position":{"x":16288.069845580498,"y":18762.02655080757},"targetPosition":{"x":16036.079928152967,"y":18708.703287795914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9dbc330c-e654-4591-92d0-c3e92262436e","savedPayload":{"position":{"x":16036.079928152967,"y":18708.703287795914},"targetPosition":{"x":15674.68789636489,"y":18632.209791020214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA140","config":"{\n \"codeName\": \"sma140\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma140","id":"0ef6719d-cfa8-458e-a137-6bd2e77aa6fd","savedPayload":{"position":{"x":16181.685403197416,"y":18999.80373406093},"targetPosition":{"x":15974.942377784095,"y":18849.921578724887},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"93814c2c-8fff-4415-9934-1356bf555015","savedPayload":{"position":{"x":15974.942377784095,"y":18849.921578724887},"targetPosition":{"x":15674.68789636489,"y":18632.209791020214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA210","config":"{\n \"codeName\": \"sma210\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma210","id":"037c98d5-1eef-4928-ade0-a70021337aa5","savedPayload":{"position":{"x":15987.892854525098,"y":19173.53012890012},"targetPosition":{"x":15860.402627402485,"y":18953.158718330655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"efbcaa0c-2bf3-44e6-aae3-4f73c6255c69","savedPayload":{"position":{"x":15860.402627402485,"y":18953.158718330655},"targetPosition":{"x":15674.68789636489,"y":18632.209791020214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA280","config":"{\n \"codeName\": \"sma280\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma280","id":"2bdc1e1e-b6a3-4e68-90b5-e88e64684804","savedPayload":{"position":{"x":15740.856070105458,"y":19254.201180208373},"targetPosition":{"x":15713.750649255851,"y":19000.027938898576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6b302071-d15f-43b3-9ab2-4b970a379ebc","savedPayload":{"position":{"x":15713.750649255851,"y":19000.027938898576},"targetPosition":{"x":15674.68789636489,"y":18632.209791020214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA350","config":"{\n \"codeName\": \"sma350\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma350","id":"18baf5c6-5aa5-4f66-8637-9966fdf4acf4","savedPayload":{"position":{"x":15482.652502539926,"y":19227.85211716697},"targetPosition":{"x":15561.073126566176,"y":18983.923102998695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f1de76b8-1665-4142-b8fc-712203bad655","savedPayload":{"position":{"x":15561.073126566176,"y":18983.923102998695},"targetPosition":{"x":15674.68789636489,"y":18632.209791020214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA700","config":"{\n \"codeName\": \"sma700\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma700","id":"c8f08ae8-f608-40f1-8df3-e4eb537a89ed","savedPayload":{"position":{"x":15257.403393392773,"y":19097.906848786635},"targetPosition":{"x":15427.3353694247,"y":18907.419100265597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"83b3c070-c0cb-4a4b-86ea-0b6292f57c13","savedPayload":{"position":{"x":15427.3353694247,"y":18907.419100265597},"targetPosition":{"x":15674.68789636489,"y":18632.209791020214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA1400","config":"{\n \"codeName\": \"sma1400\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma1400","id":"ca4c686e-61d0-4dc0-96f9-9ee80d856422","savedPayload":{"position":{"x":15103.4268616055,"y":18885.39574952767},"targetPosition":{"x":15336.085674762018,"y":18782.155478668166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e07922ab-0abb-4216-a534-07db74399c2a","savedPayload":{"position":{"x":15336.085674762018,"y":18782.155478668166},"targetPosition":{"x":15674.68789636489,"y":18632.209791020214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f3c4fe44-c417-4c98-9547-4b0c062f7bd7","savedPayload":{"position":{"x":14210.426334338372,"y":18589.41988419786},"targetPosition":{"x":13610.18122244346,"y":18589.421304231524},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code. This goes at the Code of the Procedure Loop Object */\n\nlet candle = record.current // Our main dependencies are candles \nvariable.last1400.push(candle.close) // Add the current close value to the last 1400 array.\n\nif (variable.last1400.length > 1400) {\n variable.last1400.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 1400 elements.\n}\n\nvariable.sma7 = calculateSMA(7)\nvariable.sma14 = calculateSMA(14)\nvariable.sma21 = calculateSMA(21)\nvariable.sma28 = calculateSMA(28)\nvariable.sma35 = calculateSMA(35)\nvariable.sma70 = calculateSMA(70)\nvariable.sma140 = calculateSMA(140)\nvariable.sma210 = calculateSMA(210)\nvariable.sma280 = calculateSMA(280)\nvariable.sma350 = calculateSMA(350)\nvariable.sma700 = calculateSMA(700)\nvariable.sma1400 = calculateSMA(1400)\n\nfunction calculateSMA(periods) { // Having a function avoids us to repeat code.\n /* We check we have enough values to make the calculation */\n if (variable.last1400.length < periods) { return 0 } // If we dont, we define the value is zero.\n\n let sum = 0 // Initialize sum variable. \n for (let i = variable.last1400.length - periods; i < variable.last1400.length; i++) { // Iterate through the last periods\n sum = sum + variable.last1400[i]\n /*\n if (index > 18 && index < 22) { // You can debug what is going on by console logging whatever you need. \n console.log(\"index=\" + index + \" i=\" + i + \" variable.last1400.length=\" + variable.last1400.length + \" periods=\" + periods + \" sum=\" + sum + \" sum/periods=\" + (sum / periods) + \" currentValue=\" + (variable.last1400[i]))\n }\n */\n }\n let sma = sum / periods\n return sma\n}","id":"27796e5a-2553-47c6-bddd-c8deaed05c2f","savedPayload":{"position":{"x":14367.787579259224,"y":18891.988262391616},"targetPosition":{"x":14168.663163905627,"y":18871.11623987068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e5d799ba-3a4f-45fb-8533-4c3de5d7886f","savedPayload":{"position":{"x":14168.663163905627,"y":18871.11623987068},"targetPosition":{"x":13969.421090600086,"y":18850.158038504687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code. This goes at the Code of the Procedure Initialization Object */\n\n/* \nThis is the array where we are going to store the last 1400 elements, since we will not \nhave access to such long backwards history while processing daily files. In those situations\nwe only have access to the last 2 days of candles, which in 45 min for example, means 36\ncandles from the current day and 36 from the previous one. For that reason we will keep\nthis array with the last 200 candle.close values so that we overecome that limitation.\n*/\n\nvariable.last1400 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")","id":"17ee3425-2a07-4523-b005-bac9dbf75184","savedPayload":{"position":{"x":14132.501768990993,"y":19215.880337331684},"targetPosition":{"x":14051.055120803781,"y":19032.99779382136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9e9e5c8c-98e2-4bbf-884a-071449177692","savedPayload":{"position":{"x":14051.055120803781,"y":19032.99779382136},"targetPosition":{"x":13969.421090600086,"y":18850.158038504687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6bd8fef6-49f7-45c5-9f9f-944785f8578e","savedPayload":{"position":{"x":13969.421090600086,"y":18850.158038504687},"targetPosition":{"x":13610.18122244346,"y":18589.421304231524},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6","savedPayload":{"position":{"x":13634.94817210571,"y":18580.382597017426},"targetPosition":{"x":13223.777190505187,"y":18710.89260208997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"SMA Base 7","id":"515565ff-dee2-4adf-adaf-b4cfea5f5dbd"}}},{"type":"Product Definition","name":"Base11 SMAs","config":"{\n \"codeName\": \"Base11-SMAs\",\n \"singularVariableName\": \"base11SMA\",\n \"pluralVariableName\": \"base11SMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"af9b9cef-2a74-486f-b79e-047d68669a1f","savedPayload":{"position":{"x":13874.048002201518,"y":18371.44546630249},"targetPosition":{"x":13626.0625143367,"y":18712.23382585666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"de5cfa30-edbf-4d5b-8d7f-facfb69a0f3e","savedPayload":{"position":{"x":14027.262241886663,"y":18582.262247983203},"targetPosition":{"x":13626.0625143367,"y":18712.23382585666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"a6c93c64-52da-4dad-bff9-9f6d9b4606b9","savedPayload":{"position":{"x":14853.320157717504,"y":18263.358252629187},"targetPosition":{"x":14968.349527811812,"y":18491.058136812968},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5e8f3d9c-8284-4b92-b7f5-ad7498e5ef3d","savedPayload":{"position":{"x":14968.349527811812,"y":18491.058136812968},"targetPosition":{"x":15135.336952825945,"y":18820.940837476137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"ac16b3d1-e3b0-4b79-9047-cd137c6eeafc","savedPayload":{"position":{"x":15331.087750989083,"y":18220.99347959864},"targetPosition":{"x":15251.524797249736,"y":18464.852818665422},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"43337725-24dd-4c1a-ae8d-2562a028d02d","savedPayload":{"position":{"x":15251.524797249736,"y":18464.852818665422},"targetPosition":{"x":15135.336952825945,"y":18820.940837476137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA11","config":"{\n \"codeName\": \"sma11\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma11","id":"87a1e288-0966-46e9-8a4f-1ddbb3f8976c","savedPayload":{"position":{"x":15693.565286242227,"y":18536.92104121244},"targetPosition":{"x":15465.291101063694,"y":18653.041667609086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6a67dbd9-1e8e-4100-849f-5ea77ea67985","savedPayload":{"position":{"x":15465.291101063694,"y":18653.041667609086},"targetPosition":{"x":15135.336952825945,"y":18820.940837476137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA22","config":"{\n \"codeName\": \"sma22\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma22","id":"8652042b-c373-4024-9fbf-c582a55134e0","savedPayload":{"position":{"x":15730.483271955722,"y":19013.636020124846},"targetPosition":{"x":15487.62230898985,"y":18935.021093942647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a5665ca1-e399-4e8a-8e04-8c0b153702e4","savedPayload":{"position":{"x":15487.62230898985,"y":18935.021093942647},"targetPosition":{"x":15135.336952825945,"y":18820.940837476137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA33","config":"{\n \"codeName\": \"sma33\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma33","id":"738317b6-dcb4-4699-a48c-170491515eb5","savedPayload":{"position":{"x":15420.30652679892,"y":19377.75217229887},"targetPosition":{"x":15303.57440001852,"y":19149.724451389884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f35c54ed-6469-4cfa-94cf-f94f1c916e91","savedPayload":{"position":{"x":15303.57440001852,"y":19149.724451389884},"targetPosition":{"x":15135.336952825945,"y":18820.940837476137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA55","config":"{\n \"codeName\": \"sma55\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma55","id":"675e9f6c-1e0d-4d09-ab69-88252ef60fe2","savedPayload":{"position":{"x":14943.565214659391,"y":19414.345921375072},"targetPosition":{"x":15022.170600005064,"y":19172.66024198126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c17d77b3-4d80-462d-88ba-ef421928dde1","savedPayload":{"position":{"x":15022.170600005064,"y":19172.66024198126},"targetPosition":{"x":15135.336952825945,"y":18820.940837476137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA111","config":"{\n \"codeName\": \"sma111\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma111","id":"b32a4356-312c-4536-b30b-63bad302e857","savedPayload":{"position":{"x":14581.150534310518,"y":19105.421082462028},"targetPosition":{"x":14806.937261207104,"y":18988.70896464553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f49152b4-5306-41d2-966b-dba92eef2590","savedPayload":{"position":{"x":14806.937261207104,"y":18988.70896464553},"targetPosition":{"x":15135.336952825945,"y":18820.940837476137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a099f207-16db-4f66-adfb-1529fa350385","savedPayload":{"position":{"x":14196.897140328492,"y":18897.536722867724},"targetPosition":{"x":13626.0625143367,"y":18712.23382585666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code. This goes at the Code of the Procedure Loop Object */\n\nlet candle = record.current // Our main dependencies are candles \nvariable.last200.push(candle.close) // Add the current close value to the last 200 array.\n\nif (variable.last200.length > 200) {\n variable.last200.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 200 elements.\n}\n\nvariable.sma11 = calculateSMA(11)\nvariable.sma22 = calculateSMA(22)\nvariable.sma33 = calculateSMA(33)\nvariable.sma55 = calculateSMA(55)\nvariable.sma111 = calculateSMA(111)\n\nfunction calculateSMA(periods) { // Having a function avoids us to repeat code.\n /* We check we have enough values to make the calculation */\n if (variable.last200.length < periods) { return 0 } // If we dont, we define the value is zero.\n\n let sum = 0 // Initialize sum variable. \n for (let i = variable.last200.length - periods; i < variable.last200.length; i++) { // Iterate through the last periods\n sum = sum + variable.last200[i]\n /*\n if (index > 18 && index < 22) { // You can debug what is going on by console logging whatever you need. \n console.log(\"index=\" + index + \" i=\" + i + \" variable.last200.length=\" + variable.last200.length + \" periods=\" + periods + \" sum=\" + sum + \" sum/periods=\" + (sum / periods) + \" currentValue=\" + (variable.last200[i]))\n }\n */\n }\n let sma = sum / periods\n return sma\n}","id":"317788d5-11f5-48a6-ab0c-252cdcef7728","savedPayload":{"position":{"x":14252.989256982559,"y":19233.876855475664},"targetPosition":{"x":14069.844190058759,"y":19151.91647162634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cce46065-5c04-428f-823f-4cb5e67b212a","savedPayload":{"position":{"x":14069.844190058759,"y":19151.91647162634},"targetPosition":{"x":13886.974168280636,"y":19070.7730117477},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code. This goes at the Code of the Procedure Initialization Object */\n\n/* \nThis is the array where we are going to store the last 200 elements, since we will not \nhave access to such long backwards history while processing daily files. In those situations\nwe only have access to the last 2 days of candles, which in 45 min for example, means 36\ncandles from the current day and 36 from the previous one. For that reason we will keep\nthis array with the last 200 candle.close values so that we overecome that limitation.\n*/\n\nvariable.last200 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")","id":"70d5537e-f682-4322-992b-99a55edb2582","savedPayload":{"position":{"x":13929.311123402587,"y":19469.153851896655},"targetPosition":{"x":13908.117153793803,"y":19269.659914512806},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f0707196-a2ac-4aee-99df-48a7fe77c365","savedPayload":{"position":{"x":13908.117153793803,"y":19269.659914512806},"targetPosition":{"x":13886.974168280636,"y":19070.7730117477},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"663d58c6-e03e-4923-8cc7-03cc860aa318","savedPayload":{"position":{"x":13886.974168280636,"y":19070.7730117477},"targetPosition":{"x":13626.0625143367,"y":18712.23382585666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"05fabbf9-7798-4a53-995e-53ae74bef3de","savedPayload":{"position":{"x":13654.684457825533,"y":18711.035212892457},"targetPosition":{"x":13223.777190505187,"y":18710.89260208997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"SMA Base 11","id":"4a61ac35-a1ae-40f4-b3da-f81ae796ee00"}}},{"type":"Product Definition","name":"Base5 SMAs","config":"{\n \"codeName\": \"Base5-SMAs\",\n \"singularVariableName\": \"base5SMA\",\n \"pluralVariableName\": \"base5SMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Muti-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"a5d28568-fb58-469a-9820-b9f0e8eab705","savedPayload":{"position":{"x":13946.985504014425,"y":18588.25219821845},"targetPosition":{"x":13605.968066957117,"y":18835.758327401065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"01f32aa3-55e9-4f8c-80c7-997b52073274","savedPayload":{"position":{"x":14027.504303131745,"y":18835.826886237122},"targetPosition":{"x":13605.968066957117,"y":18835.758327401065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"949a2e58-5d07-475e-92b9-e0ef4b9fd9e7","savedPayload":{"position":{"x":14668.910964247681,"y":18982.44254723445},"targetPosition":{"x":14795.472157274164,"y":19204.13492264135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"65545f82-9022-4d4c-bd09-b900182bae75","savedPayload":{"position":{"x":14795.472157274164,"y":19204.13492264135},"targetPosition":{"x":14979.62380058695,"y":19523.8997884986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"551c49da-26d4-438e-aff4-2a0ecc18ce7f","savedPayload":{"position":{"x":14915.86268379945,"y":18901.324214137945},"targetPosition":{"x":14941.949585969034,"y":19156.803447482205},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"74445dab-2c42-4c71-b179-04b98b5a8e27","savedPayload":{"position":{"x":14941.949585969034,"y":19156.803447482205},"targetPosition":{"x":14979.62380058695,"y":19523.8997884986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA5","config":"{\n \"codeName\": \"sma5\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma5","id":"1c996969-c249-4b55-845c-62205e91fc68","savedPayload":{"position":{"x":15174.136149095868,"y":18929.57087945219},"targetPosition":{"x":15094.55348564467,"y":19172.31493082134},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3b9f6fbf-20d8-4952-b5e8-34937746fef7","savedPayload":{"position":{"x":15094.55348564467,"y":19172.31493082134},"targetPosition":{"x":14979.62380058695,"y":19523.8997884986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA10","config":"{\n \"codeName\": \"sma10\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma10","id":"d16592d7-2f02-49ae-8857-dd7098990f20","savedPayload":{"position":{"x":15399.755702675217,"y":19058.78429880473},"targetPosition":{"x":15226.87835631667,"y":19249.91160135536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"73cb2d83-d59b-457e-af00-68a8d0e2b016","savedPayload":{"position":{"x":15226.87835631667,"y":19249.91160135536},"targetPosition":{"x":14979.62380058695,"y":19523.8997884986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA15","config":"{\n \"codeName\": \"sma15\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma15","id":"147ea31e-2735-4bae-b6a9-99072ed3d7a5","savedPayload":{"position":{"x":15552.339521905624,"y":19269.49739993728},"targetPosition":{"x":15318.073810378808,"y":19373.473268089914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"666f82ef-a002-4067-9edb-6ddbe2861056","savedPayload":{"position":{"x":15318.073810378808,"y":19373.473268089914},"targetPosition":{"x":14979.62380058695,"y":19523.8997884986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA20","config":"{\n \"codeName\": \"sma20\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma20","id":"f2507a4f-7f65-4d22-b062-1834c9269285","savedPayload":{"position":{"x":15606.386898107057,"y":19523.933093261134},"targetPosition":{"x":15349.982923018406,"y":19523.90463750302},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a6a82705-0a6c-425e-afab-099a63570ada","savedPayload":{"position":{"x":15349.982923018406,"y":19523.90463750302},"targetPosition":{"x":14979.62380058695,"y":19523.8997884986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA25","config":"{\n \"codeName\": \"sma25\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma25","id":"53aead0b-0c80-4e74-b19b-7290672f7444","savedPayload":{"position":{"x":15552.199673639561,"y":19778.288990444034},"targetPosition":{"x":15318.303549482303,"y":19674.218840780468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cbc6da93-d064-4762-a32f-ae1071a1ebe2","savedPayload":{"position":{"x":15318.303549482303,"y":19674.218840780468},"targetPosition":{"x":14979.62380058695,"y":19523.8997884986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA50","config":"{\n \"codeName\": \"sma50\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma50","id":"0c126131-e3bd-4d43-a037-53e54e268300","savedPayload":{"position":{"x":15399.852721377707,"y":19989.509215807426},"targetPosition":{"x":15227.456056894842,"y":19798.431032504697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1cda317e-4b82-4bd9-8b07-71ad7365e524","savedPayload":{"position":{"x":15227.456056894842,"y":19798.431032504697},"targetPosition":{"x":14979.62380058695,"y":19523.8997884986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA100","config":"{\n \"codeName\": \"sma100\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma100","id":"77c897e8-ab38-4c88-a215-e67d53401196","savedPayload":{"position":{"x":15173.95785052631,"y":20118.669826743586},"targetPosition":{"x":15094.7684918768,"y":19876.27964695355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f7a66586-158d-40e2-be75-1077a91b0d7e","savedPayload":{"position":{"x":15094.7684918768,"y":19876.27964695355},"targetPosition":{"x":14979.62380058695,"y":19523.8997884986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA150","config":"{\n \"codeName\": \"sma150\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma150","id":"1e5d6df6-a1af-49f0-a06e-08c362b1cd34","savedPayload":{"position":{"x":14916.177071141434,"y":20146.671235623566},"targetPosition":{"x":14941.965550843555,"y":19891.626718972817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"83260971-1089-4349-9019-29ea469a9d24","savedPayload":{"position":{"x":14941.965550843555,"y":19891.626718972817},"targetPosition":{"x":14979.62380058695,"y":19523.8997884986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA200","config":"{\n \"codeName\": \"sma200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma200","id":"bc63f986-17dd-48fb-892b-7f2d2b033cc5","savedPayload":{"position":{"x":14668.211581143218,"y":20068.583597019006},"targetPosition":{"x":14797.191611246924,"y":19844.45130073467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"07a55760-46cf-44e8-b2f9-f55a6bb5a81c","savedPayload":{"position":{"x":14797.191611246924,"y":19844.45130073467},"targetPosition":{"x":14979.62380058695,"y":19523.8997884986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA250","config":"{\n \"codeName\": \"sma250\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma250","id":"1bdc84fd-9eac-4b07-9ff6-56f80ec08553","savedPayload":{"position":{"x":14473.55002033061,"y":19893.358414914193},"targetPosition":{"x":14680.88120552039,"y":19741.515815129806},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8b672a62-1ae1-4e92-819e-597fa42da35b","savedPayload":{"position":{"x":14680.88120552039,"y":19741.515815129806},"targetPosition":{"x":14979.62380058695,"y":19523.8997884986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA 500","config":"{\n \"codeName\": \"sma500\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma500","id":"0d17399e-97d1-459d-8864-6c72967f0fd4","savedPayload":{"position":{"x":14369.156692249044,"y":19655.420712571588},"targetPosition":{"x":14617.434578526745,"y":19601.240321261517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"92405f1d-9adf-4a70-af18-f2537ba2b0a0","savedPayload":{"position":{"x":14617.434578526745,"y":19601.240321261517},"targetPosition":{"x":14979.62380058695,"y":19523.8997884986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA 1000","config":"{\n \"codeName\": \"sma1000\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma1000","id":"e2364abc-b940-4b52-a506-587c1a5941e3","savedPayload":{"position":{"x":14377.552346643928,"y":19396.626810222642},"targetPosition":{"x":14626.191718154676,"y":19448.337809680215},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5318bf3f-6e8a-46c8-8b04-3769bde03438","savedPayload":{"position":{"x":14626.191718154676,"y":19448.337809680215},"targetPosition":{"x":14979.62380058695,"y":19523.8997884986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"69298c3e-479d-4eb6-a972-35f8f079ce86","savedPayload":{"position":{"x":14091.641577222495,"y":19188.45425260822},"targetPosition":{"x":13605.968066957117,"y":18835.758327401065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code. This goes at the Code of the Procedure Loop Object */\n\nlet candle = record.current // Our main dependencies are candles \nvariable.last1000.push(candle.close) // Add the current close value to the last 1000 array.\n\nif (variable.last1000.length > 1000) {\n variable.last1000.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 1000 elements.\n}\n\nvariable.sma5 = calculateSMA(5)\nvariable.sma10 = calculateSMA(10)\nvariable.sma15 = calculateSMA(15)\nvariable.sma20 = calculateSMA(20)\nvariable.sma25 = calculateSMA(25)\nvariable.sma50 = calculateSMA(50)\nvariable.sma100 = calculateSMA(100)\nvariable.sma150 = calculateSMA(150)\nvariable.sma200 = calculateSMA(200)\nvariable.sma250 = calculateSMA(250)\nvariable.sma500 = calculateSMA(500)\nvariable.sma1000 = calculateSMA(1000)\n\nfunction calculateSMA(periods) { // Having a function avoids us to repeat code.\n /* We check we have enough values to make the calculation */\n if (variable.last1000.length < periods) { return 0 } // If we dont, we define the value is zero.\n\n let sum = 0 // Initialize sum variable. \n for (let i = variable.last1000.length - periods; i < variable.last1000.length; i++) { // Iterate through the last periods\n sum = sum + variable.last1000[i]\n /*\n if (index > 18 && index < 22) { // You can debug what is going on by console logging whatever you need. \n console.log(\"index=\" + index + \" i=\" + i + \" variable.last1000.length=\" + variable.last1000.length + \" periods=\" + periods + \" sum=\" + sum + \" sum/periods=\" + (sum / periods) + \" currentValue=\" + (variable.last1000[i]))\n }\n */\n }\n let sma = sum / periods\n return sma\n}","id":"45ebc09e-bada-4bcd-8780-a2f56f23f037","savedPayload":{"position":{"x":14040.963869912835,"y":19525.49101658052},"targetPosition":{"x":13892.197565326662,"y":19391.11947078702},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f65693cf-81ef-497e-86d2-a7ad9b74a1ca","savedPayload":{"position":{"x":13892.197565326662,"y":19391.11947078702},"targetPosition":{"x":13743.296735695929,"y":19257.437879015593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code. This goes at the Code of the Procedure Initialization Object */\n\n/* \nThis is the array where we are going to store the last 1000 elements, since we will not \nhave access to such long backwards history while processing daily files. In those situations\nwe only have access to the last 2 days of candles, which in 45 min for example, means 36\ncandles from the current day and 36 from the previous one. For that reason we will keep\nthis array with the last 200 candle.close values so that we overecome that limitation.\n*/\n\nvariable.last1000 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")","id":"22db43d3-db5d-43b6-80fc-1faa358bfadb","savedPayload":{"position":{"x":13660.85463700674,"y":19649.45736741119},"targetPosition":{"x":13702.137854949437,"y":19453.169229156978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"12255c95-c680-43af-be1b-61ee37e0e827","savedPayload":{"position":{"x":13702.137854949437,"y":19453.169229156978},"targetPosition":{"x":13743.296735695929,"y":19257.437879015593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"cd8c13e4-2b9e-4a42-a576-539d412f239a","savedPayload":{"position":{"x":13743.296735695929,"y":19257.437879015593},"targetPosition":{"x":13605.968066957117,"y":18835.758327401065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3","savedPayload":{"position":{"x":13633.457502120524,"y":18844.05302000164},"targetPosition":{"x":13223.777190505187,"y":18710.89260208997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"SMA Base 5","id":"888c381d-457d-4421-8401-a7475b42ff03"}}},{"type":"Product Definition","name":"Base6 SMAs","config":"{\n \"codeName\": \"Base6-SMAs\",\n \"singularVariableName\": \"base6SMA\",\n \"pluralVariableName\": \"base6SMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"c0862b3d-d35a-4d3e-8d80-258b8a01c37c","savedPayload":{"position":{"x":13949.556876866982,"y":18817.23415752111},"targetPosition":{"x":13548.700265355283,"y":18947.29759219128},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"f5050eb2-0a99-464e-b5e2-2d8f40453e9a","savedPayload":{"position":{"x":13949.544384928173,"y":19077.55856007086},"targetPosition":{"x":13548.700265355283,"y":18947.29759219128},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Being","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"fc90c194-682d-4d5c-923b-89b19e49f234","savedPayload":{"position":{"x":14555.604066101447,"y":19251.989797018992},"targetPosition":{"x":14646.055953090328,"y":19489.87717972938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"37fc0238-a202-4c33-89ca-6a4e24d4e1ac","savedPayload":{"position":{"x":14646.055953090328,"y":19489.87717972938},"targetPosition":{"x":14778.799251510509,"y":19836.024934382032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"c1b3c2c1-68aa-443a-8c69-c50dcd34998f","savedPayload":{"position":{"x":14812.620619715819,"y":19211.85689459381},"targetPosition":{"x":14798.707935791279,"y":19465.64483227418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7757e0dd-c3b4-48b4-bdf7-e517ce8df601","savedPayload":{"position":{"x":14798.707935791279,"y":19465.64483227418},"targetPosition":{"x":14778.799251510509,"y":19836.024934382032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA6","config":"{\n \"codeName\": \"sma6\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma6","id":"8a633674-750f-492d-8bfc-ac6f2e79793a","savedPayload":{"position":{"x":15063.04286394426,"y":19279.664750900683},"targetPosition":{"x":14947.240686324903,"y":19506.34270638956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"12d5b8f1-c83c-43a3-bf45-6f85e85a6df9","savedPayload":{"position":{"x":14947.240686324903,"y":19506.34270638956},"targetPosition":{"x":14778.799251510509,"y":19836.024934382032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA12","config":"{\n \"codeName\": \"sma12\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma12","id":"11e2a0cd-851a-425e-b2bd-f3cff1b00c77","savedPayload":{"position":{"x":15267.443902474346,"y":19441.532653255603},"targetPosition":{"x":15066.126581547034,"y":19604.03771615861},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6c1f3e32-9310-4ece-a796-cf9225172978","savedPayload":{"position":{"x":15066.126581547034,"y":19604.03771615861},"targetPosition":{"x":14778.799251510509,"y":19836.024934382032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA18","config":"{\n \"codeName\": \"sma18\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma18","id":"0cbf493f-fa5f-41a8-a928-754ec9720fe0","savedPayload":{"position":{"x":15384.853022928843,"y":19674.539353040625},"targetPosition":{"x":15138.000478621141,"y":19740.304154849495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"12bf3180-d354-451d-ba14-81cdd9d95c19","savedPayload":{"position":{"x":15138.000478621141,"y":19740.304154849495},"targetPosition":{"x":14778.799251510509,"y":19836.024934382032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA24","config":"{\n \"codeName\": \"sma24\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma24","id":"4d677df1-74ec-417e-a518-2b8946c84542","savedPayload":{"position":{"x":15397.622199407857,"y":19933.917913444464},"targetPosition":{"x":15145.874123880361,"y":19894.1209223154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3e3a6434-aaa4-4170-8cdc-cca21c8d0863","savedPayload":{"position":{"x":15145.874123880361,"y":19894.1209223154},"targetPosition":{"x":14778.799251510509,"y":19836.024934382032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA30","config":"{\n \"codeName\": \"sma30\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma30","id":"3a92b258-6c21-4747-ba08-16cf9ba814ec","savedPayload":{"position":{"x":15304.487118628394,"y":20177.164642151194},"targetPosition":{"x":15089.658592669928,"y":20037.72215420303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"22bc84a6-f431-464c-a7e0-b9249b32abdf","savedPayload":{"position":{"x":15089.658592669928,"y":20037.72215420303},"targetPosition":{"x":14778.799251510509,"y":19836.024934382032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA60","config":"{\n \"codeName\": \"sma60\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma60","id":"d9a44db6-45eb-47f8-975b-ee8dccd0659d","savedPayload":{"position":{"x":15120.585280683083,"y":20361.63473844805},"targetPosition":{"x":14980.588564466108,"y":20146.30553549176},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c3d4d569-0b7e-44b9-b2f0-84d9a91ee6b0","savedPayload":{"position":{"x":14980.588564466108,"y":20146.30553549176},"targetPosition":{"x":14778.799251510509,"y":19836.024934382032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA120","config":"{\n \"codeName\": \"sma120\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma120","id":"90fee0af-0e23-44de-aa16-d446857485f4","savedPayload":{"position":{"x":14877.176356847589,"y":20455.354172226078},"targetPosition":{"x":14836.843567897859,"y":20201.66158103272},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4f572d61-ff96-4ccb-90ca-7a26d5cc8322","savedPayload":{"position":{"x":14836.843567897859,"y":20201.66158103272},"targetPosition":{"x":14778.799251510509,"y":19836.024934382032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA180","config":"{\n \"codeName\": \"sma180\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma180","id":"031e5277-e225-4307-a247-f49dae98ac26","savedPayload":{"position":{"x":14617.552583504477,"y":20441.986805189026},"targetPosition":{"x":14683.476215854449,"y":20193.69438815896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9e3eb2e1-3cb4-4f0b-9a5a-5196bb4af3af","savedPayload":{"position":{"x":14683.476215854449,"y":20193.69438815896},"targetPosition":{"x":14778.799251510509,"y":19836.024934382032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA240","config":"{\n \"codeName\": \"sma240\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma240","id":"cb9604b0-3004-48d5-84fe-680747edb943","savedPayload":{"position":{"x":14385.82386293696,"y":20323.730586127545},"targetPosition":{"x":14546.500494977654,"y":20124.062440497768},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"83c2137c-676d-4a43-88c1-e9a5f69cafeb","savedPayload":{"position":{"x":14546.500494977654,"y":20124.062440497768},"targetPosition":{"x":14778.799251510509,"y":19836.024934382032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA300","config":"{\n \"codeName\": \"sma300\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma300","id":"8c3259f1-e88b-40a2-9af2-a0e554affbd2","savedPayload":{"position":{"x":14221.694559306155,"y":20120.748217735378},"targetPosition":{"x":14449.64340932944,"y":20004.254828334808},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"829bfd3a-8c69-4e51-8951-a1d7cb0b8c6f","savedPayload":{"position":{"x":14449.64340932944,"y":20004.254828334808},"targetPosition":{"x":14778.799251510509,"y":19836.024934382032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA600","config":"{\n \"codeName\": \"sma600\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma600","id":"501b1e82-840a-4288-801d-38a5e5c7f7cb","savedPayload":{"position":{"x":14154.200900151043,"y":19870.09236215858},"targetPosition":{"x":14410.043735826215,"y":19855.55841239969},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f7174f99-231c-4188-8f4a-95a34c0c35f8","savedPayload":{"position":{"x":14410.043735826215,"y":19855.55841239969},"targetPosition":{"x":14778.799251510509,"y":19836.024934382032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA1200","config":"{\n \"codeName\": \"sma1200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma1200","id":"0554601a-009b-47a2-8e0c-c7d6f3901a9e","savedPayload":{"position":{"x":14194.83137427287,"y":19624.493438094003},"targetPosition":{"x":14434.277104329178,"y":19703.190332435453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f6f0c544-4054-4cb4-9be1-14ffa23c5251","savedPayload":{"position":{"x":14434.277104329178,"y":19703.190332435453},"targetPosition":{"x":14778.799251510509,"y":19836.024934382032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a84f4438-cabc-4c9a-bd9c-0338e55a6e15","savedPayload":{"position":{"x":13973.150510424592,"y":19371.714713470126},"targetPosition":{"x":13548.700265355283,"y":18947.29759219128},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code. This goes at the Code of the Procedure Loop Object */\n\nlet candle = record.current // Our main dependencies are candles \nvariable.last1200.push(candle.close) // Add the current close value to the last 1200 array.\n\nif (variable.last1200.length > 1200) {\n variable.last1200.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 1200 elements.\n}\n\nvariable.sma6 = calculateSMA(6)\nvariable.sma12 = calculateSMA(12)\nvariable.sma18 = calculateSMA(18)\nvariable.sma24 = calculateSMA(24)\nvariable.sma30 = calculateSMA(30)\nvariable.sma60 = calculateSMA(60)\nvariable.sma120 = calculateSMA(120)\nvariable.sma180 = calculateSMA(180)\nvariable.sma240 = calculateSMA(240)\nvariable.sma300 = calculateSMA(300)\nvariable.sma600 = calculateSMA(600)\nvariable.sma1200 = calculateSMA(1200)\n\nfunction calculateSMA(periods) { // Having a function avoids us to repeat code.\n /* We check we have enough values to make the calculation */\n if (variable.last1200.length < periods) { return 0 } // If we dont, we define the value is zero.\n\n let sum = 0 // Initialize sum variable. \n for (let i = variable.last1200.length - periods; i < variable.last1200.length; i++) { // Iterate through the last periods\n sum = sum + variable.last1200[i]\n /*\n if (index > 18 && index < 22) { // You can debug what is going on by console logging whatever you need. \n console.log(\"index=\" + index + \" i=\" + i + \" variable.last1200.length=\" + variable.last1200.length + \" periods=\" + periods + \" sum=\" + sum + \" sum/periods=\" + (sum / periods) + \" currentValue=\" + (variable.last1200[i]))\n }\n */\n }\n let sma = sum / periods\n return sma\n}","id":"f2c97b70-717a-4f98-be7c-d76dd94b8227","savedPayload":{"position":{"x":13749.234843879049,"y":19737.65762403325},"targetPosition":{"x":13649.178215486732,"y":19564.00905648891},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96841e7b-90d9-4508-8933-4f0f9769800e","savedPayload":{"position":{"x":13649.178215486732,"y":19564.00905648891},"targetPosition":{"x":13549.06048722463,"y":19390.60532274617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code. This goes at the Code of the Procedure Initialization Object */\n\n/* \nThis is the array where we are going to store the last 1200 elements, since we will not \nhave access to such long backwards history while processing daily files. In those situations\nwe only have access to the last 2 days of candles, which in 45 min for example, means 36\ncandles from the current day and 36 from the previous one. For that reason we will keep\nthis array with the last 200 candle.close values so that we overecome that limitation.\n*/\n\nvariable.last1200 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")","id":"14dcff53-0599-4529-8a5d-5cf92a5c33c8","savedPayload":{"position":{"x":13349.445019319352,"y":19737.960974477377},"targetPosition":{"x":13449.350068361693,"y":19564.171294629097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2863a8f-8f38-4c47-9f48-0bd45b628fa0","savedPayload":{"position":{"x":13449.350068361693,"y":19564.171294629097},"targetPosition":{"x":13549.06048722463,"y":19390.60532274617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"948be5d9-da96-488a-bb15-f8cd94777231","savedPayload":{"position":{"x":13549.06048722463,"y":19390.60532274617},"targetPosition":{"x":13548.700265355283,"y":18947.29759219128},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac","savedPayload":{"position":{"x":13572.325097863975,"y":18964.142272202225},"targetPosition":{"x":13223.777190505187,"y":18710.89260208997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"SMA Base 6","id":"6ace920a-3a4b-4d28-8f04-4c2ecd3dfeb8"}}},{"type":"Product Definition","name":"Base12 SMAs","config":"{\n \"codeName\": \"Base12-SMAs\",\n \"singularVariableName\": \"base12SMA\",\n \"pluralVariableName\": \"base12SMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"6ba76363-0f50-4e67-8678-3eb4fd6d07d6","savedPayload":{"position":{"x":13881.505080286377,"y":19035.933689718233},"targetPosition":{"x":13459.855888550765,"y":19035.928237081127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"92d92b3e-6870-499b-bfec-33bab220bf62","savedPayload":{"position":{"x":13800.779354147253,"y":19283.722394506058},"targetPosition":{"x":13459.855888550765,"y":19035.928237081127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"d44292f3-8960-448b-8339-32147b8bb1c3","savedPayload":{"position":{"x":14306.018063626661,"y":19615.91491968582},"targetPosition":{"x":14271.039336657372,"y":19869.25225972455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bcec1860-262e-4125-bdf4-a8f798d9d4ff","savedPayload":{"position":{"x":14271.039336657372,"y":19869.25225972455},"targetPosition":{"x":14221.472588823779,"y":20235.897575916846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"91264df6-db08-498e-a039-fec9b0cd09a5","savedPayload":{"position":{"x":14565.949128696227,"y":19715.830532634398},"targetPosition":{"x":14426.274619419832,"y":19926.376232042712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0ef8d741-e876-446e-86ac-146b4f33d8e8","savedPayload":{"position":{"x":14426.274619419832,"y":19926.376232042712},"targetPosition":{"x":14221.472588823779,"y":20235.897575916846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA12","config":"{\n \"codeName\": \"sma12\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma12","id":"c694dcde-b622-4d71-b2cf-e42e1b4934ec","savedPayload":{"position":{"x":14759.10344357948,"y":19915.761615349853},"targetPosition":{"x":14538.331784021599,"y":20047.23492769171},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"daf8aa00-f032-412e-b319-e7c581611db0","savedPayload":{"position":{"x":14538.331784021599,"y":20047.23492769171},"targetPosition":{"x":14221.472588823779,"y":20235.897575916846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA24","config":"{\n \"codeName\": \"sma24\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma24","id":"445b00ba-46a1-4e79-b762-72c521223b5f","savedPayload":{"position":{"x":14846.002202700378,"y":20180.594543605064},"targetPosition":{"x":14589.470031878509,"y":20203.227487967637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"255fdffa-cdbb-428b-a54e-14448f7cda29","savedPayload":{"position":{"x":14589.470031878509,"y":20203.227487967637},"targetPosition":{"x":14221.472588823779,"y":20235.897575916846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA36","config":"{\n \"codeName\": \"sma36\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma36","id":"c9c11106-98b6-4fcb-b30b-d49263a05d95","savedPayload":{"position":{"x":14808.672527487679,"y":20456.490890231657},"targetPosition":{"x":14568.264869648954,"y":20366.143319939827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"628c3c4f-7ef7-4008-bada-76e4edf6de42","savedPayload":{"position":{"x":14568.264869648954,"y":20366.143319939827},"targetPosition":{"x":14221.472588823779,"y":20235.897575916846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA48","config":"{\n \"codeName\": \"sma48\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma48","id":"8e1cfb60-cb51-4625-a36b-75d64381840d","savedPayload":{"position":{"x":14653.493051358886,"y":20687.756816334488},"targetPosition":{"x":14478.238099652523,"y":20504.481485771194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1aa9fd38-51e5-4158-9bb2-31dbc8f933d0","savedPayload":{"position":{"x":14478.238099652523,"y":20504.481485771194},"targetPosition":{"x":14221.472588823779,"y":20235.897575916846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA60","config":"{\n \"codeName\": \"sma60\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma60","id":"6fe04671-6298-4ef4-9ef8-779eafc1645d","savedPayload":{"position":{"x":14415.019961008895,"y":20830.994519444474},"targetPosition":{"x":14335.776166774749,"y":20587.213842218716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d76d7819-b542-4ee8-98fd-539ec3325e2c","savedPayload":{"position":{"x":14335.776166774749,"y":20587.213842218716},"targetPosition":{"x":14221.472588823779,"y":20235.897575916846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA120","config":"{\n \"codeName\": \"sma120\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma120","id":"f8abde07-3312-4983-bff2-65ed4f475a3f","savedPayload":{"position":{"x":14138.078832138797,"y":20857.260013697847},"targetPosition":{"x":14172.364046218796,"y":20601.837789117053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0e696147-e020-4056-8ad4-40ad79cba391","savedPayload":{"position":{"x":14172.364046218796,"y":20601.837789117053},"targetPosition":{"x":14221.472588823779,"y":20235.897575916846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA240","config":"{\n \"codeName\": \"sma240\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma240","id":"1ea2c145-6dcf-4e8a-908a-b12e08a8d658","savedPayload":{"position":{"x":13877.02612442064,"y":20759.162054244323},"targetPosition":{"x":14017.849927478046,"y":20545.037921203733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e02938c9-f5b1-49f7-8e63-f8637f6d1d4d","savedPayload":{"position":{"x":14017.849927478046,"y":20545.037921203733},"targetPosition":{"x":14221.472588823779,"y":20235.897575916846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA360","config":"{\n \"codeName\": \"sma360\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma360","id":"16ab9e8b-cb14-4a59-b7b3-0a1d13dbea5b","savedPayload":{"position":{"x":13684.849069577855,"y":20557.89092841101},"targetPosition":{"x":13903.926725200998,"y":20426.196343090975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fe671bcf-1d71-4081-a100-f4bbc59203c7","savedPayload":{"position":{"x":13903.926725200998,"y":20426.196343090975},"targetPosition":{"x":14221.472588823779,"y":20235.897575916846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA480","config":"{\n \"codeName\": \"sma480\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma480","id":"135a34fc-3cc8-4555-b1b9-c8ea03150aff","savedPayload":{"position":{"x":13598.392136989007,"y":20292.040103339044},"targetPosition":{"x":13853.426534813623,"y":20269.353115845963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"85a59bf2-d419-43c9-a287-68902b8cb199","savedPayload":{"position":{"x":13853.426534813623,"y":20269.353115845963},"targetPosition":{"x":14221.472588823779,"y":20235.897575916846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA600","config":"{\n \"codeName\": \"sma600\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma600","id":"cacf8e3b-77d3-4697-9ca5-51cff50afb6c","savedPayload":{"position":{"x":13635.491549562152,"y":20017.36272417436},"targetPosition":{"x":13875.667437591621,"y":20106.535438141695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"608a2a98-bd6e-49e0-b202-afff3553337d","savedPayload":{"position":{"x":13875.667437591621,"y":20106.535438141695},"targetPosition":{"x":14221.472588823779,"y":20235.897575916846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA1200","config":"{\n \"codeName\": \"sma1200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma1200","id":"2e1c84ea-2cb3-4936-8106-623dcdff8782","savedPayload":{"position":{"x":13778.741909593371,"y":19793.01565999582},"targetPosition":{"x":13967.062862497836,"y":19968.9819559096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dda31bad-8835-446a-9015-4e15ae4cb845","savedPayload":{"position":{"x":13967.062862497836,"y":19968.9819559096},"targetPosition":{"x":14221.472588823779,"y":20235.897575916846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f46175dc-dfd2-4e1e-a60c-554867b5f0a5","savedPayload":{"position":{"x":13645.400526875723,"y":19606.69329362225},"targetPosition":{"x":13459.855888550765,"y":19035.928237081127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code. This goes at the Code of the Procedure Loop Object */\n\nlet candle = record.current // Our main dependencies are candles \nvariable.last1200.push(candle.close) // Add the current close value to the last 1200 array.\n\nif (variable.last1200.length > 1200) {\n variable.last1200.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 1200 elements.\n}\n\nvariable.sma12 = calculateSMA(12)\nvariable.sma24 = calculateSMA(24)\nvariable.sma36 = calculateSMA(36)\nvariable.sma48 = calculateSMA(48)\nvariable.sma60 = calculateSMA(60)\nvariable.sma120 = calculateSMA(120)\nvariable.sma240 = calculateSMA(240)\nvariable.sma360 = calculateSMA(360)\nvariable.sma480 = calculateSMA(480)\nvariable.sma600 = calculateSMA(600)\nvariable.sma1200 = calculateSMA(1200)\n\nfunction calculateSMA(periods) { // Having a function avoids us to repeat code.\n /* We check we have enough values to make the calculation */\n if (variable.last1200.length < periods) { return 0 } // If we dont, we define the value is zero.\n\n let sum = 0 // Initialize sum variable. \n for (let i = variable.last1200.length - periods; i < variable.last1200.length; i++) { // Iterate through the last periods\n sum = sum + variable.last1200[i]\n /*\n if (index > 18 && index < 22) { // You can debug what is going on by console logging whatever you need. \n console.log(\"index=\" + index + \" i=\" + i + \" variable.last1200.length=\" + variable.last1200.length + \" periods=\" + periods + \" sum=\" + sum + \" sum/periods=\" + (sum / periods) + \" currentValue=\" + (variable.last1200[i]))\n }\n */\n }\n let sma = sum / periods\n return sma\n}","id":"fba7176b-58ff-4bd6-95de-ad6f88de4cda","savedPayload":{"position":{"x":13405.805983623564,"y":19849.740206004422},"targetPosition":{"x":13364.447908769329,"y":19653.51879587308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"daf2fb19-bfda-4248-a0c6-8e364fe863ee","savedPayload":{"position":{"x":13364.447908769329,"y":19653.51879587308},"targetPosition":{"x":13323.02217556668,"y":19457.682716722986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code. This goes at the Code of the Procedure Initialization Object */\n\n/* \nThis is the array where we are going to store the last 1200 elements, since we will not \nhave access to such long backwards history while processing daily files. In those situations\nwe only have access to the last 2 days of candles, which in 45 min for example, means 36\ncandles from the current day and 36 from the previous one. For that reason we will keep\nthis array with the last 200 candle.close values so that we overecome that limitation.\n*/\n\nvariable.last1200 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")","id":"4d3f1fee-e71d-46cd-a50b-69176de5e1e8","savedPayload":{"position":{"x":13025.762519902159,"y":19726.058900324253},"targetPosition":{"x":13174.50280539197,"y":19591.670867895893},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"08365c70-c9ba-481d-abb8-62dc21067754","savedPayload":{"position":{"x":13174.50280539197,"y":19591.670867895893},"targetPosition":{"x":13323.02217556668,"y":19457.682716722986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4aa28d66-d2c5-40d1-9b42-b6adb1e94d1c","savedPayload":{"position":{"x":13323.02217556668,"y":19457.682716722986},"targetPosition":{"x":13459.855888550765,"y":19035.928237081127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"723d28e9-a010-48c5-bda0-43a4c2343ddf","savedPayload":{"position":{"x":13477.171950807997,"y":19059.677156427922},"targetPosition":{"x":13223.777190505187,"y":18710.89260208997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition","name":"Base30 SMAs","config":"{\n \"codeName\": \"Base30-SMAs\",\n \"singularVariableName\": \"base30SMA\",\n \"pluralVariableName\": \"base30SMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"4c486321-22e0-4991-9a1c-571bada649ad","savedPayload":{"position":{"x":13742.268318127848,"y":19224.40822575847},"targetPosition":{"x":13341.2011782317,"y":19094.14982537033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"819688c9-c7bd-444b-9658-2a4379125c72","savedPayload":{"position":{"x":13588.718248593228,"y":19435.12434816921},"targetPosition":{"x":13341.2011782317,"y":19094.14982537033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"16806650-2bfb-4709-acbd-aca1549c16e8","savedPayload":{"position":{"x":14006.05741598521,"y":19829.54859258029},"targetPosition":{"x":13887.051113466589,"y":20055.288848895634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"265d3765-cd1d-4652-a0ed-01931674a151","savedPayload":{"position":{"x":13887.051113466589,"y":20055.288848895634},"targetPosition":{"x":13715.602573162569,"y":20382.471194312824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"d0b81562-348b-433f-8524-f9bc909de69e","savedPayload":{"position":{"x":14230.731145264132,"y":20027.859364069238},"targetPosition":{"x":14019.225465532452,"y":20173.260531701853},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fe6074be-18c6-46c0-abd4-5d31bc067798","savedPayload":{"position":{"x":14019.225465532452,"y":20173.260531701853},"targetPosition":{"x":13715.602573162569,"y":20382.471194312824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA30","config":"{\n \"codeName\": \"sma30\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma30","id":"2ef589ba-7f7d-4df5-91fd-9107d67a7792","savedPayload":{"position":{"x":14338.453808347787,"y":20307.609569620854},"targetPosition":{"x":14081.383023173845,"y":20338.43209253111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"72debf77-1c4b-4e8d-9a99-96951bd6d24c","savedPayload":{"position":{"x":14081.383023173845,"y":20338.43209253111},"targetPosition":{"x":13715.602573162569,"y":20382.471194312824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA60","config":"{\n \"codeName\": \"sma60\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma60","id":"d51798bf-2373-4f5e-b6e4-56aad8117820","savedPayload":{"position":{"x":14300.670213345305,"y":20604.477031647206},"targetPosition":{"x":14061.989822646616,"y":20513.915742069432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"78e59381-fcda-4204-a70a-4113eebdbba7","savedPayload":{"position":{"x":14061.989822646616,"y":20513.915742069432},"targetPosition":{"x":13715.602573162569,"y":20382.471194312824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA90","config":"{\n \"codeName\": \"sma90\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma90","id":"a35a40dd-e5b4-4444-a8da-14eeb79e76b3","savedPayload":{"position":{"x":14129.95092911066,"y":20850.37482634769},"targetPosition":{"x":13960.740824896735,"y":20659.292606032846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"90b3598c-8f08-4dc1-ad41-a64caf0cab39","savedPayload":{"position":{"x":13960.740824896735,"y":20659.292606032846},"targetPosition":{"x":13715.602573162569,"y":20382.471194312824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA120","config":"{\n \"codeName\": \"sma120\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma120","id":"046bdfe3-d838-425e-8cc0-e117151bdbf8","savedPayload":{"position":{"x":13865.049219049624,"y":20989.58648986368},"targetPosition":{"x":13803.768464147257,"y":20740.57698115119},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aa9f7095-66e7-4e42-b6b2-d3a51e3b35d9","savedPayload":{"position":{"x":13803.768464147257,"y":20740.57698115119},"targetPosition":{"x":13715.602573162569,"y":20382.471194312824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA150","config":"{\n \"codeName\": \"sma150\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma150","id":"8129644d-2b0a-4936-8255-22dc2aada9e7","savedPayload":{"position":{"x":13565.892131684368,"y":20991.541247849764},"targetPosition":{"x":13627.66882609324,"y":20740.091617840077},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b0c06b10-549c-4280-aac9-0b649ede898c","savedPayload":{"position":{"x":13627.66882609324,"y":20740.091617840077},"targetPosition":{"x":13715.602573162569,"y":20382.471194312824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA300","config":"{\n \"codeName\": \"sma300\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma300","id":"23ddb87c-8211-4032-8273-222af79863b5","savedPayload":{"position":{"x":13301.056913140035,"y":20850.89793122459},"targetPosition":{"x":13470.029924155633,"y":20659.94533930345},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"38b8e859-eda7-4cd9-afc2-ee0e3ed297b7","savedPayload":{"position":{"x":13470.029924155633,"y":20659.94533930345},"targetPosition":{"x":13715.602573162569,"y":20382.471194312824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA600","config":"{\n \"codeName\": \"sma600\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma600","id":"8f07691b-ccdc-47cc-9c07-3701b61322f9","savedPayload":{"position":{"x":13131.608913045284,"y":20604.28446145368},"targetPosition":{"x":13369.832503686148,"y":20513.78177310572},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cebd7a57-eebb-4e4f-9315-6f1411970e55","savedPayload":{"position":{"x":13369.832503686148,"y":20513.78177310572},"targetPosition":{"x":13715.602573162569,"y":20382.471194312824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA900","config":"{\n \"codeName\": \"sma900\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma900","id":"ed66265d-f971-448f-b395-e0c12c178173","savedPayload":{"position":{"x":13094.595472217376,"y":20308.035147123843},"targetPosition":{"x":13349.510710859775,"y":20338.481417375093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fcbefbb9-2a6d-459a-8d3b-595d71caaa88","savedPayload":{"position":{"x":13349.510710859775,"y":20338.481417375093},"targetPosition":{"x":13715.602573162569,"y":20382.471194312824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA1200","config":"{\n \"codeName\": \"sma1200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma1200","id":"3e936d3b-8f40-49da-830c-f73ea5bf271a","savedPayload":{"position":{"x":13200.272921615911,"y":20027.935149038276},"targetPosition":{"x":13411.578857518782,"y":20173.018135869173},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"311d2e2d-163e-4b8e-ae99-2b2d0fbbb2aa","savedPayload":{"position":{"x":13411.578857518782,"y":20173.018135869173},"targetPosition":{"x":13715.602573162569,"y":20382.471194312824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"SMA1500","config":"{\n \"codeName\": \"sma1500\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.sma1500","id":"d4db0dc9-12a2-41c6-8511-43cbfdcfb136","savedPayload":{"position":{"x":13420.85070167402,"y":19831.128407595315},"targetPosition":{"x":13544.446307886255,"y":20055.356246644962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b71b603d-38de-401d-b1df-ca20710dba64","savedPayload":{"position":{"x":13544.446307886255,"y":20055.356246644962},"targetPosition":{"x":13715.602573162569,"y":20382.471194312824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"229b4129-39f9-4f46-bbb5-a86a714023f8","savedPayload":{"position":{"x":13341.279750211044,"y":19694.429548227406},"targetPosition":{"x":13341.2011782317,"y":19094.14982537033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code. This goes at the Code of the Procedure Loop Object */\n\nlet candle = record.current // Our main dependencies are candles \nvariable.last1500.push(candle.close) // Add the current close value to the last 1500 array.\n\nif (variable.last1500.length > 1500) {\n variable.last1500.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 1500 elements.\n}\n\nvariable.sma30 = calculateSMA(30)\nvariable.sma60 = calculateSMA(60)\nvariable.sma90 = calculateSMA(90)\nvariable.sma120 = calculateSMA(120)\nvariable.sma150 = calculateSMA(150)\nvariable.sma300 = calculateSMA(300)\nvariable.sma600 = calculateSMA(600)\nvariable.sma900 = calculateSMA(900)\nvariable.sma1200 = calculateSMA(1200)\nvariable.sma1500 = calculateSMA(1500)\n\nfunction calculateSMA(periods) { // Having a function avoids us to repeat code.\n /* We check we have enough values to make the calculation */\n if (variable.last1500.length < periods) { return 0 } // If we dont, we define the value is zero.\n\n let sum = 0 // Initialize sum variable. \n for (let i = variable.last1500.length - periods; i < variable.last1500.length; i++) { // Iterate through the last periods\n sum = sum + variable.last1500[i]\n /*\n if (index > 18 && index < 22) { // You can debug what is going on by console logging whatever you need. \n console.log(\"index=\" + index + \" i=\" + i + \" variable.last1500.length=\" + variable.last1500.length + \" periods=\" + periods + \" sum=\" + sum + \" sum/periods=\" + (sum / periods) + \" currentValue=\" + (variable.last1500[i]))\n }\n */\n }\n let sma = sum / periods\n return sma\n}","id":"382c5abf-a91a-40c0-88c2-7e230e93ed44","savedPayload":{"position":{"x":13039.015430467769,"y":19851.60903304884},"targetPosition":{"x":13060.029201962092,"y":19652.124540724446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d3dab655-2db2-4d4c-a776-91a6ae116304","savedPayload":{"position":{"x":13060.029201962092,"y":19652.124540724446},"targetPosition":{"x":13080.660494228503,"y":19453.0544320219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code. This goes at the Code of the Procedure Initialization Object */\n\n/* \nThis is the array where we are going to store the last 1500 elements, since we will not \nhave access to such long backwards history while processing daily files. In those situations\nwe only have access to the last 2 days of candles, which in 45 min for example, means 36\ncandles from the current day and 36 from the previous one. For that reason we will keep\nthis array with the last 200 candle.close values so that we overecome that limitation.\n*/\n\nvariable.last1500 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")","id":"41af43f4-4f30-404d-8d9e-3ad5e752688c","savedPayload":{"position":{"x":12730.027237512804,"y":19627.610511752446},"targetPosition":{"x":12913.1284961775,"y":19546.01042994176},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f8611aff-7f4f-4df8-a2ac-b92ef5633ad4","savedPayload":{"position":{"x":12913.1284961775,"y":19546.01042994176},"targetPosition":{"x":13080.660494228503,"y":19453.0544320219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e8bebfde-97db-42d7-93a2-972366bc002c","savedPayload":{"position":{"x":13080.660494228503,"y":19453.0544320219},"targetPosition":{"x":13341.2011782317,"y":19094.14982537033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"607ebabd-9602-4e5c-803d-d4207dbd6794","savedPayload":{"position":{"x":13356.76331679153,"y":19120.88613506552},"targetPosition":{"x":13223.777190505187,"y":18710.89260208997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c1c6f0e0-49f7-4723-bf22-dd24dfee6102","savedPayload":{"position":{"x":13290.278273539294,"y":18710.736887902134},"targetPosition":{"x":12824.153406676238,"y":18710.73255185816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Indicator Bot","name":"EMA","config":"{\n\"codeName\": \"EMA\",\n\"repo\": \"EMA-Indicator-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates EMAs based on SMAs\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Popular EMAs","id":"4e72640b-d384-434c-a607-47b1c8e4c9ef","savedPayload":{"position":{"x":13379.664662340787,"y":18153.942503117923},"targetPosition":{"x":13483.944857246155,"y":18348.37851565246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"ea1af06a-2584-43f0-aecf-ec8ad9169e9c"}}},{"type":"Output Dataset","name":"Multi-Period-Market Base7 EMAs","id":"e554af82-9965-4a5d-a59a-3dc873526ad9","savedPayload":{"position":{"x":13511.301303827358,"y":18145.664129649107},"targetPosition":{"x":13483.944857246155,"y":18348.37851565246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"4e36a5a5-7a03-43a9-b3e0-0c5763c29199"}}},{"type":"Output Dataset","name":"Multi-Period-Market Base11 EMAs","id":"fcefc8e1-6900-485f-a5b0-80366450aedf","savedPayload":{"position":{"x":13633.47753436347,"y":18212.863359554383},"targetPosition":{"x":13483.944857246155,"y":18348.37851565246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"5586aa74-2ecb-4b71-83ea-d621aa400660"}}}],"outputDatasetFolders":[],"id":"268cf8f3-e871-4fed-bbdb-725a070e7cb6","savedPayload":{"position":{"x":13483.944857246155,"y":18348.37851565246},"targetPosition":{"x":13460.467472562019,"y":18805.445787747405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"EMA Multi-Period-Market","config":"{\"mainUtility\": \"Self Reference\"}","id":"6c163397-f3a4-4acc-b281-567f2809b8a0","savedPayload":{"position":{"x":13658.33634085643,"y":18345.445174268447},"targetPosition":{"x":13705.685054452953,"y":18500.30832199008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"8e7c0f51-727f-4a28-b516-087443ee369f"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","config":"{ \n\"mainUtility\": \"Market Ending Point.\"\n}","id":"eb2d5251-f873-4785-80c8-3a75186e6fa9","savedPayload":{"position":{"x":13780.472805906189,"y":18362.814148853602},"targetPosition":{"x":13705.685054452953,"y":18500.30832199008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"7715ed1a-35f7-4b1c-ad79-fcd2486fe2ca","savedPayload":{"position":{"x":13838.137544422349,"y":18474.104920179107},"targetPosition":{"x":13705.685054452953,"y":18500.30832199008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"dataMineDataDependencies":[],"id":"39426478-777d-4ef5-a72a-2ad862c979c7","savedPayload":{"position":{"x":13705.685054452953,"y":18500.30832199008},"targetPosition":{"x":13460.467472562019,"y":18805.445787747405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"8e7c0f51-727f-4a28-b516-087443ee369f","savedPayload":{"position":{"x":13880.506456819245,"y":18599.270336949117},"targetPosition":{"x":13460.467472562019,"y":18805.445787747405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"19e3e53c-0752-4cae-93bd-162e0839b32f","savedPayload":{"position":{"x":13929.53730682903,"y":18830.223997837453},"targetPosition":{"x":13460.467472562019,"y":18805.445787747405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f865a93d-38fd-433f-92e6-ccb7f2d33b05","savedPayload":{"position":{"x":13854.501943821731,"y":19061.305880486285},"targetPosition":{"x":13460.467472562019,"y":18805.445787747405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"278c34a7-199d-400e-8a06-087149e3d391","savedPayload":{"position":{"x":13473.210879125005,"y":18800.877778574217},"targetPosition":{"x":13106.547681452128,"y":18993.5176709163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Calculates EMAs based on SMAs.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily Popular EMAs","id":"24f5e41a-5839-4174-8e74-2fcde5c2f6a4","savedPayload":{"position":{"x":13586.284075438185,"y":18324.338501899896},"targetPosition":{"x":13667.840652659152,"y":18507.750428589497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"e7f5899c-fc4c-412d-a8db-77c1bef8ed21"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Base11 EMAs","id":"cf348b8d-e3cb-4841-b064-6bf2a8b54062","savedPayload":{"position":{"x":13739.530456752584,"y":18319.767479469152},"targetPosition":{"x":13667.840652659152,"y":18507.750428589497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"0198fa3f-98e3-4c57-a4a4-a7a8e27905d3"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Base7 EMAs","id":"49d8444c-a216-4d81-8039-fa15683ed461","savedPayload":{"position":{"x":13829.535029208053,"y":18372.72510557043},"targetPosition":{"x":13667.840652659152,"y":18507.750428589497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"15ccbcff-318d-46db-93f2-d649b57fd52a"}}}],"outputDatasetFolders":[],"id":"3864c37f-f9dc-433d-96e4-e36a6720adf1","savedPayload":{"position":{"x":13667.840652659152,"y":18507.750428589497},"targetPosition":{"x":13503.890427833407,"y":18935.724898297405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"EMA Multi-Period-Daily","config":"{\"mainUtility\": \"Self Reference\"}","id":"2b523347-3f95-43ab-9ac8-72470000c774","savedPayload":{"position":{"x":13864.762418925344,"y":18497.557642331438},"targetPosition":{"x":13867.817815409237,"y":18641.708865042885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"fb2c8ec5-75ff-41e9-8782-60a952bd06e8"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\"mainUtility\": \"Market Starting Point\"}","id":"5c6a74d3-7f45-409c-a408-fe3c67c050e9","savedPayload":{"position":{"x":13990.605708797235,"y":18463.03576348888},"targetPosition":{"x":13867.817815409237,"y":18641.708865042885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","config":"{ \n\"mainUtility\": \"Market Ending Point\"\n}","id":"dbfe665f-e805-40f4-a494-231cc265acc8","savedPayload":{"position":{"x":14059.987943476475,"y":18568.07590329809},"targetPosition":{"x":13867.817815409237,"y":18641.708865042885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"70d56a4f-6375-456e-b797-d590ab2109a3","savedPayload":{"position":{"x":14062.66904168245,"y":18699.607836215127},"targetPosition":{"x":13867.817815409237,"y":18641.708865042885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"dataMineDataDependencies":[],"id":"b5b3313a-d8e6-4b64-9300-fdc6693a2cb7","savedPayload":{"position":{"x":13867.817815409237,"y":18641.708865042885},"targetPosition":{"x":13503.890427833407,"y":18935.724898297405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"fb2c8ec5-75ff-41e9-8782-60a952bd06e8","savedPayload":{"position":{"x":13966.80662820059,"y":18862.58008427244},"targetPosition":{"x":13503.890427833407,"y":18935.724898297405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"41fe3adc-42c9-4f5d-b757-13cedd7e0155","savedPayload":{"position":{"x":13941.425418742067,"y":19104.015210281344},"targetPosition":{"x":13503.890427833407,"y":18935.724898297405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"e232777d-86ee-4bb4-9a6d-659f06493aa5","savedPayload":{"position":{"x":13799.073472119302,"y":19300.638788527343},"targetPosition":{"x":13503.890427833407,"y":18935.724898297405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2","savedPayload":{"position":{"x":13516.247834364494,"y":18932.574453728983},"targetPosition":{"x":13106.547681452128,"y":18993.5176709163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Popular EMAs","config":"{\n \"codeName\": \"Popular-EMAs\",\n \"singularVariableName\": \"popularEMA\",\n \"pluralVariableName\": \"popularEMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"ea1af06a-2584-43f0-aecf-ec8ad9169e9c","savedPayload":{"position":{"x":13709.134309334038,"y":18857.99513919908},"targetPosition":{"x":13505.139928478817,"y":19061.07756287141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"e7f5899c-fc4c-412d-a8db-77c1bef8ed21","savedPayload":{"position":{"x":13789.644699937584,"y":19016.330138931487},"targetPosition":{"x":13505.139928478817,"y":19061.07756287141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"a88a6b8e-0c81-45f5-b69f-33ead2c9af2a","savedPayload":{"position":{"x":14827.312904684715,"y":19169.32213760436},"targetPosition":{"x":14879.090147588357,"y":19427.67265598022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"60b742b7-4a6b-4c3a-a924-7ae2c7c284d8","savedPayload":{"position":{"x":14879.090147588357,"y":19427.67265598022},"targetPosition":{"x":14953.5572115888,"y":19797.518422574944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"f12e6638-8bbd-4bff-b969-232c1861b45c","savedPayload":{"position":{"x":15361.994533497878,"y":19309.191793246096},"targetPosition":{"x":15193.153499494796,"y":19511.02200631321},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"87688525-3fc6-4a15-806d-fd8d0f3fd876","savedPayload":{"position":{"x":15193.153499494796,"y":19511.02200631321},"targetPosition":{"x":14953.5572115888,"y":19797.518422574944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA20","config":"{\n \"codeName\": \"ema20\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema20","id":"71d926a1-6f74-452c-a8af-2df52ccfceb2","savedPayload":{"position":{"x":15589.074598585992,"y":19810.530121561158},"targetPosition":{"x":15326.30818174641,"y":19805.091079001915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5058b626-2b62-47c3-a915-12d6d451487c","savedPayload":{"position":{"x":15326.30818174641,"y":19805.091079001915},"targetPosition":{"x":14953.5572115888,"y":19797.518422574944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA50","config":"{\n \"codeName\": \"ema50\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema50","id":"7d744a34-29cc-46fa-89c9-a3258bbf79f6","savedPayload":{"position":{"x":15341.083786950649,"y":20300.83476538135},"targetPosition":{"x":15179.659283164738,"y":20091.186654453002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1293683f-1686-47f2-8856-ce40dc753450","savedPayload":{"position":{"x":15179.659283164738,"y":20091.186654453002},"targetPosition":{"x":14953.5572115888,"y":19797.518422574944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA100","config":"{\n \"codeName\": \"ema100\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema100","id":"c0465aae-99b4-488f-801b-f0c96c30a695","savedPayload":{"position":{"x":14813.347582396027,"y":20394.83208078502},"targetPosition":{"x":14862.19901759568,"y":20156.429049862934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2b72da7-da22-46bb-8f7b-1f2b4fdc0324","savedPayload":{"position":{"x":14862.19901759568,"y":20156.429049862934},"targetPosition":{"x":14953.5572115888,"y":19797.518422574944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA200","config":"{\n \"codeName\": \"ema200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema200","id":"4ef9d626-2bf5-4a0b-bb72-6528f0ece6eb","savedPayload":{"position":{"x":14377.597370404694,"y":20056.750462569937},"targetPosition":{"x":14617.042795905441,"y":19948.933519010312},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9e3b4c1a-8cff-4999-b8af-d8403ee3f614","savedPayload":{"position":{"x":14617.042795905441,"y":19948.933519010312},"targetPosition":{"x":14953.5572115888,"y":19797.518422574944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3a6ab821-f693-4929-a0d7-ad0499d23e68","savedPayload":{"position":{"x":14040.280439072945,"y":19332.393405496066},"targetPosition":{"x":13505.139928478817,"y":19061.07756287141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current \n\nvariable.ema20 = calculateEMA(20, candle.close, variable.previousEMA20)\nvariable.previousEMA20 = variable.ema20 \n \nvariable.ema50 = calculateEMA(50, candle.close, variable.previousEMA50)\nvariable.previousEMA50 = variable.ema50 \n\nvariable.ema100 = calculateEMA(100, candle.close, variable.previousEMA100)\nvariable.previousEMA100 = variable.ema100 \n\nvariable.ema200 = calculateEMA(200, candle.close, variable.previousEMA200)\nvariable.previousEMA200 = variable.ema200 \n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}","id":"25aad3fa-6c8f-46b0-8852-07a95544d6bd","savedPayload":{"position":{"x":13862.440527553454,"y":19483.096543040985},"targetPosition":{"x":13761.968757911685,"y":19423.610552611},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d4805ae2-446b-4e54-89c6-0b2e9df3fade","savedPayload":{"position":{"x":13761.968757911685,"y":19423.610552611},"targetPosition":{"x":13659.81694665298,"y":19364.131544943626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.previousEMA20 = 0\nvariable.previousEMA50 = 0\nvariable.previousEMA100 = 0\nvariable.previousEMA200 = 0","id":"c5b50764-185a-43a8-b399-62dd6d81a249","savedPayload":{"position":{"x":13652.371739251344,"y":19609.428656270702},"targetPosition":{"x":13655.731989563907,"y":19480.080785042675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6dd7dc20-5c47-4226-8abc-8551b6bd698f","savedPayload":{"position":{"x":13655.731989563907,"y":19480.080785042675},"targetPosition":{"x":13659.81694665298,"y":19364.131544943626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4c2e867a-f31c-4356-be35-138cdc902c15","savedPayload":{"position":{"x":13659.81694665298,"y":19364.131544943626},"targetPosition":{"x":13505.139928478817,"y":19061.07756287141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d5894707-b065-429b-ba6b-78c71e6529fe","savedPayload":{"position":{"x":13533.837942939657,"y":19066.123686625393},"targetPosition":{"x":13106.547681452128,"y":18993.5176709163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"EMA Popular","id":"79bf7438-f77a-4c8d-a450-67027d5fd8bc"}}},{"type":"Product Definition","name":"Base5 EMAs","config":"{\n \"codeName\": \"Base5-EMAs\",\n \"singularVariableName\": \"base5EMA\",\n \"pluralVariableName\": \"base5EMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"85e3f0ce-5331-4c0b-900a-e73aaf53d96e","savedPayload":{"position":{"x":13840.61711696815,"y":18986.85872831462},"targetPosition":{"x":13464.180602771505,"y":19178.18585144751},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"e04edb48-09ab-4f92-beb7-14ba647de7d6","savedPayload":{"position":{"x":13880.356420093553,"y":19244.25368951045},"targetPosition":{"x":13464.180602771505,"y":19178.18585144751},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"6d1e00cd-ea21-4c5d-9f21-bbe4e18eaaa1","savedPayload":{"position":{"x":14464.569698133559,"y":19669.774562903254},"targetPosition":{"x":14557.355264202806,"y":19916.7060382736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7804f5d6-913b-48d3-941a-10135819f0d7","savedPayload":{"position":{"x":14557.355264202806,"y":19916.7060382736},"targetPosition":{"x":14688.8978588411,"y":20263.339825243595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"615487b1-0964-4bfc-800e-f8d3471dfeb0","savedPayload":{"position":{"x":14724.43420379533,"y":19628.965306615213},"targetPosition":{"x":14709.60295663911,"y":19891.61698453138},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5aaf85b9-35bd-47f1-a2a4-dcfa881bc542","savedPayload":{"position":{"x":14709.60295663911,"y":19891.61698453138},"targetPosition":{"x":14688.8978588411,"y":20263.339825243595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA5","config":"{\n \"codeName\": \"ema5\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema5","id":"1abd53a1-2924-4db2-b50c-06e36aa91e47","savedPayload":{"position":{"x":14979.335396595741,"y":19696.852672186054},"targetPosition":{"x":14858.763437607855,"y":19931.9080115876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4912e0cb-1bba-4750-a063-d8d205091281","savedPayload":{"position":{"x":14858.763437607855,"y":19931.9080115876},"targetPosition":{"x":14688.8978588411,"y":20263.339825243595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA10","config":"{\n \"codeName\": \"ema10\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema10","id":"00ca97c2-f4e9-4d08-af83-3fee7e5d1887","savedPayload":{"position":{"x":15183.514852980314,"y":19863.963694708604},"targetPosition":{"x":14979.489907020261,"y":20028.66125246371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f7e888a6-a986-45fe-804d-c4cba934bd9b","savedPayload":{"position":{"x":14979.489907020261,"y":20028.66125246371},"targetPosition":{"x":14688.8978588411,"y":20263.339825243595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA15","config":"{\n \"codeName\": \"ema15\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema15","id":"f259ce57-d1c2-4196-8e55-dae9f1eb78f5","savedPayload":{"position":{"x":15304.50912579303,"y":20098.652769410943},"targetPosition":{"x":15048.44144933995,"y":20167.09633926248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9720b3bd-fcb9-4997-9fe8-9d8682aa9dc9","savedPayload":{"position":{"x":15048.44144933995,"y":20167.09633926248},"targetPosition":{"x":14688.8978588411,"y":20263.339825243595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA20","config":"{\n \"codeName\": \"ema20\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema20","id":"5c7d8482-a86c-4ebc-8524-31b1a73900c3","savedPayload":{"position":{"x":15317.336130905018,"y":20361.828540838575},"targetPosition":{"x":15057.667715437916,"y":20321.08748841589},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"716e98b8-640e-4653-9c50-ca0286c851c0","savedPayload":{"position":{"x":15057.667715437916,"y":20321.08748841589},"targetPosition":{"x":14688.8978588411,"y":20263.339825243595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA25","config":"{\n \"codeName\": \"ema25\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema25","id":"031e3d2f-b487-4df2-9892-845d3e43916a","savedPayload":{"position":{"x":15223.60672682604,"y":20609.466666823744},"targetPosition":{"x":15000.951960714023,"y":20465.684457162955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"56be5d1d-2bd8-42dd-9861-729f4bb72ccf","savedPayload":{"position":{"x":15000.951960714023,"y":20465.684457162955},"targetPosition":{"x":14688.8978588411,"y":20263.339825243595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA50","config":"{\n \"codeName\": \"ema50\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema50","id":"309f068f-74e5-4405-8267-418ea12ca20d","savedPayload":{"position":{"x":15038.319262784478,"y":20795.800855820387},"targetPosition":{"x":14893.08513076795,"y":20574.432055294095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ed5849ae-b0fe-4915-b8c3-8bdb004e5acf","savedPayload":{"position":{"x":14893.08513076795,"y":20574.432055294095},"targetPosition":{"x":14688.8978588411,"y":20263.339825243595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA100","config":"{\n \"codeName\": \"ema100\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema100","id":"6b164582-e3a2-4ea0-bc0a-e362929d556f","savedPayload":{"position":{"x":14824.935637458622,"y":20906.184164244452},"targetPosition":{"x":14748.917055804532,"y":20630.649686285054},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7f690611-834a-4048-bf59-5685995167e9","savedPayload":{"position":{"x":14748.917055804532,"y":20630.649686285054},"targetPosition":{"x":14688.8978588411,"y":20263.339825243595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA150","config":"{\n \"codeName\": \"ema150\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema150","id":"829731e3-421a-4b49-ac4d-69cc76cdbfab","savedPayload":{"position":{"x":14544.630080617311,"y":20884.684008722874},"targetPosition":{"x":14594.442463222966,"y":20622.44832412212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6b51dbbf-76eb-484b-9535-6043984a7ed6","savedPayload":{"position":{"x":14594.442463222966,"y":20622.44832412212},"targetPosition":{"x":14688.8978588411,"y":20263.339825243595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA200","config":"{\n \"codeName\": \"ema200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema200","id":"3786f9d4-064e-43ba-8098-d336cd64cfb4","savedPayload":{"position":{"x":14290.061192404524,"y":20750.681882571873},"targetPosition":{"x":14456.438347265694,"y":20551.57755311192},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9f96cb9c-ac78-4d23-80e7-650dcff0a56a","savedPayload":{"position":{"x":14456.438347265694,"y":20551.57755311192},"targetPosition":{"x":14688.8978588411,"y":20263.339825243595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA250","config":"{\n \"codeName\": \"ema250\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema250","id":"710f1d8e-a59f-41d9-9576-e73e292d5cac","savedPayload":{"position":{"x":14137.310108538191,"y":20550.223092245964},"targetPosition":{"x":14359.642667091988,"y":20431.337024480996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9e3fc138-8765-46af-95a3-6ee316f49a72","savedPayload":{"position":{"x":14359.642667091988,"y":20431.337024480996},"targetPosition":{"x":14688.8978588411,"y":20263.339825243595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA500","config":"{\n \"codeName\": \"ema500\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema500","id":"8be9f984-f4ad-471c-885d-b0291c74f04f","savedPayload":{"position":{"x":14059.182453931628,"y":20293.716305004946},"targetPosition":{"x":14320.163186415872,"y":20281.382346724848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"05a21cb3-24bc-42cf-8269-62f14e8f3ed1","savedPayload":{"position":{"x":14320.163186415872,"y":20281.382346724848},"targetPosition":{"x":14688.8978588411,"y":20263.339825243595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA1000","config":"{\n \"codeName\": \"ema1000\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema1000","id":"1001e9de-822a-4a75-9526-390dc6be8fe7","savedPayload":{"position":{"x":14099.151966979249,"y":20036.136275548306},"targetPosition":{"x":14344.833096830405,"y":20128.704554169693},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cc878593-3f3d-4533-9ed1-a7c7fd0cdd99","savedPayload":{"position":{"x":14344.833096830405,"y":20128.704554169693},"targetPosition":{"x":14688.8978588411,"y":20263.339825243595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7133bdf5-a6d6-4ca5-bc27-390fe276eca6","savedPayload":{"position":{"x":13888.60434233705,"y":19602.48645757513},"targetPosition":{"x":13464.180602771505,"y":19178.18585144751},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current \n\nvariable.ema5 = calculateEMA(5, candle.close, variable.previousEMA5)\nvariable.previousEMA5 = variable.ema5\n\nvariable.ema10 = calculateEMA(10, candle.close, variable.previousEMA10)\nvariable.previousEMA10 = variable.ema10\n\nvariable.ema15 = calculateEMA(15, candle.close, variable.previousEMA15)\nvariable.previousEMA15 = variable.ema15\n\nvariable.ema20 = calculateEMA(20, candle.close, variable.previousEMA20)\nvariable.previousEMA20 = variable.ema20\n\nvariable.ema25 = calculateEMA(25, candle.close, variable.previousEMA25)\nvariable.previousEMA25 = variable.ema25\n\nvariable.ema50 = calculateEMA(50, candle.close, variable.previousEMA50)\nvariable.previousEMA50 = variable.ema50\n\nvariable.ema100 = calculateEMA(100, candle.close, variable.previousEMA100)\nvariable.previousEMA100 = variable.ema100\n\nvariable.ema150 = calculateEMA(150, candle.close, variable.previousEMA150)\nvariable.previousEMA150 = variable.ema150\n\nvariable.ema200 = calculateEMA(200, candle.close, variable.previousEMA200)\nvariable.previousEMA200 = variable.ema200\n\nvariable.ema250 = calculateEMA(250, candle.close, variable.previousEMA250)\nvariable.previousEMA250 = variable.ema250\n\nvariable.ema500 = calculateEMA(500, candle.close, variable.previousEMA500)\nvariable.previousEMA500 = variable.ema500\n\nvariable.ema1000 = calculateEMA(1000, candle.close, variable.previousEMA1000)\nvariable.previousEMA1000 = variable.ema1000\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}\n","id":"3ea21697-ef5d-421a-825c-db6f04a041ce","savedPayload":{"position":{"x":13785.629922971704,"y":19927.48266641283},"targetPosition":{"x":13659.814922944794,"y":19771.484112102356},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d955ad88-0ca4-443b-8d4e-fa0c322d7797","savedPayload":{"position":{"x":13659.814922944794,"y":19771.484112102356},"targetPosition":{"x":13533.72752948089,"y":19614.99907067802},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.previousEMA5 = 0\nvariable.previousEMA10 = 0\nvariable.previousEMA15 = 0\nvariable.previousEMA20 = 0\nvariable.previousEMA25 = 0\nvariable.previousEMA50 = 0\nvariable.previousEMA100 = 0\nvariable.previousEMA150 = 0\nvariable.previousEMA200 = 0\nvariable.previousEMA250 = 0\nvariable.previousEMA500 = 0\nvariable.previousEMA1000 = 0","id":"b951bfdc-9216-4494-8bcf-66099ea9eb8f","savedPayload":{"position":{"x":13390.998737062762,"y":19990.050871689582},"targetPosition":{"x":13462.584063902195,"y":19802.90906811835},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2aa36b6f-bde7-433d-a7b6-e646b19e2c20","savedPayload":{"position":{"x":13462.584063902195,"y":19802.90906811835},"targetPosition":{"x":13533.72752948089,"y":19614.99907067802},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"54d9ab04-cfe7-433e-8c85-36a511b38d6d","savedPayload":{"position":{"x":13533.72752948089,"y":19614.99907067802},"targetPosition":{"x":13464.180602771505,"y":19178.18585144751},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9a37881e-7d9a-4279-95b2-8743de82eec5","savedPayload":{"position":{"x":13489.974454264875,"y":19190.58625021909},"targetPosition":{"x":13106.547681452128,"y":18993.5176709163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition","name":"Base6 EMAs","config":"{\n \"codeName\": \"Base6-EMAs\",\n \"singularVariableName\": \"base6EMA\",\n \"pluralVariableName\": \"base6EMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"6b6840f7-3b76-474a-9d27-9515cbcd6499","savedPayload":{"position":{"x":13806.535387435883,"y":19213.21771387086},"targetPosition":{"x":13390.20380658635,"y":19278.669782760535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"ef3d5a7d-11eb-4ead-8e24-49ac7c80b0c7","savedPayload":{"position":{"x":13765.832449042156,"y":19470.311892238125},"targetPosition":{"x":13390.20380658635,"y":19278.669782760535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"611ac809-a75a-4550-b9a7-2f5f43cae1e8","savedPayload":{"position":{"x":14266.365924595704,"y":20045.573839425695},"targetPosition":{"x":14278.695103860236,"y":20307.304543817834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"77290003-4665-4c78-bce6-7cb50a44bb31","savedPayload":{"position":{"x":14278.695103860236,"y":20307.304543817834},"targetPosition":{"x":14295.124103313983,"y":20638.559420375816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"59bd5c2f-dd37-4724-8b40-593ba56967ba","savedPayload":{"position":{"x":14510.063753043933,"y":20084.07600396851},"targetPosition":{"x":14415.270026423621,"y":20328.56329503164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"70c54561-94ce-4d2a-a56e-cf1cd4d2a2f5","savedPayload":{"position":{"x":14415.270026423621,"y":20328.56329503164},"targetPosition":{"x":14295.124103313983,"y":20638.559420375816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA6","config":"{\n \"codeName\": \"ema6\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema6","id":"330b3cad-7015-4691-98ff-e6c0aaeaa807","savedPayload":{"position":{"x":14716.93528718763,"y":20218.429254155573},"targetPosition":{"x":14530.52398829486,"y":20403.995915547028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a7e48821-628f-4393-9272-055bcc8ea5f7","savedPayload":{"position":{"x":14530.52398829486,"y":20403.995915547028},"targetPosition":{"x":14295.124103313983,"y":20638.559420375816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA12","config":"{\n \"codeName\": \"ema12\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema12","id":"7679a1d7-49b9-4798-82d2-f00dbfd7db05","savedPayload":{"position":{"x":14852.135013991321,"y":20425.531709078885},"targetPosition":{"x":14605.81097281099,"y":20519.862587124986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"53cda9a0-2acf-4fa9-b52b-c860da5dbb32","savedPayload":{"position":{"x":14605.81097281099,"y":20519.862587124986},"targetPosition":{"x":14295.124103313983,"y":20638.559420375816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA18","config":"{\n \"codeName\": \"ema18\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema18","id":"092a466e-c714-41b3-8053-a4c060520f3c","savedPayload":{"position":{"x":14890.654993575916,"y":20669.513318559548},"targetPosition":{"x":14628.018726862081,"y":20655.880108700738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"446296f9-21fa-4a92-bc49-23fb81af896b","savedPayload":{"position":{"x":14628.018726862081,"y":20655.880108700738},"targetPosition":{"x":14295.124103313983,"y":20638.559420375816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA24","config":"{\n \"codeName\": \"ema24\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema24","id":"f666cf13-3e37-4649-a2fc-338fabb1f7d0","savedPayload":{"position":{"x":14826.033218851842,"y":20908.473299583413},"targetPosition":{"x":14592.297129192057,"y":20789.493148396792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"518927a0-e986-4c9e-a645-75c02c2f571b","savedPayload":{"position":{"x":14592.297129192057,"y":20789.493148396792},"targetPosition":{"x":14295.124103313983,"y":20638.559420375816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA30","config":"{\n \"codeName\": \"ema30\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema30","id":"3c76eaaf-56ac-4e91-9ee5-11b32219d2ea","savedPayload":{"position":{"x":14670.6812303989,"y":21100.357397777436},"targetPosition":{"x":14504.88017263992,"y":20896.713474384906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3b056114-3148-432d-908e-d82df0355b7f","savedPayload":{"position":{"x":14504.88017263992,"y":20896.713474384906},"targetPosition":{"x":14295.124103313983,"y":20638.559420375816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA60","config":"{\n \"codeName\": \"ema60\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema60","id":"ee78d4d5-f202-4d8e-ae88-eea38f2d0bc0","savedPayload":{"position":{"x":14451.623673701668,"y":21213.35508011578},"targetPosition":{"x":14382.368422747497,"y":20958.755511927502},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"83802e58-4437-4ddc-b329-9ae962866387","savedPayload":{"position":{"x":14382.368422747497,"y":20958.755511927502},"targetPosition":{"x":14295.124103313983,"y":20638.559420375816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA120","config":"{\n \"codeName\": \"ema120\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema120","id":"ab81fc7a-4873-49d2-a3ef-c9c1eed99dba","savedPayload":{"position":{"x":14232.688236136068,"y":21216.20628392857},"targetPosition":{"x":14240.918600518291,"y":20964.583093282235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bec21f4d-ac0c-4b70-a565-16d065d1e89c","savedPayload":{"position":{"x":14240.918600518291,"y":20964.583093282235},"targetPosition":{"x":14295.124103313983,"y":20638.559420375816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA180","config":"{\n \"codeName\": \"ema180\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema180","id":"ce0ce81c-9577-4cc6-8edd-ad99c52916aa","savedPayload":{"position":{"x":13978.932393961839,"y":21149.816547650273},"targetPosition":{"x":14116.272903376523,"y":20917.19267482156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7318a961-0663-4a33-9295-21a8ab990854","savedPayload":{"position":{"x":14116.272903376523,"y":20917.19267482156},"targetPosition":{"x":14295.124103313983,"y":20638.559420375816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA240","config":"{\n \"codeName\": \"ema240\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema240","id":"f9c4fe37-e76d-4601-9933-ce1ad3e8ad3d","savedPayload":{"position":{"x":13807.951789917179,"y":20974.089647771016},"targetPosition":{"x":14018.684668110656,"y":20818.459312728657},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b2bfa489-cb63-498e-8a80-a82ebf19d0e6","savedPayload":{"position":{"x":14018.684668110656,"y":20818.459312728657},"targetPosition":{"x":14295.124103313983,"y":20638.559420375816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA300","config":"{\n \"codeName\": \"ema300\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema300","id":"8b93fa9d-ea11-4654-a6ac-70411f0db75a","savedPayload":{"position":{"x":13716.562669509049,"y":20741.793643607263},"targetPosition":{"x":13975.46735986736,"y":20701.25084850316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a6926058-2ae5-454e-b696-b9d49162e901","savedPayload":{"position":{"x":13975.46735986736,"y":20701.25084850316},"targetPosition":{"x":14295.124103313983,"y":20638.559420375816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA600","config":"{\n \"codeName\": \"ema600\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema600","id":"b67f8d22-c54d-4a21-a726-a8975c10d710","savedPayload":{"position":{"x":13723.655223102882,"y":20481.712157661466},"targetPosition":{"x":13976.69553586995,"y":20552.130494134897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cd299cac-3be1-4899-8816-70baccd30168","savedPayload":{"position":{"x":13976.69553586995,"y":20552.130494134897},"targetPosition":{"x":14295.124103313983,"y":20638.559420375816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA1200","config":"{\n \"codeName\": \"ema1200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema1200","id":"f7b1d5d4-86c8-4a90-a98a-774fe1171e73","savedPayload":{"position":{"x":13836.052792531684,"y":20267.62701534143},"targetPosition":{"x":14038.337564769261,"y":20432.05854859604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"717ba1d7-3b27-4f87-8e25-c2a26f435e67","savedPayload":{"position":{"x":14038.337564769261,"y":20432.05854859604},"targetPosition":{"x":14295.124103313983,"y":20638.559420375816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"003162cf-ab76-4dea-ac72-a4dd3a0e87ac","savedPayload":{"position":{"x":13662.700073776361,"y":19813.447203092113},"targetPosition":{"x":13390.20380658635,"y":19278.669782760535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current \n\nvariable.ema6 = calculateEMA(6, candle.close, variable.previousEMA6)\nvariable.previousEMA6 = variable.ema6\n\nvariable.ema12 = calculateEMA(12, candle.close, variable.previousEMA12)\nvariable.previousEMA12 = variable.ema12\n\nvariable.ema18 = calculateEMA(18, candle.close, variable.previousEMA18)\nvariable.previousEMA18 = variable.ema18\n\nvariable.ema24 = calculateEMA(24, candle.close, variable.previousEMA24)\nvariable.previousEMA24 = variable.ema24\n\nvariable.ema30 = calculateEMA(30, candle.close, variable.previousEMA30)\nvariable.previousEMA30 = variable.ema30\n\nvariable.ema60 = calculateEMA(60, candle.close, variable.previousEMA60)\nvariable.previousEMA60 = variable.ema60\n\nvariable.ema120 = calculateEMA(120, candle.close, variable.previousEMA120)\nvariable.previousEMA120 = variable.ema120\n\nvariable.ema180 = calculateEMA(180, candle.close, variable.previousEMA180)\nvariable.previousEMA180 = variable.ema180\n\nvariable.ema240 = calculateEMA(240, candle.close, variable.previousEMA240)\nvariable.previousEMA240 = variable.ema240\n\nvariable.ema300 = calculateEMA(300, candle.close, variable.previousEMA300)\nvariable.previousEMA300 = variable.ema300\n\nvariable.ema600 = calculateEMA(600, candle.close, variable.previousEMA600)\nvariable.previousEMA600 = variable.ema600\n\nvariable.ema1200 = calculateEMA(1200, candle.close, variable.previousEMA1200)\nvariable.previousEMA1200 = variable.ema1200\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}","id":"49789f74-3691-45b3-8c29-9a72500ae81c","savedPayload":{"position":{"x":13464.32046814286,"y":20091.03795285885},"targetPosition":{"x":13392.943152660966,"y":19903.527688326743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ed1c9899-0b00-4cc5-b30d-faefdbe914d6","savedPayload":{"position":{"x":13392.943152660966,"y":19903.527688326743},"targetPosition":{"x":13321.304339231276,"y":19716.67028971601},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.previousEMA6 = 0\nvariable.previousEMA12 = 0\nvariable.previousEMA18 = 0\nvariable.previousEMA24 = 0\nvariable.previousEMA30 = 0\nvariable.previousEMA60 = 0\nvariable.previousEMA120 = 0\nvariable.previousEMA180 = 0\nvariable.previousEMA240 = 0\nvariable.previousEMA300 = 0\nvariable.previousEMA600 = 0\nvariable.previousEMA1200 = 0","id":"db307137-4eec-41a0-93ca-af5623c7ecf5","savedPayload":{"position":{"x":13069.784289997744,"y":20028.375910033064},"targetPosition":{"x":13195.721037665993,"y":19872.353523627302},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2c17eb75-3069-47ad-b303-be44390e4736","savedPayload":{"position":{"x":13195.721037665993,"y":19872.353523627302},"targetPosition":{"x":13321.304339231276,"y":19716.67028971601},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"bd1f404b-64bb-4f2e-95f6-8d52f40bebad","savedPayload":{"position":{"x":13321.304339231276,"y":19716.67028971601},"targetPosition":{"x":13390.20380658635,"y":19278.669782760535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e4267570-575b-4e59-9667-cb78aaae052c","savedPayload":{"position":{"x":13411.051643198729,"y":19298.286800830832},"targetPosition":{"x":13106.547681452128,"y":18993.5176709163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition","name":"Base7 EMAs","config":"{\n \"codeName\": \"Base7-EMAs\",\n \"singularVariableName\": \"base7EMA\",\n \"pluralVariableName\": \"base7EMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"4e36a5a5-7a03-43a9-b3e0-0c5763c29199","savedPayload":{"position":{"x":13705.002204762526,"y":19418.00815611096},"targetPosition":{"x":13288.690825033853,"y":19351.985190807543},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"15ccbcff-318d-46db-93f2-d649b57fd52a","savedPayload":{"position":{"x":13586.499232276436,"y":19650.136392837663},"targetPosition":{"x":13288.690825033853,"y":19351.985190807543},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"b91e2094-b8f7-4f7f-a956-30de55c693b7","savedPayload":{"position":{"x":13958.867122762751,"y":20254.53690607171},"targetPosition":{"x":13889.916839567215,"y":20507.476647326337},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5163d7f4-3b6c-41c3-b7f6-ec13109fcb0e","savedPayload":{"position":{"x":13889.916839567215,"y":20507.476647326337},"targetPosition":{"x":13793.113284331432,"y":20866.305428048578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"ea560ee8-06c9-4348-a5b4-24992035245e","savedPayload":{"position":{"x":14193.712841184702,"y":20374.031177244986},"targetPosition":{"x":14028.177739699679,"y":20577.342747882944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4b5dcfda-66ec-4a20-9c4c-0718b51cf761","savedPayload":{"position":{"x":14028.177739699679,"y":20577.342747882944},"targetPosition":{"x":13793.113284331432,"y":20866.305428048578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA7","config":"{\n \"codeName\": \"ema7\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema7","id":"90e20354-4dd5-4e56-aaf5-cf725f02c1e6","savedPayload":{"position":{"x":14359.760653948704,"y":20578.943492711078},"targetPosition":{"x":14125.568721589598,"y":20697.640229212433},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4adf5737-3d1a-4610-9a31-89faddbe679e","savedPayload":{"position":{"x":14125.568721589598,"y":20697.640229212433},"targetPosition":{"x":13793.113284331432,"y":20866.305428048578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA14","config":"{\n \"codeName\": \"ema14\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema14","id":"b158c3b7-a93f-4e13-8d80-dff1a7172416","savedPayload":{"position":{"x":14427.727526461522,"y":20833.605925729316},"targetPosition":{"x":14165.794337190373,"y":20846.982629399605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6c0f0982-caf3-4c7e-a729-54c511ffb65e","savedPayload":{"position":{"x":14165.794337190373,"y":20846.982629399605},"targetPosition":{"x":13793.113284331432,"y":20866.305428048578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA21","config":"{\n \"codeName\": \"ema21\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema21","id":"3ce74000-2892-4b42-a12e-c8efc1504710","savedPayload":{"position":{"x":14391.103325168608,"y":21096.10534984249},"targetPosition":{"x":14145.928124220607,"y":21002.00024530827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ff999b95-7623-4eee-b11c-f53dae69f69c","savedPayload":{"position":{"x":14145.928124220607,"y":21002.00024530827},"targetPosition":{"x":13793.113284331432,"y":20866.305428048578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA28","config":"{\n \"codeName\": \"ema28\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema28","id":"95ccd057-5e33-4b72-a7b0-e44479f3b195","savedPayload":{"position":{"x":14242.811493434683,"y":21315.54752586486},"targetPosition":{"x":14056.896543843797,"y":21129.82628413698},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a30ef925-4ab9-45f6-98f3-6723e57fbf97","savedPayload":{"position":{"x":14056.896543843797,"y":21129.82628413698},"targetPosition":{"x":13793.113284331432,"y":20866.305428048578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA35","config":"{\n \"codeName\": \"ema35\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema35","id":"83513896-dfd7-45a8-aa9a-1922dc9b5b97","savedPayload":{"position":{"x":14022.365445936355,"y":21459.63156636067},"targetPosition":{"x":13927.5949704922,"y":21213.63210761456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2d2b734-e754-4b6c-856b-053eb5b13694","savedPayload":{"position":{"x":13927.5949704922,"y":21213.63210761456},"targetPosition":{"x":13793.113284331432,"y":20866.305428048578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA70","config":"{\n \"codeName\": \"ema70\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema70","id":"23ca8b8e-400b-4638-946c-c871a632d17b","savedPayload":{"position":{"x":13761.368075718996,"y":21500.56314933893},"targetPosition":{"x":13774.257776934324,"y":21238.627795003238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"863c717d-d171-4616-ac79-dd4a5956bfb5","savedPayload":{"position":{"x":13774.257776934324,"y":21238.627795003238},"targetPosition":{"x":13793.113284331432,"y":20866.305428048578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA140","config":"{\n \"codeName\": \"ema140\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema140","id":"fb446f49-e024-4246-9783-d41ea25a8a63","savedPayload":{"position":{"x":13509.414102533452,"y":21435.704159010013},"targetPosition":{"x":13629.063513957894,"y":21200.2756792972},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ba2fbf20-a074-4d89-b1f8-2e00f141b25e","savedPayload":{"position":{"x":13629.063513957894,"y":21200.2756792972},"targetPosition":{"x":13793.113284331432,"y":20866.305428048578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EM210","config":"{\n \"codeName\": \"ema210\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema210","id":"dd3ed495-e64d-4b76-ba8a-8a6fbaebc223","savedPayload":{"position":{"x":13302.552491157969,"y":21267.419597698467},"targetPosition":{"x":13505.630784314324,"y":21100.530721488747},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fbc7524a-d8ff-40c4-9691-1397bd774535","savedPayload":{"position":{"x":13505.630784314324,"y":21100.530721488747},"targetPosition":{"x":13793.113284331432,"y":20866.305428048578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA280","config":"{\n \"codeName\": \"ema280\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema280","id":"45655778-7860-46a8-9ee1-12ab9d4f463b","savedPayload":{"position":{"x":13190.05417160252,"y":21048.237790751537},"targetPosition":{"x":13434.82459614847,"y":20961.919411935418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"49670f83-5516-4fed-bfc9-3ea4ac3a4865","savedPayload":{"position":{"x":13434.82459614847,"y":20961.919411935418},"targetPosition":{"x":13793.113284331432,"y":20866.305428048578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA350","config":"{\n \"codeName\": \"ema350\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema350","id":"6203288d-a807-49ee-a209-4466b959be33","savedPayload":{"position":{"x":13172.82274699216,"y":20789.186162579645},"targetPosition":{"x":13427.193682434541,"y":20809.223137774396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4f06f627-f385-494a-bb6a-a06c62d0d20f","savedPayload":{"position":{"x":13427.193682434541,"y":20809.223137774396},"targetPosition":{"x":13793.113284331432,"y":20866.305428048578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA700","config":"{\n \"codeName\": \"ema700\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema700","id":"1663af80-49b7-4593-ad91-6c79fc61f61c","savedPayload":{"position":{"x":13264.26125293951,"y":20521.73236008234},"targetPosition":{"x":13482.434522604291,"y":20663.794036787767},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b3810873-e8ea-4466-b011-095b648f0064","savedPayload":{"position":{"x":13482.434522604291,"y":20663.794036787767},"targetPosition":{"x":13793.113284331432,"y":20866.305428048578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA1400","config":"{\n \"codeName\": \"ema1400\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema1400","id":"92eee4c6-788b-4aa2-8608-5a026f9f5590","savedPayload":{"position":{"x":13447.226046951562,"y":20337.087615048018},"targetPosition":{"x":13589.082174670291,"y":20556.692070319667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"26a199f6-c167-4de7-9513-0d9c453d8108","savedPayload":{"position":{"x":13589.082174670291,"y":20556.692070319667},"targetPosition":{"x":13793.113284331432,"y":20866.305428048578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e78e6e7a-03db-4e3b-ae8e-b1c309b6ec9e","savedPayload":{"position":{"x":13382.616566497392,"y":19944.832155072345},"targetPosition":{"x":13288.690825033853,"y":19351.985190807543},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current \n\nvariable.ema7 = calculateEMA(7, candle.close, variable.previousEMA7)\nvariable.previousEMA7 = variable.ema7\n\nvariable.ema14 = calculateEMA(14, candle.close, variable.previousEMA14)\nvariable.previousEMA14 = variable.ema14\n\nvariable.ema21 = calculateEMA(21, candle.close, variable.previousEMA21)\nvariable.previousEMA21 = variable.ema21\n\nvariable.ema28 = calculateEMA(28, candle.close, variable.previousEMA28)\nvariable.previousEMA28 = variable.ema28\n\nvariable.ema35 = calculateEMA(35, candle.close, variable.previousEMA35)\nvariable.previousEMA35 = variable.ema35\n\nvariable.ema70 = calculateEMA(70, candle.close, variable.previousEMA70)\nvariable.previousEMA70 = variable.ema70\n\nvariable.ema140 = calculateEMA(140, candle.close, variable.previousEMA140)\nvariable.previousEMA140 = variable.ema140\n\nvariable.ema210 = calculateEMA(210, candle.close, variable.previousEMA210)\nvariable.previousEMA210 = variable.ema210\n\nvariable.ema280 = calculateEMA(280, candle.close, variable.previousEMA280)\nvariable.previousEMA280 = variable.ema280\n\nvariable.ema350 = calculateEMA(350, candle.close, variable.previousEMA350)\nvariable.previousEMA350 = variable.ema350\n\nvariable.ema700 = calculateEMA(700, candle.close, variable.previousEMA700)\nvariable.previousEMA700 = variable.ema700\n\nvariable.ema1400 = calculateEMA(1400, candle.close, variable.previousEMA1400)\nvariable.previousEMA1400 = variable.ema1400\n\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}","id":"9eb652ba-7df8-41a2-bc5f-c6a1922d8b9c","savedPayload":{"position":{"x":13107.653245271522,"y":20147.593805888726},"targetPosition":{"x":13097.687247306807,"y":19946.93531904503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"659c5fa3-33f6-4127-b4f0-dc1bb0c25691","savedPayload":{"position":{"x":13097.687247306807,"y":19946.93531904503},"targetPosition":{"x":13087.403692186102,"y":19747.06998558339},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.previousEMA7 = 0\nvariable.previousEMA14 = 0\nvariable.previousEMA21 = 0\nvariable.previousEMA28 = 0\nvariable.previousEMA35 = 0\nvariable.previousEMA70 = 0\nvariable.previousEMA140 = 0\nvariable.previousEMA210 = 0\nvariable.previousEMA280 = 0\nvariable.previousEMA350 = 0\nvariable.previousEMA700 = 0\nvariable.previousEMA1400 = 0","id":"03253e10-8b5a-4d6d-abc1-1b171138444c","savedPayload":{"position":{"x":12751.406940368615,"y":19966.088568803752},"targetPosition":{"x":12919.564195713885,"y":19856.278414438177},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"07d4aaa2-43ba-42a3-9a5b-73e5866c1307","savedPayload":{"position":{"x":12919.564195713885,"y":19856.278414438177},"targetPosition":{"x":13087.403692186102,"y":19747.06998558339},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"91a31871-1901-4a45-9b00-c5aa30a37bf2","savedPayload":{"position":{"x":13087.403692186102,"y":19747.06998558339},"targetPosition":{"x":13288.690825033853,"y":19351.985190807543},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984","savedPayload":{"position":{"x":13302.083405813763,"y":19377.576603891666},"targetPosition":{"x":13106.547681452128,"y":18993.5176709163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"EMA Base 7","id":"a52a9764-3ef2-44e6-82bd-e6538058119d"}}},{"type":"Product Definition","name":"Base11 EMAs","config":"{\n \"codeName\": \"Base11-EMAs\",\n \"singularVariableName\": \"base11EMA\",\n \"pluralVariableName\": \"base11EMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"5586aa74-2ecb-4b71-83ea-d621aa400660","savedPayload":{"position":{"x":13544.90158766395,"y":19581.934298613894},"targetPosition":{"x":13169.287529371497,"y":19390.524229636758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"0198fa3f-98e3-4c57-a4a4-a7a8e27905d3","savedPayload":{"position":{"x":13360.509409915927,"y":19766.2735124146},"targetPosition":{"x":13169.287529371497,"y":19390.524229636758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"b0559af0-2d8b-401c-8619-1eb20942ec2a","savedPayload":{"position":{"x":13780.809316211415,"y":20559.51542552519},"targetPosition":{"x":13568.259536168856,"y":20713.049051947637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"33f46215-3b1a-422a-9305-89c6ffb342f6","savedPayload":{"position":{"x":13568.259536168856,"y":20713.049051947637},"targetPosition":{"x":13266.901742622487,"y":20931.043919950596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"7bfaab7e-73a5-4086-9eb8-d4a6fdfbbbcf","savedPayload":{"position":{"x":13893.57225590032,"y":21030.648380278246},"targetPosition":{"x":13634.767479938217,"y":20989.51291809799},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6155e3b0-2648-407e-b085-4eac778ca3e8","savedPayload":{"position":{"x":13634.767479938217,"y":20989.51291809799},"targetPosition":{"x":13266.901742622487,"y":20931.043919950596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA11","config":"{\n \"codeName\": \"ema11\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema11","id":"16f9f1d2-c73c-4eb6-9240-0d4015e3252a","savedPayload":{"position":{"x":13640.49091374103,"y":21444.773295297604},"targetPosition":{"x":13485.824076473755,"y":21232.015952702597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b925a6aa-04ee-465b-aa93-fc02066b4e3c","savedPayload":{"position":{"x":13485.824076473755,"y":21232.015952702597},"targetPosition":{"x":13266.901742622487,"y":20931.043919950596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA22","config":"{\n \"codeName\": \"ema22\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema22","id":"21cca6ba-53d3-4fd0-b3c9-43a71702e4f3","savedPayload":{"position":{"x":13169.285812043361,"y":21558.55030725361},"targetPosition":{"x":13209.778097112465,"y":21298.825714693565},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7f02db91-5147-438c-98c9-e024fba210a2","savedPayload":{"position":{"x":13209.778097112465,"y":21298.825714693565},"targetPosition":{"x":13266.901742622487,"y":20931.043919950596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA33","config":"{\n \"codeName\": \"ema33\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema33","id":"69184123-7d64-41a6-ad3f-8f53bf358f95","savedPayload":{"position":{"x":12764.833084964748,"y":21289.43034819752},"targetPosition":{"x":12966.69716284864,"y":21150.546957120034},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"55be1211-a38f-4ff4-8d12-fa78fa8ba2dd","savedPayload":{"position":{"x":12966.69716284864,"y":21150.546957120034},"targetPosition":{"x":13266.901742622487,"y":20931.043919950596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA55","config":"{\n \"codeName\": \"ema55\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema55","id":"5281da7d-c090-4637-9a42-dc28599f0385","savedPayload":{"position":{"x":12628.704959575012,"y":20798.64820017416},"targetPosition":{"x":12901.690604548332,"y":20867.82875135473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"710e13ba-afd9-41c2-b7e8-f0ef7be4bb53","savedPayload":{"position":{"x":12901.690604548332,"y":20867.82875135473},"targetPosition":{"x":13266.901742622487,"y":20931.043919950596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA111","config":"{\n \"codeName\": \"ema111\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema111","id":"f0dd0fa6-ace3-44ea-a701-e36808f6e348","savedPayload":{"position":{"x":12896.6772407453,"y":20418.507003197457},"targetPosition":{"x":13049.821349701559,"y":20630.397732274287},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"461f6d65-e227-4362-b62c-16b7225014f6","savedPayload":{"position":{"x":13049.821349701559,"y":20630.397732274287},"targetPosition":{"x":13266.901742622487,"y":20931.043919950596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6a451383-677d-4da8-a15d-f746cda23991","savedPayload":{"position":{"x":13075.528816665115,"y":19983.368235454465},"targetPosition":{"x":13169.287529371497,"y":19390.524229636758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current \n\nvariable.ema11 = calculateEMA(11, candle.close, variable.previousEMA11)\nvariable.previousEMA11 = variable.ema11\n\nvariable.ema22 = calculateEMA(22, candle.close, variable.previousEMA22)\nvariable.previousEMA22 = variable.ema22\n\nvariable.ema33 = calculateEMA(33, candle.close, variable.previousEMA33)\nvariable.previousEMA33 = variable.ema33\n\nvariable.ema55 = calculateEMA(55, candle.close, variable.previousEMA55)\nvariable.previousEMA55 = variable.ema55\n\nvariable.ema111 = calculateEMA(111, candle.close, variable.previousEMA111)\nvariable.previousEMA111 = variable.ema111\n\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}","id":"38ceaace-d9e5-482a-a15b-c7bb06767056","savedPayload":{"position":{"x":12752.398183452411,"y":20091.132556276298},"targetPosition":{"x":12804.343210025194,"y":19897.595761668974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"db87f908-271b-44be-8756-706c3ff98c29","savedPayload":{"position":{"x":12804.343210025194,"y":19897.595761668974},"targetPosition":{"x":12855.84243523293,"y":19704.375169526204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.previousEMA11 = 0\nvariable.previousEMA22 = 0\nvariable.previousEMA33 = 0\nvariable.previousEMA55 = 0\nvariable.previousEMA111 = 0","id":"5c34d18a-ac4e-4af6-aa52-cb4c0f016e6d","savedPayload":{"position":{"x":12468.81684952253,"y":19808.334392652894},"targetPosition":{"x":12662.63742462644,"y":19756.1634662261},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f34dd488-d3ea-4bd0-b4f8-68ea81c4a635","savedPayload":{"position":{"x":12662.63742462644,"y":19756.1634662261},"targetPosition":{"x":12855.84243523293,"y":19704.375169526204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e02efb2a-bb39-4a12-89c8-37c254e9bf5f","savedPayload":{"position":{"x":12855.84243523293,"y":19704.375169526204},"targetPosition":{"x":13169.287529371497,"y":19390.524229636758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"21df4f44-96eb-453b-8652-4ce2dc03424c","savedPayload":{"position":{"x":13173.957920817675,"y":19419.375638561345},"targetPosition":{"x":13106.547681452128,"y":18993.5176709163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"EMA Base 11","id":"cef26be6-07a9-415a-8439-99d06b1e1cfb"}}},{"type":"Product Definition","name":"Base12 EMAs","config":"{\n \"codeName\": \"Base12-EMAs\",\n \"singularVariableName\": \"base12EMA\",\n \"pluralVariableName\": \"base12EMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"ea61dfed-8f93-4b4f-8575-61ca2547ea90","savedPayload":{"position":{"x":13341.672485251647,"y":19688.639229976852},"targetPosition":{"x":13043.650371138006,"y":19390.498481701397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"b251aca0-1996-4d13-99ed-6fb9796ec8d6","savedPayload":{"position":{"x":13109.328316675736,"y":19806.85722887644},"targetPosition":{"x":13043.650371138006,"y":19390.498481701397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"f1df9aec-05c4-40d0-a82c-d17a0e2f1596","savedPayload":{"position":{"x":13237.061805439107,"y":20448.85952094559},"targetPosition":{"x":13028.28338731744,"y":20606.789902959295},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2c0c9e78-796b-4845-8cbb-c153a6b7c791","savedPayload":{"position":{"x":13028.28338731744,"y":20606.789902959295},"targetPosition":{"x":12732.380170090726,"y":20831.544775571383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"355a63aa-8c8c-4eca-a246-272eb464d094","savedPayload":{"position":{"x":13354.049704535208,"y":20705.35168428882},"targetPosition":{"x":13096.669314600085,"y":20757.503942267147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"256d27f8-b34e-46ca-9b5f-531823534e11","savedPayload":{"position":{"x":13096.669314600085,"y":20757.503942267147},"targetPosition":{"x":12732.380170090726,"y":20831.544775571383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA12","config":"{\n \"codeName\": \"ema12\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema12","id":"121d3c83-9fb4-44a1-93ed-e9755dfcc59e","savedPayload":{"position":{"x":13347.723343913489,"y":20987.00231618583},"targetPosition":{"x":13093.205286209302,"y":20922.693181862156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b386dd09-a2a1-4669-a73b-6df619dee15d","savedPayload":{"position":{"x":13093.205286209302,"y":20922.693181862156},"targetPosition":{"x":12732.380170090726,"y":20831.544775571383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA24","config":"{\n \"codeName\": \"ema24\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema24","id":"e4418d5e-74e5-440c-bd58-f8f18245ba6d","savedPayload":{"position":{"x":13219.595606725108,"y":21238.549280495245},"targetPosition":{"x":13018.151619428188,"y":21070.259666324033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c23ef82a-9c9a-477f-8d48-14d93f06e3c6","savedPayload":{"position":{"x":13018.151619428188,"y":21070.259666324033},"targetPosition":{"x":12732.380170090726,"y":20831.544775571383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA36","config":"{\n \"codeName\": \"ema36\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema36","id":"21dc0fd4-01f5-428b-9a9e-45307981af50","savedPayload":{"position":{"x":12994.856959490857,"y":21409.465779518174},"targetPosition":{"x":12886.421898714556,"y":21170.646206602516},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e613c9c6-61da-4830-9289-8b400c3b41d7","savedPayload":{"position":{"x":12886.421898714556,"y":21170.646206602516},"targetPosition":{"x":12732.380170090726,"y":20831.544775571383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA48","config":"{\n \"codeName\": \"ema48\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema48","id":"6afd224b-ba9c-49eb-973f-e7e3d609e82e","savedPayload":{"position":{"x":12718.731670064835,"y":21466.28797214767},"targetPosition":{"x":12724.4011435187,"y":21203.605433962308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e49e8056-f659-4090-91e7-0e83b4a3654e","savedPayload":{"position":{"x":12724.4011435187,"y":21203.605433962308},"targetPosition":{"x":12732.380170090726,"y":20831.544775571383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA60","config":"{\n \"codeName\": \"ema60\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema60","id":"2db84126-00b9-4cde-bb35-66f9fcb8bfc6","savedPayload":{"position":{"x":12445.264555660344,"y":21397.319785363696},"targetPosition":{"x":12564.036018937511,"y":21163.441012507126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"77a0ccf0-aa97-4a11-b1db-bd74d33c28b7","savedPayload":{"position":{"x":12564.036018937511,"y":21163.441012507126},"targetPosition":{"x":12732.380170090726,"y":20831.544775571383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA120","config":"{\n \"codeName\": \"ema120\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema120","id":"e3f30f2b-23c8-4bac-b19e-69ae740a4773","savedPayload":{"position":{"x":12228.388154466456,"y":21217.536156801783},"targetPosition":{"x":12437.384656738463,"y":21057.496653999977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fca691ac-2651-4619-af01-48a0fafcfd75","savedPayload":{"position":{"x":12437.384656738463,"y":21057.496653999977},"targetPosition":{"x":12732.380170090726,"y":20831.544775571383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA240","config":"{\n \"codeName\": \"ema240\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema240","id":"99b8a3c3-7e86-40aa-ad44-82a0bdb1f208","savedPayload":{"position":{"x":12109.600866876453,"y":20952.559231286552},"targetPosition":{"x":12366.832742717002,"y":20898.72515971789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6f194951-d813-4418-be45-420680399c17","savedPayload":{"position":{"x":12366.832742717002,"y":20898.72515971789},"targetPosition":{"x":12732.380170090726,"y":20831.544775571383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA360","config":"{\n \"codeName\": \"ema360\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema360","id":"fd430a5b-2a43-40c5-ae9d-4c7f901b527d","savedPayload":{"position":{"x":12121.435320781095,"y":20678.10824422347},"targetPosition":{"x":12371.703182076313,"y":20743.331656379887},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d9b00ca8-b18b-43da-9f3d-889fe101120c","savedPayload":{"position":{"x":12371.703182076313,"y":20743.331656379887},"targetPosition":{"x":12732.380170090726,"y":20831.544775571383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA480","config":"{\n \"codeName\": \"ema480\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema480","id":"4601277a-9f86-41a4-81b1-21b3c13d1d34","savedPayload":{"position":{"x":12243.951994296416,"y":20428.049571550873},"targetPosition":{"x":12445.206784551401,"y":20596.3868873776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2eccd071-3101-47bb-a8e6-008703cf6848","savedPayload":{"position":{"x":12445.206784551401,"y":20596.3868873776},"targetPosition":{"x":12732.380170090726,"y":20831.544775571383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA600","config":"{\n \"codeName\": \"ema600\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema600","id":"5c687030-e498-4126-8ce9-0c99a427168e","savedPayload":{"position":{"x":12471.735662930701,"y":20254.382945464196},"targetPosition":{"x":12579.848959207686,"y":20493.316623985243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e715e341-88d4-477c-9d7f-b0bb85ee3022","savedPayload":{"position":{"x":12579.848959207686,"y":20493.316623985243},"targetPosition":{"x":12732.380170090726,"y":20831.544775571383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA1200","config":"{\n \"codeName\": \"ema1200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema1200","id":"7c39560e-7434-4f50-aa3d-b93e131ce066","savedPayload":{"position":{"x":12731.635665402673,"y":20196.39388573945},"targetPosition":{"x":12741.954738315797,"y":20460.723307647233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f1939b18-3af9-4376-b8ba-6f506b215f82","savedPayload":{"position":{"x":12741.954738315797,"y":20460.723307647233},"targetPosition":{"x":12732.380170090726,"y":20831.544775571383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"512144fe-195c-47ae-b5b7-8167ba61a4bb","savedPayload":{"position":{"x":12771.275268290507,"y":19925.289476327245},"targetPosition":{"x":13043.650371138006,"y":19390.498481701397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current \n\nvariable.ema12 = calculateEMA(12, candle.close, variable.previousEMA12)\nvariable.previousEMA12 = variable.ema12\n\nvariable.ema24 = calculateEMA(24, candle.close, variable.previousEMA24)\nvariable.previousEMA24 = variable.ema24\n\nvariable.ema36 = calculateEMA(36, candle.close, variable.previousEMA36)\nvariable.previousEMA36 = variable.ema36\n\nvariable.ema48 = calculateEMA(48, candle.close, variable.previousEMA48)\nvariable.previousEMA48 = variable.ema48\n\nvariable.ema60 = calculateEMA(60, candle.close, variable.previousEMA60)\nvariable.previousEMA60 = variable.ema60\n\nvariable.ema120 = calculateEMA(120, candle.close, variable.previousEMA120)\nvariable.previousEMA120 = variable.ema120\n\nvariable.ema240 = calculateEMA(240, candle.close, variable.previousEMA240)\nvariable.previousEMA240 = variable.ema240\n\nvariable.ema360 = calculateEMA(360, candle.close, variable.previousEMA360)\nvariable.previousEMA360 = variable.ema360\n\nvariable.ema480 = calculateEMA(480, candle.close, variable.previousEMA480)\nvariable.previousEMA480 = variable.ema480\n\nvariable.ema600 = calculateEMA(600, candle.close, variable.previousEMA600)\nvariable.previousEMA600 = variable.ema600\n\nvariable.ema1200 = calculateEMA(1200, candle.close, variable.previousEMA1200)\nvariable.previousEMA1200 = variable.ema1200\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}","id":"c3936de6-e8b4-4459-8c31-d97bea84cbfa","savedPayload":{"position":{"x":12430.262068555554,"y":19927.707566139274},"targetPosition":{"x":12539.35516754209,"y":19759.727855848647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c4c50d01-1dff-4700-853a-986821fd55c5","savedPayload":{"position":{"x":12539.35516754209,"y":19759.727855848647},"targetPosition":{"x":12648.52487294464,"y":19591.83851827035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.previousEMA12 = 0\nvariable.previousEMA24 = 0\nvariable.previousEMA36 = 0\nvariable.previousEMA48 = 0\nvariable.previousEMA60 = 0\nvariable.previousEMA120 = 0\nvariable.previousEMA240 = 0\nvariable.previousEMA360 = 0\nvariable.previousEMA480 = 0\nvariable.previousEMA600 = 0\nvariable.previousEMA1200 = 0\n","id":"c1639309-d20d-47cb-bb44-f6d45fd498a2","savedPayload":{"position":{"x":12248.427643701385,"y":19571.774860786907},"targetPosition":{"x":12448.54261236245,"y":19581.789261811846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6a845db8-4418-4417-80ac-11114304a476","savedPayload":{"position":{"x":12448.54261236245,"y":19581.789261811846},"targetPosition":{"x":12648.52487294464,"y":19591.83851827035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1f5b9ce3-8278-4359-a57c-2c9e275a64cc","savedPayload":{"position":{"x":12648.52487294464,"y":19591.83851827035},"targetPosition":{"x":13043.650371138006,"y":19390.498481701397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"43d6f23d-d206-47e9-95d4-6bef34377014","savedPayload":{"position":{"x":13039.21270913687,"y":19419.205022835686},"targetPosition":{"x":13106.547681452128,"y":18993.5176709163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition","name":"Base30 EMAs","config":"{\n \"codeName\": \"Base30-EMAs\",\n \"singularVariableName\": \"base30EMA\",\n \"pluralVariableName\": \"base30EMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"dea3491f-aae7-4419-a98f-108cf5d69b87","savedPayload":{"position":{"x":13110.399232335492,"y":19723.54070215168},"targetPosition":{"x":12919.025202542127,"y":19347.6551569106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"6624337b-4afd-44b8-a2ea-3f1779ddda7e","savedPayload":{"position":{"x":12853.112259836527,"y":19764.035038829283},"targetPosition":{"x":12919.025202542127,"y":19347.6551569106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"d3c4e9c3-9823-4809-997e-dc36dac93b22","savedPayload":{"position":{"x":12858.88962639918,"y":20385.140095724633},"targetPosition":{"x":12609.456745022066,"y":20462.462529890494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cdf3538e-a8e5-44e5-9263-e5ffe18e65c2","savedPayload":{"position":{"x":12609.456745022066,"y":20462.462529890494},"targetPosition":{"x":12254.118086400284,"y":20573.20784280615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"af0bf0dd-e517-4723-b0cc-832261c78c76","savedPayload":{"position":{"x":12877.195754102891,"y":20687.651859867852},"targetPosition":{"x":12619.936018460196,"y":20640.325829623285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"27b3ce25-c547-4003-9a1c-2214b22e4fd8","savedPayload":{"position":{"x":12619.936018460196,"y":20640.325829623285},"targetPosition":{"x":12254.118086400284,"y":20573.20784280615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA30","config":"{\n \"codeName\": \"ema30\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema30","id":"d49aaf82-1063-490d-bedb-3c63d639e097","savedPayload":{"position":{"x":12753.012489328126,"y":20964.38897050382},"targetPosition":{"x":12546.54422226249,"y":20802.46933036564},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c92e3720-fc04-45ff-99e7-95abc2ddabea","savedPayload":{"position":{"x":12546.54422226249,"y":20802.46933036564},"targetPosition":{"x":12254.118086400284,"y":20573.20784280615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA60","config":"{\n \"codeName\": \"ema60\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema60","id":"47f6b7dc-d0e0-4707-9e20-4113af4916ce","savedPayload":{"position":{"x":12514.234676171209,"y":21151.825842953822},"targetPosition":{"x":12406.553921753833,"y":20912.25924470139},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d489aab4-6b93-490a-95b0-5b586a80960a","savedPayload":{"position":{"x":12406.553921753833,"y":20912.25924470139},"targetPosition":{"x":12254.118086400284,"y":20573.20784280615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA90","config":"{\n \"codeName\": \"ema90\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema90","id":"d2ac9ce8-32ab-4802-ab41-b959112a696b","savedPayload":{"position":{"x":12215.932826278326,"y":21206.240599668927},"targetPosition":{"x":12231.692575464453,"y":20944.711711465163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7b763dc2-e990-44b7-b67f-93d27e5b7507","savedPayload":{"position":{"x":12231.692575464453,"y":20944.711711465163},"targetPosition":{"x":12254.118086400284,"y":20573.20784280615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA120","config":"{\n \"codeName\": \"ema120\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema120","id":"41283546-a88c-41a6-87a6-48f178b378f5","savedPayload":{"position":{"x":11926.242736022878,"y":21115.711087806376},"targetPosition":{"x":12061.658182779187,"y":20891.640989859017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"19b80a14-7510-4066-aa0a-43e8d92f8bec","savedPayload":{"position":{"x":12061.658182779187,"y":20891.640989859017},"targetPosition":{"x":12254.118086400284,"y":20573.20784280615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA150","config":"{\n \"codeName\": \"ema150\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema150","id":"d82aeb70-2857-4d97-8f42-6fa22acc3ec1","savedPayload":{"position":{"x":11711.923281068159,"y":20900.995429499544},"targetPosition":{"x":11935.916151208612,"y":20765.584559830506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2dcea6aa-8e40-44d9-b540-e831f54b0e19","savedPayload":{"position":{"x":11935.916151208612,"y":20765.584559830506},"targetPosition":{"x":12254.118086400284,"y":20573.20784280615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA300","config":"{\n \"codeName\": \"ema300\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema300","id":"3bfc5b00-3b36-4b7e-b549-4cac3826de4f","savedPayload":{"position":{"x":11620.57149391141,"y":20611.524368574937},"targetPosition":{"x":11883.654329441057,"y":20595.62355318675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7cc56b79-f74d-465e-8e4d-070be004c71b","savedPayload":{"position":{"x":11883.654329441057,"y":20595.62355318675},"targetPosition":{"x":12254.118086400284,"y":20573.20784280615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA600","config":"{\n \"codeName\": \"ema600\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema600","id":"22bc84a5-61f6-479e-a87d-b1aee1b8416d","savedPayload":{"position":{"x":11675.542849114523,"y":20313.243707218542},"targetPosition":{"x":11914.759437661252,"y":20420.69749649581},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0e28ed26-69c1-4a8e-b13f-cef5faf27fc8","savedPayload":{"position":{"x":11914.759437661252,"y":20420.69749649581},"targetPosition":{"x":12254.118086400284,"y":20573.20784280615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA900","config":"{\n \"codeName\": \"ema900\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema900","id":"bd0354df-70f8-44e7-b988-49c514433ee3","savedPayload":{"position":{"x":11863.00201108847,"y":20074.60721069833},"targetPosition":{"x":12024.510958294877,"y":20280.428540224188},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1dfbb7b7-1ddc-4079-a17d-abef03fcd978","savedPayload":{"position":{"x":12024.510958294877,"y":20280.428540224188},"targetPosition":{"x":12254.118086400284,"y":20573.20784280615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA1200","config":"{\n \"codeName\": \"ema1200\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema1200","id":"fed49d03-931b-45a8-ac59-60859500e8ea","savedPayload":{"position":{"x":12139.48686173964,"y":19949.853184144507},"targetPosition":{"x":12187.050504823046,"y":20207.841856597803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2854d03b-388d-42be-bd49-0b0ed1293a30","savedPayload":{"position":{"x":12187.050504823046,"y":20207.841856597803},"targetPosition":{"x":12254.118086400284,"y":20573.20784280615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA1500","config":"{\n \"codeName\": \"ema1500\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema1500","id":"1486d92f-10f4-4e34-b603-b0a18408713c","savedPayload":{"position":{"x":12438.143318205553,"y":19966.00151154543},"targetPosition":{"x":12364.753673750538,"y":20218.647865363648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9936d329-ffe9-4c8a-929c-b6f4a3a38954","savedPayload":{"position":{"x":12364.753673750538,"y":20218.647865363648},"targetPosition":{"x":12254.118086400284,"y":20573.20784280615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3dda31b0-7d30-43c2-9b91-74c25cffed38","savedPayload":{"position":{"x":12494.83304695229,"y":19772.15452818291},"targetPosition":{"x":12919.025202542127,"y":19347.6551569106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nvariable.ema30 = calculateEMA(30, candle.close, variable.previousEMA30)\nvariable.previousEMA30 = variable.ema30\n\nvariable.ema60 = calculateEMA(60, candle.close, variable.previousEMA60)\nvariable.previousEMA60 = variable.ema60\n\nvariable.ema90 = calculateEMA(90, candle.close, variable.previousEMA90)\nvariable.previousEMA90 = variable.ema90\n\nvariable.ema120 = calculateEMA(120, candle.close, variable.previousEMA120)\nvariable.previousEMA120 = variable.ema120\n\nvariable.ema150 = calculateEMA(150, candle.close, variable.previousEMA150)\nvariable.previousEMA150 = variable.ema150\n\nvariable.ema300 = calculateEMA(300, candle.close, variable.previousEMA300)\nvariable.previousEMA300 = variable.ema300\n\nvariable.ema600 = calculateEMA(600, candle.close, variable.previousEMA600)\nvariable.previousEMA600 = variable.ema600\n\nvariable.ema900 = calculateEMA(900, candle.close, variable.previousEMA900)\nvariable.previousEMA900 = variable.ema900\n\nvariable.ema1200 = calculateEMA(1200, candle.close, variable.previousEMA1200)\nvariable.previousEMA1200 = variable.ema1200\n\nvariable.ema1500 = calculateEMA(1500, candle.close, variable.previousEMA1500)\nvariable.previousEMA1500 = variable.ema1500\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}","id":"df900089-7554-4b01-88d1-801706c194a5","savedPayload":{"position":{"x":12169.759795908278,"y":19669.258598254088},"targetPosition":{"x":12325.417841498778,"y":19543.26241672143},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ff38e18a-c36c-4c4a-8d5b-b7230451c098","savedPayload":{"position":{"x":12325.417841498778,"y":19543.26241672143},"targetPosition":{"x":12481.206551514848,"y":19417.050128138868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.previousEMA30 = 0\nvariable.previousEMA60 = 0\nvariable.previousEMA90 = 0\nvariable.previousEMA120 = 0\nvariable.previousEMA150 = 0\nvariable.previousEMA300 = 0\nvariable.previousEMA600 = 0\nvariable.previousEMA900 = 0\nvariable.previousEMA1200 = 0\nvariable.previousEMA1500 = 0\n","id":"14cfa602-002c-439e-b658-24cc8d2d1c14","savedPayload":{"position":{"x":12120.487455787414,"y":19296.379750681168},"targetPosition":{"x":12312.125986530373,"y":19367.622390804372},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2489fa2c-03cb-4007-b426-88158b8ab442","savedPayload":{"position":{"x":12312.125986530373,"y":19367.622390804372},"targetPosition":{"x":12481.206551514848,"y":19417.050128138868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ff57a6a1-1133-4cce-abab-d958d5936360","savedPayload":{"position":{"x":12481.206551514848,"y":19417.050128138868},"targetPosition":{"x":12919.025202542127,"y":19347.6551569106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4394346c-7c25-478f-9be7-04f071dc673c","savedPayload":{"position":{"x":12910.93583766776,"y":19377.310265074007},"targetPosition":{"x":13106.547681452128,"y":18993.5176709163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"274a20f7-97c3-452d-9ef7-aa35f482f5e3","savedPayload":{"position":{"x":13153.787003308258,"y":19040.383852418185},"targetPosition":{"x":12824.153406676238,"y":18710.73255185816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Indicator Bot","name":"MACD","config":"{\n\"codeName\": \"MACD\",\n\"repo\": \"MACD-Indicator-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Produces the MACD indicator.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market MACD 122609","id":"b1bf9ad6-e21f-43a9-b7a5-7d5dd0485b2e","savedPayload":{"position":{"x":13508.805779951199,"y":18860.720910705117},"targetPosition":{"x":13506.727109011174,"y":19062.231882055763},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"01d43ed0-2a80-4eca-bee6-db2fe40470fc"}}},{"type":"Output Dataset","name":"Multi-Period-Market MACD 031016","id":"a8aa057b-aa19-45cb-bca0-7c3b57a350f7","savedPayload":{"position":{"x":13629.307938632588,"y":18901.229457776975},"targetPosition":{"x":13506.727109011174,"y":19062.231882055763},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"19b1d791-d2ea-4f25-a6e1-fe0a64450745"}}},{"type":"Output Dataset","name":"Multi-Period-Market MACD 081709","id":"150637f5-1917-439e-916f-71e86edccd49","savedPayload":{"position":{"x":13700.648166794588,"y":19001.954624804377},"targetPosition":{"x":13506.727109011174,"y":19062.231882055763},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"c390cbd3-0ba0-4507-8614-42c88f4ce7e6"}}},{"type":"Output Dataset","name":"Multi-Period-Market MACD 245209","id":"6854acc9-b22d-46e6-8967-e3843ca6db76","savedPayload":{"position":{"x":13676.179373838124,"y":19137.42572290051},"targetPosition":{"x":13506.727109011174,"y":19062.231882055763},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"89254c6c-9be2-4037-b063-467edc660d10"}}}],"outputDatasetFolders":[],"id":"af39ab1b-b1c0-4869-9093-47ad8ff63494","savedPayload":{"position":{"x":13506.727109011174,"y":19062.231882055763},"targetPosition":{"x":13183.860429136093,"y":19283.74139951685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"MACD Multi-Period-Market","config":"{\"mainUtility\": \"Self Reference\"}","id":"7e17f51a-deed-4976-a53b-d34c2e45f92f","savedPayload":{"position":{"x":13802.439636400804,"y":19100.0142171896},"targetPosition":{"x":13648.60796542571,"y":19254.71145649831},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"101cc7d6-d35b-4907-b530-f28d5e02ff0a"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","config":"{\"mainUtility\": \"Market Ending Point\"}","id":"473dbe5e-6332-4005-8457-c77c3f5c65d0","savedPayload":{"position":{"x":13850.147044964318,"y":19239.840733934132},"targetPosition":{"x":13648.60796542571,"y":19254.71145649831},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"fa10270c-f94c-479d-9094-f974018e2029","savedPayload":{"position":{"x":13801.812711565946,"y":19385.616976782283},"targetPosition":{"x":13648.60796542571,"y":19254.71145649831},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"dataMineDataDependencies":[],"id":"7a34fbb2-19de-4b82-88f2-c016f6959f74","savedPayload":{"position":{"x":13648.60796542571,"y":19254.71145649831},"targetPosition":{"x":13183.860429136093,"y":19283.74139951685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"101cc7d6-d35b-4907-b530-f28d5e02ff0a","savedPayload":{"position":{"x":13569.487850815993,"y":19470.36022050578},"targetPosition":{"x":13183.860429136093,"y":19283.74139951685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"1bc17bd6-0c20-4dfe-87dd-68db36113733","savedPayload":{"position":{"x":13426.055016982127,"y":19638.938100067564},"targetPosition":{"x":13183.860429136093,"y":19283.74139951685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f2eca95a-37ae-448b-8ff9-c6dc4b133245","savedPayload":{"position":{"x":13216.696023916918,"y":19711.98877364456},"targetPosition":{"x":13183.860429136093,"y":19283.74139951685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"44019efe-950a-4eec-a546-cd2ee26818b9","savedPayload":{"position":{"x":13196.907372784139,"y":19289.208436592577},"targetPosition":{"x":12823.965784495549,"y":19110.505878450538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Produces the MACD indicator.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily MACD 122609","id":"c79ae046-983f-4acf-9c73-ab7e5d24fd85","savedPayload":{"position":{"x":13549.268702732636,"y":19184.334810055218},"targetPosition":{"x":13460.601210974186,"y":19364.527878265482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"dd5d3067-ff7b-4353-ba4f-c030bd3da796"}}},{"type":"Output Dataset","name":"Multi-Period-Daily MACD 081709","id":"daa8862c-2eda-4846-97d5-8684673baf3f","savedPayload":{"position":{"x":13641.8688690355,"y":19272.359859475935},"targetPosition":{"x":13460.601210974186,"y":19364.527878265482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"29e18539-f188-4d29-9531-25cd3ee8f282"}}},{"type":"Output Dataset","name":"Multi-Period-Daily MACD 245209","id":"59cb9a88-ccd4-4306-8822-bf9d0e526c02","savedPayload":{"position":{"x":13659.723175424122,"y":19379.010234897025},"targetPosition":{"x":13460.601210974186,"y":19364.527878265482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"8a9dde13-e4b8-40f3-80bc-ea51050b2f08"}}},{"type":"Output Dataset","name":"Multi-Period-Daily MACD 031016","id":"b09b8313-baaf-45f4-a0fb-b33614d58699","savedPayload":{"position":{"x":13573.394657761217,"y":19508.27549057181},"targetPosition":{"x":13460.601210974186,"y":19364.527878265482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"ec2611a6-699b-45a5-beec-679dd4b7734a"}}}],"outputDatasetFolders":[],"id":"a95e4b61-4e49-4b99-bfb8-8bb917afe8df","savedPayload":{"position":{"x":13460.601210974186,"y":19364.527878265482},"targetPosition":{"x":13073.1043447539,"y":19423.65528978744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"MACD Multi-Period-Daily","config":"{\"mainUtility\": \"Self Reference\"}","id":"e02fb6a2-c775-46de-bce6-a40f7d40cd5c","savedPayload":{"position":{"x":13705.144361738387,"y":19494.956783472426},"targetPosition":{"x":13505.101048300787,"y":19597.542023638765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a9d544cb-9643-4f7e-9220-d3ec7397bcdf"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","config":"{\"mainUtility\": \"Market Ending Point\"}","id":"650627ec-3cab-4024-a17d-a43174f869e9","savedPayload":{"position":{"x":13711.182416816095,"y":19616.99361500149},"targetPosition":{"x":13505.101048300787,"y":19597.542023638765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\"mainUtility\": \"Market Starting Point\"}","id":"62a1b4d7-e2fd-44bf-9e37-3108a7b5b956","savedPayload":{"position":{"x":13663.432952129488,"y":19732.625472066487},"targetPosition":{"x":13505.101048300787,"y":19597.542023638765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"38aa26d5-f3b2-43e6-8533-cd51d7128221","savedPayload":{"position":{"x":13548.4473064246,"y":19797.759748255947},"targetPosition":{"x":13505.101048300787,"y":19597.542023638765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"dataMineDataDependencies":[],"id":"e8291604-ea73-4217-b00c-51f65bdec1d6","savedPayload":{"position":{"x":13505.101048300787,"y":19597.542023638765},"targetPosition":{"x":13073.1043447539,"y":19423.65528978744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"a9d544cb-9643-4f7e-9220-d3ec7397bcdf","savedPayload":{"position":{"x":13339.410857598774,"y":19759.13162496537},"targetPosition":{"x":13073.1043447539,"y":19423.65528978744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"35b430c4-60bd-41ff-8a3a-7907146b0238","savedPayload":{"position":{"x":13136.07331888974,"y":19847.923804134552},"targetPosition":{"x":13073.1043447539,"y":19423.65528978744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"c6191bb8-66bf-4d67-9d1b-9364e7e6e84e","savedPayload":{"position":{"x":12916.054800407006,"y":19822.438477647105},"targetPosition":{"x":13073.1043447539,"y":19423.65528978744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8e5db945-8507-4489-9288-21cfa1e9301c","savedPayload":{"position":{"x":13081.16464754457,"y":19434.092017119117},"targetPosition":{"x":12823.965784495549,"y":19110.505878450538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"MACD 122609","config":"{\n \"codeName\": \"MACD-122609\",\n \"singularVariableName\": \"macd122609\",\n \"pluralVariableName\": \"macd122609s\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"01d43ed0-2a80-4eca-bee6-db2fe40470fc","savedPayload":{"position":{"x":13175.45541860896,"y":19614.024829919763},"targetPosition":{"x":12911.478560496982,"y":19500.1645183867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"dd5d3067-ff7b-4353-ba4f-c030bd3da796","savedPayload":{"position":{"x":13058.860300296958,"y":19748.21409146986},"targetPosition":{"x":12911.478560496982,"y":19500.1645183867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"c30a9207-3220-4aa4-b96e-64a82200e356","savedPayload":{"position":{"x":13373.754591781571,"y":20967.56602619811},"targetPosition":{"x":13152.887978684243,"y":21151.44119207834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"16c55335-8817-4121-a068-1c2d184fd814","savedPayload":{"position":{"x":13152.887978684243,"y":21151.44119207834},"targetPosition":{"x":12891.41866099047,"y":21369.551232197922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"0f82ce78-91ac-4b61-b514-bb1a67c2ef0e","savedPayload":{"position":{"x":13517.347384846982,"y":21425.9238864361},"targetPosition":{"x":13230.08448484813,"y":21400.0535769181},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dedc2ef0-61e4-45bd-921d-187c9a6f3ae1","savedPayload":{"position":{"x":13230.08448484813,"y":21400.0535769181},"targetPosition":{"x":12891.41866099047,"y":21369.551232197922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Line","config":"{\n \"codeName\": \"line\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.line","id":"42754005-58a0-4a8b-b839-938d11aeb0ab","savedPayload":{"position":{"x":13293.630512578167,"y":21851.549199961224},"targetPosition":{"x":13109.424237483776,"y":21630.812069271688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5fe10f78-a397-4fb1-bfeb-a506d44d60ef","savedPayload":{"position":{"x":13109.424237483776,"y":21630.812069271688},"targetPosition":{"x":12891.41866099047,"y":21369.551232197922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Signal","config":"{\n \"codeName\": \"signal\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.signal","id":"588045df-e0fb-4c07-adf3-1acd832088af","savedPayload":{"position":{"x":12835.431044629642,"y":21995.11659004121},"targetPosition":{"x":12861.126945206184,"y":21707.87663876537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2926733e-3962-4e7b-a492-7fcb437f536e","savedPayload":{"position":{"x":12861.126945206184,"y":21707.87663876537},"targetPosition":{"x":12891.41866099047,"y":21369.551232197922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA12","config":"{\n \"codeName\": \"ema12\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema12","id":"d9f6340c-15cd-499b-ba74-007b4c569b22","savedPayload":{"position":{"x":12405.745358992279,"y":21775.204928884617},"targetPosition":{"x":12626.641888970697,"y":21590.715748798997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"29fb3e14-c1fd-4fa6-af1a-62b1c61ff1fc","savedPayload":{"position":{"x":12626.641888970697,"y":21590.715748798997},"targetPosition":{"x":12891.41866099047,"y":21369.551232197922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA26","config":"{\n \"codeName\": \"ema26\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema26","id":"748ed791-c88b-4776-b2cb-742758821641","savedPayload":{"position":{"x":12266.012295751398,"y":21313.932509827748},"targetPosition":{"x":12552.731300768524,"y":21339.40645604549},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d1b7a8ce-c89b-4e0f-ac04-0f45d575524d","savedPayload":{"position":{"x":12552.731300768524,"y":21339.40645604549},"targetPosition":{"x":12891.41866099047,"y":21369.551232197922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Histogram","config":"{\n \"codeName\": \"histogram\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.histogram","id":"9652e52e-55c0-47ee-a90c-a1a700f6b989","savedPayload":{"position":{"x":12488.412106686223,"y":20887.87725372453},"targetPosition":{"x":12673.398246693707,"y":21108.5903033724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6157c979-57a2-473c-b19f-f79bb2f12c09","savedPayload":{"position":{"x":12673.398246693707,"y":21108.5903033724},"targetPosition":{"x":12891.41866099047,"y":21369.551232197922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7985ad16-8c8a-460f-9445-711df5e062a7","savedPayload":{"position":{"x":12858.000747746364,"y":20098.080581532173},"targetPosition":{"x":12911.478560496982,"y":19500.1645183867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\n/* EMA12 and EMA26 Calculation */\n\nlet candle = record.current\n\nvariable.ema12 = calculateEMA(12, candle.close, variable.previousEMA12)\nvariable.previousEMA12 = variable.ema12\n\nvariable.ema26 = calculateEMA(26, candle.close, variable.previousEMA26)\nvariable.previousEMA26 = variable.ema26\n\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}\n\n\n/* MACD Line Calculation */\n\nmacdLine = variable.ema12 - variable.ema26\n\nvariable.line = macdLine.toFixed(2)\n\n/* Signal Line Calculation (EMA9 of MACD Line) */\n\nmacdSignal = calculateSignalEMA(9, variable.line, variable.previousSignal)\nvariable.signal = macdSignal.toFixed(2)\nvariable.previousSignal = variable.signal \n \nfunction calculateSignalEMA(periods, currentSignal, previousEMA) {\n let k = 2 / (periods + 1)\n return currentSignal * k + variable.previousSignal * (1-k)\n}\n\n/* Histogram Calculation */\n\nhistogram = variable.line - variable.signal\nvariable.histogram = histogram.toFixed(2)","id":"e1e871f6-1e87-423f-8214-ece80c4295eb","savedPayload":{"position":{"x":12542.490085775393,"y":20227.082779070697},"targetPosition":{"x":12581.030279992388,"y":20030.96870518072},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c3390f8c-4865-42b1-aa00-eaa49d293121","savedPayload":{"position":{"x":12581.030279992388,"y":20030.96870518072},"targetPosition":{"x":12619.852555436097,"y":19834.14991545957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\n/* SMA Calculation */\n\n/* \nAlthough we don't really need to set an array to access a number of candles,\nwe will do so in order to reuse the code built for the SMA indicator, and also\nso that the same code may be used for other MACD products that may require\naccessing more candles than are available in the span of two days.\n*/\n\nvariable.last100 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")\n\n/* EMA Calculation */\n\nvariable.previousEMA12 = 0\nvariable.previousEMA26 = 0\n\n/* MACD Line calculation */\n\nvariable.previousSignal = 0","id":"a9600d4d-ddc7-4639-a8bd-d5f6840a1f04","savedPayload":{"position":{"x":12240.917205726264,"y":19963.863151118723},"targetPosition":{"x":12430.125434628255,"y":19899.393246443182},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f8ff5320-c74f-4f6e-8b15-f7284242f24e","savedPayload":{"position":{"x":12430.125434628255,"y":19899.393246443182},"targetPosition":{"x":12619.852555436097,"y":19834.14991545957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c69aae16-d38f-4d9a-8174-4e664a22e579","savedPayload":{"position":{"x":12619.852555436097,"y":19834.14991545957},"targetPosition":{"x":12911.478560496982,"y":19500.1645183867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119","savedPayload":{"position":{"x":12919.01360537118,"y":19530.755093418556},"targetPosition":{"x":12823.965784495549,"y":19110.505878450538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"MACD 122609","id":"fb08cb11-7983-4106-8b03-edf70baad4a0"}}},{"type":"Product Definition","name":"MACD 031016","config":"{\n \"codeName\": \"MACD-031016\",\n \"singularVariableName\": \"macd031016\",\n \"pluralVariableName\": \"macd031016s\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Sparta/MACD/Output/MACD-031016/Multi-Period-Market/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"19b1d791-d2ea-4f25-a6e1-fe0a64450745","savedPayload":{"position":{"x":12924.201519047647,"y":19715.88879002571},"targetPosition":{"x":12734.977851446276,"y":19499.37720308457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Sparta/MACD/Output/MACD-031016/Multi-Period-Daily/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Sparta/MACD/Output/MACD-031016/Multi-Period-Daily\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"ec2611a6-699b-45a5-beec-679dd4b7734a","savedPayload":{"position":{"x":12760.829423792844,"y":19786.368014300122},"targetPosition":{"x":12734.977851446276,"y":19499.37720308457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"7e2e4448-6bc6-4c1c-9a7f-54185fea3831","savedPayload":{"position":{"x":12720.650237704247,"y":19950.348706264496},"targetPosition":{"x":12575.018402927717,"y":19969.700944799566},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"399e67a5-1b3c-4f13-b1a8-c8333b013471","savedPayload":{"position":{"x":12575.018402927717,"y":19969.700944799566},"targetPosition":{"x":12427.630438990847,"y":20014.2602887777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"0e12c2f0-25f8-48c6-9920-4291c0154f92","savedPayload":{"position":{"x":12694.748620669207,"y":20172.664030032094},"targetPosition":{"x":12565.043769886146,"y":20094.590457484323},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1588b3ba-04e6-498f-baeb-857c55bf0c2f","savedPayload":{"position":{"x":12565.043769886146,"y":20094.590457484323},"targetPosition":{"x":12427.630438990847,"y":20014.2602887777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Line","config":"{\n \"codeName\": \"line\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.line","id":"5d5b5bb6-fcd8-4834-9da9-858c8fc756d6","savedPayload":{"position":{"x":12503.372933323628,"y":20317.007976468798},"targetPosition":{"x":12466.638182094124,"y":20169.882206269493},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a1c75f48-5568-46da-a828-6d26a69b5021","savedPayload":{"position":{"x":12466.638182094124,"y":20169.882206269493},"targetPosition":{"x":12427.630438990847,"y":20014.2602887777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Signal","config":"{\n \"codeName\": \"signal\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.signal","id":"a42bb9fd-fb33-4c25-b3d3-7ce7c8839e08","savedPayload":{"position":{"x":12267.189008709309,"y":20282.127821361773},"targetPosition":{"x":12344.827207356948,"y":20151.865527734935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7d0b5eee-4b62-4e35-a421-e3825b0cdb2c","savedPayload":{"position":{"x":12344.827207356948,"y":20151.865527734935},"targetPosition":{"x":12427.630438990847,"y":20014.2602887777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA3","config":"{\n \"codeName\": \"ema3\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema3","id":"c725639d-6fa1-480f-b962-90be561f8464","savedPayload":{"position":{"x":12125.158968505919,"y":20090.656607221772},"targetPosition":{"x":12271.904935798757,"y":20053.124346991335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4406003b-bf04-4d4e-b9e5-fb444be155ee","savedPayload":{"position":{"x":12271.904935798757,"y":20053.124346991335},"targetPosition":{"x":12427.630438990847,"y":20014.2602887777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA10","config":"{\n \"codeName\": \"ema10\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema10","id":"fbfc968a-1b7e-48f6-935b-b40fe63bdc85","savedPayload":{"position":{"x":12169.209892029332,"y":19860.32277789225},"targetPosition":{"x":12290.356327640764,"y":19932.147469485095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d5cc4f53-cc80-457a-842f-a2259450f02f","savedPayload":{"position":{"x":12290.356327640764,"y":19932.147469485095},"targetPosition":{"x":12427.630438990847,"y":20014.2602887777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Histogram","config":"{\n \"codeName\": \"histogram\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.histogram","id":"9724655b-b624-425d-b21c-87c69ede1d0a","savedPayload":{"position":{"x":12355.827098261881,"y":19752.68324187417},"targetPosition":{"x":12401.386230057255,"y":19861.92286911359},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d0f070bb-08a6-4c05-8e49-49f7b6a3aa15","savedPayload":{"position":{"x":12401.386230057255,"y":19861.92286911359},"targetPosition":{"x":12427.630438990847,"y":20014.2602887777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b5df9321-87e6-4c0b-892b-0af0e9b47d8d","savedPayload":{"position":{"x":12427.630438990847,"y":20014.2602887777},"targetPosition":{"x":12734.977851446276,"y":19499.37720308457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\n/* EMA3 and EMA10 Calculation */\n\nlet candle = record.current\n\nvariable.ema3 = calculateEMA(3, candle.close, variable.previousEMA3)\nvariable.previousEMA3 = variable.ema3\n\nvariable.ema10 = calculateEMA(10, candle.close, variable.previousEMA10)\nvariable.previousEMA10 = variable.ema10\n\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}\n\n/* MACD Line Calculation */\n\nmacdLine = variable.ema3 - variable.ema10\n\nvariable.line = macdLine.toFixed(2)\n\n/* Signal Line Calculation (EMA16 of MACD Line) */\n\nmacdSignal = calculateSignalEMA(16, variable.line, variable.previousSignal)\nvariable.signal = macdSignal.toFixed(2)\nvariable.previousSignal = variable.signal \n \nfunction calculateSignalEMA(periods, currentSignal, previousEMA) {\n let k = 2 / (periods + 1)\n return currentSignal * k + variable.previousSignal * (1-k)\n}\n\n/* Histogram Calculation */\n\nhistogram = variable.line - variable.signal\nvariable.histogram = histogram.toFixed(2)","id":"6e3e0c8a-7600-4cf4-aa00-a29c8e94b42a","savedPayload":{"position":{"x":12066.606091836344,"y":19938.272706134132},"targetPosition":{"x":12207.610088540376,"y":19763.298349202436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ba2052e5-b0b2-4cae-b4a8-3212eb5cbe62","savedPayload":{"position":{"x":12207.610088540376,"y":19763.298349202436},"targetPosition":{"x":12312.046730802902,"y":19633.733684018604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\n/* SMA Calculation */\n\n/* \nAlthough we don't really need to set an array to access a number of candles,\nwe will do so in order to reuse the code built for the SMA indicator, and also\nso that the same code may be used for other MACD products that may require\naccessing more candles than are available in the span of two days.\n*/\n\nvariable.last100 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")\n\n/* EMA Calculation */\n\nvariable.previousEMA3 = 0\nvariable.previousEMA10 = 0\n\n/* MACD Line calculation */\n\nvariable.previousSignal = 0","id":"e009ff8c-ac89-4cff-b3c4-27777ff2173c","savedPayload":{"position":{"x":11914.077330967848,"y":19585.40171927106},"targetPosition":{"x":12113.227831390801,"y":19609.86112835811},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fba3e3c4-5cf5-4925-9e02-36981e662f0d","savedPayload":{"position":{"x":12113.227831390801,"y":19609.86112835811},"targetPosition":{"x":12312.046730802902,"y":19633.733684018604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6659182a-7112-4c25-8fac-69f8745f9d2f","savedPayload":{"position":{"x":12312.046730802902,"y":19633.733684018604},"targetPosition":{"x":12734.977851446276,"y":19499.37720308457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a","savedPayload":{"position":{"x":12727.940323667437,"y":19530.779143372885},"targetPosition":{"x":12823.965784495549,"y":19110.505878450538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"MACD 031016","id":"03816d0f-361f-4c6c-8f85-0bf2dfff1c21"}}},{"type":"Product Definition","name":"MACD 081709","config":"{\n \"codeName\": \"MACD-081709\",\n \"singularVariableName\": \"macd081709\",\n \"pluralVariableName\": \"macd081709s\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Sparta/MACD/Output/MACD-081709/Multi-Period-Market/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"c390cbd3-0ba0-4507-8614-42c88f4ce7e6","savedPayload":{"position":{"x":12650.998643504317,"y":19700.546617582622},"targetPosition":{"x":12574.694360890162,"y":19422.494905775293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Sparta/MACD/Output/MACD-081709/Multi-Period-Daily/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Sparta/MACD/Output/MACD-081709/Multi-Period-Daily\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"29e18539-f188-4d29-9531-25cd3ee8f282","savedPayload":{"position":{"x":12473.126086480112,"y":19692.288853864953},"targetPosition":{"x":12574.694360890162,"y":19422.494905775293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"94ec28d4-c1bc-4c6d-8887-75877f9a2343","savedPayload":{"position":{"x":12042.255325966433,"y":20843.846498306877},"targetPosition":{"x":11760.34622062418,"y":20785.745075649575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5135ffe3-47fa-4642-8c46-0994438d7e7a","savedPayload":{"position":{"x":11760.34622062418,"y":20785.745075649575},"targetPosition":{"x":11387.704796456675,"y":20709.378755145262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"d3388f28-900d-452f-b83c-936c50b4344e","savedPayload":{"position":{"x":11755.245102496641,"y":21267.079058743413},"targetPosition":{"x":11597.029127434324,"y":21026.95154977728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8056d769-ea76-4ec0-88ff-952921e48d2c","savedPayload":{"position":{"x":11597.029127434324,"y":21026.95154977728},"targetPosition":{"x":11387.704796456675,"y":20709.378755145262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Line","config":"{\n \"codeName\": \"line\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.line","id":"3864df8c-ee73-4f0e-be03-718954a4dbfc","savedPayload":{"position":{"x":11253.776798815155,"y":21363.84238170059},"targetPosition":{"x":11311.554315066829,"y":21081.392051175742},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a69347ff-6f46-464a-834a-4d441b8ff291","savedPayload":{"position":{"x":11311.554315066829,"y":21081.392051175742},"targetPosition":{"x":11387.704796456675,"y":20709.378755145262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Signal","config":"{\n \"codeName\": \"signal\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.signal","id":"9db26074-5aaf-4f3e-83aa-bb1064981c64","savedPayload":{"position":{"x":10830.519750572357,"y":21077.078720928843},"targetPosition":{"x":11070.649751710023,"y":20918.629773864297},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cf022fb7-6c7e-432d-ae6a-fe0f4ed28116","savedPayload":{"position":{"x":11070.649751710023,"y":20918.629773864297},"targetPosition":{"x":11387.704796456675,"y":20709.378755145262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA8","config":"{\n \"codeName\": \"ema8\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema8","id":"93f62cc4-1f47-4b75-8a7c-c8dbd75b0c9f","savedPayload":{"position":{"x":10733.424845006737,"y":20575.944203448744},"targetPosition":{"x":11015.63819093433,"y":20633.472335904768},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"80e1f38f-36c5-440e-a12b-f9154efede9f","savedPayload":{"position":{"x":11015.63819093433,"y":20633.472335904768},"targetPosition":{"x":11387.704796456675,"y":20709.378755145262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA17","config":"{\n \"codeName\": \"ema17\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema17","id":"73b43260-1688-460b-862c-b8fb7406cc10","savedPayload":{"position":{"x":11019.291419700568,"y":20152.140174097585},"targetPosition":{"x":11178.153696930078,"y":20392.38778742557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a2552af4-df0a-4fcf-85ae-1e35dbcb2608","savedPayload":{"position":{"x":11178.153696930078,"y":20392.38778742557},"targetPosition":{"x":11387.704796456675,"y":20709.378755145262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Histogram","config":"{\n \"codeName\": \"histogram\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.histogram","id":"94cb6751-f4a9-4bad-a8a9-d53d3375a77c","savedPayload":{"position":{"x":11520.518592870494,"y":20054.906642723625},"targetPosition":{"x":11463.63654076238,"y":20336.60940549324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"52e3a47c-f282-4edc-83cb-8bce988e054b","savedPayload":{"position":{"x":11463.63654076238,"y":20336.60940549324},"targetPosition":{"x":11387.704796456675,"y":20709.378755145262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f5a29a3d-06eb-4298-80d0-3d6e22957829","savedPayload":{"position":{"x":12073.939852114805,"y":19753.135007056},"targetPosition":{"x":12574.694360890162,"y":19422.494905775293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\n/* EMA8 and EMA26 Calculation */\n\nlet candle = record.current\n\nvariable.ema8 = calculateEMA(8, candle.close, variable.previousEMA8)\nvariable.previousEMA8 = variable.ema8\n\nvariable.ema17 = calculateEMA(17, candle.close, variable.previousEMA17)\nvariable.previousEMA17 = variable.ema17\n\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}\n\n/* MACD Line Calculation */\n\nmacdLine = variable.ema8 - variable.ema17\n\nvariable.line = macdLine.toFixed(2)\n\n/* Signal Line Calculation (EMA9 of MACD Line) */\n\nmacdSignal = calculateSignalEMA(9, variable.line, variable.previousSignal)\nvariable.signal = macdSignal.toFixed(2)\nvariable.previousSignal = variable.signal \n \nfunction calculateSignalEMA(periods, currentSignal, previousEMA) {\n let k = 2 / (periods + 1)\n return currentSignal * k + variable.previousSignal * (1-k)\n}\n\n/* Histogram Calculation */\n\nhistogram = variable.line - variable.signal\nvariable.histogram = histogram.toFixed(2)","id":"0290fa4a-851b-4e21-b35e-61e106fc8f81","savedPayload":{"position":{"x":11777.091809024987,"y":19587.477888463287},"targetPosition":{"x":11953.661266167572,"y":19495.16659670009},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2a30807-83b5-4c99-8f27-55783b4487ce","savedPayload":{"position":{"x":11953.661266167572,"y":19495.16659670009},"targetPosition":{"x":12131.691024592214,"y":19403.05951271726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\n/* SMA Calculation */\n\n/* \nAlthough we don't really need to set an array to access a number of candles,\nwe will do so in order to reuse the code built for the SMA indicator, and also\nso that the same code may be used for other MACD products that may require\naccessing more candles than are available in the span of two days.\n*/\n\nvariable.last100 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")\n\n/* EMA Calculation */\n\nvariable.previousEMA8 = 0\nvariable.previousEMA17 = 0\n\n/* MACD Line calculation */\n\nvariable.previousSignal = 0","id":"b8dca759-eb3d-4b8b-8a20-99679727f272","savedPayload":{"position":{"x":11458.229420458807,"y":18972.91659047591},"targetPosition":{"x":11794.053955658988,"y":19187.89393259227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a16923a7-9b13-4526-818d-9278fdc509a0","savedPayload":{"position":{"x":11794.053955658988,"y":19187.89393259227},"targetPosition":{"x":12131.691024592214,"y":19403.05951271726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8136f190-cf6a-4ca3-8620-7153ad82a295","savedPayload":{"position":{"x":12131.691024592214,"y":19403.05951271726},"targetPosition":{"x":12574.694360890162,"y":19422.494905775293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750","savedPayload":{"position":{"x":12555.207822936552,"y":19447.51668582789},"targetPosition":{"x":12823.965784495549,"y":19110.505878450538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"MACD 081709","id":"43695164-d8aa-40d8-bbf4-ee8cbbdec3f0"}}},{"type":"Product Definition","name":"MACD 245209","config":"{\n \"codeName\": \"MACD-245209\",\n \"singularVariableName\": \"macd245209\",\n \"pluralVariableName\": \"macd245209s\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Sparta/MACD/Output/MACD-245209/Multi-Period-Market/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"89254c6c-9be2-4037-b063-467edc660d10","savedPayload":{"position":{"x":12413.61960743799,"y":19566.742138022546},"targetPosition":{"x":12464.35611516412,"y":19283.40894421901},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Sparta/MACD/Output/MACD-245209/Multi-Period-Daily/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/Sparta/MACD/Output/MACD-245209/Multi-Period-Daily\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"8a9dde13-e4b8-40f3-80bc-ea51050b2f08","savedPayload":{"position":{"x":12256.476843346289,"y":19482.723524965983},"targetPosition":{"x":12464.35611516412,"y":19283.40894421901},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"adee537e-2c4d-4454-9006-05171c09313a","savedPayload":{"position":{"x":12102.5768009303,"y":19552.417543644566},"targetPosition":{"x":11996.534797464064,"y":19450.885162270104},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"38a52afc-8a7c-49c9-8068-dbe438ac64d0","savedPayload":{"position":{"x":11996.534797464064,"y":19450.885162270104},"targetPosition":{"x":11869.964629714841,"y":19363.75179635065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"83439522-7972-454e-af41-d516ee51b26f","savedPayload":{"position":{"x":11912.272508164877,"y":19671.631272314273},"targetPosition":{"x":11892.945941194672,"y":19521.703975221404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"03c98b2f-4e9c-4800-9d9b-5c6ef3f94665","savedPayload":{"position":{"x":11892.945941194672,"y":19521.703975221404},"targetPosition":{"x":11869.964629714841,"y":19363.75179635065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Line","config":"{\n \"codeName\": \"line\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.line","id":"6aa9ee37-3044-444c-bc27-e09dd444f182","savedPayload":{"position":{"x":11681.09022366042,"y":19611.33990423493},"targetPosition":{"x":11773.267525400717,"y":19491.200707039694},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c9237bcd-4d76-4460-bcbb-8474843efc03","savedPayload":{"position":{"x":11773.267525400717,"y":19491.200707039694},"targetPosition":{"x":11869.964629714841,"y":19363.75179635065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Signal","config":"{\n \"codeName\": \"signal\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.signal","id":"35ac625e-5516-4a15-b92d-f3a5dc4d8ec0","savedPayload":{"position":{"x":11560.61481154781,"y":19405.343079704566},"targetPosition":{"x":11711.226974816687,"y":19385.093684780873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8dd22ed9-76d1-4108-8a7f-ed4c03d7eede","savedPayload":{"position":{"x":11711.226974816687,"y":19385.093684780873},"targetPosition":{"x":11869.964629714841,"y":19363.75179635065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA24","config":"{\n \"codeName\": \"ema24\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema24","id":"e56fbdd1-4b1c-484b-bcbb-6b9ec6414080","savedPayload":{"position":{"x":11617.861963670199,"y":19178.209324125364},"targetPosition":{"x":11742.536958210836,"y":19266.38218297498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"57f32362-cb33-471d-a855-2c3cddb88bf9","savedPayload":{"position":{"x":11742.536958210836,"y":19266.38218297498},"targetPosition":{"x":11869.964629714841,"y":19363.75179635065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"EMA52","config":"{\n \"codeName\": \"ema52\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.ema52","id":"619feddc-3ff2-4a97-aa8b-a924b80bd099","savedPayload":{"position":{"x":11818.292126377515,"y":19036.882711247865},"targetPosition":{"x":11860.850190169096,"y":19209.161810425638},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"93f3c29f-178d-44fb-8f64-21e617d2387e","savedPayload":{"position":{"x":11860.850190169096,"y":19209.161810425638},"targetPosition":{"x":11869.964629714841,"y":19363.75179635065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Histogram","config":"{\n \"codeName\": \"histogram\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.histogram","id":"615f9b7a-676f-444b-8fc8-8355c8c8aef6","savedPayload":{"position":{"x":12594.68867199008,"y":18408.7606579512},"targetPosition":{"x":12232.692007169768,"y":18885.954109463066},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"650fc7dc-1ea8-426d-a720-89efdec4292e","savedPayload":{"position":{"x":12232.692007169768,"y":18885.954109463066},"targetPosition":{"x":11869.964629714841,"y":19363.75179635065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"371d2f8e-8868-4933-baee-9827c0496fc1","savedPayload":{"position":{"x":11869.964629714841,"y":19363.75179635065},"targetPosition":{"x":12464.35611516412,"y":19283.40894421901},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\n/* EMA24 and EMA52 Calculation */\n\nlet candle = record.current\n\nvariable.ema24 = calculateEMA(24, candle.close, variable.previousEMA24)\nvariable.previousEMA24 = variable.ema24\n\nvariable.ema52 = calculateEMA(52, candle.close, variable.previousEMA52)\nvariable.previousEMA52 = variable.ema52\n\n\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}\n\n/* MACD Line Calculation */\n\nmacdLine = variable.ema24 - variable.ema52\n\nvariable.line = macdLine.toFixed(2)\n\n/* Signal Line Calculation (EMA9 of MACD Line) */\n\nmacdSignal = calculateSignalEMA(9, variable.line, variable.previousSignal)\nvariable.signal = macdSignal.toFixed(2)\nvariable.previousSignal = variable.signal \n \nfunction calculateSignalEMA(periods, currentSignal, previousEMA) {\n let k = 2 / (periods + 1)\n return currentSignal * k + variable.previousSignal * (1-k)\n}\n\n/* Histogram Calculation */\n\nhistogram = variable.line - variable.signal\nvariable.histogram = histogram.toFixed(2)","id":"4f4e66a9-4791-494a-ada7-72f3d5db7415","savedPayload":{"position":{"x":11714.085476950855,"y":19111.54746296612},"targetPosition":{"x":11919.45103505026,"y":19103.872775853823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d8e07801-1e77-44a5-a232-fd672264f252","savedPayload":{"position":{"x":11919.45103505026,"y":19103.872775853823},"targetPosition":{"x":12073.999739238483,"y":19072.909948767403},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\n/* SMA Calculation */\n\n/* \nAlthough we don't really need to set an array to access a number of candles,\nwe will do so in order to reuse the code built for the SMA indicator, and also\nso that the same code may be used for other MACD products that may require\naccessing more candles than are available in the span of two days.\n*/\n\nvariable.last100 = []\n//console.log(timeFrameLabel + \" - Initialization of SMA - *************\")\n\n/* EMA Calculation */\n\nvariable.previousEMA24 = 0\nvariable.previousEMA52 = 0\n\n/* MACD Line calculation */\n\nvariable.previousSignal = 0","id":"5f25ca07-07ce-49a7-a397-5d2f3e89c0c3","savedPayload":{"position":{"x":11854.66499397367,"y":18733.39223585201},"targetPosition":{"x":11968.822598888542,"y":18902.477680369637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dd01ebc2-8204-4b51-83d9-92d416521553","savedPayload":{"position":{"x":11968.822598888542,"y":18902.477680369637},"targetPosition":{"x":12073.999739238483,"y":19072.909948767403},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e1a8b841-84d8-4ddd-822b-d81fe2b9a313","savedPayload":{"position":{"x":12073.999739238483,"y":19072.909948767403},"targetPosition":{"x":12464.35611516412,"y":19283.40894421901},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"47984765-8180-45cf-a9eb-f0a8b22d165d","savedPayload":{"position":{"x":12435.812498410416,"y":19297.3659904132},"targetPosition":{"x":12823.965784495549,"y":19110.505878450538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"MACD 245209","id":"2fe60a0e-dd3a-4bb8-a321-4742389ab930"}}}],"id":"7724b857-30aa-4d3c-9ab7-e70895229f2a","savedPayload":{"position":{"x":12824.153165026528,"y":19176.935616776485},"targetPosition":{"x":12824.153406676238,"y":18710.73255185816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Indicator Bot","name":"RSI","config":"{\n\"codeName\": \"RSI\",\n\"repo\": \"RSI-Indicator-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates RSI.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market RSI14","id":"41eb05b7-0222-49b7-9b62-f14f43302f8f","savedPayload":{"position":{"x":12967.278586001876,"y":20090.96495607309},"targetPosition":{"x":12632.826412090946,"y":20090.96495607309},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"5ec62760-e144-4496-98ab-0415a4b315ec"}}}],"outputDatasetFolders":[],"id":"35d2683b-470d-44e0-97bb-6075e6b5cc92","savedPayload":{"position":{"x":12632.826412090946,"y":20090.96495607309},"targetPosition":{"x":12330.548380684371,"y":19916.444653270395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","config":"{\"mainUtility\": \"Market Ending Point\"}","id":"ea692963-60c5-445b-921c-f2be614186d7","savedPayload":{"position":{"x":12505.068683487067,"y":20567.600318372857},"targetPosition":{"x":12505.068683487067,"y":20218.72268467697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}},{"type":"Status Dependency","name":"RSI Multi-Period-Market","config":"{\"mainUtility\": \"Self Reference\"}","id":"4211e16a-a54f-4049-941e-fd3be8244852","savedPayload":{"position":{"x":12205.829104463804,"y":20391.488736178242},"targetPosition":{"x":12505.068683487067,"y":20218.72268467697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"bbff3247-937a-429e-9959-c896b8207f26"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"9d9b2836-9eab-437b-9426-2cef828cd0e3","savedPayload":{"position":{"x":12199.643491038025,"y":20042.38536759922},"targetPosition":{"x":12505.068683487067,"y":20218.72268467697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"dataMineDataDependencies":[],"id":"1a42abe3-eaab-444f-8687-c3930dc28a06","savedPayload":{"position":{"x":12505.068683487067,"y":20218.72268467697},"targetPosition":{"x":12330.548380684371,"y":19916.444653270395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"bbff3247-937a-429e-9959-c896b8207f26","savedPayload":{"position":{"x":12330.548380684371,"y":20265.485258875786},"targetPosition":{"x":12330.548380684371,"y":19916.444653270395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"b2babf3e-22f6-4064-b4e5-840eec9ff707","savedPayload":{"position":{"x":11999.259364238913,"y":19808.802326681638},"targetPosition":{"x":12330.548380684371,"y":19916.444653270395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"ae4d9310-3446-41b3-88b9-90978defd305","savedPayload":{"position":{"x":12028.270349277796,"y":20090.96495607309},"targetPosition":{"x":12330.548380684371,"y":19916.444653270395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"96f31416-5090-428a-be83-985a0b3ab275","savedPayload":{"position":{"x":12542.001435846169,"y":19406.927121873297},"targetPosition":{"x":12541.676872641467,"y":18993.343000640725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Calculates RSI\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily RSI14","id":"7539f591-7ca7-4fd5-9142-a6b470f8ef8e","savedPayload":{"position":{"x":12099.460861966729,"y":20049.1287357035},"targetPosition":{"x":11927.268778663101,"y":20049.1287357035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f1556d09-f134-4678-83fb-04002d1dcd34"}}}],"outputDatasetFolders":[],"id":"f5a20865-68a4-4e3f-8547-afc741d7fb85","savedPayload":{"position":{"x":11927.268778663101,"y":20049.1287357035},"targetPosition":{"x":11836.930422418309,"y":19711.981400325676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"RSI Multi-Period-Daily","config":"{\"mainUtility\": \"Self Reference\"}","id":"632dbd10-6cf7-453a-8e5c-4a74d33fcaf4","savedPayload":{"position":{"x":11746.592066173516,"y":20221.39838280591},"targetPosition":{"x":11746.592066173516,"y":20049.1287357035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2d1d4e5a-49c3-4d9a-958a-195d3f0949c2"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","config":"{\"mainUtility\": \"Market Ending Point\"}","id":"5a1a8917-5d85-4f33-b552-a314ee6c54db","savedPayload":{"position":{"x":11615.666887416,"y":20180.053914461016},"targetPosition":{"x":11746.592066173516,"y":20049.1287357035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\"mainUtility\": \"Market Starting Point\"}","id":"9ea493a4-33b1-445e-975d-b202994079c8","savedPayload":{"position":{"x":11556.488076365256,"y":20049.1287357035},"targetPosition":{"x":11746.592066173516,"y":20049.1287357035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"86af23c8-eb30-499a-9d88-39e0e9df06e5","savedPayload":{"position":{"x":11627.319438937093,"y":19929.856108467076},"targetPosition":{"x":11746.592066173516,"y":20049.1287357035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"dataMineDataDependencies":[],"id":"6e2f9722-24f9-40dc-9e38-f4dcbbbeb38a","savedPayload":{"position":{"x":11746.592066173516,"y":20049.1287357035},"targetPosition":{"x":11836.930422418309,"y":19711.981400325676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"2d1d4e5a-49c3-4d9a-958a-195d3f0949c2","savedPayload":{"position":{"x":11590.121443285278,"y":19958.790379458707},"targetPosition":{"x":11836.930422418309,"y":19711.981400325676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"525140eb-d037-4b8d-9eef-f01574ca49ff","savedPayload":{"position":{"x":11466.263309377196,"y":19591.54435455283},"targetPosition":{"x":11836.930422418309,"y":19711.981400325676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"9162d141-5486-4a0d-a3e4-71c74060beb8","savedPayload":{"position":{"x":11499.783087040485,"y":19621.643044080884},"targetPosition":{"x":11836.930422418309,"y":19711.981400325676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f1177bcd-22dc-425b-8f30-878844aa82b8","savedPayload":{"position":{"x":12250.119854145269,"y":19285.772074616227},"targetPosition":{"x":12541.676872641467,"y":18993.343000640725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"RSI14","config":"{\n \"codeName\": \"RSI-14\",\n \"singularVariableName\": \"rsi14\",\n \"pluralVariableName\": \"rsi14s\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"5ec62760-e144-4496-98ab-0415a4b315ec","savedPayload":{"position":{"x":11996.667612156556,"y":19160.069541798093},"targetPosition":{"x":12111.0680107403,"y":18992.930266347485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"f1556d09-f134-4678-83fb-04002d1dcd34","savedPayload":{"position":{"x":11916.93710859901,"y":19050.019660830596},"targetPosition":{"x":12111.0680107403,"y":18992.930266347485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"Begin","code":"record.current.begin","id":"069fdb18-b72b-4fd2-9255-061f7a4f0b7e","savedPayload":{"position":{"x":11555.356170854315,"y":19011.91841785303},"targetPosition":{"x":11668.805991008145,"y":18951.899098080798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"309f6917-c246-4d84-89ac-abca872eb828","savedPayload":{"position":{"x":11668.805991008145,"y":18951.899098080798},"targetPosition":{"x":11775.501565468023,"y":18871.277600700247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"2128f049-e006-4e71-b9a5-91655bfcb290","savedPayload":{"position":{"x":11515.96237378739,"y":18801.902602003418},"targetPosition":{"x":11634.30242812538,"y":18837.67755351421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"38a593cc-3232-4977-9597-18939c86bb5d","savedPayload":{"position":{"x":11634.30242812538,"y":18837.67755351421},"targetPosition":{"x":11775.501565468023,"y":18871.277600700247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Value","config":"{\n \"codeName\": \"value\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.value","id":"c5e2ca09-53a7-4655-b0dc-242b7fbd11f0","savedPayload":{"position":{"x":11667.351056236337,"y":18666.283401626806},"targetPosition":{"x":11730.497867316246,"y":18755.001419301265},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5988292a-69bf-4e2d-833b-dccb78aa32a8","savedPayload":{"position":{"x":11730.497867316246,"y":18755.001419301265},"targetPosition":{"x":11775.501565468023,"y":18871.277600700247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b12a20d9-1b6a-4525-b50c-8edf1fc3bff8","savedPayload":{"position":{"x":11775.501565468023,"y":18871.277600700247},"targetPosition":{"x":12111.0680107403,"y":18992.930266347485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\n/* \nCalculation method credit: https://www.macroption.com/rsi-calculation/\n\nRSI Calculation Formula\n\n RSI = 100 – 100 / ( 1 + RS )\n RS = Relative Strength = AvgU / AvgD\n AvgU = average of all up moves in the last N price bars\n AvgD = average of all down moves in the last N price bars\n N = the period of RSI\n There are 3 different commonly used methods for the exact calculation of AvgU and AvgD (see details below)\n\nRSI Calculation Step by Step\n\n Calculate up moves and down moves (get U and D)\n Average the up moves and down moves (get AvgU and AvgD)\n Calculate Relative Strength (get RS)\n Calculate the Relative Strength Index (get RSI)\n*/\n\n/* Calculating Up Moves and Down Moves */\n\n//let candle = record.current // Our main dependencies are candles \n//let candlePrevious = record.previous\n\nif (record.previous !== undefined) {\n if (record.current.close > record.previous.close) {\n variable.last14U.push(record.current.close - record.previous.close) // Add win to last 14 array.\n } else {\n variable.last14U.push(0) // Add 0 to keep proper count of records in the last 14 array.\n }\n \n if (record.current.close < record.previous.close) {\n variable.last14D.push(record.previous.close - record.current.close) // Add win to last 14 array.\n } else {\n variable.last14D.push(0) // Add 0 to keep proper count of records in the last 14 array.\n }\n \n if (variable.last14U.length > 14) {\n variable.last14U.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 14 elements.\n }\n \n if (variable.last14D.length > 14) {\n variable.last14D.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 14 elements.\n }\n \n /* Calculating Averages of Up Moves and Down Moves */\n \n variable.avgU = calculateAVGU(14)\n variable.avgD = calculateAVGD(14)\n \n /* Calculating Relative Strength */\n \n if (variable.avgD > 0) {\n relativeStrength = variable.avgU / variable.avgD\n } else {\n relativeStrength = 0\n }\n\n /* Calculating RSI */\n\n relativeStrengthIndex = 100 - 100 / ( 1 + relativeStrength)\n\n if (relativeStrengthIndex !== undefined) {\n variable.value = relativeStrengthIndex.toFixed(2)\n } else {\n variable.value = 0\n }\n} else {\n variable.value = 0\n}\n\nfunction calculateAVGU(periods) { // Having a function avoids us to repeat code.\n /* We check we have enough values to make the calculation */\n if (variable.last14U.length < periods) { return 0 } // If we dont, we define the value is zero.\n\n let sumU = 0 // Initialize sum variable. \n for (let j = variable.last14U.length - periods; j < variable.last14U.length; j++) { // Iterate through the last periods\n sumU = sumU + variable.last14U[j]\n }\n let averageU = sumU / periods\n return averageU\n}\n\nfunction calculateAVGD(periods) { // Having a function avoids us to repeat code.\n /* We check we have enough values to make the calculation */\n if (variable.last14D.length < periods) { return 0 } // If we dont, we define the value is zero.\n\n let sumD = 0 // Initialize sum variable. \n for (let i = variable.last14D.length - periods; i < variable.last14D.length; i++) { // Iterate through the last periods\n sumD = sumD + variable.last14D[i]\n }\n let averageD = sumD / periods\n return averageD\n}","id":"a00ed092-3bc1-4288-979d-34c204713d65","savedPayload":{"position":{"x":11503.38922845128,"y":18460.28757240044},"targetPosition":{"x":11687.191910728776,"y":18541.88924084513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c2f8b23a-4e60-4181-9c19-ed243eb151cb","savedPayload":{"position":{"x":11687.191910728776,"y":18541.88924084513},"targetPosition":{"x":11863.485802732735,"y":18664.371690198317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\n/* \nWe keep two separate arrays to store last 14 price increments or losses.\n*/\n\nvariable.last14U = []\nvariable.last14D = []","id":"59da2324-377e-4307-a6d1-b9cf170733ba","savedPayload":{"position":{"x":11821.868345458059,"y":18265.789839151534},"targetPosition":{"x":11843.141884673716,"y":18465.13208869595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aca0a380-6355-42b9-876b-6932d6d13105","savedPayload":{"position":{"x":11843.141884673716,"y":18465.13208869595},"targetPosition":{"x":11863.485802732735,"y":18664.371690198317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5c066df5-2a29-4c74-b7bc-dc5ea1329089","savedPayload":{"position":{"x":11863.485802732735,"y":18664.371690198317},"targetPosition":{"x":12111.0680107403,"y":18992.930266347485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7","savedPayload":{"position":{"x":12111.0680107403,"y":18992.930266347485},"targetPosition":{"x":12541.676872641467,"y":18993.343000640725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"RSI 14","id":"72403d40-2a64-4e51-8eaf-b1a872e4474e"}}}],"id":"276e2181-0c8d-4d56-94e0-1999ec317cb5","savedPayload":{"position":{"x":12494.546585191913,"y":19040.42507139788},"targetPosition":{"x":12824.153406676238,"y":18710.73255185816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"plotters":[{"type":"Plotter","name":"SMA","config":"{\n\"codeName\": \"Plotter SMA\"\n}","modules":[{"type":"Plotter Module","name":"SMA Popular","config":"{\n\t\"codeName\": \"SMA-Popular\",\n \"icon\": \"moving-average\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"SMA 20 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma20","id":"81557791-d18b-472c-b152-612294f281cc","savedPayload":{"position":{"x":10272.422346832018,"y":19936.94116207015},"targetPosition":{"x":11331.49315275108,"y":19844.284472680967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b932c738-3b05-4b1f-a822-2ba7bae30252","savedPayload":{"position":{"x":11331.49315275108,"y":19844.284472680967},"targetPosition":{"x":12390.563958670142,"y":19751.627783291784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 20 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma20","id":"dd573845-585b-4a89-8518-425173e02916","savedPayload":{"position":{"x":10648.856203394591,"y":18532.07088368953},"targetPosition":{"x":11519.710081032366,"y":19141.849333490656},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"44ba79ce-2ad1-4bb7-87db-df0aa58e6440","savedPayload":{"position":{"x":11519.710081032366,"y":19141.849333490656},"targetPosition":{"x":12390.563958670142,"y":19751.627783291784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 50 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma50","id":"054b7477-497f-46f9-b33e-de27dc3d494f","savedPayload":{"position":{"x":11840.25447557614,"y":17697.84483249799},"targetPosition":{"x":12115.40921712314,"y":18724.736307894887},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"00efabf8-701d-44b1-a590-b8399149dfbb","savedPayload":{"position":{"x":12115.40921712314,"y":18724.736307894887},"targetPosition":{"x":12390.563958670142,"y":19751.627783291784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 50 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma50","id":"2e18404b-0350-4720-95d1-77533ced3986","savedPayload":{"position":{"x":13289.14867090601,"y":17824.606649237867},"targetPosition":{"x":12839.856314788076,"y":18788.117216264825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"084b4468-49d2-4ad2-a716-ebc338c34248","savedPayload":{"position":{"x":12839.856314788076,"y":18788.117216264825},"targetPosition":{"x":12390.563958670142,"y":19751.627783291784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 100 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma100","id":"9e730b8b-7f20-41df-9126-9d9aae2f8ca6","savedPayload":{"position":{"x":14317.585092724059,"y":18853.043071055916},"targetPosition":{"x":13354.0745256971,"y":19302.33542717385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bbacba1b-6b2d-48b7-a440-986a04c61858","savedPayload":{"position":{"x":13354.0745256971,"y":19302.33542717385},"targetPosition":{"x":12390.563958670142,"y":19751.627783291784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 100 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma100","id":"922d462b-1e9f-4766-859d-330041428bc0","savedPayload":{"position":{"x":14444.346909463935,"y":20301.937266385787},"targetPosition":{"x":13417.455434067038,"y":20026.782524838785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"270a8be8-ad51-4061-abe1-a4c7234eb88a","savedPayload":{"position":{"x":13417.455434067038,"y":20026.782524838785},"targetPosition":{"x":12390.563958670142,"y":19751.627783291784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 200 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma200","id":"4278cffb-da8c-458e-b014-449f8487204b","savedPayload":{"position":{"x":13610.120858272398,"y":21493.335538567335},"targetPosition":{"x":13000.34240847127,"y":20622.48166092956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cd242031-8d7a-4cee-a680-156b0be7c7c7","savedPayload":{"position":{"x":13000.34240847127,"y":20622.48166092956},"targetPosition":{"x":12390.563958670142,"y":19751.627783291784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 200 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma200","id":"a3b73c57-a9b2-4a55-9232-9bacf741a933","savedPayload":{"position":{"x":12205.250579891775,"y":21869.769395129908},"targetPosition":{"x":12297.907269280959,"y":20810.698589210846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"328b048e-eb4a-4a02-ad95-a17cd170c4a7","savedPayload":{"position":{"x":12297.907269280959,"y":20810.698589210846},"targetPosition":{"x":12390.563958670142,"y":19751.627783291784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6755d98f-e1de-4ae9-b688-d06ab9cc543e","savedPayload":{"position":{"x":12390.563958670142,"y":19751.627783291784},"targetPosition":{"x":11638.827224820247,"y":20503.36451714168},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"SMA 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"6368c66e-47fc-486d-8c03-e2ed303de825","savedPayload":{"position":{"x":13216.028183311146,"y":18724.736307894887},"targetPosition":{"x":12940.873441764144,"y":19751.627783291784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"b0d22693-8100-49e9-b92e-11a8a55a5480","savedPayload":{"position":{"x":12940.873441764144,"y":19751.627783291784},"targetPosition":{"x":12665.718700217143,"y":20778.51925868868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 20 End","id":"d9dae274-33d5-403d-a5ff-5514104df62e","savedPayload":{"position":{"x":12123.474903334538,"y":21717.713064978412},"targetPosition":{"x":12665.718700217143,"y":20778.51925868868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 20 End","id":"44ba79ce-2ad1-4bb7-87db-df0aa58e6440"}}},{"type":"Polygon Vertex","name":"SMA 20 Begin","id":"45823ead-7d67-409c-8160-ea36496c412e","savedPayload":{"position":{"x":12138.981787278039,"y":19866.184163256166},"targetPosition":{"x":12665.718700217143,"y":20778.51925868868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 20 Begin","id":"b932c738-3b05-4b1f-a822-2ba7bae30252"}}}],"id":"ffe11ebb-d04f-4bf6-b6ff-43382be7c347","savedPayload":{"position":{"x":12665.718700217143,"y":20778.51925868868},"targetPosition":{"x":11638.827224820247,"y":20503.36451714168},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 50","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"b0de67a4-9a26-40ce-aa19-f5336145f871","savedPayload":{"position":{"x":13967.764917161041,"y":20979.946509444573},"targetPosition":{"x":12940.873441764144,"y":21255.101250991574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"f06c2d68-11d4-40e0-99df-43a758ca0123","savedPayload":{"position":{"x":12940.873441764144,"y":21255.101250991574},"targetPosition":{"x":11913.981966367248,"y":21530.255992538576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 50 End","id":"baf11fde-1f46-4e77-a8fe-d19a3ee8a4b2","savedPayload":{"position":{"x":11393.656715486874,"y":22431.485763524408},"targetPosition":{"x":11913.981966367248,"y":21530.255992538576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 50 End","id":"084b4468-49d2-4ad2-a716-ebc338c34248"}}},{"type":"Polygon Vertex","name":"SMA 50 Begin","id":"bb6ef8cd-1473-4200-9c0e-35b5eab40259","savedPayload":{"position":{"x":11388.735132466298,"y":20620.501789707443},"targetPosition":{"x":11913.981966367248,"y":21530.255992538576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 50 Begin","id":"00efabf8-701d-44b1-a590-b8399149dfbb"}}}],"id":"c867bef2-aa91-4753-9b27-68f88d42370e","savedPayload":{"position":{"x":11913.981966367248,"y":21530.255992538576},"targetPosition":{"x":11638.827224820247,"y":20503.36451714168},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 100","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"b03ef9cb-fef3-4a54-bf5a-a85528fa2699","savedPayload":{"position":{"x":12701.943509164821,"y":22006.83798484147},"targetPosition":{"x":11638.827224820247,"y":22006.83798484147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"baf25122-e7de-4283-b638-cfe2766220ac","savedPayload":{"position":{"x":11638.827224820247,"y":22006.83798484147},"targetPosition":{"x":10887.090490970351,"y":21255.101250991574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 100 Begin","id":"8657980b-1796-4291-bba6-87520122b302","savedPayload":{"position":{"x":10351.565271562764,"y":22182.658139739986},"targetPosition":{"x":10887.090490970351,"y":21255.101250991574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 100 Begin","id":"bbacba1b-6b2d-48b7-a440-986a04c61858"}}},{"type":"Polygon Vertex","name":"SMA 100 End","id":"45403abf-a4b1-4f8a-9d18-8ee72fef1792","savedPayload":{"position":{"x":10360.988225263025,"y":20343.865396809386},"targetPosition":{"x":10887.090490970351,"y":21255.101250991574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 100 End","id":"270a8be8-ad51-4061-abe1-a4c7234eb88a"}}}],"id":"7473f9b9-7737-4ee1-8418-39b96d8365c3","savedPayload":{"position":{"x":10887.090490970351,"y":21255.101250991574},"targetPosition":{"x":11638.827224820247,"y":20503.36451714168},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 200","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"9475aa23-1561-45f6-8129-9d7ffaf0bb22","savedPayload":{"position":{"x":10061.626266329347,"y":22281.99272638847},"targetPosition":{"x":10336.781007876349,"y":21255.101250991574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"9007d9ad-f2b5-45fb-a7b3-b9579c74866d","savedPayload":{"position":{"x":10336.781007876349,"y":21255.101250991574},"targetPosition":{"x":10611.93574942335,"y":20228.209775594678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 200 Begin","id":"0b3d001b-060a-4d72-94e7-d8e9f76ef1ae","savedPayload":{"position":{"x":10086.744287689695,"y":21137.868071018733},"targetPosition":{"x":10611.93574942335,"y":20228.209775594678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 200 Begin","id":"cd242031-8d7a-4cee-a680-156b0be7c7c7"}}},{"type":"Polygon Vertex","name":"SMA 200 End","id":"178f2776-a5db-4cb9-b8c7-11ecb471bf12","savedPayload":{"position":{"x":10079.818395499942,"y":19306.555483010226},"targetPosition":{"x":10611.93574942335,"y":20228.209775594678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 200 End","id":"328b048e-eb4a-4a02-ad95-a17cd170c4a7"}}}],"id":"5dbe47bb-9414-4edd-be08-5ab50755a852","savedPayload":{"position":{"x":10611.93574942335,"y":20228.209775594678},"targetPosition":{"x":11638.827224820247,"y":20503.36451714168},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"340dc986-ccc9-4b47-ac54-294187daa2e0","savedPayload":{"position":{"x":12148.985437663918,"y":20806.61368372887},"targetPosition":{"x":12528.58753718751,"y":19817.90445862964},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Popular SMA","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"SMA 20","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma20","id":"4f901876-b274-426e-9755-529b6241890d","savedPayload":{"position":{"x":10448.059422553588,"y":21324.63694104785},"targetPosition":{"x":10392.420215214968,"y":20262.977620622816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"57d75985-febe-441b-be12-31f5eb10881b","savedPayload":{"position":{"x":10392.420215214968,"y":20262.977620622816},"targetPosition":{"x":10336.781007876349,"y":19201.31830019778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 50","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma50","id":"dc2d66e9-8dc1-4092-bfa8-e147c7cf7226","savedPayload":{"position":{"x":8351.77189956729,"y":19963.29190609535},"targetPosition":{"x":9344.276453721819,"y":19582.305103146566},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"74e3faab-246a-4c05-ae0a-b68f2095aa73","savedPayload":{"position":{"x":9344.276453721819,"y":19582.305103146566},"targetPosition":{"x":10336.781007876349,"y":19201.31830019778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 100","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma100","id":"1b045b3c-13a9-4091-a804-0040340cf1be","savedPayload":{"position":{"x":8998.699496285988,"y":17548.925246322724},"targetPosition":{"x":9667.740252081168,"y":18375.121773260253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f46c7caf-8907-4cc4-b048-efe691a24049","savedPayload":{"position":{"x":9667.740252081168,"y":18375.121773260253},"targetPosition":{"x":10336.781007876349,"y":19201.31830019778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 200","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma200","id":"ef7a7e7d-dec3-4da6-9646-d087e03b7a71","savedPayload":{"position":{"x":11494.810262304729,"y":17418.10962423119},"targetPosition":{"x":10915.795635090539,"y":18309.713962214486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8e1108c8-e8a4-4ae8-b6b1-765c4292580a","savedPayload":{"position":{"x":10915.795635090539,"y":18309.713962214486},"targetPosition":{"x":10336.781007876349,"y":19201.31830019778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7fc74763-c245-4b23-8121-7fe0d1e8e1db","savedPayload":{"position":{"x":11705.796953443807,"y":20484.651250812945},"targetPosition":{"x":12528.58753718751,"y":19817.90445862964},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ddf21e96-c312-4ebe-9e2b-f56e8ea072aa","savedPayload":{"position":{"x":12124.141968245023,"y":19230.248779194775},"targetPosition":{"x":12424.206554116216,"y":18710.734611771542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"SMA Base 11","config":"{\n\t\"codeName\": \"SMA-Base11\",\n \"icon\": \"moving-average\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"SMA 11 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma11","id":"ab8c79b6-26ed-436e-a9ed-5581e48403a9","savedPayload":{"position":{"x":11420.661716551038,"y":19262.592848790773},"targetPosition":{"x":11581.82712015699,"y":19380.155900728823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"77d02772-853e-4e30-9efe-7bea8e829d51","savedPayload":{"position":{"x":11581.82712015699,"y":19380.155900728823},"targetPosition":{"x":11743.222658812634,"y":19497.537054954948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 11 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma11","id":"e7f8c6de-4085-4886-ad93-c207274eb90c","savedPayload":{"position":{"x":11599.232762859805,"y":19125.266987515377},"targetPosition":{"x":11671.198790593042,"y":19311.45287403034},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"185ca2e7-b561-4ce4-b219-bd54496885b5","savedPayload":{"position":{"x":11671.198790593042,"y":19311.45287403034},"targetPosition":{"x":11743.222658812634,"y":19497.537054954948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 22 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma22","id":"0c62dd54-916a-4187-be47-0715604a0632","savedPayload":{"position":{"x":11823.161132602576,"y":19106.60809147188},"targetPosition":{"x":11783.207192852346,"y":19302.098689134476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"08b23cb2-cf78-48ae-bd9a-efe0e8df4578","savedPayload":{"position":{"x":11783.207192852346,"y":19302.098689134476},"targetPosition":{"x":11743.222658812634,"y":19497.537054954948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 22 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma22","id":"f1d537b7-09a0-4031-8565-02ea33b66261","savedPayload":{"position":{"x":12022.060479551723,"y":19212.330323197708},"targetPosition":{"x":11882.65737243759,"y":19354.92755444262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3871971f-7f4b-49a0-a0d7-b1d08a4db951","savedPayload":{"position":{"x":11882.65737243759,"y":19354.92755444262},"targetPosition":{"x":11743.222658812634,"y":19497.537054954948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 33 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma33","id":"5cbdb800-4b2b-49e6-a8ef-678587ecd626","savedPayload":{"position":{"x":12132.327282219843,"y":19408.81846863279},"targetPosition":{"x":11937.79098559702,"y":19453.1634027495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2734c9f2-1347-4b5b-8dbf-f7f42eb2c810","savedPayload":{"position":{"x":11937.79098559702,"y":19453.1634027495},"targetPosition":{"x":11743.222658812634,"y":19497.537054954948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 33 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma33","id":"d7051dab-455d-4d02-8e0b-59139c3546d3","savedPayload":{"position":{"x":12212.489730964999,"y":19666.84556157561},"targetPosition":{"x":11931.10677190366,"y":19565.354364797877},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"id":"ce242fe6-2b52-4b89-a203-ce398b3545fd","savedPayload":{"position":{"x":11931.10677190366,"y":19565.354364797877},"targetPosition":{"x":11743.222658812634,"y":19497.537054954948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 55 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma55","id":"2c8a5860-2c8c-4a04-b0aa-d353817d3dab","savedPayload":{"position":{"x":11986.094059307461,"y":19814.968914396126},"targetPosition":{"x":11864.659058908868,"y":19656.244091658857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bdc5f0cf-2c2f-466c-963b-19d81a13b532","savedPayload":{"position":{"x":11864.659058908868,"y":19656.244091658857},"targetPosition":{"x":11743.222658812634,"y":19497.537054954948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 55 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma55","id":"62dfcbf0-e773-41db-80e0-bf46d47d977f","savedPayload":{"position":{"x":11776.047437672181,"y":19896.095265068263},"targetPosition":{"x":11759.622882925452,"y":19696.796376143746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2e58c59-c5d7-4b42-bb66-f012da23c12a","savedPayload":{"position":{"x":11759.622882925452,"y":19696.796376143746},"targetPosition":{"x":11743.222658812634,"y":19497.537054954948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 111 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma111","id":"b496251d-8005-4d21-9be0-1dec58cb58ba","savedPayload":{"position":{"x":11555.893124409658,"y":19850.682133246828},"targetPosition":{"x":11649.518710127513,"y":19674.076482476314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"62ed1060-3233-4175-a4cc-8ad04a123105","savedPayload":{"position":{"x":11649.518710127513,"y":19674.076482476314},"targetPosition":{"x":11743.222658812634,"y":19497.537054954948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 11 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma111","id":"3e765b91-17a0-4b30-bcfb-d7491afa9635","savedPayload":{"position":{"x":11394.893562680705,"y":19692.986738335792},"targetPosition":{"x":11568.955554705075,"y":19595.16802594834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bdee0fe7-c635-483d-b547-6271410cc35a","savedPayload":{"position":{"x":11568.955554705075,"y":19595.16802594834},"targetPosition":{"x":11743.222658812634,"y":19497.537054954948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"853ae08f-85ed-48e9-82d9-7f00184ff7e7","savedPayload":{"position":{"x":11743.222658812634,"y":19497.537054954948},"targetPosition":{"x":10749.814619262712,"y":19445.02155215359},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"SMA 11","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"a36a0be4-c3be-4e17-8459-ce24d08c60d4","savedPayload":{"position":{"x":10865.641159742268,"y":20088.231727157225},"targetPosition":{"x":10822.08163266265,"y":19962.054917474088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"bc76dbe0-28fe-4811-b396-583cc810ad8c","savedPayload":{"position":{"x":10822.08163266265,"y":19962.054917474088},"targetPosition":{"x":10734.812945912769,"y":19710.572377007105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 11 Begin","id":"007b0aa7-d129-4b66-97b1-a223b61465a9","savedPayload":{"position":{"x":10719.301189529137,"y":19976.524107250327},"targetPosition":{"x":10734.812945912769,"y":19710.572377007105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 11 Begin","id":"77d02772-853e-4e30-9efe-7bea8e829d51"}}},{"type":"Polygon Vertex","name":"SMA 11 End","id":"8bf6c449-35d6-44c0-ac25-0da059e0c7d0","savedPayload":{"position":{"x":10652.324528194133,"y":19960.18655823744},"targetPosition":{"x":10734.812945912769,"y":19710.572377007105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 11 End","id":"185ca2e7-b561-4ce4-b219-bd54496885b5"}}}],"id":"82eff706-25ff-45ba-b066-0f20b64e26e1","savedPayload":{"position":{"x":10734.812945912769,"y":19710.572377007105},"targetPosition":{"x":10749.814619262712,"y":19445.02155215359},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 22","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"48b5e69c-d187-40f8-aee9-89f02ac7b442","savedPayload":{"position":{"x":10555.28541602658,"y":20069.88999741685},"targetPosition":{"x":10570.85224502711,"y":19936.981974422146},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"13b6ae03-77c1-473a-9cd9-eee42cab5005","savedPayload":{"position":{"x":10570.85224502711,"y":19936.981974422146},"targetPosition":{"x":10620.572860595266,"y":19677.44455273868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 22 End","id":"5101118b-d0b2-46b3-b752-c1e8f3e09842","savedPayload":{"position":{"x":10479.502552283278,"y":19908.76975213226},"targetPosition":{"x":10620.572860595266,"y":19677.44455273868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 22 End","id":"3871971f-7f4b-49a0-a0d7-b1d08a4db951"}}},{"type":"Polygon Vertex","name":"SMA 22 Begin","id":"5d1290b9-98c2-4925-9da4-fcdf50d13c5b","savedPayload":{"position":{"x":10435.842423057222,"y":19864.417658478123},"targetPosition":{"x":10620.572860595266,"y":19677.44455273868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 22 Begin","id":"08b23cb2-cf78-48ae-bd9a-efe0e8df4578"}}}],"id":"b7186c69-0a02-4820-bb58-1e2cee5790b3","savedPayload":{"position":{"x":10620.572860595266,"y":19677.44455273868},"targetPosition":{"x":10749.814619262712,"y":19445.02155215359},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 33","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"a8183072-9dc8-4f7c-b72b-742477e4c8fd","savedPayload":{"position":{"x":10301.904623608427,"y":19922.331478246713},"targetPosition":{"x":10373.715970417163,"y":19809.361511352647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"98a87528-cb66-4e15-a3b0-aadb8d25fcec","savedPayload":{"position":{"x":10373.715970417163,"y":19809.361511352647},"targetPosition":{"x":10532.351714167127,"y":19598.07960388478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 33 End","id":"242e470b-2971-40b2-9f06-a95bf95e23fc","savedPayload":{"position":{"x":10304.156223189637,"y":19744.830768656924},"targetPosition":{"x":10532.351714167127,"y":19598.07960388478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 33 End","id":"ce242fe6-2b52-4b89-a203-ce398b3545fd"}}},{"type":"Polygon Vertex","name":"SMA 33 Begin","id":"106e4253-deab-440c-828a-ea55aea78c97","savedPayload":{"position":{"x":10284.588883339891,"y":19686.132765879553},"targetPosition":{"x":10532.351714167127,"y":19598.07960388478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 33 Begin","id":"2734c9f2-1347-4b5b-8dbf-f7f42eb2c810"}}}],"id":"53f19bad-dcb0-476f-8b32-0d332d1ad130","savedPayload":{"position":{"x":10532.351714167127,"y":19598.07960388478},"targetPosition":{"x":10749.814619262712,"y":19445.02155215359},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 55","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"ea853676-6bdc-4723-a515-1a4c683fa1fa","savedPayload":{"position":{"x":10139.1908108849,"y":19680.158864245077},"targetPosition":{"x":10252.929062523372,"y":19609.59959768183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"1fd3b244-b5ae-4a96-add5-50b228eac931","savedPayload":{"position":{"x":10252.929062523372,"y":19609.59959768183},"targetPosition":{"x":10487.40328897588,"y":19488.245714148055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 55 End","id":"c0102a15-8594-4582-9714-75e555e3f2ac","savedPayload":{"position":{"x":10217.998246864418,"y":19521.429695929008},"targetPosition":{"x":10487.40328897588,"y":19488.245714148055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 55 End","id":"d2e58c59-c5d7-4b42-bb66-f012da23c12a"}}},{"type":"Polygon Vertex","name":"SMA 55 Begin","id":"aa781190-aa71-4407-bc72-db67ffd67c7e","savedPayload":{"position":{"x":10225.92833492984,"y":19460.059613494897},"targetPosition":{"x":10487.40328897588,"y":19488.245714148055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 55 Begin","id":"bdc5f0cf-2c2f-466c-963b-19d81a13b532"}}}],"id":"8341d899-4df1-47f8-8e0d-bb87b76ed622","savedPayload":{"position":{"x":10487.40328897588,"y":19488.245714148055},"targetPosition":{"x":10749.814619262712,"y":19445.02155215359},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 111","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"85056d46-5dd2-4dc2-9c40-55ef936aeea8","savedPayload":{"position":{"x":10098.230670207258,"y":19391.5669366544},"targetPosition":{"x":10231.196436227687,"y":19377.416314641083},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"bd5b197d-7425-461d-a2ab-5ad6446d00ee","savedPayload":{"position":{"x":10231.196436227687,"y":19377.416314641083},"targetPosition":{"x":10494.76064995173,"y":19369.705426474742},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 11 End","id":"fbd2d02d-d58e-4d04-a5a6-9bbc6e877244","savedPayload":{"position":{"x":10237.515447759475,"y":19282.75668512145},"targetPosition":{"x":10494.76064995173,"y":19369.705426474742},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 11 End","id":"bdee0fe7-c635-483d-b547-6271410cc35a"}}},{"type":"Polygon Vertex","name":"SMA 111 Begin","id":"e79d988b-7d4a-4201-839a-a95f99dc26fe","savedPayload":{"position":{"x":10291.03660811942,"y":19197.114963592077},"targetPosition":{"x":10494.76064995173,"y":19369.705426474742},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 111 Begin","id":"62ed1060-3233-4175-a4cc-8ad04a123105"}}}],"id":"5745a180-5f94-4109-b8e5-41b2c21e9f1a","savedPayload":{"position":{"x":10494.76064995173,"y":19369.705426474742},"targetPosition":{"x":10749.814619262712,"y":19445.02155215359},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"ade8af76-e9e6-4dda-8921-c3c5cc8a0ecc","savedPayload":{"position":{"x":10749.814619262712,"y":19445.02155215359},"targetPosition":{"x":11104.624128837446,"y":19050.832332670954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"SMA Base 11","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"SMA 11","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma11","id":"bce6e5ba-e93b-4c0f-9013-db467727e721","savedPayload":{"position":{"x":9728.30738730596,"y":19153.768357697303},"targetPosition":{"x":9906.448684713376,"y":18956.25946393559},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f4794965-6a35-4289-9e0e-718b931028de","savedPayload":{"position":{"x":9906.448684713376,"y":18956.25946393559},"targetPosition":{"x":10084.37246443302,"y":18758.666886415132},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 22","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma22","id":"e8837d50-025b-4bbc-8199-328df7afbdda","savedPayload":{"position":{"x":9578.208869722332,"y":18922.831389314677},"targetPosition":{"x":9831.329692415036,"y":18840.75877996038},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2b4712d6-5952-4bd0-bcac-7d396d95f842","savedPayload":{"position":{"x":9831.329692415036,"y":18840.75877996038},"targetPosition":{"x":10084.37246443302,"y":18758.666886415132},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 33","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma33","id":"825bc681-cb31-4d26-85af-4f692538fc9d","savedPayload":{"position":{"x":9563.799574017024,"y":18648.240566944605},"targetPosition":{"x":9824.120513499221,"y":18703.444019671493},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"377ff3cb-9d7b-45aa-a2c1-3cabf3540c8e","savedPayload":{"position":{"x":9824.120513499221,"y":18703.444019671493},"targetPosition":{"x":10084.37246443302,"y":18758.666886415132},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 55","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma55","id":"24c4a804-6686-43ab-a664-db08d860034c","savedPayload":{"position":{"x":9688.889243546653,"y":18402.873835829345},"targetPosition":{"x":9886.68486428209,"y":18580.74554521545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4b0485d9-4d37-4402-939b-eb878c6750ec","savedPayload":{"position":{"x":9886.68486428209,"y":18580.74554521545},"targetPosition":{"x":10084.37246443302,"y":18758.666886415132},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 111","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma111","id":"3d21e771-7edd-4460-aa23-da3c7880a629","savedPayload":{"position":{"x":9920.063195427034,"y":18253.05417987782},"targetPosition":{"x":10002.354229732156,"y":18505.79173901376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"738b01bd-a4da-4f90-a816-c021eeb81030","savedPayload":{"position":{"x":10002.354229732156,"y":18505.79173901376},"targetPosition":{"x":10084.37246443302,"y":18758.666886415132},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fc702308-8514-4e8d-85d3-5d052aad782c","savedPayload":{"position":{"x":10084.37246443302,"y":18758.666886415132},"targetPosition":{"x":11104.624128837446,"y":19050.832332670954},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4a61ac35-a1ae-40f4-b3da-f81ae796ee00","savedPayload":{"position":{"x":11904.443179791928,"y":19010.691652532943},"targetPosition":{"x":12424.206554116216,"y":18710.734611771542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"SMA Base 7","config":"{\n\t\"codeName\": \"SMA-Base7\",\n \"icon\": \"moving-average\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"SMA 7 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma7","id":"b459dee1-24d0-4794-9c4d-d9c58972f6e6","savedPayload":{"position":{"x":9961.938331378236,"y":20209.48193233988},"targetPosition":{"x":10312.908978161888,"y":20607.87179398911},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8d6e2d59-fe23-4ba5-ad87-d9d15ad60340","savedPayload":{"position":{"x":10312.908978161888,"y":20607.87179398911},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 7 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma7","id":"3994ef79-ab0b-4552-bbde-f754a86f2e04","savedPayload":{"position":{"x":10203.309457680914,"y":20049.71716457022},"targetPosition":{"x":10433.634953530202,"y":20527.888864727585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a95fee99-4a06-44d7-a6c4-0eea9ccec4d9","savedPayload":{"position":{"x":10433.634953530202,"y":20527.888864727585},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 14 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma14","id":"40d386cb-84a9-49b0-b28e-3d39e9e274cb","savedPayload":{"position":{"x":10478.903762129603,"y":19960.931113655974},"targetPosition":{"x":10571.408608543667,"y":20483.467623451368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c6d631e7-8cd0-4ccd-b7b4-90b8dda615d8","savedPayload":{"position":{"x":10571.408608543667,"y":20483.467623451368},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 21 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma21","id":"6d2cd604-9a38-4ab7-b19d-9e9e3ae8ad25","savedPayload":{"position":{"x":10767.723261823243,"y":19949.59830781004},"targetPosition":{"x":10715.84601415742,"y":20477.849681686595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4f1044fa-67dd-42dc-ba74-61e299e1f1e1","savedPayload":{"position":{"x":10715.84601415742,"y":20477.849681686595},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 21 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma21","id":"1de80488-5eeb-491c-bd5f-e5bd7569dc59","savedPayload":{"position":{"x":11049.178283722611,"y":20016.74057405776},"targetPosition":{"x":10856.6165418853,"y":20511.46010114233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"df7e58c1-c042-443b-bfd3-69d57894d358","savedPayload":{"position":{"x":10856.6165418853,"y":20511.46010114233},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 28 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma28","id":"93b50d69-b003-4590-b098-ff59dc226e22","savedPayload":{"position":{"x":11302.049186621976,"y":20157.355627851925},"targetPosition":{"x":10983.091049549455,"y":20581.793668550778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7bd742dd-7c4c-4dfe-9415-e655a5e1cc88","savedPayload":{"position":{"x":10983.091049549455,"y":20581.793668550778},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 28 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma28","id":"36ddca01-d7c2-44e4-bac6-1efd92721b56","savedPayload":{"position":{"x":11507.59501294745,"y":20361.01108594181},"targetPosition":{"x":11085.891143194547,"y":20683.647052279375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7678774b-b068-4757-962b-8e126342898a","savedPayload":{"position":{"x":11085.891143194547,"y":20683.647052279375},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 35 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma35","id":"e631b84b-646b-41f7-b87b-7cb4fbf8ac76","savedPayload":{"position":{"x":11650.562499236954,"y":20612.58044138436},"targetPosition":{"x":11157.385676871994,"y":20809.45771101852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"93613bd9-2dbb-493c-a72e-414b0398733e","savedPayload":{"position":{"x":11157.385676871994,"y":20809.45771101852},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 35 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma35","id":"89e3900f-eeaf-47cb-97f6-9093b2f39811","savedPayload":{"position":{"x":11720.362527176303,"y":20893.405770631245},"targetPosition":{"x":11192.29407002208,"y":20949.900980163144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f620fdbe-48b5-4831-995d-b3c721738d1b","savedPayload":{"position":{"x":11192.29407002208,"y":20949.900980163144},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 70 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma70","id":"cacaceaf-b19d-4b2a-81b3-5ac6b44877b7","savedPayload":{"position":{"x":11711.807255205878,"y":21182.243272905278},"targetPosition":{"x":11188.017030729387,"y":21094.346012254064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9e506a85-5f72-4a3f-a773-cd85d8b15f21","savedPayload":{"position":{"x":11188.01003576402,"y":21094.342287588654},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 70 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma70","id":"8658d660-52c4-41f8-b423-db569ff19941","savedPayload":{"position":{"x":11625.512959818205,"y":21458.44698412378},"targetPosition":{"x":11144.861376500538,"y":21232.474162531234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8392e1ff-33a6-4b95-baad-3f146bd3c121","savedPayload":{"position":{"x":11144.865284521942,"y":21232.480993004785},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 140 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma140","id":"a56e674e-ec4f-4448-a8bc-bfbc3a02eea4","savedPayload":{"position":{"x":11467.891825588913,"y":21701.134850946015},"targetPosition":{"x":11066.034273094718,"y":21353.840591500688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"39e65adb-6125-4e9a-8f15-5403b21aac40","savedPayload":{"position":{"x":11066.04648133843,"y":21353.842949445538},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 140 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma140","id":"9aeb4594-c7e0-41e1-83b3-8df31b0d44b0","savedPayload":{"position":{"x":11250.6486811831,"y":21892.31049041636},"targetPosition":{"x":10957.397888202506,"y":21449.45215272121},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7559cbf5-acba-4a60-91b4-d95f90293f22","savedPayload":{"position":{"x":10957.39040372368,"y":21449.4584862964},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 210 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma210","id":"8856ee41-b264-4468-9dac-eb808b483df3","savedPayload":{"position":{"x":10989.852857645508,"y":22017.76816698824},"targetPosition":{"x":10826.974203599419,"y":21512.199087635116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"479df802-576f-45f1-8322-6b2e493c5ecc","savedPayload":{"position":{"x":10826.986601686769,"y":21512.19863005761},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 210 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma210","id":"f4fa8a22-fe87-4174-bf51-cb574381ca0d","savedPayload":{"position":{"x":10704.88947644408,"y":22068.22319280227},"targetPosition":{"x":10684.463980444403,"y":21537.429514079813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"45a926f2-4bb2-4562-b40f-bd2532ff1d10","savedPayload":{"position":{"x":10684.467467599357,"y":21537.41821058638},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 280 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma280","id":"49f183b2-f8d1-4055-947d-291b7787d846","savedPayload":{"position":{"x":10417.285018775483,"y":22039.940562589796},"targetPosition":{"x":10540.634122098623,"y":21523.28774644531},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d5e455bf-bb27-41fa-ba41-c8e7d0aa4d5e","savedPayload":{"position":{"x":10540.64514244046,"y":21523.29017413021},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 280 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma280","id":"012f6580-f9e9-47f6-b6f4-82598b8e8aa7","savedPayload":{"position":{"x":10147.575278938364,"y":21935.00722474303},"targetPosition":{"x":10405.75555613149,"y":21470.804623034193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"298d0ca9-1b4a-48d8-8efe-fda6b2fc2c34","savedPayload":{"position":{"x":10405.769206207418,"y":21470.808474019024},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 350 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma350","id":"4a3f6588-26e3-446b-ac4e-54ad3bc9ef3c","savedPayload":{"position":{"x":9916.184767882305,"y":21761.20025403292},"targetPosition":{"x":10290.041468479785,"y":21383.88524423005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f3c05d30-da2e-449e-8471-dcc216f4e630","savedPayload":{"position":{"x":10290.05563614024,"y":21383.883592878396},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 350 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma350","id":"1157762f-1236-43b1-a399-06d59a992d55","savedPayload":{"position":{"x":9740.276432641922,"y":21531.411878469913},"targetPosition":{"x":10202.077541677916,"y":21268.967506811314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d6598381-9b15-4cb3-afba-b85ed6770ce3","savedPayload":{"position":{"x":10202.082023452977,"y":21268.955400921834},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"New Point","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.propertyA","id":"24151ce9-3ecb-4c6b-97e5-41a8a95b45a8","savedPayload":{"position":{"x":9632.886470834843,"y":21262.673695576545},"targetPosition":{"x":10148.37510133174,"y":21134.565811715707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"30f77a0a-81fd-4498-8510-cfca20b6b1d8","savedPayload":{"position":{"x":10148.372208398561,"y":21134.572515370044},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"New Point","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.propertyA","id":"0da81a21-3169-44c7-a896-17eb32bdfa17","savedPayload":{"position":{"x":9601.984499905424,"y":20975.33752365935},"targetPosition":{"x":10132.92659659292,"y":20990.85977306084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6fd2e88e-f5e1-45d5-8baf-4bc724bf2bae","savedPayload":{"position":{"x":10132.92659659292,"y":20990.85977306084},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 14 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma14","id":"78e7fbfb-c210-44b6-8399-1567f81c73c9","savedPayload":{"position":{"x":9649.901690508634,"y":20689.855115806393},"targetPosition":{"x":10156.907664081727,"y":20848.04770951942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d5f823d6-8b99-44b5-99dc-04724a531323","savedPayload":{"position":{"x":10156.907664081727,"y":20848.04770951942},"targetPosition":{"x":10664.040484450454,"y":21006.416346684095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e561ee2d-8458-4001-8904-61cd2a3a815e","savedPayload":{"position":{"x":10664.040484450454,"y":21006.416346684095},"targetPosition":{"x":10700.222264305385,"y":18888.0270830937},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"SMA 7","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"38522e0c-85c4-49ae-93ac-9a04470855e0","savedPayload":{"position":{"x":10289.924023731242,"y":19718.78844837654},"targetPosition":{"x":10339.077312275671,"y":19594.79744934367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"fcc0c4b0-28ea-4482-8da8-16a0c88c1e52","savedPayload":{"position":{"x":10339.077312275671,"y":19594.79744934367},"targetPosition":{"x":10411.49609446588,"y":19334.221567010358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 7 End","id":"f11dbba2-2bd3-4d0a-a182-2ef78a492d32","savedPayload":{"position":{"x":10264.115781686012,"y":19574.140988725434},"targetPosition":{"x":10411.49609446588,"y":19334.221567010358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 7 End","id":"a95fee99-4a06-44d7-a6c4-0eea9ccec4d9"}}},{"type":"Polygon Vertex","name":"SMA 7 Begin","id":"c50700bc-305d-4cb6-b1bf-1c03c7459d2b","savedPayload":{"position":{"x":10216.161250442916,"y":19503.92615371174},"targetPosition":{"x":10411.49609446588,"y":19334.221567010358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 7 Begin","id":"8d6e2d59-fe23-4ba5-ad87-d9d15ad60340"}}}],"id":"62ad882d-f16d-4476-8c17-0f6e2d6e2b76","savedPayload":{"position":{"x":10411.49609446588,"y":19334.221567010358},"targetPosition":{"x":10700.222264305385,"y":18888.0270830937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 14","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"14a21030-fa6b-44ef-8cb2-e4f3cb79126e","savedPayload":{"position":{"x":10074.856149478519,"y":19578.503824856853},"targetPosition":{"x":10154.843700573407,"y":19471.316182489863},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"ca2fa8f2-f6a1-4084-8606-a35495dfd596","savedPayload":{"position":{"x":10154.843700573407,"y":19471.316182489863},"targetPosition":{"x":10305.563679180172,"y":19243.928986815998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 14 Begin","id":"e7d170e8-3d4f-4a55-883a-3a3394fef2af","savedPayload":{"position":{"x":10101.829587263835,"y":19435.005216303114},"targetPosition":{"x":10305.563679180172,"y":19243.928986815998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 14 Begin","id":"d5f823d6-8b99-44b5-99dc-04724a531323"}}},{"type":"Polygon Vertex","name":"SMA 14 End","id":"2383789a-4600-4b8b-a49b-51cbeb46d4f1","savedPayload":{"position":{"x":10071.69832821408,"y":19356.99815480937},"targetPosition":{"x":10305.563679180172,"y":19243.928986815998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 14 End","id":"c6d631e7-8cd0-4ccd-b7b4-90b8dda615d8"}}}],"id":"ab179cef-53c3-46f7-a83b-af29ccd8bc90","savedPayload":{"position":{"x":10305.563679180172,"y":19243.928986815998},"targetPosition":{"x":10700.222264305385,"y":18888.0270830937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 21","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"f8f0733e-0890-4d54-8d77-1b1fc8b8c92b","savedPayload":{"position":{"x":9916.472102330465,"y":19392.519732407916},"targetPosition":{"x":10021.646123555658,"y":19309.703324171696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"a0f2de63-1abd-4945-9c8c-84e21fd121e0","savedPayload":{"position":{"x":10021.646123555658,"y":19309.703324171696},"targetPosition":{"x":10226.796970278016,"y":19129.481421401593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 21 End","id":"69c3f249-07bf-4a03-b8a1-9d74d0255f23","savedPayload":{"position":{"x":9980.043473674517,"y":19261.007998418063},"targetPosition":{"x":10226.796970278016,"y":19129.481421401593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 21 End","id":"df7e58c1-c042-443b-bfd3-69d57894d358"}}},{"type":"Polygon Vertex","name":"SMA 21 Begin","id":"959961b9-9bf9-48ce-9ee0-08d2d6a62b8e","savedPayload":{"position":{"x":9971.933475030188,"y":19177.86038679286},"targetPosition":{"x":10226.796970278016,"y":19129.481421401593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 21 Begin","id":"4f1044fa-67dd-42dc-ba74-61e299e1f1e1"}}}],"id":"9a17429f-8213-4a7e-8167-dc36d761973e","savedPayload":{"position":{"x":10226.796970278016,"y":19129.481421401593},"targetPosition":{"x":10700.222264305385,"y":18888.0270830937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 28","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"713c60e9-ee11-4551-ab62-58ce9c16e066","savedPayload":{"position":{"x":9812.039002405605,"y":19172.27855876475},"targetPosition":{"x":9935.122720630823,"y":19119.556407333897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"725a4d2f-0838-4d78-a8fa-a2b129feda2f","savedPayload":{"position":{"x":9935.122720630823,"y":19119.556407333897},"targetPosition":{"x":10180.362548175026,"y":18998.58915368689},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 28 Begin","id":"f4c161f4-6510-47a2-97f7-3f9f848d9892","savedPayload":{"position":{"x":9908.025943369588,"y":19061.685192946632},"targetPosition":{"x":10180.362548175026,"y":18998.58915368689},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 28 Begin","id":"7bd742dd-7c4c-4dfe-9415-e655a5e1cc88"}}},{"type":"Polygon Vertex","name":"SMA 28 End","id":"b1b22a6f-0a69-401f-90ea-2306baee0ea2","savedPayload":{"position":{"x":9921.542262817815,"y":18979.430345718498},"targetPosition":{"x":10180.362548175026,"y":18998.58915368689},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 28 End","id":"7678774b-b068-4757-962b-8e126342898a"}}}],"id":"4f6e0c60-00a8-4a76-b1b1-4eaa25c5824c","savedPayload":{"position":{"x":10180.362548175026,"y":18998.58915368689},"targetPosition":{"x":10700.222264305385,"y":18888.0270830937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 35","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"73f591c5-286b-4441-aa59-f647f738e40e","savedPayload":{"position":{"x":9637.200211316258,"y":18951.75249723331},"targetPosition":{"x":9900.905799622617,"y":18913.635300710986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"2c56cb10-43c9-447b-8b8a-30dae8e7fab8","savedPayload":{"position":{"x":9900.905799622617,"y":18913.635300710986},"targetPosition":{"x":10169.44808288467,"y":18860.35841173567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 35 End","id":"3ad24108-1339-4c6d-abc6-27a9aa5bc046","savedPayload":{"position":{"x":9890.324185323354,"y":18850.867993557367},"targetPosition":{"x":10169.44808288467,"y":18860.35841173567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 35 End","id":"f620fdbe-48b5-4831-995d-b3c721738d1b"}}},{"type":"Polygon Vertex","name":"SMA 35 Begin","id":"abfdefe3-b9d4-4816-b2cc-7aa64bb69734","savedPayload":{"position":{"x":9924.174092698775,"y":18774.748645245993},"targetPosition":{"x":10169.44808288467,"y":18860.35841173567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 35 Begin","id":"93613bd9-2dbb-493c-a72e-414b0398733e"}}}],"id":"a8a09eca-7bee-4f17-b7db-1f43f419441c","savedPayload":{"position":{"x":10169.44808288467,"y":18860.35841173567},"targetPosition":{"x":10700.222264305385,"y":18888.0270830937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 70","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"9ac33f9d-bce7-407a-8de9-3334bb263b69","savedPayload":{"position":{"x":9657.181322753973,"y":18674.690225965536},"targetPosition":{"x":9921.763450753066,"y":18705.930936789948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"ea184e1f-5a0f-4ed3-b3ed-6ba18e7237f9","savedPayload":{"position":{"x":9921.763450753066,"y":18705.930936789948},"targetPosition":{"x":10194.735249503445,"y":18723.878795708064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 70 Begin","id":"5505dd50-5ad7-48fc-9256-14cab581d92f","savedPayload":{"position":{"x":9927.600601400447,"y":18642.523637335282},"targetPosition":{"x":10194.735249503445,"y":18723.878795708064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 70 Begin","id":"9e506a85-5f72-4a3f-a773-cd85d8b15f21"}}},{"type":"Polygon Vertex","name":"SMA 70 End","id":"b255b251-b73a-469c-a41f-e273d2909af2","savedPayload":{"position":{"x":9979.911504314909,"y":18577.67157736404},"targetPosition":{"x":10194.735249503445,"y":18723.878795708064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 70 End","id":"8392e1ff-33a6-4b95-baad-3f146bd3c121"}}}],"id":"31cf093b-6de4-4e4a-a8f4-f3ff989dd374","savedPayload":{"position":{"x":10194.735249503445,"y":18723.878795708064},"targetPosition":{"x":10700.222264305385,"y":18888.0270830937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 140","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.PATINATED_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"e9088da2-eb17-4e48-9fba-5bd00fba6a2b","savedPayload":{"position":{"x":9748.336241845374,"y":18412.11855411127},"targetPosition":{"x":9995.76119446138,"y":18510.737426426906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"b93ae9ca-6c4e-47db-a998-045e845ab9cd","savedPayload":{"position":{"x":9995.76119446138,"y":18510.737426426906},"targetPosition":{"x":10254.54761969282,"y":18598.578058957475},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 140 Begin","id":"e1bdea5b-664c-4146-adf6-858405354f8c","savedPayload":{"position":{"x":10017.521847336264,"y":18450.773408842324},"targetPosition":{"x":10254.54761969282,"y":18598.578058957475},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 140 Begin","id":"39e65adb-6125-4e9a-8f15-5403b21aac40"}}},{"type":"Polygon Vertex","name":"SMA 140 End","id":"3d994072-d0b7-4065-a8be-3c718de28086","savedPayload":{"position":{"x":10085.043467783975,"y":18401.80377604246},"targetPosition":{"x":10254.54761969282,"y":18598.578058957475},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 140 End","id":"7559cbf5-acba-4a60-91b4-d95f90293f22"}}}],"id":"41a149aa-efdf-4f53-82cf-cce9e904a000","savedPayload":{"position":{"x":10254.54761969282,"y":18598.578058957475},"targetPosition":{"x":10700.222264305385,"y":18888.0270830937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 210","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"08949257-633e-4013-b770-bbb798972d2d","savedPayload":{"position":{"x":9904.288707082525,"y":18182.034690135093},"targetPosition":{"x":10117.651515786018,"y":18341.22446523032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"53e088d8-8ec5-4dbe-b732-c65f31005105","savedPayload":{"position":{"x":10117.651515786018,"y":18341.22446523032},"targetPosition":{"x":10344.785182178593,"y":18492.98625633458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 210 Begin","id":"15882e16-4782-48e8-9cac-fbb1d07ae51d","savedPayload":{"position":{"x":10154.168308629947,"y":18288.909454043325},"targetPosition":{"x":10344.785182178593,"y":18492.98625633458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 210 Begin","id":"479df802-576f-45f1-8322-6b2e493c5ecc"}}},{"type":"Polygon Vertex","name":"SMA 210 End","id":"a6f51174-ea46-4282-a476-4e809f456682","savedPayload":{"position":{"x":10232.10427234063,"y":18259.018786403358},"targetPosition":{"x":10344.785182178593,"y":18492.98625633458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 210 End","id":"45a926f2-4bb2-4562-b40f-bd2532ff1d10"}}}],"id":"c3ee15c5-a5b3-4318-bc09-a9fd03592d83","savedPayload":{"position":{"x":10344.785182178593,"y":18492.98625633458},"targetPosition":{"x":10700.222264305385,"y":18888.0270830937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 280","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"942d9600-7935-4ca6-81d8-9bd014df736f","savedPayload":{"position":{"x":10114.82573678089,"y":18000.115302466253},"targetPosition":{"x":10279.367464614383,"y":18209.049898809873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"1c6e0c3f-8ac7-4b0b-9da8-0f7faf9befd1","savedPayload":{"position":{"x":10279.367464614383,"y":18209.049898809873},"targetPosition":{"x":10459.360226873649,"y":18414.334514276627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 280 Begin","id":"cc54382b-cf2b-42c7-8958-8816809dd7ba","savedPayload":{"position":{"x":10328.065625293051,"y":18167.51336811247},"targetPosition":{"x":10459.360226873649,"y":18414.334514276627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 280 Begin","id":"d5e455bf-bb27-41fa-ba41-c8e7d0aa4d5e"}}},{"type":"Polygon Vertex","name":"SMA 280 End","id":"3629786a-8eed-4cff-9780-0e685aeed577","savedPayload":{"position":{"x":10411.3916324197,"y":18159.573913953518},"targetPosition":{"x":10459.360226873649,"y":18414.334514276627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 280 End","id":"298d0ca9-1b4a-48d8-8efe-fda6b2fc2c34"}}}],"id":"3bbf5574-e89c-4538-a95c-2da58e5a74d7","savedPayload":{"position":{"x":10459.360226873649,"y":18414.334514276627},"targetPosition":{"x":10700.222264305385,"y":18888.0270830937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 350","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.BLACK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"8142bd21-31e4-4edd-97d5-217e30321e0a","savedPayload":{"position":{"x":10365.052900737488,"y":17878.333212489364},"targetPosition":{"x":10469.768982222407,"y":18122.858201840594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6eade211-19cf-48a7-87ac-faf30e387e10","savedPayload":{"position":{"x":10469.768982222407,"y":18122.858201840594},"targetPosition":{"x":10590.5873883291,"y":18367.991007224307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 350 End","id":"f16d8eac-9e78-4167-b087-9803637412a6","savedPayload":{"position":{"x":10522.732369538791,"y":18094.26917737883},"targetPosition":{"x":10590.5873883291,"y":18367.991007224307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 350 End","id":"d6598381-9b15-4cb3-afba-b85ed6770ce3"}}},{"type":"Polygon Vertex","name":"SMA 350 Begin","id":"b94a339d-5abf-4563-a693-edb5d812c24e","savedPayload":{"position":{"x":10633.168464914737,"y":18107.42988236712},"targetPosition":{"x":10590.5873883291,"y":18367.991007224307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 350 Begin","id":"f3c05d30-da2e-449e-8471-dcc216f4e630"}}}],"id":"046240f2-f70b-471d-b07b-0e7490222f0d","savedPayload":{"position":{"x":10590.5873883291,"y":18367.991007224307},"targetPosition":{"x":10700.222264305385,"y":18888.0270830937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"391b803a-4b4e-4c0b-bb6b-b4d68e989c9c","savedPayload":{"position":{"x":10700.222264305385,"y":18888.0270830937},"targetPosition":{"x":11104.927063717978,"y":18394.24364826131},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"SMA Base 7","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"SMA 7","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma7","id":"1c683838-c882-49bd-997a-2f4255347854","savedPayload":{"position":{"x":9969.24646150106,"y":17943.513035284126},"targetPosition":{"x":9926.886497689387,"y":17681.63181044258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c26c14bd-b9ab-4121-89b2-eb3044534cf2","savedPayload":{"position":{"x":9926.886497689387,"y":17681.63181044258},"targetPosition":{"x":9884.160240869833,"y":17419.44139796691},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 14","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma14","id":"1060ea54-bb29-4c3b-8db0-522893543a36","savedPayload":{"position":{"x":9672.077200371385,"y":17906.91613922136},"targetPosition":{"x":9778.171101887418,"y":17663.234478095925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"94b29f18-cad5-49df-8b87-d6ef10f5ae61","savedPayload":{"position":{"x":9778.171101887418,"y":17663.234478095925},"targetPosition":{"x":9884.160240869833,"y":17419.44139796691},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 21","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma21","id":"c0287e9c-4b88-4b92-b6ac-f17474649958","savedPayload":{"position":{"x":9441.835195746096,"y":17715.06492476221},"targetPosition":{"x":9662.99051276551,"y":17567.260408882958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ffcb7173-b2bf-4d5d-90e5-6f8b26af4b86","savedPayload":{"position":{"x":9662.99051276551,"y":17567.260408882958},"targetPosition":{"x":9884.160240869833,"y":17419.44139796691},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 28","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma28","id":"9f1615e0-e437-4221-8e9a-a6dcb4556022","savedPayload":{"position":{"x":9351.94607680628,"y":17429.051765261072},"targetPosition":{"x":9618.019044983937,"y":17424.229338175894},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"186d8c1a-5eef-44a1-aa09-b28e4f5b6b0e","savedPayload":{"position":{"x":9618.019044983937,"y":17424.229338175894},"targetPosition":{"x":9884.160240869833,"y":17419.44139796691},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 35","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma35","id":"423f3069-d5a3-4d29-bb35-68802f367c50","savedPayload":{"position":{"x":9430.981529039795,"y":17140.178250828718},"targetPosition":{"x":9657.533550518796,"y":17279.778004640833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6b047d8e-451d-4267-adc4-6e9496aa0025","savedPayload":{"position":{"x":9657.533550518796,"y":17279.778004640833},"targetPosition":{"x":9884.160240869833,"y":17419.44139796691},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 70","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma70","id":"62ed074e-5b1a-4306-b411-cd436680147d","savedPayload":{"position":{"x":9653.87508688327,"y":16939.500225994543},"targetPosition":{"x":9768.996924651778,"y":17179.424131780106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9676685c-f20e-4d65-a0fe-8551e80132ee","savedPayload":{"position":{"x":9768.996924651778,"y":17179.424131780106},"targetPosition":{"x":9884.160240869833,"y":17419.44139796691},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 140","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma140","id":"2200abd2-2897-4eff-9804-f599c0e18f42","savedPayload":{"position":{"x":9949.454797776607,"y":16891.157139261075},"targetPosition":{"x":9916.807825648279,"y":17155.253085836594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a44d3c89-8463-4493-b195-70ee4146bbdb","savedPayload":{"position":{"x":9916.807825648279,"y":17155.253085836594},"targetPosition":{"x":9884.160240869833,"y":17419.44139796691},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 210","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma210","id":"38e3066f-1951-4c96-8a36-3bcf778328bd","savedPayload":{"position":{"x":10224.542601324209,"y":17010.49657580431},"targetPosition":{"x":10054.373129303718,"y":17214.93920072093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"44198c4d-4d98-43a2-9c03-2d8794b9edac","savedPayload":{"position":{"x":10054.373129303718,"y":17214.93920072093},"targetPosition":{"x":9884.160240869833,"y":17419.44139796691},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 280","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma280","id":"eca55243-4492-4983-9e03-04694437c8ae","savedPayload":{"position":{"x":10391.414096271632,"y":17259.612804224},"targetPosition":{"x":10137.818732589223,"y":17339.524233307595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96706885-fa55-4fad-82bd-fb43a2f331d7","savedPayload":{"position":{"x":10137.818732589223,"y":17339.524233307595},"targetPosition":{"x":9884.160240869833,"y":17419.44139796691},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 350","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma350","id":"64ea1867-2fb1-4191-a4c7-b5ac37f7be7a","savedPayload":{"position":{"x":10397.02721782891,"y":17558.96599112552},"targetPosition":{"x":10140.601168133837,"y":17489.307921027594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9f208b33-3d80-4d2e-ad88-13139a8e93f8","savedPayload":{"position":{"x":10140.601168133837,"y":17489.307921027594},"targetPosition":{"x":9884.160240869833,"y":17419.44139796691},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b73ac725-eea1-4aa2-974c-937de300b456","savedPayload":{"position":{"x":9884.160240869833,"y":17419.44139796691},"targetPosition":{"x":11104.927063717978,"y":18394.24364826131},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"515565ff-dee2-4adf-adaf-b4cfea5f5dbd","savedPayload":{"position":{"x":11824.15247437407,"y":18710.822750173273},"targetPosition":{"x":12424.206554116216,"y":18710.734611771542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"SMA Base 6","config":"{\n\t\"codeName\": \"SMA-Base6\",\n \"icon\": \"moving-average\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"SMA 6 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma6","id":"28dce892-9996-45ac-af68-55d0056b6af2","savedPayload":{"position":{"x":10822.406260298632,"y":18073.895505906192},"targetPosition":{"x":10520.998850986582,"y":18810.586334771204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dece94e6-77de-4d21-9376-c2efc825b567","savedPayload":{"position":{"x":10520.998850986582,"y":18810.586334771204},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 6 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma6","id":"f878b59a-0787-4c44-a341-02db47b15aad","savedPayload":{"position":{"x":11170.033164428185,"y":18269.612328287385},"targetPosition":{"x":10694.752847723792,"y":18908.698881663695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"32025fb3-9ec4-4f50-b4c9-9a73100ce864","savedPayload":{"position":{"x":10694.752847723792,"y":18908.698881663695},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 12 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma12","id":"d3c24df7-68df-4d50-92d6-9f722ee8816a","savedPayload":{"position":{"x":11457.41898685328,"y":18546.635228276096},"targetPosition":{"x":10838.554220435182,"y":19046.960640658363},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8662f4a4-41a4-4992-a333-017cd8764cd1","savedPayload":{"position":{"x":10838.554220435182,"y":19046.960640658363},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 18 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma18","id":"fc0e1a4a-8966-4340-83bc-2c43992486ed","savedPayload":{"position":{"x":11667.318636236132,"y":18886.23060713431},"targetPosition":{"x":10943.575441744271,"y":19216.813433289593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3260182a-83b5-4362-8962-84ec488b69cb","savedPayload":{"position":{"x":10943.575441744271,"y":19216.813433289593},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 18 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma18","id":"53ce5612-9c75-4a89-98cd-7dd278f67df3","savedPayload":{"position":{"x":11786.511457814891,"y":19267.17430488821},"targetPosition":{"x":11003.22436859903,"y":19407.215506861463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"942b73d2-241e-43dd-b83b-0d3724f331a4","savedPayload":{"position":{"x":11003.22436859903,"y":19407.215506861463},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 24 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma24","id":"9c2d5563-016b-40e7-a45f-973a874ee6e3","savedPayload":{"position":{"x":11807.13773613571,"y":19665.266271901786},"targetPosition":{"x":11013.523527965446,"y":19606.260950051943},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c0b2d03c-3cec-4ca2-b344-cdd99cb28362","savedPayload":{"position":{"x":11013.523527965446,"y":19606.260950051943},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 24 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma24","id":"3b3a0b5b-0290-47a3-8bef-d5b289e4f7b6","savedPayload":{"position":{"x":11727.982783979578,"y":20056.372975659222},"targetPosition":{"x":10973.927910162898,"y":19801.832217110183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4b33b779-8111-415c-a1e5-893ed5f49527","savedPayload":{"position":{"x":10973.927910162898,"y":19801.832217110183},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 30 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma30","id":"876a382a-7632-4dcf-b0d5-b36d8df8b92c","savedPayload":{"position":{"x":11554.025571267748,"y":20415.510927314164},"targetPosition":{"x":10886.931944534865,"y":19981.420992681677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fef118ef-22cb-4ff5-b971-c90c2a01265a","savedPayload":{"position":{"x":10886.931944534865,"y":19981.420992681677},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 30 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma30","id":"59c1198f-77ea-4780-b25b-e17b11bd0a0e","savedPayload":{"position":{"x":11296.197370445365,"y":20720.10850950046},"targetPosition":{"x":10758.003901631457,"y":20133.737392562005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8e2f5657-06b0-4e46-aa7e-8676683ffb77","savedPayload":{"position":{"x":10758.003901631457,"y":20133.737392562005},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 60 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma60","id":"deea8750-3324-4bdc-bc4d-7fc9db32ceca","savedPayload":{"position":{"x":10970.706529039026,"y":20951.022745801693},"targetPosition":{"x":10595.246819489044,"y":20249.206915268056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8e7fb950-9b88-4aaf-95a1-982abf35b9f3","savedPayload":{"position":{"x":10595.246819489044,"y":20249.206915268056},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 60 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma60","id":"4c4c6ec2-0ae2-4c37-bf9e-a2753f2b6ac5","savedPayload":{"position":{"x":10598.004499629527,"y":21093.747448109185},"targetPosition":{"x":10408.884802427217,"y":20320.581854750624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"173b07f4-37d0-4831-8d6b-1b989d9e3213","savedPayload":{"position":{"x":10408.884802427217,"y":20320.581854750624},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 120 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma120","id":"4fae8019-4feb-4608-b26e-1b84bfa92eca","savedPayload":{"position":{"x":10201.90475077108,"y":21139.291696731892},"targetPosition":{"x":10210.82572361045,"y":20343.36233717695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2fb358ff-8b9f-4b95-95f8-8be509b5b3a1","savedPayload":{"position":{"x":10210.82572361045,"y":20343.36233717695},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 120 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma120","id":"94a5dfc2-27fa-48e5-8d60-125c185ee02c","savedPayload":{"position":{"x":9703.582936331923,"y":21467.863893051777},"targetPosition":{"x":10013.129039280231,"y":20316.129457026196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"id":"682e079f-319c-43dc-91a2-5732c3fb28c8","savedPayload":{"position":{"x":10013.129039280231,"y":20316.129457026196},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 180 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma180","id":"c2b1772b-a983-4ecd-baec-c3ca0c346515","savedPayload":{"position":{"x":9437.159153920142,"y":20933.7503613839},"targetPosition":{"x":9828.413433277134,"y":20240.59236233591},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5a2a1087-3910-4dd5-90d6-2370dc8949fa","savedPayload":{"position":{"x":9828.413433277134,"y":20240.59236233591},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 180 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma180","id":"b7886b86-1f12-4645-b2fb-ecb4182dbec2","savedPayload":{"position":{"x":9116.905705275438,"y":20695.566050780577},"targetPosition":{"x":9668.273345855332,"y":20121.49914693617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1b5a66be-de8e-40c3-b3f2-e193e5deaeed","savedPayload":{"position":{"x":9668.273345855332,"y":20121.49914693617},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 240 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma240","id":"219f9e45-38cc-4c5f-a396-f7a0788f973e","savedPayload":{"position":{"x":8865.973833459671,"y":20385.262592723182},"targetPosition":{"x":9542.801440792797,"y":19966.353479111076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"854a73e9-f8d2-4b85-a0dd-65284e175ca0","savedPayload":{"position":{"x":9542.801440792797,"y":19966.353479111076},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 240 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma240","id":"57299592-e72a-4e7e-ac7a-e055ac925792","savedPayload":{"position":{"x":8700.070541519724,"y":20022.337109208212},"targetPosition":{"x":9459.831960159065,"y":19784.904102835604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"13eca50c-c1fb-4baa-8618-1f7eafde66c9","savedPayload":{"position":{"x":9459.831960159065,"y":19784.904102835604},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 300 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma300","id":"fc7307b3-aeb1-49c0-bac9-ac2d27ad5d05","savedPayload":{"position":{"x":8618.194366360565,"y":19633.991316242547},"targetPosition":{"x":9413.181201637779,"y":19592.922265039855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"45ae2073-5312-48dc-b4ed-61326a2ce947","savedPayload":{"position":{"x":9413.181201637779,"y":19592.922265039855},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 300 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma300","id":"9754f895-ef8d-4165-ae3b-efd97f52f9ce","savedPayload":{"position":{"x":8659.028238476438,"y":19232.071764660777},"targetPosition":{"x":9439.206840617544,"y":19389.78872279338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"31514c9e-d4f7-4c54-94ca-4e04e5f1df5c","savedPayload":{"position":{"x":9439.206840617544,"y":19389.78872279338},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 12 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma12","id":"cb472a55-eacc-4dec-b337-087a1116e39f","savedPayload":{"position":{"x":8800.895785919993,"y":18832.915478230316},"targetPosition":{"x":9517.514514975095,"y":19179.638954508362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"48fe3ebc-6bbf-4a33-9068-2766eaf1599a","savedPayload":{"position":{"x":9517.514514975095,"y":19179.638954508362},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 600 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma600","id":"a22c9eff-f7ff-4867-ba2e-c123b4036f99","savedPayload":{"position":{"x":9004.577258706866,"y":18519.006584655337},"targetPosition":{"x":9612.099536804913,"y":19033.142508646742},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3ecee44a-2a84-41ac-b579-f6f48acc590a","savedPayload":{"position":{"x":9612.099536804913,"y":19033.142508646742},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 600 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma600","id":"2197c8c8-f750-4adf-a521-b1e4b347663c","savedPayload":{"position":{"x":9290.53001758113,"y":18256.82493433982},"targetPosition":{"x":9751.528473868211,"y":18905.67013133771},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9bd8a9e7-09cf-4989-a9fa-c2f73d361134","savedPayload":{"position":{"x":9751.528473868211,"y":18905.67013133771},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 1200 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma1200","id":"17399e4a-5716-4e7b-9348-995fef5766eb","savedPayload":{"position":{"x":9651.240063938823,"y":18060.459896071086},"targetPosition":{"x":9935.620879146309,"y":18803.69871232929},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0481ec1e-ae49-4c99-a5ad-16c427db6e45","savedPayload":{"position":{"x":9935.620879146309,"y":18803.69871232929},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 1200 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma1200","id":"5df49dd0-4b42-4be0-8493-2d762fa6b9c2","savedPayload":{"position":{"x":10038.419022412609,"y":17965.64209045629},"targetPosition":{"x":10129.284733097773,"y":18756.36913698971},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"eacd5f37-bdf2-4756-b7db-46db919b08a7","savedPayload":{"position":{"x":10129.284733097773,"y":18756.36913698971},"targetPosition":{"x":10219.72972409669,"y":19547.274262557443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ddf91804-9a1f-44db-aea2-11db8bcd6aa1","savedPayload":{"position":{"x":10219.61631345783,"y":19547.319835131897},"targetPosition":{"x":10436.250691487223,"y":17973.61983501151},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"SMA 6","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"34040727-f963-4459-9d11-6dfe71da067f","savedPayload":{"position":{"x":9907.951115844264,"y":19746.498401953573},"targetPosition":{"x":9956.012973463186,"y":19485.02534486223},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"ec04ffcd-829f-41db-9aa0-c3807ff916ef","savedPayload":{"position":{"x":9956.012973463186,"y":19485.02534486223},"targetPosition":{"x":10044.009670155008,"y":18960.45927956067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 6 End","id":"143eac37-51eb-4384-9455-94a62c781a28","savedPayload":{"position":{"x":9850.849541901664,"y":19457.55742384799},"targetPosition":{"x":10044.009670155008,"y":18960.45927956067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 6 End","id":"32025fb3-9ec4-4f50-b4c9-9a73100ce864"}}},{"type":"Polygon Vertex","name":"SMA 6 Begin","id":"ffabc963-65ea-44af-9d15-d8bf6896a781","savedPayload":{"position":{"x":9744.332497438625,"y":19400.354305594952},"targetPosition":{"x":10044.009670155008,"y":18960.45927956067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 6 Begin","id":"dece94e6-77de-4d21-9376-c2efc825b567"}}}],"id":"12470549-c8b6-453f-a87a-396921a0a871","savedPayload":{"position":{"x":10044.009670155008,"y":18960.45927956067},"targetPosition":{"x":10436.250691487223,"y":17973.61983501151},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 12","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"065e548b-05c8-4419-9bd1-0ef305c8b868","savedPayload":{"position":{"x":9491.536629792276,"y":19564.346017432792},"targetPosition":{"x":9600.86938009317,"y":19321.964460232455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"bb849209-1786-43ce-b2cc-cb1d43252144","savedPayload":{"position":{"x":9600.86938009317,"y":19321.964460232455},"targetPosition":{"x":9819.077846075017,"y":18837.77304967455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 12 Begin","id":"9af3283c-bb60-4843-beae-89f1d065c8ba","savedPayload":{"position":{"x":9510.39933599538,"y":19269.981207389108},"targetPosition":{"x":9819.077846075017,"y":18837.77304967455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 12 Begin","id":"48fe3ebc-6bbf-4a33-9068-2766eaf1599a"}}},{"type":"Polygon Vertex","name":"SMA 12 End","id":"fee1b2e2-fdd0-4a53-b277-b7549e08aaf8","savedPayload":{"position":{"x":9431.893772926871,"y":19201.282592689266},"targetPosition":{"x":9819.077846075017,"y":18837.77304967455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 12 End","id":"8662f4a4-41a4-4992-a333-017cd8764cd1"}}}],"id":"986a8bf8-3b7a-4421-80bd-940fa3bfe496","savedPayload":{"position":{"x":9819.077846075017,"y":18837.77304967455},"targetPosition":{"x":10436.250691487223,"y":17973.61983501151},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 18","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"4ee42ccb-7981-4865-990b-09a84732f649","savedPayload":{"position":{"x":9138.102155497903,"y":19291.8062618121},"targetPosition":{"x":9302.301381089017,"y":19082.67323678186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"557e774e-833c-4373-a833-24a2b8e1c98b","savedPayload":{"position":{"x":9302.301381089017,"y":19082.67323678186},"targetPosition":{"x":9630.088723877127,"y":18664.818437705355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 18 End","id":"b73a1590-a667-4c62-b1b0-319bc1c35264","savedPayload":{"position":{"x":9226.902829381599,"y":19010.54731533408},"targetPosition":{"x":9630.088723877127,"y":18664.818437705355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 18 End","id":"942b73d2-241e-43dd-b83b-0d3724f331a4"}}},{"type":"Polygon Vertex","name":"SMA 18 Begin","id":"370a951b-b7cb-47fe-8e09-799f7da546a6","savedPayload":{"position":{"x":9167.093078692405,"y":18925.019901004565},"targetPosition":{"x":9630.088723877127,"y":18664.818437705355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 18 Begin","id":"3260182a-83b5-4362-8962-84ec488b69cb"}}}],"id":"9f9eeee3-ebd5-4f65-9079-cd0ac3c373da","savedPayload":{"position":{"x":9630.088723877127,"y":18664.818437705355},"targetPosition":{"x":10436.250691487223,"y":17973.61983501151},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 24","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"b30aa3da-65ea-4e03-88d0-d452114f94bc","savedPayload":{"position":{"x":8074.056951482982,"y":19426.32792669228},"targetPosition":{"x":8387.936691106532,"y":19180.947145814487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"42bded2a-28e5-457d-b8de-a71218db1630","savedPayload":{"position":{"x":8387.936691106532,"y":19180.947145814487},"targetPosition":{"x":9014.91384229759,"y":18690.603309059676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 24 Begin","id":"a7a1b3d2-2c0a-47d0-8177-991c5b860ed4","savedPayload":{"position":{"x":8304.222505480686,"y":19049.0540680058},"targetPosition":{"x":9014.91384229759,"y":18690.603309059676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 24 Begin","id":"c0b2d03c-3cec-4ca2-b344-cdd99cb28362"}}},{"type":"Polygon Vertex","name":"SMA 24 End","id":"8aac2b0b-8089-4adc-93d2-1544e0113105","savedPayload":{"position":{"x":8247.88220950679,"y":18903.381974669366},"targetPosition":{"x":9014.91384229759,"y":18690.603309059676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 24 End","id":"4b33b779-8111-415c-a1e5-893ed5f49527"}}}],"id":"5cde1b9e-eed8-4e90-9f31-9d0f38d4aef9","savedPayload":{"position":{"x":9014.91384229759,"y":18690.603309059676},"targetPosition":{"x":10436.250691487223,"y":17973.61983501151},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 30","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"682c040c-2367-4838-92d2-5c14e6d65e0a","savedPayload":{"position":{"x":8432.236378136377,"y":18646.19123068696},"targetPosition":{"x":8916.759920443857,"y":18428.8398842136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"e80caa85-ac79-4b2b-ab2d-04f54c46b24b","savedPayload":{"position":{"x":8916.759920443857,"y":18428.8398842136},"targetPosition":{"x":9401.230939070678,"y":18211.184929220602},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 30 End","id":"985225d1-7a9d-45f7-93d2-59fe91c4450c","savedPayload":{"position":{"x":8883.494624673198,"y":18329.88439729509},"targetPosition":{"x":9401.230939070678,"y":18211.184929220602},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 30 End","id":"8e2f5657-06b0-4e46-aa7e-8676683ffb77"}}},{"type":"Polygon Vertex","name":"SMA 30 Begin","id":"0e1a912e-34be-4976-8d43-141b0f89a8ee","savedPayload":{"position":{"x":8870.28506284534,"y":18226.405516049774},"targetPosition":{"x":9401.230939070678,"y":18211.184929220602},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 30 Begin","id":"fef118ef-22cb-4ff5-b971-c90c2a01265a"}}}],"id":"ba9cdf50-c1e0-42c5-a81c-dbc068c3b10e","savedPayload":{"position":{"x":9401.230939070678,"y":18211.184929220602},"targetPosition":{"x":10436.250691487223,"y":17973.61983501151},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 60","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"85247bae-4a81-4247-affa-a8889f32987c","savedPayload":{"position":{"x":8329.36481713394,"y":18147.04234599783},"targetPosition":{"x":8851.884164702666,"y":18051.960461929437},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"9a153786-a0a0-4686-b83d-f55fb7513c56","savedPayload":{"position":{"x":8851.884164702666,"y":18051.960461929437},"targetPosition":{"x":9374.423475012141,"y":17956.651539377654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 60 Begin","id":"389d9bf7-3844-4b65-9607-17dec104368f","savedPayload":{"position":{"x":8843.278011935514,"y":17948.170371060907},"targetPosition":{"x":9374.423475012141,"y":17956.651539377654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 60 Begin","id":"8e7fb950-9b88-4aaf-95a1-982abf35b9f3"}}},{"type":"Polygon Vertex","name":"SMA 60 End","id":"0386e3c3-f9a3-442c-b2e4-c9d069621958","savedPayload":{"position":{"x":8855.221238425447,"y":17844.534182228457},"targetPosition":{"x":9374.423475012141,"y":17956.651539377654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 60 End","id":"173b07f4-37d0-4831-8d6b-1b989d9e3213"}}}],"id":"8170049e-056a-4818-8f0a-1a23f9c51bff","savedPayload":{"position":{"x":9374.423475012141,"y":17956.651539377654},"targetPosition":{"x":10436.250691487223,"y":17973.61983501151},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 120","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.PATINATED_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"613b4c9b-b002-4c65-87b7-8b9d41eda4df","savedPayload":{"position":{"x":8349.054211000059,"y":17638.066956221195},"targetPosition":{"x":8879.173948488979,"y":17670.619241116736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"27a6e346-8da3-4900-83c4-41680d2168f4","savedPayload":{"position":{"x":8879.173948488979,"y":17670.619241116736},"targetPosition":{"x":9409.370814566979,"y":17702.968300169494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 120 Begin","id":"956a6867-d00a-4888-9ffe-cbfabcfbe4fa","savedPayload":{"position":{"x":8895.707035776386,"y":17567.59282902},"targetPosition":{"x":9409.370814566979,"y":17702.968300169494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 120 Begin","id":"2fb358ff-8b9f-4b95-95f8-8be509b5b3a1"}}},{"type":"Polygon Vertex","name":"SMA 120 End","id":"040f4fe5-147d-4ba9-9a2d-fa134ca5d178","savedPayload":{"position":{"x":8932.108608135311,"y":17469.824655344375},"targetPosition":{"x":9409.370814566979,"y":17702.968300169494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 120 End","id":"682e079f-319c-43dc-91a2-5732c3fb28c8"}}}],"id":"7da9bd30-a7f8-410b-93a5-6b76ac57708b","savedPayload":{"position":{"x":9409.370814566979,"y":17702.968300169494},"targetPosition":{"x":10436.250691487223,"y":17973.61983501151},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 240","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"d2ac585e-594d-4031-b17d-2274efc677ec","savedPayload":{"position":{"x":8490.098802343016,"y":17148.219080773437},"targetPosition":{"x":8996.99977366785,"y":17306.71398089713},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"4e402467-2d78-4d95-ba03-3910f5120122","savedPayload":{"position":{"x":8996.99977366785,"y":17306.71398089713},"targetPosition":{"x":9504.020662336572,"y":17465.038056082834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 180 Begin","id":"efe56d7d-f6e6-4944-aa32-26d3c4ed055b","savedPayload":{"position":{"x":9037.709968447196,"y":17210.63808251907},"targetPosition":{"x":9504.020662336572,"y":17465.038056082834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 180 Begin","id":"5a2a1087-3910-4dd5-90d6-2370dc8949fa"}}},{"type":"Polygon Vertex","name":"SMA 180 End","id":"ec3a6f4b-adf2-4be1-ab28-313bbffb7491","savedPayload":{"position":{"x":9096.454215477761,"y":17124.422283596054},"targetPosition":{"x":9504.020662336572,"y":17465.038056082834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 180 End","id":"1b5a66be-de8e-40c3-b3f2-e193e5deaeed"}}}],"id":"adf40814-2b9a-4ee8-a154-364bfca32f7a","savedPayload":{"position":{"x":9504.020662336572,"y":17465.038056082834},"targetPosition":{"x":10436.250691487223,"y":17973.61983501151},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 300","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"e79c6ed7-e52f-4191-a423-b14965211a19","savedPayload":{"position":{"x":8744.302686505604,"y":16706.35980928972},"targetPosition":{"x":9198.513290894096,"y":16981.58108460665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"e5cd42c0-f52d-4608-91d5-966cc7bf39b3","savedPayload":{"position":{"x":9198.513290894096,"y":16981.58108460665},"targetPosition":{"x":9652.873006177308,"y":17256.672176019438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 240 Begin","id":"f29f45ac-86bb-4490-b8b1-9a50dc736782","savedPayload":{"position":{"x":9261.035423472787,"y":16898.0397719639},"targetPosition":{"x":9652.873006177308,"y":17256.672176019438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 240 Begin","id":"854a73e9-f8d2-4b85-a0dd-65284e175ca0"}}},{"type":"Polygon Vertex","name":"SMA 240 End","id":"eb330333-6b0f-4fad-97a7-a34e93cc3dee","savedPayload":{"position":{"x":9338.710046709131,"y":16828.387748865094},"targetPosition":{"x":9652.873006177308,"y":17256.672176019438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 240 End","id":"13eca50c-c1fb-4baa-8618-1f7eafde66c9"}}}],"id":"60c00cdc-dbf4-460b-b021-7339dd7bbec8","savedPayload":{"position":{"x":9652.873006177308,"y":17256.672176019438},"targetPosition":{"x":10436.250691487223,"y":17973.61983501151},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 600","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"182273b1-1d73-4dc7-93dc-b2a4644b18f1","savedPayload":{"position":{"x":9096.921747642113,"y":16338.166432931968},"targetPosition":{"x":9472.030527200704,"y":16714.10973427657},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"3342f900-2346-4377-b6b0-34566787d6d9","savedPayload":{"position":{"x":9472.030527200704,"y":16714.10973427657},"targetPosition":{"x":9847.297702286885,"y":17089.9703811725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 600 Begin","id":"5b6c238c-a7cb-4002-85e5-5e84cd6ffdf8","savedPayload":{"position":{"x":9552.73522450448,"y":16647.95921619608},"targetPosition":{"x":9847.297702286885,"y":17089.9703811725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 600 Begin","id":"3ecee44a-2a84-41ac-b579-f6f48acc590a"}}},{"type":"Polygon Vertex","name":"SMA 600 End","id":"b60e6d28-cb70-49c5-9e06-c67cfe81b1f1","savedPayload":{"position":{"x":9644.833054329983,"y":16598.920335955718},"targetPosition":{"x":9847.297702286885,"y":17089.9703811725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 600 End","id":"9bd8a9e7-09cf-4989-a9fa-c2f73d361134"}}}],"id":"93c1746c-2470-4032-84e1-c16a2d4e3921","savedPayload":{"position":{"x":9847.297702286885,"y":17089.9703811725},"targetPosition":{"x":10436.250691487223,"y":17973.61983501151},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 1200","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"f0b2a565-d33f-42d4-85ed-d61766b82af7","savedPayload":{"position":{"x":9527.566954871489,"y":16065.041230720504},"targetPosition":{"x":9801.751338861033,"y":16519.84021184836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"e108f855-0252-4113-8bd3-2cf2581abc47","savedPayload":{"position":{"x":9801.751338861033,"y":16519.84021184836},"targetPosition":{"x":10076.057221609988,"y":16974.612001179503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 1200 Begin","id":"f15e631f-a4ef-4493-bb68-8c3a082ba0aa","savedPayload":{"position":{"x":9895.969065833558,"y":16474.927296206522},"targetPosition":{"x":10076.057221609988,"y":16974.612001179503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 1200 Begin","id":"0481ec1e-ae49-4c99-a5ad-16c427db6e45"}}},{"type":"Polygon Vertex","name":"SMA 1200 End","id":"cf097102-9c66-4f90-95cd-1c1c9efc113b","savedPayload":{"position":{"x":9997.206582819736,"y":16449.343695433974},"targetPosition":{"x":10076.057221609988,"y":16974.612001179503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 1200 End","id":"eacd5f37-bdf2-4756-b7db-46db919b08a7"}}}],"id":"790efcb9-f3af-4e01-86f2-adbfcda6a356","savedPayload":{"position":{"x":10076.057221609988,"y":16974.612001179503},"targetPosition":{"x":10436.250691487223,"y":17973.61983501151},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"93675e57-6b0f-4fe5-8c8a-a4c02f794650","savedPayload":{"position":{"x":10276.1497418637,"y":18723.06369922679},"targetPosition":{"x":11195.181786051313,"y":18191.550437399546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"SMA Base 6","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"SMA 6","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma6","id":"bf5de8a3-8c0b-41e8-8d21-bef5a721133f","savedPayload":{"position":{"x":11165.587875574687,"y":17347.15561031499},"targetPosition":{"x":11263.876847597005,"y":17100.154362933412},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"995dd126-9cef-4b6e-960f-6828cfc41777","savedPayload":{"position":{"x":11263.876847597005,"y":17100.154362933412},"targetPosition":{"x":11379.761018164832,"y":16808.468242504023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 12","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma12","id":"9d4756de-3019-4ab6-a77d-7a1452ce1813","savedPayload":{"position":{"x":10939.627786369469,"y":17185.65885506571},"targetPosition":{"x":11141.585030272223,"y":17012.626368184545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"414bd6ad-d6c6-4100-867e-232c6e649de2","savedPayload":{"position":{"x":11141.585030272223,"y":17012.626368184545},"targetPosition":{"x":11379.761018164832,"y":16808.468242504023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 18","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma18","id":"8c7a57b7-0d00-4239-b7ce-018b8da0fce7","savedPayload":{"position":{"x":10814.825740899329,"y":16937.765549199823},"targetPosition":{"x":11074.183218575827,"y":16878.426698997802},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2b73a8b5-c7a5-47b2-acad-87fa5aec85be","savedPayload":{"position":{"x":11074.183218575827,"y":16878.426698997802},"targetPosition":{"x":11379.761018164832,"y":16808.468242504023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 24","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma24","id":"3880e650-f608-4c97-8b5a-6956c8c2fba7","savedPayload":{"position":{"x":10819.518060346914,"y":16660.83864171104},"targetPosition":{"x":11076.810175106128,"y":16728.634478702006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7655b5d6-708e-4e05-9499-2058d8511689","savedPayload":{"position":{"x":11076.810175106128,"y":16728.634478702006},"targetPosition":{"x":11379.761018164832,"y":16808.468242504023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 30","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma30","id":"ae5edcfd-b4be-4c3e-bb28-333fade4b88d","savedPayload":{"position":{"x":10952.502046159114,"y":16417.465713513124},"targetPosition":{"x":11148.756554509187,"y":16597.067425825422},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ad60eba1-2b62-4b1f-bed9-de38285f4acc","savedPayload":{"position":{"x":11148.756554509187,"y":16597.067425825422},"targetPosition":{"x":11379.761018164832,"y":16808.468242504023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 60","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma60","id":"cd97e51b-fa6a-4d6e-b7dd-43c9299bde4d","savedPayload":{"position":{"x":11183.24719515621,"y":16263.718951751107},"targetPosition":{"x":11273.536017287623,"y":16514.024825399676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5baddfba-9384-417f-954a-37abf160567e","savedPayload":{"position":{"x":11273.536017287623,"y":16514.024825399676},"targetPosition":{"x":11379.761018164832,"y":16808.468242504023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 120","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma120","id":"189b3ffd-8d2b-4124-af4c-52a9756c3409","savedPayload":{"position":{"x":11458.519183965893,"y":16234.705743932496},"targetPosition":{"x":11422.340359141976,"y":16498.33651500921},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"980faff9-33a9-4c63-b64c-3bdbeeeb1b8a","savedPayload":{"position":{"x":11422.340359141976,"y":16498.33651500921},"targetPosition":{"x":11379.761018164832,"y":16808.468242504023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 180","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma180","id":"7dac036e-a376-493f-8e5a-d8a7e211f262","savedPayload":{"position":{"x":11716.165475970049,"y":16337.128481029842},"targetPosition":{"x":11561.68579751727,"y":16553.58344585292},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d22d8f06-1510-43c7-a233-7a5dc67f809b","savedPayload":{"position":{"x":11561.68579751727,"y":16553.58344585292},"targetPosition":{"x":11379.761018164832,"y":16808.468242504023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 240","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma240","id":"2b86e2e4-bf2d-4b68-a54e-a781e56458bf","savedPayload":{"position":{"x":11896.908229088009,"y":16547.463184138825},"targetPosition":{"x":11659.378272174466,"y":16667.35540397411},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"696305ab-09c2-41af-bfb3-85ce4fb5e705","savedPayload":{"position":{"x":11659.378272174466,"y":16667.35540397411},"targetPosition":{"x":11379.761018164832,"y":16808.468242504023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 300 ","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma300","id":"03bc78eb-d57f-41fc-a8ba-3592e222d5cc","savedPayload":{"position":{"x":11959.08669878587,"y":16817.376569966385},"targetPosition":{"x":11693.201931138958,"y":16813.32424190119},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f34223f9-87e3-49fe-8acf-77080dffa25f","savedPayload":{"position":{"x":11693.201931138958,"y":16813.32424190119},"targetPosition":{"x":11379.761018164832,"y":16808.468242504023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 600 ","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma600","id":"c6511ef3-8c3a-445c-9d90-1bb91a1763fb","savedPayload":{"position":{"x":11888.490310169718,"y":17085.803312586308},"targetPosition":{"x":11655.094023485233,"y":16958.613254047967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ff4236e0-4c9b-4b98-9dd3-b3c152bb12e2","savedPayload":{"position":{"x":11655.094023485233,"y":16958.613254047967},"targetPosition":{"x":11379.761018164832,"y":16808.468242504023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 1200 ","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma1200","id":"931713d5-2d25-428f-95bc-0a21e01892f7","savedPayload":{"position":{"x":11700.96924341981,"y":17290.72949070201},"targetPosition":{"x":11553.609277591573,"y":17069.60109399913},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e3345124-6aed-4164-ab86-041fd39608b0","savedPayload":{"position":{"x":11553.609277591573,"y":17069.60109399913},"targetPosition":{"x":11379.761018164832,"y":16808.468242504023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"40313dff-6c5d-4650-bd51-8767bba6f6ad","savedPayload":{"position":{"x":10665.460921199881,"y":17273.652539069823},"targetPosition":{"x":11195.181786051313,"y":18191.550437399546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6ace920a-3a4b-4d28-8f04-4c2ecd3dfeb8","savedPayload":{"position":{"x":11904.684297867172,"y":18410.581728429683},"targetPosition":{"x":12424.206554116216,"y":18710.734611771542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"SMA Base 5","config":"{\n\t\"codeName\": \"SMA-Base7\",\n \"icon\": \"moving-average\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"SMA 5 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma5","id":"37d1cd48-3a3f-4477-a125-76dcec51195b","savedPayload":{"position":{"x":13292.084739065906,"y":13437.564898720619},"targetPosition":{"x":13426.833275152809,"y":15016.653151959306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9eca5bc8-cdb2-46fb-9a26-1c2da03b8818","savedPayload":{"position":{"x":13426.833275152809,"y":15016.653151959306},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 5 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma5","id":"3537c835-0158-465b-81d1-5440a40a649b","savedPayload":{"position":{"x":14085.243658747682,"y":13469.85202708622},"targetPosition":{"x":13823.459822244959,"y":15032.796443010859},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"db00298d-2997-4640-93fe-17125aeb7f0e","savedPayload":{"position":{"x":13823.459822244959,"y":15032.796443010859},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 10 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma10","id":"3f1d398f-6d0a-4713-8fbf-29cbb133be3e","savedPayload":{"position":{"x":14846.131858197607,"y":13698.725665933054},"targetPosition":{"x":14203.891615923478,"y":15147.223758553275},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b2e038ee-355d-4862-a454-514f7bcf31cf","savedPayload":{"position":{"x":14203.891615923478,"y":15147.223758553275},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 15 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma15","id":"cadaa709-8956-4c7a-9215-76ac92a53517","savedPayload":{"position":{"x":15526.25910692931,"y":14109.28764231174},"targetPosition":{"x":14543.965220873748,"y":15352.48188261238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"02f80e02-080a-4950-9ffc-2f3b5770b404","savedPayload":{"position":{"x":14543.965220873748,"y":15352.48188261238},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 15 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma15","id":"e4212208-3b31-47c0-aebd-966d4a77c0f9","savedPayload":{"position":{"x":16082.982706343739,"y":14676.037818597033},"targetPosition":{"x":14822.31331134993,"y":15635.858963100318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"32c7c4d3-a210-4d4d-8d10-bb23f91edcda","savedPayload":{"position":{"x":14822.31331134993,"y":15635.858963100318},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 20 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma20","id":"73c6c2a6-b4b7-4d2a-be7e-5810261e68c7","savedPayload":{"position":{"x":16481.255947480437,"y":15363.383806299818},"targetPosition":{"x":15021.445202238387,"y":15979.54818864555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6b07cc40-e7da-48bc-a49b-cac5a0615c34","savedPayload":{"position":{"x":15021.445202238387,"y":15979.54818864555},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 20 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma20","id":"c8dd3770-668a-47d7-aad8-db412890bc28","savedPayload":{"position":{"x":16696.496676209943,"y":16128.204778723994},"targetPosition":{"x":15129.07339892979,"y":16361.958380848468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e2f2041d-b896-44d7-b251-85eb1cd7fadf","savedPayload":{"position":{"x":15129.07339892979,"y":16361.958380848468},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 25 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma25","id":"d7265ad0-64e1-4fb7-8cd0-bdbf329b3d6d","savedPayload":{"position":{"x":16714.43942403089,"y":16921.73843671435},"targetPosition":{"x":15138.045425531882,"y":16758.713056055098},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"78b96701-c691-41fa-91d2-3bdb00e2e0fa","savedPayload":{"position":{"x":15138.045425531882,"y":16758.713056055098},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 25 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma25","id":"5cefb3f2-2429-478b-80a8-8f9e07e12c00","savedPayload":{"position":{"x":16533.779953903708,"y":17695.46244682541},"targetPosition":{"x":15047.73443803414,"y":17145.540334117264},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c9293d92-6255-4c96-9bf9-f4c6dcf419a1","savedPayload":{"position":{"x":15047.73443803414,"y":17145.540334117264},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 50 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma50","id":"cfa001a1-ac90-4713-b542-4fab32f377e0","savedPayload":{"position":{"x":16166.89724239935,"y":18399.952182637637},"targetPosition":{"x":14864.264092041782,"y":17497.79086773366},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1d352202-ba2e-41a7-9d4b-c4c97d2e391d","savedPayload":{"position":{"x":14864.264092041782,"y":17497.79086773366},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 50 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma50","id":"1655e27e-3738-4b5d-8961-105e11b5070c","savedPayload":{"position":{"x":15636.520896966302,"y":18990.956120445022},"targetPosition":{"x":14599.043743405391,"y":17793.29215551921},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4e34e6e6-d370-4127-b4fe-0c9fd591e730","savedPayload":{"position":{"x":14599.043743405391,"y":17793.29215551921},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 100 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma100","id":"44d9a566-3392-4f8f-ae69-f16de47bdd50","savedPayload":{"position":{"x":14965.399756418405,"y":19449.231959490106},"targetPosition":{"x":14268.850231645682,"y":18013.33906213689},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"651f424a-51be-4b25-a895-d50f75329384","savedPayload":{"position":{"x":14268.850231645682,"y":18013.33906213689},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 100 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma100","id":"05d2a007-3c1e-4e61-8cef-0aa1bdb3c0f5","savedPayload":{"position":{"x":14161.166219902816,"y":19653.232072490217},"targetPosition":{"x":13828.77636002342,"y":18095.10101005288},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aada5c3d-5ff5-4afd-8dd1-298ce8fce853","savedPayload":{"position":{"x":13828.77636002342,"y":18095.10101005288},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 150 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma150","id":"f5f1a287-14c5-4b05-9032-85623b3e948f","savedPayload":{"position":{"x":13433.584982026508,"y":19763.007411242095},"targetPosition":{"x":13497.746512848162,"y":18179.30841027937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"55d6b376-dd20-4044-b6c2-51acd03bee71","savedPayload":{"position":{"x":13497.746512848162,"y":18179.30841027937},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 150 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma150","id":"e8805c13-2905-47dd-ad3d-eea5d645fd2f","savedPayload":{"position":{"x":12650.259664021874,"y":19630.93969211146},"targetPosition":{"x":13105.913754376974,"y":18113.220525425542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"812b92a9-2ba5-44e2-b255-976f8354e841","savedPayload":{"position":{"x":13105.913754376974,"y":18113.220525425542},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 200 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma200","id":"13b0144f-8413-43d8-97f9-61a50712a17b","savedPayload":{"position":{"x":11923.328034624226,"y":19308.023902601562},"targetPosition":{"x":12742.359294621705,"y":17951.14212119927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"652e1cae-11c0-489c-a820-03296a362c77","savedPayload":{"position":{"x":12742.359294621705,"y":17951.14212119927},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 200 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma200","id":"51211e13-8719-4d03-afb1-a7bb2f656f68","savedPayload":{"position":{"x":11300.69162170937,"y":18815.934252876155},"targetPosition":{"x":12431.150921903225,"y":17705.559805681},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4e4458f4-c6ca-4235-8734-8e833d3722f2","savedPayload":{"position":{"x":12431.150921903225,"y":17705.559805681},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 250 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma250","id":"a37e3e5a-dc59-4373-97c3-98de0c09fbb7","savedPayload":{"position":{"x":10819.34482686873,"y":18183.86756834356},"targetPosition":{"x":12190.632530989116,"y":17389.680293275927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"52aefae1-6ceb-47c4-a82d-ac55a7b91b25","savedPayload":{"position":{"x":12190.632530989116,"y":17389.680293275927},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 250 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.sma250","id":"aae7721e-b9d3-4629-94be-eecd49675c8f","savedPayload":{"position":{"x":10510.615509997568,"y":17452.287805340795},"targetPosition":{"x":12036.161028820135,"y":17023.82101677327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8ddf18b2-93b4-4422-9e64-f9fc22f5de52","savedPayload":{"position":{"x":12036.161028820135,"y":17023.82101677327},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 500 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.propertyA","id":"65cfa112-3dc1-4bbd-9f90-13076e630272","savedPayload":{"position":{"x":10375.037818688854,"y":16663.47689933154},"targetPosition":{"x":11977.169480875198,"y":16630.98901241236},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d1ec756e-a71c-433b-ad10-ef8234617768","savedPayload":{"position":{"x":11977.169480875198,"y":16630.98901241236},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 500 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.propertyA","id":"577145f8-de78-4ded-a41e-86f9b54ec8a2","savedPayload":{"position":{"x":10475.07883263998,"y":15876.755806384623},"targetPosition":{"x":12018.363509296747,"y":16236.240996082859},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0b2fbef6-9a30-4ed6-a98e-5ccceb77aea3","savedPayload":{"position":{"x":12018.363509296747,"y":16236.240996082859},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 10 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.sma10","id":"520c2e51-b036-4267-928d-53f69d83747b","savedPayload":{"position":{"x":10754.442907611834,"y":15132.700638150312},"targetPosition":{"x":12156.493041303527,"y":15863.765851313756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7fe319a5-1a75-4f65-97da-20345cc502c2","savedPayload":{"position":{"x":12156.493041303527,"y":15863.765851313756},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 1000 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.propertyA","id":"3514870d-ad16-4bee-b5fa-a68739f3b332","savedPayload":{"position":{"x":11193.833336415444,"y":14484.879395958045},"targetPosition":{"x":12382.710979927442,"y":15537.240827538142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"db6c9de6-aeb9-46ff-a46d-893ac56a32a2","savedPayload":{"position":{"x":12382.710979927442,"y":15537.240827538142},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"SMA 1000 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.propertyA","id":"9cd8a206-16f2-446d-b63e-43faa32d7abd","savedPayload":{"position":{"x":11804.25363541726,"y":13958.844846754919},"targetPosition":{"x":12683.047640809886,"y":15277.200513766476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e518b92f-f678-4868-ae0c-a0bd31f480eb","savedPayload":{"position":{"x":12683.047640809886,"y":15277.200513766476},"targetPosition":{"x":13561.648048633788,"y":16595.743164117568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f32ec0d3-ec1a-4f9d-b0dc-a394dac962ba","savedPayload":{"position":{"x":13561.648048633788,"y":16595.743164117568},"targetPosition":{"x":10464.185647386725,"y":16682.654734791136},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"SMA 5","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"a7e019b1-8c26-45dc-a717-de61a361f789","savedPayload":{"position":{"x":7936.105004441915,"y":17814.27070322124},"targetPosition":{"x":8279.094016659774,"y":17612.04999359333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"7da673e1-96be-42bb-ac8e-ba94da835b8d","savedPayload":{"position":{"x":8279.094016659774,"y":17612.04999359333},"targetPosition":{"x":8963.727197496932,"y":17207.981096843174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 5 End","id":"e755e4bb-ff8f-4591-b0ae-878d71639fd5","savedPayload":{"position":{"x":8213.38110090633,"y":17470.451300366713},"targetPosition":{"x":8963.727197496932,"y":17207.981096843174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 5 End","id":"db00298d-2997-4640-93fe-17125aeb7f0e"}}},{"type":"Polygon Vertex","name":"SMA 5 Begin","id":"c452cccc-8d2b-4630-9219-fb5e4d89fb1e","savedPayload":{"position":{"x":8176.450472030077,"y":17318.85927187963},"targetPosition":{"x":8963.727197496932,"y":17207.981096843174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 5 Begin","id":"9eca5bc8-cdb2-46fb-9a26-1c2da03b8818"}}}],"id":"9de00c59-ad47-414f-93f4-976d1a798e33","savedPayload":{"position":{"x":8963.727197496932,"y":17207.981096843174},"targetPosition":{"x":10464.185647386725,"y":16682.654734791136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 10","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"d99069f1-59c4-4dd2-a77f-15de8869aeaf","savedPayload":{"position":{"x":7747.707391174028,"y":17222.619324173487},"targetPosition":{"x":8127.11846499314,"y":17101.951678088964},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6867a6be-eb3c-4c1f-a83e-f630c5a40ba3","savedPayload":{"position":{"x":8127.11846499314,"y":17101.951678088964},"targetPosition":{"x":8884.417610815557,"y":16860.60080037946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 10 Begin","id":"43ddbce7-424a-4718-9012-bd9327a7b6e0","savedPayload":{"position":{"x":8094.517467061187,"y":16949.365698590915},"targetPosition":{"x":8884.417610815557,"y":16860.60080037946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 10 Begin","id":"7fe319a5-1a75-4f65-97da-20345cc502c2"}}},{"type":"Polygon Vertex","name":"SMA 10 End","id":"f48c16c1-ca4a-4a64-ae78-78cbc754888e","savedPayload":{"position":{"x":8092.118627064299,"y":16793.834910359867},"targetPosition":{"x":8884.417610815557,"y":16860.60080037946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 10 End","id":"b2e038ee-355d-4862-a454-514f7bcf31cf"}}}],"id":"0c387d26-20c4-4a66-aac4-599d98b8300e","savedPayload":{"position":{"x":8884.417610815557,"y":16860.60080037946},"targetPosition":{"x":10464.185647386725,"y":16682.654734791136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 15","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"e52e6176-fecb-48d3-ad99-7b66e11b02de","savedPayload":{"position":{"x":7695.515450657507,"y":16605.00946305544},"targetPosition":{"x":8092.386403792612,"y":16571.836633550975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"3850ed1d-dc3b-47b2-bee7-7aa961acfaa2","savedPayload":{"position":{"x":8092.386403792612,"y":16571.836633550975},"targetPosition":{"x":8884.46266646213,"y":16504.96219025992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 15 End","id":"3f50ad9c-b951-420f-92cb-564d050f144e","savedPayload":{"position":{"x":8094.486917507513,"y":16416.021123037226},"targetPosition":{"x":8884.46266646213,"y":16504.96219025992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 15 End","id":"32c7c4d3-a210-4d4d-8d10-bb23f91edcda"}}},{"type":"Polygon Vertex","name":"SMA 15 Begin","id":"5cce1576-091c-49fa-a98f-0ebcf033c933","savedPayload":{"position":{"x":8127.110956869676,"y":16263.407750610222},"targetPosition":{"x":8884.46266646213,"y":16504.96219025992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 15 Begin","id":"02f80e02-080a-4950-9ffc-2f3b5770b404"}}}],"id":"9f49d18a-dfd7-4d55-8a1e-c186dbfc043e","savedPayload":{"position":{"x":8884.46266646213,"y":16504.96219025992},"targetPosition":{"x":10464.185647386725,"y":16682.654734791136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"e9126aac-9402-4bfc-9f89-b6996780d7ba","savedPayload":{"position":{"x":7782.031125536325,"y":15991.121402126304},"targetPosition":{"x":8176.144701835443,"y":16046.781106304172},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"9ec36dc5-91e0-4861-8748-9f9b7d92bacc","savedPayload":{"position":{"x":8176.144701835443,"y":16046.781106304172},"targetPosition":{"x":8963.490638312369,"y":16157.721314999586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 20 Begin","id":"6a595b60-ea82-4ef7-ad14-f698d4885e0d","savedPayload":{"position":{"x":8213.04196196094,"y":15895.087224377221},"targetPosition":{"x":8963.490638312369,"y":16157.721314999586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 20 Begin","id":"6b07cc40-e7da-48bc-a49b-cac5a0615c34"}}},{"type":"Polygon Vertex","name":"SMA 20 End","id":"3d4d3854-f28c-462a-b08a-21db3bdf9d82","savedPayload":{"position":{"x":8278.842732196257,"y":15753.662496438345},"targetPosition":{"x":8963.490638312369,"y":16157.721314999586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 20 End","id":"e2f2041d-b896-44d7-b251-85eb1cd7fadf"}}}],"id":"39db09d1-e5b2-4e83-80b5-41b5af443e3f","savedPayload":{"position":{"x":8963.490638312369,"y":16157.721314999586},"targetPosition":{"x":10464.185647386725,"y":16682.654734791136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 25","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"938779af-a8c9-48dc-a936-7f196f976c5a","savedPayload":{"position":{"x":7631.5645974861345,"y":15268.450028745443},"targetPosition":{"x":8374.723813640567,"y":15553.793898608012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"c905d757-47ba-4c5b-9f85-73db3050e897","savedPayload":{"position":{"x":8374.723813640567,"y":15553.793898608012},"targetPosition":{"x":9118.04483856914,"y":15836.98248870111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 25 End","id":"a952acf4-c97a-40f5-8f9d-edbae371305d","savedPayload":{"position":{"x":8444.888351002062,"y":15413.907747930749},"targetPosition":{"x":9118.04483856914,"y":15836.98248870111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 25 End","id":"c9293d92-6255-4c96-9bf9-f4c6dcf419a1"}}},{"type":"Polygon Vertex","name":"SMA 25 Begin","id":"88efd4f2-dc1e-43d6-96f0-7e60ed1d4177","savedPayload":{"position":{"x":8540.250397382284,"y":15290.581204849412},"targetPosition":{"x":9118.04483856914,"y":15836.98248870111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 25 Begin","id":"78b96701-c691-41fa-91d2-3bdb00e2e0fa"}}}],"id":"9b80c90a-521b-4d8e-ba2b-781f3aee1fb2","savedPayload":{"position":{"x":9118.04483856914,"y":15836.98248870111},"targetPosition":{"x":10464.185647386725,"y":16682.654734791136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 50","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"b8842dee-7b08-40e5-818d-54df493e6e20","savedPayload":{"position":{"x":8011.698431350995,"y":14669.37292271195},"targetPosition":{"x":8673.36465881143,"y":15111.476226242794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"c1dfcdd1-96a1-49ee-82e6-7d78077c43c0","savedPayload":{"position":{"x":8679.039415377376,"y":15115.710046465347},"targetPosition":{"x":9339.936041984396,"y":15558.484483315895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 50 Begin","id":"cdbfa16a-32ae-43e0-ba6f-940351c04786","savedPayload":{"position":{"x":8777.902495283617,"y":14996.390202331262},"targetPosition":{"x":9339.936041984396,"y":15558.484483315895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 50 Begin","id":"1d352202-ba2e-41a7-9d4b-c4c97d2e391d"}}},{"type":"Polygon Vertex","name":"SMA 50 End","id":"5e17d592-e906-4b8b-b48b-97b98cdd2cd1","savedPayload":{"position":{"x":8898.489624342017,"y":14897.485956436656},"targetPosition":{"x":9339.936041984396,"y":15558.484483315895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 50 End","id":"4e34e6e6-d370-4127-b4fe-0c9fd591e730"}}}],"id":"39d6a3fc-1380-4e2d-8de6-13d0b9e7a8e3","savedPayload":{"position":{"x":9339.936041984396,"y":15558.484483315895},"targetPosition":{"x":10464.185647386725,"y":16682.654734791136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 100","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.PATINATED_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"2a39fe15-bcc6-49a4-9dcd-41c882a4b361","savedPayload":{"position":{"x":8520.497645036268,"y":14174.885939418908},"targetPosition":{"x":9067.073889729314,"y":14753.071000995298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"ea97087b-647a-4900-8de5-2aabe7f95095","savedPayload":{"position":{"x":9067.21101478093,"y":14753.089982211659},"targetPosition":{"x":9614.04054283292,"y":15331.406429885517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 100 Begin","id":"d87c3f75-6f43-4087-ab8b-0493e77a3a25","savedPayload":{"position":{"x":9195.474390477231,"y":14663.126458706183},"targetPosition":{"x":9618.508681038538,"y":15336.363986772794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 100 Begin","id":"651f424a-51be-4b25-a895-d50f75329384"}}},{"type":"Polygon Vertex","name":"SMA 100 End","id":"b6782eed-6d13-4cf8-98c1-b623da09e0d1","savedPayload":{"position":{"x":9335.234001763949,"y":14593.394739942569},"targetPosition":{"x":9618.508681038538,"y":15336.363986772794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 100 End","id":"aada5c3d-5ff5-4afd-8dd1-298ce8fce853"}}}],"id":"c7c55c53-c6ee-4edc-8b4e-eab2ece17db9","savedPayload":{"position":{"x":9618.508681038538,"y":15336.363986772794},"targetPosition":{"x":10464.185647386725,"y":16682.654734791136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 150","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"7e3e32b9-1c64-43f1-85ab-6bb2d777c5a5","savedPayload":{"position":{"x":9127.579264619826,"y":13808.328240974126},"targetPosition":{"x":9531.524747869165,"y":14493.234976623618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"91bbb7a8-0800-4d46-a3ba-bd195153f61e","savedPayload":{"position":{"x":9530.671911238425,"y":14491.165146915018},"targetPosition":{"x":9935.0499862292,"y":15176.685327338964},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 150 Begin","id":"db2a660d-2315-482c-a29a-38acac0ca453","savedPayload":{"position":{"x":9676.805209025288,"y":14431.647205043108},"targetPosition":{"x":9939.298575565566,"y":15182.047383748322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 150 Begin","id":"55d6b376-dd20-4044-b6c2-51acd03bee71"}}},{"type":"Polygon Vertex","name":"SMA 150 End","id":"2c0a8a74-58c0-4331-a438-2154306fb317","savedPayload":{"position":{"x":9828.241646453434,"y":14394.89163364556},"targetPosition":{"x":9939.298575565566,"y":15182.047383748322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 150 End","id":"812b92a9-2ba5-44e2-b255-976f8354e841"}}}],"id":"5c7935c9-6393-4e0f-8561-742533c1ebcf","savedPayload":{"position":{"x":9939.298575565566,"y":15182.047383748322},"targetPosition":{"x":10464.185647386725,"y":16682.654734791136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 200","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"0ab949bd-a21b-43e8-ae5d-ba2067fa9436","savedPayload":{"position":{"x":9799.972517901437,"y":13583.594184070062},"targetPosition":{"x":10041.339683010383,"y":14341.242123792628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"838799c3-76c5-4e9e-9291-e297d352969c","savedPayload":{"position":{"x":10040.956549045664,"y":14339.074216958887},"targetPosition":{"x":10282.60969634264,"y":15097.355937288108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 200 Begin","id":"f36ca4d6-1114-4958-9bf2-09cd34536077","savedPayload":{"position":{"x":10197.466223660545,"y":14312.56688431269},"targetPosition":{"x":10286.420470430357,"y":15102.83102213839},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 200 Begin","id":"652e1cae-11c0-489c-a820-03296a362c77"}}},{"type":"Polygon Vertex","name":"SMA 200 End","id":"af95d8b6-43cf-4529-910a-8713ab69fb13","savedPayload":{"position":{"x":10353.072734633215,"y":14310.703839370548},"targetPosition":{"x":10286.420470430357,"y":15102.83102213839},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 200 End","id":"4e4458f4-c6ca-4235-8734-8e833d3722f2"}}}],"id":"796fa379-26a6-4443-b515-1be86217f891","savedPayload":{"position":{"x":10286.420470430357,"y":15102.83102213839},"targetPosition":{"x":10464.185647386725,"y":16682.654734791136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 250","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.BLACK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"6f488fbe-fb26-4965-9ad2-be64bc66477e","savedPayload":{"position":{"x":10505.240328474572,"y":13514.104303199956},"targetPosition":{"x":10571.922844110088,"y":14306.491309076428},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"1860376f-2657-41cb-84d1-10c324f64535","savedPayload":{"position":{"x":10572.064770423507,"y":14304.29622310422},"targetPosition":{"x":10638.895992508604,"y":15097.360255465344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 250 End","id":"e513348c-19d0-49e5-a77f-e6059d459335","savedPayload":{"position":{"x":10731.20531753577,"y":14312.830283297384},"targetPosition":{"x":10642.205372102066,"y":15102.926045629918},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 250 End","id":"8ddf18b2-93b4-4422-9e64-f9fc22f5de52"}}},{"type":"Polygon Vertex","name":"SMA 250 Begin","id":"ddd52ba0-601f-4121-908e-9cd42450ecaa","savedPayload":{"position":{"x":10883.636990289668,"y":14345.427534459894},"targetPosition":{"x":10642.205372102066,"y":15102.926045629918},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 250 Begin","id":"52aefae1-6ceb-47c4-a82d-ac55a7b91b25"}}}],"id":"3ec27802-69a6-4c76-8bf5-ba92335ff928","savedPayload":{"position":{"x":10642.205372102066,"y":15102.926045629918},"targetPosition":{"x":10464.185647386725,"y":16682.654734791136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 500","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.BLACK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"b8892640-241d-4817-90b9-142d50f45575","savedPayload":{"position":{"x":11208.019895875923,"y":13603.379141339732},"targetPosition":{"x":11096.953447624825,"y":14390.759272540978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"640d28c5-0762-4fe0-8d3b-b2b2fd178cbe","savedPayload":{"position":{"x":11097.589030148816,"y":14388.579642718407},"targetPosition":{"x":10986.441002944428,"y":15176.70443216003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 500 Begin","id":"cc1d57e4-c69b-4faf-987e-1ecc6402d774","savedPayload":{"position":{"x":11251.911393242977,"y":14431.477306406241},"targetPosition":{"x":10989.278767350674,"y":15182.047440045822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 500 Begin","id":"d1ec756e-a71c-433b-ad10-ef8234617768"}}},{"type":"Polygon Vertex","name":"SMA 500 End","id":"f5f0ed9f-dc7d-40cb-94cb-9fca1de4aacf","savedPayload":{"position":{"x":11393.290695188147,"y":14497.427008013783},"targetPosition":{"x":10989.278767350674,"y":15182.047440045822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 500 End","id":"0b2fbef6-9a30-4ed6-a98e-5ccceb77aea3"}}}],"id":"d638a3eb-6f91-4c41-9f65-981ba269343a","savedPayload":{"position":{"x":10989.278767350674,"y":15182.047440045822},"targetPosition":{"x":10464.185647386725,"y":16682.654734791136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 1000","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.BLACK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"accb8fb4-da01-4314-bda3-a127f32443db","savedPayload":{"position":{"x":11874.867271537658,"y":13845.06826020797},"targetPosition":{"x":11591.272290013383,"y":14588.169884162255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"2139584e-6960-4ac5-a6b2-d45aae1cfae3","savedPayload":{"position":{"x":11591.66614508968,"y":14587.89371543587},"targetPosition":{"x":11307.865994118534,"y":15331.493608163139},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"SMA 1000 Begin","id":"82d72489-eb93-4293-8b96-498e6756e89d","savedPayload":{"position":{"x":11733.254293637381,"y":14663.490387922293},"targetPosition":{"x":11310.25993739503,"y":15336.502530605925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 1000 Begin","id":"db6c9de6-aeb9-46ff-a46d-893ac56a32a2"}}},{"type":"Polygon Vertex","name":"SMA 1000 End","id":"e781d4f3-58b9-4fce-82aa-27b669582090","savedPayload":{"position":{"x":11856.589858642468,"y":14759.053526369356},"targetPosition":{"x":11310.25993739503,"y":15336.502530605925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"SMA 1000 End","id":"e518b92f-f678-4868-ae0c-a0bd31f480eb"}}}],"id":"8042e9e4-b3be-4d8b-94bc-558b8b97a3f0","savedPayload":{"position":{"x":11310.25993739503,"y":15336.502530605925},"targetPosition":{"x":10464.185647386725,"y":16682.654734791136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"9847b54e-34cd-4a44-b43f-be3c091f5ec0","savedPayload":{"position":{"x":10464.185647386725,"y":16682.654734791136},"targetPosition":{"x":11584.304220456166,"y":17802.78630970266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"SMA Base 5","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"SMA 5","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma5","id":"5c11d2b4-671b-42ec-88b0-9dbbf0ba5a57","savedPayload":{"position":{"x":11314.569814847871,"y":17255.7475585118},"targetPosition":{"x":11438.371539225029,"y":17019.99586448666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ec513f64-7c7c-4693-ac51-b2e36f2f858c","savedPayload":{"position":{"x":11438.371539225029,"y":17019.99586448666},"targetPosition":{"x":11583.941529724021,"y":16742.191779462733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 10","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma10","id":"5e333385-55ff-48d1-abb0-0757ef26a20c","savedPayload":{"position":{"x":11102.539236928993,"y":17074.065084205246},"targetPosition":{"x":11321.67460031888,"y":16923.08185225503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c599221d-9b35-48c5-bb4d-4c4fd0c8c4e8","savedPayload":{"position":{"x":11321.67460031888,"y":16923.08185225503},"targetPosition":{"x":11583.941529724021,"y":16742.191779462733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 15","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma15","id":"0cb3bdcb-7c0b-4cfa-9357-0b142c1e230b","savedPayload":{"position":{"x":11008.640822118092,"y":16811.5477765058},"targetPosition":{"x":11273.112465901015,"y":16779.695659497633},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f3ff46f2-80e9-458f-b7ca-8f0fe7c7cff2","savedPayload":{"position":{"x":11273.112465901015,"y":16779.695659497633},"targetPosition":{"x":11583.941529724021,"y":16742.191779462733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 20","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma20","id":"8dc1f569-2c1e-4842-b135-528ba461ca30","savedPayload":{"position":{"x":11041.778393318515,"y":16536.620646698884},"targetPosition":{"x":11291.470805190942,"y":16631.29218114058},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"14a4ef21-076b-418a-98a6-7b3ff64f2a9f","savedPayload":{"position":{"x":11291.470805190942,"y":16631.29218114058},"targetPosition":{"x":11583.941529724021,"y":16742.191779462733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 25","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma25","id":"2d76e840-cdda-48e8-9290-342c2a143b6d","savedPayload":{"position":{"x":11200.254787979784,"y":16309.006874866069},"targetPosition":{"x":11376.30869682204,"y":16507.776289896174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d8d31fc6-55db-4a89-bcc8-4e33a3583542","savedPayload":{"position":{"x":11376.30869682204,"y":16507.776289896174},"targetPosition":{"x":11583.941529724021,"y":16742.191779462733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 50","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma50","id":"9a0af05e-b760-4a22-85ab-8b3c64b3ef29","savedPayload":{"position":{"x":11445.260442586927,"y":16178.86583657123},"targetPosition":{"x":11509.30478131644,"y":16439.069948447548},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"48d5643b-e652-4c4d-b7cf-37e9656bfd43","savedPayload":{"position":{"x":11509.30478131644,"y":16439.069948447548},"targetPosition":{"x":11583.941529724021,"y":16742.191779462733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 100","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma100","id":"1987b0ae-9510-45e9-b7ed-3802c3f28e1d","savedPayload":{"position":{"x":11722.062620611485,"y":16180.215102848057},"targetPosition":{"x":11658.81565868019,"y":16437.587790817925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4ad1bbaa-2c37-4009-bbdd-d154be78b2d0","savedPayload":{"position":{"x":11658.81565868019,"y":16437.587790817925},"targetPosition":{"x":11583.941529724021,"y":16742.191779462733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 150","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma150","id":"611d7c8b-2cb8-412b-bd1b-2a04b3a796c0","savedPayload":{"position":{"x":11967.643645003891,"y":16308.66852156722},"targetPosition":{"x":11790.95207681339,"y":16508.302633851992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8ef64a02-b88d-4635-8d88-99121a55ed73","savedPayload":{"position":{"x":11790.95207681339,"y":16508.302633851992},"targetPosition":{"x":11583.941529724021,"y":16742.191779462733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 200","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma200","id":"d8bbc57a-1eda-43c8-a865-1ceeb879a755","savedPayload":{"position":{"x":12125.572631055018,"y":16536.668695824956},"targetPosition":{"x":11876.45498648051,"y":16631.196612699347},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"06680ab8-0ec9-448e-9854-97bf413f4133","savedPayload":{"position":{"x":11876.45498648051,"y":16631.196612699347},"targetPosition":{"x":11583.941529724021,"y":16742.191779462733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 250","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma250","id":"496ce598-2c93-40df-8f2e-effaeff2b665","savedPayload":{"position":{"x":12159.211205738708,"y":16811.49057845358},"targetPosition":{"x":11895.01921667113,"y":16779.707729186706},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"503ab933-6f8f-4fcb-a0e6-ecf1b6e8b24b","savedPayload":{"position":{"x":11895.01921667113,"y":16779.707729186706},"targetPosition":{"x":11583.941529724021,"y":16742.191779462733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 500","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma500","id":"67dd80e5-30f9-48b2-b661-e40acde070cc","savedPayload":{"position":{"x":12060.423795408087,"y":17070.835695444443},"targetPosition":{"x":11842.011316350343,"y":16920.26022576025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a4ab02a6-f6c0-4b8f-98d9-e24b66e492ab","savedPayload":{"position":{"x":11842.011316350343,"y":16920.26022576025},"targetPosition":{"x":11583.941529724021,"y":16742.191779462733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"SMA 1000","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sma1000","id":"359489a0-97b9-49f8-8f35-2f6247b570a9","savedPayload":{"position":{"x":11852.543457489652,"y":17254.983143972735},"targetPosition":{"x":11729.164498565717,"y":17019.644501483603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"88560ba5-2c50-4236-90b6-47d19ac3afa5","savedPayload":{"position":{"x":11729.164498565717,"y":17019.644501483603},"targetPosition":{"x":11583.941529724021,"y":16742.191779462733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"aa2c0f1e-8a0e-4da1-97df-6815890e5770","savedPayload":{"position":{"x":11584.31003617939,"y":16744.103874993616},"targetPosition":{"x":11584.304220456166,"y":17802.78630970266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"888c381d-457d-4421-8401-a7475b42ff03","savedPayload":{"position":{"x":12124.101328139192,"y":18190.896482083226},"targetPosition":{"x":12424.206554116216,"y":18710.734611771542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9b2443b7-9276-4fa3-b4b3-b9b991d886d8","savedPayload":{"position":{"x":12369.069081443851,"y":18710.731620347717},"targetPosition":{"x":12824.153406676238,"y":18710.73255185816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"RSI","config":"{\n\"codeName\": \"Plotter RSI\"\n}","modules":[{"type":"Plotter Module","name":"RSI 14","config":"{\n\t\"codeName\": \"RSI 14\",\n\t\"slot\": {\n\t\t\"number\": 3,\n\t\t\"minValue\": 0,\n\t\t\"maxValue\": 100\n\t},\n \"banner\": \"Oscillator\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"Grid","points":[{"type":"Point","name":"Begin 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"88e15149-215e-42c8-bc00-78b63343daa0","savedPayload":{"position":{"x":11078.946989626109,"y":17559.955622255628},"targetPosition":{"x":11130.002874627402,"y":17690.042902995952},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e376a028-b688-4bb5-a100-00be6d161bd6","savedPayload":{"position":{"x":11130.002874627402,"y":17690.042902995952},"targetPosition":{"x":11203.414792488265,"y":17813.374523192248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"6904030c-e751-4eb9-844a-d1cf45caa1f2","savedPayload":{"position":{"x":11182.353135389347,"y":17511.794959254126},"targetPosition":{"x":11184.80837388598,"y":17655.617347596468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f562d9d7-357b-4677-ac4b-3ddbb735ca2b","savedPayload":{"position":{"x":11184.80837388598,"y":17655.617347596468},"targetPosition":{"x":11203.414792488265,"y":17813.374523192248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 20","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 20","id":"4fc2797d-7023-461e-912e-23f2834d4141","savedPayload":{"position":{"x":11277.123846389886,"y":17548.396855686842},"targetPosition":{"x":11234.856220778665,"y":17680.40621356719},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8227114d-f503-4f27-ae0b-4bc2804e2cdb","savedPayload":{"position":{"x":11234.856220778665,"y":17680.40621356719},"targetPosition":{"x":11203.414792488265,"y":17813.374523192248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 20","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 20","id":"e6640285-69e5-4a37-8907-9d8bbcc2008b","savedPayload":{"position":{"x":11404.277976894175,"y":17573.12359689318},"targetPosition":{"x":11315.914749849248,"y":17688.737468285955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c9de9989-11da-44a7-bcbf-137435767d90","savedPayload":{"position":{"x":11315.914749849248,"y":17688.737468285955},"targetPosition":{"x":11203.414792488265,"y":17813.374523192248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 30","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 30","id":"db815155-dbec-4824-9132-470a173d328b","savedPayload":{"position":{"x":11410.210385080687,"y":17666.946664081},"targetPosition":{"x":11264.966398076425,"y":17764.421980094055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0f0a70c3-9f37-4e58-a93c-fcfcf9686c09","savedPayload":{"position":{"x":11264.966398076425,"y":17764.421980094055},"targetPosition":{"x":11203.414792488265,"y":17813.374523192248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 30","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 30","id":"db6c3539-81f5-465d-9d79-8004a60ac5fb","savedPayload":{"position":{"x":11479.000881428785,"y":17741.176139775835},"targetPosition":{"x":11377.609680244657,"y":17762.700908591287},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ac82bb81-5d37-4eea-ab52-0f698de71014","savedPayload":{"position":{"x":11377.609680244657,"y":17762.700908591287},"targetPosition":{"x":11203.414792488265,"y":17813.374523192248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 50","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 50","id":"a6a8718f-2c9a-4c5f-af7a-7029bddfb839","savedPayload":{"position":{"x":11432.31850696678,"y":17856.40258671872},"targetPosition":{"x":11304.130427920381,"y":17818.14861621234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a0cdc721-996a-44b2-b619-bbc0ef97cd62","savedPayload":{"position":{"x":11304.130427920381,"y":17818.14861621234},"targetPosition":{"x":11203.414792488265,"y":17813.374523192248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 50","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 50","id":"c996c1b4-2b1f-4d11-acd4-8aba4d3e3e5d","savedPayload":{"position":{"x":11475.351176517806,"y":17958.32262804593},"targetPosition":{"x":11351.015937551632,"y":17909.74022808284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"59a77a0b-bcee-4c1e-855c-854c3d3bc521","savedPayload":{"position":{"x":11351.015937551632,"y":17909.74022808284},"targetPosition":{"x":11203.414792488265,"y":17813.374523192248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 70","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 70","id":"bdcd3323-0da6-4667-95c2-b017623500af","savedPayload":{"position":{"x":11381.282390507937,"y":18005.071760274168},"targetPosition":{"x":11273.405454535949,"y":17882.682375721088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"228edebc-3b5b-4760-9791-2229cb76a662","savedPayload":{"position":{"x":11273.405454535949,"y":17882.682375721088},"targetPosition":{"x":11203.414792488265,"y":17813.374523192248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 70","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 70","id":"9977888b-2cf4-472e-8468-d6705690a57c","savedPayload":{"position":{"x":11302.455787085199,"y":18090.75650386037},"targetPosition":{"x":11269.200653845133,"y":17984.370391016204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4cbfd9aa-d595-4e06-ac82-a87bfdf9f680","savedPayload":{"position":{"x":11269.200653845133,"y":17984.370391016204},"targetPosition":{"x":11203.414792488265,"y":17813.374523192248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 80","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 80","id":"75cda528-f689-4d21-a8ed-ba08705d5ec7","savedPayload":{"position":{"x":11179.447900751571,"y":18022.18125563961},"targetPosition":{"x":11205.670407972824,"y":17888.95714164306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e7b453a3-5312-48e6-8797-6d96e058766b","savedPayload":{"position":{"x":11205.670407972824,"y":17888.95714164306},"targetPosition":{"x":11203.414792488265,"y":17813.374523192248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Eng 80","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 80","id":"df4c7f58-96c7-4ffb-9ce3-ff1b35ddf3c3","savedPayload":{"position":{"x":11048.95530956979,"y":18117.29532871257},"targetPosition":{"x":11121.293786490654,"y":17997.105395834664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d64e2ceb-abb9-4cc0-b929-211bcbd934a7","savedPayload":{"position":{"x":11121.293786490654,"y":17997.105395834664},"targetPosition":{"x":11203.414792488265,"y":17813.374523192248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 100","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 100","id":"79f20ec4-c499-41ca-aa79-f56fe5b7bcbc","savedPayload":{"position":{"x":11034.56049509183,"y":17939.335596770685},"targetPosition":{"x":11153.164023178864,"y":17863.833756339638},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7d5d4922-1d7d-45a3-b5ff-75d14016ee1d","savedPayload":{"position":{"x":11153.164023178864,"y":17863.833756339638},"targetPosition":{"x":11203.414792488265,"y":17813.374523192248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 100","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 100","id":"58d10fb8-87e5-4a4c-95ab-99be2f5b14ea","savedPayload":{"position":{"x":10925.813886724149,"y":17903.916062850203},"targetPosition":{"x":11038.060098483382,"y":17872.521429510223},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dc11ae4c-bce1-4e88-986a-457a3612102a","savedPayload":{"position":{"x":11038.060098483382,"y":17872.521429510223},"targetPosition":{"x":11203.414792488265,"y":17813.374523192248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"RSI Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.value","id":"e068d3fa-623c-4349-a10f-4abdd6263b07","savedPayload":{"position":{"x":10968.696551895557,"y":17794.356137276678},"targetPosition":{"x":11134.193624872298,"y":17790.05415498021},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7f687c2f-3a91-4b53-b00d-8a651e82c97d","savedPayload":{"position":{"x":11134.193624872298,"y":17790.05415498021},"targetPosition":{"x":11203.414792488265,"y":17813.374523192248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"RSI End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.value","id":"bb45d3f0-e6e7-473a-b2f4-7016c65bd7ee","savedPayload":{"position":{"x":10950.643640192882,"y":17696.39609908415},"targetPosition":{"x":11063.138850159232,"y":17757.369280872477},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f5d97a45-0db5-4d48-bf32-efdd6b2726c0","savedPayload":{"position":{"x":11063.138850159232,"y":17757.369280872477},"targetPosition":{"x":11203.414792488265,"y":17813.374523192248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ff9f35c7-b1ca-446e-905c-c971ca51dfbe","savedPayload":{"position":{"x":11203.414792488265,"y":17813.374523192248},"targetPosition":{"x":10819.456143684829,"y":17458.105303941884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Box 0-20","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.25,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.35,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"9e7202ce-11e7-4526-80d5-52f0dbdcb91c","savedPayload":{"position":{"x":10266.459377706122,"y":18728.030071408433},"targetPosition":{"x":10188.797093704265,"y":18477.670652567955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"8716fe80-7aa5-4707-93d9-f47ac26e9a53","savedPayload":{"position":{"x":10188.797093704265,"y":18477.670652567955},"targetPosition":{"x":10110.745536788187,"y":18227.20591008804},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 0","id":"89a7b82e-5d1d-4359-80a8-0b85d997a62c","savedPayload":{"position":{"x":10053.247318493502,"y":18483.376513611503},"targetPosition":{"x":10110.745536788187,"y":18227.20591008804},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 0","id":"e376a028-b688-4bb5-a100-00be6d161bd6"}}},{"type":"Polygon Vertex","name":"End 0","id":"4ddfe945-d3dd-431a-a0bf-477d2f0c0af1","savedPayload":{"position":{"x":9933.044369382986,"y":18420.40768768195},"targetPosition":{"x":10110.745536788187,"y":18227.20591008804},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 0","id":"f562d9d7-357b-4677-ac4b-3ddbb735ca2b"}}},{"type":"Polygon Vertex","name":"End 20","id":"1fd4c8e3-47e3-4e05-8739-a34e8239b178","savedPayload":{"position":{"x":9860.437668284036,"y":18305.676418072577},"targetPosition":{"x":10110.745536788187,"y":18227.20591008804},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 20","id":"c9de9989-11da-44a7-bcbf-137435767d90"}}},{"type":"Polygon Vertex","name":"Begin 20","id":"2920b1c1-1d61-44b8-b31a-31e2d87fa9e4","savedPayload":{"position":{"x":9857.601005991057,"y":18169.871684557274},"targetPosition":{"x":10110.745536788187,"y":18227.20591008804},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 20","id":"8227114d-f503-4f27-ae0b-4bc2804e2cdb"}}}],"id":"0dce63e6-acf6-482e-bcf9-3e44b7487cbf","savedPayload":{"position":{"x":10110.745536788187,"y":18227.20591008804},"targetPosition":{"x":10819.456143684829,"y":17458.105303941884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Box 80-100","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.25,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.35,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"f95287c0-8123-4025-8018-370eb91b6189","savedPayload":{"position":{"x":9596.163629582834,"y":18737.8716441884},"targetPosition":{"x":9713.397881288232,"y":18503.30512617228},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"c46a4519-e917-410e-98d7-faf0ad80a99a","savedPayload":{"position":{"x":9713.397881288232,"y":18503.30512617228},"targetPosition":{"x":9947.275667845772,"y":18034.72177110188},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 80","id":"eb76ec36-eae3-424a-9105-d26eefca1b67","savedPayload":{"position":{"x":9599.892279513306,"y":18426.677830852983},"targetPosition":{"x":9947.275667845772,"y":18034.72177110188},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 80","id":"e7b453a3-5312-48e6-8797-6d96e058766b"}}},{"type":"Polygon Vertex","name":"Eng 80","id":"6facb2b7-b324-4e01-a53f-5d72541ba64f","savedPayload":{"position":{"x":9510.249063215046,"y":18323.462185951343},"targetPosition":{"x":9947.275667845772,"y":18034.72177110188},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Eng 80","id":"d64e2ceb-abb9-4cc0-b929-211bcbd934a7"}}},{"type":"Polygon Vertex","name":"End 100","id":"2e7bfaf4-7828-4021-9895-58882a03987e","savedPayload":{"position":{"x":9450.381120915166,"y":18200.594544361586},"targetPosition":{"x":9947.275667845772,"y":18034.72177110188},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 100","id":"dc11ae4c-bce1-4e88-986a-457a3612102a"}}},{"type":"Polygon Vertex","name":"Begin 100","id":"d2a601ff-7a5d-414e-bc06-be93e13e6ddb","savedPayload":{"position":{"x":9424.34663271623,"y":18066.346622681653},"targetPosition":{"x":9947.275667845772,"y":18034.72177110188},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 100","id":"7d5d4922-1d7d-45a3-b5ff-75d14016ee1d"}}}],"id":"2429edaa-20db-4fd9-b834-c84953e78bf3","savedPayload":{"position":{"x":9947.275667845772,"y":18034.72177110188},"targetPosition":{"x":10819.456143684829,"y":17458.105303941884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Box 20-30","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.15,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"f1ac3d45-3f00-4269-a41f-872bcbc99620","savedPayload":{"position":{"x":9759.726951015293,"y":18196.584509076616},"targetPosition":{"x":9786.537808952455,"y":18066.49132424239},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"1aa28d17-1653-496a-8b8a-35fdf6691e0b","savedPayload":{"position":{"x":9786.537808952455,"y":18066.49132424239},"targetPosition":{"x":9834.334964340565,"y":17809.06861099799},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 20","id":"2e88069b-6333-45f8-8199-021fe3896667","savedPayload":{"position":{"x":9663.925747835749,"y":18008.70493851861},"targetPosition":{"x":9834.334964340565,"y":17809.06861099799},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 20","id":"8227114d-f503-4f27-ae0b-4bc2804e2cdb"}}},{"type":"Polygon Vertex","name":"End 20","id":"cdea2bf9-a545-4877-8d65-5a027352bb8a","savedPayload":{"position":{"x":9586.87666837207,"y":17897.185396191944},"targetPosition":{"x":9834.334964340565,"y":17809.06861099799},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 20","id":"c9de9989-11da-44a7-bcbf-137435767d90"}}},{"type":"Polygon Vertex","name":"End 30","id":"bfb22589-c1af-4822-8944-1767e3e691bc","savedPayload":{"position":{"x":9581.633939325939,"y":17788.234947364464},"targetPosition":{"x":9834.334964340565,"y":17809.06861099799},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 30","id":"ac82bb81-5d37-4eea-ab52-0f698de71014"}}},{"type":"Polygon Vertex","name":"Begin 30","id":"208c9dfc-a7fb-41ab-becc-3b68104e07ed","savedPayload":{"position":{"x":9639.236833480218,"y":17636.093891154553},"targetPosition":{"x":9834.334964340565,"y":17809.06861099799},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 30","id":"0f0a70c3-9f37-4e58-a93c-fcfcf9686c09"}}}],"id":"4a0db3d1-061d-4587-9c05-f42c09c0b271","savedPayload":{"position":{"x":9834.334964340565,"y":17809.06861099799},"targetPosition":{"x":10819.456143684829,"y":17458.105303941884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Box 70-80","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.15,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"6335d57f-9462-4d19-b954-2f511308b9c8","savedPayload":{"position":{"x":9342.001089166575,"y":17846.094036796152},"targetPosition":{"x":9555.115370330912,"y":17692.75665399465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"b01a727e-5773-47c2-b094-c19ad0ac71f4","savedPayload":{"position":{"x":9555.115370330912,"y":17692.75665399465},"targetPosition":{"x":9778.965297490706,"y":17562.835587891674},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 70","id":"c59e52e4-9b7e-4985-ab53-35f5cd29f250","savedPayload":{"position":{"x":9289.003996845478,"y":17748.2986472087},"targetPosition":{"x":9778.965297490706,"y":17562.835587891674},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 70","id":"228edebc-3b5b-4760-9791-2229cb76a662"}}},{"type":"Polygon Vertex","name":"End 70","id":"957f8c1e-cb14-4241-b805-abfdc50c07d0","savedPayload":{"position":{"x":9257.681180932219,"y":17615.25645355395},"targetPosition":{"x":9778.965297490706,"y":17562.835587891674},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 70","id":"4cbfd9aa-d595-4e06-ac82-a87bfdf9f680"}}},{"type":"Polygon Vertex","name":"Eng 80","id":"37688deb-5377-4f52-bde8-5e8abbf6e25f","savedPayload":{"position":{"x":9250.424462132416,"y":17508.451806175875},"targetPosition":{"x":9778.965297490706,"y":17562.835587891674},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Eng 80","id":"d64e2ceb-abb9-4cc0-b929-211bcbd934a7"}}},{"type":"Polygon Vertex","name":"Begin 80","id":"6d346213-f33f-4b5a-a519-5e1c3fb42e50","savedPayload":{"position":{"x":9305.364288139948,"y":17329.16883396939},"targetPosition":{"x":9778.965297490706,"y":17562.835587891674},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 80","id":"e7b453a3-5312-48e6-8797-6d96e058766b"}}}],"id":"5835d367-23bc-4039-b2c1-1a23f3ca652f","savedPayload":{"position":{"x":9778.965297490706,"y":17562.835587891674},"targetPosition":{"x":10819.456143684829,"y":17458.105303941884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.15,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"6ad882da-10d9-427c-8fb5-3a7c55b678a1","savedPayload":{"position":{"x":9282.859607989305,"y":17430.15701625634},"targetPosition":{"x":9529.693299169297,"y":17376.240779442607},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"fa05777f-6288-4dd2-9b7a-61194bc43681","savedPayload":{"position":{"x":9529.693299169297,"y":17376.240779442607},"targetPosition":{"x":9783.821077715658,"y":17310.990174988943},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 20","id":"a9a9dd2d-d7f8-4a25-b81d-d1e2a2f9d5a6","savedPayload":{"position":{"x":9523.924417271863,"y":17274.0239729387},"targetPosition":{"x":9783.821077715658,"y":17310.990174988943},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 20","id":"8227114d-f503-4f27-ae0b-4bc2804e2cdb"}}},{"type":"Polygon Vertex","name":"End 20","id":"a717c7d2-3bc7-4d8c-9e9f-e1fb75fd0d42","savedPayload":{"position":{"x":9558.117245362026,"y":17177.192448765087},"targetPosition":{"x":9783.821077715658,"y":17310.990174988943},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 20","id":"c9de9989-11da-44a7-bcbf-137435767d90"}}}],"id":"27aab97e-ce7f-47fc-bd22-d9b70ffec2d1","savedPayload":{"position":{"x":9783.821077715658,"y":17310.990174988943},"targetPosition":{"x":10819.456143684829,"y":17458.105303941884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 30","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"0b1d6f25-076c-4495-b462-435a8d1900d2","savedPayload":{"position":{"x":9194.041341297945,"y":17073.134291667164},"targetPosition":{"x":9325.438679223449,"y":17072.4597685291},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6cb61271-a82a-47a1-ac0c-404dc28b05e5","savedPayload":{"position":{"x":9325.438679223449,"y":17072.4597685291},"targetPosition":{"x":9849.10382509227,"y":17067.514637950142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"End 30","id":"e656c0ce-1b57-420e-84f5-cd62a9bb602d","savedPayload":{"position":{"x":9363.24104149944,"y":16872.06273786901},"targetPosition":{"x":9849.10382509227,"y":17067.514637950142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 30","id":"ac82bb81-5d37-4eea-ab52-0f698de71014"}}},{"type":"Polygon Vertex","name":"Begin 30","id":"8e2ee705-7be7-4705-a32f-242a5c1d286d","savedPayload":{"position":{"x":9492.660335988503,"y":16669.80455830182},"targetPosition":{"x":9849.10382509227,"y":17067.514637950142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 30","id":"0f0a70c3-9f37-4e58-a93c-fcfcf9686c09"}}}],"id":"18e4afd3-7536-405b-97b6-d36ec7ddc692","savedPayload":{"position":{"x":9849.10382509227,"y":17067.514637950142},"targetPosition":{"x":10819.456143684829,"y":17458.105303941884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 50","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"68ca10ec-d83d-4f61-b9ee-6a0f3a74cb12","savedPayload":{"position":{"x":9442.569790800584,"y":16757.460059197336},"targetPosition":{"x":9715.352384308744,"y":16786.765310135586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"fefbf0c0-287c-4bb7-81a7-6b745dcfcf3b","savedPayload":{"position":{"x":9715.352384308744,"y":16786.765310135586},"targetPosition":{"x":9970.792821089677,"y":16846.71759583377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 50","id":"cfa25adf-05eb-49d0-956a-69e4fde9bacf","savedPayload":{"position":{"x":9757.885543767212,"y":16693.28185484328},"targetPosition":{"x":9970.792821089677,"y":16846.71759583377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 50","id":"a0cdc721-996a-44b2-b619-bbc0ef97cd62"}}},{"type":"Polygon Vertex","name":"End 50","id":"de1447aa-e70f-419b-bab5-d94b333612c7","savedPayload":{"position":{"x":9833.138666703782,"y":16623.30322043414},"targetPosition":{"x":9970.792821089677,"y":16846.71759583377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 50","id":"59a77a0b-bcee-4c1e-855c-854c3d3bc521"}}}],"id":"bbe48886-b71e-4507-b6e8-7f073b691a6a","savedPayload":{"position":{"x":9970.792821089677,"y":16846.71759583377},"targetPosition":{"x":10819.456143684829,"y":17458.105303941884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 70","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"913293ac-040f-4348-ade4-5b3103fe1375","savedPayload":{"position":{"x":9442.322783021833,"y":16302.914979391513},"targetPosition":{"x":9675.77065408221,"y":16422.595771514447},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"8640a48e-f7ca-419c-a687-3f52c3a5afa9","savedPayload":{"position":{"x":9675.77065408221,"y":16422.595771514447},"targetPosition":{"x":10141.829509763573,"y":16661.353396466464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"End 70","id":"bc77b107-0a70-4038-86a6-3034ab4e86dd","savedPayload":{"position":{"x":9802.428606764553,"y":16262.11626387863},"targetPosition":{"x":10141.829509763573,"y":16661.353396466464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 70","id":"4cbfd9aa-d595-4e06-ac82-a87bfdf9f680"}}},{"type":"Polygon Vertex","name":"Begin 70","id":"36882cd2-2ec4-4d2d-af00-98b4c54bf1e7","savedPayload":{"position":{"x":9980.981818575243,"y":16163.030624728319},"targetPosition":{"x":10141.829509763573,"y":16661.353396466464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 70","id":"228edebc-3b5b-4760-9791-2229cb76a662"}}}],"id":"508b71cf-79d3-4db4-a6d3-0b26226ad5b9","savedPayload":{"position":{"x":10141.829509763573,"y":16661.353396466464},"targetPosition":{"x":10819.456143684829,"y":17458.105303941884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 80","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.15,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"9506c6ad-440b-45a1-aadf-89004f5311fb","savedPayload":{"position":{"x":9855.252768269389,"y":16355.873146381884},"targetPosition":{"x":10103.671044896631,"y":16438.972754846473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"59804538-89e9-485a-a2b1-88ff78eb5661","savedPayload":{"position":{"x":10103.671044896631,"y":16438.972754846473},"targetPosition":{"x":10352.239311877182,"y":16522.342518329027},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 80","id":"23df3ac4-6427-4a69-a5a3-8230186b46f3","savedPayload":{"position":{"x":10235.021983681932,"y":16287.557938610842},"targetPosition":{"x":10352.239311877182,"y":16522.342518329027},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 80","id":"e7b453a3-5312-48e6-8797-6d96e058766b"}}},{"type":"Polygon Vertex","name":"Eng 80","id":"7a5139be-30b6-4eab-994a-bb8b74be455d","savedPayload":{"position":{"x":10432.83175932101,"y":16275.157293627486},"targetPosition":{"x":10352.239311877182,"y":16522.342518329027},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Eng 80","id":"d64e2ceb-abb9-4cc0-b929-211bcbd934a7"}}}],"id":"8499947d-a392-40ed-be9d-225a28429642","savedPayload":{"position":{"x":10352.239311877182,"y":16522.342518329027},"targetPosition":{"x":10819.456143684829,"y":17458.105303941884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"RSI Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"90fe9ece-e33a-4e2e-904a-779327e7155a","savedPayload":{"position":{"x":10086.94831009226,"y":15841.998738069415},"targetPosition":{"x":10288.439530426649,"y":16009.93546831993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"(record.previous.value < 20 && record.value < 20) || (record.previous.value > 80 && record.value > 80)","style":{"type":"Style","name":"New Style","config":"{\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n}","id":"58f58e7a-3056-49c7-9117-f2a514d4479e","savedPayload":{"position":{"x":10107.819613410496,"y":15517.48567156448},"targetPosition":{"x":10198.225068509933,"y":15763.620268327395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9fcf2614-7ec8-407f-93a2-3c749f6683ef","savedPayload":{"position":{"x":10198.225068509933,"y":15763.620268327395},"targetPosition":{"x":10288.439530426649,"y":16009.93546831993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6dc77d6e-5aa6-41ab-b247-43c4391fcc96","savedPayload":{"position":{"x":10288.439530426649,"y":16009.93546831993},"targetPosition":{"x":10589.930554132987,"y":16437.845961748393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"RSI Begin","id":"5312ee43-9c15-4d4b-9255-5fb7259c5734","savedPayload":{"position":{"x":10475.186490074773,"y":15926.932655206638},"targetPosition":{"x":10589.930554132987,"y":16437.845961748393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"RSI Begin","id":"7f687c2f-3a91-4b53-b00d-8a651e82c97d"}}},{"type":"Polygon Vertex","name":"RSI End","id":"01981eaa-b1c6-41e1-84b4-2dc8106ac095","savedPayload":{"position":{"x":10679.08695770829,"y":15921.761645611638},"targetPosition":{"x":10589.930554132987,"y":16437.845961748393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"RSI End","id":"f5d97a45-0db5-4d48-bf32-efdd6b2726c0"}}}],"id":"e8eb9949-277b-4493-a9f4-cbcb502aacbc","savedPayload":{"position":{"x":10589.930554132987,"y":16437.845961748393},"targetPosition":{"x":10819.456143684829,"y":17458.105303941884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Box 30-70","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.05,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.1,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"5b04f4bb-2cc4-48a5-b421-667c96b2dd27","savedPayload":{"position":{"x":10506.98588332773,"y":16206.35046304628},"targetPosition":{"x":10617.100531761627,"y":16276.338707304903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"208ca141-b231-4a70-8b31-eeae09576822","savedPayload":{"position":{"x":10617.100531761627,"y":16276.338707304903},"targetPosition":{"x":10840.940144818846,"y":16412.35940283603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 30","id":"7956c253-3704-46c0-b188-f6662bb58904","savedPayload":{"position":{"x":10715.017618836862,"y":16182.255946258223},"targetPosition":{"x":10840.940144818846,"y":16412.35940283603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 30","id":"0f0a70c3-9f37-4e58-a93c-fcfcf9686c09"}}},{"type":"Polygon Vertex","name":"End 30","id":"b043ae0f-a172-4ebe-922b-a895b8a888c9","savedPayload":{"position":{"x":10846.455981034103,"y":16149.81021641953},"targetPosition":{"x":10840.940144818846,"y":16412.35940283603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 30","id":"ac82bb81-5d37-4eea-ab52-0f698de71014"}}},{"type":"Polygon Vertex","name":"End 70","id":"5830f66c-dca5-4f62-8102-d7d8ea588d0d","savedPayload":{"position":{"x":10976.816392955681,"y":16187.679575646775},"targetPosition":{"x":10840.940144818846,"y":16412.35940283603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 70","id":"4cbfd9aa-d595-4e06-ac82-a87bfdf9f680"}}},{"type":"Polygon Vertex","name":"Begin 70","id":"a8eb0500-2421-4879-9459-2ecdb4ae09d5","savedPayload":{"position":{"x":11070.849518522062,"y":16285.870587185484},"targetPosition":{"x":10840.940144818846,"y":16412.35940283603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 70","id":"228edebc-3b5b-4760-9791-2229cb76a662"}}}],"id":"b294fd86-15d6-4bc8-9379-0532df288eee","savedPayload":{"position":{"x":10840.940144818846,"y":16412.35940283603},"targetPosition":{"x":10819.456143684829,"y":17458.105303941884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"bc1170cc-a04b-4453-bd28-0e522f747617","savedPayload":{"position":{"x":10819.456143684829,"y":17458.105303941884},"targetPosition":{"x":11829.887183004508,"y":17729.736173372014},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"RSI 14","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"RSI 14","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.value","id":"fbec83cc-a090-491b-8cfb-833d40b2b843","savedPayload":{"position":{"x":11656.955398044951,"y":17075.218045539314},"targetPosition":{"x":11701.461842121678,"y":17244.336173038453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e5fd8d57-8920-417e-8b9b-c1e0d6868a7a","savedPayload":{"position":{"x":11701.461842121678,"y":17244.336173038453},"targetPosition":{"x":11745.986299070371,"y":17413.540272343762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ff06d653-f886-44f4-8b28-82bab51aa98d","savedPayload":{"position":{"x":11745.986299070371,"y":17413.540272343762},"targetPosition":{"x":11829.887183004508,"y":17729.736173372014},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"72403d40-2a64-4e51-8eaf-b1a872e4474e","savedPayload":{"position":{"x":12231.516630943917,"y":18117.717583339156},"targetPosition":{"x":12541.05260058979,"y":18427.590659682006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"bbc529df-b938-47b5-8cb7-a5579c859b99","savedPayload":{"position":{"x":12502.31701694956,"y":18388.914455401115},"targetPosition":{"x":12824.153406676238,"y":18710.73255185816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"MACD","config":"{\n\"codeName\": \"Plotter-MACD\"\n}","modules":[{"type":"Plotter Module","name":"MACD 122609","config":"{\n\t\"codeName\": \"Module-MACD-122609\",\n \"icon\": \"histogram\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.line","id":"013bf1cc-f8e0-4355-9690-6fb63ca3d103","savedPayload":{"position":{"x":11995.194328663418,"y":17564.989740102723},"targetPosition":{"x":12013.021538759205,"y":17915.802173218686},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"94440a25-a6c7-4e2d-a254-6479c643ff09","savedPayload":{"position":{"x":12013.021538759205,"y":17915.802173218686},"targetPosition":{"x":11935.988764217522,"y":18214.087064798387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.line","id":"3c8d9416-40db-43cd-a0ae-07a9e0635ef7","savedPayload":{"position":{"x":12534.950929574965,"y":17957.064300909522},"targetPosition":{"x":12195.34595329589,"y":18048.88399254602},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0b988153-3df8-402b-9c04-7e74699887f7","savedPayload":{"position":{"x":12195.34595329589,"y":18048.88399254602},"targetPosition":{"x":11935.988764217522,"y":18214.087064798387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Signal Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.signal","id":"91037bb8-b0c7-4967-9706-9ead7aaecd8b","savedPayload":{"position":{"x":12537.9854623648,"y":18291.303830250075},"targetPosition":{"x":12221.427969237158,"y":18258.108729268475},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"365f7baa-2fd3-48cc-aaff-24844093e7eb","savedPayload":{"position":{"x":12221.427969237158,"y":18258.108729268475},"targetPosition":{"x":11935.988764217522,"y":18214.087064798387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Signal End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.signal","id":"39df31ee-2e46-4a02-a8fb-8629589eb362","savedPayload":{"position":{"x":12377.555431681662,"y":18672.034319600254},"targetPosition":{"x":12156.759846882715,"y":18443.10851242834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4c82a32a-feff-405d-bc3f-036793beee1b","savedPayload":{"position":{"x":12156.759846882715,"y":18443.10851242834},"targetPosition":{"x":11935.988764217522,"y":18214.087064798387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"5522b77c-b212-4da0-b875-ec3ed641d6b9","savedPayload":{"position":{"x":11979.78478138755,"y":18849.295656214956},"targetPosition":{"x":11957.861971161126,"y":18531.36435935035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c0cd1824-c456-4b8a-ba66-d74f5141f9d1","savedPayload":{"position":{"x":11957.861971161126,"y":18531.36435935035},"targetPosition":{"x":11935.988764217522,"y":18214.087064798387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"0f1eceef-4664-4e5f-9f78-1e16eea87c82","savedPayload":{"position":{"x":11561.503930055735,"y":18729.080555666216},"targetPosition":{"x":11748.711902237419,"y":18471.51515114751},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"580f0304-770f-4fe3-aa42-8e8556096b71","savedPayload":{"position":{"x":11748.711902237419,"y":18471.51515114751},"targetPosition":{"x":11935.988764217522,"y":18214.087064798387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = (record.end - record.begin)/2 + record.begin\ny = 0","id":"266e904b-ce67-4b66-9474-4a4b030e055c","savedPayload":{"position":{"x":11318.239723874654,"y":18368.169105113284},"targetPosition":{"x":11627.054609560875,"y":18291.09769855866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ceed0b7c-ddfd-4395-ba25-d85353ed9b0c","savedPayload":{"position":{"x":11627.054609560875,"y":18291.09769855866},"targetPosition":{"x":11935.988764217522,"y":18214.087064798387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Histogram","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = (record.end - record.begin)/2 + record.begin\ny = record.histogram","id":"82de3468-fabd-41ab-bb34-aa7be6f9a564","savedPayload":{"position":{"x":11363.978549425907,"y":17935.51779376845},"targetPosition":{"x":11649.893895269777,"y":18074.720251104423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"274108bd-33fb-46a0-b744-6500621a56c6","savedPayload":{"position":{"x":11649.893895269777,"y":18074.720251104423},"targetPosition":{"x":11935.988764217522,"y":18214.087064798387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f2b8d463-e10e-4db3-b2b8-ed4d4a980312","savedPayload":{"position":{"x":11935.988764217522,"y":18214.087064798387},"targetPosition":{"x":11677.651016685084,"y":17633.49873084153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Line Zero","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"eb2c7353-ba05-45d2-8abf-e605899e2c25","savedPayload":{"position":{"x":10658.419175931098,"y":18354.155562733038},"targetPosition":{"x":10877.492684805611,"y":18123.379672903473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"35816f89-9448-4bd4-89fe-2d6a626c127e","savedPayload":{"position":{"x":10877.492684805611,"y":18123.379672903473},"targetPosition":{"x":11096.48129583354,"y":17892.341666684304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Zero Begin","id":"53278a2d-78c8-44f4-a450-46dd8a33967c","savedPayload":{"position":{"x":10805.623859051926,"y":18021.905834722606},"targetPosition":{"x":11096.48129583354,"y":17892.341666684304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero Begin","id":"c0cd1824-c456-4b8a-ba66-d74f5141f9d1"}}},{"type":"Polygon Vertex","name":"Zero End","id":"8e67d151-e3aa-4831-8bf8-027cfc4caa17","savedPayload":{"position":{"x":10773.848796040666,"y":17928.64667329109},"targetPosition":{"x":11096.48129583354,"y":17892.341666684304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero End","id":"580f0304-770f-4fe3-aa42-8e8556096b71"}}}],"id":"7efecae7-d203-47c5-8526-bb7135cf7581","savedPayload":{"position":{"x":11096.48129583354,"y":17892.341666684304},"targetPosition":{"x":11677.651016685084,"y":17633.49873084153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Histogram","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 1,\n \"lineWidth\": 3,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"87cb111c-9ab9-4708-a631-ea69bbe2ce9b","savedPayload":{"position":{"x":10788.95553296921,"y":17828.595373123953},"targetPosition":{"x":11056.132364921725,"y":17690.660677115462},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.histogram < 0","style":{"type":"Style","name":"New Style","config":"{\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n}","id":"2f2bb59f-6665-45c6-ab49-dc5e3c886790","savedPayload":{"position":{"x":10419.665838553186,"y":17706.856413356436},"targetPosition":{"x":10737.822977356029,"y":17698.659230499863},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5d880310-15ff-48fa-bdaa-2b5f756078ae","savedPayload":{"position":{"x":10737.822977356029,"y":17698.659230499863},"targetPosition":{"x":11056.132364921725,"y":17690.660677115462},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ccbf5840-9d7d-4ff6-9072-2d6643b10017","savedPayload":{"position":{"x":11056.132364921725,"y":17690.660677115462},"targetPosition":{"x":11361.286896899635,"y":17600.34417369337},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Zero","id":"6791722d-5183-48b7-b905-8c1604acae96","savedPayload":{"position":{"x":11044.65906372167,"y":17567.07243089109},"targetPosition":{"x":11361.286896899635,"y":17600.34417369337},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero","id":"ceed0b7c-ddfd-4395-ba25-d85353ed9b0c"}}},{"type":"Polygon Vertex","name":"Histogram","id":"0ceaf5d8-b8c7-4d39-a8b3-fd58e402cf37","savedPayload":{"position":{"x":11081.557018676374,"y":17448.440673614023},"targetPosition":{"x":11361.286896899635,"y":17600.34417369337},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Histogram","id":"274108bd-33fb-46a0-b744-6500621a56c6"}}}],"id":"e0c98602-420c-4f55-bad0-e27649a79e25","savedPayload":{"position":{"x":11361.286896899635,"y":17600.34417369337},"targetPosition":{"x":11677.651016685084,"y":17633.49873084153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"b027e8fb-cfc7-4658-89dd-28be20660c11","savedPayload":{"position":{"x":10543.838766354706,"y":17111.016858928957},"targetPosition":{"x":10853.277442990466,"y":17185.31475367571},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"29f3ad41-e970-4817-8285-732bb172e30f","savedPayload":{"position":{"x":10853.277442990466,"y":17185.31475367571},"targetPosition":{"x":11162.896636466348,"y":17259.477557519862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Line End","id":"6819d608-167a-4d7f-a636-cd4f5a01969a","savedPayload":{"position":{"x":10905.300693559018,"y":17072.313705598113},"targetPosition":{"x":11162.896636466348,"y":17259.477557519862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Line End","id":"0b988153-3df8-402b-9c04-7e74699887f7"}}},{"type":"Polygon Vertex","name":"Line Begin","id":"6d212921-f546-4874-a1ca-655ac05d6587","savedPayload":{"position":{"x":10996.573070942975,"y":16988.00646495266},"targetPosition":{"x":11162.896636466348,"y":17259.477557519862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Line Begin","id":"94440a25-a6c7-4e2d-a254-6479c643ff09"}}}],"id":"c5b15661-b8ab-46b6-bd98-9c2b74ebf550","savedPayload":{"position":{"x":11162.896636466348,"y":17259.477557519862},"targetPosition":{"x":11677.651016685084,"y":17633.49873084153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Signal","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"016d7265-d869-4534-8669-f6182a573d85","savedPayload":{"position":{"x":11086.965763339764,"y":16904.235954164607},"targetPosition":{"x":11317.606074096117,"y":17123.628836971264},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"257492c0-dffd-4e78-854d-90bbf6423652","savedPayload":{"position":{"x":11317.606074096117,"y":17123.628836971264},"targetPosition":{"x":11548.425776679136,"y":17342.771159933618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Signal End","id":"7c9842d1-9d91-49d2-bdd2-2b443b94a237","savedPayload":{"position":{"x":11419.065117982207,"y":17051.909426569942},"targetPosition":{"x":11548.425776679136,"y":17342.771159933618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Signal End","id":"4c82a32a-feff-405d-bc3f-036793beee1b"}}},{"type":"Polygon Vertex","name":"Signal Begin","id":"5f1617a3-28fe-4fbc-9e92-c466c30141a1","savedPayload":{"position":{"x":11540.393362570494,"y":17024.559274626125},"targetPosition":{"x":11548.425776679136,"y":17342.771159933618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Signal Begin","id":"365f7baa-2fd3-48cc-aaff-24844093e7eb"}}}],"id":"a783436f-fdf6-42e1-8394-633220627cf6","savedPayload":{"position":{"x":11548.425776679136,"y":17342.771159933618},"targetPosition":{"x":11677.651016685084,"y":17633.49873084153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"4c2df818-f24d-4458-84d5-eb5e50c413e5","savedPayload":{"position":{"x":11677.651016685084,"y":17633.49873084153},"targetPosition":{"x":12309.535036167812,"y":17699.886994075452},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"MACD 122609","config":"{ \n\"codeName\": \"Panel-MACD-122609\"\n}","panelData":[{"type":"Panel Data","name":"Line","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.line","id":"52edc6fd-3d02-4f47-ad41-f2937d00ff3d","savedPayload":{"position":{"x":11457.665502746086,"y":16890.43721016825},"targetPosition":{"x":11754.563874433117,"y":17004.95944659666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a39ffdbe-3b95-48b9-b8b6-a760f44def62","savedPayload":{"position":{"x":11754.563874433117,"y":17004.95944659666},"targetPosition":{"x":12051.302985598313,"y":17119.184532977204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Signal","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.signal","id":"f8089efa-fde3-41df-b096-1a00df3581ae","savedPayload":{"position":{"x":11792.805691764925,"y":16537.57385488619},"targetPosition":{"x":11922.082631617539,"y":16828.36215310923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fadd439a-0ae7-473c-940c-4e0119bfa325","savedPayload":{"position":{"x":11922.082631617539,"y":16828.36215310923},"targetPosition":{"x":12051.302985598313,"y":17119.184532977204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Histogram","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.histogram","id":"1bfbffeb-bd62-4f0e-bf46-a69d97a19af7","savedPayload":{"position":{"x":12279.345271892607,"y":16524.95970028724},"targetPosition":{"x":12165.362475919455,"y":16822.057645676887},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9b0b1888-dbfb-4ec1-ae2e-3cfa9fbd51fe","savedPayload":{"position":{"x":12165.362475919455,"y":16822.057645676887},"targetPosition":{"x":12051.302985598313,"y":17119.184532977204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"20625002-d334-440f-a473-88140625598f","savedPayload":{"position":{"x":12051.302985598313,"y":17119.184532977204},"targetPosition":{"x":12309.535036167812,"y":17699.886994075452},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fb08cb11-7983-4106-8b03-edf70baad4a0","savedPayload":{"position":{"x":12309.270256929945,"y":17700.081062902853},"targetPosition":{"x":12824.157292027643,"y":18074.15364135208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"MACD 031016","config":"{\n\t\"codeName\": \"Module-MACD-031016\",\n \"icon\": \"histogram\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.line","id":"b5d7cbce-d6e7-401c-b79e-121856736ff4","savedPayload":{"position":{"x":12455.190638772388,"y":17171.9268857264},"targetPosition":{"x":12262.827423371515,"y":17469.050555635193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1f9c9003-b080-49e5-8ab7-2b5b17086596","savedPayload":{"position":{"x":12262.827423371515,"y":17469.050555635193},"targetPosition":{"x":12023.354459959979,"y":17665.127973684725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.line","id":"032146dc-0480-4dbe-a91e-ad8067da7659","savedPayload":{"position":{"x":12677.19469443564,"y":17803.52593872232},"targetPosition":{"x":12341.845408443378,"y":17673.856977285253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aecccad2-09c2-483f-ad7e-b58d463ecc31","savedPayload":{"position":{"x":12341.845408443378,"y":17673.856977285253},"targetPosition":{"x":12023.354459959979,"y":17665.127973684725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Signal Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.signal","id":"8016a3c1-2c79-4449-8075-3be7d559e628","savedPayload":{"position":{"x":12495.84649131011,"y":18090.998519021323},"targetPosition":{"x":12259.540457769968,"y":17878.30134654881},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"10c05c23-c90c-45df-8aba-a2828c90f7e1","savedPayload":{"position":{"x":12259.540457769968,"y":17878.30134654881},"targetPosition":{"x":12023.354459959979,"y":17665.127973684725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Signal End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.signal","id":"4e570054-6ad8-4894-994f-33008806def2","savedPayload":{"position":{"x":12110.989119786207,"y":18295.38401891384},"targetPosition":{"x":12067.206774505708,"y":17980.276975564822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f3abb57c-7d3c-4803-9939-cf0bd64964d2","savedPayload":{"position":{"x":12067.206774505708,"y":17980.276975564822},"targetPosition":{"x":12023.354459959979,"y":17665.127973684725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"17fa15b8-c752-45e7-9ab0-91ceab45e38f","savedPayload":{"position":{"x":11685.640295423143,"y":18204.831290273665},"targetPosition":{"x":11854.471385924697,"y":17935.020047185877},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"adbe6c72-d20f-4e31-a636-2efde1ffb8fe","savedPayload":{"position":{"x":11854.471385924697,"y":17935.020047185877},"targetPosition":{"x":12023.354459959979,"y":17665.127973684725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"11f10b6a-4de7-4c2e-8b08-ff25a0f391fe","savedPayload":{"position":{"x":11417.680110940693,"y":17861.736995875774},"targetPosition":{"x":11720.460165684259,"y":17763.4481725291},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ba91f45f-78ef-4776-b0db-76626b4ab6a9","savedPayload":{"position":{"x":11720.460165684259,"y":17763.4481725291},"targetPosition":{"x":12023.354459959979,"y":17665.127973684725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero Middle","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = (record.end - record.begin)/2 + record.begin\ny = 0","id":"d6c3344a-031a-4abe-a954-84fb5f3a348a","savedPayload":{"position":{"x":11432.90387521454,"y":17426.909520911428},"targetPosition":{"x":11728.08127396666,"y":17545.99102737803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7910022b-7f2a-42c1-a8bb-a7dbfd7173fb","savedPayload":{"position":{"x":11728.08127396666,"y":17545.99102737803},"targetPosition":{"x":12023.354459959979,"y":17665.127973684725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Histogram","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = (record.end - record.begin)/2 + record.begin\ny = record.histogram","id":"9feab5b3-5a73-456b-a177-6a5cbbd1a542","savedPayload":{"position":{"x":11724.359689001698,"y":17103.594630610736},"targetPosition":{"x":11873.83673616728,"y":17384.244875727796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aa1b0de1-8ca0-414f-915b-b03fd6322cb7","savedPayload":{"position":{"x":11873.83673616728,"y":17384.244875727796},"targetPosition":{"x":12023.354459959979,"y":17665.127973684725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"95bb8ee2-447e-465c-aa18-fdf3cd1d9fe7","savedPayload":{"position":{"x":12023.354459959979,"y":17665.127973684725},"targetPosition":{"x":12155.7429538862,"y":17043.66429903006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Line Zero","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"d3aedc59-15d6-43d5-9edb-41b17ba0b9a7","savedPayload":{"position":{"x":10907.407729504494,"y":17027.574811379924},"targetPosition":{"x":11220.34030977091,"y":16969.713728765946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"c9204ab8-9aa4-461f-bfef-f16e80dfcfde","savedPayload":{"position":{"x":11220.34030977091,"y":16969.713728765946},"targetPosition":{"x":11533.363354503652,"y":16911.591274740582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Zero Begin","id":"a26ab460-419c-4c64-94b3-f344d333e427","savedPayload":{"position":{"x":11221.84376730762,"y":16845.57492544887},"targetPosition":{"x":11533.363354503652,"y":16911.591274740582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero Begin","id":"adbe6c72-d20f-4e31-a636-2efde1ffb8fe"}}},{"type":"Polygon Vertex","name":"Zero End","id":"8bcffc78-e71a-4a5b-b874-98335342557a","savedPayload":{"position":{"x":11251.044541123943,"y":16751.40453281491},"targetPosition":{"x":11533.363354503652,"y":16911.591274740582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero End","id":"ba91f45f-78ef-4776-b0db-76626b4ab6a9"}}}],"id":"b8ddf2bf-44ec-455e-b9e0-3aea2fe4c03b","savedPayload":{"position":{"x":11533.363354503652,"y":16911.591274740582},"targetPosition":{"x":12155.7429538862,"y":17043.66429903006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Histogram","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 1,\n \"lineWidth\": 3,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"8387bbc3-546c-45d6-9bd3-efe1abdd3511","savedPayload":{"position":{"x":11321.936871965807,"y":16679.3844389676},"targetPosition":{"x":11619.314290096043,"y":16724.664622566663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.histogram < 0","style":{"type":"Style","name":"New Style","config":"{\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n}","id":"8b8ca847-0ee9-4a50-93d8-219afad9d2bb","savedPayload":{"position":{"x":11094.764897646359,"y":16363.902561006409},"targetPosition":{"x":11357.034740378853,"y":16544.157023460455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"18c65f10-ca47-46aa-a74d-50ed3a7b3c21","savedPayload":{"position":{"x":11357.034740378853,"y":16544.157023460455},"targetPosition":{"x":11619.314290096043,"y":16724.664622566663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"836ad43b-dbbe-4145-b584-f06f92971981","savedPayload":{"position":{"x":11619.314290096043,"y":16724.664622566663},"targetPosition":{"x":11919.338919822281,"y":16830.84324290179},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Zero Middle","id":"d41ccd8f-9abd-4701-a00d-a0582cf90328","savedPayload":{"position":{"x":11682.795204414806,"y":16617.77916831542},"targetPosition":{"x":11919.338919822281,"y":16830.84324290179},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero Middle","id":"7910022b-7f2a-42c1-a8bb-a7dbfd7173fb"}}},{"type":"Polygon Vertex","name":"Histogram","id":"5d816817-9b56-41c0-8e3d-9ee2c13d4a2d","savedPayload":{"position":{"x":11782.376207999523,"y":16543.490111205738},"targetPosition":{"x":11919.338919822281,"y":16830.84324290179},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Histogram","id":"aa1b0de1-8ca0-414f-915b-b03fd6322cb7"}}}],"id":"34dac9ae-bbb4-4c68-9462-986a7102e87e","savedPayload":{"position":{"x":11919.338919822281,"y":16830.84324290179},"targetPosition":{"x":12155.7429538862,"y":17043.66429903006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"8c239919-8420-451f-8d50-282b389d47cd","savedPayload":{"position":{"x":11545.752752841445,"y":15954.391074231937},"targetPosition":{"x":11752.364017195878,"y":16196.426049183154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6c3dfcca-7012-4442-91be-64a8215832d5","savedPayload":{"position":{"x":11752.364017195878,"y":16196.426049183154},"targetPosition":{"x":11959.198109004652,"y":16438.460712432243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Line End","id":"340835c7-b097-4be7-a0f5-76958ceb2e46","savedPayload":{"position":{"x":11860.869257282406,"y":16135.587963905387},"targetPosition":{"x":11959.198109004652,"y":16438.460712432243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Line End","id":"aecccad2-09c2-483f-ad7e-b58d463ecc31"}}},{"type":"Polygon Vertex","name":"Line Begin","id":"c14a8ccb-9184-4483-a0c7-73d2259fa7eb","savedPayload":{"position":{"x":11984.060546790652,"y":16121.030215707673},"targetPosition":{"x":11959.198109004652,"y":16438.460712432243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Line Begin","id":"1f9c9003-b080-49e5-8ab7-2b5b17086596"}}}],"id":"bfe93326-71d6-47d7-a34f-221c188a22a9","savedPayload":{"position":{"x":11959.198109004652,"y":16438.460712432243},"targetPosition":{"x":12155.7429538862,"y":17043.66429903006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Signal","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"3536f467-d468-4b5b-974d-6835b3932a5c","savedPayload":{"position":{"x":12106.489817636177,"y":16106.340655557706},"targetPosition":{"x":12164.06227261535,"y":16419.444288796913},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"2b5adcee-bef1-4a94-b045-8c52317c89f7","savedPayload":{"position":{"x":12164.06227261535,"y":16419.444288796913},"targetPosition":{"x":12221.935516862084,"y":16732.453242020274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Signal End","id":"c7c53102-0db0-44d5-935f-b4609ce0ad1a","savedPayload":{"position":{"x":12288.102311952456,"y":16421.061141007485},"targetPosition":{"x":12221.935516862084,"y":16732.453242020274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Signal End","id":"f3abb57c-7d3c-4803-9939-cf0bd64964d2"}}},{"type":"Polygon Vertex","name":"Signal Begin","id":"f6b5228a-83bf-42ee-b652-b7b71674e710","savedPayload":{"position":{"x":12402.334234743133,"y":16470.24830757053},"targetPosition":{"x":12221.935516862084,"y":16732.453242020274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Signal Begin","id":"10c05c23-c90c-45df-8aba-a2828c90f7e1"}}}],"id":"004e01d2-9a9b-4cec-935d-fd5427397838","savedPayload":{"position":{"x":12221.935516862084,"y":16732.453242020274},"targetPosition":{"x":12155.7429538862,"y":17043.66429903006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"cff04172-4157-400a-ba23-98428f3f8505","savedPayload":{"position":{"x":12155.7429538862,"y":17043.66429903006},"targetPosition":{"x":12627.877086604212,"y":17468.835112354805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"MACD 031016","config":"{ \n\"codeName\": \"Panel-MACD-031016\"\n}","panelData":[{"type":"Panel Data","name":"Line","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.line","id":"30e7b23c-7d15-4eb2-971b-442ef569578d","savedPayload":{"position":{"x":12414.475580341006,"y":16313.111975355409},"targetPosition":{"x":12587.294984881313,"y":16580.322021884032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fc80e234-9a51-434b-9a75-776ac31fb892","savedPayload":{"position":{"x":12587.294984881313,"y":16580.322021884032},"targetPosition":{"x":12760.159402668954,"y":16847.201144444978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Signal","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.signal","id":"e4b2dfeb-834f-4daf-8c65-5f10885d4dfa","savedPayload":{"position":{"x":12892.618963558607,"y":16224.62628314045},"targetPosition":{"x":12826.422875588623,"y":16535.91544147715},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fe1b0c2a-0a40-42b7-a275-dfe9d14f0a7c","savedPayload":{"position":{"x":12826.422875588623,"y":16535.91544147715},"targetPosition":{"x":12760.159402668954,"y":16847.201144444978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Histogram","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.histogram","id":"3698be44-3c02-481a-94fa-d3b759c3fd16","savedPayload":{"position":{"x":13293.97479793141,"y":16500.63267036097},"targetPosition":{"x":13027.107288294048,"y":16673.92709470097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"251d6cd3-674e-4269-86ac-4ef977924055","savedPayload":{"position":{"x":13027.107288294048,"y":16673.92709470097},"targetPosition":{"x":12760.159402668954,"y":16847.201144444978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d05c86b5-c035-4dde-967b-fd9ec3f33d8d","savedPayload":{"position":{"x":12760.159402668954,"y":16847.201144444978},"targetPosition":{"x":12627.877086604212,"y":17468.835112354805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"03816d0f-361f-4c6c-8f85-0bf2dfff1c21","savedPayload":{"position":{"x":12627.584296941457,"y":17468.818843670855},"targetPosition":{"x":12824.157292027643,"y":18074.15364135208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"MACD 081709","config":"{\n\t\"codeName\": \"Module-MACD-081709\",\n \"icon\": \"histogram\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.line","id":"9a6467e7-6106-454b-b7ef-e7d3ef9bf6ff","savedPayload":{"position":{"x":12999.286223882593,"y":17078.61604512165},"targetPosition":{"x":12688.643917448304,"y":17227.784121386518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6d3d1eb7-854c-48c1-9f53-9a81d3d40d6a","savedPayload":{"position":{"x":12688.643917448304,"y":17227.784121386518},"targetPosition":{"x":12416.517550043156,"y":17272.333761664628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.line","id":"0820faf8-ca0c-4188-9af8-ebd57e41dfa3","savedPayload":{"position":{"x":12784.270269394166,"y":17778.55709666649},"targetPosition":{"x":12622.364717648152,"y":17467.41721543881},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"075592ad-acd5-4389-ac67-5cc0cb03b92a","savedPayload":{"position":{"x":12622.364717648152,"y":17467.41721543881},"targetPosition":{"x":12416.517550043156,"y":17272.333761664628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Signal Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.signal","id":"eba62e43-3d37-46e0-aa8e-19f394d28745","savedPayload":{"position":{"x":12548.213615254224,"y":17894.728392241865},"targetPosition":{"x":12482.310441943098,"y":17583.628458431995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96975ec0-b8cd-41d9-90b1-4b3a7acdb4c2","savedPayload":{"position":{"x":12482.310441943098,"y":17583.628458431995},"targetPosition":{"x":12416.517550043156,"y":17272.333761664628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Signal End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.signal","id":"48465d15-62ec-4961-9b7c-b0f90cb6b661","savedPayload":{"position":{"x":12116.943309558153,"y":17833.650679960163},"targetPosition":{"x":12266.716277535505,"y":17552.73635169677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d6442860-3c2e-43f4-97b2-d4dfff64c72f","savedPayload":{"position":{"x":12266.716277535505,"y":17552.73635169677},"targetPosition":{"x":12416.517550043156,"y":17272.333761664628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"c83ddb1a-8e52-4163-b80e-3868cf6529a0","savedPayload":{"position":{"x":11825.964492575868,"y":17510.391273597317},"targetPosition":{"x":12121.172688022814,"y":17391.335094153987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2ae7ce7b-794a-454e-8260-1868d6b2909e","savedPayload":{"position":{"x":12121.172688022814,"y":17391.335094153987},"targetPosition":{"x":12416.517550043156,"y":17272.333761664628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"7e353304-2d0b-4718-8cfa-cc6a925ad6a5","savedPayload":{"position":{"x":11810.874257352838,"y":17075.678836365874},"targetPosition":{"x":12113.633109826207,"y":17173.97197149409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6fc15982-383b-4a39-8c6e-5acbf13ac87c","savedPayload":{"position":{"x":12113.633109826207,"y":17173.97197149409},"targetPosition":{"x":12416.517550043156,"y":17272.333761664628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = (record.end - record.begin)/2 + record.begin\ny = 0","id":"06a7bc4a-17b4-4aef-bfa0-c949e5c53484","savedPayload":{"position":{"x":12078.920398144191,"y":16732.638686032566},"targetPosition":{"x":12247.704788598325,"y":17002.422572023428},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"00562b76-47c9-49fd-b8f2-902f22484df5","savedPayload":{"position":{"x":12247.704788598325,"y":17002.422572023428},"targetPosition":{"x":12416.517550043156,"y":17272.333761664628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Histogram","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = (record.end - record.begin)/2 + record.begin\ny = record.histogram","id":"65c9be94-3e68-4aba-9b52-e7b8848064ea","savedPayload":{"position":{"x":12504.414212066631,"y":16642.341132276015},"targetPosition":{"x":12460.527526450036,"y":16957.215990589593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f4fe4dc0-d4ab-4812-bd09-96953df3813a","savedPayload":{"position":{"x":12460.527526450036,"y":16957.215990589593},"targetPosition":{"x":12416.517550043156,"y":17272.333761664628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"247d8d0e-3330-4aa0-9e5e-0f3823bd7258","savedPayload":{"position":{"x":12416.517550043156,"y":17272.333761664628},"targetPosition":{"x":12889.002827304948,"y":16847.482817625998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Line Zero","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"a75405f5-da8a-487f-871c-6e2b7e800c42","savedPayload":{"position":{"x":11888.510842372312,"y":16100.941821349585},"targetPosition":{"x":12175.730673250002,"y":16237.935056581906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"2bb22bfc-5bc6-46bd-b780-4269bd800d69","savedPayload":{"position":{"x":12175.730673250002,"y":16237.935056581906},"targetPosition":{"x":12463.180781876335,"y":16374.770754616839},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Zero Begin","id":"0ead2c7c-b1e2-4297-86c4-f1515df7f077","savedPayload":{"position":{"x":12250.031964436346,"y":16138.22756528722},"targetPosition":{"x":12463.180781876335,"y":16374.770754616839},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero Begin","id":"2ae7ce7b-794a-454e-8260-1868d6b2909e"}}},{"type":"Polygon Vertex","name":"Zero End","id":"5da8d9fb-ca1e-429e-87e9-605b2493e037","savedPayload":{"position":{"x":12329.011748533305,"y":16079.197510668379},"targetPosition":{"x":12463.180781876335,"y":16374.770754616839},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero End","id":"6fc15982-383b-4a39-8c6e-5acbf13ac87c"}}}],"id":"19fac3f2-d743-4b88-b051-294f37589fe5","savedPayload":{"position":{"x":12463.180781876335,"y":16374.770754616839},"targetPosition":{"x":12889.002827304948,"y":16847.482817625998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Histogram","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 1,\n \"lineWidth\": 3,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"6383ddc1-5bd7-4cd2-83ce-b7ffe7dbabff","savedPayload":{"position":{"x":12428.768312358252,"y":16062.585738343343},"targetPosition":{"x":12642.661468765154,"y":16274.034555316257},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.histogram < 0","style":{"type":"Style","name":"New Style","config":"{\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n}","id":"6ce4860c-7dc9-4fa0-9ac1-e768b669141b","savedPayload":{"position":{"x":12430.496423995393,"y":15673.78710323264},"targetPosition":{"x":12536.647845938029,"y":15973.806664006037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"038a1be4-9af1-4942-a4db-258ccdbce08c","savedPayload":{"position":{"x":12536.647845938029,"y":15973.806664006037},"targetPosition":{"x":12642.661468765154,"y":16274.034555316257},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7fc825fc-7db0-47dc-bbdb-14d269d1fcb4","savedPayload":{"position":{"x":12642.661468765154,"y":16274.034555316257},"targetPosition":{"x":12822.904961663326,"y":16536.316400270738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Zero","id":"d48a6d8f-eab0-49f1-9b7f-1fc503cd1df9","savedPayload":{"position":{"x":12756.847495992288,"y":16224.878030925332},"targetPosition":{"x":12822.904961663326,"y":16536.316400270738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero","id":"00562b76-47c9-49fd-b8f2-902f22484df5"}}},{"type":"Polygon Vertex","name":"Histogram","id":"6892eda6-1689-49a2-8145-9ffd38d4bc3d","savedPayload":{"position":{"x":12880.878322578172,"y":16223.30933890893},"targetPosition":{"x":12822.904961663326,"y":16536.316400270738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Histogram","id":"f4fe4dc0-d4ab-4812-bd09-96953df3813a"}}}],"id":"68162ec3-a643-4567-818b-83362fc9e843","savedPayload":{"position":{"x":12822.904961663326,"y":16536.316400270738},"targetPosition":{"x":12889.002827304948,"y":16847.482817625998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"b93e8f5b-41db-44e6-8d00-b1aac544377a","savedPayload":{"position":{"x":13035.788053518068,"y":15607.601163506242},"targetPosition":{"x":13060.599133914739,"y":15924.88668965833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"541af95f-c876-4ba2-aaef-56e43a140ffd","savedPayload":{"position":{"x":13060.599133914739,"y":15924.88668965833},"targetPosition":{"x":13085.593018425987,"y":16242.301715141277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Line End","id":"a2c0de4e-cf82-4b65-a591-a364e6c3f9e8","savedPayload":{"position":{"x":13183.944243939672,"y":15939.447590527236},"targetPosition":{"x":13085.593018425987,"y":16242.301715141277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Line End","id":"075592ad-acd5-4389-ac67-5cc0cb03b92a"}}},{"type":"Polygon Vertex","name":"Line Begin","id":"1c1fd64b-34ee-447c-b0d3-76ca645588c6","savedPayload":{"position":{"x":13292.325690089196,"y":16000.198570472106},"targetPosition":{"x":13085.593018425987,"y":16242.301715141277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Line Begin","id":"6d3d1eb7-854c-48c1-9f53-9a81d3d40d6a"}}}],"id":"9e96b118-c85c-4707-8063-a2651ae44740","savedPayload":{"position":{"x":13085.593018425987,"y":16242.301715141277},"targetPosition":{"x":12889.002827304948,"y":16847.482817625998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Signal","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"c1d9c98e-657c-4895-a557-bd2074056db5","savedPayload":{"position":{"x":13399.90231571644,"y":16060.255978072106},"targetPosition":{"x":13262.563133363192,"y":16347.42686115822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"64c671b3-60a7-4fc0-b7ba-a597fce77d38","savedPayload":{"position":{"x":13262.563133363192,"y":16347.42686115822},"targetPosition":{"x":13125.516599748431,"y":16634.697001598255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Signal End","id":"faff0d49-252e-45e3-a42d-fa041b77dd34","savedPayload":{"position":{"x":13362.142032884678,"y":16421.763779650388},"targetPosition":{"x":13125.516599748431,"y":16634.697001598255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Signal End","id":"d6442860-3c2e-43f4-97b2-d4dfff64c72f"}}},{"type":"Polygon Vertex","name":"Signal Begin","id":"0469d29c-4fd7-4ab3-a5fc-433cd33e82c8","savedPayload":{"position":{"x":13425.646806701176,"y":16528.696088061595},"targetPosition":{"x":13125.516599748431,"y":16634.697001598255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Signal Begin","id":"96975ec0-b8cd-41d9-90b1-4b3a7acdb4c2"}}}],"id":"d3737a2f-c760-4373-a2ed-bc3c321a87b6","savedPayload":{"position":{"x":13125.516599748431,"y":16634.697001598255},"targetPosition":{"x":12889.002827304948,"y":16847.482817625998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"e89f491f-20db-434b-810f-6c93c0096d3f","savedPayload":{"position":{"x":12889.002827304948,"y":16847.482817625998},"targetPosition":{"x":13021.005539069009,"y":17469.020753174795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"MACD 081709","config":"{ \n\"codeName\": \"Panel-MACD-081709\"\n}","panelData":[{"type":"Panel Data","name":"Line","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.line","id":"10eb7ea2-b8dd-4ddd-b200-71d0ecea3c6e","savedPayload":{"position":{"x":13527.436177343547,"y":16408.474824051496},"targetPosition":{"x":13510.320354282981,"y":16726.285644878393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1e07f765-13e9-49f2-8f76-90cb6e4466af","savedPayload":{"position":{"x":13510.320354282981,"y":16726.285644878393},"targetPosition":{"x":13493.440315190235,"y":17043.78543471881},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Signal","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.signal","id":"f2dcbee4-39a8-42aa-8fdd-8e4c3addb6d2","savedPayload":{"position":{"x":13966.495371013623,"y":16618.19892866538},"targetPosition":{"x":13729.945429015543,"y":16831.063533054603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"95d59325-db92-413c-a74a-5a12fea61b82","savedPayload":{"position":{"x":13729.945429015543,"y":16831.063533054603},"targetPosition":{"x":13493.440315190235,"y":17043.78543471881},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Histogram","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.histogram","id":"387de792-7d66-46a8-b11d-a96403f09dfe","savedPayload":{"position":{"x":14129.115747365127,"y":17076.908605931698},"targetPosition":{"x":13811.322109542312,"y":17060.390239838587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9d00b3d7-779a-452f-b800-6d2949df7a03","savedPayload":{"position":{"x":13811.322109542312,"y":17060.390239838587},"targetPosition":{"x":13493.440315190235,"y":17043.78543471881},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a858c3e2-ad02-4ee4-aea3-fd60ab8fe9d7","savedPayload":{"position":{"x":13493.440315190235,"y":17043.78543471881},"targetPosition":{"x":13021.005539069009,"y":17469.020753174795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"43695164-d8aa-40d8-bbf4-ee8cbbdec3f0","savedPayload":{"position":{"x":13020.732272048086,"y":17468.81848773541},"targetPosition":{"x":12824.157292027643,"y":18074.15364135208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"MACD 245209","config":"{\n\t\"codeName\": \"Module-MACD-245209\",\n \"icon\": \"histogram\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.line","id":"48f415e0-0abb-4867-a7d7-454bc5450e6b","savedPayload":{"position":{"x":13565.046425784765,"y":17443.504492295247},"targetPosition":{"x":13225.45681490327,"y":17351.50729026298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"36adae0b-9c21-40b9-abfb-e511d72f2b5d","savedPayload":{"position":{"x":13225.45681490327,"y":17351.50729026298},"targetPosition":{"x":12965.532240082915,"y":17186.31270187648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.line","id":"1e3e4460-9762-470f-9cbc-0efd86f722da","savedPayload":{"position":{"x":13033.08061810084,"y":17849.732604011504},"targetPosition":{"x":13053.607871481161,"y":17491.33118142024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6f0173db-8cbd-4530-a30d-ebe66906c578","savedPayload":{"position":{"x":13053.607871481161,"y":17491.33118142024},"targetPosition":{"x":12965.532240082915,"y":17186.31270187648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Signal Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.signal","id":"8f397084-7cae-4586-b410-c5970593562e","savedPayload":{"position":{"x":12706.343916137104,"y":17767.197780045302},"targetPosition":{"x":12835.828297289407,"y":17476.824202927546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0cc9c494-c307-4bfe-9baf-8ed796fb602d","savedPayload":{"position":{"x":12835.828297289407,"y":17476.824202927546},"targetPosition":{"x":12965.532240082915,"y":17186.31270187648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Signal End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.signal","id":"dd38ae56-a770-4332-899e-6f8239fa815b","savedPayload":{"position":{"x":12393.037474788862,"y":17463.88213010133},"targetPosition":{"x":12679.38835956992,"y":17324.917825596516},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cd80c183-d19f-48a6-b7fc-a69b1b794b2a","savedPayload":{"position":{"x":12679.38835956992,"y":17324.917825596516},"targetPosition":{"x":12965.532240082915,"y":17186.31270187648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"4939828f-043d-4764-be8b-eafcd061b524","savedPayload":{"position":{"x":12347.610597467496,"y":17031.74162826977},"targetPosition":{"x":12656.540005081408,"y":17108.937559526617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"957cc3a3-ac48-4a0e-b7b3-b0ad7f529cf4","savedPayload":{"position":{"x":12656.540005081408,"y":17108.937559526617},"targetPosition":{"x":12965.532240082915,"y":17186.31270187648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"eb1dcee7-230c-4970-9326-0359d3e67857","savedPayload":{"position":{"x":12591.196481826877,"y":16671.01981858262},"targetPosition":{"x":12778.3305864105,"y":16928.574439539505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"749f8342-4448-48d8-b663-9840ad6295c2","savedPayload":{"position":{"x":12778.3305864105,"y":16928.574439539505},"targetPosition":{"x":12965.532240082915,"y":17186.31270187648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Zero","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = (record.end - record.begin)/2 + record.begin\ny = 0","id":"7de51d6d-a086-4c6f-b801-5f13b37c9feb","savedPayload":{"position":{"x":13009.266498692361,"y":16551.080996998735},"targetPosition":{"x":12987.42617530656,"y":16868.611220339586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2d60df1-8bd2-4371-9ce1-60a328cc80d3","savedPayload":{"position":{"x":12987.42617530656,"y":16868.611220339586},"targetPosition":{"x":12965.532240082915,"y":17186.31270187648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Histogram","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = (record.end - record.begin)/2 + record.begin\ny = record.histogram","id":"b8f5d987-aa7a-415e-ac1e-e36a3afa7db1","savedPayload":{"position":{"x":13406.820428535406,"y":16728.372680950786},"targetPosition":{"x":13186.323401676984,"y":16957.256826600325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4292d954-54aa-45e3-acb4-a52622471108","savedPayload":{"position":{"x":13186.323401676984,"y":16957.256826600325},"targetPosition":{"x":12965.532240082915,"y":17186.31270187648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fd10b89d-abb6-4a47-b82b-1efc5196c46b","savedPayload":{"position":{"x":12965.532240082915,"y":17186.31270187648},"targetPosition":{"x":13597.276996471572,"y":17120.4612128716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Line Zero","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREY\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"c93101ad-3f34-469d-8141-6bbb810cf79c","savedPayload":{"position":{"x":13226.797147518935,"y":15928.427618355796},"targetPosition":{"x":13378.538775956118,"y":16208.1250676451},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"c4c38f4b-d3a5-4a1c-8862-ebd87269fe24","savedPayload":{"position":{"x":13378.538775956118,"y":16208.1250676451},"targetPosition":{"x":13530.669481121678,"y":16487.826653918015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Zero Begin","id":"0c3f9cb5-0866-4694-97e4-c195f216059e","savedPayload":{"position":{"x":13497.303422027135,"y":16171.063422546089},"targetPosition":{"x":13530.669481121678,"y":16487.826653918015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero Begin","id":"957cc3a3-ac48-4a0e-b7b3-b0ad7f529cf4"}}},{"type":"Polygon Vertex","name":"Zero End","id":"a6fba16b-f5a7-4c45-8348-28bb07430bad","savedPayload":{"position":{"x":13595.70424947628,"y":16169.621557510653},"targetPosition":{"x":13530.669481121678,"y":16487.826653918015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero End","id":"749f8342-4448-48d8-b663-9840ad6295c2"}}}],"id":"579cce76-9e03-43a3-b252-9d62ba988ed3","savedPayload":{"position":{"x":13530.669481121678,"y":16487.826653918015},"targetPosition":{"x":13597.276996471572,"y":17120.4612128716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Histogram","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 1,\n \"lineWidth\": 3,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"83f50f64-2a7f-49b1-9649-dd23f86374b1","savedPayload":{"position":{"x":13686.078203653646,"y":16214.954801669475},"targetPosition":{"x":13734.648617748806,"y":16511.706258642545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[{"type":"Style Condition","name":"New Style Condition","code":"record.histogram < 0","style":{"type":"Style","name":"New Style","config":"{\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n}","id":"de351dae-2678-4a8a-a5cc-e2a42418f558","savedPayload":{"position":{"x":13915.587613157508,"y":15901.26760741377},"targetPosition":{"x":13825.278333563992,"y":16206.430086334105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6d9e5ad0-dd68-4192-ad7f-9986f34050af","savedPayload":{"position":{"x":13825.278333563992,"y":16206.430086334105},"targetPosition":{"x":13734.648617748806,"y":16511.706258642545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0c056547-f273-4157-8c55-ca13da5adeb5","savedPayload":{"position":{"x":13734.648617748806,"y":16511.706258642545},"targetPosition":{"x":13726.49106629845,"y":16829.883195817627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Zero","id":"02e0cf18-f0d8-4c59-ae6a-37a1e516b67a","savedPayload":{"position":{"x":13855.982988458805,"y":16539.014095357656},"targetPosition":{"x":13726.49106629845,"y":16829.883195817627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Zero","id":"d2d60df1-8bd2-4371-9ce1-60a328cc80d3"}}},{"type":"Polygon Vertex","name":"Histogram","id":"e4c545cd-400d-4616-bf3a-f24a1fd24794","savedPayload":{"position":{"x":13957.411735345746,"y":16610.79119492677},"targetPosition":{"x":13726.49106629845,"y":16829.883195817627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Histogram","id":"4292d954-54aa-45e3-acb4-a52622471108"}}}],"id":"83a0d615-06f0-4daf-a684-211e42345717","savedPayload":{"position":{"x":13726.49106629845,"y":16829.883195817627},"targetPosition":{"x":13597.276996471572,"y":17120.4612128716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"cd8d0c68-f06e-43be-9c1c-d4d2b79fc680","savedPayload":{"position":{"x":14444.44672599936,"y":16203.663399156121},"targetPosition":{"x":14278.159627725965,"y":16474.967783336797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"dec1dd79-8e14-4104-86e1-ab9b5919055c","savedPayload":{"position":{"x":14278.159627725965,"y":16474.967783336797},"targetPosition":{"x":14111.975236642413,"y":16746.559432097074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Line End","id":"8a24dd4a-0202-40ea-95d6-127abe4893bf","savedPayload":{"position":{"x":14369.628437998826,"y":16559.39084919471},"targetPosition":{"x":14111.975236642413,"y":16746.559432097074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Line End","id":"6f0173db-8cbd-4530-a30d-ebe66906c578"}}},{"type":"Polygon Vertex","name":"Line Begin","id":"11bd728e-9c76-4cd3-97e5-27965f60bd9d","savedPayload":{"position":{"x":14421.597245006093,"y":16672.26813572691},"targetPosition":{"x":14111.975236642413,"y":16746.559432097074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Line Begin","id":"36adae0b-9c21-40b9-abfb-e511d72f2b5d"}}}],"id":"c5dff6f5-ceea-4cf7-8d51-3f2bd9423d10","savedPayload":{"position":{"x":14111.975236642413,"y":16746.559432097074},"targetPosition":{"x":13597.276996471572,"y":17120.4612128716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Signal","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"263c0cb6-735f-48ae-a2fc-9835403317dc","savedPayload":{"position":{"x":14473.436011072268,"y":16784.27067115829},"targetPosition":{"x":14193.41640934998,"y":16935.699416601503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"630155a8-17d7-414a-801b-933cff540e61","savedPayload":{"position":{"x":14193.41640934998,"y":16935.699416601503},"targetPosition":{"x":13913.657375828077,"y":17087.47636098804},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Signal End","id":"9d1ae188-aa8e-4c73-a417-31c3968a9e6f","savedPayload":{"position":{"x":14230.286434058618,"y":17054.36918498096},"targetPosition":{"x":13913.657375828077,"y":17087.47636098804},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Signal End","id":"cd80c183-d19f-48a6-b7fc-a69b1b794b2a"}}},{"type":"Polygon Vertex","name":"Signal Begin","id":"9ef44a8e-4e95-4e21-a7f7-0950844c58f3","savedPayload":{"position":{"x":14218.763598176474,"y":17177.999417488747},"targetPosition":{"x":13913.657375828077,"y":17087.47636098804},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Signal Begin","id":"0cc9c494-c307-4bfe-9baf-8ed796fb602d"}}}],"id":"1c32305b-ed73-433e-af91-5c221e1c8254","savedPayload":{"position":{"x":13913.657375828077,"y":17087.47636098804},"targetPosition":{"x":13597.276996471572,"y":17120.4612128716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"b1a0e87f-af0a-4354-a9a3-74ee5a667593","savedPayload":{"position":{"x":13597.276996471572,"y":17120.4612128716},"targetPosition":{"x":13339.096330606537,"y":17700.505663331624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"MACD 245209","config":"{ \n\"codeName\": \"Panel-MACD-245209\"\n}","panelData":[{"type":"Panel Data","name":"Line","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.line","id":"7449cbcf-82e3-44a9-b623-8ce89d3d0a90","savedPayload":{"position":{"x":14371.949155007247,"y":17140.89830347455},"targetPosition":{"x":14171.14008059777,"y":17387.73724876552},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"03f0b78f-d66e-43d9-93fb-28ec2a0c78ad","savedPayload":{"position":{"x":14171.14008059777,"y":17387.73724876552},"targetPosition":{"x":13970.792919458248,"y":17634.497324516156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Signal","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.signal","id":"d32b0179-d71f-4cc4-a53e-f65d850da700","savedPayload":{"position":{"x":14603.830579736697,"y":17568.51743589505},"targetPosition":{"x":14287.315808143025,"y":17601.55055757185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"22cd37eb-620d-4fc6-ba86-e09d58614393","savedPayload":{"position":{"x":14287.315808143025,"y":17601.55055757185},"targetPosition":{"x":13970.792919458248,"y":17634.497324516156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Histogram","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.histogram","id":"bddd9afa-785d-4791-8d87-e2c984a74f12","savedPayload":{"position":{"x":14465.33911740971,"y":18034.887443167303},"targetPosition":{"x":14218.057446137644,"y":17834.75033977208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bfa738fb-7d49-4539-97be-707922adde3e","savedPayload":{"position":{"x":14218.057446137644,"y":17834.75033977208},"targetPosition":{"x":13970.792919458248,"y":17634.497324516156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e864cbe9-0b24-45c0-b08b-85c2486bef8d","savedPayload":{"position":{"x":13970.792919458248,"y":17634.497324516156},"targetPosition":{"x":13339.096330606537,"y":17700.505663331624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2fe60a0e-dd3a-4bb8-a321-4742389ab930","savedPayload":{"position":{"x":13338.964234194931,"y":17700.069254242226},"targetPosition":{"x":12824.157292027643,"y":18074.15364135208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"24146ce7-bc0d-461a-8a43-0d2bd3059886","savedPayload":{"position":{"x":12824.148798349737,"y":18255.647915828347},"targetPosition":{"x":12824.153406676238,"y":18710.73255185816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"EMA","config":"{\n\"codeName\": \"Plotter EMA\"\n}","modules":[{"type":"Plotter Module","name":"EMA Popular","config":"{\n\t\"codeName\": \"EMA-Popular\",\n \"icon\": \"moving-average\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"EMA 20 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema20","id":"7bf83ec0-5a84-4a81-a111-19d913e12135","savedPayload":{"position":{"x":13034.923141253237,"y":17394.545209274955},"targetPosition":{"x":12870.74025461331,"y":17454.086561635177},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6e1ff74e-36ba-460c-9f78-c8ee0b5e0837","savedPayload":{"position":{"x":12870.74025461331,"y":17454.086561635177},"targetPosition":{"x":12628.733313034778,"y":17527.10099712985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 20 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema20","id":"12164218-7531-4063-bbd3-32855e7f7847","savedPayload":{"position":{"x":13046.771469518988,"y":17679.132262994186},"targetPosition":{"x":12882.128912944272,"y":17619.15699978971},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"83f1d130-42bd-45ae-9078-ed3f825531bb","savedPayload":{"position":{"x":12882.128912944272,"y":17619.15699978971},"targetPosition":{"x":12628.733313034778,"y":17527.10099712985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 50 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema50","id":"580ad5c4-aee7-4af2-b85d-0ef86d020823","savedPayload":{"position":{"x":12850.445899639244,"y":17911.35143618475},"targetPosition":{"x":12763.27838075395,"y":17760.514100663513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7084c0a2-8874-46a7-b240-d9605a7baf49","savedPayload":{"position":{"x":12763.27838075395,"y":17760.514100663513},"targetPosition":{"x":12628.733313034778,"y":17527.10099712985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 50 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema50","id":"1e7a4d05-3daf-4d0a-97ff-b53e35eab2aa","savedPayload":{"position":{"x":12551.572282537456,"y":17963.1989021477},"targetPosition":{"x":12582.027990476896,"y":17791.40620145336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3861b379-3e51-43e2-b607-e3b7fba16a34","savedPayload":{"position":{"x":12582.027990476896,"y":17791.40620145336},"targetPosition":{"x":12628.733313034778,"y":17527.10099712985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 100 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema100","id":"b50c3599-e7bd-45ef-b348-4ddf85460bbf","savedPayload":{"position":{"x":12289.39467311622,"y":17811.87420200572},"targetPosition":{"x":12423.635091286053,"y":17699.19067654026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d3b1e9cb-8098-4e62-94ea-4e89852b4f6a","savedPayload":{"position":{"x":12423.635091286053,"y":17699.19067654026},"targetPosition":{"x":12628.733313034778,"y":17527.10099712985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 100 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema100","id":"f5cf8bb1-98bf-4c38-9e7c-f31678a656e4","savedPayload":{"position":{"x":12185.542748045124,"y":17527.074896562543},"targetPosition":{"x":12360.669973919792,"y":17527.080772794427},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"32ca337a-699d-4c2f-9b6a-73d9a4481e78","savedPayload":{"position":{"x":12360.669973919792,"y":17527.080772794427},"targetPosition":{"x":12628.733313034778,"y":17527.10099712985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 200 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema200","id":"451d4c20-a9ad-4b8d-a116-fae9406ee356","savedPayload":{"position":{"x":12289.142904373259,"y":17242.49779820151},"targetPosition":{"x":12422.870659469505,"y":17354.487798781596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"33d1fe7c-ff86-440a-8b42-0de9c296a632","savedPayload":{"position":{"x":12422.870659469505,"y":17354.487798781596},"targetPosition":{"x":12628.733313034778,"y":17527.10099712985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 200 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema200","id":"24e42cf3-2dc8-4257-a511-7dc52dc6f060","savedPayload":{"position":{"x":12551.519317002998,"y":17089.819499591486},"targetPosition":{"x":12582.042792444858,"y":17262.414661688377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"87e2a3ab-afc2-44cb-b2ca-03a715a4d673","savedPayload":{"position":{"x":12582.042792444858,"y":17262.414661688377},"targetPosition":{"x":12628.733313034778,"y":17527.10099712985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dd70bea3-9a52-4b2b-a364-31917b08d98d","savedPayload":{"position":{"x":12628.439138411619,"y":17527.328773740723},"targetPosition":{"x":12976.859242824956,"y":16924.293055595892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"SMA 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"d468c2f1-2586-4fe4-aa0c-fc3737d992f5","savedPayload":{"position":{"x":12323.207087662633,"y":16720.726507051502},"targetPosition":{"x":12496.407853724248,"y":16743.34098539802},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"23236076-e29a-451e-8c95-e3812064279c","savedPayload":{"position":{"x":12496.407853724248,"y":16743.34098539802},"targetPosition":{"x":12674.85414422742,"y":16750.463124310507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"EMA 20 Begin","id":"5f877b66-2ca6-4a8f-967e-70948cefc9ea","savedPayload":{"position":{"x":12511.074307227975,"y":16663.668141712515},"targetPosition":{"x":12674.85414422742,"y":16750.463124310507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 20 Begin","id":"6e1ff74e-36ba-460c-9f78-c8ee0b5e0837"}}},{"type":"Polygon Vertex","name":"EMA 20 End","id":"d5971215-2792-4415-bfea-2e4b2b5b98fe","savedPayload":{"position":{"x":12585.907351232016,"y":16596.345863662715},"targetPosition":{"x":12674.85414422742,"y":16750.463124310507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 20 End","id":"83f1d130-42bd-45ae-9078-ed3f825531bb"}}}],"id":"17ca2f43-9ddf-47f8-9929-e4612b00dd4f","savedPayload":{"position":{"x":12674.85414422742,"y":16750.463124310507},"targetPosition":{"x":12976.859242824956,"y":16924.293055595892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 50","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"330fba24-ff59-48d2-a297-b4e6903efc3d","savedPayload":{"position":{"x":12513.080344983637,"y":16420.12411197188},"targetPosition":{"x":12651.642117486006,"y":16526.766300800453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"0806f6fe-730c-4fde-b730-dcdf31825733","savedPayload":{"position":{"x":12651.642117486006,"y":16526.766300800453},"targetPosition":{"x":12802.614826187777,"y":16622.505054153564},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"EMA 50 End","id":"b00cf575-af36-4653-97ec-441912af5bb8","savedPayload":{"position":{"x":12704.25219349563,"y":16464.646497242487},"targetPosition":{"x":12802.614826187777,"y":16622.505054153564},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 50 End","id":"3861b379-3e51-43e2-b607-e3b7fba16a34"}}},{"type":"Polygon Vertex","name":"EMA 50 Begin","id":"da71a6f7-2917-4c07-bd77-dc1b0334c5ec","savedPayload":{"position":{"x":12803.097793983388,"y":16444.448240272246},"targetPosition":{"x":12802.614826187777,"y":16622.505054153564},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 50 Begin","id":"7084c0a2-8874-46a7-b240-d9605a7baf49"}}}],"id":"36482493-d7f7-4a41-9588-a348e3204025","savedPayload":{"position":{"x":12802.614826187777,"y":16622.505054153564},"targetPosition":{"x":12976.859242824956,"y":16924.293055595892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 100","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"278d84a3-2d10-4db3-90cc-b38f6af88ecf","savedPayload":{"position":{"x":12827.404312840152,"y":16255.387724643411},"targetPosition":{"x":12894.073335079544,"y":16417.141117533178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"612138e2-6896-4f8f-956a-d5bf1b8c043a","savedPayload":{"position":{"x":12894.073335079544,"y":16417.141117533178},"targetPosition":{"x":12976.926709679608,"y":16575.722265384415},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"EMA 100 Begin","id":"fc01c5ca-4323-4a71-9d83-1f288b80e8ed","savedPayload":{"position":{"x":12970.78220629669,"y":16389.70813307474},"targetPosition":{"x":12976.926709679608,"y":16575.722265384415},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 100 Begin","id":"d3b1e9cb-8098-4e62-94ea-4e89852b4f6a"}}},{"type":"Polygon Vertex","name":"EMA 100 End","id":"fbd76a9e-5a2e-4cb8-a2ed-35d2616d9a2e","savedPayload":{"position":{"x":13066.46311807378,"y":16421.855514979547},"targetPosition":{"x":12976.926709679608,"y":16575.722265384415},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 100 End","id":"32ca337a-699d-4c2f-9b6a-73d9a4481e78"}}}],"id":"37a16b86-6ee7-4dfa-b32a-c8b9bcb9b484","savedPayload":{"position":{"x":12976.926709679608,"y":16575.722265384415},"targetPosition":{"x":12976.859242824956,"y":16924.293055595892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 200","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"b170fc33-32c4-452d-919d-cf2df82c224f","savedPayload":{"position":{"x":13182.195159057383,"y":16270.448483171582},"targetPosition":{"x":13159.162935627346,"y":16443.90424852404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"ad1ad1fa-9fe8-4a56-aade-dcade3d90c38","savedPayload":{"position":{"x":13159.162935627346,"y":16443.90424852404},"targetPosition":{"x":13151.536215577149,"y":16622.596016064927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"EMA 200 End","id":"a98d63cf-bb2b-43f0-80cd-680c59ef741a","savedPayload":{"position":{"x":13239.287962827,"y":16458.621145656984},"targetPosition":{"x":13151.536215577149,"y":16622.596016064927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 200 End","id":"87e2a3ab-afc2-44cb-b2ca-03a715a4d673"}}},{"type":"Polygon Vertex","name":"EMA 200 Begin","id":"c9ce7524-76dd-4399-92d8-58d1d757ed89","savedPayload":{"position":{"x":13306.324884684675,"y":16534.447781077914},"targetPosition":{"x":13151.536215577149,"y":16622.596016064927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 200 Begin","id":"33d1fe7c-ff86-440a-8b42-0de9c296a632"}}}],"id":"2e225665-d05d-46cd-91d0-4b36803bcf67","savedPayload":{"position":{"x":13151.536215577149,"y":16622.596016064927},"targetPosition":{"x":12976.859242824956,"y":16924.293055595892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"5ea59fb9-f0d6-438b-b1a7-a62ed1750004","savedPayload":{"position":{"x":12976.859242824956,"y":16924.293055595892},"targetPosition":{"x":13324.891836218352,"y":17527.023713714272},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"EMA Popular","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"EMA 20","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema20","id":"c79a60a8-e960-4a7d-86b0-bb8d65272b30","savedPayload":{"position":{"x":13156.2534384349,"y":17129.692733826883},"targetPosition":{"x":13326.712060177784,"y":17165.70412658381},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"80fa0565-6440-406f-a49d-57adcdaf20ae","savedPayload":{"position":{"x":13326.712060177784,"y":17165.70412658381},"targetPosition":{"x":13506.914731563638,"y":17212.34906969397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 50","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema50","id":"ad4b2bc1-bc45-4a8f-b07f-aa0f79f5e884","savedPayload":{"position":{"x":13471.632567160426,"y":16865.103347252956},"targetPosition":{"x":13489.486677653766,"y":17038.438102880835},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f43975ff-c552-42b8-a504-d2b6a3a46b18","savedPayload":{"position":{"x":13489.486677653766,"y":17038.438102880835},"targetPosition":{"x":13506.914731563638,"y":17212.34906969397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 100","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema100","id":"2bfe0bed-a18d-452e-a59a-9ddbd135dd0a","savedPayload":{"position":{"x":13826.221001907843,"y":17070.347183177764},"targetPosition":{"x":13666.72565031118,"y":17141.067549155403},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9507a099-6a7f-4d00-8b6e-623a7003055c","savedPayload":{"position":{"x":13666.72565031118,"y":17141.067549155403},"targetPosition":{"x":13506.914731563638,"y":17212.34906969397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 200","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema200","id":"ee01f76f-2b56-4d87-a278-4dd98436dca7","savedPayload":{"position":{"x":13751.796663948555,"y":17464.271545880332},"targetPosition":{"x":13634.568393585514,"y":17334.909078747696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5bf57692-7070-4a12-9bc3-487a841125b0","savedPayload":{"position":{"x":13634.568393585514,"y":17334.909078747696},"targetPosition":{"x":13506.914731563638,"y":17212.34906969397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a819c354-b152-4946-a403-62a8cf0f650f","savedPayload":{"position":{"x":13506.914731563638,"y":17212.34906969397},"targetPosition":{"x":13324.891836218352,"y":17527.023713714272},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"79bf7438-f77a-4c8d-a450-67027d5fd8bc","savedPayload":{"position":{"x":13324.378698774859,"y":17525.86929633753},"targetPosition":{"x":13324.887053497392,"y":18224.02696387497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"EMA Base 11","config":"{\n\t\"codeName\": \"EMA-Base11\",\n \"icon\": \"moving-average\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"EMA 11 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema11","id":"41b049dc-e0da-471f-82f7-5f2c1eb61f90","savedPayload":{"position":{"x":13709.393802072313,"y":17378.823478815644},"targetPosition":{"x":13534.618203957552,"y":17350.654218359385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c961312c-6bb2-4b38-a142-9f03d0b3eba4","savedPayload":{"position":{"x":13534.618203957552,"y":17350.654218359385},"targetPosition":{"x":13359.842605842792,"y":17322.484957903125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 11 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema11","id":"55db8355-8155-4c70-85b5-4a629aeefa45","savedPayload":{"position":{"x":13623.444880575864,"y":17558.861582127374},"targetPosition":{"x":13491.643743209328,"y":17440.67327001525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"750547e8-4963-4008-aa2b-8edc565afd79","savedPayload":{"position":{"x":13491.643743209328,"y":17440.67327001525},"targetPosition":{"x":13359.842605842792,"y":17322.484957903125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 22 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema22","id":"bda3c179-331d-444e-9b1e-e3cfd1a26bb7","savedPayload":{"position":{"x":13453.804099376326,"y":17663.85177740533},"targetPosition":{"x":13406.82335260956,"y":17493.168367654227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8ac0329a-2d0d-483f-a047-305198817a24","savedPayload":{"position":{"x":13406.82335260956,"y":17493.168367654227},"targetPosition":{"x":13359.842605842792,"y":17322.484957903125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 22 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema22","id":"08508d15-658f-40da-a580-76a5b512414d","savedPayload":{"position":{"x":13254.331207880086,"y":17660.460419474013},"targetPosition":{"x":13307.08690686144,"y":17491.47268868857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"adc1fb05-93dd-4a32-98dd-30577e4a68de","savedPayload":{"position":{"x":13307.08690686144,"y":17491.47268868857},"targetPosition":{"x":13359.842605842792,"y":17322.484957903125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 33 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema33","id":"bceee9f7-3824-498c-beb1-866463df7a7e","savedPayload":{"position":{"x":13088.357439729092,"y":17549.764240514447},"targetPosition":{"x":13224.100022785942,"y":17436.124599208786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"25fd3a99-95c4-4514-b7f3-d195c9ee3189","savedPayload":{"position":{"x":13224.100022785942,"y":17436.124599208786},"targetPosition":{"x":13359.842605842792,"y":17322.484957903125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 33 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema33","id":"6c2cc6ab-b520-4d47-8165-db2abfd53ed8","savedPayload":{"position":{"x":13008.578293596676,"y":17366.908495204454},"targetPosition":{"x":13184.210449719734,"y":17344.69672655379},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0fe0c9b1-3079-499b-ad49-1b13e1e0af82","savedPayload":{"position":{"x":13184.210449719734,"y":17344.69672655379},"targetPosition":{"x":13359.842605842792,"y":17322.484957903125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 55 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema55","id":"5df6eee6-f3a0-406f-be6c-2e6bce745054","savedPayload":{"position":{"x":13040.323084687368,"y":17169.948590683005},"targetPosition":{"x":13200.08284526508,"y":17246.216774293065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"27b05f8b-84e9-4ab2-944d-46b10c2a978c","savedPayload":{"position":{"x":13200.08284526508,"y":17246.216774293065},"targetPosition":{"x":13359.842605842792,"y":17322.484957903125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 55 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema55","id":"508f7fdf-3889-4b3f-bec4-9ee071f7aa21","savedPayload":{"position":{"x":13173.513066127858,"y":17021.417904983475},"targetPosition":{"x":13266.677835985325,"y":17171.9514314433},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1eeef11e-809a-4e49-8b3b-48a955f42ce3","savedPayload":{"position":{"x":13266.677835985325,"y":17171.9514314433},"targetPosition":{"x":13359.842605842792,"y":17322.484957903125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 111 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema111","id":"b9f04b17-af03-4983-8266-0e63f8f3271c","savedPayload":{"position":{"x":13365.86135988622,"y":16968.473881347792},"targetPosition":{"x":13362.851982864506,"y":17145.47941962546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cb15539c-b3a0-4641-9417-861c48bd62ac","savedPayload":{"position":{"x":13362.851982864506,"y":17145.47941962546},"targetPosition":{"x":13359.842605842792,"y":17322.484957903125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 11 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema111","id":"abc69976-c994-40d1-a923-fd64ded26938","savedPayload":{"position":{"x":13556.298741762284,"y":17027.925873195683},"targetPosition":{"x":13458.070673802538,"y":17175.205415549404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"afa38489-5525-4f32-b766-cfe85d683a65","savedPayload":{"position":{"x":13458.070673802538,"y":17175.205415549404},"targetPosition":{"x":13359.842605842792,"y":17322.484957903125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"573429d9-05d9-41ea-9fac-5eaf95fcc06c","savedPayload":{"position":{"x":13359.842605842792,"y":17322.484957903125},"targetPosition":{"x":14008.882771310464,"y":17039.311628463183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"SMA 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"02c6627c-956c-4022-a3f9-a132627d02d8","savedPayload":{"position":{"x":13215.71448038391,"y":15899.00228000652},"targetPosition":{"x":13470.711961127216,"y":16144.636871501016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"48f091c0-5895-4615-a56d-f779d35b60c6","savedPayload":{"position":{"x":13470.711961127216,"y":16144.636871501016},"targetPosition":{"x":13725.709441870522,"y":16390.27146299551},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"EMA 11 End","id":"1143164d-0f70-46f0-80fe-6107db66ce29","savedPayload":{"position":{"x":13383.571781185792,"y":16481.94697287626},"targetPosition":{"x":13725.709441870522,"y":16390.27146299551},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 11 End","id":"750547e8-4963-4008-aa2b-8edc565afd79"}}},{"type":"Polygon Vertex","name":"EMA 11 Begin","id":"31fd051d-973f-4d8c-b9d3-ac1c13621ab0","savedPayload":{"position":{"x":13367.10059319218,"y":16294.182511593495},"targetPosition":{"x":13725.709441870522,"y":16390.27146299551},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 11 Begin","id":"c961312c-6bb2-4b38-a142-9f03d0b3eba4"}}}],"id":"01f54960-957d-490a-91c7-cfd01f2bf806","savedPayload":{"position":{"x":13725.709441870522,"y":16390.27146299551},"targetPosition":{"x":14008.882771310464,"y":17039.311628463183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"76712d22-b3a8-490e-a964-b1f51641d472","savedPayload":{"position":{"x":13789.024518037348,"y":15667.78558190894},"targetPosition":{"x":13912.19245456637,"y":15999.733962135873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"61487dfb-c30e-41b5-b3bb-a52bbe476c22","savedPayload":{"position":{"x":13912.19245456637,"y":15999.733962135873},"targetPosition":{"x":14035.360391095392,"y":16331.682342362807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"EMA 22 End","id":"bd3f3676-7a98-43ca-b661-395e53cc2d9c","savedPayload":{"position":{"x":13713.505409597596,"y":16417.923124735076},"targetPosition":{"x":14035.360391095392,"y":16331.682342362807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 22 End","id":"adc1fb05-93dd-4a32-98dd-30577e4a68de"}}},{"type":"Polygon Vertex","name":"EMA 22 Begin","id":"6a2c8c60-7c69-4372-bc67-b5bac89eb8a5","savedPayload":{"position":{"x":13667.558970302804,"y":16233.130248686413},"targetPosition":{"x":14035.360391095392,"y":16331.682342362807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 22 Begin","id":"8ac0329a-2d0d-483f-a047-305198817a24"}}}],"id":"c9043797-16f8-4dc7-85c0-bd9d995dcec1","savedPayload":{"position":{"x":14035.360391095392,"y":16331.682342362807},"targetPosition":{"x":14008.882771310464,"y":17039.311628463183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"9ee24b06-2b0b-472a-9272-23f52d3ddc05","savedPayload":{"position":{"x":14405.880179136062,"y":15708.216437994532},"targetPosition":{"x":14372.823651065612,"y":16060.732159170238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"12acb041-6cf9-4cab-bc99-7d3413860838","savedPayload":{"position":{"x":14372.823651065612,"y":16060.732159170238},"targetPosition":{"x":14339.767122995161,"y":16413.247880345945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"EMA 33 End","id":"e5ec4acb-cef0-48cc-8eb4-432547dc0541","savedPayload":{"position":{"x":14003.290523807302,"y":16503.406513370304},"targetPosition":{"x":14339.767122995161,"y":16413.247880345945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 33 End","id":"0fe0c9b1-3079-499b-ad49-1b13e1e0af82"}}},{"type":"Polygon Vertex","name":"EMA 33 Begin","id":"46dfb895-487c-4a14-a8f4-e39f77a98f34","savedPayload":{"position":{"x":14006.208074592561,"y":16323.871002698375},"targetPosition":{"x":14339.767122995161,"y":16413.247880345945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 33 Begin","id":"25fd3a99-95c4-4514-b7f3-d195c9ee3189"}}}],"id":"d6e73bfe-e6af-4fff-b482-df4889701cf7","savedPayload":{"position":{"x":14339.767122995161,"y":16413.247880345945},"targetPosition":{"x":14008.882771310464,"y":17039.311628463183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"cb42e26b-ace9-47f5-a272-15645af64e39","savedPayload":{"position":{"x":14944.105634761223,"y":16012.287021363638},"targetPosition":{"x":14761.371892887366,"y":16315.550021587667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"cd8235f2-8641-4f92-9029-d30375e43f1f","savedPayload":{"position":{"x":14761.371892887366,"y":16315.550021587667},"targetPosition":{"x":14578.638151013509,"y":16618.813021811697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"EMA 55 End","id":"fff3b40f-45a5-424f-bbe3-b62c4811423d","savedPayload":{"position":{"x":14229.591470970552,"y":16712.33979784997},"targetPosition":{"x":14578.638151013509,"y":16618.813021811697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 55 End","id":"1eeef11e-809a-4e49-8b3b-48a955f42ce3"}}},{"type":"Polygon Vertex","name":"EMA 55 Begin","id":"e644af79-d267-4c8b-bebd-2d919eb5efd9","savedPayload":{"position":{"x":14240.30102104704,"y":16528.155861067717},"targetPosition":{"x":14578.638151013509,"y":16618.813021811697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 55 Begin","id":"27b05f8b-84e9-4ab2-944d-46b10c2a978c"}}}],"id":"001084ac-f732-465a-aea1-bb8c63770971","savedPayload":{"position":{"x":14578.638151013509,"y":16618.813021811697},"targetPosition":{"x":14008.882771310464,"y":17039.311628463183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"5d5e3413-6b2a-49e0-8b7e-14441b448203","savedPayload":{"position":{"x":15297.098732524244,"y":16519.772423799026},"targetPosition":{"x":15000.880435507372,"y":16713.71774660039},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"d1c5bddf-9fc3-47b8-b026-a0fd18fc7efd","savedPayload":{"position":{"x":15000.880435507372,"y":16713.71774660039},"targetPosition":{"x":14704.6621384905,"y":16907.66306940175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"EMA 11 End","id":"2aed0f5f-77bd-4297-a131-77c0c08914d5","savedPayload":{"position":{"x":14402.013578369819,"y":17082.39729705728},"targetPosition":{"x":14704.6621384905,"y":16907.66306940175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 11 End","id":"afa38489-5525-4f32-b766-cfe85d683a65"}}},{"type":"Polygon Vertex","name":"EMA 111 Begin","id":"dff4ca7d-4499-4a8a-834b-7315e9e784e4","savedPayload":{"position":{"x":14355.350507572699,"y":16814.06529999053},"targetPosition":{"x":14704.6621384905,"y":16907.66306940175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 111 Begin","id":"cb15539c-b3a0-4641-9417-861c48bd62ac"}}}],"id":"47ab5422-37ad-4070-a2eb-248bbe9b007f","savedPayload":{"position":{"x":14704.6621384905,"y":16907.66306940175},"targetPosition":{"x":14008.882771310464,"y":17039.311628463183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"951aba38-5a6a-43df-8f70-f311d621c98d","savedPayload":{"position":{"x":14008.882771310464,"y":17039.311628463183},"targetPosition":{"x":13825.606671096104,"y":17723.307346276255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"EMA 11","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"EMA 11","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema11","id":"ee21f97e-daa4-45b8-bebd-5c53d872534b","savedPayload":{"position":{"x":13917.24472120328,"y":17381.309487369715},"targetPosition":{"x":14042.42462560296,"y":17506.489391769395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a96b4bae-0ce3-4dc6-88df-af120452af6b","savedPayload":{"position":{"x":14042.42462560296,"y":17506.489391769395},"targetPosition":{"x":14167.60453000264,"y":17631.669296169075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 22","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema22","id":"583909a2-6932-4bfa-952d-a0c81123cc3f","savedPayload":{"position":{"x":14259.242580109816,"y":17289.67143726254},"targetPosition":{"x":14213.423555056228,"y":17460.670366715807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2a2f4d65-a013-4c73-b851-1c9ac3dceb9f","savedPayload":{"position":{"x":14213.423555056228,"y":17460.670366715807},"targetPosition":{"x":14167.60453000264,"y":17631.669296169075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 33","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema33","id":"067efa03-229a-49e1-9dff-579ead9e6603","savedPayload":{"position":{"x":14509.602388909176,"y":17540.0312460619},"targetPosition":{"x":14338.603459455908,"y":17585.850271115487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a51bde01-b164-49bd-99fc-d048468e4cc0","savedPayload":{"position":{"x":14338.603459455908,"y":17585.850271115487},"targetPosition":{"x":14167.60453000264,"y":17631.669296169075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 55","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema55","id":"4663f0f2-cf79-4a80-b4c0-33c41bca9d88","savedPayload":{"position":{"x":14417.964338802,"y":17882.029104968435},"targetPosition":{"x":14292.78443440232,"y":17756.849200568755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"782092b0-9e6c-4de0-aec6-0d6b47fac8b4","savedPayload":{"position":{"x":14292.78443440232,"y":17756.849200568755},"targetPosition":{"x":14167.60453000264,"y":17631.669296169075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 111","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema111","id":"8064c04e-1499-4c01-b056-aac2a1aecc01","savedPayload":{"position":{"x":14075.966479895464,"y":17973.66715507561},"targetPosition":{"x":14121.785504949052,"y":17802.668225622343},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2c4a358f-23b6-433c-98de-623caad85051","savedPayload":{"position":{"x":14121.785504949052,"y":17802.668225622343},"targetPosition":{"x":14167.60453000264,"y":17631.669296169075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"efc451e7-a5c0-4377-877c-a6b1a60a6604","savedPayload":{"position":{"x":14167.60453000264,"y":17631.669296169075},"targetPosition":{"x":13825.606671096104,"y":17723.307346276255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cef26be6-07a9-415a-8439-99d06b1e1cfb","savedPayload":{"position":{"x":13809.808208271641,"y":17744.33946401178},"targetPosition":{"x":13324.887053497392,"y":18224.02696387497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"EMA Base 7","config":"{\n\t\"codeName\": \"EMA-Base7\",\n \"icon\": \"moving-average\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"EMA 7 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema7","id":"d41ccc81-8740-46e9-9ed3-9ffc1df75ee0","savedPayload":{"position":{"x":14183.20190956952,"y":17903.66420165679},"targetPosition":{"x":14080.786613417831,"y":17762.349068323547},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2bb8ca1-5fcc-4286-aba3-1d307d4f7168","savedPayload":{"position":{"x":14080.786613417831,"y":17762.349068323547},"targetPosition":{"x":13977.439612298875,"y":17621.333528427225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 7 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema7","id":"91431058-cccd-40c3-bb98-dd9484a0807d","savedPayload":{"position":{"x":14007.2302700768,"y":17972.263229058983},"targetPosition":{"x":13997.97886323192,"y":17797.807673461484},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8ea750de-2b74-41ea-9897-637291621ae9","savedPayload":{"position":{"x":13997.97886323192,"y":17797.807673461484},"targetPosition":{"x":13977.439612298875,"y":17621.333528427225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 14 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema14","id":"753c8686-38ea-4fc2-9343-3598039aa890","savedPayload":{"position":{"x":13811.19094582712,"y":17934.207170553538},"targetPosition":{"x":13897.953003199624,"y":17781.83362488538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"77265bb0-8ba2-4c0b-a788-970cd44ddcc9","savedPayload":{"position":{"x":13897.953003199624,"y":17781.83362488538},"targetPosition":{"x":13977.439612298875,"y":17621.333528427225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 14 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema14","id":"c64e3670-c41d-44d0-bc7a-05c8f0a841b6","savedPayload":{"position":{"x":13696.538052447804,"y":17733.357068157402},"targetPosition":{"x":13864.787048441327,"y":17653.651578954235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cd04ee65-bd26-4fbc-abed-76c6fc5c964b","savedPayload":{"position":{"x":13864.787048441327,"y":17653.651578954235},"targetPosition":{"x":13977.439612298875,"y":17621.333528427225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 21 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema21","id":"be27efec-c4ed-43ec-925a-f7d862f999c1","savedPayload":{"position":{"x":13608.160721947459,"y":17577.687481912173},"targetPosition":{"x":13782.99822412577,"y":17593.61913656437},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2f13bba0-f9c2-435f-ad66-8ad73082c502","savedPayload":{"position":{"x":13782.99822412577,"y":17593.61913656437},"targetPosition":{"x":13977.439612298875,"y":17621.333528427225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 21 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema21","id":"e6af4547-c256-4f33-95fc-9d9f3cd5d111","savedPayload":{"position":{"x":13700.113892092033,"y":17404.190430832314},"targetPosition":{"x":13838.71942236979,"y":17512.159597062106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a5e04840-b217-44cb-9f8f-2629bf4d1f6e","savedPayload":{"position":{"x":13838.71942236979,"y":17512.159597062106},"targetPosition":{"x":13977.439612298875,"y":17621.333528427225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 28 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema28","id":"a42e77a3-9107-4c33-853d-4ed8966f339d","savedPayload":{"position":{"x":13860.733125208628,"y":17288.39476219847},"targetPosition":{"x":13919.190707100532,"y":17454.18011626272},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0d436286-6b79-4dca-a2f3-b7bd3b9a5671","savedPayload":{"position":{"x":13919.190707100532,"y":17454.18011626272},"targetPosition":{"x":13977.439612298875,"y":17621.333528427225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 28 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema28","id":"0e7f0922-d9b4-4ea3-9f5f-57ad9d4c9328","savedPayload":{"position":{"x":14058.113543982907,"y":17278.347789254818},"targetPosition":{"x":14018.173793760465,"y":17449.47974120746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f50599e9-c04f-4b07-aca0-f276dd08ea94","savedPayload":{"position":{"x":14018.173793760465,"y":17449.47974120746},"targetPosition":{"x":13977.439612298875,"y":17621.333528427225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 35 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.ema35","id":"db011cc5-705a-444a-9f7a-159466b19247","savedPayload":{"position":{"x":14229.748578301334,"y":17376.517241485675},"targetPosition":{"x":14103.982278923437,"y":17498.796443684754},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d7ac980a-16ab-4077-b3f1-05cf1f4c3a39","savedPayload":{"position":{"x":14103.982278923437,"y":17498.796443684754},"targetPosition":{"x":13977.439612298875,"y":17621.333528427225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"EMA 35 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.ema35","id":"6b3dc821-e0e9-4c09-965b-c8600bd3e9d5","savedPayload":{"position":{"x":14321.143852725238,"y":17553.666424065694},"targetPosition":{"x":14149.705890699091,"y":17588.26398917242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8992ec1b-4e8c-4f47-a08e-b6e18a0d9c31","savedPayload":{"position":{"x":14149.705890699091,"y":17588.26398917242},"targetPosition":{"x":13977.439612298875,"y":17621.333528427225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5a4d5b2f-63dc-403c-a545-6025652d9e81","savedPayload":{"position":{"x":13977.439612298875,"y":17621.333528427225},"targetPosition":{"x":14624.977263547293,"y":17876.143244650975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"SMA 7","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"496c35a4-5cf7-4def-97bc-ce71a6fc45f7","savedPayload":{"position":{"x":14612.354107433513,"y":17229.43412192888},"targetPosition":{"x":14681.946727901255,"y":17390.177705323837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"671a56e0-b5eb-4833-aa19-3dca720b5b0e","savedPayload":{"position":{"x":14681.946727901255,"y":17390.177705323837},"targetPosition":{"x":14751.845100796005,"y":17550.899406424902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"EMA 7 End","id":"b0be4203-a40d-4ee7-83e0-d1ac87f0bd31","savedPayload":{"position":{"x":14815.61510218141,"y":17387.330346188795},"targetPosition":{"x":14751.845100796005,"y":17550.899406424902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 7 End","id":"8ea750de-2b74-41ea-9897-637291621ae9"}}},{"type":"Polygon Vertex","name":"EMA 7 Begin","id":"afe09e1e-c8fd-4fc7-8f09-324ee7d7d012","savedPayload":{"position":{"x":14912.066655333745,"y":17480.18814890126},"targetPosition":{"x":14751.845100796005,"y":17550.899406424902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 7 Begin","id":"d2bb8ca1-5fcc-4286-aba3-1d307d4f7168"}}}],"id":"45946a01-a9fb-4ea8-bb82-ef6088fad08e","savedPayload":{"position":{"x":14751.845100796005,"y":17550.899406424902},"targetPosition":{"x":14624.977263547293,"y":17876.143244650975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 14","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"9c0f7800-bf53-4a63-94ba-fccbec15d0ea","savedPayload":{"position":{"x":15099.390132389903,"y":17161.281497048793},"targetPosition":{"x":15026.35832292312,"y":17320.54214706166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"651877b1-61a2-48a2-8fc4-86e809f89d42","savedPayload":{"position":{"x":15026.35832292312,"y":17320.54214706166},"targetPosition":{"x":14880.74085865457,"y":17638.548775971227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"EMA 14 End","id":"72f9e17d-9c36-408d-9a2e-13da010f4d97","savedPayload":{"position":{"x":15141.21561809235,"y":17383.23538666076},"targetPosition":{"x":14880.74085865457,"y":17638.548775971227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 14 End","id":"cd04ee65-bd26-4fbc-abed-76c6fc5c964b"}}},{"type":"Polygon Vertex","name":"EMA 14 Begin","id":"5a24fd6f-de93-4fcd-94f7-1f7fe268e8be","savedPayload":{"position":{"x":15210.708057014815,"y":17517.603064988783},"targetPosition":{"x":14880.74085865457,"y":17638.548775971227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 14 Begin","id":"77265bb0-8ba2-4c0b-a788-970cd44ddcc9"}}}],"id":"b1689975-de58-4f84-a802-c6f13e885dc6","savedPayload":{"position":{"x":14880.74085865457,"y":17638.548775971227},"targetPosition":{"x":14624.977263547293,"y":17876.143244650975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 21","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"14146df5-5a4a-46b7-9db5-4957b8445915","savedPayload":{"position":{"x":15117.37713504875,"y":17480.511268868075},"targetPosition":{"x":15040.958538082969,"y":17618.630479704705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"2552b9ce-3620-4245-9803-d55ad53969da","savedPayload":{"position":{"x":15040.958538082969,"y":17618.630479704705},"targetPosition":{"x":14958.620024691447,"y":17773.341106261865},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"EMA 21 Begin","id":"803ffc35-a2e2-426d-a8d2-7c770e5d0a6a","savedPayload":{"position":{"x":15126.511610186613,"y":17721.674451873343},"targetPosition":{"x":14958.620024691447,"y":17773.341106261865},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 21 Begin","id":"2f13bba0-f9c2-435f-ad66-8ad73082c502"}}},{"type":"Polygon Vertex","name":"EMA 21 End","id":"a0449481-80c2-4160-adb3-49d4327bf921","savedPayload":{"position":{"x":15113.915071791127,"y":17854.680303361394},"targetPosition":{"x":14958.620024691447,"y":17773.341106261865},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 21 End","id":"a5e04840-b217-44cb-9f8f-2629bf4d1f6e"}}}],"id":"15f599b3-7620-4a0c-b9e0-29830383cd36","savedPayload":{"position":{"x":14958.620024691447,"y":17773.341106261865},"targetPosition":{"x":14624.977263547293,"y":17876.143244650975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 28","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"e4a06d7f-ecad-400a-acca-f3c340642354","savedPayload":{"position":{"x":15479.885619363124,"y":17802.14711646571},"targetPosition":{"x":15309.740176312605,"y":17844.136273628435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"65f345ac-2766-411d-af4f-9390e525667c","savedPayload":{"position":{"x":15309.740176312605,"y":17844.136273628435},"targetPosition":{"x":14970.208939428312,"y":17928.270963796276},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"EMA 28 Begin","id":"ca1f7537-47e7-4c48-a056-fedd8820a1de","savedPayload":{"position":{"x":15331.88397802934,"y":17972.76167412245},"targetPosition":{"x":14970.208939428312,"y":17928.270963796276},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 28 Begin","id":"0d436286-6b79-4dca-a2f3-b7bd3b9a5671"}}},{"type":"Polygon Vertex","name":"EMA 28 End","id":"80c45995-463a-442a-a6d8-92cc9971a8b9","savedPayload":{"position":{"x":15270.540486583466,"y":18111.17299601841},"targetPosition":{"x":14970.208939428312,"y":17928.270963796276},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 28 End","id":"f50599e9-c04f-4b07-aca0-f276dd08ea94"}}}],"id":"e3c75e9c-a5ec-4755-9a86-909db1b690ca","savedPayload":{"position":{"x":14970.208939428312,"y":17928.270963796276},"targetPosition":{"x":14624.977263547293,"y":17876.143244650975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"SMA 35","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"9d05ca49-9de9-4c97-b4da-891614ed84a5","savedPayload":{"position":{"x":15241.18356206125,"y":18015.254156076415},"targetPosition":{"x":15085.309222176993,"y":18041.697891784548},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"56422e5e-ccaa-4c0c-b5a1-79e62ebc1e74","savedPayload":{"position":{"x":15085.309222176993,"y":18041.697891784548},"targetPosition":{"x":14913.104880832741,"y":18073.328772389305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"EMA 35 Begin","id":"155db5be-8214-4154-a918-ab9469587cc7","savedPayload":{"position":{"x":15057.962771349501,"y":18172.50852794674},"targetPosition":{"x":14913.104880832741,"y":18073.328772389305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 35 Begin","id":"d7ac980a-16ab-4077-b3f1-05cf1f4c3a39"}}},{"type":"Polygon Vertex","name":"EMA 35 End","id":"ee71f62a-adc7-4411-aeb1-54ca5712ce34","savedPayload":{"position":{"x":14945.745978031855,"y":18245.664262979957},"targetPosition":{"x":14913.104880832741,"y":18073.328772389305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"EMA 35 End","id":"8992ec1b-4e8c-4f47-a08e-b6e18a0d9c31"}}}],"id":"3511cc8f-eb39-4dd0-8043-9f06a8faa698","savedPayload":{"position":{"x":14913.104880832741,"y":18073.328772389305},"targetPosition":{"x":14624.977263547293,"y":17876.143244650975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"8e7cd7e8-5c59-4cc2-8d9e-ea86d7554205","savedPayload":{"position":{"x":14624.977263547293,"y":17876.143244650975},"targetPosition":{"x":14022.219966075952,"y":18224.12272750716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"EMA Base 7","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"EMA 7","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema7","id":"9d9efe26-4895-475c-ac3c-149f0331c6f7","savedPayload":{"position":{"x":14324.31613854501,"y":18050.22524955794},"targetPosition":{"x":14324.186275964645,"y":18224.45222681911},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aeaebf9b-54bf-41f3-a833-b0e4fcc55c00","savedPayload":{"position":{"x":14324.186275964645,"y":18224.45222681911},"targetPosition":{"x":14324.185770351016,"y":18398.5919726641},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 14","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema14","id":"7c922a65-b8a6-4ebf-a964-af3851b30367","savedPayload":{"position":{"x":14626.838288841538,"y":18225.15584747851},"targetPosition":{"x":14475.554739392706,"y":18311.80955962264},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f749c1c5-25f9-4c3f-af87-c8df30a177e0","savedPayload":{"position":{"x":14475.554739392706,"y":18311.80955962264},"targetPosition":{"x":14324.185770351016,"y":18398.5919726641},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 21","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema21","id":"f5a9c1c1-9331-4492-a263-1f69ff44711a","savedPayload":{"position":{"x":14627.318265432203,"y":18573.844563157574},"targetPosition":{"x":14475.684220147728,"y":18486.177389506563},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"92f7a1a7-bd42-403f-9d0e-2eb907e8abea","savedPayload":{"position":{"x":14475.684220147728,"y":18486.177389506563},"targetPosition":{"x":14324.185770351016,"y":18398.5919726641},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 28","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema28","id":"0fcdb422-d014-4dc8-927a-5484c5d7c34b","savedPayload":{"position":{"x":14324.912735518008,"y":18747.83456084457},"targetPosition":{"x":14324.36508513383,"y":18573.3393997687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4c51ef79-f3dd-4f24-ad22-4e38f42f3ff2","savedPayload":{"position":{"x":14324.36508513383,"y":18573.3393997687},"targetPosition":{"x":14324.185770351016,"y":18398.5919726641},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"EMA 35","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ema35","id":"c23e6dd3-f9d5-498f-a01c-c951b11cbdf6","savedPayload":{"position":{"x":14022.019928483396,"y":18573.272338735213},"targetPosition":{"x":14173.20793288636,"y":18485.943440015035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8cdd88af-871c-4f1b-966b-cf9d00483caa","savedPayload":{"position":{"x":14173.20793288636,"y":18485.943440015035},"targetPosition":{"x":14324.185770351016,"y":18398.5919726641},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"481ef93a-bef5-4fe3-b87b-f8032a63c69f","savedPayload":{"position":{"x":14324.185770351016,"y":18398.5919726641},"targetPosition":{"x":14022.219966075952,"y":18224.12272750716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a52a9764-3ef2-44e6-82bd-e6538058119d","savedPayload":{"position":{"x":14022.219966075952,"y":18224.12272750716},"targetPosition":{"x":13324.887053497392,"y":18224.02696387497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6cb2807d-22bb-4f90-b4d8-c84cf84a0d5c","savedPayload":{"position":{"x":13145.918006424552,"y":18389.05149790718},"targetPosition":{"x":12824.153406676238,"y":18710.73255185816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"a"}}}],"id":"9cfffc48-486a-48cb-b641-98c82e314d3a","savedPayload":{"position":{"x":12824.153406676238,"y":18710.73255185816},"targetPosition":{"x":12824.153406676238,"y":18710.73255185816},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}} \ No newline at end of file diff --git a/Includes/Super-Scripts/Masters.json b/Includes/Super-Scripts/Masters.json new file mode 100644 index 000000000..6d7c99476 --- /dev/null +++ b/Includes/Super-Scripts/Masters.json @@ -0,0 +1 @@ +{"type":"Super Scripts","name":"Masters","config":"{ \n\"codeName\": \"Masters\"\n}","scriptsLibrary":{"type":"Scripts Library","name":"New Scripts Library","masterScripts":[],"id":"1dd2a75d-7d97-4994-8c95-b392d933b1c1","savedPayload":{"position":{"x":40191.05941020691,"y":31040.94023966275},"targetPosition":{"x":39643.041459281856,"y":31041.13836154292},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"S"}}},"id":"17b5ea06-62d8-4a79-b0ba-f9d3b997c17f","savedPayload":{"position":{"x":39643.041459281856,"y":31041.13836154292},"targetPosition":{"x":39643.041459281856,"y":31041.13836154292},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}} \ No newline at end of file diff --git a/Includes/Trading-Engines/Low-Frequency.json b/Includes/Trading-Engines/Low-Frequency.json new file mode 100644 index 000000000..fb55d2f22 --- /dev/null +++ b/Includes/Trading-Engines/Low-Frequency.json @@ -0,0 +1 @@ +{"type":"Trading Engine","name":"Low-Frequency","current":{"type":"Current","name":"New Current","episode":{"type":"Episode","name":"New Episode","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"5eb83933-432a-4029-8a3e-e4d8d760dd27","savedPayload":{"position":{"x":32587.85548677459,"y":23591.123239421617},"targetPosition":{"x":33370.252954726864,"y":24089.230920316222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"8ba7fe0c-c5df-408e-be8a-ebde90f2a50d","savedPayload":{"position":{"x":32686.3772416773,"y":23462.64113201446},"targetPosition":{"x":33370.252954726864,"y":24089.230920316222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"d7faf864-3fa8-4280-b7d3-a022338b0dfe","savedPayload":{"position":{"x":32805.61547866025,"y":23353.352855471876},"targetPosition":{"x":33370.252954726864,"y":24089.230920316222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"f6722d05-77f9-4a68-ba69-38f56cdc7e91","savedPayload":{"position":{"x":32942.00107943419,"y":23266.45259364257},"targetPosition":{"x":33370.252954726864,"y":24089.230920316222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"beginRate":{"type":"Begin Rate","name":"New Begin Rate","config":"{\n\"initialValue\": 0\n}","id":"613903ae-45e4-4eee-a178-d6ec049490ec","savedPayload":{"position":{"x":33091.39789177117,"y":23204.561954902598},"targetPosition":{"x":33370.252954726864,"y":24089.230920316222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"endRate":{"type":"End Rate","name":"New End Rate","config":"{\n\"initialValue\": 0\n}","id":"b2bfb20d-64d5-4c98-b0cd-a466654c1e6a","savedPayload":{"position":{"x":33249.26866434818,"y":23169.555945271954},"targetPosition":{"x":33370.252954726864,"y":24089.230920316222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"2615490b-e968-4607-a6e5-009c3ae78957","savedPayload":{"position":{"x":33410.61875317618,"y":23162.49582096675},"targetPosition":{"x":33370.252954726864,"y":24089.230920316222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"6bcc264b-a189-4aca-8397-d3520bdf4078","savedPayload":{"position":{"x":33570.93584545368,"y":23183.594405110707},"targetPosition":{"x":33370.252954726864,"y":24089.230920316222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"headOfTheMarket":{"type":"Head Of The Market","name":"New Head Of The Market","config":"{\n\"initialValue\": false\n}","id":"f7e00135-13b1-4265-95da-dd3a2c763b6f","savedPayload":{"position":{"x":33725.15083828583,"y":23232.208558658625},"targetPosition":{"x":33370.252954726864,"y":24089.230920316222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"processDate":{"type":"Process Date","name":"New Process Date","config":"{\n\"initialValue\": 0\n}","id":"d9163f6e-0d50-4ddd-b13b-14f7b4124ec8","savedPayload":{"position":{"x":33868.576136870695,"y":23306.85833073421},"targetPosition":{"x":33370.252954726864,"y":24089.230920316222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"episodeBaseAsset":{"type":"Episode Base Asset","name":"New Episode Base Asset","balance":{"type":"Balance","name":"Base Asset","config":"{\n\"initialValue\": 0\n}","id":"72f6a6b6-f35b-4d80-b8ad-4a4ed55f2387","savedPayload":{"position":{"x":34087.36119018759,"y":22483.324533425865},"targetPosition":{"x":33996.29728736959,"y":23406.099671638818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"beginBalance":{"type":"Begin Balance","name":"New Begin Balance","config":"{\n\"initialValue\": 0\n}","id":"0176b616-7628-42b1-8c06-4cfb1bfd05aa","savedPayload":{"position":{"x":34218.206945449754,"y":22505.773282385664},"targetPosition":{"x":33996.29728736959,"y":23406.099671638818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"endBalance":{"type":"End Balance","name":"New End Balance","config":"{\n\"initialValue\": 0\n}","id":"d3844a95-57a8-48f5-bfa9-e093bf815f57","savedPayload":{"position":{"x":34344.19499129817,"y":22546.564583985677},"targetPosition":{"x":33996.29728736959,"y":23406.099671638818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"hits":{"type":"Hits","name":"New Hits","config":"{\n\"initialValue\": 0\n}","id":"c5eff46f-38bc-4ab9-9d07-ed6c5e161895","savedPayload":{"position":{"x":34463.03457686934,"y":22604.857395005914},"targetPosition":{"x":33996.29728736959,"y":23406.099671638818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"fails":{"type":"Fails","name":"New Fails","config":"{\n\"initialValue\": 0\n}","id":"4a05a6d4-add4-4b8e-a64f-82f1cb8363cd","savedPayload":{"position":{"x":34572.34959198706,"y":22679.464354443466},"targetPosition":{"x":33996.29728736959,"y":23406.099671638818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"hitRatio":{"type":"Hit Ratio","name":"New Hit Ratio","config":"{\n\"initialValue\": 0\n}","id":"348b1305-f52f-4dd0-b8f7-d0950aed6604","savedPayload":{"position":{"x":34669.92787040488,"y":22768.868241269112},"targetPosition":{"x":33996.29728736959,"y":23406.099671638818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"profitLoss":{"type":"Profit Loss","name":"New Profit Loss","config":"{\n\"initialValue\": 0\n}","id":"be210037-a2bd-445e-8a18-081e3e4fc995","savedPayload":{"position":{"x":34753.788954388394,"y":22871.25336466626},"targetPosition":{"x":33996.29728736959,"y":23406.099671638818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"ROI":{"type":"ROI","name":"New ROI","config":"{\n\"initialValue\": 0\n}","id":"405d086e-9461-4e0d-b875-8decf729a434","savedPayload":{"position":{"x":34822.22966481311,"y":22984.547001565763},"targetPosition":{"x":33996.29728736959,"y":23406.099671638818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"annualizedRateOfReturn":{"type":"Annualized Rate Of Return","name":"New Annualized Rate Of Return","config":"{\n\"initialValue\": 0\n}","id":"2fa70a73-35be-40a2-a0e8-6ef12e76a105","savedPayload":{"position":{"x":34873.861737768006,"y":23106.483460360105},"targetPosition":{"x":33996.29728736959,"y":23406.099671638818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"hitFail":{"type":"Hit Fail","name":"New Hit Fail","config":"{\n\"initialValue\": \"\"\n}","id":"388b582a-74fb-4245-b831-892b19868e85","savedPayload":{"position":{"x":34907.655598760684,"y":23234.860259796467},"targetPosition":{"x":33996.29728736959,"y":23406.099671638818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"11def55a-16a2-4105-a2c0-2dc7b39422d5","savedPayload":{"position":{"x":33996.850362722565,"y":23405.270329436225},"targetPosition":{"x":33370.252954726864,"y":24089.230920316222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"episodeQuotedAsset":{"type":"Episode Quoted Asset","name":"New Episode Quoted Asset","balance":{"type":"Balance","name":"Quoted Asset","config":"{\n\"initialValue\": 0\n}","id":"31600195-9fe6-48f2-a744-12609943a948","savedPayload":{"position":{"x":34356.14288209393,"y":22632.125362580937},"targetPosition":{"x":34106.0945868782,"y":23525.095881570807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"beginBalance":{"type":"Begin Balance","name":"New Begin Balance","config":"{\n\"initialValue\": 0\n}","id":"020629af-dc56-40f5-b724-aa7a38017577","savedPayload":{"position":{"x":34481.08786150176,"y":22676.95914685346},"targetPosition":{"x":34106.0945868782,"y":23525.095881570807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"endBalance":{"type":"End Balance","name":"New End Balance","config":"{\n\"initialValue\": 0\n}","id":"3dafbad0-221d-4728-a507-682516c5c7d2","savedPayload":{"position":{"x":34598.07578995915,"y":22739.01585614169},"targetPosition":{"x":34106.0945868782,"y":23525.095881570807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"hits":{"type":"Hits","name":"New Hits","config":"{\n\"initialValue\": 0\n}","id":"ff31de06-cf8f-4a56-8bd3-0fc978257133","savedPayload":{"position":{"x":34704.98644615458,"y":22817.068258422474},"targetPosition":{"x":34106.0945868782,"y":23525.095881570807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"fails":{"type":"Fails","name":"New Fails","config":"{\n\"initialValue\": 0\n}","id":"48db7b5c-f10c-4d10-9662-0f28bebcc16a","savedPayload":{"position":{"x":34799.68400639857,"y":22909.534280499156},"targetPosition":{"x":34106.0945868782,"y":23525.095881570807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"hitRatio":{"type":"Hit Ratio","name":"New Hit Ratio","config":"{\n\"initialValue\": 0\n}","id":"7e8dabb5-0d33-470a-9c62-92bfd48fbc66","savedPayload":{"position":{"x":34880.25242262616,"y":23014.535618516766},"targetPosition":{"x":34106.0945868782,"y":23525.095881570807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"profitLoss":{"type":"Profit Loss","name":"New Profit Loss","config":"{\n\"initialValue\": 0\n}","id":"b87d87fa-37b4-4a84-ab28-44e1f69bf485","savedPayload":{"position":{"x":34945.05578468797,"y":23129.9402837918},"targetPosition":{"x":34106.0945868782,"y":23525.095881570807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"ROI":{"type":"ROI","name":"New ROI","config":"{\n\"initialValue\": 0\n}","id":"37ab9b9a-d76c-4d1e-bbb0-8f81d852ef5f","savedPayload":{"position":{"x":34992.77570436028,"y":23253.411173681394},"targetPosition":{"x":34106.0945868782,"y":23525.095881570807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"annualizedRateOfReturn":{"type":"Annualized Rate Of Return","name":"New Annualized Rate Of Return","config":"{\n\"initialValue\": 0\n}","id":"3eefd2a4-05e5-45cc-8319-b2f473907651","savedPayload":{"position":{"x":35022.43703226065,"y":23382.474967012604},"targetPosition":{"x":34106.0945868782,"y":23525.095881570807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"hitFail":{"type":"Hit Fail","name":"New Hit Fail","config":"{\n\"initialValue\": \"\"\n}","id":"7b13fa53-921e-457b-bde5-dd4c13247936","savedPayload":{"position":{"x":35033.40659099431,"y":23514.774574557996},"targetPosition":{"x":34106.0945868782,"y":23525.095881570807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9d3a2c33-2d9f-4d01-a410-9c29b534b886","savedPayload":{"position":{"x":34106.06701668827,"y":23524.444542762598},"targetPosition":{"x":33370.252954726864,"y":24089.230920316222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"episodeCounters":{"type":"Episode Counters","name":"New Episode Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"6c6579c8-fb13-41f6-a25b-1833d2963640","savedPayload":{"position":{"x":34152.88000102357,"y":23197.999516312484},"targetPosition":{"x":34193.085206597716,"y":23660.781893765983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"strategies":{"type":"Strategies","name":"New Strategies","config":"{\n\"initialValue\": 0\n}","id":"caf6b80c-fff7-4c1e-abf9-3b37cd8d3806","savedPayload":{"position":{"x":34332.81351609887,"y":23217.80138596745},"targetPosition":{"x":34193.085206597716,"y":23660.781893765983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"positions":{"type":"Positions","name":"New Positions","config":"{\n\"initialValue\": 0\n}","id":"e9184950-7342-4ba0-96cd-bf51ac20c432","savedPayload":{"position":{"x":34491.56087360951,"y":23304.91892234468},"targetPosition":{"x":34193.085206597716,"y":23660.781893765983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"orders":{"type":"Orders","name":"New Orders","config":"{\n\"initialValue\": 0\n}","id":"668e9060-80e2-41d4-8528-65b40a9dc523","savedPayload":{"position":{"x":34605.02363964819,"y":23446.103791510595},"targetPosition":{"x":34193.085206597716,"y":23660.781893765983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"hits":{"type":"Hits","name":"New Hits","config":"{\n\"initialValue\": 0\n}","id":"e9beeed6-f4c1-4862-a84a-9215a5dc0b76","savedPayload":{"position":{"x":34655.8001262378,"y":23619.763160354043},"targetPosition":{"x":34193.085206597716,"y":23660.781893765983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"fails":{"type":"Fails","name":"New Fails","config":"{\n\"initialValue\": 0\n}","id":"db9005e4-0895-4a13-80de-3d7592477457","savedPayload":{"position":{"x":34664.560036450064,"y":23768.415045052592},"targetPosition":{"x":34193.085206597716,"y":23660.781893765983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[{"type":"User Defined Counter","name":"New User Defined Counter","config":"{\n\"initialValue\": 0\n}","id":"43f2fef0-fffd-45d1-9ded-ba2bda6908cb","savedPayload":{"position":{"x":34536.97550104554,"y":23968.623378978828},"targetPosition":{"x":34193.085206597716,"y":23660.781893765983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"id":"5a0d3549-0f15-4815-b4b3-11b78cc0ee8f","savedPayload":{"position":{"x":34192.89709943582,"y":23660.786075205375},"targetPosition":{"x":33370.252954726864,"y":24089.230920316222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"episodeStatistics":{"type":"Episode Statistics","name":"New Episode Statistics","profitLoss":{"type":"Profit Loss","name":"New Profit Loss","config":"{\n\"initialValue\": 0\n}","id":"e3d6d413-30e8-4d83-9fdb-0c344065bb25","savedPayload":{"position":{"x":34335.25840424959,"y":22887.14334273329},"targetPosition":{"x":34254.627519538335,"y":23810.672916656717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"ROI":{"type":"ROI","name":"New ROI","config":"{\n\"initialValue\": 0\n}","id":"9d578e19-1f24-46a0-95bc-ac1b0db612d8","savedPayload":{"position":{"x":34682.09350092782,"y":22988.816366277028},"targetPosition":{"x":34254.627519538335,"y":23810.672916656717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"hitFail":{"type":"Hit Fail","name":"New Hit Fail","config":"{\n\"initialValue\": \"\"\n}","id":"660dcca3-ccee-4e7c-91b2-2c23884d901e","savedPayload":{"position":{"x":34998.41600456259,"y":23203.438483089823},"targetPosition":{"x":34254.627519538335,"y":23810.672916656717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"2c041b27-ee4b-444d-a80f-d4441a072079","savedPayload":{"position":{"x":35139.01331454022,"y":23532.08791639396},"targetPosition":{"x":34254.627519538335,"y":23810.672916656717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"annualizedRateOfReturn":{"type":"Annualized Rate Of Return","name":"New Annualized Rate Of Return","config":"{\n\"initialValue\": 0\n}","id":"adaf52e7-6cfb-419c-a977-8453841db79c","savedPayload":{"position":{"x":35178.356833313796,"y":23891.395841036585},"targetPosition":{"x":34254.627519538335,"y":23810.672916656717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Write your Formula code here.","id":"03dfd055-de12-4acd-a2d6-09571bcb476b","savedPayload":{"position":{"x":35078.14483522259,"y":24238.736233147258},"targetPosition":{"x":34666.73885919225,"y":24024.68029870713},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c4634159-3ab1-4053-bcd3-ef6807874149","savedPayload":{"position":{"x":34666.73885919225,"y":24024.68029870713},"targetPosition":{"x":34254.627519538335,"y":23810.672916656717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Write your Formula code here.","id":"e26802c2-6390-430a-8223-a22b45fa625f","savedPayload":{"position":{"x":34851.37751896244,"y":24521.58586593574},"targetPosition":{"x":34553.231403728576,"y":24166.398434019473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"40e19232-9c8e-4f03-857e-98a57ac22551","savedPayload":{"position":{"x":34553.231403728576,"y":24166.398434019473},"targetPosition":{"x":34254.627519538335,"y":23810.672916656717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fb2b103c-aa99-4528-b517-26f8b19c8f2e","savedPayload":{"position":{"x":34254.73889010179,"y":23810.23063112246},"targetPosition":{"x":33370.252954726864,"y":24089.230920316222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"distanceToEvent":{"type":"Distance To Event","name":"New Distance To Event","triggerOn":{"type":"Trigger On","name":"New Trigger On","config":"{\n\"initialValue\": 0\n}","id":"902bb26e-1767-438f-ad17-90ecdf895917","savedPayload":{"position":{"x":34975.62667445321,"y":23335.76971136797},"targetPosition":{"x":34292.77589579087,"y":23968.788269761615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"triggerOff":{"type":"Trigger Off","name":"New Trigger Off","config":"{\n\"initialValue\": 0\n}","id":"38a99470-0ba3-449b-b390-e91b641df71e","savedPayload":{"position":{"x":35066.38018482406,"y":23444.04388510572},"targetPosition":{"x":34292.77589579087,"y":23968.788269761615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"takePosition":{"type":"Take Position","name":"New Take Position","config":"{\n\"initialValue\": 0\n}","id":"2ab42094-807b-4a1b-a98e-0461ac76b96a","savedPayload":{"position":{"x":35135.601302689145,"y":23569.95737221317},"targetPosition":{"x":34292.77589579087,"y":23968.788269761615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"closePosition":{"type":"Close Position","name":"New Close Position","config":"{\n\"initialValue\": 0\n}","id":"266078a8-278e-4725-a40a-517565ed5be2","savedPayload":{"position":{"x":35188.18258424558,"y":23705.350498849493},"targetPosition":{"x":34292.77589579087,"y":23968.788269761615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhase":{"type":"Next Phase","name":"New Next Phase","config":"{\n\"initialValue\": 0\n}","id":"700d730c-0ce4-41e5-beb4-d247ea87ff39","savedPayload":{"position":{"x":35217.59510492296,"y":23848.175333765794},"targetPosition":{"x":34292.77589579087,"y":23968.788269761615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhase":{"type":"Move To Phase","name":"New Move To Phase","config":"{\n\"initialValue\": 0\n}","id":"db34eaee-4206-47f0-9611-5157b8e8b5be","savedPayload":{"position":{"x":35225.45390187273,"y":23994.19510453201},"targetPosition":{"x":34292.77589579087,"y":23968.788269761615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"createOrder":{"type":"Create Order","name":"New Create Order","config":"{\n\"initialValue\": 0\n}","id":"0bbe164f-0d90-4784-a367-f78123ec00d7","savedPayload":{"position":{"x":35209.67884785424,"y":24139.684877922067},"targetPosition":{"x":34292.77589579087,"y":23968.788269761615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"cancelOrder":{"type":"Cancel Order","name":"New Cancel Order","config":"{\n\"initialValue\": 0\n}","id":"8c07e14b-2113-4651-9370-ac2506b7662a","savedPayload":{"position":{"x":35171.81128871362,"y":24281.164029243115},"targetPosition":{"x":34292.77589579087,"y":23968.788269761615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"closeOrder":{"type":"Close Order","name":"New Close Order","config":"{\n\"initialValue\": 0\n}","id":"3a0488f3-87b0-4f44-92f9-5abc53a68d58","savedPayload":{"position":{"x":35091.80862109924,"y":24443.55256365876},"targetPosition":{"x":34292.77589579087,"y":23968.788269761615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5fa3b58c-7e8c-4327-acbf-d6b367c2248d","savedPayload":{"position":{"x":34289.772383942895,"y":23968.13864574346},"targetPosition":{"x":33370.252954726864,"y":24089.230920316222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"candle":{"type":"Candle","name":"New Candle","begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"99e6ab4d-b289-4ffa-8011-7cd6cc8e7be2","savedPayload":{"position":{"x":34493.129905496746,"y":23708.785731719396},"targetPosition":{"x":34296.8680603369,"y":24129.65526043812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"30567d08-6c02-4566-b96e-9d308511550a","savedPayload":{"position":{"x":34639.29973287134,"y":23815.993047518277},"targetPosition":{"x":34296.8680603369,"y":24129.65526043812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"open":{"type":"Open","name":"New Open","id":"3a56e6c9-1780-496e-88f1-8bad9ba7df83","savedPayload":{"position":{"x":34733.27844819011,"y":23970.92038050997},"targetPosition":{"x":34296.8680603369,"y":24129.65526043812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"close":{"type":"Close","name":"New Close","id":"b2eaedfb-9589-49f1-8b38-91384c91821c","savedPayload":{"position":{"x":34760.82798018812,"y":24149.816178564237},"targetPosition":{"x":34296.8680603369,"y":24129.65526043812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"min":{"type":"Min","name":"New Min","id":"ee29c140-d133-4265-a4ad-1d3f9bd098c6","savedPayload":{"position":{"x":34717.753028531886,"y":24325.825796488065},"targetPosition":{"x":34296.8680603369,"y":24129.65526043812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"max":{"type":"Max","name":"New Max","id":"a6bcef43-3109-4da4-9fdc-fa9f03e5ce6b","savedPayload":{"position":{"x":34610.5934421225,"y":24471.96434293738},"targetPosition":{"x":34296.8680603369,"y":24129.65526043812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"index":{"type":"Index","name":"New Index","config":"{\n\"initialValue\": 0\n}","id":"d4a0e8f8-bf5e-42d1-b5bc-b5de3ed078dc","savedPayload":{"position":{"x":34455.54511456207,"y":24565.987099757138},"targetPosition":{"x":34296.8680603369,"y":24129.65526043812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"83f13bc0-737a-4679-aab3-e596a728693f","savedPayload":{"position":{"x":34296.8680603369,"y":24129.65526043812},"targetPosition":{"x":33370.252954726864,"y":24089.230920316222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"cycle":{"type":"Cycle","name":"New Cycle","begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"c9986759-eca8-4a11-b5fa-4930d3022ecc","savedPayload":{"position":{"x":34592.73890203944,"y":24276.02361060985},"targetPosition":{"x":34275.70850770155,"y":24290.03522598302},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"c0aa558a-35de-42e0-a6c0-48c45da865a4","savedPayload":{"position":{"x":34556.99032172931,"y":24436.46463013121},"targetPosition":{"x":34275.70850770155,"y":24290.03522598302},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"10a54b94-404f-4107-9f37-5ab09b13a0e5","savedPayload":{"position":{"x":34275.635056412895,"y":24290.304462454824},"targetPosition":{"x":33370.252954726864,"y":24089.230920316222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"772a16fc-f0e4-4bfa-8045-bf8bc984eb53","savedPayload":{"position":{"x":33575.2536349553,"y":23912.637297041158},"targetPosition":{"x":33145.62817718173,"y":24950.049407063634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"strategy":{"type":"Strategy","name":"New Strategy","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"989dc7f3-b431-49a1-b77e-a44a9c5cb9dd","savedPayload":{"position":{"x":33191.71344420418,"y":23497.182533492483},"targetPosition":{"x":33671.30376616349,"y":24290.34508560717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"6d661273-f8fd-48ac-8258-d4851c18e9b5","savedPayload":{"position":{"x":33395.64797816796,"y":23405.352993003893},"targetPosition":{"x":33671.30376616349,"y":24290.34508560717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"6440a481-de19-4054-ada3-aaf4847f7bf5","savedPayload":{"position":{"x":33615.514008823884,"y":23365.052758268794},"targetPosition":{"x":33671.30376616349,"y":24290.34508560717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"d73398fd-bef4-439b-b015-7c485f323fd9","savedPayload":{"position":{"x":33838.31186544502,"y":23378.547130325023},"targetPosition":{"x":33671.30376616349,"y":24290.34508560717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"beginRate":{"type":"Begin Rate","name":"New Begin Rate","config":"{\n\"initialValue\": 0\n}","id":"8ab7d69f-a2e4-42dc-b3c8-e55c6e9395ed","savedPayload":{"position":{"x":34051.69424039919,"y":23445.040623816945},"targetPosition":{"x":33671.30376616349,"y":24290.34508560717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"endRate":{"type":"End Rate","name":"New End Rate","config":"{\n\"initialValue\": 0\n}","id":"752b56ac-dacf-4de6-b9cd-1f907c4639d8","savedPayload":{"position":{"x":34242.9625473435,"y":23560.666174587124},"targetPosition":{"x":33671.30376616349,"y":24290.34508560717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"95eaccfe-cf23-4bde-9cc3-4d4ac22c4147","savedPayload":{"position":{"x":34401.00024007593,"y":23718.698952304996},"targetPosition":{"x":33671.30376616349,"y":24290.34508560717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"\"\n}","id":"e982b53e-71c4-40bd-a158-b477b51c18e6","savedPayload":{"position":{"x":34516.63024656558,"y":23909.96540385107},"targetPosition":{"x":33671.30376616349,"y":24290.34508560717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"No Stage\"\n}","id":"b3fcda1e-aaed-4f29-8f4e-6a3c53f41d5c","savedPayload":{"position":{"x":34583.130733889135,"y":24123.338394092636},"targetPosition":{"x":33671.30376616349,"y":24290.34508560717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"index":{"type":"Index","name":"New Index","config":"{\n\"initialValue\": -1\n}","id":"2b5497a7-5945-4c6d-89c7-328f488efcd9","savedPayload":{"position":{"x":34596.62586725256,"y":24346.13071652675},"targetPosition":{"x":33671.30376616349,"y":24290.34508560717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"strategyName":{"type":"Strategy Name","name":"New Strategy Name","config":"{\n\"initialValue\": \"\"\n}","id":"165503a7-6932-4492-b55d-e1f078e84184","savedPayload":{"position":{"x":34556.32506958052,"y":24565.991503420435},"targetPosition":{"x":33671.30376616349,"y":24290.34508560717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"strategyCounters":{"type":"Strategy Counters","name":"New Strategy Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"6444a48f-005e-435d-971f-6f4b918b448b","savedPayload":{"position":{"x":34861.55320555063,"y":25009.910686268035},"targetPosition":{"x":34464.48636625059,"y":24769.9582140897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"0959dc76-33eb-416f-ba6d-49bf7bdedcfe","savedPayload":{"position":{"x":34464.48636625059,"y":24769.9582140897},"targetPosition":{"x":33671.30376616349,"y":24290.34508560717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4ae1a2e2-3986-426d-887c-854ffcd0bacf","savedPayload":{"position":{"x":33939.604616099234,"y":24156.082692297656},"targetPosition":{"x":33145.62817718173,"y":24950.049407063634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"position":{"type":"Position","name":"New Position","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"3477c173-53bc-42ea-a3b7-4f00a1c02015","savedPayload":{"position":{"x":33671.201045691865,"y":23686.071112925492},"targetPosition":{"x":33872.156542020144,"y":24591.136655133185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"9261f02f-9032-4602-9770-072e9268313c","savedPayload":{"position":{"x":33831.75091773805,"y":23664.863878439737},"targetPosition":{"x":33872.156542020144,"y":24591.136655133185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"f0b88792-57a2-4081-90d4-e38705f487cd","savedPayload":{"position":{"x":33992.99848425604,"y":23671.890624580235},"targetPosition":{"x":33872.156542020144,"y":24591.136655133185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"3ef9a99a-9339-4ff9-b634-aa59a5f8e28a","savedPayload":{"position":{"x":34150.821585059384,"y":23706.860704395785},"targetPosition":{"x":33872.156542020144,"y":24591.136655133185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"beginRate":{"type":"Begin Rate","name":"New Begin Rate","config":"{\n\"initialValue\": 0\n}","id":"4d36149a-9c7e-4646-8c15-64a9404c8970","savedPayload":{"position":{"x":34300.15958647588,"y":23768.699872830217},"targetPosition":{"x":33872.156542020144,"y":24591.136655133185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"endRate":{"type":"End Rate","name":"New End Rate","config":"{\n\"initialValue\": 0\n}","id":"207d3050-dd30-4da0-ab7d-c29819d88f66","savedPayload":{"position":{"x":34436.48294066428,"y":23855.524043089685},"targetPosition":{"x":33872.156542020144,"y":24591.136655133185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"a927c8ca-6401-40b6-a322-697e234c031c","savedPayload":{"position":{"x":34555.65305375064,"y":23964.690116585425},"targetPosition":{"x":33872.156542020144,"y":24591.136655133185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"cabf5599-bd58-4d1c-92f5-9de5799d6aa4","savedPayload":{"position":{"x":34654.05060415924,"y":24092.872777471475},"targetPosition":{"x":33872.156542020144,"y":24591.136655133185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"No Stage\"\n}","id":"eab14f99-22d2-492d-b398-1aac390d7066","savedPayload":{"position":{"x":34728.6888770926,"y":24236.176148316423},"targetPosition":{"x":33872.156542020144,"y":24591.136655133185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"entryTargetRate":{"type":"Entry Target Rate","name":"New Entry Target Rate","config":"{\n\"initialValue\": 0\n}","id":"71b3e7d9-80d0-422d-999e-99549f5ab59d","savedPayload":{"position":{"x":34777.29937355213,"y":24390.263439498256},"targetPosition":{"x":33872.156542020144,"y":24591.136655133185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitTargetRate":{"type":"Exit Target Rate","name":"New Exit Target Rate","config":"{\n\"initialValue\": 0\n}","id":"bc637b55-04bd-4701-9683-78593832cb09","savedPayload":{"position":{"x":34798.39743037302,"y":24550.451182981848},"targetPosition":{"x":33872.156542020144,"y":24591.136655133185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"stopLoss":{"type":"Stop Loss","name":"New Stop Loss","config":"{\n\"initialValue\": 0\n}","stopLossPhase":{"type":"Stop Loss Phase","name":"New Stop Loss Phase","config":"{\n\"initialValue\": 0\n}","id":"cd72e0d5-5947-4dba-98e0-a6b245d0589a","savedPayload":{"position":{"x":35256.40276139272,"y":24706.15207600646},"targetPosition":{"x":34791.344128244804,"y":24711.654682742548},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"stopLossPosition":{"type":"Stop Loss Position","name":"New Stop Loss Position","config":"{\n\"initialValue\": \"\"\n}","id":"952c2041-9073-4207-a65d-2676a4d17bf7","savedPayload":{"position":{"x":35240.94995862773,"y":24829.094466863666},"targetPosition":{"x":34791.344128244804,"y":24711.654682742548},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6cc8dba0-5f83-4a35-af20-ec8c0f2cfcff","savedPayload":{"position":{"x":34791.344128244804,"y":24711.654682742548},"targetPosition":{"x":33872.156542020144,"y":24591.136655133185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","config":"{\n\"initialValue\": 0\n}","takeProfitPhase":{"type":"Take Profit Phase","name":"New Take Profit Phase","config":"{\n\"initialValue\": 0\n}","id":"bb18fe69-5012-4f64-ad50-387872f0c4e2","savedPayload":{"position":{"x":35214.7872221277,"y":24948.86635114265},"targetPosition":{"x":34756.31879589486,"y":24869.584603011976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"takeProfitPosition":{"type":"Take Profit Position","name":"New Take Profit Position","config":"{\n\"initialValue\": \"\"\n}","id":"90a1092c-47e5-4d98-9d9a-c1cb2f057274","savedPayload":{"position":{"x":35174.566256709644,"y":25074.2768600085},"targetPosition":{"x":34756.31879589486,"y":24869.584603011976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"df523873-e747-41bb-ac2e-a4091fd911e5","savedPayload":{"position":{"x":34756.31879589486,"y":24869.584603011976},"targetPosition":{"x":33872.156542020144,"y":24591.136655133185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionCounters":{"type":"Position Counters","name":"New Position Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"fb374cfd-85ce-434a-98fb-29262017b4df","savedPayload":{"position":{"x":34695.20926840893,"y":25019.25772652106},"targetPosition":{"x":34283.634229941286,"y":24805.19040472537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"9c24f6bf-cc20-4384-abf5-db31a0adfe75","savedPayload":{"position":{"x":34283.634229941286,"y":24805.19040472537},"targetPosition":{"x":33872.156542020144,"y":24591.136655133185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionStatistics":{"type":"Position Statistics","name":"New Position Statistics","profitLoss":{"type":"Profit Loss","name":"New Profit Loss","config":"{\n\"initialValue\": 0\n}","id":"45ce7818-05a2-4bcb-b822-034f801e3efa","savedPayload":{"position":{"x":35069.05822553372,"y":25210.90215878476},"targetPosition":{"x":34607.38954374174,"y":25155.383679529645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"ROI":{"type":"ROI","name":"New ROI","config":"{\n\"initialValue\": 0\n}","id":"c8373104-21d5-41d3-a551-71753683853b","savedPayload":{"position":{"x":35039.09242294522,"y":25331.64899310833},"targetPosition":{"x":34607.38954374174,"y":25155.383679529645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"hitFail":{"type":"Hit Fail","name":"New Hit Fail","config":"{\n\"initialValue\": \"\"\n}","id":"c809d913-3522-46b3-9735-b63a32cbdc5b","savedPayload":{"position":{"x":34978.32960916679,"y":25438.748271743705},"targetPosition":{"x":34607.38954374174,"y":25155.383679529645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"cedad2f7-7afc-4d24-8318-f800a3447b24","savedPayload":{"position":{"x":34888.42696041376,"y":25527.650002429134},"targetPosition":{"x":34607.38954374174,"y":25155.383679529645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"03d2f3b4-3d5e-4b8d-b0ba-a73b52842cf0","savedPayload":{"position":{"x":34774.597918505046,"y":25590.684924992744},"targetPosition":{"x":34696.13008527091,"y":25370.090546186282},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"445bfb04-2212-4586-8507-831dcc60a4d4","savedPayload":{"position":{"x":34696.13008527091,"y":25370.090546186282},"targetPosition":{"x":34607.38954374174,"y":25155.383679529645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dd3ec368-eae6-49cf-8753-b317c8e7725e","savedPayload":{"position":{"x":34607.38954374174,"y":25155.383679529645},"targetPosition":{"x":33872.156542020144,"y":24591.136655133185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionBaseAsset":{"type":"Position Base Asset","name":"New Position Base Asset","beginBalance":{"type":"Begin Balance","name":"New Begin Balance","config":"{\n\"initialValue\": 0\n}","id":"8c6d01dc-f258-4957-81a9-743eff6367c4","savedPayload":{"position":{"x":35399.145573957176,"y":25494.995143789114},"targetPosition":{"x":34498.637756026634,"y":25275.09453041709},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"endBalance":{"type":"End Balance","name":"New End Balance","config":"{\n\"initialValue\": 0\n}","id":"7e0d3197-eb56-4390-b319-1e29888e5eb0","savedPayload":{"position":{"x":35338.81665654305,"y":25666.72174366692},"targetPosition":{"x":34498.637756026634,"y":25275.09453041709},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"entryTargetSize":{"type":"Entry Target Size","name":"New Entry Target Size","config":"{\n\"initialValue\": 0\n}","id":"4f34b4ec-74cb-42ad-be53-3ce37b6cf429","savedPayload":{"position":{"x":35246.21319557095,"y":25823.18852993227},"targetPosition":{"x":34498.637756026634,"y":25275.09453041709},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitTargetSize":{"type":"Exit Target Size","name":"New Exit Target Size","config":"{\n\"initialValue\": 0\n}","id":"543c7935-d286-45a0-944d-95fc013f54a6","savedPayload":{"position":{"x":35124.866528629245,"y":25958.53788820454},"targetPosition":{"x":34498.637756026634,"y":25275.09453041709},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"profitLoss":{"type":"Profit Loss","name":"New Profit Loss","config":"{\n\"initialValue\": 0\n}","id":"c6a22f90-dc9e-4f23-a5c6-db20864d5764","savedPayload":{"position":{"x":34979.44886577071,"y":26067.6227219441},"targetPosition":{"x":34498.637756026634,"y":25275.09453041709},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"ROI":{"type":"ROI","name":"New ROI","config":"{\n\"initialValue\": 0\n}","id":"f8d76bbb-9697-4244-beed-e180394b0190","savedPayload":{"position":{"x":34815.516084863855,"y":26146.228458701054},"targetPosition":{"x":34498.637756026634,"y":25275.09453041709},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"hitFail":{"type":"Hit Fail","name":"New Hit Fail","config":"{\n\"initialValue\": \"\"\n}","id":"f729b426-5742-4050-9f5f-17be937603fe","savedPayload":{"position":{"x":34639.19589721313,"y":26191.355149552284},"targetPosition":{"x":34498.637756026634,"y":25275.09453041709},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"49b6cd2f-d026-45a1-94a6-34da6a8a00d0","savedPayload":{"position":{"x":34497.89905777763,"y":25274.83332750721},"targetPosition":{"x":33872.156542020144,"y":24591.136655133185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionQuotedAsset":{"type":"Position Quoted Asset","name":"New Position Quoted Asset","beginBalance":{"type":"Begin Balance","name":"New Begin Balance","config":"{\n\"initialValue\": 0\n}","id":"7ac0990c-72be-4a29-b8f5-742e3d3a187f","savedPayload":{"position":{"x":35217.688435589145,"y":25746.879770620337},"targetPosition":{"x":34368.910128232936,"y":25373.646803980148},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"endBalance":{"type":"End Balance","name":"New End Balance","config":"{\n\"initialValue\": 0\n}","id":"7671b848-4e6e-4671-8180-984b622a5252","savedPayload":{"position":{"x":35128.388671130255,"y":25905.40111193139},"targetPosition":{"x":34368.910128232936,"y":25373.646803980148},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"entryTargetSize":{"type":"Entry Target Size","name":"New Entry Target Size","config":"{\n\"initialValue\": 0\n}","id":"3f327b74-3799-4344-8694-b2b9affaec47","savedPayload":{"position":{"x":35009.98285411284,"y":26043.414570625602},"targetPosition":{"x":34368.910128232936,"y":25373.646803980148},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitTargetSize":{"type":"Exit Target Size","name":"New Exit Target Size","config":"{\n\"initialValue\": 0\n}","id":"9340a64e-303d-4e87-a281-5aba9d0735c4","savedPayload":{"position":{"x":34867.00794481684,"y":26155.53491674229},"targetPosition":{"x":34368.910128232936,"y":25373.646803980148},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"profitLoss":{"type":"Profit Loss","name":"New Profit Loss","config":"{\n\"initialValue\": 0\n}","id":"5af6674b-b49c-4f44-bddb-0316342fa013","savedPayload":{"position":{"x":34704.84873273896,"y":26237.63036330342},"targetPosition":{"x":34368.910128232936,"y":25373.646803980148},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"ROI":{"type":"ROI","name":"New ROI","config":"{\n\"initialValue\": 0\n}","id":"fd0421eb-6448-4fe6-8758-54584c7b2c3c","savedPayload":{"position":{"x":34529.74836764316,"y":26286.689093948065},"targetPosition":{"x":34368.910128232936,"y":25373.646803980148},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"hitFail":{"type":"Hit Fail","name":"New Hit Fail","config":"{\n\"initialValue\": \"\"\n}","id":"0ff63d38-707c-40a6-92ac-3e89744857c9","savedPayload":{"position":{"x":34348.51356322822,"y":26300.45642429175},"targetPosition":{"x":34368.910128232936,"y":25373.646803980148},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"37210802-7554-4c5f-8154-b89ac2cef413","savedPayload":{"position":{"x":34369.50043316594,"y":25373.455980110935},"targetPosition":{"x":33872.156542020144,"y":24591.136655133185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"37e18e8e-1d1c-42b8-a39c-ae9f169298f7","savedPayload":{"position":{"x":34183.04112226077,"y":24520.41372813941},"targetPosition":{"x":33145.62817718173,"y":24950.049407063634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"strategyTriggerStage":{"type":"Strategy Trigger Stage","name":"New Strategy Trigger Stage","begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"931c5ac7-f366-43ad-9343-c2d742858956","savedPayload":{"position":{"x":34143.495869745806,"y":24527.837806706597},"targetPosition":{"x":33942.26939306076,"y":24946.04958981221},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"59e8db85-8e15-4cc8-b9f8-13ee48f3ac6e","savedPayload":{"position":{"x":34305.2148645378,"y":24656.692344738698},"targetPosition":{"x":33942.26939306076,"y":24946.04958981221},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"383a0db7-d66b-4737-a0ad-c0fbd83141b1","savedPayload":{"position":{"x":34394.86281353534,"y":24842.87336230458},"targetPosition":{"x":33942.26939306076,"y":24946.04958981221},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"98dd6291-cae7-42bb-bfe0-7258b98b3e48","savedPayload":{"position":{"x":34394.87699854413,"y":25049.21045798584},"targetPosition":{"x":33942.26939306076,"y":24946.04958981221},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"beginRate":{"type":"Begin Rate","name":"New Begin Rate","config":"{\n\"initialValue\": 0\n}","id":"af5e94f8-f9fa-4efd-b476-b39e73a17647","savedPayload":{"position":{"x":34305.185387212936,"y":25235.416083162818},"targetPosition":{"x":33942.26939306076,"y":24946.04958981221},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"endRate":{"type":"End Rate","name":"New End Rate","config":"{\n\"initialValue\": 0\n}","id":"ff9e5f2c-39ed-4132-85ad-ea1f8bc79c77","savedPayload":{"position":{"x":34143.50401547213,"y":25364.2777899075},"targetPosition":{"x":33942.26939306076,"y":24946.04958981221},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cf358488-11ec-493e-8fa1-f9e49ebc49a4","savedPayload":{"position":{"x":34268.52385872686,"y":24950.04092926595},"targetPosition":{"x":33145.62817718173,"y":24950.049407063634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"strategyOpenStage":{"type":"Strategy Open Stage","name":"New Strategy Open Stage","begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"479be369-3e1b-403b-8205-60b134ffe853","savedPayload":{"position":{"x":34173.69392000479,"y":24947.433326064773},"targetPosition":{"x":33872.28020069989,"y":25300.712314549357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"7f4c00d9-28f8-4217-acc8-28a0610697c4","savedPayload":{"position":{"x":34268.24405285206,"y":25058.035854816408},"targetPosition":{"x":33872.28020069989,"y":25300.712314549357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"f6545702-f89a-4e30-b35b-f2b9e8e0d54a","savedPayload":{"position":{"x":34323.89464463088,"y":25192.306913052686},"targetPosition":{"x":33872.28020069989,"y":25300.712314549357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"ff2a4db2-77c1-4e50-8e93-4b19e59da2f5","savedPayload":{"position":{"x":34335.32449730161,"y":25336.9781856045},"targetPosition":{"x":33872.28020069989,"y":25300.712314549357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"beginRate":{"type":"Begin Rate","name":"New Begin Rate","config":"{\n\"initialValue\": 0\n}","id":"ce4c89e0-d04d-42e1-9817-74076e9e7c4c","savedPayload":{"position":{"x":34301.437183360176,"y":25478.271315153466},"targetPosition":{"x":33872.28020069989,"y":25300.712314549357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"endRate":{"type":"End Rate","name":"New End Rate","config":"{\n\"initialValue\": 0\n}","id":"63c332fa-e15c-44ac-96eb-1dbc96754827","savedPayload":{"position":{"x":34225.525094220226,"y":25602.175124718215},"targetPosition":{"x":33872.28020069989,"y":25300.712314549357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"stageDefinedIn":{"type":"Stage Defined In","name":"New Stage Defined In","config":"{\n\"initialValue\": \"\"\n}","id":"d5138adf-43da-40c0-8c09-3469ce877c08","savedPayload":{"position":{"x":34115.03458091716,"y":25696.539684422318},"targetPosition":{"x":33872.28020069989,"y":25300.712314549357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"stageBaseAsset":{"type":"Stage Base Asset","name":"New Stage Base Asset","targetSize":{"type":"Target Size","name":"New Target Size","config":"{\n\"initialValue\": 0\n}","id":"ec5ef5ba-d046-4d53-b0da-d501792676be","savedPayload":{"position":{"x":34282.47889351252,"y":26104.756932855005},"targetPosition":{"x":33980.34891285769,"y":25751.985289418702},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"sizePlaced":{"type":"Size Placed","name":"New Size Placed","config":"{\n\"initialValue\": 0\n}","id":"1026f6d6-b8dd-4ecf-81b9-11dfab3a552e","savedPayload":{"position":{"x":34158.337045231805,"y":26180.99772144105},"targetPosition":{"x":33980.34891285769,"y":25751.985289418702},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"shortcutKey":"r"}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"bb1b0ee5-f7f6-4646-aa36-0e08629a7042","savedPayload":{"position":{"x":34016.95277889536,"y":26214.95335289074},"targetPosition":{"x":33980.34891285769,"y":25751.985289418702},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"shortcutKey":""}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"9e964d4d-860e-4c93-9399-f06296a74049","savedPayload":{"position":{"x":33872.10863657817,"y":26203.377466400372},"targetPosition":{"x":33980.34891285769,"y":25751.985289418702},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"29dd1ff0-989e-403b-8d43-788a8140c9e1","savedPayload":{"position":{"x":33980.75778985133,"y":25752.12411304567},"targetPosition":{"x":33872.28020069989,"y":25300.712314549357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"stageQuotedAsset":{"type":"Stage Quoted Asset","name":"New Stage Quoted Asset","targetSize":{"type":"Target Size","name":"New Target Size","config":"{\n\"initialValue\": 0\n}","id":"8727b1ed-fbd4-4b60-ae3c-05ffc4c2cd86","savedPayload":{"position":{"x":34013.84431167494,"y":26192.28149730856},"targetPosition":{"x":33835.827294671064,"y":25763.459758909245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"sizePlaced":{"type":"Size Placed","name":"New Size Placed","config":"{\n\"initialValue\": 0\n}","id":"364ee3d9-3cdc-433c-8716-1d3b6bddd980","savedPayload":{"position":{"x":33872.34337624856,"y":26226.337503325216},"targetPosition":{"x":33835.827294671064,"y":25763.459758909245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"79c2e37f-7081-4d6e-b302-046e2ec27e79","savedPayload":{"position":{"x":33727.61926710702,"y":26214.92654433535},"targetPosition":{"x":33835.827294671064,"y":25763.459758909245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"7d0d2ba9-182a-4c72-b8b1-e9ba6d970293","savedPayload":{"position":{"x":33593.208528392126,"y":26159.147091351013},"targetPosition":{"x":33835.827294671064,"y":25763.459758909245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"48381545-119a-422d-b6ea-5868072f8cf4","savedPayload":{"position":{"x":33835.827294671064,"y":25763.459758909245},"targetPosition":{"x":33872.28020069989,"y":25300.712314549357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ecf3bffe-dd3d-4b29-b744-2a9a7dd3f7b7","savedPayload":{"position":{"x":34183.041118050314,"y":25379.673196891064},"targetPosition":{"x":33145.62817718173,"y":24950.049407063634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"strategyManageStage":{"type":"Strategy Manage Stage","name":"New Strategy Manage Stage","begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"a1884450-68d0-41fd-a7af-f55c1fa2ac98","savedPayload":{"position":{"x":34109.34611229984,"y":25448.448838243527},"targetPosition":{"x":33671.35034606709,"y":25601.628208123417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"c178d9c3-ab54-474a-aecc-e26890ba579f","savedPayload":{"position":{"x":34132.542815183064,"y":25653.183500318384},"targetPosition":{"x":33671.35034606709,"y":25601.628208123417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"f3b3a0fa-650a-4fdc-b080-98d71a5aeadb","savedPayload":{"position":{"x":34064.68381422679,"y":25848.57994192977},"targetPosition":{"x":33671.35034606709,"y":25601.628208123417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"02e7b009-0743-424a-b019-136886535362","savedPayload":{"position":{"x":33918.27259474241,"y":25994.47374948291},"targetPosition":{"x":33671.35034606709,"y":25601.628208123417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"beginRate":{"type":"Begin Rate","name":"New Begin Rate","config":"{\n\"initialValue\": 0\n}","id":"12c10a40-ec02-4ad5-aa19-7248bc152a09","savedPayload":{"position":{"x":33723.184531852814,"y":26062.77202172908},"targetPosition":{"x":33671.35034606709,"y":25601.628208123417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"endRate":{"type":"End Rate","name":"New End Rate","config":"{\n\"initialValue\": 0\n}","id":"6c5e211f-117b-4bdb-b5d0-d4ff9137d20f","savedPayload":{"position":{"x":33518.45180499006,"y":26039.96517430623},"targetPosition":{"x":33671.35034606709,"y":25601.628208123417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"23623d89-4f23-4827-bd18-d10ed8cd91ce","savedPayload":{"position":{"x":33939.604645601656,"y":25744.00419544067},"targetPosition":{"x":33145.62817718173,"y":24950.049407063634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"strategyCloseStage":{"type":"Strategy Close Stage","name":"New Strategy Close Stage","begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"77de6af4-78af-47eb-9d05-1b45bd90f432","savedPayload":{"position":{"x":33833.41391480598,"y":25766.107203404386},"targetPosition":{"x":33370.43603717759,"y":25802.74557088463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"ee5c568c-cc11-4ef1-b53d-528e54090442","savedPayload":{"position":{"x":33822.07367934739,"y":25910.994978768977},"targetPosition":{"x":33370.43603717759,"y":25802.74557088463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"171cfa7e-95e0-4c9d-a682-52b346e1f4d0","savedPayload":{"position":{"x":33766.464487306286,"y":26045.322255782834},"targetPosition":{"x":33370.43603717759,"y":25802.74557088463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"c7c4bde9-a2cf-40db-b7a4-23d84ec57389","savedPayload":{"position":{"x":33672.078211412954,"y":26155.85921898455},"targetPosition":{"x":33370.43603717759,"y":25802.74557088463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"beginRate":{"type":"Begin Rate","name":"New Begin Rate","config":"{\n\"initialValue\": 0\n}","id":"ac995378-3294-475b-9863-ec9d01a2c620","savedPayload":{"position":{"x":33548.160168265225,"y":26231.80920508027},"targetPosition":{"x":33370.43603717759,"y":25802.74557088463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"endRate":{"type":"End Rate","name":"New End Rate","config":"{\n\"initialValue\": 0\n}","id":"36633085-158f-42dd-8d0a-22d94af1d95f","savedPayload":{"position":{"x":33406.84425131375,"y":26265.742711719635},"targetPosition":{"x":33370.43603717759,"y":25802.74557088463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"stageDefinedIn":{"type":"Stage Defined In","name":"New Stage Defined In","config":"{\n\"initialValue\": \"\"\n}","id":"d0add24e-c4fb-4ffa-8d5c-f80712fb2e5f","savedPayload":{"position":{"x":33262.25521648328,"y":26254.337358437435},"targetPosition":{"x":33370.43603717759,"y":25802.74557088463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"stageBaseAsset":{"type":"Stage Base Asset","name":"New Stage Base Asset","targetSize":{"type":"Target Size","name":"New Target Size","config":"{\n\"initialValue\": 0\n}","id":"c3c3f2eb-97a1-49e2-9274-dae429f86bb7","savedPayload":{"position":{"x":33093.34720774029,"y":26662.066100959797},"targetPosition":{"x":33129.6198380394,"y":26198.250664427032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"sizePlaced":{"type":"Size Placed","name":"New Size Placed","config":"{\n\"initialValue\": 0\n}","id":"32c52f90-73a0-40a3-b6b5-f66ae5c9bcf7","savedPayload":{"position":{"x":32952.54472354154,"y":26626.930351021998},"targetPosition":{"x":33129.6198380394,"y":26198.250664427032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"0b788290-7362-4697-8426-28d8256be6e4","savedPayload":{"position":{"x":32849.437375818605,"y":26542.73507384883},"targetPosition":{"x":33129.6198380394,"y":26198.250664427032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"4706a702-a16a-4382-bb31-60dd83460120","savedPayload":{"position":{"x":32733.868294695025,"y":26440.032405414866},"targetPosition":{"x":33129.6198380394,"y":26198.250664427032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ccf55d5f-01a0-4b6c-b6bd-6114040e1ea6","savedPayload":{"position":{"x":33128.049827390925,"y":26198.72793415701},"targetPosition":{"x":33370.43603717759,"y":25802.74557088463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"stageQuotedAsset":{"type":"Stage Quoted Asset","name":"New Stage Quoted Asset","targetSize":{"type":"Target Size","name":"New Target Size","config":"{\n\"initialValue\": 0\n}","id":"81269885-7567-4162-bdae-9ae3aaf02300","savedPayload":{"position":{"x":34000.0087396545,"y":26222.810461636134},"targetPosition":{"x":33822.432170918735,"y":25793.85758887941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"sizePlaced":{"type":"Size Placed","name":"New Size Placed","config":"{\n\"initialValue\": 0\n}","id":"8d101afe-a76b-452a-831b-3b8c5d45d27f","savedPayload":{"position":{"x":33858.4203966197,"y":26256.953427450906},"targetPosition":{"x":33822.432170918735,"y":25793.85758887941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"5560b6f6-b787-4a6c-a082-6a5a9cc16d77","savedPayload":{"position":{"x":33713.60629452864,"y":26245.39521428991},"targetPosition":{"x":33822.432170918735,"y":25793.85758887941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"8211c5c6-520d-4296-81b5-888d9c8fb90d","savedPayload":{"position":{"x":33579.31731184106,"y":26189.369883809886},"targetPosition":{"x":33822.432170918735,"y":25793.85758887941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0851ffc1-4ce3-4977-9a68-61e0d1b89d32","savedPayload":{"position":{"x":33022.73491877931,"y":26109.963985161277},"targetPosition":{"x":33370.43603717759,"y":25802.74557088463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c7c28513-1e64-4ab8-8d7d-4448c0027721","savedPayload":{"position":{"x":33575.25373232205,"y":25987.44973462279},"targetPosition":{"x":33145.62817718173,"y":24950.049407063634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9404147f-b225-4709-a1b5-394cf9903622","savedPayload":{"position":{"x":33145.62817718173,"y":24950.049407063634},"targetPosition":{"x":32396.55093774257,"y":24950.049392142086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"last":{"type":"Last","name":"New Last","position":{"type":"Position","name":"New Position","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"7cb38892-bc86-4771-b74e-edebdc17ec3a","savedPayload":{"position":{"x":33419.91780367088,"y":25545.248984257203},"targetPosition":{"x":32940.779932567784,"y":26018.297061187222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"22d3c1b5-001d-4ca3-b38e-10f70610e1be","savedPayload":{"position":{"x":33497.71001411139,"y":25638.140705090143},"targetPosition":{"x":32940.779932567784,"y":26018.297061187222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"df386025-376f-453b-aa1a-2a4ab2888c83","savedPayload":{"position":{"x":33556.60255324205,"y":25742.09100493308},"targetPosition":{"x":32940.779932567784,"y":26018.297061187222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"5f07b765-ee12-4181-85c0-94748b03d839","savedPayload":{"position":{"x":33595.870962014735,"y":25854.048268447958},"targetPosition":{"x":32940.779932567784,"y":26018.297061187222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"beginRate":{"type":"Begin Rate","name":"New Begin Rate","config":"{\n\"initialValue\": 0\n}","id":"d82fcc11-12d7-45e4-8a03-f8b2fe6bd28e","savedPayload":{"position":{"x":33614.65840434383,"y":25970.76172967603},"targetPosition":{"x":32940.779932567784,"y":26018.297061187222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"endRate":{"type":"End Rate","name":"New End Rate","config":"{\n\"initialValue\": 0\n}","id":"e026edaf-074a-4eab-9f95-85ed3bc5003c","savedPayload":{"position":{"x":33612.71335333125,"y":26088.74122247602},"targetPosition":{"x":32940.779932567784,"y":26018.297061187222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"45078dd6-c7e7-42b0-b0bf-db5927a4b404","savedPayload":{"position":{"x":33590.246631894384,"y":26204.458041865346},"targetPosition":{"x":32940.779932567784,"y":26018.297061187222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"\"\n}","id":"e5d13ca1-1c13-4c44-9d97-50fd98de5755","savedPayload":{"position":{"x":33548.03277826593,"y":26314.457028181747},"targetPosition":{"x":32940.779932567784,"y":26018.297061187222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"No Stage\"\n}","id":"20fcc6f8-e21c-4412-9ce8-833da712c35c","savedPayload":{"position":{"x":33487.364364881585,"y":26415.42593390222},"targetPosition":{"x":32940.779932567784,"y":26018.297061187222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"entryTargetRate":{"type":"Entry Target Rate","name":"New Entry Target Rate","config":"{\n\"initialValue\": 0\n}","id":"7a3f4b4f-0ff4-424d-b35f-626ba3ea02e8","savedPayload":{"position":{"x":33410.08593383223,"y":26504.30946738299},"targetPosition":{"x":32940.779932567784,"y":26018.297061187222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitTargetRate":{"type":"Exit Target Rate","name":"New Exit Target Rate","config":"{\n\"initialValue\": 0\n}","id":"cfedd274-c3ea-4048-95c8-ff040c67fefe","savedPayload":{"position":{"x":33318.545613455884,"y":26578.410582188568},"targetPosition":{"x":32940.779932567784,"y":26018.297061187222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"stopLoss":{"type":"Stop Loss","name":"New Stop Loss","config":"{\n\"initialValue\": 0\n}","stopLossPhase":{"type":"Stop Loss Phase","name":"New Stop Loss Phase","config":"{\n\"initialValue\": 0\n}","id":"1e86cfaa-6316-4629-99e5-c19bf7690b00","savedPayload":{"position":{"x":32821.30825558574,"y":27547.267373480558},"targetPosition":{"x":32733.0809870632,"y":26879.56279467883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"stopLossPosition":{"type":"Stop Loss Position","name":"New Stop Loss Position","config":"{\n\"initialValue\": \"\"\n}","id":"fb0a2f9c-46fc-4a94-a137-bda440bb257e","savedPayload":{"position":{"x":32645.333674319416,"y":27547.341312912475},"targetPosition":{"x":32733.0809870632,"y":26879.56279467883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dde16cfc-ae9b-4f8f-a994-2023cc79e609","savedPayload":{"position":{"x":33215.51841307525,"y":26635.45854096632},"targetPosition":{"x":32940.779932567784,"y":26018.297061187222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","config":"{\n\"initialValue\": 0\n}","takeProfitPhase":{"type":"Take Profit Phase","name":"New Take Profit Phase","config":"{\n\"initialValue\": 0\n}","id":"019e4501-c133-464f-9fbd-8635aed9e325","savedPayload":{"position":{"x":32586.576805988887,"y":27542.076313341866},"targetPosition":{"x":32615.607936187393,"y":26869.224725995256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"takeProfitPosition":{"type":"Take Profit Position","name":"New Take Profit Position","config":"{\n\"initialValue\": \"\"\n}","id":"d105ba15-57a8-4330-b1ac-d57d235bc4d0","savedPayload":{"position":{"x":32412.957985546207,"y":27511.47365644222},"targetPosition":{"x":32615.607936187393,"y":26869.224725995256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e9a86fd6-21b5-46db-b551-b4502467025e","savedPayload":{"position":{"x":33104.1291009703,"y":26673.640577996783},"targetPosition":{"x":32940.779932567784,"y":26018.297061187222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionCounters":{"type":"Position Counters","name":"New Position Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"54222121-067d-4819-969b-ed18bf53b077","savedPayload":{"position":{"x":32999.90820857471,"y":26860.725823266737},"targetPosition":{"x":32987.80516247567,"y":26691.813221809512},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"6cfdc33a-accb-4fa6-99d2-cf90bc576452","savedPayload":{"position":{"x":32987.80516247567,"y":26691.813221809512},"targetPosition":{"x":32940.779932567784,"y":26018.297061187222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionStatistics":{"type":"Position Statistics","name":"New Position Statistics","profitLoss":{"type":"Profit Loss","name":"New Profit Loss","config":"{\n\"initialValue\": 0\n}","id":"00306590-32f1-40b3-9d28-2a311c4907bc","savedPayload":{"position":{"x":32683.60779164675,"y":27092.73856962929},"targetPosition":{"x":32665.967804808028,"y":26756.147569589906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"ROI":{"type":"ROI","name":"New ROI","config":"{\n\"initialValue\": 0\n}","id":"c97c73f5-99a0-4267-b0cd-550265dabfc9","savedPayload":{"position":{"x":32595.89056245065,"y":27085.835073973627},"targetPosition":{"x":32665.967804808028,"y":26756.147569589906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"hitFail":{"type":"Hit Fail","name":"New Hit Fail","config":"{\n\"initialValue\": \"\"\n}","id":"391d41bd-a921-4273-b41e-caf758f04e01","savedPayload":{"position":{"x":32512.948981513095,"y":27056.46391972858},"targetPosition":{"x":32665.967804808028,"y":26756.147569589906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"53d86a40-81ed-41d2-a565-41b35f78a202","savedPayload":{"position":{"x":32440.435380507522,"y":27006.626702517817},"targetPosition":{"x":32665.967804808028,"y":26756.147569589906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"c691ada5-0a55-4c33-9eb7-770dcfe20fd1","savedPayload":{"position":{"x":32383.291441508078,"y":26939.719746334355},"targetPosition":{"x":32524.629623158053,"y":26847.93365796213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1d77229e-c424-492e-a2f3-04e81345d118","savedPayload":{"position":{"x":32524.629623158053,"y":26847.93365796213},"targetPosition":{"x":32665.967804808028,"y":26756.147569589906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ca4c6442-d2f1-4eff-9b4f-03f51bc26246","savedPayload":{"position":{"x":32892.14480839183,"y":26687.761046298816},"targetPosition":{"x":32940.779932567784,"y":26018.297061187222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionBaseAsset":{"type":"Position Base Asset","name":"New Position Base Asset","beginBalance":{"type":"Begin Balance","name":"New Begin Balance","config":"{\n\"initialValue\": 0\n}","id":"a033536f-b761-407b-bfcb-fdb4c6887af6","savedPayload":{"position":{"x":32227.59719967077,"y":27391.55577755761},"targetPosition":{"x":32300.076014362035,"y":26721.816500979367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"endBalance":{"type":"End Balance","name":"New End Balance","config":"{\n\"initialValue\": 0\n}","id":"a75ae534-5dc2-4af6-883e-15221b92911c","savedPayload":{"position":{"x":32097.83506127433,"y":27364.363701891154},"targetPosition":{"x":32300.076014362035,"y":26721.816500979367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"entryTargetSize":{"type":"Entry Target Size","name":"New Entry Target Size","config":"{\n\"initialValue\": 0\n}","id":"6d04c944-0069-4834-aebf-7ad11f6e87d9","savedPayload":{"position":{"x":31976.242724796062,"y":27312.44969946568},"targetPosition":{"x":32300.076014362035,"y":26721.816500979367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitTargetSize":{"type":"Exit Target Size","name":"New Exit Target Size","config":"{\n\"initialValue\": 0\n}","id":"1de6e566-f52e-447a-9558-6ea566eb44e6","savedPayload":{"position":{"x":31867.17883882052,"y":27237.83251126339},"targetPosition":{"x":32300.076014362035,"y":26721.816500979367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"profitLoss":{"type":"Profit Loss","name":"New Profit Loss","config":"{\n\"initialValue\": 0\n}","id":"299519f3-5af9-43f7-9d56-aebde2eb1646","savedPayload":{"position":{"x":31774.785567700066,"y":27143.36048149901},"targetPosition":{"x":32300.076014362035,"y":26721.816500979367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"ROI":{"type":"ROI","name":"New ROI","config":"{\n\"initialValue\": 0\n}","id":"a7b1ab74-2854-470a-8dce-318368b447d0","savedPayload":{"position":{"x":31702.589826552925,"y":27032.610188361483},"targetPosition":{"x":32300.076014362035,"y":26721.816500979367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"hitFail":{"type":"Hit Fail","name":"New Hit Fail","config":"{\n\"initialValue\": \"\"\n}","id":"e9dbeafb-424f-4aca-8560-02f8b66d584c","savedPayload":{"position":{"x":31653.313300573507,"y":26909.52640743328},"targetPosition":{"x":32300.076014362035,"y":26721.816500979367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"75f6f07f-522c-45ed-ad5d-c5b3cb7c6c07","savedPayload":{"position":{"x":32760.078693816504,"y":26684.263643777675},"targetPosition":{"x":32940.779932567784,"y":26018.297061187222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionQuotedAsset":{"type":"Position Quoted Asset","name":"New Position Quoted Asset","beginBalance":{"type":"Begin Balance","name":"New Begin Balance","config":"{\n\"initialValue\": 0\n}","id":"814f50a4-a3c2-441e-9380-7adc1f50fe63","savedPayload":{"position":{"x":32324.49032922609,"y":27271.414587216226},"targetPosition":{"x":32478.99565097977,"y":26615.25394581618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"endBalance":{"type":"End Balance","name":"New End Balance","config":"{\n\"initialValue\": 0\n}","id":"c19014a7-b345-4e4b-bc3c-9b7d4e44ec00","savedPayload":{"position":{"x":32199.44851483475,"y":27228.664151507153},"targetPosition":{"x":32478.99565097977,"y":26615.25394581618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"entryTargetSize":{"type":"Entry Target Size","name":"New Entry Target Size","config":"{\n\"initialValue\": 0\n}","id":"eb40f77a-bf19-44c8-9842-42f81c8450d0","savedPayload":{"position":{"x":32085.149540113624,"y":27162.340705597788},"targetPosition":{"x":32478.99565097977,"y":26615.25394581618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitTargetSize":{"type":"Exit Target Size","name":"New Exit Target Size","config":"{\n\"initialValue\": 0\n}","id":"2ae48a53-42f3-470f-afb7-b1201231ab67","savedPayload":{"position":{"x":31985.985850561643,"y":27074.993022319803},"targetPosition":{"x":32478.99565097977,"y":26615.25394581618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"profitLoss":{"type":"Profit Loss","name":"New Profit Loss","config":"{\n\"initialValue\": 0\n}","id":"d89b53ac-e902-4399-871d-eb444acb4b9c","savedPayload":{"position":{"x":31905.768251156645,"y":26969.977824156427},"targetPosition":{"x":32478.99565097977,"y":26615.25394581618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"ROI":{"type":"ROI","name":"New ROI","config":"{\n\"initialValue\": 0\n}","id":"4013695d-57f7-4d35-b926-a716130d5bd7","savedPayload":{"position":{"x":31847.579459257224,"y":26851.330786279883},"targetPosition":{"x":32478.99565097977,"y":26615.25394581618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"hitFail":{"type":"Hit Fail","name":"New Hit Fail","config":"{\n\"initialValue\": \"\"\n}","id":"6a12c16d-6fd8-47b4-ae90-688b2990dd2d","savedPayload":{"position":{"x":31813.65563750342,"y":26723.611447817733},"targetPosition":{"x":32478.99565097977,"y":26615.25394581618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5d48e215-20ac-47e3-9e19-4079bd8aa08c","savedPayload":{"position":{"x":32636.842397039356,"y":26592.036880410622},"targetPosition":{"x":32940.779932567784,"y":26018.297061187222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"aafaaba0-bc67-4f12-a749-f1f1c02d3a17","savedPayload":{"position":{"x":32326.6908520961,"y":26283.057959899907},"targetPosition":{"x":32022.087920110054,"y":25598.73487770186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"strategy":{"type":"Strategy","name":"New Strategy","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"33eefe8a-94c7-4f43-b32b-cab99cf96e76","savedPayload":{"position":{"x":33275.05460590862,"y":26213.59103968442},"targetPosition":{"x":32604.286684508028,"y":26262.440347947595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"19e984be-3241-4542-ad9b-b271872888ae","savedPayload":{"position":{"x":33267.310665941855,"y":26375.512687602724},"targetPosition":{"x":32604.286684508028,"y":26262.440347947595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"97723b40-10c4-4bb4-b4d8-4f3e185f9662","savedPayload":{"position":{"x":33220.94348173699,"y":26530.987006997664},"targetPosition":{"x":32604.286684508028,"y":26262.440347947595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"48b58adb-c7d2-4635-95cb-45ea9eeda108","savedPayload":{"position":{"x":33138.72727211413,"y":26670.80164041368},"targetPosition":{"x":32604.286684508028,"y":26262.440347947595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"beginRate":{"type":"Begin Rate","name":"New Begin Rate","config":"{\n\"initialValue\": 0\n}","id":"ef8bbe43-9fb3-4e9e-84d9-3725e74ee42c","savedPayload":{"position":{"x":33025.43926587677,"y":26786.84101825383},"targetPosition":{"x":32604.286684508028,"y":26262.440347947595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"endRate":{"type":"End Rate","name":"New End Rate","config":"{\n\"initialValue\": 0\n}","id":"84b9ef17-7c4e-472a-ac52-46bb6ae33b64","savedPayload":{"position":{"x":32887.673759377016,"y":26872.3927256483},"targetPosition":{"x":32604.286684508028,"y":26262.440347947595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"50ede031-76b4-4eb6-ae73-0d56619ed6f3","savedPayload":{"position":{"x":32733.437016919743,"y":26922.52728636982},"targetPosition":{"x":32604.286684508028,"y":26262.440347947595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"\"\n}","id":"24635c41-8cf9-45ba-8bbb-71c2d1e21442","savedPayload":{"position":{"x":32572.01888422149,"y":26934.27579011939},"targetPosition":{"x":32604.286684508028,"y":26262.440347947595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"No Stage\"\n}","id":"3a505e32-35a6-4c5f-a5de-f20243cfc849","savedPayload":{"position":{"x":32412.179587695362,"y":26907.00048673324},"targetPosition":{"x":32604.286684508028,"y":26262.440347947595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"index":{"type":"Index","name":"New Index","config":"{\n\"initialValue\": -1\n}","id":"442baa35-4bf6-4b8b-8d3d-387e31345ab7","savedPayload":{"position":{"x":32263.48005971809,"y":26842.178270855482},"targetPosition":{"x":32604.286684508028,"y":26262.440347947595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"strategyName":{"type":"Strategy Name","name":"New Strategy Name","config":"{\n\"initialValue\": \"\"\n}","id":"a1afe24b-0e40-4faa-adf1-cb0f629a19d7","savedPayload":{"position":{"x":32134.637364726557,"y":26743.691424169345},"targetPosition":{"x":32604.286684508028,"y":26262.440347947595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"strategyCounters":{"type":"Strategy Counters","name":"New Strategy Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"72a7b066-ea44-44cc-bc9c-9645bb103846","savedPayload":{"position":{"x":31747.12288250862,"y":26794.386457073422},"targetPosition":{"x":32032.928650988786,"y":26616.876050683597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"89864f0c-2efe-4101-98ef-b9248a524207","savedPayload":{"position":{"x":32032.928650988786,"y":26616.876050683597},"targetPosition":{"x":32604.286684508028,"y":26262.440347947595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"886fcf92-e98b-4ba3-a5f7-29b2da8ee6c8","savedPayload":{"position":{"x":31866.435492432793,"y":26331.460389063224},"targetPosition":{"x":32022.087920110054,"y":25598.73487770186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"limitOrders":{"type":"Limit Order","name":"New Limit Order","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"5c4a87d7-7e76-4cb4-b02f-a5b96faff9c9","savedPayload":{"position":{"x":32782.06618350683,"y":26581.16980634936},"targetPosition":{"x":32189.07180180668,"y":26262.70827482063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"683fdd1f-306a-4e4e-bb90-a6152496f5be","savedPayload":{"position":{"x":32712.68892875669,"y":26686.549163627024},"targetPosition":{"x":32189.07180180668,"y":26262.70827482063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exchangeId":{"type":"Exchange Id","name":"New Exchange Id","config":"{\n\"initialValue\": \"\"\n}","id":"014b85ce-5670-4737-9ffe-e475a31abc7e","savedPayload":{"position":{"x":32625.346913824298,"y":26776.411314028534},"targetPosition":{"x":32189.07180180668,"y":26262.70827482063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"7788884e-d628-4828-9f3c-d03b8ea0b2ed","savedPayload":{"position":{"x":32523.173413882163,"y":26848.241819161718},"targetPosition":{"x":32189.07180180668,"y":26262.70827482063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"0f9906dc-ddff-4b6e-8a82-558d6c67e16e","savedPayload":{"position":{"x":32409.67529195336,"y":26899.874847720734},"targetPosition":{"x":32189.07180180668,"y":26262.70827482063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rate":{"type":"Rate","name":"New Rate","config":"{\n\"initialValue\": 0\n}","id":"99919a0d-bd78-4a50-946a-bc033bfca7a0","savedPayload":{"position":{"x":32288.703440102763,"y":26929.68251216635},"targetPosition":{"x":32189.07180180668,"y":26262.70827482063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"b88600a1-1a4f-49e8-aef5-9f66dd632842","savedPayload":{"position":{"x":32164.363201510594,"y":26936.675677808074},"targetPosition":{"x":32189.07180180668,"y":26262.70827482063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"e161b4f7-99f0-43ee-9310-c06cab1b1ab0","savedPayload":{"position":{"x":32040.905802235608,"y":26920.613989911755},"targetPosition":{"x":32189.07180180668,"y":26262.70827482063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderName":{"type":"Order Name","name":"New Order Name","config":"{\n\"initialValue\": \"\"\n}","id":"93510545-cf4c-4d2f-bdac-f5100e113f0c","savedPayload":{"position":{"x":31922.517727700666,"y":26882.14756490785},"targetPosition":{"x":32189.07180180668,"y":26262.70827482063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"algorithmName":{"type":"Algorithm Name","name":"New Algorithm Name","config":"{\n\"initialValue\": \"\"\n}","id":"1ce311ec-e3ec-44a1-85c0-5562d626a602","savedPayload":{"position":{"x":31813.225035314732,"y":26822.578347009934},"targetPosition":{"x":32189.07180180668,"y":26262.70827482063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"\"\n}","id":"6678ca6b-6f7d-4fb8-ad26-becd97592a80","savedPayload":{"position":{"x":31711.917219170442,"y":26738.04933505301},"targetPosition":{"x":32189.07180180668,"y":26262.70827482063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderCounters":{"type":"Order Counters","name":"New Order Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"6983f5e7-d2a4-43b2-996a-2d07bf022251","savedPayload":{"position":{"x":31585.980301934673,"y":26684.47638203304},"targetPosition":{"x":31862.377418261396,"y":26491.22339312771},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"b159cae7-c3d8-4bc5-bccf-217d5ed764f5","savedPayload":{"position":{"x":31862.377418261396,"y":26491.22339312771},"targetPosition":{"x":32189.07180180668,"y":26262.70827482063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"lock":{"type":"Lock","name":"New Lock","config":"{\n\"initialValue\": \"Open\"\n}","id":"84601506-b411-4098-b89b-a0fc25dab789","savedPayload":{"position":{"x":31577.556927878024,"y":26543.837476379238},"targetPosition":{"x":32189.07180180668,"y":26262.70827482063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderBaseAsset":{"type":"Order Base Asset","name":"New Order Base Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"b1d09bc5-fb51-49ec-ac2c-b717d549e76d","savedPayload":{"position":{"x":31344.1111355713,"y":26738.309447397827},"targetPosition":{"x":31535.62507157052,"y":26422.703106508397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"ecd9ad56-cd63-469b-91ae-adba390bf171","savedPayload":{"position":{"x":31176.869890018817,"y":26510.661101732152},"targetPosition":{"x":31535.62507157052,"y":26422.703106508397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"843d0988-74dd-4cef-8789-3f8cfaba0288","savedPayload":{"position":{"x":31219.52109484308,"y":26231.33424832098},"targetPosition":{"x":31535.62507157052,"y":26422.703106508397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6bd8cfef-5ca4-4c17-b492-5f377b2da318","savedPayload":{"position":{"x":31535.411442586636,"y":26424.84954279942},"targetPosition":{"x":32189.07180180668,"y":26262.70827482063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderQuotedAsset":{"type":"Order Quoted Asset","name":"New Order Quoted Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"a3d7adcb-33e5-4707-bc03-12fc7c5f1a62","savedPayload":{"position":{"x":30858.048751678423,"y":25634.391279767893},"targetPosition":{"x":31245.173696601698,"y":25551.34776004245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"b998c6bd-9e7e-4950-9b74-c58a4f613b4c","savedPayload":{"position":{"x":30912.14724900936,"y":25336.25676532957},"targetPosition":{"x":31245.173696601698,"y":25551.34776004245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"314e7ea2-53a9-4e00-a530-77667403bbf1","savedPayload":{"position":{"x":31161.687575485987,"y":25163.380987669247},"targetPosition":{"x":31245.173696601698,"y":25551.34776004245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ececab38-e728-45bf-bab7-0ec18ab1f00c","savedPayload":{"position":{"x":31516.534476376124,"y":26300.94763012177},"targetPosition":{"x":32189.07180180668,"y":26262.70827482063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderStatistics":{"type":"Order Statistics","name":"New Order Statistics","percentageFilled":{"type":"Percentage Filled","name":"New Percentage Filled","config":"{\n\"initialValue\": 0\n}","id":"90fb70dd-b116-4dad-b100-10176078d976","savedPayload":{"position":{"x":31291.09502702225,"y":26413.58614839728},"targetPosition":{"x":31522.78190142275,"y":26168.929033294542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"actualRate":{"type":"Actual Rate","name":"New Actual Rate","config":"{\n\"initialValue\": 0\n}","id":"85f98313-ef05-4b22-abd4-019c5a150669","savedPayload":{"position":{"x":31191.593523685493,"y":26230.70160156394},"targetPosition":{"x":31522.78190142275,"y":26168.929033294542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"shortcutKey":""}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"688b2648-42c0-448d-ba4d-48c4edea9317","savedPayload":{"position":{"x":31218.482542088725,"y":26024.472290208378},"targetPosition":{"x":31522.78190142275,"y":26168.929033294542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"1f12b4f2-a850-4396-9f03-00b04c39e43a","savedPayload":{"position":{"x":31361.704413207783,"y":25872.894213275606},"targetPosition":{"x":31442.274665106524,"y":26021.02312133098},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"46b38d34-1481-42cf-91b6-e8f969d5667d","savedPayload":{"position":{"x":31442.274665106524,"y":26021.02312133098},"targetPosition":{"x":31522.78190142275,"y":26168.929033294542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8ddd03e8-4355-4f1f-b9c0-1eaef13de32e","savedPayload":{"position":{"x":31522.78190142275,"y":26168.929033294542},"targetPosition":{"x":32189.07180180668,"y":26262.70827482063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0f344181-126b-4235-97c5-92b1f8caa20d","savedPayload":{"position":{"x":31465.43767068117,"y":26099.94228234609},"targetPosition":{"x":32022.087920110054,"y":25598.73487770186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"marketOrders":{"type":"Market Order","name":"New Market Order","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"4e19c5cd-06c8-41aa-88b6-c3e53500f2ce","savedPayload":{"position":{"x":32441.715430376014,"y":26727.699799527247},"targetPosition":{"x":32334.29816845799,"y":25887.23668271529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"8638e802-8f3e-4eef-806a-689732daa685","savedPayload":{"position":{"x":32286.027948935614,"y":26731.888253848592},"targetPosition":{"x":32334.29816845799,"y":25887.23668271529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exchangeId":{"type":"Exchange Id","name":"New Exchange Id","config":"{\n\"initialValue\": \"\"\n}","id":"34cfab6e-fa47-41d1-9c7c-fc50251db9d6","savedPayload":{"position":{"x":32130.078963706288,"y":26712.747293278102},"targetPosition":{"x":32334.29816845799,"y":25887.23668271529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"746e3b6d-1121-456a-a236-95f0e8f02bc9","savedPayload":{"position":{"x":31984.12277104263,"y":26658.832249730047},"targetPosition":{"x":32334.29816845799,"y":25887.23668271529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"10b91c50-0ff3-4746-89f3-ea5a2bf10b78","savedPayload":{"position":{"x":31847.721939837353,"y":26584.470043377114},"targetPosition":{"x":32334.29816845799,"y":25887.23668271529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rate":{"type":"Rate","name":"New Rate","config":"{\n\"initialValue\": 0\n}","id":"b9ff8ac5-6b93-4268-95fd-3e64a9d8ded1","savedPayload":{"position":{"x":31729.45603192796,"y":26479.170431179846},"targetPosition":{"x":32334.29816845799,"y":25887.23668271529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"b6040957-3530-47b9-8798-1be2aa79ba91","savedPayload":{"position":{"x":31627.925993644756,"y":26360.94500659307},"targetPosition":{"x":32334.29816845799,"y":25887.23668271529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"d2122053-2ec2-4879-a1eb-a05af04f6a37","savedPayload":{"position":{"x":31556.183598175237,"y":26222.242954638663},"targetPosition":{"x":32334.29816845799,"y":25887.23668271529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderName":{"type":"Order Name","name":"New Order Name","config":"{\n\"initialValue\": \"\"\n}","id":"7c7100ce-fabe-4f5b-a875-0f73ec1bea7a","savedPayload":{"position":{"x":31505.14111395752,"y":26074.858620876043},"targetPosition":{"x":32334.29816845799,"y":25887.23668271529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"algorithmName":{"type":"Algorithm Name","name":"New Algorithm Name","config":"{\n\"initialValue\": \"\"\n}","id":"a78a397d-2efc-41d9-b887-b3673c4a6caf","savedPayload":{"position":{"x":31485.007219508287,"y":25916.31414117403},"targetPosition":{"x":32334.29816845799,"y":25887.23668271529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"\"\n}","id":"6202ca96-5782-40e8-9a43-5187eab3825c","savedPayload":{"position":{"x":31493.926516146614,"y":25762.754220447343},"targetPosition":{"x":32334.29816845799,"y":25887.23668271529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderCounters":{"type":"Order Counters","name":"New Order Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"7e7cbae6-c274-40d6-a41f-089e5fdc39f5","savedPayload":{"position":{"x":31532.917345491685,"y":25610.14576485146},"targetPosition":{"x":31935.672719056147,"y":25748.720929517927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"f6d8f35f-224e-4135-8685-6341d3e128c9","savedPayload":{"position":{"x":31935.672719056147,"y":25748.720929517927},"targetPosition":{"x":32334.29816845799,"y":25887.23668271529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"lock":{"type":"Lock","name":"New Lock","config":"{\n\"initialValue\": \"Open\"\n}","id":"1f66bae9-8ab5-4096-baf0-f03304ae3761","savedPayload":{"position":{"x":31596.46996602301,"y":25466.007063224915},"targetPosition":{"x":32334.29816845799,"y":25887.23668271529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderBaseAsset":{"type":"Order Base Asset","name":"New Order Base Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"05925960-9b83-4221-a42f-6b1b3101f37f","savedPayload":{"position":{"x":35869.588360301845,"y":23095.836469163103},"targetPosition":{"x":35567.275899128086,"y":23371.055785734163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"f2f1aca9-c603-4c63-ae7a-ceec8bcf539f","savedPayload":{"position":{"x":35952.186054978774,"y":23232.6868655966},"targetPosition":{"x":35567.275899128086,"y":23371.055785734163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"b5cd9cdf-7786-4d90-bfab-8fd9f2c6b55e","savedPayload":{"position":{"x":35975.62998264696,"y":23390.36970216163},"targetPosition":{"x":35567.275899128086,"y":23371.055785734163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6078ba38-48d9-4123-9464-b671acb313df","savedPayload":{"position":{"x":31684.68841115206,"y":25337.078413682397},"targetPosition":{"x":32334.29816845799,"y":25887.23668271529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderQuotedAsset":{"type":"Order Quoted Asset","name":"New Order Quoted Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"e40ea964-d259-4779-acbc-6133cbbdf983","savedPayload":{"position":{"x":35952.55930378377,"y":23301.568394430386},"targetPosition":{"x":35604.89955066111,"y":23516.79769034117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"66ba7df9-f806-4985-b1cd-d6ce3a36bf0e","savedPayload":{"position":{"x":36008.690544643745,"y":23451.93469703929},"targetPosition":{"x":35604.89955066111,"y":23516.79769034117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"195c9857-33af-4dfa-b5a9-cafc956b6b67","savedPayload":{"position":{"x":36015.715678746325,"y":23625.542394784516},"targetPosition":{"x":35604.89955066111,"y":23516.79769034117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e06730c6-fa37-4125-b497-79711fc685cb","savedPayload":{"position":{"x":31799.8956139457,"y":25227.575506602247},"targetPosition":{"x":32334.29816845799,"y":25887.23668271529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderStatistics":{"type":"Order Statistics","name":"New Order Statistics","percentageFilled":{"type":"Percentage Filled","name":"New Percentage Filled","config":"{\n\"initialValue\": 0\n}","id":"ce8ba99f-24ae-4415-8bec-0ff5e4c93c28","savedPayload":{"position":{"x":35980.75903026903,"y":23566.085242167264},"targetPosition":{"x":35612.64229933887,"y":23743.164307174604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"actualRate":{"type":"Actual Rate","name":"New Actual Rate","config":"{\n\"initialValue\": 0\n}","id":"2440e044-a31c-47ff-834f-e7079a5f9d2e","savedPayload":{"position":{"x":36017.50015320121,"y":23689.09626813001},"targetPosition":{"x":35612.64229933887,"y":23743.164307174604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"056b2fe1-a3af-4f7b-a135-47b18de2b6a4","savedPayload":{"position":{"x":36014.89456885485,"y":23817.664129027584},"targetPosition":{"x":35612.64229933887,"y":23743.164307174604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"0b0697e8-0423-45fe-b3bb-fc7c6214e514","savedPayload":{"position":{"x":36052.97636365746,"y":23982.41201165999},"targetPosition":{"x":35873.6837892345,"y":23884.802149310555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f0074bb8-e239-43eb-8371-4de534b53651","savedPayload":{"position":{"x":35873.6837892345,"y":23884.802149310555},"targetPosition":{"x":35612.64229933887,"y":23743.164307174604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"37e193a3-bd64-4a96-a0f4-697cd09d3590","savedPayload":{"position":{"x":31928.132178960343,"y":25141.397176171464},"targetPosition":{"x":32334.29816845799,"y":25887.23668271529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1eb34afa-52d4-486e-83ec-e52dfaf6448a","savedPayload":{"position":{"x":31277.103887231468,"y":25676.926961437515},"targetPosition":{"x":32022.087920110054,"y":25598.73487770186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"44fbb36a-4652-4bf8-badd-47c574fe7774","savedPayload":{"position":{"x":32022.087920110054,"y":25598.73487770186},"targetPosition":{"x":32396.55093774257,"y":24950.049392142086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeOrders":{"type":"Exchange Orders","name":"New Exchange Orders","marketBuyOrders":{"type":"Market Buy Orders","name":"New Market Buy Orders","marketOrders":[{"type":"Market Order","name":"Market Buy Order #1","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"3cd2b72e-afd0-4552-a6fe-01c7a47f3501","savedPayload":{"position":{"x":31823.483553953236,"y":26578.152629594635},"targetPosition":{"x":31075.355580355605,"y":26355.924333926294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"913dc1ca-9313-4039-b832-bb4f08c75aef","savedPayload":{"position":{"x":31769.779628051685,"y":26712.23222628815},"targetPosition":{"x":31075.355580355605,"y":26355.924333926294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exchangeId":{"type":"Exchange Id","name":"New Exchange Id","config":"{\n\"initialValue\": \"\"\n}","id":"63f4f9e6-563e-4fc7-842c-08cf6937be11","savedPayload":{"position":{"x":31692.451575662122,"y":26833.86077377935},"targetPosition":{"x":31075.355580355605,"y":26355.924333926294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"fded8848-e5f2-448a-bb2a-8cbb6dae639e","savedPayload":{"position":{"x":31594.10942185245,"y":26939.157078480785},"targetPosition":{"x":31075.355580355605,"y":26355.924333926294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"b51ba6d2-3ed2-49b2-bbc2-de3930bb877d","savedPayload":{"position":{"x":31478.10182720724,"y":27024.575143762937},"targetPosition":{"x":31075.355580355605,"y":26355.924333926294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rate":{"type":"Rate","name":"New Rate","config":"{\n\"initialValue\": 0\n}","id":"9ddd0b24-7dfa-499d-8481-8d4e1d182db5","savedPayload":{"position":{"x":31348.380910869084,"y":27087.218583604066},"targetPosition":{"x":31075.355580355605,"y":26355.924333926294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"c38e8adb-0f45-403c-9c6f-7647bb881f4d","savedPayload":{"position":{"x":31209.365382538537,"y":27124.960197388966},"targetPosition":{"x":31075.355580355605,"y":26355.924333926294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"e6caddd6-d5f5-4c33-b742-6b49a20840dd","savedPayload":{"position":{"x":31066.091743850004,"y":27136.520599743533},"targetPosition":{"x":31075.355580355605,"y":26355.924333926294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderName":{"type":"Order Name","name":"New Order Name","config":"{\n\"initialValue\": \"\"\n}","id":"0a3420c6-4177-4f3d-916c-a148ca850968","savedPayload":{"position":{"x":30922.848184872404,"y":27121.50351281152},"targetPosition":{"x":31075.355580355605,"y":26355.924333926294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"algorithmName":{"type":"Algorithm Name","name":"New Algorithm Name","config":"{\n\"initialValue\": \"\"\n}","id":"fc76ed8e-8212-497d-9fc0-f0e032bb4956","savedPayload":{"position":{"x":30784.82273831402,"y":27080.432141015233},"targetPosition":{"x":31075.355580355605,"y":26355.924333926294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"\"\n}","id":"e8c6e52e-ba3b-45e9-9bb4-07c022209252","savedPayload":{"position":{"x":30656.671803289886,"y":27014.64906052337},"targetPosition":{"x":31075.355580355605,"y":26355.924333926294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderCounters":{"type":"Order Counters","name":"New Order Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"18a54f80-526e-4059-88e0-d45e65990c67","savedPayload":{"position":{"x":30518.337345925192,"y":26953.24026992949},"targetPosition":{"x":30785.21053390605,"y":26666.713698829895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"ff67287a-0a4e-4551-aa03-041288fc28cb","savedPayload":{"position":{"x":30785.21053390605,"y":26666.713698829895},"targetPosition":{"x":31075.355580355605,"y":26355.924333926294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"lock":{"type":"Lock","name":"New Lock","config":"{\n\"initialValue\": \"Open\"\n}","id":"49e850c8-3501-4d41-899e-96224d1ee461","savedPayload":{"position":{"x":30446.943246418305,"y":26818.59991363641},"targetPosition":{"x":31075.355580355605,"y":26355.924333926294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderBaseAsset":{"type":"Order Base Asset","name":"New Order Base Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"d7a3341e-e7d6-4363-bab2-f45927dc7ba7","savedPayload":{"position":{"x":30113.124700673623,"y":26987.22087662739},"targetPosition":{"x":30372.62028495971,"y":26695.182162309735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"57d4e7ab-d804-40f6-a3f2-342b11da6c71","savedPayload":{"position":{"x":30024.539737541898,"y":26897.346722308677},"targetPosition":{"x":30372.62028495971,"y":26695.182162309735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"9d44c42c-ba10-4660-b3c1-44c26373f1f2","savedPayload":{"position":{"x":29999.000766749185,"y":26722.181161790824},"targetPosition":{"x":30372.62028495971,"y":26695.182162309735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"9b9934b9-3d46-442c-a5c2-47534e7861bb","savedPayload":{"position":{"x":30372.62028495971,"y":26695.182162309735},"targetPosition":{"x":31075.355580355605,"y":26355.924333926294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderQuotedAsset":{"type":"Order Quoted Asset","name":"New Order Quoted Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"c374a797-47e4-4d35-9340-9627dbae21da","savedPayload":{"position":{"x":30027.743445791722,"y":26800.256737014228},"targetPosition":{"x":30322.303998432457,"y":26559.8455580517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"f40cc3e1-35f3-4e54-a8ef-dea041b8f86a","savedPayload":{"position":{"x":29909.61775848018,"y":26631.43100348588},"targetPosition":{"x":30322.303998432457,"y":26559.8455580517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"05cf852d-17ca-4143-81ef-2b66dc27ae64","savedPayload":{"position":{"x":29936.906222092366,"y":26501.964839657732},"targetPosition":{"x":30322.303998432457,"y":26559.8455580517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"1b6e6937-8c99-46a5-99bd-f1c19c4aa6e8","savedPayload":{"position":{"x":30322.303998432457,"y":26559.8455580517},"targetPosition":{"x":31075.355580355605,"y":26355.924333926294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderStatistics":{"type":"Order Statistics","name":"New Order Statistics","percentageFilled":{"type":"Percentage Filled","name":"New Percentage Filled","config":"{\n\"initialValue\": 0\n}","id":"f67adf1e-206a-4864-95e8-e2ee7a7c8fd2","savedPayload":{"position":{"x":32655.17766486532,"y":22788.9049851995},"targetPosition":{"x":32461.075592454497,"y":23148.619858144502},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"actualRate":{"type":"Actual Rate","name":"New Actual Rate","config":"{\n\"initialValue\": 0\n}","id":"a44a1653-e899-4fb3-b8c6-ab452221676b","savedPayload":{"position":{"x":32757.144790651415,"y":22866.68397301675},"targetPosition":{"x":32461.075592454497,"y":23148.619858144502},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"feb097b5-2ac2-4b21-816b-074bbe292378","savedPayload":{"position":{"x":32829.95202175115,"y":22972.270593658388},"targetPosition":{"x":32461.075592454497,"y":23148.619858144502},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"cd91cb19-8193-4a92-8238-0ae05b0abfe7","savedPayload":{"position":{"x":32933.67498328942,"y":23086.369471055754},"targetPosition":{"x":32730.650696604815,"y":23112.977344439274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"00dfb443-2533-489f-a0c6-a1110ed94c7c","savedPayload":{"position":{"x":32730.650696604815,"y":23112.977344439274},"targetPosition":{"x":32461.075592454497,"y":23148.619858144502},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ef52d686-c0de-4467-9620-591012e62d45","savedPayload":{"position":{"x":30297.226563832664,"y":26417.52180984751},"targetPosition":{"x":31075.355580355605,"y":26355.924333926294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7d6c3ac9-4869-4ff3-a9f2-2a6f8a31ccf3","savedPayload":{"position":{"x":31075.083359562646,"y":26356.650040003693},"targetPosition":{"x":31156.487854213166,"y":25580.567072352795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market Order","name":"Market Buy Order #2","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"c3e4801b-1175-4110-9dad-7c77890b5251","savedPayload":{"position":{"x":30804.72752726834,"y":27345.954700341514},"targetPosition":{"x":30248.3813121594,"y":26316.49906061495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"c79c56d6-c202-40fb-a179-970b96ffb32c","savedPayload":{"position":{"x":30606.965926458077,"y":27429.83525216402},"targetPosition":{"x":30248.3813121594,"y":26316.49906061495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exchangeId":{"type":"Exchange Id","name":"New Exchange Id","config":"{\n\"initialValue\": \"\"\n}","id":"22593cb5-8c92-48a4-88fc-aba10a5d8d9a","savedPayload":{"position":{"x":30396.1733442073,"y":27476.46702292037},"targetPosition":{"x":30248.3813121594,"y":26316.49906061495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"1e28e08a-bc3f-49bf-9f57-1fc67241081d","savedPayload":{"position":{"x":30180.109915804213,"y":27484.61544447288},"targetPosition":{"x":30248.3813121594,"y":26316.49906061495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"a2a427a2-c57b-451e-b844-97b983781bdf","savedPayload":{"position":{"x":29966.962893385924,"y":27451.6710249261},"targetPosition":{"x":30248.3813121594,"y":26316.49906061495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rate":{"type":"Rate","name":"New Rate","config":"{\n\"initialValue\": 0\n}","id":"3f8c5c95-f622-4dce-a111-ba139e53f34d","savedPayload":{"position":{"x":29763.26544681571,"y":27380.978780079036},"targetPosition":{"x":30248.3813121594,"y":26316.49906061495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"925cb3cc-166a-4db5-aed8-217d3634c1e2","savedPayload":{"position":{"x":29575.382600282133,"y":27273.373783105315},"targetPosition":{"x":30248.3813121594,"y":26316.49906061495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"66821726-82b4-43c9-9b52-c01ae5a6e421","savedPayload":{"position":{"x":29411.0001587049,"y":27133.00998210563},"targetPosition":{"x":30248.3813121594,"y":26316.49906061495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderName":{"type":"Order Name","name":"New Order Name","config":"{\n\"initialValue\": \"\"\n}","id":"2b460638-d6e8-431f-a14e-41d40cab2494","savedPayload":{"position":{"x":29275.712507847966,"y":26965.331347812535},"targetPosition":{"x":30248.3813121594,"y":26316.49906061495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"algorithmName":{"type":"Algorithm Name","name":"New Algorithm Name","config":"{\n\"initialValue\": \"\"\n}","id":"b49fd1ee-ea92-4687-9a54-ac215d966725","savedPayload":{"position":{"x":29172.717636475267,"y":26776.21938994094},"targetPosition":{"x":30248.3813121594,"y":26316.49906061495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"\"\n}","id":"a50280fa-32e2-45db-b575-1737b08a69a4","savedPayload":{"position":{"x":29107.022673019423,"y":26570.537874618134},"targetPosition":{"x":30248.3813121594,"y":26316.49906061495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderCounters":{"type":"Order Counters","name":"New Order Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"8f794d98-218a-4f47-b59d-7582b04f21c6","savedPayload":{"position":{"x":29078.684373777556,"y":26356.794280345304},"targetPosition":{"x":29663.507316514027,"y":26336.1019410904},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"eabd1631-8836-47db-98b2-b99d794e125b","savedPayload":{"position":{"x":29663.507316514027,"y":26336.1019410904},"targetPosition":{"x":30248.3813121594,"y":26316.49906061495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"lock":{"type":"Lock","name":"New Lock","config":"{\n\"initialValue\": \"Open\"\n}","id":"5afe9f6b-f429-46eb-8440-3380f1f6d449","savedPayload":{"position":{"x":29092.5364282923,"y":26141.07618897482},"targetPosition":{"x":30248.3813121594,"y":26316.49906061495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderBaseAsset":{"type":"Order Base Asset","name":"New Order Base Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"8378ccb4-daee-4ea7-bbde-a05b19a815db","savedPayload":{"position":{"x":28561.127181826752,"y":25966.558447249925},"targetPosition":{"x":29144.560434412055,"y":25932.20557147181},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"f4beed06-e887-4746-ae63-36c076452b2b","savedPayload":{"position":{"x":28587.709668132535,"y":25745.55270799736},"targetPosition":{"x":29144.560434412055,"y":25932.20557147181},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"acfb692f-cc8b-4385-b7e9-f69596075365","savedPayload":{"position":{"x":28706.24185259602,"y":25550.662653909058},"targetPosition":{"x":29144.560434412055,"y":25932.20557147181},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"98802c83-3a16-4dff-b385-591e59949e3f","savedPayload":{"position":{"x":29144.560434412055,"y":25932.20557147181},"targetPosition":{"x":30248.3813121594,"y":26316.49906061495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderQuotedAsset":{"type":"Order Quoted Asset","name":"New Order Quoted Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"4225b562-96e6-41f8-80ba-ff36fd97bbff","savedPayload":{"position":{"x":28658.20439047219,"y":25654.190630447967},"targetPosition":{"x":29234.029415987992,"y":25734.89497638973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"0200f5ed-e48e-4c8c-9bc1-41fc0643db8c","savedPayload":{"position":{"x":28686.79186294304,"y":25433.737379727612},"targetPosition":{"x":29234.029415987992,"y":25734.89497638973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"4d5524ae-0dbd-482a-bfbb-cfb357a74cbe","savedPayload":{"position":{"x":28901.41666669258,"y":25307.225780849683},"targetPosition":{"x":29234.029415987992,"y":25734.89497638973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e3fdab87-ca49-479a-8a43-d4dde949fbe3","savedPayload":{"position":{"x":29234.029415987992,"y":25734.89497638973},"targetPosition":{"x":30248.3813121594,"y":26316.49906061495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderStatistics":{"type":"Order Statistics","name":"New Order Statistics","percentageFilled":{"type":"Percentage Filled","name":"New Percentage Filled","config":"{\n\"initialValue\": 0\n}","id":"238be086-0999-4feb-b230-b480537fd34f","savedPayload":{"position":{"x":28801.758608834527,"y":25445.351370110187},"targetPosition":{"x":29358.11930434272,"y":25558.18889435599},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"actualRate":{"type":"Actual Rate","name":"New Actual Rate","config":"{\n\"initialValue\": 0\n}","id":"c99d1a46-a434-4cbe-a22e-e58ed5f50ba6","savedPayload":{"position":{"x":28840.350652452904,"y":25209.710311125138},"targetPosition":{"x":29358.11930434272,"y":25558.18889435599},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"305db308-40c2-446b-80d6-2dcfd0b2eac1","savedPayload":{"position":{"x":28977.776424054187,"y":25112.78264117875},"targetPosition":{"x":29358.11930434272,"y":25558.18889435599},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"6cd597c1-85da-4694-ae90-6466c7e32cfa","savedPayload":{"position":{"x":29149.275419911042,"y":25003.915277561715},"targetPosition":{"x":29261.512682344648,"y":25274.80385947647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f7474b7a-3366-4e8f-8112-c698e76bdda8","savedPayload":{"position":{"x":29261.512682344648,"y":25274.80385947647},"targetPosition":{"x":29358.11930434272,"y":25558.18889435599},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"caef76b7-9fa7-4d01-bddb-6fe620392bce","savedPayload":{"position":{"x":29358.11930434272,"y":25558.18889435599},"targetPosition":{"x":30248.3813121594,"y":26316.49906061495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f9d549de-24f3-4dc8-8c09-33d6b301280d","savedPayload":{"position":{"x":30443.781226262337,"y":25897.868637445023},"targetPosition":{"x":31156.487854213166,"y":25580.567072352795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a5823c2e-46a8-4824-a267-5606466e19db","savedPayload":{"position":{"x":31277.10573553831,"y":24223.162091721253},"targetPosition":{"x":32022.091491760737,"y":24301.35520369302},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"marketSellOrders":{"type":"Market Sell Orders","name":"New Market Sell Orders","marketOrders":[{"type":"Market Order","name":"Market Sell Order #1","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"9e62e429-ace2-469c-8d43-ddb407499fa5","savedPayload":{"position":{"x":30232.016269768177,"y":26204.912814828836},"targetPosition":{"x":30130.86083385277,"y":25431.12201348243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"4c89aeee-df1f-4f7e-b049-877f473d8c4e","savedPayload":{"position":{"x":30088.035371733782,"y":26210.363899809796},"targetPosition":{"x":30130.86083385277,"y":25431.12201348243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exchangeId":{"type":"Exchange Id","name":"New Exchange Id","config":"{\n\"initialValue\": \"\"\n}","id":"fbfd7a04-bfa3-4e4e-a607-42a7d3ba92b5","savedPayload":{"position":{"x":29945.571928175137,"y":26189.185438673594},"targetPosition":{"x":30130.86083385277,"y":25431.12201348243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"99a80e5b-0bde-4f49-a81c-a0e88b2c118f","savedPayload":{"position":{"x":29809.703972653886,"y":26142.440225978546},"targetPosition":{"x":30130.86083385277,"y":25431.12201348243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"90744b76-8917-4e5e-9313-87e7487efcfc","savedPayload":{"position":{"x":29734.9418863538,"y":26031.134940678436},"targetPosition":{"x":30130.86083385277,"y":25431.12201348243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rate":{"type":"Rate","name":"New Rate","config":"{\n\"initialValue\": 0\n}","id":"d1d02b18-2e2a-4646-8b0d-f7144bcdd945","savedPayload":{"position":{"x":29573.360567539952,"y":25977.21553429628},"targetPosition":{"x":30130.86083385277,"y":25431.12201348243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"63a268b6-7f8b-49e9-b420-37a08d4b9bbe","savedPayload":{"position":{"x":29482.67750710656,"y":25865.95821873538},"targetPosition":{"x":30130.86083385277,"y":25431.12201348243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"db3e6d10-ee2b-49da-ac75-71cc0a2246cc","savedPayload":{"position":{"x":29413.815503326674,"y":25739.555020904343},"targetPosition":{"x":30130.86083385277,"y":25431.12201348243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderName":{"type":"Order Name","name":"New Order Name","config":"{\n\"initialValue\": \"\"\n}","id":"853d913d-eedd-4349-9a40-a52f690668eb","savedPayload":{"position":{"x":29369.321688221713,"y":25602.578424785603},"targetPosition":{"x":30130.86083385277,"y":25431.12201348243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"algorithmName":{"type":"Algorithm Name","name":"New Algorithm Name","config":"{\n\"initialValue\": \"\"\n}","id":"dd180ddb-0851-47a9-a979-3ce5da36b223","savedPayload":{"position":{"x":29350.745638793436,"y":25459.72416798009},"targetPosition":{"x":30130.86083385277,"y":25431.12201348243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"\"\n}","id":"f3515c3c-7ebe-408b-ae1a-c80acb939e37","savedPayload":{"position":{"x":29358.75592485335,"y":25316.160303280907},"targetPosition":{"x":30130.86083385277,"y":25431.12201348243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderCounters":{"type":"Order Counters","name":"New Order Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"e4dc4641-78f4-446a-8e3e-7932afb51ce0","savedPayload":{"position":{"x":29359.088189278547,"y":25164.433704049643},"targetPosition":{"x":29728.116829647406,"y":25291.922567250043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"86d6ac94-c819-4724-aee1-4d0c61298b77","savedPayload":{"position":{"x":29728.116829647406,"y":25291.922567250043},"targetPosition":{"x":30130.86083385277,"y":25431.12201348243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"lock":{"type":"Lock","name":"New Lock","config":"{\n\"initialValue\": \"Open\"\n}","id":"a763d22c-0245-42ab-a0d2-b06233dc552a","savedPayload":{"position":{"x":29452.50206227413,"y":25044.970747879346},"targetPosition":{"x":30130.86083385277,"y":25431.12201348243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderBaseAsset":{"type":"Order Base Asset","name":"New Order Base Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"c7b98e92-df2c-4e5a-9940-0d10a5ea930a","savedPayload":{"position":{"x":34021.89012528243,"y":22595.161553326867},"targetPosition":{"x":33719.57766410867,"y":22870.380869897926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"8771390c-321e-457b-bf9d-bc2d341bf4dc","savedPayload":{"position":{"x":34104.48781995936,"y":22732.011949760363},"targetPosition":{"x":33719.57766410867,"y":22870.380869897926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"85c030de-a925-45ae-a811-e53e8f4f75be","savedPayload":{"position":{"x":34127.93174762755,"y":22889.694786325395},"targetPosition":{"x":33719.57766410867,"y":22870.380869897926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"bf184263-2b70-4934-a1ef-a3d9881f9171","savedPayload":{"position":{"x":29535.067888789647,"y":24926.840481969335},"targetPosition":{"x":30130.86083385277,"y":25431.12201348243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderQuotedAsset":{"type":"Order Quoted Asset","name":"New Order Quoted Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"5de83a17-4069-4cab-82a9-c2faa0aed4f4","savedPayload":{"position":{"x":34104.86106876435,"y":22800.89347859415},"targetPosition":{"x":33757.201315641694,"y":23016.122774504933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"fb23eb72-a33c-4c80-8b54-ade1b5eed5bd","savedPayload":{"position":{"x":34160.99230962433,"y":22951.259781203054},"targetPosition":{"x":33757.201315641694,"y":23016.122774504933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"4b930ee3-6684-4a26-878f-43dd26fbbdd7","savedPayload":{"position":{"x":34168.01744372691,"y":23124.86747894828},"targetPosition":{"x":33757.201315641694,"y":23016.122774504933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"96cb5ac0-a52a-4c5c-b613-357434c50a9f","savedPayload":{"position":{"x":29637.990550800125,"y":24825.89115955706},"targetPosition":{"x":30130.86083385277,"y":25431.12201348243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderStatistics":{"type":"Order Statistics","name":"New Order Statistics","percentageFilled":{"type":"Percentage Filled","name":"New Percentage Filled","config":"{\n\"initialValue\": 0\n}","id":"5647419a-17f5-44d8-85b4-e57287adeb8d","savedPayload":{"position":{"x":34133.060795249614,"y":23065.410326331028},"targetPosition":{"x":33764.944064319454,"y":23242.489391338368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"actualRate":{"type":"Actual Rate","name":"New Actual Rate","config":"{\n\"initialValue\": 0\n}","id":"cc5b4f99-1d79-47ea-b554-91f19187e628","savedPayload":{"position":{"x":34169.801918181794,"y":23188.421352293775},"targetPosition":{"x":33764.944064319454,"y":23242.489391338368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"50282e17-b223-4318-a93a-f001a8756b9f","savedPayload":{"position":{"x":34167.19633383543,"y":23316.989213191348},"targetPosition":{"x":33764.944064319454,"y":23242.489391338368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"9a913ce3-65eb-46f2-ac68-b877e8fc52fc","savedPayload":{"position":{"x":34205.27812863804,"y":23481.737095823755},"targetPosition":{"x":34025.98555421508,"y":23384.12723347432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1684af0b-83de-4fae-b7c1-7e177c983952","savedPayload":{"position":{"x":34025.98555421508,"y":23384.12723347432},"targetPosition":{"x":33764.944064319454,"y":23242.489391338368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b9099572-9359-4b04-9cf0-d10e5905fa37","savedPayload":{"position":{"x":29758.004739815457,"y":24745.452394645625},"targetPosition":{"x":30130.86083385277,"y":25431.12201348243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8e404329-d41f-41e0-ad5a-c84ee1fa2604","savedPayload":{"position":{"x":30218.88489506454,"y":25615.053824528084},"targetPosition":{"x":30872.935093644617,"y":25190.238259387897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market Order","name":"Market Sell Order #2","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"0b81731f-f5aa-4385-8087-883b0053f35e","savedPayload":{"position":{"x":30448.31428131596,"y":26028.365434148403},"targetPosition":{"x":30347.158845400554,"y":25254.574632801996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"e4da00c4-a47d-44a2-8af1-64e863d1e368","savedPayload":{"position":{"x":30304.333383281566,"y":26033.816519129363},"targetPosition":{"x":30347.158845400554,"y":25254.574632801996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exchangeId":{"type":"Exchange Id","name":"New Exchange Id","config":"{\n\"initialValue\": \"\"\n}","id":"ba273d24-bcbe-40ac-bc04-e9216cfa4744","savedPayload":{"position":{"x":30161.86993972292,"y":26012.63805799316},"targetPosition":{"x":30347.158845400554,"y":25254.574632801996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"d4cc6bef-c37c-40b1-a881-4e8bddadda43","savedPayload":{"position":{"x":30026.00198420167,"y":25965.892845298113},"targetPosition":{"x":30347.158845400554,"y":25254.574632801996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"34645282-c5b4-4fdf-ad2e-567903e0dbb2","savedPayload":{"position":{"x":29951.239897901585,"y":25854.587559998003},"targetPosition":{"x":30347.158845400554,"y":25254.574632801996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rate":{"type":"Rate","name":"New Rate","config":"{\n\"initialValue\": 0\n}","id":"4926adb9-5dfa-459d-bb6c-5f2929ec7c73","savedPayload":{"position":{"x":29789.658579087736,"y":25800.668153615847},"targetPosition":{"x":30347.158845400554,"y":25254.574632801996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"f7a4d950-f67d-423e-ab99-ba43888bfc8e","savedPayload":{"position":{"x":29698.975518654344,"y":25689.410838054948},"targetPosition":{"x":30347.158845400554,"y":25254.574632801996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"1eb65c1b-c8bf-458a-80f2-02054c23ccc6","savedPayload":{"position":{"x":29630.113514874458,"y":25563.00764022391},"targetPosition":{"x":30347.158845400554,"y":25254.574632801996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderName":{"type":"Order Name","name":"New Order Name","config":"{\n\"initialValue\": \"\"\n}","id":"a3372580-6256-41e4-993e-ea10cfa6c845","savedPayload":{"position":{"x":29585.619699769497,"y":25426.03104410517},"targetPosition":{"x":30347.158845400554,"y":25254.574632801996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"algorithmName":{"type":"Algorithm Name","name":"New Algorithm Name","config":"{\n\"initialValue\": \"\"\n}","id":"33431686-26aa-485e-a0de-3981bb35dff8","savedPayload":{"position":{"x":29567.04365034122,"y":25283.176787299657},"targetPosition":{"x":30347.158845400554,"y":25254.574632801996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"\"\n}","id":"12ec632d-d6d6-4841-b2bc-268353c80597","savedPayload":{"position":{"x":29575.053936401135,"y":25139.612922600474},"targetPosition":{"x":30347.158845400554,"y":25254.574632801996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderCounters":{"type":"Order Counters","name":"New Order Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"9b62a3d1-92a5-4d06-bdad-ffbf6f1bb330","savedPayload":{"position":{"x":29575.38620082633,"y":24987.88632336921},"targetPosition":{"x":29944.41484119519,"y":25115.37518656961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"33fe6333-e5ba-46ae-ba6e-eb72db5a18c2","savedPayload":{"position":{"x":29944.41484119519,"y":25115.37518656961},"targetPosition":{"x":30347.158845400554,"y":25254.574632801996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"lock":{"type":"Lock","name":"New Lock","config":"{\n\"initialValue\": \"Open\"\n}","id":"be48c3db-3bc7-4105-b883-ad0ed50819b2","savedPayload":{"position":{"x":29668.800073821913,"y":24868.423367198913},"targetPosition":{"x":30347.158845400554,"y":25254.574632801996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderBaseAsset":{"type":"Order Base Asset","name":"New Order Base Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"0848e446-525d-4e6a-a074-5926230c2df0","savedPayload":{"position":{"x":34238.18813683021,"y":22418.614172646434},"targetPosition":{"x":33935.875675656454,"y":22693.833489217493},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"92451f64-da38-4044-8f2c-cc95258a60f3","savedPayload":{"position":{"x":34320.78583150714,"y":22555.46456907993},"targetPosition":{"x":33935.875675656454,"y":22693.833489217493},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"39d8b4de-b9a4-4a7a-a3b3-949c3baef162","savedPayload":{"position":{"x":34344.22975917533,"y":22713.147405644962},"targetPosition":{"x":33935.875675656454,"y":22693.833489217493},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cbd98498-37d3-4b4f-b797-392f4405f28f","savedPayload":{"position":{"x":29751.36590033743,"y":24750.293101288902},"targetPosition":{"x":30347.158845400554,"y":25254.574632801996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderQuotedAsset":{"type":"Order Quoted Asset","name":"New Order Quoted Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"dcd46554-00ff-4808-a75c-607b31e6114c","savedPayload":{"position":{"x":34321.159080312136,"y":22624.346097913716},"targetPosition":{"x":33973.49932718948,"y":22839.5753938245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"a58bd9db-f888-4678-8291-c8b7f2d3185d","savedPayload":{"position":{"x":34377.29032117211,"y":22774.71240052262},"targetPosition":{"x":33973.49932718948,"y":22839.5753938245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"e05bef30-b5dd-4475-9cf3-5537ce25f702","savedPayload":{"position":{"x":34384.31545527469,"y":22948.320098267846},"targetPosition":{"x":33973.49932718948,"y":22839.5753938245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d60208af-cf08-4b32-8772-9daa1b7479cf","savedPayload":{"position":{"x":29854.28856234791,"y":24649.343778876628},"targetPosition":{"x":30347.158845400554,"y":25254.574632801996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderStatistics":{"type":"Order Statistics","name":"New Order Statistics","percentageFilled":{"type":"Percentage Filled","name":"New Percentage Filled","config":"{\n\"initialValue\": 0\n}","id":"ac0449d3-86dc-45b2-8f93-c7573015ffbc","savedPayload":{"position":{"x":34349.3588067974,"y":22888.862945650595},"targetPosition":{"x":33981.24207586724,"y":23065.942010657935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"actualRate":{"type":"Actual Rate","name":"New Actual Rate","config":"{\n\"initialValue\": 0\n}","id":"a82976da-584f-4845-beb9-3c1bdd08d034","savedPayload":{"position":{"x":34386.09992972958,"y":23011.873971613342},"targetPosition":{"x":33981.24207586724,"y":23065.942010657935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"585d2e1b-0ee9-4554-a0d3-7aa6797060b3","savedPayload":{"position":{"x":34383.49434538322,"y":23140.441832510915},"targetPosition":{"x":33981.24207586724,"y":23065.942010657935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"ce0d0c85-9440-475d-834b-d44a7a8ad44f","savedPayload":{"position":{"x":34421.576140185825,"y":23305.189715143322},"targetPosition":{"x":34242.28356576287,"y":23207.579852793886},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b43d17da-95d3-4286-9f23-60d4b04fae2e","savedPayload":{"position":{"x":34242.28356576287,"y":23207.579852793886},"targetPosition":{"x":33981.24207586724,"y":23065.942010657935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"78c636c0-cedc-4e63-a357-68f172f3a408","savedPayload":{"position":{"x":29974.30275136324,"y":24568.90501396519},"targetPosition":{"x":30347.158845400554,"y":25254.574632801996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d5d8b542-53f6-4cae-8f16-197523dd0dab","savedPayload":{"position":{"x":30094.115290027446,"y":25230.773779183797},"targetPosition":{"x":30872.935093644617,"y":25190.238259387897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0cb8959b-8c1b-45f2-aa32-11c1efa63cc1","savedPayload":{"position":{"x":31465.439444859232,"y":23800.14677234971},"targetPosition":{"x":32022.091491760737,"y":24301.35520369302},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"limitBuyOrders":{"type":"Limit Buy Orders","name":"New Limit Buy Orders","limitOrders":[{"type":"Limit Order","name":"Limit Buy Order #1","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"0194d2f8-65b6-4b14-a475-98894e185842","savedPayload":{"position":{"x":30577.05434040897,"y":25871.670280452647},"targetPosition":{"x":30241.698368545083,"y":25166.635576182005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"b489aabd-42fc-4dfa-88d7-a06447eb9ab3","savedPayload":{"position":{"x":30441.541349114654,"y":25921.388207629996},"targetPosition":{"x":30241.698368545083,"y":25166.635576182005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exchangeId":{"type":"Exchange Id","name":"New Exchange Id","config":"{\n\"initialValue\": \"\"\n}","id":"ddb47e49-1bd2-4ec6-bcba-ab683fe6057a","savedPayload":{"position":{"x":30299.39322631825,"y":25945.273408274592},"targetPosition":{"x":30241.698368545083,"y":25166.635576182005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"717a205b-4e4c-483c-8cc4-b7b37b1c346c","savedPayload":{"position":{"x":30155.508658715265,"y":25942.61143991012},"targetPosition":{"x":30241.698368545083,"y":25166.635576182005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"1f6e73ab-b746-4866-a778-f0463def7cba","savedPayload":{"position":{"x":30014.38064018176,"y":25913.49919066681},"targetPosition":{"x":30241.698368545083,"y":25166.635576182005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rate":{"type":"Rate","name":"New Rate","config":"{\n\"initialValue\": 0\n}","id":"1c848292-d64a-456f-b1b9-b9e4a387436e","savedPayload":{"position":{"x":29880.984161748103,"y":25858.922409177187},"targetPosition":{"x":30241.698368545083,"y":25166.635576182005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"94931a87-f582-496a-9568-414b6c7b85ce","savedPayload":{"position":{"x":29759.819947752858,"y":25780.798388914376},"targetPosition":{"x":30241.698368545083,"y":25166.635576182005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"0216b354-f6d6-41d2-8a38-ed7dfe714b24","savedPayload":{"position":{"x":29655.081104503166,"y":25681.82038545417},"targetPosition":{"x":30241.698368545083,"y":25166.635576182005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderName":{"type":"Order Name","name":"New Order Name","config":"{\n\"initialValue\": \"\"\n}","id":"03a48411-88af-4c63-97e6-bad700dd2fbf","savedPayload":{"position":{"x":29570.356464065342,"y":25565.29147141632},"targetPosition":{"x":30241.698368545083,"y":25166.635576182005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"algorithmName":{"type":"Algorithm Name","name":"New Algorithm Name","config":"{\n\"initialValue\": \"\"\n}","id":"91379553-15c6-4663-8d4c-8c5d3bbc5822","savedPayload":{"position":{"x":29508.508109110055,"y":25435.172436609275},"targetPosition":{"x":30241.698368545083,"y":25166.635576182005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"\"\n}","id":"57d6275e-125c-4950-a515-ce56fe4c032d","savedPayload":{"position":{"x":29471.6589364276,"y":25295.865496609455},"targetPosition":{"x":30241.698368545083,"y":25166.635576182005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderCounters":{"type":"Order Counters","name":"New Order Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"588c867e-9337-4872-8490-62a114e0e0c0","savedPayload":{"position":{"x":29425.351801416437,"y":25151.80234417979},"targetPosition":{"x":29815.723674896264,"y":25158.859487383615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"371c590e-927d-4d94-8ed9-3edf5e3f8410","savedPayload":{"position":{"x":29815.723674896264,"y":25158.859487383615},"targetPosition":{"x":30241.698368545083,"y":25166.635576182005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"lock":{"type":"Lock","name":"New Lock","config":"{\n\"initialValue\": \"Open\"\n}","id":"41cd34ec-9e60-425f-97ba-cc2e874ce66b","savedPayload":{"position":{"x":29477.023517452188,"y":25009.122774986947},"targetPosition":{"x":30241.698368545083,"y":25166.635576182005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderBaseAsset":{"type":"Order Base Asset","name":"New Order Base Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"01d4bade-b1c7-4230-9638-06b14acff0ae","savedPayload":{"position":{"x":29158.62222331894,"y":25022.17300216938},"targetPosition":{"x":29519.05210912304,"y":24871.164300894667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"0d2c2d0b-6be9-48b5-990e-b1a9f86a45a8","savedPayload":{"position":{"x":29157.32526437205,"y":24723.310483598576},"targetPosition":{"x":29519.05210912304,"y":24871.164300894667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"a494886b-7045-4d81-be56-14ebaecc329c","savedPayload":{"position":{"x":29367.828183687066,"y":24510.82420074786},"targetPosition":{"x":29519.05210912304,"y":24871.164300894667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ec2bce1d-0e80-4158-bc17-ff7a0c290593","savedPayload":{"position":{"x":29519.05210912304,"y":24871.164300894667},"targetPosition":{"x":30241.698368545083,"y":25166.635576182005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderQuotedAsset":{"type":"Order Quoted Asset","name":"New Order Quoted Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"7f645045-3a7d-4086-84ae-abbf53f7f22e","savedPayload":{"position":{"x":29199.97790687983,"y":24825.991108486964},"targetPosition":{"x":29587.102851803105,"y":24742.94758876152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"58409d16-1157-486d-8ef2-68cd23246714","savedPayload":{"position":{"x":29254.076404210766,"y":24527.85659404864},"targetPosition":{"x":29587.102851803105,"y":24742.94758876152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"40a8de4e-7754-4614-ae93-9bd30cb4b918","savedPayload":{"position":{"x":29503.616730687394,"y":24354.980816388317},"targetPosition":{"x":29587.102851803105,"y":24742.94758876152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7c5da6d9-1986-4f7b-aecc-7268bf83bb66","savedPayload":{"position":{"x":29585.740608535045,"y":24743.2819027659},"targetPosition":{"x":30241.698368545083,"y":25166.635576182005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderStatistics":{"type":"Order Statistics","name":"New Order Statistics","percentageFilled":{"type":"Percentage Filled","name":"New Percentage Filled","config":"{\n\"initialValue\": 0\n}","id":"f5214e63-7a64-40d0-8c15-db40a6cafa6f","savedPayload":{"position":{"x":29286.580513844245,"y":24702.073436537336},"targetPosition":{"x":29676.189681090207,"y":24629.771745369377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"actualRate":{"type":"Actual Rate","name":"New Actual Rate","config":"{\n\"initialValue\": 0\n}","id":"65fac651-eb4d-419f-b35d-d813f3baef3f","savedPayload":{"position":{"x":29318.11315985001,"y":24459.466089776026},"targetPosition":{"x":29676.189681090207,"y":24629.771745369377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"e9a5a1b7-4755-4262-b762-4753e75cfe90","savedPayload":{"position":{"x":29486.618707739006,"y":24281.301132366396},"targetPosition":{"x":29676.189681090207,"y":24629.771745369377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"d13bdc2c-7cd0-4635-9557-1d112f122504","savedPayload":{"position":{"x":29740.07234028221,"y":24138.90954649531},"targetPosition":{"x":29714.824201120482,"y":24333.14180052115},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1509fcc5-09bf-4ce5-a508-bb80acac4a49","savedPayload":{"position":{"x":29714.824201120482,"y":24333.14180052115},"targetPosition":{"x":29676.189681090207,"y":24629.771745369377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"87b2e55b-69dc-433a-af96-2619bd7ec970","savedPayload":{"position":{"x":29674.91368362368,"y":24629.716426175866},"targetPosition":{"x":30241.698368545083,"y":25166.635576182005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"008e16b8-9487-4db3-81e1-d11c19a7f59e","savedPayload":{"position":{"x":30241.839432748726,"y":25166.512620575817},"targetPosition":{"x":30872.953646149155,"y":24707.975656548726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Limit Order","name":"Limit Buy Order #2","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"d516c43a-d83f-4062-a162-3b054a188996","savedPayload":{"position":{"x":29951.366828721635,"y":25475.501851998604},"targetPosition":{"x":30093.833047977332,"y":24708.21808086704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"706d8275-0d37-4b82-b297-46240caf7037","savedPayload":{"position":{"x":29812.425973759688,"y":25436.062073025456},"targetPosition":{"x":30093.833047977332,"y":24708.21808086704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exchangeId":{"type":"Exchange Id","name":"New Exchange Id","config":"{\n\"initialValue\": \"\"\n}","id":"5617dbbc-8ad0-4b30-a360-d22fe67fb185","savedPayload":{"position":{"x":29683.422556406946,"y":25371.802782291637},"targetPosition":{"x":30093.833047977332,"y":24708.21808086704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"17edfdf5-0772-483a-8140-2447bad2a472","savedPayload":{"position":{"x":29568.493981489737,"y":25284.9565484877},"targetPosition":{"x":30093.833047977332,"y":24708.21808086704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"f09d53f0-b4fc-4495-a331-c9c0b3b5dbd6","savedPayload":{"position":{"x":29471.469451275523,"y":25178.419957233335},"targetPosition":{"x":30093.833047977332,"y":24708.21808086704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rate":{"type":"Rate","name":"New Rate","config":"{\n\"initialValue\": 0\n}","id":"52d30ed5-1c58-47be-a12c-7d95a6dde07a","savedPayload":{"position":{"x":29395.57915167057,"y":25055.86376617638},"targetPosition":{"x":30093.833047977332,"y":24708.21808086704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"c847c219-47bb-44da-bbb6-ee2ba07e253d","savedPayload":{"position":{"x":29343.480019262177,"y":24921.512067450203},"targetPosition":{"x":30093.833047977332,"y":24708.21808086704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"d7f72ff1-0b5f-4fe3-925c-a1e5f0adb39a","savedPayload":{"position":{"x":29316.947239205736,"y":24779.916106096378},"targetPosition":{"x":30093.833047977332,"y":24708.21808086704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderName":{"type":"Order Name","name":"New Order Name","config":"{\n\"initialValue\": \"\"\n}","id":"659e5c4e-3d5e-42a6-8c88-e5defe7118ee","savedPayload":{"position":{"x":29316.862127410608,"y":24636.162890802516},"targetPosition":{"x":30093.833047977332,"y":24708.21808086704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"algorithmName":{"type":"Algorithm Name","name":"New Algorithm Name","config":"{\n\"initialValue\": \"\"\n}","id":"7917f816-7f0f-468b-a5e3-3a5bcf499e04","savedPayload":{"position":{"x":29343.294191372745,"y":24494.57954644258},"targetPosition":{"x":30093.833047977332,"y":24708.21808086704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"\"\n}","id":"4e0c3898-8897-4a60-97a9-06373c32f158","savedPayload":{"position":{"x":29395.29704356872,"y":24360.244938430074},"targetPosition":{"x":30093.833047977332,"y":24708.21808086704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderCounters":{"type":"Order Counters","name":"New Order Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"8d17bb58-f671-4c13-8de1-3be5093e98a2","savedPayload":{"position":{"x":29466.035265644212,"y":24233.709674645197},"targetPosition":{"x":29778.295896094754,"y":24469.758011133206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"bbce9d28-eac9-4e9c-aabc-13b7c27fdee2","savedPayload":{"position":{"x":29778.295896094754,"y":24469.758011133206},"targetPosition":{"x":30093.833047977332,"y":24708.21808086704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"lock":{"type":"Lock","name":"New Lock","config":"{\n\"initialValue\": \"Open\"\n}","id":"a319ae7f-4df1-47f5-9b09-f130ca02d11b","savedPayload":{"position":{"x":29568.18037914604,"y":24131.28096668769},"targetPosition":{"x":30093.833047977332,"y":24708.21808086704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderBaseAsset":{"type":"Order Base Asset","name":"New Order Base Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"7dbb1024-5bdf-4ea5-9124-c413f2027233","savedPayload":{"position":{"x":29297.02218111088,"y":23953.702663871074},"targetPosition":{"x":29682.92745759503,"y":24044.59290525792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"9ce1108e-4b0a-4ce1-a307-9ecc6a46a9ba","savedPayload":{"position":{"x":29474.032713705106,"y":23707.312724148505},"targetPosition":{"x":29682.92745759503,"y":24044.59290525792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"cb2ee517-1712-46d8-b167-586d816f541f","savedPayload":{"position":{"x":29771.718047094288,"y":23662.58953787092},"targetPosition":{"x":29682.92745759503,"y":24044.59290525792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c1a0e27c-1166-431d-ba8a-2f511fb525c4","savedPayload":{"position":{"x":29683.19168602842,"y":24044.448119701567},"targetPosition":{"x":30093.833047977332,"y":24708.21808086704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderQuotedAsset":{"type":"Order Quoted Asset","name":"New Order Quoted Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"f82d03c0-698d-4811-81a9-7d91c5eb2b1d","savedPayload":{"position":{"x":29804.601527725572,"y":23733.51997901266},"targetPosition":{"x":30099.56425489825,"y":23997.80141757878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"7fb770cd-de9f-4ed2-bf36-6e72190980e2","savedPayload":{"position":{"x":30077.82436718775,"y":23602.04059886643},"targetPosition":{"x":30099.56425489825,"y":23997.80141757878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"c47f2fc4-b14e-400b-abc7-93708c15654d","savedPayload":{"position":{"x":30363.879057522423,"y":23702.32112257143},"targetPosition":{"x":30099.56425489825,"y":23997.80141757878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f2870e23-9835-4532-bd91-b4fcc21dd948","savedPayload":{"position":{"x":29812.243402198783,"y":23980.25436303946},"targetPosition":{"x":30093.833047977332,"y":24708.21808086704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderStatistics":{"type":"Order Statistics","name":"New Order Statistics","percentageFilled":{"type":"Percentage Filled","name":"New Percentage Filled","config":"{\n\"initialValue\": 0\n}","id":"62fb7451-7bf5-496d-9353-d735820b30b2","savedPayload":{"position":{"x":29592.78827655305,"y":23770.70161617574},"targetPosition":{"x":29950.4536877684,"y":23940.964330561157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"actualRate":{"type":"Actual Rate","name":"New Actual Rate","config":"{\n\"initialValue\": 0\n}","id":"2262cd32-bff0-4385-bbc9-521774bf944e","savedPayload":{"position":{"x":29761.176577745442,"y":23592.868647786032},"targetPosition":{"x":29950.4536877684,"y":23940.964330561157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"7e524691-0da3-4c5e-bc7a-319d871dae43","savedPayload":{"position":{"x":30001.70112885696,"y":23547.578322363246},"targetPosition":{"x":29950.4536877684,"y":23940.964330561157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"25d54fc5-92c9-43e4-8cbf-71cb76a1334d","savedPayload":{"position":{"x":30290.52925066909,"y":23581.720462071044},"targetPosition":{"x":30156.516337961657,"y":23723.27932743088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f7d89aff-04c2-47cb-82f2-eaf9310be4ed","savedPayload":{"position":{"x":30156.516337961657,"y":23723.27932743088},"targetPosition":{"x":29950.4536877684,"y":23940.964330561157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e9e813ef-9592-4176-bc78-b55ba7b8c551","savedPayload":{"position":{"x":29951.22070578852,"y":23940.824893669273},"targetPosition":{"x":30093.833047977332,"y":24708.21808086704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"68fee060-9d11-4222-b788-46cc11a9305d","savedPayload":{"position":{"x":30092.786414817805,"y":24707.968946771216},"targetPosition":{"x":30872.953646149155,"y":24707.975656548726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Limit Order","name":"Limit Buy Order #3","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"19953c5d-b9dd-496e-ac1c-366d00fb0e35","savedPayload":{"position":{"x":30122.126640579456,"y":25611.87253783954},"targetPosition":{"x":30494.832818961848,"y":24926.32221199009},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"a1a87815-ca21-4253-98fc-6fe7bf39209b","savedPayload":{"position":{"x":30002.16253611319,"y":25531.4056568674},"targetPosition":{"x":30494.832818961848,"y":24926.32221199009},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exchangeId":{"type":"Exchange Id","name":"New Exchange Id","config":"{\n\"initialValue\": \"\"\n}","id":"39d13327-892e-49b0-a3b9-1b81bcc7b8a2","savedPayload":{"position":{"x":29899.26957245704,"y":25430.43359942164},"targetPosition":{"x":30494.832818961848,"y":24926.32221199009},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"a664b78f-0261-463b-8122-4f49ca906ee6","savedPayload":{"position":{"x":29816.712134729183,"y":25312.31387193883},"targetPosition":{"x":30494.832818961848,"y":24926.32221199009},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"8d4e39cb-5cde-4cef-9504-a4e065d3ed12","savedPayload":{"position":{"x":29757.26675370246,"y":25181.056500898747},"targetPosition":{"x":30494.832818961848,"y":24926.32221199009},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rate":{"type":"Rate","name":"New Rate","config":"{\n\"initialValue\": 0\n}","id":"c7a0e139-7cb3-49bb-8aea-a1c5283c5f3d","savedPayload":{"position":{"x":29722.948415743747,"y":25041.125781497914},"targetPosition":{"x":30494.832818961848,"y":24926.32221199009},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"c937b8cc-6adf-49df-8322-3eb3eb0dfdc1","savedPayload":{"position":{"x":29714.920744196563,"y":24897.571946057204},"targetPosition":{"x":30494.832818961848,"y":24926.32221199009},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"5025336e-e85b-419d-9bd9-f5811e3fa9b2","savedPayload":{"position":{"x":29733.45172292821,"y":24754.70932233065},"targetPosition":{"x":30494.832818961848,"y":24926.32221199009},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderName":{"type":"Order Name","name":"New Order Name","config":"{\n\"initialValue\": \"\"\n}","id":"643aa93b-e58d-4928-a576-c2f1ec3c2745","savedPayload":{"position":{"x":29777.911335264493,"y":24617.682047069746},"targetPosition":{"x":30494.832818961848,"y":24926.32221199009},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"algorithmName":{"type":"Algorithm Name","name":"New Algorithm Name","config":"{\n\"initialValue\": \"\"\n}","id":"e5d2af2d-22c8-453b-a4cc-e4fb81225457","savedPayload":{"position":{"x":29846.77701065311,"y":24491.15258293161},"targetPosition":{"x":30494.832818961848,"y":24926.32221199009},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"\"\n}","id":"6d137135-5b2d-4b29-a7c6-bc92ac579612","savedPayload":{"position":{"x":29937.685440435533,"y":24379.420500576147},"targetPosition":{"x":30494.832818961848,"y":24926.32221199009},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderCounters":{"type":"Order Counters","name":"New Order Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"111c6c6f-c6af-44e6-bdf6-ba6b8325c9b5","savedPayload":{"position":{"x":30044.51857708525,"y":24280.761538785264},"targetPosition":{"x":30268.471787661205,"y":24601.939119826562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"d479f8d6-64ad-46ec-8537-fe131d79a8a9","savedPayload":{"position":{"x":30268.471787661205,"y":24601.939119826562},"targetPosition":{"x":30494.832818961848,"y":24926.32221199009},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"lock":{"type":"Lock","name":"New Lock","config":"{\n\"initialValue\": \"Open\"\n}","id":"d8e6194b-d355-442a-a6c1-72580597638f","savedPayload":{"position":{"x":30173.092584972805,"y":24215.01616593517},"targetPosition":{"x":30494.832818961848,"y":24926.32221199009},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderBaseAsset":{"type":"Order Base Asset","name":"New Order Base Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"fb4e15d2-6acf-427c-b243-22c1ce1ec97c","savedPayload":{"position":{"x":30703.676030138668,"y":24640.546183273775},"targetPosition":{"x":30996.35254681346,"y":24818.428590408334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"dbcd4995-b198-4340-ace5-1fee2d4836c7","savedPayload":{"position":{"x":30915.057748562875,"y":24485.453203561363},"targetPosition":{"x":30996.35254681346,"y":24818.428590408334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"04f910f4-2a94-4ed7-a800-f7b2d218e88f","savedPayload":{"position":{"x":31174.172188818593,"y":24525.029477443204},"targetPosition":{"x":30996.35254681346,"y":24818.428590408334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"553ae1bd-21d8-4d72-8283-2aa1f909b5cd","savedPayload":{"position":{"x":30309.490056954233,"y":24168.052728729246},"targetPosition":{"x":30494.832818961848,"y":24926.32221199009},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderQuotedAsset":{"type":"Order Quoted Asset","name":"New Order Quoted Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"74010dbf-1e63-4989-b8f2-43d7a9a1508b","savedPayload":{"position":{"x":30167.498007685816,"y":24192.406529076092},"targetPosition":{"x":30462.460734858494,"y":24456.68796764221},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"746b590a-a40c-4671-a0b4-02fc443f36df","savedPayload":{"position":{"x":30440.720847147993,"y":24060.927148929863},"targetPosition":{"x":30462.460734858494,"y":24456.68796764221},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"7a964074-cc1a-4464-83c4-5a9c37bd174e","savedPayload":{"position":{"x":30726.775537482667,"y":24161.20767263486},"targetPosition":{"x":30462.460734858494,"y":24456.68796764221},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8deb2930-0f19-452a-8c4a-44d87159e3c8","savedPayload":{"position":{"x":30451.974336144594,"y":24146.89235035774},"targetPosition":{"x":30494.832818961848,"y":24926.32221199009},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderStatistics":{"type":"Order Statistics","name":"New Order Statistics","percentageFilled":{"type":"Percentage Filled","name":"New Percentage Filled","config":"{\n\"initialValue\": 0\n}","id":"c7fbd2e6-2de9-4b89-a086-4c321fbfd725","savedPayload":{"position":{"x":30318.583020497375,"y":24189.776599698256},"targetPosition":{"x":30606.11963139264,"y":24462.191653484842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"actualRate":{"type":"Actual Rate","name":"New Actual Rate","config":"{\n\"initialValue\": 0\n}","id":"5b0c5718-5ab8-462c-b7a4-f81f4bc02165","savedPayload":{"position":{"x":30533.542385565215,"y":24072.674803439306},"targetPosition":{"x":30606.11963139264,"y":24462.191653484842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"737d2666-fc0b-4d12-81fd-1ea60b82ae3f","savedPayload":{"position":{"x":30776.435206318027,"y":24103.665879967677},"targetPosition":{"x":30606.11963139264,"y":24462.191653484842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"225697e6-ae0f-47e0-9ba1-4803266d331d","savedPayload":{"position":{"x":31040.616561577666,"y":24225.393352371557},"targetPosition":{"x":30868.501896960148,"y":24319.292794410358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"49b649cd-2b6c-488c-9d2e-b7093798f8d4","savedPayload":{"position":{"x":30868.501896960148,"y":24319.292794410358},"targetPosition":{"x":30606.11963139264,"y":24462.191653484842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e7cd13f9-2f0b-4d6b-8870-a75c0b3f1992","savedPayload":{"position":{"x":30596.059730413464,"y":24152.27451060266},"targetPosition":{"x":30494.832818961848,"y":24926.32221199009},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"accb5840-90b8-4f57-869f-71d9cbdee6ee","savedPayload":{"position":{"x":30241.812909392374,"y":24249.358419458575},"targetPosition":{"x":30872.953646149155,"y":24707.975656548726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Limit Order","name":"Limit Buy Order #4","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"98451bf9-2b66-4d19-8fbd-f792d88fb324","savedPayload":{"position":{"x":29771.325435849634,"y":24234.33773407284},"targetPosition":{"x":30520.106187752783,"y":24013.365420970094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"17d393b9-5199-4676-918d-74c235161186","savedPayload":{"position":{"x":29743.65621808912,"y":24092.514234274124},"targetPosition":{"x":30520.106187752783,"y":24013.365420970094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exchangeId":{"type":"Exchange Id","name":"New Exchange Id","config":"{\n\"initialValue\": \"\"\n}","id":"14d7acd3-ff50-4ede-9afa-a9bd25100060","savedPayload":{"position":{"x":29742.73790874154,"y":23948.802574101417},"targetPosition":{"x":30520.106187752783,"y":24013.365420970094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"88413b58-802d-438e-927d-2f73ce62f26a","savedPayload":{"position":{"x":29766.20122759617,"y":23828.757941638512},"targetPosition":{"x":30520.106187752783,"y":24013.365420970094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"4bce6443-38b7-4fc2-80f2-18bebc2ca65c","savedPayload":{"position":{"x":29814.02834014407,"y":23644.61536289025},"targetPosition":{"x":30520.106187752783,"y":24013.365420970094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rate":{"type":"Rate","name":"New Rate","config":"{\n\"initialValue\": 0\n}","id":"ccc3cb23-544f-4d93-b0cd-7f31dc6374b6","savedPayload":{"position":{"x":29893.138281002462,"y":23547.839670147423},"targetPosition":{"x":30520.106187752783,"y":24013.365420970094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"0669d33c-a13b-4573-9373-e36505a14627","savedPayload":{"position":{"x":29989.191923011982,"y":23441.31166701627},"targetPosition":{"x":30520.106187752783,"y":24013.365420970094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"bbb2315b-a527-4199-9dc6-30ba8454ae0c","savedPayload":{"position":{"x":30103.332280822746,"y":23353.155084764887},"targetPosition":{"x":30520.106187752783,"y":24013.365420970094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderName":{"type":"Order Name","name":"New Order Name","config":"{\n\"initialValue\": \"\"\n}","id":"d8ca88ce-db47-4b7f-88b3-b6df03ec32ed","savedPayload":{"position":{"x":30231.68549022256,"y":23287.788433865622},"targetPosition":{"x":30520.106187752783,"y":24013.365420970094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"algorithmName":{"type":"Algorithm Name","name":"New Algorithm Name","config":"{\n\"initialValue\": \"\"\n}","id":"b133f9b6-c2bb-415d-a48e-665e75695ec1","savedPayload":{"position":{"x":30369.86213975391,"y":23247.072296183378},"targetPosition":{"x":30520.106187752783,"y":24013.365420970094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"\"\n}","id":"35499c65-da01-47b2-b7e1-12a8e1c32d01","savedPayload":{"position":{"x":30513.20343419636,"y":23232.558936476467},"targetPosition":{"x":30520.106187752783,"y":24013.365420970094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderCounters":{"type":"Order Counters","name":"New Order Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"ed741871-50af-4101-ab56-4744c8b88b1c","savedPayload":{"position":{"x":30658.18726160254,"y":23237.87583653581},"targetPosition":{"x":30589.735269937562,"y":23623.64793826448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"7f1b2469-a692-4acc-b259-aaaf71557551","savedPayload":{"position":{"x":30589.735269937562,"y":23623.64793826448},"targetPosition":{"x":30520.106187752783,"y":24013.365420970094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"lock":{"type":"Lock","name":"New Lock","config":"{\n\"initialValue\": \"Open\"\n}","id":"813fc2a2-ec07-4ff7-b77f-ba596f533c90","savedPayload":{"position":{"x":30795.442842495268,"y":23282.770749547468},"targetPosition":{"x":30520.106187752783,"y":24013.365420970094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderBaseAsset":{"type":"Order Base Asset","name":"New Order Base Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"8449f2d7-1306-40ef-946a-2579132dec2e","savedPayload":{"position":{"x":30351.779550178424,"y":24059.659633210344},"targetPosition":{"x":30644.456066853218,"y":24237.542040344902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"1d1b73f3-77f0-49b0-a13b-b5236d4b1b13","savedPayload":{"position":{"x":30563.16126860263,"y":23904.566653497932},"targetPosition":{"x":30644.456066853218,"y":24237.542040344902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"066530a0-f4d3-4786-b71d-0ba43e73d510","savedPayload":{"position":{"x":30822.27570885835,"y":23944.142927379773},"targetPosition":{"x":30644.456066853218,"y":24237.542040344902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6fe6a708-fd2a-4c8d-adf0-8db9d11afaea","savedPayload":{"position":{"x":30925.021841975882,"y":23345.866162149963},"targetPosition":{"x":30520.106187752783,"y":24013.365420970094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderQuotedAsset":{"type":"Order Quoted Asset","name":"New Order Quoted Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"f4963f9f-ac80-4e63-af92-dedb30938cfc","savedPayload":{"position":{"x":29815.601527725572,"y":23611.51997901266},"targetPosition":{"x":30110.56425489825,"y":23875.80141757878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"4aeb6c33-f400-4066-a5d9-d8dd06b9b5a1","savedPayload":{"position":{"x":30088.82436718775,"y":23480.04059886643},"targetPosition":{"x":30110.56425489825,"y":23875.80141757878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"e7ab1462-db02-4a8b-9a42-64aeda463217","savedPayload":{"position":{"x":30374.879057522423,"y":23580.32112257143},"targetPosition":{"x":30110.56425489825,"y":23875.80141757878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"790babc4-3b12-48c9-b54e-685e8a68ce93","savedPayload":{"position":{"x":31040.821989890996,"y":23431.739814235032},"targetPosition":{"x":30520.106187752783,"y":24013.365420970094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderStatistics":{"type":"Order Statistics","name":"New Order Statistics","percentageFilled":{"type":"Percentage Filled","name":"New Percentage Filled","config":"{\n\"initialValue\": 0\n}","id":"5dd514a8-cc41-42a5-9f9b-0e66182d2ea1","savedPayload":{"position":{"x":29966.68654053713,"y":23608.890049634825},"targetPosition":{"x":30254.223151432398,"y":23881.30510342141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"actualRate":{"type":"Actual Rate","name":"New Actual Rate","config":"{\n\"initialValue\": 0\n}","id":"8dec1cc6-15ca-4b47-950a-bf8ce1621597","savedPayload":{"position":{"x":30181.64590560497,"y":23491.788253375875},"targetPosition":{"x":30254.223151432398,"y":23881.30510342141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"aeb7a9fc-db49-4260-bfa7-50489799e684","savedPayload":{"position":{"x":30424.538726357783,"y":23522.779329904246},"targetPosition":{"x":30254.223151432398,"y":23881.30510342141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"0b3e6c5e-d7ce-4524-afbc-34e680e04fc1","savedPayload":{"position":{"x":30688.720081617423,"y":23644.506802308126},"targetPosition":{"x":30516.605416999904,"y":23738.406244346927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"80e7267f-7958-498a-a54a-bdb29d0e3e35","savedPayload":{"position":{"x":30516.605416999904,"y":23738.406244346927},"targetPosition":{"x":30254.223151432398,"y":23881.30510342141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a6e13625-1b79-46a4-95cd-336b5797d8c2","savedPayload":{"position":{"x":31139.03712375685,"y":23537.697519897894},"targetPosition":{"x":30520.106187752783,"y":24013.365420970094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3928e158-cbb9-40b6-910d-a2d20603bc64","savedPayload":{"position":{"x":30632.003866732073,"y":23965.855998177532},"targetPosition":{"x":30872.953646149155,"y":24707.975656548726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f8247166-0cc2-4b14-ba38-37795aa65d87","savedPayload":{"position":{"x":31866.43729143723,"y":23568.628630700467},"targetPosition":{"x":32022.091491760737,"y":24301.35520369302},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"limitSellOrders":{"type":"Limit Sell Orders","name":"New Limit Sell Orders","limitOrders":[{"type":"Limit Order","name":"Limit Sell Order #1","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"b93b7202-379b-42b8-8bf4-30c8ee6eb2b0","savedPayload":{"position":{"x":30438.516059424273,"y":25279.682916251302},"targetPosition":{"x":30398.48244281427,"y":24500.066970622833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"61e8fafd-e4c8-4002-a4c5-3f61436788a8","savedPayload":{"position":{"x":30294.501456740847,"y":25273.765296029756},"targetPosition":{"x":30398.48244281427,"y":24500.066970622833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exchangeId":{"type":"Exchange Id","name":"New Exchange Id","config":"{\n\"initialValue\": \"\"\n}","id":"e6f893c2-0b55-4383-bac8-9cf1d4c84d1c","savedPayload":{"position":{"x":30154.034700937125,"y":25241.441518679723},"targetPosition":{"x":30398.48244281427,"y":24500.066970622833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"57f75a48-8bd4-4cca-8a61-b2447a2e0ecb","savedPayload":{"position":{"x":30021.939342672296,"y":25183.86333024034},"targetPosition":{"x":30398.48244281427,"y":24500.066970622833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"601a8f27-12cd-4770-ad2d-34ed37ea253d","savedPayload":{"position":{"x":29902.686101859024,"y":25103.000096122105},"targetPosition":{"x":30398.48244281427,"y":24500.066970622833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rate":{"type":"Rate","name":"New Rate","config":"{\n\"initialValue\": 0\n}","id":"6a7faff9-39e1-479e-8875-8da5c8555685","savedPayload":{"position":{"x":29800.32918462412,"y":25001.60657936415},"targetPosition":{"x":30398.48244281427,"y":24500.066970622833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"163600f3-bf47-4a17-a399-578cef593d68","savedPayload":{"position":{"x":29718.350436305478,"y":24883.13462937464},"targetPosition":{"x":30398.48244281427,"y":24500.066970622833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"0b05fbb2-9102-4921-ace7-13ae89e086a0","savedPayload":{"position":{"x":29659.53746480879,"y":24751.617859621554},"targetPosition":{"x":30398.48244281427,"y":24500.066970622833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderName":{"type":"Order Name","name":"New Order Name","config":"{\n\"initialValue\": \"\"\n}","id":"22927833-41b3-4478-8a3b-c0d6d14183ca","savedPayload":{"position":{"x":29625.89390702671,"y":24611.531342560833},"targetPosition":{"x":30398.48244281427,"y":24500.066970622833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"algorithmName":{"type":"Algorithm Name","name":"New Algorithm Name","config":"{\n\"initialValue\": \"\"\n}","id":"2c4f393e-d02b-4b97-a2d5-35c81590f77b","savedPayload":{"position":{"x":29618.562009069294,"y":24467.90164308589},"targetPosition":{"x":30398.48244281427,"y":24500.066970622833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"\"\n}","id":"3a7feba8-a01f-4459-9c95-bfec028b0c91","savedPayload":{"position":{"x":29637.816315982647,"y":24325.105059954996},"targetPosition":{"x":30398.48244281427,"y":24500.066970622833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderCounters":{"type":"Order Counters","name":"New Order Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"31d8d314-f897-4c86-b303-ae6365c71657","savedPayload":{"position":{"x":29669.243073518377,"y":24182.38874606129},"targetPosition":{"x":30027.810045706272,"y":24338.569400554214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"525dd597-3f3a-41c3-bf05-882d631a400d","savedPayload":{"position":{"x":30027.810045706272,"y":24338.569400554214},"targetPosition":{"x":30398.48244281427,"y":24500.066970622833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"lock":{"type":"Lock","name":"New Lock","config":"{\n\"initialValue\": \"Open\"\n}","id":"020c2bc8-15f0-4074-9f01-2ef3848665d7","savedPayload":{"position":{"x":29752.589959052315,"y":24062.022038542345},"targetPosition":{"x":30398.48244281427,"y":24500.066970622833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderBaseAsset":{"type":"Order Base Asset","name":"New Order Base Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"50c0c606-517c-45dd-98b5-37408700fdb4","savedPayload":{"position":{"x":29453.586580810246,"y":23952.176452891064},"targetPosition":{"x":29844.201608923144,"y":23950.65716424303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"shortcutKey":"w"}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"9ab92cbc-aa48-44d5-b006-91203998b94b","savedPayload":{"position":{"x":29566.86264251916,"y":23675.594711035086},"targetPosition":{"x":29844.201608923144,"y":23950.65716424303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"65109b61-420e-44f2-9fe1-e1594fb26ccc","savedPayload":{"position":{"x":29842.617547750844,"y":23559.780968000257},"targetPosition":{"x":29844.201608923144,"y":23950.65716424303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2688db6f-483d-440e-8bc1-46774884e344","savedPayload":{"position":{"x":29844.201608923144,"y":23950.65716424303},"targetPosition":{"x":30398.48244281427,"y":24500.066970622833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderQuotedAsset":{"type":"Order Quoted Asset","name":"New Order Quoted Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"2b6bd448-1833-4d7e-b0ce-6215ae843dfd","savedPayload":{"position":{"x":30392.224238542978,"y":22955.406966832445},"targetPosition":{"x":30687.186965715657,"y":23219.688405398563},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"53b2fd1b-e305-4de2-87ad-5c7fede63db8","savedPayload":{"position":{"x":30665.447078005156,"y":22823.927586686215},"targetPosition":{"x":30687.186965715657,"y":23219.688405398563},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"a6e7af83-68d1-41f1-9d1f-b1b8af71c45f","savedPayload":{"position":{"x":30951.50176833983,"y":22924.208110391213},"targetPosition":{"x":30687.186965715657,"y":23219.688405398563},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0792e616-00d7-4c93-8e0e-eadaf04faf76","savedPayload":{"position":{"x":29954.764434151923,"y":23857.99533862558},"targetPosition":{"x":30398.48244281427,"y":24500.066970622833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderStatistics":{"type":"Order Statistics","name":"New Order Statistics","percentageFilled":{"type":"Percentage Filled","name":"New Percentage Filled","config":"{\n\"initialValue\": 0\n}","id":"94544402-f217-4671-8a78-a7f0ac1c7826","savedPayload":{"position":{"x":30543.309251354538,"y":22952.77703745461},"targetPosition":{"x":30830.845862249804,"y":23225.192091241195},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"actualRate":{"type":"Actual Rate","name":"New Actual Rate","config":"{\n\"initialValue\": 0\n}","id":"02898028-e79c-4650-9de9-83f533faacb4","savedPayload":{"position":{"x":30758.268616422378,"y":22835.67524119566},"targetPosition":{"x":30830.845862249804,"y":23225.192091241195},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"78527442-4d45-4317-87d6-6be7bd952391","savedPayload":{"position":{"x":31001.16143717519,"y":22866.66631772403},"targetPosition":{"x":30830.845862249804,"y":23225.192091241195},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"aa79b285-9cad-44f5-b1a7-bc66e1cc01ca","savedPayload":{"position":{"x":31265.34279243483,"y":22988.39379012791},"targetPosition":{"x":31093.22812781731,"y":23082.29323216671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a4cb4ecd-a8bc-4762-b7c5-cae00e806743","savedPayload":{"position":{"x":31093.22812781731,"y":23082.29323216671},"targetPosition":{"x":30830.845862249804,"y":23225.192091241195},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"42c09a9e-3aec-44b8-8aa3-9211d2707503","savedPayload":{"position":{"x":30080.638950233544,"y":23787.16740070239},"targetPosition":{"x":30398.48244281427,"y":24500.066970622833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"929c1c8c-1964-4495-991c-0a516f1e9ba0","savedPayload":{"position":{"x":30397.82385581831,"y":24499.74833295406},"targetPosition":{"x":31156.53087683623,"y":24317.648885884602},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"e"}}},{"type":"Limit Order","name":"Limit Sell Order #2","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"e15dae16-7526-4267-9273-99a25b3a00f6","savedPayload":{"position":{"x":29959.560361175074,"y":24396.423133925833},"targetPosition":{"x":30526.35354617641,"y":23859.48698555448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"b2f25feb-fed7-4511-b31e-fc1e14cb000c","savedPayload":{"position":{"x":29870.347782007746,"y":24282.77372272199},"targetPosition":{"x":30526.35354617641,"y":23859.48698555448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exchangeId":{"type":"Exchange Id","name":"New Exchange Id","config":"{\n\"initialValue\": \"\"\n}","id":"c50f2c48-b43c-464a-863c-c3ea0a866b4b","savedPayload":{"position":{"x":29803.885276690726,"y":24154.969362746157},"targetPosition":{"x":30526.35354617641,"y":23859.48698555448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"bf7e3856-d410-4c9d-9315-08b3c2f830a2","savedPayload":{"position":{"x":29770.654362550904,"y":24022.684540991493},"targetPosition":{"x":30526.35354617641,"y":23859.48698555448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"ce6e002a-ec8f-4856-883a-66ca4e7adbbc","savedPayload":{"position":{"x":29732.185023186677,"y":23914.3022369366},"targetPosition":{"x":30526.35354617641,"y":23859.48698555448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rate":{"type":"Rate","name":"New Rate","config":"{\n\"initialValue\": 0\n}","id":"7b9b7ca1-14cf-4000-960b-cb74e974d09a","savedPayload":{"position":{"x":29747.42415919129,"y":23708.739909756336},"targetPosition":{"x":30526.35354617641,"y":23859.48698555448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"2bb7de1a-a85f-4950-82f7-5d6e10e86ae3","savedPayload":{"position":{"x":29792.782227189415,"y":23590.202242894822},"targetPosition":{"x":30526.35354617641,"y":23859.48698555448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"7ff72f98-48b5-4525-92d9-57b64cce2277","savedPayload":{"position":{"x":29854.749384536884,"y":23460.30150132621},"targetPosition":{"x":30526.35354617641,"y":23859.48698555448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderName":{"type":"Order Name","name":"New Order Name","config":"{\n\"initialValue\": \"\"\n}","id":"48dcaeca-8ad9-4f3d-ab39-7124531aaaab","savedPayload":{"position":{"x":29939.50829398753,"y":23343.81867383088},"targetPosition":{"x":30526.35354617641,"y":23859.48698555448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"algorithmName":{"type":"Algorithm Name","name":"New Algorithm Name","config":"{\n\"initialValue\": \"\"\n}","id":"046378c8-2a44-4501-ad49-ab79289c3838","savedPayload":{"position":{"x":30044.158968767188,"y":23244.81077273827},"targetPosition":{"x":30526.35354617641,"y":23859.48698555448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"\"\n}","id":"406574dc-e33c-4ca0-bac7-0360c0597f6b","savedPayload":{"position":{"x":30165.297891197344,"y":23166.91959050573},"targetPosition":{"x":30526.35354617641,"y":23859.48698555448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderCounters":{"type":"Order Counters","name":"New Order Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"aa95b773-3784-4ad4-a0f3-5d6dc6bf12f0","savedPayload":{"position":{"x":30297.77638985123,"y":23106.26727278714},"targetPosition":{"x":30411.305771501247,"y":23479.98105675312},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"65419c94-25bf-43f5-9a95-a3c5a22ed1f8","savedPayload":{"position":{"x":30411.305771501247,"y":23479.98105675312},"targetPosition":{"x":30526.35354617641,"y":23859.48698555448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"lock":{"type":"Lock","name":"New Lock","config":"{\n\"initialValue\": \"Open\"\n}","id":"61bd4976-9f93-4841-bd69-054e54be0b37","savedPayload":{"position":{"x":30440.060875414645,"y":23083.276502667013},"targetPosition":{"x":30526.35354617641,"y":23859.48698555448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderBaseAsset":{"type":"Order Base Asset","name":"New Order Base Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"e171ab29-a9f0-4787-94cd-f63a8fd08f04","savedPayload":{"position":{"x":30966.779550178424,"y":23726.659633210344},"targetPosition":{"x":31259.456066853218,"y":23904.542040344902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"a971e83d-f240-4750-b4b8-db6fb4884fc0","savedPayload":{"position":{"x":31178.16126860263,"y":23571.566653497932},"targetPosition":{"x":31259.456066853218,"y":23904.542040344902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"962130d5-da33-4773-a0d3-8f837f9f0239","savedPayload":{"position":{"x":31437.27570885835,"y":23611.142927379773},"targetPosition":{"x":31259.456066853218,"y":23904.542040344902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"927e1f8b-1435-4838-8c19-89f5e08ca928","savedPayload":{"position":{"x":30583.92783473448,"y":23080.777538869013},"targetPosition":{"x":30526.35354617641,"y":23859.48698555448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderQuotedAsset":{"type":"Order Quoted Asset","name":"New Order Quoted Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"851f78ee-6610-4f5f-a02b-8be28fab03e8","savedPayload":{"position":{"x":30430.601527725572,"y":23278.51997901266},"targetPosition":{"x":30725.56425489825,"y":23542.80141757878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"eaaf2c8e-717c-4329-86d8-44e514b2ad8e","savedPayload":{"position":{"x":30703.82436718775,"y":23147.04059886643},"targetPosition":{"x":30725.56425489825,"y":23542.80141757878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"13599a3b-cba1-4992-990e-ea03ca474985","savedPayload":{"position":{"x":30989.879057522423,"y":23247.32112257143},"targetPosition":{"x":30725.56425489825,"y":23542.80141757878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7305508f-4939-431c-be88-f4fd0896abd7","savedPayload":{"position":{"x":30726.209307595225,"y":23104.64898081603},"targetPosition":{"x":30526.35354617641,"y":23859.48698555448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderStatistics":{"type":"Order Statistics","name":"New Order Statistics","percentageFilled":{"type":"Percentage Filled","name":"New Percentage Filled","config":"{\n\"initialValue\": 0\n}","id":"7e0ef872-6dbb-4383-bacd-3618f0c5421a","savedPayload":{"position":{"x":30581.68654053713,"y":23275.890049634825},"targetPosition":{"x":30869.223151432398,"y":23548.30510342141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"actualRate":{"type":"Actual Rate","name":"New Actual Rate","config":"{\n\"initialValue\": 0\n}","id":"1270d136-9730-4f09-878a-30a089bc8135","savedPayload":{"position":{"x":30796.64590560497,"y":23158.788253375875},"targetPosition":{"x":30869.223151432398,"y":23548.30510342141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"f3e85b22-eee3-477d-998f-f564b7f32dd5","savedPayload":{"position":{"x":31039.538726357783,"y":23189.779329904246},"targetPosition":{"x":30869.223151432398,"y":23548.30510342141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"bfa4439c-9331-4a2f-8107-05f435d92685","savedPayload":{"position":{"x":31303.720081617423,"y":23311.506802308126},"targetPosition":{"x":31131.605416999904,"y":23405.406244346927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bc017de9-4fce-4d25-84a9-5cfdad34217e","savedPayload":{"position":{"x":31131.605416999904,"y":23405.406244346927},"targetPosition":{"x":30869.223151432398,"y":23548.30510342141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0a4e2dc8-458c-4bf6-be14-5bf2e5d2b765","savedPayload":{"position":{"x":30861.67024916064,"y":23154.42160396768},"targetPosition":{"x":30526.35354617641,"y":23859.48698555448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e133f5d4-034b-4333-9ea4-a6b52183476e","savedPayload":{"position":{"x":30385.84778766628,"y":24195.651208281943},"targetPosition":{"x":31156.53087683623,"y":24317.648885884602},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Limit Order","name":"Limit Sell Order #3","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"21dfc9c5-eb2f-4c78-80e2-8259f7affefa","savedPayload":{"position":{"x":30146.430835733867,"y":23684.83857179216},"targetPosition":{"x":30916.370962163845,"y":23576.565936805073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"435255ea-97df-49b6-a8e0-8317bada8362","savedPayload":{"position":{"x":30140.704050871438,"y":23510.71706472191},"targetPosition":{"x":30916.370962163845,"y":23576.565936805073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exchangeId":{"type":"Exchange Id","name":"New Exchange Id","config":"{\n\"initialValue\": \"\"\n}","id":"ecdf173f-f860-4072-8439-0cfc38cbe8a7","savedPayload":{"position":{"x":30158.123413311485,"y":23390.241156480664},"targetPosition":{"x":30916.370962163845,"y":23576.565936805073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"f0c266ca-9ffb-4ca0-a1fe-33ab9427c60f","savedPayload":{"position":{"x":30208.82798678776,"y":23264.10190216025},"targetPosition":{"x":30916.370962163845,"y":23576.565936805073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"5cbe73d5-f73c-4638-8577-34b8618cc383","savedPayload":{"position":{"x":30242.42069472413,"y":23153.85436422396},"targetPosition":{"x":30916.370962163845,"y":23576.565936805073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rate":{"type":"Rate","name":"New Rate","config":"{\n\"initialValue\": 0\n}","id":"c3e11b4b-c754-4d2b-b764-026ef7d58f3e","savedPayload":{"position":{"x":30375.123108491633,"y":22996.179132522142},"targetPosition":{"x":30916.370962163845,"y":23576.565936805073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"62606235-38b2-4632-b325-6b7d342cb78e","savedPayload":{"position":{"x":30481.217224356515,"y":22927.264933428185},"targetPosition":{"x":30916.370962163845,"y":23576.565936805073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"eec3d4f3-541c-406f-ab2a-f915553be12d","savedPayload":{"position":{"x":30607.69102667497,"y":22858.610433858266},"targetPosition":{"x":30916.370962163845,"y":23576.565936805073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderName":{"type":"Order Name","name":"New Order Name","config":"{\n\"initialValue\": \"\"\n}","id":"52458d96-4992-4a22-826e-a58defe970e8","savedPayload":{"position":{"x":30744.717524634587,"y":22814.18838759142},"targetPosition":{"x":30916.370962163845,"y":23576.565936805073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"algorithmName":{"type":"Algorithm Name","name":"New Algorithm Name","config":"{\n\"initialValue\": \"\"\n}","id":"3e3e4e4d-7951-4e3f-aad9-c383b7aa4e02","savedPayload":{"position":{"x":30887.564322680584,"y":22795.57644024739},"targetPosition":{"x":30916.370962163845,"y":23576.565936805073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"\"\n}","id":"173cac06-8ac9-44a1-97c5-c03f930f3e57","savedPayload":{"position":{"x":31030.862784258923,"y":22803.599719032874},"targetPosition":{"x":30916.370962163845,"y":23576.565936805073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderCounters":{"type":"Order Counters","name":"New Order Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"19ca42cb-2a54-4731-b277-8af7fa427a7f","savedPayload":{"position":{"x":31174.22287027514,"y":22831.945807480522},"targetPosition":{"x":31046.027474538918,"y":23202.29451844045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"398d330c-c2d6-4568-b1bb-3f707f933712","savedPayload":{"position":{"x":31046.027474538918,"y":23202.29451844045},"targetPosition":{"x":30916.370962163845,"y":23576.565936805073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"lock":{"type":"Lock","name":"New Lock","config":"{\n\"initialValue\": \"Open\"\n}","id":"0921a747-2bc1-400c-a2d3-c9f2de534a9a","savedPayload":{"position":{"x":31302.636991592284,"y":22897.742920953206},"targetPosition":{"x":30916.370962163845,"y":23576.565936805073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderBaseAsset":{"type":"Order Base Asset","name":"New Order Base Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"4587d77c-0f66-4188-b7a1-804cbb7f973f","savedPayload":{"position":{"x":31325.394166578877,"y":24282.94601667048},"targetPosition":{"x":31618.07068325367,"y":24460.82842380504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"c8fbc574-9bb0-436e-bf51-f3e3b3dff06e","savedPayload":{"position":{"x":31536.775885003084,"y":24127.85303695807},"targetPosition":{"x":31618.07068325367,"y":24460.82842380504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"fd0fc56c-22e6-4d90-8005-553adb3798da","savedPayload":{"position":{"x":31795.890325258802,"y":24167.42931083991},"targetPosition":{"x":31618.07068325367,"y":24460.82842380504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"341467d7-22c6-45bb-b7fb-9d45e39c17f9","savedPayload":{"position":{"x":31420.745474472675,"y":22980.5722427516},"targetPosition":{"x":30916.370962163845,"y":23576.565936805073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderQuotedAsset":{"type":"Order Quoted Asset","name":"New Order Quoted Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"8e86045f-2ec5-40b6-bd28-6cf203b7d72c","savedPayload":{"position":{"x":30789.216144126025,"y":23834.8063624728},"targetPosition":{"x":31084.178871298704,"y":24099.087801038917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"38b2dc9d-492d-4183-bcc2-1cc2edb12408","savedPayload":{"position":{"x":31062.438983588203,"y":23703.32698232657},"targetPosition":{"x":31084.178871298704,"y":24099.087801038917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"f89e98a8-a2d8-4440-bff5-e321f4fa4782","savedPayload":{"position":{"x":31348.493673922876,"y":23803.607506031567},"targetPosition":{"x":31084.178871298704,"y":24099.087801038917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f2412f2a-9af9-49aa-8cc3-d1f5b3393826","savedPayload":{"position":{"x":31521.696727346498,"y":23083.35675633331},"targetPosition":{"x":30916.370962163845,"y":23576.565936805073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderStatistics":{"type":"Order Statistics","name":"New Order Statistics","percentageFilled":{"type":"Percentage Filled","name":"New Percentage Filled","config":"{\n\"initialValue\": 0\n}","id":"63d2ceed-a735-4a6e-a480-7ea813d0c8e5","savedPayload":{"position":{"x":30940.301156937585,"y":23832.176433094963},"targetPosition":{"x":31227.83776783285,"y":24104.59148688155},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"actualRate":{"type":"Actual Rate","name":"New Actual Rate","config":"{\n\"initialValue\": 0\n}","id":"13cadd4e-2fe3-41ed-912e-3608eb4f35f3","savedPayload":{"position":{"x":31155.260522005425,"y":23715.074636836012},"targetPosition":{"x":31227.83776783285,"y":24104.59148688155},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"22ad5823-ef3e-4d85-bd0c-22e6d3c87233","savedPayload":{"position":{"x":31398.153342758236,"y":23746.065713364384},"targetPosition":{"x":31227.83776783285,"y":24104.59148688155},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"697772bb-a90c-455d-a0eb-ffb21046f211","savedPayload":{"position":{"x":31662.334698017876,"y":23867.793185768263},"targetPosition":{"x":31490.220033400357,"y":23961.692627807064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ed24a5b4-b33d-4068-b069-35529ac9c027","savedPayload":{"position":{"x":31490.220033400357,"y":23961.692627807064},"targetPosition":{"x":31227.83776783285,"y":24104.59148688155},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c8b9919c-ca7b-4fef-877f-aa90d7fe867f","savedPayload":{"position":{"x":31602.119015478842,"y":23203.262054655443},"targetPosition":{"x":30916.370962163845,"y":23576.565936805073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a5d970bf-0f85-4546-9c4a-a0a113e7ea04","savedPayload":{"position":{"x":30491.247318939764,"y":23909.931612146673},"targetPosition":{"x":31156.53087683623,"y":24317.648885884602},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Limit Order","name":"Limit Sell Order #4","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"43478f0c-6a3a-4939-a7db-236129532cf9","savedPayload":{"position":{"x":30712.607867515613,"y":23211.746850758107},"targetPosition":{"x":31398.947534329523,"y":23577.077660346786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"b11738b3-7b4d-49b8-9b30-c49fcacbb1da","savedPayload":{"position":{"x":30809.84733609588,"y":23067.542292279733},"targetPosition":{"x":31398.947534329523,"y":23577.077660346786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exchangeId":{"type":"Exchange Id","name":"New Exchange Id","config":"{\n\"initialValue\": \"\"\n}","id":"ee5f047c-40d8-4fc3-985c-2f94a8e473c0","savedPayload":{"position":{"x":30895.3232749053,"y":22980.497563519835},"targetPosition":{"x":31398.947534329523,"y":23577.077660346786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"b7a5de66-c4be-4540-8d4b-b5c8569f5382","savedPayload":{"position":{"x":31011.596096629113,"y":22907.291001452268},"targetPosition":{"x":31398.947534329523,"y":23577.077660346786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"86cc532f-273c-4cef-9fe4-1095739c3c59","savedPayload":{"position":{"x":31100.737000987287,"y":22840.75242872639},"targetPosition":{"x":31398.947534329523,"y":23577.077660346786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rate":{"type":"Rate","name":"New Rate","config":"{\n\"initialValue\": 0\n}","id":"019fbb21-bf78-4cc0-87b0-15910b42b1ed","savedPayload":{"position":{"x":31302.438383386103,"y":22789.347225678364},"targetPosition":{"x":31398.947534329523,"y":23577.077660346786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"63a76c09-04f5-4df0-a1c5-28ddbc8be5b6","savedPayload":{"position":{"x":31428.47533191315,"y":22796.03107173114},"targetPosition":{"x":31398.947534329523,"y":23577.077660346786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"4677088b-93a1-4a06-ace6-2afff21d1c7e","savedPayload":{"position":{"x":31571.105745186847,"y":22814.915551239534},"targetPosition":{"x":31398.947534329523,"y":23577.077660346786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderName":{"type":"Order Name","name":"New Order Name","config":"{\n\"initialValue\": \"\"\n}","id":"543746cc-7674-4cef-a773-499631d2cd1d","savedPayload":{"position":{"x":31708.02316282486,"y":22859.630619613952},"targetPosition":{"x":31398.947534329523,"y":23577.077660346786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"algorithmName":{"type":"Algorithm Name","name":"New Algorithm Name","config":"{\n\"initialValue\": \"\"\n}","id":"8018fcb0-4077-448f-8d08-53c63251057d","savedPayload":{"position":{"x":31834.450237786783,"y":22928.69853750278},"targetPosition":{"x":31398.947534329523,"y":23577.077660346786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"\"\n}","id":"16fc199e-6a3d-4d52-842b-b8b89dc2134b","savedPayload":{"position":{"x":31946.061846605568,"y":23019.810070159616},"targetPosition":{"x":31398.947534329523,"y":23577.077660346786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderCounters":{"type":"Order Counters","name":"New Order Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"6cc6b150-b02b-4f94-b91f-798be8cc2e28","savedPayload":{"position":{"x":32044.57881143119,"y":23126.640358983834},"targetPosition":{"x":31724.387203522263,"y":23350.348257310325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"e86bb45a-c318-471c-b8e7-6a27b1dfa7fa","savedPayload":{"position":{"x":31724.387203522263,"y":23350.348257310325},"targetPosition":{"x":31398.947534329523,"y":23577.077660346786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"lock":{"type":"Lock","name":"New Lock","config":"{\n\"initialValue\": \"Open\"\n}","id":"37896346-c3dd-4c1e-9890-0de8095607dc","savedPayload":{"position":{"x":32110.228006852027,"y":23255.15897400035},"targetPosition":{"x":31398.947534329523,"y":23577.077660346786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderBaseAsset":{"type":"Order Base Asset","name":"New Order Base Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"12293cf5-ede5-4d18-bdab-de9c3976c7c1","savedPayload":{"position":{"x":31014.779550178424,"y":23722.659633210344},"targetPosition":{"x":31307.456066853218,"y":23900.542040344902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"84d7df9e-8a6e-4fb4-abce-3b5450a3037e","savedPayload":{"position":{"x":31226.16126860263,"y":23567.566653497932},"targetPosition":{"x":31307.456066853218,"y":23900.542040344902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"a837b250-aade-4479-8f95-49298fd037c9","savedPayload":{"position":{"x":31485.27570885835,"y":23607.142927379773},"targetPosition":{"x":31307.456066853218,"y":23900.542040344902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"4aa992de-9815-4ca7-b9b7-cc348fb0a706","savedPayload":{"position":{"x":32157.187664007903,"y":23391.418281483904},"targetPosition":{"x":31398.947534329523,"y":23577.077660346786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderQuotedAsset":{"type":"Order Quoted Asset","name":"New Order Quoted Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"7c14d3ab-95e0-4fd0-8cb2-15259c9d72c7","savedPayload":{"position":{"x":30478.601527725572,"y":23274.51997901266},"targetPosition":{"x":30773.56425489825,"y":23538.80141757878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"02819dda-f0e1-49bf-a9ed-b07c4b8a4767","savedPayload":{"position":{"x":30751.82436718775,"y":23143.04059886643},"targetPosition":{"x":30773.56425489825,"y":23538.80141757878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"8daf0f36-1e8e-4f1a-bc44-e8a8e2492d45","savedPayload":{"position":{"x":31037.879057522423,"y":23243.32112257143},"targetPosition":{"x":30773.56425489825,"y":23538.80141757878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ef56bd7f-b36d-47ec-bc9f-861728d84989","savedPayload":{"position":{"x":32178.31694521377,"y":23534.0598380903},"targetPosition":{"x":31398.947534329523,"y":23577.077660346786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderStatistics":{"type":"Order Statistics","name":"New Order Statistics","percentageFilled":{"type":"Percentage Filled","name":"New Percentage Filled","config":"{\n\"initialValue\": 0\n}","id":"cf1e2969-52f2-47a6-af1d-d2f8cdc05d28","savedPayload":{"position":{"x":30629.68654053713,"y":23271.890049634825},"targetPosition":{"x":30917.223151432398,"y":23544.30510342141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"actualRate":{"type":"Actual Rate","name":"New Actual Rate","config":"{\n\"initialValue\": 0\n}","id":"7b0037a1-612c-4cad-8f1c-9f96b2450d96","savedPayload":{"position":{"x":30844.64590560497,"y":23154.788253375875},"targetPosition":{"x":30917.223151432398,"y":23544.30510342141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"f8c739bf-e5d3-45d9-b965-b91a8eeb0cf9","savedPayload":{"position":{"x":31087.538726357783,"y":23185.779329904246},"targetPosition":{"x":30917.223151432398,"y":23544.30510342141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"1753e430-35e6-40b7-935c-d020b28ebf90","savedPayload":{"position":{"x":31351.720081617423,"y":23307.506802308126},"targetPosition":{"x":31179.605416999904,"y":23401.406244346927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5977664e-04dc-4333-91dd-951bae431ac7","savedPayload":{"position":{"x":31179.605416999904,"y":23401.406244346927},"targetPosition":{"x":30917.223151432398,"y":23544.30510342141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8b70f49a-490a-4ef5-a310-9e9828a611ff","savedPayload":{"position":{"x":32172.84732715919,"y":23678.171075860664},"targetPosition":{"x":31398.947534329523,"y":23577.077660346786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7fb716f8-8bba-4c0d-8df3-69a7bc9ae317","savedPayload":{"position":{"x":30697.95844266252,"y":23686.304603214892},"targetPosition":{"x":31156.53087683623,"y":24317.648885884602},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Limit Order","name":"Limit Sell Order #5","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"c21909ae-7bce-48a4-97c0-03001f36bc9a","savedPayload":{"position":{"x":30689.20464154276,"y":23875.116122045794},"targetPosition":{"x":31375.54430835667,"y":24240.446931634473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"6628bc0e-a38e-42bc-ae67-447a6094e6e8","savedPayload":{"position":{"x":30786.44411012303,"y":23730.91156356742},"targetPosition":{"x":31375.54430835667,"y":24240.446931634473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exchangeId":{"type":"Exchange Id","name":"New Exchange Id","config":"{\n\"initialValue\": \"\"\n}","id":"af947606-2995-4abb-899d-bf1612455701","savedPayload":{"position":{"x":30871.920048932447,"y":23643.866834807523},"targetPosition":{"x":31375.54430835667,"y":24240.446931634473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"11f5acb6-bca7-4df0-9c5a-28e500087b70","savedPayload":{"position":{"x":30988.19287065626,"y":23570.660272739955},"targetPosition":{"x":31375.54430835667,"y":24240.446931634473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"01da2344-3681-4947-8e39-b632718a6a35","savedPayload":{"position":{"x":31077.333775014435,"y":23504.12170001408},"targetPosition":{"x":31375.54430835667,"y":24240.446931634473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rate":{"type":"Rate","name":"New Rate","config":"{\n\"initialValue\": 0\n}","id":"732ad726-a4c8-4561-a4de-a59b25111848","savedPayload":{"position":{"x":31279.03515741325,"y":23452.71649696605},"targetPosition":{"x":31375.54430835667,"y":24240.446931634473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"e83e876a-31fb-4a82-9a3b-afa626f1c103","savedPayload":{"position":{"x":31405.072105940297,"y":23459.400343018828},"targetPosition":{"x":31375.54430835667,"y":24240.446931634473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"263be304-708d-4f68-a896-12214ac404ef","savedPayload":{"position":{"x":31547.702519213995,"y":23478.28482252722},"targetPosition":{"x":31375.54430835667,"y":24240.446931634473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderName":{"type":"Order Name","name":"New Order Name","config":"{\n\"initialValue\": \"\"\n}","id":"4567768f-7801-4b8e-9506-02435026da34","savedPayload":{"position":{"x":31684.619936852007,"y":23522.99989090164},"targetPosition":{"x":31375.54430835667,"y":24240.446931634473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"algorithmName":{"type":"Algorithm Name","name":"New Algorithm Name","config":"{\n\"initialValue\": \"\"\n}","id":"44d63c52-6d96-48dd-8492-44526e0ddea2","savedPayload":{"position":{"x":31811.04701181393,"y":23592.067808790467},"targetPosition":{"x":31375.54430835667,"y":24240.446931634473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"\"\n}","id":"77cc4f80-04c4-4907-b914-b46fc9531c8f","savedPayload":{"position":{"x":31922.658620632716,"y":23683.179341447303},"targetPosition":{"x":31375.54430835667,"y":24240.446931634473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderCounters":{"type":"Order Counters","name":"New Order Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"eb351029-a49c-46ba-ba2c-302a353ff97b","savedPayload":{"position":{"x":32021.17558545834,"y":23790.00963027152},"targetPosition":{"x":31700.98397754941,"y":24013.717528598012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"4f014f57-4f7b-460d-b740-6c3a6c1df9bf","savedPayload":{"position":{"x":31700.98397754941,"y":24013.717528598012},"targetPosition":{"x":31375.54430835667,"y":24240.446931634473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"lock":{"type":"Lock","name":"New Lock","config":"{\n\"initialValue\": \"Open\"\n}","id":"f29b9169-c7cc-4ab2-9013-92a353605f2d","savedPayload":{"position":{"x":32086.824780879175,"y":23918.52824528804},"targetPosition":{"x":31375.54430835667,"y":24240.446931634473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderBaseAsset":{"type":"Order Base Asset","name":"New Order Base Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"5d887d94-d554-4a08-b37c-3cb901e34a16","savedPayload":{"position":{"x":30991.376324205572,"y":24386.02890449803},"targetPosition":{"x":31284.052840880366,"y":24563.91131163259},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"de852846-2ada-4974-bf5f-39c1e126834b","savedPayload":{"position":{"x":31202.75804262978,"y":24230.93592478562},"targetPosition":{"x":31284.052840880366,"y":24563.91131163259},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"03450469-57f1-4efa-9f64-b751c125aa96","savedPayload":{"position":{"x":31461.872482885497,"y":24270.51219866746},"targetPosition":{"x":31284.052840880366,"y":24563.91131163259},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f872512b-a913-4f51-9e5a-23196a41bf42","savedPayload":{"position":{"x":32133.78443803505,"y":24054.78755277159},"targetPosition":{"x":31375.54430835667,"y":24240.446931634473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderQuotedAsset":{"type":"Order Quoted Asset","name":"New Order Quoted Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"1229e93b-73e5-43f8-a857-4cb0829eb0d8","savedPayload":{"position":{"x":30455.19830175272,"y":23937.889250300348},"targetPosition":{"x":30750.1610289254,"y":24202.170688866467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"17ca5b23-50ae-4711-a2e0-48b5fb70e8a1","savedPayload":{"position":{"x":30728.421141214898,"y":23806.40987015412},"targetPosition":{"x":30750.1610289254,"y":24202.170688866467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"0c23efa1-82e9-44c7-b863-dc186153f2d4","savedPayload":{"position":{"x":31014.47583154957,"y":23906.690393859117},"targetPosition":{"x":30750.1610289254,"y":24202.170688866467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ad61a2f9-b057-485c-b18a-492e0ad86541","savedPayload":{"position":{"x":32154.913719240918,"y":24197.429109377987},"targetPosition":{"x":31375.54430835667,"y":24240.446931634473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderStatistics":{"type":"Order Statistics","name":"New Order Statistics","percentageFilled":{"type":"Percentage Filled","name":"New Percentage Filled","config":"{\n\"initialValue\": 0\n}","id":"eeaf0a5e-54fa-431a-974b-f62ae5097578","savedPayload":{"position":{"x":30606.28331456428,"y":23935.259320922512},"targetPosition":{"x":30893.819925459546,"y":24207.6743747091},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"actualRate":{"type":"Actual Rate","name":"New Actual Rate","config":"{\n\"initialValue\": 0\n}","id":"578670d9-2033-417d-bdbb-8ae5a38511f1","savedPayload":{"position":{"x":30821.24267963212,"y":23818.157524663562},"targetPosition":{"x":30893.819925459546,"y":24207.6743747091},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"fe07db0c-aae2-4697-8caa-523ad1dc38a9","savedPayload":{"position":{"x":31064.13550038493,"y":23849.148601191933},"targetPosition":{"x":30893.819925459546,"y":24207.6743747091},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"d96a7df0-089c-4e53-a9bf-ec276a357d5b","savedPayload":{"position":{"x":31328.31685564457,"y":23970.876073595813},"targetPosition":{"x":31156.202191027052,"y":24064.775515634614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9a3fb4f7-641a-4ff8-8a17-3461011e8e30","savedPayload":{"position":{"x":31156.202191027052,"y":24064.775515634614},"targetPosition":{"x":30893.819925459546,"y":24207.6743747091},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a270a831-de12-4466-a643-3d21f866a19b","savedPayload":{"position":{"x":32149.44410118634,"y":24341.54034714835},"targetPosition":{"x":31375.54430835667,"y":24240.446931634473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3c44b04d-6b6b-4278-ba85-898b1f12cdfa","savedPayload":{"position":{"x":30974.509367924362,"y":23558.809067833132},"targetPosition":{"x":31156.53087683623,"y":24317.648885884602},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Limit Order","name":"Limit Sell Order #6","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"9c727aaf-1a30-4470-9318-2f8825c33024","savedPayload":{"position":{"x":30813.694622441042,"y":24172.25157587289},"targetPosition":{"x":31500.034289254952,"y":24537.58238546157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"00f6d4a8-702b-4c06-bcd5-c7a557564ce8","savedPayload":{"position":{"x":30910.93409102131,"y":24028.047017394518},"targetPosition":{"x":31500.034289254952,"y":24537.58238546157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exchangeId":{"type":"Exchange Id","name":"New Exchange Id","config":"{\n\"initialValue\": \"\"\n}","id":"fc4008d3-a179-4d99-b0bd-f27eb6a615fe","savedPayload":{"position":{"x":30996.410029830728,"y":23941.00228863462},"targetPosition":{"x":31500.034289254952,"y":24537.58238546157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"e3568259-dff9-47c5-99da-f254adc3d046","savedPayload":{"position":{"x":31112.682851554542,"y":23867.795726567052},"targetPosition":{"x":31500.034289254952,"y":24537.58238546157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"7c07afb3-62e6-4d0b-a854-290a842c0aaf","savedPayload":{"position":{"x":31201.823755912716,"y":23801.257153841176},"targetPosition":{"x":31500.034289254952,"y":24537.58238546157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rate":{"type":"Rate","name":"New Rate","config":"{\n\"initialValue\": 0\n}","id":"41c315de-6ccb-4f5f-a929-33a59a1dbc37","savedPayload":{"position":{"x":31403.525138311532,"y":23749.85195079315},"targetPosition":{"x":31500.034289254952,"y":24537.58238546157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"b8b1bdaa-e081-4e66-8a55-9a5df6520c74","savedPayload":{"position":{"x":31529.562086838578,"y":23756.535796845925},"targetPosition":{"x":31500.034289254952,"y":24537.58238546157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"ab9e5c18-bc35-4490-a925-154c0ec58163","savedPayload":{"position":{"x":31672.192500112276,"y":23775.420276354318},"targetPosition":{"x":31500.034289254952,"y":24537.58238546157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderName":{"type":"Order Name","name":"New Order Name","config":"{\n\"initialValue\": \"\"\n}","id":"64cf7d12-6dab-4925-9582-e0d25fe98019","savedPayload":{"position":{"x":31809.109917750287,"y":23820.135344728737},"targetPosition":{"x":31500.034289254952,"y":24537.58238546157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"algorithmName":{"type":"Algorithm Name","name":"New Algorithm Name","config":"{\n\"initialValue\": \"\"\n}","id":"7d294033-4349-4bb2-936e-4d9d1e93e32b","savedPayload":{"position":{"x":31935.536992712212,"y":23889.203262617564},"targetPosition":{"x":31500.034289254952,"y":24537.58238546157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"\"\n}","id":"eedd3c1c-9624-4090-bdad-6969901a8dee","savedPayload":{"position":{"x":32047.148601530997,"y":23980.3147952744},"targetPosition":{"x":31500.034289254952,"y":24537.58238546157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderCounters":{"type":"Order Counters","name":"New Order Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"403af118-41a8-426d-a929-f68f23caafc4","savedPayload":{"position":{"x":32145.66556635662,"y":24087.145084098618},"targetPosition":{"x":31825.473958447692,"y":24310.85298242511},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"2895d29d-2521-4073-81d8-a444696ed084","savedPayload":{"position":{"x":31825.473958447692,"y":24310.85298242511},"targetPosition":{"x":31500.034289254952,"y":24537.58238546157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"lock":{"type":"Lock","name":"New Lock","config":"{\n\"initialValue\": \"Open\"\n}","id":"6f5d0936-6867-4375-a034-655623224b20","savedPayload":{"position":{"x":32211.314761777456,"y":24215.663699115135},"targetPosition":{"x":31500.034289254952,"y":24537.58238546157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderBaseAsset":{"type":"Order Base Asset","name":"New Order Base Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"a28ea194-f3ec-47d0-96c1-c1c680810a44","savedPayload":{"position":{"x":31115.866305103853,"y":24683.164358325128},"targetPosition":{"x":31408.542821778647,"y":24861.046765459687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"20b0bac5-aef4-4ee3-ba01-32e3db00e5a2","savedPayload":{"position":{"x":31327.24802352806,"y":24528.071378612716},"targetPosition":{"x":31408.542821778647,"y":24861.046765459687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"72bf8991-9547-4202-9784-9bb9acba42b0","savedPayload":{"position":{"x":31586.36246378378,"y":24567.647652494557},"targetPosition":{"x":31408.542821778647,"y":24861.046765459687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8d7fdc43-8442-4477-9d6d-bdbd65c19434","savedPayload":{"position":{"x":32258.27441893333,"y":24351.92300659869},"targetPosition":{"x":31500.034289254952,"y":24537.58238546157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderQuotedAsset":{"type":"Order Quoted Asset","name":"New Order Quoted Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"9d8bcda5-45b6-4b04-8247-e3a85d8dc3ae","savedPayload":{"position":{"x":30579.688282651,"y":24235.024704127445},"targetPosition":{"x":30874.65100982368,"y":24499.306142693564},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"4dd613cf-99fe-45bc-be8e-bb24ae859dd7","savedPayload":{"position":{"x":30852.91112211318,"y":24103.545323981216},"targetPosition":{"x":30874.65100982368,"y":24499.306142693564},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"d0f2e08f-5270-4c1d-b408-4c0ce2d91cc2","savedPayload":{"position":{"x":31138.965812447852,"y":24203.825847686214},"targetPosition":{"x":30874.65100982368,"y":24499.306142693564},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c4fe4a32-5cb5-42c3-ae18-f5d888f9b8f0","savedPayload":{"position":{"x":32279.4037001392,"y":24494.564563205084},"targetPosition":{"x":31500.034289254952,"y":24537.58238546157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderStatistics":{"type":"Order Statistics","name":"New Order Statistics","percentageFilled":{"type":"Percentage Filled","name":"New Percentage Filled","config":"{\n\"initialValue\": 0\n}","id":"41425b71-3c1f-4952-ab7e-c073498f118a","savedPayload":{"position":{"x":30730.77329546256,"y":24232.39477474961},"targetPosition":{"x":31018.309906357827,"y":24504.809828536196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"actualRate":{"type":"Actual Rate","name":"New Actual Rate","config":"{\n\"initialValue\": 0\n}","id":"553275c8-ceea-497c-95b7-1e23f6e51a58","savedPayload":{"position":{"x":30945.7326605304,"y":24115.29297849066},"targetPosition":{"x":31018.309906357827,"y":24504.809828536196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"35916359-97c9-4ab4-8ca7-a6c5f60d17da","savedPayload":{"position":{"x":31188.625481283212,"y":24146.28405501903},"targetPosition":{"x":31018.309906357827,"y":24504.809828536196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"a63dd474-1b20-4504-8790-f3a53ec5a725","savedPayload":{"position":{"x":31452.80683654285,"y":24268.01152742291},"targetPosition":{"x":31280.692171925333,"y":24361.91096946171},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"eca5c17c-3f6a-49b1-951e-53339faa9d14","savedPayload":{"position":{"x":31280.692171925333,"y":24361.91096946171},"targetPosition":{"x":31018.309906357827,"y":24504.809828536196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0c92fa7f-81c6-4abd-941b-1ef17c952c7e","savedPayload":{"position":{"x":32273.93408208462,"y":24638.67580097545},"targetPosition":{"x":31500.034289254952,"y":24537.58238546157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"90d28d1e-6fd2-4a83-a423-3f34bf455004","savedPayload":{"position":{"x":31278.540376926823,"y":23546.851124761764},"targetPosition":{"x":31156.53087683623,"y":24317.648885884602},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Limit Order","name":"Limit Sell Order #7","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","id":"fa31d1c9-8ee0-4ba8-87ae-a5771ad35b44","savedPayload":{"position":{"x":30970.64087076434,"y":23143.325953135383},"targetPosition":{"x":31564.17231812745,"y":23653.187867440283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","id":"c9a2076d-d9bf-48c8-abfb-f3edb9905fd1","savedPayload":{"position":{"x":31080.082558459937,"y":23034.327979830272},"targetPosition":{"x":31564.17231812745,"y":23653.187867440283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exchangeId":{"type":"Exchange Id","name":"New Exchange Id","config":"{\n\"initialValue\": \"\"\n}","id":"d910eaf4-2bcb-4b9c-8f70-5d69ed385648","savedPayload":{"position":{"x":31205.868610012152,"y":22952.67984110099},"targetPosition":{"x":31564.17231812745,"y":23653.187867440283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","id":"a027a7b2-1833-4557-9c72-ac1f84e8889e","savedPayload":{"position":{"x":31342.899331317247,"y":22897.43443920346},"targetPosition":{"x":31564.17231812745,"y":23653.187867440283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","id":"e8a616de-c956-474b-a572-943dba739546","savedPayload":{"position":{"x":31486.792860468606,"y":22869.44031315132},"targetPosition":{"x":31564.17231812745,"y":23653.187867440283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rate":{"type":"Rate","name":"New Rate","config":"{\n\"initialValue\": 0\n}","id":"5b4b3cd4-6107-4940-9e0d-80614590def4","savedPayload":{"position":{"x":31632.83338469438,"y":22868.471321998164},"targetPosition":{"x":31564.17231812745,"y":23653.187867440283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","id":"0299f975-8ff6-4062-ada4-7602145d273a","savedPayload":{"position":{"x":31776.301192976018,"y":22894.35056793679},"targetPosition":{"x":31564.17231812745,"y":23653.187867440283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","id":"4ea390ec-59f1-41cd-8a1d-6489d492be32","savedPayload":{"position":{"x":31912.230340044982,"y":22946.51036517041},"targetPosition":{"x":31564.17231812745,"y":23653.187867440283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderName":{"type":"Order Name","name":"New Order Name","config":"{\n\"initialValue\": \"\"\n}","id":"dfad8d25-bbb5-49e3-a595-83d97ad08a35","savedPayload":{"position":{"x":32036.386626455638,"y":23022.479934821484},"targetPosition":{"x":31564.17231812745,"y":23653.187867440283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"algorithmName":{"type":"Algorithm Name","name":"New Algorithm Name","config":"{\n\"initialValue\": \"\"\n}","id":"dfdae604-14c1-471a-9c5b-ec2b3ef28dc7","savedPayload":{"position":{"x":32144.20967472872,"y":23120.161560661316},"targetPosition":{"x":31564.17231812745,"y":23653.187867440283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"situationName":{"type":"Situation Name","name":"New Situation Name","config":"{\n\"initialValue\": \"\"\n}","id":"402a0802-a66e-4241-9b40-716457d3ee7a","savedPayload":{"position":{"x":32240.462930868125,"y":23268.058138692588},"targetPosition":{"x":31564.17231812745,"y":23653.187867440283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderCounters":{"type":"Order Counters","name":"New Order Counters","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","id":"e5d84547-cd32-4627-b4e8-1d0b3cf34e1e","savedPayload":{"position":{"x":32413.957327181775,"y":23324.862181275945},"targetPosition":{"x":32042.520765412566,"y":23465.252600767508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedCounters":[],"id":"a6ed37b6-d121-4b7d-a928-b7e131c8ebbc","savedPayload":{"position":{"x":32042.520765412566,"y":23465.252600767508},"targetPosition":{"x":31564.17231812745,"y":23653.187867440283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"lock":{"type":"Lock","name":"New Lock","config":"{\n\"initialValue\": \"Open\"\n}","id":"e00e5e44-6768-485d-b98f-d07c032b95c4","savedPayload":{"position":{"x":32328.89153697148,"y":23487.13876610255},"targetPosition":{"x":31564.17231812745,"y":23653.187867440283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"orderBaseAsset":{"type":"Order Base Asset","name":"New Order Base Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"1919145a-09dc-44f1-bf66-db1cd2423d19","savedPayload":{"position":{"x":31055.866305103853,"y":24818.164358325128},"targetPosition":{"x":31348.542821778647,"y":24996.046765459687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"f0086e54-7654-4319-8cd1-32aba52593ba","savedPayload":{"position":{"x":31267.24802352806,"y":24663.071378612716},"targetPosition":{"x":31348.542821778647,"y":24996.046765459687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"fc1b011f-bc04-470d-9446-facb1649bd97","savedPayload":{"position":{"x":31526.36246378378,"y":24702.647652494557},"targetPosition":{"x":31348.542821778647,"y":24996.046765459687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"9f098ef2-5e76-4a6f-a220-905680a6a857","savedPayload":{"position":{"x":32349.900523959244,"y":23640.356048561887},"targetPosition":{"x":31564.17231812745,"y":23653.187867440283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderQuotedAsset":{"type":"Order Quoted Asset","name":"New Order Quoted Asset","size":{"type":"Size","name":"New Size","config":"{\n\"initialValue\": 0\n}","id":"0393cb12-8ea6-4ce1-acc0-c9d74cc38515","savedPayload":{"position":{"x":30519.688282651,"y":24370.024704127445},"targetPosition":{"x":30814.65100982368,"y":24634.306142693564},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"sizeFilled":{"type":"Size Filled","name":"New Size Filled","config":"{\n\"initialValue\": 0\n}","id":"6345257d-26b2-4e6b-9126-adecf0940dcb","savedPayload":{"position":{"x":30792.91112211318,"y":24238.545323981216},"targetPosition":{"x":30814.65100982368,"y":24634.306142693564},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"feesPaid":{"type":"Fees Paid","name":"New Fees Paid","config":"{\n\"initialValue\": 0\n}","id":"32bad449-4c6d-4e9f-b8b4-0f9ff1478aaa","savedPayload":{"position":{"x":31078.965812447852,"y":24338.825847686214},"targetPosition":{"x":30814.65100982368,"y":24634.306142693564},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c69e4280-e76f-4b74-8178-3363c95d7b4d","savedPayload":{"position":{"x":32338.765219729878,"y":23789.93441089533},"targetPosition":{"x":31564.17231812745,"y":23653.187867440283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"orderStatistics":{"type":"Order Statistics","name":"New Order Statistics","percentageFilled":{"type":"Percentage Filled","name":"New Percentage Filled","config":"{\n\"initialValue\": 0\n}","id":"61215a99-f445-4ba1-a76a-0f46a754b027","savedPayload":{"position":{"x":30670.77329546256,"y":24367.39477474961},"targetPosition":{"x":30958.309906357827,"y":24639.809828536196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"actualRate":{"type":"Actual Rate","name":"New Actual Rate","config":"{\n\"initialValue\": 0\n}","id":"5436c96d-ed7b-4b52-abc9-9739ef923808","savedPayload":{"position":{"x":30885.7326605304,"y":24250.29297849066},"targetPosition":{"x":30958.309906357827,"y":24639.809828536196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"days":{"type":"Days","name":"New Days","config":"{\n\"initialValue\": 0\n}","id":"79935293-07bc-4415-bb91-1e45c95064e4","savedPayload":{"position":{"x":31128.625481283212,"y":24281.28405501903},"targetPosition":{"x":30958.309906357827,"y":24639.809828536196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"userDefinedStatistics":[{"type":"User Defined Statistic","name":"New User Defined Statistic","config":"{\n\"initialValue\": 0\n}","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"80438372-c0f2-4f67-ae8f-7c5e909a990a","savedPayload":{"position":{"x":31392.80683654285,"y":24403.01152742291},"targetPosition":{"x":31220.692171925333,"y":24496.91096946171},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a1c12939-d02f-483d-b5e9-6532f4f88c08","savedPayload":{"position":{"x":31220.692171925333,"y":24496.91096946171},"targetPosition":{"x":30958.309906357827,"y":24639.809828536196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"61467c34-b621-4980-876a-9c66eef0144f","savedPayload":{"position":{"x":32282.664826128923,"y":23964.04549743045},"targetPosition":{"x":31564.17231812745,"y":23653.187867440283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5bfce673-ceb2-4104-bd7e-75d62453164e","savedPayload":{"position":{"x":31564.323316123384,"y":23652.316306335884},"targetPosition":{"x":31156.53087683623,"y":24317.648885884602},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1b0f368b-51b9-4c61-9c7b-b0b308cf7ba9","savedPayload":{"position":{"x":32326.69266428877,"y":23617.031012036652},"targetPosition":{"x":32022.091491760737,"y":24301.35520369302},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"07f9794a-dea7-4075-bdea-00e4b90960a6","savedPayload":{"position":{"x":32022.091491760737,"y":24301.35520369302},"targetPosition":{"x":32396.55093774257,"y":24950.049392142086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"eb20f622-71bf-4479-a574-d2320e1d4bd1","savedPayload":{"position":{"x":32396.55093774257,"y":24950.049392142086},"targetPosition":{"x":32396.55093774257,"y":24950.049392142086},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}} \ No newline at end of file diff --git a/Includes/Trading-Mines/Masters.json b/Includes/Trading-Mines/Masters.json new file mode 100644 index 000000000..cf3361c34 --- /dev/null +++ b/Includes/Trading-Mines/Masters.json @@ -0,0 +1 @@ +{"type":"Trading Mine","name":"Masters","config":"{ \n\"codeName\": \"Masters\"\n}","tradingBots":[{"type":"Trading Bot","name":"Low Frequency","config":"{\n\"codeName\": \"Low-Frequency\",\n\"repo\": \"Exchange-Raw-Data-Sensor-Bot\"\n}","processes":[{"type":"Process Definition","name":"Trading","config":"{\n \"codeName\": \"Trading\",\n \"sessionRunWaitTime\": 5000,\n \"retryWaitTime\": 10000,\n \"framework\": {\n \"name\": \"Low-Frequency-Trading-Process\"\n }\n }","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[],"outputDatasetFolders":[{"type":"Output Dataset Folder","name":"Trading Engine","outputDatasets":[],"outputDatasetFolders":[{"type":"Output Dataset Folder","name":"Episode","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Episode Counters","id":"a1ba5aea-27cf-4789-858f-bcae5e844d68","savedPayload":{"position":{"x":24759.631900172484,"y":18129.670483934216},"targetPosition":{"x":24366.58984855878,"y":17432.75965266405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"3ed03a02-381d-43fe-9faa-761728c53bd8"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Counters","id":"0545bf38-80e0-4888-88bc-a8710355fa57","savedPayload":{"position":{"x":24616.91382467489,"y":18187.752283102793},"targetPosition":{"x":24366.58984855878,"y":17432.75965266405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"15f5b150-f1cf-403c-8cb9-2c7c4e1db8e8"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episode Statistics","id":"5af42032-7ce1-4afe-95d7-e33ba00794eb","savedPayload":{"position":{"x":24467.32574891778,"y":18213.619014780168},"targetPosition":{"x":24366.58984855878,"y":17432.75965266405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"fc9dc0f7-35e0-4548-bb91-f920825d694f"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Statistics","id":"d18cec41-5512-44d3-8005-5b9a7fd80461","savedPayload":{"position":{"x":24312.199531118506,"y":18282.702923036555},"targetPosition":{"x":24366.58984855878,"y":17432.75965266405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"91953362-8751-4440-a898-21245cd47c15"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episode Candle","id":"3df1601e-ef97-4103-b90e-364c1b6527f6","savedPayload":{"position":{"x":24176.08514639884,"y":18215.729402248384},"targetPosition":{"x":24366.58984855878,"y":17432.75965266405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"17fb41f5-61b5-4433-9a10-950ff8216a7e"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Candle","id":"7745d3f8-0a55-4d1a-9778-1360c5a5fad6","savedPayload":{"position":{"x":24038.4963756947,"y":18157.795869882535},"targetPosition":{"x":24366.58984855878,"y":17432.75965266405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"bbc9467d-28bf-432b-9e49-582d1bcabfb9"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episode Balances","id":"f5549653-3d66-4f6b-8aff-44f728772ed9","savedPayload":{"position":{"x":23907.619142082276,"y":18087.027884380746},"targetPosition":{"x":24366.58984855878,"y":17432.75965266405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"acddff59-b51b-4b45-b58f-71d4077755ee"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Balances","id":"5d016965-9c3b-48bf-8969-157430be4d54","savedPayload":{"position":{"x":23795.542044304937,"y":17990.498514211948},"targetPosition":{"x":24366.58984855878,"y":17432.75965266405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"213b8fe8-f772-41ea-a3f5-97867be555f7"}}},{"type":"Output Dataset","name":"Multi-Period-Market Distance To Event","id":"0c364f1b-019b-4928-a6a4-2488f56354ca","savedPayload":{"position":{"x":23702.8871453775,"y":17875.610474671364},"targetPosition":{"x":24366.58984855878,"y":17432.75965266405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"0ef6aa1d-3345-40f8-bc4f-4d2e2ff199ff"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Distance To Event","id":"e2c18755-9906-46b9-9260-d553bed98346","savedPayload":{"position":{"x":23630.13363422093,"y":17747.097485587026},"targetPosition":{"x":24366.58984855878,"y":17432.75965266405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"c291211b-4012-4440-a302-8e15412b0990"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episode Base Asset","id":"a8194517-95ce-4e3f-9ba4-1704f0334f56","savedPayload":{"position":{"x":23586.937987787725,"y":17605.69189593875},"targetPosition":{"x":24366.58984855878,"y":17432.75965266405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"e8b67591-d484-4c08-a711-7a4418ee101a"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Base Asset","id":"83cfb5a0-121f-43d2-9998-6ea75ef699dc","savedPayload":{"position":{"x":23568.49756784466,"y":17459.413257278975},"targetPosition":{"x":24366.58984855878,"y":17432.75965266405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"c6f34adc-2863-4ce6-8379-9b3cc1b37b73"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episode Quoted Asset","id":"dff86057-75bf-42e2-8a9b-f833ef75f724","savedPayload":{"position":{"x":23582.59683850695,"y":17321.565262097094},"targetPosition":{"x":24366.58984855878,"y":17432.75965266405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"99d1f17b-92cb-4544-88a2-fe463dd1de4b"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Quoted Asset","id":"a0f647d5-0bd8-46e1-bbf1-45de69792ada","savedPayload":{"position":{"x":23606.4309801008,"y":17182.377865453283},"targetPosition":{"x":24366.58984855878,"y":17432.75965266405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"daf4e3e9-426d-44c3-8b43-6849778d972f"}}},{"type":"Output Dataset","name":"Multi-Period-Market Current Episode","id":"dbf34743-8e5b-4c94-a1f6-840852d13413","savedPayload":{"position":{"x":23696.58969688897,"y":17038.825005441795},"targetPosition":{"x":24366.58984855878,"y":17432.75965266405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"26f6b248-21de-4898-9ee5-58b728a04267"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Current Episode","id":"94d2ae9a-1006-4b38-bbac-5de0a7a0a39f","savedPayload":{"position":{"x":23784.350181877602,"y":16892.540129046254},"targetPosition":{"x":24366.58984855878,"y":17432.75965266405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"ecdfe444-00e6-4ad4-a482-14b59a1e752a"}}}],"outputDatasetFolders":[],"id":"2baa9a27-e0d4-4742-9780-1c6d3345eca5","savedPayload":{"position":{"x":24365.147771563403,"y":17430.87510842025},"targetPosition":{"x":24980.502163935125,"y":16932.82583987662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Output Dataset Folder","name":"Strategy","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Current Strategy","id":"9602df2b-e3d3-4d8e-a5ef-42c46707236f","savedPayload":{"position":{"x":23839.727896692508,"y":17764.214314544686},"targetPosition":{"x":24199.31957187596,"y":17059.016359742804},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"7b4550d3-69d1-41ac-bad3-e2283f798bb8"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Current Strategy","id":"2b21b281-7f71-41c0-95e5-be5389252028","savedPayload":{"position":{"x":23493.765364621762,"y":17418.442588406753},"targetPosition":{"x":24199.31957187596,"y":17059.016359742804},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"49d55660-71e9-4c5a-8b1a-198934844e4a"}}},{"type":"Output Dataset","name":"Multi-Period-Market Last Strategy","id":"9a9cc765-aae0-4f43-9063-d9cf523294b4","savedPayload":{"position":{"x":23398.623828860094,"y":16936.48390859906},"targetPosition":{"x":24199.31957187596,"y":17059.016359742804},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"a2e7b5d2-8556-4c58-b2f6-a9c27c939e94"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Last Strategy","id":"7256ec06-564c-44e5-af8d-2fc79f279369","savedPayload":{"position":{"x":23613.653355029615,"y":16473.615518263356},"targetPosition":{"x":24199.31957187596,"y":17059.016359742804},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"76ff2401-1d4f-4dda-87f6-5e0b7af3eab2"}}}],"outputDatasetFolders":[],"id":"9589fd4b-6b8d-43e4-b97f-9d92c5d7d373","savedPayload":{"position":{"x":24198.439403508462,"y":17056.487906590613},"targetPosition":{"x":24980.502163935125,"y":16932.82583987662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Output Dataset Folder","name":"Position","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Current Position","id":"a18abc9f-3e80-40e4-8f75-e185da5cdf11","savedPayload":{"position":{"x":23722.057479917017,"y":17249.187716667693},"targetPosition":{"x":24241.46261852767,"y":16651.625744572666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"7506dd91-ad9d-4aad-bb1a-604bc5d3fe8d"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Current Position","id":"b7abd85d-9705-4f7c-aa4a-5bc0e6a935b6","savedPayload":{"position":{"x":23548.905057967855,"y":17035.499047842346},"targetPosition":{"x":24241.46261852767,"y":16651.625744572666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"06678152-1082-4f00-9275-22ffde715469"}}},{"type":"Output Dataset","name":"Multi-Period-Market Last Position","id":"a2c73548-1441-44ec-b70e-f34d79deb142","savedPayload":{"position":{"x":23459.19075377443,"y":16775.462616778168},"targetPosition":{"x":24241.46261852767,"y":16651.625744572666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"485671ff-0d50-4c08-958c-93e657cd238f"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Last Position","id":"b7209433-39db-481c-99aa-812ff43a1b8d","savedPayload":{"position":{"x":23463.92482783041,"y":16500.723157949345},"targetPosition":{"x":24241.46261852767,"y":16651.625744572666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"a909df42-6192-4bbd-9f38-e8800149aaa1"}}},{"type":"Output Dataset","name":"Multi-Period-Market Stop Loss","id":"a8715f8c-05e4-445a-a7d3-9dd8750fab69","savedPayload":{"position":{"x":23551.98449150562,"y":16246.080132975208},"targetPosition":{"x":24241.46261852767,"y":16651.625744572666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"0ea22a69-e7cb-4fcf-b7ae-4b7233b196c4"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Stop Loss","id":"298c7421-cbd4-4adb-9f27-a5aa4ca7a79b","savedPayload":{"position":{"x":23731.005343506178,"y":16074.04257054103},"targetPosition":{"x":24241.46261852767,"y":16651.625744572666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"75b13383-2771-4f58-b2c4-ffadad2e9519"}}},{"type":"Output Dataset","name":"Multi-Period-Market Take Profit","id":"df0012fd-0610-4ba6-844f-e5eee8f1d591","savedPayload":{"position":{"x":23961.515098485623,"y":15902.969746711473},"targetPosition":{"x":24241.46261852767,"y":16651.625744572666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"3cd59aa1-0590-43b6-9fb7-c85276ac132e"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Take Profit","id":"c8e6e5ea-e703-4c7c-a9d5-96174b6f83fc","savedPayload":{"position":{"x":24292.89755398623,"y":15865.232505691609},"targetPosition":{"x":24241.46261852767,"y":16651.625744572666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"916d5610-87ae-47e7-9067-9a406141e3df"}}}],"outputDatasetFolders":[],"id":"6ba1d18c-855a-4bb4-80a0-67aa8a5a292d","savedPayload":{"position":{"x":24241.304098223674,"y":16649.06593887918},"targetPosition":{"x":24980.502163935125,"y":16932.82583987662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Output Dataset Folder","name":"Stages","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Open Stage","id":"49bf1d40-0e69-4a5a-8fdc-40066054398a","savedPayload":{"position":{"x":23715.16885934334,"y":16575.214583531262},"targetPosition":{"x":24463.935799208375,"y":16317.35868679165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"b553683f-14f4-48be-91a6-0fb5381887e4"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Open Stage","id":"c69097d2-cfa1-468c-8a04-6fde9ed69c6b","savedPayload":{"position":{"x":23672.115778223168,"y":16303.6989855151},"targetPosition":{"x":24463.935799208375,"y":16317.35868679165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"3287fb46-854d-41de-8a42-285f9c10d4fa"}}},{"type":"Output Dataset","name":"Multi-Period-Market Close Stage","id":"83343c8b-9a81-4f6c-9d69-4c8db9f05832","savedPayload":{"position":{"x":23724.534384127368,"y":16033.687185201155},"targetPosition":{"x":24463.935799208375,"y":16317.35868679165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"0c30c4d3-3e58-4422-a178-450c24f95001"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Close Stage","id":"dc1bf033-5337-44b2-841c-99eac7281da4","savedPayload":{"position":{"x":23866.00378610678,"y":15797.904801709525},"targetPosition":{"x":24463.935799208375,"y":16317.35868679165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"4903a08c-90b6-4726-aa4d-1d8a0acdbd77"}}},{"type":"Output Dataset","name":"Multi-Period-Market Trigger Stage","id":"6b7e2bc8-ad41-4284-b71c-bce9a72c9a73","savedPayload":{"position":{"x":24079.67453924891,"y":15624.75766952882},"targetPosition":{"x":24463.935799208375,"y":16317.35868679165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"a179150b-2eaa-45ef-a7fa-14a1decf7dfc"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Trigger Stage","id":"d58182cd-f083-45b5-86e8-2326ff3b19ab","savedPayload":{"position":{"x":24298.026820036514,"y":15516.211362491928},"targetPosition":{"x":24463.935799208375,"y":16317.35868679165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"493f0951-e638-4da1-88b4-1c1d3829046e"}}},{"type":"Output Dataset","name":"Multi-Period-Market Manage Stage","id":"d3172f3f-ecc9-4e27-98e2-9e3c64dc1057","savedPayload":{"position":{"x":24647.38097230204,"y":15565.9625998007},"targetPosition":{"x":24463.935799208375,"y":16317.35868679165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"56d1a25b-54b1-419c-a323-f2fad41de0ec"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Manage Stage","id":"52753b6f-1b6e-40ab-9eac-38da1e6efdfa","savedPayload":{"position":{"x":24871.06097614139,"y":15638.110389304833},"targetPosition":{"x":24463.935799208375,"y":16317.35868679165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"fef1dba7-fc21-4338-b75e-a040d71dbde5"}}}],"outputDatasetFolders":[],"id":"a62e40a1-1956-411d-883f-6837bf79d918","savedPayload":{"position":{"x":24482.248252256533,"y":16317.464070237664},"targetPosition":{"x":24980.502163935125,"y":16932.82583987662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Output Dataset Folder","name":"Orders","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Market Buy Orders","id":"bf741c22-1c32-45cd-887b-fce2da583b33","savedPayload":{"position":{"x":24067.857616131965,"y":16085.27423196959},"targetPosition":{"x":24856.864777040086,"y":16151.869259808613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"a2ea8001-2143-4055-b1d3-525d95fa8e6f"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Market Buy Orders","id":"de5714a0-9ab1-4c5d-b7be-3f48c5dd3d40","savedPayload":{"position":{"x":24106.790684174604,"y":15898.207327067514},"targetPosition":{"x":24856.864777040086,"y":16151.869259808613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"557357c6-f814-4bf9-9426-82fc5e22c028"}}},{"type":"Output Dataset","name":"Multi-Period-Market Market Sell Orders","id":"14de281e-8264-4b2a-a070-7faed8eb318b","savedPayload":{"position":{"x":24189.32432781685,"y":15726.037342919648},"targetPosition":{"x":24856.864777040086,"y":16151.869259808613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"917cfdae-b736-4ed5-ad8e-d572c49ea489"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Market Sell Orders","id":"d64450c8-8d80-424f-b079-9d3d9cfb5554","savedPayload":{"position":{"x":24310.64902235833,"y":15578.642125324715},"targetPosition":{"x":24856.864777040086,"y":16151.869259808613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"3c878a50-6d76-412b-95d7-f2e546960293"}}},{"type":"Output Dataset","name":"Multi-Period-Market Limit Buy Orders","id":"e3cc144e-9d7b-4961-b1e1-c09fdac5869e","savedPayload":{"position":{"x":24463.71319335311,"y":15464.568817992396},"targetPosition":{"x":24856.864777040086,"y":16151.869259808613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"df8cfaa4-a4d4-4bc1-9fa2-4f8e91e45a87"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Limit Buy Orders","id":"c1fa0e3d-3945-4c5f-b929-f41f86f055c8","savedPayload":{"position":{"x":24639.6205223879,"y":15390.441364143853},"targetPosition":{"x":24856.864777040086,"y":16151.869259808613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"12652573-9506-4d3e-82bb-64b1bb9e7ce0"}}},{"type":"Output Dataset","name":"Multi-Period-Market Limit Sell Orders","id":"53125000-79a1-4cb8-b52e-10539a2323bb","savedPayload":{"position":{"x":24828.145672992854,"y":15360.564510993403},"targetPosition":{"x":24856.864777040086,"y":16151.869259808613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"f645108f-4648-497f-b361-0be5b84c233a"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Limit Sell Orders","id":"1832e9b4-6c83-4a06-9da4-f51a99fea440","savedPayload":{"position":{"x":25018.071728339142,"y":15376.672528344945},"targetPosition":{"x":24856.864777040086,"y":16151.869259808613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"e98191d1-5b13-42eb-bd52-31e3c6830188"}}},{"type":"Output Dataset","name":"Multi-Period-Market Last Market Order","id":"f109db5d-45dc-40d1-b593-21369032854e","savedPayload":{"position":{"x":25198.85441803135,"y":15437.82390045739},"targetPosition":{"x":24856.864777040086,"y":16151.869259808613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"768b42e9-59fe-494f-9e05-3be57fb17ca8"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Last Market Order","id":"c93f4355-0043-478e-9dcf-9e15adc61e82","savedPayload":{"position":{"x":25359.730285648107,"y":15540.481030442515},"targetPosition":{"x":24856.864777040086,"y":16151.869259808613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"26a39916-4f2d-42ab-ae86-7ab622f80624"}}},{"type":"Output Dataset","name":"Multi-Period-Market Last Limit Order","id":"02643b17-6a01-4f07-bfba-255c9160ed88","savedPayload":{"position":{"x":25491.299181598133,"y":15678.608172107452},"targetPosition":{"x":24856.864777040086,"y":16151.869259808613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"f9263cd7-460d-461c-be7b-ed2a69d38d11"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Last Limit Order","id":"ddfda1f9-9ce1-4857-b12e-4e290959ef78","savedPayload":{"position":{"x":25570.85151032078,"y":15861.273502796166},"targetPosition":{"x":24856.864777040086,"y":16151.869259808613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f3d5b047-d9c2-4e71-8fce-6e9be3499556"}}}],"outputDatasetFolders":[],"id":"a7854264-763e-4019-ba4b-437cce3d81d1","savedPayload":{"position":{"x":24856.73442294824,"y":16150.747865768435},"targetPosition":{"x":24980.502163935125,"y":16932.82583987662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"deb91c2d-c01d-4bfa-9423-b5813aa73d40","savedPayload":{"position":{"x":24980.502163935125,"y":16932.82583987662},"targetPosition":{"x":25719.624362385995,"y":17216.61551573645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Output Dataset Folder","name":"Trading System","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Trading System Errors","id":"b9e7ee2c-77e0-47c9-be95-fbe66689b5e0","savedPayload":{"position":{"x":24635.605685278973,"y":16717.75489099981},"targetPosition":{"x":25397.965849069038,"y":16494.6973711358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2ef33675-fc52-49fd-a8ef-bc5da1711dd1"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Trading System Errors","id":"e59d2d21-26b0-4831-93f4-ae77f7a3e02d","savedPayload":{"position":{"x":24602.221404257893,"y":16578.4537344441},"targetPosition":{"x":25397.965849069038,"y":16494.6973711358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"2d0dd4c2-4f4c-4d8c-b9a5-9ca62f186369"}}},{"type":"Output Dataset","name":"Multi-Period-Market Trading System Highlights","id":"3d62700f-732e-4a47-b802-6474bc9c618b","savedPayload":{"position":{"x":24604.550986749524,"y":16438.378853246686},"targetPosition":{"x":25397.965849069038,"y":16494.6973711358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"6e0f951c-25e7-4b92-85da-8be04d424bd0"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Trading System Highlights","id":"e424301c-dc56-43f4-965e-defa1cc117ad","savedPayload":{"position":{"x":24636.8819148634,"y":16309.366268783851},"targetPosition":{"x":25397.965849069038,"y":16494.6973711358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"fa53ecfb-a558-4810-b6f8-1f9c6c8bfc5b"}}},{"type":"Output Dataset","name":"Multi-Period-Market Trading System Values","id":"8b6c3b43-71b5-4cfb-9bb7-81e58f291f5d","savedPayload":{"position":{"x":24661.067093526213,"y":16175.966217209489},"targetPosition":{"x":25397.965849069038,"y":16494.6973711358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"9c4ec2f8-f4a8-45b9-aba3-b093a7b8f86a"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Trading System Values","id":"3bde40da-02de-4d8c-a738-e6b4a1d3730a","savedPayload":{"position":{"x":24705.73290085451,"y":16043.285678169554},"targetPosition":{"x":25397.965849069038,"y":16494.6973711358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"b3d3fe62-e714-4cb9-a78d-55bc0add1d7c"}}},{"type":"Output Dataset","name":"Multi-Period-Market Trading System Status","id":"04fba19e-4aa4-4d47-b52f-3ff06fa3a6c9","savedPayload":{"position":{"x":24815.56340167258,"y":15967.355980630882},"targetPosition":{"x":25397.965849069038,"y":16494.6973711358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b83dc93-dc14-44d9-8f8c-889f39a952da"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Trading System Status","id":"32d210dc-64c6-4af2-81a6-1f6f2fe9bd1b","savedPayload":{"position":{"x":24898.407717432514,"y":15859.17154851188},"targetPosition":{"x":25397.965849069038,"y":16494.6973711358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"0f8dcda3-1eab-439d-956c-c6eb9b1c481f"}}},{"type":"Output Dataset","name":"Multi-Period-Market Trading System Progress","id":"2015dc82-d437-491a-99a3-6b285c788d84","savedPayload":{"position":{"x":25015.10201230051,"y":15797.518537835547},"targetPosition":{"x":25397.965849069038,"y":16494.6973711358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"77735fc0-9ce6-4dec-a3ad-8075a22eda40"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Trading System Progress","id":"39908613-20b4-4803-accc-c90f49c4dd82","savedPayload":{"position":{"x":25133.589191351148,"y":15736.219754142521},"targetPosition":{"x":25397.965849069038,"y":16494.6973711358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"2fde11bd-4515-4a4e-9dc0-f6869dd3a04e"}}},{"type":"Output Dataset","name":"Multi-Period-Market Trading System Running","id":"47385563-39ee-4980-9e21-df5a341bdf66","savedPayload":{"position":{"x":25253.19749507724,"y":15678.238772537798},"targetPosition":{"x":25397.965849069038,"y":16494.6973711358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"c7b45884-6cdf-43f7-a1e5-c5325effd207"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Trading System Running","id":"87ea1cbf-c03c-4570-985d-e516475cdafc","savedPayload":{"position":{"x":25355.082010943464,"y":15742.049411296712},"targetPosition":{"x":25397.965849069038,"y":16494.6973711358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"a21cbc62-e6d8-4286-b0ff-430071d46700"}}},{"type":"Output Dataset","name":"Multi-Period-Market Trading System Announcements","id":"0ec4372d-210f-4792-a43f-63acad4ff70e","savedPayload":{"position":{"x":25520.896397270808,"y":15767.534652756305},"targetPosition":{"x":25397.965849069038,"y":16494.6973711358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"9e29a710-30c0-4faa-b71a-f4ee109673a2"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Trading System Announcements","id":"357184cc-60fe-4af7-b0f0-69b62f5353ce","savedPayload":{"position":{"x":25615.704663985136,"y":15663.24228511686},"targetPosition":{"x":25397.965849069038,"y":16494.6973711358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"b7e24195-a9d0-45e7-9dba-447db8000feb"}}},{"type":"Output Dataset","name":"Multi-Period-Market Trading System Warnings","id":"56c1048d-99da-4096-983f-ea0c6be75a56","savedPayload":{"position":{"x":25839.251495823726,"y":15817.082987575915},"targetPosition":{"x":25397.965849069038,"y":16494.6973711358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"0381cc1b-24c3-4705-9c76-94129e8605ff"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Trading System Warnings","id":"c1e4308f-8bb6-4e34-a07e-35ce10c961d9","savedPayload":{"position":{"x":25886.832902742404,"y":15855.604255583008},"targetPosition":{"x":25397.965849069038,"y":16494.6973711358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"b93b5cc3-7d61-4071-8eba-de15a4fea64b"}}},{"type":"Output Dataset","name":"Multi-Period-Market Trading System Infos","id":"0026196d-ca85-4dda-ad0f-6cd9bb5bf24c","savedPayload":{"position":{"x":25980.31428590564,"y":15950.880544765281},"targetPosition":{"x":25397.965849069038,"y":16494.6973711358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"cd834a3e-1b23-4e15-a068-59c235a90f89"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Trading System Infos","id":"d236066c-60e6-4df0-9243-a8cfa63317ea","savedPayload":{"position":{"x":26086.705255200523,"y":16096.830654999187},"targetPosition":{"x":25397.965849069038,"y":16494.6973711358},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"e24a4dcf-5adb-4c63-b9db-3ba2a7ece789"}}}],"outputDatasetFolders":[],"id":"4ad3bdb9-eace-4360-9202-514f49128005","savedPayload":{"position":{"x":25397.73444862262,"y":16493.214155043555},"targetPosition":{"x":25719.624362385995,"y":17216.61551573645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Output Dataset Folder","name":"Objects","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Strategies","id":"48188af2-1b5e-4498-90d1-6ecb2969ea49","savedPayload":{"position":{"x":25428.87409905196,"y":15932.714267392987},"targetPosition":{"x":26003.18600823905,"y":16477.667773483645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"03d1a187-b188-4ad7-b99e-6e4f6c6f0278"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Strategies","id":"ad5e327d-f792-430c-8efe-93b2e75a10c2","savedPayload":{"position":{"x":25681.218908173658,"y":15754.390792793667},"targetPosition":{"x":26003.18600823905,"y":16477.667773483645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"58a5a046-53a1-43a7-bb76-0c29d94ef579"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episodes","id":"183fe27b-faf1-4956-86e5-fc49e9e6a3a9","savedPayload":{"position":{"x":25982.611534115647,"y":15686.213735202015},"targetPosition":{"x":26003.18600823905,"y":16477.667773483645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"38264ecd-10e7-4a62-a2ca-9b607c30e72c"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episodes","id":"5083fa41-2ae4-4786-8a66-7f9e972a3731","savedPayload":{"position":{"x":26286.874895596273,"y":15738.527593357789},"targetPosition":{"x":26003.18600823905,"y":16477.667773483645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"cdc39b61-9aa5-46d5-9e80-915e0c2d545d"}}}],"outputDatasetFolders":[{"type":"Output Dataset Folder","name":"Orders","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Market Buy Orders","id":"7eb0922d-67f4-4822-8d18-4ef179d2f1d0","savedPayload":{"position":{"x":26194.114179720727,"y":15195.32957024014},"targetPosition":{"x":26547.21179201909,"y":15903.727189340121},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"45609efb-0edc-4aa9-bc12-f5b4ca6dc5bf"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Market Buy Orders","id":"089596f9-997f-46e9-b5a2-c407bea3449d","savedPayload":{"position":{"x":26457.711781214726,"y":15116.95658209055},"targetPosition":{"x":26547.21179201909,"y":15903.727189340121},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"5eed53d0-a3e7-4082-b7f1-cb321b3d306b"}}},{"type":"Output Dataset","name":"Multi-Period-Market Market Sell Orders","id":"158966df-b1ee-4b2b-9fe3-0ca469762692","savedPayload":{"position":{"x":26731.93922934118,"y":15133.602964112626},"targetPosition":{"x":26547.21179201909,"y":15903.727189340121},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"6112bd4d-07cb-41db-98c4-e286d172b5c0"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Market Sell Orders","id":"225a4c4a-2518-4007-9c00-f5291e60b57e","savedPayload":{"position":{"x":26984.156529172844,"y":15243.310362261462},"targetPosition":{"x":26547.21179201909,"y":15903.727189340121},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"07cd5668-5e0f-4385-9c02-72eebc99344a"}}},{"type":"Output Dataset","name":"Multi-Period-Market Limit Buy Orders","id":"ee3378d2-1b64-4b8c-a35a-40ee94176788","savedPayload":{"position":{"x":27188.672447871577,"y":15429.421614057324},"targetPosition":{"x":26547.21179201909,"y":15903.727189340121},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"b82fb0f9-74c1-42e6-961c-a696214ef079"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Limit Buy Orders","id":"0e2ec856-9464-492a-b273-64d970dd7fcb","savedPayload":{"position":{"x":27339.467822711795,"y":15734.792243512247},"targetPosition":{"x":26547.21179201909,"y":15903.727189340121},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"2e03f52e-0cd2-46b4-9c10-0b8516ef9c71"}}},{"type":"Output Dataset","name":"Multi-Period-Market Limit Sell Orders","id":"618a0cb2-5cda-47b1-b942-ab0fffde2319","savedPayload":{"position":{"x":27281.566184883046,"y":15948.219878970001},"targetPosition":{"x":26547.21179201909,"y":15903.727189340121},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"356495a9-b063-495d-b06d-5281c7c0007e"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Limit Sell Orders","id":"d8951de9-aa7e-4ee9-b1b2-0ad1e6ef1bd3","savedPayload":{"position":{"x":27273.25537681774,"y":16219.328536294932},"targetPosition":{"x":26547.21179201909,"y":15903.727189340121},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"934ab813-127e-4bbf-aa71-09b3cdadc0d0"}}}],"outputDatasetFolders":[],"id":"d89cb9e0-fa1e-4e41-bb9e-5c576ab85ea3","savedPayload":{"position":{"x":26548.17559037872,"y":15903.365671782705},"targetPosition":{"x":26003.18600823905,"y":16477.667773483645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Output Dataset Folder","name":"Stages","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Trigger Stages","id":"836c9427-bb15-4b30-a206-a5e6febf11d1","savedPayload":{"position":{"x":26670.527129609192,"y":15366.011569130113},"targetPosition":{"x":26725.85777617704,"y":16155.851570321562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"e951c491-c864-4668-9d70-c48df90d8342"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Trigger Stages","id":"68dee559-f287-42ab-afbb-24917f14fbeb","savedPayload":{"position":{"x":26944.044082606077,"y":15394.596683560852},"targetPosition":{"x":26725.85777617704,"y":16155.851570321562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"ace4518d-bfe1-49e2-af7b-4ff9559fe6a9"}}},{"type":"Output Dataset","name":"Multi-Period-Market Open Stages","id":"662fb5a2-8fa4-4a38-815a-b0486a14f001","savedPayload":{"position":{"x":27191.28614429612,"y":15515.129690002634},"targetPosition":{"x":26725.85777617704,"y":16155.851570321562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"613bf56d-986e-4a94-9b39-4f0ac3300b0c"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Open Stages","id":"f2b9758c-268b-471e-9b79-a5e090291559","savedPayload":{"position":{"x":27382.377642152747,"y":15713.05683951804},"targetPosition":{"x":26725.85777617704,"y":16155.851570321562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"44a0d895-2a7e-4f9a-b9a7-81dc32bf30e4"}}},{"type":"Output Dataset","name":"Multi-Period-Market Manage Stages","id":"69dcc462-31d0-4fe2-a255-14f1498143bb","savedPayload":{"position":{"x":27499.607355934364,"y":15950.926030083889},"targetPosition":{"x":26725.85777617704,"y":16155.851570321562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"f6e10004-71dd-4ae9-8c1f-0b71de02d274"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Manage Stages","id":"9d712a6f-764b-422c-a0b6-9f1888ba972b","savedPayload":{"position":{"x":27522.95390739705,"y":16252.456501113425},"targetPosition":{"x":26725.85777617704,"y":16155.851570321562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"8f3984d8-e735-4dab-a9cc-51e97d704154"}}},{"type":"Output Dataset","name":"Multi-Period-Market Close Stages","id":"8e897500-1682-4656-aa0c-61245098fbf1","savedPayload":{"position":{"x":27437.48660985823,"y":16502.852666731444},"targetPosition":{"x":26725.85777617704,"y":16155.851570321562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"ee0f2bab-26b6-44c6-af1c-efbca2c765cd"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Close Stages","id":"4544bea6-acea-4a27-bd45-400e50ac98a4","savedPayload":{"position":{"x":27275.773185609665,"y":16725.310057163908},"targetPosition":{"x":26725.85777617704,"y":16155.851570321562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"cbd3905d-fafc-47f3-8a61-20c9aab10d86"}}}],"outputDatasetFolders":[],"id":"b36dc14a-d132-4788-85c3-816f7a827f6b","savedPayload":{"position":{"x":26726.499050073464,"y":16155.677745959736},"targetPosition":{"x":26003.18600823905,"y":16477.667773483645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Output Dataset Folder","name":"Position","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Positions","id":"f654bbf2-8200-4af8-a62c-6a7702c519ec","savedPayload":{"position":{"x":27118.88312222412,"y":15735.32382553545},"targetPosition":{"x":26794.258753338054,"y":16457.32955257068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"55df9376-2806-429d-b43d-b96700787f74"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Positions","id":"70d50615-b8a3-417f-b63f-67aa2dfb1a37","savedPayload":{"position":{"x":27400.110423447117,"y":15947.639049169255},"targetPosition":{"x":26794.258753338054,"y":16457.32955257068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"fd62b468-93fa-44e0-941f-fff7ea4b04ea"}}},{"type":"Output Dataset","name":"Multi-Period-Market Position Base Asset","id":"ce13b9af-c5d4-4012-b7c1-ab8d79adef79","savedPayload":{"position":{"x":27561.24080742436,"y":16261.065928395912},"targetPosition":{"x":26794.258753338054,"y":16457.32955257068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"a0ff2796-59dd-4aa4-93ed-ba4601b9de5d"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Position Base Asset","id":"1c502d58-b252-4c6b-af56-79ad45ca3d0d","savedPayload":{"position":{"x":27570.47878013802,"y":16613.104035242675},"targetPosition":{"x":26794.258753338054,"y":16457.32955257068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"9985d32d-c070-4593-8a2a-ec8bc1c78cbb"}}},{"type":"Output Dataset","name":"Multi-Period-Market Position Quoted Asset","id":"37c9f691-05df-48b8-9f39-4642dbb2fb2a","savedPayload":{"position":{"x":27425.958081727214,"y":16934.471230545976},"targetPosition":{"x":26794.258753338054,"y":16457.32955257068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"abab2ab2-3a9b-49bd-8935-9bb01c113761"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Position Quoted Asset","id":"b05fbd1b-4566-4649-9259-0afbd65f062c","savedPayload":{"position":{"x":27156.299762605166,"y":17161.25994875547},"targetPosition":{"x":26794.258753338054,"y":16457.32955257068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"40ac7181-100d-4b65-b7fd-a8103cda2300"}}}],"outputDatasetFolders":[],"id":"67e69f2a-068d-432a-ac1b-45d8e4b76f26","savedPayload":{"position":{"x":26794.667547158362,"y":16457.07118112226},"targetPosition":{"x":26003.18600823905,"y":16477.667773483645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1c082a45-fcae-48de-a606-b864918eadf8","savedPayload":{"position":{"x":26003.248743092172,"y":16477.46124613294},"targetPosition":{"x":25719.624362385995,"y":17216.61551573645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f50da2e7-a341-4272-9947-db65142b1e23","savedPayload":{"position":{"x":25787.793847651956,"y":17993.628929597147},"targetPosition":{"x":25973.69617811368,"y":18411.53574561446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Low Frequency Trading","config":"{\n \"mainUtility\": \"Self Reference\"\n}","id":"e7fd528f-46bb-4a13-a11f-b6994236e3e7","savedPayload":{"position":{"x":25473.18934912384,"y":17662.09372656977},"targetPosition":{"x":25850.24104440959,"y":17866.815604570074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a8577e6c-9afc-4c9e-87ef-ee38531de864"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","config":"{\n\"mainUtility\": \"Market Ending Point\"\n}","id":"0517c2f1-627f-44e2-b58d-6d3f72d6c931","savedPayload":{"position":{"x":25580.066651127236,"y":17532.91761537457},"targetPosition":{"x":25850.24104440959,"y":17866.815604570074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\"mainUtility\": \"Market Starting Point\"}","id":"0b6d7ced-ccef-4a98-909c-443125480c10","savedPayload":{"position":{"x":25728.434363244938,"y":17455.023980827038},"targetPosition":{"x":25850.24104440959,"y":17866.815604570074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[],"dataMineDataDependencies":[{"type":"Data Mine Data Dependencies","name":"","botDataDependencies":[{"type":"Bot Data Dependencies","name":"SMA","dataDependencies":[{"type":"Data Dependency","name":"","id":"975cae89-0ede-4891-9c8d-9cf1674108da","savedPayload":{"position":{"x":24978.48402185319,"y":16303.89027969231},"targetPosition":{"x":25618.742761272966,"y":15838.340731903489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"3b21f9d7-2cbc-4c23-80c8-cc5e5b06a22c"}}},{"type":"Data Dependency","name":"","id":"124f43f6-0f5d-4c4c-b621-538f061b7ff5","savedPayload":{"position":{"x":24895.479200574187,"y":16160.353290101217},"targetPosition":{"x":25618.742761272966,"y":15838.340731903489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"2c338fe0-385f-45ab-b210-b98ef013228d"}}},{"type":"Data Dependency","name":"","id":"665ed08a-6414-4985-9b33-1b1df3640483","savedPayload":{"position":{"x":24844.242685534016,"y":16002.88762504572},"targetPosition":{"x":25618.742761272966,"y":15838.340731903489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"78a6ef37-4df8-4ac8-83a0-c9a732467c59"}}},{"type":"Data Dependency","name":"","id":"ce9b9823-369b-4282-871c-b3bea9fed201","savedPayload":{"position":{"x":24826.89364891758,"y":15838.35957655454},"targetPosition":{"x":25618.742761272966,"y":15838.340731903489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f155e2ed-7082-4021-a4ff-a6f3cfd5683d"}}},{"type":"Data Dependency","name":"","id":"d5cfafb7-ec39-48e8-a268-d5865743d4d1","savedPayload":{"position":{"x":24844.126954820968,"y":15673.90001595941},"targetPosition":{"x":25618.742761272966,"y":15838.340731903489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"af9b9cef-2a74-486f-b79e-047d68669a1f"}}},{"type":"Data Dependency","name":"","id":"466a5550-a32c-4b94-8065-0836f5943d91","savedPayload":{"position":{"x":24895.214816782012,"y":15516.436157628588},"targetPosition":{"x":25618.742761272966,"y":15838.340731903489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"de5cfa30-edbf-4d5b-8d7f-facfb69a0f3e"}}},{"type":"Data Dependency","name":"","id":"889ae335-4b53-4e27-82e5-5cec430be037","savedPayload":{"position":{"x":24977.84247704713,"y":15373.044754011942},"targetPosition":{"x":25618.742761272966,"y":15838.340731903489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Muti-Period-Market","id":"a5d28568-fb58-469a-9820-b9f0e8eab705"}}},{"type":"Data Dependency","name":"","id":"8992a824-63bd-4c4a-a3b8-ad1ec7674448","savedPayload":{"position":{"x":25088.435711638387,"y":15249.906774151163},"targetPosition":{"x":25618.742761272966,"y":15838.340731903489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"01f32aa3-55e9-4f8c-80c7-997b52073274"}}},{"type":"Data Dependency","name":"","id":"3c8bfc41-ab2a-48b8-9ecb-7254d0069f21","savedPayload":{"position":{"x":25222.074747229624,"y":15152.33183282886},"targetPosition":{"x":25618.742761272966,"y":15838.340731903489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"c0862b3d-d35a-4d3e-8d80-258b8a01c37c"}}},{"type":"Data Dependency","name":"","id":"17837da5-81b0-44c3-9f8b-17339c540107","savedPayload":{"position":{"x":25351.237804302353,"y":15051.398625134852},"targetPosition":{"x":25618.742761272966,"y":15838.340731903489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f5050eb2-0a99-464e-b5e2-2d8f40453e9a"}}},{"type":"Data Dependency","name":"","id":"53a7d009-5de5-407a-9838-7b4ae6eb615f","savedPayload":{"position":{"x":25553.68801736027,"y":15086.623445316565},"targetPosition":{"x":25618.742761272966,"y":15838.340731903489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"6ba76363-0f50-4e67-8678-3eb4fd6d07d6"}}},{"type":"Data Dependency","name":"","id":"34d66295-7ed7-4f7d-a1ed-13f0400614ce","savedPayload":{"position":{"x":25701.25819468165,"y":15051.210468298952},"targetPosition":{"x":25618.742761272966,"y":15838.340731903489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"92d92b3e-6870-499b-bfec-33bab220bf62"}}},{"type":"Data Dependency","name":"","id":"4fe237ea-1ede-41e0-b63a-57cab70f08ed","savedPayload":{"position":{"x":25845.956520296888,"y":15083.911885732809},"targetPosition":{"x":25618.742761272966,"y":15838.340731903489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"4c486321-22e0-4991-9a1c-571bada649ad"}}},{"type":"Data Dependency","name":"","id":"c2ad602a-896b-492d-895e-c7ceb2a9e234","savedPayload":{"position":{"x":26031.951841476763,"y":15179.659063125344},"targetPosition":{"x":25618.742761272966,"y":15838.340731903489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"819688c9-c7bd-444b-9658-2a4379125c72"}}}],"dataDependencyFolders":[],"id":"ef3b56c3-ac3a-4d35-b013-e1708640a13f","savedPayload":{"position":{"x":25618.742761272966,"y":15838.340731903489},"targetPosition":{"x":26207.058814762455,"y":16367.41944631785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Bot Data Dependencies","name":"EMA","dataDependencies":[{"type":"Data Dependency","name":"","id":"a08d5281-8a09-4c0e-a3f2-36947eb05050","savedPayload":{"position":{"x":25251.143664807045,"y":15593.512793047605},"targetPosition":{"x":26042.939045703417,"y":15593.363663184778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"ea1af06a-2584-43f0-aecf-ec8ad9169e9c"}}},{"type":"Data Dependency","name":"","id":"84bd463b-0041-415d-8e94-98ab2c4ce481","savedPayload":{"position":{"x":25268.508694230422,"y":15428.9189874804},"targetPosition":{"x":26042.939045703417,"y":15593.363663184778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"e7f5899c-fc4c-412d-a8db-77c1bef8ed21"}}},{"type":"Data Dependency","name":"","id":"eb46ce52-187a-4455-b55a-fb4f8f0e996b","savedPayload":{"position":{"x":25319.79819358481,"y":15271.699217702966},"targetPosition":{"x":26042.939045703417,"y":15593.363663184778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"85e3f0ce-5331-4c0b-900a-e73aaf53d96e"}}},{"type":"Data Dependency","name":"","id":"162b57ee-1670-4d89-aff2-f792b18d3897","savedPayload":{"position":{"x":25424.784288865685,"y":15161.65569790746},"targetPosition":{"x":26042.939045703417,"y":15593.363663184778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"e04edb48-09ab-4f92-beb7-14ba647de7d6"}}},{"type":"Data Dependency","name":"","id":"858cda0b-dbb0-4b71-8350-d745c2d03169","savedPayload":{"position":{"x":25495.32423304048,"y":14968.83554833644},"targetPosition":{"x":26042.939045703417,"y":15593.363663184778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"6b6840f7-3b76-474a-9d27-9515cbcd6499"}}},{"type":"Data Dependency","name":"","id":"0f628feb-1927-431b-ab9a-523b2dc40153","savedPayload":{"position":{"x":25647.06884138951,"y":14906.852459187397},"targetPosition":{"x":26042.939045703417,"y":15593.363663184778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"ef3d5a7d-11eb-4ead-8e24-49ac7c80b0c7"}}},{"type":"Data Dependency","name":"","id":"7d820144-b6b1-4d8e-96c6-359c0169b45a","savedPayload":{"position":{"x":25798.39160916985,"y":14839.727702627766},"targetPosition":{"x":26042.939045703417,"y":15593.363663184778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"4e36a5a5-7a03-43a9-b3e0-0c5763c29199"}}},{"type":"Data Dependency","name":"","id":"30a4b790-50de-4cf8-adfe-9e6a1227e508","savedPayload":{"position":{"x":25960.30552579064,"y":14805.407505132684},"targetPosition":{"x":26042.939045703417,"y":15593.363663184778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"15ccbcff-318d-46db-93f2-d649b57fd52a"}}},{"type":"Data Dependency","name":"","id":"ccb0dd49-c19a-4cd8-a581-3e175b8cb874","savedPayload":{"position":{"x":26125.438382984878,"y":14805.183758415127},"targetPosition":{"x":26042.939045703417,"y":15593.363663184778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"5586aa74-2ecb-4b71-83ea-d621aa400660"}}},{"type":"Data Dependency","name":"","id":"e3714836-9f67-4c55-9822-9af3d3fa3cdc","savedPayload":{"position":{"x":26287.57676634863,"y":14839.801949402416},"targetPosition":{"x":26042.939045703417,"y":15593.363663184778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"0198fa3f-98e3-4c57-a4a4-a7a8e27905d3"}}},{"type":"Data Dependency","name":"","id":"b5523012-27cc-4a31-8fa3-570b2041f688","savedPayload":{"position":{"x":26432.587944459,"y":14947.185624870372},"targetPosition":{"x":26042.939045703417,"y":15593.363663184778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"ea61dfed-8f93-4b4f-8575-61ca2547ea90"}}},{"type":"Data Dependency","name":"","id":"d02aa35d-0aee-4186-898a-4856957fb848","savedPayload":{"position":{"x":26572.77033956031,"y":15005.108751589605},"targetPosition":{"x":26042.939045703417,"y":15593.363663184778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"b251aca0-1996-4d13-99ed-6fb9796ec8d6"}}},{"type":"Data Dependency","name":"","id":"51badda2-9782-40c8-a205-a509e1741f10","savedPayload":{"position":{"x":26683.520152377947,"y":15128.094498629127},"targetPosition":{"x":26042.939045703417,"y":15593.363663184778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"dea3491f-aae7-4419-a98f-108cf5d69b87"}}},{"type":"Data Dependency","name":"","id":"1c7d8a10-0ded-4428-9260-c99a102168a4","savedPayload":{"position":{"x":26766.40535996979,"y":15271.70606859637},"targetPosition":{"x":26042.939045703417,"y":15593.363663184778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"6624337b-4afd-44b8-a2ea-3f1779ddda7e"}}}],"dataDependencyFolders":[],"id":"fedf50cb-2dce-471d-a5e2-32c07ad31064","savedPayload":{"position":{"x":26042.939045703417,"y":15593.363663184778},"targetPosition":{"x":26207.058814762455,"y":16367.41944631785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Bot Data Dependencies","name":"MACD","dataDependencies":[{"type":"Data Dependency","name":"","id":"bb3a344e-62d4-4aca-947d-31449ed65061","savedPayload":{"position":{"x":25960.4832659997,"y":15069.285852815687},"targetPosition":{"x":26529.443723189495,"y":15644.677459621194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"01d43ed0-2a80-4eca-bee6-db2fe40470fc"}}},{"type":"Data Dependency","name":"","id":"8b0c419d-6356-40c4-b58e-228e9861b741","savedPayload":{"position":{"x":26182.82756620871,"y":14933.56993897588},"targetPosition":{"x":26529.443723189495,"y":15644.677459621194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"dd5d3067-ff7b-4353-ba4f-c030bd3da796"}}},{"type":"Data Dependency","name":"","id":"976ac64b-57c6-449e-8a34-9567031ba34c","savedPayload":{"position":{"x":26453.559825422464,"y":14817.42571426392},"targetPosition":{"x":26529.443723189495,"y":15644.677459621194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"19b1d791-d2ea-4f25-a6e1-fe0a64450745"}}},{"type":"Data Dependency","name":"","id":"0d7581f4-7a99-461b-8d29-7800a4b9b277","savedPayload":{"position":{"x":26721.41557531194,"y":14876.18720385274},"targetPosition":{"x":26529.443723189495,"y":15644.677459621194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"ec2611a6-699b-45a5-beec-679dd4b7734a"}}},{"type":"Data Dependency","name":"","id":"c3f07b8a-fd15-469c-8824-d9bc5d0747e7","savedPayload":{"position":{"x":26972.3710257696,"y":14988.308940446159},"targetPosition":{"x":26529.443723189495,"y":15644.677459621194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"c390cbd3-0ba0-4507-8614-42c88f4ce7e6"}}},{"type":"Data Dependency","name":"","id":"c20b2c69-1392-4c72-b166-6eb72a23bc8d","savedPayload":{"position":{"x":27169.771229998783,"y":15179.205654872398},"targetPosition":{"x":26529.443723189495,"y":15644.677459621194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"29e18539-f188-4d29-9531-25cd3ee8f282"}}},{"type":"Data Dependency","name":"","id":"dc26743c-7eae-436f-b416-c080de27f3e9","savedPayload":{"position":{"x":27290.49574350758,"y":15427.052618872278},"targetPosition":{"x":26529.443723189495,"y":15644.677459621194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"89254c6c-9be2-4037-b063-467edc660d10"}}},{"type":"Data Dependency","name":"","id":"4b034fb0-af0a-4ee3-8a40-7407b1281369","savedPayload":{"position":{"x":27319.186107634392,"y":15699.836446311583},"targetPosition":{"x":26529.443723189495,"y":15644.677459621194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"8a9dde13-e4b8-40f3-80bc-ea51050b2f08"}}}],"dataDependencyFolders":[],"id":"8fbda3d4-82d4-4afc-b75b-125206d0f391","savedPayload":{"position":{"x":26529.443723189495,"y":15644.677459621194},"targetPosition":{"x":26207.058814762455,"y":16367.41944631785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Bot Data Dependencies","name":"RSI","dataDependencies":[{"type":"Data Dependency","name":"","id":"25d9cdb9-6e16-4644-ba8a-03d7b1b6ee2f","savedPayload":{"position":{"x":27289.07058918796,"y":15286.621178540354},"targetPosition":{"x":26892.80066787643,"y":15972.168289309266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"5ec62760-e144-4496-98ab-0415a4b315ec"}}},{"type":"Data Dependency","name":"","id":"98f6a406-f60d-4d4d-9c2c-acf12a094092","savedPayload":{"position":{"x":27684.32502825372,"y":15972.16715510556},"targetPosition":{"x":26892.80066787643,"y":15972.168289309266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f1556d09-f134-4678-83fb-04002d1dcd34"}}}],"dataDependencyFolders":[],"id":"e79e5c80-17bb-4d4a-a0a1-4aafaf11fffe","savedPayload":{"position":{"x":26892.80066787643,"y":15972.168289309266},"targetPosition":{"x":26207.058814762455,"y":16367.41944631785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4191bf00-4388-4e11-b494-ad567f26b4c2","savedPayload":{"position":{"x":25895.075150694338,"y":17440.01135647839},"targetPosition":{"x":25850.24104440959,"y":17866.815604570074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Mine","name":"Sparta","id":"9cfffc48-486a-48cb-b641-98c82e314d3a"}}},{"type":"Data Mine Data Dependencies","name":"Masters","botDataDependencies":[{"type":"Bot Data Dependencies","name":"Webhooks","dataDependencies":[{"type":"Data Dependency","name":"External Signals Single File","id":"ca90fa5c-6320-4e9e-a5bc-7b785ed76a57","savedPayload":{"position":{"x":25575.393404301947,"y":15173.939723242707},"targetPosition":{"x":26038.392302609358,"y":15816.181229741842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Single File","id":"c52d1012-5e3b-41a0-b5af-84098b0594bf"}}}],"dataDependencyFolders":[],"id":"951c0909-d3a8-4434-8e73-e5702664f84d","savedPayload":{"position":{"x":26038.392302609358,"y":15816.181229741842},"targetPosition":{"x":26501.48515113557,"y":16458.11245820958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Bot Data Dependencies","name":"Candles Volumes","dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"f251280e-a046-4225-a160-5367e1a01e87","savedPayload":{"position":{"x":25651.138107893003,"y":15333.017381173546},"targetPosition":{"x":26362.886530346976,"y":15678.82609409939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}},{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"03d34cfb-9c90-45ea-ab00-3b1c63be7e3e","savedPayload":{"position":{"x":25990.319729069146,"y":14980.335429456383},"targetPosition":{"x":26362.886530346976,"y":15678.82609409939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}},{"type":"Data Dependency","name":"Volumes Multi-Period-Daily","id":"d862e656-0d28-419d-b823-a2f6a53c345d","savedPayload":{"position":{"x":26471.59194208846,"y":14894.639798618122},"targetPosition":{"x":26362.886530346976,"y":15678.82609409939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"2e683057-f911-4105-bc77-16f2706d1915"}}},{"type":"Data Dependency","name":"Volumes Multi-Period-Market","id":"380364b6-432e-4180-acd5-e0717e537a6d","savedPayload":{"position":{"x":26923.298213585123,"y":15159.041796983229},"targetPosition":{"x":26362.886530346976,"y":15678.82609409939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"9bf0483c-4825-4a46-9cf4-1b5262579fc1"}}}],"dataDependencyFolders":[],"id":"92288525-ca69-402d-aee1-1afa73239fd2","savedPayload":{"position":{"x":26362.886530346976,"y":15678.82609409939},"targetPosition":{"x":26501.48515113557,"y":16458.11245820958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Bot Data Dependencies","name":"Bollinger Bands","dataDependencies":[{"type":"Data Dependency","name":"Bollinger Bands Multi-Period-Market","id":"3a0282dd-a3ec-4bdb-8322-9041713be0e5","savedPayload":{"position":{"x":26223.435118851536,"y":15075.18971954534},"targetPosition":{"x":26714.579890343943,"y":15695.890301012998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"f5b2a7d8-fc32-44a3-a002-9b0fc30a9719"}}},{"type":"Data Dependency","name":"Bollinger Bands Multi-Period-Daily","id":"f138c7bc-cae8-4846-ad94-19e3a76b7a85","savedPayload":{"position":{"x":26682.167717030297,"y":14904.688520605114},"targetPosition":{"x":26714.579890343943,"y":15695.890301012998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"506104fa-e99a-4a46-930e-176bce311aff"}}},{"type":"Data Dependency","name":"Percentage Bandwidth Multi-Period-Market","id":"b92d505b-4ec9-463e-91c4-7e6ce58774af","savedPayload":{"position":{"x":27135.35437635079,"y":15003.884724650945},"targetPosition":{"x":26714.579890343943,"y":15695.890301012998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"207e9481-0730-4304-a938-cfe223d70856"}}},{"type":"Data Dependency","name":"Percentage Bandwidth Multi-Period-Daily","id":"f26dc7e7-d620-44cd-a0c4-5b093a874383","savedPayload":{"position":{"x":27482.077301586578,"y":15443.998833895408},"targetPosition":{"x":26714.579890343943,"y":15695.890301012998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"e60d62dd-87f7-4f2d-ac21-3ac5c30a50ea"}}}],"dataDependencyFolders":[],"id":"b8ee9fff-7f1d-467f-a406-de48c567dc2d","savedPayload":{"position":{"x":26714.579890343943,"y":15695.890301012998},"targetPosition":{"x":26501.48515113557,"y":16458.11245820958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Bot Data Dependencies","name":"Bollinger Channels","dataDependencies":[{"type":"Data Dependency","name":"Bollinger Channels Objects Market","id":"9a1ec3f1-4078-4c2d-b8a3-6d2e12b6da7a","savedPayload":{"position":{"x":26644.97951931022,"y":15169.38026968951},"targetPosition":{"x":27024.408018066602,"y":15864.05677112932},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Market","id":"610cd062-ab88-4892-b711-0fb430305c61"}}},{"type":"Data Dependency","name":"Bollinger Channels Objects Daily","id":"4847bbe5-0473-4371-9187-cf419e7af474","savedPayload":{"position":{"x":26894.123985452305,"y":15031.022914288264},"targetPosition":{"x":27024.408018066602,"y":15864.05677112932},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Daily","id":"64910fea-c92a-4a55-850a-aa62d98b478e"}}},{"type":"Data Dependency","name":"Bollinger Channels Market","id":"6f124627-e05d-4f0a-9c12-82b028761ea3","savedPayload":{"position":{"x":27198.04877078851,"y":15120.510470662875},"targetPosition":{"x":27024.408018066602,"y":15864.05677112932},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Market","id":"22c1f2c6-3838-4657-add8-2e01d7056917"}}},{"type":"Data Dependency","name":"Bollinger Channels Daily","id":"2760ac23-8bd5-446c-a2cc-9f4b4f4ea445","savedPayload":{"position":{"x":27436.48136491204,"y":15187.640087282402},"targetPosition":{"x":27024.408018066602,"y":15864.05677112932},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Daily","id":"96b4e65b-e6db-44a0-80a5-ceb9d68a09ec"}}},{"type":"Data Dependency","name":"Bollinger Sub-Channels Objects Market","id":"ccdada27-44fa-4ab4-a4b6-50a44ee033ab","savedPayload":{"position":{"x":27643.046527233615,"y":15369.50519936673},"targetPosition":{"x":27024.408018066602,"y":15864.05677112932},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Market","id":"869f615e-0cc0-44fd-8648-4a951c23a410"}}},{"type":"Data Dependency","name":"Bollinger Sub-Channels Objects Daily","id":"b258b441-5faa-44fc-a4a9-a5f0c82019ac","savedPayload":{"position":{"x":27740.00547526291,"y":15598.391118355114},"targetPosition":{"x":27024.408018066602,"y":15864.05677112932},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Daily","id":"029479ae-275d-4854-ad3e-66948656a053"}}},{"type":"Data Dependency","name":"Bollinger Sub-Channels Market","id":"5218700f-23c5-4bd3-a515-b03078b8effc","savedPayload":{"position":{"x":27867.749163499997,"y":15889.330797593917},"targetPosition":{"x":27024.408018066602,"y":15864.05677112932},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Market","id":"f8d44a4d-3771-4a71-97ca-dc604ff565d3"}}},{"type":"Data Dependency","name":"Bollinger Sub-Channels Daily","id":"dac7bf00-ba56-4110-beaa-20ed78c16962","savedPayload":{"position":{"x":27761.581208913827,"y":16152.284275338778},"targetPosition":{"x":27024.408018066602,"y":15864.05677112932},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Daily","id":"ca71e765-0f66-4b18-b500-847b9d16169b"}}}],"dataDependencyFolders":[],"id":"1925ef86-2788-40fc-9992-a35f1efade7e","savedPayload":{"position":{"x":27024.408018066602,"y":15864.05677112932},"targetPosition":{"x":26501.48515113557,"y":16458.11245820958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Bot Data Dependencies","name":"Candle Channels","dataDependencies":[{"type":"Data Dependency","name":"Candles Channels Multi-Period-Market","id":"5494fd70-5582-4d30-850a-845e2ce401fd","savedPayload":{"position":{"x":27383.810266766217,"y":15355.861819166363},"targetPosition":{"x":27230.504050586453,"y":16150.0571687371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"df7d1cd7-95b0-499c-b51a-772c3fb8a2b0"}}},{"type":"Data Dependency","name":"Candles Channels Multi-Period-Daily","id":"ad5e0919-c7a7-40b6-b7b7-f6938d7eb29a","savedPayload":{"position":{"x":27863.387037444325,"y":15643.96671879393},"targetPosition":{"x":27230.504050586453,"y":16150.0571687371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"07734f1c-e2e7-4a35-8567-6a996c68883e"}}},{"type":"Data Dependency","name":"Candles Channels Objects Multi-Period-Market","id":"b0740f97-29dc-40f8-8c2f-5e6716588c80","savedPayload":{"position":{"x":28019.420612573736,"y":16082.128322313332},"targetPosition":{"x":27230.504050586453,"y":16150.0571687371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"566b9df4-da86-4b4f-a3f4-ef8a76443714"}}},{"type":"Data Dependency","name":"Candles Channels Objects Multi-Period-Daily","id":"7290cf5f-7567-43d0-89d2-9109edaef04e","savedPayload":{"position":{"x":27908.46516332193,"y":16558.491454684445},"targetPosition":{"x":27230.504050586453,"y":16150.0571687371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"8a7d224b-7571-4e1a-8b8f-8a35aa25dc63"}}}],"dataDependencyFolders":[],"id":"f5360013-8f94-41b3-a83e-ac2c0b2a97ec","savedPayload":{"position":{"x":27230.504050586453,"y":16150.0571687371},"targetPosition":{"x":26501.48515113557,"y":16458.11245820958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Bot Data Dependencies","name":"Resistances and Supports","dataDependencies":[{"type":"Data Dependency","name":"Resistances Multi-Period-Market","id":"2ea76fe4-e558-42c3-a585-0a7f62919d9c","savedPayload":{"position":{"x":27736.019063741274,"y":15873.214639215905},"targetPosition":{"x":27292.067586100067,"y":16496.794314231138},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"44e905fc-719f-453b-a567-fd5e3bfcae91"}}},{"type":"Data Dependency","name":"Resistances Multi-Period-Daily","id":"ca014a95-b889-41b6-a583-481ffe3ccee9","savedPayload":{"position":{"x":28056.090653621814,"y":16289.484451757133},"targetPosition":{"x":27292.067586100067,"y":16496.794314231138},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f4530d48-3239-4ab0-8c4d-d611cd55fde3"}}},{"type":"Data Dependency","name":"Supports Multi-Period-Market","id":"340685b9-17a7-4f0f-b320-cad978a4b8aa","savedPayload":{"position":{"x":28032.146229588863,"y":16777.75263792533},"targetPosition":{"x":27292.067586100067,"y":16496.794314231138},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"4a1bd251-76ed-4530-8723-08e41d50f12d"}}},{"type":"Data Dependency","name":"Supports Multi-Period-Daily","id":"b2b174d9-3c43-48ef-8e06-1c8f96dc3aa1","savedPayload":{"position":{"x":27725.613093841534,"y":17158.93933506632},"targetPosition":{"x":27292.067586100067,"y":16496.794314231138},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"deaaf4ec-9352-40b6-af9a-8541a73a5e13"}}}],"dataDependencyFolders":[],"id":"f2774cd7-2df5-4c23-9742-db94eb537243","savedPayload":{"position":{"x":27292.067586100067,"y":16496.794314231138},"targetPosition":{"x":26501.48515113557,"y":16458.11245820958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"628b94b8-50f3-4688-a7af-b8dbfab93446","savedPayload":{"position":{"x":26054.926733069708,"y":17489.827692108},"targetPosition":{"x":25850.24104440959,"y":17866.815604570074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Mine","name":"Masters","id":"35be7b1c-a0f7-4b5f-9ee1-8fb51595e959"}}},{"type":"Data Mine Data Dependencies","name":"","botDataDependencies":[{"type":"Bot Data Dependencies","name":"Candle Patterns","dataDependencies":[{"type":"Data Dependency","name":"","id":"304a90a4-5021-473e-8710-436a4d965575","savedPayload":{"position":{"x":27096.481753413653,"y":15409.010031577196},"targetPosition":{"x":27354.121936835185,"y":16157.246817135152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"07be5b9b-e8fd-49fc-ab77-20f89fdea10f"}}},{"type":"Data Dependency","name":"","id":"4014d025-222b-44a1-b2d5-2d64c7e46e22","savedPayload":{"position":{"x":27367.75732874827,"y":15365.973885069256},"targetPosition":{"x":27354.121936835185,"y":16157.246817135152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"9e6d7f95-b2fe-466e-9a5d-175479cbf85d"}}},{"type":"Data Dependency","name":"","id":"ca9f4a4a-180a-4c4a-bf6e-8a790ab02681","savedPayload":{"position":{"x":27637.586395941595,"y":15418.392863927502},"targetPosition":{"x":27354.121936835185,"y":16157.246817135152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"144d8665-1ff0-4db3-9340-a33fd7d0d098"}}},{"type":"Data Dependency","name":"","id":"690ad4e8-dbb6-4ac7-85ef-967dc0e38905","savedPayload":{"position":{"x":27873.278069845408,"y":15559.975171451008},"targetPosition":{"x":27354.121936835185,"y":16157.246817135152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f0a11771-dd69-4b9a-9347-7cb2d1f231ff"}}},{"type":"Data Dependency","name":"","id":"a480e4d4-4504-4749-a97f-ac6817ca5845","savedPayload":{"position":{"x":28046.30451640207,"y":15773.67708843774},"targetPosition":{"x":27354.121936835185,"y":16157.246817135152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"8c35ce52-9dee-4d20-92e6-50ba7fd2882b"}}},{"type":"Data Dependency","name":"","id":"c8ef98e2-e24c-4678-80f0-e035cf5d3ee7","savedPayload":{"position":{"x":28135.76330462341,"y":16033.518107640355},"targetPosition":{"x":27354.121936835185,"y":16157.246817135152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"4f1260c8-6d74-454e-963a-fa3ff910329c"}}},{"type":"Data Dependency","name":"","id":"62b8ecf5-0299-4c6c-a082-bbfd042f30a7","savedPayload":{"position":{"x":28130.952514505974,"y":16308.106219318837},"targetPosition":{"x":27354.121936835185,"y":16157.246817135152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"087fc67e-78f9-4204-ba5e-8b670566a716"}}},{"type":"Data Dependency","name":"","id":"2a8b96b1-0788-45ed-879a-dce6268e9ee3","savedPayload":{"position":{"x":28032.34441652272,"y":16564.835125728598},"targetPosition":{"x":27354.121936835185,"y":16157.246817135152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"b60cb94f-79c5-410c-b166-abc97d0f2bc3"}}}],"dataDependencyFolders":[],"id":"8ad5d255-7eec-4d16-8781-b4ce8e2d812c","savedPayload":{"position":{"x":27354.121936835185,"y":16157.246817135152},"targetPosition":{"x":26739.277299275745,"y":16655.15740768382},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"667b86ed-6a99-4860-9851-ad7f3647e674","savedPayload":{"position":{"x":26183.861782382715,"y":17596.638448892892},"targetPosition":{"x":25850.24104440959,"y":17866.815604570074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Mine","name":"Buddha","id":"38d04c99-51a6-4c1c-853e-ba67e216854b"}}},{"type":"Data Mine Data Dependencies","name":"","botDataDependencies":[{"type":"Bot Data Dependencies","name":"ATR","dataDependencies":[{"type":"Data Dependency","name":"","id":"17492ab8-20ea-4673-9d44-afbd27e181c3","savedPayload":{"position":{"x":26263.673156747165,"y":17019.554540269783},"targetPosition":{"x":26434.21484041836,"y":17377.666618280244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"67695466-be2d-43b4-9824-83baa7a08412"}}},{"type":"Data Dependency","name":"","id":"58813e17-587f-466c-a01c-90ea7885110b","savedPayload":{"position":{"x":26506.319008515715,"y":16987.46147146655},"targetPosition":{"x":26434.21484041836,"y":17377.666618280244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"e3d0bccf-5f97-4902-92df-4ac8fe8c41a8"}}},{"type":"Data Dependency","name":"","id":"bc9a6338-6784-401e-a87b-f270eb7ea16e","savedPayload":{"position":{"x":26721.69380992814,"y":17104.198957119774},"targetPosition":{"x":26434.21484041836,"y":17377.666618280244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2570d2c7-72e3-4131-97dc-a9f97f493e93"}}},{"type":"Data Dependency","name":"","id":"43c9d3e8-6bc8-4d3a-a000-03e15239b93a","savedPayload":{"position":{"x":26787.09871609576,"y":17342.774828105754},"targetPosition":{"x":26434.21484041836,"y":17377.666618280244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"93eb665f-d903-4825-9fb1-2783e917ac89"}}}],"dataDependencyFolders":[],"id":"b35e8718-e59c-452d-9fdf-ef96e567b345","savedPayload":{"position":{"x":26434.21484041836,"y":17377.666618280244},"targetPosition":{"x":26229.807982139762,"y":17754.85909481835},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Bot Data Dependencies","name":"ROC","dataDependencies":[{"type":"Data Dependency","name":"","id":"5fa7b431-3b8a-47b1-9315-e6175da4a0cd","savedPayload":{"position":{"x":26704.691568051443,"y":17241.489235360586},"targetPosition":{"x":26641.02127208155,"y":17633.22952885883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"40268fec-e5e8-4b05-9f27-c4072ebda94a"}}},{"type":"Data Dependency","name":"","id":"33bc5b70-b3b2-4285-b31c-4fe87feadb7c","savedPayload":{"position":{"x":26908.82349892525,"y":17290.99137097947},"targetPosition":{"x":26641.02127208155,"y":17633.22952885883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"cb60d68b-b11d-4317-8830-65c212a8c728"}}},{"type":"Data Dependency","name":"","id":"22455f68-3172-47f5-9566-b47f28eed3d5","savedPayload":{"position":{"x":26987.44928240548,"y":17438.819308899383},"targetPosition":{"x":26641.02127208155,"y":17633.22952885883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"41a488be-c66c-458d-99fc-490b9e8172ef"}}},{"type":"Data Dependency","name":"","id":"f953063f-c6e6-4942-8b91-f3a1d6ff2b3c","savedPayload":{"position":{"x":27037.427063532086,"y":17607.98179166625},"targetPosition":{"x":26641.02127208155,"y":17633.22952885883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"30276899-0d68-40e3-9c35-a28442485b55"}}},{"type":"Data Dependency","name":"","id":"d289285b-36cb-4501-89ee-db891fe4a95a","savedPayload":{"position":{"x":27009.122368144377,"y":17781.594843992498},"targetPosition":{"x":26641.02127208155,"y":17633.22952885883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"9c6b7d85-01f5-449c-a5be-9a357b6588bc"}}},{"type":"Data Dependency","name":"","id":"1053543e-b47a-4d21-8507-4376e7b3759a","savedPayload":{"position":{"x":26891.31315302044,"y":17922.825622831147},"targetPosition":{"x":26641.02127208155,"y":17633.22952885883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"66f59b6d-9d4b-4cef-9ffd-aed019219809"}}}],"dataDependencyFolders":[],"id":"6bdb8bf8-c354-48e6-9362-e0c4e02d7b31","savedPayload":{"position":{"x":26641.02127208155,"y":17633.22952885883},"targetPosition":{"x":26229.807982139762,"y":17754.85909481835},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Bot Data Dependencies","name":"Stochastic","dataDependencies":[{"type":"Data Dependency","name":"","id":"8597e485-07b6-44ad-86e7-73905afd5764","savedPayload":{"position":{"x":27019.849583302243,"y":17954.198785416633},"targetPosition":{"x":26606.75241231968,"y":17959.691526474246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"88b1ff0e-ad99-474c-8833-7b76a5a57ebd"}}},{"type":"Data Dependency","name":"","id":"d3aaba75-bd12-475b-9c0b-423d4318cf29","savedPayload":{"position":{"x":26814.17992407181,"y":18297.82848644475},"targetPosition":{"x":26606.75241231968,"y":17959.691526474246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"4b941e0d-8b0a-41e2-bc20-54e0bc0d936a"}}}],"dataDependencyFolders":[],"id":"e60319a6-7fa3-4cc2-bd57-0df4cf80dc93","savedPayload":{"position":{"x":26606.75241231968,"y":17959.691526474246},"targetPosition":{"x":26229.807982139762,"y":17754.85909481835},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"949ddd26-19b4-4281-9a5c-815af6f34475","savedPayload":{"position":{"x":26261.685501694825,"y":17745.101827500337},"targetPosition":{"x":25850.24104440959,"y":17866.815604570074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Mine","name":"Alpha","id":"511bef1e-62d8-4ff9-8d87-15bd0d3d630c"}}}],"id":"5175cccd-58ed-40d8-8e0d-1a234d7460eb","savedPayload":{"position":{"x":26022.64311754382,"y":17946.36534543879},"targetPosition":{"x":25973.69617811368,"y":18411.53574561446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"a8577e6c-9afc-4c9e-87ef-ee38531de864","savedPayload":{"position":{"x":26248.48395634959,"y":18033.195510312507},"targetPosition":{"x":25973.69617811368,"y":18411.53574561446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"","id":"a47d063a-c7b9-40d9-8d77-26cead472b6c","savedPayload":{"position":{"x":26401.28519188106,"y":18221.247146206697},"targetPosition":{"x":25973.69617811368,"y":18411.53574561446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"dd185847-d39a-4501-8863-f906716b5f79","savedPayload":{"position":{"x":26439.381261978775,"y":18460.08595015498},"targetPosition":{"x":25973.69617811368,"y":18411.53574561446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a8c8d761-96e5-4a86-9285-6c3881d61442","savedPayload":{"position":{"x":25584.118881574897,"y":18380.57317832884},"targetPosition":{"x":25341.164459522937,"y":18714.90217526442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"products":[],"productDefinitionFolders":[{"type":"Product Definition Folder","name":"Trading Engine","products":[],"productDefinitionFolders":[{"type":"Product Definition Folder","name":"Episode","products":[{"type":"Product Definition","name":"Episode Counters","config":"{\n \"codeName\": \"Episode-Counters\",\n \"singularVariableName\": \"episodeCounter\",\n \"pluralVariableName\": \"episodeCounters\",\n \"nodePath\": \"tradingEngine.current.episode.episodeCounters\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"3ed03a02-381d-43fe-9faa-761728c53bd8","savedPayload":{"position":{"x":27300.40289014792,"y":15335.443074591298},"targetPosition":{"x":27585.760253576595,"y":16453.06457855014},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"15f5b150-f1cf-403c-8cb9-2c7c4e1db8e8","savedPayload":{"position":{"x":27749.53852271553,"y":15311.257900522345},"targetPosition":{"x":27585.760253576595,"y":16453.06457855014},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"f0032eaa-4b31-4e39-84c1-5e5957f21ba9","savedPayload":{"position":{"x":27444.30973941882,"y":14569.740331324074},"targetPosition":{"x":28174.307400436843,"y":15461.067681067136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"baf72135-2aa6-4be6-b673-09151eeea3e6","savedPayload":{"position":{"x":27793.27155785582,"y":14373.776657191493},"targetPosition":{"x":28174.307400436843,"y":15461.067681067136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Periods","config":"{\n \"codeName\": \"periods\",\n \"isString\": false\n}","id":"4274f7bf-7f70-4775-8d30-fc56153f70fc","savedPayload":{"position":{"x":28187.8799046362,"y":14308.993378692861},"targetPosition":{"x":28174.307400436843,"y":15461.067681067136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Strategies","config":"{\n \"codeName\": \"strategies\",\n \"isString\": false\n}","id":"10f5cc85-e009-4feb-9eba-8997ccc46ba5","savedPayload":{"position":{"x":28581.109620821175,"y":14383.173250433367},"targetPosition":{"x":28174.307400436843,"y":15461.067681067136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Positions","config":"{\n \"codeName\": \"positions\",\n \"isString\": false\n}","id":"d3aaaeb9-d602-4188-a594-372d67545aed","savedPayload":{"position":{"x":28925.26176489008,"y":14587.367549238055},"targetPosition":{"x":28174.307400436843,"y":15461.067681067136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Orders","config":"{\n \"codeName\": \"orders\",\n \"isString\": false\n}","id":"2be38b73-1ea0-4e08-ae4a-9caaa44e486f","savedPayload":{"position":{"x":29178.821839588723,"y":14896.949933564554},"targetPosition":{"x":28174.307400436843,"y":15461.067681067136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hits","config":"{\n \"codeName\": \"hits\",\n \"isString\": false\n}","id":"bb822003-abbb-4748-8d18-02c67a33e24f","savedPayload":{"position":{"x":29311.20735022961,"y":15274.583349848217},"targetPosition":{"x":28174.307400436843,"y":15461.067681067136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fails","config":"{\n \"codeName\": \"fails\",\n \"isString\": false\n}","id":"e114274f-a7ba-47e4-b0d3-710b5bd7fcd9","savedPayload":{"position":{"x":29306.438697708312,"y":15674.447943694395},"targetPosition":{"x":28174.307400436843,"y":15461.067681067136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"72e8a046-c0a4-4402-b1b9-c6a65b759515","savedPayload":{"position":{"x":28174.307400436843,"y":15461.067681067136},"targetPosition":{"x":27585.760253576595,"y":16453.06457855014},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"d81c6019-864e-42f5-94ba-2f249b865f85","savedPayload":{"position":{"x":26342.980691530996,"y":17609.14523712234},"targetPosition":{"x":26867.82802316455,"y":17936.959577435533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Episode Counters","id":"5e478e3f-e432-4364-8f2c-2f3b2849848b"}}},{"type":"Product Definition","name":"Episode Statistics","config":"{\n \"codeName\": \"Episode-Statistics\",\n \"singularVariableName\": \"episodeStatistics\",\n \"pluralVariableName\": \"episodeStatistics\",\n \"nodePath\": \"tradingEngine.current.episode.episodeStatistics\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"fc9dc0f7-35e0-4548-bb91-f920825d694f","savedPayload":{"position":{"x":27541.66408537121,"y":15349.41614211805},"targetPosition":{"x":27746.575741021017,"y":16484.505599788292},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"91953362-8751-4440-a898-21245cd47c15","savedPayload":{"position":{"x":27991.31583213671,"y":15357.33487384094},"targetPosition":{"x":27746.575741021017,"y":16484.505599788292},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"8a268555-b786-4756-9e5c-7a190c3ae37e","savedPayload":{"position":{"x":27681.434883647897,"y":14640.050448146907},"targetPosition":{"x":28404.32777615676,"y":15537.115096350753},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"ef14e964-9f33-4b53-bf44-bd81c386319d","savedPayload":{"position":{"x":27963.548190650312,"y":14472.670587410887},"targetPosition":{"x":28404.32777615676,"y":15537.115096350753},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Profit Loss","config":"{\n \"codeName\": \"profitLoss\",\n \"isString\": false\n}","id":"360e05d7-340f-4975-93f2-b15835e975d2","savedPayload":{"position":{"x":28281.25345547369,"y":14391.577134069588},"targetPosition":{"x":28404.32777615676,"y":15537.115096350753},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Days","config":"{\n \"codeName\": \"days\",\n \"isString\": false,\n \"decimals\": 2\n}","id":"72167f7d-b29e-4f27-a68c-4a3fa3d7c321","savedPayload":{"position":{"x":28608.7982124716,"y":14403.29273922377},"targetPosition":{"x":28404.32777615676,"y":15537.115096350753},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ROI","config":"{\n \"codeName\": \"ROI\",\n \"isString\": false,\n \"decimals\": 2\n}","id":"2e89519e-eab5-4656-ade5-3a18eb1cf07f","savedPayload":{"position":{"x":28919.914167958425,"y":14506.844886032231},"targetPosition":{"x":28404.32777615676,"y":15537.115096350753},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Annualized Rate Of Return","config":"{ \n\"codeName\": \"annualizedRateOfReturn\",\n\"isString\": false,\n\"isCalculated\": false,\n \"decimals\": 2\n}","id":"9177857b-5e67-4e42-a874-b0e1633ad45d","savedPayload":{"position":{"x":29189.310999316556,"y":14693.879839045254},"targetPosition":{"x":28404.32777615676,"y":15537.115096350753},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hit Fail","config":"{\n \"codeName\": \"hitFail\",\n \"isString\": true\n}","id":"81ebbfbf-23c5-4156-b1b4-0f0f35dc1d03","savedPayload":{"position":{"x":29395.103010204355,"y":14949.237046753768},"targetPosition":{"x":28404.32777615676,"y":15537.115096350753},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 1","config":"{ \n\"codeName\": \"userDefinedStatistic1\",\n\"isString\": false,\n\"isCalculated\": false,\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 0\n}","id":"8356215e-6e31-45d0-bd78-ba080d2258de","savedPayload":{"position":{"x":29520.61532315551,"y":15252.228245945837},"targetPosition":{"x":28404.32777615676,"y":15537.115096350753},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 2","config":"{ \n\"codeName\": \"userDefinedStatistic2\",\n\"isString\": false,\n\"isCalculated\": false,\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 1\n}","id":"59b47d20-5679-4889-8c1f-7853aa68f4a0","savedPayload":{"position":{"x":29555.677361704835,"y":15578.006054623575},"targetPosition":{"x":28404.32777615676,"y":15537.115096350753},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 3","config":"{ \n\"codeName\": \"userDefinedStatistic3\",\n\"isString\": false,\n\"isCalculated\": false,\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 2\n}","id":"df7dbe99-16e8-42ad-9c8b-5acdf3b63f05","savedPayload":{"position":{"x":29497.4228024413,"y":15900.803829573548},"targetPosition":{"x":28404.32777615676,"y":15537.115096350753},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c0f124f4-1e7d-4d06-94fd-b547257b4061","savedPayload":{"position":{"x":28404.32777615676,"y":15537.115096350753},"targetPosition":{"x":27746.575741021017,"y":16484.505599788292},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"400c7f49-37da-41fb-b83d-879960aa74ff","savedPayload":{"position":{"x":26487.05907987193,"y":17449.56191269022},"targetPosition":{"x":26867.82802316455,"y":17936.959577435533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Episode Statistics","id":"6ce18a43-2e6a-452e-a72d-1c56a58d3f81"}}},{"type":"Product Definition","name":"Episode Candle","config":"{\n \"codeName\": \"Episode-Candle\",\n \"singularVariableName\": \"episodeCandle\",\n \"pluralVariableName\": \"episodeCandles\",\n \"nodePath\": \"tradingEngine.current.episode.candle\",\n \"saveAtCycle\": \"Second\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"17fb41f5-61b5-4433-9a10-950ff8216a7e","savedPayload":{"position":{"x":27120.82771674843,"y":16488.505291249458},"targetPosition":{"x":27121.618228470954,"y":17274.83787109595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"bbc9467d-28bf-432b-9e49-582d1bcabfb9","savedPayload":{"position":{"x":27421.576620260028,"y":16548.07902241822},"targetPosition":{"x":27121.618228470954,"y":17274.83787109595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.candle\"\n}","id":"9ffe3183-b249-41b6-8e57-56b5d5023376","savedPayload":{"position":{"x":27356.391777049612,"y":15980.931516561252},"targetPosition":{"x":27656.71836750089,"y":16706.626516041088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.candle\"\n}","id":"b7b61cc0-b94d-40cb-abe1-047463675f5b","savedPayload":{"position":{"x":27657.01629856184,"y":15921.078307077458},"targetPosition":{"x":27656.71836750089,"y":16706.626516041088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Open","config":"{\n \"codeName\": \"open\",\n \"isString\": false\n}","id":"f93f3ac6-8420-401c-9921-2229d02f5832","savedPayload":{"position":{"x":27957.368816338374,"y":15980.72966928478},"targetPosition":{"x":27656.71836750089,"y":16706.626516041088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Close","config":"{\n \"codeName\": \"close\",\n \"isString\": false\n}","id":"86935367-3d64-4ad2-8171-be1368ca0a8d","savedPayload":{"position":{"x":28212.302900833296,"y":16150.510956477476},"targetPosition":{"x":27656.71836750089,"y":16706.626516041088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Min","config":"{\n \"codeName\": \"min\",\n \"isString\": false\n}","id":"e5bad869-4386-48a6-b434-36253eaf7f48","savedPayload":{"position":{"x":28361.885051463774,"y":16434.0180221974},"targetPosition":{"x":27656.71836750089,"y":16706.626516041088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Max","config":"{\n \"codeName\": \"max\",\n \"isString\": false\n}","id":"9c960e9d-7d1f-440b-9e5a-76e81f5a8e29","savedPayload":{"position":{"x":28442.600621762664,"y":16706.595715192576},"targetPosition":{"x":27656.71836750089,"y":16706.626516041088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Index","config":"{ \n\"codeName\": \"index\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"67d251d5-a236-42e7-8b34-4a5276e64d25","savedPayload":{"position":{"x":28383.323059190385,"y":17006.82616658312},"targetPosition":{"x":27656.71836750089,"y":16706.626516041088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d52a6d09-8b78-49db-a525-48a82991fcbc","savedPayload":{"position":{"x":27656.71836750089,"y":16706.626516041088},"targetPosition":{"x":27121.618228470954,"y":17274.83787109595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"b9a58113-cf27-4d57-9810-87a2cc158804","savedPayload":{"position":{"x":26676.698679980564,"y":17348.48402615499},"targetPosition":{"x":26867.82802316455,"y":17936.959577435533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Current Candle","id":"31789d43-d608-4eeb-a3ff-338a99074045"}}},{"type":"Product Definition","name":"Episode Balances","config":"{\n \"codeName\": \"Episode-Balances\",\n \"singularVariableName\": \"episodeBalance\",\n \"pluralVariableName\": \"episodeBalances\",\n \"nodePath\": \"tradingEngine.current.episode\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"acddff59-b51b-4b45-b58f-71d4077755ee","savedPayload":{"position":{"x":28020.994317510995,"y":15421.996222457128},"targetPosition":{"x":28062.221341901,"y":16574.689050008143},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"213b8fe8-f772-41ea-a3f5-97867be555f7","savedPayload":{"position":{"x":28464.941990695716,"y":15493.898400087128},"targetPosition":{"x":28062.221341901,"y":16574.689050008143},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"c9e3558a-d9e9-4466-97fb-c0e9ec3752c1","savedPayload":{"position":{"x":28324.231646292614,"y":14704.573393894158},"targetPosition":{"x":28848.11746606735,"y":15730.56839167112},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"bfb43790-48a8-4437-a191-9f4c396504fb","savedPayload":{"position":{"x":28707.004128445464,"y":14587.186543865724},"targetPosition":{"x":28848.11746606735,"y":15730.56839167112},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Balance Base Asset","config":"{ \n\"codeName\": \"balanceBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeBaseAsset\",\n \"childProperty\": \"balance\",\n \"decimals\": 10\n}","id":"7658d8bf-a4e0-490e-a3ae-df3bef72e491","savedPayload":{"position":{"x":29106.395371119845,"y":14607.876884576965},"targetPosition":{"x":28848.11746606735,"y":15730.56839167112},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Balance Quoted Asset","config":"{ \n\"codeName\": \"balanceQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeQuotedAsset\",\n \"childProperty\": \"balance\",\n \"decimals\": 10\n}","id":"1f5cf49c-7040-4cee-b525-83810013a4fb","savedPayload":{"position":{"x":29474.709681096014,"y":14763.927221314263},"targetPosition":{"x":28848.11746606735,"y":15730.56839167112},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Balance Base Asset","config":"{ \n\"codeName\": \"beginBalanceBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeBaseAsset\",\n \"childProperty\": \"beginBalance\",\n \"decimals\": 10\n}","id":"b2e41c55-b66c-4895-b2a8-82b9cf53bfa1","savedPayload":{"position":{"x":29767.55509761326,"y":15036.576607642482},"targetPosition":{"x":28848.11746606735,"y":15730.56839167112},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Balance Quoted Asset","config":"{ \n\"codeName\": \"beginBalanceQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeQuotedAsset\",\n \"childProperty\": \"beginBalance\",\n \"decimals\": 10\n}","id":"121b09db-2f3d-43c9-a271-e716a66f019b","savedPayload":{"position":{"x":29949.487646784946,"y":15392.942881928066},"targetPosition":{"x":28848.11746606735,"y":15730.56839167112},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Balance Base Asset","config":"{ \n\"codeName\": \"endBalanceBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeBaseAsset\",\n \"childProperty\": \"endBalance\",\n \"decimals\": 10\n}","id":"14f17c26-2832-4aa6-b39f-05acc8c3626f","savedPayload":{"position":{"x":29998.57086972508,"y":15789.730682300162},"targetPosition":{"x":28848.11746606735,"y":15730.56839167112},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Balance Quoted Asset","config":"{ \n\"codeName\": \"endBalanceQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeQuotedAsset\",\n \"childProperty\": \"endBalance\",\n \"decimals\": 10\n}","id":"b8d553ad-2dfb-4db7-b858-b086daeee2a6","savedPayload":{"position":{"x":29908.86132593459,"y":16179.681556954942},"targetPosition":{"x":28848.11746606735,"y":15730.56839167112},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0755daf6-8847-48c4-9013-394ddb96a89b","savedPayload":{"position":{"x":28848.11746606735,"y":15730.56839167112},"targetPosition":{"x":28062.221341901,"y":16574.689050008143},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"a9a53d82-133b-4417-b639-f9a56d338233","savedPayload":{"position":{"x":26889.342090391037,"y":17318.43941419161},"targetPosition":{"x":26867.82802316455,"y":17936.959577435533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Episode Balances","id":"e5d9e3e1-d1f4-4493-b452-33fe49c81228"}}},{"type":"Product Definition","name":"Distance To Event","config":"{\n \"codeName\": \"Distance-To-Event\",\n \"singularVariableName\": \"distanceToEvent\",\n \"pluralVariableName\": \"distanceToEvents\",\n \"nodePath\": \"tradingEngine.current.episode.distanceToEvent\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"0ef6aa1d-3345-40f8-bc4f-4d2e2ff199ff","savedPayload":{"position":{"x":28254.82052076284,"y":15484.882496418739},"targetPosition":{"x":28214.052149327243,"y":16637.59887107894},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"c291211b-4012-4440-a302-8e15412b0990","savedPayload":{"position":{"x":28692.784024958244,"y":15588.251904828881},"targetPosition":{"x":28214.052149327243,"y":16637.59887107894},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"0235ad32-fd46-41eb-b875-ae81f3ce48c5","savedPayload":{"position":{"x":28518.129547122615,"y":14834.065580303386},"targetPosition":{"x":29058.177200648992,"y":15851.68444622925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"9d6c01fa-af2b-4d51-9aa4-f169c53e63b3","savedPayload":{"position":{"x":28800.02555237096,"y":14728.909490103391},"targetPosition":{"x":29058.177200648992,"y":15851.68444622925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Trigger On","config":"{ \n\"codeName\": \"triggerOn\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"7e17fb3f-495f-49c5-9b41-6869155b99fc","savedPayload":{"position":{"x":29099.22798799504,"y":14700.327847735296},"targetPosition":{"x":29058.177200648992,"y":15851.68444622925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Trigger Off","config":"{ \n\"codeName\": \"triggerOff\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"9de32719-925a-4796-b562-379323cb4d82","savedPayload":{"position":{"x":29395.796804780453,"y":14750.219727593221},"targetPosition":{"x":29058.177200648992,"y":15851.68444622925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Take Position","config":"{ \n\"codeName\": \"takePosition\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"e4276497-b218-4b18-b089-70fcc5806fa3","savedPayload":{"position":{"x":29669.39056860164,"y":14875.171227753346},"targetPosition":{"x":29058.177200648992,"y":15851.68444622925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Close Position","config":"{ \n\"codeName\": \"closePosition\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"4793082b-ddc8-4246-bb0e-c7f6340da600","savedPayload":{"position":{"x":29901.325158905744,"y":15066.67304337852},"targetPosition":{"x":29058.177200648992,"y":15851.68444622925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Next Phase","config":"{ \n\"codeName\": \"nextPhase\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"0ada00bc-9398-47a0-9659-63b0838b81d7","savedPayload":{"position":{"x":30075.79402655084,"y":15311.676746432187},"targetPosition":{"x":29058.177200648992,"y":15851.68444622925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Move To Phase","config":"{ \n\"codeName\": \"moveToPhase\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"9020e64b-d301-49f6-bc6c-cb8086730b19","savedPayload":{"position":{"x":30180.90674330942,"y":15593.48909727978},"targetPosition":{"x":29058.177200648992,"y":15851.68444622925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Create Order","config":"{ \n\"codeName\": \"createOrder\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"906c1925-caab-4db6-8fec-06845a13fd0a","savedPayload":{"position":{"x":30209.501996259343,"y":15892.593610028978},"targetPosition":{"x":29058.177200648992,"y":15851.68444622925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Cancel Order","config":"{ \n\"codeName\": \"cancelOrder\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"e864d723-5ad5-4bbd-ad7b-0f975d480ee3","savedPayload":{"position":{"x":30159.615762215828,"y":16189.209877319612},"targetPosition":{"x":29058.177200648992,"y":15851.68444622925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Close Order","config":"{ \n\"codeName\": \"closeOrder\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"f5be374b-36e6-484c-bd78-6e126e3020fb","savedPayload":{"position":{"x":30034.623463438296,"y":16462.85809675274},"targetPosition":{"x":29058.177200648992,"y":15851.68444622925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0c3c5d0b-6072-4e57-bff9-9823e0f79b5b","savedPayload":{"position":{"x":29058.177200648992,"y":15851.68444622925},"targetPosition":{"x":28214.052149327243,"y":16637.59887107894},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"8ea88d6c-7d7f-4152-b781-ea108df52c63","savedPayload":{"position":{"x":27099.615736570697,"y":17363.220028605432},"targetPosition":{"x":26867.82802316455,"y":17936.959577435533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Distance To Event","id":"56eb7de2-0281-404a-bd4d-34ac113e2325"}}},{"type":"Product Definition","name":"Episode Base Asset","config":"{\n \"codeName\": \"Episode-BaseAsset\",\n \"singularVariableName\": \"episodeBaseAsset\",\n \"pluralVariableName\": \"episodeBaseAssets\",\n \"nodePath\": \"tradingEngine.current.episode.episodeBaseAsset\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"e8b67591-d484-4c08-a711-7a4418ee101a","savedPayload":{"position":{"x":29796.836325263124,"y":20987.845006100266},"targetPosition":{"x":28765.36697560849,"y":20471.84052924952},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"c6f34adc-2863-4ce6-8379-9b3cc1b37b73","savedPayload":{"position":{"x":29520.836202296246,"y":21343.29213732098},"targetPosition":{"x":28765.36697560849,"y":20471.84052924952},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"2d706d6c-f204-4209-bda6-20f6bccef1fb","savedPayload":{"position":{"x":30281.3541426663,"y":21558.13376508232},"targetPosition":{"x":29129.376282503963,"y":21566.228443141204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"45aadf3c-c609-42fc-95dd-400968a950dd","savedPayload":{"position":{"x":30227.49904550322,"y":21914.288407562126},"targetPosition":{"x":29129.376282503963,"y":21566.228443141204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hits","config":"{\n \"codeName\": \"hits\",\n \"isString\": false\n}","id":"16a724af-e57e-4e5b-9f8f-597ade0521d8","savedPayload":{"position":{"x":30066.130757865096,"y":22236.627377486406},"targetPosition":{"x":29129.376282503963,"y":21566.228443141204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fails","config":"{\n \"codeName\": \"fails\",\n \"isString\": false\n}","id":"94c63c77-f7e4-4d15-bb6c-6b49bb600b10","savedPayload":{"position":{"x":29813.059839295864,"y":22493.317680363227},"targetPosition":{"x":29129.376282503963,"y":21566.228443141204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hit Ratio","config":"{\n \"codeName\": \"hitRatio\",\n \"isString\": false,\n \"decimals\": 2\n}","id":"0b91b798-b30f-46f5-935b-1e4dac8dfee0","savedPayload":{"position":{"x":29493.056654813558,"y":22659.251779228212},"targetPosition":{"x":29129.376282503963,"y":21566.228443141204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ROI","config":"{\n \"codeName\": \"ROI\",\n \"isString\": false,\n \"decimals\": 2\n}","id":"db2cd2b2-5c5f-4eef-874a-201059d80ea0","savedPayload":{"position":{"x":29137.437301849048,"y":22718.18223236646},"targetPosition":{"x":29129.376282503963,"y":21566.228443141204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Profit Loss","config":"{ \n\"codeName\": \"profitLoss\",\n\"isString\": false,\n\"isCalculated\": false,\n \"decimals\": 2\n}","id":"c4bb2bd0-02a8-47de-9fa8-c2b87776e36f","savedPayload":{"position":{"x":28781.329410885286,"y":22664.341396927965},"targetPosition":{"x":29129.376282503963,"y":21566.228443141204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Annualized Rate Of Return","config":"{ \n\"codeName\": \"annualizedRateOfReturn\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"432a1f4e-283a-4276-b436-42ef167dd9e7","savedPayload":{"position":{"x":28458.9862886423,"y":22502.998205869837},"targetPosition":{"x":29129.376282503963,"y":21566.228443141204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hit Fail","config":"{ \n\"codeName\": \"hitFail\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"08161b1c-ad52-4c01-88b1-8cd8ed077b6b","savedPayload":{"position":{"x":28202.270190360527,"y":22249.900230794774},"targetPosition":{"x":29129.376282503963,"y":21566.228443141204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e2ea652a-5508-4eef-998a-8cb0b2fac0a7","savedPayload":{"position":{"x":29129.376282503963,"y":21566.228443141204},"targetPosition":{"x":28765.36697560849,"y":20471.84052924952},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"234969ff-eab1-4d59-b6fa-79433c9a20e9","savedPayload":{"position":{"x":27281.768010358748,"y":17477.27259323605},"targetPosition":{"x":26867.82802316455,"y":17936.959577435533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Episode Base Asset","id":"a99b25e6-7aca-41a2-aacc-1911aac2ee3e"}}},{"type":"Product Definition","name":"Episode Quoted Asset","config":"{\n \"codeName\": \"Episode-QuotedAsset\",\n \"singularVariableName\": \"episodeQuotedAsset\",\n \"pluralVariableName\": \"episodeQuotedAssets\",\n \"nodePath\": \"tradingEngine.current.episode.episodeQuotedAsset\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"99d1f17b-92cb-4544-88a2-fe463dd1de4b","savedPayload":{"position":{"x":29629.264721214608,"y":21163.04908339905},"targetPosition":{"x":28637.225232905243,"y":20574.751974361756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"daf4e3e9-426d-44c3-8b43-6849778d972f","savedPayload":{"position":{"x":29328.59961349503,"y":21497.908179120393},"targetPosition":{"x":28637.225232905243,"y":20574.751974361756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"408f6716-f1a1-4f7f-924c-c5c0d9bb814d","savedPayload":{"position":{"x":30071.957165565265,"y":21766.061905781095},"targetPosition":{"x":28922.247458832422,"y":21692.253873817655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"b07f31ed-986d-4b45-bd05-017e3d9268bd","savedPayload":{"position":{"x":29992.795774013295,"y":22117.796851534335},"targetPosition":{"x":28922.247458832422,"y":21692.253873817655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hits","config":"{\n \"codeName\": \"hits\",\n \"isString\": false\n}","id":"709ed8fc-94d8-4f8c-977a-fa865c43a83e","savedPayload":{"position":{"x":29808.834329695223,"y":22427.817182544215},"targetPosition":{"x":28922.247458832422,"y":21692.253873817655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fails","config":"{\n \"codeName\": \"fails\",\n \"isString\": false\n}","id":"d874a492-fb07-4704-8589-73f864040da9","savedPayload":{"position":{"x":29538.08037813755,"y":22665.818579950323},"targetPosition":{"x":28922.247458832422,"y":21692.253873817655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hit Ratio","config":"{\n \"codeName\": \"hitRatio\",\n \"isString\": false,\n \"decimals\": 2\n}","id":"4ad7e208-1cfb-402d-89d6-3ca98832f2f9","savedPayload":{"position":{"x":29207.0354395992,"y":22808.50964327849},"targetPosition":{"x":28922.247458832422,"y":21692.253873817655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ROI","config":"{\n \"codeName\": \"ROI\",\n \"isString\": false,\n \"decimals\": 2\n}","id":"02d21bbe-a2b9-4d61-9ee6-243f21208c9f","savedPayload":{"position":{"x":28848.407154054992,"y":22841.923880908136},"targetPosition":{"x":28922.247458832422,"y":21692.253873817655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Profit Loss","config":"{ \n\"codeName\": \"profitLoss\",\n\"isString\": false,\n\"isCalculated\": false,\n \"decimals\": 2\n}","id":"d78850bc-4017-4a14-b7a2-4efb03156596","savedPayload":{"position":{"x":28496.75681391476,"y":22762.81177518772},"targetPosition":{"x":28922.247458832422,"y":21692.253873817655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Annualized Rate Of Return","config":"{ \n\"codeName\": \"annualizedRateOfReturn\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"51e1f4b1-fe6a-4125-ae19-a34859928ab0","savedPayload":{"position":{"x":28186.6832222808,"y":22578.858405130042},"targetPosition":{"x":28922.247458832422,"y":21692.253873817655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hit Fail","config":"{ \n\"codeName\": \"hitFail\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"cb125657-fff3-49bc-99d5-393d2baaec15","savedPayload":{"position":{"x":27948.636489074095,"y":22308.030109456584},"targetPosition":{"x":28922.247458832422,"y":21692.253873817655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e5dde8e0-9f3d-4d58-878b-316e2888384f","savedPayload":{"position":{"x":28922.247458832422,"y":21692.253873817655},"targetPosition":{"x":28637.225232905243,"y":20574.751974361756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"ae525e31-d6a8-47d2-9021-3f2ddb9615b0","savedPayload":{"position":{"x":27414.143949852478,"y":17646.56714097845},"targetPosition":{"x":26867.82802316455,"y":17936.959577435533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Episode Quoted Asset","id":"ede92318-db13-4951-83b1-11fc0345d677"}}},{"type":"Product Definition","name":"Current Episode","config":"{\n \"codeName\": \"Current-Episode\",\n \"singularVariableName\": \"currentEpisode\",\n \"pluralVariableName\": \"currentEpisodes\",\n \"nodePath\": \"tradingEngine.current.episode\",\n \"saveAtCycle\": \"Second\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"26f6b248-21de-4898-9ee5-58b728a04267","savedPayload":{"position":{"x":28636.881714325653,"y":21218.878027015508},"targetPosition":{"x":28214.01249761389,"y":20825.902706851506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"ecdfe444-00e6-4ad4-a482-14b59a1e752a","savedPayload":{"position":{"x":28453.965238976227,"y":21350.87641182198},"targetPosition":{"x":28214.01249761389,"y":20825.902706851506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Serial Number","config":"{\n \"codeName\": \"serialNumber\",\n \"isString\": false\n}","id":"fb250d69-0a1d-44db-a823-6ce600fabc5c","savedPayload":{"position":{"x":28796.969517898622,"y":21531.866574281703},"targetPosition":{"x":28234.236843577957,"y":21402.696583770197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Identifier","config":"{\n \"codeName\": \"identifier\",\n \"isString\": true\n}","id":"1e3e49d8-8494-474c-85df-93d080271a32","savedPayload":{"position":{"x":28744.230141695272,"y":21673.31106177625},"targetPosition":{"x":28234.236843577957,"y":21402.696583770197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.candle\"\n}","id":"8da52905-c159-42b2-81eb-bcdb0e82213c","savedPayload":{"position":{"x":28656.758415405653,"y":21796.12291602053},"targetPosition":{"x":28234.236843577957,"y":21402.696583770197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.candle\"\n}","id":"3fb36608-3225-4e84-9e7c-deb0cd4e0c90","savedPayload":{"position":{"x":28540.50274564666,"y":21892.09243613496},"targetPosition":{"x":28234.236843577957,"y":21402.696583770197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"dc27dfcd-81f7-4796-94bf-9552681c5781","savedPayload":{"position":{"x":28403.377981258043,"y":21954.702499448977},"targetPosition":{"x":28234.236843577957,"y":21402.696583770197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"f2738fa9-e225-49ba-adce-8e3f5490ae79","savedPayload":{"position":{"x":28254.724033144696,"y":21979.691477239045},"targetPosition":{"x":28234.236843577957,"y":21402.696583770197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Rate","config":"{ \n\"codeName\": \"beginRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"0bfb640f-7160-4f9f-9a37-a93ad21ac304","savedPayload":{"position":{"x":28104.869699159855,"y":21965.356420717268},"targetPosition":{"x":28234.236843577957,"y":21402.696583770197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Rate","config":"{ \n\"codeName\": \"endRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"66977e9f-19c3-445e-baec-72fd24bcfd4f","savedPayload":{"position":{"x":27963.63677600308,"y":21912.673034702948},"targetPosition":{"x":28234.236843577957,"y":21402.696583770197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Cycle","config":"{ \n\"codeName\": \"cycle\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"2e9b2ae9-fa39-4767-8f15-918680491022","savedPayload":{"position":{"x":27840.848127182602,"y":21825.22524859876},"targetPosition":{"x":28234.236843577957,"y":21402.696583770197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Head Of The Market","config":"{ \n\"codeName\": \"headOfTheMarket\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"87f75619-ada5-4a35-851c-901776e8dd53","savedPayload":{"position":{"x":27744.872722059845,"y":21708.94124428401},"targetPosition":{"x":28234.236843577957,"y":21402.696583770197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Process Date","config":"{ \n\"codeName\": \"processDate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"aa739894-963f-4535-b4c4-d057e185ad9c","savedPayload":{"position":{"x":27682.232283756326,"y":21571.577641651013},"targetPosition":{"x":28234.236843577957,"y":21402.696583770197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"973a9bbe-dcc2-4df3-acef-63999441e21f","savedPayload":{"position":{"x":28234.236843577957,"y":21402.696583770197},"targetPosition":{"x":28214.01249761389,"y":20825.902706851506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"b8da0132-ba28-46ec-aa54-eb9eaac56ce7","savedPayload":{"position":{"x":27480.75194523359,"y":17851.013849862105},"targetPosition":{"x":26867.82802316455,"y":17936.959577435533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Current Episode","id":"bf241117-1c2c-470c-a172-b86b2befa9a2"}}}],"productDefinitionFolders":[],"id":"6e3006f3-06dc-4cc6-a8fc-51f0e99ca9eb","savedPayload":{"position":{"x":26206.38350394817,"y":18192.02251470519},"targetPosition":{"x":26117.30196400881,"y":18609.762568861108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition Folder","name":"Strategy","products":[{"type":"Product Definition","name":"Current Strategy","config":"{\n \"codeName\": \"Current-Strategy\",\n \"singularVariableName\": \"currentStrategy\",\n \"pluralVariableName\": \"currentStrategies\",\n \"nodePath\": \"tradingEngine.current.strategy\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"7b4550d3-69d1-41ac-bad3-e2283f798bb8","savedPayload":{"position":{"x":28483.893925541794,"y":15564.29815265888},"targetPosition":{"x":28360.992852032563,"y":16711.171284485146},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"49d55660-71e9-4c5a-8b1a-198934844e4a","savedPayload":{"position":{"x":28913.35582075727,"y":15698.638728012102},"targetPosition":{"x":28360.992852032563,"y":16711.171284485146},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Serial Number","config":"{\n \"codeName\": \"serialNumber\",\n \"isString\": false\n}","id":"3808ed7c-4ae4-4ad8-8ea8-237ee2f8cc8c","savedPayload":{"position":{"x":28771.87604305041,"y":14943.489212264782},"targetPosition":{"x":29259.09408728831,"y":15987.49040131797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Identifier","config":"{\n \"codeName\": \"identifier\",\n \"isString\": true\n}","id":"c8b93e25-fe0e-450a-bcc7-262a06936372","savedPayload":{"position":{"x":29035.97878137679,"y":14857.184299635202},"targetPosition":{"x":29259.09408728831,"y":15987.49040131797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"702327c6-5dfe-4ab0-bce1-750637a4b863","savedPayload":{"position":{"x":29312.64147770546,"y":14836.5912754217},"targetPosition":{"x":29259.09408728831,"y":15987.49040131797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"a152bb71-b294-48e7-bf9c-9be7510c8461","savedPayload":{"position":{"x":29586.63973298919,"y":14882.9169352175},"targetPosition":{"x":29259.09408728831,"y":15987.49040131797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Strategy Name","config":"{ \n\"codeName\": \"strategyName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"35b9d166-f366-4601-a472-5e8d74be8f82","savedPayload":{"position":{"x":29841.503828552453,"y":14993.47576923262},"targetPosition":{"x":29259.09408728831,"y":15987.49040131797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Index","config":"{ \n\"codeName\": \"index\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"dcdb4018-97ea-4bb8-9e55-5efa00ab8404","savedPayload":{"position":{"x":30062.43557396136,"y":15161.743595832275},"targetPosition":{"x":29259.09408728831,"y":15987.49040131797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"c2ac38c8-3bc5-4359-8f92-510263b841d1","savedPayload":{"position":{"x":30236.722937246665,"y":15378.021309781998},"targetPosition":{"x":29259.09408728831,"y":15987.49040131797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Rate","config":"{ \n\"codeName\": \"beginRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"1ae37227-35b8-4abc-a42b-aa0c42fa9fc2","savedPayload":{"position":{"x":30354.18937106148,"y":15629.72788449778},"targetPosition":{"x":29259.09408728831,"y":15987.49040131797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Rate","config":"{ \n\"codeName\": \"endRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"288b5fed-0d4b-4b85-9cb5-802c2ff30ca7","savedPayload":{"position":{"x":30408.008133761967,"y":15902.22956042006},"targetPosition":{"x":29259.09408728831,"y":15987.49040131797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Situation Name","config":"{ \n\"codeName\": \"situationName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"3802817a-f022-4762-9ff4-412d42f22316","savedPayload":{"position":{"x":30395.04623819433,"y":16179.386121032965},"targetPosition":{"x":29259.09408728831,"y":15987.49040131797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"97832d1b-40b4-4fc3-9e52-ec3beacf164e","savedPayload":{"position":{"x":30316.050485801563,"y":16445.69262122975},"targetPosition":{"x":29259.09408728831,"y":15987.49040131797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Periods","config":"{ \n\"codeName\": \"periods\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.strategy.strategyCounters\"\n}","id":"d219dca7-ae8f-422d-a90a-f86b617a76e2","savedPayload":{"position":{"x":30175.5615812986,"y":16685.411352264444},"targetPosition":{"x":29259.09408728831,"y":15987.49040131797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a4bce1f3-c9cc-470d-b271-1190684aff6f","savedPayload":{"position":{"x":29259.09408728831,"y":15987.49040131797},"targetPosition":{"x":28360.992852032563,"y":16711.171284485146},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"895d8a04-ef45-41a7-909a-ba31013ffb90","savedPayload":{"position":{"x":27276.854786256,"y":17473.854400213804},"targetPosition":{"x":27148.18151445258,"y":18079.147075359982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Current Strategy","id":"a3c31000-1b82-4fe9-ae56-6d5893582b16"}}},{"type":"Product Definition","name":"Last Strategy","config":"{\n \"codeName\": \"Last-Strategy\",\n \"singularVariableName\": \"lastStrategy\",\n \"pluralVariableName\": \"lastStrategies\",\n \"nodePath\": \"tradingEngine.last.strategy\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"a2e7b5d2-8556-4c58-b2f6-a9c27c939e94","savedPayload":{"position":{"x":28706.768549340595,"y":15659.884813665283},"targetPosition":{"x":28502.359816584543,"y":16795.047357180894},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"76ff2401-1d4f-4dda-87f6-5e0b7af3eab2","savedPayload":{"position":{"x":29125.547760108428,"y":15824.517248878165},"targetPosition":{"x":28502.359816584543,"y":16795.047357180894},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Serial Number","config":"{\n \"codeName\": \"serialNumber\",\n \"isString\": false\n}","id":"02e1c6bb-e984-4104-98c8-dbcba98ab660","savedPayload":{"position":{"x":29038.22891013171,"y":15061.247221857066},"targetPosition":{"x":29449.706770062945,"y":16137.321510542395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Identifier","config":"{\n \"codeName\": \"identifier\",\n \"isString\": true\n}","id":"0fbc8383-f53b-42c2-ac1a-060f6bc80c5c","savedPayload":{"position":{"x":29307.824790308692,"y":14994.005392528992},"targetPosition":{"x":29449.706770062945,"y":16137.321510542395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"5785bb06-20d0-4683-b5d3-3cce32ddf13f","savedPayload":{"position":{"x":29585.224629435965,"y":14993.223251740697},"targetPosition":{"x":29449.706770062945,"y":16137.321510542395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"cca74655-a684-4b14-a70b-63a95f520418","savedPayload":{"position":{"x":29855.195887057955,"y":15058.964439179768},"targetPosition":{"x":29449.706770062945,"y":16137.321510542395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Strategy Name","config":"{ \n\"codeName\": \"strategyName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"10192034-747b-49ed-ba2b-a645da326297","savedPayload":{"position":{"x":30101.564350531833,"y":15187.441930183562},"targetPosition":{"x":29449.706770062945,"y":16137.321510542395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Index","config":"{ \n\"codeName\": \"index\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"5cc8df5d-637c-4059-88ca-b30193db45cd","savedPayload":{"position":{"x":30309.90500911813,"y":15371.026504090338},"targetPosition":{"x":29449.706770062945,"y":16137.321510542395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"e44d0b8d-1bd1-457b-b3ec-efafe83135e2","savedPayload":{"position":{"x":30468.314894316474,"y":15599.184346413402},"targetPosition":{"x":29449.706770062945,"y":16137.321510542395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Rate","config":"{ \n\"codeName\": \"beginRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"c1181965-30d7-455c-84f8-b59a10b17292","savedPayload":{"position":{"x":30567.526017973578,"y":15858.62202912701},"targetPosition":{"x":29449.706770062945,"y":16137.321510542395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Rate","config":"{ \n\"codeName\": \"endRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"f233bd2e-9c8a-415c-b348-890e2b8c835b","savedPayload":{"position":{"x":30601.76283969543,"y":16134.266834953964},"targetPosition":{"x":29449.706770062945,"y":16137.321510542395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Situation Name","config":"{ \n\"codeName\": \"situationName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"09b0f818-5159-433b-8eae-f0209351e6b3","savedPayload":{"position":{"x":30569.04247426365,"y":16409.782004635366},"targetPosition":{"x":29449.706770062945,"y":16137.321510542395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"8cfbc9c3-071f-43d0-b245-4c0278f975c0","savedPayload":{"position":{"x":30471.250340799204,"y":16669.770044241155},"targetPosition":{"x":29449.706770062945,"y":16137.321510542395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Periods","config":"{ \n\"codeName\": \"periods\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.strategy.strategyCounters\"\n}","id":"bb8b605d-bf3a-4408-a147-f316bdee7df7","savedPayload":{"position":{"x":30314.019846146242,"y":16898.848266013305},"targetPosition":{"x":29449.706770062945,"y":16137.321510542395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"325b09da-1fc2-43bc-a59d-381c30a4ba1d","savedPayload":{"position":{"x":29449.706770062945,"y":16137.321510542395},"targetPosition":{"x":28502.359816584543,"y":16795.047357180894},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"0625f524-2b97-4b4d-8a90-590ffc62ecd3","savedPayload":{"position":{"x":27736.344382598472,"y":17888.125482342708},"targetPosition":{"x":27148.18151445258,"y":18079.147075359982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Last Strategy","id":"028aaa23-630c-4aa6-a168-6b2a128b1a83"}}}],"productDefinitionFolders":[],"id":"bb870967-9e1d-44a9-9bbc-68e6c024a3c3","savedPayload":{"position":{"x":26404.855005516347,"y":18291.08431918333},"targetPosition":{"x":26117.30196400881,"y":18609.762568861108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition Folder","name":"Position","products":[{"type":"Product Definition","name":"Current Position","config":"{\n \"codeName\": \"Current-Position\",\n \"singularVariableName\": \"currentPosition\",\n \"pluralVariableName\": \"currentPositions\",\n \"nodePath\": \"tradingEngine.current.position\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"7506dd91-ad9d-4aad-bb1a-604bc5d3fe8d","savedPayload":{"position":{"x":28920.38397033583,"y":15773.700767216606},"targetPosition":{"x":28635.443130297128,"y":16891.31721352908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"06678152-1082-4f00-9275-22ffde715469","savedPayload":{"position":{"x":29326.455607030322,"y":15968.061023590213},"targetPosition":{"x":28635.443130297128,"y":16891.31721352908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Serial Number","config":"{\n \"codeName\": \"serialNumber\",\n \"isString\": false\n}","id":"6e9bd403-9341-4573-9509-39592db0f4ae","savedPayload":{"position":{"x":29620.408196727858,"y":13644.031782697148},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Identifier","config":"{\n \"codeName\": \"identifier\",\n \"isString\": true\n}","id":"e9f969f0-20f4-4d61-870b-2997e715c706","savedPayload":{"position":{"x":29804.962720753545,"y":13564.968891336272},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"c9761b5c-3714-4253-9906-873e8933e698","savedPayload":{"position":{"x":29995.55030574595,"y":13502.316118420415},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"e0d6465b-de24-4ce2-9cc3-b7e3e563d4d7","savedPayload":{"position":{"x":30190.839819171135,"y":13456.390524883504},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"1b892131-86ea-4264-bfae-3eae52374803","savedPayload":{"position":{"x":30389.363309753626,"y":13427.721671246649},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"f7d48869-1ac5-4e6c-9f73-52112cf5a9c8","savedPayload":{"position":{"x":30589.614482773217,"y":13416.540419778452},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Rate","config":"{ \n\"codeName\": \"beginRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"08064bc3-d662-46d7-a9ac-da517de9f0f3","savedPayload":{"position":{"x":30789.7690475807,"y":13422.931825582276},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Rate","config":"{ \n\"codeName\": \"endRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"07748c3d-c020-4734-b505-38ceeb96ddc2","savedPayload":{"position":{"x":30988.90612150925,"y":13446.847224144478},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Situation Name","config":"{ \n\"codeName\": \"situationName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"5f987e27-560f-485d-b832-46025f14f446","savedPayload":{"position":{"x":31185.209937588224,"y":13488.104037989648},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Periods","config":"{ \n\"codeName\": \"periods\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionCounters\"\n}","id":"c00c9780-7a99-40fe-8563-9ef38089edae","savedPayload":{"position":{"x":31377.186050642533,"y":13546.212636744314},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 1","config":"{ \n\"codeName\": \"userDefinedStatistic1\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 0\n}","id":"90759217-f2a3-4203-8249-35c703108863","savedPayload":{"position":{"x":31563.373528197204,"y":13620.765676304429},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 2","config":"{ \n\"codeName\": \"userDefinedStatistic2\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 1\n}","id":"905584a9-29a2-4e59-be9d-7859ada74e43","savedPayload":{"position":{"x":31742.3556574182,"y":13711.251344465052},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 3","config":"{ \n\"codeName\": \"userDefinedStatistic3\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 2\n}","id":"a85c3f00-4b38-430d-a911-b404de9c2ce3","savedPayload":{"position":{"x":31912.745497292202,"y":13816.974112477068},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Stop Loss","config":"{\n \"codeName\": \"stopLoss\",\n \"isString\": false\n}","id":"9aadbadf-d791-4407-bb2e-39f1160ec4a3","savedPayload":{"position":{"x":32073.313813518213,"y":13937.175661824036},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Stop Loss Phase","config":"{\n \"codeName\": \"stopLossPhase\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.position.stopLoss\"\n}","id":"b6736f8c-0a25-4f37-b8a6-e89d9e1da23f","savedPayload":{"position":{"x":32222.56339119105,"y":14070.663543206045},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Take Profit","config":"{\n \"codeName\": \"takeProfit\",\n \"isString\": false\n}","id":"17af9724-48c7-46f7-8338-bfe189768f8b","savedPayload":{"position":{"x":32360.004116122247,"y":14217.118315982234},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Take Profit Phase","config":"{\n \"codeName\": \"takeProfitPhase\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.position.takeProfit\"\n}","id":"be62b154-fcd4-4e9f-8dc7-dc8b6f0861d4","savedPayload":{"position":{"x":32484.078714835003,"y":14374.848288612375},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Profit Loss In Base Asset","config":"{ \n\"codeName\": \"profitLossInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionBaseAsset\",\n \"childProperty\": \"profitLoss\",\n \"decimals\": 10\n}","id":"3c081ea4-6bcb-4ba2-8e3e-2f572b428003","savedPayload":{"position":{"x":32593.8036062155,"y":14542.758824709794},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Profit Loss In Quoted Asset","config":"{ \n\"codeName\": \"profitLossInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionQuotedAsset\",\n \"childProperty\": \"profitLoss\",\n \"decimals\": 10\n}","id":"1b65da38-1f4b-4c28-81bb-38e95fed5a3d","savedPayload":{"position":{"x":32688.40445308481,"y":14719.320625431477},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ROI In Base Asset","config":"{ \n\"codeName\": \"ROIInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionBaseAsset\",\n \"childProperty\": \"ROI\",\n \"decimals\": 10\n}","id":"9705d87a-bc3a-473e-b205-4eefcbbeeb21","savedPayload":{"position":{"x":32767.365215294074,"y":14903.673114506939},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ROI In Quoted Asset","config":"{ \n\"codeName\": \"ROIInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionQuotedAsset\",\n \"childProperty\": \"ROI\",\n \"decimals\": 10\n}","id":"3fdcd35b-a08a-4d68-bcbd-f547b8265203","savedPayload":{"position":{"x":32830.000984921106,"y":15094.21046326822},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hit Fail In Base Asset","config":"{ \n\"codeName\": \"hitFailInBaseAsset\",\n\"isString\": true,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionBaseAsset\",\n \"childProperty\": \"hitFail\"\n}","id":"14d4fbc8-7b1b-4b27-a9ed-c4c5601116d8","savedPayload":{"position":{"x":32875.923009544975,"y":15289.477893642335},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hit Fail In Quoted Asset","config":"{ \n\"codeName\": \"hitFailInQuotedAsset\",\n\"isString\": true,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionQuotedAsset\",\n \"childProperty\": \"hitFail\"\n}","id":"2ba0cad6-6f43-4fb3-9dfb-8ad67e0c8a09","savedPayload":{"position":{"x":32904.59170585816,"y":15487.989256635577},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Stop Loss Position","config":"{\n \"codeName\": \"stopLossPosition\",\n \"isString\": true,\n \"nodePath\": \"tradingEngine.current.position.stopLoss\"\n}","id":"709bf663-255a-48b6-b96e-875b8b44b574","savedPayload":{"position":{"x":32915.77287990493,"y":15688.192199952256},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Take Profit Position","config":"{\n \"codeName\": \"takeProfitPosition\",\n \"isString\": true,\n \"nodePath\": \"tradingEngine.current.position.takeProfit\"\n}","id":"8780b7ac-5065-491e-b8f4-9c8f62b20f43","savedPayload":{"position":{"x":32909.381435605275,"y":15888.382992871899},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Entry Target Size In Base Asset","config":"{ \n\"codeName\": \"entryTargetSizeInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionBaseAsset\",\n \"childProperty\": \"entryTargetSize\",\n \"decimals\": 10\n}","id":"7a3cc7f2-ecf2-4f50-968a-ca27117b4bac","savedPayload":{"position":{"x":32885.46601809672,"y":16087.517843422698},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Entry Target Size In Quoted Asset","config":"{ \n\"codeName\": \"entryTargetSizeInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionQuotedAsset\",\n \"childProperty\": \"entryTargetSize\",\n \"decimals\": 10\n}","id":"cfa55f9f-0792-4a1d-8bbd-5350864e8a61","savedPayload":{"position":{"x":32844.20863417073,"y":16283.820362300668},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Target Size In Base Asset","config":"{ \n\"codeName\": \"exitTargetSizeInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionBaseAsset\",\n \"childProperty\": \"exitTargetSize\",\n \"decimals\": 10\n}","id":"8172e284-94fd-4dc4-8591-53a2c5ca475a","savedPayload":{"position":{"x":32786.09960547307,"y":16475.796925318686},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Target Size In Quoted Asset","config":"{ \n\"codeName\": \"exitTargetSizeInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionQuotedAsset\",\n \"childProperty\": \"exitTargetSize\",\n \"decimals\": 10\n}","id":"0d0bdeba-f4d9-4de7-81d0-b4aa3bb9ec6b","savedPayload":{"position":{"x":32711.561879425724,"y":16661.985621000855},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Entry Target Rate","config":"{ \n\"codeName\": \"entryTargetRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"f03c45fb-c2ca-4294-abce-650cf8656471","savedPayload":{"position":{"x":32621.08027906041,"y":16840.970039391435},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Target Rate","config":"{ \n\"codeName\": \"exitTargetRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"472bf4ef-2e4f-4aa9-a054-ed458249032d","savedPayload":{"position":{"x":32515.34133545218,"y":17011.388291009596},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Statistics Profit Loss","config":"{ \n\"codeName\": \"profitLoss\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionStatistics\",\n \"decimals\": 10\n}","id":"2ab54033-cbad-4618-9681-e8ae36c1ace5","savedPayload":{"position":{"x":32395.148295977197,"y":17171.944507336277},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Statistics ROI","config":"{ \n\"codeName\": \"ROI\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionStatistics\",\n \"decimals\": 10\n}","id":"a0778ae5-4242-4a8e-8ebc-6af71dad5c58","savedPayload":{"position":{"x":32261.410996861454,"y":17321.419507109083},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Statistics Hit Fail","config":"{ \n\"codeName\": \"hitFail\",\n\"isString\": true,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionStatistics\"\n}","id":"e87e024f-3726-4d08-a890-829b44616eeb","savedPayload":{"position":{"x":32115.130280582445,"y":17458.686228528553},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Statistics Days","config":"{ \n\"codeName\": \"days\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionStatistics\",\n \"decimals\": 2\n}","id":"d6e98d71-15ee-4e22-b18c-b154b1ecec52","savedPayload":{"position":{"x":31957.30606208534,"y":17582.77855827578},"targetPosition":{"x":30616.825604367226,"y":15715.483704296203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a35249e0-a2dc-43b0-bb8c-ebd6265e13c2","savedPayload":{"position":{"x":30616.825604367226,"y":15715.483704296203},"targetPosition":{"x":28635.443130297128,"y":16891.31721352908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"832ecada-8da3-4ba6-b6e9-be34dd5f7ce9","savedPayload":{"position":{"x":26790.35218506023,"y":18183.310701050978},"targetPosition":{"x":26525.276634659083,"y":18477.58369705319},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Current Position","id":"0d2212c7-07bb-4c41-94fb-00844415ba5e"}}},{"type":"Product Definition","name":"Last Position","config":"{\n \"codeName\": \"Last-Position\",\n \"singularVariableName\": \"lastPosition\",\n \"pluralVariableName\": \"lastPositions\",\n \"nodePath\": \"tradingEngine.last.position\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"485671ff-0d50-4c08-958c-93e657cd238f","savedPayload":{"position":{"x":29127.268382697177,"y":15899.07114065449},"targetPosition":{"x":28763.65938965686,"y":16993.704098552724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"a909df42-6192-4bbd-9f38-e8800149aaa1","savedPayload":{"position":{"x":29518.15809270383,"y":16121.267074375066},"targetPosition":{"x":28763.65938965686,"y":16993.704098552724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Serial Number","config":"{\n \"codeName\": \"serialNumber\",\n \"isString\": false\n}","id":"a616f774-00d3-475e-b0b6-631a93777573","savedPayload":{"position":{"x":29363.416758897965,"y":15408.87482886776},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Identifier","config":"{\n \"codeName\": \"identifier\",\n \"isString\": true\n}","id":"2e577616-21a7-4199-a64f-d90386edc6ec","savedPayload":{"position":{"x":29461.043008726487,"y":15373.706159003217},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"9993ddd9-d4f8-4eef-91db-45eb57c04d8e","savedPayload":{"position":{"x":29560.10556025223,"y":15348.023602339637},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"dd7f3f5d-3f52-4256-b7e1-c2d94aa85795","savedPayload":{"position":{"x":29660.36315362298,"y":15331.432772800272},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"e7f50ea4-ebd4-448f-bd18-54fc2d7e2e7b","savedPayload":{"position":{"x":29761.33601621663,"y":15323.802164180473},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"d9ff5483-8800-49f7-8d9f-9e8e48f8b795","savedPayload":{"position":{"x":29862.404050559027,"y":15325.11686515942},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Rate","config":"{ \n\"codeName\": \"beginRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"f0e01315-185f-4092-9b13-0f529a794336","savedPayload":{"position":{"x":29962.865382296925,"y":15335.29792858241},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Rate","config":"{ \n\"codeName\": \"endRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"a41e9fac-16b2-4b08-b9e8-b494359f1737","savedPayload":{"position":{"x":30062.000261337776,"y":15354.215518717172},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Situation Name","config":"{ \n\"codeName\": \"situationName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"e6137e7e-940e-44b9-937f-4c6a89709af4","savedPayload":{"position":{"x":30159.071020234842,"y":15381.731403614722},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Periods","config":"{ \n\"codeName\": \"periods\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.position.positionCounters\"\n}","id":"3976c01c-c92d-47b1-965d-4e4d7678a59a","savedPayload":{"position":{"x":30253.354468299163,"y":15417.610894972066},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 1","config":"{ \n\"codeName\": \"userDefinedStatistic1\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.position.positionStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 0\n}","id":"5a796662-dd46-4e75-8d5b-192ec323901e","savedPayload":{"position":{"x":30344.15704988314,"y":15461.54473838131},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 2","config":"{ \n\"codeName\": \"userDefinedStatistic2\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.position.positionStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 1\n}","id":"373f4395-e367-4089-ad1c-6bcefb4a1d40","savedPayload":{"position":{"x":30430.70884191549,"y":15513.332544767747},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 3","config":"{ \n\"codeName\": \"userDefinedStatistic3\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.position.positionStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 2\n}","id":"337bc66f-9deb-4e01-b4a8-24cac360726f","savedPayload":{"position":{"x":30512.43002524612,"y":15572.441182216895},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Stop Loss","config":"{\n \"codeName\": \"stopLoss\",\n \"isString\": false\n}","id":"4c576425-680e-46ae-8a5d-a8548e256ec1","savedPayload":{"position":{"x":30588.667568066798,"y":15638.46523456404},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Stop Loss Phase","config":"{\n \"codeName\": \"stopLossPhase\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.last.position.stopLoss\"\n}","id":"7865ef71-3d83-4b6c-9275-fd3199183464","savedPayload":{"position":{"x":30659.00132410495,"y":15710.756022024476},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Take Profit","config":"{\n \"codeName\": \"takeProfit\",\n \"isString\": false\n}","id":"32bd62c3-8eab-40cd-9830-32952105a924","savedPayload":{"position":{"x":30722.428885277848,"y":15789.153671997698},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Stop Loss Phase","config":"{\n \"codeName\": \"takeProfitPhase\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.last.position.takeProfit\"\n}","id":"fadb0e4d-25bf-4359-9e9f-3aa83fdcf214","savedPayload":{"position":{"x":30779.088586918435,"y":15872.582813932706},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Profit Loss In Base Asset","config":"{ \n\"codeName\": \"profitLossInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.position.positionBaseAsset\",\n \"childProperty\": \"profitLoss\",\n \"decimals\": 10\n}","id":"2c6b4f74-ede6-4055-96e9-7b6a7fe6f14b","savedPayload":{"position":{"x":30828.05021939833,"y":15960.742219736447},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Profit Loss In Quoted Asset","config":"{ \n\"codeName\": \"profitLossInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.position.positionQuotedAsset\",\n \"childProperty\": \"profitLoss\",\n \"decimals\": 10\n}","id":"1ea905bd-9a4f-45ef-a3f9-ecdfb8e68ce1","savedPayload":{"position":{"x":30869.118223676545,"y":16052.837205643762},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ROI In Base Asset","config":"{ \n\"codeName\": \"ROIInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.position.positionBaseAsset\",\n \"childProperty\": \"ROI\",\n \"decimals\": 10\n}","id":"29924f25-d402-499e-a51a-952a4d1bc015","savedPayload":{"position":{"x":30902.293132879477,"y":16148.073466372456},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ROI In Quoted Asset","config":"{ \n\"codeName\": \"ROIInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.position.positionQuotedAsset\",\n \"childProperty\": \"ROI\",\n \"decimals\": 10\n}","id":"2af609c6-806d-4dd2-af9e-4cc9e1a2b0c3","savedPayload":{"position":{"x":30926.558482009998,"y":16245.940770608351},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hit Fail In Base Asset","config":"{ \n\"codeName\": \"hitFailInBaseAsset\",\n\"isString\": true,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.position.positionBaseAsset\",\n \"childProperty\": \"hitFail\"\n}","id":"1f4d9780-e2f9-400c-b47b-e303c3a2bac1","savedPayload":{"position":{"x":30942.616133068554,"y":16345.494082541474},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hit Fail In Quoted Asset","config":"{ \n\"codeName\": \"hitFailInQuotedAsset\",\n\"isString\": true,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.position.positionQuotedAsset\",\n \"childProperty\": \"hitFail\"\n}","id":"4019c021-32b6-48bc-9523-39befbf74aeb","savedPayload":{"position":{"x":30949.621985625625,"y":16446.080816658035},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Stop Loss Position","config":"{\n \"codeName\": \"stopLossPosition\",\n \"isString\": true,\n \"nodePath\": \"tradingEngine.current.position.stopLoss\"\n}","id":"3843d123-4094-479d-b4ba-f5cfe8341189","savedPayload":{"position":{"x":30947.960780442587,"y":16546.897113885712},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Take Profit Position","config":"{\n \"codeName\": \"takeProfitPosition\",\n \"isString\": true,\n \"nodePath\": \"tradingEngine.current.position.takeProfit\"\n}","id":"8f03cb2e-9392-4193-a069-8a62b3a81a28","savedPayload":{"position":{"x":30937.39766938787,"y":16647.161087899254},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Entry Target Size In Base Asset","config":"{ \n\"codeName\": \"entryTargetSizeInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionBaseAsset\",\n \"childProperty\": \"entryTargetSize\",\n \"decimals\": 10\n}","id":"e8cd2d2b-0ca6-46e1-946b-2aa4bfdb341c","savedPayload":{"position":{"x":30918.181979437784,"y":16746.12736455225},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Entry Target Size In Quoted Asset","config":"{ \n\"codeName\": \"entryTargetSizeInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionQuotedAsset\",\n \"childProperty\": \"entryTargetSize\",\n \"decimals\": 10\n}","id":"2f52b5a7-cd53-485d-b2b6-64c1ce2f5af1","savedPayload":{"position":{"x":30890.375646352455,"y":16843.02690608268},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Target Size In Base Asset","config":"{ \n\"codeName\": \"exitTargetSizeInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionBaseAsset\",\n \"childProperty\": \"exitTargetSize\",\n \"decimals\": 10\n}","id":"45e8300d-baf1-4d87-aef6-ec10dd85da2d","savedPayload":{"position":{"x":30854.23302641428,"y":16937.13259262884},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Target Size In Quoted Asset","config":"{ \n\"codeName\": \"exitTargetSizeInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionQuotedAsset\",\n \"childProperty\": \"exitTargetSize\",\n \"decimals\": 10\n}","id":"4c4be570-1f2d-4e3e-9c4e-8076fd4a5b9d","savedPayload":{"position":{"x":30810.008089676303,"y":17027.718265087406},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Entry Target Rate","config":"{ \n\"codeName\": \"entryTargetRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"546beb6d-17ef-4b1b-b0e5-f9f716cbf09c","savedPayload":{"position":{"x":30758.05251913025,"y":17114.099738312023},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Target Rate","config":"{ \n\"codeName\": \"exitTargetRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"d71cf631-337c-40ff-8637-89ab1bf10316","savedPayload":{"position":{"x":30698.75099490263,"y":17195.610065746623},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Statistics Profit Loss","config":"{ \n\"codeName\": \"profitLoss\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionStatistics\",\n \"decimals\": 10\n}","id":"c5e7ea1d-2314-48a4-8c2f-eea2054521aa","savedPayload":{"position":{"x":30632.562787289906,"y":17271.631033720263},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Statistics ROI","config":"{ \n\"codeName\": \"ROI\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionStatistics\",\n \"decimals\": 10\n}","id":"6ccc1352-bb8a-4b4c-9e3e-e3107e4610c8","savedPayload":{"position":{"x":30559.991647582854,"y":17341.58058089393},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Statistics Hit Fail","config":"{ \n\"codeName\": \"hitFail\",\n\"isString\": true,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionStatistics\"\n}","id":"afc68726-a40f-49f8-b9a3-c841e9f14c84","savedPayload":{"position":{"x":30481.595148792843,"y":17404.92847886653},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Statistics Days","config":"{ \n\"codeName\": \"days\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionStatistics\",\n \"decimals\": 2\n}","id":"871e0d9c-c467-4fbf-bb51-ff06cdd97a24","savedPayload":{"position":{"x":30383.943333583768,"y":17469.165192825814},"targetPosition":{"x":29795.183560552963,"y":16477.5600804298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"731e7326-c591-4d9f-a9d7-1c7abd42156f","savedPayload":{"position":{"x":29795.183560552963,"y":16477.5600804298},"targetPosition":{"x":28763.65938965686,"y":16993.704098552724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"477cd6d5-862a-44d0-9313-786a4e63a602","savedPayload":{"position":{"x":26912.875444544425,"y":18559.98363376663},"targetPosition":{"x":26525.276634659083,"y":18477.58369705319},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Last Position","id":"08c88b9c-70f1-49ff-aa16-21f2bc1c0ba1"}}}],"productDefinitionFolders":[],"id":"83cdc0a1-260e-42bb-a054-5719c34b0165","savedPayload":{"position":{"x":26525.276634659083,"y":18477.58369705319},"targetPosition":{"x":26117.30196400881,"y":18609.762568861108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition Folder","name":"Stages","products":[{"type":"Product Definition","name":"Open Stage","config":"{\n \"codeName\": \"Current-Strategy-Open-Stage\",\n \"singularVariableName\": \"currentStrategyOpenStage\",\n \"pluralVariableName\": \"currentStrategyOpenStages\",\n \"nodePath\": \"tradingEngine.current.strategyOpenStage\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"b553683f-14f4-48be-91a6-0fb5381887e4","savedPayload":{"position":{"x":30328.153812507688,"y":20179.89878285981},"targetPosition":{"x":29192.88366557983,"y":19975.457004999334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"3287fb46-854d-41de-8a42-285f9c10d4fa","savedPayload":{"position":{"x":30163.52484338414,"y":20598.69160223641},"targetPosition":{"x":29192.88366557983,"y":19975.457004999334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"16f06257-04df-47fc-8a3c-29daf922e556","savedPayload":{"position":{"x":30907.15367968333,"y":20462.95362201698},"targetPosition":{"x":29850.573610330634,"y":20922.972937635957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"4d6aabc2-0b50-4948-9c21-82f6a1df7bbf","savedPayload":{"position":{"x":30976.64752571325,"y":20678.078590450146},"targetPosition":{"x":29850.573610330634,"y":20922.972937635957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"22ea5554-c115-4081-bc2a-03243d8630c4","savedPayload":{"position":{"x":31002.803868472136,"y":20902.517184790704},"targetPosition":{"x":29850.573610330634,"y":20922.972937635957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"37d59f42-6664-4cdb-a563-599f4c926ed2","savedPayload":{"position":{"x":30984.669437097287,"y":21127.451490365416},"targetPosition":{"x":29850.573610330634,"y":20922.972937635957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Rate","config":"{ \n\"codeName\": \"beginRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"4768b50b-1fb1-4a31-a9ce-9dd1bb7ae14c","savedPayload":{"position":{"x":30922.94796204483,"y":21344.791797020265},"targetPosition":{"x":29850.573610330634,"y":20922.972937635957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Rate","config":"{ \n\"codeName\": \"endRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"fa740c89-d602-4dda-953b-80b4744e742c","savedPayload":{"position":{"x":30820.012381674405,"y":21545.914177217677},"targetPosition":{"x":29850.573610330634,"y":20922.972937635957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Base Asset","config":"{\n \"codeName\": \"sizeFilledInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.strategyOpenStage.stageBaseAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"f022ac0c-4a8c-4ea1-bc77-f9e03c706e6e","savedPayload":{"position":{"x":30679.818452278774,"y":21723.090894901372},"targetPosition":{"x":29850.573610330634,"y":20922.972937635957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Quoted Asset","config":"{\n \"codeName\": \"sizeFilledInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.strategyOpenStage.stageQuotedAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"3491a030-50f3-4909-be44-b40a7c8fe8c0","savedPayload":{"position":{"x":30507.75507660086,"y":21869.51332488908},"targetPosition":{"x":29850.573610330634,"y":20922.972937635957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Base Asset","config":"{ \n\"codeName\": \"feesPaidInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.strategyOpenStage.stageBaseAsset\",\n \"childProperty\": \"feesPaid\",\n \"decimals\": 10\n}","id":"20e53cb6-ac86-4d7f-823c-d9dcd3fe3683","savedPayload":{"position":{"x":30310.501398228298,"y":21979.54469601024},"targetPosition":{"x":29850.573610330634,"y":20922.972937635957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Quoted Asset","config":"{ \n\"codeName\": \"feesPaidInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.strategyOpenStage.stageQuotedAsset\",\n \"childProperty\": \"feesPaid\",\n \"decimals\": 10\n}","id":"6e4fd9ec-7ff6-4f34-911e-4954d1e17b18","savedPayload":{"position":{"x":30095.448225423377,"y":22049.011913020655},"targetPosition":{"x":29850.573610330634,"y":20922.972937635957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Placed In Base Asset","config":"{\n \"codeName\": \"sizePlacedInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.strategyOpenStage.stageBaseAsset\",\n \"childProperty\": \"sizePlaced\",\n \"decimals\": 10\n}","id":"180c4f89-8767-48c0-8319-c3564cf17c90","savedPayload":{"position":{"x":29870.974428054462,"y":22075.165305781542},"targetPosition":{"x":29850.573610330634,"y":20922.972937635957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Placed In Quoted Asset","config":"{\n \"codeName\": \"sizePlacedInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.strategyOpenStage.stageQuotedAsset\",\n \"childProperty\": \"sizePlaced\",\n \"decimals\": 10\n}","id":"df80e04b-729b-482e-a088-90a164e53095","savedPayload":{"position":{"x":29646.053678962235,"y":22057.009323258375},"targetPosition":{"x":29850.573610330634,"y":20922.972937635957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Target Size In Base Asset","config":"{\n \"codeName\": \"targetSizeInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.strategyOpenStage.stageBaseAsset\",\n \"childProperty\": \"targetSize\",\n \"decimals\": 10\n}","id":"709e3369-660e-4109-bbcb-3d4e45b6609f","savedPayload":{"position":{"x":29428.73690117595,"y":21995.300040205864},"targetPosition":{"x":29850.573610330634,"y":20922.972937635957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Target Size In Quoted Asset","config":"{\n \"codeName\": \"targetSizeInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.strategyOpenStage.stageQuotedAsset\",\n \"childProperty\": \"targetSize\",\n \"decimals\": 10\n}","id":"eb37666f-1459-4bbc-8a33-5030dd2468fa","savedPayload":{"position":{"x":29227.59880445985,"y":21892.353971425644},"targetPosition":{"x":29850.573610330634,"y":20922.972937635957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Stage Defined In","config":"{ \n\"codeName\": \"stageDefinedIn\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"68d9f756-49e1-4541-b94b-e6502c2dd812","savedPayload":{"position":{"x":29050.335968607393,"y":21752.055796336328},"targetPosition":{"x":29850.573610330634,"y":20922.972937635957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"59f991ac-f3e7-410e-9caf-bf14ed61d69c","savedPayload":{"position":{"x":29850.573610330634,"y":20922.972937635957},"targetPosition":{"x":29192.88366557983,"y":19975.457004999334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"73c3c041-ba2a-4798-a362-a453409b518a","savedPayload":{"position":{"x":27796.06748293123,"y":18241.80688344625},"targetPosition":{"x":27336.177177442936,"y":18655.916369401104},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Current Strategy Open Stage","id":"f759a457-fc11-43a8-bf2c-6ebf1db0e78d"}}},{"type":"Product Definition","name":"Close Stage","config":"{\n \"codeName\": \"Current-Strategy-Close-Stage\",\n \"singularVariableName\": \"currentStrategyCloseStage\",\n \"pluralVariableName\": \"currentStrategyCloseStages\",\n \"nodePath\": \"tradingEngine.current.strategyCloseStage\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"0c30c4d3-3e58-4422-a178-450c24f95001","savedPayload":{"position":{"x":30217.588122698482,"y":20395.712147204966},"targetPosition":{"x":29099.890465183395,"y":20110.84864165662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"4903a08c-90b6-4726-aa4d-1d8a0acdbd77","savedPayload":{"position":{"x":30023.528885046868,"y":20801.660094634895},"targetPosition":{"x":29099.890465183395,"y":20110.84864165662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"840e560a-bfeb-473e-9a22-e0388757f531","savedPayload":{"position":{"x":30774.804472181462,"y":20719.30484029803},"targetPosition":{"x":29688.261571903422,"y":21102.715067733683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"4beb9d7d-106c-440a-9ea0-db16de4c2da4","savedPayload":{"position":{"x":30828.769660082235,"y":20938.817507996966},"targetPosition":{"x":29688.261571903422,"y":21102.715067733683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"517d1407-6464-46e0-b5f7-ce3ca23a7cbd","savedPayload":{"position":{"x":30838.846187856812,"y":21164.22086678177},"targetPosition":{"x":29688.261571903422,"y":21102.715067733683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"23275807-6666-4821-a84b-060a46ed4993","savedPayload":{"position":{"x":30804.696090002166,"y":21387.530701286807},"targetPosition":{"x":29688.261571903422,"y":21102.715067733683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Rate","config":"{ \n\"codeName\": \"beginRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"75a1d315-4027-402a-8646-565331def8e4","savedPayload":{"position":{"x":30727.63785605061,"y":21599.882640968917},"targetPosition":{"x":29688.261571903422,"y":21102.715067733683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Rate","config":"{ \n\"codeName\": \"endRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"f46867ef-8d39-4aa9-b57d-12ab7eb8c293","savedPayload":{"position":{"x":30610.633694244712,"y":21793.120189948513},"targetPosition":{"x":29688.261571903422,"y":21102.715067733683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Base Asset","config":"{\n \"codeName\": \"sizeFilledInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.strategyCloseStage.stageBaseAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"73317d39-d014-45f3-bf3b-07230c4055cc","savedPayload":{"position":{"x":30458.179920409126,"y":21959.819082681486},"targetPosition":{"x":29688.261571903422,"y":21102.715067733683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Quoted Asset","config":"{\n \"codeName\": \"sizeFilledInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.strategyCloseStage.stageQuotedAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"f4815fd2-f336-4867-ae0c-8d31ac90ced9","savedPayload":{"position":{"x":30276.13895940957,"y":22093.57292723655},"targetPosition":{"x":29688.261571903422,"y":21102.715067733683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Base Asset","config":"{ \n\"codeName\": \"feesPaidInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.strategyCloseStage.stageBaseAsset\",\n \"childProperty\": \"feesPaid\",\n \"decimals\": 10\n}","id":"81b366f7-5fb3-4b55-98c8-cea47462b138","savedPayload":{"position":{"x":30071.614239515846,"y":22189.235143679343},"targetPosition":{"x":29688.261571903422,"y":21102.715067733683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Quoted Asset","config":"{ \n\"codeName\": \"feesPaidInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.strategyCloseStage.stageQuotedAsset\",\n \"childProperty\": \"feesPaid\",\n \"decimals\": 10\n}","id":"7f1e01e4-f353-4cd4-b145-871558d5ab60","savedPayload":{"position":{"x":29852.16230580778,"y":22243.1939463449},"targetPosition":{"x":29688.261571903422,"y":21102.715067733683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Placed In Base Asset","config":"{\n \"codeName\": \"sizePlacedInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.strategyCloseStage.stageBaseAsset\",\n \"childProperty\": \"sizePlaced\",\n \"decimals\": 10\n}","id":"3074287b-add9-4baf-a74c-9f09c17cf4f8","savedPayload":{"position":{"x":29626.60550916224,"y":22253.25939457955},"targetPosition":{"x":29688.261571903422,"y":21102.715067733683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Placed In Quoted Asset","config":"{\n \"codeName\": \"sizePlacedInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.strategyCloseStage.stageQuotedAsset\",\n \"childProperty\": \"sizePlaced\",\n \"decimals\": 10\n}","id":"b8c6b690-b924-4a51-88c0-e17e95c16d38","savedPayload":{"position":{"x":29403.388428891816,"y":22219.073378160534},"targetPosition":{"x":29688.261571903422,"y":21102.715067733683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Target Size In Base Asset","config":"{\n \"codeName\": \"targetSizeInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.strategyCloseStage.stageBaseAsset\",\n \"childProperty\": \"targetSize\",\n \"decimals\": 10\n}","id":"e0e42bb9-3f23-49d1-a286-bdb3b58f4a14","savedPayload":{"position":{"x":29191.07876834688,"y":22142.03690577153},"targetPosition":{"x":29688.261571903422,"y":21102.715067733683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Target Size In Quoted Asset","config":"{\n \"codeName\": \"targetSizeInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.strategyCloseStage.stageQuotedAsset\",\n \"childProperty\": \"targetSize\",\n \"decimals\": 10\n}","id":"3ab9f66f-69b9-4d05-a7a1-105d49ce0c09","savedPayload":{"position":{"x":28997.82660204914,"y":22025.02095417257},"targetPosition":{"x":29688.261571903422,"y":21102.715067733683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Stage Defined In","config":"{ \n\"codeName\": \"stageDefinedIn\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"7bcc6d7f-a5c9-4a06-9730-7744461e9a75","savedPayload":{"position":{"x":28831.04331840707,"y":21872.44862802928},"targetPosition":{"x":29688.261571903422,"y":21102.715067733683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"722161de-6374-4eb6-a3cc-ab6638d0c484","savedPayload":{"position":{"x":29688.261571903422,"y":21102.715067733683},"targetPosition":{"x":29099.890465183395,"y":20110.84864165662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"2bb9bb41-1ff5-4f83-aa5b-bfc4c9f06a9a","savedPayload":{"position":{"x":27951.407427970647,"y":18591.227297154237},"targetPosition":{"x":27336.177177442936,"y":18655.916369401104},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Current Strategy Close Stage","id":"6be13ce1-0fae-4355-99b2-dc8db000251f"}}},{"type":"Product Definition","name":"Trigger Stage","config":"{\n \"codeName\": \"Current-Strategy-Trigger-Stage\",\n \"singularVariableName\": \"currentStrategyTriggerStage\",\n \"pluralVariableName\": \"currentStrategyTriggerStages\",\n \"nodePath\": \"tradingEngine.current.strategyTriggerStage\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"a179150b-2eaa-45ef-a7fa-14a1decf7dfc","savedPayload":{"position":{"x":30092.125316645797,"y":20603.546240595068},"targetPosition":{"x":28997.681225634107,"y":20239.557544384203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"493f0951-e638-4da1-88b4-1c1d3829046e","savedPayload":{"position":{"x":29869.46562247617,"y":20994.689415929075},"targetPosition":{"x":28997.681225634107,"y":20239.557544384203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"42eb64c6-8540-44fa-a428-e6f6514464c1","savedPayload":{"position":{"x":30665.695684199738,"y":21253.533233016562},"targetPosition":{"x":29513.774441880338,"y":21270.994788274445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"56c868af-79a0-4b0e-a9ec-7d82999155b7","savedPayload":{"position":{"x":30559.231495991542,"y":21754.823249270976},"targetPosition":{"x":29513.774441880338,"y":21270.994788274445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"22df8e6e-b5c8-4ee3-80a9-425ef95d88f8","savedPayload":{"position":{"x":30245.689200420326,"y":22160.54721587526},"targetPosition":{"x":29513.774441880338,"y":21270.994788274445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"fcf315f5-afd7-449e-b0bf-d7cf4af9bba0","savedPayload":{"position":{"x":29787.16470436784,"y":22390.06393602298},"targetPosition":{"x":29513.774441880338,"y":21270.994788274445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Rate","config":"{ \n\"codeName\": \"beginRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"5f4b2d5b-c8bc-401b-90ec-14ede9ec8f64","savedPayload":{"position":{"x":29274.774430334623,"y":22397.916427519915},"targetPosition":{"x":29513.774441880338,"y":21270.994788274445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Rate","config":"{ \n\"codeName\": \"endRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"292f1ff7-7038-4826-8af8-1fdd34661d0b","savedPayload":{"position":{"x":28809.43940267456,"y":22182.538526769393},"targetPosition":{"x":29513.774441880338,"y":21270.994788274445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c9ec94f8-1ccc-4111-817f-2fb25f5f02b5","savedPayload":{"position":{"x":29513.774441880338,"y":21270.994788274445},"targetPosition":{"x":28997.681225634107,"y":20239.557544384203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"b6cff826-9056-4fbd-8eca-cbd6cceec962","savedPayload":{"position":{"x":27872.143246526186,"y":18964.929459137278},"targetPosition":{"x":27336.177177442936,"y":18655.916369401104},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Current Strategy Trigger Stage","id":"823fa15f-bf29-4784-a5f8-5b82d2ed7645"}}},{"type":"Product Definition","name":"Manage Stage","config":"{\n \"codeName\": \"Current-Strategy-Manage-Stage\",\n \"singularVariableName\": \"currentStrategyManageStage\",\n \"pluralVariableName\": \"currentStrategyManageStages\",\n \"nodePath\": \"tradingEngine.current.strategyManageStage\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"56d1a25b-54b1-419c-a323-f2fad41de0ec","savedPayload":{"position":{"x":29951.311242528107,"y":20800.97624148345},"targetPosition":{"x":28885.666952834254,"y":20359.85298115474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"fef1dba7-fc21-4338-b75e-a040d71dbde5","savedPayload":{"position":{"x":29701.320905176664,"y":21175.23203056979},"targetPosition":{"x":28885.666952834254,"y":20359.85298115474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"4df09191-2517-4b69-8d05-ba22ee71d7a5","savedPayload":{"position":{"x":30477.000397699132,"y":21489.89902401674},"targetPosition":{"x":29326.83947272734,"y":21425.454835935256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"41b7d04c-0aeb-478f-9515-8ee8d6eb15e4","savedPayload":{"position":{"x":30335.029412407188,"y":21982.601456910637},"targetPosition":{"x":29326.83947272734,"y":21425.454835935256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"1250e9d7-07f0-47a5-b1bb-9ad2af6ee8ef","savedPayload":{"position":{"x":29993.362063093704,"y":22364.901951124488},"targetPosition":{"x":29326.83947272734,"y":21425.454835935256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"c629a906-31b2-4dae-bc5b-44f189b024ae","savedPayload":{"position":{"x":29519.656717925387,"y":22561.10596289485},"targetPosition":{"x":29326.83947272734,"y":21425.454835935256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Rate","config":"{ \n\"codeName\": \"beginRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"e876f72a-fef5-4956-b401-3d2b7b4b8b95","savedPayload":{"position":{"x":29008.057468981602,"y":22532.36797171794},"targetPosition":{"x":29326.83947272734,"y":21425.454835935256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Rate","config":"{ \n\"codeName\": \"endRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"e248dba4-bfa4-4879-8276-edc85ee6b0d9","savedPayload":{"position":{"x":28559.295465938325,"y":22284.35610085911},"targetPosition":{"x":29326.83947272734,"y":21425.454835935256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"188b2d1c-91c4-4a50-9101-91596ac53407","savedPayload":{"position":{"x":29326.83947272734,"y":21425.454835935256},"targetPosition":{"x":28885.666952834254,"y":20359.85298115474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"bd691611-e7a6-49a8-b07d-c15360b55e40","savedPayload":{"position":{"x":27588.226964271587,"y":19221.053309840583},"targetPosition":{"x":27336.177177442936,"y":18655.916369401104},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Current Strategy Manage Stage","id":"34a912c3-4b0f-4f21-9736-4ef47cd0544d"}}}],"productDefinitionFolders":[],"id":"e3ceaf77-f718-477c-bf10-3dc0cf2235bb","savedPayload":{"position":{"x":26536.778488159995,"y":18698.968524084394},"targetPosition":{"x":26117.30196400881,"y":18609.762568861108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition Folder","name":"Orders","products":[{"type":"Product Definition","name":"Market Buy Orders","config":"{ \n \"codeName\": \"Market-Buy-Orders\", \n \"singularVariableName\": \"marketBuyOrder\", \n \"pluralVariableName\": \"marketBuyOrders\",\n \"nodePathType\": \"array\",\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"a2ea8001-2143-4055-b1d3-525d95fa8e6f","savedPayload":{"position":{"x":29316.272751425146,"y":16037.662716063727},"targetPosition":{"x":28885.510654873906,"y":17104.048336787782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"557357c6-f814-4bf9-9426-82fc5e22c028","savedPayload":{"position":{"x":29700.131143169605,"y":16278.497669972361},"targetPosition":{"x":28885.510654873906,"y":17104.048336787782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Exchange Id","config":"{\n \"codeName\": \"exchangeId\",\n \"isString\": true\n}","id":"1f788bde-d5cc-4556-9cb3-f6ad2a085870","savedPayload":{"position":{"x":30398.61699105512,"y":14005.556472520175},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Serial Number","config":"{\n \"codeName\": \"serialNumber\",\n \"isString\": false\n}","id":"cbe57e07-e492-45ef-be26-6e5ace5cc49d","savedPayload":{"position":{"x":30670.35421006267,"y":13947.22856903486},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Identifier","config":"{\n \"codeName\": \"identifier\",\n \"isString\": true\n}","id":"0eef5d2a-489b-402b-a1bc-bbf6105bc226","savedPayload":{"position":{"x":30947.07025816089,"y":13922.092914664125},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"76a37b2a-ff68-425c-95ae-9da13d4f11e3","savedPayload":{"position":{"x":31224.441296424982,"y":13930.481695101733},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"81aa9c0a-b729-471f-8b3f-046d83779376","savedPayload":{"position":{"x":31499.23542835284,"y":13972.30197027278},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Rate","config":"{ \n\"codeName\": \"rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"48215010-5717-4f29-aa92-edc16d881270","savedPayload":{"position":{"x":31766.90373320352,"y":14046.940019846996},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"588b02df-d269-4fac-a942-0e148bef8573","savedPayload":{"position":{"x":32023.52735355031,"y":14153.25365273745},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"f44959e8-ba4e-41f2-a349-7003d00ef570","savedPayload":{"position":{"x":32265.521561665566,"y":14289.744927629361},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Order Name","config":"{ \n\"codeName\": \"orderName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"43c9c172-0930-4a94-86c4-6de1b82604d3","savedPayload":{"position":{"x":32489.301315588345,"y":14454.41051154717},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Situation Name","config":"{ \n\"codeName\": \"situationName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"e637160d-ab4a-4d36-8324-994615efa900","savedPayload":{"position":{"x":32691.60179952045,"y":14644.848438405024},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Algorithm Name","config":"{ \n\"codeName\": \"algorithmName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"b9cf9af0-758e-46c8-ad34-0afb01aa1658","savedPayload":{"position":{"x":32869.473078506824,"y":14858.28183002462},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Periods","config":"{ \n\"codeName\": \"periods\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderCounters\"\n}","id":"69f674b7-9532-406e-bda9-6a128a9b3e8b","savedPayload":{"position":{"x":33020.3214958921,"y":15091.598522653168},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Percentage Filled","config":"{\n \"codeName\": \"percentageFilled\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderStatistics\",\n \"decimals\": 2\n}","id":"5f50a6c7-0123-4f45-802c-897b7f1d9186","savedPayload":{"position":{"x":33141.947432607034,"y":15341.396406882008},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Actual Rate","config":"{ \n\"codeName\": \"actualRate\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderStatistics\"\n}","id":"ff92e722-7f93-4935-ab39-5fe5d901d275","savedPayload":{"position":{"x":33232.57738268805,"y":15604.033035010396},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Days","config":"{ \n\"codeName\": \"days\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderStatistics\",\n \"decimals\": 2\n}","id":"7ed49f47-7cf0-4c04-8ec7-c42b77bbc496","savedPayload":{"position":{"x":33290.889819027725,"y":15875.678738394277},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Lock","config":"{\n \"codeName\": \"lock\",\n \"isString\": true\n}","id":"c8db7716-5a26-4aa6-b6fa-594e9b4998f0","savedPayload":{"position":{"x":33316.034466482844,"y":16152.372476129698},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 1","config":"{ \n\"codeName\": \"userDefinedStatistic1\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 0\n}","id":"9033bc32-f754-4d94-87a6-4c16cd8ca7d7","savedPayload":{"position":{"x":33307.64474012605,"y":16429.83058621919},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 2","config":"{ \n\"codeName\": \"userDefinedStatistic2\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 1\n}","id":"1524688a-c64c-434c-84ea-79e57f7e37bc","savedPayload":{"position":{"x":33265.843005321694,"y":16704.50152772063},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 3","config":"{ \n\"codeName\": \"userDefinedStatistic3\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 2\n}","id":"200c3a3d-f082-4cb0-86b1-ba12429f6c0e","savedPayload":{"position":{"x":33191.23877159008,"y":16972.131489111413},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Base Asset","config":"{\n \"codeName\": \"sizeInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderBaseAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"256902a5-0c3d-4a8d-9f85-e68bb07405e0","savedPayload":{"position":{"x":33084.919863895266,"y":17228.817923391027},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Quoted Asset","config":"{\n \"codeName\": \"sizeInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderQuotedAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"5f054d54-a92e-4d88-a654-20f9257ab794","savedPayload":{"position":{"x":32948.436434691044,"y":17470.81806832069},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Base Asset","config":"{\n \"codeName\": \"sizeFilledInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderBaseAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"2180ac7e-b09a-404f-86cd-3e0d0eb0635f","savedPayload":{"position":{"x":32783.778128808015,"y":17694.603513302685},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Quoted Asset","config":"{\n \"codeName\": \"sizeFilledInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderQuotedAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"cd182952-6fd9-40be-82c6-d5b1356c3fc7","savedPayload":{"position":{"x":32593.344255737804,"y":17896.912006489943},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Base Asset","config":"{ \n\"codeName\": \"feesPaidInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderBaseAsset\",\n \"childProperty\": \"feesPaid\"\n}","id":"81cb024b-b64e-4f2c-be9d-c343fc27b08e","savedPayload":{"position":{"x":32379.904804521953,"y":18074.796838887403},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Quoted Asset","config":"{ \n\"codeName\": \"feesPaidInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderQuotedAsset\",\n \"childProperty\": \"feesPaid\"\n}","id":"bfd95185-6f74-4710-b798-b76a5c3cc109","savedPayload":{"position":{"x":32146.52107967901,"y":18225.68858724015},"targetPosition":{"x":31016.377073316955,"y":16221.77818179219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2b743c15-4ca6-46e9-a96e-b0a62b42de60","savedPayload":{"position":{"x":31016.377073316955,"y":16221.77818179219},"targetPosition":{"x":28885.510654873906,"y":17104.048336787782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}},"id":"7c769317-2639-4460-8b88-9dc92f7b0585","savedPayload":{"position":{"x":27765.43261598917,"y":18702.265627888326},"targetPosition":{"x":27192.95947914759,"y":18936.86489183738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Market Buy Orders","id":"50d624c9-9a6e-4d57-a147-29d5c004b3f2"}}},{"type":"Product Definition","name":"Market Sell Orders","config":"{ \n \"codeName\": \"Market-Sell-Orders\", \n \"singularVariableName\": \"marketSellOrder\", \n \"pluralVariableName\": \"marketSellOrders\",\n \"nodePathType\": \"array\",\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"917cfdae-b736-4ed5-ad8e-d572c49ea489","savedPayload":{"position":{"x":29515.18009860784,"y":16203.727181163362},"targetPosition":{"x":28997.416160886827,"y":17224.43517715826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"3c878a50-6d76-412b-95d7-f2e546960293","savedPayload":{"position":{"x":29880.799180538866,"y":16470.79542615308},"targetPosition":{"x":28997.416160886827,"y":17224.43517715826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Exchange Id","config":"{\n \"codeName\": \"exchangeId\",\n \"isString\": true\n}","id":"7dd0d738-2116-4010-a9d5-19624a9bc097","savedPayload":{"position":{"x":29862.348224436155,"y":15731.078390663544},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Serial Number","config":"{\n \"codeName\": \"serialNumber\",\n \"isString\": false\n}","id":"5843c701-ba88-42c1-97c2-215cb97b309c","savedPayload":{"position":{"x":30000.5734162873,"y":15711.677197641262},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Identifier","config":"{\n \"codeName\": \"identifier\",\n \"isString\": true\n}","id":"f3f77a4c-acf5-4026-aa2a-9b34e231a9d5","savedPayload":{"position":{"x":30139.304054286382,"y":15708.936843376103},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"cc0b04e1-acd8-413b-8366-e620d55a22be","savedPayload":{"position":{"x":30277.871760118614,"y":15723.083086633214},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"89bb217d-a5ce-4197-b33b-4b251e3ec5c9","savedPayload":{"position":{"x":30413.785073268857,"y":15753.61173514083},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Rate","config":"{ \n\"codeName\": \"rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"3a6b6603-5de8-47a1-b2cb-e2078397aca1","savedPayload":{"position":{"x":30544.673978624625,"y":15800.833359560653},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"a0d62501-1822-4d56-afce-b5eee40212f7","savedPayload":{"position":{"x":30652.068897829173,"y":15875.496605522681},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"9f72bb4a-779d-453f-a7b2-bf240eec29fa","savedPayload":{"position":{"x":30750.692639143395,"y":15982.491014600193},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Order Name","config":"{ \n\"codeName\": \"orderName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"7b91a979-7175-49aa-a83b-faa1d7c22bf3","savedPayload":{"position":{"x":30935.99075218298,"y":16026.652559124577},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Situation Name","config":"{ \n\"codeName\": \"situationName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"b47e5776-92ed-468e-8040-16a655a9a92b","savedPayload":{"position":{"x":30986.909556299983,"y":16132.078330428189},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Algorithm Name","config":"{ \n\"codeName\": \"algorithmName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"178e1183-6b29-4a8b-b2a2-3e817bf56c0b","savedPayload":{"position":{"x":31068.34538827679,"y":16245.623148486544},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Periods","config":"{ \n\"codeName\": \"periods\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderCounters\"\n}","id":"16eb66bd-cbd5-4272-83bd-7aa5cbf79965","savedPayload":{"position":{"x":31135.168892991685,"y":16367.755113665611},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Percentage Filled","config":"{\n \"codeName\": \"percentageFilled\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderStatistics\",\n \"decimals\": 2\n}","id":"4694fc1a-8031-4b21-8002-fb2259b98221","savedPayload":{"position":{"x":31186.881107406414,"y":16497.041544338765},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Actual Rate","config":"{ \n\"codeName\": \"actualRate\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderStatistics\"\n}","id":"3fdfa893-f3ff-4595-bfd1-e9e191a2f7de","savedPayload":{"position":{"x":31222.68420702918,"y":16631.613895914077},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Days","config":"{ \n\"codeName\": \"days\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderStatistics\",\n \"decimals\": 2\n}","id":"fd90ed73-a52a-41b0-988e-f85896e4e119","savedPayload":{"position":{"x":31242.03630497767,"y":16769.519686513424},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Lock","config":"{\n \"codeName\": \"lock\",\n \"isString\": true\n}","id":"a0541e00-0150-4089-82c3-1f596ed4fc0c","savedPayload":{"position":{"x":31244.6445856353,"y":16908.51594371438},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 1","config":"{ \n\"codeName\": \"userDefinedStatistic1\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 0\n}","id":"2320eff7-cd11-46a6-8f2b-7c6c6bd9afa2","savedPayload":{"position":{"x":31230.464274146343,"y":17047.049356446634},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 2","config":"{ \n\"codeName\": \"userDefinedStatistic2\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 1\n}","id":"cbcd69c4-f332-4615-a1aa-ff5a63c2f63a","savedPayload":{"position":{"x":31199.69789803938,"y":17182.86664300351},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 3","config":"{ \n\"codeName\": \"userDefinedStatistic3\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 2\n}","id":"67d569c5-929d-4f9a-a7a2-1a31aecab027","savedPayload":{"position":{"x":31152.79237786844,"y":17313.988448869477},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Base Asset","config":"{\n \"codeName\": \"sizeInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderBaseAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"42ccc010-d59e-45d0-9ded-718df8f547cc","savedPayload":{"position":{"x":31090.423928279917,"y":17438.501833543578},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Quoted Asset","config":"{\n \"codeName\": \"sizeInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderBaseAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"da1eb092-2796-4d86-9e20-095b75b18911","savedPayload":{"position":{"x":31013.500017567214,"y":17554.592245323154},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Base Asset","config":"{\n \"codeName\": \"sizeFilledInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderBaseAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"4b2b02b0-2297-4cae-997e-ddadffae94e1","savedPayload":{"position":{"x":30923.1365976582,"y":17660.567752835006},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Quoted Asset","config":"{\n \"codeName\": \"sizeFilledInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderBaseAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"49e12e85-2250-420d-ae4e-4d7ee514e59c","savedPayload":{"position":{"x":30820.64091503664,"y":17754.886467342007},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Base Asset","config":"{ \n\"codeName\": \"feesPaidInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderQuotedAsset\",\n \"childProperty\": \"feesPaid\"\n}","id":"f28662d2-c0e7-4051-a8ab-868707defe65","savedPayload":{"position":{"x":30707.477350364636,"y":17836.186155952942},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Quoted Asset","config":"{ \n\"codeName\": \"feesPaidInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderQuotedAsset\",\n \"childProperty\": \"feesPaid\"\n}","id":"a4c176bc-6da0-459f-ac04-7c414f92ce02","savedPayload":{"position":{"x":30585.084699066985,"y":17903.355009615774},"targetPosition":{"x":30092.291729047563,"y":16860.997781414982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e2626cbd-29b0-4582-a408-4720feb8123d","savedPayload":{"position":{"x":30092.291729047563,"y":16860.997781414982},"targetPosition":{"x":28997.416160886827,"y":17224.43517715826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}},"id":"9cc7645a-54fe-40d6-9896-9278167011fb","savedPayload":{"position":{"x":27810.48431726344,"y":18973.756989605008},"targetPosition":{"x":27192.95947914759,"y":18936.86489183738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Market Sell Orders","id":"4f84a1a5-f9cd-4b9d-9d91-661ba912e2ca"}}},{"type":"Product Definition","name":"Limit Buy Orders","config":"{ \n \"codeName\": \"Limit-Buy-Orders\", \n \"singularVariableName\": \"limitBuyOrder\", \n \"pluralVariableName\": \"limitBuyOrders\",\n \"nodePathType\": \"array\",\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"df8cfaa4-a4d4-4bc1-9fa2-4f8e91e45a87","savedPayload":{"position":{"x":29687.138733512576,"y":16361.172952336317},"targetPosition":{"x":29099.053418765245,"y":17353.365203626712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"12652573-9506-4d3e-82bb-64b1bb9e7ce0","savedPayload":{"position":{"x":30021.910736300753,"y":16661.53174681767},"targetPosition":{"x":29099.053418765245,"y":17353.365203626712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Exchange Id","config":"{\n \"codeName\": \"exchangeId\",\n \"isString\": true\n}","id":"b0dc1303-0b65-4328-b885-f33d4ef395a6","savedPayload":{"position":{"x":30067.797881451417,"y":15925.52918087198},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Serial Number","config":"{\n \"codeName\": \"serialNumber\",\n \"isString\": false\n}","id":"451e4e45-854c-4b9f-ac75-ddfe076fb6d8","savedPayload":{"position":{"x":30207.083349708413,"y":15915.884284360693},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Identifier","config":"{\n \"codeName\": \"identifier\",\n \"isString\": true\n}","id":"fa7958e6-31e1-4216-b3bf-f341cae3ad92","savedPayload":{"position":{"x":30345.853590410985,"y":15923.127295236647},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"f3230b63-049f-457a-abc1-9117d8443337","savedPayload":{"position":{"x":30482.976955006823,"y":15947.08128655739},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"544aae22-e5cf-41d2-912e-f19699a7f65a","savedPayload":{"position":{"x":30616.189818013412,"y":15987.39194623625},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Rate","config":"{ \n\"codeName\": \"rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"7cccabcc-97ae-4e46-86b4-70c8b6ab73c5","savedPayload":{"position":{"x":30743.568438885697,"y":16043.457719615919},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"3f94ee88-bb65-4f46-9cef-c3468b2e5831","savedPayload":{"position":{"x":30863.249625071614,"y":16114.472259668228},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"fbe17bbd-1af9-4b97-be44-f267039077e5","savedPayload":{"position":{"x":30973.50033684197,"y":16199.390558527257},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Order Name","config":"{ \n\"codeName\": \"orderName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"593c0354-1f6a-4ec1-879b-13f95de9d66d","savedPayload":{"position":{"x":31072.709057481246,"y":16296.973789438101},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Situation Name","config":"{ \n\"codeName\": \"situationName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"7a473c6b-849a-46f7-befa-661675c6b6a7","savedPayload":{"position":{"x":31159.428860151856,"y":16405.811755766008},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Algorithm Name","config":"{ \n\"codeName\": \"algorithmName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"7e05bfad-d3ba-4170-bb97-b02911c65b81","savedPayload":{"position":{"x":31232.405514719652,"y":16524.306925054017},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Periods","config":"{ \n\"codeName\": \"periods\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderCounters\"\n}","id":"e86cdc19-1330-4dbd-b0d9-6300bb84b504","savedPayload":{"position":{"x":31290.55892018152,"y":16650.723764410715},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Percentage Filled","config":"{\n \"codeName\": \"percentageFilled\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderStatistics\",\n \"decimals\": 2\n}","id":"dc8ff39f-2ebf-4097-a324-69714556e67e","savedPayload":{"position":{"x":31333.053293505447,"y":16783.237037798808},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Actual Rate","config":"{ \n\"codeName\": \"actualRate\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderStatistics\"\n}","id":"e9f153ec-763f-45ce-ab8e-9095762a8b5c","savedPayload":{"position":{"x":31359.260997321715,"y":16919.89930711365},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Days","config":"{ \n\"codeName\": \"days\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderStatistics\",\n \"decimals\": 2\n}","id":"45ca3d8c-ba98-4ff9-8825-d515ad54d235","savedPayload":{"position":{"x":31368.814597283104,"y":17058.731605705085},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Lock","config":"{\n \"codeName\": \"lock\",\n \"isString\": true\n}","id":"0952905d-7adc-497d-859c-9bf80bd5753c","savedPayload":{"position":{"x":31361.557672918123,"y":17197.39106484953},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 1","config":"{ \n\"codeName\": \"userDefinedStatistic1\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 0\n}","id":"7becceb8-d380-4e4e-b5ce-70b63b32445f","savedPayload":{"position":{"x":31337.596151128193,"y":17334.458958771065},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 2","config":"{ \n\"codeName\": \"userDefinedStatistic2\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 1\n}","id":"4deb6a9d-3914-4a70-b2f5-992a09504eec","savedPayload":{"position":{"x":31297.29146363968,"y":17467.653354657406},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 3","config":"{ \n\"codeName\": \"userDefinedStatistic3\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 2\n}","id":"3213e0e6-5b5f-4e9a-b67e-33f596bad152","savedPayload":{"position":{"x":31241.22917327452,"y":17595.003149163455},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Base Asset","config":"{\n \"codeName\": \"sizeInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderBaseAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"737e90c6-6468-4873-a786-8e998b39163b","savedPayload":{"position":{"x":31170.21789988615,"y":17714.669411621944},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Quoted Asset","config":"{\n \"codeName\": \"sizeInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderQuotedAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"08461bfb-7f11-40d4-96a8-0b84ab258efe","savedPayload":{"position":{"x":31085.283135001137,"y":17824.90978331869},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Base Asset","config":"{\n \"codeName\": \"sizeFilledInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderBaseAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"1c6d07ec-602d-412b-b384-b9170f8bb8de","savedPayload":{"position":{"x":30987.662717431504,"y":17924.14022792456},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Quoted Asset","config":"{\n \"codeName\": \"sizeFilledInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderQuotedAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"bb16c953-c112-4828-8f29-6604be02b427","savedPayload":{"position":{"x":30878.54501183158,"y":18011.148797849113},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Base Asset","config":"{ \n\"codeName\": \"feesPaidInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderBaseAsset\",\n \"childProperty\": \"feesPaid\",\n \"decimals\": 10\n}","id":"a698c86e-8997-4053-9bd7-222876eb9a74","savedPayload":{"position":{"x":30759.868306622026,"y":18084.200815197564},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Quoted Asset","config":"{ \n\"codeName\": \"feesPaidInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderQuotedAsset\",\n \"childProperty\": \"feesPaid\",\n \"decimals\": 10\n}","id":"07aef603-7b78-4446-b0e2-03c365d5941c","savedPayload":{"position":{"x":30632.97089134783,"y":18142.26630470712},"targetPosition":{"x":30216.61805560583,"y":17068.128150904227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d3c594aa-6573-44f7-b93e-2bd2b0d4134e","savedPayload":{"position":{"x":30216.61805560583,"y":17068.128150904227},"targetPosition":{"x":29099.053418765245,"y":17353.365203626712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}},"id":"4c827ee0-a29b-4b65-8438-03e2ea98b410","savedPayload":{"position":{"x":27733.262183618495,"y":19238.036274851933},"targetPosition":{"x":27192.95947914759,"y":18936.86489183738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Limit Buy Orders","id":"17ec46bd-e5c0-48d5-a3b6-e108cc835f17"}}},{"type":"Product Definition","name":"Limit Sell Orders","config":"{ \n \"codeName\": \"Limit-Sell-Orders\", \n \"singularVariableName\": \"limitSellOrder\", \n \"pluralVariableName\": \"limitSellOrders\",\n \"nodePathType\": \"array\",\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"f645108f-4648-497f-b361-0be5b84c233a","savedPayload":{"position":{"x":29849.659925800177,"y":16540.84260020951},"targetPosition":{"x":29192.20798492512,"y":17488.59321904556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"e98191d1-5b13-42eb-bd52-31e3c6830188","savedPayload":{"position":{"x":30162.165938312566,"y":16864.36233163077},"targetPosition":{"x":29192.20798492512,"y":17488.59321904556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Exchange Id","config":"{\n \"codeName\": \"exchangeId\",\n \"isString\": true\n}","id":"5d3f01ca-9d2b-4446-906c-0f9dfcf8016f","savedPayload":{"position":{"x":30260.424003796343,"y":16133.602715078317},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Serial Number","config":"{\n \"codeName\": \"serialNumber\",\n \"isString\": false\n}","id":"ef7f6f85-9aac-4eb1-935e-84c03beb5ae0","savedPayload":{"position":{"x":30399.73892068825,"y":16133.926081737764},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Identifier","config":"{\n \"codeName\": \"identifier\",\n \"isString\": true\n}","id":"68c5cf4d-ee84-4d53-be73-923d6ec0c070","savedPayload":{"position":{"x":30537.954292702852,"y":16151.075689863825},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"f551a912-c93a-49a5-8ec6-b23845504195","savedPayload":{"position":{"x":30673.03471409933,"y":16184.755985350315},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"5ca3123d-351b-4b1b-9bdd-2be83cb30d4b","savedPayload":{"position":{"x":30803.050309934406,"y":16234.469488307654},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Rate","config":"{ \n\"codeName\": \"rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"a4d2dcb3-66b5-4689-9ff5-6e79ca264c3a","savedPayload":{"position":{"x":30926.117017505254,"y":16299.489662106893},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"74cfaaa3-4241-4585-bb78-afe6ab4fad13","savedPayload":{"position":{"x":31040.444956150546,"y":16378.867870747594},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"e79e457e-0f39-4444-b196-e2ab8e9d51b3","savedPayload":{"position":{"x":31144.36922069161,"y":16471.446515440286},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Order Name","config":"{ \n\"codeName\": \"orderName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"26467972-56e9-445c-84cc-043cf332e7cf","savedPayload":{"position":{"x":31236.37555432141,"y":16575.875602522494},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Situation Name","config":"{ \n\"codeName\": \"situationName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"259e069d-8c48-4b18-b3be-876eb376edfd","savedPayload":{"position":{"x":31315.12297797849,"y":16690.63237285768},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Algorithm Name","config":"{ \n\"codeName\": \"algorithmName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"ab79d27c-63b2-4b9c-986c-69551d4acda6","savedPayload":{"position":{"x":31379.463621259416,"y":16814.04345753854},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Periods","config":"{ \n\"codeName\": \"periods\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderCounters\"\n}","id":"df8ad782-de40-443e-9c25-0c9fd06c0ddd","savedPayload":{"position":{"x":31428.459528520507,"y":16944.309253938816},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Percentage Filled","config":"{\n \"codeName\": \"percentageFilled\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderStatistics\",\n \"decimals\": 2\n}","id":"2adf7743-fa8c-484c-b2b2-16c144f2aa8c","savedPayload":{"position":{"x":31461.39640925905,"y":17079.530138566362},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Actual Rate","config":"{ \n\"codeName\": \"actualRate\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderStatistics\"\n}","id":"fd5472c9-a36f-4281-891d-57380ca2ef6c","savedPayload":{"position":{"x":31477.794121601546,"y":17217.73416878738},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Days","config":"{ \n\"codeName\": \"days\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderStatistics\",\n \"decimals\": 2\n}","id":"87559a66-ff26-4cfb-b9db-baa312369ee1","savedPayload":{"position":{"x":31477.413332640925,"y":17356.615185159804},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Lock","config":"{\n \"codeName\": \"lock\",\n \"isString\": true\n}","id":"aee3133b-1078-4262-84da-01e16ab7d491","savedPayload":{"position":{"x":31460.259979090544,"y":17494.7224277718},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 1","config":"{ \n\"codeName\": \"userDefinedStatistic1\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 0\n}","id":"84f5a086-9b8d-4296-bba1-bccfc56fb263","savedPayload":{"position":{"x":31426.58434425502,"y":17629.75418897736},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 2","config":"{ \n\"codeName\": \"userDefinedStatistic2\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 1\n}","id":"8bf3e674-bbc9-4ff6-bcba-c9487d5215a3","savedPayload":{"position":{"x":31376.87735999037,"y":17759.738572823706},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 3","config":"{ \n\"codeName\": \"userDefinedStatistic3\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 2\n}","id":"1d59f7dc-e3c9-4456-8980-3fded2a58f1a","savedPayload":{"position":{"x":31311.8609066488,"y":17882.784062958086},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Base Asset","config":"{\n \"codeName\": \"sizeInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderBaseAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"8a2fa2ac-a644-46bd-ad48-8acd59807416","savedPayload":{"position":{"x":31232.482047755813,"y":17997.09262673862},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Quoted Asset","config":"{\n \"codeName\": \"sizeInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderQuotedAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"fd203e76-3248-4806-98bc-3dd66c8c4964","savedPayload":{"position":{"x":31139.89415892212,"y":18100.992102860044},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Base Asset","config":"{\n \"codeName\": \"sizeFilledInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderBaseAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"2967221c-0ec9-41e4-8185-689147f647eb","savedPayload":{"position":{"x":31035.429103597155,"y":18192.979469669546},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Quoted Asset","config":"{\n \"codeName\": \"sizeFilledInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderQuotedAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"996a2f7a-28d7-4bbd-9695-3d29119b3008","savedPayload":{"position":{"x":30920.409456113724,"y":18271.90635335774},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Base Asset","config":"{ \n\"codeName\": \"feesPaidInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderBaseAsset\",\n \"childProperty\": \"feesPaid\",\n \"decimals\": 10\n}","id":"4056be3b-3774-4537-8902-06ecf35d9958","savedPayload":{"position":{"x":30796.802576000202,"y":18336.299925860545},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Quoted Asset","config":"{ \n\"codeName\": \"feesPaidInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderQuotedAsset\",\n \"childProperty\": \"feesPaid\",\n \"decimals\": 10\n}","id":"ed176195-45a7-4fa0-92d0-ac7a4feab4bc","savedPayload":{"position":{"x":30666.10256146966,"y":18385.266643688334},"targetPosition":{"x":30327.274216359023,"y":17284.06770909679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"38241371-e97c-4eb5-989e-26605c078620","savedPayload":{"position":{"x":30327.274216359023,"y":17284.06770909679},"targetPosition":{"x":29192.20798492512,"y":17488.59321904556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}},"id":"2c753cd8-36d8-466c-bd80-1ebfa8e314dc","savedPayload":{"position":{"x":27549.000460780288,"y":19442.578276428212},"targetPosition":{"x":27192.95947914759,"y":18936.86489183738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Limit Sell Orders","id":"1ec8da3f-8749-430d-8ad9-35fffc0d61ec"}}},{"type":"Product Definition","name":"Last Market Order","config":"{ \n \"codeName\": \"Last-Market-Order\", \n \"singularVariableName\": \"lastMarketOrder\", \n \"pluralVariableName\": \"lastMarketOrders\",\n \"nodePath\": \"tradingEngine.last.marketOrders\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"768b42e9-59fe-494f-9e05-3be57fb17ca8","savedPayload":{"position":{"x":28153.612930302,"y":22008.707188626304},"targetPosition":{"x":27570.994962520723,"y":21012.819025643053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"26a39916-4f2d-42ab-ae86-7ab622f80624","savedPayload":{"position":{"x":27728.00446345379,"y":22155.842159604574},"targetPosition":{"x":27570.994962520723,"y":21012.819025643053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Exchange Id","config":"{\n \"codeName\": \"exchangeId\",\n \"isString\": true\n}","id":"8dbd8444-1037-4ab0-888b-dd49ffbfdc8b","savedPayload":{"position":{"x":29127.687478671804,"y":24090.643740342304},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Serial Number","config":"{\n \"codeName\": \"serialNumber\",\n \"isString\": false\n}","id":"db3b180d-b86f-4749-a8a7-8d5d7689f032","savedPayload":{"position":{"x":29009.903458679943,"y":24342.58580922895},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Identifier","config":"{\n \"codeName\": \"identifier\",\n \"isString\": true\n}","id":"fbef9773-d1c5-4ac2-9ce3-287dd94fd114","savedPayload":{"position":{"x":28862.634107351543,"y":24578.441663667756},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"b9f73cfb-1c24-4ce7-a9ac-184841d1e16a","savedPayload":{"position":{"x":28688.014471522496,"y":24794.8173498947},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"9e7d08f0-4218-447b-8a13-54211abc880c","savedPayload":{"position":{"x":28488.58886683717,"y":24988.56432208757},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Rate","config":"{ \n\"codeName\": \"rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"f8dafa7f-c43a-4dc9-909a-85eb44e49dbd","savedPayload":{"position":{"x":28267.26468361996,"y":25156.859305192735},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"1a84e99a-ccb0-4483-90c6-f99c396b0dc8","savedPayload":{"position":{"x":28027.269050652678,"y":25297.24900394557},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"b098ae78-9591-4d50-8c01-09d5775d27ff","savedPayload":{"position":{"x":27772.10153296595,"y":25407.686613095713},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Order Name","config":"{ \n\"codeName\": \"orderName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"9bd09a1b-af71-4467-b571-6815ddc01c7d","savedPayload":{"position":{"x":27505.48299874919,"y":25486.561896214735},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Situation Name","config":"{ \n\"codeName\": \"situationName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"c9301d25-01f7-4ae9-bd3b-184eedac1998","savedPayload":{"position":{"x":27231.30131654211,"y":25532.72476663369},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Algorithm Name","config":"{ \n\"codeName\": \"algorithmName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"89ad4f68-83b2-4f5b-9aa5-1db1815b12fd","savedPayload":{"position":{"x":26953.753753126475,"y":25545.502116196883},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Periods","config":"{ \n\"codeName\": \"periods\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.marketOrders.orderCounters\"\n}","id":"10fdf7b0-2fb7-4692-86fe-0d5481e90b93","savedPayload":{"position":{"x":26676.492342912727,"y":25524.70766723347},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Percentage Filled","config":"{\n \"codeName\": \"percentageFilled\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.marketOrders.orderStatistics\",\n \"decimals\": 2\n}","id":"e5946038-66fd-4f81-a503-ac98a61095bb","savedPayload":{"position":{"x":26403.759070949924,"y":25470.644641406183},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Actual Rate","config":"{ \n\"codeName\": \"actualRate\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.marketOrders.orderStatistics\"\n}","id":"9b802d6d-35f2-4535-8062-e3dc2b782574","savedPayload":{"position":{"x":26139.532188442376,"y":25384.101922749385},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Days","config":"{ \n\"codeName\": \"days\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.marketOrders.orderStatistics\",\n \"decimals\": 2\n}","id":"8dba345d-5995-4973-a80f-99cd5c07d106","savedPayload":{"position":{"x":25887.667672269054,"y":25266.344134651317},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Lock","config":"{\n \"codeName\": \"lock\",\n \"isString\": true\n}","id":"8255158c-b589-4b7b-9f8e-c66ec0ee1ed3","savedPayload":{"position":{"x":25651.824477431885,"y":25119.079855006326},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 1","config":"{ \n\"codeName\": \"userDefinedStatistic1\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.marketOrders.orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 0\n}","id":"9b78302a-2d32-45e1-84c9-7fa34ea3f378","savedPayload":{"position":{"x":25435.445588021063,"y":24944.45463207271},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 2","config":"{ \n\"codeName\": \"userDefinedStatistic2\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.marketOrders.orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 1\n}","id":"bb170388-df93-4218-a35b-dcf7a42d261b","savedPayload":{"position":{"x":25241.710633247047,"y":24745.037351924475},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 3","config":"{ \n\"codeName\": \"userDefinedStatistic3\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.marketOrders.orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 2\n}","id":"6067ba50-8879-4d74-8bc6-11b77677fbea","savedPayload":{"position":{"x":25073.418101964286,"y":24523.714657332872},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Base Asset","config":"{\n \"codeName\": \"sizeInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.marketOrders.orderBaseAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"5bdb31c2-8bfb-4ac9-8492-3d3d76c20e71","savedPayload":{"position":{"x":24933.03001824433,"y":24283.71956279404},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Quoted Asset","config":"{\n \"codeName\": \"sizeInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.marketOrders.orderQuotedAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"eaf268d2-5576-4da0-9d30-708bd68f7a9c","savedPayload":{"position":{"x":24822.59380472023,"y":24028.551628895257},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Base Asset","config":"{\n \"codeName\": \"sizeFilledInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.marketOrders.orderBaseAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"a050f0e0-b844-4c9f-ad32-85af779a59d5","savedPayload":{"position":{"x":24743.72007121174,"y":23761.931080022663},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Quoted Asset","config":"{\n \"codeName\": \"sizeFilledInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.marketOrders.orderQuotedAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"fb89644d-9ce1-4ee5-8b4a-ccbcff36ac8b","savedPayload":{"position":{"x":24697.559475743044,"y":23487.74395604816},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Base Asset","config":"{ \n\"codeName\": \"feesPaidInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.marketOrders.orderBaseAsset\",\n \"childProperty\": \"feesPaid\"\n}","id":"fd00ddf7-d367-4ea6-a289-a29a15b41aab","savedPayload":{"position":{"x":24684.786760604784,"y":23210.180945600798},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Quoted Asset","config":"{ \n\"codeName\": \"feesPaidInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.marketOrders.orderQuotedAsset\",\n \"childProperty\": \"feesPaid\"\n}","id":"9e87631f-fcf4-4d3d-837d-82e7d12bf94f","savedPayload":{"position":{"x":24705.59836997145,"y":22932.848413909927},"targetPosition":{"x":26986.958281556967,"y":23243.371716820755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9292833c-b6ec-4734-b6ec-552aeecb540d","savedPayload":{"position":{"x":26986.958281556967,"y":23243.371716820755},"targetPosition":{"x":27570.994962520723,"y":21012.819025643053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}},"id":"6df1ac87-92d5-4788-b0bc-f3543b283ef0","savedPayload":{"position":{"x":27294.263437389254,"y":19547.2248360226},"targetPosition":{"x":27192.95947914759,"y":18936.86489183738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Last Market Order","id":"05aa37c8-9f6d-4276-96a6-3123707e7686"}}},{"type":"Product Definition","name":"Last Limit Order","config":"{ \n \"codeName\": \"Last-Limit-Order\", \n \"singularVariableName\": \"lastLimitOrder\", \n \"pluralVariableName\": \"lastLimitOrders\",\n \"nodePath\": \"tradingEngine.last.limitOrders\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"f9263cd7-460d-461c-be7b-ed2a69d38d11","savedPayload":{"position":{"x":27927.652205867147,"y":22062.23381902825},"targetPosition":{"x":27414.36417226283,"y":21028.903345200004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"f3d5b047-d9c2-4e71-8fce-6e9be3499556","savedPayload":{"position":{"x":27492.99640976427,"y":22179.980409343338},"targetPosition":{"x":27414.36417226283,"y":21028.903345200004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Exchange Id","config":"{\n \"codeName\": \"exchangeId\",\n \"isString\": true\n}","id":"f5ab0d81-63ce-48d6-99f8-51c6bf2a6e97","savedPayload":{"position":{"x":28757.29539111899,"y":24205.948503136144},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Serial Number","config":"{\n \"codeName\": \"serialNumber\",\n \"isString\": false\n}","id":"6e9e3c64-3e53-4049-b251-3a9e1e63b24c","savedPayload":{"position":{"x":28622.593315860904,"y":24449.265362983613},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Identifier","config":"{\n \"codeName\": \"identifier\",\n \"isString\": true\n}","id":"53856545-fe51-4ec7-bbb0-e398eb6fdbd0","savedPayload":{"position":{"x":28459.572161109445,"y":24674.521184881913},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"4b0399dd-39b4-4ef5-9c57-48f7a2465581","savedPayload":{"position":{"x":28270.59362619548,"y":24878.475793710004},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"552cb522-d091-446c-b0c7-8644d9a39e9c","savedPayload":{"position":{"x":28058.411077065488,"y":25058.161701486013},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Rate","config":"{ \n\"codeName\": \"rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"34b51b42-1c7f-4691-81ff-e3baba398a2c","savedPayload":{"position":{"x":27826.1178972329,"y":25210.96062058306},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"4b2251b9-462f-4b9b-850c-2848dac1d08b","savedPayload":{"position":{"x":27577.101159591613,"y":25334.64516321163},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"22e3ead2-3ec4-437f-99d4-eb1cf2465f34","savedPayload":{"position":{"x":27314.991955873196,"y":25427.41207822356},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Order Name","config":"{ \n\"codeName\": \"orderName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"f1ba05d1-f727-4495-9bf9-aeb656da4e7b","savedPayload":{"position":{"x":27043.612353740984,"y":25487.9087835085},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Situation Name","config":"{ \n\"codeName\": \"situationName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"53acfd34-51ce-49b9-b42a-03706b2e7a86","savedPayload":{"position":{"x":26766.91962716287,"y":25515.253184783483},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Algorithm Name","config":"{ \n\"codeName\": \"algorithmName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"1f8cb548-32a3-49c3-b1b1-20eb6130c58c","savedPayload":{"position":{"x":26489.14764329169,"y":25509.046604905554},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Periods","config":"{ \n\"codeName\": \"periods\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.limitOrders.orderCounters\"\n}","id":"d4c99d02-1038-4ee5-8f67-6804d89ab65e","savedPayload":{"position":{"x":26213.951699624464,"y":25469.37957823601},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Percentage Filled","config":"{\n \"codeName\": \"percentageFilled\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.limitOrders.orderStatistics\",\n \"decimals\": 2\n}","id":"fbd59c15-2863-4257-9211-7492ebb69c93","savedPayload":{"position":{"x":25945.543712181363,"y":25396.830555835273},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Actual Rate","config":"{ \n\"codeName\": \"actualRate\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.limitOrders.orderStatistics\"\n}","id":"ead97685-20c5-44a7-b86c-33e7a55e416a","savedPayload":{"position":{"x":25687.88938050215,"y":25292.48583487256},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Days","config":"{ \n\"codeName\": \"days\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.limitOrders.orderStatistics\",\n \"decimals\": 2\n}","id":"97b1f010-04b2-4016-b313-48ea865b49a4","savedPayload":{"position":{"x":25444.590092747294,"y":25157.78966093644},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Lock","config":"{\n \"codeName\": \"lock\",\n \"isString\": true\n}","id":"eba510cb-b866-45ba-984e-153216f4f3c6","savedPayload":{"position":{"x":25219.307811745297,"y":24994.737700621405},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 1","config":"{ \n\"codeName\": \"userDefinedStatistic1\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.limitOrders.orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 0\n}","id":"af94d067-ae2f-4610-b546-6d97904957e2","savedPayload":{"position":{"x":25015.40198363228,"y":24805.791387303416},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 2","config":"{ \n\"codeName\": \"userDefinedStatistic2\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.limitOrders.orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 1\n}","id":"839364f2-db1b-4bfd-b61c-015e70f5d171","savedPayload":{"position":{"x":24835.721533870572,"y":24593.613394023192},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 3","config":"{ \n\"codeName\": \"userDefinedStatistic3\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.limitOrders.orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 2\n}","id":"919ab388-ca0a-4d89-b0ea-929090ef1bf8","savedPayload":{"position":{"x":24682.92489758351,"y":24361.321816524407},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Base Asset","config":"{\n \"codeName\": \"sizeInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.limitOrders.orderBaseAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"1cd292aa-6c43-44ad-90e3-6f49f71be40f","savedPayload":{"position":{"x":24559.241944939586,"y":24112.30573935261},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Quoted Asset","config":"{\n \"codeName\": \"sizeInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.limitOrders.orderQuotedAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"9abd9e70-fad1-4da5-86b8-fb5e1daf6a2a","savedPayload":{"position":{"x":24466.476452169758,"y":23850.196192187243},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Base Asset","config":"{\n \"codeName\": \"sizeFilledInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.limitOrders.orderBaseAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"3819475a-dec6-4cd3-8d9a-c10a9193d592","savedPayload":{"position":{"x":24405.981405491424,"y":23578.814651056284},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Quoted Asset","config":"{\n \"codeName\": \"sizeFilledInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.limitOrders.orderQuotedAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"034fc727-1072-4cbf-8540-693d0a34d4e6","savedPayload":{"position":{"x":24378.639630121645,"y":23302.116628141834},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Base Asset","config":"{ \n\"codeName\": \"feesPaidInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.limitOrders.orderBaseAsset\",\n \"childProperty\": \"feesPaid\"\n}","id":"598761f1-33e1-4edb-bff9-33b2b8ba2933","savedPayload":{"position":{"x":24384.85185430105,"y":23024.329571322207},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Quoted Asset","config":"{ \n\"codeName\": \"feesPaidInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.last.limitOrders.orderQuotedAsset\",\n \"childProperty\": \"feesPaid\"\n}","id":"182d9d37-1cef-43ed-93c8-7b9bebdf150f","savedPayload":{"position":{"x":24424.540744450747,"y":22749.0639075769},"targetPosition":{"x":26679.34531027367,"y":23214.53492808803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e82595f6-184f-4a0c-8385-1364f22ea8e0","savedPayload":{"position":{"x":26679.34531027367,"y":23214.53492808803},"targetPosition":{"x":27414.36417226283,"y":21028.903345200004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}},"id":"c24ec6a1-e937-4d20-93eb-4faf2a0becc3","savedPayload":{"position":{"x":27019.426096769414,"y":19530.848580772188},"targetPosition":{"x":27192.95947914759,"y":18936.86489183738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Last Limit Order","id":"2284d48f-cf52-4277-b81e-c62afef88b71"}}}],"productDefinitionFolders":[],"id":"1e82c85a-37f7-4610-a982-e14ab71a5286","savedPayload":{"position":{"x":26436.15327713786,"y":18896.740720991056},"targetPosition":{"x":26117.30196400881,"y":18609.762568861108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"db019824-6897-461b-b39b-ebe905a84231","savedPayload":{"position":{"x":25751.185029836644,"y":18582.007554555723},"targetPosition":{"x":25341.164459522937,"y":18714.90217526442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition Folder","name":"Trading System","products":[{"type":"Product Definition","name":"Trading System Errors","config":"{\n \"codeName\": \"Trading-System-Errors\",\n \"singularVariableName\": \"tradingSystemError\",\n \"pluralVariableName\": \"tradingSystemErrors\",\n \"nodePath\": \"tradingSystem\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"2ef33675-fc52-49fd-a8ef-bc5da1711dd1","savedPayload":{"position":{"x":30259.328056387043,"y":17140.990608864548},"targetPosition":{"x":29414.885198532895,"y":17927.320473959357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"2d0dd4c2-4f4c-4d8c-b9a5-9ca62f186369","savedPayload":{"position":{"x":30495.98683267099,"y":17524.0480547432},"targetPosition":{"x":29414.885198532895,"y":17927.320473959357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"49f8debb-5e74-467d-be5a-4d0cb9695709","savedPayload":{"position":{"x":31411.84809673337,"y":17182.786907461825},"targetPosition":{"x":30568.007004511688,"y":17968.415537430817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"1129b6b6-a686-4f24-b37f-f2a503586a19","savedPayload":{"position":{"x":31720.25693079482,"y":18009.42464417054},"targetPosition":{"x":30568.007004511688,"y":17968.415537430817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Errors","config":"{\n \"codeName\": \"errors\",\n \"isString\": false\n}","id":"e994737a-9a14-40f0-8ad0-a151c799a094","savedPayload":{"position":{"x":31353.812686941055,"y":18812.228869443607},"targetPosition":{"x":30568.007004511688,"y":17968.415537430817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cbcd5cb4-66b1-4535-9592-0164a480b7f7","savedPayload":{"position":{"x":30568.007004511688,"y":17968.415537430817},"targetPosition":{"x":29414.885198532895,"y":17927.320473959357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"1d9c570d-77c7-40ac-a61e-c5a57a411de8","savedPayload":{"position":{"x":26412.175336801964,"y":18432.107601309548},"targetPosition":{"x":26117.53900440294,"y":18854.08182911797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Errors","id":"64684730-d049-4d3c-8013-b48c5438417e"}}},{"type":"Product Definition","name":"Trading System Highlights","config":"{\n \"codeName\": \"Trading-System-Highlights\",\n \"singularVariableName\": \"tradingSystemHighlight\",\n \"pluralVariableName\": \"tradingSystemHighlights\",\n \"nodePath\": \"tradingSystem\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"6e0f951c-25e7-4b92-85da-8be04d424bd0","savedPayload":{"position":{"x":30000.367351579298,"y":16731.20182549975},"targetPosition":{"x":29276.755918682018,"y":17629.40471550498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"fa53ecfb-a558-4810-b6f8-1f9c6c8bfc5b","savedPayload":{"position":{"x":30289.056076963487,"y":17076.565993803477},"targetPosition":{"x":29276.755918682018,"y":17629.40471550498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"9fefb3c2-2293-4ffa-8db8-9430dd662bcf","savedPayload":{"position":{"x":31146.450970566275,"y":16609.201581072903},"targetPosition":{"x":30423.591905437104,"y":17506.228416797097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"431d65d9-1f6d-4e73-8655-cbf36854d3cf","savedPayload":{"position":{"x":31569.058946223366,"y":17383.158871542164},"targetPosition":{"x":30423.591905437104,"y":17506.228416797097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Highlights","config":"{\n \"codeName\": \"highlights\",\n \"isString\": false\n}","id":"6355df8f-6845-4652-8ebc-90468c526949","savedPayload":{"position":{"x":31320.68408519307,"y":18228.886150477916},"targetPosition":{"x":30423.591905437104,"y":17506.228416797097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"af6916b9-83d1-478b-ac92-35ea4f9b8a46","savedPayload":{"position":{"x":30423.591905437104,"y":17506.228416797097},"targetPosition":{"x":29276.755918682018,"y":17629.40471550498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"319f660a-78be-4cf4-8052-877837cad806","savedPayload":{"position":{"x":26533.05699796752,"y":18546.536577914245},"targetPosition":{"x":26117.53900440294,"y":18854.08182911797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Highlights","id":"d979c9f0-530a-41d3-a357-b57a3e4f2201"}}},{"type":"Product Definition","name":"Trading System Values","config":"{\n \"codeName\": \"Trading-System-Values\",\n \"singularVariableName\": \"tradingSystemValue\",\n \"pluralVariableName\": \"tradingSystemValues\",\n \"nodePath\": \"tradingSystem\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"9c4ec2f8-f4a8-45b9-aba3-b093a7b8f86a","savedPayload":{"position":{"x":30136.63651978932,"y":16931.790797988113},"targetPosition":{"x":29350.82458470506,"y":17776.038810025504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"b3d3fe62-e714-4cb9-a78d-55bc0add1d7c","savedPayload":{"position":{"x":30399.944252055826,"y":17296.849194093007},"targetPosition":{"x":29350.82458470506,"y":17776.038810025504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"956e9238-3cd9-4258-9295-77d3ad473508","savedPayload":{"position":{"x":31288.408682554822,"y":16891.941787242176},"targetPosition":{"x":30503.462528679873,"y":17735.02552803476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"dbb03ed7-1d1f-4105-b559-eac7b4d8d4d9","savedPayload":{"position":{"x":31654.70353465539,"y":17693.99698365749},"targetPosition":{"x":30503.462528679873,"y":17735.02552803476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Values","config":"{\n \"codeName\": \"values\",\n \"isString\": false\n}","id":"2349e00c-f032-432b-8c9a-07c1606574e8","savedPayload":{"position":{"x":31346.74971871586,"y":18519.750512801613},"targetPosition":{"x":30503.462528679873,"y":17735.02552803476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a65db5f6-3b75-435d-8155-2e2c7af39279","savedPayload":{"position":{"x":30503.462528679873,"y":17735.02552803476},"targetPosition":{"x":29350.82458470506,"y":17776.038810025504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"c90c009b-588d-45d4-aff1-05e375181dfa","savedPayload":{"position":{"x":26609.809831496514,"y":18691.948506576162},"targetPosition":{"x":26117.53900440294,"y":18854.08182911797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Values","id":"476925ed-e2ac-443d-82f3-501b64ca6c87"}}},{"type":"Product Definition","name":"Trading System Status","config":"{\n \"codeName\": \"Trading-System-Status\",\n \"singularVariableName\": \"tradingSystemState\",\n \"pluralVariableName\": \"tradingSystemStatus\",\n \"nodePath\": \"tradingSystem\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"2b83dc93-dc14-44d9-8f8c-889f39a952da","savedPayload":{"position":{"x":30364.394890856223,"y":17359.569882865562},"targetPosition":{"x":29466.430670259666,"y":18083.371668706048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"0f8dcda3-1eab-439d-956c-c6eb9b1c481f","savedPayload":{"position":{"x":30573.054522546914,"y":17758.363627155337},"targetPosition":{"x":29466.430670259666,"y":18083.371668706048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"214b03c2-5fc3-4157-bcfd-4796b0565d98","savedPayload":{"position":{"x":31510.0895540162,"y":17483.710388430332},"targetPosition":{"x":30613.147126492622,"y":18206.494607374418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"78c4b87a-592d-49ca-9c8c-f5d0dae8d7ba","savedPayload":{"position":{"x":31758.541209769184,"y":18329.422107616345},"targetPosition":{"x":30613.147126492622,"y":18206.494607374418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{\n \"codeName\": \"status\",\n \"isString\": false\n}","id":"fdb4b903-20ff-4a67-a03f-f02e67b5d81b","savedPayload":{"position":{"x":31336.030359036282,"y":19103.455801678523},"targetPosition":{"x":30613.147126492622,"y":18206.494607374418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"04b0fd4c-df6f-40df-9567-60a735d126e6","savedPayload":{"position":{"x":30613.147126492622,"y":18206.494607374418},"targetPosition":{"x":29466.430670259666,"y":18083.371668706048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"eed48c80-35c5-49fa-b12d-18e7280ffb8f","savedPayload":{"position":{"x":26636.590007559622,"y":18853.17893584097},"targetPosition":{"x":26117.53900440294,"y":18854.08182911797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Status","id":"0437448d-8740-496b-8fce-d3804be81a2b"}}},{"type":"Product Definition","name":"Trading System Progress","config":"{\n \"codeName\": \"Trading-System-Progress\",\n \"singularVariableName\": \"tradingSystemProgress\",\n \"pluralVariableName\": \"tradingSystemProgresses\",\n \"nodePath\": \"tradingSystem\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"77735fc0-9ce6-4dec-a3ad-8075a22eda40","savedPayload":{"position":{"x":30454.722749796012,"y":17584.64889897098},"targetPosition":{"x":29507.403545221547,"y":18242.551261110555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"2fde11bd-4515-4a4e-9dc0-f6869dd3a04e","savedPayload":{"position":{"x":30634.386418144666,"y":17997.321545665738},"targetPosition":{"x":29507.403545221547,"y":18242.551261110555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"076e6f4d-1b05-42e1-abc6-c50c935ef056","savedPayload":{"position":{"x":31588.517078321285,"y":17790.201150340763},"targetPosition":{"x":30642.29009981502,"y":18447.143281635657},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"280a33ea-29cc-41ab-9ffc-31c38a8e8d60","savedPayload":{"position":{"x":31775.995238481064,"y":18651.505575723993},"targetPosition":{"x":30642.29009981502,"y":18447.143281635657},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Progress","config":"{\n \"codeName\": \"progress\",\n \"isString\": false\n}","id":"5964f3e5-82af-47de-9492-19c634d4f5ad","savedPayload":{"position":{"x":31299.26648005415,"y":19393.34832394855},"targetPosition":{"x":30642.29009981502,"y":18447.143281635657},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"218da162-dd8c-4f77-9150-3d2eee6e6e0d","savedPayload":{"position":{"x":30642.29009981502,"y":18447.143281635657},"targetPosition":{"x":29507.403545221547,"y":18242.551261110555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"04c8606b-5e59-4e7d-b3ac-387bfffcd300","savedPayload":{"position":{"x":26611.167207767343,"y":19013.992814232442},"targetPosition":{"x":26117.53900440294,"y":18854.08182911797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Progress","id":"99aecc8d-2bc4-4748-b642-78888c2d35eb"}}},{"type":"Product Definition","name":"Trading System Running","config":"{\n \"codeName\": \"Trading-System-Running\",\n \"singularVariableName\": \"tradingSystemRun\",\n \"pluralVariableName\": \"tradingSystemRunning\",\n \"nodePath\": \"tradingSystem\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"c7b45884-6cdf-43f7-a1e5-c5325effd207","savedPayload":{"position":{"x":30528.43549475136,"y":17815.647167925275},"targetPosition":{"x":29536.611101344206,"y":18404.282153583918},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"a21cbc62-e6d8-4286-b0ff-430071d46700","savedPayload":{"position":{"x":30678.189514144302,"y":18240.056549590572},"targetPosition":{"x":29536.611101344206,"y":18404.282153583918},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"42cccc8c-a020-4cb2-8a40-4d3dacc86597","savedPayload":{"position":{"x":31644.57882061422,"y":18101.650987076755},"targetPosition":{"x":30653.875127317224,"y":18689.422244707068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"7fc1205e-ad17-40d0-bb05-21e8d1842b7c","savedPayload":{"position":{"x":31770.082705430897,"y":18974.16689829187},"targetPosition":{"x":30653.875127317224,"y":18689.422244707068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Running","config":"{\n \"codeName\": \"running\",\n \"isString\": false\n}","id":"7c7cb8f0-6d6d-4761-b51c-70ee77c05811","savedPayload":{"position":{"x":31241.640224813826,"y":19680.069673896403},"targetPosition":{"x":30653.875127317224,"y":18689.422244707068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f2bf57f0-e966-4b75-a95f-ba206c266dae","savedPayload":{"position":{"x":30653.875127317224,"y":18689.422244707068},"targetPosition":{"x":29536.611101344206,"y":18404.282153583918},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"17236f59-6ef2-4cc3-913c-1ff6db052236","savedPayload":{"position":{"x":26537.403849769515,"y":19158.840335115845},"targetPosition":{"x":26117.53900440294,"y":18854.08182911797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Running","id":"ac1e8218-af24-491f-a552-736d83d68c01"}}},{"type":"Product Definition","name":"Trading System Announcements","config":"{\n \"codeName\": \"Trading-System-Announcements\",\n \"singularVariableName\": \"tradingSystemAnnouncement\",\n \"pluralVariableName\": \"tradingSystemAnnouncements\",\n \"nodePath\": \"tradingSystem\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"9e29a710-30c0-4faa-b71a-f4ee109673a2","savedPayload":{"position":{"x":30585.568260414508,"y":18051.28413593987},"targetPosition":{"x":29554.175036759447,"y":18567.715011417087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"b7e24195-a9d0-45e7-9dba-447db8000feb","savedPayload":{"position":{"x":30704.567150542,"y":18485.310021471825},"targetPosition":{"x":29554.175036759447,"y":18567.715011417087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"0487c17a-d445-4d37-b186-dc0e79e0dae7","savedPayload":{"position":{"x":31678.812564431326,"y":18416.36880072719},"targetPosition":{"x":30648.449689478268,"y":18932.039291835805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.candle\"\n}","id":"cb847e27-30fe-43af-9b5f-19de453cc5f7","savedPayload":{"position":{"x":31741.682017095303,"y":19295.802783879048},"targetPosition":{"x":30648.449689478268,"y":18932.039291835805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Announcements","config":"{\n \"codeName\": \"announcements\",\n \"isString\": false\n}","id":"b3aaeae8-ed67-4830-a49c-13baada2bc11","savedPayload":{"position":{"x":31164.129988557324,"y":19962.295085108723},"targetPosition":{"x":30648.449689478268,"y":18932.039291835805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"73ef953c-001b-474e-9221-23375777f3f3","savedPayload":{"position":{"x":30648.449689478268,"y":18932.039291835805},"targetPosition":{"x":29554.175036759447,"y":18567.715011417087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"4a6f828a-9671-431e-8257-fc920943581e","savedPayload":{"position":{"x":26422.506407593886,"y":19273.638748679074},"targetPosition":{"x":26117.53900440294,"y":18854.08182911797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Announcements","id":"0a3b8bea-749a-48ce-8b53-e4a731555b98"}}},{"type":"Product Definition","name":"Trading System Warnings","config":"{\n \"codeName\": \"Trading-System-Warnings\",\n \"singularVariableName\": \"tradingSystemWarning\",\n \"pluralVariableName\": \"tradingSystemWarnings\",\n \"nodePath\": \"tradingSystem\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"0381cc1b-24c3-4705-9c76-94129e8605ff","savedPayload":{"position":{"x":28714.504514184282,"y":22614.759522713808},"targetPosition":{"x":28032.122354577456,"y":21433.021556108666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"b93b5cc3-7d61-4071-8eba-de15a4fea64b","savedPayload":{"position":{"x":28209.177164352805,"y":22785.393752926357},"targetPosition":{"x":28032.122354577456,"y":21433.021556108666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"9de05c23-cce3-4229-bb5b-6d893a7caf2b","savedPayload":{"position":{"x":28360.32502056348,"y":23931.970165968494},"targetPosition":{"x":27678.845166886098,"y":22751.508623797254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"64348c8c-f29d-4dc0-9028-18f02e8b03a3","savedPayload":{"position":{"x":27326.13553984876,"y":24068.142382361453},"targetPosition":{"x":27678.845166886098,"y":22751.508623797254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Warnings","config":"{\n \"codeName\": \"warnings\",\n \"isString\": false\n}","id":"0d7f3ba2-e9a0-42b0-aaca-02d1911fa209","savedPayload":{"position":{"x":26498.375821186833,"y":23432.988283132458},"targetPosition":{"x":27678.845166886098,"y":22751.508623797254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f6021fb9-4897-4984-8475-bf136233005e","savedPayload":{"position":{"x":27678.845166886098,"y":22751.508623797254},"targetPosition":{"x":28032.122354577456,"y":21433.021556108666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"34310596-466a-4e9a-a5a2-256b0fe3e339","savedPayload":{"position":{"x":26277.87081584964,"y":19347.543222167336},"targetPosition":{"x":26117.53900440294,"y":18854.08182911797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Warnings","id":"a9709093-95c1-4b1b-aeb5-329c7505ab75"}}},{"type":"Product Definition","name":"Trading System Infos","config":"{\n \"codeName\": \"Trading-System-Infos\",\n \"singularVariableName\": \"tradingSystemInfo\",\n \"pluralVariableName\": \"tradingSystemInfos\",\n \"nodePath\": \"tradingSystem\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"cd834a3e-1b23-4e15-a068-59c235a90f89","savedPayload":{"position":{"x":26234.435218569728,"y":19540.341837747954},"targetPosition":{"x":26099.291914641053,"y":19369.409463802458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"e24a4dcf-5adb-4c63-b9db-3ba2a7ece789","savedPayload":{"position":{"x":26133.990100330087,"y":19671.278451639322},"targetPosition":{"x":26099.291914641053,"y":19369.409463802458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"a3502c18-91c5-467b-aab5-deb330bf44bc","savedPayload":{"position":{"x":26048.79993326843,"y":19642.949663787564},"targetPosition":{"x":25999.715458863902,"y":19435.693395246937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.cycle\"\n}","id":"7b3f0c7c-1bb1-4477-af46-5cccfe2309cb","savedPayload":{"position":{"x":25880.8542798649,"y":19651.75253173432},"targetPosition":{"x":25999.715458863902,"y":19435.693395246937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Infos","config":"{\n \"codeName\": \"infos\",\n \"isString\": false\n}","id":"2f73152b-cbcf-462d-ba3a-d35417d2ca9c","savedPayload":{"position":{"x":25820.70581951337,"y":19482.078255596687},"targetPosition":{"x":25999.715458863902,"y":19435.693395246937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"60ed1049-434c-45e8-9a49-e7561cdb3d6b","savedPayload":{"position":{"x":25999.715458863902,"y":19435.693395246937},"targetPosition":{"x":26099.291914641053,"y":19369.409463802458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"020ad519-0fc6-4f2f-9f26-b2c7de118fb8","savedPayload":{"position":{"x":26099.291914641053,"y":19369.409463802458},"targetPosition":{"x":26117.53900440294,"y":18854.08182911797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Infos","id":"f175df3b-a277-44bc-88db-dcf6b0e3fa38"}}}],"productDefinitionFolders":[],"id":"57d56564-1a8f-4ee9-acfb-389ec2d3375a","savedPayload":{"position":{"x":25751.007500358483,"y":18847.97438693458},"targetPosition":{"x":25341.164459522937,"y":18714.90217526442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition Folder","name":"Objects","products":[{"type":"Product Definition","name":"Episodes","config":"{\n \"codeName\": \"Episode-Objects\",\n \"singularVariableName\": \"episodeObject\",\n \"pluralVariableName\": \"episodeObjects\",\n \"nodePath\": \"tradingEngine.current.episode\",\n \"saveAsObjects\": true,\n \"propertyNameThatDefinesObject\": \"status\",\n \"propertyValueThatClosesObject\": \"Closed\",\n \"propertyValueThatPreventsSavingObject\": \"Not Open\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"38264ecd-10e7-4a62-a2ca-9b607c30e72c","savedPayload":{"position":{"x":26223.019038845774,"y":18848.005832426872},"targetPosition":{"x":25973.4146504407,"y":18996.684506986174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"cdc39b61-9aa5-46d5-9e80-915e0c2d545d","savedPayload":{"position":{"x":26263.249196573623,"y":18977.97656009146},"targetPosition":{"x":25973.4146504407,"y":18996.684506986174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Serial Number","config":"{\n \"codeName\": \"serialNumber\",\n \"isString\": false\n}","id":"e7c507b1-7d60-4f5d-9213-4001c116852a","savedPayload":{"position":{"x":27036.61538034644,"y":18479.870998442904},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Identifier","config":"{\n \"codeName\": \"identifier\",\n \"isString\": true\n}","id":"387fc08a-670c-4ca7-a2b9-449d1abc17fb","savedPayload":{"position":{"x":27130.815434408945,"y":18521.98473452177},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"2cea2a9b-293e-4b6c-8266-25ab09d94a1c","savedPayload":{"position":{"x":27213.839142280736,"y":18574.706087722072},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"811f4049-1507-4cd0-a57b-8d38f0cefa79","savedPayload":{"position":{"x":27288.003119895096,"y":18635.61165386559},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"a25505b8-3a79-44c0-9a65-84c2acbde853","savedPayload":{"position":{"x":27353.42376471668,"y":18704.165271304773},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"f06dc26f-dcd7-46d8-af5a-177db0354b16","savedPayload":{"position":{"x":27410.01996450401,"y":18779.42418461227},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Rate","config":"{ \n\"codeName\": \"beginRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"2c462bdb-cad9-4589-add4-10fdafa4b432","savedPayload":{"position":{"x":27457.226217153715,"y":18860.54895691462},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Rate","config":"{ \n\"codeName\": \"endRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"e3ea261e-5586-4578-97f6-e5d7139c6641","savedPayload":{"position":{"x":27494.633045580063,"y":18946.470838705744},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hits In Base Asset","config":"{ \n\"codeName\": \"hitsInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeBaseAsset\",\n \"childProperty\": \"hits\",\n \"decimals\": 0\n}","id":"d4a1ae83-0774-49f5-8780-f3db92e7ac59","savedPayload":{"position":{"x":27521.739571250415,"y":19036.094620151634},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fails In Base Asset","config":"{ \n\"codeName\": \"failsInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeBaseAsset\",\n \"childProperty\": \"fails\",\n \"decimals\": 0\n}","id":"39600b8b-e28f-4c5b-a44c-3a816c43a439","savedPayload":{"position":{"x":27538.259985701112,"y":19128.22168198518},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hit Ratio In Base Asset","config":"{ \n\"codeName\": \"hitRatioInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeBaseAsset\",\n \"childProperty\": \"hitRatio\",\n \"decimals\": 2\n}","id":"f59830d2-1d39-47ff-b008-41c202c5f131","savedPayload":{"position":{"x":27543.910770333372,"y":19221.6221268398},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Profit Loss In Base Asset","config":"{ \n\"codeName\": \"profitLossInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeBaseAsset\",\n \"childProperty\": \"profitLoss\",\n \"decimals\": 10\n}","id":"02dfb7e5-a203-4c49-8ffc-6addba0f06c7","savedPayload":{"position":{"x":27538.671133114483,"y":19315.02787763802},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ROI In Base Asset","config":"{ \n\"codeName\": \"ROIInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeBaseAsset\",\n \"childProperty\": \"ROI\",\n \"decimals\": 10\n}","id":"6bc1b577-8926-4c00-9091-3ddf6e86d105","savedPayload":{"position":{"x":27522.62768274374,"y":19407.185969169586},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Annualized Rate Of ReturnIn Base Asset","config":"{ \n\"codeName\": \"annualizedRateOfReturnInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeBaseAsset\",\n \"childProperty\": \"annualizedRateOfReturn\",\n \"decimals\": 2\n}","id":"39e77c8f-3f22-45ea-8ad8-d28f7c0f3c0f","savedPayload":{"position":{"x":27495.990405955446,"y":19496.852695815982},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hit Fail In Base Asset","config":"{ \n\"codeName\": \"hitFailInBaseAsset\",\n\"isString\": true,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeBaseAsset\",\n \"childProperty\": \"hitFail\"\n}","id":"e8384c2c-39b2-4d47-9828-f4968a6bc4e7","savedPayload":{"position":{"x":27459.126273107413,"y":19582.820076140804},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hits In Quoted Asset","config":"{ \n\"codeName\": \"hitsInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeQuotedAsset\",\n \"childProperty\": \"hits\",\n \"decimals\": 0\n}","id":"b31c6ade-c339-4129-ac5c-2383a9443c85","savedPayload":{"position":{"x":27412.52909981899,"y":19663.924235695176},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fails In Quoted Asset","config":"{ \n\"codeName\": \"failsInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeQuotedAsset\",\n \"childProperty\": \"fails\",\n \"decimals\": 0\n}","id":"0fe968f9-77ec-4258-bb12-7ac592665cf5","savedPayload":{"position":{"x":27356.83226136074,"y":19739.07096097746},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hit Ratio In Quoted Asset","config":"{ \n\"codeName\": \"hitRatioInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeQuotedAsset\",\n \"childProperty\": \"hitRatio\",\n \"decimals\": 2\n}","id":"5bbf2817-e7ed-4795-aecc-5ccefb04b6c1","savedPayload":{"position":{"x":27292.786492866682,"y":19807.24206178784},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Profit Loss In Quoted Asset","config":"{ \n\"codeName\": \"profitLossInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeQuotedAsset\",\n \"childProperty\": \"profitLoss\",\n \"decimals\": 10\n}","id":"ae87f4f0-2dd4-4484-a803-b06096fbff58","savedPayload":{"position":{"x":27221.25952279782,"y":19867.517250126286},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ROI In Quoted Asset","config":"{ \n\"codeName\": \"ROIInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeQuotedAsset\",\n \"childProperty\": \"ROI\",\n \"decimals\": 10\n}","id":"3dd87ddc-a9a9-4f94-8c14-ca651cb6b644","savedPayload":{"position":{"x":27143.21761970144,"y":19919.07979723067},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Annualized Rate Of ReturnIn Quoted Asset","config":"{ \n\"codeName\": \"annualizedRateOfReturnInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeQuotedAsset\",\n \"childProperty\": \"annualizedRateOfReturn\",\n \"decimals\": 2\n}","id":"8826c757-479b-498e-91ec-ccee35f9eef0","savedPayload":{"position":{"x":27059.717026887512,"y":19961.233551334604},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hit Fail In Quoted Asset","config":"{ \n\"codeName\": \"hitFailInQuotedAsset\",\n\"isString\": true,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeQuotedAsset\",\n \"childProperty\": \"hitFail\"\n}","id":"aa3d008e-90a1-4e76-a389-68206925a8ee","savedPayload":{"position":{"x":26971.88672980518,"y":19993.40763112111},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Balance In Base Asset","config":"{ \n\"codeName\": \"beginBalanceInBaseAsset\",\n\"isString\": true,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeBaseAsset\",\n \"childProperty\": \"beginBalance\"\n}","id":"a6826d46-bf05-4988-9314-8e41a3ecfce9","savedPayload":{"position":{"x":26880.914886480547,"y":20015.16839930304},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Balance In Base Asset","config":"{ \n\"codeName\": \"endBalanceInBaseAsset\",\n\"isString\": true,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeBaseAsset\",\n \"childProperty\": \"endBalance\"\n}","id":"93c0d5a2-06cd-4bd9-bd2c-49fbab7d2bdb","savedPayload":{"position":{"x":26788.031490251695,"y":20026.22296944462},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Balance In Quoted Asset","config":"{ \n\"codeName\": \"beginBalanceInQuotedAsset\",\n\"isString\": true,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeQuotedAsset\",\n \"childProperty\": \"beginBalance\"\n}","id":"fcf98b55-f145-484d-91ce-6e3417e3760d","savedPayload":{"position":{"x":26694.49821488556,"y":20026.372459403272},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Balance In Quoted Asset","config":"{ \n\"codeName\": \"endBalanceInQuotedAsset\",\n\"isString\": true,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.episode.episodeQuotedAsset\",\n \"childProperty\": \"endBalance\"\n}","id":"e34b3fbc-a578-407d-ba84-055c56d52454","savedPayload":{"position":{"x":26563.682515070694,"y":20004.9321664249},"targetPosition":{"x":26739.647765705682,"y":19223.52798709915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b5c2e7b4-cec1-4975-9abb-af447f80c59e","savedPayload":{"position":{"x":26740.223368681243,"y":19223.726295115604},"targetPosition":{"x":25973.4146504407,"y":18996.684506986174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}},"id":"aeec080e-8caf-4976-8187-ba4e725b73b0","savedPayload":{"position":{"x":26005.037634456676,"y":18993.29123764346},"targetPosition":{"x":25576.28368021663,"y":19038.303483091906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Episode Objects","id":"b7320c91-b8aa-4642-bd11-a1efb2a88d39"}}},{"type":"Product Definition","name":"Strategies","config":"{\n \"codeName\": \"Strategy-Objects\",\n \"singularVariableName\": \"strategyObject\",\n \"pluralVariableName\": \"strategyObjects\",\n \"nodePath\": \"tradingEngine.current.strategy\",\n \"saveAsObjects\": true,\n \"propertyNameThatDefinesObject\": \"status\",\n \"propertyValueThatClosesObject\": \"Closed\",\n \"propertyValueThatPreventsSavingObject\": \"Not Open\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"03d1a187-b188-4ad7-b99e-6e4f6c6f0278","savedPayload":{"position":{"x":30625.95487636486,"y":18290.15315328408},"targetPosition":{"x":29560.016009858016,"y":18731.89054561748},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"58a5a046-53a1-43a7-bb76-0c29d94ef579","savedPayload":{"position":{"x":30713.661142340865,"y":18731.73431686513},"targetPosition":{"x":29560.016009858016,"y":18731.89054561748},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Serial Number","config":"{\n \"codeName\": \"serialNumber\",\n \"isString\": false\n}","id":"ffa3b94b-d147-42eb-943e-4e1661c0b8c4","savedPayload":{"position":{"x":31309.299310163155,"y":18244.7222336191},"targetPosition":{"x":30625.9577305406,"y":19173.528743160252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Identifier","config":"{\n \"codeName\": \"identifier\",\n \"isString\": true\n}","id":"95273be5-fbf1-42a5-87c3-29f5ecbaafa1","savedPayload":{"position":{"x":31511.783815060484,"y":18435.330202040364},"targetPosition":{"x":30625.9577305406,"y":19173.528743160252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"19988cef-f604-49a9-91f5-f8b1c93b0302","savedPayload":{"position":{"x":31662.7144599161,"y":18668.816756824384},"targetPosition":{"x":30625.9577305406,"y":19173.528743160252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"8e1f47f3-3a81-45ed-892e-ea3e21d544c6","savedPayload":{"position":{"x":31753.375658604033,"y":18931.619060445068},"targetPosition":{"x":30625.9577305406,"y":19173.528743160252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Strategy Name","config":"{ \n\"codeName\": \"strategyName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"2bb2239e-adc4-4ad1-9c82-64e03c7c60f3","savedPayload":{"position":{"x":31778.51540976567,"y":19208.273053861463},"targetPosition":{"x":30625.9577305406,"y":19173.528743160252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Index","config":"{ \n\"codeName\": \"index\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"85886ed3-2cbb-4386-b661-d7103a1c63bb","savedPayload":{"position":{"x":31736.674228927972,"y":19483.094330459895},"targetPosition":{"x":30625.9577305406,"y":19173.528743160252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"78491f8d-a68a-4918-ab38-cc9fa8eff27e","savedPayload":{"position":{"x":31630.283363177037,"y":19739.91508837847},"targetPosition":{"x":30625.9577305406,"y":19173.528743160252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Rate","config":"{ \n\"codeName\": \"beginRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"46f41431-bf06-4d5e-93b5-1b64dafb8d6a","savedPayload":{"position":{"x":31465.526553311276,"y":19963.814416432026},"targetPosition":{"x":30625.9577305406,"y":19173.528743160252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Rate","config":"{ \n\"codeName\": \"endRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"b9c2814b-3d92-406b-88ab-78c71e635bd2","savedPayload":{"position":{"x":31251.976574136075,"y":20141.78093803957},"targetPosition":{"x":30625.9577305406,"y":19173.528743160252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Situation Name","config":"{ \n\"codeName\": \"situationName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"b78b86e0-a571-4f94-b837-b237c2043c3c","savedPayload":{"position":{"x":31002.041659169034,"y":20263.471822340292},"targetPosition":{"x":30625.9577305406,"y":19173.528743160252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"f99d1259-33b6-4c61-9332-5b751c1b2439","savedPayload":{"position":{"x":30730.24081253092,"y":20321.812904810526},"targetPosition":{"x":30625.9577305406,"y":19173.528743160252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Periods","config":"{ \n\"codeName\": \"periods\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.strategy.strategyCounters\"\n}","id":"9d920c3c-3693-465f-a5e9-e8ea5dcdfd55","savedPayload":{"position":{"x":30452.52665725288,"y":20313.39752816671},"targetPosition":{"x":30625.9577305406,"y":19173.528743160252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b0192e6c-445b-4b55-b344-b273b268897b","savedPayload":{"position":{"x":30625.9577305406,"y":19173.528743160252},"targetPosition":{"x":29560.016009858016,"y":18731.89054561748},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"q"}}},"id":"21db6fce-8450-4b07-9015-d81a339fd030","savedPayload":{"position":{"x":25970.101393942292,"y":19213.57047541705},"targetPosition":{"x":25576.28368021663,"y":19038.303483091906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Strategy Objects","id":"d54a124c-6029-41a6-9bbd-bb3fe8b1a318"}}}],"productDefinitionFolders":[{"type":"Product Definition Folder","name":"Orders","products":[{"type":"Product Definition","name":"Market Buy Orders","config":"{ \n \"codeName\": \"Market-Buy-Orders-Objects\", \n \"singularVariableName\": \"marketBuyOrdersObject\", \n \"pluralVariableName\": \"marketBuyOrdersObjects\",\n \"nodePathType\": \"array\",\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders\",\n \"saveAsObjects\": true,\n \"propertyNameThatDefinesObject\": \"status\",\n \"propertyValueThatClosesObject\": \"Closed\",\n \"propertyValueThatPreventsSavingObject\": \"Not Open\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"45609efb-0edc-4aa9-bc12-f5b4ca6dc5bf","savedPayload":{"position":{"x":30613.48843772727,"y":19256.891359540317},"targetPosition":{"x":29466.69980977856,"y":19380.39539980232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"5eed53d0-a3e7-4082-b7f1-cb321b3d306b","savedPayload":{"position":{"x":30573.660042619467,"y":19704.61481076354},"targetPosition":{"x":29466.69980977856,"y":19380.39539980232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Exchange Id","config":"{\n \"codeName\": \"exchangeId\",\n \"isString\": true\n}","id":"2b09fe55-b85c-4242-bae1-85a671b006ad","savedPayload":{"position":{"x":31194.106380501442,"y":19304.157553053374},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Serial Number","config":"{\n \"codeName\": \"serialNumber\",\n \"isString\": false\n}","id":"9fdc2c26-3835-4917-b12b-5f1b0bef5a05","savedPayload":{"position":{"x":31288.085825117516,"y":19414.72028771098},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Identifier","config":"{\n \"codeName\": \"identifier\",\n \"isString\": true\n}","id":"f889b073-b78f-4345-bca7-c1943b6f5ee3","savedPayload":{"position":{"x":31367.260639218217,"y":19535.96775824343},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"2cf8c3ee-79ae-49bb-882b-992379f41fd9","savedPayload":{"position":{"x":31430.578917497904,"y":19666.14178439834},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"94e5c88c-2317-4bd1-86e6-f578db5e882f","savedPayload":{"position":{"x":31477.070454612243,"y":19803.20866827671},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Rate","config":"{ \n\"codeName\": \"rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"7b9b53d5-d93a-4301-a0e6-ce8322da8fce","savedPayload":{"position":{"x":31506.013124653407,"y":19945.01867324955},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"5906d64e-d90e-4dae-a2bb-c806e3d5d21d","savedPayload":{"position":{"x":31516.953076459868,"y":20089.33689778155},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"294ae361-a9f7-404a-a6dd-3dc25d8c6c27","savedPayload":{"position":{"x":31509.718205747038,"y":20233.595238619648},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Order Name","config":"{ \n\"codeName\": \"orderName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"e837a938-5448-4987-bdf0-d28de65d33fb","savedPayload":{"position":{"x":31484.423868184258,"y":20376.098018809065},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Situation Name","config":"{ \n\"codeName\": \"situationName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"4424a014-cc5f-494e-be78-0b49f960045b","savedPayload":{"position":{"x":31441.46867669328,"y":20514.308562018006},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Algorithm Name","config":"{ \n\"codeName\": \"algorithmName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"137a18b5-33a3-433e-b85b-c8fbe03cbe69","savedPayload":{"position":{"x":31381.530084038666,"y":20646.04603916495},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Periods","config":"{ \n\"codeName\": \"periods\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderCounters\"\n}","id":"35ca0a49-129b-49e2-864a-3c43ed3bf38b","savedPayload":{"position":{"x":31305.55330563782,"y":20769.23278723795},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Percentage Filled","config":"{\n \"codeName\": \"percentageFilled\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderStatistics\",\n \"decimals\": 2\n}","id":"4b0020d5-4d5b-4747-aa28-baf6e28f67d9","savedPayload":{"position":{"x":31214.736419979505,"y":20881.926146402988},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Actual Rate","config":"{ \n\"codeName\": \"actualRate\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderStatistics\"\n}","id":"eedcf7ad-6668-4b14-8f07-7ee44998c47a","savedPayload":{"position":{"x":31110.51154341954,"y":20982.348877724784},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Days","config":"{ \n\"codeName\": \"days\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderStatistics\",\n \"decimals\": 2\n}","id":"46b407ab-5799-4ea6-946b-d857abb76183","savedPayload":{"position":{"x":30994.522216468293,"y":21068.917246535526},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 1","config":"{ \n\"codeName\": \"userDefinedStatistic1\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 0\n}","id":"c2fcb23d-4a6d-457a-8d38-03a46786fedc","savedPayload":{"position":{"x":30868.597460585795,"y":21140.265949635865},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 2","config":"{ \n\"codeName\": \"userDefinedStatistic2\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 1\n}","id":"ca02a2ed-731a-4df8-9f76-fe8d60b7ad8e","savedPayload":{"position":{"x":30734.821075690947,"y":21195.304495876517},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 3","config":"{ \n\"codeName\": \"userDefinedStatistic3\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 2\n}","id":"ac187d63-a2cc-487c-8e81-03c786749d9c","savedPayload":{"position":{"x":30595.088035894845,"y":21233.147967341003},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Base Asset","config":"{\n \"codeName\": \"sizeInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderBaseAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"97b70829-4c2e-433c-8233-f6254788232a","savedPayload":{"position":{"x":30451.682039880332,"y":21253.159919142206},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Quoted Asset","config":"{\n \"codeName\": \"sizeInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderQuotedAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"e8f83131-1dbc-48b7-9862-49130126b67d","savedPayload":{"position":{"x":30307.123053889518,"y":21254.919893094444},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Base Asset","config":"{\n \"codeName\": \"sizeFilledInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderBaseAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"895ce4a6-2cf5-4f2e-b160-38f0237cbce4","savedPayload":{"position":{"x":30163.18026116549,"y":21238.660700683697},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Quoted Asset","config":"{\n \"codeName\": \"sizeFilledInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderQuotedAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"10253d7f-83fc-4bce-b757-f9fe36481f28","savedPayload":{"position":{"x":30022.529806169292,"y":21204.30516786515},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Base Asset","config":"{ \n\"codeName\": \"feesPaidInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderBaseAsset\",\n \"childProperty\": \"feesPaid\"\n}","id":"d436d73b-be15-4d1a-baeb-c41b6706bbde","savedPayload":{"position":{"x":29887.368216522045,"y":21152.758468406162},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Quoted Asset","config":"{ \n\"codeName\": \"feesPaidInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderQuotedAsset\",\n \"childProperty\": \"feesPaid\"\n}","id":"320e3ae5-5884-4c25-b61b-2d0ef4730884","savedPayload":{"position":{"x":29759.38500001585,"y":21084.44470904871},"targetPosition":{"x":30364.67471597827,"y":20103.97819340431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d79b050c-2805-4b39-bcd3-1678628f8d1c","savedPayload":{"position":{"x":30364.67471597827,"y":20103.97819340431},"targetPosition":{"x":29466.69980977856,"y":19380.39539980232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}},"id":"db256083-9aa2-48e1-8fd6-3425a5085302","savedPayload":{"position":{"x":26242.162228147252,"y":19361.7051332841},"targetPosition":{"x":25811.38780365864,"y":19361.706556196907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Market Buy Orders","id":"e00fe7d4-894d-4483-a73a-3cd77943ea80"}}},{"type":"Product Definition","name":"Market Sell Orders","config":"{ \n \"codeName\": \"Market-Sell-Orders-Objects\", \n \"singularVariableName\": \"marketSellOrdersObject\", \n \"pluralVariableName\": \"marketSellOrdersObjects\",\n \"nodePathType\": \"array\",\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders\",\n \"saveAsObjects\": true,\n \"propertyNameThatDefinesObject\": \"status\",\n \"propertyValueThatClosesObject\": \"Closed\",\n \"propertyValueThatPreventsSavingObject\": \"Not Open\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"6112bd4d-07cb-41db-98c4-e286d172b5c0","savedPayload":{"position":{"x":30567.738732165315,"y":19494.9752599936},"targetPosition":{"x":29414.814780098182,"y":19536.331183214137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"07cd5668-5e0f-4385-9c02-72eebc99344a","savedPayload":{"position":{"x":30495.972435810672,"y":19938.880402813473},"targetPosition":{"x":29414.814780098182,"y":19536.331183214137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Exchange Id","config":"{\n \"codeName\": \"exchangeId\",\n \"isString\": true\n}","id":"0ba08ecb-3542-4acd-abbe-7059306ed669","savedPayload":{"position":{"x":31143.75016687439,"y":19583.491557084188},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Serial Number","config":"{\n \"codeName\": \"serialNumber\",\n \"isString\": false\n}","id":"0ae49e68-38d8-4356-bde3-c648a29177a7","savedPayload":{"position":{"x":31229.59019320684,"y":19700.48808514457},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Identifier","config":"{\n \"codeName\": \"identifier\",\n \"isString\": true\n}","id":"b7057c53-6d99-44ca-9eff-4dd21ebe2116","savedPayload":{"position":{"x":31299.925598084115,"y":19827.10169376592},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"01b26cba-240f-451e-8533-2e090a3103fd","savedPayload":{"position":{"x":31353.809295129613,"y":19961.494120027153},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"052e9ef4-da9f-4198-b13f-7a2e0c60b906","savedPayload":{"position":{"x":31390.415963180018,"y":20101.568255043232},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Rate","config":"{ \n\"codeName\": \"rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"a6e9d3dc-20e3-4cf3-94f4-79f3723b4d34","savedPayload":{"position":{"x":31409.17513221224,"y":20245.12110225893},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"b38cf81f-59f2-4508-9fbc-e82b1ad38d65","savedPayload":{"position":{"x":31409.79324483422,"y":20389.636504684615},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"0132786e-0a9a-4096-a6a5-57f03485d0b1","savedPayload":{"position":{"x":31392.26222781504,"y":20533.34014537474},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Order Name","config":"{ \n\"codeName\": \"orderName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"d1cb7813-1e5a-43f2-af35-f82a9ee47a0b","savedPayload":{"position":{"x":31356.858055249915,"y":20673.714015474605},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Situation Name","config":"{ \n\"codeName\": \"situationName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"8ab09d9d-7c5a-45d4-ad6a-8a4292c1b137","savedPayload":{"position":{"x":31304.193419518546,"y":20808.570665695763},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Algorithm Name","config":"{ \n\"codeName\": \"algorithmName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"b1d35b5f-2d9f-4ba0-b4bc-cc12c74104e8","savedPayload":{"position":{"x":31234.990190844597,"y":20935.73691104689},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Periods","config":"{ \n\"codeName\": \"periods\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderCounters\"\n}","id":"b1dbf0d5-39bb-4c1a-ac6d-d1d647e82d54","savedPayload":{"position":{"x":31150.394291431676,"y":21053.227009645278},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Percentage Filled","config":"{\n \"codeName\": \"percentageFilled\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderStatistics\",\n \"decimals\": 2\n}","id":"8b25c33c-8f96-4a6e-8180-43027d0fc396","savedPayload":{"position":{"x":31051.741167293418,"y":21159.18943521726},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Actual Rate","config":"{ \n\"codeName\": \"actualRate\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderStatistics\"\n}","id":"2ffc6fc2-9e28-4ef6-9047-a2bd2b618bd3","savedPayload":{"position":{"x":30940.58488915104,"y":21251.951816221826},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Days","config":"{ \n\"codeName\": \"days\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderStatistics\",\n \"decimals\": 2\n}","id":"e5c5802a-d778-40e5-9039-4067a6a56e4f","savedPayload":{"position":{"x":30818.678958481207,"y":21330.05196198316},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 1","config":"{ \n\"codeName\": \"userDefinedStatistic1\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 0\n}","id":"7fccf0bc-d0a4-48d9-b4ac-c467bc74ef0f","savedPayload":{"position":{"x":30687.94435157234,"y":21392.255360223204},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 2","config":"{ \n\"codeName\": \"userDefinedStatistic2\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 1\n}","id":"2149cdc5-19f8-4e11-9d5c-e6c062998223","savedPayload":{"position":{"x":30550.444149962183,"y":21437.582953517252},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 3","config":"{ \n\"codeName\": \"userDefinedStatistic3\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 2\n}","id":"df8e190a-1138-4ffa-baef-6a560ba51739","savedPayload":{"position":{"x":30408.351837467053,"y":21465.323233903342},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Base Asset","config":"{\n \"codeName\": \"sizeInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderBaseAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"e78e7e63-95da-479e-9d5c-9531b2b2bf26","savedPayload":{"position":{"x":30263.89452491479,"y":21475.03389310028},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Quoted Asset","config":"{\n \"codeName\": \"sizeInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderQuotedAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"8010dd65-bb12-492e-a5b8-4e8b12e1e211","savedPayload":{"position":{"x":30119.5996546336,"y":21466.557990485704},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Base Asset","config":"{\n \"codeName\": \"sizeFilledInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderBaseAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"857f1eed-2dd2-4646-8b63-acb4cec04400","savedPayload":{"position":{"x":29977.2601313813,"y":21440.023120152193},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Quoted Asset","config":"{\n \"codeName\": \"sizeFilledInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderQuotedAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"3578ea56-a788-42bc-a964-0ba02e432a2e","savedPayload":{"position":{"x":29839.350606475353,"y":21395.85959370992},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Base Asset","config":"{ \n\"codeName\": \"feesPaidInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderBaseAsset\",\n \"childProperty\": \"feesPaid\"\n}","id":"0f88abbf-bbcb-4281-90e2-5bd844c7bdfc","savedPayload":{"position":{"x":29708.03898532638,"y":21334.71973025635},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Quoted Asset","config":"{ \n\"codeName\": \"feesPaidInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.marketSellOrders.marketOrders[index].orderQuotedAsset\",\n \"childProperty\": \"feesPaid\"\n}","id":"c5a06ac6-e0c8-4a38-a790-d3569bb73ef5","savedPayload":{"position":{"x":29585.22571035548,"y":21257.44662910848},"targetPosition":{"x":30259.090992910802,"y":20322.300037072073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8b01d5ae-7d6f-4c08-9f05-2f8edb699fd6","savedPayload":{"position":{"x":30259.090992910802,"y":20322.300037072073},"targetPosition":{"x":29414.814780098182,"y":19536.331183214137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}},"id":"1958f79b-5c6c-4874-9154-98c314822ed7","savedPayload":{"position":{"x":26160.039093142077,"y":19614.944355952968},"targetPosition":{"x":25811.38780365864,"y":19361.706556196907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Market Sell Orders","id":"a9811005-1b7d-45bb-8003-0e60caab5f09"}}},{"type":"Product Definition","name":"Limit Buy Orders","config":"{ \n \"codeName\": \"Limit-Buy-Orders-Objects\", \n \"singularVariableName\": \"limitBuyOrdersObject\", \n \"pluralVariableName\": \"limitBuyOrdersObjects\",\n \"nodePathType\": \"array\",\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders\",\n \"saveAsObjects\": true,\n \"propertyNameThatDefinesObject\": \"status\",\n \"propertyValueThatClosesObject\": \"Closed\",\n \"propertyValueThatPreventsSavingObject\": \"Not Open\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"b82fb0f9-74c1-42e6-961c-a696214ef079","savedPayload":{"position":{"x":28303.197763643733,"y":21254.638734022392},"targetPosition":{"x":27624.030908282355,"y":20544.350359783835},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"2e03f52e-0cd2-46b4-9c10-0b8516ef9c71","savedPayload":{"position":{"x":27979.536925117998,"y":21460.391216004435},"targetPosition":{"x":27624.030908282355,"y":20544.350359783835},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Exchange Id","config":"{\n \"codeName\": \"exchangeId\",\n \"isString\": true\n}","id":"890f7170-f42d-43d8-a084-b9b88ea212cc","savedPayload":{"position":{"x":28572.53165501038,"y":21671.070019801824},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Serial Number","config":"{\n \"codeName\": \"serialNumber\",\n \"isString\": false\n}","id":"3e6e8e40-2e6c-4bd4-b709-effa25749403","savedPayload":{"position":{"x":28546.63485756526,"y":21792.12269491024},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Identifier","config":"{\n \"codeName\": \"identifier\",\n \"isString\": true\n}","id":"280a9209-b9cd-4cb7-b0b7-3dfe2f472140","savedPayload":{"position":{"x":28505.693156964597,"y":21908.857857102503},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"254561e5-52c3-4669-920e-4fe5370653c4","savedPayload":{"position":{"x":28450.689411601263,"y":22019.021801782652},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"8ef21836-adad-4918-9816-fbb3c9dd1fc5","savedPayload":{"position":{"x":28382.135292015268,"y":22121.64233460315},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Rate","config":"{ \n\"codeName\": \"rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"4d6fd5f1-a95b-4ec1-a49c-6c057190d354","savedPayload":{"position":{"x":28301.34173115862,"y":22214.827356148584},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"12402a8e-c9d4-4adb-94c3-22f526d72d14","savedPayload":{"position":{"x":28209.659913217394,"y":22297.206187916145},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"8cc955fb-62ec-40b9-963b-275956de04d9","savedPayload":{"position":{"x":28108.142034383698,"y":22367.542065015663},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Order Name","config":"{ \n\"codeName\": \"orderName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"63af17a0-e994-4b5f-b853-207bf27c496c","savedPayload":{"position":{"x":27998.76073699908,"y":22424.442118304734},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Situation Name","config":"{ \n\"codeName\": \"situationName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"0af4f067-ac3d-4ee7-ba1d-d9c22ae2f46f","savedPayload":{"position":{"x":27882.92096092378,"y":22467.126723543264},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Algorithm Name","config":"{ \n\"codeName\": \"algorithmName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"f8cb0422-95bb-4c53-a5f6-7e02819021c0","savedPayload":{"position":{"x":27762.744444576438,"y":22495.171417414513},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Periods","config":"{ \n\"codeName\": \"periods\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderCounters\"\n}","id":"d16faba6-3464-4536-9c93-afbe6e0d4262","savedPayload":{"position":{"x":27640.110580413726,"y":22507.721865495383},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Percentage Filled","config":"{\n \"codeName\": \"percentageFilled\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderStatistics\",\n \"decimals\": 2\n}","id":"75fd2c91-2bfe-428c-9ff6-7d28d566a96d","savedPayload":{"position":{"x":27516.91556099024,"y":22504.747941266374},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Actual Rate","config":"{ \n\"codeName\": \"actualRate\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderStatistics\"\n}","id":"5d621574-54fd-4279-8c47-7bb9710bcc90","savedPayload":{"position":{"x":27395.173590827744,"y":22486.635706378893},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Days","config":"{ \n\"codeName\": \"days\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderStatistics\",\n \"decimals\": 2\n}","id":"0bddc747-8300-4b15-8a7a-134ff133d2ec","savedPayload":{"position":{"x":27276.44003256182,"y":22453.23846783036},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 1","config":"{ \n\"codeName\": \"userDefinedStatistic1\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 0\n}","id":"4564e44d-dbd5-4d97-8433-fc1dd877bd2f","savedPayload":{"position":{"x":27162.8443638509,"y":22405.040629805422},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 2","config":"{ \n\"codeName\": \"userDefinedStatistic2\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 1\n}","id":"dc313012-cb3e-4087-9ae1-af1125a074e3","savedPayload":{"position":{"x":27056.026317545897,"y":22343.18494480721},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 3","config":"{ \n\"codeName\": \"userDefinedStatistic3\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 2\n}","id":"ba489aaa-0872-4e7f-bad0-a7c43b0da4b5","savedPayload":{"position":{"x":26957.898528766327,"y":22268.42286949116},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Base Asset","config":"{\n \"codeName\": \"sizeInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderBaseAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"56b30e10-c354-4a0c-a570-07976dc45b76","savedPayload":{"position":{"x":26870.141771684357,"y":22181.819082158923},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Quoted Asset","config":"{\n \"codeName\": \"sizeInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderBaseAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"4696e371-b17b-48fc-8ebb-dfa00e0b2aed","savedPayload":{"position":{"x":26793.70832147373,"y":22084.910878230232},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Base Asset","config":"{\n \"codeName\": \"sizeFilledInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderBaseAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"8161a21f-02f8-4929-acd1-f684a7deb41b","savedPayload":{"position":{"x":26730.04682404267,"y":21979.423067100885},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Quoted Asset","config":"{\n \"codeName\": \"sizeFilledInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderBaseAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"2c17774e-a962-487f-939c-411973472057","savedPayload":{"position":{"x":26680.004763905472,"y":21866.301966483763},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Base Asset","config":"{ \n\"codeName\": \"feesPaidInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderBaseAsset\",\n \"childProperty\": \"feesPaid\"\n}","id":"d96f2a66-4d03-4cda-90c7-3dd7eae7712a","savedPayload":{"position":{"x":26644.53767020416,"y":21747.95572609214},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Quoted Asset","config":"{ \n\"codeName\": \"feesPaidInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitBuyOrders.limitOrders[index].orderBaseAsset\",\n \"childProperty\": \"feesPaid\"\n}","id":"9a713d83-5701-47a7-b0a0-4969671df884","savedPayload":{"position":{"x":26624.133927503637,"y":21625.844692678227},"targetPosition":{"x":27601.290901255852,"y":21526.407214958588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"aaad0279-43dd-46fc-b099-40cba6c3b6a8","savedPayload":{"position":{"x":27601.290901255852,"y":21526.407214958588},"targetPosition":{"x":27624.030908282355,"y":20544.350359783835},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}},"id":"5deceb32-c7ab-4560-818a-0f0b9d6632fb","savedPayload":{"position":{"x":25944.518019640407,"y":19771.399928966573},"targetPosition":{"x":25811.38780365864,"y":19361.706556196907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Limit Buy Orders","id":"7e3120c7-a0c9-483c-ada9-8c53deb10f33"}}},{"type":"Product Definition","name":"Limit Sell Orders","config":"{ \n \"codeName\": \"Limit-Sell-Orders-Objects\", \n \"singularVariableName\": \"limitSellOrdersObject\", \n \"pluralVariableName\": \"limitSellOrdersObjects\",\n \"nodePathType\": \"array\",\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders\",\n \"saveAsObjects\": true,\n \"propertyNameThatDefinesObject\": \"status\",\n \"propertyValueThatClosesObject\": \"Closed\",\n \"propertyValueThatPreventsSavingObject\": \"Not Open\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"356495a9-b063-495d-b06d-5281c7c0007e","savedPayload":{"position":{"x":28062.842483361772,"y":21371.855356224252},"targetPosition":{"x":27452.21311072474,"y":20601.957715152446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"934ab813-127e-4bbf-aa71-09b3cdadc0d0","savedPayload":{"position":{"x":27721.73892569853,"y":21546.866004515214},"targetPosition":{"x":27452.21311072474,"y":20601.957715152446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Exchange Id","config":"{\n \"codeName\": \"exchangeId\",\n \"isString\": true\n}","id":"5c8236b1-b257-44f4-98bd-a158b67aad16","savedPayload":{"position":{"x":28292.642705425853,"y":21811.62837671577},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Serial Number","config":"{\n \"codeName\": \"serialNumber\",\n \"isString\": false\n}","id":"16140fc9-d4ae-43c2-ba47-f676b79a9775","savedPayload":{"position":{"x":28255.628877741394,"y":21929.826458928645},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Identifier","config":"{\n \"codeName\": \"identifier\",\n \"isString\": true\n}","id":"2d871d0f-e668-4e9d-9fcf-439f37cd082f","savedPayload":{"position":{"x":28204.237875678045,"y":22042.222135762946},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"fc6f8fe4-b752-448a-9ece-8497abf2901c","savedPayload":{"position":{"x":28139.194574364174,"y":22146.995566699028},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"3502765f-2f50-44c6-b85c-64d7f72f5592","savedPayload":{"position":{"x":28061.5442435588,"y":22242.94335722536},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Rate","config":"{ \n\"codeName\": \"rate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"608ebfd0-4294-4e24-8111-a8f695072ca0","savedPayload":{"position":{"x":27972.384495706923,"y":22328.192014211934},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"c49c3510-e24b-418f-9334-760c5da57ccf","savedPayload":{"position":{"x":27873.37167569742,"y":22401.71176915763},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"04b96ab3-eb13-4039-a385-8e5c4377daa4","savedPayload":{"position":{"x":27765.874814033887,"y":22462.230037799345},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Order Name","config":"{ \n\"codeName\": \"orderName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"6ec27702-5283-4fbf-b6a7-92663a6e9e9b","savedPayload":{"position":{"x":27651.70028038436,"y":22508.917596845477},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Situation Name","config":"{ \n\"codeName\": \"situationName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"6a4285a4-c9d5-4d5b-a218-da8e19ca5970","savedPayload":{"position":{"x":27532.492771804093,"y":22540.642978294054},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Algorithm Name","config":"{ \n\"codeName\": \"algorithmName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"e3e35a81-c5b2-4768-ab16-99b42ef83358","savedPayload":{"position":{"x":27410.277467496388,"y":22557.45893567008},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Periods","config":"{ \n\"codeName\": \"periods\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderCounters\"\n}","id":"815780d8-f647-42cc-9a40-aa99caa350c7","savedPayload":{"position":{"x":27287.165965446533,"y":22558.67093566599},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Percentage Filled","config":"{\n \"codeName\": \"percentageFilled\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderStatistics\",\n \"decimals\": 2\n}","id":"d824c424-4324-46b1-87b9-182cc9f0d054","savedPayload":{"position":{"x":27164.815874086402,"y":22544.367134465414},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Actual Rate","config":"{ \n\"codeName\": \"actualRate\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderStatistics\"\n}","id":"d722bfd4-eb08-4dfc-8cc9-f706f93df80e","savedPayload":{"position":{"x":27045.057545900876,"y":22514.986069123413},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Days","config":"{ \n\"codeName\": \"days\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderStatistics\",\n \"decimals\": 2\n}","id":"d05fe7d4-d772-4ad4-9890-a3aa342fc5f6","savedPayload":{"position":{"x":26929.871803818827,"y":22470.67621583085},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 1","config":"{ \n\"codeName\": \"userDefinedStatistic1\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 0\n}","id":"d4b14139-33ad-4da1-942c-ce8df0d3efa9","savedPayload":{"position":{"x":26821.13676709853,"y":22412.417912489123},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 2","config":"{ \n\"codeName\": \"userDefinedStatistic2\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 1\n}","id":"9ade3c97-f409-4c23-b66f-b6670100e039","savedPayload":{"position":{"x":26720.66890764104,"y":22340.94618200058},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 3","config":"{ \n\"codeName\": \"userDefinedStatistic3\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 2\n}","id":"780e674d-64fc-401a-ad5d-1012645f512e","savedPayload":{"position":{"x":26629.842255693136,"y":22257.341933241474},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Base Asset","config":"{\n \"codeName\": \"sizeInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderBaseAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"8dade5f4-6361-49b2-ae94-2b66b21d5522","savedPayload":{"position":{"x":26550.287342494084,"y":22163.153899990564},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size In Quoted Asset","config":"{\n \"codeName\": \"sizeInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderBaseAsset\",\n \"childProperty\": \"size\",\n \"decimals\": 10\n}","id":"896f401d-5a79-45bb-b15b-abc2881d7762","savedPayload":{"position":{"x":26483.24095152323,"y":22059.599923252197},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Base Asset","config":"{\n \"codeName\": \"sizeFilledInBaseAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderBaseAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"b92661d6-16ec-48a6-bb66-18c4ad4dd148","savedPayload":{"position":{"x":26429.46979906318,"y":21948.60958956997},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Size Filled In Quoted Asset","config":"{\n \"codeName\": \"sizeFilledInQuotedAsset\",\n \"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderBaseAsset\",\n \"childProperty\": \"sizeFilled\",\n \"decimals\": 10\n}","id":"c24a527a-db24-472d-8c3f-f0da838f8062","savedPayload":{"position":{"x":26390.19042546744,"y":21831.394549288983},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Base Asset","config":"{ \n\"codeName\": \"feesPaidInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderBaseAsset\",\n \"childProperty\": \"feesPaid\"\n}","id":"b50fa760-b069-411f-b27e-6dd1d165e927","savedPayload":{"position":{"x":26365.85221739352,"y":21710.328594972158},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fees Paid In Quoted Asset","config":"{ \n\"codeName\": \"feesPaidInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[index].orderBaseAsset\",\n \"childProperty\": \"feesPaid\"\n}","id":"d5d472fb-bf5a-40e7-ac92-7b03279022c3","savedPayload":{"position":{"x":26356.85964166914,"y":21586.961644423463},"targetPosition":{"x":27338.892945833497,"y":21578.01924614344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7dc5d5fc-ff33-4652-bc9c-fad0566a3d9f","savedPayload":{"position":{"x":27338.892945833497,"y":21578.01924614344},"targetPosition":{"x":27452.21311072474,"y":20601.957715152446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}},"id":"2a1d405b-2fbe-4ed4-a76a-d2c7be59d20e","savedPayload":{"position":{"x":25678.550486071774,"y":19771.444554539972},"targetPosition":{"x":25811.38780365864,"y":19361.706556196907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Limit Sell Orders","id":"fb243322-ec2a-4f03-bb77-e97e4699d1c6"}}}],"productDefinitionFolders":[],"id":"cb9c928a-1a5d-441c-b369-0a72f98f2407","savedPayload":{"position":{"x":25829.601916777992,"y":19386.83030901307},"targetPosition":{"x":25576.28368021663,"y":19038.303483091906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition Folder","name":"Stages","products":[{"type":"Product Definition","name":"Trigger Stages","config":"{\n \"codeName\": \"Trigger-Stages-Objects\",\n \"singularVariableName\": \"triggerStagesObject\",\n \"pluralVariableName\": \"triggerStagesObjects\",\n \"nodePath\": \"tradingEngine.current.strategyTriggerStage\",\n \"saveAsObjects\": true,\n \"propertyNameThatDefinesObject\": \"status\",\n \"propertyValueThatClosesObject\": \"Closed\",\n \"propertyValueThatPreventsSavingObject\": \"Not Open\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"e951c491-c864-4668-9d70-c48df90d8342","savedPayload":{"position":{"x":27491.651640692053,"y":21548.03278898372},"targetPosition":{"x":27051.596089450974,"y":20672.762122297307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"ace4518d-bfe1-49e2-af7b-4ff9559fe6a9","savedPayload":{"position":{"x":27123.01006105745,"y":21649.77523726652},"targetPosition":{"x":27051.596089450974,"y":20672.762122297307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"75d29f56-b520-43e9-af25-105a88b84f0f","savedPayload":{"position":{"x":27447.412855413473,"y":22283.161909377064},"targetPosition":{"x":26743.664830779897,"y":21602.833052728794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"08e2f14d-f121-48ed-b266-d78fe59ef437","savedPayload":{"position":{"x":27082.459998175123,"y":22521.17761690534},"targetPosition":{"x":26743.664830779897,"y":21602.833052728794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"675b3923-9fdb-4e08-abab-2ba83424c851","savedPayload":{"position":{"x":26650.676246611787,"y":22577.279438002737},"targetPosition":{"x":26743.664830779897,"y":21602.833052728794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"6a6f3698-8dfc-4368-9db6-e5ac251aefec","savedPayload":{"position":{"x":26237.06222085197,"y":22440.37253772252},"targetPosition":{"x":26743.664830779897,"y":21602.833052728794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Rate","config":"{ \n\"codeName\": \"beginRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"6db4ef3b-ea01-4765-a749-f9bee13fa2a3","savedPayload":{"position":{"x":25923.808145505558,"y":22137.568036961922},"targetPosition":{"x":26743.664830779897,"y":21602.833052728794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Rate","config":"{ \n\"codeName\": \"endRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"8435db2d-1a90-4994-ba46-7d11618a65ab","savedPayload":{"position":{"x":25772.9604148653,"y":21728.81454107512},"targetPosition":{"x":26743.664830779897,"y":21602.833052728794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"167c8a3e-7c2a-488f-87f7-be3f6034d276","savedPayload":{"position":{"x":26743.664830779897,"y":21602.833052728794},"targetPosition":{"x":27051.596089450974,"y":20672.762122297307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}},"id":"18cc2e79-7e57-418c-b635-6c68fc11d681","savedPayload":{"position":{"x":27120.26405377411,"y":20122.878788682778},"targetPosition":{"x":26584.466807400895,"y":19813.583946037503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Trigger Stage Objects","id":"6c6cddbc-cd78-445f-9498-8627ac99563d"}}},{"type":"Product Definition","name":"Open Stages","config":"{\n \"codeName\": \"Open-Stages-Objects\",\n \"singularVariableName\": \"openStagesObject\",\n \"pluralVariableName\": \"openStagesObjects\",\n \"nodePath\": \"tradingEngine.current.strategyOpenStage\",\n \"saveAsObjects\": true,\n \"propertyNameThatDefinesObject\": \"status\",\n \"propertyValueThatClosesObject\": \"Closed\",\n \"propertyValueThatPreventsSavingObject\": \"Not Open\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"613bf56d-986e-4a94-9b39-4f0ac3300b0c","savedPayload":{"position":{"x":28404.6614474727,"y":21928.22275844946},"targetPosition":{"x":27746.84508349377,"y":20980.998416317794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"44a0d895-2a7e-4f9a-b9a7-81dc32bf30e4","savedPayload":{"position":{"x":27992.095580353165,"y":22107.939905953335},"targetPosition":{"x":27746.84508349377,"y":20980.998416317794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"e36b3b00-b339-4ce5-9526-a2077f5e1138","savedPayload":{"position":{"x":28474.57238629253,"y":22791.973017604116},"targetPosition":{"x":27542.02002765068,"y":22115.902618767796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"73751c42-16ed-4a24-8586-d86c3c9a81be","savedPayload":{"position":{"x":28088.754021654368,"y":23129.75593680144},"targetPosition":{"x":27542.02002765068,"y":22115.902618767796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"d76fd073-ae0d-4af8-b729-5d94a1cf21ed","savedPayload":{"position":{"x":27594.701816424502,"y":23266.5820034291},"targetPosition":{"x":27542.02002765068,"y":22115.902618767796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"3db414d7-fb6f-4cce-be3b-342101e90246","savedPayload":{"position":{"x":27090.434021559406,"y":23175.5858485332},"targetPosition":{"x":27542.02002765068,"y":22115.902618767796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Rate","config":"{ \n\"codeName\": \"beginRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"340b1f7b-b041-4ee0-9327-0959de0d8d9a","savedPayload":{"position":{"x":26675.36231396078,"y":22874.619854762474},"targetPosition":{"x":27542.02002765068,"y":22115.902618767796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Rate","config":"{ \n\"codeName\": \"endRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"6fa53271-06c2-48b1-a763-2926ce948fbc","savedPayload":{"position":{"x":26431.89018402749,"y":22423.412213674277},"targetPosition":{"x":27542.02002765068,"y":22115.902618767796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"517166b0-13ae-4f3d-bcb4-d3292dd9daf7","savedPayload":{"position":{"x":27542.02002765068,"y":22115.902618767796},"targetPosition":{"x":27746.84508349377,"y":20980.998416317794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}},"id":"d5938c00-0849-466d-ae14-4ea91b571678","savedPayload":{"position":{"x":26836.01175482833,"y":20378.620841017026},"targetPosition":{"x":26584.466807400895,"y":19813.583946037503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Open Stage Objects","id":"8f7cad9f-153d-44e6-bdc2-812bc97e3929"}}},{"type":"Product Definition","name":"Manage Stages","config":"{\n \"codeName\": \"Manage-Stages-Objects\",\n \"singularVariableName\": \"manageStagesObject\",\n \"pluralVariableName\": \"manageStagesObjects\",\n \"nodePath\": \"tradingEngine.current.strategyManageStage\",\n \"saveAsObjects\": true,\n \"propertyNameThatDefinesObject\": \"status\",\n \"propertyValueThatClosesObject\": \"Closed\",\n \"propertyValueThatPreventsSavingObject\": \"Not Open\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"f6e10004-71dd-4ae9-8c1f-0b71de02d274","savedPayload":{"position":{"x":27670.23350042233,"y":21505.375775512246},"targetPosition":{"x":27175.4545030535,"y":20659.82377732973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"8f3984d8-e735-4dab-a9cc-51e97d704154","savedPayload":{"position":{"x":27308.888149758302,"y":21630.39266316751},"targetPosition":{"x":27175.4545030535,"y":20659.82377732973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"0a0419db-885a-4623-9ce3-ef4cd12d7a52","savedPayload":{"position":{"x":27672.62411628632,"y":22241.66352220627},"targetPosition":{"x":26927.268299705767,"y":21607.540024649887},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"4478d5f4-808f-45b5-9197-c144e6c1d81f","savedPayload":{"position":{"x":27323.585605250995,"y":22502.312126408855},"targetPosition":{"x":26927.268299705767,"y":21607.540024649887},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"abf359ac-dc22-4274-a00c-25c986836002","savedPayload":{"position":{"x":26896.3587458279,"y":22585.71195647841},"targetPosition":{"x":26927.268299705767,"y":21607.540024649887},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"78333d72-e1e6-4a85-9e23-850a66e3ca71","savedPayload":{"position":{"x":26474.97508991858,"y":22475.36790895691},"targetPosition":{"x":26927.268299705767,"y":21607.540024649887},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Rate","config":"{ \n\"codeName\": \"beginRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"ba45b561-33a9-4e8e-bf3c-a6b8ece1d0a3","savedPayload":{"position":{"x":26143.198528003973,"y":22193.126859834138},"targetPosition":{"x":26927.268299705767,"y":21607.540024649887},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Rate","config":"{ \n\"codeName\": \"endRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"45ef8759-341e-4e74-a374-035374659cc5","savedPayload":{"position":{"x":25966.7448968667,"y":21794.862226010446},"targetPosition":{"x":26927.268299705767,"y":21607.540024649887},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d418fdcd-d800-4f99-8a67-05eb6a09d390","savedPayload":{"position":{"x":26927.268299705767,"y":21607.540024649887},"targetPosition":{"x":27175.4545030535,"y":20659.82377732973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}},"id":"8fab86b3-db8d-4113-8418-1d256bd98cf2","savedPayload":{"position":{"x":26455.977550874104,"y":20418.63493287632},"targetPosition":{"x":26584.466807400895,"y":19813.583946037503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Manage Stage Objects","id":"768a5cc5-72db-4218-9a8b-706c51186b3d"}}},{"type":"Product Definition","name":"Close Stages","config":"{\n \"codeName\": \"Close-Stages-Objects\",\n \"singularVariableName\": \"closeStagesObject\",\n \"pluralVariableName\": \"closeStagesObjects\",\n \"nodePath\": \"tradingEngine.current.strategyCloseStage\",\n \"saveAsObjects\": true,\n \"propertyNameThatDefinesObject\": \"status\",\n \"propertyValueThatClosesObject\": \"Closed\",\n \"propertyValueThatPreventsSavingObject\": \"Not Open\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"ee0f2bab-26b6-44c6-af1c-efbca2c765cd","savedPayload":{"position":{"x":27353.964704616847,"y":21569.271820620306},"targetPosition":{"x":26918.050299901148,"y":20691.916982233615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"cbd3905d-fafc-47f3-8a61-20c9aab10d86","savedPayload":{"position":{"x":26984.92628007235,"y":21669.32612854922},"targetPosition":{"x":26918.050299901148,"y":20691.916982233615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"fb4236d5-0356-4226-bf11-8d119d361bf3","savedPayload":{"position":{"x":27306.080083118486,"y":22304.001601423606},"targetPosition":{"x":26605.70532043249,"y":21620.43811822156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"68f1a928-d89f-4d57-80d8-1e68b113bea5","savedPayload":{"position":{"x":26940.051949713037,"y":22540.23414313807},"targetPosition":{"x":26605.70532043249,"y":21620.43811822156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"cd79288d-539d-499f-a998-5770f3c5efab","savedPayload":{"position":{"x":26508.102999881954,"y":22594.268741317428},"targetPosition":{"x":26605.70532043249,"y":21620.43811822156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"7afb54b6-807f-4452-9fd6-bb4bd32dd462","savedPayload":{"position":{"x":26095.214231924274,"y":22455.418533798624},"targetPosition":{"x":26605.70532043249,"y":21620.43811822156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Rate","config":"{ \n\"codeName\": \"beginRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"56d33c0a-1f4c-4721-b43d-976bbff00208","savedPayload":{"position":{"x":25783.45870130793,"y":22151.179326432477},"targetPosition":{"x":26605.70532043249,"y":21620.43811822156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Rate","config":"{ \n\"codeName\": \"endRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"eae9d270-5193-46f6-abc8-c1c1eccc9661","savedPayload":{"position":{"x":25634.586038385503,"y":21741.78221500365},"targetPosition":{"x":26605.70532043249,"y":21620.43811822156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c4aaf6da-f1d9-4a88-8e7a-531135090572","savedPayload":{"position":{"x":26605.70532043249,"y":21620.43811822156},"targetPosition":{"x":26918.050299901148,"y":20691.916982233615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}},"id":"ba911e61-f951-48cd-b547-9a70aa211100","savedPayload":{"position":{"x":26124.680528560624,"y":20227.620567409813},"targetPosition":{"x":26584.466807400895,"y":19813.583946037503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Close Stage Objects","id":"de84947f-ec29-4125-a2b3-a3da595d1653"}}}],"productDefinitionFolders":[],"id":"4ce02b43-0869-4bed-b021-a3b9f7c10451","savedPayload":{"position":{"x":25621.492755142368,"y":19466.916163243084},"targetPosition":{"x":25576.28368021663,"y":19038.303483091906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition Folder","name":"Position","products":[{"type":"Product Definition","name":"Positions","config":"{\n \"codeName\": \"Position-Objects\",\n \"singularVariableName\": \"positionObject\",\n \"pluralVariableName\": \"positionObjects\",\n \"nodePath\": \"tradingEngine.current.position\",\n \"saveAsObjects\": true,\n \"propertyNameThatDefinesObject\": \"status\",\n \"propertyValueThatClosesObject\": \"Closed\",\n \"propertyValueThatPreventsSavingObject\": \"Not Open\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"55df9376-2806-429d-b43d-b96700787f74","savedPayload":{"position":{"x":30646.929456496026,"y":18531.11662738125},"targetPosition":{"x":29552.805890379506,"y":18895.858777522095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"fd62b468-93fa-44e0-941f-fff7ea4b04ea","savedPayload":{"position":{"x":30703.26093684421,"y":18977.260011767554},"targetPosition":{"x":29552.805890379506,"y":18895.858777522095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Serial Number","config":"{\n \"codeName\": \"serialNumber\",\n \"isString\": false\n}","id":"a8700d50-9286-4b62-a141-abd506386983","savedPayload":{"position":{"x":31204.24928830206,"y":18440.67169236986},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Identifier","config":"{\n \"codeName\": \"identifier\",\n \"isString\": true\n}","id":"6ce2fa31-04d9-4541-a793-569b668e6201","savedPayload":{"position":{"x":31302.91586107622,"y":18511.23627739841},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"0f5cf2f4-3c5b-4607-8635-c7310906b95c","savedPayload":{"position":{"x":31393.259308844812,"y":18591.472202456785},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"ba8a1af9-323f-4acb-a438-a61f232b4033","savedPayload":{"position":{"x":31474.6387376299,"y":18680.634456769032},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Type","config":"{ \n\"codeName\": \"exitType\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"85df8c0c-7d11-44c2-a7a9-928d4ac0ad06","savedPayload":{"position":{"x":31546.2350854883,"y":18777.775312880036},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"9c8b786e-23f6-4bf9-bf83-6fd03b494a66","savedPayload":{"position":{"x":31607.285357356952,"y":18881.84813672404},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin Rate","config":"{ \n\"codeName\": \"beginRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"b0719341-cda1-4503-bed5-f4e98d7e07db","savedPayload":{"position":{"x":31657.126396429096,"y":18991.72277028257},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End Rate","config":"{ \n\"codeName\": \"endRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"a052f724-c517-4032-85f7-96d3a29ba9ce","savedPayload":{"position":{"x":31695.21303090407,"y":19106.200710645913},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Situation Name","config":"{ \n\"codeName\": \"situationName\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"a4dfa19d-51b8-4151-91e5-6031059f09f1","savedPayload":{"position":{"x":31721.127716410676,"y":19224.03050267588},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Periods","config":"{ \n\"codeName\": \"periods\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionCounters\"\n}","id":"5309d28b-041a-4622-ade5-9349c19787da","savedPayload":{"position":{"x":31734.586061428905,"y":19343.922627628195},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 1","config":"{ \n\"codeName\": \"userDefinedStatistic1\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 0\n}","id":"0853d6cc-4429-431e-82f0-e4d958f095ea","savedPayload":{"position":{"x":31735.438413818287,"y":19464.272807688005},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 2","config":"{ \n\"codeName\": \"userDefinedStatistic2\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 1\n}","id":"925756d5-4662-44ac-bfa6-a326c5e61b23","savedPayload":{"position":{"x":31723.675535604558,"y":19584.336781340775},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"User Defined Statistic 3","config":"{ \n\"codeName\": \"userDefinedStatistic3\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionStatistics\",\n\"childProperty\": \"userDefinedStatistics\",\n\"index\": 2\n}","id":"3d22802e-0b11-47e4-8c98-7c9830f166fb","savedPayload":{"position":{"x":31699.428365970518,"y":19702.516563862537},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Profit Loss In Base Asset","config":"{ \n\"codeName\": \"profitLossInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionBaseAsset\",\n \"childProperty\": \"profitLoss\",\n \"decimals\": 10\n}","id":"5cbdddf2-f50e-49c6-b995-c557a44adde5","savedPayload":{"position":{"x":31662.961920155925,"y":19817.51531645545},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Profit Loss In Quoted Asset","config":"{ \n\"codeName\": \"profitLossInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionQuotedAsset\",\n \"childProperty\": \"profitLoss\",\n \"decimals\": 10\n}","id":"0e1b30a0-5408-4b8b-aa61-efd21d9ef1b1","savedPayload":{"position":{"x":31614.675374861697,"y":19928.07293763375},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ROI In Base Asset","config":"{ \n\"codeName\": \"ROIInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionBaseAsset\",\n \"childProperty\": \"ROI\",\n \"decimals\": 10\n}","id":"d41d6380-be40-4823-a6d2-adc43038d514","savedPayload":{"position":{"x":31555.097435466905,"y":20032.978167787343},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ROI In Quoted Asset","config":"{ \n\"codeName\": \"ROIInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionQuotedAsset\",\n \"childProperty\": \"ROI\",\n \"decimals\": 10\n}","id":"5306784e-c744-49cd-962a-670d8e452ac7","savedPayload":{"position":{"x":31484.880580518366,"y":20131.081608828772},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hit Fail In Base Asset","config":"{ \n\"codeName\": \"hitFailInBaseAsset\",\n\"isString\": true,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionBaseAsset\",\n \"childProperty\": \"hitFail\"\n}","id":"bf8e5f03-9c93-4b76-ae3d-4f2b3eeccab5","savedPayload":{"position":{"x":31404.793907207986,"y":20221.30841699361},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hit Fail In Quoted Asset","config":"{ \n\"codeName\": \"hitFailInQuotedAsset\",\n\"isString\": true,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionQuotedAsset\",\n \"childProperty\": \"hitFail\"\n}","id":"43463fcd-ac98-4ae3-a148-d43d709ba86c","savedPayload":{"position":{"x":31315.714582102097,"y":20302.66996617025},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Entry Target Size In Base Asset","config":"{ \n\"codeName\": \"entryTargetSizeInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionBaseAsset\",\n \"childProperty\": \"entryTargetSize\",\n \"decimals\": 10\n}","id":"e6b2213f-f108-428f-b93c-e58db1da49e2","savedPayload":{"position":{"x":31218.618332363374,"y":20374.274818900583},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Entry Target Size In Quoted Asset","config":"{ \n\"codeName\": \"entryTargetSizeInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionQuotedAsset\",\n \"childProperty\": \"entryTargetSize\",\n \"decimals\": 10\n}","id":"2e419e2b-cb42-4067-a861-7ebf1804a903","savedPayload":{"position":{"x":31114.56858969092,"y":20435.33824292069},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Target Size In Base Asset","config":"{ \n\"codeName\": \"exitTargetSizeInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionBaseAsset\",\n \"childProperty\": \"exitTargetSize\",\n \"decimals\": 10\n}","id":"739818f5-d2e4-4fea-b818-a598ed4a9c21","savedPayload":{"position":{"x":31004.704874843806,"y":20485.191043173396},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Target Size In Quoted Asset","config":"{ \n\"codeName\": \"exitTargetSizeInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionQuotedAsset\",\n \"childProperty\": \"exitTargetSize\",\n \"decimals\": 10\n}","id":"76337d8e-1242-4e84-96c4-7e93b218a1ab","savedPayload":{"position":{"x":30890.230090565812,"y":20523.286565500013},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Entry Target Rate","config":"{ \n\"codeName\": \"entryTargetRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"06eb81a4-5736-40f5-8248-9aeb8e9cc409","savedPayload":{"position":{"x":30772.39711635211,"y":20549.20675007032},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Target Rate","config":"{ \n\"codeName\": \"exitTargetRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"7c3162ae-a955-4c61-bd01-69a198893335","savedPayload":{"position":{"x":30652.494498162217,"y":20562.666257548215},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Statistics Profit Loss","config":"{ \n\"codeName\": \"profitLoss\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionStatistics\",\n \"decimals\": 10\n}","id":"399ae646-1616-4fdd-9ce3-228ea91b7bfc","savedPayload":{"position":{"x":30532.120796348787,"y":20563.514454280645},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Statistics ROI","config":"{ \n\"codeName\": \"ROI\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionStatistics\",\n \"decimals\": 10\n}","id":"eaa127cc-7067-45a6-8268-463c659209d0","savedPayload":{"position":{"x":30412.00676108544,"y":20551.73497793119},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Statistics Hit Fail","config":"{ \n\"codeName\": \"hitFail\",\n\"isString\": true,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionStatistics\"\n}","id":"2db6cdcd-128e-4bdd-9e9f-1d009c497a16","savedPayload":{"position":{"x":30293.704594427625,"y":20527.433379457423},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Statistics Days","config":"{ \n\"codeName\": \"days\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionStatistics\",\n \"decimals\": 2\n}","id":"42bb6a56-afc0-4c71-9b08-fd59959e8c88","savedPayload":{"position":{"x":30178.17393664527,"y":20490.71918422071},"targetPosition":{"x":30584.154276691428,"y":19412.301751142528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"823244e2-6d28-4e3a-96ea-42f6a7981bca","savedPayload":{"position":{"x":30584.154276691428,"y":19412.301751142528},"targetPosition":{"x":29552.805890379506,"y":18895.858777522095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}},"id":"1eabba24-cbd4-4cbf-95e0-c5135349d41d","savedPayload":{"position":{"x":26129.275924707894,"y":19799.97085373907},"targetPosition":{"x":25827.66492267845,"y":19384.721729771823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Position Objects","id":"8854b5f8-8407-4a0d-9099-5456a8e4cced"}}},{"type":"Product Definition","name":"Position Base Asset","config":"{\n \"codeName\": \"Position-Base-Asset-Objects\",\n \"singularVariableName\": \"positionBaseAssetObject\",\n \"pluralVariableName\": \"positionBaseAssetObjects\",\n \"nodePath\": \"tradingEngine.current.position\",\n \"saveAsObjects\": true,\n \"propertyNameThatDefinesObject\": \"status\",\n \"propertyValueThatClosesObject\": \"Closed\",\n \"propertyValueThatPreventsSavingObject\": \"Not Open\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"a0ff2796-59dd-4aa4-93ed-ba4601b9de5d","savedPayload":{"position":{"x":29450.36064682561,"y":21326.493648283966},"targetPosition":{"x":28502.449856140887,"y":20668.651864843298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"9985d32d-c070-4593-8a2a-ec8bc1c78cbb","savedPayload":{"position":{"x":29126.61034959199,"y":21639.09096481682},"targetPosition":{"x":28502.449856140887,"y":20668.651864843298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"ab0b9bad-a26f-4bd2-9c8a-b54d8e18ba1f","savedPayload":{"position":{"x":29853.23766222829,"y":21927.285708389212},"targetPosition":{"x":28706.903453049825,"y":21804.17057657489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"c7ef2775-8664-4ad2-b1f7-75bcf27f30df","savedPayload":{"position":{"x":29772.07284236906,"y":22245.310036379193},"targetPosition":{"x":28706.903453049825,"y":21804.17057657489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"fab4ea05-53c0-4899-a319-9da3db9c650d","savedPayload":{"position":{"x":29604.625311584914,"y":22527.554767972117},"targetPosition":{"x":28706.903453049825,"y":21804.17057657489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Profit Loss In Base Asset","config":"{ \n\"codeName\": \"profitLossInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionBaseAsset\",\n \"childProperty\": \"profitLoss\",\n \"decimals\": 10\n}","id":"807ac077-7ed6-484b-883f-40590c678635","savedPayload":{"position":{"x":29364.475595378215,"y":22751.20163988995},"targetPosition":{"x":28706.903453049825,"y":21804.17057657489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ROI In Base Asset","config":"{ \n\"codeName\": \"ROIInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionBaseAsset\",\n \"childProperty\": \"ROI\",\n \"decimals\": 10\n}","id":"686128cb-42c2-41c8-8953-461220b65741","savedPayload":{"position":{"x":29071.080542687163,"y":22898.159994453803},"targetPosition":{"x":28706.903453049825,"y":21804.17057657489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hit Fail In Base Asset","config":"{ \n\"codeName\": \"hitFailInBaseAsset\",\n\"isString\": true,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionBaseAsset\",\n \"childProperty\": \"hitFail\"\n}","id":"3989fb34-a5da-416b-8f76-92476fba2d8b","savedPayload":{"position":{"x":28747.96279586714,"y":22956.452906442977},"targetPosition":{"x":28706.903453049825,"y":21804.17057657489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Entry Target Size In Base Asset","config":"{ \n\"codeName\": \"entryTargetSizeInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionBaseAsset\",\n \"childProperty\": \"entryTargetSize\",\n \"decimals\": 10\n}","id":"fe6f9596-bc0c-44dc-b70e-f7ee436b9b59","savedPayload":{"position":{"x":28421.790903608253,"y":22921.178894341756},"targetPosition":{"x":28706.903453049825,"y":21804.17057657489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Target Size In Base Asset","config":"{ \n\"codeName\": \"exitTargetSizeInBaseAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionBaseAsset\",\n \"childProperty\": \"exitTargetSize\",\n \"decimals\": 10\n}","id":"b02b1740-a282-4407-93de-68a0f9aa91a4","savedPayload":{"position":{"x":28118.670284722208,"y":22795.719887272393},"targetPosition":{"x":28706.903453049825,"y":21804.17057657489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Entry Target Rate","config":"{ \n\"codeName\": \"entryTargetRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"1ed47645-109e-41f4-a570-80d8f45cef9f","savedPayload":{"position":{"x":27863.078565378753,"y":22589.904556564506},"targetPosition":{"x":28706.903453049825,"y":21804.17057657489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Target Rate","config":"{ \n\"codeName\": \"exitTargetRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"e408f858-f3b2-4eac-aff7-b8ff5fa5b12c","savedPayload":{"position":{"x":27675.768573056434,"y":22320.2665224228},"targetPosition":{"x":28706.903453049825,"y":21804.17057657489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2c81cbf8-d93e-4704-bab2-bc9c0efdb3a4","savedPayload":{"position":{"x":28706.903453049825,"y":21804.17057657489},"targetPosition":{"x":28502.449856140887,"y":20668.651864843298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}},"id":"b371b039-f6c8-4f60-84cb-52f55c96c84d","savedPayload":{"position":{"x":25881.258459416924,"y":19895.00541297443},"targetPosition":{"x":25827.66492267845,"y":19384.721729771823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Position Base Asset","id":"42a79594-bac8-40bf-a9eb-f13716e15465"}}},{"type":"Product Definition","name":"Position Quoted Asset","config":"{\n \"codeName\": \"Position-Quoted-Asset-Objects\",\n \"singularVariableName\": \"positionQuotedAssetObject\",\n \"pluralVariableName\": \"positionQuotedAssetObjects\",\n \"nodePath\": \"tradingEngine.current.position\",\n \"saveAsObjects\": true,\n \"propertyNameThatDefinesObject\": \"status\",\n \"propertyValueThatClosesObject\": \"Closed\",\n \"propertyValueThatPreventsSavingObject\": \"Not Open\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"abab2ab2-3a9b-49bd-8935-9bb01c113761","savedPayload":{"position":{"x":27507.31266579588,"y":21544.833992713462},"targetPosition":{"x":27062.38193312177,"y":20671.95951231103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"40ac7181-100d-4b65-b7fd-a8103cda2300","savedPayload":{"position":{"x":27139.335454141572,"y":21648.566372154422},"targetPosition":{"x":27062.38193312177,"y":20671.95951231103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","id":"07c757d3-bc46-4222-90da-d86cba491ebb","savedPayload":{"position":{"x":27567.85880564114,"y":22156.29213693811},"targetPosition":{"x":26759.62657849578,"y":21603.723698619666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","id":"91d9db38-e2ef-4947-88f0-e2babea49598","savedPayload":{"position":{"x":27379.34874276073,"y":22361.68233629333},"targetPosition":{"x":26759.62657849578,"y":21603.723698619666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Status","config":"{ \n\"codeName\": \"status\",\n\"isString\": true,\n\"isCalculated\": false\n}","id":"d879d6c0-51b6-47db-a4c9-0ec0f69eefcd","savedPayload":{"position":{"x":27140.658065567626,"y":22505.605658385153},"targetPosition":{"x":26759.62657849578,"y":21603.723698619666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Profit Loss In Quoted Asset","config":"{ \n\"codeName\": \"profitLossInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionQuotedAsset\",\n \"childProperty\": \"profitLoss\",\n \"decimals\": 10\n}","id":"4d007dcc-ea53-474d-833b-d43580ea5a1d","savedPayload":{"position":{"x":26871.09791974746,"y":22576.453025317005},"targetPosition":{"x":26759.62657849578,"y":21603.723698619666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ROI In Quoted Asset","config":"{ \n\"codeName\": \"ROIInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionQuotedAsset\",\n \"childProperty\": \"ROI\",\n \"decimals\": 10\n}","id":"7dea3349-8f02-4ecf-8ab8-6a4ec6d0890e","savedPayload":{"position":{"x":26592.74715075924,"y":22568.490276979388},"targetPosition":{"x":26759.62657849578,"y":21603.723698619666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Hit Fail In Quoted Asset","config":"{ \n\"codeName\": \"hitFailInQuotedAsset\",\n\"isString\": true,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionQuotedAsset\",\n \"childProperty\": \"hitFail\"\n}","id":"093a203a-838d-49af-ad26-2feb6b808bdd","savedPayload":{"position":{"x":26327.679133422174,"y":22482.362787992693},"targetPosition":{"x":26759.62657849578,"y":21603.723698619666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Entry Target Size In Quoted Asset","config":"{ \n\"codeName\": \"entryTargetSizeInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionQuotedAsset\",\n \"childProperty\": \"entryTargetSize\",\n \"decimals\": 10\n}","id":"7fb1fb82-57c1-4c64-9613-e1938e99a8ab","savedPayload":{"position":{"x":26097.613507052934,"y":22325.04700166649},"targetPosition":{"x":26759.62657849578,"y":21603.723698619666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Target Size In Quoted Asset","config":"{ \n\"codeName\": \"exitTargetSizeInQuotedAsset\",\n\"isString\": false,\n\"isCalculated\": false,\n \"nodePath\": \"tradingEngine.current.position.positionQuotedAsset\",\n \"childProperty\": \"exitTargetSize\",\n \"decimals\": 10\n}","id":"a44876b4-75a0-4fd1-a623-eeba4decd42f","savedPayload":{"position":{"x":25921.188635345425,"y":22109.28530472339},"targetPosition":{"x":26759.62657849578,"y":21603.723698619666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Entry Target Rate","config":"{ \n\"codeName\": \"entryTargetRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"37888758-269e-48b2-9ca0-5d69d607dacf","savedPayload":{"position":{"x":25812.699247458975,"y":21852.549339476267},"targetPosition":{"x":26759.62657849578,"y":21603.723698619666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Exit Target Rate","config":"{ \n\"codeName\": \"exitTargetRate\",\n\"isString\": false,\n\"isCalculated\": false\n}","id":"1bd0adb3-e67c-49f2-831c-1fa0c74a85f5","savedPayload":{"position":{"x":25780.95040548285,"y":21575.829738935918},"targetPosition":{"x":26759.62657849578,"y":21603.723698619666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b46f9e1f-74e0-4858-bb93-d4d85e72c3a9","savedPayload":{"position":{"x":26759.62657849578,"y":21603.723698619666},"targetPosition":{"x":27062.38193312177,"y":20671.95951231103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}},"id":"a376f02b-a5d2-4079-b5cd-ab7dc894b909","savedPayload":{"position":{"x":25619.139525218154,"y":19853.598606732117},"targetPosition":{"x":25827.66492267845,"y":19384.721729771823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Position Quoted Asset","id":"baed45c2-228e-4679-876e-1867bbef5e9f"}}},{"type":"Product Definition","name":"Stop Loss","config":"{\n \"codeName\": \"Stop-Loss\",\n \"singularVariableName\": \"stopLoss\",\n \"pluralVariableName\": \"stopLosses\",\n \"nodePath\": \"tradingEngine.current.position\",\n \"saveAtCycle\": \"Second\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"0ea22a69-e7cb-4fcf-b7ae-4b7233b196c4","savedPayload":{"position":{"x":30654.4270116396,"y":18774.15712319175},"targetPosition":{"x":29536.703834480937,"y":19059.450453976737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"75b13383-2771-4f58-b2c4-ffadad2e9519","savedPayload":{"position":{"x":30678.671144699445,"y":19223.652639763543},"targetPosition":{"x":29536.703834480937,"y":19059.450453976737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.candle\"\n}","id":"048960a1-1de4-4492-b214-37bfc59d661b","savedPayload":{"position":{"x":33176.67645340078,"y":20461.85121799825},"targetPosition":{"x":30918.269315269088,"y":20905.019421857425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.candle\"\n}","id":"f44a0a9b-3abb-4323-be28-c14a677d2d5f","savedPayload":{"position":{"x":33145.33313624582,"y":21485.453704047017},"targetPosition":{"x":30918.269315269088,"y":20905.019421857425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Stop Loss","config":"{\n \"codeName\": \"stopLoss\",\n \"isString\": false\n}","id":"1152e12b-354a-49cf-bfe1-dbb54a5471bf","savedPayload":{"position":{"x":32672.873245511684,"y":22394.287465253095},"targetPosition":{"x":30918.269315269088,"y":20905.019421857425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Stop Loss Stage","config":"{\n \"codeName\": \"stopLossStage\",\n \"isString\": true,\n \"nodePath\": \"tradingEngine.current.position.stopLoss\"\n}","id":"11b06d00-8e9e-4526-b0d9-c9553f536b4b","savedPayload":{"position":{"x":31852.872167107533,"y":23008.12672297711},"targetPosition":{"x":30918.269315269088,"y":20905.019421857425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Stop Loss Phase","config":"{\n \"codeName\": \"stopLossPhase\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.position.stopLoss\"\n}","id":"2dc164a2-1df6-40d4-861d-15b0cbc6c627","savedPayload":{"position":{"x":30847.958669860876,"y":23205.398686930464},"targetPosition":{"x":30918.269315269088,"y":20905.019421857425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Serial Number","config":"{ \n \"codeName\": \"serialNumber\",\n \"isString\": false,\n \"isCalculated\": false\n}","id":"2ad62b6e-523d-4689-b05f-45393425e588","savedPayload":{"position":{"x":29856.77224198805,"y":22947.041303642272},"targetPosition":{"x":30918.269315269088,"y":20905.019421857425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"04d49dc8-b542-4700-8d07-99323b0f1f62","savedPayload":{"position":{"x":30918.269315269088,"y":20905.019421857425},"targetPosition":{"x":29536.703834480937,"y":19059.450453976737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c18bdc82-216a-4b1d-8850-5c3c9dc2000b","savedPayload":{"position":{"x":25412.69194981757,"y":19686.43516865897},"targetPosition":{"x":25827.66492267845,"y":19384.721729771823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Stop Loss","id":"9b8e4fc2-b62a-4d47-ac5f-08818e463da2"}}},{"type":"Product Definition","name":"Take Profit","config":"{\n \"codeName\": \"Take-Profit\",\n \"singularVariableName\": \"takeProfit\",\n \"pluralVariableName\": \"takeProfits\",\n \"nodePath\": \"tradingEngine.current.position\",\n \"saveAtCycle\": \"Second\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\",\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"3cd59aa1-0590-43b6-9fb7-c85276ac132e","savedPayload":{"position":{"x":29544.873195879572,"y":19897.022738995147},"targetPosition":{"x":28577.181012263885,"y":19743.97589987989},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","config":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n },\n \"timeFrames\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Session/@Product/@Dataset\",\n \"fileName\": \"Time.Frames.json\"\n }\n }","id":"916d5610-87ae-47e7-9067-9a406141e3df","savedPayload":{"position":{"x":29412.46917326791,"y":20255.88143902586},"targetPosition":{"x":28577.181012263885,"y":19743.97589987989},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"New Record Property","config":"{ \n \"codeName\": \"\",\n \"isString\": false,\n \"isCalculated\": false\n}","id":"446b1f2c-905f-4125-b9d9-8e155c6f3da7","savedPayload":{"position":{"x":30963.646237069435,"y":21952.795810863543},"targetPosition":{"x":29034.06847291059,"y":21647.313824265948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Begin","config":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.candle\"\n}","id":"3f8411d3-5a4f-4243-9f6f-d61cc4a28fb5","savedPayload":{"position":{"x":30699.784727496324,"y":22668.00142884056},"targetPosition":{"x":29034.06847291059,"y":21647.313824265948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","config":"{\n \"codeName\": \"end\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.episode.candle\"\n}","id":"437e1ec6-c754-46bb-9942-e05eb056629c","savedPayload":{"position":{"x":30182.309840396523,"y":23227.788128347504},"targetPosition":{"x":29034.06847291059,"y":21647.313824265948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Take Profit","config":"{\n \"codeName\": \"takeProfit\",\n \"isString\": false\n}","id":"81208625-05fb-4e89-bb88-ff16df25bdb7","savedPayload":{"position":{"x":29490.006697846533,"y":23546.94850935291},"targetPosition":{"x":29034.06847291059,"y":21647.313824265948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Take Profit Stage","config":"{\n \"codeName\": \"takeProfitStage\",\n \"isString\": true,\n \"nodePath\": \"tradingEngine.current.position.takeProfit\"\n}","id":"9bce9325-8c54-424f-98b9-e991ca328c24","savedPayload":{"position":{"x":28728.565987281523,"y":23576.88862463763},"targetPosition":{"x":29034.06847291059,"y":21647.313824265948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Stop Loss Phase","config":"{\n \"codeName\": \"takeProfitPhase\",\n \"isString\": false,\n \"nodePath\": \"tradingEngine.current.position.takeProfit\"\n}","id":"4ccb1152-df42-41ef-b8db-da8ee01c6f09","savedPayload":{"position":{"x":28013.363856647047,"y":23313.04908016676},"targetPosition":{"x":29034.06847291059,"y":21647.313824265948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Serial Number","config":"{ \n \"codeName\": \"serialNumber\",\n \"isString\": false,\n \"isCalculated\": false\n}","id":"6e70c156-8d49-4517-b2cf-ee101152e1f3","savedPayload":{"position":{"x":27453.837873763725,"y":22795.398898977404},"targetPosition":{"x":29034.06847291059,"y":21647.313824265948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fe08bafa-9d05-4c76-9448-0d21bd36346c","savedPayload":{"position":{"x":29034.06847291059,"y":21647.313824265948},"targetPosition":{"x":28577.181012263885,"y":19743.97589987989},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2542c7d0-fa26-4b52-a59a-a3630e52eb89","savedPayload":{"position":{"x":25317.312830738374,"y":19438.424234311624},"targetPosition":{"x":25827.66492267845,"y":19384.721729771823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Take Profit","id":"78a2df79-8912-44d7-a8c7-4b6a0a7235c2"}}}],"productDefinitionFolders":[],"id":"5572f4e4-17f2-4037-b524-97d3cf582a64","savedPayload":{"position":{"x":25382.757102439522,"y":19437.14577449594},"targetPosition":{"x":25576.28368021663,"y":19038.303483091906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7e586bb9-0198-431d-83af-cb552d5f6e4e","savedPayload":{"position":{"x":25594.567496569995,"y":19063.39741210879},"targetPosition":{"x":25341.164459522937,"y":18714.90217526442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8c7f3687-b5ae-4a45-bda1-751cb2c55995","savedPayload":{"position":{"x":25690.618530729756,"y":18714.894786060016},"targetPosition":{"x":24941.217404066585,"y":18714.893045797242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}}],"plotters":[{"type":"Plotter","name":"Trading Engine","config":"{ \n\"codeName\": \"Trading-Engine\"\n}","modules":[{"type":"Plotter Module","name":"Episode Counters","config":"{ \n\"codeName\": \"Episode-Counters\"\n}","panels":[{"type":"Plotter Panel","name":"Episode Counters","config":"{ \n \"codeName\": \"Episode-Counters\"\n}","panelData":[{"type":"Panel Data","name":"Periods","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.periods","id":"a603cdac-43fd-4ed9-bc66-12c708158f4c","savedPayload":{"position":{"x":26059.942867748327,"y":18543.946172877997},"targetPosition":{"x":26132.84633256561,"y":18714.527337844993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ed1e5a45-552b-4050-96b6-8f3b7e0e0e42","savedPayload":{"position":{"x":26132.84633256561,"y":18714.527337844993},"targetPosition":{"x":26212.860934257656,"y":18882.294588248973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Strategies","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.strategies","id":"bd3377de-142c-4f1f-a9cd-1e3a92227fb9","savedPayload":{"position":{"x":26227.248725542897,"y":18506.890902760024},"targetPosition":{"x":26219.50338956686,"y":18692.028459966496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3445841f-c443-47ed-ab69-af44aafbd805","savedPayload":{"position":{"x":26219.50338956686,"y":18692.028459966496},"targetPosition":{"x":26212.860934257656,"y":18882.294588248973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Positions","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.positions","id":"a4e07f20-da19-4745-932b-021844ede19f","savedPayload":{"position":{"x":26390.719781233467,"y":18551.027878117187},"targetPosition":{"x":26303.956121054685,"y":18713.726993417295},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"960b035e-f799-4e83-81ab-4ce423d081d6","savedPayload":{"position":{"x":26303.956121054685,"y":18713.726993417295},"targetPosition":{"x":26212.860934257656,"y":18882.294588248973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Orders","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.orders","id":"bb28084c-0e1e-4c27-a488-7d8417fb7794","savedPayload":{"position":{"x":26515.184607695137,"y":18634.65883496103},"targetPosition":{"x":26369.477987274542,"y":18769.903219828615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4ba9c931-98ec-4390-a68e-7392b7e2c0e4","savedPayload":{"position":{"x":26369.477987274542,"y":18769.903219828615},"targetPosition":{"x":26212.860934257656,"y":18882.294588248973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Hits","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.hits","id":"4a2c6bca-66d4-4f1f-a2c9-a034f879032d","savedPayload":{"position":{"x":26586.086995044505,"y":18812.582436585228},"targetPosition":{"x":26404.880834490414,"y":18846.635691777115},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"77748bc7-f305-46f7-a51d-4b07420f0174","savedPayload":{"position":{"x":26404.880834490414,"y":18846.635691777115},"targetPosition":{"x":26212.860934257656,"y":18882.294588248973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Fails","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.fails","id":"0b4b3713-a461-4a82-a014-496bf0a13a44","savedPayload":{"position":{"x":26567.192999861545,"y":18991.06824408525},"targetPosition":{"x":26382.06632992149,"y":18944.54291270843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8c96317c-9c59-4617-ac0d-80a4475b7044","savedPayload":{"position":{"x":26382.06632992149,"y":18944.54291270843},"targetPosition":{"x":26212.860934257656,"y":18882.294588248973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2a5783fe-af9a-443c-b4e7-32d8bdabff82","savedPayload":{"position":{"x":26212.860934257656,"y":18882.294588248973},"targetPosition":{"x":26006.40055248913,"y":19135.14606015873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"recordValues":{"type":"Record Values","name":"New Record Values","id":"11308192-1761-4746-8567-50f5d50eee37","savedPayload":{"position":{"x":26304.700539497426,"y":19195.05761038345},"targetPosition":{"x":26006.40055248913,"y":19135.14606015873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"5e478e3f-e432-4364-8f2c-2f3b2849848b","savedPayload":{"position":{"x":27188.608179637275,"y":18861.616021876565},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Episode Statistics","config":"{ \n\"codeName\": \"Episode-Statistics\"\n}","panels":[{"type":"Plotter Panel","name":"Episode Statistics","config":"{ \n \"codeName\": \"Episode-Statistics\"\n}","panelData":[{"type":"Panel Data","name":"Days","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.days","id":"8ccceec4-4b55-4002-82fc-5eb003680884","savedPayload":{"position":{"x":26717.01923188729,"y":18668.66826389337},"targetPosition":{"x":26806.895312434255,"y":18942.631386101424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a656f547-17d4-48c8-8a30-110cb1cc8d54","savedPayload":{"position":{"x":26806.895312434255,"y":18942.631386101424},"targetPosition":{"x":26896.086089345063,"y":19215.829849639584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Profit Loss","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.profitLoss","id":"2c744dce-e9bc-4b52-ae5a-88153818efe8","savedPayload":{"position":{"x":26982.152038043074,"y":18636.8568142621},"targetPosition":{"x":26935.025140616046,"y":18931.40970898654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dac1e943-73af-419a-89d3-cf7413d0410d","savedPayload":{"position":{"x":26935.025140616046,"y":18931.40970898654},"targetPosition":{"x":26896.086089345063,"y":19215.829849639584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"ROI","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ROI","id":"0262af09-67a3-4948-9f03-903b95f75754","savedPayload":{"position":{"x":27215.4406986089,"y":18736.768425395403},"targetPosition":{"x":27055.53698782344,"y":18976.52474644459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c5ddf4c7-c06c-48cb-b474-aa1049dda30f","savedPayload":{"position":{"x":27055.53698782344,"y":18976.52474644459},"targetPosition":{"x":26896.086089345063,"y":19215.829849639584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Hit Ratio","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.hitRatio","id":"2e63251f-fa85-44c1-a977-6ea9b1289de4","savedPayload":{"position":{"x":27392.40233358069,"y":18922.589166419195},"targetPosition":{"x":27144.1914847952,"y":19069.27227763365},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f4dba581-f375-45b7-b3e9-8397b74c14f9","savedPayload":{"position":{"x":27144.1914847952,"y":19069.27227763365},"targetPosition":{"x":26896.086089345063,"y":19215.829849639584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Anualized Rate Of Return","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.anualizedRateOfReturn","id":"3b65f366-e8c3-4298-9617-9d7cd121a0fc","savedPayload":{"position":{"x":27470.842923246695,"y":19166.48103066235},"targetPosition":{"x":27183.634472010228,"y":19191.275012592618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0ddc2941-7f32-43c4-a2ac-33933f7176ea","savedPayload":{"position":{"x":27183.634472010228,"y":19191.275012592618},"targetPosition":{"x":26896.086089345063,"y":19215.829849639584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Hit Fail","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.hitFail","id":"1fda27ad-cc5a-441a-8d2e-d0e820d994eb","savedPayload":{"position":{"x":27435.670241431373,"y":19419.85231854285},"targetPosition":{"x":27166.02500473732,"y":19317.92402557873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"aa06aaaa-c76e-4cb7-b2a4-752703cd91d8","savedPayload":{"position":{"x":27166.02500473732,"y":19317.92402557873},"targetPosition":{"x":26896.086089345063,"y":19215.829849639584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6ea43033-418d-4d87-b640-02010679aa8b","savedPayload":{"position":{"x":26896.086089345063,"y":19215.829849639584},"targetPosition":{"x":26641.265122480774,"y":19457.976109369916},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"recordValues":{"type":"Record Values","name":"New Record Values","id":"a22754c1-aa31-4bef-8d7f-4b0df8b2c6e5","savedPayload":{"position":{"x":26967.4916318495,"y":19553.100034433948},"targetPosition":{"x":26641.265122480774,"y":19457.976109369916},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"6ce18a43-2e6a-452e-a72d-1c56a58d3f81","savedPayload":{"position":{"x":27297.753465151323,"y":19024.83860195168},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Current Candle","config":"{ \n\"codeName\": \"Current-Candle\"\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"db2a5867-c3c9-40ae-86f2-19845ca4bffe","savedPayload":{"position":{"x":27731.11225175724,"y":19057.002268989316},"targetPosition":{"x":27384.512928742068,"y":19200.701280440822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"31789d43-d608-4eeb-a3ff-338a99074045","savedPayload":{"position":{"x":27384.512928742068,"y":19200.701280440822},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Episode Balances","config":"{ \n\"codeName\": \"Current-Balance\"\n}","panels":[{"type":"Plotter Panel","name":"Current Balance","config":"{ \n \"codeName\": \"Current-Balance\"\n}","panelData":[{"type":"Panel Data","name":"Balance Base Asset","config":"{\n \"valueDecimals\": 8\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.balanceBaseAsset","id":"d4a477a7-af7f-4293-b93c-7132d21bdc69","savedPayload":{"position":{"x":27250.797457768676,"y":18431.54872219762},"targetPosition":{"x":27169.589278415515,"y":18702.31171699251},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"741ee6b7-be56-45bc-a40e-5b47a5c628d3","savedPayload":{"position":{"x":27169.589278415515,"y":18702.31171699251},"targetPosition":{"x":27138.9491725672,"y":18992.020230574035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Balance Quoted Asset","config":"{\n \"valueDecimals\": 8\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.balanceQuotedAsset","id":"16c05b8a-fab1-4acb-b3e0-52a99b808140","savedPayload":{"position":{"x":27692.197426640436,"y":18859.415128764263},"targetPosition":{"x":27416.36133617033,"y":18925.08068171851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a59ec5f0-a5b8-4d7d-bf1f-800776e7dcfe","savedPayload":{"position":{"x":27416.36133617033,"y":18925.08068171851},"targetPosition":{"x":27138.9491725672,"y":18992.020230574035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"afe6979c-2cb9-4e44-be90-03bc54c60fd6","savedPayload":{"position":{"x":27138.9491725672,"y":18992.020230574035},"targetPosition":{"x":26851.424627600452,"y":19266.346230000505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"recordValues":{"type":"Record Values","name":"New Record Values","id":"27e334d8-0ec2-4047-a961-af4c5fcf8d32","savedPayload":{"position":{"x":27218.694295795525,"y":19373.516515224237},"targetPosition":{"x":26851.424627600452,"y":19266.346230000505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"e5d9e3e1-d1f4-4493-b452-33fe49c81228","savedPayload":{"position":{"x":27447.541467970375,"y":19386.332112862074},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Distance To Event","config":"{ \n\"codeName\": \"Distance-To-Event\"\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"dc45b078-aeee-40bf-8f6d-f8b12a57494f","savedPayload":{"position":{"x":27857.866186000956,"y":19529.44807014092},"targetPosition":{"x":27485.79309841987,"y":19578.577236945697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"56eb7de2-0281-404a-bd4d-34ac113e2325","savedPayload":{"position":{"x":27485.79309841987,"y":19578.577236945697},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Current Strategy","config":"{ \n\"codeName\": \"Current-Strategy\"\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"97c36937-1cdc-42ce-b886-ca8220b14025","savedPayload":{"position":{"x":27873.96005269971,"y":19774.200663346113},"targetPosition":{"x":27498.617404113924,"y":19774.202375498484},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"a3c31000-1b82-4fe9-ae56-6d5893582b16","savedPayload":{"position":{"x":27498.617404113924,"y":19774.202375498484},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Last Strategy","config":"{ \n\"codeName\": \"Last-Strategy\"\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"c242da84-b00b-4900-ad95-b25a57ef9603","savedPayload":{"position":{"x":27857.96675586694,"y":20018.361225952627},"targetPosition":{"x":27485.80728203789,"y":19969.562836640656},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"028aaa23-630c-4aa6-a168-6b2a128b1a83","savedPayload":{"position":{"x":27485.80728203789,"y":19969.562836640656},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Current Position","config":"{ \n\"codeName\": \"Current-Position\"\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"daf7ee4e-434b-48df-af3b-b17489fe6a12","savedPayload":{"position":{"x":27810.168740661666,"y":20258.822275040788},"targetPosition":{"x":27447.57755748033,"y":20161.823804548258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"0d2212c7-07bb-4c41-94fb-00844415ba5e","savedPayload":{"position":{"x":27447.57755748033,"y":20161.823804548258},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Last Position","config":"{ \n\"codeName\": \"Last-Position\"\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"c4473b0f-99f8-4129-b8ee-1f6a988e9440","savedPayload":{"position":{"x":27731.390171223902,"y":20490.967163873214},"targetPosition":{"x":27384.580840236074,"y":20347.43859030164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"08c88b9c-70f1-49ff-aa16-21f2bc1c0ba1","savedPayload":{"position":{"x":27384.580840236074,"y":20347.43859030164},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Previous Candle","config":"{ \n\"codeName\": \"Previous-Candle\"\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"559cabae-7e0e-4ff8-b1dd-8f822421fe6e","savedPayload":{"position":{"x":27622.982889584426,"y":20710.831681332096},"targetPosition":{"x":27297.89574344906,"y":20523.23627242369},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"076dcee2-2923-4455-8697-263649515a3b","savedPayload":{"position":{"x":27297.89574344906,"y":20523.23627242369},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Market Buy Orders","config":"{ \n\"codeName\": \"Market-Buy-Orders\",\n \"useRateAtMousePosition\": true\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"8ed02a94-4fce-4314-ab0a-6642e85bdca3","savedPayload":{"position":{"x":27486.803608452115,"y":20914.65855157619},"targetPosition":{"x":27189.005904561604,"y":20686.211895659868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"50d624c9-9a6e-4d57-a147-29d5c004b3f2","savedPayload":{"position":{"x":27189.005904561604,"y":20686.211895659868},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Market Sell Orders","config":"{ \n\"codeName\": \"Market-Sell-Orders\",\n \"useRateAtMousePosition\": true\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"15dc7163-1703-4cad-9253-d48d7bb01800","savedPayload":{"position":{"x":27325.178375689095,"y":21098.962621499177},"targetPosition":{"x":27059.77456100928,"y":20833.57780528373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"4f84a1a5-f9cd-4b9d-9d91-661ba912e2ca","savedPayload":{"position":{"x":27059.77456100928,"y":20833.57780528373},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Limit Buy Orders","config":"{ \n\"codeName\": \"Limit-Buy-Orders\",\n \"useRateAtMousePosition\": true\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"b89ff555-961b-4190-b874-4968e26db1b4","savedPayload":{"position":{"x":27140.886866048273,"y":21260.58027562958},"targetPosition":{"x":26912.415468236602,"y":20962.80739635517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"17ec46bd-e5c0-48d5-a3b6-e108cc835f17","savedPayload":{"position":{"x":26912.415468236602,"y":20962.80739635517},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Limit Sell Orders","config":"{ \n\"codeName\": \"Limit-Sell-Orders\",\n \"useRateAtMousePosition\": true\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"fe4a4590-f68f-454e-84ba-96ae9cef3b70","savedPayload":{"position":{"x":26937.070144728583,"y":21396.771729850418},"targetPosition":{"x":26749.442994541932,"y":21071.70338307827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"1ec8da3f-8749-430d-8ad9-35fffc0d61ec","savedPayload":{"position":{"x":26749.442994541932,"y":21071.70338307827},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Current Strategy Open Stage","config":"{ \n\"codeName\": \"Current-Strategy-Open-Stage\"\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"eca15627-7af5-4aef-9095-90c42831202c","savedPayload":{"position":{"x":26717.216482253276,"y":21505.187833464504},"targetPosition":{"x":26573.65146529854,"y":21158.390758589896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"f759a457-fc11-43a8-bf2c-6ebf1db0e78d","savedPayload":{"position":{"x":26573.65146529854,"y":21158.390758589896},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Current Strategy Close Stage","config":"{ \n\"codeName\": \"Current-Strategy-Close-Stage\"\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"59cb7431-a489-4ab2-ba79-78996e8630c8","savedPayload":{"position":{"x":26485.090304967092,"y":21583.972538305734},"targetPosition":{"x":26388.04832495873,"y":21221.388202509024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"6be13ce1-0fae-4355-99b2-dc8db000251f","savedPayload":{"position":{"x":26388.04832495873,"y":21221.388202509024},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Current Strategy Trigger Stage","config":"{ \n\"codeName\": \"Current-Strategy-Trigger-Stage\"\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"aec5592e-57b9-4256-88d8-861534624284","savedPayload":{"position":{"x":26244.65927089459,"y":21631.783728055394},"targetPosition":{"x":26195.803513307346,"y":21259.621877006426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"823fa15f-bf29-4784-a5f8-5b82d2ed7645","savedPayload":{"position":{"x":26195.803513307346,"y":21259.621877006426},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Current Strategy Manage Stage","config":"{ \n\"codeName\": \"Current-Strategy-Manage-Stage\"\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"c060b2bf-e594-4bb5-b0d6-d48f5c03d2e0","savedPayload":{"position":{"x":26000.406671277815,"y":21647.785184146283},"targetPosition":{"x":26000.407867469083,"y":21272.420628937787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"34a912c3-4b0f-4f21-9736-4ef47cd0544d","savedPayload":{"position":{"x":26000.407867469083,"y":21272.420628937787},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Current Episode","config":"{ \n\"codeName\": \"Current-Position\"\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"808e43e8-468e-4d37-b2c2-210b902f2d6b","savedPayload":{"position":{"x":25755.91947380422,"y":21631.729056419244},"targetPosition":{"x":25804.864027432206,"y":21259.594210566564},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"bf241117-1c2c-470c-a172-b86b2befa9a2","savedPayload":{"position":{"x":25804.864027432206,"y":21259.594210566564},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Episode Base Asset","config":"{ \n\"codeName\": \"Previous-Candle\"\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"3e32e9c9-41c5-44c8-85ae-2ef6ee053135","savedPayload":{"position":{"x":25515.462691843022,"y":21583.85359091965},"targetPosition":{"x":25612.601702019714,"y":21221.330110342857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"a99b25e6-7aca-41a2-aacc-1911aac2ee3e","savedPayload":{"position":{"x":25612.601702019714,"y":21221.330110342857},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Episode Quoted Asset","config":"{ \n\"codeName\": \"Previous-Candle\"\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"82cc01b1-b354-4e30-a1a0-7bb378dc322c","savedPayload":{"position":{"x":25283.276625966704,"y":21504.965627837973},"targetPosition":{"x":25426.95118600624,"y":21158.28098948216},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"ede92318-db13-4951-83b1-11fc0345d677","savedPayload":{"position":{"x":25426.95118600624,"y":21158.28098948216},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Last Market Order","config":"{ \n\"codeName\": \"Previous-Candle\"\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"0bbba556-73d6-43f9-bf55-17e83ea9ab40","savedPayload":{"position":{"x":25063.31212818336,"y":21396.36732310087},"targetPosition":{"x":25251.06538158782,"y":21071.503778919294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"05aa37c8-9f6d-4276-96a6-3123707e7686","savedPayload":{"position":{"x":25251.06538158782,"y":21071.503778919294},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Last Limit Order","config":"{ \n\"codeName\": \"Previous-Candle\"\n}","panels":[],"recordValues":{"type":"Record Values","name":"New Record Values","id":"c89abeeb-79ff-4f3f-a031-091b10f8037a","savedPayload":{"position":{"x":24859.131448426462,"y":21259.699431128152},"targetPosition":{"x":25087.774486877566,"y":20962.324437428128},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"2284d48f-cf52-4277-b81e-c62afef88b71","savedPayload":{"position":{"x":25087.774486877566,"y":20962.324437428128},"targetPosition":{"x":26000.405045132695,"y":19774.235829020963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ebb03c87-e87e-4f4b-8763-361854776287","savedPayload":{"position":{"x":26000.78227746232,"y":19774.44390092886},"targetPosition":{"x":24941.217404066585,"y":18714.893045797242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"Trading System","config":"{ \n\"codeName\": \"\"\n}","modules":[{"type":"Plotter Module","name":"Highlights","config":"{ \n\"codeName\": \"Highlights\",\n\"connectTo\": \"Trading System\"\n}","panels":[],"nodesHighlights":{"type":"Nodes Highlights","name":"New Nodes Highlights","config":"{ \n\"nodePath\": \"\"\n}","id":"fa39a76d-1b97-41a2-ab18-f33c2f31fded","savedPayload":{"position":{"x":25746.096270475933,"y":19388.718285691633},"targetPosition":{"x":25365.00135760477,"y":19265.385140825107},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d979c9f0-530a-41d3-a357-b57a3e4f2201","savedPayload":{"position":{"x":25365.00135760477,"y":19265.385140825107},"targetPosition":{"x":24948.211258290095,"y":19131.195968673692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Values","config":"{ \n\"codeName\": \"Values\",\n\"connectTo\": \"Trading System\"\n}","panels":[],"nodesValues":{"type":"Nodes Values","name":"New Nodes Values","config":"{ \n\"nodePath\": \"\"\n}","id":"f42e5006-d8ec-437a-8906-53d7ce68b79c","savedPayload":{"position":{"x":25626.70528125369,"y":19623.47013268235},"targetPosition":{"x":25302.619891367955,"y":19388.39397730765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"476925ed-e2ac-443d-82f3-501b64ca6c87","savedPayload":{"position":{"x":25302.619891367955,"y":19388.39397730765},"targetPosition":{"x":24948.211258290095,"y":19131.195968673692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Errors","config":"{ \n\"codeName\": \"Errors\",\n\"connectTo\": \"Trading System\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Middle Point","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin + (record.end - record.begin)\ny = 0","id":"733b921d-8f51-4bca-b0b5-b0d9a1f9c734","savedPayload":{"position":{"x":26709.490928002022,"y":19612.516391852936},"targetPosition":{"x":26312.010964738358,"y":19654.17208756814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f189c006-3adb-4b21-8b9d-342f94e7640f","savedPayload":{"position":{"x":26312.010964738358,"y":19654.17208756814},"targetPosition":{"x":25914.357607557165,"y":19695.772442131776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e50625b6-8b4d-4ae2-960b-b45769639162","savedPayload":{"position":{"x":25914.357607557165,"y":19695.772442131776},"targetPosition":{"x":25516.478876733156,"y":19737.376322356326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[],"images":[{"type":"Image","name":"New Image","config":"{ \n\"codeName\": \"bullet-error\", \n\"size\": 10\n}","imageCondition":{"type":"Image Condition","name":"New Image Condition","code":"record.errors.length> 0","id":"956eb8d9-f297-4783-ac35-625b8d7b1c67","savedPayload":{"position":{"x":26025.44219008426,"y":20020.416227259208},"targetPosition":{"x":25827.50302043519,"y":19989.02559745765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"imagePosition":{"type":"Image Position","name":"Middle Point","config":"{ \n\"offsetX\": 0,\n \"offsetY\": 0\n }","id":"1da7aa3c-77fb-4d0d-8895-e1c231dcca90","savedPayload":{"position":{"x":25899.601736000357,"y":20175.992702536103},"targetPosition":{"x":25827.50302043519,"y":19989.02559745765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Middle Point","id":"f189c006-3adb-4b21-8b9d-342f94e7640f"}}},"id":"bd5f7149-372f-4a70-94df-4727b3cd3b32","savedPayload":{"position":{"x":25827.50302043519,"y":19989.02559745765},"targetPosition":{"x":25516.478876733156,"y":19737.376322356326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"texts":[{"type":"Text","name":"New Text","textCondition":{"type":"Text Condition","name":"New Text Condition","code":"record.errors.length> 0","id":"ac81077c-8c42-4c4c-b443-5faa1ad3b3b4","savedPayload":{"position":{"x":25733.308540690607,"y":20234.123927025877},"targetPosition":{"x":25558.280408255265,"y":20135.203422200044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"textPosition":{"type":"Text Position","name":"Middle Point","config":"{ \n\"offsetX\": 0,\n \"offsetY\": -15\n }","id":"5d4e3be6-6a2b-4cca-8086-c2db9a75bd23","savedPayload":{"position":{"x":25641.107227409444,"y":20319.645679036053},"targetPosition":{"x":25558.280408255265,"y":20135.203422200044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Middle Point","id":"f189c006-3adb-4b21-8b9d-342f94e7640f"}}},"textFormula":{"type":"Text Formula","name":"New Text Formula","code":"record.errors.length","id":"adc6d425-cfa0-47e9-a67d-444a112ee3c2","savedPayload":{"position":{"x":25516.546054423918,"y":20333.291241122286},"targetPosition":{"x":25558.280408255265,"y":20135.203422200044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"textStyle":{"type":"Text Style","name":"New Text Style","config":"{\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.5,\n \"fontSize\": 10\n}","id":"0907179a-16cc-4682-83af-2e7e0ad4d7ba","savedPayload":{"position":{"x":25406.919964675923,"y":20267.822182008105},"targetPosition":{"x":25558.280408255265,"y":20135.203422200044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ead7ed8a-332d-4ab1-b53e-1e9e0f705a81","savedPayload":{"position":{"x":25558.280408255265,"y":20135.203422200044},"targetPosition":{"x":25516.478876733156,"y":19737.376322356326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c2dcdcbc-31bf-4a44-b47f-a2e1bba10db9","savedPayload":{"position":{"x":25516.478876733156,"y":19737.376322356326},"targetPosition":{"x":25205.64813822659,"y":19485.52271836311},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[],"nodesErrors":{"type":"Nodes Errors","name":"New Nodes Errors","config":"{ \n\"nodePath\": \"\"\n}","id":"c814ea79-0fa6-44bb-a636-d46d7b3720c4","savedPayload":{"position":{"x":25349.154889971724,"y":19859.228781401107},"targetPosition":{"x":25205.64813822659,"y":19485.52271836311},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"64684730-d049-4d3c-8013-b48c5438417e","savedPayload":{"position":{"x":25205.64813822659,"y":19485.52271836311},"targetPosition":{"x":24948.211258290095,"y":19131.195968673692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Status","config":"{ \n\"codeName\": \"Status\",\n\"connectTo\": \"Trading System\"\n}","panels":[],"nodesStatus":{"type":"Nodes Status","name":"New Nodes Status","config":"{ \n\"nodePath\": \"\"\n}","id":"2b1290d8-41ff-48a3-a11b-45f1228e2a84","savedPayload":{"position":{"x":25206.636525722093,"y":19928.842519247053},"targetPosition":{"x":25083.394619561852,"y":19547.877928739632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0437448d-8740-496b-8fce-d3804be81a2b","savedPayload":{"position":{"x":25083.394619561852,"y":19547.877928739632},"targetPosition":{"x":24948.211258290095,"y":19131.195968673692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Progress","config":"{ \n\"codeName\": \"Progress\",\n\"connectTo\": \"Trading System\"\n}","panels":[],"nodesProgress":{"type":"Nodes Progress","name":"New Nodes Progress","config":"{ \n\"nodePath\": \"\"\n}","id":"00c9d7bc-295f-48b6-81a0-71b6bc0b6299","savedPayload":{"position":{"x":24948.02621850174,"y":19969.88767028446},"targetPosition":{"x":24948.121930655147,"y":19569.30467572958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"99aecc8d-2bc4-4748-b642-78888c2d35eb","savedPayload":{"position":{"x":24948.121930655147,"y":19569.30467572958},"targetPosition":{"x":24948.211258290095,"y":19131.195968673692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Running","config":"{ \n\"codeName\": \"Running\",\n\"connectTo\": \"Trading System\"\n}","panels":[],"nodesRunning":{"type":"Nodes Running","name":"New Nodes Running","config":"{ \n\"nodePath\": \"\"\n}","id":"3ef03483-8d69-452c-9f56-984574b79e32","savedPayload":{"position":{"x":24688.81614748063,"y":19928.764134101122},"targetPosition":{"x":24812.658025611872,"y":19547.896728303247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ac1e8218-af24-491f-a552-736d83d68c01","savedPayload":{"position":{"x":24812.658025611872,"y":19547.896728303247},"targetPosition":{"x":24948.211258290095,"y":19131.195968673692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Announcements","config":"{ \n\"codeName\": \"Announcements\",\n\"connectTo\": \"Trading System\"\n}","panels":[],"nodesAnnouncements":{"type":"Nodes Announcements","name":"New Nodes Announcements","id":"197785fc-72c7-46ef-83bf-a095b01cbfec","savedPayload":{"position":{"x":24454.902207896,"y":19809.5211405365},"targetPosition":{"x":24690.49405191757,"y":19485.59490815017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0a3b8bea-749a-48ce-8b53-e4a731555b98","savedPayload":{"position":{"x":24690.49405191757,"y":19485.59490815017},"targetPosition":{"x":24948.211258290095,"y":19131.195968673692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Warnings","config":"{ \n\"codeName\": \"Warnings\",\n\"connectTo\": \"Trading System\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Middle Point","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin + (record.end - record.begin)\ny = 0","id":"60641507-8c97-4860-8e20-0190645c9028","savedPayload":{"position":{"x":24032.31855953257,"y":21486.854641013415},"targetPosition":{"x":23995.22992074465,"y":21131.710615915534},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6667ade6-17c3-4415-9665-61b2cd65a128","savedPayload":{"position":{"x":23995.22992074465,"y":21131.710615915534},"targetPosition":{"x":23958.13413354043,"y":20776.477101811004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"52f34194-677e-4f9f-a6fb-90cb76defaa9","savedPayload":{"position":{"x":23958.13413354043,"y":20776.477101811004},"targetPosition":{"x":23920.866628465992,"y":20421.043773168527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[],"images":[{"type":"Image","name":"New Image","config":"{ \n\"codeName\": \"bullet-warning\", \n\"size\": 10\n}","imageCondition":{"type":"Image Condition","name":"New Image Condition","code":"record.warnings.length> 0","id":"daa37240-427a-42cb-aaa0-d67dc309b195","savedPayload":{"position":{"x":23668.345324086724,"y":20875.157725057943},"targetPosition":{"x":23696.330748151286,"y":20698.608063028038},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"imagePosition":{"type":"Image Position","name":"Middle Point","config":"{ \n\"offsetX\": 0,\n \"offsetY\": 0\n }","id":"4e52702c-9902-47ab-854e-9284d5535f97","savedPayload":{"position":{"x":23529.548226273782,"y":20762.726715602428},"targetPosition":{"x":23696.330748151286,"y":20698.608063028038},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Middle Point","id":"6667ade6-17c3-4415-9665-61b2cd65a128"}}},"id":"7850e440-3961-4027-b5cb-d551cb7378b0","savedPayload":{"position":{"x":23696.330748151286,"y":20698.608063028038},"targetPosition":{"x":23920.866628465992,"y":20421.043773168527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"texts":[{"type":"Text","name":"New Text","textCondition":{"type":"Text Condition","name":"New Text Condition","code":"record.warnings.length> 0","id":"c0348c71-25ea-455e-ba9a-bac2c52ae160","savedPayload":{"position":{"x":23482.106223371065,"y":20619.477842683515},"targetPosition":{"x":23565.68532865562,"y":20458.256837707813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"textPosition":{"type":"Text Position","name":"Middle Point","config":"{ \n\"offsetX\": 0,\n \"offsetY\": -15\n }","id":"8b40e546-1464-4f76-a316-fa24d598a9f7","savedPayload":{"position":{"x":23396.781006507113,"y":20536.642438181694},"targetPosition":{"x":23565.68532865562,"y":20458.256837707813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Middle Point","id":"6667ade6-17c3-4415-9665-61b2cd65a128"}}},"textFormula":{"type":"Text Formula","name":"New Text Formula","code":"record.warnings.length","id":"a115a163-0e52-457f-a4c8-fa802bf3f43b","savedPayload":{"position":{"x":23382.11878952918,"y":20420.15539066471},"targetPosition":{"x":23565.68532865562,"y":20458.256837707813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"textStyle":{"type":"Text Style","name":"New Text Style","config":"{\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.5,\n \"fontSize\": 10\n}","id":"2ba2d788-3f0d-4f88-b712-8db4568ab1c2","savedPayload":{"position":{"x":23453.411266743704,"y":20314.064092151217},"targetPosition":{"x":23565.68532865562,"y":20458.256837707813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8e5362d1-e9bf-43c4-b069-e3224108076a","savedPayload":{"position":{"x":23565.68532865562,"y":20458.256837707813},"targetPosition":{"x":23920.866628465992,"y":20421.043773168527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b30412b8-45bc-4f2e-922e-8660c28ca181","savedPayload":{"position":{"x":23920.866628465992,"y":20421.043773168527},"targetPosition":{"x":24369.87948203239,"y":19866.58761833955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[],"nodesWarnings":{"type":"Nodes Warnings","name":"New Nodes Warnings","id":"3d3a4958-90dd-458e-b1c8-a31bc1ff864c","savedPayload":{"position":{"x":23703.384035251325,"y":20121.88029406598},"targetPosition":{"x":24369.87948203239,"y":19866.58761833955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a9709093-95c1-4b1b-aeb5-329c7505ab75","savedPayload":{"position":{"x":24596.09234260764,"y":19396.23714085924},"targetPosition":{"x":24948.211258290095,"y":19131.195968673692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Infos","config":"{ \n\"codeName\": \"Infos\",\n\"connectTo\": \"Trading System\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Middle Point","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin + (record.end - record.begin)\ny = 0","id":"990f865c-15f2-4d9f-af98-7328567ca132","savedPayload":{"position":{"x":23447.757922188623,"y":21103.36443499447},"targetPosition":{"x":23521.974942241388,"y":20754.132323114452},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"672516ff-44dd-433e-a225-0145820bcf4b","savedPayload":{"position":{"x":23521.974942241388,"y":20754.132323114452},"targetPosition":{"x":23596.18833449328,"y":20404.82719849961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1f66a38f-e2e0-464e-8205-26fbd19545ad","savedPayload":{"position":{"x":23596.18833449328,"y":20404.82719849961},"targetPosition":{"x":23670.22801065474,"y":20055.512012425057},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[],"images":[{"type":"Image","name":"New Image","config":"{ \n\"codeName\": \"bullet-info\", \n\"size\": 10\n}","imageCondition":{"type":"Image Condition","name":"New Image Condition","code":"record.infos.length> 0","id":"336f9905-b6b5-4a2d-af4b-79e393c6ea43","savedPayload":{"position":{"x":23289.586112992107,"y":20409.463456126858},"targetPosition":{"x":23370.819778941892,"y":20250.102039693717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"imagePosition":{"type":"Image Position","name":"Middle Point","config":"{ \n\"offsetX\": 0,\n \"offsetY\": 0\n }","id":"d96df59a-4c0a-4796-a66d-eb3402886378","savedPayload":{"position":{"x":23192.23889021938,"y":20259.601305986784},"targetPosition":{"x":23370.819778941892,"y":20250.102039693717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Middle Point","id":"672516ff-44dd-433e-a225-0145820bcf4b"}}},"id":"a75d9a2a-2c04-4cde-a4bc-30018b845ba4","savedPayload":{"position":{"x":23370.819778941892,"y":20250.102039693717},"targetPosition":{"x":23670.22801065474,"y":20055.512012425057},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"texts":[{"type":"Text","name":"New Text","textCondition":{"type":"Text Condition","name":"New Text Condition","code":"record.infos.length> 0","id":"55bcdf23-d5c5-4b48-8876-52dd78195a14","savedPayload":{"position":{"x":23191.61259644389,"y":20108.753058817678},"targetPosition":{"x":23320.926610066625,"y":19981.24938324716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"textPosition":{"type":"Text Position","name":"Middle Point","config":"{ \n\"offsetX\": 0,\n \"offsetY\": -15\n }","id":"70422153-eccc-4bfc-8b45-bafb05cc8720","savedPayload":{"position":{"x":23136.066846094483,"y":20003.599989666465},"targetPosition":{"x":23320.926610066625,"y":19981.24938324716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Middle Point","id":"672516ff-44dd-433e-a225-0145820bcf4b"}}},"textFormula":{"type":"Text Formula","name":"New Text Formula","code":"record.infos.length","id":"38bac0f6-2e49-4def-a4fa-a997c40b7074","savedPayload":{"position":{"x":23158.17651322318,"y":19888.32387683588},"targetPosition":{"x":23320.926610066625,"y":19981.24938324716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"textStyle":{"type":"Text Style","name":"New Text Style","config":"{\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.5,\n \"fontSize\": 10\n}","id":"5952c7e2-ddca-41e8-aecc-4a3e33e6420e","savedPayload":{"position":{"x":23258.727217789175,"y":19809.36426677312},"targetPosition":{"x":23320.926610066625,"y":19981.24938324716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b9c1ad2c-f7ad-433b-a149-e33623cd4121","savedPayload":{"position":{"x":23320.926610066625,"y":19981.24938324716},"targetPosition":{"x":23670.22801065474,"y":20055.512012425057},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8a6e20b3-0cf5-42ec-b9d0-58215ed556c1","savedPayload":{"position":{"x":23670.22801065474,"y":20055.512012425057},"targetPosition":{"x":24268.31217291204,"y":19667.07007836019},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[],"nodesInfos":{"type":"Nodes Infos","name":"New Nodes Infos","id":"4183f03b-db5b-4ba7-8e4f-befc192cbe36","savedPayload":{"position":{"x":23555.553601565916,"y":19703.871255766393},"targetPosition":{"x":24268.31217291204,"y":19667.07007836019},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f175df3b-a277-44bc-88db-dcf6b0e3fa38","savedPayload":{"position":{"x":24549.671160230748,"y":19267.714090047924},"targetPosition":{"x":24948.211258290095,"y":19131.195968673692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"34f9d374-f4ae-4abf-96e3-978c6b8a879a","savedPayload":{"position":{"x":24941.221197592346,"y":19464.654508869622},"targetPosition":{"x":24941.217404066585,"y":18714.893045797242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"Trading Episode","config":"{ \n\"codeName\": \"\"\n}","modules":[{"type":"Plotter Module","name":"Episode Objects","config":"{ \n \"codeName\": \"Strategy-Objects\", \n \"icon\": \"trend\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Begin Bottom","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"76185b66-f987-453f-8c6a-922af52e1496","savedPayload":{"position":{"x":25433.60919975209,"y":19631.77072969557},"targetPosition":{"x":25238.938190958066,"y":19678.240375209243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d36cc3b7-cf35-4b2d-9e62-af77e624bd8a","savedPayload":{"position":{"x":25238.938190958066,"y":19678.240375209243},"targetPosition":{"x":24851.000147389183,"y":19773.066561954387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin Top","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.beginRate","id":"015889b5-8517-4d56-8335-b546931b7582","savedPayload":{"position":{"x":25449.265852365555,"y":19819.486587033978},"targetPosition":{"x":25249.569084746458,"y":19803.739244921046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d51a844a-acff-4717-b416-ac02113bcb84","savedPayload":{"position":{"x":25249.569084746458,"y":19803.739244921046},"targetPosition":{"x":24851.000147389183,"y":19773.066561954387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End Bottom","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"6da64a35-215f-4e20-a1a4-b715565c9ec5","savedPayload":{"position":{"x":25405.53827765419,"y":20002.764037030935},"targetPosition":{"x":25220.525581431055,"y":19926.009858296286},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cdc081f1-7080-407e-a1d8-20e71c2903f5","savedPayload":{"position":{"x":25220.525581431055,"y":19926.009858296286},"targetPosition":{"x":24851.000147389183,"y":19773.066561954387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End Top","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.endRate","id":"ef75589f-d40b-48f3-9d22-c3819d4362d6","savedPayload":{"position":{"x":25304.93083741564,"y":20165.28813323237},"targetPosition":{"x":25152.869386439772,"y":20035.034797671662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a53dfccb-7edd-4b83-84dc-56f62fb77e2e","savedPayload":{"position":{"x":25152.869386439772,"y":20035.034797671662},"targetPosition":{"x":24851.000147389183,"y":19773.066561954387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"75792ba3-caac-448f-976a-2e0beaa5fb15","savedPayload":{"position":{"x":24851.000147389183,"y":19773.066561954387},"targetPosition":{"x":24438.704392618998,"y":19674.341377278408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Closed Base","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.status === 'Closed'","id":"aab82eaa-0871-4f3c-a133-f211a2de6a5d","savedPayload":{"position":{"x":24251.979671521156,"y":20232.976397686947},"targetPosition":{"x":24084.779762334307,"y":20577.500690620127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.25,\n \"lineWidth\": 2,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 2,\n \"lineDash\": [0,0]\n }\n}","id":"2eff63cf-253f-46a3-b434-2e793943f39a","savedPayload":{"position":{"x":24798.55059602381,"y":20747.205554246633},"targetPosition":{"x":24456.783855635804,"y":20666.160678812274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"4b53ad47-88ba-4e43-b0c6-da437e26469b","savedPayload":{"position":{"x":24456.783855635804,"y":20666.160678812274},"targetPosition":{"x":24084.779762334307,"y":20577.500690620127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Bottom","id":"b06f7ce1-592a-46e1-99ae-6d5b728b7ce6","savedPayload":{"position":{"x":24115.91297694319,"y":20958.129613361627},"targetPosition":{"x":24084.779762334307,"y":20577.500690620127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"d36cc3b7-cf35-4b2d-9e62-af77e624bd8a"}}},{"type":"Polygon Vertex","name":"End Bottom","id":"1d460f06-361e-4e8a-a119-02e7d1d40b14","savedPayload":{"position":{"x":23700.349050710403,"y":20714.58276632412},"targetPosition":{"x":24084.779762334307,"y":20577.500690620127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bottom","id":"cdc081f1-7080-407e-a1d8-20e71c2903f5"}}}],"id":"7237c558-a0e5-46c6-8cf5-ebc555e98efb","savedPayload":{"position":{"x":24775.415570056815,"y":19919.10435787508},"targetPosition":{"x":24438.704392618998,"y":19674.341377278408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Open Base","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.status === 'Open'","id":"dac76f26-8574-413e-9a59-c3d22393f884","savedPayload":{"position":{"x":24131.34951961687,"y":20448.114324078524},"targetPosition":{"x":23845.69732282563,"y":20712.286183561904},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.25,\n \"lineWidth\": 2,\n \"lineDash\": [3,3]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 2,\n \"lineDash\": [3,3]\n }\n}","id":"01979f43-b2d9-4efb-beae-be89986ad308","savedPayload":{"position":{"x":24440.580644591468,"y":21141.89978871252},"targetPosition":{"x":24155.491183441933,"y":20936.062861603354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"31d548c0-90ae-456a-80c1-f11da75d9203","savedPayload":{"position":{"x":24155.491183441933,"y":20936.062861603354},"targetPosition":{"x":23845.69732282563,"y":20712.286183561904},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Bottom","id":"7732c454-a983-4af6-aa1b-4ac89412c735","savedPayload":{"position":{"x":23729.10471225306,"y":21076.13322759533},"targetPosition":{"x":23845.69732282563,"y":20712.286183561904},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"d36cc3b7-cf35-4b2d-9e62-af77e624bd8a"}}},{"type":"Polygon Vertex","name":"End Bottom","id":"bdff1a41-c544-44ba-aafb-db30fa1ef9a1","savedPayload":{"position":{"x":23439.160941247017,"y":20691.996021616073},"targetPosition":{"x":23845.69732282563,"y":20712.286183561904},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bottom","id":"cdc081f1-7080-407e-a1d8-20e71c2903f5"}}}],"id":"4958982a-b51a-40ef-8764-dd5451cf9837","savedPayload":{"position":{"x":24656.05497860393,"y":20029.578348366314},"targetPosition":{"x":24438.704392618998,"y":19674.341377278408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Left Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n }\n}","id":"7965d803-ccde-40ec-b09f-dc50b498257c","savedPayload":{"position":{"x":23543.03154447312,"y":16160.650063190064},"targetPosition":{"x":23771.91706815518,"y":16346.103988950654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"63e9bbd0-f235-4ec7-a6bc-9ab46db2d307","savedPayload":{"position":{"x":23771.91706815518,"y":16346.103988950654},"targetPosition":{"x":24039.39056085776,"y":16562.828459543056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Bottom","id":"3bec1e67-abaf-428e-b443-dc27969767b5","savedPayload":{"position":{"x":24003.561263329026,"y":16220.41623451958},"targetPosition":{"x":24039.39056085776,"y":16562.828459543056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"d36cc3b7-cf35-4b2d-9e62-af77e624bd8a"}}},{"type":"Polygon Vertex","name":"Begin Top","id":"471fc78f-4538-4834-bbed-a329d1e4601e","savedPayload":{"position":{"x":24256.164232306724,"y":16295.06035250861},"targetPosition":{"x":24039.39056085776,"y":16562.828459543056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Top","id":"d51a844a-acff-4717-b416-ac02113bcb84"}}}],"id":"86fefa5e-8de8-4d00-a632-e1827ce60030","savedPayload":{"position":{"x":24503.63904292664,"y":20085.95117843772},"targetPosition":{"x":24438.704392618998,"y":19674.341377278408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Right Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n }\n}","id":"c4bb446c-e574-4e59-afed-3538eab694d5","savedPayload":{"position":{"x":23663.715624489734,"y":16122.358204813214},"targetPosition":{"x":23871.460538755982,"y":16330.280713946628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6f0d820a-fb29-48d7-89f1-d1ea5a74e653","savedPayload":{"position":{"x":23871.460538755982,"y":16330.280713946628},"targetPosition":{"x":24100.89791082273,"y":16559.93821830005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"End Bottom","id":"ef071433-8fc9-4d59-a4c5-9bd2e7bc4fb0","savedPayload":{"position":{"x":24100.896121211164,"y":16234.255474737212},"targetPosition":{"x":24100.89791082273,"y":16559.93821830005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bottom","id":"cdc081f1-7080-407e-a1d8-20e71c2903f5"}}},{"type":"Polygon Vertex","name":"End Top","id":"c4f97c3d-8990-4091-8ff0-638afe58c282","savedPayload":{"position":{"x":24331.4610126125,"y":16329.333935430455},"targetPosition":{"x":24100.89791082273,"y":16559.93821830005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Top","id":"a53dfccb-7edd-4b83-84dc-56f62fb77e2e"}}}],"id":"79a3b846-3b23-4c01-9aa1-cedcebb5ca03","savedPayload":{"position":{"x":24341.491203518046,"y":20079.658749080834},"targetPosition":{"x":24438.704392618998,"y":19674.341377278408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[{"type":"Image","name":"New Image","config":"{ \n\"codeName\": \"episode\",\n\"size\": 25\n}","imagePosition":{"type":"Image Position","name":"Begin Bottom","config":"{ \n\"offsetX\": 0,\n \"offsetY\": 0\n }","id":"c03a6ea3-1555-4c1d-b268-d6e1032fd656","savedPayload":{"position":{"x":24076.03168610451,"y":20173.585929165576},"targetPosition":{"x":24193.7731712701,"y":20011.42469680636},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"d36cc3b7-cf35-4b2d-9e62-af77e624bd8a"}}},"id":"ad9be6ea-d6dd-4c5d-932a-8b34d322fa76","savedPayload":{"position":{"x":24193.7731712701,"y":20011.42469680636},"targetPosition":{"x":24438.704392618998,"y":19674.341377278408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Image","name":"New Image","config":"{ \n\"codeName\": \"episode\",\n\"size\": 25\n}","imagePosition":{"type":"Image Position","name":"End Bottom","config":"{ \n\"offsetX\": 0,\n \"offsetY\": 0\n }","id":"45d5d8a0-92e4-4e20-af13-8ea425c068cb","savedPayload":{"position":{"x":23912.149483423887,"y":19996.213392145008},"targetPosition":{"x":24083.15070623846,"y":19891.666454330654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"End Bottom","id":"cdc081f1-7080-407e-a1d8-20e71c2903f5"}}},"id":"5bc2bd0b-c164-432b-abb6-269dbca0f627","savedPayload":{"position":{"x":24083.15070623846,"y":19891.666454330654},"targetPosition":{"x":24438.704392618998,"y":19674.341377278408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"texts":[],"id":"0d8e669e-47fd-41f7-8108-8df3e7acd5ef","savedPayload":{"position":{"x":24446.55727397105,"y":19732.532286797657},"targetPosition":{"x":24375.31393269376,"y":19280.580647648458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Episode Object","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Serial Number","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.serialNumber","id":"b5d632ba-523a-401c-84db-1ce47efa7059","savedPayload":{"position":{"x":24600.67431324698,"y":20110.63400809056},"targetPosition":{"x":24470.730518150227,"y":19958.52645813446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0ccc88ff-cae0-46e6-8e91-36dd4b185d12","savedPayload":{"position":{"x":24470.730518150227,"y":19958.52645813446},"targetPosition":{"x":24195.396724756898,"y":19636.314422166328},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Status","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.status","id":"3292dd95-270f-490b-bba8-0eb82afa4b29","savedPayload":{"position":{"x":24388.058223003107,"y":20229.695701102017},"targetPosition":{"x":24326.272402850715,"y":20039.288608664876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f7b5fd21-8167-4949-be53-8de453a38904","savedPayload":{"position":{"x":24326.272402850715,"y":20039.288608664876},"targetPosition":{"x":24195.396724756898,"y":19636.314422166328},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Exit Type","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.exitType","id":"7a945058-1f89-420d-94ea-6c01142e814a","savedPayload":{"position":{"x":24146.629826263343,"y":20258.268776300425},"targetPosition":{"x":24162.24886202802,"y":20058.68471622991},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"03168102-4498-4cc9-a685-1fea8ec5d208","savedPayload":{"position":{"x":24162.24886202802,"y":20058.68471622991},"targetPosition":{"x":24195.396724756898,"y":19636.314422166328},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Begin Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.beginRate","id":"15ec12a6-815c-4432-a16b-d2600297aa83","savedPayload":{"position":{"x":23912.239828516573,"y":20192.19452983412},"targetPosition":{"x":24003.083097277726,"y":20013.82442467942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"534c09c7-1812-4266-ba81-b9fc8cf3d070","savedPayload":{"position":{"x":24003.083097277726,"y":20013.82442467942},"targetPosition":{"x":24195.396724756898,"y":19636.314422166328},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"End Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.endRate","id":"bf1f2748-56f4-451a-87dc-8cd385d649de","savedPayload":{"position":{"x":23721.01649231791,"y":20041.39428023504},"targetPosition":{"x":23873.169108424587,"y":19911.475300590475},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"54b9bfa4-3d94-4a39-b7ae-e5c882022fcf","savedPayload":{"position":{"x":23873.169108424587,"y":19911.475300590475},"targetPosition":{"x":24195.396724756898,"y":19636.314422166328},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Begin","config":"{\n }","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"formatDate(record.begin)","id":"6ad056b5-bcf6-4e6a-88d6-9435c67765e5","savedPayload":{"position":{"x":23601.94424666181,"y":19828.910473525702},"targetPosition":{"x":23792.36029628633,"y":19767.14081297391},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"70bc2470-d0e3-48a0-97c2-67189f3aaa9c","savedPayload":{"position":{"x":23792.36029628633,"y":19767.14081297391},"targetPosition":{"x":24195.396724756898,"y":19636.314422166328},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"End","config":"{\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"formatDate(record.end)","id":"81c41360-308d-4609-9a3b-b234a65fa49a","savedPayload":{"position":{"x":23573.31587167772,"y":19587.32707703284},"targetPosition":{"x":23772.818132730165,"y":19603.00342981239},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"4daad4f7-a1db-40d1-a88e-fe4669b422f5","savedPayload":{"position":{"x":23772.818132730165,"y":19603.00342981239},"targetPosition":{"x":24195.396724756898,"y":19636.314422166328},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"bcbb3368-ea4c-466b-8423-8f0517ad35da","savedPayload":{"position":{"x":24167.51272455952,"y":19688.325888256848},"targetPosition":{"x":24375.31393269376,"y":19280.580647648458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Episode Base Asset","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Hits","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.hitsInBaseAsset","id":"178cea7f-657c-47b5-bf08-783fccf30abd","savedPayload":{"position":{"x":24148.906753702322,"y":20275.0036325207},"targetPosition":{"x":24086.42490561032,"y":19880.20019865657},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d06bfec8-344e-4d09-ad45-5d881051c86d","savedPayload":{"position":{"x":24086.42490561032,"y":19880.20019865657},"targetPosition":{"x":24019.986125288073,"y":19461.551371705384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Fails","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.failsInBaseAsset","id":"9b2e4688-d344-4aaf-a819-fb37e2d7f01f","savedPayload":{"position":{"x":23891.39390419597,"y":20275.001164858866},"targetPosition":{"x":23953.83883995757,"y":19880.17660234542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3456d30c-437f-475a-b6d4-86c56c5c5875","savedPayload":{"position":{"x":23953.83883995757,"y":19880.17660234542},"targetPosition":{"x":24019.986125288073,"y":19461.551371705384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Hit Ratio","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.hitRatioInBaseAsset","id":"43ffaa8c-1678-40bc-8b89-1d3613b0bf80","savedPayload":{"position":{"x":23646.21059733477,"y":20195.33939179053},"targetPosition":{"x":23827.664483131033,"y":19839.15149887925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c9328b65-a3e0-4c81-9e7f-321d02566f6a","savedPayload":{"position":{"x":23827.664483131033,"y":19839.15149887925},"targetPosition":{"x":24019.986125288073,"y":19461.551371705384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Profit Loss","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.profitLossInBaseAsset","id":"b1750d80-b1a6-4e57-b575-176c5c63cc85","savedPayload":{"position":{"x":23437.702337873383,"y":20043.79196499201},"targetPosition":{"x":23720.357148935116,"y":19761.171577801575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"91a729d3-1a8d-44c6-89f6-548456b1e300","savedPayload":{"position":{"x":23720.357148935116,"y":19761.171577801575},"targetPosition":{"x":24019.986125288073,"y":19461.551371705384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"ROI","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ROIInBaseAsset","id":"57eb486f-3069-4df2-a095-7ae86f3c849e","savedPayload":{"position":{"x":23286.240855125754,"y":19835.25951862631},"targetPosition":{"x":23642.439568675247,"y":19653.848041756235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8c0532fa-8338-4659-acdb-4429c00c69f5","savedPayload":{"position":{"x":23642.439568675247,"y":19653.848041756235},"targetPosition":{"x":24019.986125288073,"y":19461.551371705384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Annualized Rate Of Return","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.annualizedRateOfReturnInBaseAsset","id":"9668524f-81b7-4805-a095-729344436bdc","savedPayload":{"position":{"x":23206.60302861116,"y":19590.149274845106},"targetPosition":{"x":23601.48837380367,"y":19527.718146238763},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"01f3e8f9-42bd-477d-a073-ece04b3462c3","savedPayload":{"position":{"x":23601.48837380367,"y":19527.718146238763},"targetPosition":{"x":24019.986125288073,"y":19461.551371705384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Hit Fail","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.hitFailInBaseAsset","id":"5530bf09-a7d7-4721-b6c9-35959c6ef57f","savedPayload":{"position":{"x":23206.561953103424,"y":19332.854940836452},"targetPosition":{"x":23601.44574025569,"y":19395.316942038855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e6a87a47-eb70-41c8-9b56-37bb3c1cff42","savedPayload":{"position":{"x":23601.44574025569,"y":19395.316942038855},"targetPosition":{"x":24019.986125288073,"y":19461.551371705384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Begin Balance","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.beginBalanceInBaseAsset","id":"bdcfb0ac-dd92-47c6-b1ce-2052125a69d3","savedPayload":{"position":{"x":23286.13230455258,"y":19087.665158930708},"targetPosition":{"x":23642.363452934467,"y":19269.126994635324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"05d8cc70-c3e8-416e-9976-94aabb6fb850","savedPayload":{"position":{"x":23642.363452934467,"y":19269.126994635324},"targetPosition":{"x":24019.986125288073,"y":19461.551371705384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"End Balance","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.endBalanceInBaseAsset","id":"e93cb7de-6d1a-496d-8adc-23e546ccae20","savedPayload":{"position":{"x":23437.751934639862,"y":18878.995003156848},"targetPosition":{"x":23720.364671326744,"y":19161.64431928873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5f28fda1-332a-4052-abac-3586386868df","savedPayload":{"position":{"x":23720.364671326744,"y":19161.64431928873},"targetPosition":{"x":24019.986125288073,"y":19461.551371705384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b18a5300-448b-4165-9b36-dc5ee37e58cd","savedPayload":{"position":{"x":23967.53135431093,"y":19488.32395771534},"targetPosition":{"x":24375.31393269376,"y":19280.580647648458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Episode Quoted Asset","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Hits","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.hitsInQuotedAsset","id":"68babd3f-d90c-4df0-9050-746d17ab3ea1","savedPayload":{"position":{"x":23607.112436061252,"y":19952.388549155},"targetPosition":{"x":23788.53869183044,"y":19596.2096578622},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"962215d1-1e67-43c7-9a7c-01f5e6f9e6e8","savedPayload":{"position":{"x":23788.53869183044,"y":19596.2096578622},"targetPosition":{"x":23980.880599740973,"y":19218.28646047048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Fails","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.failsInQuotedAsset","id":"9040394b-4c9c-4873-914c-31073717f3d7","savedPayload":{"position":{"x":23398.388650203942,"y":19800.795290351834},"targetPosition":{"x":23681.10328461802,"y":19518.137336156156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fe5a306c-7f59-43aa-bf1e-62ad7639a87f","savedPayload":{"position":{"x":23681.10328461802,"y":19518.137336156156},"targetPosition":{"x":23980.880599740973,"y":19218.28646047048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Hit Ratio","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.hitRatioInQuotedAsset","id":"c30aadb6-44a2-400d-96b2-a51c2eaccacf","savedPayload":{"position":{"x":23246.923317839668,"y":19592.153870854807},"targetPosition":{"x":23603.123274043934,"y":19410.76169656026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"19fb6789-7b00-4e86-bfde-775bcd813300","savedPayload":{"position":{"x":23603.123274043934,"y":19410.76169656026},"targetPosition":{"x":23980.880599740973,"y":19218.28646047048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Profit Loss","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.profitLossInQuotedAsset","id":"b296257d-c3fd-406f-85de-b89121b332f6","savedPayload":{"position":{"x":23167.376115695737,"y":19346.979368323817},"targetPosition":{"x":23562.244373466372,"y":19284.56237283224},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dad82788-bdb3-4df2-9cfd-2a8d22a2278f","savedPayload":{"position":{"x":23562.244373466372,"y":19284.56237283224},"targetPosition":{"x":23980.880599740973,"y":19218.28646047048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"ROI","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ROIInQuotedAsset","id":"88e43d30-c26b-4d43-ba1a-e2a318154b95","savedPayload":{"position":{"x":23167.381159466986,"y":19089.6864146022},"targetPosition":{"x":23562.32601419074,"y":19152.11447957772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"54f32b24-0657-4be3-a24c-ea988797f93a","savedPayload":{"position":{"x":23562.32601419074,"y":19152.11447957772},"targetPosition":{"x":23980.880599740973,"y":19218.28646047048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Annualized Rate Of Return","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.annualizedRateOfReturnInQuotedAsset","id":"e30aa4c9-50ef-40a6-bf65-ae8674eddd3f","savedPayload":{"position":{"x":23246.93902036478,"y":18844.565758519213},"targetPosition":{"x":23603.273795340985,"y":19026.008734553117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0b94cbb0-ec78-4a85-b815-06533aaa7ea9","savedPayload":{"position":{"x":23603.273795340985,"y":19026.008734553117},"targetPosition":{"x":23980.880599740973,"y":19218.28646047048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Hit Fail","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.hitFailInQuotedAsset","id":"38b3d1b7-f954-4042-abfb-1fd9167e0e35","savedPayload":{"position":{"x":23398.364738994278,"y":18636.029807261693},"targetPosition":{"x":23681.152231144846,"y":18918.67890049766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"524a686a-eadf-4652-a2ca-f73f40dc10f1","savedPayload":{"position":{"x":23681.152231144846,"y":18918.67890049766},"targetPosition":{"x":23980.880599740973,"y":19218.28646047048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Begin Balance","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.beginBalanceInQuotedAsset","id":"78d24874-e442-4b7d-9602-b434fa246640","savedPayload":{"position":{"x":23606.81934689737,"y":18484.464405058116},"targetPosition":{"x":23788.425093022,"y":18840.67480129598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"480cfd81-87e5-4022-ac2b-9adb7f04c105","savedPayload":{"position":{"x":23788.425093022,"y":18840.67480129598},"targetPosition":{"x":23980.880599740973,"y":19218.28646047048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"End Balance","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.endBalanceInQuotedAsset","id":"abe4d95f-ae51-4237-8bda-0d2ec08ef13c","savedPayload":{"position":{"x":23851.999356492295,"y":18404.720459281772},"targetPosition":{"x":23914.648995510062,"y":18799.610748925214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0245f0f4-59c6-4f14-8ec9-5a80ab0cd05e","savedPayload":{"position":{"x":23914.648995510062,"y":18799.610748925214},"targetPosition":{"x":23980.880599740973,"y":19218.28646047048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dbdd55de-9279-48ef-a0b1-e50024f284e9","savedPayload":{"position":{"x":23923.26557153048,"y":19209.144905092962},"targetPosition":{"x":24375.31393269376,"y":19280.580647648458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b7320c91-b8aa-4642-bd11-a1efb2a88d39","savedPayload":{"position":{"x":24348.24908463109,"y":19307.45867539896},"targetPosition":{"x":24658.110912307387,"y":18997.777583103496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"12f444b2-b8e7-48ef-9ea1-9cbe5489f942","savedPayload":{"position":{"x":24411.072933941225,"y":19245.03440370731},"targetPosition":{"x":24941.217404066585,"y":18714.893045797242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"Trading Strategy","config":"{ \n\"codeName\": \"\"\n}","modules":[{"type":"Plotter Module","name":"Strategy Objects","config":"{ \n \"codeName\": \"Strategy-Objects\", \n \"icon\": \"trend\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Begin Bottom","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"458c8a52-4191-4fa5-b4f7-a0eb2edfcdc8","savedPayload":{"position":{"x":23679.031603122057,"y":19570.982297667073},"targetPosition":{"x":23576.047532580196,"y":19442.973500913187},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a464e820-57a7-4233-b23b-e802fc9b3a33","savedPayload":{"position":{"x":23576.047532580196,"y":19442.973500913187},"targetPosition":{"x":23358.431821974955,"y":19172.245715531662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin Top","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.beginRate","id":"3abb7e03-f8f3-4956-9729-756e7974c5a0","savedPayload":{"position":{"x":23540.01580878851,"y":19650.751238925084},"targetPosition":{"x":23481.69111797499,"y":19497.117910011708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d2e900e2-444c-4268-b07a-fc41811c82d8","savedPayload":{"position":{"x":23481.69111797499,"y":19497.117910011708},"targetPosition":{"x":23358.431821974955,"y":19172.245715531662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End Bottom","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"5ef24a29-2154-4304-ae0d-e046db069042","savedPayload":{"position":{"x":23382.80753939302,"y":19682.75925339549},"targetPosition":{"x":23375.0567542045,"y":19519.26706893857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e960d99e-f263-4ee8-9801-9b97f534bd5e","savedPayload":{"position":{"x":23375.0567542045,"y":19519.26706893857},"targetPosition":{"x":23358.431821974955,"y":19172.245715531662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End Top","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.endRate","id":"6d7f55b1-11df-4598-bab9-32a02ae6fa33","savedPayload":{"position":{"x":23223.43367888208,"y":19666.326567848617},"targetPosition":{"x":23267.188708707676,"y":19506.62044651284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3a8be5c7-aff5-4283-bd17-dadd6dddda4d","savedPayload":{"position":{"x":23267.188708707676,"y":19506.62044651284},"targetPosition":{"x":23358.431821974955,"y":19172.245715531662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"87bdc7ca-4228-48a3-ab2d-4eba01abfa2e","savedPayload":{"position":{"x":24154.37111972016,"y":19394.906565933747},"targetPosition":{"x":23910.961395875824,"y":19077.81581437848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Closed Base","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.status === 'Closed'","id":"3d4e39c7-4178-4557-95b9-0bb94a15135c","savedPayload":{"position":{"x":23464.034916247892,"y":19095.896634054898},"targetPosition":{"x":23102.330833588872,"y":19175.230567710623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.25,\n \"lineWidth\": 4,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 4,\n \"lineDash\": [0,0]\n }\n}","id":"83329324-581e-42e2-948e-7d06a3d9066c","savedPayload":{"position":{"x":23401.314169592093,"y":19811.027853873587},"targetPosition":{"x":23261.299233616654,"y":19513.51419379196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"4a04b54a-70b9-4e92-a474-d6ef03a97f26","savedPayload":{"position":{"x":23261.299233616654,"y":19513.51419379196},"targetPosition":{"x":23102.330833588872,"y":19175.230567710623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Bottom","id":"b3a7f670-c86e-4382-93ee-bb6dbabfd159","savedPayload":{"position":{"x":22829.906812133944,"y":19431.684029138312},"targetPosition":{"x":23102.330833588872,"y":19175.230567710623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"a464e820-57a7-4233-b23b-e802fc9b3a33"}}},{"type":"Polygon Vertex","name":"End Bottom","id":"0e17c75c-09f4-49ae-8e6a-55fdfd89f428","savedPayload":{"position":{"x":22765.97151481076,"y":18968.006912231718},"targetPosition":{"x":23102.330833588872,"y":19175.230567710623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bottom","id":"e960d99e-f263-4ee8-9801-9b97f534bd5e"}}}],"id":"9ae59a68-71fd-4ec8-9a70-da743f33baee","savedPayload":{"position":{"x":24014.51097224625,"y":19464.381111716422},"targetPosition":{"x":23910.961395875824,"y":19077.81581437848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Open Base","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.status === 'Open'","id":"5eb17be1-910b-4da5-959b-e7cf21dfa896","savedPayload":{"position":{"x":23238.584473975658,"y":19125.115409062902},"targetPosition":{"x":22865.18144953736,"y":19079.566504230155},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.25,\n \"lineWidth\": 4,\n \"lineDash\": [3,3]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 4,\n \"lineDash\": [3,3]\n }\n}","id":"f790de9e-e87a-4f2a-86d5-c8f69d4b9525","savedPayload":{"position":{"x":22898.2516308732,"y":19781.12411657158},"targetPosition":{"x":22882.75695077428,"y":19453.107373591916},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"a4e077b1-7bc7-4d90-b796-b4e808985b89","savedPayload":{"position":{"x":22882.75695077428,"y":19453.107373591916},"targetPosition":{"x":22865.18144953736,"y":19079.566504230155},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Bottom","id":"b158074f-5013-4899-b61b-232eb519370c","savedPayload":{"position":{"x":22515.604963398855,"y":19212.216856709278},"targetPosition":{"x":22865.18144953736,"y":19079.566504230155},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"a464e820-57a7-4233-b23b-e802fc9b3a33"}}},{"type":"Polygon Vertex","name":"End Bottom","id":"365ee7e7-0529-4acc-a77f-d596c195399f","savedPayload":{"position":{"x":22633.923464950298,"y":18759.529686353388},"targetPosition":{"x":22865.18144953736,"y":19079.566504230155},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bottom","id":"e960d99e-f263-4ee8-9801-9b97f534bd5e"}}}],"id":"504f327c-a08d-4c3d-8e77-850299cc30ed","savedPayload":{"position":{"x":23858.815638617816,"y":19474.694064425537},"targetPosition":{"x":23910.961395875824,"y":19077.81581437848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Left Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n }\n}","id":"e2422730-fb47-4014-a707-8c346d6bc327","savedPayload":{"position":{"x":23870.690743282812,"y":16265.600788433647},"targetPosition":{"x":24099.576266964872,"y":16451.054714194237},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"bbd7ee22-fb16-4b59-9e0c-04018e9dd3fa","savedPayload":{"position":{"x":24099.576266964872,"y":16451.054714194237},"targetPosition":{"x":24367.04975966745,"y":16667.77918478664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Bottom","id":"a3a9eca0-36f3-4058-b8d7-872ce77209cd","savedPayload":{"position":{"x":24331.220462138717,"y":16325.366959763163},"targetPosition":{"x":24367.04975966745,"y":16667.77918478664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"a464e820-57a7-4233-b23b-e802fc9b3a33"}}},{"type":"Polygon Vertex","name":"Begin Top","id":"d480fdc6-89e5-4547-a2ae-17ff5e4fc917","savedPayload":{"position":{"x":24583.823431116416,"y":16400.01107775219},"targetPosition":{"x":24367.04975966745,"y":16667.77918478664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Top","id":"d2e900e2-444c-4268-b07a-fc41811c82d8"}}}],"id":"f9500afd-e0f4-45d3-9647-45ec778554e8","savedPayload":{"position":{"x":23710.891682461828,"y":19424.509502956298},"targetPosition":{"x":23910.961395875824,"y":19077.81581437848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Right Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n }\n}","id":"03ebe379-fb32-47fc-bfd6-b9ccc73bfd16","savedPayload":{"position":{"x":23991.374823299426,"y":16227.308930056797},"targetPosition":{"x":24199.119737565674,"y":16435.23143919021},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"054fcea5-2f72-4439-be45-c289a3bdab14","savedPayload":{"position":{"x":24199.119737565674,"y":16435.23143919021},"targetPosition":{"x":24428.55710963242,"y":16664.888943543632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"End Bottom","id":"a0b737cf-ec7b-4026-870c-cebec148464f","savedPayload":{"position":{"x":24428.555320020856,"y":16339.206199980796},"targetPosition":{"x":24428.55710963242,"y":16664.888943543632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bottom","id":"e960d99e-f263-4ee8-9801-9b97f534bd5e"}}},{"type":"Polygon Vertex","name":"End Top","id":"fceb54ef-473e-4062-9407-ec64e9040504","savedPayload":{"position":{"x":24659.120211422192,"y":16434.28466067404},"targetPosition":{"x":24428.55710963242,"y":16664.888943543632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Top","id":"3a8be5c7-aff5-4283-bd17-dadd6dddda4d"}}}],"id":"354102dd-fd58-4f84-8e90-0d891defa0c8","savedPayload":{"position":{"x":23593.47466580249,"y":19321.52608432972},"targetPosition":{"x":23910.961395875824,"y":19077.81581437848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[{"type":"Image","name":"New Image","config":"{ \n\"codeName\": \"strategy\",\n\"size\": 25\n}","imagePosition":{"type":"Image Position","name":"Begin Bottom","config":"{ \n\"offsetX\": 0,\n \"offsetY\": 0\n }","id":"64c0d038-c401-4317-84fd-b73e1b210d00","savedPayload":{"position":{"x":23330.75757088613,"y":19233.22969505777},"targetPosition":{"x":23524.45439303095,"y":19181.32827189945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"a464e820-57a7-4233-b23b-e802fc9b3a33"}}},"id":"01f6ebd3-e14f-4434-a0fb-1d8167122ce3","savedPayload":{"position":{"x":23524.45439303095,"y":19181.32827189945},"targetPosition":{"x":23910.961395875824,"y":19077.81581437848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Image","name":"New Image","config":"{ \n\"codeName\": \"strategy\",\n\"size\": 25\n}","imagePosition":{"type":"Image Position","name":"End Bottom","config":"{ \n\"offsetX\": 0,\n \"offsetY\": 0\n }","id":"56f86edf-c2cc-491b-8cea-4bae0f03ebfd","savedPayload":{"position":{"x":23315.575351401378,"y":18999.3178489443},"targetPosition":{"x":23514.341543411083,"y":19025.39569028193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"End Bottom","id":"e960d99e-f263-4ee8-9801-9b97f534bd5e"}}},"id":"df6a3044-b207-4564-8c28-8d64c679ee9a","savedPayload":{"position":{"x":23514.341543411083,"y":19025.39569028193},"targetPosition":{"x":23910.961395875824,"y":19077.81581437848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"texts":[],"id":"b02b7fee-30b0-41f0-ae06-a073c57289d9","savedPayload":{"position":{"x":23910.961395875824,"y":19077.81581437848},"targetPosition":{"x":24110.53790893806,"y":18731.889286920232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Strategy Object","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Serial Number","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.serialNumber","id":"b037ec89-e05b-432c-9b61-da05bda134cc","savedPayload":{"position":{"x":23614.48910776199,"y":18432.168699486465},"targetPosition":{"x":23740.26830939358,"y":18416.508056390307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0316c81d-7b05-42cb-876e-19d25eb1896a","savedPayload":{"position":{"x":23740.26830939358,"y":18416.508056390307},"targetPosition":{"x":23911.09809066267,"y":18386.431948593003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Status","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.status","id":"ed7a2560-35b9-4142-bd68-77347bf66b89","savedPayload":{"position":{"x":23608.630266792385,"y":18278.336831512588},"targetPosition":{"x":23717.0366515417,"y":18316.60991379066},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"5d9060d4-50fb-4cda-8037-85f7ffae5c27","savedPayload":{"position":{"x":23717.0366515417,"y":18316.60991379066},"targetPosition":{"x":23911.09809066267,"y":18386.431948593003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Name","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.strategyName","id":"925d79c1-efdd-4555-baba-72e686294057","savedPayload":{"position":{"x":23692.819638122255,"y":18158.11840093637},"targetPosition":{"x":23772.072415152626,"y":18238.019033825516},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"1a4951ef-23ae-4228-8479-a0fe687c2d82","savedPayload":{"position":{"x":23772.072415152626,"y":18238.019033825516},"targetPosition":{"x":23911.09809066267,"y":18386.431948593003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Triggered By Situation","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.situationName","id":"24317532-e6bf-4827-9196-e052fe28bcb3","savedPayload":{"position":{"x":23817.195717767132,"y":18078.397720109857},"targetPosition":{"x":23851.344816465276,"y":18181.483489423328},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6c79326f-b90c-4155-8f61-8ee2322b9b09","savedPayload":{"position":{"x":23851.344816465276,"y":18181.483489423328},"targetPosition":{"x":23911.09809066267,"y":18386.431948593003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Exit Type","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.exitType","id":"2a35de7b-ad59-439b-aa6c-0668ffd92816","savedPayload":{"position":{"x":23956.9738010309,"y":18075.270779322298},"targetPosition":{"x":23943.886368698822,"y":18184.88069000929},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6a34a5de-3b89-4f07-a947-5b94c8926dc1","savedPayload":{"position":{"x":23943.886368698822,"y":18184.88069000929},"targetPosition":{"x":23911.09809066267,"y":18386.431948593003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Periods","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.periods","id":"33bd5e59-f2bf-4b5c-bd74-6975e07b3056","savedPayload":{"position":{"x":24116.367364884885,"y":18154.54938154536},"targetPosition":{"x":24044.380871287798,"y":18260.633671634343},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a0c5053d-5b1e-4f7e-8edb-58baaaa8a45a","savedPayload":{"position":{"x":24044.380871287798,"y":18260.633671634343},"targetPosition":{"x":23911.09809066267,"y":18386.431948593003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b256b76c-3834-4d62-aa56-f42cce9f47e9","savedPayload":{"position":{"x":23911.09809066267,"y":18386.431948593003},"targetPosition":{"x":24110.53790893806,"y":18731.889286920232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d54a124c-6029-41a6-9bbd-bb3fe8b1a318","savedPayload":{"position":{"x":24110.53790893806,"y":18731.889286920232},"targetPosition":{"x":24548.42941950672,"y":18731.888780422178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"62890699-eabf-4ea8-8ca0-cac07cc06dea","savedPayload":{"position":{"x":24191.431223526604,"y":18714.895209911203},"targetPosition":{"x":24941.217404066585,"y":18714.893045797242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"Trading Position","config":"{ \n \"codeName\": \"\"\n}","modules":[{"type":"Plotter Module","name":"Position Objects","config":"{ \n \"codeName\": \"Position-Objects\", \n \"icon\": \"trend\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Left Exit Target Rate","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.exitTargetRate","id":"594bc655-cbf0-4e81-8fcc-b0f001e71fc4","savedPayload":{"position":{"x":23378.89131831053,"y":19594.166578643504},"targetPosition":{"x":23264.289226615554,"y":19452.589943059153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3b122c9b-56d5-4cb6-86ba-12d1919aeeba","savedPayload":{"position":{"x":23264.289226615554,"y":19452.589943059153},"targetPosition":{"x":23034.47649584858,"y":19168.88288477962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Right Exit Target Rate","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.exitTargetRate","id":"ef80ea85-cfba-4fa6-9646-3688f54f33ba","savedPayload":{"position":{"x":23062.792676404817,"y":19714.77684558158},"targetPosition":{"x":23053.457563011074,"y":19533.740963507993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"eb3dd27b-831c-47ae-8a19-1b01626add98","savedPayload":{"position":{"x":23053.457563011074,"y":19533.740963507993},"targetPosition":{"x":23034.47649584858,"y":19168.88288477962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Left Entry Target Rate","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.entryTargetRate","id":"cdc9f3f0-3bca-4c9c-901f-1371aad3dcfe","savedPayload":{"position":{"x":22736.669448976547,"y":19627.42686922161},"targetPosition":{"x":22835.732153144694,"y":19474.879679402802},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b61fa42b-45d1-416b-b06b-734d33223a80","savedPayload":{"position":{"x":22835.732153144694,"y":19474.879679402802},"targetPosition":{"x":23034.47649584858,"y":19168.88288477962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Right Entry Target Rate","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.entryTargetRate","id":"c450be56-8c02-4039-9b4a-8e0bde52fcc6","savedPayload":{"position":{"x":22523.899313523405,"y":19364.533311359763},"targetPosition":{"x":22693.304882078766,"y":19299.63546617169},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"467129cb-1aa4-4639-ab0f-74d14146f721","savedPayload":{"position":{"x":22693.304882078766,"y":19299.63546617169},"targetPosition":{"x":23034.47649584858,"y":19168.88288477962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"774f0a60-aa67-408f-9768-8a24f5b9c033","savedPayload":{"position":{"x":23654.712524602528,"y":19663.484762306463},"targetPosition":{"x":23480.47916567485,"y":19012.386200156463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Entry Target Rate Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.25,\n \"lineWidth\": 2,\n \"lineDash\": [3,3]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 3,\n \"lineDash\": [3,3]\n }\n}","id":"bc128809-8c93-4f5d-9de9-4e0b28c1132e","savedPayload":{"position":{"x":21468.0855205249,"y":19494.420337141244},"targetPosition":{"x":21981.50998714314,"y":18981.053483751624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"cbd2cb8e-ca62-4b68-9bca-11ad55e50fb1","savedPayload":{"position":{"x":21981.50998714314,"y":18981.053483751624},"targetPosition":{"x":22495.031257440536,"y":18467.716125216677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Left Entry Target Rate","id":"e1fc573d-a98e-4801-af1f-08f56d98a78a","savedPayload":{"position":{"x":21768.882913942445,"y":18467.716005129925},"targetPosition":{"x":22495.031257440536,"y":18467.716125216677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Left Entry Target Rate","id":"b61fa42b-45d1-416b-b06b-734d33223a80"}}},{"type":"Polygon Vertex","name":"Right Entry Target Rate","id":"72aece06-d0ac-4068-8310-7037f0ba4943","savedPayload":{"position":{"x":21981.60058357288,"y":17954.297287620375},"targetPosition":{"x":22495.031257440536,"y":18467.716125216677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Right Entry Target Rate","id":"467129cb-1aa4-4639-ab0f-74d14146f721"}}}],"id":"543ebae2-5624-49ad-a00f-df63335e92a9","savedPayload":{"position":{"x":23143.072754406683,"y":19596.938456557556},"targetPosition":{"x":23480.47916567485,"y":19012.386200156463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Exit Target Rate Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.25,\n \"lineWidth\": 2,\n \"lineDash\": [3,3]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 3,\n \"lineDash\": [3,3]\n }\n}","id":"8737606b-fbf1-4e8e-a124-930ec555d3d6","savedPayload":{"position":{"x":21262.28928373682,"y":19005.553773101605},"targetPosition":{"x":21891.1239293732,"y":18642.568827656476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"477ff931-5b51-4d4f-acff-3a14c7028a52","savedPayload":{"position":{"x":21891.1239293732,"y":18642.568827656476},"targetPosition":{"x":22519.99599403495,"y":18279.565926553114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Left Exit Target Rate","id":"b849d38a-644a-470a-a110-d250b5e9d5f3","savedPayload":{"position":{"x":21818.569736612473,"y":18091.692025952238},"targetPosition":{"x":22519.99599403495,"y":18279.565926553114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Left Exit Target Rate","id":"3b122c9b-56d5-4cb6-86ba-12d1919aeeba"}}},{"type":"Polygon Vertex","name":"Right Exit Target Rate","id":"dc283f46-e843-40b1-ab59-6d38ab0b7741","savedPayload":{"position":{"x":22156.94314223121,"y":17650.710827287014},"targetPosition":{"x":22519.99599403495,"y":18279.565926553114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Right Exit Target Rate","id":"eb3dd27b-831c-47ae-8a19-1b01626add98"}}}],"id":"b066c240-8552-4622-9597-77e812491910","savedPayload":{"position":{"x":22828.5367118456,"y":19186.961257606392},"targetPosition":{"x":23480.47916567485,"y":19012.386200156463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"d99cb56a-d182-4672-9e89-54bb809eff30","savedPayload":{"position":{"x":23480.47916567485,"y":19012.386200156463},"targetPosition":{"x":23817.540497140402,"y":18428.741200132783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Position Object","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Serial Number","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.serialNumber","id":"482e894d-68a1-499f-b55e-97827c1df506","savedPayload":{"position":{"x":22494.61429137729,"y":19788.400261681847},"targetPosition":{"x":22502.508393903605,"y":19450.80091098777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"5a612794-8d2e-4689-82ce-f6bdcba13755","savedPayload":{"position":{"x":22502.508393903605,"y":19450.80091098777},"targetPosition":{"x":22518.30995906993,"y":18776.673361403184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Status","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.status","id":"d1f7c811-2a35-44a0-8908-2076f59ab2ad","savedPayload":{"position":{"x":22210.324514554803,"y":19740.665718440327},"targetPosition":{"x":22313.092233770803,"y":19418.97362755148},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"32444aa5-bc40-4905-97e7-f795118fc229","savedPayload":{"position":{"x":22313.092233770803,"y":19418.97362755148},"targetPosition":{"x":22518.30995906993,"y":18776.673361403184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Situation Name","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.situationName","id":"8ae3f86b-d0f8-4851-a477-02d0960fb4e5","savedPayload":{"position":{"x":21951.098623320446,"y":19614.76897021752},"targetPosition":{"x":22140.38153244171,"y":19335.089563273254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8fd749c8-cdc1-4a20-8901-d22fdd70612d","savedPayload":{"position":{"x":22140.38153244171,"y":19335.089563273254},"targetPosition":{"x":22518.30995906993,"y":18776.673361403184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Entry Target Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.entryTargetRate","id":"b97f9930-22b1-4e18-9d12-f2adc9de796d","savedPayload":{"position":{"x":21737.873747541613,"y":19420.9406148478},"targetPosition":{"x":21998.32180030886,"y":19205.952672278312},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"08193c38-6100-40cf-84e9-533cd29ca463","savedPayload":{"position":{"x":21998.32180030886,"y":19205.952672278312},"targetPosition":{"x":22518.30995906993,"y":18776.673361403184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Exit Target Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.exitTargetRate","id":"305c84ca-413b-462a-b908-8be894e80197","savedPayload":{"position":{"x":21587.903506595634,"y":19174.890189055783},"targetPosition":{"x":21898.4050722363,"y":19042.02539027736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"87fcd4c7-8315-4b89-8c6a-ca8d6ede7a25","savedPayload":{"position":{"x":21898.4050722363,"y":19042.02539027736},"targetPosition":{"x":22518.30995906993,"y":18776.673361403184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Position Begin Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.beginRate","id":"c7d06e13-042f-4e12-8093-b9f27dc8e655","savedPayload":{"position":{"x":21513.33270640474,"y":18896.552328947833},"targetPosition":{"x":21848.72221818565,"y":18856.58750278947},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"67fb7b91-c601-48dd-9d79-5188dc43a921","savedPayload":{"position":{"x":21848.72221818565,"y":18856.58750278947},"targetPosition":{"x":22518.30995906993,"y":18776.673361403184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Position End Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.endRate","id":"4f114564-7657-4037-9f5e-43e2fcfb75a5","savedPayload":{"position":{"x":21520.20394823597,"y":18609.019431217563},"targetPosition":{"x":21853.29898570107,"y":18664.931737460527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a0921f86-e8f0-40d9-99ee-0a316dd6ad67","savedPayload":{"position":{"x":21853.29898570107,"y":18664.931737460527},"targetPosition":{"x":22518.30995906993,"y":18776.673361403184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Exit Type","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.exitType","id":"48b097fa-bc1f-4cd9-bcf4-284bd77c5055","savedPayload":{"position":{"x":21607.96927751588,"y":18334.542260799815},"targetPosition":{"x":21911.7703647708,"y":18482.062869350728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"5e243e8e-1909-4a9d-a605-984e530846c3","savedPayload":{"position":{"x":21911.7703647708,"y":18482.062869350728},"targetPosition":{"x":22518.30995906993,"y":18776.673361403184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Periods","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.periods","id":"0cea2f32-e0b8-4011-8389-eb24536ec638","savedPayload":{"position":{"x":21769.54642789044,"y":18095.895049103146},"targetPosition":{"x":22019.41785688682,"y":18323.05848671926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b98c147d-3f4d-41d6-b821-df00d7eeab29","savedPayload":{"position":{"x":22019.41785688682,"y":18323.05848671926},"targetPosition":{"x":22518.30995906993,"y":18776.673361403184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Days","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.days","id":"95d9e4b7-2951-4dac-b0e6-c9cdb77cd0b9","savedPayload":{"position":{"x":21991.931839685687,"y":17912.419832799187},"targetPosition":{"x":22167.57352517165,"y":18200.787342054926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"298d34c8-3b72-4c1f-92bd-b3e2c2f3e73e","savedPayload":{"position":{"x":22167.57352517165,"y":18200.787342054926},"targetPosition":{"x":22518.30995906993,"y":18776.673361403184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3d274e02-8896-4311-a0c8-9041b6507090","savedPayload":{"position":{"x":22519.188946043723,"y":18776.43310607086},"targetPosition":{"x":23817.540497140402,"y":18428.741200132783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"a"}}},{"type":"Plotter Panel","name":"Position Combined Statistics","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Profit Loss","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.profitLoss","id":"96dd9046-7942-489e-8960-2de57321551b","savedPayload":{"position":{"x":22150.055933445416,"y":17890.354140128005},"targetPosition":{"x":22312.22444730111,"y":17846.98488704057},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e226898a-74c0-4e4e-95e2-b2435c464dd5","savedPayload":{"position":{"x":22312.22444730111,"y":17846.98488704057},"targetPosition":{"x":22652.046730228925,"y":17755.961796933258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"ROI","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ROI","id":"b7079949-8602-4b96-97f3-bc704e9e77e7","savedPayload":{"position":{"x":22202.787362095612,"y":17496.701428846714},"targetPosition":{"x":22347.584006809368,"y":17580.238409750928},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"06a9c88b-3edb-4a5e-a239-c2cad3cbad17","savedPayload":{"position":{"x":22347.584006809368,"y":17580.238409750928},"targetPosition":{"x":22652.046730228925,"y":17755.961796933258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Hit Fail","config":"{\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.hitFail","id":"7dc1c993-470e-4c7b-b879-9a91361859a4","savedPayload":{"position":{"x":22518.123198770732,"y":17255.275425794378},"targetPosition":{"x":22561.13547524989,"y":17416.12875339966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2102dc89-6799-4287-8c4d-d3591c9fd17e","savedPayload":{"position":{"x":22561.13547524989,"y":17416.12875339966},"targetPosition":{"x":22652.046730228925,"y":17755.961796933258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"05d6bb3e-f975-471f-be1f-3215025ce6fe","savedPayload":{"position":{"x":22653.533969692653,"y":17756.723185501727},"targetPosition":{"x":23817.540497140402,"y":18428.741200132783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"a"}}}],"id":"8854b5f8-8407-4a0d-9099-5456a8e4cced","savedPayload":{"position":{"x":24236.235162129688,"y":18545.632811267675},"targetPosition":{"x":24659.537709461314,"y":18432.153314953848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Position Base Asset","config":"{ \n \"codeName\": \"Position-Objects\", \n \"icon\": \"trend\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Left Entry Target Rate","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.entryTargetRate","id":"2d03dfa3-bce6-478b-8f65-a50344ae4601","savedPayload":{"position":{"x":22880.530636654625,"y":18867.151342954727},"targetPosition":{"x":22852.192837555023,"y":18687.462475535656},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"1c279ac2-347d-453f-9b5e-436216cebd7d","savedPayload":{"position":{"x":22852.192837555023,"y":18687.462475535656},"targetPosition":{"x":22795.398838789093,"y":18328.381488041126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Right Entry Target Rate","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.entryTargetRate","id":"174cdc36-dc92-4e69-aecb-3418b9863d4e","savedPayload":{"position":{"x":22474.754048779567,"y":18769.690715771274},"targetPosition":{"x":22581.697717643983,"y":18622.50313669316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"609e9ed3-5503-4a3e-949b-d2ab2cf10f10","savedPayload":{"position":{"x":22581.697717643983,"y":18622.50313669316},"targetPosition":{"x":22795.398838789093,"y":18328.381488041126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Right Exit Target Rate","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.exitTargetRate","id":"ce2f05dc-daa2-472f-89e4-66d37b7eb0ae","savedPayload":{"position":{"x":22256.52445352935,"y":18413.482704019967},"targetPosition":{"x":22436.256006960764,"y":18385.124441541997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"93ba04d2-21ec-41a2-9a2e-eb47a8d39149","savedPayload":{"position":{"x":22436.256006960764,"y":18385.124441541997},"targetPosition":{"x":22795.398838789093,"y":18328.381488041126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0ac578ec-3648-4413-82ea-944a6fc7db1d","savedPayload":{"position":{"x":22795.398838789093,"y":18328.381488041126},"targetPosition":{"x":23222.2917257119,"y":17740.821356681612},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Profit Triangle","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.ROIInBaseAsset > 0","id":"35ca8e2f-58a1-49dc-ab7a-a40eb53483a5","savedPayload":{"position":{"x":22430.825929933082,"y":18680.163090731057},"targetPosition":{"x":22530.88685618943,"y":17965.287717310253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n }\n}","id":"3dba4bdb-c7ff-44ff-897b-a7b98a253585","savedPayload":{"position":{"x":21731.105943474133,"y":19176.637759317317},"targetPosition":{"x":22130.875094285147,"y":18571.019047014113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"b672a718-2e17-4659-aff7-63a98fab5c1f","savedPayload":{"position":{"x":22130.875094285147,"y":18571.019047014113},"targetPosition":{"x":22530.88685618943,"y":17965.287717310253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.PATINATED_TURQUOISE\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n }\n}","id":"33837834-ffbd-46c0-8d62-2d6122bcff17","savedPayload":{"position":{"x":21284.78438383012,"y":18709.43125245946},"targetPosition":{"x":21907.74271164393,"y":18337.349520189247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"2bdd5fe6-32ba-4120-a4f7-bd4e4099a206","savedPayload":{"position":{"x":21907.74271164393,"y":18337.349520189247},"targetPosition":{"x":22530.88685618943,"y":17965.287717310253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Left Entry Target Rate","id":"8b93b7e7-30ed-46a5-ba59-95cb38ba87fa","savedPayload":{"position":{"x":21808.001942840434,"y":18030.099264627803},"targetPosition":{"x":22530.88685618943,"y":17965.287717310253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Left Entry Target Rate","id":"1c279ac2-347d-453f-9b5e-436216cebd7d"}}},{"type":"Polygon Vertex","name":"Right Entry Target Rate","id":"bcc031f8-556b-4d6f-b438-4f9b14804d0f","savedPayload":{"position":{"x":21851.351691052478,"y":17710.35663716765},"targetPosition":{"x":22530.88685618943,"y":17965.287717310253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Right Entry Target Rate","id":"609e9ed3-5503-4a3e-949b-d2ab2cf10f10"}}},{"type":"Polygon Vertex","name":"Right Exit Target Rate","id":"fa6bc1ba-8d7c-4c08-8dfc-5cca7451113f","savedPayload":{"position":{"x":22029.364476084633,"y":17440.735378068704},"targetPosition":{"x":22530.88685618943,"y":17965.287717310253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Right Exit Target Rate","id":"93ba04d2-21ec-41a2-9a2e-eb47a8d39149"}}}],"id":"2628b290-a09a-4807-8a45-7ff5a880d195","savedPayload":{"position":{"x":22530.661178857976,"y":17965.35721860801},"targetPosition":{"x":23222.2917257119,"y":17740.821356681612},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Loss Triangle","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.ROIInBaseAsset < 0","id":"9aba703c-bd76-446b-9017-0fc1e03d5ae2","savedPayload":{"position":{"x":22029.20045372594,"y":18040.972980447877},"targetPosition":{"x":22530.794142525996,"y":17516.13028195662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.RED\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n }\n}","id":"a7260cb4-6c92-42da-9a63-bc05e0cc0451","savedPayload":{"position":{"x":21171.407470708364,"y":18026.051181132298},"targetPosition":{"x":21851.026547994963,"y":17771.03712562104},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"ec365a09-3739-47f0-8068-1c88d4d815c3","savedPayload":{"position":{"x":21851.026547994963,"y":17771.03712562104},"targetPosition":{"x":22530.794142525996,"y":17516.13028195662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n }\n}","id":"6c71aefb-c41b-4fe1-b0cc-25827fd91a9e","savedPayload":{"position":{"x":21084.701614979993,"y":17386.22910736162},"targetPosition":{"x":21807.706985097913,"y":17451.151683588323},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"a2f74418-ca41-437e-b377-414a234acf1b","savedPayload":{"position":{"x":21807.706985097913,"y":17451.151683588323},"targetPosition":{"x":22530.794142525996,"y":17516.13028195662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Left Entry Target Rate","id":"1b7b3265-d7ca-43fb-9dc7-4703eb918db5","savedPayload":{"position":{"x":21907.543590600046,"y":17143.84548066967},"targetPosition":{"x":22530.794142525996,"y":17516.13028195662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Left Entry Target Rate","id":"1c279ac2-347d-453f-9b5e-436216cebd7d"}}},{"type":"Polygon Vertex","name":"Right Entry Target Rate","id":"36b61d3e-013b-483f-a3ec-d88d6c4693aa","savedPayload":{"position":{"x":22130.794814657387,"y":16910.313396429872},"targetPosition":{"x":22530.794142525996,"y":17516.13028195662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Right Entry Target Rate","id":"609e9ed3-5503-4a3e-949b-d2ab2cf10f10"}}},{"type":"Polygon Vertex","name":"Right Exit Target Rate","id":"10f40dfc-bf39-41dc-b2ca-3e93c13aa1a5","savedPayload":{"position":{"x":22433.2834116487,"y":16796.793417903085},"targetPosition":{"x":22530.794142525996,"y":17516.13028195662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Right Exit Target Rate","id":"93ba04d2-21ec-41a2-9a2e-eb47a8d39149"}}}],"id":"e37cfbb4-fe54-49ad-9525-29b0d77e082b","savedPayload":{"position":{"x":22530.660478174075,"y":17516.172601893464},"targetPosition":{"x":23222.2917257119,"y":17740.821356681612},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Empty Triangle","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.ROIInBaseAsset === 0","id":"19cb9968-c1eb-451c-913b-807689e76acc","savedPayload":{"position":{"x":22073.049338032837,"y":17228.41512599113},"targetPosition":{"x":22794.96459776694,"y":17152.676819189437},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n }\n}","id":"c4823f51-eef8-488c-8b2f-a3eccff5a2ae","savedPayload":{"position":{"x":21468.795424749023,"y":16562.415933664364},"targetPosition":{"x":22131.827744592418,"y":16857.53524865068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"c2a0e17f-1ee8-4132-84d3-59a06a3b122d","savedPayload":{"position":{"x":22131.827744592418,"y":16857.53524865068},"targetPosition":{"x":22794.96459776694,"y":17152.676819189437},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Left Entry Target Rate","id":"b7295cca-db57-485e-94e4-e8770da6bb6b","savedPayload":{"position":{"x":22368.254224586814,"y":16565.503997090218},"targetPosition":{"x":22794.96459776694,"y":17152.676819189437},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Left Entry Target Rate","id":"1c279ac2-347d-453f-9b5e-436216cebd7d"}}},{"type":"Polygon Vertex","name":"Right Entry Target Rate","id":"f60220b1-c42c-4160-807d-eb7563c58e50","savedPayload":{"position":{"x":22733.41369816442,"y":16455.92498429848},"targetPosition":{"x":22794.96459776694,"y":17152.676819189437},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Right Entry Target Rate","id":"609e9ed3-5503-4a3e-949b-d2ab2cf10f10"}}},{"type":"Polygon Vertex","name":"Right Exit Target Rate","id":"8ec2c8d2-ed4a-4927-9208-4acde0721ac9","savedPayload":{"position":{"x":23090.41551792769,"y":16490.225387381783},"targetPosition":{"x":22794.96459776694,"y":17152.676819189437},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Right Exit Target Rate","id":"93ba04d2-21ec-41a2-9a2e-eb47a8d39149"}}}],"id":"23c30ca5-95ec-47b2-a65f-01969b1a5a78","savedPayload":{"position":{"x":22794.919927290925,"y":17152.65998213844},"targetPosition":{"x":23222.2917257119,"y":17740.821356681612},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"a1635ebb-9528-4f34-8729-4812e12a850f","savedPayload":{"position":{"x":23222.2917257119,"y":17740.821356681612},"targetPosition":{"x":23948.793740844274,"y":17740.814933455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Position Base Asset","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Entry Target Size","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.entryTargetSizeInBaseAsset","id":"31a77b72-a21e-4f05-acc9-2235fe404434","savedPayload":{"position":{"x":22695.95768926223,"y":16389.4698877303},"targetPosition":{"x":22932.31365261524,"y":16525.712505101837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c9bd8ca1-e2be-4ae1-b026-d80853994004","savedPayload":{"position":{"x":22932.31365261524,"y":16525.712505101837},"targetPosition":{"x":23404.56577489659,"y":16798.022340537136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Exit Target Size","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.exitTargetSizeInBaseAsset","id":"1ab726ad-0192-49ad-94c2-f931a565257f","savedPayload":{"position":{"x":22826.05381145263,"y":16219.634607120592},"targetPosition":{"x":23019.06162202807,"y":16412.613291726448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"917b6343-ae61-4086-b3d2-c03831ae6833","savedPayload":{"position":{"x":23019.06162202807,"y":16412.613291726448},"targetPosition":{"x":23404.56577489659,"y":16798.022340537136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Profit Loss","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.profitLossInBaseAsset","id":"d1dc5d27-95f5-480d-bd36-4c1291ae2b24","savedPayload":{"position":{"x":22995.624459289265,"y":16089.479865975107},"targetPosition":{"x":23132.05537852364,"y":16325.886608817671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"232bfbcc-1e50-40b0-84cf-d4bcebadfe2f","savedPayload":{"position":{"x":23132.05537852364,"y":16325.886608817671},"targetPosition":{"x":23404.56577489659,"y":16798.022340537136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"ROI","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ROIInBaseAsset + ' %'","id":"6e6fe2c8-e8ca-4b85-b19c-25aad68a9485","savedPayload":{"position":{"x":23193.1255982273,"y":16007.720411045368},"targetPosition":{"x":23263.650154074476,"y":16271.40102955244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"dd5a890c-5c35-4b61-a80f-7e6d5fa1315f","savedPayload":{"position":{"x":23263.650154074476,"y":16271.40102955244},"targetPosition":{"x":23404.56577489659,"y":16798.022340537136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Hit Fail","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.hitFailInBaseAsset","id":"67b4e235-40db-4a56-8f55-64922adcbc02","savedPayload":{"position":{"x":23404.804918753787,"y":15979.914592208266},"targetPosition":{"x":23404.767885126137,"y":16252.842528807254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"24a6f905-7d60-4543-a3ff-98d142797358","savedPayload":{"position":{"x":23404.767885126137,"y":16252.842528807254},"targetPosition":{"x":23404.56577489659,"y":16798.022340537136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b4298480-8922-4c40-ac79-b4484f8558bd","savedPayload":{"position":{"x":23404.56577489659,"y":16798.022340537136},"targetPosition":{"x":23948.793740844274,"y":17740.814933455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"42a79594-bac8-40bf-a9eb-f13716e15465","savedPayload":{"position":{"x":24236.295421016286,"y":18318.840993716156},"targetPosition":{"x":24659.537709461314,"y":18432.153314953848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Position Quoted Asset","config":"{ \n \"codeName\": \"Position-Objects\", \n \"icon\": \"trend\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Left Entry Target Rate","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.entryTargetRate","id":"800c7bf9-3d8d-46ae-88ac-c168b80cbc78","savedPayload":{"position":{"x":22727.55022173442,"y":17916.865328144588},"targetPosition":{"x":22792.468043551988,"y":17747.605482044662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"17cf1421-4fc5-4cff-83d5-394cfcb4a88e","savedPayload":{"position":{"x":22792.468043551988,"y":17747.605482044662},"targetPosition":{"x":22923.23682672454,"y":17406.66050791253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Right Entry Target Rate","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.entryTargetRate","id":"4dbc8252-a487-41d9-9f3a-b054398acc8b","savedPayload":{"position":{"x":22422.97868950561,"y":17635.720404749205},"targetPosition":{"x":22590.224167122255,"y":17554.926472815092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a00d0039-31a4-4033-8ad5-b0e0d9d13e4e","savedPayload":{"position":{"x":22590.224167122255,"y":17554.926472815092},"targetPosition":{"x":22923.23682672454,"y":17406.66050791253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Right Exit Target Rate","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.exitTargetRate","id":"8aab882e-d77b-4fcb-8eb0-1d4f6381c86d","savedPayload":{"position":{"x":22413.02418102183,"y":17210.924826421728},"targetPosition":{"x":22581.92239389269,"y":17275.708967892595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2af047d2-b4f1-4395-8d35-67c70c582c0e","savedPayload":{"position":{"x":22581.92239389269,"y":17275.708967892595},"targetPosition":{"x":22923.23682672454,"y":17406.66050791253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2d8c4071-9ea0-45cf-9b0d-e73fd57a9928","savedPayload":{"position":{"x":22922.609821181333,"y":17406.575773433276},"targetPosition":{"x":23586.159633584066,"y":17111.240981618233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Profit Triangle","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.ROIInQuotedAsset > 0","id":"264f839b-e67b-4629-8465-cb404eb93754","savedPayload":{"position":{"x":22431.326746735624,"y":17534.521621008265},"targetPosition":{"x":22875.114835620177,"y":16960.31595339953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n }\n}","id":"07f5de9d-d271-4377-95d5-7ca4b1ffee19","savedPayload":{"position":{"x":21576.93679926165,"y":17609.241165512532},"targetPosition":{"x":22225.954057659943,"y":17284.75750175246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"90188cf7-8395-4899-addc-0499321cff14","savedPayload":{"position":{"x":22225.954057659943,"y":17284.75750175246},"targetPosition":{"x":22875.114835620177,"y":16960.31595339953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.PATINATED_TURQUOISE\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n }\n}","id":"916fb502-a39c-4203-83fc-32d41c4c5755","savedPayload":{"position":{"x":21423.842940176495,"y":16981.622110798973},"targetPosition":{"x":22149.438295651096,"y":16970.96403191608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"88d51449-8118-4d83-b768-112f9e212cc7","savedPayload":{"position":{"x":22149.438295651096,"y":16970.96403191608},"targetPosition":{"x":22875.114835620177,"y":16960.31595339953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Left Entry Target Rate","id":"b4c2062a-382b-43bc-a281-9df152bc8a49","savedPayload":{"position":{"x":22216.605966523988,"y":16655.288129632347},"targetPosition":{"x":22875.114835620177,"y":16960.31595339953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Left Entry Target Rate","id":"17cf1421-4fc5-4cff-83d5-394cfcb4a88e"}}},{"type":"Polygon Vertex","name":"Right Entry Target Rate","id":"4d43870a-1769-43e3-a927-641900ff72c0","savedPayload":{"position":{"x":22414.179951441143,"y":16399.787129165146},"targetPosition":{"x":22875.114835620177,"y":16960.31595339953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Right Entry Target Rate","id":"a00d0039-31a4-4033-8ad5-b0e0d9d13e4e"}}},{"type":"Polygon Vertex","name":"Right Exit Target Rate","id":"6347f1dc-7ab3-4570-877b-df9e04058758","savedPayload":{"position":{"x":22703.02940242601,"y":16255.34791241491},"targetPosition":{"x":22875.114835620177,"y":16960.31595339953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Right Exit Target Rate","id":"2af047d2-b4f1-4395-8d35-67c70c582c0e"}}}],"id":"9cf82ef4-557e-498e-b121-ff28235b3a25","savedPayload":{"position":{"x":22874.904294430107,"y":16960.14384207509},"targetPosition":{"x":23586.159633584066,"y":17111.240981618233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Loss Triangle","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.ROIInQuotedAsset < 0","id":"ba9c6218-12de-4eeb-80ad-a5c949ea925d","savedPayload":{"position":{"x":22403.049330060323,"y":16774.97541065155},"targetPosition":{"x":23099.72333063888,"y":16571.206982114538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.RED\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n }\n}","id":"dd6fee79-df88-4f2c-8526-f364a1343f83","savedPayload":{"position":{"x":21667.752330509007,"y":16333.499038389782},"targetPosition":{"x":22383.683122853537,"y":16452.2483728414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"196adfa2-00ad-48a4-8eb3-c82256e91031","savedPayload":{"position":{"x":22383.683122853537,"y":16452.2483728414},"targetPosition":{"x":23099.72333063888,"y":16571.206982114538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n }\n}","id":"a04ad71d-d9f8-4122-913e-19892b51689b","savedPayload":{"position":{"x":21912.75471544863,"y":15735.807516784016},"targetPosition":{"x":22506.188603762326,"y":16153.480741624891},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"1fe378dc-3deb-4825-9401-83f963060acd","savedPayload":{"position":{"x":22506.188603762326,"y":16153.480741624891},"targetPosition":{"x":23099.72333063888,"y":16571.206982114538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Left Entry Target Rate","id":"78ee45ea-40df-4cb4-9e16-0b07d9e298fd","savedPayload":{"position":{"x":22746.185699967307,"y":15937.199960418315},"targetPosition":{"x":23099.72333063888,"y":16571.206982114538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Left Entry Target Rate","id":"17cf1421-4fc5-4cff-83d5-394cfcb4a88e"}}},{"type":"Polygon Vertex","name":"Right Entry Target Rate","id":"b719aa97-15aa-4d6c-a08e-451314cb604a","savedPayload":{"position":{"x":23042.43086060968,"y":15868.853725771041},"targetPosition":{"x":23099.72333063888,"y":16571.206982114538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Right Entry Target Rate","id":"a00d0039-31a4-4033-8ad5-b0e0d9d13e4e"}}},{"type":"Polygon Vertex","name":"Right Exit Target Rate","id":"508f7dd3-087d-4952-9140-29936aac5aa4","savedPayload":{"position":{"x":23374.842004495316,"y":15899.63043492085},"targetPosition":{"x":23099.72333063888,"y":16571.206982114538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Right Exit Target Rate","id":"2af047d2-b4f1-4395-8d35-67c70c582c0e"}}}],"id":"61faa796-9697-48b0-a582-613e1b351931","savedPayload":{"position":{"x":23099.62916347392,"y":16570.89649537591},"targetPosition":{"x":23586.159633584066,"y":17111.240981618233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Empty Triangle","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.ROIInQuotedAsset === 0","id":"9b162bfd-0d6a-4ca2-ae2a-36b9b25d8180","savedPayload":{"position":{"x":22846.839624946886,"y":16092.870322126799},"targetPosition":{"x":23510.294162962302,"y":16388.191400652075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n }\n}","id":"93ec6c1e-fe4c-4857-b9e7-6914e626423a","savedPayload":{"position":{"x":22656.68667572161,"y":15213.189039494302},"targetPosition":{"x":23083.47253754621,"y":15800.661709435191},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"29555fd1-c64d-4237-88f3-32fee8ae4c2c","savedPayload":{"position":{"x":23083.47253754621,"y":15800.661709435191},"targetPosition":{"x":23510.294162962302,"y":16388.191400652075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Left Entry Target Rate","id":"c4b528b7-667e-4aa1-b397-0f5bb15abd95","savedPayload":{"position":{"x":23434.501887887658,"y":15665.922402318753},"targetPosition":{"x":23510.294162962302,"y":16388.191400652075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Left Entry Target Rate","id":"17cf1421-4fc5-4cff-83d5-394cfcb4a88e"}}},{"type":"Polygon Vertex","name":"Right Entry Target Rate","id":"48fe8782-73d1-46d8-aa7d-55a843996fb3","savedPayload":{"position":{"x":23805.581442944764,"y":15724.737064206025},"targetPosition":{"x":23510.294162962302,"y":16388.191400652075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Right Entry Target Rate","id":"a00d0039-31a4-4033-8ad5-b0e0d9d13e4e"}}},{"type":"Polygon Vertex","name":"Right Exit Target Rate","id":"339258b7-534f-41b7-b0ea-9f958bb982ab","savedPayload":{"position":{"x":24097.761302414718,"y":15961.330167876793},"targetPosition":{"x":23510.294162962302,"y":16388.191400652075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Right Exit Target Rate","id":"2af047d2-b4f1-4395-8d35-67c70c582c0e"}}}],"id":"58c807a3-8443-43d9-82e9-81c3d0545399","savedPayload":{"position":{"x":23510.26506640266,"y":16388.118709730148},"targetPosition":{"x":23586.159633584066,"y":17111.240981618233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[],"texts":[],"id":"d2ad64d7-e463-4f5f-9f3d-05c98a5e8101","savedPayload":{"position":{"x":23586.159633584066,"y":17111.240981618233},"targetPosition":{"x":24215.162729329884,"y":17474.417065006484},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Position Quoted Asset","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Entry Target Size","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.entryTargetSizeInQuotedAsset","id":"8a47d5d4-b86c-40cb-a4f1-a64244e80bfd","savedPayload":{"position":{"x":23134.279945074013,"y":16331.811729865756},"targetPosition":{"x":23346.40007584792,"y":16503.428535604737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"38cae0a2-4954-4cbc-a178-3e665885c393","savedPayload":{"position":{"x":23346.40007584792,"y":16503.428535604737},"targetPosition":{"x":23770.025815015237,"y":16846.026067067956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Exit Target Size","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.exitTargetSizeInQuotedAsset","id":"4ece6618-31a7-4e14-86b6-d1aecf9d0494","savedPayload":{"position":{"x":23289.340421220513,"y":16184.513951705338},"targetPosition":{"x":23449.73696321259,"y":16405.294108214628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"821330e4-19c2-4267-a189-a2d28087850a","savedPayload":{"position":{"x":23449.73696321259,"y":16405.294108214628},"targetPosition":{"x":23770.025815015237,"y":16846.026067067956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Profit Loss","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.profitLossInQuotedAsset","id":"ec9c4116-3155-41cf-8e01-fbe6c8428c28","savedPayload":{"position":{"x":23476.981292623288,"y":16082.242191554365},"targetPosition":{"x":23574.73286416732,"y":16337.087081826992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"83330178-d79b-4709-bdee-5c3875214e06","savedPayload":{"position":{"x":23574.73286416732,"y":16337.087081826992},"targetPosition":{"x":23770.025815015237,"y":16846.026067067956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"ROI","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.ROIInQuotedAsset + ' %'","id":"7ad9a57d-8322-4677-8a2a-d108ea01fdca","savedPayload":{"position":{"x":23684.837031885367,"y":16032.37391341055},"targetPosition":{"x":23713.230218993776,"y":16303.847880362986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b5e39cc4-9b95-4e92-9814-41c34c2ea4a8","savedPayload":{"position":{"x":23713.230218993776,"y":16303.847880362986},"targetPosition":{"x":23770.025815015237,"y":16846.026067067956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Hit Fail","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.hitFailInQuotedAsset","id":"56c8470e-20fb-40c1-8224-37240bcad860","savedPayload":{"position":{"x":23898.25183552947,"y":16038.083040171574},"targetPosition":{"x":23855.51050834197,"y":16307.621885919534},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"09ec6e2f-ad57-4127-94af-0046a7b0d400","savedPayload":{"position":{"x":23855.51050834197,"y":16307.621885919534},"targetPosition":{"x":23770.025815015237,"y":16846.026067067956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f15d0a31-30bd-49a6-8c45-1bcd1a9cc5a8","savedPayload":{"position":{"x":24215.166430516183,"y":16386.089493753578},"targetPosition":{"x":24215.162729329884,"y":17474.417065006484},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"baed45c2-228e-4679-876e-1867bbef5e9f","savedPayload":{"position":{"x":24349.758169894187,"y":18122.396608652674},"targetPosition":{"x":24659.537709461314,"y":18432.153314953848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Stop Loss","config":"{ \n \"codeName\": \"Module-Name\", \n \"icon\": \"histogram|band|moving-average|oscillator|trend\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.stopLoss","id":"eeef1100-0dcc-4367-99f1-b23a5e98b2ff","savedPayload":{"position":{"x":23032.29028356427,"y":17545.575198613275},"targetPosition":{"x":23092.905031431408,"y":17387.870799061413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7d0349ba-640b-43f2-b500-d62c06fecd81","savedPayload":{"position":{"x":23092.905031431408,"y":17387.870799061413},"targetPosition":{"x":23153.432938569997,"y":17230.327209016676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.stopLoss","id":"79f690f8-360a-49a8-9df0-bc42d1975099","savedPayload":{"position":{"x":22940.559875211013,"y":16968.307575445502},"targetPosition":{"x":23047.090506687975,"y":17099.425728322116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a4c015cf-419c-44f6-9816-6828e5fbc3c3","savedPayload":{"position":{"x":23047.090506687975,"y":17099.425728322116},"targetPosition":{"x":23153.432938569997,"y":17230.327209016676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fdf923e9-1d23-41c0-9210-38d35313c4ab","savedPayload":{"position":{"x":23153.432938569997,"y":17230.327209016676},"targetPosition":{"x":23819.0088616997,"y":17124.941411447737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"New Polygon","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.stopLoss > 0","id":"b8677c90-5e19-402b-b494-d2cce015c167","savedPayload":{"position":{"x":22616.819784215324,"y":17124.38759065187},"targetPosition":{"x":23217.550570946758,"y":16818.512109221505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.RED\",\n \"opacity\": 0.5,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.RED\",\n \"opacity\": 0.8,\n \"lineWidth\": 3,\n \"lineDash\": [0,0]\n }\n}","id":"1eee2eba-1af0-4cc0-ad50-22ac23a10dac","savedPayload":{"position":{"x":21886.07143579107,"y":16607.763725832945},"targetPosition":{"x":22551.74182206313,"y":16713.111607143033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"83ae727f-2dc3-4153-9b7f-2bee0748e134","savedPayload":{"position":{"x":22551.74182206313,"y":16713.111607143033},"targetPosition":{"x":23217.550570946758,"y":16818.512109221505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin","id":"ac7ed016-4516-4ebc-a902-95e97ace1f55","savedPayload":{"position":{"x":22740.902873834362,"y":16341.858585645617},"targetPosition":{"x":23217.550570946758,"y":16818.512109221505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin","id":"7d0349ba-640b-43f2-b500-d62c06fecd81"}}},{"type":"Polygon Vertex","name":"End","id":"6f873316-c57a-48b4-80c7-362f823d37b4","savedPayload":{"position":{"x":23112.03375942053,"y":16152.604180266402},"targetPosition":{"x":23217.550570946758,"y":16818.512109221505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End","id":"a4c015cf-419c-44f6-9816-6828e5fbc3c3"}}}],"id":"9d351f29-6a3e-4c2b-b008-ebe1414d2aa8","savedPayload":{"position":{"x":23217.550570946758,"y":16818.512109221505},"targetPosition":{"x":23819.0088616997,"y":17124.941411447737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[{"type":"Image","name":"New Image","config":"{ \n\"codeName\": \"phase\", \n\"size\": 20\n}","imageCondition":{"type":"Image Condition","name":"New Image Condition","code":"(record.positions !== record.previous.positions && record.stopLossPhase >= 0 ) || \n(record.stopLossPhase !== record.previous.stopLossPhase && record.stopLossPhase >= 0 ) ","id":"ef8dedb9-454b-423b-94e7-1a522047aa12","savedPayload":{"position":{"x":23229.44901415684,"y":16339.540137028112},"targetPosition":{"x":23512.55681810117,"y":16523.444315116616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"imagePosition":{"type":"Image Position","name":"Begin","config":"{ \n\"offsetX\": 0,\n \"offsetY\": 10\n }","id":"860a9f6e-cc9d-46fb-83d6-fb908e12a30f","savedPayload":{"position":{"x":23529.75845300651,"y":16186.137033032743},"targetPosition":{"x":23512.55681810117,"y":16523.444315116616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Begin","id":"7d0349ba-640b-43f2-b500-d62c06fecd81"}}},"id":"d4a99750-dd06-453f-a126-ac48c25372ab","savedPayload":{"position":{"x":23512.55681810117,"y":16523.444315116616},"targetPosition":{"x":23819.0088616997,"y":17124.941411447737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"texts":[{"type":"Text","name":"New Text","config":"{ \n\"codeName\": \"\", \n\"fontSize\": 10\n}","textCondition":{"type":"Text Condition","name":"New Text Condition","code":"(record.positions !== record.previous.positions && record.stopLossPhase >= 0 ) || \n(record.stopLossPhase !== record.previous.stopLossPhase && record.stopLossPhase >= 0 ) ","id":"8e0eb7c3-171a-4fc3-a3e4-3c67bb772343","savedPayload":{"position":{"x":23684.42331738291,"y":16219.752456859429},"targetPosition":{"x":23923.034777782475,"y":16458.600400712174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"textPosition":{"type":"Text Position","name":"Begin","config":"{ \n\"offsetX\": -3,\n \"offsetY\": -15\n }","id":"817671c1-fd3f-43ff-9670-9c3bcb94b8fb","savedPayload":{"position":{"x":23870.389861066957,"y":16124.818302019852},"targetPosition":{"x":23923.034777782475,"y":16458.600400712174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Begin","id":"7d0349ba-640b-43f2-b500-d62c06fecd81"}}},"textFormula":{"type":"Text Formula","name":"New Text Formula","code":"record.stopLossPhase","id":"ccafd036-b292-48b1-847e-6735a3eb8253","savedPayload":{"position":{"x":24076.25197358491,"y":16157.446963282873},"targetPosition":{"x":23923.034777782475,"y":16458.600400712174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"textStyle":{"type":"Text Style","name":"New Text Style","config":"{\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.5,\n \"fontSize\": 10\n}","id":"42f9061a-9d2a-4d3f-9f7a-c47c9e6e0601","savedPayload":{"position":{"x":24223.845845224343,"y":16305.10881191629},"targetPosition":{"x":23923.034777782475,"y":16458.600400712174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7e69ccc1-a9f7-4a64-aeaa-344eb46f63f7","savedPayload":{"position":{"x":23923.034777782475,"y":16458.600400712174},"targetPosition":{"x":23819.0088616997,"y":17124.941411447737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"41dd1d86-998c-46d7-a37e-1a1508fd8b51","savedPayload":{"position":{"x":23819.0088616997,"y":17124.941411447737},"targetPosition":{"x":24295.54329549031,"y":17601.450689231664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Stop Loss Panel","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Serial Number","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.serialNumber","id":"fdaab5ea-7f88-4b52-9b80-725f069907d9","savedPayload":{"position":{"x":24048.499238171025,"y":16425.15947944018},"targetPosition":{"x":24257.704302807026,"y":16688.304469283466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96d6bda9-5520-4690-8230-26ade54edcf1","savedPayload":{"position":{"x":24257.704302807026,"y":16688.304469283466},"targetPosition":{"x":24469.952646164937,"y":16950.549992274424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Stop Loss","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.stopLoss","id":"1a5679d8-426b-4789-ac5b-c8d9c3a18fd8","savedPayload":{"position":{"x":24435.395026251175,"y":16275.985536249174},"targetPosition":{"x":24452.58550584732,"y":16613.314929969856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f590d585-66dd-47b9-99e8-38d081a1d1a0","savedPayload":{"position":{"x":24452.58550584732,"y":16613.314929969856},"targetPosition":{"x":24469.952646164937,"y":16950.549992274424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Stop Loss Phase","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.stopLossPhase","id":"9067e496-6c73-4ada-b403-6a097667f8a2","savedPayload":{"position":{"x":24745.993356903175,"y":16525.58650255822},"targetPosition":{"x":24653.862318167776,"y":16667.424656577226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e78ebe16-bfdc-4814-b334-5aad14fbf307","savedPayload":{"position":{"x":24653.862318167776,"y":16667.424656577226},"targetPosition":{"x":24469.952646164937,"y":16950.549992274424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Stop Loss Stage","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.stopLossStage","id":"1eb68ffb-5a03-4b8f-a53f-0f120d52fa20","savedPayload":{"position":{"x":24943.115377465158,"y":16769.272697665987},"targetPosition":{"x":24785.21117576728,"y":16829.76542675504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d84a629b-9ff1-4f24-aa41-55c18746cc10","savedPayload":{"position":{"x":24785.21117576728,"y":16829.76542675504},"targetPosition":{"x":24469.952646164937,"y":16950.549992274424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1b6d3bd0-e594-4b09-9f1c-021177676d84","savedPayload":{"position":{"x":24469.952646164937,"y":16950.549992274424},"targetPosition":{"x":24295.54329549031,"y":17601.450689231664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9b8e4fc2-b62a-4d47-ac5f-08818e463da2","savedPayload":{"position":{"x":24546.182963509505,"y":18008.92994719919},"targetPosition":{"x":24659.537709461314,"y":18432.153314953848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Take Profit","config":"{ \n \"codeName\": \"Module-Name\", \n \"icon\": \"histogram|band|moving-average|oscillator|trend\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.takeProfit","id":"4e73522f-8830-4026-8aa9-aa20558e6bb0","savedPayload":{"position":{"x":23579.02231212041,"y":16921.10159582004},"targetPosition":{"x":23710.409724942954,"y":16815.007615228504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9baaa58e-af64-4348-9320-fad9823153a9","savedPayload":{"position":{"x":23710.409724942954,"y":16815.007615228504},"targetPosition":{"x":23841.632758614305,"y":16709.016054607375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.takeProfit","id":"f7740d4c-0742-4f8b-8ad3-b7fec1e92066","savedPayload":{"position":{"x":23788.645560751556,"y":16375.367193188855},"targetPosition":{"x":23815.171485064493,"y":16542.309485208323},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bcbd8777-10f8-46a6-ba09-4d635570057d","savedPayload":{"position":{"x":23815.171485064493,"y":16542.309485208323},"targetPosition":{"x":23841.632758614305,"y":16709.016054607375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fc2dda29-1eb7-4f6f-8527-2e54ba32bb8b","savedPayload":{"position":{"x":23841.632758614305,"y":16709.016054607375},"targetPosition":{"x":24470.73186929911,"y":16950.432274690724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"New Polygon","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.takeProfit > 0","id":"b96a45dc-f0db-4c23-8f66-081302ea7bbf","savedPayload":{"position":{"x":26575.112002446196,"y":16676.11048973976},"targetPosition":{"x":26152.905331465543,"y":16780.975770196957},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.5,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.8,\n \"lineWidth\": 3,\n \"lineDash\": [0,0]\n }\n}","id":"5033856c-d71d-4608-a6f2-347ef82d8591","savedPayload":{"position":{"x":26090.06092851102,"y":15571.019366885823},"targetPosition":{"x":26121.567478095134,"y":16175.902612099606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"1e3604e1-777b-4344-a47a-d3fefa10014b","savedPayload":{"position":{"x":26121.567478095134,"y":16175.902612099606},"targetPosition":{"x":26152.905331465543,"y":16780.975770196957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin","id":"74cef8d6-de4c-464d-8c00-97a88227f626","savedPayload":{"position":{"x":26482.857455321606,"y":16272.850166000817},"targetPosition":{"x":26152.905331465543,"y":16780.975770196957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin","id":"9baaa58e-af64-4348-9320-fad9823153a9"}}},{"type":"Polygon Vertex","name":"End","id":"e3c98070-e46c-4d6d-9079-2b9d556722cc","savedPayload":{"position":{"x":26718.62787798267,"y":16563.643719677715},"targetPosition":{"x":26152.905331465543,"y":16780.975770196957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End","id":"bcbd8777-10f8-46a6-ba09-4d635570057d"}}}],"id":"a0b598d2-cdb6-4ce7-96c5-ef3317ae1768","savedPayload":{"position":{"x":24103.076907617447,"y":16384.2631478919},"targetPosition":{"x":24470.73186929911,"y":16950.432274690724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[{"type":"Image","name":"New Image","config":"{ \n\"codeName\": \"phase\", \n\"size\": 20\n}","imageCondition":{"type":"Image Condition","name":"New Image Condition","code":"(record.positions !== record.previous.positions && record.takeProfitPhase >= 0 ) || \n(record.takeProfitPhase !== record.previous.takeProfitPhase && record.takeProfitPhase >= 0 ) ","id":"a404c20d-5c4d-4505-81f0-263987496ba0","savedPayload":{"position":{"x":24352.597211943117,"y":15975.323729778347},"targetPosition":{"x":24505.788355679037,"y":16276.248518047885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"imagePosition":{"type":"Image Position","name":"Begin","config":"{ \n\"offsetX\": 0,\n \"offsetY\": 10\n }","id":"c1ed6b36-4dd8-4ff5-ae66-6c6878b4edc1","savedPayload":{"position":{"x":24689.325897781902,"y":15992.790010703302},"targetPosition":{"x":24505.788355679037,"y":16276.248518047885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Begin","id":"9baaa58e-af64-4348-9320-fad9823153a9"}}},"id":"0da5f29a-4847-460d-b982-68b8d5cc7fe5","savedPayload":{"position":{"x":24505.788355679037,"y":16276.248518047885},"targetPosition":{"x":24470.73186929911,"y":16950.432274690724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"texts":[{"type":"Text","name":"New Text","config":"{ \n\"codeName\": \"\", \n\"fontSize\": 10\n}","textCondition":{"type":"Text Condition","name":"New Text Condition","code":"(record.positions !== record.previous.positions && record.takeProfitPhase >= 0 ) || \n(record.takeProfitPhase !== record.previous.takeProfitPhase && record.takeProfitPhase >= 0 ) ","id":"81c4f7bc-db04-4c61-a8e8-5a4a6308dda0","savedPayload":{"position":{"x":24806.798461322636,"y":16099.279406702133},"targetPosition":{"x":24893.99466086669,"y":16425.49323349367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"textPosition":{"type":"Text Position","name":"Begin","config":"{ \n\"offsetX\": -3,\n \"offsetY\": -15\n }","id":"5833e42f-c848-4271-9e20-f48d5a98929a","savedPayload":{"position":{"x":25015.03262999729,"y":16110.028957718008},"targetPosition":{"x":24893.99466086669,"y":16425.49323349367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Begin","id":"9baaa58e-af64-4348-9320-fad9823153a9"}}},"textFormula":{"type":"Text Formula","name":"New Text Formula","code":"record.takeProfitPhase","id":"00f3fb76-f50d-4879-b1d2-49c51824aef9","savedPayload":{"position":{"x":25177.283590503153,"y":16241.361207134765},"targetPosition":{"x":24893.99466086669,"y":16425.49323349367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"textStyle":{"type":"Text Style","name":"New Text Style","config":"{\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.5,\n \"fontSize\": 10\n}","id":"e4d1b248-ee99-42e0-9c77-18b9792b6631","savedPayload":{"position":{"x":25231.282936035797,"y":16442.71874749041},"targetPosition":{"x":24893.99466086669,"y":16425.49323349367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f26f4f43-95e1-406d-94e8-7c818e363777","savedPayload":{"position":{"x":24893.99466086669,"y":16425.49323349367},"targetPosition":{"x":24470.73186929911,"y":16950.432274690724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"95465ef6-b26a-4ca3-817c-26b50e9ef8e0","savedPayload":{"position":{"x":24470.73186929911,"y":16950.432274690724},"targetPosition":{"x":24645.097255921595,"y":17601.43336881303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Take Profit Panel","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Serial Number","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.serialNumber","id":"c3aae579-7115-4e4c-bd43-829dea52a70f","savedPayload":{"position":{"x":25019.4112598735,"y":16459.15568047338},"targetPosition":{"x":25069.009861583665,"y":16791.750220131766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"57d30bfc-893d-4e50-9cda-ee544fdae1e1","savedPayload":{"position":{"x":25069.009861583665,"y":16791.750220131766},"targetPosition":{"x":25121.62680865067,"y":17125.06354208498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Take Profit","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.takeProfit","id":"64f4a076-de71-444a-a543-f62da7701e6f","savedPayload":{"position":{"x":25428.500991221994,"y":16523.433900033768},"targetPosition":{"x":25274.971044383943,"y":16824.24624984227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"321eb006-13d4-4f66-aeab-f6fd2aa4758b","savedPayload":{"position":{"x":25274.971044383943,"y":16824.24624984227},"targetPosition":{"x":25121.62680865067,"y":17125.06354208498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Take Profit Phase","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.takeProfitPhase","id":"0e3f0594-6a97-4e2e-a261-84be8b4ef02c","savedPayload":{"position":{"x":25573.24991221196,"y":16895.202145233565},"targetPosition":{"x":25422.5030690622,"y":16971.902947632014},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"eccb236b-4d20-4df2-9810-543bfbb3fc25","savedPayload":{"position":{"x":25422.5030690622,"y":16971.902947632014},"targetPosition":{"x":25121.62680865067,"y":17125.06354208498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Take Profit Stage","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.takeProfitStage","id":"4ed86294-eeef-476c-a723-e469189a3f03","savedPayload":{"position":{"x":25622.1122544666,"y":17204.14944233347},"targetPosition":{"x":25455.08278999192,"y":17177.84495632148},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2a6d62db-bf02-4319-86bf-27e52fad0423","savedPayload":{"position":{"x":25455.08278999192,"y":17177.84495632148},"targetPosition":{"x":25121.62680865067,"y":17125.06354208498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"33aa2293-7958-4cc3-bb41-fc97c17ccd67","savedPayload":{"position":{"x":25121.62680865067,"y":17125.06354208498},"targetPosition":{"x":24645.097255921595,"y":17601.43336881303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"78a2df79-8912-44d7-a8c7-4b6a0a7235c2","savedPayload":{"position":{"x":24772.683707094475,"y":18008.92920906568},"targetPosition":{"x":24659.537709461314,"y":18432.153314953848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cd6f9452-2cce-424d-8059-e3b312f627c4","savedPayload":{"position":{"x":24411.067173716485,"y":18184.734287859726},"targetPosition":{"x":24941.217404066585,"y":18714.893045797242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"Trading Stages","config":"{ \n\"codeName\": \"\"\n}","modules":[{"type":"Plotter Module","name":"Trigger Stage Objects","config":"{ \n \"codeName\": \"Strategy-Objects\", \n \"icon\": \"trend\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Begin Bottom","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.beginRate * 0.90","id":"11876454-5f52-49ff-b29f-a5ddbd44e55f","savedPayload":{"position":{"x":23959.634761775054,"y":18983.6418680964},"targetPosition":{"x":23964.405529617292,"y":18783.39297649099},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ee6913fa-364d-4b80-bad5-35de44ca43fd","savedPayload":{"position":{"x":23964.405529617292,"y":18783.39297649099},"targetPosition":{"x":23973.684520128718,"y":18383.664611408898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin Top","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.beginRate","id":"f064b6c0-7eaf-4341-997a-8655f56c4ca8","savedPayload":{"position":{"x":23773.94253246708,"y":18949.947089032758},"targetPosition":{"x":23840.43055042814,"y":18761.087884904173},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"38094e81-9ae7-449d-bc9c-125f756b9f04","savedPayload":{"position":{"x":23840.43055042814,"y":18761.087884904173},"targetPosition":{"x":23973.684520128718,"y":18383.664611408898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End Bottom","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.beginRate * 0.90","id":"2a99561e-32d8-430f-9f67-44ce7b3dbdb7","savedPayload":{"position":{"x":23608.20663344135,"y":18860.257501555803},"targetPosition":{"x":23729.823366611363,"y":18701.39680428531},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"18c413f8-8acc-4172-91a6-d90a0762118c","savedPayload":{"position":{"x":23729.823366611363,"y":18701.39680428531},"targetPosition":{"x":23973.684520128718,"y":18383.664611408898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End Top","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.endRate","id":"7ab18100-017d-4aef-b48d-32f69b294062","savedPayload":{"position":{"x":23477.234673007188,"y":18721.05727518828},"targetPosition":{"x":23642.01044652075,"y":18607.867618782395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"185d7e04-fa68-401d-b666-9152e57c3378","savedPayload":{"position":{"x":23642.01044652075,"y":18607.867618782395},"targetPosition":{"x":23973.684520128718,"y":18383.664611408898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a14053c2-6a61-4f8c-be0d-585e226b6bca","savedPayload":{"position":{"x":23973.684520128718,"y":18383.664611408898},"targetPosition":{"x":24164.210377696632,"y":18032.396906137597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Closed Base","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.status === 'Closed'","id":"6b0d0c65-790f-4123-85da-5eeaae17e347","savedPayload":{"position":{"x":24030.31893563412,"y":17630.485376124627},"targetPosition":{"x":23811.45539209999,"y":17340.196301060725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.PATINATED_TURQUOISE\",\n \"opacity\": 0.25,\n \"lineWidth\": 10,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 10,\n \"lineDash\": [0,0]\n }\n}","id":"37f505da-f3f9-4eb2-b57e-4364f4c7557c","savedPayload":{"position":{"x":23383.789652508112,"y":17867.812847777677},"targetPosition":{"x":23579.694825711726,"y":17626.112833393323},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"debc9932-c238-4867-9bf3-51bbe419e2ff","savedPayload":{"position":{"x":23579.694825711726,"y":17626.112833393323},"targetPosition":{"x":23811.45539209999,"y":17340.196301060725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Bottom","id":"172928bb-91a1-471b-8dc0-86069d7c02a0","savedPayload":{"position":{"x":23467.659798144865,"y":17208.384482990754},"targetPosition":{"x":23811.45539209999,"y":17340.196301060725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"ee6913fa-364d-4b80-bad5-35de44ca43fd"}}},{"type":"Polygon Vertex","name":"End Bottom","id":"a1267ac2-8258-49cb-95fd-05af04277e88","savedPayload":{"position":{"x":23847.39246989028,"y":16965.754606139933},"targetPosition":{"x":23811.45539209999,"y":17340.196301060725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bottom","id":"18c413f8-8acc-4172-91a6-d90a0762118c"}}}],"id":"9e88f3a0-09ad-44fd-a84e-731228860e66","savedPayload":{"position":{"x":23853.21084764623,"y":18284.078003063783},"targetPosition":{"x":24164.210377696632,"y":18032.396906137597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Open Base","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.status === 'Open'","id":"d567e677-4217-4379-b873-1afc6fd52f11","savedPayload":{"position":{"x":23916.21343606553,"y":17444.060066378373},"targetPosition":{"x":23795.57396245202,"y":17098.694237658383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.PATINATED_TURQUOISE\",\n \"opacity\": 0.25,\n \"lineWidth\": 10,\n \"lineDash\": [3,3]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 10,\n \"lineDash\": [3,3]\n }\n}","id":"592cc0ee-978d-4030-8fde-4ec503294f15","savedPayload":{"position":{"x":23198.813045226125,"y":17422.152888421446},"targetPosition":{"x":23471.667922806253,"y":17274.236201487205},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"07121085-90a5-4b16-a2b5-6dbb11c3d08c","savedPayload":{"position":{"x":23471.667922806253,"y":17274.236201487205},"targetPosition":{"x":23795.57396245202,"y":17098.694237658383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Bottom","id":"8591ccfd-d6ec-495e-859d-29894c061971","savedPayload":{"position":{"x":23528.24863433687,"y":16845.215356289587},"targetPosition":{"x":23795.57396245202,"y":17098.694237658383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"ee6913fa-364d-4b80-bad5-35de44ca43fd"}}},{"type":"Polygon Vertex","name":"End Bottom","id":"72ad8b4e-d393-453d-8b57-527f63c248f2","savedPayload":{"position":{"x":23971.88121273497,"y":16766.91825748183},"targetPosition":{"x":23795.57396245202,"y":17098.694237658383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bottom","id":"18c413f8-8acc-4172-91a6-d90a0762118c"}}}],"id":"e2e18af7-af5f-4634-b8a4-4fabd2ddd7a5","savedPayload":{"position":{"x":23780.320507376346,"y":18145.827472651818},"targetPosition":{"x":24164.210377696632,"y":18032.396906137597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Left Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n }\n}","id":"e75c26a6-3516-4eeb-98c7-dcde0cd36ac9","savedPayload":{"position":{"x":24017.056589387055,"y":13341.960424578621},"targetPosition":{"x":24245.942113069115,"y":13527.414350339212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"460b5169-b17a-4c63-a789-44dd11736441","savedPayload":{"position":{"x":24245.942113069115,"y":13527.414350339212},"targetPosition":{"x":24513.415605771694,"y":13744.138820931614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Bottom","id":"bb8d8af7-3a7e-4bbd-b4a3-2f254e8a7288","savedPayload":{"position":{"x":24477.58630824296,"y":13401.726595908138},"targetPosition":{"x":24513.415605771694,"y":13744.138820931614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"ee6913fa-364d-4b80-bad5-35de44ca43fd"}}},{"type":"Polygon Vertex","name":"Begin Top","id":"a146b387-51f1-41c0-8528-99088c6f22f8","savedPayload":{"position":{"x":24730.18927722066,"y":13476.370713897168},"targetPosition":{"x":24513.415605771694,"y":13744.138820931614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Top","id":"38094e81-9ae7-449d-bc9c-125f756b9f04"}}}],"id":"08d916aa-6d2d-497b-8738-9b0966e3901e","savedPayload":{"position":{"x":23765.9992238542,"y":17990.616409282826},"targetPosition":{"x":24164.210377696632,"y":18032.396906137597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Right Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n }\n}","id":"2ecdf0cb-d87f-41cf-8317-d14776d5dda1","savedPayload":{"position":{"x":24137.74066940367,"y":13303.668566201772},"targetPosition":{"x":24345.485583669917,"y":13511.591075335185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"a7ba9639-8238-467d-b0be-b9b2e51311f0","savedPayload":{"position":{"x":24345.485583669917,"y":13511.591075335185},"targetPosition":{"x":24574.922955736663,"y":13741.248579688607},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"End Bottom","id":"354df2e6-8fd8-4beb-83ba-0bdcb67d613e","savedPayload":{"position":{"x":24574.9211661251,"y":13415.56583612577},"targetPosition":{"x":24574.922955736663,"y":13741.248579688607},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bottom","id":"18c413f8-8acc-4172-91a6-d90a0762118c"}}},{"type":"Polygon Vertex","name":"End Top","id":"6babbbfe-f55b-424e-90a3-a7e0bf17b8a1","savedPayload":{"position":{"x":24805.486057526436,"y":13510.644296819013},"targetPosition":{"x":24574.922955736663,"y":13741.248579688607},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Top","id":"185d7e04-fa68-401d-b666-9152e57c3378"}}}],"id":"70de0f73-5a2d-4a5a-a5f7-1863f192a14d","savedPayload":{"position":{"x":23812.295532315955,"y":17841.523107494806},"targetPosition":{"x":24164.210377696632,"y":18032.396906137597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[{"type":"Image","name":"New Image","config":"{ \n\"codeName\": \"trigger-stage\",\n\"size\": 25\n}","imagePosition":{"type":"Image Position","name":"Begin Bottom","config":"{ \n\"offsetX\": 0,\n \"offsetY\": 0\n }","id":"4a525c63-9096-4b33-980f-926bb7c16783","savedPayload":{"position":{"x":23785.517425616163,"y":17565.66729854801},"targetPosition":{"x":23912.169735536485,"y":17721.488854982836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"ee6913fa-364d-4b80-bad5-35de44ca43fd"}}},"id":"c5fd3ce1-b24e-455c-9557-b43a68d6e942","savedPayload":{"position":{"x":23912.169735536485,"y":17721.488854982836},"targetPosition":{"x":24164.210377696632,"y":18032.396906137597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Image","name":"New Image","config":"{ \n\"codeName\": \"trigger-stage\",\n\"size\": 25\n}","imagePosition":{"type":"Image Position","name":"End Bottom","config":"{ \n\"offsetX\": 0,\n \"offsetY\": 0\n }","id":"3433cd26-6fad-49b0-a789-6e12a9a8aad0","savedPayload":{"position":{"x":23991.707335767092,"y":17456.818597680136},"targetPosition":{"x":24048.922979998802,"y":17649.29875956626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"End Bottom","id":"18c413f8-8acc-4172-91a6-d90a0762118c"}}},"id":"9657d954-28e9-496d-a8e6-6f4c9974796d","savedPayload":{"position":{"x":24048.922979998802,"y":17649.29875956626},"targetPosition":{"x":24164.210377696632,"y":18032.396906137597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"texts":[],"id":"09119fa5-53de-4885-af93-32aacf6445bb","savedPayload":{"position":{"x":24164.210377696632,"y":18032.396906137597},"targetPosition":{"x":24618.97355199314,"y":18080.07393575662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Trigger Stage Object","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Status","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.status","id":"d6725ef3-05e1-4146-89e6-4e0bd9581a57","savedPayload":{"position":{"x":24142.141488558333,"y":17603.948025093236},"targetPosition":{"x":24266.701196638118,"y":17630.585317927158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"983b2057-a7ec-42a8-914a-4dc778bf71a2","savedPayload":{"position":{"x":24266.701196638118,"y":17630.585317927158},"targetPosition":{"x":24433.44088328152,"y":17662.33720700488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Exit Type","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.exitType","id":"4f0e461a-fc1c-4340-b9a0-9a59b068e8e9","savedPayload":{"position":{"x":24227.22124511846,"y":17437.466547787037},"targetPosition":{"x":24313.599691353065,"y":17529.79164760578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cbb7504c-0db6-47e8-9d75-d197d5d23bfe","savedPayload":{"position":{"x":24313.599691353065,"y":17529.79164760578},"targetPosition":{"x":24433.44088328152,"y":17662.33720700488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Begin Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.beginRate","id":"67721b90-f4f5-4ea0-ba40-cf5364f48ba6","savedPayload":{"position":{"x":24399.630197051298,"y":17357.3819697611},"targetPosition":{"x":24415.249062335773,"y":17482.727396056966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6408eb74-1535-45b9-be83-9c0841bdb019","savedPayload":{"position":{"x":24415.249062335773,"y":17482.727396056966},"targetPosition":{"x":24433.44088328152,"y":17662.33720700488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"End Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.endRate","id":"8bfbb311-c3cf-4c53-a42d-dc30c5336d17","savedPayload":{"position":{"x":24593.40475662828,"y":17401.744207783537},"targetPosition":{"x":24529.24547406063,"y":17513.078689135087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"4837a800-f016-4f60-836b-0fc7acc7d489","savedPayload":{"position":{"x":24529.24547406063,"y":17513.078689135087},"targetPosition":{"x":24433.44088328152,"y":17662.33720700488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c10b9b7b-04d8-460b-9dcc-2eaed24e17df","savedPayload":{"position":{"x":24433.44088328152,"y":17662.33720700488},"targetPosition":{"x":24618.97355199314,"y":18080.07393575662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6c6cddbc-cd78-445f-9498-8627ac99563d","savedPayload":{"position":{"x":24587.688913748076,"y":18057.575831546175},"targetPosition":{"x":24942.211964982052,"y":18315.02517647312},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Open Stage Objects","config":"{ \n \"codeName\": \"Strategy-Objects\", \n \"icon\": \"trend\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Begin Bottom","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.beginRate * 1.05","id":"c6d764f4-ffbe-4b62-8807-ff40e314f047","savedPayload":{"position":{"x":23754.168759963883,"y":18277.93435146567},"targetPosition":{"x":23875.924226643827,"y":18119.01897140589},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3f1ad539-6b21-4cbb-9623-daf242df45bc","savedPayload":{"position":{"x":23875.924226643827,"y":18119.01897140589},"targetPosition":{"x":24118.330856768156,"y":17801.07553114317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin Top","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.beginRate","id":"ee137d40-fd2c-4754-a18f-2d5c5c564c4c","savedPayload":{"position":{"x":23623.703285161606,"y":18141.538322202814},"targetPosition":{"x":23788.729973895257,"y":18028.122193249652},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c4b7fef3-79e2-45a6-96d6-4c9b6abf1514","savedPayload":{"position":{"x":23788.729973895257,"y":18028.122193249652},"targetPosition":{"x":24118.330856768156,"y":17801.07553114317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End Bottom","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.beginRate * 1.05","id":"c7026d19-1d0a-499c-8bd2-2aa847d0d17b","savedPayload":{"position":{"x":23542.24676435274,"y":17971.585519594522},"targetPosition":{"x":23734.273675326196,"y":17914.83920841476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"04304653-9361-433e-8e34-ca08c38ddb21","savedPayload":{"position":{"x":23734.273675326196,"y":17914.83920841476},"targetPosition":{"x":24118.330856768156,"y":17801.07553114317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End Top","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.endRate","id":"5c87a7ab-9f96-495f-9073-95fcc251ed95","savedPayload":{"position":{"x":23518.083039382753,"y":17782.299475112093},"targetPosition":{"x":23718.192752087623,"y":17787.588822714322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"bfe5be37-4f1d-4b6b-be9b-1ed24bf51056","savedPayload":{"position":{"x":23718.192752087623,"y":17787.588822714322},"targetPosition":{"x":24118.330856768156,"y":17801.07553114317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6977ed19-0d15-49df-adec-e0b6beec8296","savedPayload":{"position":{"x":24118.330856768156,"y":17801.07553114317},"targetPosition":{"x":24478.86230987924,"y":17628.784392450263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Closed Base","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.status === 'Closed'","id":"fbe73700-5914-4750-853f-f205da0e00d5","savedPayload":{"position":{"x":23829.512662519723,"y":17466.501172816945},"targetPosition":{"x":23675.55248658413,"y":17137.432160629713},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.25,\n \"lineWidth\": 10,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 10,\n \"lineDash\": [0,0]\n }\n}","id":"c845a7dc-a73e-4bc2-92f5-a9f9e76963e1","savedPayload":{"position":{"x":23148.055197191596,"y":17564.090182030504},"targetPosition":{"x":23388.87582752122,"y":17369.290545821023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"f2e9bf45-007e-434e-b977-07a4ba08bd7e","savedPayload":{"position":{"x":23388.87582752122,"y":17369.290545821023},"targetPosition":{"x":23675.55248658413,"y":17137.432160629713},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Bottom","id":"64879334-0c33-40de-b993-bbccaebc1ce5","savedPayload":{"position":{"x":23366.426325249937,"y":16936.87765768171},"targetPosition":{"x":23675.55248658413,"y":17137.432160629713},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"3f1ad539-6b21-4cbb-9623-daf242df45bc"}}},{"type":"Polygon Vertex","name":"End Bottom","id":"f3e5ca2b-9766-47fc-87b5-a8d400f073fb","savedPayload":{"position":{"x":23788.274626122147,"y":16778.836470480615},"targetPosition":{"x":23675.55248658413,"y":17137.432160629713},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bottom","id":"04304653-9361-433e-8e34-ca08c38ddb21"}}}],"id":"21db891e-4c47-4a5a-88a5-036297086138","savedPayload":{"position":{"x":24079.406096601542,"y":17649.665993859668},"targetPosition":{"x":24478.86230987924,"y":17628.784392450263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Open Base","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.status === 'Open'","id":"de754019-110e-46e7-8991-969f82d7027f","savedPayload":{"position":{"x":23756.621590364204,"y":17260.892652857692},"targetPosition":{"x":23710.25096066634,"y":16897.922228570224},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\",\n \"opacity\": 0.25,\n \"lineWidth\": 10,\n \"lineDash\": [3,3]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 10,\n \"lineDash\": [3,3]\n }\n}","id":"8f03ebb4-360c-430d-adef-13b574d53d80","savedPayload":{"position":{"x":23059.13589393478,"y":17090.412107672168},"targetPosition":{"x":23356.94171730639,"y":17002.229593653705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"e34a2ef9-0533-40a7-901f-a07b503ca847","savedPayload":{"position":{"x":23356.94171730639,"y":17002.229593653705},"targetPosition":{"x":23710.25096066634,"y":16897.922228570224},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Bottom","id":"eaf26e8a-cd01-450f-b939-af89c22a5746","savedPayload":{"position":{"x":23501.525427014352,"y":16594.213442636104},"targetPosition":{"x":23710.25096066634,"y":16897.922228570224},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"3f1ad539-6b21-4cbb-9623-daf242df45bc"}}},{"type":"Polygon Vertex","name":"End Bottom","id":"3f4a9c46-b76a-4e07-b012-e447bbbabd11","savedPayload":{"position":{"x":23951.592510903658,"y":16610.04995509977},"targetPosition":{"x":23710.25096066634,"y":16897.922228570224},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bottom","id":"04304653-9361-433e-8e34-ca08c38ddb21"}}}],"id":"2a3d0d93-13d9-4a9e-8d32-c0aa5d7ab1e3","savedPayload":{"position":{"x":24101.69934259661,"y":17495.2343839386},"targetPosition":{"x":24478.86230987924,"y":17628.784392450263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Left Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n }\n}","id":"86f26dcc-e45b-4313-8182-e5f715a7ea2b","savedPayload":{"position":{"x":24456.17795246025,"y":13535.976728597892},"targetPosition":{"x":24685.06347614231,"y":13721.430654358483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"67e63d56-1a05-414e-a99b-a3003e3483c5","savedPayload":{"position":{"x":24685.06347614231,"y":13721.430654358483},"targetPosition":{"x":24952.536968844888,"y":13938.155124950885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Bottom","id":"a4c6c33d-682a-418b-9dff-24a739838aeb","savedPayload":{"position":{"x":24916.707671316155,"y":13595.742899927409},"targetPosition":{"x":24952.536968844888,"y":13938.155124950885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"3f1ad539-6b21-4cbb-9623-daf242df45bc"}}},{"type":"Polygon Vertex","name":"Begin Top","id":"499e2a85-9ef8-4ca7-9f87-5a01fe2a5ca3","savedPayload":{"position":{"x":25169.310640293854,"y":13670.387017916439},"targetPosition":{"x":24952.536968844888,"y":13938.155124950885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Top","id":"c4b7fef3-79e2-45a6-96d6-4c9b6abf1514"}}}],"id":"616f49d0-daaa-4b82-be0d-56504b402616","savedPayload":{"position":{"x":24181.503670891194,"y":17361.02196231903},"targetPosition":{"x":24478.86230987924,"y":17628.784392450263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Right Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n }\n}","id":"feff4d08-a0de-4e2e-bafa-896613af0a14","savedPayload":{"position":{"x":24576.862032476864,"y":13497.684870221043},"targetPosition":{"x":24784.60694674311,"y":13705.607379354456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"f9c6d40c-a3fa-4f02-83c5-c2c39d478c42","savedPayload":{"position":{"x":24784.60694674311,"y":13705.607379354456},"targetPosition":{"x":25014.044318809858,"y":13935.264883707878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"End Bottom","id":"680845ab-7423-4022-820b-a2d05b1ae32d","savedPayload":{"position":{"x":25014.042529198294,"y":13609.582140145041},"targetPosition":{"x":25014.044318809858,"y":13935.264883707878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bottom","id":"04304653-9361-433e-8e34-ca08c38ddb21"}}},{"type":"Polygon Vertex","name":"End Top","id":"b5abef98-275f-4c3c-9704-bc17e83f4f9b","savedPayload":{"position":{"x":25244.60742059963,"y":13704.660600838284},"targetPosition":{"x":25014.044318809858,"y":13935.264883707878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Top","id":"bfe5be37-4f1d-4b6b-be9b-1ed24bf51056"}}}],"id":"0fab39ff-8caf-45f8-8650-33d7a65fa6e1","savedPayload":{"position":{"x":24306.58935161967,"y":17267.609238312958},"targetPosition":{"x":24478.86230987924,"y":17628.784392450263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[{"type":"Image","name":"New Image","config":"{ \n\"codeName\": \"open-stage\",\n\"size\": 25\n}","imagePosition":{"type":"Image Position","name":"Begin Bottom","config":"{ \n\"offsetX\": 0,\n \"offsetY\": 0\n }","id":"cbb69a21-082e-4364-a069-c33f92f0a07c","savedPayload":{"position":{"x":24447.192568344843,"y":17028.700034623955},"targetPosition":{"x":24457.941207889042,"y":17229.205957942057},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"3f1ad539-6b21-4cbb-9623-daf242df45bc"}}},"id":"472dcf1a-f045-4d96-8a97-f11011bc667a","savedPayload":{"position":{"x":24457.941207889042,"y":17229.205957942057},"targetPosition":{"x":24478.86230987924,"y":17628.784392450263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Image","name":"New Image","config":"{ \n\"codeName\": \"open-stage\",\n\"size\": 25\n}","imagePosition":{"type":"Image Position","name":"End Bottom","config":"{ \n\"offsetX\": 0,\n \"offsetY\": 0\n }","id":"f0a4c47e-a1e4-436f-a470-1adb11c80b7a","savedPayload":{"position":{"x":24677.376007960083,"y":17061.831375195663},"targetPosition":{"x":24610.814310842226,"y":17251.22232007174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"End Bottom","id":"04304653-9361-433e-8e34-ca08c38ddb21"}}},"id":"7c64940b-d01e-47e5-902c-ece8262864cc","savedPayload":{"position":{"x":24610.814310842226,"y":17251.22232007174},"targetPosition":{"x":24478.86230987924,"y":17628.784392450263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"texts":[],"id":"d953dd4d-5603-4042-b15b-1e293988be14","savedPayload":{"position":{"x":24478.86230987924,"y":17628.784392450263},"targetPosition":{"x":24818.865548584658,"y":17934.85020292712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Open Stage Object","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Status","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.status","id":"908c9dfe-fb97-457a-93e6-711df1e89436","savedPayload":{"position":{"x":24712.94461228994,"y":17268.857283834},"targetPosition":{"x":24797.616413206015,"y":17364.323215493157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"13d4c685-4b50-4ce8-aba9-1075b89e4d79","savedPayload":{"position":{"x":24797.616413206015,"y":17364.323215493157},"targetPosition":{"x":24914.14729586783,"y":17487.514142464897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Exit Type","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.exitType","id":"428c5592-0629-49e4-a929-91ed47cdd1d3","savedPayload":{"position":{"x":24879.84998310131,"y":17184.49599486259},"targetPosition":{"x":24894.81759722733,"y":17310.230012956483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"74b0dbe2-935f-40f0-bd3b-812b925aa887","savedPayload":{"position":{"x":24894.81759722733,"y":17310.230012956483},"targetPosition":{"x":24914.14729586783,"y":17487.514142464897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Begin Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.beginRate","id":"a862e1ab-2bd4-4627-8bc0-ca68102525bb","savedPayload":{"position":{"x":25066.018325494995,"y":17221.34053577333},"targetPosition":{"x":25004.7757025298,"y":17331.921504956874},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"83bfb9e8-3774-4740-ba7b-635fb0088b59","savedPayload":{"position":{"x":25004.7757025298,"y":17331.921504956874},"targetPosition":{"x":24914.14729586783,"y":17487.514142464897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"End Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.endRate","id":"be46adeb-8308-4ff1-9cc4-5939c3e040dd","savedPayload":{"position":{"x":25196.54749505843,"y":17371.430741823027},"targetPosition":{"x":25079.172988381953,"y":17423.446609478142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ccae74f6-9331-4c03-a44f-9176cb815ce2","savedPayload":{"position":{"x":25079.172988381953,"y":17423.446609478142},"targetPosition":{"x":24914.14729586783,"y":17487.514142464897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"be56e169-d089-4aea-a18a-c01cf16a3485","savedPayload":{"position":{"x":24914.14729586783,"y":17487.514142464897},"targetPosition":{"x":24818.865548584658,"y":17934.85020292712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8f7cad9f-153d-44e6-bdc2-812bc97e3929","savedPayload":{"position":{"x":24806.791503600904,"y":17898.425268662773},"targetPosition":{"x":24942.211964982052,"y":18315.02517647312},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Manage Stage Objects","config":"{ \n \"codeName\": \"Strategy-Objects\", \n \"icon\": \"trend\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Begin Bottom","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.beginRate * 0.95","id":"0c5c0deb-9d9f-4849-ac44-711f24c60962","savedPayload":{"position":{"x":23995.61297381892,"y":17597.579773541947},"targetPosition":{"x":24187.56988010251,"y":17540.6400028731},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"51020863-6f89-4c73-97fd-fbc7fc03348f","savedPayload":{"position":{"x":24187.56988010251,"y":17540.6400028731},"targetPosition":{"x":24570.757850042763,"y":17425.686459373293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin Top","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.beginRate","id":"a2fd6f13-b771-40c1-9c7a-55d1bb965ae8","savedPayload":{"position":{"x":23970.172800887925,"y":17410.81649489765},"targetPosition":{"x":24170.41624574587,"y":17415.86336875541},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"38ed128c-3053-45dd-a069-24e21b798603","savedPayload":{"position":{"x":24170.41624574587,"y":17415.86336875541},"targetPosition":{"x":24570.757850042763,"y":17425.686459373293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End Bottom","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.beginRate * 0.95","id":"26bade31-216a-498d-961d-f5f5aeb03075","savedPayload":{"position":{"x":24004.196000742184,"y":17225.465024618632},"targetPosition":{"x":24193.002972329494,"y":17292.243737627356},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d1bf6c44-0b02-4e8a-8877-20210246d2d0","savedPayload":{"position":{"x":24193.002972329494,"y":17292.243737627356},"targetPosition":{"x":24570.757850042763,"y":17425.686459373293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End Top","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.endRate","id":"d6044513-956e-4ba9-994b-cce2f42e9cb1","savedPayload":{"position":{"x":24095.83468421934,"y":17058.032316501794},"targetPosition":{"x":24254.62725198452,"y":17180.00421254225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f23b14cc-df91-40a6-b1b2-9876aa8690c9","savedPayload":{"position":{"x":24254.62725198452,"y":17180.00421254225},"targetPosition":{"x":24570.757850042763,"y":17425.686459373293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7bff6698-f9c9-4b44-a4ee-193ffd703e40","savedPayload":{"position":{"x":24570.757850042763,"y":17425.686459373293},"targetPosition":{"x":24967.73392317004,"y":17489.296902865837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Closed Base","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.status === 'Closed'","id":"4b05add4-cf40-4168-9cc8-7aa79d81e819","savedPayload":{"position":{"x":24421.763123001547,"y":16932.144616107194},"targetPosition":{"x":24490.49711032994,"y":16575.463548937794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.25,\n \"lineWidth\": 10,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 10,\n \"lineDash\": [0,0]\n }\n}","id":"a60fc3c0-051e-4063-99b9-b0be3fc7b3f0","savedPayload":{"position":{"x":23812.780619230267,"y":16610.348454258638},"targetPosition":{"x":24122.234079965558,"y":16594.413862145233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"81182574-694d-43b5-a55b-f380bef4e226","savedPayload":{"position":{"x":24122.234079965558,"y":16594.413862145233},"targetPosition":{"x":24490.49711032994,"y":16575.463548937794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Bottom","id":"270cce8d-9e8c-4b61-9f31-df178eb3dae1","savedPayload":{"position":{"x":24358.38939899577,"y":16231.458035432808},"targetPosition":{"x":24490.49711032994,"y":16575.463548937794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"51020863-6f89-4c73-97fd-fbc7fc03348f"}}},{"type":"Polygon Vertex","name":"End Bottom","id":"2b20e9f7-72c4-4a93-b278-c77295400bc9","savedPayload":{"position":{"x":24792.65666431669,"y":16351.563062282014},"targetPosition":{"x":24490.49711032994,"y":16575.463548937794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bottom","id":"d1bf6c44-0b02-4e8a-8877-20210246d2d0"}}}],"id":"43435aed-68cb-4a56-88c4-2574d91f5b32","savedPayload":{"position":{"x":24638.677723003882,"y":17241.808935262274},"targetPosition":{"x":24967.73392317004,"y":17489.296902865837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Open Base","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.status === 'Open'","id":"28c153db-44db-466c-83c7-a47c56152c4b","savedPayload":{"position":{"x":24610.42413949528,"y":17368.684628122508},"targetPosition":{"x":24741.402082011235,"y":17159.59562994399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 0.25,\n \"lineWidth\": 10,\n \"lineDash\": [3,3]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 10,\n \"lineDash\": [3,3]\n }\n}","id":"1ea48dcf-f651-4b4d-a218-d13fceaa4d33","savedPayload":{"position":{"x":24364.098579835358,"y":17024.962668422362},"targetPosition":{"x":24552.652807358096,"y":17092.105065052485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"8ad430dd-933a-4cf2-9f2d-b3189a57fae4","savedPayload":{"position":{"x":24552.652807358096,"y":17092.105065052485},"targetPosition":{"x":24741.402082011235,"y":17159.59562994399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Bottom","id":"e9ebc5af-2940-47d8-a067-26b70105b4e9","savedPayload":{"position":{"x":24746.189158804,"y":16958.592681203845},"targetPosition":{"x":24741.402082011235,"y":17159.59562994399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"51020863-6f89-4c73-97fd-fbc7fc03348f"}}},{"type":"Polygon Vertex","name":"End Bottom","id":"b5d31d62-415f-4437-a011-9d89d3dd4d61","savedPayload":{"position":{"x":24937.84999493606,"y":17116.63576135556},"targetPosition":{"x":24741.402082011235,"y":17159.59562994399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bottom","id":"d1bf6c44-0b02-4e8a-8877-20210246d2d0"}}}],"id":"904be022-f1e2-475e-9115-88224353cfa2","savedPayload":{"position":{"x":24741.402082011235,"y":17159.59562994399},"targetPosition":{"x":24967.73392317004,"y":17489.296902865837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Left Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n }\n}","id":"4f68d1c6-26e0-4c28-837d-fa6b137c48b6","savedPayload":{"position":{"x":24567.930872739886,"y":13885.76170133438},"targetPosition":{"x":24796.816396421946,"y":14071.21562709497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"2cf632ed-a72b-4a59-817f-32a1160217cd","savedPayload":{"position":{"x":24796.816396421946,"y":14071.21562709497},"targetPosition":{"x":25064.289889124524,"y":14287.940097687373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Bottom","id":"420cb596-82bf-40f0-9097-b6ac41d35b13","savedPayload":{"position":{"x":25028.46059159579,"y":13945.527872663897},"targetPosition":{"x":25064.289889124524,"y":14287.940097687373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"51020863-6f89-4c73-97fd-fbc7fc03348f"}}},{"type":"Polygon Vertex","name":"Begin Top","id":"1b42a439-3e00-444b-ab69-5f4e6af4f0f3","savedPayload":{"position":{"x":25281.06356057349,"y":14020.171990652927},"targetPosition":{"x":25064.289889124524,"y":14287.940097687373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Top","id":"38ed128c-3053-45dd-a069-24e21b798603"}}}],"id":"4c74d4d8-d0a4-4581-bee7-36485d7a91a5","savedPayload":{"position":{"x":24857.84722114082,"y":17095.424636529846},"targetPosition":{"x":24967.73392317004,"y":17489.296902865837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Right Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n }\n}","id":"d11795b4-f398-4b0d-b028-f0b9aadb3fa7","savedPayload":{"position":{"x":24688.6149527565,"y":13847.469842957531},"targetPosition":{"x":24896.359867022747,"y":14055.392352090945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"1a75e942-11f7-4b82-8dce-8383521d48e4","savedPayload":{"position":{"x":24896.359867022747,"y":14055.392352090945},"targetPosition":{"x":25125.797239089494,"y":14285.049856444366},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"End Bottom","id":"9a6a4625-a7b7-47f6-8460-47f5899d7431","savedPayload":{"position":{"x":25125.79544947793,"y":13959.36711288153},"targetPosition":{"x":25125.797239089494,"y":14285.049856444366},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bottom","id":"d1bf6c44-0b02-4e8a-8877-20210246d2d0"}}},{"type":"Polygon Vertex","name":"End Top","id":"2ed6c5e7-fc8c-45e6-acb1-fdcb81fdee7b","savedPayload":{"position":{"x":25356.360340879266,"y":14054.445573574772},"targetPosition":{"x":25125.797239089494,"y":14285.049856444366},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Top","id":"f23b14cc-df91-40a6-b1b2-9876aa8690c9"}}}],"id":"9fc6d2c4-a67b-42e8-841b-7523f7ab4962","savedPayload":{"position":{"x":25065.35434285554,"y":17090.773714853665},"targetPosition":{"x":24967.73392317004,"y":17489.296902865837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[{"type":"Image","name":"New Image","config":"{ \n\"codeName\": \"manage-stage\",\n\"size\": 25\n}","imagePosition":{"type":"Image Position","name":"Begin Bottom","config":"{ \n\"offsetX\": 0,\n \"offsetY\": 0\n }","id":"d806311b-133d-423b-9026-7a418da2b5e3","savedPayload":{"position":{"x":25294.869520532997,"y":16985.1670166947},"targetPosition":{"x":25185.76053830832,"y":17153.776879011035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"51020863-6f89-4c73-97fd-fbc7fc03348f"}}},"id":"61fd08ac-8bd8-4539-a116-22c4469a2b2e","savedPayload":{"position":{"x":25185.76053830832,"y":17153.776879011035},"targetPosition":{"x":24967.73392317004,"y":17489.296902865837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Image","name":"New Image","config":"{ \n\"codeName\": \"manage-stage\",\n\"size\": 25\n}","imagePosition":{"type":"Image Position","name":"End Bottom","config":"{ \n\"offsetX\": 0,\n \"offsetY\": 0\n }","id":"608a821f-bdff-4ec0-abd9-251c7c085a34","savedPayload":{"position":{"x":25461.85101914124,"y":17147.537169013773},"targetPosition":{"x":25296.554108859025,"y":17261.511759905385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"End Bottom","id":"d1bf6c44-0b02-4e8a-8877-20210246d2d0"}}},"id":"4a257e17-128c-4c00-9e2b-a76049e30657","savedPayload":{"position":{"x":25296.554108859025,"y":17261.511759905385},"targetPosition":{"x":24967.73392317004,"y":17489.296902865837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"texts":[],"id":"dd3a2274-3986-4c89-bab9-265f6fa6b1d1","savedPayload":{"position":{"x":24967.73392317004,"y":17489.296902865837},"targetPosition":{"x":25062.781273974313,"y":17936.99613464608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Manage Stage Object","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Status","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.status","id":"d386f88a-6d4d-4606-992c-e19df72e7f29","savedPayload":{"position":{"x":25368.99844787749,"y":17336.127094477473},"targetPosition":{"x":25380.997958157037,"y":17463.060147419073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"434bbab3-b2a1-47b5-8c5a-55ac7a2a2674","savedPayload":{"position":{"x":25380.997958157037,"y":17463.060147419073},"targetPosition":{"x":25402.930917348676,"y":17631.17974777773},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Exit Type","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.exitType","id":"5123b469-2376-4f03-a995-82df2842cde3","savedPayload":{"position":{"x":25553.349343509766,"y":17365.878163328063},"targetPosition":{"x":25491.459108529652,"y":17476.386215563372},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7b7fa67c-cdfd-41c5-83a2-3362fe2cef3c","savedPayload":{"position":{"x":25491.459108529652,"y":17476.386215563372},"targetPosition":{"x":25402.930917348676,"y":17631.17974777773},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Begin Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.beginRate","id":"e172032f-6c23-4267-b1a5-80c4fa2f7571","savedPayload":{"position":{"x":25682.274546227418,"y":17505.2153018006},"targetPosition":{"x":25567.691138422226,"y":17558.604219809975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c3473f91-b229-43d5-a1d4-79d535b5ac64","savedPayload":{"position":{"x":25567.691138422226,"y":17558.604219809975},"targetPosition":{"x":25402.930917348676,"y":17631.17974777773},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"End Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.endRate","id":"2df876ce-61ff-4a24-a34a-03126c0e02a6","savedPayload":{"position":{"x":25699.775419998332,"y":17703.03138544741},"targetPosition":{"x":25574.123444674664,"y":17676.41891499346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"16af0d06-b721-48e5-8ed2-7072f25e8fc3","savedPayload":{"position":{"x":25574.123444674664,"y":17676.41891499346},"targetPosition":{"x":25402.930917348676,"y":17631.17974777773},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3db5604f-cacf-4c87-b1ea-5aa364bf9f48","savedPayload":{"position":{"x":25402.930917348676,"y":17631.17974777773},"targetPosition":{"x":25062.781273974313,"y":17936.99613464608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"768a5cc5-72db-4218-9a8b-706c51186b3d","savedPayload":{"position":{"x":25077.14850997705,"y":17898.410158313432},"targetPosition":{"x":24942.211964982052,"y":18315.02517647312},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Close Stage Objects","config":"{ \n \"codeName\": \"Strategy-Objects\", \n \"icon\": \"trend\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Begin Bottom","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.beginRate * 1.05","id":"bb2edfb7-4b27-4023-937f-87edcefa4b36","savedPayload":{"position":{"x":24609.981796664386,"y":17173.793306038704},"targetPosition":{"x":24798.878932990257,"y":17240.285894025405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"064c3de1-dd16-4010-9267-f588f070aa32","savedPayload":{"position":{"x":24798.878932990257,"y":17240.285894025405},"targetPosition":{"x":25176.227806190716,"y":17372.511667638948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin Top","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.beginRate","id":"52da9824-848c-4ef6-ac1d-4c1a52baf9c2","savedPayload":{"position":{"x":24699.43924790597,"y":17007.576275133044},"targetPosition":{"x":24858.4234484772,"y":17129.308396751825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ce4b9d0e-3e46-4cf2-9ea6-a108f962ba9b","savedPayload":{"position":{"x":24858.4234484772,"y":17129.308396751825},"targetPosition":{"x":25176.227806190716,"y":17372.511667638948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End Bottom","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.beginRate * 1.05","id":"ec40fffd-d0b2-410e-b8a0-346fd3975c13","savedPayload":{"position":{"x":24835.932571856185,"y":16877.615490164808},"targetPosition":{"x":24949.351578285597,"y":17042.553220788395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"9ad19ea8-8df3-4601-bfb9-0e858dad9140","savedPayload":{"position":{"x":24949.351578285597,"y":17042.553220788395},"targetPosition":{"x":25176.227806190716,"y":17372.511667638948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End Top","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.endRate","id":"d9ac4f25-f9aa-4de6-8f05-b43a159248be","savedPayload":{"position":{"x":25008.747837940853,"y":16796.026877474058},"targetPosition":{"x":25065.39419093945,"y":16987.91674892192},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"92930f08-af27-4807-a1eb-98fb82c58fb2","savedPayload":{"position":{"x":25065.39419093945,"y":16987.91674892192},"targetPosition":{"x":25176.227806190716,"y":17372.511667638948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ebdc8337-0d63-48c8-940e-83f14c7de8f3","savedPayload":{"position":{"x":25176.227806190716,"y":17372.511667638948},"targetPosition":{"x":25451.489223080098,"y":17662.29899610047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Closed Base","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.status === 'Closed'","id":"17f11af6-9a1b-4df5-93ad-52acea4e9ccb","savedPayload":{"position":{"x":25214.00714764315,"y":16848.37412295763},"targetPosition":{"x":25479.583762565733,"y":16600.096094773846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\",\n \"opacity\": 0.25,\n \"lineWidth\": 10,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 10,\n \"lineDash\": [0,0]\n }\n}","id":"272091f5-637f-4389-ae00-8806170ec5fe","savedPayload":{"position":{"x":24910.94351595144,"y":16230.678454146599},"targetPosition":{"x":25170.220706971144,"y":16399.093056012447},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"92bb2d8c-cbd9-4a46-ba6e-10ec3c04afbe","savedPayload":{"position":{"x":25170.220706971144,"y":16399.093056012447},"targetPosition":{"x":25479.583762565733,"y":16600.096094773846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Bottom","id":"67a714b2-66d1-4c20-afc6-4985557c8924","savedPayload":{"position":{"x":25574.620486288033,"y":16244.36669967966},"targetPosition":{"x":25479.583762565733,"y":16600.096094773846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"064c3de1-dd16-4010-9267-f588f070aa32"}}},{"type":"Polygon Vertex","name":"End Bottom","id":"9e1c1d76-9d74-4812-b79a-176890c35d64","savedPayload":{"position":{"x":25854.896588752737,"y":16596.300635787647},"targetPosition":{"x":25479.583762565733,"y":16600.096094773846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bottom","id":"9ad19ea8-8df3-4601-bfb9-0e858dad9140"}}}],"id":"9463d512-21f5-48c1-8cd6-b14747b338cf","savedPayload":{"position":{"x":25308.20974161536,"y":17288.674570457908},"targetPosition":{"x":25451.489223080098,"y":17662.29899610047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Open Base","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.status === 'Open'","id":"cb0d72ee-ae97-4482-94d0-6be4fa885ca3","savedPayload":{"position":{"x":25386.193526422514,"y":16714.45717864927},"targetPosition":{"x":25718.084202970855,"y":16558.939762472644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\",\n \"opacity\": 0.25,\n \"lineWidth\": 10,\n \"lineDash\": [3,3]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 10,\n \"lineDash\": [3,3]\n }\n}","id":"4c30f5b9-b06f-4ed0-b8b8-6672347063e0","savedPayload":{"position":{"x":25333.843242628373,"y":15999.323623054206},"targetPosition":{"x":25509.43862266737,"y":16255.223247439988},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"90ab3a19-e778-46ce-8aad-05799a66cc36","savedPayload":{"position":{"x":25509.43862266737,"y":16255.223247439988},"targetPosition":{"x":25718.084202970855,"y":16558.939762472644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Bottom","id":"f0ed2d50-c494-4fae-863a-752ecad0fd1d","savedPayload":{"position":{"x":25941.98001848433,"y":16266.705827831736},"targetPosition":{"x":25718.084202970855,"y":16558.939762472644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"064c3de1-dd16-4010-9267-f588f070aa32"}}},{"type":"Polygon Vertex","name":"End Bottom","id":"68c67883-1f21-4a00-9537-a794638a4d07","savedPayload":{"position":{"x":26066.468067215366,"y":16699.211162198673},"targetPosition":{"x":25718.084202970855,"y":16558.939762472644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bottom","id":"9ad19ea8-8df3-4601-bfb9-0e858dad9140"}}}],"id":"c3249cad-9f26-4ff2-ab0d-968c66bb7f2d","savedPayload":{"position":{"x":25461.963621188937,"y":17262.057680973976},"targetPosition":{"x":25451.489223080098,"y":17662.29899610047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Left Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n }\n}","id":"15a2eeab-c29f-45e9-b407-30f99dfb2b3a","savedPayload":{"position":{"x":25712.113038509237,"y":15977.769488781074},"targetPosition":{"x":25823.154730275273,"y":16267.724869987025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"ef752c53-dc77-4be4-80ec-f24b3ae0bf6d","savedPayload":{"position":{"x":25823.154730275273,"y":16267.724869987025},"targetPosition":{"x":25954.991874823794,"y":16611.832998990303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin Bottom","id":"b6002088-f077-44c3-bdac-1e310ef78e32","savedPayload":{"position":{"x":26104.736003293696,"y":16275.224868604024},"targetPosition":{"x":25954.991874823794,"y":16611.832998990303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"064c3de1-dd16-4010-9267-f588f070aa32"}}},{"type":"Polygon Vertex","name":"Begin Top","id":"210bad6f-d160-4d55-80f4-5a441a79cea1","savedPayload":{"position":{"x":26298.996323669162,"y":16479.665189475432},"targetPosition":{"x":25954.991874823794,"y":16611.832998990303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin Top","id":"ce4b9d0e-3e46-4cf2-9ea6-a108f962ba9b"}}}],"id":"dbd9d421-d90c-4ab8-a26b-c2254d7abec1","savedPayload":{"position":{"x":25614.27850607035,"y":17296.47688435172},"targetPosition":{"x":25451.489223080098,"y":17662.29899610047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Right Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREY\",\n \"opacity\": 0.25,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\",\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [1,1]\n }\n}","id":"50698494-7f90-4d92-a87e-452567bce9b3","savedPayload":{"position":{"x":26170.53202427431,"y":16072.702860737658},"targetPosition":{"x":26162.52896593925,"y":16383.027662005394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"58d29c18-d22b-4294-97a0-3a9fae711b6c","savedPayload":{"position":{"x":26162.52896593925,"y":16383.027662005394},"targetPosition":{"x":26152.993297019664,"y":16751.563980824445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"End Bottom","id":"4617c7b4-acc4-4122-a714-bc2b38b4566f","savedPayload":{"position":{"x":26420.030997271555,"y":16497.96932180807},"targetPosition":{"x":26152.993297019664,"y":16751.563980824445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Bottom","id":"9ad19ea8-8df3-4601-bfb9-0e858dad9140"}}},{"type":"Polygon Vertex","name":"End Top","id":"d0589ad1-0f35-4e0f-ab38-8de7a56f04b6","savedPayload":{"position":{"x":26520.97091356275,"y":16760.848756377032},"targetPosition":{"x":26152.993297019664,"y":16751.563980824445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End Top","id":"92930f08-af27-4807-a1eb-98fb82c58fb2"}}}],"id":"a5e40c24-183d-4896-97b0-f9f0f104c240","savedPayload":{"position":{"x":25741.781677324325,"y":17386.56995393502},"targetPosition":{"x":25451.489223080098,"y":17662.29899610047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[{"type":"Image","name":"New Image","config":"{ \n\"codeName\": \"close-stage\",\n\"size\": 25\n}","imagePosition":{"type":"Image Position","name":"Begin Bottom","config":"{ \n\"offsetX\": 0,\n \"offsetY\": 0\n }","id":"8c6238d9-007c-48b6-9d95-df4a6aa5c14b","savedPayload":{"position":{"x":26012.399601957903,"y":17446.4431610194},"targetPosition":{"x":25825.08439083658,"y":17518.642216019605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Begin Bottom","id":"064c3de1-dd16-4010-9267-f588f070aa32"}}},"id":"21f90d1d-d464-4bf4-9435-87afdc4daf19","savedPayload":{"position":{"x":25825.08439083658,"y":17518.642216019605},"targetPosition":{"x":25451.489223080098,"y":17662.29899610047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Image","name":"New Image","config":"{ \n\"codeName\": \"close-stage\",\n\"size\": 25\n}","imagePosition":{"type":"Image Position","name":"End Bottom","config":"{ \n\"offsetX\": 0,\n \"offsetY\": 0\n }","id":"cae4a4f0-e26b-40ab-8a29-04d1dfde4633","savedPayload":{"position":{"x":26052.20198605366,"y":17675.729129769694},"targetPosition":{"x":25851.465235867778,"y":17670.891224989064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"End Bottom","id":"9ad19ea8-8df3-4601-bfb9-0e858dad9140"}}},"id":"63d17b18-3750-42c2-b785-9bfb4c2f7bfc","savedPayload":{"position":{"x":25851.465235867778,"y":17670.891224989064},"targetPosition":{"x":25451.489223080098,"y":17662.29899610047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"texts":[],"id":"2236ae6a-63a0-4031-a6aa-95fd8dbd1e6d","savedPayload":{"position":{"x":25451.489223080098,"y":17662.29899610047},"targetPosition":{"x":25265.650016852967,"y":18080.142869128475},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Close Stage Object","config":"{ \n\"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Status","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.status","id":"7ff88a72-886f-4417-980f-29ec65270b3b","savedPayload":{"position":{"x":25866.351018277473,"y":17773.697769214185},"targetPosition":{"x":25801.881018401167,"y":17883.70407874333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"30d603e4-521d-464e-9f80-a22f99d43bc4","savedPayload":{"position":{"x":25801.881018401167,"y":17883.70407874333},"targetPosition":{"x":25720.430132212674,"y":18032.693400433986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Exit Type","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.exitType","id":"b1f57c8d-346f-4c8f-8bf1-4d0e9f9cec6f","savedPayload":{"position":{"x":25998.17850610818,"y":17906.20460691568},"targetPosition":{"x":25883.29291097318,"y":17959.507066043225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"1ccd3f25-5841-4563-98ef-f97f82b6da66","savedPayload":{"position":{"x":25883.29291097318,"y":17959.507066043225},"targetPosition":{"x":25720.430132212674,"y":18032.693400433986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Begin Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.beginRate","id":"6e1dc213-47ad-407a-b993-c9ed20d0db14","savedPayload":{"position":{"x":26020.882942709355,"y":18094.651578501012},"targetPosition":{"x":25896.695033874275,"y":18070.769375650347},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d6912158-6634-4cce-82e1-be1f3f8c0211","savedPayload":{"position":{"x":25896.695033874275,"y":18070.769375650347},"targetPosition":{"x":25720.430132212674,"y":18032.693400433986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"End Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.endRate","id":"0ecdc927-ff01-4f77-87ff-47be6ad314d6","savedPayload":{"position":{"x":25918.687413960644,"y":18265.106323810534},"targetPosition":{"x":25832.678259869346,"y":18169.725107442817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f63619e4-c005-4a60-883e-ea24a36c04e6","savedPayload":{"position":{"x":25832.678259869346,"y":18169.725107442817},"targetPosition":{"x":25720.430132212674,"y":18032.693400433986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"069885e7-351f-45dc-8423-113db65b9592","savedPayload":{"position":{"x":25720.430132212674,"y":18032.693400433986},"targetPosition":{"x":25265.650016852967,"y":18080.142869128475},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"de84947f-ec29-4125-a2b3-a3da595d1653","savedPayload":{"position":{"x":25296.45345596248,"y":18057.63918933579},"targetPosition":{"x":24942.211964982052,"y":18315.02517647312},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"23f6d360-b2ec-462d-ba57-9226d0fc0c5b","savedPayload":{"position":{"x":24941.22143702612,"y":17965.099829678053},"targetPosition":{"x":24941.217404066585,"y":18714.893045797242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"Exchange Orders","config":"{ \n \"codeName\": \"Exchange-Orders\"\n}","modules":[{"type":"Plotter Module","name":"Market Buy Orders","config":"{ \n \"codeName\": \"Market-Buy-Orders\", \n \"icon\": \"trend\",\n \"useRateAtMousePosition\": true\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.rate","id":"bc2c1fb7-af45-4444-b883-7523eb94bcc0","savedPayload":{"position":{"x":24638.46142648067,"y":18264.958186421525},"targetPosition":{"x":24580.13793702735,"y":17895.26029393947},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5d2c59a6-72ce-4f42-8d14-62e4a7d11d73","savedPayload":{"position":{"x":24580.13793702735,"y":17895.26029393947},"targetPosition":{"x":24521.952630055966,"y":17525.79759162451},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.rate","id":"76027de9-5f42-494b-be42-7b24e7663fb4","savedPayload":{"position":{"x":23939.44133341192,"y":17996.674170168684},"targetPosition":{"x":24230.6938760366,"y":17761.194255008635},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0e224c82-a863-4953-8e38-42ff372df6cd","savedPayload":{"position":{"x":24230.6938760366,"y":17761.194255008635},"targetPosition":{"x":24521.952630055966,"y":17525.79759162451},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c8f9bc68-22a9-47a7-8b54-f8e1ee93760a","savedPayload":{"position":{"x":24521.952630055966,"y":17525.79759162451},"targetPosition":{"x":24656.19931764129,"y":17176.48749619334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"New Polygon","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 1,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 1,\n \"lineWidth\": 1.5,\n \"lineDash\": [0,0]\n }\n}","id":"a307230c-ee14-4b3a-8430-5993da0e1b7e","savedPayload":{"position":{"x":23621.74965551195,"y":17346.343686513035},"targetPosition":{"x":23963.973114103304,"y":17194.236112540522},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"2c437c94-96f4-4b5b-9241-45636f73356e","savedPayload":{"position":{"x":23963.973114103304,"y":17194.236112540522},"targetPosition":{"x":24306.27286015115,"y":17042.12509637507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin","id":"7d4ca25c-5454-4d6a-8ead-a4ecee6709b8","savedPayload":{"position":{"x":23956.475341559923,"y":16907.823057672944},"targetPosition":{"x":24306.27286015115,"y":17042.12509637507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin","id":"5d2c59a6-72ce-4f42-8d14-62e4a7d11d73"}}},{"type":"Polygon Vertex","name":"End","id":"cefe7159-5b2f-4036-9aad-1d72358cbf81","savedPayload":{"position":{"x":24153.912412618698,"y":16699.802518316345},"targetPosition":{"x":24306.27286015115,"y":17042.12509637507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End","id":"0e224c82-a863-4953-8e38-42ff372df6cd"}}}],"id":"6217d021-ea5b-4b20-b093-758a2d2fb5d4","savedPayload":{"position":{"x":24306.27286015115,"y":17042.12509637507},"targetPosition":{"x":24656.19931764129,"y":17176.48749619334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[{"type":"Image","name":"New Image","config":"{ \n\"codeName\": \"bullet-market-buy-order\", \n\"size\": 20\n}","imagePosition":{"type":"Image Position","name":"Begin","config":"{ \n\"offsetX\": 0,\n \"offsetY\": 0\n }","id":"48799848-30ad-4ef3-914e-45c3299168da","savedPayload":{"position":{"x":24847.82126157343,"y":16647.73908178241},"targetPosition":{"x":24780.87855599763,"y":16823.005405574546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Begin","id":"5d2c59a6-72ce-4f42-8d14-62e4a7d11d73"}}},"id":"c988d815-94cf-48e3-9447-2e81b97271b2","savedPayload":{"position":{"x":24780.87855599763,"y":16823.005405574546},"targetPosition":{"x":24656.19931764129,"y":17176.48749619334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"texts":[],"id":"486a0f30-691f-4c40-a18e-a1b0ac336ac1","savedPayload":{"position":{"x":24656.19931764129,"y":17176.48749619334},"targetPosition":{"x":25354.23363845282,"y":17444.45884346508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Market Buy Order","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Serial Number","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.serialNumber","id":"6c10223a-aec1-485d-a731-2122a2485359","savedPayload":{"position":{"x":23868.399092957447,"y":17170.9616351311},"targetPosition":{"x":24208.183627462626,"y":17033.749621410225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6edbd7e7-a5ef-4ec0-ae1d-41c6a7cec5e1","savedPayload":{"position":{"x":24208.183627462626,"y":17033.749621410225},"targetPosition":{"x":24547.967815566248,"y":16896.297154647396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.rate","id":"706b3e18-b354-4b2d-ad94-8a1e06aa3d6a","savedPayload":{"position":{"x":23815.295253307635,"y":16921.740187466366},"targetPosition":{"x":24181.591181145603,"y":16909.06589895518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"312fc9a8-af5d-428b-b1b9-9207bf4def4d","savedPayload":{"position":{"x":24181.591181145603,"y":16909.06589895518},"targetPosition":{"x":24547.967815566248,"y":16896.297154647396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Status","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.status","id":"6823da7b-b937-44ec-a748-6544810c5e4d","savedPayload":{"position":{"x":23850.686042368026,"y":16669.917379737602},"targetPosition":{"x":24199.281240664917,"y":16783.12074227086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bdc187a2-01a2-4d5e-a3b6-e03a3aa83337","savedPayload":{"position":{"x":24199.281240664917,"y":16783.12074227086},"targetPosition":{"x":24547.967815566248,"y":16896.297154647396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Exit Type","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.exitType","id":"df586a2e-5e92-4719-b43a-b66e92d54cfb","savedPayload":{"position":{"x":23970.21643519404,"y":16445.037650075534},"targetPosition":{"x":24259.052371519163,"y":16670.65746647881},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8c832572-6989-49fe-af66-337113d833bd","savedPayload":{"position":{"x":24259.052371519163,"y":16670.65746647881},"targetPosition":{"x":24547.967815566248,"y":16896.297154647396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Order Name","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.orderName","id":"ccaa9e2b-3d64-40fc-85e3-db8852ffe835","savedPayload":{"position":{"x":24159.45061837541,"y":16274.622167143008},"targetPosition":{"x":24353.685211466985,"y":16585.437309734738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"008d9794-b703-4e95-90a5-4be6541257b5","savedPayload":{"position":{"x":24353.685211466985,"y":16585.437309734738},"targetPosition":{"x":24547.967815566248,"y":16896.297154647396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Algorithm Name","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.algorithmName","id":"cb7fe638-c8c1-4017-91c5-332f2a42d411","savedPayload":{"position":{"x":24395.548221643516,"y":16179.227629767918},"targetPosition":{"x":24471.76049520407,"y":16537.741599180794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"233fcc31-94fb-4a83-8010-a47b06aa0175","savedPayload":{"position":{"x":24471.76049520407,"y":16537.741599180794},"targetPosition":{"x":24547.967815566248,"y":16896.297154647396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Situation Name","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.situationName","id":"b205501c-00a5-42a5-bfb1-e1d766474e9b","savedPayload":{"position":{"x":24649.593633954613,"y":16170.362364262595},"targetPosition":{"x":24598.833400129206,"y":16533.334709673683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ef885584-c0ad-42ab-af01-1507c16da1c1","savedPayload":{"position":{"x":24598.833400129206,"y":16533.334709673683},"targetPosition":{"x":24547.967815566248,"y":16896.297154647396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Periods","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.periods","id":"43a37c5e-0519-4920-9c61-1c8e7ee35308","savedPayload":{"position":{"x":24861.758065811726,"y":16252.321756420351},"targetPosition":{"x":24720.016025858626,"y":16572.824580531535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"64741d06-09d2-497f-ab50-f1a0d1eba4bd","savedPayload":{"position":{"x":24720.016025858626,"y":16572.824580531535},"targetPosition":{"x":24547.967815566248,"y":16896.297154647396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"12929733-5964-4948-877b-b1edda37162a","savedPayload":{"position":{"x":24902.45015840262,"y":16870.318231147907},"targetPosition":{"x":25354.23363845282,"y":17444.45884346508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Market Buy Order Stats","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Percentage Filled","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.percentageFilled","id":"14e3004b-320d-4791-aa6e-3f0d872ec7ec","savedPayload":{"position":{"x":24624.09570162402,"y":16439.966226993307},"targetPosition":{"x":24766.75621966212,"y":16555.3445127771},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0d50ad49-9842-4e0e-86fd-12c026ada170","savedPayload":{"position":{"x":24766.75621966212,"y":16555.3445127771},"targetPosition":{"x":24960.703993567215,"y":16712.091785698405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Actual Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.actualRate","id":"8a56fba9-5ffc-4adf-8d6e-021fd4e5a43c","savedPayload":{"position":{"x":24905.031477799002,"y":16292.004712325104},"targetPosition":{"x":24934.43089547231,"y":16464.4358144584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d6c7e18a-79da-4aed-8fae-298e604e05d0","savedPayload":{"position":{"x":24934.43089547231,"y":16464.4358144584},"targetPosition":{"x":24960.703993567215,"y":16712.091785698405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Days","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.days","id":"d7dd0006-3d9f-49c8-984a-07b9d5f0dc48","savedPayload":{"position":{"x":25211.165582800037,"y":16377.122256855275},"targetPosition":{"x":25096.252681451027,"y":16520.09968608916},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d411dc1c-83d7-4d2d-948e-c90f9e29121b","savedPayload":{"position":{"x":25096.252681451027,"y":16520.09968608916},"targetPosition":{"x":24960.703993567215,"y":16712.091785698405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"81a88e44-189c-44ec-9607-cb1e4de8baa1","savedPayload":{"position":{"x":25237.309576295556,"y":16705.77950951327},"targetPosition":{"x":25354.23363845282,"y":17444.45884346508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Market Buy Order Base Asset","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Size","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeInBaseAsset","id":"d304ece3-18dc-4e5a-bc0e-1249258b184e","savedPayload":{"position":{"x":25317.43043980048,"y":16061.774482430787},"targetPosition":{"x":25469.6619486441,"y":16404.01639309925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8313aeb6-6167-45ca-a3ca-4dc22b7fa33a","savedPayload":{"position":{"x":25469.6619486441,"y":16404.01639309925},"targetPosition":{"x":25621.96396165302,"y":16746.306680233338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Size Filled","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeFilledInBaseAsset","id":"461ae1a5-1d20-451a-8852-13d56b5268fb","savedPayload":{"position":{"x":25890.09537704848,"y":16046.626091607817},"targetPosition":{"x":25755.999856907125,"y":16396.44556435957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"83d46c3b-27cb-4aa9-a358-2e156aeece00","savedPayload":{"position":{"x":25755.999856907125,"y":16396.44556435957},"targetPosition":{"x":25621.96396165302,"y":16746.306680233338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Fees Paid","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.feesPaidInBaseAsset","id":"88cf9464-968d-4222-ac52-b8e4dc151e69","savedPayload":{"position":{"x":26258.835849581195,"y":16408.995005113888},"targetPosition":{"x":25916.58621085853,"y":16561.46280870457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"38227d86-ab39-4e74-8eb0-0cd44edf49eb","savedPayload":{"position":{"x":25916.58621085853,"y":16561.46280870457},"targetPosition":{"x":25621.96396165302,"y":16746.306680233338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"608a9068-7324-4f4c-8fdd-d9d8e42e26c6","savedPayload":{"position":{"x":25621.96396165302,"y":16746.306680233338},"targetPosition":{"x":25354.23363845282,"y":17444.45884346508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Market Buy Order Quoted Asset","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Size","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeInQuotedAsset","id":"1b8818af-996e-4d6b-8a97-f4606714ee91","savedPayload":{"position":{"x":26061.25550494769,"y":16261.236901400414},"targetPosition":{"x":26022.068381438712,"y":16633.869256739785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"56ca8980-8ba9-4e01-a040-cdf19c9ae7f5","savedPayload":{"position":{"x":26022.068381438712,"y":16633.869256739785},"targetPosition":{"x":25935.39679985265,"y":16973.99146213661},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Size Filled","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeFilledInQuotedAsset","id":"82c2ea84-a616-47e6-920b-1e0804dd20ed","savedPayload":{"position":{"x":26517.853399916883,"y":16502.67094846557},"targetPosition":{"x":26226.65658948197,"y":16738.351739174414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"913a187b-5504-4b85-a382-8f74726a54f4","savedPayload":{"position":{"x":26226.65658948197,"y":16738.351739174414},"targetPosition":{"x":25935.39679985265,"y":16973.99146213661},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Fees Paid","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.feesPaidInQuotedAsset","id":"a337b247-237b-41f8-93a3-3f5a964ae63a","savedPayload":{"position":{"x":26680.575242638966,"y":17051.96549469142},"targetPosition":{"x":26308.01508438468,"y":17013.004788213097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"040ea111-a7a0-453c-9c65-d731c846324f","savedPayload":{"position":{"x":26308.01508438468,"y":17013.004788213097},"targetPosition":{"x":25935.39679985265,"y":16973.99146213661},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1a55af5e-821d-4421-80d2-2c543d25ea1a","savedPayload":{"position":{"x":25935.39679985265,"y":16973.99146213661},"targetPosition":{"x":25354.23363845282,"y":17444.45884346508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e00fe7d4-894d-4483-a73a-3cd77943ea80","savedPayload":{"position":{"x":25354.13610694824,"y":17444.269222692743},"targetPosition":{"x":25471.345029942826,"y":18184.8045462756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Market Sell Orders","config":"{ \n \"codeName\": \"Market-Sell-Orders\", \n \"icon\": \"trend\",\n \"useRateAtMousePosition\": true\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.rate","id":"df7ab0aa-4814-411b-a2f6-9594f67c7b41","savedPayload":{"position":{"x":24749.91866637749,"y":17759.93755215404},"targetPosition":{"x":24920.185642084733,"y":17426.716960890706},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"788a8d38-a7f8-4e9f-aa91-0d73d83967ba","savedPayload":{"position":{"x":24920.185642084733,"y":17426.716960890706},"targetPosition":{"x":25090.33299259757,"y":17093.31654697176},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.rate","id":"464d3c72-0056-48b0-b044-9131f136797f","savedPayload":{"position":{"x":24342.094181247518,"y":17131.938918227344},"targetPosition":{"x":24716.19439706348,"y":17112.594913500518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5c7415c1-6a1d-4838-8587-6883c11724b4","savedPayload":{"position":{"x":24716.19439706348,"y":17112.594913500518},"targetPosition":{"x":25090.33299259757,"y":17093.31654697176},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2e23d19b-466f-485b-b61d-ded90fa7b221","savedPayload":{"position":{"x":25090.33299259757,"y":17093.31654697176},"targetPosition":{"x":25404.421709115057,"y":16889.65095927658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"New Polygon","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.RED\",\n \"opacity\": 1,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.RED\",\n \"opacity\": 1,\n \"lineWidth\": 1.5,\n \"lineDash\": [0,0]\n }\n}","id":"fc7ced4a-bcf0-4c18-9e3b-959e7cac59f6","savedPayload":{"position":{"x":24467.58338452526,"y":16419.400978674992},"targetPosition":{"x":24833.956275456065,"y":16497.28960005645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"10637dce-3cba-4c02-9561-da3ec43bdf0c","savedPayload":{"position":{"x":24833.956275456065,"y":16497.28960005645},"targetPosition":{"x":25200.392208658857,"y":16575.219779632742},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin","id":"210399d5-7817-4136-b2bf-59bc5b5c4eb6","savedPayload":{"position":{"x":24996.418462614336,"y":16260.907933559358},"targetPosition":{"x":25200.392208658857,"y":16575.219779632742},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin","id":"788a8d38-a7f8-4e9f-aa91-0d73d83967ba"}}},{"type":"Polygon Vertex","name":"End","id":"912ac4dc-6acb-4097-84e9-cf3d72060597","savedPayload":{"position":{"x":25278.153284374934,"y":16208.656989011186},"targetPosition":{"x":25200.392208658857,"y":16575.219779632742},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End","id":"5c7415c1-6a1d-4838-8587-6883c11724b4"}}}],"id":"5b8dcb5c-6b20-4edf-aae5-1c526cdca536","savedPayload":{"position":{"x":25200.392208658857,"y":16575.219779632742},"targetPosition":{"x":25404.421709115057,"y":16889.65095927658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[{"type":"Image","name":"New Image","config":"{ \n\"codeName\": \"bullet-market-sell-order\", \n\"size\": 20\n}","imagePosition":{"type":"Image Position","name":"Begin","config":"{ \n\"offsetX\": 0,\n \"offsetY\": 0\n }","id":"5321e00c-41b9-42a6-8e9a-e84067288a6a","savedPayload":{"position":{"x":25870.329648772902,"y":16574.7029564738},"targetPosition":{"x":25713.111488535844,"y":16677.029115105244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Begin","id":"788a8d38-a7f8-4e9f-aa91-0d73d83967ba"}}},"id":"8ad2d152-57e7-4db6-b810-44bb870c46e2","savedPayload":{"position":{"x":25713.111488535844,"y":16677.029115105244},"targetPosition":{"x":25404.421709115057,"y":16889.65095927658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"texts":[],"id":"c24bfe41-ef93-4f0a-8c96-843536c85a2f","savedPayload":{"position":{"x":25404.421709115057,"y":16889.65095927658},"targetPosition":{"x":25811.618191421298,"y":17516.922712831594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Market Sell Order","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Serial Number","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.serialNumber","id":"3beb54d7-d0a4-499e-becc-22691e15a292","savedPayload":{"position":{"x":25270.31333581048,"y":17379.902973956123},"targetPosition":{"x":25610.097870315658,"y":17242.690960235246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b1093c73-8eac-4291-a67f-7e4d546a914b","savedPayload":{"position":{"x":25610.097870315658,"y":17242.690960235246},"targetPosition":{"x":25949.88205841928,"y":17105.238493472418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.rate","id":"08be12d1-b8cd-4ab1-affe-008e4a6c2c17","savedPayload":{"position":{"x":25217.209496160667,"y":17130.681526291388},"targetPosition":{"x":25583.505423998635,"y":17118.007237780203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"18550807-aa68-4b52-83c6-e16a44beb9f6","savedPayload":{"position":{"x":25583.505423998635,"y":17118.007237780203},"targetPosition":{"x":25949.88205841928,"y":17105.238493472418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Status","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.status","id":"917325b0-e9a2-428c-b291-34f6a4a462ed","savedPayload":{"position":{"x":25252.60028522106,"y":16878.858718562624},"targetPosition":{"x":25601.19548351795,"y":16992.062081095883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f6b71a6b-982d-4b61-9693-bbda2cb5abac","savedPayload":{"position":{"x":25601.19548351795,"y":16992.062081095883},"targetPosition":{"x":25949.88205841928,"y":17105.238493472418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Exit Type","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.exitType","id":"71213f89-f5d2-4946-a100-dd141090ea0c","savedPayload":{"position":{"x":25372.130678047073,"y":16653.978988900555},"targetPosition":{"x":25660.966614372195,"y":16879.59880530383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9dca5f8f-c6c8-475f-ad85-96975552fb12","savedPayload":{"position":{"x":25660.966614372195,"y":16879.59880530383},"targetPosition":{"x":25949.88205841928,"y":17105.238493472418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Order Name","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.orderName","id":"24ab5826-f6bb-4ca7-b720-2fbd7a7a142c","savedPayload":{"position":{"x":25561.36486122844,"y":16483.56350596803},"targetPosition":{"x":25755.599454320018,"y":16794.37864855976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2af2f91f-8198-4be6-9ff6-f2fa525573b8","savedPayload":{"position":{"x":25755.599454320018,"y":16794.37864855976},"targetPosition":{"x":25949.88205841928,"y":17105.238493472418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Algorithm Name","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.algorithmName","id":"a48449db-1def-49af-8210-c06704e34cc9","savedPayload":{"position":{"x":25797.462464496548,"y":16388.168968592938},"targetPosition":{"x":25873.674738057103,"y":16746.682938005815},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9b58e3d6-c336-4193-adf4-305640812adf","savedPayload":{"position":{"x":25873.674738057103,"y":16746.682938005815},"targetPosition":{"x":25949.88205841928,"y":17105.238493472418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Situation Name","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.situationName","id":"e0490e8b-a1f0-463e-808e-d5d4e34b6880","savedPayload":{"position":{"x":26051.507876807646,"y":16379.303703087617},"targetPosition":{"x":26000.747642982238,"y":16742.276048498705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e865f45c-813d-43c6-861d-bacdf4b90b7d","savedPayload":{"position":{"x":26000.747642982238,"y":16742.276048498705},"targetPosition":{"x":25949.88205841928,"y":17105.238493472418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Periods","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.periods","id":"f43b14f3-f74f-44fc-9901-a3928fc38cdf","savedPayload":{"position":{"x":26263.672308664758,"y":16461.263095245373},"targetPosition":{"x":26121.930268711658,"y":16781.765919356556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7b13f0e5-8cd7-48e7-b743-2fbf89ae2029","savedPayload":{"position":{"x":26121.930268711658,"y":16781.765919356556},"targetPosition":{"x":25949.88205841928,"y":17105.238493472418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a5856620-e9ce-4ee1-830c-5b5dc45e9139","savedPayload":{"position":{"x":25783.70315298311,"y":16786.796066967505},"targetPosition":{"x":25811.618191421298,"y":17516.922712831594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Market Sell Order Stats","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Percentage Filled","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.percentageFilled","id":"f5522236-9f5c-4fdb-b08d-2e4946abc2e3","savedPayload":{"position":{"x":25692.699363342137,"y":16973.220124804247},"targetPosition":{"x":25835.359881380235,"y":17088.59841058804},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2c7e8609-e799-4098-adfe-0a7b75ccb263","savedPayload":{"position":{"x":25835.359881380235,"y":17088.59841058804},"targetPosition":{"x":26029.30765528533,"y":17245.345683509346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Actual Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.actualRate","id":"c6fe3736-eb2b-4750-b7f0-72ae5ff7d713","savedPayload":{"position":{"x":25973.63513951712,"y":16825.258610136047},"targetPosition":{"x":26003.034557190425,"y":16997.68971226934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ffc9a08a-8c74-4c50-a441-3f59296079b3","savedPayload":{"position":{"x":26003.034557190425,"y":16997.68971226934},"targetPosition":{"x":26029.30765528533,"y":17245.345683509346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Days","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.days","id":"8636289b-9bd2-4026-a816-e1f75abf64bb","savedPayload":{"position":{"x":26279.769244518153,"y":16910.376154666217},"targetPosition":{"x":26164.856343169144,"y":17053.3535839001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c54f0f59-b80f-4f72-bd85-ac1fd7a15b19","savedPayload":{"position":{"x":26164.856343169144,"y":17053.3535839001},"targetPosition":{"x":26029.30765528533,"y":17245.345683509346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fb23f6bb-8383-4276-8a77-5180e622653a","savedPayload":{"position":{"x":26151.079114742482,"y":16850.419779358985},"targetPosition":{"x":25811.618191421298,"y":17516.922712831594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Market Sell Order Base Asset","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Size","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeInBaseAsset","id":"44fa5bfe-9b0b-48a9-a894-ddec881a6ad4","savedPayload":{"position":{"x":26594.373923640498,"y":16376.567278333489},"targetPosition":{"x":26516.55245262842,"y":16743.011540141288},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4498020e-77ee-4e27-9e10-9e463b1af7e6","savedPayload":{"position":{"x":26516.55245262842,"y":16743.011540141288},"targetPosition":{"x":26438.75402806073,"y":17109.52842757837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Size Filled","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeFilledInBaseAsset","id":"6e97ae4f-f7e2-4391-bae7-87ae36c4abd0","savedPayload":{"position":{"x":27067.07779770725,"y":16701.28711010068},"targetPosition":{"x":26752.905975544403,"y":16905.377344765562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dc0870d0-d0f2-42d2-aaef-5d7dda44618d","savedPayload":{"position":{"x":26752.905975544403,"y":16905.377344765562},"targetPosition":{"x":26438.75402806073,"y":17109.52842757837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Fees Paid","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.feesPaidInBaseAsset","id":"05ae1a21-206b-4e53-b52d-b00917748c2a","savedPayload":{"position":{"x":27153.02032790691,"y":17210.58254093096},"targetPosition":{"x":26786.463329860293,"y":17132.92798535795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"93694e2d-8e12-4bd3-9497-2489aa33caca","savedPayload":{"position":{"x":26786.463329860293,"y":17132.92798535795},"targetPosition":{"x":26438.75402806073,"y":17109.52842757837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3e9e4e57-bd41-41f5-8d52-c92d3a707e80","savedPayload":{"position":{"x":26438.75402806073,"y":17109.52842757837},"targetPosition":{"x":25811.618191421298,"y":17516.922712831594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Market Sell Order Quoted Asset","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Size","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeInQuotedAsset","id":"394b6e9b-ee43-4cb9-8b7d-fef145bd8846","savedPayload":{"position":{"x":27078.75736801844,"y":16975.58538707181},"targetPosition":{"x":26827.962153173925,"y":17253.93412876616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"50b03be9-48dc-42db-8f6c-b9bac7d96276","savedPayload":{"position":{"x":26827.962153173925,"y":17253.93412876616},"targetPosition":{"x":26558.502682932693,"y":17478.00789217562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Size Filled","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeFilledInQuotedAsset","id":"34bd06ab-2d1e-4c03-9279-2fef1663d0a3","savedPayload":{"position":{"x":27306.889337396547,"y":17439.24900629721},"targetPosition":{"x":26932.709047182365,"y":17458.663715969018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5685f2bc-a91c-4e84-92ee-8dfe2bacd4a2","savedPayload":{"position":{"x":26932.709047182365,"y":17458.663715969018},"targetPosition":{"x":26558.502682932693,"y":17478.00789217562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Fees Paid","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.feesPaidInQuotedAsset","id":"b63f1a7f-cbf8-4060-a74f-a2c624f3673f","savedPayload":{"position":{"x":27115.316077610518,"y":17979.236465199363},"targetPosition":{"x":26836.91697773837,"y":17728.661450603424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"28b9cc5b-898f-4cd6-87e9-5a8233362e88","savedPayload":{"position":{"x":26836.91697773837,"y":17728.661450603424},"targetPosition":{"x":26558.502682932693,"y":17478.00789217562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"51d59c30-3a02-4d74-aa62-f1524ea544ee","savedPayload":{"position":{"x":26558.502682932693,"y":17478.00789217562},"targetPosition":{"x":25811.618191421298,"y":17516.922712831594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a9811005-1b7d-45bb-8003-0e60caab5f09","savedPayload":{"position":{"x":25811.679484556655,"y":17516.772431626487},"targetPosition":{"x":25471.345029942826,"y":18184.8045462756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Limit Buy Orders","config":"{ \n \"codeName\": \"Market-Buy-Orders\", \n \"icon\": \"trend\",\n \"useRateAtMousePosition\": true\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.rate","id":"94f80738-6b21-4e8d-8bdf-aa8ef6f8ad4f","savedPayload":{"position":{"x":24586.059526280933,"y":16278.77536777752},"targetPosition":{"x":25138.358211551447,"y":16381.07051202885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"491e71de-b648-48aa-b493-67ed00359e73","savedPayload":{"position":{"x":25138.358211551447,"y":16381.07051202885},"targetPosition":{"x":25690.735069953465,"y":16483.27799020472},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.rate","id":"57bd54ae-96c8-4d10-bd6d-adf3d705e47e","savedPayload":{"position":{"x":24793.340213466046,"y":15770.786756659098},"targetPosition":{"x":25220.50474103633,"y":16135.52590270336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"38fccc9b-d822-4598-a156-95c734ec3d6b","savedPayload":{"position":{"x":25220.50474103633,"y":16135.52590270336},"targetPosition":{"x":25690.735069953465,"y":16483.27799020472},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8901df44-b813-47f3-8ded-4e1f6c68ae8b","savedPayload":{"position":{"x":25690.735069953465,"y":16483.27799020472},"targetPosition":{"x":26197.92446296634,"y":16724.792561341023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Status Open","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.status === 'Open'","id":"bbbba1d8-fbf6-4e15-a4e7-edb6683dd74f","savedPayload":{"position":{"x":25340.10694547308,"y":16089.032763422265},"targetPosition":{"x":25821.624268779593,"y":16307.147328472518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 1,\n \"lineWidth\": 0.5,\n \"lineDash\": [2,2]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 1,\n \"lineWidth\": 1.5,\n \"lineDash\": [0,0]\n }\n}","id":"fa856a62-67b2-45b5-a186-a6538b220858","savedPayload":{"position":{"x":24948.524038469925,"y":15600.011682053184},"targetPosition":{"x":25385.01105612928,"y":15953.54730616546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"bb28a0e6-1cb3-4138-95f0-069745242288","savedPayload":{"position":{"x":25385.01105612928,"y":15953.54730616546},"targetPosition":{"x":25821.624268779593,"y":16307.147328472518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin","id":"c4de49da-cd9d-4687-b08b-93f8bba1d454","savedPayload":{"position":{"x":25498.152278440524,"y":15841.66426735189},"targetPosition":{"x":25821.624268779593,"y":16307.147328472518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin","id":"491e71de-b648-48aa-b493-67ed00359e73"}}},{"type":"Polygon Vertex","name":"End","id":"7b269f5c-62d2-4f58-a010-71f1179a3312","savedPayload":{"position":{"x":25680.132702974755,"y":15772.807818571482},"targetPosition":{"x":25821.624268779593,"y":16307.147328472518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End","id":"38fccc9b-d822-4598-a156-95c734ec3d6b"}}}],"id":"7be8ba85-07e7-4800-8988-ce76d2105b73","savedPayload":{"position":{"x":25821.624268779593,"y":16307.147328472518},"targetPosition":{"x":26197.92446296634,"y":16724.792561341023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Status Closed Cancel Event","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.status === 'Closed' && record.exitType === 'Cancel Event'","id":"754cb109-361e-4b50-964a-0b5ef0ba4b70","savedPayload":{"position":{"x":25595.1802783479,"y":15819.0631952216},"targetPosition":{"x":26010.311899882243,"y":16194.820225867119},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 1,\n \"lineWidth\": 0.5,\n \"lineDash\": [4,4]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 1,\n \"lineWidth\": 1.5,\n \"lineDash\": [0,0]\n }\n}","id":"6cae8828-961f-4184-b324-453570bf247e","savedPayload":{"position":{"x":25495.662603371897,"y":15182.329609203645},"targetPosition":{"x":25763.61519290333,"y":15675.9966810718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"bd024ea0-0641-43fe-8d01-63f23a7326cb","savedPayload":{"position":{"x":25763.61519290333,"y":15675.9966810718},"targetPosition":{"x":26010.311899882243,"y":16194.820225867119},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin","id":"f05d7b53-3fba-4da7-91c2-154f4f2f92a2","savedPayload":{"position":{"x":25889.520597059345,"y":15640.847832144544},"targetPosition":{"x":26010.311899882243,"y":16194.820225867119},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin","id":"491e71de-b648-48aa-b493-67ed00359e73"}}},{"type":"Polygon Vertex","name":"End","id":"bc515a2b-68af-43a1-b0cb-036129122c87","savedPayload":{"position":{"x":26083.879285711864,"y":15646.874470347913},"targetPosition":{"x":26010.311899882243,"y":16194.820225867119},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End","id":"38fccc9b-d822-4598-a156-95c734ec3d6b"}}}],"id":"ab881143-5631-4b27-a97a-94138dbd370d","savedPayload":{"position":{"x":26010.311899882243,"y":16194.820225867119},"targetPosition":{"x":26197.92446296634,"y":16724.792561341023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Status Closed Filled","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.status === 'Closed' && record.exitType === 'Filled'","id":"c206ef6f-d846-4744-b49d-c1261977a591","savedPayload":{"position":{"x":25987.984174357844,"y":15657.371078789987},"targetPosition":{"x":26227.361676979166,"y":16163.31814386424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 1,\n \"lineWidth\": 2.5,\n \"lineDash\": [0,0]\n }\n}","id":"be3d2e3c-c973-421a-87d7-720472b42080","savedPayload":{"position":{"x":26139.68603306751,"y":15030.897745761895},"targetPosition":{"x":26198.256736602772,"y":15589.548956794692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"daebbf6b-f45b-40f5-8182-bd95d1a657e9","savedPayload":{"position":{"x":26198.256736602772,"y":15589.548956794692},"targetPosition":{"x":26227.361676979166,"y":16163.31814386424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin","id":"72d869ee-aa3b-4995-9832-7ab1b06579bf","savedPayload":{"position":{"x":26344.271926077017,"y":15613.719827795745},"targetPosition":{"x":26227.361676979166,"y":16163.31814386424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin","id":"491e71de-b648-48aa-b493-67ed00359e73"}}},{"type":"Polygon Vertex","name":"End","id":"da73c5dc-926a-4368-9229-98574af7fec4","savedPayload":{"position":{"x":26508.391464547378,"y":15676.728166141254},"targetPosition":{"x":26227.361676979166,"y":16163.31814386424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End","id":"38fccc9b-d822-4598-a156-95c734ec3d6b"}}}],"id":"a54693cf-8ec1-469d-afb9-2a724e4f6af7","savedPayload":{"position":{"x":26227.361676979166,"y":16163.31814386424},"targetPosition":{"x":26197.92446296634,"y":16724.792561341023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[{"type":"Image","name":"Status Closed Cancel Event","config":"{ \n\"codeName\": \"bullet-cancelled-order\", \n\"size\": 10\n}","imageCondition":{"type":"Image Condition","name":"New Image Condition","code":"record.status === 'Closed' && record.exitType === 'Cancel Event'","id":"9c3cb413-e20e-499b-ad72-de3ba1fc6543","savedPayload":{"position":{"x":26491.346209437455,"y":15940.767129915328},"targetPosition":{"x":26440.065873212054,"y":16217.401000885013},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"imagePosition":{"type":"Image Position","name":"End","config":"{ \n\"offsetX\": -5,\n \"offsetY\": 0\n }","id":"b8016af3-22de-4a1b-b4cb-45a23b2928d5","savedPayload":{"position":{"x":26622.928328184484,"y":16003.5102819721},"targetPosition":{"x":26440.065873212054,"y":16217.401000885013},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"End","id":"38fccc9b-d822-4598-a156-95c734ec3d6b"}}},"id":"d562a270-c953-4ebe-9985-9f724e0e7eb6","savedPayload":{"position":{"x":26440.065873212054,"y":16217.401000885013},"targetPosition":{"x":26197.92446296634,"y":16724.792561341023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Image","name":"Starting Point","config":"{ \n\"codeName\": \"bullet-limit-buy-order\", \n\"size\": 15\n}","imagePosition":{"type":"Image Position","name":"Begin","config":"{ \n\"offsetX\": 5,\n \"offsetY\": 0\n }","id":"324aa438-7134-4918-b13e-082f3b3078dc","savedPayload":{"position":{"x":26825.020837225566,"y":16160.529165683985},"targetPosition":{"x":26615.85958975527,"y":16348.729768707868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Begin","id":"491e71de-b648-48aa-b493-67ed00359e73"}}},"id":"89fe166c-e48e-4a0c-b357-149ffa17f2c2","savedPayload":{"position":{"x":26615.85958975527,"y":16348.729768707868},"targetPosition":{"x":26197.92446296634,"y":16724.792561341023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Image","name":"Status Closed Filled","config":"{ \n\"codeName\": \"bullet-limit-buy-order-filled\", \n\"size\": 20\n}","imageCondition":{"type":"Image Condition","name":"New Image Condition","code":"record.status === 'Closed' && record.exitType === 'Filled'","id":"09ebd654-f653-467c-91f3-e8b9ec95feeb","savedPayload":{"position":{"x":26959.898443168513,"y":16378.202906099483},"targetPosition":{"x":26727.997316432273,"y":16537.44583069873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"imagePosition":{"type":"Image Position","name":"End","config":"{ \n\"offsetX\": -5,\n \"offsetY\": 0\n }","id":"a22c8598-870b-4d86-bb42-938cb21a5d28","savedPayload":{"position":{"x":27008.50577946452,"y":16515.64453328297},"targetPosition":{"x":26727.997316432273,"y":16537.44583069873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"End","id":"38fccc9b-d822-4598-a156-95c734ec3d6b"}}},"id":"7c9a0ee3-b3f4-44c7-b51b-0efc830fd8d5","savedPayload":{"position":{"x":26727.997316432273,"y":16537.44583069873},"targetPosition":{"x":26197.92446296634,"y":16724.792561341023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"texts":[],"id":"3ea3861e-f37d-4d78-a45e-9b5fa738aefd","savedPayload":{"position":{"x":26197.92446296634,"y":16724.792561341023},"targetPosition":{"x":26139.279586343233,"y":17844.66393386529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Limit Buy Order","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Serial Number","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.serialNumber","id":"5cec4759-6b80-42b0-9443-1b831b5b7d09","savedPayload":{"position":{"x":25839.520774648186,"y":16844.729747350353},"targetPosition":{"x":26030.779213225724,"y":17098.389452365012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b09e6f5e-9273-4e1c-a54a-43ce45bc6dd8","savedPayload":{"position":{"x":26030.779213225724,"y":17098.389452365012},"targetPosition":{"x":26310.926817547024,"y":17460.705984473396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.rate","id":"f26cae34-697d-4ad2-a143-1693300d3311","savedPayload":{"position":{"x":26081.1492288885,"y":16718.485801362534},"targetPosition":{"x":26174.024723435738,"y":17022.524368134324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"387d66c8-900b-4e9d-8bc9-ea37b257256a","savedPayload":{"position":{"x":26174.024723435738,"y":17022.524368134324},"targetPosition":{"x":26310.926817547024,"y":17460.705984473396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Status","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.status","id":"b6443228-7052-4e44-8338-44a3d2498ae0","savedPayload":{"position":{"x":26350.131394734948,"y":16684.161952212493},"targetPosition":{"x":26333.57552282128,"y":17001.768915162287},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d6f79efe-1f80-4033-92a1-6869a7e9fb06","savedPayload":{"position":{"x":26333.57552282128,"y":17001.768915162287},"targetPosition":{"x":26310.926817547024,"y":17460.705984473396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Exit Type","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.exitType","id":"c448c5dc-5941-4bca-9328-79703fa9cabf","savedPayload":{"position":{"x":26614.390851391137,"y":16744.256958459442},"targetPosition":{"x":26489.943393495392,"y":17037.275687191617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5bdddc9e-d08c-4944-8add-a1c1753489b1","savedPayload":{"position":{"x":26489.943393495392,"y":17037.275687191617},"targetPosition":{"x":26310.926817547024,"y":17460.705984473396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Order Name","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.orderName","id":"482dca74-9ba2-4a76-8101-fc24179e9299","savedPayload":{"position":{"x":26841.50307556864,"y":16891.596992091232},"targetPosition":{"x":26624.563015671192,"y":17124.042992508068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bc07d18f-6016-4959-ae36-efd2b9bd44f8","savedPayload":{"position":{"x":26624.563015671192,"y":17124.042992508068},"targetPosition":{"x":26310.926817547024,"y":17460.705984473396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Algorithm Name","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.algorithmName","id":"7a0ad104-5485-4807-891e-2aa1b970020c","savedPayload":{"position":{"x":27004.647709815898,"y":17107.574544065763},"targetPosition":{"x":26720.925452476375,"y":17251.78937096081},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b04fe3cd-9003-4a69-a49d-ad6eface3203","savedPayload":{"position":{"x":26720.925452476375,"y":17251.78937096081},"targetPosition":{"x":26310.926817547024,"y":17460.705984473396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Situation Name","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.situationName","id":"cadd0d45-e81e-40fe-ac32-76bb35061bf2","savedPayload":{"position":{"x":27083.421494033337,"y":17366.417494960642},"targetPosition":{"x":26768.068994502195,"y":17404.718128900655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7239341a-6c4b-468a-bee8-21b27c2fa9d9","savedPayload":{"position":{"x":26768.068994502195,"y":17404.718128900655},"targetPosition":{"x":26310.926817547024,"y":17460.705984473396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Periods","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.periods","id":"d62047f4-7a35-4249-8b91-ffcc53228417","savedPayload":{"position":{"x":27065.098117231082,"y":17646.70383417113},"targetPosition":{"x":26754.843682533174,"y":17574.298399856838},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a34576ad-99d8-469e-8b78-1bacb5aa7ee2","savedPayload":{"position":{"x":26754.843682533174,"y":17574.298399856838},"targetPosition":{"x":26310.926817547024,"y":17460.705984473396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"48ec80a7-6f68-4284-9bb5-f04ce3c1052b","savedPayload":{"position":{"x":26547.016604901022,"y":17217.09601353226},"targetPosition":{"x":26139.279586343233,"y":17844.66393386529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Limit Buy Order Stats","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Percentage Filled","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.percentageFilled","id":"bf5f428c-4b90-47d1-b001-8a3478e74522","savedPayload":{"position":{"x":26215.744370251676,"y":17393.41353984155},"targetPosition":{"x":26358.404888289773,"y":17508.791825625343},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"94b4e199-d798-4ba3-8fc7-3d739ae55cb1","savedPayload":{"position":{"x":26358.404888289773,"y":17508.791825625343},"targetPosition":{"x":26552.35266219487,"y":17665.539098546647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Actual Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.actualRate","id":"cf967a95-e485-4fbe-9647-4b86624511f3","savedPayload":{"position":{"x":26496.680146426657,"y":17245.452025173345},"targetPosition":{"x":26526.079564099964,"y":17417.883127306643},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bd576bff-fa79-4ea3-87b7-565a2877a7b7","savedPayload":{"position":{"x":26526.079564099964,"y":17417.883127306643},"targetPosition":{"x":26552.35266219487,"y":17665.539098546647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Days","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.days","id":"c523a647-b720-4932-ae18-771cb70e3145","savedPayload":{"position":{"x":26802.81425142769,"y":17330.569569703515},"targetPosition":{"x":26687.901350078682,"y":17473.546998937403},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"32b22d53-13c5-44db-941c-e29a4c1f05f7","savedPayload":{"position":{"x":26687.901350078682,"y":17473.546998937403},"targetPosition":{"x":26552.35266219487,"y":17665.539098546647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"90bd6690-de93-4158-a17f-728c28defc38","savedPayload":{"position":{"x":26806.279350114608,"y":17504.978548133964},"targetPosition":{"x":26139.279586343233,"y":17844.66393386529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Limit Buy Order Base Asset","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Size","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeInBaseAsset","id":"50c5c78c-49ba-43c1-9000-dfb7a2890db5","savedPayload":{"position":{"x":27174.42740560968,"y":17508.087845937593},"targetPosition":{"x":26938.92827047577,"y":17720.099271153897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e60271d1-8ce8-47e1-9776-42b583c9f2d6","savedPayload":{"position":{"x":26938.92827047577,"y":17720.099271153897},"targetPosition":{"x":26599.600999444443,"y":18025.86211070353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Size Filled","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeFilledInBaseAsset","id":"65c1b916-6c36-4818-901a-7b6411c523b2","savedPayload":{"position":{"x":27372.506969563958,"y":18066.024283002414},"targetPosition":{"x":27054.759936787967,"y":18049.597120613977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"63d19192-c46d-4e53-bf40-c229089d93b6","savedPayload":{"position":{"x":27054.759936787967,"y":18049.597120613977},"targetPosition":{"x":26599.600999444443,"y":18025.86211070353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Fees Paid","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.feesPaidInBaseAsset","id":"7a32b13c-7e88-48d1-9ef7-dee529f39c95","savedPayload":{"position":{"x":27117.5787956666,"y":18600.943146731624},"targetPosition":{"x":26905.05404149945,"y":18365.04915827637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b1a42210-66b9-4e3a-aef5-4b0f385bcfc8","savedPayload":{"position":{"x":26905.05404149945,"y":18365.04915827637},"targetPosition":{"x":26599.600999444443,"y":18025.86211070353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8504b6e3-83c8-45ea-959a-41303f9d4274","savedPayload":{"position":{"x":26886.844188844036,"y":17883.775924927813},"targetPosition":{"x":26139.279586343233,"y":17844.66393386529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Limit Buy Order Quoted Asset","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Size","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeInQuotedAsset","id":"0b1e5b50-51c0-4753-b11f-37fe4179f81f","savedPayload":{"position":{"x":27255.905648596738,"y":18177.43630018128},"targetPosition":{"x":26944.08379991229,"y":18243.70523216879},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d30de7e2-c899-49da-b015-95ca5ca26133","savedPayload":{"position":{"x":26944.08379991229,"y":18243.70523216879},"targetPosition":{"x":26498.174089175543,"y":18338.662656737823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Size Filled","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeFilledInQuotedAsset","id":"d6a5ced0-9c91-4d52-ad4a-ac544a917496","savedPayload":{"position":{"x":27147.527686477177,"y":18760.17435970883},"targetPosition":{"x":26880.928420935088,"y":18587.15239263583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3c7ad592-3802-479f-9f03-c7f5d90aa827","savedPayload":{"position":{"x":26880.928420935088,"y":18587.15239263583},"targetPosition":{"x":26498.174089175543,"y":18338.662656737823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Fees Paid","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.feesPaidInQuotedAsset","id":"7b5c11c3-8e14-4de1-9f05-46d958bac220","savedPayload":{"position":{"x":26659.123886502704,"y":19096.015661650654},"targetPosition":{"x":26592.957890978683,"y":18784.71514709761},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d0862104-b7d8-42da-bc28-b4218d1cad2e","savedPayload":{"position":{"x":26592.957890978683,"y":18784.71514709761},"targetPosition":{"x":26498.174089175543,"y":18338.662656737823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b60e7e48-8ae7-4701-848b-8faa9ba58c11","savedPayload":{"position":{"x":26767.114641445914,"y":18252.315217694064},"targetPosition":{"x":26139.279586343233,"y":17844.66393386529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7e3120c7-a0c9-483c-ada9-8c53deb10f33","savedPayload":{"position":{"x":26139.3704617056,"y":17844.46836521267},"targetPosition":{"x":25471.345029942826,"y":18184.8045462756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Limit Sell Orders","config":"{ \n \"codeName\": \"Market-Sell-Orders\", \n \"icon\": \"trend\",\n \"useRateAtMousePosition\": true\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.rate","id":"7f75a437-7e83-43b8-8353-459cec82a3da","savedPayload":{"position":{"x":25875.62583529475,"y":16123.395882222663},"targetPosition":{"x":26262.593256891225,"y":16531.234705500126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d8a8ba4d-ceac-43f7-9cac-b15d3c577e0a","savedPayload":{"position":{"x":26262.593256891225,"y":16531.234705500126},"targetPosition":{"x":26649.13216683521,"y":16938.306687669792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.rate","id":"d69fedc3-dcb6-4b3a-a8a5-7db14d37f8da","savedPayload":{"position":{"x":26335.14869792057,"y":15826.746909616519},"targetPosition":{"x":26466.17967674842,"y":16373.004585439416},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a7c33161-bd93-4a7d-9d79-d6e6c3f3b292","savedPayload":{"position":{"x":26466.17967674842,"y":16373.004585439416},"targetPosition":{"x":26649.13216683521,"y":16938.306687669792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"045c78e6-ddff-4981-b497-31d6d19f9ef1","savedPayload":{"position":{"x":26649.13216683521,"y":16938.306687669792},"targetPosition":{"x":26917.19280806739,"y":17431.450016724466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Status Open","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.status === 'Open'","id":"5aeb9711-2374-4a99-b757-f037eb05db27","savedPayload":{"position":{"x":26573.604031561357,"y":16444.598250042556},"targetPosition":{"x":26858.52055621916,"y":16872.63383772474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.RED\",\n \"opacity\": 1,\n \"lineWidth\": 0.5,\n \"lineDash\": [2,2]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.RED\",\n \"opacity\": 1,\n \"lineWidth\": 1.5,\n \"lineDash\": [0,0]\n }\n}","id":"f829eef3-dc45-4244-934b-8955baa9a363","savedPayload":{"position":{"x":26599.69077419537,"y":15786.67825735026},"targetPosition":{"x":26744.371602759493,"y":16329.452648185477},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"f24f885d-8cb5-4519-a209-9dccea0d7b32","savedPayload":{"position":{"x":26744.371602759493,"y":16329.452648185477},"targetPosition":{"x":26858.52055621916,"y":16872.63383772474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin","id":"4f668994-11ef-4a59-a41c-b238fb22c449","savedPayload":{"position":{"x":26867.181457349474,"y":16299.403798514752},"targetPosition":{"x":26858.52055621916,"y":16872.63383772474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin","id":"d8a8ba4d-ceac-43f7-9cac-b15d3c577e0a"}}},{"type":"Polygon Vertex","name":"End","id":"95434555-e691-495e-ba26-d489c6356590","savedPayload":{"position":{"x":27060.016435304642,"y":16359.40112533202},"targetPosition":{"x":26858.52055621916,"y":16872.63383772474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End","id":"a7c33161-bd93-4a7d-9d79-d6e6c3f3b292"}}}],"id":"186d1b59-7d04-4b40-83c9-acc361b8a12a","savedPayload":{"position":{"x":26858.52055621916,"y":16872.63383772474},"targetPosition":{"x":26917.19280806739,"y":17431.450016724466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Status Closed Cancel Event","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.status === 'Closed' && record.exitType === 'Cancel Event'","id":"831bf4d8-74d0-4451-9ac1-74129aed4035","savedPayload":{"position":{"x":26977.482235802698,"y":16296.81115336115},"targetPosition":{"x":27076.94374541954,"y":16892.558241511266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.RED\",\n \"opacity\": 1,\n \"lineWidth\": 0.5,\n \"lineDash\": [4,4]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.RED\",\n \"opacity\": 1,\n \"lineWidth\": 1.5,\n \"lineDash\": [0,0]\n }\n}","id":"1981c910-838a-472d-bef0-df163a5ba786","savedPayload":{"position":{"x":27257.198642177405,"y":15769.57158611154},"targetPosition":{"x":27183.785191400264,"y":16326.46822920491},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"34016ca1-5c63-4cad-8f9e-5f042f3ff604","savedPayload":{"position":{"x":27183.785191400264,"y":16326.46822920491},"targetPosition":{"x":27076.94374541954,"y":16892.558241511266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin","id":"bf1708a8-16c7-45fc-88c4-1ad7aace15ea","savedPayload":{"position":{"x":27304.94149287744,"y":16373.452241694491},"targetPosition":{"x":27076.94374541954,"y":16892.558241511266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin","id":"d8a8ba4d-ceac-43f7-9cac-b15d3c577e0a"}}},{"type":"Polygon Vertex","name":"End","id":"db93470c-9f50-465c-b5f1-e222beb27f6c","savedPayload":{"position":{"x":27458.566648312168,"y":16492.86929112822},"targetPosition":{"x":27076.94374541954,"y":16892.558241511266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End","id":"a7c33161-bd93-4a7d-9d79-d6e6c3f3b292"}}}],"id":"8e993263-dbfc-4d41-864a-9470e70d7e4f","savedPayload":{"position":{"x":27076.94374541954,"y":16892.558241511266},"targetPosition":{"x":26917.19280806739,"y":17431.450016724466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Status Closed Filled","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.status === 'Closed' && record.exitType === 'Filled'","id":"efdea12d-4ac6-4fa1-819f-1de25267d9bc","savedPayload":{"position":{"x":27375.006711728187,"y":16444.721193622696},"targetPosition":{"x":27271.168735483167,"y":16994.71072830357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","config":"{\n \"default\": {\n \"paletteColor\": \"UI_COLOR.RED\",\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [0,0]\n },\n \"atMousePosition\": {\n \"paletteColor\": \"UI_COLOR.RED\",\n \"opacity\": 1,\n \"lineWidth\": 2.5,\n \"lineDash\": [0,0]\n }\n}","id":"753d66c8-8384-4ae0-bdae-8cfa0a3564b6","savedPayload":{"position":{"x":27865.797070799414,"y":16027.044485735834},"targetPosition":{"x":27584.915472654477,"y":16513.383968868744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"decddc18-331d-4a58-bf36-02808c215d87","savedPayload":{"position":{"x":27584.915472654477,"y":16513.383968868744},"targetPosition":{"x":27271.168735483167,"y":16994.71072830357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin","id":"373ba1e5-fa16-405f-b4f2-4d2d3cea3acb","savedPayload":{"position":{"x":27688.878505226618,"y":16618.988873979306},"targetPosition":{"x":27271.168735483167,"y":16994.71072830357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin","id":"d8a8ba4d-ceac-43f7-9cac-b15d3c577e0a"}}},{"type":"Polygon Vertex","name":"End","id":"b67222e6-6186-4e69-ad67-a3a6c5a89201","savedPayload":{"position":{"x":27784.5739336403,"y":16766.405361442914},"targetPosition":{"x":27271.168735483167,"y":16994.71072830357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End","id":"a7c33161-bd93-4a7d-9d79-d6e6c3f3b292"}}}],"id":"bf0751d6-fdb2-4e66-a39c-2bd99252bd60","savedPayload":{"position":{"x":27271.168735483167,"y":16994.71072830357},"targetPosition":{"x":26917.19280806739,"y":17431.450016724466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"images":[{"type":"Image","name":"Status Closed Cancel Event","config":"{ \n\"codeName\": \"bullet-cancelled-order\", \n\"size\": 10\n}","imageCondition":{"type":"Image Condition","name":"New Image Condition","code":"record.status === 'Closed' && record.exitType === 'Cancel Event'","id":"191dc665-7aaf-4aa6-8c8e-966ded042b38","savedPayload":{"position":{"x":27615.685794079604,"y":16969.92563570906},"targetPosition":{"x":27411.426373634968,"y":17163.481017592996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"imagePosition":{"type":"Image Position","name":"End","config":"{ \n\"offsetX\": -5,\n \"offsetY\": 0\n }","id":"ed6c3f2f-fa06-45f6-af44-7038503f9c5c","savedPayload":{"position":{"x":27685.262285561683,"y":17098.062559711823},"targetPosition":{"x":27411.426373634968,"y":17163.481017592996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"End","id":"a7c33161-bd93-4a7d-9d79-d6e6c3f3b292"}}},"id":"5533709c-4ba8-4b2e-af48-827be2e1fe75","savedPayload":{"position":{"x":27411.426373634968,"y":17163.481017592996},"targetPosition":{"x":26917.19280806739,"y":17431.450016724466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Image","name":"Starting Point","config":"{ \n\"codeName\": \"bullet-limit-sell-order\", \n\"size\": 15\n}","imagePosition":{"type":"Image Position","name":"Begin","config":"{ \n\"offsetX\": 5,\n \"offsetY\": 0\n }","id":"8a78cf69-decb-4ab7-b182-f96676867972","savedPayload":{"position":{"x":27756.398154188748,"y":17343.866624209753},"targetPosition":{"x":27476.421378762047,"y":17373.038902635817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"Begin","id":"d8a8ba4d-ceac-43f7-9cac-b15d3c577e0a"}}},"id":"5c00fd53-4ca0-4903-9b02-ccb5afd7df12","savedPayload":{"position":{"x":27476.421378762047,"y":17373.038902635817},"targetPosition":{"x":26917.19280806739,"y":17431.450016724466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Image","name":"Status Closed Filled","config":"{ \n\"codeName\": \"bullet-limit-sell-order-filled\", \n\"size\": 20\n}","imageCondition":{"type":"Image Condition","name":"New Image Condition","code":"record.status === 'Closed' && record.exitType === 'Filled'","id":"510f3cbf-b1ba-4a5f-9db3-b90c91c6c38b","savedPayload":{"position":{"x":27737.524425048665,"y":17598.74709372508},"targetPosition":{"x":27456.182424374732,"y":17591.389017239704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"imagePosition":{"type":"Image Position","name":"End","config":"{ \n\"offsetX\": -5,\n \"offsetY\": 0\n }","id":"5feb84a7-3898-4c30-87c9-40b3d141eb5e","savedPayload":{"position":{"x":27696.027459885267,"y":17738.56055627448},"targetPosition":{"x":27456.182424374732,"y":17591.389017239704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Point","name":"End","id":"a7c33161-bd93-4a7d-9d79-d6e6c3f3b292"}}},"id":"8564bc89-fb34-453f-8c5c-75459681cd7d","savedPayload":{"position":{"x":27456.182424374732,"y":17591.389017239704},"targetPosition":{"x":26917.19280806739,"y":17431.450016724466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"texts":[],"id":"42719bff-262a-4401-9611-761f0db1e790","savedPayload":{"position":{"x":26917.19280806739,"y":17431.450016724466},"targetPosition":{"x":26211.705373039615,"y":18302.310660002582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Limit Sell Order","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Serial Number","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.serialNumber","id":"c5062c3f-117f-4c7f-8baf-1181e07c1f44","savedPayload":{"position":{"x":25609.880192707555,"y":19270.643344420576},"targetPosition":{"x":25949.664727212734,"y":19133.4313306997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2775824-cc6b-415a-a9a1-083a6f143c28","savedPayload":{"position":{"x":25949.664727212734,"y":19133.4313306997},"targetPosition":{"x":26289.448915316356,"y":18995.97886393687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.rate","id":"f1a1e227-ac94-4216-a73a-8e1499532932","savedPayload":{"position":{"x":25556.776353057743,"y":19021.42189675584},"targetPosition":{"x":25923.07228089571,"y":19008.747608244656},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9714ab0d-e1c1-4556-9467-d08f7cde214c","savedPayload":{"position":{"x":25923.07228089571,"y":19008.747608244656},"targetPosition":{"x":26289.448915316356,"y":18995.97886393687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Status","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.status","id":"5a83a8c5-a25c-4489-8659-a2de66406218","savedPayload":{"position":{"x":25592.167142118135,"y":18769.599089027077},"targetPosition":{"x":25940.762340415025,"y":18882.802451560336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"86407d60-10e5-43bf-ab20-ef5aadee9b29","savedPayload":{"position":{"x":25940.762340415025,"y":18882.802451560336},"targetPosition":{"x":26289.448915316356,"y":18995.97886393687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Exit Type","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.exitType","id":"4471f450-8aa3-428e-a2d7-11ea1f32fbce","savedPayload":{"position":{"x":25711.69753494415,"y":18544.719359365008},"targetPosition":{"x":26000.53347126927,"y":18770.339175768284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5d944f70-0ef5-423a-88da-ee0d5cdf73ee","savedPayload":{"position":{"x":26000.53347126927,"y":18770.339175768284},"targetPosition":{"x":26289.448915316356,"y":18995.97886393687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Order Name","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.orderName","id":"dbf9a292-37f8-424e-800e-b479ae70f3de","savedPayload":{"position":{"x":25900.931718125517,"y":18374.30387643248},"targetPosition":{"x":26095.166311217094,"y":18685.119019024212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a268a651-1823-4ae5-b1d3-8bb325ca0ad7","savedPayload":{"position":{"x":26095.166311217094,"y":18685.119019024212},"targetPosition":{"x":26289.448915316356,"y":18995.97886393687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Algorithm Name","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.algorithmName","id":"fc31dc8f-c014-43a2-b0e9-5885f0456011","savedPayload":{"position":{"x":26137.029321393624,"y":18278.90933905739},"targetPosition":{"x":26213.24159495418,"y":18637.42330847027},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"09a1d252-4dd5-42f2-841a-0f9db2b2c1d4","savedPayload":{"position":{"x":26213.24159495418,"y":18637.42330847027},"targetPosition":{"x":26289.448915316356,"y":18995.97886393687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Situation Name","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.situationName","id":"ec99ec3d-02cc-445e-9281-f17347a84fc9","savedPayload":{"position":{"x":26391.07473370472,"y":18270.044073552068},"targetPosition":{"x":26340.314499879314,"y":18633.016418963158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d9cee878-f71a-4829-8ce4-0debdc3833fa","savedPayload":{"position":{"x":26340.314499879314,"y":18633.016418963158},"targetPosition":{"x":26289.448915316356,"y":18995.97886393687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Periods","config":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.periods","id":"55e5a5ee-fcbc-4ac0-ae44-4fc4ef2ca64f","savedPayload":{"position":{"x":26603.239165561834,"y":18352.003465709826},"targetPosition":{"x":26461.497125608734,"y":18672.50628982101},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a08ab071-656a-4f19-8d63-694d32f88b83","savedPayload":{"position":{"x":26461.497125608734,"y":18672.50628982101},"targetPosition":{"x":26289.448915316356,"y":18995.97886393687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5d485d15-9919-42cc-9399-54c679d7085d","savedPayload":{"position":{"x":26910.302115336704,"y":18034.66485247684},"targetPosition":{"x":26211.705373039615,"y":18302.310660002582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Limit Sell Order Stats","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Percentage Filled","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.percentageFilled","id":"e34fb8e5-a23a-461f-86b1-ee87aed3c3cf","savedPayload":{"position":{"x":26992.0723962566,"y":18232.14371165281},"targetPosition":{"x":26864.42963948916,"y":18325.545570627848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cc61478e-bfdb-439b-a55c-4238c8ba920a","savedPayload":{"position":{"x":26864.42963948916,"y":18325.545570627848},"targetPosition":{"x":26652.795627538373,"y":18480.671535225363},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Actual Rate","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.actualRate","id":"ae5c666b-5001-479a-8d1f-2f00079e5585","savedPayload":{"position":{"x":27068.080870283033,"y":18545.620670988774},"targetPosition":{"x":26911.591419073797,"y":18521.417591734717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"172b26d5-66ca-4bcc-b453-e97fe8b0d06f","savedPayload":{"position":{"x":26911.591419073797,"y":18521.417591734717},"targetPosition":{"x":26652.795627538373,"y":18480.671535225363},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Days","config":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.days","id":"c119f6cb-3354-4c7f-9d75-a4027adbdc2d","savedPayload":{"position":{"x":26897.88105174628,"y":18822.21496175113},"targetPosition":{"x":26805.92639171644,"y":18693.27010543133},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"906f7f52-dedc-4c67-a18c-e1be9e753c5b","savedPayload":{"position":{"x":26805.92639171644,"y":18693.27010543133},"targetPosition":{"x":26652.795627538373,"y":18480.671535225363},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"db2f6e9c-ce79-4465-a0dc-8ea02fac26b7","savedPayload":{"position":{"x":26950.800227337946,"y":18419.490520849467},"targetPosition":{"x":26211.705373039615,"y":18302.310660002582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Limit Sell Order Base Asset","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Size","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeInBaseAsset","id":"ace027c0-94cc-4f43-b7bc-5c845840b58f","savedPayload":{"position":{"x":27290.118642669102,"y":18700.96465435519},"targetPosition":{"x":26973.693916083277,"y":18733.821636006396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7bf8afbb-b802-4355-812c-2b9c2bf10a71","savedPayload":{"position":{"x":26973.693916083277,"y":18733.821636006396},"targetPosition":{"x":26520.36200037679,"y":18781.263842312026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Size Filled","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeFilledInBaseAsset","id":"2e2c5d6c-3539-498f-b2ca-a720877aa5a3","savedPayload":{"position":{"x":27121.757142379465,"y":19268.57138872106},"targetPosition":{"x":26874.809412502742,"y":19068.470960417053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a75fbc3b-400f-4246-8946-22b17df79b7e","savedPayload":{"position":{"x":26874.809412502742,"y":19068.470960417053},"targetPosition":{"x":26520.36200037679,"y":18781.263842312026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Fees Paid","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.feesPaidInBaseAsset","id":"5d54cc4b-46d5-4931-a687-d62dc4764ca1","savedPayload":{"position":{"x":26601.17520314173,"y":19551.37925824329},"targetPosition":{"x":26568.04104559584,"y":19235.264803650254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a22de527-1426-4575-a7bc-cce1aaf9c28c","savedPayload":{"position":{"x":26568.04104559584,"y":19235.264803650254},"targetPosition":{"x":26520.36200037679,"y":18781.263842312026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3e34000e-ad8c-4049-9eee-89e8ea362a0f","savedPayload":{"position":{"x":26793.205856755056,"y":18773.25878335093},"targetPosition":{"x":26211.705373039615,"y":18302.310660002582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Panel","name":"Limit Sell Order Quoted Asset","config":"{ \n \"codeName\": \"\"\n}","panelData":[{"type":"Panel Data","name":"Size","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeInQuotedAsset","id":"8b27eaa0-3c2b-42ea-830a-dbec2b2ddf21","savedPayload":{"position":{"x":26961.59633919207,"y":19289.145386940756},"targetPosition":{"x":26671.39116256476,"y":19159.96491881869},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ea964346-031e-4c3e-9e72-c644659cc7e0","savedPayload":{"position":{"x":26671.39116256476,"y":19159.96491881869},"targetPosition":{"x":26254.531247833645,"y":18974.50594254728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Size Filled","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeFilledInQuotedAsset","id":"b9d28a73-c3a6-4da6-b86b-19f524a02b8a","savedPayload":{"position":{"x":26531.878839175366,"y":19697.01120346041},"targetPosition":{"x":26417.785498098317,"y":19399.980505865737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b65033c3-ee30-48c1-9ce5-a517f4ec24f5","savedPayload":{"position":{"x":26417.785498098317,"y":19399.980505865737},"targetPosition":{"x":26254.531247833645,"y":18974.50594254728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Fees Paid","config":"{\n \"valueDecimals\": 10\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.feesPaidInQuotedAsset","id":"3b945002-5861-43c5-8cdd-835c6639acd6","savedPayload":{"position":{"x":25939.914514576503,"y":19682.149708045836},"targetPosition":{"x":26069.1824601456,"y":19391.27495675221},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b57e89db-a5bc-4d67-86ab-acee68676d5f","savedPayload":{"position":{"x":26069.1824601456,"y":19391.27495675221},"targetPosition":{"x":26254.531247833645,"y":18974.50594254728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ae18b041-f16e-4d96-8a83-56845dddf64a","savedPayload":{"position":{"x":26479.832789439744,"y":19000.909677347816},"targetPosition":{"x":26211.705373039615,"y":18302.310660002582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fb243322-ec2a-4f03-bb77-e97e4699d1c6","savedPayload":{"position":{"x":26211.862590639554,"y":18302.014361744335},"targetPosition":{"x":25471.345029942826,"y":18184.8045462756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"93c15cbf-185a-4b59-b55f-847f437bb841","savedPayload":{"position":{"x":25471.375035730583,"y":18184.75575250939},"targetPosition":{"x":24941.217404066585,"y":18714.893045797242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6a54eece-4582-4cda-a854-1cd805e00fed","savedPayload":{"position":{"x":24941.217404066585,"y":18714.893045797242},"targetPosition":{"x":24941.217404066585,"y":18714.893045797242},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}} \ No newline at end of file diff --git a/Includes/Trading-Systems/Masters-Lightning-Strike.json b/Includes/Trading-Systems/Masters-Lightning-Strike.json new file mode 100644 index 000000000..346a25bda --- /dev/null +++ b/Includes/Trading-Systems/Masters-Lightning-Strike.json @@ -0,0 +1 @@ +{"type":"Trading System","name":"Lightning Strike","config":"{ \n\"codeName\": \"Lightning Strike\"\n}","tradingStrategies":[{"type":"Trading Strategy","name":"My Trading Strategy","triggerStage":{"type":"Trigger Stage","triggerOn":{"type":"Trigger On Event","situations":[{"type":"Situation","name":"Inmediate Trigger On","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"e2ea7ded-2be1-43a3-a7fa-de3d9b8eeec4","savedPayload":{"position":{"x":31009.345537114667,"y":29641.264363248516},"targetPosition":{"x":31454.096259318965,"y":29867.859646712426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e693623c-e11f-49e3-99da-1897c7a47563","savedPayload":{"position":{"x":31454.096259318965,"y":29867.859646712426},"targetPosition":{"x":31898.948096117412,"y":30094.527093006476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9135663f-deeb-4b3f-8855-91750810a406","savedPayload":{"position":{"x":31898.948096117412,"y":30094.527093006476},"targetPosition":{"x":32344.606420886405,"y":30321.488889627235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"05f2f6b7-15ab-4386-a299-91a949de634e","savedPayload":{"position":{"x":32344.606420886405,"y":30321.488889627235},"targetPosition":{"x":32790.22293559008,"y":30548.406010951592},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","situations":[{"type":"Situation","name":"Never Trigger Off","conditions":[{"type":"Condition","name":"Close Above MA","javascriptCode":{"type":"Javascript Code","code":"false","id":"0eb59e3b-ccc8-4eab-a1f2-a7c8dea28949","savedPayload":{"position":{"x":32172.836612408217,"y":28647.647426362768},"targetPosition":{"x":32327.059454816794,"y":29122.310413107418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"31ab47dd-fe2d-47ac-9a77-08ec8beee068","savedPayload":{"position":{"x":32327.059454816794,"y":29122.310413107418},"targetPosition":{"x":32481.31006690743,"y":29597.163654202104},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fa93a965-e836-42b3-9784-79acda1468dd","savedPayload":{"position":{"x":32481.31006690743,"y":29597.163654202104},"targetPosition":{"x":32635.740280232243,"y":30072.847206458973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"8a46ebed-4ed4-4b70-882b-416ffa1b37f6","savedPayload":{"position":{"x":32635.740280232243,"y":30072.847206458973},"targetPosition":{"x":32790.22293559008,"y":30548.406010951592},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","situations":[{"type":"Situation","name":"Inmediate Take Position","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"90dda64b-17fd-469c-8066-3855596795ab","savedPayload":{"position":{"x":33705.303575265214,"y":28740.226973794255},"targetPosition":{"x":33478.88254713001,"y":29185.011603913717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4054a522-7863-4ac2-9eab-26db2a6f037f","savedPayload":{"position":{"x":33478.88254713001,"y":29185.011603913717},"targetPosition":{"x":33243.83631252263,"y":29657.20922965271},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0b8d71ab-6430-4e3f-840a-162745ab8d22","savedPayload":{"position":{"x":33243.83631252263,"y":29657.20922965271},"targetPosition":{"x":33017.00489673196,"y":30102.801586361402},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"f8ca03db-0afa-4c98-abad-d9a5d17bdd36","savedPayload":{"position":{"x":33017.00489673196,"y":30102.801586361402},"targetPosition":{"x":32790.22293559008,"y":30548.406010951592},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"a31576e1-6f47-4e02-8953-c863c79cf783","savedPayload":{"position":{"x":32790.41126749725,"y":30548.190299998096},"targetPosition":{"x":32944.88921624964,"y":31023.821104724644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"openStage":{"type":"Open Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"Entry Target Rate","code":"tradingEngine.current.episode.candle.close.value","id":"c9aada83-91b0-4b34-955a-858bd201b4e2","savedPayload":{"position":{"x":33448.25964936278,"y":29280.41438209381},"targetPosition":{"x":33500.254754356094,"y":29776.797185559502},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9158b840-9adc-4476-9137-72cc97037498","savedPayload":{"position":{"x":33500.254754356094,"y":29776.797185559502},"targetPosition":{"x":33552.172363266734,"y":30272.794022937273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInQuotedAsset":{"type":"Target Size In Quoted Asset","name":"New Target Size In Quoted Asset","formula":{"type":"Formula","name":"Target Size in Quoted Asset","code":"tradingEngine.current.episode.episodeQuotedAsset.balance.value\n","id":"a1796525-0b97-4b83-bf89-6f084f69cae2","savedPayload":{"position":{"x":34359.4235848001,"y":29685.81818369684},"targetPosition":{"x":33955.83685871737,"y":29979.266048044417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8ca6e0cd-15ac-4743-aed2-965ec3dff80c","savedPayload":{"position":{"x":33955.83685871737,"y":29979.266048044417},"targetPosition":{"x":33552.172363266734,"y":30272.794022937273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a3827280-3a20-433b-a297-51994eb7198e","savedPayload":{"position":{"x":33552.55252810221,"y":30273.18511904878},"targetPosition":{"x":33349.28643413483,"y":30729.963858881853},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"Buy Orders","config":"{\n\"percentageOfStageTargetSize\": 100\n}","marketBuyOrders":[],"marketSellOrders":[],"limitBuyOrders":[{"type":"Limit Buy Order","name":"Limit Buy","config":"{\n\"percentageOfAlgorithmSize\": 100, \n\"spawnMultipleOrders\": true\n}","orderRate":{"type":"Order Rate","name":"New Order Rate","formula":{"type":"Formula","name":"New Formula","code":"chart.at01min.support.support5Rate","id":"d6637c4c-8cec-497e-83c5-2cce8375c193","savedPayload":{"position":{"x":35336.59987734892,"y":29709.42357687428},"targetPosition":{"x":35087.1899461272,"y":30141.772361744803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3ff96eb6-5965-4f82-98d4-cd23bf8d0369","savedPayload":{"position":{"x":35087.1899461272,"y":30141.772361744803},"targetPosition":{"x":34838.09465383782,"y":30573.763304000317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Create Order Event","javascriptCode":{"type":"Javascript Code","name":"My Javascript Code","code":"true","id":"3c441caf-e674-475e-aa34-8cc028743089","savedPayload":{"position":{"x":36662.8788325754,"y":29761.31300360918},"targetPosition":{"x":36206.93157735158,"y":29964.242899029025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4162428b-4e63-4529-87be-beac9ffc13f0","savedPayload":{"position":{"x":36206.93157735158,"y":29964.242899029025},"targetPosition":{"x":35750.87094976003,"y":30167.255297960746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2395b55f-c4f9-478a-a20c-3a6ac69b9439","savedPayload":{"position":{"x":35750.87094976003,"y":30167.255297960746},"targetPosition":{"x":35294.32709772989,"y":30370.558785678044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"91a2d093-075b-443e-8d54-de0e50fdac61","savedPayload":{"position":{"x":35294.32709772989,"y":30370.558785678044},"targetPosition":{"x":34838.09465383782,"y":30573.763304000317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"cancelOrderEvent":{"type":"Cancel Order Event","name":"New Cancel Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Cancel Order Event","javascriptCode":{"type":"Javascript Code","name":"My Javascript Code","code":"true","id":"98e8e55b-b65e-436d-9d98-2b7f1eef0119","savedPayload":{"position":{"x":36792.04936103466,"y":30988.890038414003},"targetPosition":{"x":36303.84178594226,"y":30885.216153771264},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"70d79bb0-a78b-4d2e-b7ee-90335c1c7afb","savedPayload":{"position":{"x":36303.84178594226,"y":30885.216153771264},"targetPosition":{"x":35815.50924532801,"y":30781.489067390274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cc2b8c5e-90d8-4017-8726-b27d696ab4ef","savedPayload":{"position":{"x":35815.50924532801,"y":30781.489067390274},"targetPosition":{"x":35326.64731769253,"y":30677.586033600743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"14564d4f-22a0-4c7c-be38-ad1323f3dcf8","savedPayload":{"position":{"x":35326.64731769253,"y":30677.586033600743},"targetPosition":{"x":34838.09465383782,"y":30573.763304000317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"simulatedExchangeEvents":{"type":"Simulated Exchange Events","name":"New Simulated Exchange Events","simulatedPartialFill":{"type":"Simulated Partial Fill","name":"New Simulated Partial Fill","config":"{ \n\"fillProbability\": 1\n}","id":"294c2555-7134-454e-bfcd-66ba4be59dfc","savedPayload":{"position":{"x":41520.55788253979,"y":30171.333778377477},"targetPosition":{"x":41226.01897175846,"y":30058.1230241269},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"simulatedActualRate":{"type":"Simulated Actual Rate","name":"New Simulated Actual Rate","formula":{"type":"Formula","name":"New Formula","code":"// Type your formula","id":"62bea2ba-686f-410e-9fb3-02246c583ead","savedPayload":{"position":{"x":41394.62591467189,"y":30437.876322973476},"targetPosition":{"x":41351.84867186038,"y":30341.53463369237},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"bc1381f8-3d46-45e9-830a-369628b699c4","savedPayload":{"position":{"x":41351.84867186038,"y":30341.53463369237},"targetPosition":{"x":41226.01897175846,"y":30058.1230241269},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"simulatedFeesPaid":{"type":"Simulated Fees Paid","name":"New Simulated Fees Paid","config":"{ \n\"percentage\": 0.1\n}","id":"b1020734-07c6-42e9-937b-c173acf381a6","savedPayload":{"position":{"x":41112.93891067161,"y":30352.122589085964},"targetPosition":{"x":41226.01897175846,"y":30058.1230241269},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"1ecbcd0b-9822-4caa-aced-c6e38c33afb5","savedPayload":{"position":{"x":35172.22886253331,"y":30945.1599498038},"targetPosition":{"x":34838.09465383782,"y":30573.763304000317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b278718b-6ff9-44b4-8c6d-acdad79aabb5","savedPayload":{"position":{"x":34838.09465383782,"y":30573.763304000317},"targetPosition":{"x":34341.50997395279,"y":30625.85545452507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Limit Order","name":"Limit Buy Order #1","id":"008e16b8-9487-4db3-81e1-d11c19a7f59e"}}}],"limitSellOrders":[],"id":"e635ed9f-3c8c-45bf-8be0-e3836fa0844e","savedPayload":{"position":{"x":34341.50997395279,"y":30625.85545452507},"targetPosition":{"x":33845.33086761034,"y":30677.90651289832},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"6bdce67c-b2c2-40b6-940e-6c929d074e05","savedPayload":{"position":{"x":33845.33086761034,"y":30677.90651289832},"targetPosition":{"x":33349.28643413483,"y":30729.963858881853},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"d2fc92c9-b2cc-4332-aad3-d82234f01bf4","savedPayload":{"position":{"x":33349.28643413483,"y":30729.963858881853},"targetPosition":{"x":32944.88921624964,"y":31023.821104724644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","managedStopLoss":{"type":"Managed Stop Loss","name":"New Managed Stop Loss","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"Stop Loss Phase #1","code":"if (tradingEngine.last.limitOrders.orderName.value === 'Limit Buy') \n{ tradingEngine.last.limitOrders.rate.value } \nelse \n{ 0 }","id":"5b32bb95-b7be-427a-b448-bbc3f6c63275","savedPayload":{"position":{"x":34839.873603041866,"y":31473.857444803758},"targetPosition":{"x":34343.37557861643,"y":31421.63871479898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"b65f8638-f70a-45a4-9649-47d71ea1aa9d","savedPayload":{"position":{"x":34343.37557861643,"y":31421.63871479898},"targetPosition":{"x":33846.11407091601,"y":31369.428076285833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8df55ed2-98c6-473e-8a09-0fd0f55af210","savedPayload":{"position":{"x":33846.11407091601,"y":31369.428076285833},"targetPosition":{"x":33348.896472627435,"y":31317.354433000375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"managedTakeProfit":{"type":"Managed Take Profit","name":"New Managed Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"chart.at01min.candle.close * 1.2","id":"bb6b732f-e20d-4945-a545-ff2826ec145e","savedPayload":{"position":{"x":33958.556597032,"y":32687.137344678424},"targetPosition":{"x":33755.50700259472,"y":32230.97597459398},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"d0d56645-d5b6-4b61-8970-b32163e23daa","savedPayload":{"position":{"x":33755.50700259472,"y":32230.97597459398},"targetPosition":{"x":33552.15421564119,"y":31774.11996495485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6f5ed0dc-4133-473b-9095-cf809e6ca000","savedPayload":{"position":{"x":33552.15421564119,"y":31774.11996495485},"targetPosition":{"x":33348.896472627435,"y":31317.354433000375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"c44831c2-dacf-4853-b70a-69e5b4276dff","savedPayload":{"position":{"x":33349.42756141783,"y":31317.69384930672},"targetPosition":{"x":32944.88921624964,"y":31023.821104724644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"Target Rate Formula","code":"tradingEngine.last.limitOrders.orderStatistics.actualRate.value","id":"326c2266-7d3a-43ca-9847-e6a7ca93ddb5","savedPayload":{"position":{"x":33562.00915092142,"y":32729.76069066402},"targetPosition":{"x":33228.11772863275,"y":32358.84191313465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9937bbc6-860d-4460-aca0-0bd2517b76e5","savedPayload":{"position":{"x":33228.11772863275,"y":32358.84191313465},"targetPosition":{"x":32894.44636325951,"y":31988.1840472132},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInBaseAsset":{"type":"Target Size In Base Asset","name":"New Target Size In Base Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.episodeBaseAsset.balance.value","id":"7400ed81-c264-4e91-b467-89acf86dfcf6","savedPayload":{"position":{"x":32586.49857989301,"y":32937.804274555354},"targetPosition":{"x":32740.493266037513,"y":32463.024171062556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0e21ecb7-0090-478c-b439-48c1e6e79da1","savedPayload":{"position":{"x":32740.493266037513,"y":32463.024171062556},"targetPosition":{"x":32894.44636325951,"y":31988.1840472132},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5fe56eb2-92f0-407c-b400-4a19e748b5ec","savedPayload":{"position":{"x":32894.49550024195,"y":31988.29408296463},"targetPosition":{"x":32790.553974415394,"y":31499.21734730436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeExecution":{"type":"Close Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"Race to Break Even","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[],"marketSellOrders":[],"limitBuyOrders":[],"limitSellOrders":[{"type":"Limit Sell Order","name":"Profit 0.6","config":"{\n\"percentageOfAlgorithmSize\": 100, \n\"spawnMultipleOrders\": false \n}","orderRate":{"type":"Order Rate","name":"New Order Rate","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.exitTargetRate.value * 1.008","id":"53978d5a-9efe-43c9-8f90-33095de4527f","savedPayload":{"position":{"x":33621.24344862895,"y":32476.60033154521},"targetPosition":{"x":33313.58090376129,"y":32329.483700063996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"31dfa984-8378-49cc-8429-82245a6401b3","savedPayload":{"position":{"x":33313.58090376129,"y":32329.483700063996},"targetPosition":{"x":32959.141897771595,"y":32160.051295419304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"b090d786-eab4-4a8c-bd9d-9d453f3359fa","savedPayload":{"position":{"x":33427.40974219164,"y":33484.534458375194},"targetPosition":{"x":33313.69998819087,"y":33162.89019774662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96e2f7c4-9eb8-4dfc-b186-793785812ffc","savedPayload":{"position":{"x":33313.69998819087,"y":33162.89019774662},"targetPosition":{"x":33199.93190041815,"y":32841.072558189335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"60b82e59-a9f8-414f-9483-c516518d8e8e","savedPayload":{"position":{"x":33199.93190041815,"y":32841.072558189335},"targetPosition":{"x":33085.99884170641,"y":32518.844512411095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"5837fa08-1862-4a07-a10d-c1a35cbca9df","savedPayload":{"position":{"x":33085.99884170641,"y":32518.844512411095},"targetPosition":{"x":32959.141897771595,"y":32160.051295419304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"cancelOrderEvent":{"type":"Cancel Order Event","name":"New Cancel Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[6].orderCounters.periods.value >= 2","id":"1362c6f6-45e3-4bcf-9d07-2138493dd413","savedPayload":{"position":{"x":32353.927095784515,"y":33428.47243930165},"targetPosition":{"x":32501.01383128465,"y":33120.04035704301},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"shortcutKey":"a"}}},"id":"89d67597-c113-4e7e-94ee-03f4e8c69c19","savedPayload":{"position":{"x":32501.01383128465,"y":33120.04035704301},"targetPosition":{"x":32647.963121046443,"y":32811.9904994038},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"acb050f9-35d5-400a-a5f5-8810c1fa9df5","savedPayload":{"position":{"x":32647.963121046443,"y":32811.9904994038},"targetPosition":{"x":32795.100329616864,"y":32503.745011836843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"2dbc0df0-6c1c-4e5d-bbd0-3b1893706a93","savedPayload":{"position":{"x":32795.100329616864,"y":32503.745011836843},"targetPosition":{"x":32959.141897771595,"y":32160.051295419304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b80fe127-d306-4fc1-a3a8-95bf88de046f","savedPayload":{"position":{"x":32215.308098285655,"y":32638.64240981047},"targetPosition":{"x":32048.374094968323,"y":32167.526863652147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Limit Order","name":"Limit Sell Order #7","id":"5bfce673-ceb2-4104-bd7e-75d62453164e"}}},{"type":"Limit Sell Order","name":"Profit 0.5","config":"{\n\"percentageOfAlgorithmSize\": 100, \n\"spawnMultipleOrders\": false \n}","orderRate":{"type":"Order Rate","name":"New Order Rate","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.exitTargetRate.value * 1.007","id":"4df6dc0e-887a-4627-9fd1-75926327eb09","savedPayload":{"position":{"x":33342.37163445384,"y":32751.647958170128},"targetPosition":{"x":33114.24014869904,"y":32497.971660415038},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8306171d-b7d4-4b7f-a5c5-2bc320581a55","savedPayload":{"position":{"x":33114.24014869904,"y":32497.971660415038},"targetPosition":{"x":32827.347172201655,"y":32178.99431482714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.last.limitOrders.orderName.value === 'Profit 0.6'","id":"b5c796b8-6da7-4e15-9063-7b778a6f92e7","savedPayload":{"position":{"x":32753.28385683019,"y":33603.32433907591},"targetPosition":{"x":32771.031980643544,"y":33262.64979540346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4e968238-bb89-4633-8840-17a3eee97127","savedPayload":{"position":{"x":32771.031980643544,"y":33262.64979540346},"targetPosition":{"x":32788.818371948895,"y":32920.93872675964},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b6f8f8a7-6201-40b8-85ef-f566d24f6f41","savedPayload":{"position":{"x":32788.818371948895,"y":32920.93872675964},"targetPosition":{"x":32806.499076037275,"y":32580.314162567658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"f2509852-f910-40aa-9786-4858a185755b","savedPayload":{"position":{"x":32806.499076037275,"y":32580.314162567658},"targetPosition":{"x":32827.347172201655,"y":32178.99431482714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"cancelOrderEvent":{"type":"Cancel Order Event","name":"New Cancel Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","code":"chart.at24hs.candlesProbability.begin > chart.at24hs.candlesProbability.begin","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[5].orderCounters.periods.value >= 2","id":"30d37563-9245-4814-a2d2-e81566fdfafb","savedPayload":{"position":{"x":31767.482740223073,"y":33132.94087452211},"targetPosition":{"x":32020.795367545423,"y":32904.8870538829},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7572eda9-8711-454e-abd3-ee9f4bae2a60","savedPayload":{"position":{"x":32020.795367545423,"y":32904.8870538829},"targetPosition":{"x":32274.6529831055,"y":32676.382337493917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fc3d3165-f40a-4224-aea1-8b7c55c29468","savedPayload":{"position":{"x":32274.6529831055,"y":32676.382337493917},"targetPosition":{"x":32528.8800353613,"y":32447.629327210394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"036b27b4-55f7-4f1b-80cc-914950ce3016","savedPayload":{"position":{"x":32528.8800353613,"y":32447.629327210394},"targetPosition":{"x":32827.347172201655,"y":32178.99431482714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8a730b1e-e8d8-4ca0-9342-e58b27b3c0a2","savedPayload":{"position":{"x":32022.365051581302,"y":32666.740681218107},"targetPosition":{"x":32048.374094968323,"y":32167.526863652147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Limit Order","name":"Limit Sell Order #6","id":"90d28d1e-6fd2-4a83-a423-3f34bf455004"}}},{"type":"Limit Sell Order","name":"Profit 0.4","config":"{\n\"percentageOfAlgorithmSize\": 100, \n\"spawnMultipleOrders\": false \n}","orderRate":{"type":"Order Rate","name":"New Order Rate","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.exitTargetRate.value * 1.006","id":"8cffe4c6-a60c-442c-9c67-27860832bdff","savedPayload":{"position":{"x":32943.211316179266,"y":32839.31882310109},"targetPosition":{"x":32829.14584043107,"y":32516.8039580411},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"882824fb-0d18-4c48-8cb1-c60fb9b2e4b3","savedPayload":{"position":{"x":32829.14584043107,"y":32516.8039580411},"targetPosition":{"x":32698.2875129115,"y":32146.75354170856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.last.limitOrders.orderName.value === 'Profit 0.5'","id":"546d2700-547f-4fbc-b8cc-5b73a97ab69d","savedPayload":{"position":{"x":32093.91354794959,"y":33415.25520480642},"targetPosition":{"x":32240.804325899364,"y":33107.102822068424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"631f4eaa-9716-46e5-9022-a0f00231e34c","savedPayload":{"position":{"x":32240.804325899364,"y":33107.102822068424},"targetPosition":{"x":32387.681324142817,"y":32798.90636057538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"aec594bc-6efe-4273-971e-0112bc46ec2b","savedPayload":{"position":{"x":32387.681324142817,"y":32798.90636057538},"targetPosition":{"x":32534.538817171982,"y":32490.584162567917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"029f599b-b17f-4851-88d7-9c80b1662af5","savedPayload":{"position":{"x":32534.538817171982,"y":32490.584162567917},"targetPosition":{"x":32698.2875129115,"y":32146.75354170856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"cancelOrderEvent":{"type":"Cancel Order Event","name":"New Cancel Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[4].orderCounters.periods.value >= 2","id":"5e1a76ec-7ab1-47d5-8f65-9e2aed7e5526","savedPayload":{"position":{"x":31373.74115806557,"y":32615.46628851325},"targetPosition":{"x":31695.284766726683,"y":32501.66880793689},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a8091739-137a-4ba3-9427-02c44396d1c5","savedPayload":{"position":{"x":31695.284766726683,"y":32501.66880793689},"targetPosition":{"x":32017.20537803662,"y":32387.751604891397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6e36cc24-a86d-4889-a57f-de80068d33f0","savedPayload":{"position":{"x":32017.20537803662,"y":32387.751604891397},"targetPosition":{"x":32339.328943839944,"y":32273.81007283237},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"07757b18-bb3e-45f5-8ae6-a635b479e703","savedPayload":{"position":{"x":32339.328943839944,"y":32273.81007283237},"targetPosition":{"x":32698.2875129115,"y":32146.75354170856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e065f375-4663-45f0-8d7a-e5eee5d90cb4","savedPayload":{"position":{"x":31833.24418607585,"y":32618.729335594864},"targetPosition":{"x":32048.374094968323,"y":32167.526863652147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Limit Order","name":"Limit Sell Order #5","id":"3c44b04d-6b6b-4278-ba85-898b1f12cdfa"}}},{"type":"Limit Sell Order","name":"Profit 0.3","config":"{\n\"percentageOfAlgorithmSize\": 100, \n\"spawnMultipleOrders\": false \n}","orderRate":{"type":"Order Rate","name":"New Order Rate","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.exitTargetRate.value * 1.005","id":"ed5df221-812e-47e0-8ee5-34cee0346cea","savedPayload":{"position":{"x":32553.51909517061,"y":32800.50308625388},"targetPosition":{"x":32571.200927774764,"y":32459.417103149208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5673a468-77ac-4312-a1b1-ea5e9d070988","savedPayload":{"position":{"x":32571.200927774764,"y":32459.417103149208},"targetPosition":{"x":32591.59695497345,"y":32067.128743916008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.last.limitOrders.orderName.value === 'Profit 0.4'","id":"fcd99b77-0333-4105-950d-eb03ffc2129e","savedPayload":{"position":{"x":31547.725744553733,"y":33007.75239234119},"targetPosition":{"x":31801.488540719874,"y":32779.21747384216},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b5c038b2-15ae-450f-8f86-242e2402257d","savedPayload":{"position":{"x":31801.488540719874,"y":32779.21747384216},"targetPosition":{"x":32055.172033357696,"y":32550.691911189846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"12e843fe-9a85-4300-b4e5-097af10db775","savedPayload":{"position":{"x":32055.172033357696,"y":32550.691911189846},"targetPosition":{"x":32308.885231247605,"y":32322.015684571852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"c9610e5d-0cb9-426a-af86-f7bfdb230d7b","savedPayload":{"position":{"x":32308.885231247605,"y":32322.015684571852},"targetPosition":{"x":32591.59695497345,"y":32067.128743916008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"cancelOrderEvent":{"type":"Cancel Order Event","name":"New Cancel Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","code":"chart.at24hs.candlesProbability.begin > chart.at24hs.candlesProbability.begin","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[3].orderCounters.periods.value >= 2","id":"ed52c351-2965-4e4d-916e-0d882efc332e","savedPayload":{"position":{"x":31187.987109898088,"y":31994.510992700474},"targetPosition":{"x":31529.076625253387,"y":32012.1605228485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"675c8f52-d97a-4afc-a2e4-bedcd501662f","savedPayload":{"position":{"x":31529.076625253387,"y":32012.1605228485},"targetPosition":{"x":31870.158219884866,"y":32029.806729858356},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c9155dd9-9e2c-4254-8d2c-63d9c32e40eb","savedPayload":{"position":{"x":31870.158219884866,"y":32029.806729858356},"targetPosition":{"x":32211.453195252943,"y":32047.489815598798},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"cbf59193-c567-4b58-a83c-d9871204a520","savedPayload":{"position":{"x":32211.453195252943,"y":32047.489815598798},"targetPosition":{"x":32591.59695497345,"y":32067.128743916008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e8cb9d8f-6e16-4b5c-a5e4-141f2047ce19","savedPayload":{"position":{"x":31676.91312851621,"y":32501.999369944042},"targetPosition":{"x":32048.374094968323,"y":32167.526863652147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Limit Order","name":"Limit Sell Order #4","id":"7fb716f8-8bba-4c0d-8df3-69a7bc9ae317"}}},{"type":"Limit Sell Order","name":"Profit 0.2","config":"{\n\"percentageOfAlgorithmSize\": 100, \n\"spawnMultipleOrders\": false \n}","orderRate":{"type":"Order Rate","name":"New Order Rate","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.exitTargetRate.value * 1.004","id":"25c6516a-f1d9-461f-b012-6d5524320da9","savedPayload":{"position":{"x":32207.844113213963,"y":32615.515782967275},"targetPosition":{"x":32354.53074678532,"y":32307.53074093093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"29b9bd1b-a6e8-4a75-9df9-527db78c0e7b","savedPayload":{"position":{"x":32354.53074678532,"y":32307.53074093093},"targetPosition":{"x":32523.56779071538,"y":31952.713635987035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.last.limitOrders.orderName.value === 'Profit 0.3'","id":"a0b1e36b-640d-4ec8-96ea-d26597b61e8e","savedPayload":{"position":{"x":31199.352197392087,"y":32422.148920498068},"targetPosition":{"x":31520.907001830434,"y":32308.29092736564},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dab80166-691d-47b6-964a-76df68e98c42","savedPayload":{"position":{"x":31520.907001830434,"y":32308.29092736564},"targetPosition":{"x":31842.758596062507,"y":32194.26264579912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"97061747-71e5-4abe-b339-30e3fd35519f","savedPayload":{"position":{"x":31842.758596062507,"y":32194.26264579912},"targetPosition":{"x":32164.840994373364,"y":32080.03172804365},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"998dc335-6c8b-4559-9bbd-8c73bc5844da","savedPayload":{"position":{"x":32164.840994373364,"y":32080.03172804365},"targetPosition":{"x":32523.56779071538,"y":31952.713635987035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"cancelOrderEvent":{"type":"Cancel Order Event","name":"New Cancel Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[2].orderCounters.periods.value >= 2","id":"54de11dd-16f2-4c11-b530-c9b1bcb8a3de","savedPayload":{"position":{"x":31255.13313779977,"y":31348.81865287888},"targetPosition":{"x":31563.101886767312,"y":31495.460555517115},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"77ebec63-371b-40c5-9aa7-4779d885b269","savedPayload":{"position":{"x":31563.101886767312,"y":31495.460555517115},"targetPosition":{"x":31871.55684009257,"y":31642.305773593755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"34f00d60-b8aa-4eda-8276-5bbaa3d6d4ea","savedPayload":{"position":{"x":31871.55684009257,"y":31642.305773593755},"targetPosition":{"x":32179.72831837753,"y":31789.035325805817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"431cdafe-93a5-4647-8ea4-89fd44d9abf0","savedPayload":{"position":{"x":32179.72831837753,"y":31789.035325805817},"targetPosition":{"x":32523.56779071538,"y":31952.713635987035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5d13da4a-9bdf-44f9-8e7b-ca05423ce0a4","savedPayload":{"position":{"x":31577.158343581337,"y":32334.32835337361},"targetPosition":{"x":32048.374094968323,"y":32167.526863652147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Limit Order","name":"Limit Sell Order #3","id":"a5d970bf-0f85-4546-9c4a-a0a113e7ea04"}}},{"type":"Limit Sell Order","name":"Profit 0.1","config":"{\n\"percentageOfAlgorithmSize\": 100, \n\"spawnMultipleOrders\": false \n}","orderRate":{"type":"Order Rate","name":"New Order Rate","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.exitTargetRate.value * 1.003","id":"f6a2eda5-75a8-4305-961d-9a1c52b1d837","savedPayload":{"position":{"x":31958.86379158337,"y":32312.928426319493},"targetPosition":{"x":32212.764150040988,"y":32084.07671568887},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"66b3fe34-fe06-408f-8181-fc696710c2a9","savedPayload":{"position":{"x":32212.764150040988,"y":32084.07671568887},"targetPosition":{"x":32504.46893109646,"y":31821.147179757805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.last.limitOrders.orderName.value === 'Profit 0.2'","id":"f0c458d6-d23f-48c4-9156-593429089f97","savedPayload":{"position":{"x":31101.07733211601,"y":31749.350114796194},"targetPosition":{"x":31441.822904391942,"y":31766.930465798825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"488d1160-ae61-45c0-b295-b533b38bbeb5","savedPayload":{"position":{"x":31441.822904391942,"y":31766.930465798825},"targetPosition":{"x":31783.054151700322,"y":31784.45673824515},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c296ade6-4a0b-40d3-8ace-f02649f96da5","savedPayload":{"position":{"x":31783.054151700322,"y":31784.45673824515},"targetPosition":{"x":32124.190154471245,"y":31801.83685937668},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"8182ab58-4809-48ee-a481-06a6954dc89f","savedPayload":{"position":{"x":32124.190154471245,"y":31801.83685937668},"targetPosition":{"x":32504.46893109646,"y":31821.147179757805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"cancelOrderEvent":{"type":"Cancel Order Event","name":"New Cancel Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.exchangeOrders.limitSellOrders.limitOrders[1].orderCounters.periods.value >= 2","id":"d255fc7b-cb37-471b-8fed-9031a1170765","savedPayload":{"position":{"x":31563.560326628227,"y":30777.8882995854},"targetPosition":{"x":31792.233735642047,"y":31031.474377012506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"317e867c-c4a0-48db-9bdf-75d5225f22bc","savedPayload":{"position":{"x":31792.233735642047,"y":31031.474377012506},"targetPosition":{"x":32020.747747545884,"y":31284.828001166636},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c287f36d-074b-498c-ad12-be1bf473be63","savedPayload":{"position":{"x":32020.747747545884,"y":31284.828001166636},"targetPosition":{"x":32249.509315754025,"y":31538.427362495073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"7c575bbe-7429-4167-aba5-e7a3b59bd958","savedPayload":{"position":{"x":32249.509315754025,"y":31538.427362495073},"targetPosition":{"x":32504.46893109646,"y":31821.147179757805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"de750ccf-154f-4495-a9fd-cee163cccf66","savedPayload":{"position":{"x":31549.17302048519,"y":32141.511322089547},"targetPosition":{"x":32048.374094968323,"y":32167.526863652147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Limit Order","name":"Limit Sell Order #2","id":"e133f5d4-034b-4333-9ea4-a6b52183476e"}}},{"type":"Limit Sell Order","name":"Profit 0.0","config":"{\n\"percentageOfAlgorithmSize\": 100, \n\"spawnMultipleOrders\": false \n}","orderRate":{"type":"Order Rate","name":"New Order Rate","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.exitTargetRate.value * 1.002","id":"9344ebf6-3efa-4904-a952-d2dbb1b0ead1","savedPayload":{"position":{"x":31805.26963417929,"y":31749.68065670642},"targetPosition":{"x":32145.566814320024,"y":31722.794674652483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ef824607-7571-4f06-84d6-ce4e97e4cc62","savedPayload":{"position":{"x":32145.566814320024,"y":31722.794674652483},"targetPosition":{"x":32537.128049335588,"y":31691.808105691816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.last.limitOrders.orderName.value === 'Profit 0.1'","id":"91c9b7c1-1250-450e-b7b3-b5b5bf4abd77","savedPayload":{"position":{"x":31739.95885407582,"y":30535.386880577542},"targetPosition":{"x":31933.406108295792,"y":30816.274297492913},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cb5f3c82-b13e-4edb-a738-89f653250d56","savedPayload":{"position":{"x":31933.406108295792,"y":30816.274297492913},"targetPosition":{"x":32127.145253834915,"y":31097.449256664135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ff70b3ad-19b0-4be5-bf58-f3b9253ac170","savedPayload":{"position":{"x":32127.145253834915,"y":31097.449256664135},"targetPosition":{"x":32321.169212353423,"y":31378.65588284892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"5658a835-b46f-40c4-a7c1-5d5d6f10b95b","savedPayload":{"position":{"x":32321.169212353423,"y":31378.65588284892},"targetPosition":{"x":32537.128049335588,"y":31691.808105691816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c077f171-dabc-49e6-8956-3e1144a0b0ef","savedPayload":{"position":{"x":31597.307960676673,"y":31952.294830683208},"targetPosition":{"x":32048.374094968323,"y":32167.526863652147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Limit Order","name":"Limit Sell Order #1","id":"929c1c8c-1964-4495-991c-0a516f1e9ba0"}}}],"id":"0fe764ce-3312-4964-9841-b55500e3f80a","savedPayload":{"position":{"x":32048.374094968323,"y":32167.526863652147},"targetPosition":{"x":32419.233706128747,"y":31833.597708519756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"33993524-848d-4d57-a503-075c5df4a31b","savedPayload":{"position":{"x":32419.233706128747,"y":31833.597708519756},"targetPosition":{"x":32790.553974415394,"y":31499.21734730436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"f4d8925b-697e-4f52-ad2e-d368780739d0","savedPayload":{"position":{"x":32790.553974415394,"y":31499.21734730436},"targetPosition":{"x":32944.88921624964,"y":31023.821104724644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"711041eb-3055-4611-b64f-570363bae854","savedPayload":{"position":{"x":32944.88921624964,"y":31023.821104724644},"targetPosition":{"x":32445.365708673427,"y":31023.826468868458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"628b758d-ffff-445f-9d4f-8aa480a13db3","savedPayload":{"position":{"x":32445.365708673427,"y":31023.826468868458},"targetPosition":{"x":32445.365708673427,"y":31023.826468868458},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}} \ No newline at end of file diff --git a/Includes/Trading-Systems/Sparta-BBTB-BTC-USDT.json b/Includes/Trading-Systems/Sparta-BBTB-BTC-USDT.json new file mode 100644 index 000000000..2dc9b485a --- /dev/null +++ b/Includes/Trading-Systems/Sparta-BBTB-BTC-USDT.json @@ -0,0 +1 @@ +{"type":"Trading System","name":"BB Top Bounce","config":"{ \n\"codeName\": \"\"\n}","tradingStrategies":[{"type":"Trading Strategy","name":"S1 - 3H Down","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"99948a6e-e866-4339-86ba-eac367226312","savedPayload":{"position":{"x":32731.518164854635,"y":37190.36887098105},"targetPosition":{"x":33060.41970975256,"y":37269.656689137395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f0534c68-ab47-4370-b1fd-b3be4c1c262f","savedPayload":{"position":{"x":33060.41970975256,"y":37269.656689137395},"targetPosition":{"x":33387.63409912428,"y":37347.863570272166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"d3bd1690-1f94-484b-ac3c-7be2c7be85ed","savedPayload":{"position":{"x":32842.20246357981,"y":36950.68106756541},"targetPosition":{"x":33114.99571836738,"y":37149.45357431718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e2d7334d-cf52-44d9-a20e-5be201ca6799","savedPayload":{"position":{"x":33114.99571836738,"y":37149.45357431718},"targetPosition":{"x":33387.63409912428,"y":37347.863570272166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"d1fa707f-eb75-4b1c-8117-688b9b94e539","savedPayload":{"position":{"x":33035.87192606493,"y":36771.32540679499},"targetPosition":{"x":33211.85742627204,"y":37059.584266077094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fb71bcfb-2a40-4e8a-b8e8-b492128350a0","savedPayload":{"position":{"x":33211.85742627204,"y":37059.584266077094},"targetPosition":{"x":33387.63409912428,"y":37347.863570272166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerChannel.direction === \"Down\"","id":"8c8c5128-b88b-44a5-8e36-d5c61127404f","savedPayload":{"position":{"x":33284.128600701835,"y":36682.927951575584},"targetPosition":{"x":33335.998983874386,"y":37015.50846189238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"22246178-a8f9-4ec8-b55b-36cf7a24fbff","savedPayload":{"position":{"x":33335.998983874386,"y":37015.50846189238},"targetPosition":{"x":33387.63409912428,"y":37347.863570272166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Medium, Steep or Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerSubChannel.slope === \"Medium\" || chart.at03hs.bollingerSubChannel.slope === \"Steep\" || chart.at03hs.bollingerSubChannel.slope === \"Extreme\" ","id":"bf8df41c-c62f-4cd6-840e-1dd538359c3b","savedPayload":{"position":{"x":33546.11930569506,"y":36691.780308464346},"targetPosition":{"x":33467.032289939845,"y":37020.43149244697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9dba774d-1afa-40dd-b5ec-8f4029824473","savedPayload":{"position":{"x":33467.032289939845,"y":37020.43149244697},"targetPosition":{"x":33387.63409912428,"y":37347.863570272166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerSubChannel.slope === \"Gentle\"","id":"c4428437-7308-46f3-884e-22d2aac8d1a0","savedPayload":{"position":{"x":33784.2608886771,"y":36803.64027212912},"targetPosition":{"x":33586.47885732954,"y":37076.654594108455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7766453d-73ca-46f7-a39c-00f4f11af05e","savedPayload":{"position":{"x":33586.47885732954,"y":37076.654594108455},"targetPosition":{"x":33387.63409912428,"y":37347.863570272166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"eac9b2d4-4364-4116-9d99-e92b8bbce5e7","savedPayload":{"position":{"x":33962.80377358185,"y":36997.65068448965},"targetPosition":{"x":33675.792679883685,"y":37172.304005020014},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"40cb1853-f93e-4023-8d45-708376281bde","savedPayload":{"position":{"x":33675.792679883685,"y":37172.304005020014},"targetPosition":{"x":33387.63409912428,"y":37347.863570272166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8d558598-60b5-4104-9a84-1773b125c509","savedPayload":{"position":{"x":33387.63409912428,"y":37347.863570272166},"targetPosition":{"x":33445.77076862617,"y":37715.729173028114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"3afd4ef5-2175-48fa-844f-e4e4ed775b26","savedPayload":{"position":{"x":33445.74459663652,"y":37714.36470247466},"targetPosition":{"x":33498.2773130971,"y":38047.89479105882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"0fb11814-5ba2-4c23-86b0-e6f8c01363e6","savedPayload":{"position":{"x":34262.89009252227,"y":36998.8133108698},"targetPosition":{"x":34064.33752467561,"y":37271.53446038959},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"32415e55-51cb-44cf-a0d9-9de73b946da8","savedPayload":{"position":{"x":34064.33752467561,"y":37271.53446038959},"targetPosition":{"x":33864.55491551369,"y":37543.9353661892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"317dd29a-db32-4f10-bee0-325b7a7c816c","savedPayload":{"position":{"x":33864.55491551369,"y":37543.9353661892},"targetPosition":{"x":33645.648753044865,"y":37845.16666057375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"547d578f-4568-4b1f-965d-1d598b7b67bb","savedPayload":{"position":{"x":33696.58473046552,"y":37774.553850532815},"targetPosition":{"x":33498.2773130971,"y":38047.89479105882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"903651ac-50d3-44ea-aae2-0b6bbe43b989","savedPayload":{"position":{"x":34355.74147948366,"y":37281.32097261274},"targetPosition":{"x":34277.82856077261,"y":37609.14402458687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4c4c6084-bebe-46ce-a12f-68924568c81d","savedPayload":{"position":{"x":34277.82856077261,"y":37609.14402458687},"targetPosition":{"x":34199.04195435775,"y":37936.78865826939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"b16e3f56-5a3f-4af9-a9d1-ff3bbf9ca0b8","savedPayload":{"position":{"x":34595.098807932314,"y":37390.303029419825},"targetPosition":{"x":34397.582093036406,"y":37663.72304197581},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c4e1f247-db57-4488-81e9-c7602562b8f3","savedPayload":{"position":{"x":34397.582093036406,"y":37663.72304197581},"targetPosition":{"x":34199.04195435775,"y":37936.78865826939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"34452811-c161-4b33-8335-bc996a8638ad","savedPayload":{"position":{"x":34774.984518461744,"y":37583.869686250524},"targetPosition":{"x":34487.29634898042,"y":37759.756292375554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"db35b110-1991-4e3d-a1bd-04b0d1bad669","savedPayload":{"position":{"x":34487.29634898042,"y":37759.756292375554},"targetPosition":{"x":34199.04195435775,"y":37936.78865826939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerChannel.direction === \"Down\"","id":"8fcf0aed-cd6b-4df9-8ec4-4511fcde66d8","savedPayload":{"position":{"x":34864.87840854623,"y":37831.03117225531},"targetPosition":{"x":34531.98415576597,"y":37884.689891398666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"48bd56ea-0d5a-404d-a887-061493bebbcf","savedPayload":{"position":{"x":34531.98415576597,"y":37884.689891398666},"targetPosition":{"x":34199.04195435775,"y":37936.78865826939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Medium, Steep or Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerSubChannel.slope === \"Medium\" || chart.at03hs.bollingerSubChannel.slope === \"Steep\" || chart.at03hs.bollingerSubChannel.slope === \"Extreme\" ","id":"40b36ec9-ebf1-43fe-8003-f0d130b7cb36","savedPayload":{"position":{"x":34855.28028575018,"y":38093.04448089047},"targetPosition":{"x":34527.051704030295,"y":38015.413342233514},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6c90a754-52bd-47cf-a3b5-95ad037bbb62","savedPayload":{"position":{"x":34527.051704030295,"y":38015.413342233514},"targetPosition":{"x":34199.04195435775,"y":37936.78865826939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerSubChannel.slope === \"Gentle\"","id":"3f28257c-cc33-4c59-b40b-85bc88821f96","savedPayload":{"position":{"x":34746.050375742656,"y":38332.92187256324},"targetPosition":{"x":34472.4205548977,"y":38134.097494807356},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fc2fb509-2854-4359-aa1e-b32a2174bd35","savedPayload":{"position":{"x":34472.4205548977,"y":38134.097494807356},"targetPosition":{"x":34199.04195435775,"y":37936.78865826939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"5226a3d7-c8f8-41bd-9b45-f6238576628f","savedPayload":{"position":{"x":34551.490078957395,"y":38511.45050035295},"targetPosition":{"x":34375.022298189615,"y":38224.620475473894},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0b38876e-bcad-4cec-90e2-c2e358723d29","savedPayload":{"position":{"x":34375.022298189615,"y":38224.620475473894},"targetPosition":{"x":34199.04195435775,"y":37936.78865826939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"46e2ecf6-82ae-435d-a3a0-d5e2903404fd","savedPayload":{"position":{"x":34199.04195435775,"y":37936.78865826939},"targetPosition":{"x":33831.30946267296,"y":37995.01558907769},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"93418d2a-3047-4f80-aa59-0c6fdb35ad43","savedPayload":{"position":{"x":33831.34353355416,"y":37994.70770500225},"targetPosition":{"x":33498.2773130971,"y":38047.89479105882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"1055a2cc-e93a-4dd8-a992-f56553527ddd","savedPayload":{"position":{"x":33498.2773130971,"y":38047.89479105882},"targetPosition":{"x":33102.23720608786,"y":38593.35305308248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"My Formula","code":"tradingEngine.current.episode.candle.close.value","id":"e0c6286e-4947-427a-aea3-a793fb1acf75","savedPayload":{"position":{"x":34125.782595621764,"y":37403.1245364927},"targetPosition":{"x":34055.38048686183,"y":37733.83563271427},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fff26070-c80f-4e78-bb0f-71e16d943698","savedPayload":{"position":{"x":34055.38048686183,"y":37733.83563271427},"targetPosition":{"x":33969.50953122947,"y":38134.67760101371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInBaseAsset":{"type":"Target Size In Base Asset","name":"New Target Size In Base Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.episodeBaseAsset.balance.value","id":"f2dd66ad-27a6-4859-aeb9-bd7316555b99","savedPayload":{"position":{"x":34679.71385833121,"y":37904.1503790434},"targetPosition":{"x":34358.96337592101,"y":38008.26155003377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b5e86b74-5db2-4019-85c6-ea397d675f50","savedPayload":{"position":{"x":34358.96337592101,"y":38008.26155003377},"targetPosition":{"x":33969.50953122947,"y":38134.67760101371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f7416bc8-8652-4670-965b-9b1f1f3da0ad","savedPayload":{"position":{"x":33969.966280816625,"y":38134.68081699356},"targetPosition":{"x":33743.57078386684,"y":38385.13825558944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[],"marketSellOrders":[{"type":"Market Sell Order","name":"Quick Entry","config":"{\n\"percentageOfAlgorithmSize\": 100\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"0d3863ca-6912-4fea-8b35-0889324ea7f5","savedPayload":{"position":{"x":36051.22643381173,"y":38874.35179954324},"targetPosition":{"x":35721.483223790114,"y":38804.401883272214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5b5e9ad8-778b-42ae-aa7f-c303e129df7f","savedPayload":{"position":{"x":35721.483223790114,"y":38804.401883272214},"targetPosition":{"x":35391.96059883828,"y":38734.51158327637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1fbcc4bd-145e-43ac-8e1a-721435920b4a","savedPayload":{"position":{"x":35391.96059883828,"y":38734.51158327637},"targetPosition":{"x":35062.31125895665,"y":38664.609929936865},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"8548a589-0711-4acc-aba9-6a77970c7b8f","savedPayload":{"position":{"x":35062.31125895665,"y":38664.609929936865},"targetPosition":{"x":34733.082408515984,"y":38594.82301752553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"70c7f73b-a1a6-467c-a0eb-a284133ac599","savedPayload":{"position":{"x":34733.082408515984,"y":38594.82301752553},"targetPosition":{"x":34403.20100979214,"y":38524.93680449382},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Sell Order #1","id":"8e404329-d41f-41e0-ad5a-c84ee1fa2604"}}}],"limitBuyOrders":[],"limitSellOrders":[],"id":"09d1d3b2-8917-4792-b2a4-4902156c05b2","savedPayload":{"position":{"x":34403.20100979214,"y":38524.93680449382},"targetPosition":{"x":34073.295362816774,"y":38455.087650771566},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"fe61959d-43e7-4440-9932-9a09846e9b1b","savedPayload":{"position":{"x":34073.6084629678,"y":38455.02469092671},"targetPosition":{"x":33743.57078386684,"y":38385.13825558944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"e35699bc-1fe9-4cdc-b029-6361f0ce8592","savedPayload":{"position":{"x":33743.57078386684,"y":38385.13825558944},"targetPosition":{"x":33102.23720608786,"y":38593.35305308248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Standard Run","managedStopLoss":{"type":"Managed Stop Loss","name":"New Managed Stop Loss","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.entryTargetRate.value * 1.03","id":"853852d1-d2fa-4e32-a891-e98ca52a556e","savedPayload":{"position":{"x":34718.725569698596,"y":38419.78002212652},"targetPosition":{"x":34468.468337523285,"y":38646.55235339234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < tradingEngine.current.position.entryTargetRate.value * 0.97","id":"3bdebe73-3546-43f3-b644-73ec62086c66","savedPayload":{"position":{"x":35174.119903871135,"y":38643.54235952011},"targetPosition":{"x":35013.504527027835,"y":38695.611577293195},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"36615e86-2c8e-4182-ab3e-5c263c44fcb1","savedPayload":{"position":{"x":35013.504527027835,"y":38695.611577293195},"targetPosition":{"x":34845.81973830119,"y":38749.97222282881},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6aae47da-70b4-4fd3-b2da-65a1d645b915","savedPayload":{"position":{"x":34845.81973830119,"y":38749.97222282881},"targetPosition":{"x":34639.020361592215,"y":38817.056471153424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"18261801-3d1b-4dfe-872c-019fff59db4d","savedPayload":{"position":{"x":34789.48820475565,"y":38751.419559668175},"targetPosition":{"x":34468.468337523285,"y":38646.55235339234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"fdeb890a-e7d8-4ef6-ab49-3a88aee6e82c","savedPayload":{"position":{"x":34468.468337523285,"y":38646.55235339234},"targetPosition":{"x":34137.9170348988,"y":38717.11070335019},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage * 1.02 < tradingEngine.current.position.stopLoss.value) {chart.at01hs.bollingerBand.movingAverage * 1.02} else {tradingEngine.current.position.stopLoss.value}","id":"0e9e87f6-4636-4f1f-8091-d1c3090ee345","savedPayload":{"position":{"x":35129.06967167567,"y":38505.71592394559},"targetPosition":{"x":34798.77581756824,"y":38575.91329397971},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"0464ed08-0432-4da6-b407-fbf1fbc65bd9","savedPayload":{"position":{"x":34798.77581756824,"y":38575.91329397971},"targetPosition":{"x":34468.468337523285,"y":38646.55235339234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a9042fd2-0f05-4208-91b7-81e00b6493fb","savedPayload":{"position":{"x":34137.9170348988,"y":38717.11070335019},"targetPosition":{"x":33742.681597240546,"y":38801.45974580663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"managedTakeProfit":{"type":"Managed Take Profit","name":"New Managed Take Profit","phases":[{"type":"Phase","name":"Initial","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.entryTargetRate.value * 0.95","id":"f191391f-f798-4819-b46b-8ae9538ff71f","savedPayload":{"position":{"x":34569.26458792814,"y":39281.90801343524},"targetPosition":{"x":34239.307256884844,"y":39352.46024072445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < entryTargetRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < tradingEngine.current.position.entryTargetRate.value","id":"65b73feb-09e0-491d-99fd-30f331acac97","savedPayload":{"position":{"x":35025.68803317664,"y":38685.70368836946},"targetPosition":{"x":34859.89542840817,"y":38650.4681521467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fa12e6f8-f9d6-4eb7-9e3b-1e0f17581548","savedPayload":{"position":{"x":34859.89542840817,"y":38650.4681521467},"targetPosition":{"x":34680.57488937298,"y":38608.01182269371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.current.position.positionCounters.periods.value > 2","id":"2eff0ccd-bf54-4456-aff5-9f46cf1469ff","savedPayload":{"position":{"x":34794.5554849502,"y":38942.387725485096},"targetPosition":{"x":34742.028356126924,"y":38781.69390943455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a4af8e92-a505-48fd-8080-8a715cd856dc","savedPayload":{"position":{"x":34742.028356126924,"y":38781.69390943455},"targetPosition":{"x":34680.57488937298,"y":38608.01182269371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ef07d7e4-53c0-4746-a1a2-4b4856cba9df","savedPayload":{"position":{"x":34680.57488937298,"y":38608.01182269371},"targetPosition":{"x":34518.72581000813,"y":38462.59720773785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"2484f7be-38df-4139-94b4-d753e6d50eed","savedPayload":{"position":{"x":34134.9212278986,"y":39673.502062910804},"targetPosition":{"x":34239.307256884844,"y":39352.46024072445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"977b23fa-f70b-4ae6-8b8b-62ca894ca11c","savedPayload":{"position":{"x":34239.307256884844,"y":39352.46024072445},"targetPosition":{"x":34013.29729184232,"y":39101.851978623636},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 * 0.97 < tradingEngine.current.position.entryTargetRate.value * 0.97) {chart.at01hs.base7EMA.ema7 * 0.97} else {tradingEngine.current.position.entryTargetRate.value * 0.97}","id":"aadae3ad-5cf1-4417-baad-c6e8b0ab8f31","savedPayload":{"position":{"x":34716.26693772139,"y":39377.765731382875},"targetPosition":{"x":34464.76179832982,"y":39602.602493060505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bfc7fa92-c54c-43e7-8a6d-f89572d1fee2","savedPayload":{"position":{"x":36313.82635115211,"y":39881.21320521504},"targetPosition":{"x":35954.84735077737,"y":39620.76436247248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5ea229bf-a68c-40f9-a6ac-8bae8171ecda","savedPayload":{"position":{"x":35954.84735077737,"y":39620.76436247248},"targetPosition":{"x":35595.802658561275,"y":39360.59710417667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"585c2f06-93d7-403f-ab70-0aab9c936f72","savedPayload":{"position":{"x":35595.802658561275,"y":39360.59710417667},"targetPosition":{"x":35236.54561990195,"y":39100.30133234054},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"cddeb772-d0f7-4ba8-b303-b623746f3f6e","savedPayload":{"position":{"x":34786.6408978074,"y":39825.44540850975},"targetPosition":{"x":34464.76179832982,"y":39602.602493060505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"4862beb3-990c-43ba-a21b-93ce1227d060","savedPayload":{"position":{"x":33822.5114783088,"y":40425.05084020906},"targetPosition":{"x":33752.71025952321,"y":40095.11379688993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dc6ade59-03df-4aa5-a892-5e225a38cb35","savedPayload":{"position":{"x":33752.71025952321,"y":40095.11379688993},"targetPosition":{"x":33682.42626080288,"y":39764.673678097206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"54428b89-eb5f-4844-9fec-b049f074b3c8","savedPayload":{"position":{"x":33474.247728973016,"y":40406.64737809044},"targetPosition":{"x":33578.35104920773,"y":40085.88536714488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"81b0626e-e4c7-40dc-ae8d-ec5603067461","savedPayload":{"position":{"x":33578.35104920773,"y":40085.88536714488},"targetPosition":{"x":33682.42626080288,"y":39764.673678097206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < tradingEngine.current.position.entryTargetRate.value * 0.99","id":"05867691-257f-4795-b70f-180ef26713fd","savedPayload":{"position":{"x":33181.32576535947,"y":40217.0903652047},"targetPosition":{"x":33431.853361031055,"y":39991.034945028885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2d354bdf-7142-4921-aec4-60a295569584","savedPayload":{"position":{"x":33431.853361031055,"y":39991.034945028885},"targetPosition":{"x":33682.42626080288,"y":39764.673678097206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"74adc18a-fcb8-47ad-a447-1595f16cc7f6","savedPayload":{"position":{"x":33022.85515237147,"y":39906.262437990605},"targetPosition":{"x":33352.65541210603,"y":39835.49996927431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8c760094-3830-48d3-a97c-a9dee27f3c7e","savedPayload":{"position":{"x":33352.65541210603,"y":39835.49996927431},"targetPosition":{"x":33682.42626080288,"y":39764.673678097206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"45a3f428-25a5-4cf2-a13f-08bf3bbc4972","savedPayload":{"position":{"x":33041.20817511179,"y":39558.14520176867},"targetPosition":{"x":33361.82156400365,"y":39661.26970643977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6106746d-8995-425e-8dd9-009894a5dd07","savedPayload":{"position":{"x":33361.82156400365,"y":39661.26970643977},"targetPosition":{"x":33682.42626080288,"y":39764.673678097206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"61a873ab-dc8f-4023-93cd-a861bd965858","savedPayload":{"position":{"x":33682.42626080288,"y":39764.673678097206},"targetPosition":{"x":33943.79016646259,"y":39528.65300808938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"aa98a93e-c928-4900-854a-97b3750182d2","savedPayload":{"position":{"x":34234.634584370455,"y":39817.59122073769},"targetPosition":{"x":34464.76179832982,"y":39602.602493060505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"83f85765-e13b-406a-bd56-7fd820eebc16"}}}],"announcements":[],"id":"e3b43a25-cbb0-4ebc-ac2f-148a56d7d934","savedPayload":{"position":{"x":34464.76179832982,"y":39602.602493060505},"targetPosition":{"x":34239.307256884844,"y":39352.46024072445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < tradingEngine.current.position.entryTargetRate.value * 0.97) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {tradingEngine.current.position.entryTargetRate.value * 0.97}","id":"e603a735-7a74-4654-b0bb-50bee2d1e307","savedPayload":{"position":{"x":34918.16288271895,"y":39634.98979266261},"targetPosition":{"x":34666.83147400581,"y":39860.355334481086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"12b3cadf-b8f9-4f43-8799-40c1509f8d07","savedPayload":{"position":{"x":36742.07150275105,"y":39305.49252387782},"targetPosition":{"x":36337.02069052022,"y":39485.58449761292},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d45aa91c-a153-4311-8403-8e4492ffcc95","savedPayload":{"position":{"x":36337.02069052022,"y":39485.58449761292},"targetPosition":{"x":35931.823354504515,"y":39665.85035669187},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"47191a8e-485b-4f11-be05-c1b6253da95e","savedPayload":{"position":{"x":36813.94268196495,"y":39758.361226661655},"targetPosition":{"x":36372.99542802936,"y":39712.0973066977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0a6eff46-6a7b-4a29-81a4-93a751a056bf","savedPayload":{"position":{"x":36372.99542802936,"y":39712.0973066977},"targetPosition":{"x":35931.823354504515,"y":39665.85035669187},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"e9cfe84c-e144-4e95-88ce-8bfdffd42f89","savedPayload":{"position":{"x":36649.49794624894,"y":40186.93723012752},"targetPosition":{"x":36290.760584109594,"y":39926.43413527443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9dfa9604-bc08-4df3-980d-2f8b06185031","savedPayload":{"position":{"x":36290.760584109594,"y":39926.43413527443},"targetPosition":{"x":35931.823354504515,"y":39665.85035669187},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"8c332bfe-ab0c-4905-9440-86091b7040b1","savedPayload":{"position":{"x":36292.8750918045,"y":40475.82456354459},"targetPosition":{"x":36112.38647166323,"y":40070.90058513135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e358399e-001d-4d07-83e4-2bf9d65ed1bd","savedPayload":{"position":{"x":36112.38647166323,"y":40070.90058513135},"targetPosition":{"x":35931.823354504515,"y":39665.85035669187},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div previous ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"51ec782d-f54f-46b5-b45a-9db5cf7a380e","savedPayload":{"position":{"x":35840.265775890264,"y":40547.54589656941},"targetPosition":{"x":35885.927045222765,"y":40106.76730879122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c64c6aff-2525-4e58-9e27-ac7a8b3dc8cb","savedPayload":{"position":{"x":35885.927045222765,"y":40106.76730879122},"targetPosition":{"x":35931.823354504515,"y":39665.85035669187},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"08f82342-86ce-4222-b954-968397dd2d33","savedPayload":{"position":{"x":35931.823354504515,"y":39665.85035669187},"targetPosition":{"x":35572.812651919696,"y":39405.301834114674},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"170cad22-eef5-48c3-b5d9-fae484dab493","savedPayload":{"position":{"x":34957.23213185378,"y":40187.04886976958},"targetPosition":{"x":34666.83147400581,"y":39860.355334481086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"83f85765-e13b-406a-bd56-7fd820eebc16"}}},{"type":"Move To Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"0320d330-7d8e-4577-8ea3-debcdf5c4971","savedPayload":{"position":{"x":33904.30440819979,"y":40920.20237681588},"targetPosition":{"x":34008.40722772902,"y":40599.381235032226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6611a627-dfaf-4248-8aaa-e27fb7ac7141","savedPayload":{"position":{"x":34008.40722772902,"y":40599.381235032226},"targetPosition":{"x":34112.017642952036,"y":40278.159942361024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"51f5f720-c0df-4209-a32f-80f67688004d","savedPayload":{"position":{"x":33452.96754626405,"y":40417.598784938404},"targetPosition":{"x":33782.17424020236,"y":40348.081216854625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"62ebc71f-7dab-4090-9f0e-c557cbbf5045","savedPayload":{"position":{"x":33782.17424020236,"y":40348.081216854625},"targetPosition":{"x":34112.017642952036,"y":40278.159942361024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9cfa9122-1b64-4a37-877f-1c722493562a","savedPayload":{"position":{"x":34112.017642952036,"y":40278.159942361024},"targetPosition":{"x":34373.214145208425,"y":40042.003888244784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"73f3e391-cceb-4d27-932f-7b3c76d63b24","savedPayload":{"position":{"x":34416.474873075196,"y":40086.686974337434},"targetPosition":{"x":34666.83147400581,"y":39860.355334481086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"e3b43a25-cbb0-4ebc-ac2f-148a56d7d934"}}}],"announcements":[],"id":"913c2adb-a405-40e1-b661-300ec59c4ea0","savedPayload":{"position":{"x":34666.83147400581,"y":39860.355334481086},"targetPosition":{"x":34464.76179832982,"y":39602.602493060505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 * 0.8 < tradingEngine.current.position.entryTargetRate.value * 0.97) {chart.at01hs.base7EMA.ema7 * 0.8} else {tradingEngine.current.position.takeProfit.value}","id":"be65b94d-3942-43c3-96aa-354447d5d591","savedPayload":{"position":{"x":34628.74641363765,"y":39211.11557867414},"targetPosition":{"x":34194.30699615395,"y":39303.1106086293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"fb87ce68-53e9-4553-a0d4-c996920c9b7a","savedPayload":{"position":{"x":36188.88502676182,"y":41229.173674520294},"targetPosition":{"x":35830.29169532334,"y":40968.63475769868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1c9f9e96-a31d-42dc-a72f-ee8c25057426","savedPayload":{"position":{"x":35830.29169532334,"y":40968.63475769868},"targetPosition":{"x":35471.52980966544,"y":40708.00587777247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"2d8cbbda-0c6c-4f48-ab1a-4f3ee6cb46d1","savedPayload":{"position":{"x":35370.503366846526,"y":41568.09092875021},"targetPosition":{"x":35416.63245577692,"y":41127.20222859762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e4719fbb-2730-46bf-9593-75e9544d860c","savedPayload":{"position":{"x":35416.63245577692,"y":41127.20222859762},"targetPosition":{"x":35471.52980966544,"y":40708.00587777247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"60819e62-c36a-4cf6-86ea-09aa1046f1b7","savedPayload":{"position":{"x":35471.52980966544,"y":40708.00587777247},"targetPosition":{"x":35290.92190186885,"y":40302.70230804194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"297f0537-a281-46ab-89a4-9aab36495673","savedPayload":{"position":{"x":34285.24336865768,"y":39731.17204558443},"targetPosition":{"x":34194.30699615395,"y":39303.1106086293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"e3b43a25-cbb0-4ebc-ac2f-148a56d7d934"}}}],"announcements":[],"id":"83f85765-e13b-406a-bd56-7fd820eebc16","savedPayload":{"position":{"x":34876.736603682584,"y":40092.607971124526},"targetPosition":{"x":34666.83147400581,"y":39860.355334481086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cf907f3e-a01a-4ffb-9e3b-23ea0d8f34d1","savedPayload":{"position":{"x":34013.29729184232,"y":39101.851978623636},"targetPosition":{"x":33742.681597240546,"y":38801.45974580663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"3f7a5501-fa20-4b3b-b038-2297cb2fd04e","savedPayload":{"position":{"x":33743.69117514819,"y":38801.54431048196},"targetPosition":{"x":33102.23720608786,"y":38593.35305308248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.candle.close.value","id":"b8a7ff2a-dc3b-43e0-9226-b8e6f532c476","savedPayload":{"position":{"x":34476.9951799516,"y":39206.04708927969},"targetPosition":{"x":34141.73192471576,"y":39241.03476565884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2bc75a78-2139-4752-82be-2f5a8a7928fd","savedPayload":{"position":{"x":34141.73192471576,"y":39241.03476565884},"targetPosition":{"x":33806.41066799065,"y":39275.73904259969},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInQuotedAsset":{"type":"Target Size In Quoted Asset","name":"New Target Size In Quoted Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.strategyOpenStage.stageQuotedAsset.sizeFilled.value","id":"a56977af-ba08-4617-a417-4edb66c5ca2f","savedPayload":{"position":{"x":34202.84311588389,"y":39820.84892206424},"targetPosition":{"x":34004.66169899836,"y":39548.262048506695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"28601045-4302-4e44-9f9c-6f789094a474","savedPayload":{"position":{"x":34004.66169899836,"y":39548.262048506695},"targetPosition":{"x":33806.41066799065,"y":39275.73904259969},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1a05ddeb-09bf-4284-bc2a-bfee83eee2c7","savedPayload":{"position":{"x":33806.41066799065,"y":39275.73904259969},"targetPosition":{"x":33498.16089208885,"y":39138.61432422931},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeExecution":{"type":"Close Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[{"type":"Market Buy Order","name":"Quick Exit","config":"{\n\"percentageOfAlgorithmSize\": 100,\n\"spawnMultipleOrders\": false\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"b862adde-91b6-4146-a860-7fe3c44f43d4","savedPayload":{"position":{"x":33745.214491897605,"y":41484.71548278851},"targetPosition":{"x":33710.07673558382,"y":41149.34178970761},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9568610b-062b-4f5c-95b7-8ff55754334d","savedPayload":{"position":{"x":33709.25606454764,"y":41149.68589730641},"targetPosition":{"x":33674.23024130961,"y":40814.51214343529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"76be967f-7051-4fa8-9f3c-255c8cf12d77","savedPayload":{"position":{"x":33674.23024130961,"y":40814.51214343529},"targetPosition":{"x":33639.03867373889,"y":40479.51039506053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"3c2ba6d3-e215-4a9f-9b48-9c9340086dda","savedPayload":{"position":{"x":33639.03867373889,"y":40479.51039506053},"targetPosition":{"x":33603.897007495965,"y":40144.50090358411},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"69200cc2-ab70-45f4-ae63-29cb1bd73d0a","savedPayload":{"position":{"x":33603.897007495965,"y":40144.50090358411},"targetPosition":{"x":33568.732744852,"y":39809.34009983359},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Buy Order #1","id":"7d6c3ac9-4869-4ff3-a9f2-2a6f8a31ccf3"}}}],"marketSellOrders":[],"limitBuyOrders":[],"limitSellOrders":[],"id":"47778ccf-4a59-4ce1-93f2-110cdd8e900b","savedPayload":{"position":{"x":33568.732744852,"y":39809.34009983359},"targetPosition":{"x":33533.41567696998,"y":39473.97041513954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d6ffda9f-f303-48be-8de2-d6d68c3e76c8","savedPayload":{"position":{"x":33533.41567696998,"y":39473.97041513954},"targetPosition":{"x":33498.16089208885,"y":39138.61432422931},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"3b34675d-60d7-44ef-9ef7-c434fe9ca560","savedPayload":{"position":{"x":33498.16089208885,"y":39138.61432422931},"targetPosition":{"x":33102.23720608786,"y":38593.35305308248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"77e56192-a0b0-4786-afdb-8e59ba757ccf","savedPayload":{"position":{"x":33102.23720608786,"y":38593.35305308248},"targetPosition":{"x":32428,"y":38593.35190918473},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Trading Strategy","name":"S3 - 2H Down","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"0c6d7b91-4bbf-4e27-850c-6348ffea4055","savedPayload":{"position":{"x":33523.367429608814,"y":37638.22622863623},"targetPosition":{"x":33717.09781268721,"y":37904.123919085076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9c8b0541-0125-4ed1-8bcb-2d8a539bcc85","savedPayload":{"position":{"x":33717.09781268721,"y":37904.123919085076},"targetPosition":{"x":33910.747924525764,"y":38169.36664352201},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"b09863b6-7ea3-4929-8b3c-f99409fb1bf1","savedPayload":{"position":{"x":33706.80194061012,"y":37543.01152002628},"targetPosition":{"x":33809.017406197185,"y":37856.234457312436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"26835b4a-83a2-4209-84a0-e38c74ff993a","savedPayload":{"position":{"x":33809.017406197185,"y":37856.234457312436},"targetPosition":{"x":33910.747924525764,"y":38169.36664352201},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"2fc1bc08-9def-4a37-abc3-dbac24a2c360","savedPayload":{"position":{"x":33910.263728563536,"y":37511.3100621061},"targetPosition":{"x":33911.074732603985,"y":37839.70388048728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1fa5642c-48f4-492b-81d3-5d752decd8af","savedPayload":{"position":{"x":33911.074732603985,"y":37839.70388048728},"targetPosition":{"x":33910.747924525764,"y":38169.36664352201},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Down","code":"chart.at02hs.bollingerBand.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Down\"","id":"07c23ae8-6440-4b6e-aabe-67afdba80c7c","savedPayload":{"position":{"x":34113.09135367391,"y":37543.10281209179},"targetPosition":{"x":34013.05699654583,"y":37855.759115279914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c14a9e3b-6d84-44c9-8273-1a37850087b4","savedPayload":{"position":{"x":34013.05699654583,"y":37855.759115279914},"targetPosition":{"x":33910.747924525764,"y":38169.36664352201},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Up","code":"chart.at02hs.bollingerBand.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Up\"","id":"57d558fd-ecfa-429a-9304-88f41b32b44c","savedPayload":{"position":{"x":34297.592777007194,"y":37636.69528849279},"targetPosition":{"x":34104.705187019,"y":37902.94856790849},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ab49ca45-333d-4ed9-99a1-a3ca632cbbb2","savedPayload":{"position":{"x":34104.705187019,"y":37902.94856790849},"targetPosition":{"x":33910.747924525764,"y":38169.36664352201},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H NOT Side","code":"chart.at04hs.bollingerSubChannel.slope === \"Side\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope != \"Side\"","id":"261d9835-4d23-4b58-946d-b9324d920273","savedPayload":{"position":{"x":34443.16576849877,"y":37782.28385359679},"targetPosition":{"x":34177.72840372292,"y":37975.74384508994},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4d450dc4-bfbb-4779-b070-cac385b809c7","savedPayload":{"position":{"x":34177.72840372292,"y":37975.74384508994},"targetPosition":{"x":33910.747924525764,"y":38169.36664352201},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H RSI > 60","code":"chart.at24hs.rsi14.value < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.rsi14.value > 60","id":"c0afd580-e4b8-4c7c-ac4c-7370e5a79a98","savedPayload":{"position":{"x":34536.944893361215,"y":37965.635716423225},"targetPosition":{"x":34224.427183627035,"y":38067.63297362819},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"95207d90-4af8-4b5a-8321-0076e8b8929d","savedPayload":{"position":{"x":34224.427183627035,"y":38067.63297362819},"targetPosition":{"x":33910.747924525764,"y":38169.36664352201},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"92ef2b33-6bd1-4ab7-91a4-ddb3e035ed08","savedPayload":{"position":{"x":34568.916071233274,"y":38168.670349662054},"targetPosition":{"x":34240.5145892972,"y":38169.434370796545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3ac7ebe1-3f6f-4e35-a8a2-f39aa509c849","savedPayload":{"position":{"x":34240.5145892972,"y":38169.434370796545},"targetPosition":{"x":33910.747924525764,"y":38169.36664352201},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 3: 02H Down && 4H Side && 1H Medium, Steep or Extreme","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Down\" && chart.at12hs.bollingerChannel.direction === \"Down\" && chart.at04hs.bollingerSubChannel.slope === \"Side\" && (chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\")) {false} else {true}","id":"6ef3aec8-78cb-4942-bcfd-ff860b2b7971","savedPayload":{"position":{"x":34536.691651409004,"y":38373.359782187996},"targetPosition":{"x":34223.90621396726,"y":38273.095093478994},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5af02e84-f067-45ee-8d7e-44966254e430","savedPayload":{"position":{"x":34223.90621396726,"y":38273.095093478994},"targetPosition":{"x":33910.747924525764,"y":38169.36664352201},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"20017afc-2e99-4596-9a1d-41b8b8ee7999","savedPayload":{"position":{"x":33910.747924525764,"y":38169.36664352201},"targetPosition":{"x":33695.34315500525,"y":38465.843417044016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"e6080867-291e-4dc7-b00f-582656e25e80","savedPayload":{"position":{"x":33735.33121781944,"y":38688.86572651103},"targetPosition":{"x":33541.81368174598,"y":38955.20215516647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"890f22bb-d291-4fdd-b444-5afbea478f13","savedPayload":{"position":{"x":34880.025761988036,"y":38743.438797246636},"targetPosition":{"x":34554.245652918784,"y":38794.33282921582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ef921c85-8bd3-49cc-aeaa-2556181fec27","savedPayload":{"position":{"x":34554.245652918784,"y":38794.33282921582},"targetPosition":{"x":34228.279312854735,"y":38846.411010548254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d4217f36-b6e4-45dc-979d-5ad1e74d0b85","savedPayload":{"position":{"x":34228.279312854735,"y":38846.411010548254},"targetPosition":{"x":33866.22870184527,"y":38903.73525628013},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"92cd971f-1315-425e-883c-4adefb12883e","savedPayload":{"position":{"x":33867.14005782434,"y":38903.62297692732},"targetPosition":{"x":33541.81368174598,"y":38955.20215516647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"f5611889-2d66-4b5a-84ca-1bd444e56cb0","savedPayload":{"position":{"x":34635.794408728616,"y":38975.061173061265},"targetPosition":{"x":34369.7598444699,"y":39169.08442307499},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96fdbdfc-c7d9-4e54-972c-de01d3f58a76","savedPayload":{"position":{"x":34369.7598444699,"y":39169.08442307499},"targetPosition":{"x":34103.70269142685,"y":39362.78555520321},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"ccd315a6-ae1c-4fcf-b6d4-deac89aef390","savedPayload":{"position":{"x":34728.19741068577,"y":39156.79573970644},"targetPosition":{"x":34416.70617204758,"y":39261.5009124603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"382fb23e-b4bc-4792-a492-328fa6201f6c","savedPayload":{"position":{"x":34416.70617204758,"y":39261.5009124603},"targetPosition":{"x":34103.70269142685,"y":39362.78555520321},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"cbc7b7f8-b6f1-4752-9259-6372178089e4","savedPayload":{"position":{"x":34764.39587836743,"y":39363.18348756959},"targetPosition":{"x":34434.55604492269,"y":39363.593868059914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"74975af2-4802-47bc-8251-97981c77dc4a","savedPayload":{"position":{"x":34434.55604492269,"y":39363.593868059914},"targetPosition":{"x":34103.70269142685,"y":39362.78555520321},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Down","code":"chart.at02hs.bollingerBand.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Down\"","id":"b7bdf1ce-16a5-4fc0-a87b-f8815615ef99","savedPayload":{"position":{"x":34728.792714646086,"y":39563.92727295316},"targetPosition":{"x":34416.760518294985,"y":39465.12162627628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a1e09269-19e5-4dff-8aeb-66d8bf6bd96d","savedPayload":{"position":{"x":34416.760518294985,"y":39465.12162627628},"targetPosition":{"x":34103.70269142685,"y":39362.78555520321},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Up","code":"chart.at02hs.bollingerBand.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Up\"","id":"c516d181-ad48-49cd-a298-fddb6e91de94","savedPayload":{"position":{"x":34637.237905422066,"y":39750.979593807264},"targetPosition":{"x":34371.08359787036,"y":39557.81074190923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d57a06c7-d40b-4488-93fe-f7441dd299c6","savedPayload":{"position":{"x":34371.08359787036,"y":39557.81074190923},"targetPosition":{"x":34103.70269142685,"y":39362.78555520321},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H NOT Side","code":"chart.at04hs.bollingerSubChannel.slope === \"Side\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope != \"Side\"","id":"9fabe671-7d14-43b5-ba69-831f4f2a066f","savedPayload":{"position":{"x":34491.877811747785,"y":39893.168159089044},"targetPosition":{"x":34297.259427945275,"y":39629.58808645253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"177c777c-ff05-4dc0-8b6b-d663b7329938","savedPayload":{"position":{"x":34297.259427945275,"y":39629.58808645253},"targetPosition":{"x":34103.70269142685,"y":39362.78555520321},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H RSI > 60","code":"chart.at24hs.rsi14.value < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.rsi14.value > 60","id":"e48e0eea-8553-4baa-ab82-de8e822619b3","savedPayload":{"position":{"x":34307.829208208525,"y":39986.9191255103},"targetPosition":{"x":34204.99184244373,"y":39674.89482327969},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ee231079-650d-4046-8e5b-ad3a82e09efa","savedPayload":{"position":{"x":34204.99184244373,"y":39674.89482327969},"targetPosition":{"x":34103.70269142685,"y":39362.78555520321},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"241ea7c4-ec8c-4f74-994f-27cdc3cc5084","savedPayload":{"position":{"x":34106.24893187694,"y":40021.99894975449},"targetPosition":{"x":34103.31875419017,"y":39693.29649276651},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b1bb2780-2f92-47da-9ea5-39d0397e7144","savedPayload":{"position":{"x":34103.31875419017,"y":39693.29649276651},"targetPosition":{"x":34103.70269142685,"y":39362.78555520321},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 3: 02H Down && 4H Side && 1H Medium, Steep or Extreme","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Down\" && chart.at12hs.bollingerChannel.direction === \"Down\" && chart.at04hs.bollingerSubChannel.slope === \"Side\" && (chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\")) {false} else {true}","id":"35f95b09-f037-43ba-96f9-fa9d7d677bea","savedPayload":{"position":{"x":33902.79174069517,"y":39987.09942112597},"targetPosition":{"x":33999.80701914437,"y":39673.45853185374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6d92e5f1-7164-4f38-9a56-07334aee23fd","savedPayload":{"position":{"x":33999.80701914437,"y":39673.45853185374},"targetPosition":{"x":34103.70269142685,"y":39362.78555520321},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2f0018b8-a386-4eb2-8cf8-b61c00af7639","savedPayload":{"position":{"x":34103.70269142685,"y":39362.78555520321},"targetPosition":{"x":33807.28480927024,"y":39147.71214128741},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"a937976d-4084-4184-a913-910b75ed6659","savedPayload":{"position":{"x":33808.345422089886,"y":39147.85253387234},"targetPosition":{"x":33541.81368174598,"y":38955.20215516647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"def5d0af-b5ee-43f9-9ea0-0b73cd37d82e","savedPayload":{"position":{"x":33541.81368174598,"y":38955.20215516647},"targetPosition":{"x":32892.79215704803,"y":39058.15941839664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"My Formula","code":"tradingEngine.current.episode.candle.close.value","id":"0b0e860d-f3c3-4372-9873-4a9dd4e9d100","savedPayload":{"position":{"x":31349.11247103684,"y":37469.00331530981},"targetPosition":{"x":31428.301969192078,"y":37676.364190505854},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d340cdb1-a381-4206-a857-07ae5d92ad04","savedPayload":{"position":{"x":31428.301969192078,"y":37676.364190505854},"targetPosition":{"x":31586.59606099783,"y":38090.10560431812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInBaseAsset":{"type":"Target Size In Base Asset","name":"New Target Size In Base Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.episodeBaseAsset.balance.value","id":"f3292c7f-4273-4130-a41d-8d8d16133ff3","savedPayload":{"position":{"x":32003.960584812106,"y":37572.94751265371},"targetPosition":{"x":31865.00983401438,"y":37745.64829369156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"459ba766-3c86-4b1c-81ee-467a438ff57d","savedPayload":{"position":{"x":31865.00983401438,"y":37745.64829369156},"targetPosition":{"x":31586.59606099783,"y":38090.10560431812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4dcaba6c-a6cc-4893-858b-0c21fb1b3849","savedPayload":{"position":{"x":33807.414287740576,"y":39340.133342960726},"targetPosition":{"x":33478.50411828175,"y":39356.44522005135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[],"marketSellOrders":[{"type":"Market Sell Order","name":"Quick Entry","config":"{\n\"percentageOfAlgorithmSize\": 100\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"c9114021-830b-42a4-a360-4c2bbf1cbe60","savedPayload":{"position":{"x":34732.94462944644,"y":41289.18200919371},"targetPosition":{"x":34554.75083771766,"y":41014.65879425587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1cda8d70-96d1-4f9d-a532-047fc4a3179c","savedPayload":{"position":{"x":34554.75083771766,"y":41014.65879425587},"targetPosition":{"x":34375.840936079585,"y":40739.02409657315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"43a8d235-6498-4bf5-9a01-4ffe21dec3a1","savedPayload":{"position":{"x":34375.840936079585,"y":40739.02409657315},"targetPosition":{"x":34197.522629995416,"y":40462.33122622398},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"d085a3ab-b86b-4fae-a802-e45d30212b12","savedPayload":{"position":{"x":34197.522629995416,"y":40462.33122622398},"targetPosition":{"x":34017.830480625045,"y":40186.02867422209},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5f38bb78-6259-4ceb-a80e-9acd18e3daa2","savedPayload":{"position":{"x":34017.830480625045,"y":40186.02867422209},"targetPosition":{"x":33839.206214315054,"y":39911.202951657266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Sell Order #1","id":"8e404329-d41f-41e0-ad5a-c84ee1fa2604"}}}],"limitBuyOrders":[],"limitSellOrders":[],"id":"e2222c7e-1bd3-4a7c-9774-48cd1cc16d3d","savedPayload":{"position":{"x":33839.206214315054,"y":39911.202951657266},"targetPosition":{"x":33658.362947062415,"y":39632.69509013108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"759388ff-86bc-41f0-9ec7-9964e904e630","savedPayload":{"position":{"x":33658.19862925479,"y":39631.92269967684},"targetPosition":{"x":33478.50411828175,"y":39356.44522005135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"69a1d5f7-b453-489d-bf1b-b25c2bdcaa48","savedPayload":{"position":{"x":33478.50411828175,"y":39356.44522005135},"targetPosition":{"x":32892.79215704803,"y":39058.15941839664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Slow Run","managedStopLoss":{"type":"Managed Stop Loss","name":"New Managed Stop Loss","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.entryTargetRate.value * 1.03","id":"d86eeec2-43f3-453c-8d05-2ef2723a241b","savedPayload":{"position":{"x":34094.45879206505,"y":39892.24900636577},"targetPosition":{"x":33801.35023397971,"y":40041.387725188724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < tradingEngine.current.position.entryTargetRate.value * 0.97","id":"f903c817-fc50-48ab-abd4-9b58953e95b7","savedPayload":{"position":{"x":34820.061266580626,"y":39452.38439699814},"targetPosition":{"x":34656.05836666021,"y":39460.751777792466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"abd14bc4-e08a-4804-a38d-379dc8869915","savedPayload":{"position":{"x":34656.05836666021,"y":39460.751777792466},"targetPosition":{"x":34477.867844712004,"y":39469.92354450735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3e9ec975-1cfd-4629-86c2-01a2b7cee8fc","savedPayload":{"position":{"x":34477.867844712004,"y":39469.92354450735},"targetPosition":{"x":34263.87102300008,"y":39480.87401452758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"86e1e0cc-e723-4488-97cc-e5df9ff768b4","savedPayload":{"position":{"x":33784.30079006409,"y":40370.401191015764},"targetPosition":{"x":33801.35023397971,"y":40041.387725188724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"9bf160d5-af24-47b8-a457-59da431e3fe3","savedPayload":{"position":{"x":33801.69356975171,"y":40041.60895462352},"targetPosition":{"x":33465.97146176929,"y":39823.04119803824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage * 1.02 < tradingEngine.current.position.stopLoss.value) {chart.at01hs.bollingerBand.movingAverage * 1.02} else {tradingEngine.current.position.stopLoss.value}","id":"c57b9aaa-edc1-4a24-a2f9-1eeb3eed3d5c","savedPayload":{"position":{"x":34353.5913221473,"y":40400.330226234146},"targetPosition":{"x":34077.376273586924,"y":40220.839959338366},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"22d1ba82-cecd-4ebf-a9b0-c02a2dcc4385","savedPayload":{"position":{"x":34077.376273586924,"y":40220.839959338366},"targetPosition":{"x":33801.35023397971,"y":40041.387725188724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f41b282c-06b8-4a86-9c94-18173ce77526","savedPayload":{"position":{"x":33467.07479820665,"y":39823.139517309566},"targetPosition":{"x":33190.8794344319,"y":39643.6385888847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"managedTakeProfit":{"type":"Managed Take Profit","name":"New Managed Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.entryTargetRate.value * 0.95","id":"db43ceff-373d-42f3-9109-71257f48d0bb","savedPayload":{"position":{"x":33429.1278443572,"y":40550.63015759025},"targetPosition":{"x":33153.00171462191,"y":40371.62237335268},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < entryTargetRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < tradingEngine.current.position.entryTargetRate.value","id":"b85e0a3d-dddf-4c06-8265-09a128565a72","savedPayload":{"position":{"x":34524.23422277901,"y":41281.80980770986},"targetPosition":{"x":34345.12652276836,"y":41005.69158873745},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a8c6c9e7-c45b-4e14-8f6e-5bffa6f7b0f0","savedPayload":{"position":{"x":34345.12652276836,"y":41005.69158873745},"targetPosition":{"x":34165.77148428998,"y":40730.008249567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.current.position.positionCounters.periods.value > 2","id":"25f76ae7-93a2-47ab-be49-bf91a4ab8b37","savedPayload":{"position":{"x":33868.16387257282,"y":41316.75885408646},"targetPosition":{"x":34016.7553360382,"y":41023.37783590005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0f943c1c-645b-455a-a11d-e67435b5b68b","savedPayload":{"position":{"x":34016.7553360382,"y":41023.37783590005},"targetPosition":{"x":34165.77148428998,"y":40730.008249567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"89136673-be89-4f40-82cf-78a32f735291","savedPayload":{"position":{"x":34165.77148428998,"y":40730.008249567},"targetPosition":{"x":34147.36925364317,"y":40384.9945833601},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"3b4bb3aa-6317-41b7-bb90-39e703fbc836","savedPayload":{"position":{"x":32859.73611903762,"y":40520.78809591169},"targetPosition":{"x":33153.00171462191,"y":40371.62237335268},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"0d840032-5e32-4356-96af-434e6524664d","savedPayload":{"position":{"x":33153.00171462191,"y":40371.62237335268},"targetPosition":{"x":33173.786691572175,"y":39971.77650490955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 * 0.97 < tradingEngine.current.position.entryTargetRate.value * 0.97) {chart.at01hs.base7EMA.ema7 * 0.97} else {tradingEngine.current.position.entryTargetRate.value * 0.97}","id":"214e21c2-bdab-4d05-91b2-02f327d177b8","savedPayload":{"position":{"x":33412.1014418762,"y":40878.8231152852},"targetPosition":{"x":33135.98896347547,"y":40699.80711688812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"401d2bc0-0193-42de-8a65-df43242eb516","savedPayload":{"position":{"x":31967.52717406811,"y":40907.09685755074},"targetPosition":{"x":32260.998738265935,"y":40756.70854638184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b023b429-024c-46eb-86f8-6e4e23be3b3c","savedPayload":{"position":{"x":32260.998738265935,"y":40756.70854638184},"targetPosition":{"x":32555.47564134978,"y":40606.039969157195},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ee7cd341-d632-47d6-9ddf-4462e6961461","savedPayload":{"position":{"x":32555.47564134978,"y":40606.039969157195},"targetPosition":{"x":32863.12998728105,"y":40449.03908506407},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"5c96f85d-f36d-496f-8c82-68bdbde4456f","savedPayload":{"position":{"x":32842.65584046706,"y":40849.04411702724},"targetPosition":{"x":33135.98896347547,"y":40699.80711688812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"241d29a5-2372-4c0b-9dd1-9c74e98d8593","savedPayload":{"position":{"x":33135.98896347547,"y":40699.80711688812},"targetPosition":{"x":33153.00171462191,"y":40371.62237335268},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < \ntradingEngine.current.position.entryTargetRate.value * 0.97) \n{chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else \n{tradingEngine.current.position.entryTargetRate.value * 0.97}","id":"54a1a04f-b59d-40d9-91d6-9716c0198983","savedPayload":{"position":{"x":33339.51073444483,"y":41272.159191513514},"targetPosition":{"x":33118.972511713524,"y":41027.94609500146},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"23d9abaa-63cc-4aef-abaf-7b493213cd29","savedPayload":{"position":{"x":33712.359749154915,"y":41743.047912875154},"targetPosition":{"x":33435.48148390028,"y":41563.0777019045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"28be9fea-5e5c-4c99-b4a4-6c01a831d9ce","savedPayload":{"position":{"x":33435.48148390028,"y":41563.0777019045},"targetPosition":{"x":33160.3336875097,"y":41384.28997303553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"c59f1c98-a4e9-40c1-8690-6543baa7a966","savedPayload":{"position":{"x":33458.0249372886,"y":41969.942060787296},"targetPosition":{"x":33308.61791676045,"y":41676.25515829804},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c24d0f99-6491-40b3-94d9-49f91d354f3c","savedPayload":{"position":{"x":33308.61791676045,"y":41676.25515829804},"targetPosition":{"x":33160.3336875097,"y":41384.28997303553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"d6b4d297-a5fa-4561-acb0-b8d3b891912e","savedPayload":{"position":{"x":33126.56229361105,"y":42042.98395247379},"targetPosition":{"x":33142.73953843806,"y":41713.20008915096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c3f66d39-dc88-4049-895a-378f492a7d35","savedPayload":{"position":{"x":33142.73953843806,"y":41713.20008915096},"targetPosition":{"x":33160.3336875097,"y":41384.28997303553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"e9ac7090-a4d5-409d-9432-0d422f60e6e1","savedPayload":{"position":{"x":32801.00719824966,"y":41934.65669451366},"targetPosition":{"x":32980.833375510956,"y":41659.513710987994},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a05e64ed-4262-42f1-b9dc-cc14f8b27c2d","savedPayload":{"position":{"x":32980.833375510956,"y":41659.513710987994},"targetPosition":{"x":33160.3336875097,"y":41384.28997303553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div previous ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"cb158763-cb2f-494b-88ab-dafeb3825ca4","savedPayload":{"position":{"x":32574.37067975931,"y":41682.73637112202},"targetPosition":{"x":32867.46498115718,"y":41533.85931279047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"386bbe6b-9082-47e7-b750-e0e9d16a7030","savedPayload":{"position":{"x":32867.46498115718,"y":41533.85931279047},"targetPosition":{"x":33160.3336875097,"y":41384.28997303553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"32813be2-a6cd-4e5d-9a58-87eae5b3b5e9","savedPayload":{"position":{"x":33160.3336875097,"y":41384.28997303553},"targetPosition":{"x":33178.28643034685,"y":41039.0701469045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"264bdd5b-5246-4a3f-bd09-5c50baf57963","savedPayload":{"position":{"x":33152.83533435972,"y":41442.133433757015},"targetPosition":{"x":33118.972511713524,"y":41027.94609500146},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"241d29a5-2372-4c0b-9dd1-9c74e98d8593"}}},{"type":"Move To Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"308d9cf6-beba-4d14-9b90-bb11409e3835","savedPayload":{"position":{"x":32151.01582643944,"y":41518.41302829233},"targetPosition":{"x":32394.174894645315,"y":41299.354066993554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a787ffbe-ea25-41cb-a719-de115285eead","savedPayload":{"position":{"x":32394.174894645315,"y":41299.354066993554},"targetPosition":{"x":32637.92067026985,"y":41078.98780262868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d4b41076-5b23-498d-bc3e-1ccf277a1a43","savedPayload":{"position":{"x":32637.92067026985,"y":41078.98780262868},"targetPosition":{"x":32894.71295069557,"y":40847.766644394236},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"7cb4214c-3e3e-4a70-ad14-6ae2a568f24c","savedPayload":{"position":{"x":32874.05520899636,"y":41247.880610110995},"targetPosition":{"x":33118.972511713524,"y":41027.94609500146},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"241d29a5-2372-4c0b-9dd1-9c74e98d8593"}}}],"announcements":[],"id":"592ad0d7-d583-4827-8ae6-48f6ad25c1a3","savedPayload":{"position":{"x":33118.972511713524,"y":41027.94609500146},"targetPosition":{"x":33135.98896347547,"y":40699.80711688812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 * 0.8 < \ntradingEngine.current.position.entryTargetRate.value * 0.97) \n{chart.at01hs.base7EMA.ema7 * 0.8} else \n{tradingEngine.current.position.takeProfit.value}","id":"580ecace-0d6d-4632-ad8d-e6dc86df51c8","savedPayload":{"position":{"x":33365.0724542705,"y":41514.570160865704},"targetPosition":{"x":33089.21938820822,"y":41335.00669703489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bf6a5ecf-f5c8-4d13-a15c-1b567422bee0","savedPayload":{"position":{"x":22495.47241921378,"y":36944.19455619187},"targetPosition":{"x":22329.0753296333,"y":36570.24830082559},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ca87de8b-af92-4d83-af59-7c71f17e1be4","savedPayload":{"position":{"x":22329.0753296333,"y":36570.24830082559},"targetPosition":{"x":22162.57338642281,"y":36196.0925640044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"d626af7e-c8bb-4e17-95e5-ba5abda158d8","savedPayload":{"position":{"x":21681.673899821762,"y":36858.65941313917},"targetPosition":{"x":21922.094328353844,"y":36527.454743054936},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"98a76d2a-1ec4-413c-85b2-59865c6e1187","savedPayload":{"position":{"x":21922.094328353844,"y":36527.454743054936},"targetPosition":{"x":22162.57338642281,"y":36196.0925640044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9406f175-4d00-436d-ab9e-27081d36611b","savedPayload":{"position":{"x":22162.57338642281,"y":36196.0925640044},"targetPosition":{"x":22205.11886731731,"y":35788.56060487408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"aef3e320-bbaf-42e5-8083-21157428bfaf","savedPayload":{"position":{"x":32910.14242926205,"y":41611.23905360304},"targetPosition":{"x":33089.21938820822,"y":41335.00669703489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"241d29a5-2372-4c0b-9dd1-9c74e98d8593"}}}],"announcements":[],"id":"9b594083-3fb0-4dfa-ba4b-1b1ada8687fe","savedPayload":{"position":{"x":33089.21938820822,"y":41335.00669703489},"targetPosition":{"x":33118.972511713524,"y":41027.94609500146},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"80d81cb5-6a3a-4eff-ad9f-5590450c7366","savedPayload":{"position":{"x":33174.00898025066,"y":39972.589173457185},"targetPosition":{"x":33190.8794344319,"y":39643.6385888847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"3ea826ac-fe6b-4b8c-a0dc-f830202e8306","savedPayload":{"position":{"x":33190.8794344319,"y":39643.6385888847},"targetPosition":{"x":32892.79215704803,"y":39058.15941839664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.candle.close.value","id":"b4e3481e-02c3-4b1a-b0fc-b45ea73bb669","savedPayload":{"position":{"x":33479.88936003423,"y":40479.88361302751},"targetPosition":{"x":33224.665534084605,"y":40272.523818575675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ba7855bc-df15-4472-bab3-6f7e54becbe2","savedPayload":{"position":{"x":33224.665534084605,"y":40272.523818575675},"targetPosition":{"x":32906.953409392976,"y":40014.3900057981},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInQuotedAsset":{"type":"Target Size In Quoted Asset","name":"New Target Size In Quoted Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.strategyOpenStage.stageQuotedAsset.sizeFilled.value","id":"395f39ec-ec09-4bb6-9f12-e8ee9b7597a8","savedPayload":{"position":{"x":32791.8566019331,"y":40742.056452093086},"targetPosition":{"x":32843.20460786232,"y":40417.234776223784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b8c905c4-1526-48e8-9ad9-e946f7e5fcd8","savedPayload":{"position":{"x":32843.20460786232,"y":40417.234776223784},"targetPosition":{"x":32906.953409392976,"y":40014.3900057981},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"fab71da1-214c-48e3-af1c-07502a6faabb","savedPayload":{"position":{"x":32906.731650409616,"y":40014.72252767729},"targetPosition":{"x":32789.711014486384,"y":39707.228937605854},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeExecution":{"type":"Close Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[{"type":"Market Buy Order","name":"Quick Exit","config":"{\n\"percentageOfAlgorithmSize\": 100,\n\"spawnMultipleOrders\": false\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"e4c80caa-13c7-489e-a47c-294c01bd2703","savedPayload":{"position":{"x":30394.65864156233,"y":39919.01266648516},"targetPosition":{"x":30354.08285601426,"y":39726.83313461171},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cbe12b3f-1a4a-4700-906f-fceb0606fcfe","savedPayload":{"position":{"x":30354.08285601426,"y":39726.83313461171},"targetPosition":{"x":30313.40152487844,"y":39533.97965557671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ddb0a9e7-a6eb-4607-968a-2f42ac3a8d60","savedPayload":{"position":{"x":30313.40152487844,"y":39533.97965557671},"targetPosition":{"x":30263.87310388014,"y":39299.44511505611},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"4018e1b8-c111-492f-b1c8-3b86633fb347","savedPayload":{"position":{"x":31912.632401842187,"y":40790.991262347714},"targetPosition":{"x":32119.66999707042,"y":40535.177231133974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9d2f1590-9146-49cd-9e1f-d6b5baeecf4b","savedPayload":{"position":{"x":32119.66999707042,"y":40535.177231133974},"targetPosition":{"x":32325.975563944667,"y":40280.232183442386},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Buy Order #1","id":"7d6c3ac9-4869-4ff3-a9f2-2a6f8a31ccf3"}}}],"marketSellOrders":[],"limitBuyOrders":[],"limitSellOrders":[],"id":"4a3fc4cf-8739-472e-a5f0-93b022eed042","savedPayload":{"position":{"x":32325.975563944667,"y":40280.232183442386},"targetPosition":{"x":32582.81005405947,"y":39962.87434663836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"06f7907c-2767-4a2f-881d-46c6b8b207ce","savedPayload":{"position":{"x":32582.54801742164,"y":39963.04940729073},"targetPosition":{"x":32789.711014486384,"y":39707.228937605854},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"b81728f5-c26c-47a9-b659-456150614134","savedPayload":{"position":{"x":32789.711014486384,"y":39707.228937605854},"targetPosition":{"x":32892.79215704803,"y":39058.15941839664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4af71378-a61f-4d1d-a1cd-6933897ef3bd","savedPayload":{"position":{"x":32892.79215704803,"y":39058.15941839664},"targetPosition":{"x":32428,"y":38593.35190918473},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Trading Strategy","name":"S8 - 4H Up","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"0b8368d3-b1b1-413b-bbeb-95641a85b80f","savedPayload":{"position":{"x":33830.310293212,"y":38534.60400766141},"targetPosition":{"x":33769.83545969666,"y":39000.45303453309},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6034fcd2-8d4d-48b8-a392-18535fa70a53","savedPayload":{"position":{"x":33769.83545969666,"y":39000.45303453309},"targetPosition":{"x":33709.63145459696,"y":39466.46310265829},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"5e94af5d-2be9-4ae9-ae44-2867f755a827","savedPayload":{"position":{"x":34088.194184654836,"y":38606.256458055475},"targetPosition":{"x":33898.940404820205,"y":39036.26014875041},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f811cfed-9f3e-4211-84da-066b038d0b33","savedPayload":{"position":{"x":33898.940404820205,"y":39036.26014875041},"targetPosition":{"x":33709.63145459696,"y":39466.46310265829},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"9d5052c6-8411-4f18-ace8-17f021dfd5e2","savedPayload":{"position":{"x":34315.28972703731,"y":38747.701293732775},"targetPosition":{"x":34012.5522532593,"y":39107.00053248497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d4f2d1aa-32fd-4345-8291-3da0a9bf3fc5","savedPayload":{"position":{"x":34012.5522532593,"y":39107.00053248497},"targetPosition":{"x":33709.63145459696,"y":39466.46310265829},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Up\"","id":"3347b5df-6552-43dd-8265-43bb7d87df98","savedPayload":{"position":{"x":34493.34483737568,"y":38947.41624609648},"targetPosition":{"x":34101.62340257199,"y":39206.880602627876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7a4b6d88-b433-435d-a683-6eb73780f27b","savedPayload":{"position":{"x":34101.62340257199,"y":39206.880602627876},"targetPosition":{"x":33709.63145459696,"y":39466.46310265829},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"3bf685d6-ac1f-4bab-a7f1-8450ee657948","savedPayload":{"position":{"x":34607.932614555306,"y":39189.22116638331},"targetPosition":{"x":34158.94133022003,"y":39327.81970193824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"22eebcad-ee09-4e3b-897e-9495bb82784d","savedPayload":{"position":{"x":34158.94133022003,"y":39327.81970193824},"targetPosition":{"x":33709.63145459696,"y":39466.46310265829},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Side or 1H Extreme or Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope === \"Side\" || (chart.at04hs.bollingerSubChannel.slope === \"Gentle\" && (chart.at01hs.bollingerSubChannel.slope === \"Extreme\" || chart.at01hs.bollingerSubChannel.slope === \"Side\"))","id":"d5a69ea3-5ae1-4e4b-b858-8844f20f6369","savedPayload":{"position":{"x":34649.757354881054,"y":39453.53589503764},"targetPosition":{"x":34179.85557810532,"y":39460.015155736466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"54ac9a91-76eb-4d28-9d75-bcad0008c481","savedPayload":{"position":{"x":34179.85557810532,"y":39460.015155736466},"targetPosition":{"x":33709.63145459696,"y":39466.46310265829},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"e84f9d0b-15fc-4656-a2ed-392304b44df3","savedPayload":{"position":{"x":34615.43351431526,"y":39718.31861660189},"targetPosition":{"x":34162.68650916914,"y":39592.45109534748},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"658b7720-b18e-42d0-9cb3-7f5c71928409","savedPayload":{"position":{"x":34162.68650916914,"y":39592.45109534748},"targetPosition":{"x":33709.63145459696,"y":39466.46310265829},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 3: 02H Down && 4H Side && 1H Medium, Steep or Extreme","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Down\" && chart.at12hs.bollingerChannel.direction === \"Down\" && chart.at04hs.bollingerSubChannel.slope === \"Side\" && (chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\")) {false} else {true}","id":"84b0abb3-cf34-491e-9436-4fdb07ee4977","savedPayload":{"position":{"x":34507.721690273116,"y":39963.32040905883},"targetPosition":{"x":34108.80208554763,"y":39714.99380215602},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f39b86b4-5a2a-470c-8503-0ee11eab51f6","savedPayload":{"position":{"x":34108.80208554763,"y":39714.99380215602},"targetPosition":{"x":33709.63145459696,"y":39466.46310265829},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 4: 02H Up && 02H Gentle && 3H Side","code":"chart.at02hs.percentageBandwidth.movingAverage > chart.at24hs.bollingerSubChannel.slope + chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Gentle\" && chart.at03hs.bollingerSubChannel.slope === \"Side\") {false} else {true}","id":"3bde8f4f-c2e3-413b-8df1-37aeb20a85f9","savedPayload":{"position":{"x":34335.338869139996,"y":40168.06092288105},"targetPosition":{"x":34022.56635879662,"y":39817.403140191105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"04fd8c8d-8074-4932-b3e1-56357c7829ea","savedPayload":{"position":{"x":34022.56635879662,"y":39817.403140191105},"targetPosition":{"x":33709.63145459696,"y":39466.46310265829},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 2: 02H, 03H, 04H, 06H, all Up && 2H Steep && 1H, 6H NOT Gentle","code":"chart.at24hs.bollingerChannel.direction + chart.at24hs.bollingerBand.slope > chart.at01hs.rsi14.value","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerSubChannel.direction === \"Up\" && chart.at03hs.bollingerSubChannel.direction === \"Up\" && chart.at04hs.bollingerSubChannel.direction === \"Up\" && chart.at06hs.bollingerSubChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Steep\" && chart.at01hs.bollingerSubChannel.slope != \"Gentle\" && chart.at06hs.bollingerSubChannel.slope != \"Gentle\") {false} else {true}","id":"cf1a034f-093e-422f-ba6f-ec4c3ce091d2","savedPayload":{"position":{"x":34112.07586985723,"y":40316.00357794454},"targetPosition":{"x":33910.81704496059,"y":39891.422592105315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"69c8d1ca-52b4-4eed-a65b-7a8a870bb46d","savedPayload":{"position":{"x":33910.81704496059,"y":39891.422592105315},"targetPosition":{"x":33709.63145459696,"y":39466.46310265829},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"64643171-239b-49ac-adc7-0124075eb96e","savedPayload":{"position":{"x":33709.63145459696,"y":39466.46310265829},"targetPosition":{"x":33245.13940872295,"y":39539.685783470006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"9c8b28ef-af88-416c-9262-20efbf357408","savedPayload":{"position":{"x":33245.51562598927,"y":39539.82569626934},"targetPosition":{"x":32935.37468787788,"y":39588.831988514314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"09286632-34ad-4ea0-9f01-32bd89b20900","savedPayload":{"position":{"x":33985.485018780324,"y":40350.487922234286},"targetPosition":{"x":33732.36085200314,"y":40166.22239450935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f75343e2-3c65-413b-85de-8e88a1f91e09","savedPayload":{"position":{"x":33732.36085200314,"y":40166.22239450935},"targetPosition":{"x":33478.25188242553,"y":39981.74105978116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"68074fb6-7ca9-43a7-a83c-abcd0c55148c","savedPayload":{"position":{"x":33478.25188242553,"y":39981.74105978116},"targetPosition":{"x":33189.30660236891,"y":39772.761152317595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"07f812fb-602f-4713-871d-648faa64a6ce","savedPayload":{"position":{"x":33189.54121358045,"y":39773.31269656018},"targetPosition":{"x":32935.37468787788,"y":39588.831988514314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"07c87bc6-f04b-4a08-88c3-82df8036a971","savedPayload":{"position":{"x":33999.809097823185,"y":40476.719659553404},"targetPosition":{"x":33533.76742330418,"y":40416.57036853707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9a120c5b-3fda-4ff3-89af-621d53b2e075","savedPayload":{"position":{"x":33533.76742330418,"y":40416.57036853707},"targetPosition":{"x":33067.359544566076,"y":40356.55666044011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"d054b93f-3378-49e9-9e18-73373b1ec935","savedPayload":{"position":{"x":33928.125279322914,"y":40734.82693520567},"targetPosition":{"x":33497.90610670896,"y":40545.74232987816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cbc32f34-4189-4526-a323-9291e672495c","savedPayload":{"position":{"x":33497.90610670896,"y":40545.74232987816},"targetPosition":{"x":33067.359544566076,"y":40356.55666044011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"562f3238-94f0-41af-8d61-f9984bc8bd0b","savedPayload":{"position":{"x":33786.71448978141,"y":40962.09652243021},"targetPosition":{"x":33427.19912471439,"y":40659.454737146094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d5b4549d-92bd-4c3e-af81-884899aae8d9","savedPayload":{"position":{"x":33427.19912471439,"y":40659.454737146094},"targetPosition":{"x":33067.359544566076,"y":40356.55666044011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Up\"","id":"ce7a4a64-743a-443d-a825-b02c25d4b55a","savedPayload":{"position":{"x":33586.926372648115,"y":41140.297697249625},"targetPosition":{"x":33327.27532613475,"y":40748.57839068191},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4b992367-9f3a-4ce3-b389-2fc84c8cca16","savedPayload":{"position":{"x":33327.27532613475,"y":40748.57839068191},"targetPosition":{"x":33067.359544566076,"y":40356.55666044011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"a1c10e9c-19b9-4805-b441-ce3ec64b23a1","savedPayload":{"position":{"x":33345.103853091096,"y":41255.00484341523},"targetPosition":{"x":33206.33525041699,"y":40805.97034652789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f5f2b1bb-f847-4994-a1ab-5252c7c685c6","savedPayload":{"position":{"x":33206.33525041699,"y":40805.97034652789},"targetPosition":{"x":33067.359544566076,"y":40356.55666044011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Side or 1H Extreme or Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope === \"Side\" || (chart.at04hs.bollingerSubChannel.slope === \"Gentle\" && (chart.at01hs.bollingerSubChannel.slope === \"Extreme\" || chart.at01hs.bollingerSubChannel.slope === \"Side\"))","id":"3d26867a-7ffc-4b17-a226-c2cf2d02a1ae","savedPayload":{"position":{"x":33080.78979634913,"y":41296.90772602636},"targetPosition":{"x":33074.12840581346,"y":40826.90716830538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a96f6aed-5ba0-458e-b073-a14a7030a4ce","savedPayload":{"position":{"x":33074.12840581346,"y":40826.90716830538},"targetPosition":{"x":33067.359544566076,"y":40356.55666044011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"f674d92e-8b5b-4a88-9c97-c0499fea9f41","savedPayload":{"position":{"x":32816.01783198465,"y":41262.6659534818},"targetPosition":{"x":32941.70928253171,"y":40809.774605574654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b0663ef7-ad0e-44eb-8448-87c92b066de1","savedPayload":{"position":{"x":32941.70928253171,"y":40809.774605574654},"targetPosition":{"x":33067.359544566076,"y":40356.55666044011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 3: 02H Down && 4H Side && 1H Medium, Steep or Extreme","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Down\" && chart.at12hs.bollingerChannel.direction === \"Down\" && chart.at04hs.bollingerSubChannel.slope === \"Side\" && (chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\")) {false} else {true}","id":"6337812b-5df1-428e-9d36-f7935dde3ca7","savedPayload":{"position":{"x":32570.99772598621,"y":41155.106377128366},"targetPosition":{"x":32819.18670988571,"y":40755.98840679427},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cda16118-0ec1-4313-bb27-be56055bb89a","savedPayload":{"position":{"x":32819.18670988571,"y":40755.98840679427},"targetPosition":{"x":33067.359544566076,"y":40356.55666044011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 4: 02H Up && 02H Gentle && 3H Side","code":"chart.at02hs.percentageBandwidth.movingAverage > chart.at24hs.bollingerSubChannel.slope + chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Gentle\" && chart.at03hs.bollingerSubChannel.slope === \"Side\") {false} else {true}","id":"d467380e-37f7-4d69-8384-c766fa7511ef","savedPayload":{"position":{"x":32366.27861495547,"y":40982.92343450592},"targetPosition":{"x":32716.802509487286,"y":40669.856554238766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"90afdd8d-1565-42b1-abbb-e88eb2e359db","savedPayload":{"position":{"x":32716.802509487286,"y":40669.856554238766},"targetPosition":{"x":33067.359544566076,"y":40356.55666044011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 2: 02H, 03H, 04H, 06H, all Up && 2H Steep && 1H, 6H NOT Gentle","code":"chart.at24hs.bollingerChannel.direction + chart.at24hs.bollingerBand.slope > chart.at01hs.rsi14.value","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerSubChannel.direction === \"Up\" && chart.at03hs.bollingerSubChannel.direction === \"Up\" && chart.at04hs.bollingerSubChannel.direction === \"Up\" && chart.at06hs.bollingerSubChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Steep\" && chart.at01hs.bollingerSubChannel.slope != \"Gentle\" && chart.at06hs.bollingerSubChannel.slope != \"Gentle\") {false} else {true}","id":"051149b3-b815-4eb2-952c-88317a972764","savedPayload":{"position":{"x":32218.323931385155,"y":40759.985060313615},"targetPosition":{"x":32642.815714624052,"y":40558.24482316424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ac3a3676-3fc0-4eed-97c8-51fe93a65256","savedPayload":{"position":{"x":32642.815714624052,"y":40558.24482316424},"targetPosition":{"x":33067.359544566076,"y":40356.55666044011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3583b309-fa26-4e63-bfb2-055d5bad14b7","savedPayload":{"position":{"x":33067.359544566076,"y":40356.55666044011},"targetPosition":{"x":32993.47282674427,"y":39891.86369817477},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"e86cdca6-99e9-487f-b824-af95cf635d1f","savedPayload":{"position":{"x":32984.90784393463,"y":39898.6414493171},"targetPosition":{"x":32935.37468787788,"y":39588.831988514314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"fa8dc2de-7299-4e00-82a7-deb31393b442","savedPayload":{"position":{"x":32935.37468787788,"y":39588.831988514314},"targetPosition":{"x":32427.997242162815,"y":39220.45745774126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"My Formula","code":"tradingEngine.current.episode.candle.close.value","id":"e7d607dd-f2cf-441a-92a3-f4c77906e441","savedPayload":{"position":{"x":31109.03537760771,"y":35223.628432555364},"targetPosition":{"x":31188.22487576295,"y":35430.989307751406},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8b5ce9d5-7f3a-4f8f-b859-dafed2c1ca15","savedPayload":{"position":{"x":31188.22487576295,"y":35430.989307751406},"targetPosition":{"x":31346.5189675687,"y":35844.730721563676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInBaseAsset":{"type":"Target Size In Base Asset","name":"New Target Size In Base Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.episodeBaseAsset.balance.value","id":"fdeba1ec-5b1a-4da6-b453-cbab79be9f77","savedPayload":{"position":{"x":31763.883491382978,"y":35327.57262989926},"targetPosition":{"x":31624.932740585253,"y":35500.273410937116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"5844b9d1-3453-43e1-a6e9-a5693229f091","savedPayload":{"position":{"x":31624.932740585253,"y":35500.273410937116},"targetPosition":{"x":31346.5189675687,"y":35844.730721563676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"cd9456f4-3829-4345-9f57-3a24a4713d8c","savedPayload":{"position":{"x":32854.786616961705,"y":40027.378834836774},"targetPosition":{"x":32621.794788820538,"y":39816.875368025096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[],"marketSellOrders":[{"type":"Market Sell Order","name":"Quick Entry","config":"{\n\"percentageOfAlgorithmSize\": 100\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"a8698e14-e989-4d7f-875a-58a5406336ce","savedPayload":{"position":{"x":32164.94016975123,"y":41972.703807548845},"targetPosition":{"x":32229.99660205742,"y":41666.288631609954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"886857cf-a060-4f90-b596-697e2daf6184","savedPayload":{"position":{"x":32229.99660205742,"y":41666.288631609954},"targetPosition":{"x":32294.923240846547,"y":41360.30996627453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0928e6d5-5b3c-4a7e-9633-5aa6fb46a459","savedPayload":{"position":{"x":32294.923240846547,"y":41360.30996627453},"targetPosition":{"x":32360.10480753241,"y":41053.95002648986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"758c7111-856e-459e-bc44-4395e5430752","savedPayload":{"position":{"x":32360.10480753241,"y":41053.95002648986},"targetPosition":{"x":32425.3938407244,"y":40747.05567483181},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4dc48a16-7a46-421f-9583-8573686526ab","savedPayload":{"position":{"x":32425.3938407244,"y":40747.05567483181},"targetPosition":{"x":32490.574500060255,"y":40439.88598991742},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Sell Order #1","id":"8e404329-d41f-41e0-ad5a-c84ee1fa2604"}}}],"limitBuyOrders":[],"limitSellOrders":[],"id":"047b28d0-c4d4-4926-954d-af602e9e9915","savedPayload":{"position":{"x":32490.574500060255,"y":40439.88598991742},"targetPosition":{"x":32557.15066765282,"y":40123.761587575565},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"25b80432-bad3-4069-9c87-e550f1480a1f","savedPayload":{"position":{"x":32557.1339382162,"y":40123.970301625704},"targetPosition":{"x":32621.794788820538,"y":39816.875368025096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"d991ee3c-6598-4e8c-9510-78528130856d","savedPayload":{"position":{"x":32621.794788820538,"y":39816.875368025096},"targetPosition":{"x":32427.997242162815,"y":39220.45745774126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Controlled Run","managedStopLoss":{"type":"Managed Stop Loss","name":"New Managed Stop Loss","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.entryTargetRate.value * 1.03","id":"ca59d229-8ed9-4468-84f2-fa6d2c673209","savedPayload":{"position":{"x":32590.78327014033,"y":40742.07775307233},"targetPosition":{"x":32380.116245487854,"y":40507.724352206504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < tradingEngine.current.position.entryTargetRate.value * 0.97","id":"98e5e81b-f937-43cc-b7aa-6e85e44f47da","savedPayload":{"position":{"x":33326.87738491098,"y":41310.61335854596},"targetPosition":{"x":33093.98642562343,"y":41100.81255526864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3cd19ef8-b808-45cf-b4a1-441b5995c7b8","savedPayload":{"position":{"x":33093.98642562343,"y":41100.81255526864},"targetPosition":{"x":32860.836131268115,"y":40890.65989990054},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e33ab866-419b-4032-943e-2964584f8655","savedPayload":{"position":{"x":32860.836131268115,"y":40890.65989990054},"targetPosition":{"x":32613.126021023963,"y":40667.21946446565},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"fa02c41e-d7f1-4f72-ad59-314b44addb3e","savedPayload":{"position":{"x":32282.34099357544,"y":40807.02858794921},"targetPosition":{"x":32380.116245487854,"y":40507.724352206504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"b9595e4d-8c34-418f-90a7-431394b8edb6","savedPayload":{"position":{"x":32380.085227696087,"y":40507.571655853564},"targetPosition":{"x":32299.00911047177,"y":40123.331045816834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage * 1.02 < tradingEngine.current.position.stopLoss.value) {chart.at01hs.bollingerBand.movingAverage * 1.02} else {tradingEngine.current.position.stopLoss.value}","id":"6938be43-dc74-4576-8b0a-8b18bd34792e","savedPayload":{"position":{"x":32510.26257651325,"y":41122.512814270165},"targetPosition":{"x":32445.335410563777,"y":40815.66614819492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"6cefcdbc-918c-4abe-99f9-5a99c391d79b","savedPayload":{"position":{"x":32445.335410563777,"y":40815.66614819492},"targetPosition":{"x":32380.116245487854,"y":40507.724352206504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"901eb16f-14dd-4fd2-81c1-b4713a1b34e0","savedPayload":{"position":{"x":32299.39539067711,"y":40123.88450170566},"targetPosition":{"x":32234.24833733182,"y":39816.686635159334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"managedTakeProfit":{"type":"Managed Take Profit","name":"New Managed Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.entryTargetRate.value * 0.95","id":"0cceca6d-8f5f-4350-8b7f-ec6db32521c2","savedPayload":{"position":{"x":31775.683792155687,"y":40596.9294604998},"targetPosition":{"x":31710.138304685614,"y":40289.55321882317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < entryTargetRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < tradingEngine.current.position.entryTargetRate.value","id":"1addcc51-a16b-4985-92f6-e76e87b7b318","savedPayload":{"position":{"x":31900.323689482382,"y":41418.44480028249},"targetPosition":{"x":31965.347462291138,"y":41111.243143187094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4e7b259b-db2b-4e52-a9db-c23dedf3f214","savedPayload":{"position":{"x":31965.347462291138,"y":41111.243143187094},"targetPosition":{"x":32030.375413785237,"y":40804.06814102122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.current.position.positionCounters.periods.value > 2","id":"ca0cc08d-9284-42ab-87a7-6d955299c4b9","savedPayload":{"position":{"x":31433.728278140396,"y":40999.21646519097},"targetPosition":{"x":31731.89734890633,"y":40901.626678880064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"90b48244-0763-424b-8bc4-d2a93970e171","savedPayload":{"position":{"x":31731.89734890633,"y":40901.626678880064},"targetPosition":{"x":32030.375413785237,"y":40804.06814102122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8152e6ad-9c73-48d3-aa81-d2a046876913","savedPayload":{"position":{"x":32030.375413785237,"y":40804.06814102122},"targetPosition":{"x":32253.078653802637,"y":40556.06222423832},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"6b25f9d9-b3bb-4426-9f19-460186077662","savedPayload":{"position":{"x":31411.461717993472,"y":40192.48443720956},"targetPosition":{"x":31710.138304685614,"y":40289.55321882317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"2c1f29b4-9e38-4e72-a32a-e1e48cc6af9e","savedPayload":{"position":{"x":31710.138304685614,"y":40289.55321882317},"targetPosition":{"x":32001.780924769246,"y":40026.58015279609},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 * 0.97 < tradingEngine.current.position.entryTargetRate.value * 0.97) {chart.at01hs.base7EMA.ema7 * 0.97} else {tradingEngine.current.position.entryTargetRate.value * 0.97}","id":"0199babe-dfd7-4f18-b9d7-3b73ade997fd","savedPayload":{"position":{"x":31687.166550579375,"y":40733.30932457237},"targetPosition":{"x":31476.99623782907,"y":40499.75078343684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"89e97633-9b3e-42ba-9cf6-bf29d6383a72","savedPayload":{"position":{"x":23033.328805837737,"y":35295.718767074795},"targetPosition":{"x":22873.69810751162,"y":34937.72559372979},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"971da4c6-325b-4c78-a025-95dbd138bbc4","savedPayload":{"position":{"x":22873.69810751162,"y":34937.72559372979},"targetPosition":{"x":22713.75264606844,"y":34579.691130179155},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2af1c651-e988-4ae0-92a3-d0918b8a1cfe","savedPayload":{"position":{"x":22713.75264606844,"y":34579.691130179155},"targetPosition":{"x":22553.57274206043,"y":34221.57302314736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"4e18019c-6173-4b68-b709-174bc220cd55","savedPayload":{"position":{"x":31301.271588773263,"y":40791.48686633665},"targetPosition":{"x":31476.99623782907,"y":40499.75078343684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"a8860a5a-66b5-41f0-8a6c-dac7bf971c9d","savedPayload":{"position":{"x":30718.162664849966,"y":39929.68898167578},"targetPosition":{"x":31019.531253255856,"y":39842.29018570974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"690aeb6d-75ec-45c9-b321-9d943d84df5f","savedPayload":{"position":{"x":31019.531253255856,"y":39842.29018570974},"targetPosition":{"x":31321.033287616596,"y":39754.53971560639},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"d691ad30-4129-48d1-9b75-2b2337e409d2","savedPayload":{"position":{"x":30701.441122581367,"y":39651.48679850205},"targetPosition":{"x":31011.185010908423,"y":39703.046971964184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"30880b5e-f66a-4d5a-b112-14bcc8bb9ac9","savedPayload":{"position":{"x":31011.185010908423,"y":39703.046971964184},"targetPosition":{"x":31321.033287616596,"y":39754.53971560639},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < tradingEngine.current.position.entryTargetRate.value * 0.99","id":"8d66b5bd-521c-4d19-9fc0-baa4fb54ad84","savedPayload":{"position":{"x":30807.237674648426,"y":39393.1030807674},"targetPosition":{"x":31064.06938913031,"y":39573.789917027796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c4298d6d-c635-49fe-a517-0dc19531c919","savedPayload":{"position":{"x":31064.06938913031,"y":39573.789917027796},"targetPosition":{"x":31321.033287616596,"y":39754.53971560639},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"67b51901-a5fe-4fad-aad4-fc4d756b09cc","savedPayload":{"position":{"x":31014.749638437428,"y":39206.27029370151},"targetPosition":{"x":31167.864949397044,"y":39480.33916150553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b051770c-7c9c-4636-86c8-d3b419f9a8bd","savedPayload":{"position":{"x":31167.864949397044,"y":39480.33916150553},"targetPosition":{"x":31321.033287616596,"y":39754.53971560639},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"8d54874e-6c21-434a-80fa-492bf2a9be2b","savedPayload":{"position":{"x":31282.73354065079,"y":39128.094786179856},"targetPosition":{"x":31301.954375080164,"y":39441.27922613138},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9aa25c88-a620-42f1-b1e8-403c5c8718b1","savedPayload":{"position":{"x":31301.954375080164,"y":39441.27922613138},"targetPosition":{"x":31321.033287616596,"y":39754.53971560639},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Down && NOT Side","code":"chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Down\" && chart.at01hs.bollingerSubChannel.slope != \"Side\"","id":"e8c97495-8098-4209-a220-6c399baba0f3","savedPayload":{"position":{"x":31557.68071198087,"y":39174.01757425901},"targetPosition":{"x":31439.586431602474,"y":39464.207928524804},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f39ad55a-1988-4ac8-9d5c-99054f951179","savedPayload":{"position":{"x":31439.586431602474,"y":39464.207928524804},"targetPosition":{"x":31321.033287616596,"y":39754.53971560639},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"abaf1d9b-b5f9-4f8f-9a59-10936c3ea7b1","savedPayload":{"position":{"x":31321.033287616596,"y":39754.53971560639},"targetPosition":{"x":31544.02023141344,"y":40002.017225762065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"f9636b68-93f0-4100-8046-1d62eed73501","savedPayload":{"position":{"x":31266.622150649975,"y":40266.52800156048},"targetPosition":{"x":31476.99623782907,"y":40499.75078343684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"274cc7b8-9ab0-4f9a-9302-3357cfcac9da"}}}],"announcements":[],"id":"b1d129c5-5f5e-4b1a-a2d6-b79561d2a6ce","savedPayload":{"position":{"x":31476.99623782907,"y":40499.75078343684},"targetPosition":{"x":31710.03571656655,"y":40289.64722929379},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < \ntradingEngine.current.position.entryTargetRate.value * 0.97) \n{chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else \n{tradingEngine.current.position.entryTargetRate.value * 0.97}","id":"640cd6a8-a447-43ca-84f9-7dc5e6c8c826","savedPayload":{"position":{"x":31214.177518485638,"y":41003.08416383211},"targetPosition":{"x":31230.07349045192,"y":40688.913536266264},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"9502bdd5-310a-4048-81ca-1eb0afe3c99d","savedPayload":{"position":{"x":31273.95073221565,"y":41578.485724639126},"targetPosition":{"x":31208.88753923079,"y":41271.57472675193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cb42b9eb-16cb-4bb4-af70-570fc4d1cd29","savedPayload":{"position":{"x":31208.88753923079,"y":41271.57472675193},"targetPosition":{"x":31143.7380722765,"y":40964.28773305914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"da7a29f2-93be-4ce8-aeb0-f286b5710891","savedPayload":{"position":{"x":30949.828651798012,"y":41561.47930852649},"targetPosition":{"x":31046.719312897774,"y":41263.0666652442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b4748a9d-7f41-4ce0-92ea-267488fd2e02","savedPayload":{"position":{"x":31046.719312897774,"y":41263.0666652442},"targetPosition":{"x":31143.7380722765,"y":40964.28773305914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"792355fa-6601-4a41-b673-b814127b3524","savedPayload":{"position":{"x":30677.269208508795,"y":41384.51980117457},"targetPosition":{"x":30910.377598565246,"y":41174.551058139485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4cd7afea-ce88-4111-b74e-dc48e34bcee5","savedPayload":{"position":{"x":30910.377598565246,"y":41174.551058139485},"targetPosition":{"x":31143.7380722765,"y":40964.28773305914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"835d94b1-7b62-43bc-bbda-34184c5a5410","savedPayload":{"position":{"x":30529.6617621846,"y":41095.06720980446},"targetPosition":{"x":30836.537402510272,"y":41029.76857543031},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"66c6c8dc-f8b2-4534-aeb1-5f7aea412564","savedPayload":{"position":{"x":30836.537402510272,"y":41029.76857543031},"targetPosition":{"x":31143.7380722765,"y":40964.28773305914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Down && NOT Side or Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Down\" && chart.at01hs.bollingerSubChannel.slope != \"Side\" && chart.at01hs.bollingerSubChannel.slope != \"Gentle\"","id":"4734e468-3fd1-4b7e-8361-66dea0f1d3c1","savedPayload":{"position":{"x":30546.496716150334,"y":40771.08846325949},"targetPosition":{"x":30844.941961500183,"y":40867.72610194781},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b9f90ab7-e386-4fa3-a326-d99ce319edcd","savedPayload":{"position":{"x":30844.941961500183,"y":40867.72610194781},"targetPosition":{"x":31143.7380722765,"y":40964.28773305914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"26ef5972-8cc4-4b0d-92a4-b7da565b84b4","savedPayload":{"position":{"x":31143.7380722765,"y":40964.28773305914},"targetPosition":{"x":31391.40872565758,"y":40741.145427143376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"9be98459-d007-4f66-94ac-cc7b6c6ad81c","savedPayload":{"position":{"x":30932.498944046914,"y":40975.23165884789},"targetPosition":{"x":31230.07349045192,"y":40688.913536266264},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"274cc7b8-9ab0-4f9a-9302-3357cfcac9da"}}},{"type":"Move To Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","code":"chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"c959c1b6-aec3-4db7-a572-477f1ea2c132","savedPayload":{"position":{"x":30401.84219769731,"y":40816.99809402587},"targetPosition":{"x":30635.438003631432,"y":40607.16608378943},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"31460537-bb42-499a-9645-fca83618f4a5","savedPayload":{"position":{"x":30635.438003631432,"y":40607.16608378943},"targetPosition":{"x":30869.137366385152,"y":40397.45567315389},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"b3e36006-93f4-4852-a7a7-d612a7e7ec27","savedPayload":{"position":{"x":30241.869176754015,"y":40364.83545826366},"targetPosition":{"x":30555.335272988446,"y":40381.10968273637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b8fe60bd-1dbd-458d-bdfd-1accfdab0b7c","savedPayload":{"position":{"x":30555.335272988446,"y":40381.10968273637},"targetPosition":{"x":30869.137366385152,"y":40397.45567315389},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"6b79a9e3-796e-4db6-8a5c-0bc0bd875f45","savedPayload":{"position":{"x":30448.570460839786,"y":39931.48678388074},"targetPosition":{"x":30658.759591029822,"y":40164.38065698531},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1d09d25e-54eb-4d39-bea6-44f8492a2d10","savedPayload":{"position":{"x":30658.759591029822,"y":40164.38065698531},"targetPosition":{"x":30869.137366385152,"y":40397.45567315389},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f3ce7cba-7352-4634-a05d-07399ba679f2","savedPayload":{"position":{"x":30869.137366385152,"y":40397.45567315389},"targetPosition":{"x":31201.99419940985,"y":40414.93201835589},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"23ebc628-449c-43d8-97a2-28c23bb4dda7","savedPayload":{"position":{"x":30916.126816882235,"y":40672.32131644474},"targetPosition":{"x":31230.07349045192,"y":40688.913536266264},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"b1d129c5-5f5e-4b1a-a2d6-b79561d2a6ce"}}}],"announcements":[],"id":"0995a46a-7564-4e4a-bdf9-d1dd437c75c6","savedPayload":{"position":{"x":31230.07349045192,"y":40688.913536266264},"targetPosition":{"x":31476.99623782907,"y":40499.75078343684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 * 0.8 < \ntradingEngine.current.position.entryTargetRate.value * 0.97) \n{chart.at01hs.base7EMA.ema7 * 0.8} else \n{tradingEngine.current.position.takeProfit.value}","id":"12d58077-9b90-44f6-9d1d-5247aad7b0a4","savedPayload":{"position":{"x":31438.583991774376,"y":41099.33877447743},"targetPosition":{"x":31348.046379687625,"y":40667.97274441191},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"af3238a0-9671-4ef7-90d8-802f9255d298","savedPayload":{"position":{"x":22271.958671064247,"y":36315.661243868024},"targetPosition":{"x":22026.377014338934,"y":36009.76046446421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2191cdaf-d396-458b-80e3-d67c69976c29","savedPayload":{"position":{"x":22026.377014338934,"y":36009.76046446421},"targetPosition":{"x":21784.180619213505,"y":35708.30048335843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"fa54d65e-9ed1-42f1-bcfe-c774607c7ae3","savedPayload":{"position":{"x":21699.777811061416,"y":36489.693490932514},"targetPosition":{"x":21742.00368629553,"y":36099.11533313002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"de06b55c-392c-4032-b8a9-b1810881be63","savedPayload":{"position":{"x":21742.00368629553,"y":36099.11533313002},"targetPosition":{"x":21784.180619213505,"y":35708.30048335843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Up || Side, Gentle or Medium","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Up\" || chart.at01hs.bollingerSubChannel.slope === \"Side\" || chart.at01hs.bollingerSubChannel.slope === \"Gentle\" || chart.at01hs.bollingerSubChannel.slope === \"Medium\"","id":"4eca07e4-a6af-46c8-8099-fd4599755539","savedPayload":{"position":{"x":21172.343148911386,"y":36203.46067176629},"targetPosition":{"x":21478.240249595197,"y":35955.971745903844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a6ee99c3-005b-4b96-be05-579230e6af8b","savedPayload":{"position":{"x":21478.240249595197,"y":35955.971745903844},"targetPosition":{"x":21784.180619213505,"y":35708.30048335843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9fb58e58-feea-47c1-b7a6-0da4777ff32f","savedPayload":{"position":{"x":21784.180619213505,"y":35708.30048335843},"targetPosition":{"x":21834.233366043794,"y":35300.87308512004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"3ca96593-db50-40f0-a191-bfdffe79fdf8","savedPayload":{"position":{"x":30923.927165082252,"y":40757.992885564396},"targetPosition":{"x":31348.046379687625,"y":40667.97274441191},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"b1d129c5-5f5e-4b1a-a2d6-b79561d2a6ce"}}}],"announcements":[],"id":"274cc7b8-9ab0-4f9a-9302-3357cfcac9da","savedPayload":{"position":{"x":31012.717288983145,"y":40880.27931740013},"targetPosition":{"x":31230.07349045192,"y":40688.913536266264},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5969717f-fd1e-4579-a80b-5e66723412a9","savedPayload":{"position":{"x":32001.02956910759,"y":40026.87604865732},"targetPosition":{"x":32234.24833733182,"y":39816.686635159334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"455d4f49-eb65-49f8-a6d5-2bdd44e8bbac","savedPayload":{"position":{"x":32234.24833733182,"y":39816.686635159334},"targetPosition":{"x":32427.997242162815,"y":39220.45745774126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.candle.close.value","id":"27a608d6-178f-4b7e-adb3-6d516e255821","savedPayload":{"position":{"x":32009.34063726866,"y":37186.607586294434},"targetPosition":{"x":31840.403198941276,"y":37181.38033092273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f8ba5789-fde1-408f-9c16-5220cab0d132","savedPayload":{"position":{"x":31840.403198941276,"y":37181.38033092273},"targetPosition":{"x":31454.98281064832,"y":37170.889194680974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInQuotedAsset":{"type":"Target Size In Quoted Asset","name":"New Target Size In Quoted Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.strategyOpenStage.stageQuotedAsset.sizeFilled.value","id":"a84d1dbe-fb5a-4b4d-9135-7182197a7b43","savedPayload":{"position":{"x":31715.077428897122,"y":37649.169145049316},"targetPosition":{"x":31634.65375367533,"y":37501.59284895394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"df57e26e-cfa4-4b93-b2f1-cf099b22b8a8","savedPayload":{"position":{"x":31634.65375367533,"y":37501.59284895394},"targetPosition":{"x":31454.98281064832,"y":37170.889194680974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"fa5dae3c-efab-4936-bbee-8a07d9593055","savedPayload":{"position":{"x":31792.37423193155,"y":39875.24542274622},"targetPosition":{"x":31920.517579845327,"y":39588.795475780455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeExecution":{"type":"Close Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[{"type":"Market Buy Order","name":"Quick Exit","config":"{\n\"percentageOfAlgorithmSize\": 100,\n\"spawnMultipleOrders\": false\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"9d763bcb-8be6-41e4-875a-2c7842cc6909","savedPayload":{"position":{"x":30696.557582886584,"y":38378.03706182753},"targetPosition":{"x":30655.981797338514,"y":38185.857529954075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"88b2ba31-76a8-43ee-8c4b-3b6e1e187a82","savedPayload":{"position":{"x":30655.981797338514,"y":38185.857529954075},"targetPosition":{"x":30615.300466202694,"y":37993.00405091907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2b1f9c91-7bb6-40ad-a43a-c52b0287ed9e","savedPayload":{"position":{"x":30615.300466202694,"y":37993.00405091907},"targetPosition":{"x":30565.772045204394,"y":37758.46951039847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"a1de1b80-9a70-460b-8d8d-7a3846687b70","savedPayload":{"position":{"x":30581.838786842072,"y":39729.33479728671},"targetPosition":{"x":30893.511870370236,"y":39696.60497097584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ef6e7305-d840-4fa6-8aee-da60b33bef83","savedPayload":{"position":{"x":30893.511870370236,"y":39696.60497097584},"targetPosition":{"x":31205.635338328375,"y":39663.81644878757},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Buy Order #1","id":"7d6c3ac9-4869-4ff3-a9f2-2a6f8a31ccf3"}}}],"marketSellOrders":[],"limitBuyOrders":[],"limitSellOrders":[],"id":"06078431-e8b2-4116-99fa-7362a18d6ebd","savedPayload":{"position":{"x":31205.635338328375,"y":39663.81644878757},"targetPosition":{"x":31608.250775384044,"y":39621.411577047744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"29750ebf-e23e-4d96-b8c3-02c5d5f1ade7","savedPayload":{"position":{"x":31608.30951636997,"y":39621.48724059722},"targetPosition":{"x":31920.517579845327,"y":39588.795475780455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"d40a7e65-760d-4c56-8aac-d17111607cf9","savedPayload":{"position":{"x":31920.517579845327,"y":39588.795475780455},"targetPosition":{"x":32427.997242162815,"y":39220.45745774126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a1b63f90-0ec5-4eb4-a51e-88852cc95049","savedPayload":{"position":{"x":32427.997242162815,"y":39220.45745774126},"targetPosition":{"x":32428,"y":38593.35190918473},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Trading Strategy","name":"S4 - 8H Up","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"565db073-2544-4f1e-8ffd-450fb4e10feb","savedPayload":{"position":{"x":33183.9400179068,"y":39765.86214931772},"targetPosition":{"x":32906.82732050487,"y":39952.70080437423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1f26cf4a-76fc-4186-9b3b-9010f9f3da7c","savedPayload":{"position":{"x":32906.82732050487,"y":39952.70080437423},"targetPosition":{"x":32629.656311638697,"y":40139.54783491784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"f288ec4c-d242-4138-a291-4e97fcec4e8e","savedPayload":{"position":{"x":33279.37171993113,"y":39978.38286384457},"targetPosition":{"x":32954.52614038593,"y":40058.82146273765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"eb5bf914-8163-453a-afa5-95f22ba39ead","savedPayload":{"position":{"x":32954.52614038593,"y":40058.82146273765},"targetPosition":{"x":32629.656311638697,"y":40139.54783491784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"0638ff08-302c-488f-8a8b-be0cd0454e49","savedPayload":{"position":{"x":33294.701591616824,"y":40209.63182337401},"targetPosition":{"x":32962.25727356607,"y":40174.498817694424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0c8e03c5-c1b2-4aaf-bddc-874c50cfbbba","savedPayload":{"position":{"x":32962.25727356607,"y":40174.498817694424},"targetPosition":{"x":32629.656311638697,"y":40139.54783491784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"8H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at08hs.bollingerChannel.direction === \"Up\"","id":"77dbd8ad-81fc-4394-93d4-e84e931970f7","savedPayload":{"position":{"x":33231.46779537755,"y":40433.151390987376},"targetPosition":{"x":32930.5346812897,"y":40286.29530842849},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"78fae417-cc69-4a59-8edf-5d2e7102b50f","savedPayload":{"position":{"x":32930.5346812897,"y":40286.29530842849},"targetPosition":{"x":32629.656311638697,"y":40139.54783491784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"12H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at12hs.bollingerChannel.direction === \"Down\"","id":"f513cfb2-d7b3-442b-8d72-8bedb02e7ddf","savedPayload":{"position":{"x":33094.45192846664,"y":40621.76245130792},"targetPosition":{"x":32862.254255158565,"y":40380.88042596735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4ab49bb6-b9d3-44a1-8fa5-6d5f7b9d3b3f","savedPayload":{"position":{"x":32862.254255158565,"y":40380.88042596735},"targetPosition":{"x":32629.656311638697,"y":40139.54783491784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"09bdc89a-fa30-46cc-9da0-aa16844e829b","savedPayload":{"position":{"x":32902.23513705451,"y":40750.250511911676},"targetPosition":{"x":32765.881437984084,"y":40445.02842388817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2aae14ee-14b3-4c94-9394-d64432517632","savedPayload":{"position":{"x":32765.881437984084,"y":40445.02842388817},"targetPosition":{"x":32629.656311638697,"y":40139.54783491784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H NOT Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope != \"Extreme\"","id":"a2059ed1-a903-483c-a5b1-a44203fb670f","savedPayload":{"position":{"x":32676.15845745108,"y":40807.2596487454},"targetPosition":{"x":32652.82281280389,"y":40473.874383787006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2ca6efe4-43ac-45a1-ba84-5215d33f32a6","savedPayload":{"position":{"x":32652.82281280389,"y":40473.874383787006},"targetPosition":{"x":32629.656311638697,"y":40139.54783491784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Deviation > 40","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerBand.deviation > 25","id":"3b0663ea-9168-4101-bd49-a4fa14473dc7","savedPayload":{"position":{"x":32446.0711976551,"y":40782.57703315834},"targetPosition":{"x":32537.68326895681,"y":40461.401124979755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6f3289e9-c257-4953-ae25-664416db52a7","savedPayload":{"position":{"x":32537.68326895681,"y":40461.401124979755},"targetPosition":{"x":32629.656311638697,"y":40139.54783491784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"977e6e41-dca1-4b42-9e82-3e2eeae3c220","savedPayload":{"position":{"x":32629.656311638697,"y":40139.54783491784},"targetPosition":{"x":32330.47098408375,"y":39921.815712818876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"260de0f8-58ff-477f-aadb-f61a4043e3a8","savedPayload":{"position":{"x":32330.717162881756,"y":39922.32803017666},"targetPosition":{"x":32060.11570479385,"y":39725.73753384895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"a2b6bf13-42e1-428f-9691-42be919fa8c1","savedPayload":{"position":{"x":32275.082445227177,"y":41081.15473064793},"targetPosition":{"x":32223.801591967276,"y":40750.602822787856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"05892d30-611b-4f6e-93ae-3f484b208fe5","savedPayload":{"position":{"x":32223.801591967276,"y":40750.602822787856},"targetPosition":{"x":32171.033226873667,"y":40421.105469682785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f6bb3530-fc04-47bb-b335-1f90463c6a04","savedPayload":{"position":{"x":32171.033226873667,"y":40421.105469682785},"targetPosition":{"x":32113.527936539514,"y":40055.71022843633},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"3046ad00-d3de-4458-80db-287144ff86fa","savedPayload":{"position":{"x":32112.50777215519,"y":40056.18498516763},"targetPosition":{"x":32060.11570479385,"y":39725.73753384895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"3847310d-3d70-43f6-85a1-8a62eec1d4d3","savedPayload":{"position":{"x":32001.1505734111,"y":40869.16826396587},"targetPosition":{"x":31827.597736693075,"y":40582.93803358378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"680fec1e-3d4c-4b3b-82a6-0f45a34f9776","savedPayload":{"position":{"x":31827.597736693075,"y":40582.93803358378},"targetPosition":{"x":31653.59027630698,"y":40298.27056106541},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"ffbb6568-c112-46de-8097-fbf993a8232f","savedPayload":{"position":{"x":31757.32683363784,"y":40957.60239660007},"targetPosition":{"x":31706.024153510098,"y":40628.26028185353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f0830878-6dd9-4657-a0b5-906ff9296559","savedPayload":{"position":{"x":31706.024153510098,"y":40628.26028185353},"targetPosition":{"x":31653.59027630698,"y":40298.27056106541},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"d7a8fc7d-57a2-4340-bb12-627c667324e6","savedPayload":{"position":{"x":31496.644128013388,"y":40947.399649973944},"targetPosition":{"x":31575.87618813554,"y":40622.592939348484},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e841acd3-9785-49f5-be08-5aa63d3df039","savedPayload":{"position":{"x":31575.87618813554,"y":40622.592939348484},"targetPosition":{"x":31653.59027630698,"y":40298.27056106541},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"8H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at08hs.bollingerChannel.direction === \"Up\"","id":"60872ff6-a88d-4e3c-9069-4337d9e77653","savedPayload":{"position":{"x":31261.910845082835,"y":40839.2258346135},"targetPosition":{"x":31458.399075341968,"y":40567.76569574534},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"969eebbc-1e68-4dc7-bb42-5fd1e92648b3","savedPayload":{"position":{"x":31458.399075341968,"y":40567.76569574534},"targetPosition":{"x":31653.59027630698,"y":40298.27056106541},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"12H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at12hs.bollingerChannel.direction === \"Down\"","id":"e1f6e5b8-70b1-44b9-b127-099a28b39e5f","savedPayload":{"position":{"x":31083.454001513663,"y":40647.41803590668},"targetPosition":{"x":31368.734693890397,"y":40472.18753893596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1d87e62c-73ff-434b-ac60-e7afa7035b78","savedPayload":{"position":{"x":31368.734693890397,"y":40472.18753893596},"targetPosition":{"x":31653.59027630698,"y":40298.27056106541},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"4dbcbf0e-b029-40db-9b3e-422ccb1d1642","savedPayload":{"position":{"x":30993.567876412057,"y":40401.87501048634},"targetPosition":{"x":31323.189136667042,"y":40350.36512018795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ed71b78d-b409-451d-9e23-72fde4c6ac59","savedPayload":{"position":{"x":31323.189136667042,"y":40350.36512018795},"targetPosition":{"x":31653.59027630698,"y":40298.27056106541},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Deviation > 40","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerBand.deviation > 25","id":"ca95ffdd-a14f-4985-84b7-2a482eb8091d","savedPayload":{"position":{"x":31002.705674324498,"y":40141.92041245733},"targetPosition":{"x":31327.56440204581,"y":40219.78019213498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"80a35c8a-7650-442f-82de-b9acb0c09988","savedPayload":{"position":{"x":31327.56440204581,"y":40219.78019213498},"targetPosition":{"x":31653.59027630698,"y":40298.27056106541},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"22a72082-528a-440b-8e3f-374d612c4d51","savedPayload":{"position":{"x":31653.59027630698,"y":40298.27056106541},"targetPosition":{"x":31871.264815174916,"y":39997.98150631206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"c9d98dc4-e354-4357-99c8-eaa829f874d7","savedPayload":{"position":{"x":31864.088489518876,"y":39996.44669503518},"targetPosition":{"x":32060.11570479385,"y":39725.73753384895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"0bf02e1f-d661-437b-85b0-b31e57707199","savedPayload":{"position":{"x":32060.11570479385,"y":39725.73753384895},"targetPosition":{"x":31955.487228857994,"y":39065.87183124445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"My Formula","code":"tradingEngine.current.episode.candle.close.value","id":"f8f5fc79-31b1-49c6-bdd9-2d72883b2364","savedPayload":{"position":{"x":32073.635801794113,"y":40620.2210207601},"targetPosition":{"x":31892.005473244983,"y":40339.56796761725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0dc0c256-7b9c-4e5c-bd09-c9d57ad86247","savedPayload":{"position":{"x":31892.005473244983,"y":40339.56796761725},"targetPosition":{"x":31669.17481399346,"y":39995.288594207675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInBaseAsset":{"type":"Target Size In Base Asset","name":"New Target Size In Base Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.episodeBaseAsset.balance.value","id":"fc05ff9a-1f89-477c-9b23-5050bb7416b3","savedPayload":{"position":{"x":31331.70329349435,"y":40658.27077012614},"targetPosition":{"x":31483.584415739966,"y":40359.731552741956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"afb3ab65-a8a8-4926-bd7a-a309e73c76b4","savedPayload":{"position":{"x":31483.584415739966,"y":40359.731552741956},"targetPosition":{"x":31669.17481399346,"y":39995.288594207675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"80228bad-3498-456e-bdc6-8f8eb5868134","savedPayload":{"position":{"x":31669.152387565508,"y":39995.41044661849},"targetPosition":{"x":31652.204632049798,"y":39661.306281985024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[],"marketSellOrders":[{"type":"Market Sell Order","name":"Quick Entry","config":"{\n\"percentageOfAlgorithmSize\": 100\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"251e2560-de9e-4446-a6ad-ecb5545a59ee","savedPayload":{"position":{"x":29690.522025078324,"y":40936.513047668755},"targetPosition":{"x":29970.844809179373,"y":40755.07622479545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f36b38fb-f877-45a3-a632-f20bd3f9c671","savedPayload":{"position":{"x":29970.844809179373,"y":40755.07622479545},"targetPosition":{"x":30250.80811205114,"y":40573.0459368091},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"14d0b5a0-d880-4f3a-8eb9-3357b8bfc0b6","savedPayload":{"position":{"x":30250.80811205114,"y":40573.0459368091},"targetPosition":{"x":30530.997674080125,"y":40390.76129188487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"4c7accf9-edb5-403b-97cb-0ba11ba6c45c","savedPayload":{"position":{"x":30530.997674080125,"y":40390.76129188487},"targetPosition":{"x":30811.001671474187,"y":40208.60932403688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b44ca915-083c-4363-8172-c21805201845","savedPayload":{"position":{"x":30811.001671474187,"y":40208.60932403688},"targetPosition":{"x":31091.107752721768,"y":40026.66428741762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Sell Order #1","id":"8e404329-d41f-41e0-ad5a-c84ee1fa2604"}}}],"limitBuyOrders":[],"limitSellOrders":[],"id":"4164d2ed-edce-40e4-b22e-2dd6c5ef036a","savedPayload":{"position":{"x":31091.107752721768,"y":40026.66428741762},"targetPosition":{"x":31372.29718910259,"y":39843.633488126485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"1670ca81-e7fa-4070-8534-0dd96fccc054","savedPayload":{"position":{"x":31372.136987982278,"y":39843.724233821034},"targetPosition":{"x":31652.204632049798,"y":39661.306281985024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"1b95c0aa-9a01-4f10-8534-9932d3d95d7c","savedPayload":{"position":{"x":31652.204632049798,"y":39661.306281985024},"targetPosition":{"x":31955.487228857994,"y":39065.87183124445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Slow Run","managedStopLoss":{"type":"Managed Stop Loss","name":"New Managed Stop Loss","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.entryTargetRate.value * 1.03","id":"5d268024-2d96-4094-b50f-b0a3cbf1b4f0","savedPayload":{"position":{"x":30941.18928032918,"y":40321.30212618096},"targetPosition":{"x":30958.191094065158,"y":39986.76384863468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < tradingEngine.current.position.entryTargetRate.value * 0.97","id":"2dbdfc22-50a8-4adc-94f0-92cdc036fe2f","savedPayload":{"position":{"x":31555.576268126326,"y":41021.27640548645},"targetPosition":{"x":31546.93273685943,"y":40853.61332990182},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7104f775-64e7-4d98-b7d8-39f6ef3d3055","savedPayload":{"position":{"x":31546.93273685943,"y":40853.61332990182},"targetPosition":{"x":31537.872485063857,"y":40676.49680655593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"93c8c267-8c57-42eb-834c-1e5a22489094","savedPayload":{"position":{"x":31537.872485063857,"y":40676.49680655593},"targetPosition":{"x":31526.680505867622,"y":40459.971678027854},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"f3c1082e-25bb-4e2e-9db4-7920c77050b6","savedPayload":{"position":{"x":30659.134411801864,"y":40138.02319896596},"targetPosition":{"x":30958.191094065158,"y":39986.76384863468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"968b9847-e19a-4d7a-9744-ccf0f098e40a","savedPayload":{"position":{"x":30958.191094065158,"y":39986.76384863468},"targetPosition":{"x":31178.09600483154,"y":39648.81027407566},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage * 1.02 < tradingEngine.current.position.stopLoss.value) {chart.at01hs.bollingerBand.movingAverage * 1.02} else {tradingEngine.current.position.stopLoss.value}","id":"53f5b5c3-ba67-453c-9c9f-4ce573a45cf7","savedPayload":{"position":{"x":30593.621036738812,"y":40548.201427793334},"targetPosition":{"x":30775.730852551053,"y":40267.662827581385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"9f500e15-05a0-49f2-acb6-22dc52e3a776","savedPayload":{"position":{"x":30775.730852551053,"y":40267.662827581385},"targetPosition":{"x":30958.147083021107,"y":39986.82993797308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"48f10387-f326-4021-ae7e-bf0c89f12f0e","savedPayload":{"position":{"x":31178.00776106989,"y":39649.60834100376},"targetPosition":{"x":31360.21786279159,"y":39369.093548167984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"managedTakeProfit":{"type":"Managed Take Profit","name":"New Managed Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.entryTargetRate.value * 0.95","id":"be152b44-4a9c-4b16-9075-c727f4321c38","savedPayload":{"position":{"x":30442.158014321256,"y":39611.670213937665},"targetPosition":{"x":30624.00997646615,"y":39330.957313899824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < entryTargetRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < tradingEngine.current.position.entryTargetRate.value","id":"ad245a3c-c7dc-490b-8680-1ff6b9ef33c1","savedPayload":{"position":{"x":30539.90416919653,"y":40349.83804143645},"targetPosition":{"x":30680.65765017802,"y":40258.38660320352},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cdfff198-ce34-4a75-b7f9-ed8dee0ccc70","savedPayload":{"position":{"x":30680.65765017802,"y":40258.38660320352},"targetPosition":{"x":30837.195649857767,"y":40161.8378418032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.current.position.positionCounters.periods.value > 2","id":"0633fc97-d2d0-405b-bed4-d390d30bb43c","savedPayload":{"position":{"x":30520.570981151453,"y":40007.86809364364},"targetPosition":{"x":30671.34025569748,"y":40083.48695991237},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8bb34027-c362-4abc-b722-e5b844113302","savedPayload":{"position":{"x":30671.34025569748,"y":40083.48695991237},"targetPosition":{"x":30837.195649857767,"y":40161.8378418032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3ee8f724-793b-444f-a773-de0d2d113be6","savedPayload":{"position":{"x":30837.195649857767,"y":40161.8378418032},"targetPosition":{"x":31053.269653721214,"y":40149.947409036715},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"113a609b-5d12-46d3-a15e-0f23f3d0b70f","savedPayload":{"position":{"x":30472.56250618708,"y":39032.8170135996},"targetPosition":{"x":30624.00997646615,"y":39330.957313899824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"e256ad15-0e95-442a-8675-b24d7fe36118","savedPayload":{"position":{"x":30624.00997646615,"y":39330.957313899824},"targetPosition":{"x":31026.835203779123,"y":39351.764797295036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 * 0.97 < \ntradingEngine.current.position.entryTargetRate.value * 0.97) \n{chart.at01hs.base7EMA.ema7 * 0.97} else \n{tradingEngine.current.position.entryTargetRate.value * 0.97}","id":"d2f712ac-98dc-41dc-b29e-260334b7cd69","savedPayload":{"position":{"x":30272.23449865184,"y":39647.883302901006},"targetPosition":{"x":30290.609283531532,"y":39313.74989347156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"629a5ecb-7ade-4453-89bb-1d1c5d5f96d9","savedPayload":{"position":{"x":19371.268222864084,"y":35648.832306324504},"targetPosition":{"x":19225.028083449575,"y":35337.08218071625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c9b1b192-1698-44a7-a0f5-20d21088f280","savedPayload":{"position":{"x":19225.028083449575,"y":35337.08218071625},"targetPosition":{"x":19082.88384012533,"y":35018.22060669083},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0402e263-ac5c-4546-be68-8f33fdbf8666","savedPayload":{"position":{"x":19082.88384012533,"y":35018.22060669083},"targetPosition":{"x":18940.08192804476,"y":34695.05286503579},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"1fc1bb7a-a52b-4ce2-b17b-95194de42c8a","savedPayload":{"position":{"x":29932.946811453792,"y":39393.472551633364},"targetPosition":{"x":30290.609283531532,"y":39313.74989347156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"a0b6604b-8744-468d-8eb8-37266a7790bb","savedPayload":{"position":{"x":30167.235005138667,"y":38287.71079766815},"targetPosition":{"x":30447.466132769994,"y":38470.41543116534},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f7a6659c-b0db-4966-875f-4f3c22448e5f","savedPayload":{"position":{"x":30447.466132769994,"y":38470.41543116534},"targetPosition":{"x":30728.00747338727,"y":38652.811194707974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"bba2d293-88c4-492f-94af-1b9619f740fd","savedPayload":{"position":{"x":30424.35828916026,"y":38056.11772884889},"targetPosition":{"x":30576.09442268647,"y":38354.49916565486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"20aebaee-eb59-4c3f-8c59-39349e032515","savedPayload":{"position":{"x":30576.09442268647,"y":38354.49916565486},"targetPosition":{"x":30728.00747338727,"y":38652.811194707974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < tradingEngine.current.position.entryTargetRate.value * 0.99","id":"8419c8f8-b2b3-4d98-99e8-2506e40bdb02","savedPayload":{"position":{"x":30762.359250188027,"y":37984.07091516561},"targetPosition":{"x":30745.13798105292,"y":38318.4760101927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0d40d31a-b3d2-4213-9ec0-16dfad84800c","savedPayload":{"position":{"x":30745.13798105292,"y":38318.4760101927},"targetPosition":{"x":30728.00747338727,"y":38652.811194707974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"1f20f276-1067-413d-9855-d5a8c3bf4dd5","savedPayload":{"position":{"x":31091.387717602167,"y":38090.856759171},"targetPosition":{"x":30909.72743094113,"y":38371.88046899326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5a699f92-494e-4078-b641-1c9c57ffc366","savedPayload":{"position":{"x":30909.72743094113,"y":38371.88046899326},"targetPosition":{"x":30728.00747338727,"y":38652.811194707974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"8522cf28-0d47-4049-a2d0-f859792cc083","savedPayload":{"position":{"x":31322.716001287587,"y":38347.78598266923},"targetPosition":{"x":31025.468164018363,"y":38500.39981482122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0c5c7d7b-590f-4902-b44d-8609741d2b0c","savedPayload":{"position":{"x":31025.468164018363,"y":38500.39981482122},"targetPosition":{"x":30728.00747338727,"y":38652.811194707974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"aa9bda47-780e-48ec-97bf-52f713be6d1c","savedPayload":{"position":{"x":30728.00747338727,"y":38652.811194707974},"targetPosition":{"x":30710.26358492944,"y":39001.77825828462},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"0905efc2-d8c9-4b8b-b09f-de915fca26e4","savedPayload":{"position":{"x":30306.856655247102,"y":38979.46930499908},"targetPosition":{"x":30290.609283531532,"y":39313.74989347156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"dc4b92b2-3855-4cc7-84f5-20cc259c1634"}}}],"announcements":[],"id":"e6304ea5-e683-49c1-8e84-e2bc119565fa","savedPayload":{"position":{"x":30290.609283531532,"y":39313.74989347156},"targetPosition":{"x":30624.233808522873,"y":39330.969452499696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < \ntradingEngine.current.position.entryTargetRate.value * 0.97) \n{chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else \n{tradingEngine.current.position.entryTargetRate.value * 0.97}","id":"73870f3c-4fc8-464c-be6a-f5e397ee044e","savedPayload":{"position":{"x":29713.740670922016,"y":39496.64444499344},"targetPosition":{"x":29962.205225469035,"y":39272.21828158875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bc212a30-b2e9-435c-84a8-e505019c0570","savedPayload":{"position":{"x":29494.06232668443,"y":39646.950741746965},"targetPosition":{"x":29674.47570612744,"y":39367.097819786286},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"19c71956-4d1e-4355-826e-5bc25d09fdc3","savedPayload":{"position":{"x":29674.47570612744,"y":39367.097819786286},"targetPosition":{"x":29858.81268922787,"y":39086.14476103531},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"31e8935e-497f-47eb-9466-900faced609c","savedPayload":{"position":{"x":29262.425106551513,"y":39389.607044006836},"targetPosition":{"x":29558.582936633913,"y":39238.34718833084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"506df2ab-b891-4709-84e6-b773c8743abf","savedPayload":{"position":{"x":29558.582936633913,"y":39238.34718833084},"targetPosition":{"x":29858.81268922787,"y":39086.14476103531},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"c1e44382-1537-453b-9f6c-52ef913228aa","savedPayload":{"position":{"x":29190.483127243646,"y":39051.43817710493},"targetPosition":{"x":29522.609294724018,"y":39069.166737602645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"928db494-0024-4ed4-a407-84087efb0704","savedPayload":{"position":{"x":29522.609294724018,"y":39069.166737602645},"targetPosition":{"x":29858.81268922787,"y":39086.14476103531},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"8bae0609-ccff-480d-b382-b56f22ec8dc4","savedPayload":{"position":{"x":29297.438085319587,"y":38722.18987005096},"targetPosition":{"x":29576.128338455113,"y":38904.46929783771},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"98ac2a8f-4541-46de-8e01-f9709d6b195f","savedPayload":{"position":{"x":29576.128338455113,"y":38904.46929783771},"targetPosition":{"x":29858.81268922787,"y":39086.14476103531},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div previous ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"a5a3a569-6a05-4fd0-8c15-22d5e5d1b148","savedPayload":{"position":{"x":29554.616431946524,"y":38490.52677395193},"targetPosition":{"x":29704.789454422484,"y":38788.58645737985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2adc3c50-f284-4fb1-9f79-b077a54b5046","savedPayload":{"position":{"x":29704.789454422484,"y":38788.58645737985},"targetPosition":{"x":29858.81268922787,"y":39086.14476103531},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c91df057-7904-431b-b997-8fbb2afada1f","savedPayload":{"position":{"x":29858.81268922787,"y":39086.14476103531},"targetPosition":{"x":30208.12115418779,"y":39104.191707497455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"8196d5fe-af67-4302-84d1-f95279fb2075","savedPayload":{"position":{"x":29534.894036872105,"y":39289.553690242996},"targetPosition":{"x":29962.205225469035,"y":39272.21828158875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"dc4b92b2-3855-4cc7-84f5-20cc259c1634"}}},{"type":"Move To Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"60d1211f-6279-4c80-abe5-e727a70aea22","savedPayload":{"position":{"x":29273.524638248447,"y":38624.95878717549},"targetPosition":{"x":29590.53171803733,"y":38727.33436515544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6659d86a-2e52-48b2-bcc4-5f5b43b3907e","savedPayload":{"position":{"x":29590.53171803733,"y":38727.33436515544},"targetPosition":{"x":29909.21357770021,"y":38831.356722787605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"5ce2e13e-4b4f-424b-b4ee-1741c013690b","savedPayload":{"position":{"x":29768.650909507396,"y":38177.39904700866},"targetPosition":{"x":29839.489618247026,"y":38504.19388412639},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"38aa2600-90dc-4c6b-be17-a08ee9c829b3","savedPayload":{"position":{"x":29839.489618247026,"y":38504.19388412639},"targetPosition":{"x":29909.21357770021,"y":38831.356722787605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fd092801-0b6b-4f09-bbb3-b16fe1144ae3","savedPayload":{"position":{"x":29909.21357770021,"y":38831.356722787605},"targetPosition":{"x":30143.59938261319,"y":39091.92775093037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"4b4f5de5-723c-4d6e-b26e-50ee87671f48","savedPayload":{"position":{"x":29738.57537564873,"y":39023.18428553911},"targetPosition":{"x":29962.205225469035,"y":39272.21828158875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"e6304ea5-e683-49c1-8e84-e2bc119565fa"}}}],"announcements":[],"id":"ad2a51aa-b179-457e-9704-5c9b1a8db72e","savedPayload":{"position":{"x":29962.205225469035,"y":39272.21828158875},"targetPosition":{"x":30290.609283531532,"y":39313.74989347156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 * 0.8 < \ntradingEngine.current.position.entryTargetRate.value * 0.97) \n{chart.at01hs.base7EMA.ema7 * 0.8} else \n{tradingEngine.current.position.takeProfit.value}","id":"d29e9a58-79bb-445f-b51a-e5b86937aa8c","savedPayload":{"position":{"x":29783.803940383154,"y":39625.29215075245},"targetPosition":{"x":30023.75296749576,"y":39254.40433478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"59efd870-0af2-4d5c-a78c-281b71f00497","savedPayload":{"position":{"x":22928.744307222303,"y":37877.55053861219},"targetPosition":{"x":22762.34721764182,"y":37503.604283245906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"31c9eb9e-6567-4866-b3de-cf7ac4fa0126","savedPayload":{"position":{"x":22762.34721764182,"y":37503.604283245906},"targetPosition":{"x":22595.845274431333,"y":37129.44854642472},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"0dd58774-bae1-48f4-bb2a-ff3af03d885b","savedPayload":{"position":{"x":22114.945787830286,"y":37792.01539555949},"targetPosition":{"x":22355.366216362367,"y":37460.810725475254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f8894b26-93ec-450a-9cbf-2462e442a7bc","savedPayload":{"position":{"x":22355.366216362367,"y":37460.810725475254},"targetPosition":{"x":22595.845274431333,"y":37129.44854642472},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a1141841-95d0-4c98-b77e-16eb893e6b19","savedPayload":{"position":{"x":22595.845274431333,"y":37129.44854642472},"targetPosition":{"x":22638.390755325832,"y":36721.9165872944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"5a854197-4f85-4f31-bf5e-c9acff5a60cc","savedPayload":{"position":{"x":29657.317351735932,"y":39017.339372864626},"targetPosition":{"x":30023.75296749576,"y":39254.40433478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"e6304ea5-e683-49c1-8e84-e2bc119565fa"}}}],"announcements":[],"id":"dc4b92b2-3855-4cc7-84f5-20cc259c1634","savedPayload":{"position":{"x":29651.464124857033,"y":39246.33996823337},"targetPosition":{"x":29962.205225469035,"y":39272.21828158875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6b48bcff-79c4-4705-82ac-3666914c8628","savedPayload":{"position":{"x":31026.198480166047,"y":39351.803300276755},"targetPosition":{"x":31360.21786279159,"y":39369.093548167984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"657399d3-c55b-46b6-8ef6-bf1ed183c48f","savedPayload":{"position":{"x":31360.21786279159,"y":39369.093548167984},"targetPosition":{"x":31955.487228857994,"y":39065.87183124445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.candle.close.value","id":"c6b77baa-76fc-47b1-b051-2f3ff3406f57","savedPayload":{"position":{"x":30515.43403977043,"y":39656.33925667053},"targetPosition":{"x":30725.70169778154,"y":39397.22276138696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c377d2d0-923e-48bc-8d52-dabd2aa3cddd","savedPayload":{"position":{"x":30725.70169778154,"y":39397.22276138696},"targetPosition":{"x":30984.551959378907,"y":39079.09965716928},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInQuotedAsset":{"type":"Target Size In Quoted Asset","name":"New Target Size In Quoted Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.strategyOpenStage.stageQuotedAsset.sizeFilled.value","id":"1a506022-94a8-4002-a4e9-fb5be6bb08f7","savedPayload":{"position":{"x":30250.458938099924,"y":38962.884702430085},"targetPosition":{"x":30580.8167739648,"y":39015.04441459256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a763470c-36d8-4f0a-bf43-d4bf56fdc8f2","savedPayload":{"position":{"x":30580.8167739648,"y":39015.04441459256},"targetPosition":{"x":30984.551959378907,"y":39079.09965716928},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"acf03a63-b313-4815-8b9e-f0076133d831","savedPayload":{"position":{"x":30983.31238485383,"y":39080.51454834085},"targetPosition":{"x":31295.627167851268,"y":38961.20101953835},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeExecution":{"type":"Close Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[{"type":"Market Buy Order","name":"Quick Exit","config":"{\n\"percentageOfAlgorithmSize\": 100,\n\"spawnMultipleOrders\": false\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"0dea584c-fc00-490a-9ed3-a9ea73f8fa82","savedPayload":{"position":{"x":31966.557582886584,"y":38535.28706182753},"targetPosition":{"x":31925.981797338514,"y":38343.107529954075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f38d1558-0d76-4dbb-8376-23fad6c5b7b0","savedPayload":{"position":{"x":31925.981797338514,"y":38343.107529954075},"targetPosition":{"x":31885.300466202694,"y":38150.25405091907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c4f496ed-74ae-4538-b71d-062ec523fb02","savedPayload":{"position":{"x":31885.300466202694,"y":38150.25405091907},"targetPosition":{"x":31835.772045204394,"y":37915.71951039847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"1b0a6e1c-0fe1-4852-9830-5827fd04f468","savedPayload":{"position":{"x":30198.612162285994,"y":38073.31060074094},"targetPosition":{"x":30458.525239763956,"y":38283.615920175005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"fa11a0a2-17b9-43be-a734-a5643da1dbb1","savedPayload":{"position":{"x":30458.525239763956,"y":38283.615920175005},"targetPosition":{"x":30717.846635168786,"y":38493.42087332331},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Buy Order #1","id":"7d6c3ac9-4869-4ff3-a9f2-2a6f8a31ccf3"}}}],"marketSellOrders":[],"limitBuyOrders":[],"limitSellOrders":[],"id":"8313a81f-a159-437e-b0a6-516dd5cfd3c8","savedPayload":{"position":{"x":30717.846635168786,"y":38493.42087332331},"targetPosition":{"x":31035.875328397688,"y":38750.817078096574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e8a01f89-65e9-4758-a6b4-b5fad0ef7297","savedPayload":{"position":{"x":31035.78766878743,"y":38750.739999860845},"targetPosition":{"x":31295.627167851268,"y":38961.20101953835},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"80f7f0a4-4572-4bea-b440-b5bd1fec32c1","savedPayload":{"position":{"x":31295.627167851268,"y":38961.20101953835},"targetPosition":{"x":31955.487228857994,"y":39065.87183124445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b27aa9de-ced9-4e53-941c-499bab212f80","savedPayload":{"position":{"x":31955.487228857994,"y":39065.87183124445},"targetPosition":{"x":32428,"y":38593.35190918473},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Trading Strategy","name":"S6 - 2H Up","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"873a72fd-cc23-4965-ae29-5b2b70d85cb9","savedPayload":{"position":{"x":32490.179641603077,"y":39984.344618888485},"targetPosition":{"x":32019.220561001235,"y":39934.50574186497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"087962b5-2546-4472-b71c-b161f0013b1c","savedPayload":{"position":{"x":32019.220561001235,"y":39934.50574186497},"targetPosition":{"x":31548.329832214116,"y":39884.98570670487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"c72459a6-49d5-4021-b6e3-4a8c374b6b4b","savedPayload":{"position":{"x":32432.878933769018,"y":40225.076189437204},"targetPosition":{"x":31990.597797953098,"y":40055.22464064664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"48333f2b-d8c7-4a92-bf5d-b8c9a8de4196","savedPayload":{"position":{"x":31990.597797953098,"y":40055.22464064664},"targetPosition":{"x":31548.329832214116,"y":39884.98570670487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"8488937e-9b92-4562-b89c-a4d6c6dd8ee2","savedPayload":{"position":{"x":32314.875977107567,"y":40442.32999813154},"targetPosition":{"x":31931.610104043593,"y":40163.77452954905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ec9b3ba8-d6a4-4cb0-8679-a8daa868e549","savedPayload":{"position":{"x":31931.610104043593,"y":40163.77452954905},"targetPosition":{"x":31548.329832214116,"y":39884.98570670487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"02H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Up\"","id":"ade6a251-d161-467d-8e94-45cfdadf536b","savedPayload":{"position":{"x":32144.477917773067,"y":40621.85517198535},"targetPosition":{"x":31846.309927222217,"y":40253.39077652974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7499f60b-762e-4b37-a66d-2872755620c4","savedPayload":{"position":{"x":31846.309927222217,"y":40253.39077652974},"targetPosition":{"x":31548.329832214116,"y":39884.98570670487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"04H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Down\"","id":"3beea11e-ff4a-4e39-97d0-97563dacfb09","savedPayload":{"position":{"x":31933.544406633853,"y":40750.829189342345},"targetPosition":{"x":31740.867284132764,"y":40317.970609861615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9e0650fa-cd1b-4770-81b2-06d677c73510","savedPayload":{"position":{"x":31740.867284132764,"y":40317.970609861615},"targetPosition":{"x":31548.329832214116,"y":39884.98570670487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"01H Med, Steep o Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"276b36c3-c0ca-45d6-a659-c40dac406f46","savedPayload":{"position":{"x":31696.183981771894,"y":40821.139045005104},"targetPosition":{"x":31622.151948175604,"y":40353.07666413878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"904385e8-8b04-4c0c-9961-98b10184e976","savedPayload":{"position":{"x":31622.151948175604,"y":40353.07666413878},"targetPosition":{"x":31548.329832214116,"y":39884.98570670487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"a49fbb15-05db-4a21-b59b-662a6d84c999","savedPayload":{"position":{"x":31449.604949251912,"y":40827.8567928667},"targetPosition":{"x":31498.887460434576,"y":40356.449057396625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"89591bf6-dabe-4ba6-b2d8-4580a2c75b0a","savedPayload":{"position":{"x":31498.887460434576,"y":40356.449057396625},"targetPosition":{"x":31548.329832214116,"y":39884.98570670487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Side or Medium","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\" || chart.at02hs.bollingerSubChannel.slope === \"Medium\"","id":"bb0016e9-0b74-4595-b450-209487362f00","savedPayload":{"position":{"x":31208.632359522126,"y":40770.071743861474},"targetPosition":{"x":31378.36856430091,"y":40327.59046460142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ad9f8e37-16b5-4245-9492-0192ef168849","savedPayload":{"position":{"x":31378.36856430091,"y":40327.59046460142},"targetPosition":{"x":31548.329832214116,"y":39884.98570670487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"1e3c7245-5582-4af5-9527-5dddf151b976","savedPayload":{"position":{"x":30991.424124262085,"y":40651.937935349495},"targetPosition":{"x":31269.853503906248,"y":40268.43739752437},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"440d6ea0-2ee2-408a-a556-18d4c53dda17","savedPayload":{"position":{"x":31269.853503906248,"y":40268.43739752437},"targetPosition":{"x":31548.329832214116,"y":39884.98570670487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 4: 02H Up && 02H Gentle && 3H Side","code":"chart.at02hs.percentageBandwidth.movingAverage > chart.at24hs.bollingerSubChannel.slope + chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Gentle\" && chart.at03hs.bollingerSubChannel.slope === \"Side\") {false} else {true}","id":"d4189ed6-4d0f-45ea-b1ae-dbdb8f2e0e2c","savedPayload":{"position":{"x":30811.950344373334,"y":40481.37166089345},"targetPosition":{"x":31180.145467042254,"y":40183.14993427527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"01875e5f-f718-4047-baa4-c91930dd6c86","savedPayload":{"position":{"x":31180.145467042254,"y":40183.14993427527},"targetPosition":{"x":31548.329832214116,"y":39884.98570670487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H NOT Steep","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope != \"Steep\"","id":"350d4a04-700f-4f33-960e-d267e00cec51","savedPayload":{"position":{"x":30682.47555611467,"y":40270.440669938194},"targetPosition":{"x":31115.330544624645,"y":40077.59637594225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bda747f3-188e-4ed0-82bf-b600a9a9c3f5","savedPayload":{"position":{"x":31115.330544624645,"y":40077.59637594225},"targetPosition":{"x":31548.329832214116,"y":39884.98570670487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7ec2e400-1608-44b5-8ae4-ac4f815e76f5","savedPayload":{"position":{"x":31548.329832214116,"y":39884.98570670487},"targetPosition":{"x":31474.452209771163,"y":39416.83077238672},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"0499e109-2786-4159-b79a-c6c24ebac150","savedPayload":{"position":{"x":31474.281294862278,"y":39417.22103932344},"targetPosition":{"x":31424.865662898257,"y":39104.672632963855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"3ed33d07-ff92-4ecc-81cd-8d9318f5a3a2","savedPayload":{"position":{"x":30656.831294665306,"y":40164.26676571837},"targetPosition":{"x":30843.44716300268,"y":39906.73695612875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"40eeff59-ef6d-456b-9662-2590ba1f90b8","savedPayload":{"position":{"x":30843.44716300268,"y":39906.73695612875},"targetPosition":{"x":31027.62878495642,"y":39650.49074154637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"208d89cb-60a9-461f-a8d2-a9d185ca3c5a","savedPayload":{"position":{"x":31027.62878495642,"y":39650.49074154637},"targetPosition":{"x":31239.18875194048,"y":39361.1681428913},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"77ac2dcd-e4a4-4a8f-8c71-d8a30fa7a508","savedPayload":{"position":{"x":31238.996881392017,"y":39360.81347162609},"targetPosition":{"x":31424.865662898257,"y":39104.672632963855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"0c4f8301-8084-4276-a901-5e8137867ea0","savedPayload":{"position":{"x":30552.61552780464,"y":40179.871213434126},"targetPosition":{"x":30601.895230291,"y":39708.64227730947},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c407af9c-fe4a-4d5a-9446-25fc7284ee5c","savedPayload":{"position":{"x":30601.895230291,"y":39708.64227730947},"targetPosition":{"x":30651.24001239093,"y":39237.23691685671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"6f84e4e1-1174-4eea-b92a-fdb64cdded61","savedPayload":{"position":{"x":30311.627228812064,"y":40122.56040364685},"targetPosition":{"x":30481.339049998336,"y":39680.128591419714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"56b51e70-1cfd-403a-809d-ee19347ca315","savedPayload":{"position":{"x":30481.339049998336,"y":39680.128591419714},"targetPosition":{"x":30651.24001239093,"y":39237.23691685671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"f3b540af-68c9-4345-9826-faf0d9e6e04c","savedPayload":{"position":{"x":30094.335254001624,"y":40003.94578087271},"targetPosition":{"x":30372.812559719634,"y":39620.58729537723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f4cdcc47-9a5d-4999-9c11-8fd1c19a5424","savedPayload":{"position":{"x":30372.812559719634,"y":39620.58729537723},"targetPosition":{"x":30651.24001239093,"y":39237.23691685671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"02H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Up\"","id":"0f3ff1d1-ff82-42da-a526-aff486cbc0bb","savedPayload":{"position":{"x":29915.035156247715,"y":39833.75995502365},"targetPosition":{"x":30283.20990786613,"y":39535.43024591192},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0835043e-d8e1-424e-a530-1def860228eb","savedPayload":{"position":{"x":30283.20990786613,"y":39535.43024591192},"targetPosition":{"x":30651.24001239093,"y":39237.23691685671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"04H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Down\"","id":"54f8e8ae-578f-461d-9ed2-9f352395dd19","savedPayload":{"position":{"x":29785.45448175724,"y":39622.77447782378},"targetPosition":{"x":30218.27600546375,"y":39430.07837322162},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"feb6ba85-a9c1-40af-9e6b-00bd4ef1480b","savedPayload":{"position":{"x":30218.27600546375,"y":39430.07837322162},"targetPosition":{"x":30651.24001239093,"y":39237.23691685671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"01H Med, Steep o Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"949100cd-882b-4c11-b010-dbbfd5fff6f5","savedPayload":{"position":{"x":29714.894356481924,"y":39385.783465473185},"targetPosition":{"x":30182.99267941839,"y":39311.48335669409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d3f463af-4e6d-493b-bc8f-e4c66ffc8567","savedPayload":{"position":{"x":30182.99267941839,"y":39311.48335669409},"targetPosition":{"x":30651.24001239093,"y":39237.23691685671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"b6856a8d-7a24-4a5f-a449-de2d32fe63be","savedPayload":{"position":{"x":29708.519052501175,"y":39138.74858755288},"targetPosition":{"x":30180.02573781643,"y":39188.104945387844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"37a6e660-f28f-4bd2-99ea-3c2f46d2a36c","savedPayload":{"position":{"x":30180.02573781643,"y":39188.104945387844},"targetPosition":{"x":30651.24001239093,"y":39237.23691685671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Side or Medium","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\" || chart.at02hs.bollingerSubChannel.slope === \"Medium\"","id":"08d54285-d07e-4cec-8f13-a2f268a569a2","savedPayload":{"position":{"x":29766.39328820988,"y":38898.34673444311},"targetPosition":{"x":30208.811909611635,"y":39067.82894655004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e0208159-e2c5-4fa4-8658-714af9cc91bd","savedPayload":{"position":{"x":30208.811909611635,"y":39067.82894655004},"targetPosition":{"x":30651.24001239093,"y":39237.23691685671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"36e3a366-1402-4953-8283-9a4131d304b2","savedPayload":{"position":{"x":29884.158898746828,"y":38681.04361813422},"targetPosition":{"x":30267.91987158886,"y":38959.40803291099},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d4dc8ef4-ba98-4843-9ef5-16a649541da1","savedPayload":{"position":{"x":30267.91987158886,"y":38959.40803291099},"targetPosition":{"x":30651.24001239093,"y":39237.23691685671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 4: 02H Up && 02H Gentle && 3H Side","code":"chart.at02hs.percentageBandwidth.movingAverage > chart.at24hs.bollingerSubChannel.slope + chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Gentle\" && chart.at03hs.bollingerSubChannel.slope === \"Side\") {false} else {true}","id":"f24fcdcf-8844-4f08-a9f2-3b56471a6dde","savedPayload":{"position":{"x":30054.40241826051,"y":38501.211717319195},"targetPosition":{"x":30352.828090676805,"y":38869.2705517489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2f6a17d7-7a2e-4aa2-b120-d22cb0898194","savedPayload":{"position":{"x":30352.828090676805,"y":38869.2705517489},"targetPosition":{"x":30651.24001239093,"y":39237.23691685671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H NOT Steep","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope != \"Steep\"","id":"5e74fc74-6684-4675-ba35-4ce3fee27b2a","savedPayload":{"position":{"x":30265.082573465184,"y":38372.04681358912},"targetPosition":{"x":30458.11092926967,"y":38804.68119089398},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cc3b8326-99cd-431c-8b27-c85322f6413f","savedPayload":{"position":{"x":30458.11092926967,"y":38804.68119089398},"targetPosition":{"x":30651.24001239093,"y":39237.23691685671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e5d2fd0e-f202-44e7-bf4c-32d3a203528e","savedPayload":{"position":{"x":30651.24001239093,"y":39237.23691685671},"targetPosition":{"x":31119.40656676861,"y":39162.75900681857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"08776dac-4836-413b-ad45-fdfa781b031c","savedPayload":{"position":{"x":31112.699014988808,"y":39154.6017160599},"targetPosition":{"x":31424.865662898257,"y":39104.672632963855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"5724bd17-a57c-4ec4-9389-170c4255a2d5","savedPayload":{"position":{"x":31424.865662898257,"y":39104.672632963855},"targetPosition":{"x":31796.049016018198,"y":38593.35342700775},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"My Formula","code":"tradingEngine.current.episode.candle.close.value","id":"a71b344d-8e76-4a30-9e8f-bcec9a1dde5f","savedPayload":{"position":{"x":30831.761210728397,"y":39731.60053505854},"targetPosition":{"x":30897.819702093846,"y":39421.699254869316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5bc478bd-5433-458e-aae2-fd9926628d7c","savedPayload":{"position":{"x":30897.819702093846,"y":39421.699254869316},"targetPosition":{"x":30983.088113551574,"y":39023.382197377105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInBaseAsset":{"type":"Target Size In Base Asset","name":"New Target Size In Base Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.episodeBaseAsset.balance.value","id":"68e2c2b7-d7e0-45e1-8a3e-a8244aad2661","savedPayload":{"position":{"x":30297.45257560013,"y":39246.22748036101},"targetPosition":{"x":30597.374946219385,"y":39148.72017971536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c49d20d7-1771-4c3e-af23-7a28193d3241","savedPayload":{"position":{"x":30597.374946219385,"y":39148.72017971536},"targetPosition":{"x":30983.088113551574,"y":39023.382197377105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"664dc863-9fc1-48ab-bd68-a34297f47da8","savedPayload":{"position":{"x":30982.96815081327,"y":39023.47315590867},"targetPosition":{"x":31195.05623402155,"y":38788.66014807081},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[],"marketSellOrders":[{"type":"Market Sell Order","name":"Quick Entry","config":"{\n\"percentageOfAlgorithmSize\": 100\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"30d7a26c-2936-49a6-b98d-4438ce18bc90","savedPayload":{"position":{"x":29023.54230389005,"y":38329.20016427221},"targetPosition":{"x":29332.309280944344,"y":38394.62366628502},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e991cc1d-9eee-41c5-82e3-4839b8efc76a","savedPayload":{"position":{"x":29332.309280944344,"y":38394.62366628502},"targetPosition":{"x":29641.297543135406,"y":38460.076222143405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"eb5f0809-efce-4847-9222-338f44ff79f8","savedPayload":{"position":{"x":29641.297543135406,"y":38460.076222143405},"targetPosition":{"x":29950.336060952624,"y":38525.51969506722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"be27c682-b993-408f-827b-e407c80bb3ef","savedPayload":{"position":{"x":29950.336060952624,"y":38525.51969506722},"targetPosition":{"x":30259.22513407101,"y":38590.90513800996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"17db69f2-c7ad-47ec-ad5e-1fff5d2d431e","savedPayload":{"position":{"x":30259.22513407101,"y":38590.90513800996},"targetPosition":{"x":30568.314347089905,"y":38656.25101044083},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Sell Order #1","id":"8e404329-d41f-41e0-ad5a-c84ee1fa2604"}}}],"limitBuyOrders":[],"limitSellOrders":[],"id":"87120599-bb06-4e3d-879a-bb234393d074","savedPayload":{"position":{"x":30568.314347089905,"y":38656.25101044083},"targetPosition":{"x":30885.897462334942,"y":38723.1574660089},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"7472854b-e09a-414c-b02a-36cf74c318d2","savedPayload":{"position":{"x":30885.63445966758,"y":38723.517498554414},"targetPosition":{"x":31195.05623402155,"y":38788.66014807081},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"bd075559-4607-490b-bcd6-efdc54a5010a","savedPayload":{"position":{"x":31195.05623402155,"y":38788.66014807081},"targetPosition":{"x":31796.049016018198,"y":38593.35342700775},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"New Manage Stage","managedStopLoss":{"type":"Managed Stop Loss","name":"New Managed Stop Loss","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.entryTargetRate.value * 1.03","id":"7fdf974e-fda6-4d8c-89b9-27d07cf1d1dc","savedPayload":{"position":{"x":30264.97407689586,"y":38757.64697171757},"targetPosition":{"x":30500.09460986215,"y":38545.424488404045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < tradingEngine.current.position.entryTargetRate.value * 0.97","id":"c2a3eae6-8f54-4697-83b5-a4250a61e707","savedPayload":{"position":{"x":30012.794518775823,"y":39340.18119103522},"targetPosition":{"x":30162.332515447182,"y":39291.393739409614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"008bcd0e-5d78-4d73-846c-404ba758c324","savedPayload":{"position":{"x":30162.332515447182,"y":39291.393739409614},"targetPosition":{"x":30332.75547584041,"y":39235.68201979146},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"509f7658-04d9-4bfc-9834-a6a40839c6bb","savedPayload":{"position":{"x":30332.75547584041,"y":39235.68201979146},"targetPosition":{"x":30532.11361668274,"y":39170.534722825476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"b6412415-9393-4222-84c0-3010a793e7b3","savedPayload":{"position":{"x":30198.85088290855,"y":38446.64481563968},"targetPosition":{"x":30500.09460986215,"y":38545.424488404045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"1b7b1c18-8632-40da-91c1-ca78dc524027","savedPayload":{"position":{"x":30500.09460986215,"y":38545.424488404045},"targetPosition":{"x":30885.66033011521,"y":38463.88518988726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage * 1.02 < tradingEngine.current.position.stopLoss.value) {chart.at01hs.bollingerBand.movingAverage * 1.02} else {tradingEngine.current.position.stopLoss.value}","id":"a32cdd1e-19ce-4bcc-b7c9-52a9e9466dbf","savedPayload":{"position":{"x":29880.469532535946,"y":38676.803586216454},"targetPosition":{"x":30190.367240508258,"y":38611.159391617344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"291bbfda-c1d5-49f6-966b-3f7704ffbda8","savedPayload":{"position":{"x":30190.367240508258,"y":38611.159391617344},"targetPosition":{"x":30500.09460986215,"y":38545.424488404045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"bbb0aab4-c6e3-47f8-b737-9e6fcafcfba1","savedPayload":{"position":{"x":30885.70456058259,"y":38463.79619057555},"targetPosition":{"x":31195.237086329707,"y":38398.12462757711},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"managedTakeProfit":{"type":"Managed Take Profit","name":"New Managed Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.entryTargetRate.value * 0.95","id":"f65bed6b-e9c5-48aa-ae59-a8beb0c8fdcc","savedPayload":{"position":{"x":30418.412480806033,"y":37775.09210346481},"targetPosition":{"x":30720.076447696618,"y":37871.46193564332},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < entryTargetRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < tradingEngine.current.position.entryTargetRate.value","id":"a9133dde-603b-4e92-9278-fd6e3e8e8889","savedPayload":{"position":{"x":30052.1208422957,"y":38129.71195583704},"targetPosition":{"x":30206.838353102437,"y":38162.123951452595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5d40017f-c899-4a2e-9425-fef134a4f4ca","savedPayload":{"position":{"x":30206.838353102437,"y":38162.123951452595},"targetPosition":{"x":30387.27007861729,"y":38208.15367833566},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.current.position.positionCounters.periods.value > 2","id":"b74b392c-ddfc-4021-9dfe-c3d385d4dba6","savedPayload":{"position":{"x":30272.288081403636,"y":37884.547496278916},"targetPosition":{"x":30321.430886803966,"y":38034.871629894005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"052730c4-33a8-4ee9-80c6-3fb61118d2bf","savedPayload":{"position":{"x":30321.430886803966,"y":38034.871629894005},"targetPosition":{"x":30387.27007861729,"y":38208.15367833566},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d75acbba-54eb-4a90-b76e-8649c08cbec0","savedPayload":{"position":{"x":30387.27007861729,"y":38208.15367833566},"targetPosition":{"x":30543.05356923216,"y":38347.38495984098},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"c2f90327-7f61-4d94-84f9-fcd82b5aa44d","savedPayload":{"position":{"x":30655.376999514716,"y":37561.57216168292},"targetPosition":{"x":30720.076447696618,"y":37871.46193564332},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"48071c89-de62-467f-a472-10557ba6277f","savedPayload":{"position":{"x":30720.076447696618,"y":37871.46193564332},"targetPosition":{"x":30983.770353471133,"y":38163.91943906876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 * 0.97 < \ntradingEngine.current.position.entryTargetRate.value * 0.97) \n{chart.at01hs.base7EMA.ema7 * 0.97} else \n{tradingEngine.current.position.entryTargetRate.value * 0.97}","id":"34d1cb14-5351-42d4-8827-b2b0aa013b99","savedPayload":{"position":{"x":30272.805074100685,"y":37848.626461201835},"targetPosition":{"x":30508.09729455064,"y":37636.48894829596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"6f6150fc-3a6a-4686-a350-ff141bc83623","savedPayload":{"position":{"x":18249.76229181546,"y":35517.090462468914},"targetPosition":{"x":18103.52215240095,"y":35205.34033686066},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3ef9a345-0c46-428c-94f3-80decc872e23","savedPayload":{"position":{"x":18103.52215240095,"y":35205.34033686066},"targetPosition":{"x":17961.377909076706,"y":34886.47876283524},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d34694ed-b6c6-4fca-ae8d-95e3f30a4888","savedPayload":{"position":{"x":17961.377909076706,"y":34886.47876283524},"targetPosition":{"x":17818.575996996136,"y":34563.3110211802},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"0be8dfdf-f4ff-4616-b788-c04b3c64eb1b","savedPayload":{"position":{"x":30367.428235132556,"y":37472.17592770047},"targetPosition":{"x":30508.09729455064,"y":37636.48894829596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"45b5b7a2-8cc1-47f8-99c5-8042c7925a89","savedPayload":{"position":{"x":31123.733336138834,"y":36874.10853365089},"targetPosition":{"x":31189.278232208406,"y":37183.47980746105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9bb86da8-d8fa-4b5c-b6a5-952327938371","savedPayload":{"position":{"x":31189.278232208406,"y":37183.47980746105},"targetPosition":{"x":31254.863044862985,"y":37493.27590582451},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"05f551c5-32a7-4986-8753-5ac0bd0d4acc","savedPayload":{"position":{"x":31450.32487562288,"y":36891.15705859677},"targetPosition":{"x":31352.664552884668,"y":37191.983825576746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9ba9b517-a809-4b01-848f-5bb31ab1f92c","savedPayload":{"position":{"x":31352.664552884668,"y":37191.983825576746},"targetPosition":{"x":31254.863044862985,"y":37493.27590582451},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < tradingEngine.current.position.entryTargetRate.value * 0.99","id":"c7001aa3-f176-40e4-a6d7-2744966363cd","savedPayload":{"position":{"x":31724.93549655634,"y":37069.30624612654},"targetPosition":{"x":31489.9997252104,"y":37281.13103282654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"094200d6-3761-4dd0-8073-083d14bbeb71","savedPayload":{"position":{"x":31489.9997252104,"y":37281.13103282654},"targetPosition":{"x":31254.863044862985,"y":37493.27590582451},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"aaee1ab9-d92b-4f01-afc1-654347d9511a","savedPayload":{"position":{"x":31873.632701158644,"y":37360.77366131774},"targetPosition":{"x":31564.405123771798,"y":37426.91346377319},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9143d8e3-b435-49f2-907e-a874e794d32a","savedPayload":{"position":{"x":31564.405123771798,"y":37426.91346377319},"targetPosition":{"x":31254.863044862985,"y":37493.27590582451},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"9e27b341-5396-4a81-b483-13c9e497f3c4","savedPayload":{"position":{"x":31856.511973389024,"y":37686.861520381106},"targetPosition":{"x":31555.857361097285,"y":37590.04571752023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"77518efa-2184-4602-8f5a-f3e106c6845c","savedPayload":{"position":{"x":31555.857361097285,"y":37590.04571752023},"targetPosition":{"x":31254.863044862985,"y":37493.27590582451},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9d8fbd63-29f2-41f9-85f1-92643ff12c6d","savedPayload":{"position":{"x":31254.863044862985,"y":37493.27590582451},"targetPosition":{"x":31006.300182152976,"y":37717.760543917066},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"a92424e5-ab90-424c-85cc-b8697bcb6009","savedPayload":{"position":{"x":30743.593595248865,"y":37424.55135450494},"targetPosition":{"x":30508.09729455064,"y":37636.48894829596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"8aff2c3b-ecf9-4df8-84ea-ffd6ba9c9612"}}}],"announcements":[],"id":"58effb7e-0927-4c47-8745-58895dead2ea","savedPayload":{"position":{"x":30508.09729455064,"y":37636.48894829596},"targetPosition":{"x":30719.90505429023,"y":37871.273765637554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < \ntradingEngine.current.position.entryTargetRate.value * 0.97) \n{chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else \n{tradingEngine.current.position.entryTargetRate.value * 0.97}","id":"49b3a850-8a9e-41c7-8b5f-e5f3a21ce83d","savedPayload":{"position":{"x":29963.216653188152,"y":37367.766625393604},"targetPosition":{"x":30279.126399408007,"y":37384.419172962655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"c6bc7845-b742-4bd0-a28e-f76bafd9ae16","savedPayload":{"position":{"x":34918.93465669434,"y":35663.28157406691},"targetPosition":{"x":34927.87127281226,"y":36017.939669185915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0dea846d-7054-4651-9c26-e34941dd4128","savedPayload":{"position":{"x":34927.87127281226,"y":36017.939669185915},"targetPosition":{"x":34936.97393799894,"y":36372.696744067354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"9ef393ca-8c24-4089-a87e-8ce151f2b828","savedPayload":{"position":{"x":35191.41090983085,"y":35710.08378376117},"targetPosition":{"x":35064.227688598636,"y":36041.26806787587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6be2982e-d239-488c-aa26-68e9b2a7af09","savedPayload":{"position":{"x":35064.227688598636,"y":36041.26806787587},"targetPosition":{"x":34936.97393799894,"y":36372.696744067354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"69018aba-59d9-4f07-a2d5-d93c75981c93","savedPayload":{"position":{"x":35425.6850445104,"y":35857.875003012836},"targetPosition":{"x":35181.47570671504,"y":36115.17324636232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6ce688b0-0234-4ad1-8afa-540325306d5c","savedPayload":{"position":{"x":35181.47570671504,"y":36115.17324636232},"targetPosition":{"x":34936.97393799894,"y":36372.696744067354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"b882f3e8-28e5-49f8-90a1-c27ac4723c90","savedPayload":{"position":{"x":35585.57189390425,"y":36083.86333033648},"targetPosition":{"x":35261.432765216254,"y":36228.15573793658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d21fc9d4-bec7-4df6-9083-203e877f30de","savedPayload":{"position":{"x":35261.432765216254,"y":36228.15573793658},"targetPosition":{"x":34936.97393799894,"y":36372.696744067354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"2d8c394e-6772-4d45-a052-a5c04202637c","savedPayload":{"position":{"x":35646.657851904725,"y":36353.978673571524},"targetPosition":{"x":35291.928697315285,"y":36363.29640237722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"577a9703-74fb-4ea1-9e6d-1a6083c6ac29","savedPayload":{"position":{"x":35291.928697315285,"y":36363.29640237722},"targetPosition":{"x":34936.97393799894,"y":36372.696744067354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14 > chart.at01hs.base7EMA.previous.previous.ema21 - chart.at01hs.base7EMA.previous.previous.ema14","id":"af2fed7e-8530-49cb-8d8c-818c0dfd3865","savedPayload":{"position":{"x":35599.773523671574,"y":36626.37061670708},"targetPosition":{"x":35268.481505185126,"y":36499.46094707693},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8b902eb1-aaaf-41e5-abab-95f7673e1ff5","savedPayload":{"position":{"x":35268.481505185126,"y":36499.46094707693},"targetPosition":{"x":34936.97393799894,"y":36372.696744067354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2 previous ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7 > chart.at01hs.base7EMA.previous.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.previous.ema7","id":"2a5efff2-2a04-4585-813e-e3ac2ffb8b95","savedPayload":{"position":{"x":35452.2213722099,"y":36860.50990176824},"targetPosition":{"x":35194.59229800705,"y":36616.53345086111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"081cec88-c2c1-49f8-88c1-760fc50e7f91","savedPayload":{"position":{"x":35194.59229800705,"y":36616.53345086111},"targetPosition":{"x":34936.97393799894,"y":36372.696744067354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7abbde01-e871-4b28-973e-51ca5f3f1c4d","savedPayload":{"position":{"x":34936.97393799894,"y":36372.696744067354},"targetPosition":{"x":34602.56533712994,"y":36521.76820550336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"276723b8-0d32-49d8-b9b3-bd29368160f7","savedPayload":{"position":{"x":30146.95871962825,"y":37208.79127518702},"targetPosition":{"x":30279.126399408007,"y":37384.419172962655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"8aff2c3b-ecf9-4df8-84ea-ffd6ba9c9612"}}},{"type":"Move To Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"16b5e57d-57f9-401a-9134-4dd112797d48","savedPayload":{"position":{"x":35366.14000440098,"y":36905.024510522584},"targetPosition":{"x":35042.03881342584,"y":37049.06573349262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f2bb1dbc-702a-413a-9421-9ac5309fe6f0","savedPayload":{"position":{"x":35042.03881342584,"y":37049.06573349262},"targetPosition":{"x":34717.86159913844,"y":37193.19559661025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"f73c271b-afa2-45ee-91d4-6aee3b3a8be9","savedPayload":{"position":{"x":35380.33191103475,"y":37447.20956706911},"targetPosition":{"x":35049.16364203753,"y":37320.21285987261},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"feaca6ce-0573-401a-909a-4e25687ce708","savedPayload":{"position":{"x":35049.16364203753,"y":37320.21285987261},"targetPosition":{"x":34717.86159913844,"y":37193.19559661025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2 prev.ema7 div 2 prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7 > chart.at01hs.base7EMA.previous.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.previous.ema7","id":"a9c93bde-d56d-42e9-a447-b29a02885149","savedPayload":{"position":{"x":35006.89229024012,"y":37840.941766660726},"targetPosition":{"x":34862.35540972373,"y":37517.09597108339},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"72e2d105-feba-47a0-8eaf-6c83296a3863","savedPayload":{"position":{"x":34862.35540972373,"y":37517.09597108339},"targetPosition":{"x":34717.86159913844,"y":37193.19559661025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ab94fcaf-55b6-4be2-a44a-b399dda60644","savedPayload":{"position":{"x":34717.86159913844,"y":37193.19559661025},"targetPosition":{"x":34375.846727447235,"y":37062.06105559041},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"07ca2734-a819-49f7-99f7-f19f58e5ffba","savedPayload":{"position":{"x":30296.307659306127,"y":37067.42046948552},"targetPosition":{"x":30279.126399408007,"y":37384.419172962655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"58effb7e-0927-4c47-8745-58895dead2ea"}}}],"announcements":[],"id":"e1d12230-902a-46bf-bb48-1fafbd162e1e","savedPayload":{"position":{"x":30279.126399408007,"y":37384.419172962655},"targetPosition":{"x":30508.09729455064,"y":37636.48894829596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 * 0.8 < \ntradingEngine.current.position.entryTargetRate.value * 0.97) \n{chart.at01hs.base7EMA.ema7 * 0.8} else \n{tradingEngine.current.position.takeProfit.value}","id":"b53c2ea8-9341-416a-bef3-0b7fb86530d5","savedPayload":{"position":{"x":29906.10292628498,"y":37545.033501177604},"targetPosition":{"x":30338.61988224638,"y":37454.22052417705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"de39a349-8739-4e13-ba9d-91acedf7c835","savedPayload":{"position":{"x":21807.23837617368,"y":37745.8086947566},"targetPosition":{"x":21640.841286593197,"y":37371.862439390316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b8a44bb5-4965-4d76-8a55-6f0274d84b0c","savedPayload":{"position":{"x":21640.841286593197,"y":37371.862439390316},"targetPosition":{"x":21474.339343382708,"y":36997.70670256913},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"4529e123-22d2-40a3-a751-9069e69fa624","savedPayload":{"position":{"x":20993.43985678166,"y":37660.2735517039},"targetPosition":{"x":21233.86028531374,"y":37329.06888161966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c94daca3-f53c-42b6-970c-586d9b605b04","savedPayload":{"position":{"x":21233.86028531374,"y":37329.06888161966},"targetPosition":{"x":21474.339343382708,"y":36997.70670256913},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0a283745-7a51-45ab-b781-538c6e1f6a8a","savedPayload":{"position":{"x":21474.339343382708,"y":36997.70670256913},"targetPosition":{"x":21516.884824277207,"y":36590.17474343881},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"be4359e1-bbfa-404c-b1ab-e073d8b4b173","savedPayload":{"position":{"x":30249.202039497468,"y":37030.97620631218},"targetPosition":{"x":30338.61988224638,"y":37454.22052417705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"58effb7e-0927-4c47-8745-58895dead2ea"}}}],"announcements":[],"id":"8aff2c3b-ecf9-4df8-84ea-ffd6ba9c9612","savedPayload":{"position":{"x":30047.862226983572,"y":37133.63892371285},"targetPosition":{"x":30279.126399408007,"y":37384.419172962655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c97bbced-498a-49dd-847a-a52170294ea9","savedPayload":{"position":{"x":30983.462709919462,"y":38163.13370819257},"targetPosition":{"x":31195.237086329707,"y":38398.12462757711},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"f9453ecf-918d-4816-a43e-216a4af33d75","savedPayload":{"position":{"x":31195.237086329707,"y":38398.12462757711},"targetPosition":{"x":31796.049016018198,"y":38593.35342700775},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.candle.close.value","id":"1e5d1117-4259-439f-aa97-5ad6987f5b35","savedPayload":{"position":{"x":30417.24384939752,"y":38027.56275080111},"targetPosition":{"x":30730.911826740998,"y":37994.93125252952},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"555c2937-bb8c-4e4f-8efb-1f74b41add4d","savedPayload":{"position":{"x":30730.911826740998,"y":37994.93125252952},"targetPosition":{"x":31136.451221883395,"y":37953.122413144236},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInQuotedAsset":{"type":"Target Size In Quoted Asset","name":"New Target Size In Quoted Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.strategyOpenStage.stageQuotedAsset.sizeFilled.value","id":"d227d443-eed5-4c57-adbf-65a8d31b9c3f","savedPayload":{"position":{"x":30712.928870256383,"y":37369.73127148536},"targetPosition":{"x":30898.2259963045,"y":37625.156765808686},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"94937102-d124-4024-af99-1577576890ac","savedPayload":{"position":{"x":30898.2259963045,"y":37625.156765808686},"targetPosition":{"x":31136.451221883395,"y":37953.122413144236},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"81cd8c47-9c13-4bdd-ab07-9c1348056ad3","savedPayload":{"position":{"x":31136.256740074354,"y":37952.93339474147},"targetPosition":{"x":31424.902911372057,"y":38082.00423606315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeExecution":{"type":"Close Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[{"type":"Market Buy Order","name":"Quick Exit","config":"{\n\"percentageOfAlgorithmSize\": 100,\n\"spawnMultipleOrders\": false\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"ca77ac04-3397-4da0-9908-21dd15e0d527","savedPayload":{"position":{"x":32219.557582886584,"y":38331.28706182753},"targetPosition":{"x":32178.981797338514,"y":38139.107529954075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1b473e40-9a22-4299-943b-19fedb465b85","savedPayload":{"position":{"x":32178.981797338514,"y":38139.107529954075},"targetPosition":{"x":32138.300466202694,"y":37946.25405091907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"234da5ed-12c9-44e8-9e76-8e8e148ef107","savedPayload":{"position":{"x":32138.300466202694,"y":37946.25405091907},"targetPosition":{"x":32088.772045204394,"y":37711.71951039847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"c5524985-3594-49e6-8aa6-f9c8d25e9b10","savedPayload":{"position":{"x":31283.866515982427,"y":36735.998249796154},"targetPosition":{"x":31316.783888711845,"y":37050.203621192406},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"02335883-dc89-4b10-ada2-1d4a849161b8","savedPayload":{"position":{"x":31316.783888711845,"y":37050.203621192406},"targetPosition":{"x":31349.70676573104,"y":37364.17608871049},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Buy Order #1","id":"7d6c3ac9-4869-4ff3-a9f2-2a6f8a31ccf3"}}}],"marketSellOrders":[],"limitBuyOrders":[],"limitSellOrders":[],"id":"9da04e66-35a4-4332-96db-d2bfffd18118","savedPayload":{"position":{"x":31349.70676573104,"y":37364.17608871049},"targetPosition":{"x":31392.032691863416,"y":37767.49104607884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"19cddff0-8db1-42fe-9969-d8262cc85c25","savedPayload":{"position":{"x":31392.006372423613,"y":37767.40185462678},"targetPosition":{"x":31424.902911372057,"y":38082.00423606315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"e5956042-1714-4ea3-8e87-52b3d0a2d2b8","savedPayload":{"position":{"x":31424.902911372057,"y":38082.00423606315},"targetPosition":{"x":31796.049016018198,"y":38593.35342700775},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f1ca0dbb-65e8-4c60-84f0-89596e22e9be","savedPayload":{"position":{"x":31796.049016018198,"y":38593.35342700775},"targetPosition":{"x":32428,"y":38593.35190918473},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Trading Strategy","name":"S7 - 3H Down","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"b7ef7546-2729-499d-88db-7c958392fb0e","savedPayload":{"position":{"x":31375.978542578367,"y":39719.36846827696},"targetPosition":{"x":31099.303364554788,"y":39308.708652621135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"40201dbd-8fbe-41aa-acd3-c0cea3fff9de","savedPayload":{"position":{"x":31099.303364554788,"y":39308.708652621135},"targetPosition":{"x":30822.495647433887,"y":38898.01548143023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"6dc11e45-63d6-4246-9a9a-294a45931b14","savedPayload":{"position":{"x":31061.68678818341,"y":39859.30007725163},"targetPosition":{"x":30942.101237035567,"y":39378.732454898396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2dbb8f61-68b4-4835-a6f7-6d7c0c2248ee","savedPayload":{"position":{"x":30942.101237035567,"y":39378.732454898396},"targetPosition":{"x":30822.495647433887,"y":38898.01548143023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"391ae861-6932-4481-bc4f-15a284dafe80","savedPayload":{"position":{"x":30718.92128575921,"y":39883.26315245984},"targetPosition":{"x":30770.68174089351,"y":39390.7289769856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"52613d30-4103-4272-b871-e3785881dcd8","savedPayload":{"position":{"x":30770.68174089351,"y":39390.7289769856},"targetPosition":{"x":30822.495647433887,"y":38898.01548143023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerChannel.direction === \"Down\"","id":"7bf0cb68-72c5-4df6-891e-ee3b08bdc439","savedPayload":{"position":{"x":30388.216941550952,"y":39788.40066455909},"targetPosition":{"x":30605.300260745764,"y":39343.29358675005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5bab5664-c7aa-4e60-aecd-30db721958b0","savedPayload":{"position":{"x":30605.300260745764,"y":39343.29358675005},"targetPosition":{"x":30822.495647433887,"y":38898.01548143023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"3d771526-7fc9-4c67-b4b4-50e2df038870","savedPayload":{"position":{"x":30109.88405851364,"y":39586.15276012826},"targetPosition":{"x":30466.11069637418,"y":39242.152769568886},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1298f042-2f23-4fc7-8359-5bdd3f7e7da1","savedPayload":{"position":{"x":30466.11069637418,"y":39242.152769568886},"targetPosition":{"x":30822.495647433887,"y":38898.01548143023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Side or Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerSubChannel.slope === \"Side\" || chart.at06hs.bollingerSubChannel.slope === \"Gentle\"","id":"9e520195-93e0-4d66-b312-eb2c90921b3c","savedPayload":{"position":{"x":29917.494604011423,"y":39300.904919093744},"targetPosition":{"x":30369.90052639739,"y":39099.50140285144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"16707f87-40dc-44ae-a7f8-2df9dc07d53c","savedPayload":{"position":{"x":30369.90052639739,"y":39099.50140285144},"targetPosition":{"x":30822.495647433887,"y":38898.01548143023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Side","code":"chart.at02hs.bollingerSubChannel.slope > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\"","id":"8143bcc8-af0f-45ef-bbde-1f67fa30b819","savedPayload":{"position":{"x":29834.259491853692,"y":38967.04773563722},"targetPosition":{"x":30328.278712542262,"y":38932.53408996256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0f2efdf7-69dc-4d15-9bf4-6f714894d100","savedPayload":{"position":{"x":30328.278712542262,"y":38932.53408996256},"targetPosition":{"x":30822.495647433887,"y":38898.01548143023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"10f38b80-2f33-4ad0-b849-019b27b36921","savedPayload":{"position":{"x":29870.252684033378,"y":38625.21770741803},"targetPosition":{"x":30346.295130903778,"y":38761.55577027242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"080177f0-9708-4e76-b021-f4857ee42930","savedPayload":{"position":{"x":30346.295130903778,"y":38761.55577027242},"targetPosition":{"x":30822.495647433887,"y":38898.01548143023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5dd3ebf8-bbcd-4978-8d28-0f4ecfe80ba4","savedPayload":{"position":{"x":30822.495647433887,"y":38898.01548143023},"targetPosition":{"x":31113.867231511816,"y":38497.02780524791},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"b4791836-6c85-4279-b75c-ba308154012c","savedPayload":{"position":{"x":31113.64584539059,"y":38497.231479090915},"targetPosition":{"x":31308.056686210693,"y":38229.56174924274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"81a9ee22-bb7d-4a2b-b3ca-7df88b5cfcd1","savedPayload":{"position":{"x":32728.899363552373,"y":36398.34863631029},"targetPosition":{"x":32730.472393972006,"y":36717.63406431999},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"78d25152-3354-4e6c-8118-e621e2eab4e0","savedPayload":{"position":{"x":32730.472393972006,"y":36717.63406431999},"targetPosition":{"x":32742.7575965518,"y":37053.654241454504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1067e774-8e02-44c0-a86a-43c62a2e1a69","savedPayload":{"position":{"x":32742.7575965518,"y":37053.654241454504},"targetPosition":{"x":32743.04405440018,"y":37412.73760647281},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"26a5deff-364b-4f52-b2f2-24eb39f8a9aa","savedPayload":{"position":{"x":30981.25017844641,"y":38281.41008171222},"targetPosition":{"x":31308.056686210693,"y":38229.56174924274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"7ca3641e-2701-4ae6-aebf-419045fa3ef7","savedPayload":{"position":{"x":30192.23946316237,"y":38198.37815876971},"targetPosition":{"x":30466.73750537326,"y":38014.00719876205},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"50506cba-6ce7-47ee-a28f-50cae0a62f61","savedPayload":{"position":{"x":30466.73750537326,"y":38014.00719876205},"targetPosition":{"x":30741.595259411795,"y":37828.08370823735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"b0bf87ab-9049-4c24-918b-b7bc805db2a8","savedPayload":{"position":{"x":30099.9870746229,"y":37988.9209323851},"targetPosition":{"x":30420.53278477015,"y":37908.701256881686},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"56da2b2c-74c3-4328-b75c-4990aef44ca0","savedPayload":{"position":{"x":30420.53278477015,"y":37908.701256881686},"targetPosition":{"x":30741.595259411795,"y":37828.08370823735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"0ed3b727-9493-4064-8404-d2d48e9213ad","savedPayload":{"position":{"x":30082.88272938779,"y":37759.45404934758},"targetPosition":{"x":30412.52955805651,"y":37794.04938141805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f6f8fad9-0588-4d7c-81a8-5738f0d6c7e6","savedPayload":{"position":{"x":30412.52955805651,"y":37794.04938141805},"targetPosition":{"x":30741.595259411795,"y":37828.08370823735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerChannel.direction === \"Down\"","id":"5fe7a35e-a56c-4ad4-854d-5b13ca036669","savedPayload":{"position":{"x":30146.4343690366,"y":37539.93689187202},"targetPosition":{"x":30443.71148556797,"y":37683.96670514938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1b64fa95-a27a-4e68-9ae1-fa8358e23f41","savedPayload":{"position":{"x":30443.71148556797,"y":37683.96670514938},"targetPosition":{"x":30741.595259411795,"y":37828.08370823735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"23e2569a-2867-4ebe-aa2b-21254ab0c096","savedPayload":{"position":{"x":30281.9387928772,"y":37352.54780844099},"targetPosition":{"x":30511.4374493203,"y":37590.6623165427},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4f6a6ace-3508-4a78-953a-a9944f9b9077","savedPayload":{"position":{"x":30511.4374493203,"y":37590.6623165427},"targetPosition":{"x":30741.595259411795,"y":37828.08370823735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Side or Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerSubChannel.slope === \"Side\" || chart.at06hs.bollingerSubChannel.slope === \"Gentle\"","id":"565a511b-5264-4cfd-ad94-c8b316f5e19c","savedPayload":{"position":{"x":30471.67098615759,"y":37223.09801544729},"targetPosition":{"x":30606.617689418847,"y":37525.81272633811},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5e3a86fa-9e96-47ef-b87b-3324c9edf8a3","savedPayload":{"position":{"x":30606.617689418847,"y":37525.81272633811},"targetPosition":{"x":30741.595259411795,"y":37828.08370823735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Side","code":"chart.at02hs.bollingerSubChannel.slope > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\"","id":"ef7ba943-87cb-4149-8ab2-a562a34fa524","savedPayload":{"position":{"x":30694.885022327024,"y":37167.61961842729},"targetPosition":{"x":30718.501879997344,"y":37498.234144207076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e624d8a7-586a-4198-a528-b6ee474245dd","savedPayload":{"position":{"x":30718.501879997344,"y":37498.234144207076},"targetPosition":{"x":30741.595259411795,"y":37828.08370823735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"9992327b-1059-4396-8766-514b6384a81b","savedPayload":{"position":{"x":30921.76155076019,"y":37191.71421931813},"targetPosition":{"x":30831.774921470067,"y":37509.521933685486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0701df03-b97b-4d03-89a7-a9fb764d1d21","savedPayload":{"position":{"x":30831.774921470067,"y":37509.521933685486},"targetPosition":{"x":30741.595259411795,"y":37828.08370823735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b72964a4-f423-4930-a40d-ced67854d28e","savedPayload":{"position":{"x":30741.595259411795,"y":37828.08370823735},"targetPosition":{"x":31039.507182987374,"y":38043.716809952035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"51e2b55b-66ca-45c9-9cfd-ec82ac5ce3d6","savedPayload":{"position":{"x":31040.337457665373,"y":38035.71908645196},"targetPosition":{"x":31308.056686210693,"y":38229.56174924274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"adc2c73c-702f-46ce-90ad-dbbc7f75ad3d","savedPayload":{"position":{"x":31308.056686210693,"y":38229.56174924274},"targetPosition":{"x":31960.63595635015,"y":38126.04950062313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"My Formula","code":"tradingEngine.current.episode.candle.close.value","id":"61dd007d-fb60-4d69-9873-e38ecc1c542b","savedPayload":{"position":{"x":30420.169567580935,"y":38245.489101748055},"targetPosition":{"x":30697.957655339273,"y":38065.16911453592},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2d95e2e3-ccf3-42a4-a5be-38a235d1256b","savedPayload":{"position":{"x":30697.957655339273,"y":38065.16911453592},"targetPosition":{"x":31041.35380008865,"y":37843.14809735745},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInBaseAsset":{"type":"Target Size In Base Asset","name":"New Target Size In Base Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.episodeBaseAsset.balance.value","id":"21ee0d72-fc9c-40b9-93fc-3dee8beedc3a","savedPayload":{"position":{"x":30383.09386992546,"y":37507.75645836778},"targetPosition":{"x":30677.93736417372,"y":37657.97782217396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6c55293c-d34d-4093-b1a2-81e64345c73b","savedPayload":{"position":{"x":30677.93736417372,"y":37657.97782217396},"targetPosition":{"x":31041.35380008865,"y":37843.14809735745},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"08a3f81a-a5a3-4a15-ad14-d3d09724eba9","savedPayload":{"position":{"x":31041.353392766756,"y":37842.8927398455},"targetPosition":{"x":31371.774888151213,"y":37826.12012391404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[],"marketSellOrders":[{"type":"Market Sell Order","name":"Quick Entry","config":"{\n\"percentageOfAlgorithmSize\": 100\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"76aeb4a5-1c22-4021-b61f-d1660b598a9a","savedPayload":{"position":{"x":34642.11218012959,"y":35784.29312241807},"targetPosition":{"x":34276.680742508834,"y":35924.49027237392},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"13c54ad9-7dac-405f-b5fe-44ba813378d5","savedPayload":{"position":{"x":34276.680742508834,"y":35924.49027237392},"targetPosition":{"x":33910.841272034784,"y":36064.854417978044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"34587555-32f1-4241-b607-476f22c689a6","savedPayload":{"position":{"x":33910.841272034784,"y":36064.854417978044},"targetPosition":{"x":33545.0281829221,"y":36205.25603039763},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"a658e05d-abc9-4c5b-ad1b-0897f752cae0","savedPayload":{"position":{"x":33545.0281829221,"y":36205.25603039763},"targetPosition":{"x":33174.256951181276,"y":36347.6574185057},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"simulatedExchangeEvents":{"type":"Simulated Exchange Events","name":"New Simulated Exchange Events","simulatedPartialFill":{"type":"Simulated Partial Fill","name":"New Simulated Partial Fill","config":"{ \n\"fillProbability\": 1\n}","id":"44d1a29f-42db-4582-93eb-057c5efab1f2","savedPayload":{"position":{"x":33928.74467340531,"y":36519.199203119126},"targetPosition":{"x":33536.94735408446,"y":36509.03344622624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"simulatedActualRate":{"type":"Simulated Actual Rate","name":"New Simulated Actual Rate","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.candle.close.value","id":"91ca08cc-ec90-4256-bab1-f6a9b08fc236","savedPayload":{"position":{"x":34252.734507245455,"y":36827.499648181096},"targetPosition":{"x":33895.023770968066,"y":36668.34892953567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7de9fa13-47c9-475e-9ae1-02c4c4066ab8","savedPayload":{"position":{"x":33895.023770968066,"y":36668.34892953567},"targetPosition":{"x":33536.94735408446,"y":36509.03344622624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"simulatedFeesPaid":{"type":"Simulated Fees Paid","name":"New Simulated Fees Paid","config":"{ \n\n}","id":"9ba0d597-9964-4808-ba4f-c2b9f3ee2fa0","savedPayload":{"position":{"x":33806.727551581855,"y":36793.220204309226},"targetPosition":{"x":33536.94735408446,"y":36509.03344622624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5079aedd-ae1e-43e7-a7bf-ffda4fc60ac9","savedPayload":{"position":{"x":33536.94735408446,"y":36509.03344622624},"targetPosition":{"x":33174.256951181276,"y":36347.6574185057},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4678c054-97e1-45b2-be5c-1d4015e291a2","savedPayload":{"position":{"x":30829.11394860768,"y":36992.49008522786},"targetPosition":{"x":31010.29996963184,"y":37270.30223825485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Sell Order #1","id":"8e404329-d41f-41e0-ad5a-c84ee1fa2604"}}}],"limitBuyOrders":[],"limitSellOrders":[],"id":"819609ef-c126-4b0b-a4c2-9daeb4d52216","savedPayload":{"position":{"x":31010.29996963184,"y":37270.30223825485},"targetPosition":{"x":31191.76023388355,"y":37549.409770162434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"720b7cb2-8cc4-406a-97cd-d800c913643f","savedPayload":{"position":{"x":31191.38043314758,"y":37549.122599469185},"targetPosition":{"x":31371.774888151213,"y":37826.12012391404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"2b443716-eb30-43b5-9457-7263233daaed","savedPayload":{"position":{"x":31371.774888151213,"y":37826.12012391404},"targetPosition":{"x":31960.63595635015,"y":38126.04950062313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"New Manage Stage","managedStopLoss":{"type":"Managed Stop Loss","name":"New Managed Stop Loss","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.entryTargetRate.value * 1.03","id":"d0a0de89-d79f-4fa5-885c-a680ff10cfeb","savedPayload":{"position":{"x":30715.865170909674,"y":37123.05135942377},"targetPosition":{"x":31046.72664598163,"y":37139.21367424183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < tradingEngine.current.position.entryTargetRate.value * 0.97","id":"cbda2339-230a-4211-a1c9-29a32fee1181","savedPayload":{"position":{"x":30099.283680253095,"y":37367.1217367669},"targetPosition":{"x":30248.54080113486,"y":37442.95830190965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bf0650d2-b7a2-4f05-94e3-80ccda90ffc5","savedPayload":{"position":{"x":30248.54080113486,"y":37442.95830190965},"targetPosition":{"x":30405.906922570444,"y":37522.15856006682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"df3531c9-6540-4671-be17-4ce0cfda2120","savedPayload":{"position":{"x":30405.906922570444,"y":37522.15856006682},"targetPosition":{"x":30598.027671611486,"y":37619.043894644805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"6de908df-521a-434c-b9e4-e81e0c84181b","savedPayload":{"position":{"x":30897.14464868369,"y":36843.60083913398},"targetPosition":{"x":31046.72664598163,"y":37139.21367424183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"68255a1b-6136-4d16-b89a-40d0bca2587b","savedPayload":{"position":{"x":31046.72664598163,"y":37139.21367424183},"targetPosition":{"x":31383.49308274162,"y":37357.774518548424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage * 1.02 < tradingEngine.current.position.stopLoss.value) {chart.at01hs.bollingerBand.movingAverage * 1.02} else {tradingEngine.current.position.stopLoss.value}","id":"cf80ef88-969d-40f5-bc36-ccee6f8518bf","savedPayload":{"position":{"x":30491.586529002703,"y":36779.14689285743},"targetPosition":{"x":30768.9373060878,"y":36959.1185968378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"6fac6741-1d2a-4364-ba55-6d0082d4e33b","savedPayload":{"position":{"x":30768.9373060878,"y":36959.1185968378},"targetPosition":{"x":31046.72664598163,"y":37139.21367424183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"995255a7-571c-4219-bb24-a1dda890ba60","savedPayload":{"position":{"x":31383.388191987033,"y":37357.15792961138},"targetPosition":{"x":31660.800771662816,"y":37537.34816894885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"managedTakeProfit":{"type":"Managed Take Profit","name":"New Managed Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.entryTargetRate.value * 0.95","id":"728b5268-b977-412e-a7f9-fdc5eeca238a","savedPayload":{"position":{"x":31420.62481078009,"y":36627.180288258234},"targetPosition":{"x":31698.311311515306,"y":36806.95341067049},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < entryTargetRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < tradingEngine.current.position.entryTargetRate.value","id":"f035c3b1-3b9f-4d14-89a4-7f483fa0ea49","savedPayload":{"position":{"x":30688.968398294273,"y":36723.08062414665},"targetPosition":{"x":30779.670107707658,"y":36862.468809083366},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0b6f406c-022e-46b7-aabd-a99398140b10","savedPayload":{"position":{"x":30779.670107707658,"y":36862.468809083366},"targetPosition":{"x":30875.94839617899,"y":37020.2327630658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.current.position.positionCounters.periods.value > 2","id":"4de45b46-85e5-4755-9caa-360c50ca061d","savedPayload":{"position":{"x":31028.323608397415,"y":36704.8270226667},"targetPosition":{"x":30953.847411897677,"y":36852.85073226276},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5a408907-8527-49d0-9172-60c026feb553","savedPayload":{"position":{"x":30953.847411897677,"y":36852.85073226276},"targetPosition":{"x":30875.94839617899,"y":37020.2327630658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"86be8810-719f-4235-b92f-1e3d9a100391","savedPayload":{"position":{"x":30875.94839617899,"y":37020.2327630658},"targetPosition":{"x":30887.817961058077,"y":37234.89258884741},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"1073d54b-c72a-4a7f-9353-1060186d29c2","savedPayload":{"position":{"x":31993.2048987041,"y":36657.14475643751},"targetPosition":{"x":31698.311311515306,"y":36806.95341067049},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"91f7e76b-6171-4c75-b70c-bfc33543b9c3","savedPayload":{"position":{"x":31698.311311515306,"y":36806.95341067049},"targetPosition":{"x":31677.64980112581,"y":37207.63055154265},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 * 0.97 < \ntradingEngine.current.position.entryTargetRate.value * 0.97) \n{chart.at01hs.base7EMA.ema7 * 0.97} else \n{tradingEngine.current.position.entryTargetRate.value * 0.97}","id":"712dcccd-fca1-4d1b-bf00-497375a831ec","savedPayload":{"position":{"x":31384.971980842853,"y":36459.45335191274},"targetPosition":{"x":31715.36967567668,"y":36476.721679454924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"8facdd27-7830-4433-b373-c259545e9d3f","savedPayload":{"position":{"x":17801.51036036874,"y":35144.57090237586},"targetPosition":{"x":17655.27022095423,"y":34832.82077676761},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f7b658c8-0903-46b3-867a-c01eaca10bb1","savedPayload":{"position":{"x":17655.27022095423,"y":34832.82077676761},"targetPosition":{"x":17513.125977629985,"y":34513.95920274219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"97de140f-ae6e-435a-8be7-c4d87e38bd83","savedPayload":{"position":{"x":17513.125977629985,"y":34513.95920274219},"targetPosition":{"x":17370.324065549416,"y":34190.791461087145},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"c137f50a-c8a7-4275-8ae4-80fa7fedd38c","savedPayload":{"position":{"x":31633.22849367401,"y":36135.874197165416},"targetPosition":{"x":31715.36967567668,"y":36476.721679454924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"908a2ee2-d913-46d1-80f5-e7109c803e65","savedPayload":{"position":{"x":32731.53547201036,"y":36357.73497495765},"targetPosition":{"x":32550.949314033824,"y":36634.92067718708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0a9ab42d-9b24-461f-95cd-39ab13a54bc3","savedPayload":{"position":{"x":32550.949314033824,"y":36634.92067718708},"targetPosition":{"x":32370.57671261736,"y":36912.44799709142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"d4179fb4-9949-4d82-ae45-8d8be2001ce8","savedPayload":{"position":{"x":32960.6563470465,"y":36612.117113480796},"targetPosition":{"x":32665.6189718097,"y":36762.17901467583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"efab2947-1540-4e8f-a1d9-50289a9b3c7f","savedPayload":{"position":{"x":32665.6189718097,"y":36762.17901467583},"targetPosition":{"x":32370.57671261736,"y":36912.44799709142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < tradingEngine.current.position.entryTargetRate.value * 0.99","id":"8fbb58cd-53d0-4e19-8f50-590090df0f58","savedPayload":{"position":{"x":33031.883781574106,"y":36946.36635914914},"targetPosition":{"x":32701.2365986853,"y":36929.36419122167},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"adec7d7c-258f-4222-a6d6-734f6962d5d9","savedPayload":{"position":{"x":32701.2365986853,"y":36929.36419122167},"targetPosition":{"x":32370.57671261736,"y":36912.44799709142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"b6a70772-8397-41ac-9268-5ad1cd9b0b80","savedPayload":{"position":{"x":32926.13680473664,"y":37271.71751377729},"targetPosition":{"x":32648.330418209174,"y":37092.13234601354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e1ffbeec-66bc-4d38-984b-2aff6740101f","savedPayload":{"position":{"x":32648.330418209174,"y":37092.13234601354},"targetPosition":{"x":32370.57671261736,"y":36912.44799709142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"ff907f99-713a-41f7-8b23-721699b74966","savedPayload":{"position":{"x":32672.092419760236,"y":37500.522828979796},"targetPosition":{"x":32521.211159279068,"y":37206.55820156768},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"65511340-ee54-484b-8cb6-f2d95dec9bdd","savedPayload":{"position":{"x":32521.211159279068,"y":37206.55820156768},"targetPosition":{"x":32370.57671261736,"y":36912.44799709142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"94b2fbbc-3d32-473c-8008-231664970f09","savedPayload":{"position":{"x":32370.57671261736,"y":36912.44799709142},"targetPosition":{"x":32024.413313959856,"y":36894.704126029064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"02434c11-1d6d-4f15-9577-237b5daba9ea","savedPayload":{"position":{"x":32045.871981951947,"y":36493.6391362839},"targetPosition":{"x":31715.36967567668,"y":36476.721679454924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"cac36b94-3568-446e-a2d2-9d860bd8ad0f"}}}],"announcements":[],"id":"74e77f0f-2945-48ac-ab1f-47a65feb84ec","savedPayload":{"position":{"x":31715.36967567668,"y":36476.721679454924},"targetPosition":{"x":31698.305767333295,"y":36807.039683427065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < \ntradingEngine.current.position.entryTargetRate.value * 0.97) \n{chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else \n{tradingEngine.current.position.entryTargetRate.value * 0.97}","id":"db68ae8b-4414-43f9-b275-c97b3a6a80c6","savedPayload":{"position":{"x":31535.51279461174,"y":35904.00486869521},"targetPosition":{"x":31757.282316922712,"y":36149.62717062013},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"2ccb9d00-d677-44b6-8b92-edbcaf349d29","savedPayload":{"position":{"x":31229.626653624895,"y":35609.39224123809},"targetPosition":{"x":31508.28787971258,"y":35792.857639003596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d5649c96-59d6-4f0e-a259-063e7355eb48","savedPayload":{"position":{"x":31508.28787971258,"y":35792.857639003596},"targetPosition":{"x":31791.557130785408,"y":35966.48187510157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"2689f28d-6ca9-4e82-8327-eae9956a751a","savedPayload":{"position":{"x":31484.69702804133,"y":35380.606329509086},"targetPosition":{"x":31636.08181154325,"y":35678.56479818822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b19aacc4-d892-41dc-a487-870ca6e13ce2","savedPayload":{"position":{"x":31636.08181154325,"y":35678.56479818822},"targetPosition":{"x":31791.557130785408,"y":35966.48187510157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"9e40ebf6-fd42-43da-b390-30926b085b8f","savedPayload":{"position":{"x":31818.84691116986,"y":35309.19810489275},"targetPosition":{"x":31803.129670424078,"y":35642.732642268114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2b8766b-b4da-40c7-8d88-76f3969065aa","savedPayload":{"position":{"x":31803.129670424078,"y":35642.732642268114},"targetPosition":{"x":31791.557130785408,"y":35966.48187510157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"cae32279-d999-4c13-8eb6-cad3063c74d4","savedPayload":{"position":{"x":32144.566341110312,"y":35414.88700159292},"targetPosition":{"x":31966.050192344926,"y":35695.574342607564},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"04ac8528-0696-413b-a739-7825670c0234","savedPayload":{"position":{"x":31966.050192344926,"y":35695.574342607564},"targetPosition":{"x":31791.557130785408,"y":35966.48187510157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div previous ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"6a80e7f5-300b-417d-9f9d-49803b8f51f8","savedPayload":{"position":{"x":32373.874395285653,"y":35669.41802646307},"targetPosition":{"x":32080.843733832662,"y":35822.95349032243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8e23fa3d-13f0-45fe-990f-d268e58ff1cf","savedPayload":{"position":{"x":32080.843733832662,"y":35822.95349032243},"targetPosition":{"x":31791.557130785408,"y":35966.48187510157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"38fc838f-01a5-4a33-a35f-e185f52c295e","savedPayload":{"position":{"x":31791.557130785408,"y":35966.48187510157},"targetPosition":{"x":31773.95152669773,"y":36312.136547765986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"0c86ae11-a07f-4c31-a33c-05debf70c23c","savedPayload":{"position":{"x":31740.908455618322,"y":35725.51447512382},"targetPosition":{"x":31757.282316922712,"y":36149.62717062013},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"cac36b94-3568-446e-a2d2-9d860bd8ad0f"}}},{"type":"Move To Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"301720b6-e436-4134-be19-0bd0892f624d","savedPayload":{"position":{"x":32760.94009173182,"y":35280.779724503795},"targetPosition":{"x":32659.79681606463,"y":35594.926274316196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2e8c0fcc-d597-40f7-b07f-16214f744b0e","savedPayload":{"position":{"x":32659.79681606463,"y":35594.926274316196},"targetPosition":{"x":32557.66128092257,"y":35909.85095662394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"b7683607-6589-414b-b6de-5aa132d6baef","savedPayload":{"position":{"x":33203.56361303869,"y":35773.122840236516},"targetPosition":{"x":32880.8458283258,"y":35841.464866658185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e247b889-3abc-469b-b26d-fc11a08bf9c8","savedPayload":{"position":{"x":32880.8458283258,"y":35841.464866658185},"targetPosition":{"x":32557.66128092257,"y":35909.85095662394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"605adda8-a968-4819-af76-2ee257f07e66","savedPayload":{"position":{"x":32557.66128092257,"y":35909.85095662394},"targetPosition":{"x":32299.943825785886,"y":36141.82171454029},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"cc9492df-3289-4d6a-b152-bad2fc656730","savedPayload":{"position":{"x":32003.500157910898,"y":35928.519663576844},"targetPosition":{"x":31757.282316922712,"y":36149.62717062013},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"74e77f0f-2945-48ac-ab1f-47a65feb84ec"}}}],"announcements":[],"id":"7fc97392-92a0-48cc-a5d3-799b1c2b8c35","savedPayload":{"position":{"x":31757.282316922712,"y":36149.62717062013},"targetPosition":{"x":31715.36967567668,"y":36476.721679454924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 * 0.8 < \ntradingEngine.current.position.entryTargetRate.value * 0.97) \n{chart.at01hs.base7EMA.ema7 * 0.8} else \n{tradingEngine.current.position.takeProfit.value}","id":"895b6803-0996-41a6-9a13-93f488d7aee4","savedPayload":{"position":{"x":31381.073633247157,"y":36002.00084376015},"targetPosition":{"x":31755.11901455181,"y":36245.30520173129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"df898928-7078-4e61-a616-169789552b36","savedPayload":{"position":{"x":32173.24897017357,"y":35010.03763745769},"targetPosition":{"x":32156.074354745502,"y":35338.95323109276},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c02edb77-0d76-4656-8d2f-068eaddabff7","savedPayload":{"position":{"x":32156.074354745502,"y":35338.95323109276},"targetPosition":{"x":32139.619887812547,"y":35668.456626670435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"3bdea448-de7a-4188-b9ec-350dbf88470a","savedPayload":{"position":{"x":32729.435783272886,"y":35368.481765447956},"targetPosition":{"x":32434.487806401212,"y":35518.36249950468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fbc8a359-f853-44a6-831d-a2078edeebe6","savedPayload":{"position":{"x":32434.487806401212,"y":35518.36249950468},"targetPosition":{"x":32139.619887812547,"y":35668.456626670435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f4664806-47a1-41be-956e-079599c0df49","savedPayload":{"position":{"x":32139.619887812547,"y":35668.456626670435},"targetPosition":{"x":31950.214885440284,"y":35959.18775389213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"b75aa4bc-9257-4444-98ca-afe6377b914a","savedPayload":{"position":{"x":31993.971339238724,"y":35876.882827514666},"targetPosition":{"x":31755.11901455181,"y":36245.30520173129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"74e77f0f-2945-48ac-ab1f-47a65feb84ec"}}}],"announcements":[],"id":"cac36b94-3568-446e-a2d2-9d860bd8ad0f","savedPayload":{"position":{"x":31782.78286705102,"y":35842.74406374472},"targetPosition":{"x":31757.282316922712,"y":36149.62717062013},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7ce8f923-1393-45ac-97d6-742e2cff6627","savedPayload":{"position":{"x":31677.936103691936,"y":37207.004612394485},"targetPosition":{"x":31660.800771662816,"y":37537.34816894885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"0d03ff5b-3162-49a3-ae12-a0e5929de4dd","savedPayload":{"position":{"x":31660.800771662816,"y":37537.34816894885},"targetPosition":{"x":31960.63595635015,"y":38126.04950062313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.candle.close.value","id":"e4075c8b-e9ed-4efb-95ff-c57a05dde303","savedPayload":{"position":{"x":31371.80661784967,"y":36697.88955732546},"targetPosition":{"x":31628.288980231893,"y":36906.360028949675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f7a43f11-926e-4a95-8b50-0e6bf1c33fb3","savedPayload":{"position":{"x":31628.288980231893,"y":36906.360028949675},"targetPosition":{"x":31946.270875294034,"y":37164.418716333705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInQuotedAsset":{"type":"Target Size In Quoted Asset","name":"New Target Size In Quoted Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.strategyOpenStage.stageQuotedAsset.sizeFilled.value","id":"d0134650-3b3d-4e82-9334-efd985669763","savedPayload":{"position":{"x":32061.883811883898,"y":36434.63306828236},"targetPosition":{"x":32010.253996485924,"y":36761.41968982183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5bfa6266-b3b9-4b3d-9113-5ce83bd5181b","savedPayload":{"position":{"x":32010.253996485924,"y":36761.41968982183},"targetPosition":{"x":31946.270875294034,"y":37164.418716333705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f94814fd-11e1-49fb-a3d9-f8c9dc7e476b","savedPayload":{"position":{"x":31946.31119272591,"y":37164.56797629727},"targetPosition":{"x":32064.211244798695,"y":37473.45211150415},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeExecution":{"type":"Close Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[{"type":"Market Buy Order","name":"Quick Exit","config":"{\n\"percentageOfAlgorithmSize\": 100,\n\"spawnMultipleOrders\": false\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"c81b34d0-6411-4e30-9a5f-b29938767724","savedPayload":{"position":{"x":32477.557582886584,"y":38546.28706182753},"targetPosition":{"x":32436.981797338514,"y":38354.107529954075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"30a97f96-5681-426e-84e3-c56d4677b797","savedPayload":{"position":{"x":32436.981797338514,"y":38354.107529954075},"targetPosition":{"x":32396.300466202694,"y":38161.25405091907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d73f3a51-5c99-453e-81a7-77123488aae8","savedPayload":{"position":{"x":32396.300466202694,"y":38161.25405091907},"targetPosition":{"x":32346.772045204394,"y":37926.71951039847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"7d7ac782-a44c-4983-a83d-85c3bc7f446e","savedPayload":{"position":{"x":32945.12722382887,"y":36385.59540391135},"targetPosition":{"x":32736.911825604617,"y":36642.69137378999},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5a2a2f97-c305-41ad-b66a-5757cb93b188","savedPayload":{"position":{"x":32736.911825604617,"y":36642.69137378999},"targetPosition":{"x":32529.340609314175,"y":36899.06909005113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Buy Order #1","id":"7d6c3ac9-4869-4ff3-a9f2-2a6f8a31ccf3"}}}],"marketSellOrders":[],"limitBuyOrders":[],"limitSellOrders":[],"id":"6f41faa3-1005-4c80-b40f-adbb7b65b836","savedPayload":{"position":{"x":32529.340609314175,"y":36899.06909005113},"targetPosition":{"x":32272.30481430026,"y":37216.569317599984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"940b3fe2-8055-4eb5-8a5a-192a319891af","savedPayload":{"position":{"x":32272.398819748676,"y":37216.43615295954},"targetPosition":{"x":32064.211244798695,"y":37473.45211150415},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"b72c5b1c-499f-4f2e-9044-aa6caaaef7ee","savedPayload":{"position":{"x":32064.211244798695,"y":37473.45211150415},"targetPosition":{"x":31960.63595635015,"y":38126.04950062313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"fc6676b7-944d-459c-bc06-592b3ae2fd1b","savedPayload":{"position":{"x":31960.63595635015,"y":38126.04950062313},"targetPosition":{"x":32428,"y":38593.35190918473},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Trading Strategy","name":"S2 - 6H Down","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"301d8e64-bde8-4eee-a0cf-b9c57bcb3050","savedPayload":{"position":{"x":31101.76019049112,"y":38307.17800772247},"targetPosition":{"x":31174.751052317606,"y":37999.383084836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a869bb21-75b5-4621-9760-840cf4896844","savedPayload":{"position":{"x":31174.751052317606,"y":37999.383084836},"targetPosition":{"x":31248.234634690678,"y":37692.524296098156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"b3c4a94f-4986-4e55-ba28-f6456a67bd64","savedPayload":{"position":{"x":30878.05561566003,"y":38205.81047947378},"targetPosition":{"x":31062.791241985244,"y":37950.49762746265},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7b405bfe-294d-48a8-b1ff-d0c4f4b328d1","savedPayload":{"position":{"x":31062.791241985244,"y":37950.49762746265},"targetPosition":{"x":31248.234634690678,"y":37692.524296098156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"f4b66e81-3e26-4a04-9687-140ab33bd887","savedPayload":{"position":{"x":30709.108578567288,"y":38022.29174066966},"targetPosition":{"x":30978.362066086574,"y":37857.670400733434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4d1c7a66-dd4a-45f9-956d-6cb68b64920b","savedPayload":{"position":{"x":30978.362066086574,"y":37857.670400733434},"targetPosition":{"x":31248.234634690678,"y":37692.524296098156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"975153b0-b609-4975-b5d6-26f7bfe675e8","savedPayload":{"position":{"x":30621.667518474762,"y":37789.1128885513},"targetPosition":{"x":30934.693424363133,"y":37740.74594298837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ecc5139a-825f-4c91-8e92-f3719460c66b","savedPayload":{"position":{"x":30934.693424363133,"y":37740.74594298837},"targetPosition":{"x":31248.234634690678,"y":37692.524296098156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Steep","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope === \"Steep\"","id":"a838971e-d8bd-4ded-a418-453b8981ff9e","savedPayload":{"position":{"x":30631.642887721755,"y":37545.586349777324},"targetPosition":{"x":30940.087797166634,"y":37618.17806800144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3694b7de-4040-4f51-a025-3d482ad6c127","savedPayload":{"position":{"x":30940.087797166634,"y":37618.17806800144},"targetPosition":{"x":31248.234634690678,"y":37692.524296098156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H NOT Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerSubChannel.slope != \"Side\"","id":"fc7ab7ee-a96c-4d9a-ae8e-618cd3ee0769","savedPayload":{"position":{"x":30736.496023499054,"y":37321.44610021043},"targetPosition":{"x":30991.854727834354,"y":37506.64885517146},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7f681b33-bfa1-46b5-9483-545d3f62791b","savedPayload":{"position":{"x":30991.854727834354,"y":37506.64885517146},"targetPosition":{"x":31248.234634690678,"y":37692.524296098156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"d6572b86-2aaa-4223-9e6a-0206d8890778","savedPayload":{"position":{"x":30918.267922986724,"y":37152.0752630261},"targetPosition":{"x":31082.206136112996,"y":37421.487416270706},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"08da37fa-d3c5-49d9-8679-5b80bdff68dd","savedPayload":{"position":{"x":31082.206136112996,"y":37421.487416270706},"targetPosition":{"x":31248.234634690678,"y":37692.524296098156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"680af7d1-9436-426c-b371-0c51ca813093","savedPayload":{"position":{"x":31248.234634690678,"y":37692.524296098156},"targetPosition":{"x":31602.71491097856,"y":37638.164499903614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"ab2764bc-e2c0-40d8-930f-bd3047f39596","savedPayload":{"position":{"x":31602.818068954075,"y":37638.060641743905},"targetPosition":{"x":31915.856960892015,"y":37588.535549621614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"29130ffe-4d84-411a-90d4-3ee5a6008c21","savedPayload":{"position":{"x":33395.46648067496,"y":34543.615352249944},"targetPosition":{"x":33290.29299508638,"y":35241.92520465139},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e6a32c76-eda6-4982-8a3e-220c29218ba2","savedPayload":{"position":{"x":33290.29299508638,"y":35241.92520465139},"targetPosition":{"x":33185.19859191796,"y":35940.28125915314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b31b4647-b5e2-42e5-a1e9-fa0ffafeffc8","savedPayload":{"position":{"x":33185.19859191796,"y":35940.28125915314},"targetPosition":{"x":33080.06170782797,"y":36640.19346288677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"707c998d-da1c-45c1-84de-75ac9a0898b9","savedPayload":{"position":{"x":31659.323906273137,"y":37402.37410264933},"targetPosition":{"x":31915.856960892015,"y":37588.535549621614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"5840e471-a97e-4662-8938-5f1eb21091f0","savedPayload":{"position":{"x":31183.009956101014,"y":36782.504744546066},"targetPosition":{"x":31491.51006891578,"y":36854.251701025954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"447e0866-7372-4a42-b5b1-cd05e0efe728","savedPayload":{"position":{"x":31491.51006891578,"y":36854.251701025954},"targetPosition":{"x":31800.55502315403,"y":36927.901420816044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"0a447725-e6ac-45ea-bb2c-5f3b968dfc06","savedPayload":{"position":{"x":31290.106361072674,"y":36555.73153010471},"targetPosition":{"x":31545.412758726936,"y":36742.300810479515},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9540f515-0603-4cda-bbbd-84d7d104a8e1","savedPayload":{"position":{"x":31545.412758726936,"y":36742.300810479515},"targetPosition":{"x":31800.55502315403,"y":36927.901420816044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"ad089114-2332-4b0b-b079-4070e1baa4c5","savedPayload":{"position":{"x":31466.710653687438,"y":36386.72282322643},"targetPosition":{"x":31632.698504157317,"y":36656.58812389028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7f2c2ddf-c19f-4f32-bda3-b4a3b7e7fb90","savedPayload":{"position":{"x":31632.698504157317,"y":36656.58812389028},"targetPosition":{"x":31800.55502315403,"y":36927.901420816044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"48b35276-b129-486a-a517-ca3656ff9a53","savedPayload":{"position":{"x":31699.8989481298,"y":36302.406273581415},"targetPosition":{"x":31748.84525123045,"y":36614.905788790646},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"179fce4e-890b-4a07-9289-57620f55da9e","savedPayload":{"position":{"x":31748.84525123045,"y":36614.905788790646},"targetPosition":{"x":31800.55502315403,"y":36927.901420816044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Steep","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope === \"Steep\"","id":"45c706e6-6a7c-4b5a-b713-2b87ac0b6550","savedPayload":{"position":{"x":31951.97794407239,"y":36315.40384175533},"targetPosition":{"x":31876.172445083255,"y":36620.559540406415},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ad485330-bf10-49e7-beaa-d57e0f8564b3","savedPayload":{"position":{"x":31876.172445083255,"y":36620.559540406415},"targetPosition":{"x":31800.55502315403,"y":36927.901420816044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H NOT Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerSubChannel.slope != \"Side\"","id":"a360bbf1-b177-4298-80a8-06b6062dc779","savedPayload":{"position":{"x":32170.746621321694,"y":36414.167437119846},"targetPosition":{"x":31986.86986514592,"y":36670.5282462258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f8134986-b19a-4715-bb59-dd6bc7c774a8","savedPayload":{"position":{"x":31986.86986514592,"y":36670.5282462258},"targetPosition":{"x":31800.55502315403,"y":36927.901420816044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"685b785a-4196-4b0a-84c1-0c7ed54e6162","savedPayload":{"position":{"x":32339.81154781816,"y":36594.257056935094},"targetPosition":{"x":32072.098207320785,"y":36761.56656051255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"747a6cc6-2122-4f62-ab40-bdcfbb8ae702","savedPayload":{"position":{"x":32072.098207320785,"y":36761.56656051255},"targetPosition":{"x":31800.55502315403,"y":36927.901420816044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e9bc25c6-7eca-42cd-a2c2-dbc196d8929a","savedPayload":{"position":{"x":31800.55502315403,"y":36927.901420816044},"targetPosition":{"x":31857.602999984298,"y":37281.88757989147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"88e734b7-e242-4b34-aeca-bb71905973ab","savedPayload":{"position":{"x":31865.892541028814,"y":37275.85845876196},"targetPosition":{"x":31915.856960892015,"y":37588.535549621614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"73a50844-7c64-4816-a04d-db5da604663b","savedPayload":{"position":{"x":31915.856960892015,"y":37588.535549621614},"targetPosition":{"x":32427.99620252867,"y":37960.31308862359},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"My Formula","code":"tradingEngine.current.episode.candle.close.value","id":"7d19cadf-d686-403d-b5c5-c4c8600035e4","savedPayload":{"position":{"x":31289.054582984918,"y":36994.7031979441},"targetPosition":{"x":31599.170852731608,"y":37060.79391166698},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5dc9b14b-e534-4328-9789-22d49b2c6626","savedPayload":{"position":{"x":31599.170852731608,"y":37060.79391166698},"targetPosition":{"x":31997.326835318,"y":37146.000614378616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInBaseAsset":{"type":"Target Size In Base Asset","name":"New Target Size In Base Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.episodeBaseAsset.balance.value","id":"9bc8b451-2bcc-4092-b469-d99fe46040ae","savedPayload":{"position":{"x":31774.0833586151,"y":36459.31406647751},"targetPosition":{"x":31872.131018771084,"y":36760.5949541001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9e557768-9288-4e09-bf67-db8d850df130","savedPayload":{"position":{"x":31872.131018771084,"y":36760.5949541001},"targetPosition":{"x":31997.326835318,"y":37146.000614378616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7dadecbd-1931-448f-a23d-9a96140d75ca","savedPayload":{"position":{"x":31997.21690770393,"y":37145.88598673393},"targetPosition":{"x":32232.38592903293,"y":37358.300913321866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[],"marketSellOrders":[{"type":"Market Sell Order","name":"Quick Entry","config":"{\n\"percentageOfAlgorithmSize\": 100\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"14697473-8454-4fb1-bf28-fa12d6640666","savedPayload":{"position":{"x":32693.484964151266,"y":35183.811846701865},"targetPosition":{"x":32627.623320331917,"y":35493.08359185485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"98626788-dd20-4fb6-8b43-9b97014a212e","savedPayload":{"position":{"x":32627.623320331917,"y":35493.08359185485},"targetPosition":{"x":32561.71571159567,"y":35802.36120518729},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b4e76cbe-b430-4f1b-86cd-1e8259a48477","savedPayload":{"position":{"x":32561.71571159567,"y":35802.36120518729},"targetPosition":{"x":32495.803542642367,"y":36111.51291679241},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"5fa41d57-267e-451c-b495-4ac721ddfa18","savedPayload":{"position":{"x":32495.803542642367,"y":36111.51291679241},"targetPosition":{"x":32430.49195359624,"y":36420.86368069163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4c9ad616-de53-4332-8569-ad2d7eb4f941","savedPayload":{"position":{"x":32430.49195359624,"y":36420.86368069163},"targetPosition":{"x":32364.74820064399,"y":36730.60028038999},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Sell Order #1","id":"8e404329-d41f-41e0-ad5a-c84ee1fa2604"}}}],"limitBuyOrders":[],"limitSellOrders":[],"id":"4d3552fa-b634-4bc8-a975-e136b47e44a2","savedPayload":{"position":{"x":32364.74820064399,"y":36730.60028038999},"targetPosition":{"x":32297.62158876912,"y":37048.57142828313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"ffe64902-21d9-4c5e-b6aa-97ce752cce91","savedPayload":{"position":{"x":32297.69142382401,"y":37048.38321708713},"targetPosition":{"x":32232.38592903293,"y":37358.300913321866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"63eb6592-10e0-4c3c-ac03-8789e6b52068","savedPayload":{"position":{"x":32232.38592903293,"y":37358.300913321866},"targetPosition":{"x":32427.99620252867,"y":37960.31308862359},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Custom","managedStopLoss":{"type":"Managed Stop Loss","name":"New Managed Stop Loss","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.entryTargetRate.value * 1.03","id":"c42eec50-421c-4220-942c-4bdd4128e9dd","savedPayload":{"position":{"x":32264.183162321464,"y":36427.42063681072},"targetPosition":{"x":32476.785344008873,"y":36662.93599540576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < tradingEngine.current.position.entryTargetRate.value * 0.97","id":"a2f4b43b-c498-4687-ab3d-c5c7d7ad4d02","savedPayload":{"position":{"x":31676.162846345655,"y":36195.06881268782},"targetPosition":{"x":31725.295972015694,"y":36346.06103776056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"35795d1b-8c7a-4957-9e22-1400e32d1e14","savedPayload":{"position":{"x":31725.295972015694,"y":36346.06103776056},"targetPosition":{"x":31780.885822685203,"y":36515.47845721321},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8ea589b2-e7e3-4907-90a8-bd4667a70196","savedPayload":{"position":{"x":31780.885822685203,"y":36515.47845721321},"targetPosition":{"x":31846.110052330867,"y":36715.0086331352},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"a68ec84d-450e-42ed-b4c7-28db86f31e57","savedPayload":{"position":{"x":32575.61812784557,"y":36361.256519552335},"targetPosition":{"x":32476.785344008873,"y":36662.93599540576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"bd85fac3-f2ab-47b8-8077-344343ebfc93","savedPayload":{"position":{"x":32476.785344008873,"y":36662.93599540576},"targetPosition":{"x":32558.202092808093,"y":37048.95922852216},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage * 1.02 < tradingEngine.current.position.stopLoss.value) {chart.at01hs.bollingerBand.movingAverage * 1.02} else {tradingEngine.current.position.stopLoss.value}","id":"e9425ea8-46fc-4bbd-96af-107b45fcde20","savedPayload":{"position":{"x":32345.536084573323,"y":36042.80358538935},"targetPosition":{"x":32411.15145772242,"y":36352.709191668924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"787093b5-b60f-4002-ae4e-7dcf26bc651c","savedPayload":{"position":{"x":32411.15145772242,"y":36352.709191668924},"targetPosition":{"x":32476.779920194163,"y":36662.90089201162},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a1a3ca90-96ad-4bc3-84f0-0ead961f4ab3","savedPayload":{"position":{"x":32557.83839690435,"y":37048.44648155945},"targetPosition":{"x":32623.58147544358,"y":37358.48453701025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"managedTakeProfit":{"type":"Managed Take Profit","name":"New Managed Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.entryTargetRate.value * 0.95","id":"98c748f4-5126-4a47-a88b-8af381ce5b37","savedPayload":{"position":{"x":33085.78081467435,"y":36572.63111611559},"targetPosition":{"x":33151.707086235554,"y":36882.85254358185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < entryTargetRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < tradingEngine.current.position.entryTargetRate.value","id":"37f8d23d-8e82-4d78-8799-338d352c0bd7","savedPayload":{"position":{"x":32523.101641962912,"y":36136.73764710966},"targetPosition":{"x":32489.703469081567,"y":36292.83806652813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7641aab3-419e-431c-b7de-f961309f3d88","savedPayload":{"position":{"x":32489.703469081567,"y":36292.83806652813},"targetPosition":{"x":32444.380064695004,"y":36473.00856110401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.current.position.positionCounters.periods.value > 2","id":"640b3bdc-3649-4846-b67a-1ed5a8ba52d5","savedPayload":{"position":{"x":32769.10788172727,"y":36357.91416971112},"targetPosition":{"x":32618.185899972053,"y":36407.60880542894},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6855f9f0-a1a5-4613-b77a-b9d7226ec1f7","savedPayload":{"position":{"x":32618.185899972053,"y":36407.60880542894},"targetPosition":{"x":32444.380064695004,"y":36473.00856110401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8dc235c5-6c20-4d93-8703-275564f7e648","savedPayload":{"position":{"x":32444.380064695004,"y":36473.00856110401},"targetPosition":{"x":32304.96600577777,"y":36629.21179801995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"19f17341-ac03-4e07-9f8d-d3e4ef023fc2","savedPayload":{"position":{"x":33453.31809091655,"y":36980.79975306052},"targetPosition":{"x":33151.707086235554,"y":36882.85254358185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"7f92f80d-0924-4d54-ae68-6505d8f0421a","savedPayload":{"position":{"x":33151.707086235554,"y":36882.85254358185},"targetPosition":{"x":32858.629544967975,"y":37146.83029502809},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 * 0.97 < \ntradingEngine.current.position.entryTargetRate.value * 0.97) \n{chart.at01hs.base7EMA.ema7 * 0.97} else \n{tradingEngine.current.position.entryTargetRate.value * 0.97}","id":"af90c747-4790-43c5-afe1-37a605571cae","savedPayload":{"position":{"x":33175.07292653746,"y":36435.210933371534},"targetPosition":{"x":33386.711773485986,"y":36671.21922186229},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"64b16855-36d6-49b4-afde-9bc43b6bdd53","savedPayload":{"position":{"x":18877.135738994933,"y":35922.541017924705},"targetPosition":{"x":18730.895599580424,"y":35610.79089231645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a06e989b-e442-43e3-b915-7aa76348e064","savedPayload":{"position":{"x":18730.895599580424,"y":35610.79089231645},"targetPosition":{"x":18588.75135625618,"y":35291.92931829103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ac15c2d4-9d65-464a-b3e6-2d28edca7308","savedPayload":{"position":{"x":18588.75135625618,"y":35291.92931829103},"targetPosition":{"x":18445.94944417561,"y":34968.76157663599},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"c81de819-5717-459a-9b89-f046c6768803","savedPayload":{"position":{"x":33691.48983766369,"y":36531.30163134122},"targetPosition":{"x":33386.711773485986,"y":36671.21922186229},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bff4cb02-f3ad-4c61-9f94-cc3e2b43121c","savedPayload":{"position":{"x":34151.10632310893,"y":37286.64119336672},"targetPosition":{"x":33841.029038829445,"y":37352.24346241635},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a9f77d3c-1868-4535-8117-e56d388ba5ad","savedPayload":{"position":{"x":33841.029038829445,"y":37352.24346241635},"targetPosition":{"x":33530.44413521971,"y":37417.89206031978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"42345fb4-0626-4b42-90c1-bb9f214e17d4","savedPayload":{"position":{"x":34134.03413181182,"y":37613.766257331095},"targetPosition":{"x":33832.52076213223,"y":37515.91716792271},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a4bfbfb1-543e-4db0-9f39-dd6631e660eb","savedPayload":{"position":{"x":33832.52076213223,"y":37515.91716792271},"targetPosition":{"x":33530.44413521971,"y":37417.89206031978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < tradingEngine.current.position.entryTargetRate.value * 0.99","id":"67342cd6-6678-401c-94e1-e0b0eda2263e","savedPayload":{"position":{"x":33955.56847486398,"y":37888.896608854506},"targetPosition":{"x":33743.2018890799,"y":37653.51627253761},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6fcc3279-0e65-424f-81b5-0ed032a461ca","savedPayload":{"position":{"x":33743.2018890799,"y":37653.51627253761},"targetPosition":{"x":33530.44413521971,"y":37417.89206031978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"47ca70bc-782c-445f-834e-921f0840eb7e","savedPayload":{"position":{"x":33663.61661970428,"y":38037.884339762575},"targetPosition":{"x":33597.16239352923,"y":37728.08526764337},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"13eaacfa-d129-401a-8648-93d7954f94ac","savedPayload":{"position":{"x":33597.16239352923,"y":37728.08526764337},"targetPosition":{"x":33530.44413521971,"y":37417.89206031978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"6674b07b-d9ed-4a96-88b2-6743cd6e0852","savedPayload":{"position":{"x":33337.07031643823,"y":38020.74548155412},"targetPosition":{"x":33433.78858556316,"y":37719.53086367969},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9163a9de-74b0-42f7-8ee0-85b93dee00fc","savedPayload":{"position":{"x":33433.78858556316,"y":37719.53086367969},"targetPosition":{"x":33530.44413521971,"y":37417.89206031978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"46f92b3d-10dd-484d-895b-c0d547424c3a","savedPayload":{"position":{"x":33530.44413521971,"y":37417.89206031978},"targetPosition":{"x":33305.5418034881,"y":37169.113701273476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"571d2fea-5e0b-49f3-877a-5b9b41516bfe","savedPayload":{"position":{"x":33599.33895220783,"y":36906.32207750097},"targetPosition":{"x":33386.711773485986,"y":36671.21922186229},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"5639cfff-e0f1-417b-8034-adb661ded0cd"}}}],"announcements":[],"id":"75e54a0b-1af9-49d2-ab9b-461d72a731fe","savedPayload":{"position":{"x":33386.711773485986,"y":36671.21922186229},"targetPosition":{"x":33151.83187446397,"y":36882.73986590395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < \ntradingEngine.current.position.entryTargetRate.value * 0.97) \n{chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else \n{tradingEngine.current.position.entryTargetRate.value * 0.97}","id":"3f9df9ef-2267-4a33-b2b8-fddce1f7f4d7","savedPayload":{"position":{"x":33620.871251492514,"y":36124.3391295664},"targetPosition":{"x":33604.6972764238,"y":36441.42044128856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bb9431b0-04e2-49ad-8a1e-8336a5a90ba6","savedPayload":{"position":{"x":35489.11229652066,"y":36797.20027739751},"targetPosition":{"x":35373.60272347569,"y":37131.86882888584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fff74a7d-6205-4d97-b32a-c31c2879e228","savedPayload":{"position":{"x":35373.60272347569,"y":37131.86882888584},"targetPosition":{"x":35258.44931167425,"y":37466.909792569626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"c2308750-4fa3-45bc-8ce3-b834db3e5a75","savedPayload":{"position":{"x":35728.573497184,"y":36936.70041875349},"targetPosition":{"x":35493.70691468745,"y":37201.60851471255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"37f1894e-e911-46df-b97d-92ad8716bbb7","savedPayload":{"position":{"x":35493.70691468745,"y":37201.60851471255},"targetPosition":{"x":35258.44931167425,"y":37466.909792569626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"c815953e-7501-4c0f-bf44-b2054f27204b","savedPayload":{"position":{"x":35895.77442036131,"y":37157.092938192414},"targetPosition":{"x":35577.37532659418,"y":37311.87688415086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0abbc8b9-69b3-4051-a077-8cae2eb456e5","savedPayload":{"position":{"x":35577.37532659418,"y":37311.87688415086},"targetPosition":{"x":35258.44931167425,"y":37466.909792569626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"b1db73ae-ddb7-452c-bc67-aebce55c0071","savedPayload":{"position":{"x":35965.89319283157,"y":37424.596808841015},"targetPosition":{"x":35612.44867986875,"y":37445.69202636273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1c0d7a06-b7f3-443d-9088-177134b13b83","savedPayload":{"position":{"x":35612.44867986875,"y":37445.69202636273},"targetPosition":{"x":35258.44931167425,"y":37466.909792569626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"12d82500-383b-445d-995d-7b589c84635a","savedPayload":{"position":{"x":35928.388742019015,"y":37697.8891605782},"targetPosition":{"x":35593.675252048786,"y":37582.40131236177},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ea51ecbf-d848-46a7-a88d-82ec88f8480a","savedPayload":{"position":{"x":35593.675252048786,"y":37582.40131236177},"targetPosition":{"x":35258.44931167425,"y":37466.909792569626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14 > chart.at01hs.base7EMA.previous.previous.ema21 - chart.at01hs.base7EMA.previous.previous.ema14","id":"c48ea949-7b3e-4c17-bff5-19d6e459d626","savedPayload":{"position":{"x":35788.901819612176,"y":37936.74726173593},"targetPosition":{"x":35523.93127866603,"y":37701.74940699708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7d987b62-66de-4d68-be64-91c124266174","savedPayload":{"position":{"x":35523.93127866603,"y":37701.74940699708},"targetPosition":{"x":35258.44931167425,"y":37466.909792569626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2 previous ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7 > chart.at01hs.base7EMA.previous.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.previous.ema7","id":"6e81b8d8-148d-4a5a-8307-40c1dbccabb2","savedPayload":{"position":{"x":35568.89762418625,"y":38103.75633773891},"targetPosition":{"x":35413.756159515986,"y":37785.31445122088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"229f0b94-9e9a-45b5-87fe-8bf1427c1cb6","savedPayload":{"position":{"x":35413.756159515986,"y":37785.31445122088},"targetPosition":{"x":35258.44931167425,"y":37466.909792569626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0e734dca-7ea8-4eaf-9379-48ccf8dff51e","savedPayload":{"position":{"x":35258.44931167425,"y":37466.909792569626},"targetPosition":{"x":34893.15881522068,"y":37488.98781766544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"43f6f964-e44c-4b9e-9c6e-f5f10afb891d","savedPayload":{"position":{"x":33902.92916436339,"y":36151.51079426457},"targetPosition":{"x":33604.6972764238,"y":36441.42044128856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"5639cfff-e0f1-417b-8034-adb661ded0cd"}}},{"type":"Move To Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"427ca47c-7233-4e51-8070-0dd82e493d47","savedPayload":{"position":{"x":35767.571683969145,"y":38045.7987793229},"targetPosition":{"x":35414.14012883573,"y":38066.7834127489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8b99cc7a-c8fd-4e57-9f24-c2576f6bab18","savedPayload":{"position":{"x":35414.14012883573,"y":38066.7834127489},"targetPosition":{"x":35060.39966010685,"y":38087.63224559081},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"2217cfc4-1cdd-43b0-86ef-9957ff84c8f1","savedPayload":{"position":{"x":35590.417676597004,"y":38557.4376603186},"targetPosition":{"x":35325.566100461365,"y":38322.65890633671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6918bca4-9fcd-44a4-9ad5-d4718158d064","savedPayload":{"position":{"x":35325.566100461365,"y":38322.65890633671},"targetPosition":{"x":35060.39966010685,"y":38087.63224559081},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2 prev.ema7 div 2 prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7 > chart.at01hs.base7EMA.previous.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.previous.ema7","id":"9afbcaee-9dcd-4b18-89a9-9124eea8c900","savedPayload":{"position":{"x":35103.26511133989,"y":38794.48882249209},"targetPosition":{"x":35081.88084439471,"y":38441.166251579154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"91b01ae0-97af-48c7-adf3-1bb767e27f36","savedPayload":{"position":{"x":35081.88084439471,"y":38441.166251579154},"targetPosition":{"x":35060.39966010685,"y":38087.63224559081},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8f15adc5-8719-4f96-8560-127f7eaa0a97","savedPayload":{"position":{"x":35060.39966010685,"y":38087.63224559081},"targetPosition":{"x":34786.64187680208,"y":37844.941824007576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"b15ba6fb-7ae0-4c8f-b8ac-b76c5945dcb5","savedPayload":{"position":{"x":33922.02137034651,"y":36458.14973134921},"targetPosition":{"x":33604.6972764238,"y":36441.42044128856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"75e54a0b-1af9-49d2-ab9b-461d72a731fe"}}}],"announcements":[],"id":"eb74a012-ed21-4ce6-8f2e-8f2ebaea9188","savedPayload":{"position":{"x":33604.6972764238,"y":36441.42044128856},"targetPosition":{"x":33386.711773485986,"y":36671.21922186229},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 * 0.8 < \ntradingEngine.current.position.entryTargetRate.value * 0.97) \n{chart.at01hs.base7EMA.ema7 * 0.8} else \n{tradingEngine.current.position.takeProfit.value}","id":"25d46d39-ae12-4dd8-a136-48f75b7236c1","savedPayload":{"position":{"x":33759.69595173332,"y":35937.93493233107},"targetPosition":{"x":33824.94813022078,"y":36248.33387036443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"f4da55cf-3df3-40ed-8d05-a914a6697fae","savedPayload":{"position":{"x":22434.611823353152,"y":38151.25925021239},"targetPosition":{"x":22268.21473377267,"y":37777.31299484611},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2c64d2c0-288c-45ae-a359-5d3f44bb4c5e","savedPayload":{"position":{"x":22268.21473377267,"y":37777.31299484611},"targetPosition":{"x":22101.712790562182,"y":37403.15725802492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"b4571357-f64e-432a-8d80-37f1dfd89e82","savedPayload":{"position":{"x":21620.813303961135,"y":38065.72410715969},"targetPosition":{"x":21861.233732493216,"y":37734.519437075454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96c5c204-c93f-494c-8691-30566d39db06","savedPayload":{"position":{"x":21861.233732493216,"y":37734.519437075454},"targetPosition":{"x":22101.712790562182,"y":37403.15725802492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2849e6ed-91c0-4e63-a4a3-2ba4d4517008","savedPayload":{"position":{"x":22101.712790562182,"y":37403.15725802492},"targetPosition":{"x":22144.25827145668,"y":36995.6252988946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"9c2aa1f4-5ba6-4dc8-9f99-db133558f0e8","savedPayload":{"position":{"x":34135.44302674081,"y":36182.19817649808},"targetPosition":{"x":33824.94813022078,"y":36248.33387036443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"75e54a0b-1af9-49d2-ab9b-461d72a731fe"}}}],"announcements":[],"id":"5639cfff-e0f1-417b-8034-adb661ded0cd","savedPayload":{"position":{"x":33824.94813022078,"y":36248.33387036443},"targetPosition":{"x":33604.6972764238,"y":36441.42044128856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6cb50b3d-6bf3-422f-8d2a-d0103ea02607","savedPayload":{"position":{"x":32859.021773134205,"y":37146.37863010176},"targetPosition":{"x":32623.58147544358,"y":37358.48453701025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"42765ad5-284e-4966-a367-76593b53bcf7","savedPayload":{"position":{"x":32623.58147544358,"y":37358.48453701025},"targetPosition":{"x":32427.99620252867,"y":37960.31308862359},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.candle.close.value","id":"110d0178-0090-4921-92dc-837bb31c3ba1","savedPayload":{"position":{"x":32994.965915849265,"y":36579.07462463556},"targetPosition":{"x":33027.66529784586,"y":36894.36651851759},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3a9db813-8c6c-49a1-ae12-8125f8efc292","savedPayload":{"position":{"x":33027.66529784586,"y":36894.36651851759},"targetPosition":{"x":33069.451205638936,"y":37299.49648991313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInQuotedAsset":{"type":"Target Size In Quoted Asset","name":"New Target Size In Quoted Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.strategyOpenStage.stageQuotedAsset.sizeFilled.value","id":"379418a8-84aa-481c-8f23-48801ca405d8","savedPayload":{"position":{"x":33653.723093252134,"y":36875.30006672358},"targetPosition":{"x":33397.53344703802,"y":37061.31963151643},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ef89e246-f225-4883-ae89-3f61dc1320f1","savedPayload":{"position":{"x":33397.53344703802,"y":37061.31963151643},"targetPosition":{"x":33069.451205638936,"y":37299.49648991313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5f697ad9-68be-4204-b5ad-67cded03abbb","savedPayload":{"position":{"x":33069.60283179009,"y":37299.42383828177},"targetPosition":{"x":32940.25964905767,"y":37588.54376829861},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeExecution":{"type":"Close Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[{"type":"Market Buy Order","name":"Quick Exit","config":"{\n\"percentageOfAlgorithmSize\": 100,\n\"spawnMultipleOrders\": false\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"4bcae971-5718-4028-a10e-3f170704030b","savedPayload":{"position":{"x":35231.564389064006,"y":37348.780306090644},"targetPosition":{"x":34917.21199346884,"y":37381.53949537965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2221a782-74ed-4536-a40c-e54fd95fc345","savedPayload":{"position":{"x":34917.21199346884,"y":37381.53949537965},"targetPosition":{"x":34602.50741186469,"y":37414.628538773024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e30e9de3-190a-4536-9dcf-0a12e09e0f0e","savedPayload":{"position":{"x":34602.50741186469,"y":37414.628538773024},"targetPosition":{"x":34287.68051262668,"y":37447.44523683488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"b57f49ac-744d-4af2-9a8f-d92483ed0d0d","savedPayload":{"position":{"x":34287.68051262668,"y":37447.44523683488},"targetPosition":{"x":33973.14153809478,"y":37480.36893937559},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5aff6295-2b72-4e26-9017-741fb9303efb","savedPayload":{"position":{"x":33973.14153809478,"y":37480.36893937559},"targetPosition":{"x":33658.73630073428,"y":37513.292805008154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Buy Order #1","id":"7d6c3ac9-4869-4ff3-a9f2-2a6f8a31ccf3"}}}],"marketSellOrders":[],"limitBuyOrders":[],"limitSellOrders":[],"id":"202469d9-139c-431c-98f0-3d5d48ce972b","savedPayload":{"position":{"x":33658.73630073428,"y":37513.292805008154},"targetPosition":{"x":33255.26502376631,"y":37555.587549663906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2d3db895-56de-4b0d-b252-c70d818787cc","savedPayload":{"position":{"x":33255.46949631418,"y":37555.56090740107},"targetPosition":{"x":32940.25964905767,"y":37588.54376829861},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"71e66e43-11c0-4f53-afc5-3787eafc4744","savedPayload":{"position":{"x":32940.25964905767,"y":37588.54376829861},"targetPosition":{"x":32427.99620252867,"y":37960.31308862359},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2faf1715-7b6a-4188-ac5e-c67502e18fcc","savedPayload":{"position":{"x":32427.99620252867,"y":37960.31308862359},"targetPosition":{"x":32428,"y":38593.35190918473},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Trading Strategy","name":"S5 - 4H Up","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"1bb17736-cc12-4b60-9807-632aeb2d3636","savedPayload":{"position":{"x":31679.140504971372,"y":37431.812695343695},"targetPosition":{"x":31953.23831407513,"y":37246.82693370091},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2e2487a-d30a-4d70-9d70-f188409059a9","savedPayload":{"position":{"x":31953.23831407513,"y":37246.82693370091},"targetPosition":{"x":32227.396902108816,"y":37061.54091853687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"21123f61-dc48-4915-b609-c3eab53b8fec","savedPayload":{"position":{"x":31584.018837856536,"y":37221.28420852677},"targetPosition":{"x":31905.731034031593,"y":37141.69851275865},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"daefe7ea-f409-406c-891a-28c3001ab5c0","savedPayload":{"position":{"x":31905.731034031593,"y":37141.69851275865},"targetPosition":{"x":32227.396902108816,"y":37061.54091853687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"6897670f-f952-4d83-8a95-bc82ad1d07fa","savedPayload":{"position":{"x":31569.006099687238,"y":36992.82593067363},"targetPosition":{"x":31898.2863515488,"y":37027.09928690999},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b6890e81-16b4-4cd2-b1ed-0c02d51dae4b","savedPayload":{"position":{"x":31898.2863515488,"y":37027.09928690999},"targetPosition":{"x":32227.396902108816,"y":37061.54091853687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"c02c6beb-0de4-4a7c-a768-7332501d45b1","savedPayload":{"position":{"x":31632.42033757609,"y":36771.4237236551},"targetPosition":{"x":31930.08819847356,"y":36916.32339715532},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3e59df4d-42a2-41e9-93ff-6d85b65d9bc2","savedPayload":{"position":{"x":31930.08819847356,"y":36916.32339715532},"targetPosition":{"x":32227.396902108816,"y":37061.54091853687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"02H Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\"","id":"3257e894-69d2-4f5f-93eb-13ba4d62c5e0","savedPayload":{"position":{"x":31767.36446591194,"y":36585.198021726035},"targetPosition":{"x":31997.141183563574,"y":36823.70208644603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bd3ee521-2846-411f-a740-de3480e90421","savedPayload":{"position":{"x":31997.141183563574,"y":36823.70208644603},"targetPosition":{"x":32227.396902108816,"y":37061.54091853687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerSubChannel.slope === \"Gentle\"","id":"3cef9be4-e642-4af5-b845-d63592ea22e9","savedPayload":{"position":{"x":31957.984164803842,"y":36455.7295404087},"targetPosition":{"x":32092.65949047347,"y":36758.57293906963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a23ee119-f4f5-4fe6-9013-27055d634051","savedPayload":{"position":{"x":32092.65949047347,"y":36758.57293906963},"targetPosition":{"x":32227.396902108816,"y":37061.54091853687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H NOT Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerSubChannel.slope != \"Side\"","id":"7fa69f52-edfe-42b6-bda3-40e9ad7af808","savedPayload":{"position":{"x":32181.74326450617,"y":36400.042060875814},"targetPosition":{"x":32204.628600106207,"y":36730.70282931771},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"50495c21-1a7b-4c38-9c6c-4cec9fb5a0f1","savedPayload":{"position":{"x":32204.628600106207,"y":36730.70282931771},"targetPosition":{"x":32227.396902108816,"y":37061.54091853687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"0770176a-5af8-479d-8a7e-7bafaf04cb05","savedPayload":{"position":{"x":32409.515316101242,"y":36425.373552452314},"targetPosition":{"x":32318.473909495722,"y":36743.49347722577},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0538f837-fbba-4e7c-b1db-8a574559d584","savedPayload":{"position":{"x":32318.473909495722,"y":36743.49347722577},"targetPosition":{"x":32227.396902108816,"y":37061.54091853687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b2dd0458-53e0-4d8c-8f46-bb45946cdb65","savedPayload":{"position":{"x":32227.396902108816,"y":37061.54091853687},"targetPosition":{"x":32524.581541719603,"y":37278.234946629505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"642f8610-4b1d-4178-8bae-12abf00b7812","savedPayload":{"position":{"x":32524.331449070334,"y":37277.89217408281},"targetPosition":{"x":32792.18967245921,"y":37472.450827188484},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"9d2e77ef-dc06-4357-8739-44065c83f8cb","savedPayload":{"position":{"x":33750.578866156044,"y":34934.716164645295},"targetPosition":{"x":33579.7975664304,"y":35572.025462913196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"65d4f331-e81f-44d4-834b-9e786d9d2a36","savedPayload":{"position":{"x":33579.7975664304,"y":35572.025462913196},"targetPosition":{"x":33408.93435190139,"y":36209.40276407696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9753c7d0-7d95-4464-8331-a7d4bac71a9b","savedPayload":{"position":{"x":33408.93435190139,"y":36209.40276407696},"targetPosition":{"x":33237.6927367514,"y":36848.137447563095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"99db5a57-b7b5-44d2-b046-c5784a51bffc","savedPayload":{"position":{"x":32740.345095044948,"y":37145.37972440931},"targetPosition":{"x":32792.18967245921,"y":37472.450827188484},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"190f6e85-1f6e-4088-a156-a82e3b0e72cb","savedPayload":{"position":{"x":33556.48287954522,"y":36486.84446506109},"targetPosition":{"x":33613.54792666881,"y":36812.37021035914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"07da9742-43f4-4bfb-8720-3272474740d1","savedPayload":{"position":{"x":33613.54792666881,"y":36812.37021035914},"targetPosition":{"x":33670.901221625594,"y":37138.33644732708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"56b61beb-3df4-4577-b39e-90c3c3fc7075","savedPayload":{"position":{"x":33786.093812554325,"y":36486.60511808747},"targetPosition":{"x":33728.51361613969,"y":36812.2493299448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"34460859-dffb-4fba-93b2-fe143c3a25de","savedPayload":{"position":{"x":33728.51361613969,"y":36812.2493299448},"targetPosition":{"x":33670.901221625594,"y":37138.33644732708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"16a3f794-7209-437c-a272-c1f945374af2","savedPayload":{"position":{"x":34002.2242093003,"y":36565.09467558022},"targetPosition":{"x":33836.71348834779,"y":36851.488279471865},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"28a397a8-b5f1-44fd-afe2-3e366e7e938d","savedPayload":{"position":{"x":33836.71348834779,"y":36851.488279471865},"targetPosition":{"x":33670.901221625594,"y":37138.33644732708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"e6fa32e6-37a4-40ae-a68d-8d046eed13b6","savedPayload":{"position":{"x":34178.37745969582,"y":36712.92306389101},"targetPosition":{"x":33924.86394919174,"y":36925.45536729886},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ba113199-ed6c-4b10-8312-4d938c7e8c39","savedPayload":{"position":{"x":33924.86394919174,"y":36925.45536729886},"targetPosition":{"x":33670.901221625594,"y":37138.33644732708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"02H Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\"","id":"b76599cd-7312-4aac-9dee-8e21dac4b1c6","savedPayload":{"position":{"x":34293.372463797954,"y":36912.12256230447},"targetPosition":{"x":33982.3917616313,"y":37025.11098318569},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d274dddf-c518-4602-9e20-001b6b348fde","savedPayload":{"position":{"x":33982.3917616313,"y":37025.11098318569},"targetPosition":{"x":33670.901221625594,"y":37138.33644732708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerSubChannel.slope === \"Gentle\"","id":"ef31d5cf-d980-494c-a6af-1970b0e5e172","savedPayload":{"position":{"x":34333.26207167214,"y":37138.33081005986},"targetPosition":{"x":34002.32345375863,"y":37138.270213041666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1e6adf92-f58a-4ebd-a125-f9b61d51ec59","savedPayload":{"position":{"x":34002.32345375863,"y":37138.270213041666},"targetPosition":{"x":33670.901221625594,"y":37138.33644732708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H NOT Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerSubChannel.slope != \"Side\"","id":"d6005505-7c26-4f5c-b94e-3c2a9e812f5c","savedPayload":{"position":{"x":34293.27807987192,"y":37364.62852135664},"targetPosition":{"x":33982.26589661451,"y":37251.5110572601},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dac090bd-5be4-4193-b40b-3ce250f62d91","savedPayload":{"position":{"x":33982.26589661451,"y":37251.5110572601},"targetPosition":{"x":33670.901221625594,"y":37138.33644732708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"6198450f-adf9-4208-a125-e47b101f9b41","savedPayload":{"position":{"x":34178.16587349185,"y":37563.94733134921},"targetPosition":{"x":33924.624737493454,"y":37351.31156124896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b1f55195-9a70-49fa-8025-51cdf0acdbeb","savedPayload":{"position":{"x":33924.624737493454,"y":37351.31156124896},"targetPosition":{"x":33670.901221625594,"y":37138.33644732708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"196d7981-9230-4a94-b8c2-39ff25a22bb9","savedPayload":{"position":{"x":33670.901221625594,"y":37138.33644732708},"targetPosition":{"x":33352.51595140935,"y":37321.975354378315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"1c30f570-4f8e-47cf-95c1-dd1f4244a77a","savedPayload":{"position":{"x":32986.254328644914,"y":37204.51638378789},"targetPosition":{"x":32792.18967245921,"y":37472.450827188484},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"999bf574-a88b-467f-a107-7e0770e6bd53","savedPayload":{"position":{"x":32792.18967245921,"y":37472.450827188484},"targetPosition":{"x":32895.746662519596,"y":38125.60770117078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"My Formula","code":"tradingEngine.current.episode.candle.close.value","id":"8a81a2c0-357d-4c2d-a549-9051d7b2c6d0","savedPayload":{"position":{"x":32776.452625186816,"y":36583.94838802755},"targetPosition":{"x":32956.43046547683,"y":36861.65659179653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"530d589f-dc6b-42f7-b3b5-6adda880314a","savedPayload":{"position":{"x":32956.43046547683,"y":36861.65659179653},"targetPosition":{"x":33178.966439952404,"y":37205.5205883659},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInBaseAsset":{"type":"Target Size In Base Asset","name":"New Target Size In Base Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.episodeBaseAsset.balance.value","id":"9e38415c-2e9d-49a8-aaaa-e76aa0532ed4","savedPayload":{"position":{"x":33513.753798634316,"y":36547.624965726754},"targetPosition":{"x":33364.515467636214,"y":36841.03106497957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dcdc1f5f-1691-4432-9e2e-3f8ad4c19314","savedPayload":{"position":{"x":33364.515467636214,"y":36841.03106497957},"targetPosition":{"x":33178.966439952404,"y":37205.5205883659},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7a57f4d9-ac42-4871-85b1-a300b42d7a0c","savedPayload":{"position":{"x":33179.234778282356,"y":37205.54745290705},"targetPosition":{"x":33195.97196581796,"y":37536.23920187517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[],"marketSellOrders":[{"type":"Market Sell Order","name":"Quick Entry","config":"{\n\"percentageOfAlgorithmSize\": 100\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"aaea728c-75f9-46c1-8b15-99fa2990866a","savedPayload":{"position":{"x":35138.0215636373,"y":36272.16981320173},"targetPosition":{"x":34860.83801104834,"y":36452.16960726786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9992f0c6-f7e5-4ff5-bf21-bf809695e653","savedPayload":{"position":{"x":34860.83801104834,"y":36452.16960726786},"targetPosition":{"x":34583.573743571695,"y":36632.495792689784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"bf813257-1aca-4ba8-a5e4-5d372d740caa","savedPayload":{"position":{"x":34583.573743571695,"y":36632.495792689784},"targetPosition":{"x":34306.65282007185,"y":36812.80616423289},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"417a8b49-cb3b-4b7d-b6de-6a382302e09f","savedPayload":{"position":{"x":34306.65282007185,"y":36812.80616423289},"targetPosition":{"x":34029.0666471437,"y":36993.10013342768},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e575de70-9ec4-4936-9265-7cee85ef0b30","savedPayload":{"position":{"x":34029.0666471437,"y":36993.10013342768},"targetPosition":{"x":33751.5892013678,"y":37173.71161494625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Sell Order #1","id":"8e404329-d41f-41e0-ad5a-c84ee1fa2604"}}}],"limitBuyOrders":[],"limitSellOrders":[],"id":"d6c6a08b-6faa-466b-bc6c-b911bf033682","savedPayload":{"position":{"x":33751.5892013678,"y":37173.71161494625},"targetPosition":{"x":33472.69359481655,"y":37355.61856587279},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"8738b563-176d-44fa-acfa-ad74956f3ecf","savedPayload":{"position":{"x":33473.2477202964,"y":37355.6947907368},"targetPosition":{"x":33195.97196581796,"y":37536.23920187517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"5c1cac76-fb50-4a6c-b6ef-86226587fa0e","savedPayload":{"position":{"x":33195.97196581796,"y":37536.23920187517},"targetPosition":{"x":32895.746662519596,"y":38125.60770117078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Controlled Run","managedStopLoss":{"type":"Managed Stop Loss","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.entryTargetRate.value * 1.03","id":"e0d94103-a97c-4960-b1aa-f7e1fcb656ca","savedPayload":{"position":{"x":33901.081520961234,"y":36881.46578342613},"targetPosition":{"x":33884.119756733686,"y":37212.577082930104},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < tradingEngine.current.position.entryTargetRate.value * 0.97","id":"19778aea-457a-4483-8934-4a7e7786a933","savedPayload":{"position":{"x":33657.84948144165,"y":36264.40436293492},"targetPosition":{"x":33581.959903085444,"y":36414.111408711025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3634294e-b331-44ba-b019-2143f4e7e317","savedPayload":{"position":{"x":33581.959903085444,"y":36414.111408711025},"targetPosition":{"x":33502.33011488651,"y":36570.508232800545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7975987f-1e42-47e5-b668-8ec6776ec85a","savedPayload":{"position":{"x":33502.33011488651,"y":36570.508232800545},"targetPosition":{"x":33404.69390397449,"y":36762.64130187054},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"918cf3df-b5a6-4fa0-84b0-e2648e8e8ca8","savedPayload":{"position":{"x":34180.328705465225,"y":37062.78702985256},"targetPosition":{"x":33884.119756733686,"y":37212.577082930104},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"dca1bf8c-cda0-42e4-90c2-14448f3cffb2","savedPayload":{"position":{"x":33884.119756733686,"y":37212.577082930104},"targetPosition":{"x":33665.35761254559,"y":37548.69346350707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage * 1.02 < tradingEngine.current.position.stopLoss.value) {chart.at01hs.bollingerBand.movingAverage * 1.02} else {tradingEngine.current.position.stopLoss.value}","id":"928d3add-1690-4dfd-b2f8-455668fc742c","savedPayload":{"position":{"x":34245.251913344975,"y":36656.853257532006},"targetPosition":{"x":34065.11849118572,"y":36934.02751695634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"51924a8f-f6b0-41f0-9fb5-8cd97d8d6531","savedPayload":{"position":{"x":34065.11849118572,"y":36934.02751695634},"targetPosition":{"x":33884.21011844462,"y":37212.43965623642},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6ba3063d-c882-44d2-a7c4-9915a220b17e","savedPayload":{"position":{"x":33665.43293722728,"y":37547.83382081289},"targetPosition":{"x":33485.005907242856,"y":37825.51031282612},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"managedTakeProfit":{"type":"Managed Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.entryTargetRate.value * 0.95","id":"7c916535-3cd3-4b28-b671-06455eccdbc4","savedPayload":{"position":{"x":34576.16123147619,"y":37603.659088173335},"targetPosition":{"x":34281.86530349304,"y":37755.09717019455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < entryTargetRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < tradingEngine.current.position.entryTargetRate.value","id":"452bd440-4b3f-4abc-a8d3-dbac108494ff","savedPayload":{"position":{"x":34298.62767936204,"y":36854.02940503282},"targetPosition":{"x":34159.46631074567,"y":36943.90480054122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"35ecc05e-c241-4661-aef7-cf9cd3a0718f","savedPayload":{"position":{"x":34159.46631074567,"y":36943.90480054122},"targetPosition":{"x":34001.766047761084,"y":37039.97803300746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"tradingEngine.current.position.positionCounters.periods.value > 2","id":"947fbe1d-2d73-413c-a66a-afc1d9fd5ea8","savedPayload":{"position":{"x":34316.036338068894,"y":37192.78515644687},"targetPosition":{"x":34168.511242672015,"y":37118.30711907127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"73661d44-6a9d-4841-8f45-7240649a5d6d","savedPayload":{"position":{"x":34168.511242672015,"y":37118.30711907127},"targetPosition":{"x":34001.766047761084,"y":37039.97803300746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1c59dd62-57a7-4ef6-9197-7b6fd102a06b","savedPayload":{"position":{"x":34001.766047761084,"y":37039.97803300746},"targetPosition":{"x":33786.852959651136,"y":37051.66545342473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"541feb51-68a3-4326-bd16-c7a91ec68cd2","savedPayload":{"position":{"x":34558.86000855998,"y":37936.25622174628},"targetPosition":{"x":34281.86530349304,"y":37755.09717019455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"ba7462a2-9b77-4628-8be8-0700e49ed2a8","savedPayload":{"position":{"x":34281.86530349304,"y":37755.09717019455},"targetPosition":{"x":33880.96703581228,"y":37734.361884394995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 * 0.97 < \ntradingEngine.current.position.entryTargetRate.value * 0.97) \n{chart.at01hs.base7EMA.ema7 * 0.97} else \n{tradingEngine.current.position.entryTargetRate.value * 0.97}","id":"f0ba9068-9fd8-46c1-89c6-c51c2127fad3","savedPayload":{"position":{"x":34629.55029910143,"y":37441.25585959138},"targetPosition":{"x":34612.07444982102,"y":37772.08829382183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"3d7e602e-ca81-4d0f-808c-0b6987a224d4","savedPayload":{"position":{"x":23705.94916200458,"y":35342.994120481075},"targetPosition":{"x":23546.318463678464,"y":34985.00094713607},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3cf490f8-fb04-4a14-aab8-1215009b40bd","savedPayload":{"position":{"x":23546.318463678464,"y":34985.00094713607},"targetPosition":{"x":23386.373002235283,"y":34626.966483585435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"399b9981-c283-4140-8600-904bd8fae636","savedPayload":{"position":{"x":23386.373002235283,"y":34626.966483585435},"targetPosition":{"x":23226.193098227275,"y":34268.84837655364},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"19a0d710-315f-43b8-b1f0-8aca0f21d63e","savedPayload":{"position":{"x":34944.082867335695,"y":37889.38947465289},"targetPosition":{"x":34612.07444982102,"y":37772.08829382183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"6407cb18-e862-47c7-8c3d-2ac857597595","savedPayload":{"position":{"x":34692.61826333641,"y":38854.466829226236},"targetPosition":{"x":34402.26394169381,"y":38695.45861486664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3218784f-7ac6-4f71-89ca-c13de6fb1e08","savedPayload":{"position":{"x":34402.26394169381,"y":38695.45861486664},"targetPosition":{"x":34111.46614868214,"y":38536.26765658885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"31096ee3-5cb2-437c-911c-b8dac600eeda","savedPayload":{"position":{"x":34497.06440979869,"y":39075.12154948603},"targetPosition":{"x":34304.425084259856,"y":38805.906335077256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4a59f893-ce98-40a8-a456-14758c0e3b72","savedPayload":{"position":{"x":34304.425084259856,"y":38805.906335077256},"targetPosition":{"x":34111.46614868214,"y":38536.26765658885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < tradingEngine.current.position.entryTargetRate.value * 0.99","id":"39e213d0-6871-4fcc-8ba7-6485b15b8010","savedPayload":{"position":{"x":34225.27240372275,"y":39189.035665913114},"targetPosition":{"x":34168.46129868755,"y":38862.90111324397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a2c15f0e-3edb-4849-862a-dce24f143be6","savedPayload":{"position":{"x":34168.46129868755,"y":38862.90111324397},"targetPosition":{"x":34111.46614868214,"y":38536.26765658885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"5d4916ab-3a59-42cd-ad42-2c9be833bb36","savedPayload":{"position":{"x":33931.66827278826,"y":39173.796470028574},"targetPosition":{"x":34021.58321866217,"y":38855.2728558001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e90a9e18-c05e-4c34-8931-f934311d8be4","savedPayload":{"position":{"x":34021.58321866217,"y":38855.2728558001},"targetPosition":{"x":34111.46614868214,"y":38536.26765658885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"1578e195-a319-4748-8204-f90d816fc4ae","savedPayload":{"position":{"x":33673.41109977703,"y":39032.48523986847},"targetPosition":{"x":33892.36989605839,"y":38784.55117896963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b48541a5-46c2-4e7e-a072-07d94c1b2ac9","savedPayload":{"position":{"x":33892.36989605839,"y":38784.55117896963},"targetPosition":{"x":34111.46614868214,"y":38536.26765658885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Down && NOT Side","code":"chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Down\" && chart.at01hs.bollingerSubChannel.slope != \"Side\"","id":"fb1f280f-632e-4097-b5da-dfdbacd169c3","savedPayload":{"position":{"x":33502.30466586099,"y":38793.10941068387},"targetPosition":{"x":33806.749716906175,"y":38664.81766875468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0000df02-7c31-423f-a377-ee7a54e745b1","savedPayload":{"position":{"x":33806.749716906175,"y":38664.81766875468},"targetPosition":{"x":34111.46614868214,"y":38536.26765658885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a9ea4174-771b-4b50-8376-05494437d912","savedPayload":{"position":{"x":34111.46614868214,"y":38536.26765658885},"targetPosition":{"x":34128.77956283753,"y":38189.696602796685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"730610f1-2311-4486-8905-37c9c001d766","savedPayload":{"position":{"x":34595.22607962622,"y":38103.090539815195},"targetPosition":{"x":34612.07444982102,"y":37772.08829382183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"1a7c350c-eb3a-4d8a-af57-68aabda6fea7"}}}],"announcements":[],"id":"f631120e-4f0f-41f4-85b3-74778c8060c0","savedPayload":{"position":{"x":34612.07444982102,"y":37772.08829382183},"targetPosition":{"x":34281.87351782353,"y":37755.09764926559},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < \ntradingEngine.current.position.entryTargetRate.value * 0.97) \n{chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else \n{tradingEngine.current.position.entryTargetRate.value * 0.97}","id":"e0cee676-0034-4512-9ed3-b4f61df739bf","savedPayload":{"position":{"x":35187.88878987141,"y":37542.52720685088},"targetPosition":{"x":34941.98319239022,"y":37764.44388752519},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"2cd48b45-e3f4-4a76-8bf7-19470c990e1e","savedPayload":{"position":{"x":35626.66267286999,"y":37844.12077715908},"targetPosition":{"x":35392.67081661859,"y":38077.9548235887},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"17193755-5b37-4ee7-82ca-a14db05dbd30","savedPayload":{"position":{"x":35392.67081661859,"y":38077.9548235887},"targetPosition":{"x":35158.44985087774,"y":38312.14616612942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"b8cb24ca-a2ce-4ae6-b5d9-63471af0095f","savedPayload":{"position":{"x":35798.116679165236,"y":38141.01070534674},"targetPosition":{"x":35478.47126217157,"y":38226.5073952743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4facbae1-8244-47d9-bf81-2ebf58477c34","savedPayload":{"position":{"x":35478.47126217157,"y":38226.5073952743},"targetPosition":{"x":35158.44985087774,"y":38312.14616612942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"4e3f128a-a12a-444d-b706-c54a910da68b","savedPayload":{"position":{"x":35798.190132030686,"y":38483.15385381003},"targetPosition":{"x":35478.51603348756,"y":38397.66877385761},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e2460f9b-c5ab-4502-9b39-38159b55534b","savedPayload":{"position":{"x":35478.51603348756,"y":38397.66877385761},"targetPosition":{"x":35158.44985087774,"y":38312.14616612942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"2a370595-33f8-4cf8-af80-e7871edcf8fa","savedPayload":{"position":{"x":35626.99391182129,"y":38779.99384828732},"targetPosition":{"x":35392.87738402714,"y":38546.1645797514},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"133e251e-2ac5-4ebd-8f4c-73eb8c8ba7e1","savedPayload":{"position":{"x":35392.87738402714,"y":38546.1645797514},"targetPosition":{"x":35158.44985087774,"y":38312.14616612942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Down && NOT Side or Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Down\" && chart.at01hs.bollingerSubChannel.slope != \"Side\" && chart.at01hs.bollingerSubChannel.slope != \"Gentle\"","id":"55435ac8-859e-4665-842c-f6603923589e","savedPayload":{"position":{"x":35330.405820742206,"y":38951.50481096943},"targetPosition":{"x":35244.54164776578,"y":38631.94611932182},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ee4dad2e-77dd-4f45-9847-c3c2e563d015","savedPayload":{"position":{"x":35244.54164776578,"y":38631.94611932182},"targetPosition":{"x":35158.44985087774,"y":38312.14616612942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"42bd767a-7a9e-40dc-9973-ad6e2411e769","savedPayload":{"position":{"x":35158.44985087774,"y":38312.14616612942},"targetPosition":{"x":34822.561690031056,"y":38222.56561970894},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"f9f58805-ee92-40ac-be13-6d242a6a476f","savedPayload":{"position":{"x":35360.63260381555,"y":37734.72113402953},"targetPosition":{"x":34941.98319239022,"y":37764.44388752519},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"1a7c350c-eb3a-4d8a-af57-68aabda6fea7"}}},{"type":"Move To Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","code":"chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"32c1fa99-99b6-4bdd-ad3d-fcb3858413fe","savedPayload":{"position":{"x":35469.17863056905,"y":38995.20906890397},"targetPosition":{"x":35149.349280353,"y":38909.11032116829},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8f146719-384b-4e16-a0b3-c7501eeca1dd","savedPayload":{"position":{"x":35149.349280353,"y":38909.11032116829},"targetPosition":{"x":34829.79696057214,"y":38823.24476210246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"b1d2c06e-3c41-474c-b241-62639db26336","savedPayload":{"position":{"x":35160.704555673,"y":39396.67843036975},"targetPosition":{"x":34995.20879228883,"y":39109.9486372078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"655cd860-35be-4db4-8786-758133ade2f8","savedPayload":{"position":{"x":34995.20879228883,"y":39109.9486372078},"targetPosition":{"x":34829.79696057214,"y":38823.24476210246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"7b14d5ba-d792-4d0e-9c33-aae6abc015dd","savedPayload":{"position":{"x":34659.32583434473,"y":39462.76972747883},"targetPosition":{"x":34744.41359312307,"y":39142.95238873636},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"41486047-0d08-4227-8d03-3e844c75a3ea","savedPayload":{"position":{"x":34744.41359312307,"y":39142.95238873636},"targetPosition":{"x":34829.79696057214,"y":38823.24476210246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"78031caf-041a-4f69-aea1-f9666aef959d","savedPayload":{"position":{"x":34829.79696057214,"y":38823.24476210246},"targetPosition":{"x":34656.479464203265,"y":38522.56301817512},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"ad7504d5-49ec-4fed-bc74-44f5f398def7","savedPayload":{"position":{"x":35163.560365361984,"y":38011.071296686016},"targetPosition":{"x":34941.98319239022,"y":37764.44388752519},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"f631120e-4f0f-41f4-85b3-74778c8060c0"}}}],"announcements":[],"id":"bee5a88b-489f-48ce-be58-4531f815462a","savedPayload":{"position":{"x":34941.98319239022,"y":37764.44388752519},"targetPosition":{"x":34612.07444982102,"y":37772.08829382183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 * 0.8 < \ntradingEngine.current.position.entryTargetRate.value * 0.97) \n{chart.at01hs.base7EMA.ema7 * 0.8} else \n{tradingEngine.current.position.takeProfit.value}","id":"6e3648cc-0d59-428a-acc2-afcf2a6e86c4","savedPayload":{"position":{"x":35431.47369841542,"y":37515.706607944216},"targetPosition":{"x":35250.84455458904,"y":37793.344800546955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move To Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"d68720e4-049f-46b9-b412-f0378573a413","savedPayload":{"position":{"x":22944.57902723109,"y":36362.9365972743},"targetPosition":{"x":22698.99737050578,"y":36057.03581787049},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"609ce0eb-a9ec-495a-9f99-cd5adeaa5824","savedPayload":{"position":{"x":22698.99737050578,"y":36057.03581787049},"targetPosition":{"x":22456.80097538035,"y":35755.57583676471},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"49efa579-e07f-432e-ab03-458909afe80a","savedPayload":{"position":{"x":22372.39816722826,"y":36536.96884433879},"targetPosition":{"x":22414.624042462376,"y":36146.3906865363},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"70e024f2-8dc4-443b-b7d0-8d979bd7879a","savedPayload":{"position":{"x":22414.624042462376,"y":36146.3906865363},"targetPosition":{"x":22456.80097538035,"y":35755.57583676471},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Up || Side, Gentle or Medium","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Up\" || chart.at01hs.bollingerSubChannel.slope === \"Side\" || chart.at01hs.bollingerSubChannel.slope === \"Gentle\" || chart.at01hs.bollingerSubChannel.slope === \"Medium\"","id":"199cc33c-0e13-4de9-910a-c9d356e9d0d6","savedPayload":{"position":{"x":21844.96350507823,"y":36250.73602517257},"targetPosition":{"x":22150.86060576204,"y":36003.24709931012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3621eed7-d3f5-4350-8e53-6eb76377b10a","savedPayload":{"position":{"x":22150.86060576204,"y":36003.24709931012},"targetPosition":{"x":22456.80097538035,"y":35755.57583676471},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dede1ba7-70c6-417a-a54a-14177afbd413","savedPayload":{"position":{"x":22456.80097538035,"y":35755.57583676471},"targetPosition":{"x":22506.85372221064,"y":35348.14843852632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"76a5126e-7d21-4160-b25a-08631b6d519a","savedPayload":{"position":{"x":35528.77390799901,"y":37973.52776614148},"targetPosition":{"x":35250.84455458904,"y":37793.344800546955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"f631120e-4f0f-41f4-85b3-74778c8060c0"}}}],"announcements":[],"id":"1a7c350c-eb3a-4d8a-af57-68aabda6fea7","savedPayload":{"position":{"x":35250.84455458904,"y":37793.344800546955},"targetPosition":{"x":34941.98319239022,"y":37764.44388752519},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a3dd2636-1b11-4d0a-8a32-945e790a97e5","savedPayload":{"position":{"x":33815.7250957118,"y":37842.653777370695},"targetPosition":{"x":33485.005907242856,"y":37825.51031282612},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"6af83cfb-a8f9-4313-8013-495ed37ee6f5","savedPayload":{"position":{"x":33485.005907242856,"y":37825.51031282612},"targetPosition":{"x":32895.746662519596,"y":38125.60770117078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.candle.close.value","id":"39714970-7a27-412a-93ee-86e793262cc2","savedPayload":{"position":{"x":34324.758952651624,"y":37536.789227982015},"targetPosition":{"x":34116.44296463285,"y":37793.18687614627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"587f4120-6e47-4a59-ae01-edee731eb2fe","savedPayload":{"position":{"x":34116.44296463285,"y":37793.18687614627},"targetPosition":{"x":33858.07537375391,"y":38111.2015052983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInQuotedAsset":{"type":"Target Size In Quoted Asset","name":"New Target Size In Quoted Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.strategyOpenStage.stageQuotedAsset.sizeFilled.value","id":"366084ff-7027-403c-a20a-40d9308cd3ed","savedPayload":{"position":{"x":34588.28415170207,"y":38226.97070261487},"targetPosition":{"x":34261.221499522275,"y":38175.13884196283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e9bb0180-bce1-440e-9e5e-5d6ddf63e163","savedPayload":{"position":{"x":34261.221499522275,"y":38175.13884196283},"targetPosition":{"x":33858.07537375391,"y":38111.2015052983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2fb1e698-028f-43a5-a380-024e4607f5dc","savedPayload":{"position":{"x":33858.150229398634,"y":38111.24347244092},"targetPosition":{"x":33548.958449130594,"y":38229.26878169047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeExecution":{"type":"Close Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[{"type":"Market Buy Order","name":"Quick Exit","config":"{\n\"percentageOfAlgorithmSize\": 100,\n\"spawnMultipleOrders\": false\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"9cf7ec1d-7cec-4b00-8938-2724ab31308f","savedPayload":{"position":{"x":32565.39091621992,"y":38691.4351526428},"targetPosition":{"x":32524.81513067185,"y":38499.25562076935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ee800c76-ec26-4156-9e65-c8a8ba09b00a","savedPayload":{"position":{"x":32524.81513067185,"y":38499.25562076935},"targetPosition":{"x":32484.13379953603,"y":38306.40214173435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d2660921-d3f8-4b4a-b5cd-d982f6863fdf","savedPayload":{"position":{"x":32484.13379953603,"y":38306.40214173435},"targetPosition":{"x":32434.60537853773,"y":38071.867601213744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"19b0ab5e-f2ca-47f9-98fe-b43917714700","savedPayload":{"position":{"x":34637.537505743196,"y":39110.60913985431},"targetPosition":{"x":34380.59650306762,"y":38902.58498958786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3b0ef4ee-e948-43aa-a2f6-db556880d6df","savedPayload":{"position":{"x":34380.59650306762,"y":38902.58498958786},"targetPosition":{"x":34123.518952723934,"y":38694.46739418538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Buy Order #1","id":"7d6c3ac9-4869-4ff3-a9f2-2a6f8a31ccf3"}}}],"marketSellOrders":[],"limitBuyOrders":[],"limitSellOrders":[],"id":"490a2173-4a73-4822-a292-c45afc643262","savedPayload":{"position":{"x":34123.518952723934,"y":38694.46739418538},"targetPosition":{"x":33806.16514496026,"y":38437.581308920795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"525d3607-b2b2-4345-af7c-fdde1b649060","savedPayload":{"position":{"x":33806.23472480797,"y":38437.643700462024},"targetPosition":{"x":33548.958449130594,"y":38229.26878169047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"0d1db0bb-2e8d-4289-93cd-b2a5e2d6b77c","savedPayload":{"position":{"x":33548.958449130594,"y":38229.26878169047},"targetPosition":{"x":32895.746662519596,"y":38125.60770117078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f1787887-41aa-41d4-80c5-34db452cd148","savedPayload":{"position":{"x":32895.746662519596,"y":38125.60770117078},"targetPosition":{"x":32428,"y":38593.35190918473},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3313017d-fdce-481b-9679-fe8e4f67cd45","savedPayload":{"position":{"x":39642,"y":18707.601909184727},"targetPosition":{"x":39642,"y":18707.601909184727},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}} \ No newline at end of file diff --git a/Includes/Trading-Systems/Sparta-WHB-BTC-USDT.json b/Includes/Trading-Systems/Sparta-WHB-BTC-USDT.json new file mode 100644 index 000000000..06d62a744 --- /dev/null +++ b/Includes/Trading-Systems/Sparta-WHB-BTC-USDT.json @@ -0,0 +1 @@ +{"type":"Trading System","name":"WHB v2","config":"{ \n\"codeName\": \"Sparta-WHB-BTC-USDT\"\n}","tradingStrategies":[{"type":"Trading Strategy","name":"Steep","triggerStage":{"type":"Trigger Stage","triggerOn":{"type":"Trigger On Event","situations":[{"type":"Situation","name":"Steep","conditions":[{"type":"Condition","name":"3 Closes Below MA","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage && \nchart.at01hs.candle.previous.close < chart.at01hs.bollingerBand.previous.movingAverage && \nchart.at01hs.candle.previous.previous.close < chart.at01hs.bollingerBand.previous.previous.movingAverage","id":"123b1af6-9639-4b6d-a4c3-7a8a9287169c","savedPayload":{"position":{"x":40169.8075224048,"y":37093.86229409448},"targetPosition":{"x":40354.74975544049,"y":37129.84758930669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"427da1e1-cc4a-4c78-88f6-c254d87cc88f","savedPayload":{"position":{"x":40354.74975544049,"y":37129.84758930669},"targetPosition":{"x":40723.50848675032,"y":37201.25051694716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Breakdown","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation","id":"1b9e755e-eefe-4b0d-addd-1e19b6a597b6","savedPayload":{"position":{"x":40240.154834427885,"y":36910.53675762087},"targetPosition":{"x":40401.568336372424,"y":37007.49315306863},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"55bf7721-7fb2-42f0-8a3c-c2b97e278a29","savedPayload":{"position":{"x":40401.568336372424,"y":37007.49315306863},"targetPosition":{"x":40723.50848675032,"y":37201.25051694716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Down","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Down\"","id":"e8db5fac-2f00-47fe-ac57-dc93ad15f2b5","savedPayload":{"position":{"x":40368.55178313948,"y":36762.30864654639},"targetPosition":{"x":40487.11436226741,"y":36909.035629578386},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"11e00b31-e7eb-4fe9-b006-dcd640dbbd3b","savedPayload":{"position":{"x":40487.11436226741,"y":36909.035629578386},"targetPosition":{"x":40723.50848675032,"y":37201.25051694716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Deviation > 200","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerBand.deviation > 200","id":"7671ca91-4b4c-40c5-b0c2-199169b013e8","savedPayload":{"position":{"x":40540.24271052489,"y":36667.14433492657},"targetPosition":{"x":40601.502104536274,"y":36845.41065742939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"dd938286-61b3-41e4-bfbb-db34971ffa47","savedPayload":{"position":{"x":40601.502104536274,"y":36845.41065742939},"targetPosition":{"x":40723.50848675032,"y":37201.25051694716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Candle Size < 750","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.max - chart.at01hs.candle.min < 750","id":"19b7edeb-b180-429f-9adf-61bf47262033","savedPayload":{"position":{"x":40733.77112610069,"y":36636.82425336213},"targetPosition":{"x":40730.21857900794,"y":36825.10082784779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8f94ab97-1574-4136-9404-b66dfc1e3b9f","savedPayload":{"position":{"x":40730.21857900794,"y":36825.10082784779},"targetPosition":{"x":40723.50848675032,"y":37201.25051694716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Deviation < 1000","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerBand.deviation < 1000","id":"0aa38939-f2ef-4c2b-bfc1-a45bda2ac50e","savedPayload":{"position":{"x":40925.414106257434,"y":36674.27233109751},"targetPosition":{"x":40858.11228245835,"y":36850.11462638049},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0b2efc27-4aa5-472c-bb7a-73fc3796cc0e","savedPayload":{"position":{"x":40858.11228245835,"y":36850.11462638049},"targetPosition":{"x":40723.50848675032,"y":37201.25051694716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Not Completly Oversold","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.percentageBandwidth.movingAverage >= 30 || \nchart.at03hs.percentageBandwidth.movingAverage >= 30 || \nchart.at04hs.percentageBandwidth.movingAverage >= 30 || \nchart.at06hs.percentageBandwidth.movingAverage >= 30 || \nchart.at08hs.percentageBandwidth.movingAverage >= 30","id":"8f02c79c-1807-42ce-a9e8-e707ec73e9e4","savedPayload":{"position":{"x":41094.08553768465,"y":36775.48677846888},"targetPosition":{"x":40970.080804928184,"y":36917.42906461946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0ff24392-a128-4d59-8049-301e99ce941e","savedPayload":{"position":{"x":40970.080804928184,"y":36917.42906461946},"targetPosition":{"x":40723.50848675032,"y":37201.25051694716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Slope Not Extreme, or...","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope != \"Extreme\" || \n(chart.at01hs.bollingerSubChannel.period <= 6 && \nchart.at08hs.bollingerChannel.direction === \"Down\" && \nchart.at06hs.bollingerChannel.direction === \"Down\" && \nchart.at04hs.bollingerChannel.direction === \"Down\" && \nchart.at02hs.bollingerSubChannel.slope === (\"Extreme\" || \"Steep\"))","id":"231acfc1-6010-4d84-822f-056d1f3f9dc8","savedPayload":{"position":{"x":41217.45596352142,"y":36927.27014148732},"targetPosition":{"x":41052.621172838706,"y":37018.766200280246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"da235bf3-976c-4832-a565-98a6bb13236d","savedPayload":{"position":{"x":41052.621172838706,"y":37018.766200280246},"targetPosition":{"x":40723.50848675032,"y":37201.25051694716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c94fdd47-c451-4c27-ad56-82b346d60f87","savedPayload":{"position":{"x":40723.50848675032,"y":37201.25051694716},"targetPosition":{"x":40785.51472169514,"y":37594.23835094386},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"f5bf32a8-54eb-42ef-bc75-86caf1fd16a2","savedPayload":{"position":{"x":40785.45394800889,"y":37593.50699139222},"targetPosition":{"x":40844.31478491572,"y":37964.95046469594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Close Above MA","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close > chart.at01hs.bollingerBand.movingAverage","id":"bd638ed9-46fa-42d5-9dfd-5ff8921f83cd","savedPayload":{"position":{"x":41741.54348161399,"y":36730.41307630183},"targetPosition":{"x":41520.78631905033,"y":37034.62073568708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e5fbd2ee-9cef-4887-a270-8fb307dff36d","savedPayload":{"position":{"x":41520.78631905033,"y":37034.62073568708},"targetPosition":{"x":41298.94065653882,"y":37338.687977930305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"faabf32b-db1f-49d2-8a74-39e9f653867c","savedPayload":{"position":{"x":41298.94065653882,"y":37338.687977930305},"targetPosition":{"x":41065.07563346326,"y":37660.686171994676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"d33d5a40-93e6-4a51-9bf0-389702d7c57c","savedPayload":{"position":{"x":41065.24989927132,"y":37660.5888384586},"targetPosition":{"x":40844.31478491572,"y":37964.95046469594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","situations":[{"type":"Situation","name":"Steep","conditions":[{"type":"Condition","name":"3 Closes Below MA","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage && \nchart.at01hs.candle.previous.close < chart.at01hs.bollingerBand.previous.movingAverage && \nchart.at01hs.candle.previous.previous.close < chart.at01hs.bollingerBand.previous.previous.movingAverage","id":"b5967d93-adf2-4a9e-9f1f-8ddb83c11e89","savedPayload":{"position":{"x":41880.73004858463,"y":36979.163857401145},"targetPosition":{"x":41844.27508976818,"y":37259.443705601145},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"946e10ee-70f9-4489-8ac9-c523116f997d","savedPayload":{"position":{"x":41844.27508976818,"y":37259.443705601145},"targetPosition":{"x":41772.01566698833,"y":37817.600246793205},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Breakdown","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation","id":"35e54c04-f05e-4790-9431-da49c89895a4","savedPayload":{"position":{"x":42112.72758820105,"y":37042.98438757909},"targetPosition":{"x":41998.80993514807,"y":37301.77806882583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"299cc453-ffa7-4bcc-84be-fcf9187e0188","savedPayload":{"position":{"x":41998.80993514807,"y":37301.77806882583},"targetPosition":{"x":41772.01566698833,"y":37817.600246793205},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Down","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Down\"","id":"91d65f47-922b-4e28-874a-7ccb83389509","savedPayload":{"position":{"x":42316.176936868134,"y":37170.22992583838},"targetPosition":{"x":42134.26807251537,"y":37386.35544621309},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"74da641c-243d-4e2c-86e7-b215d804796d","savedPayload":{"position":{"x":42134.26807251537,"y":37386.35544621309},"targetPosition":{"x":41772.01566698833,"y":37817.600246793205},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Deviation > 200","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerBand.deviation > 200","id":"8616a334-50d8-437a-9631-96e1b6611f77","savedPayload":{"position":{"x":42476.71744249638,"y":37350.68915612574},"targetPosition":{"x":42241.316228478114,"y":37506.52654030694},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"98acfea3-5f57-4dd2-ad9b-f13643c04b3a","savedPayload":{"position":{"x":42241.316228478114,"y":37506.52654030694},"targetPosition":{"x":41772.01566698833,"y":37817.600246793205},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Candle Size < 750","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.max - chart.at01hs.candle.min < 750","id":"bc3a1d72-8424-40e4-bf3b-e9aec5365cfe","savedPayload":{"position":{"x":42579.77531079197,"y":37567.76836502869},"targetPosition":{"x":42310.15763209682,"y":37651.33816995484},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"4219ab16-929b-4489-80f8-2e2970e170dd","savedPayload":{"position":{"x":42310.15763209682,"y":37651.33816995484},"targetPosition":{"x":41772.01566698833,"y":37817.600246793205},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Deviation < 1000","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerBand.deviation < 1000","id":"7ef4294e-31a6-4a56-b4cc-ed4a3f205bb2","savedPayload":{"position":{"x":42617.55546533722,"y":37805.1356315629},"targetPosition":{"x":42335.63853803927,"y":37809.570841767796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7bacba88-87bc-491a-95fa-4024d49438f5","savedPayload":{"position":{"x":42335.63853803927,"y":37809.570841767796},"targetPosition":{"x":41772.01566698833,"y":37817.600246793205},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Not Completly Oversold","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.percentageBandwidth.movingAverage >= 30 || \nchart.at03hs.percentageBandwidth.movingAverage >= 30 || \nchart.at04hs.percentageBandwidth.movingAverage >= 30 || \nchart.at06hs.percentageBandwidth.movingAverage >= 30 || \nchart.at08hs.percentageBandwidth.movingAverage >= 30","id":"d717997d-c2f4-4332-abd3-cf4a0f25cb65","savedPayload":{"position":{"x":42586.10302031499,"y":38043.466582524146},"targetPosition":{"x":42314.45854353105,"y":37968.08471946434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"63558a06-3dab-46c6-b361-2d55aca38eea","savedPayload":{"position":{"x":42314.45854353105,"y":37968.08471946434},"targetPosition":{"x":41772.01566698833,"y":37817.600246793205},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Slope Not Extreme, or...","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope != \"Extreme\" || \n(chart.at01hs.bollingerSubChannel.period <= 6 && \nchart.at08hs.bollingerChannel.direction === \"Down\" && \nchart.at06hs.bollingerChannel.direction === \"Down\" && \nchart.at04hs.bollingerChannel.direction === \"Down\" && \nchart.at02hs.bollingerSubChannel.slope === (\"Extreme\" || \"Steep\"))","id":"e8563aee-5cd1-4953-a1c4-890a47ef8af3","savedPayload":{"position":{"x":42488.84294481093,"y":38262.613078829534},"targetPosition":{"x":42249.84050813593,"y":38114.675991760385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d900ad86-c048-45d3-9b26-dc8665b8aba8","savedPayload":{"position":{"x":42249.84050813593,"y":38114.675991760385},"targetPosition":{"x":41772.01566698833,"y":37817.600246793205},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"8H Deviation","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at08hs.bollingerBand.deviation < 1575","id":"84f24347-1102-48e1-9d13-b7ae0f043e5e","savedPayload":{"position":{"x":42335.21631213685,"y":38447.29122537123},"targetPosition":{"x":42147.31903875189,"y":38237.26000439606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"182deaef-3884-4ddd-b08b-2a554a130832","savedPayload":{"position":{"x":42147.31903875189,"y":38237.26000439606},"targetPosition":{"x":41772.01566698833,"y":37817.600246793205},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Below Top Band","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.candle.open < \nchart.at24hs.bollingerBand.movingAverage + chart.at24hs.bollingerBand.deviation || \nchart.at24hs.candle.close < \nchart.at24hs.bollingerBand.movingAverage + chart.at24hs.bollingerBand.deviation","id":"7ea70416-894f-4fae-ad62-db36e510519f","savedPayload":{"position":{"x":42133.77622424048,"y":38580.343388359324},"targetPosition":{"x":42012.97337692055,"y":38325.701846332515},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"eb6577c9-7823-490c-9a25-81165b4d4f6b","savedPayload":{"position":{"x":42012.97337692055,"y":38325.701846332515},"targetPosition":{"x":41772.01566698833,"y":37817.600246793205},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a8a86bab-322e-4f20-8f2d-74671e8d2b7e","savedPayload":{"position":{"x":41772.01566698833,"y":37817.600246793205},"targetPosition":{"x":41214.702702462295,"y":37905.855099899},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"97e60ce9-228e-459d-b2cc-2ba447266e22","savedPayload":{"position":{"x":41215.527214356975,"y":37905.86824152696},"targetPosition":{"x":40844.31478491572,"y":37964.95046469594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"166df39d-b70e-4061-9557-a6bb41a74bea","savedPayload":{"position":{"x":40844.31478491572,"y":37964.95046469594},"targetPosition":{"x":40402.88918801833,"y":38572.9995449057},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"openStage":{"type":"Open Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"My Formula","code":"tradingEngine.current.episode.candle.close.value","id":"4f34635c-d4e2-47c1-8c75-cd18d577fe33","savedPayload":{"position":{"x":41535.19286267245,"y":37287.31093913026},"targetPosition":{"x":41456.651084597645,"y":37655.364730774476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9f6351ce-0ca2-44f2-9e85-e9365265131b","savedPayload":{"position":{"x":41456.651084597645,"y":37655.364730774476},"targetPosition":{"x":41369.73823088826,"y":38061.57622607938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInBaseAsset":{"type":"Target Size In Base Asset","name":"New Target Size In Base Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.episodeBaseAsset.balance.value","id":"492cee3d-1709-41c5-bfd8-e700a3fdf3da","savedPayload":{"position":{"x":42123.76485988645,"y":37816.72104543801},"targetPosition":{"x":41766.62292420839,"y":37932.59834565605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"df940eb5-ea9b-485d-a03a-27491d496fc3","savedPayload":{"position":{"x":41766.62292420839,"y":37932.59834565605},"targetPosition":{"x":41369.73823088826,"y":38061.57622607938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"dbfab28a-d209-4896-96bb-05a26db8b73f","savedPayload":{"position":{"x":41369.683871680296,"y":38061.463425676615},"targetPosition":{"x":41117.78484728617,"y":38340.718505703066},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[],"marketSellOrders":[{"type":"Market Sell Order","name":"Quick Entry","config":"{\n\"percentageOfAlgorithmSize\": 100\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"cc515fe8-2957-4ef9-aef8-e65512f6ebf0","savedPayload":{"position":{"x":43691.42095504396,"y":38886.56026224492},"targetPosition":{"x":43323.793518405044,"y":38808.32038393131},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"be9e2b59-adac-4ec8-8b16-73c9c1367eff","savedPayload":{"position":{"x":43323.793518405044,"y":38808.32038393131},"targetPosition":{"x":42956.01096557383,"y":38730.432020537824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"95614ecb-8d7a-4a56-8ca8-3a51ec209f45","savedPayload":{"position":{"x":42956.01096557383,"y":38730.432020537824},"targetPosition":{"x":42588.38574394773,"y":38652.10973934637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"938d2ee7-fd7b-409a-8ba3-2e10898ecf2c","savedPayload":{"position":{"x":42588.38574394773,"y":38652.10973934637},"targetPosition":{"x":42220.95616410503,"y":38574.33534141158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c54cb995-2b02-426e-bfe3-dea00d502d56","savedPayload":{"position":{"x":42220.95616410503,"y":38574.33534141158},"targetPosition":{"x":41853.078763080055,"y":38496.44228748891},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Sell Order #1","id":"8e404329-d41f-41e0-ad5a-c84ee1fa2604"}}}],"limitBuyOrders":[],"limitSellOrders":[],"id":"f3ccceff-a347-4100-b429-0788d0035868","savedPayload":{"position":{"x":41853.078763080055,"y":38496.44228748891},"targetPosition":{"x":41485.37928511669,"y":38418.462840985965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"381d75d8-f6de-4841-b6a3-fc3c01884438","savedPayload":{"position":{"x":41485.401620513294,"y":38418.432414744166},"targetPosition":{"x":41117.78484728617,"y":38340.718505703066},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"262e5a8c-cb38-43be-840d-a41ee5f4665f","savedPayload":{"position":{"x":41117.78484728617,"y":38340.718505703066},"targetPosition":{"x":40402.88918801833,"y":38572.9995449057},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","managedStopLoss":{"type":"Managed Stop Loss","name":"New Managed Stop Loss","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.entryTargetRate.value * 1.03","id":"098e918d-2dee-44f7-97bd-9d3a9ef0458a","savedPayload":{"position":{"x":42179.058536106284,"y":38388.01433204641},"targetPosition":{"x":41899.82124914966,"y":38640.035742895685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"shortcutKey":"q"}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Close Below 5%","code":"chart.at24hs.candlesProbability.begin > chart.at24hs.candlesProbability.begin","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < tradingEngine.current.position.entryTargetRate.value * 0.95","id":"96683629-b453-49a5-a871-94a0deb2a017","savedPayload":{"position":{"x":43415.343790775296,"y":37197.43248786455},"targetPosition":{"x":43057.080545446304,"y":37314.09909142476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c48e62b6-cdf5-4ee0-9872-6487a99d1861","savedPayload":{"position":{"x":43057.080545446304,"y":37314.09909142476},"targetPosition":{"x":42699.66715884864,"y":37430.617428216414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e502afa9-3ac9-4d7c-9a1c-02a66181c75c","savedPayload":{"position":{"x":42699.66715884864,"y":37430.617428216414},"targetPosition":{"x":42335.316905306885,"y":37549.44045820768},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"2ae990f4-51b6-47de-8cb4-3acd042c1218","savedPayload":{"position":{"x":42257.54071996908,"y":38756.955486523715},"targetPosition":{"x":41899.82124914966,"y":38640.035742895685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"92bc3860-4ffb-44e8-bd90-15b05113b3d2","savedPayload":{"position":{"x":41899.82124914966,"y":38640.035742895685},"targetPosition":{"x":41485.036399419,"y":38727.82470647262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"P1: Trailing 5.25% Above MA","formula":{"type":"Formula","code":"if (chart.at01hs.bollingerBand.movingAverage * 1.0525 < tradingEngine.current.position.stopLoss.value) \n{chart.at01hs.bollingerBand.movingAverage * 1.0525} \nelse {tradingEngine.current.position.stopLoss.value}","id":"6f65573a-c2ac-476a-9ca1-738971e3ff78","savedPayload":{"position":{"x":42635.75974721882,"y":38483.793407429934},"targetPosition":{"x":42268.058598779455,"y":38561.83805096063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"e29bf8a5-014c-4868-b50a-c4b79b2b2eb3","savedPayload":{"position":{"x":42268.058598779455,"y":38561.83805096063},"targetPosition":{"x":41899.67966240502,"y":38640.06598516617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"89593e32-77e8-4216-a351-64c852d06784","savedPayload":{"position":{"x":41485.59153953864,"y":38727.169590713565},"targetPosition":{"x":41117.660088646095,"y":38805.26035962731},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"managedTakeProfit":{"type":"Managed Take Profit","name":"New Managed Take Profit","phases":[{"type":"Phase","name":"P1: 60% of Rate","formula":{"type":"Formula","name":"New Formula","code":"chart.at01hs.bollingerBand.movingAverage * 0.6","id":"1766975c-17c8-477e-b2e5-cb6ff1c7ddd3","savedPayload":{"position":{"x":42020.331451891005,"y":39321.62771590818},"targetPosition":{"x":41652.53508403515,"y":39399.8218191846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"3H Oversold","javascriptCode":{"type":"Javascript Code","code":"chart.at03hs.percentageBandwidth.previous.movingAverage <= 10","id":"c3f076df-8b01-4a9a-ad60-9bf53433e4bf","savedPayload":{"position":{"x":43598.84941124794,"y":38868.7976480851},"targetPosition":{"x":43231.58688185795,"y":38789.80279904351},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"553fde3a-dcb6-41b2-89c8-ba278a2fd4e0","savedPayload":{"position":{"x":43231.58688185795,"y":38789.80279904351},"targetPosition":{"x":42864.33906405202,"y":38712.447957689474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fa198094-34dd-4f2e-8d57-002ca886ba71","savedPayload":{"position":{"x":42864.33906405202,"y":38712.447957689474},"targetPosition":{"x":42489.20631952055,"y":38632.436712436094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"3H Entering Oversold","javascriptCode":{"type":"Javascript Code","code":"chart.at03hs.percentageBandwidth.movingAverage <= 30","id":"f1452048-936e-4c93-a615-66ed6b18bd11","savedPayload":{"position":{"x":43168.4285448787,"y":39498.95149848953},"targetPosition":{"x":42888.97777894762,"y":39248.793118875445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d85e95b6-4108-40d6-9ed0-a382f8d5015a","savedPayload":{"position":{"x":42888.97777894762,"y":39248.793118875445},"targetPosition":{"x":42608.60202603521,"y":38996.743486641164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Up","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","id":"67baba53-16eb-4a64-b7ae-f8b2e999e710","savedPayload":{"position":{"x":42453.153470690886,"y":39731.965155871854},"targetPosition":{"x":42530.92005141341,"y":39364.6986358492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f3a53caf-c1d2-4786-869d-3e4ed1c9b71b","savedPayload":{"position":{"x":42530.92005141341,"y":39364.6986358492},"targetPosition":{"x":42608.60202603521,"y":38996.743486641164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"034c0358-0163-4448-9511-8e154f07226e","savedPayload":{"position":{"x":42608.60202603521,"y":38996.743486641164},"targetPosition":{"x":42489.20631952055,"y":38632.436712436094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"a2d912bb-6362-4505-91b6-8b726dd670c7","savedPayload":{"position":{"x":41536.18849575653,"y":39757.55476147205},"targetPosition":{"x":41652.53508403515,"y":39399.8218191846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"17a900a2-bcfd-4e3f-b115-baa06c2b077a","savedPayload":{"position":{"x":41652.53508403515,"y":39399.8218191846},"targetPosition":{"x":41368.856342758096,"y":39084.71191257917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"P2: 85% MA - 4 Deviations","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage * 0.85 - \nchart.at01hs.bollingerBand.deviation * 4 > 1) \n{chart.at01hs.bollingerBand.movingAverage * 0.85 - \nchart.at01hs.bollingerBand.deviation * 4} \nelse {tradingEngine.current.position.takeProfit.value}","id":"77e53622-cb53-410d-892f-cd474b28c29e","savedPayload":{"position":{"x":42271.78176269171,"y":39600.83923059944},"targetPosition":{"x":41904.04932898808,"y":39679.145138662825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"8H Oversold","conditions":[{"type":"Condition","name":"8H %B < 15","javascriptCode":{"type":"Javascript Code","code":"chart.at08hs.percentageBandwidth.previous.movingAverage <= 15","id":"5fbde96a-6337-465e-8304-ca3def2b6410","savedPayload":{"position":{"x":43020.182291283265,"y":28057.08769259744},"targetPosition":{"x":42733.844186623435,"y":27954.048906824664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b855a2c5-d616-4379-a31a-5e187f36bfc4","savedPayload":{"position":{"x":42733.844186623435,"y":27954.048906824664},"targetPosition":{"x":42376.82826924093,"y":27817.20013518818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"9bff4bf4-56cd-46ea-adf1-273dbe6c8299","savedPayload":{"position":{"x":42649.83201130573,"y":28430.792308761113},"targetPosition":{"x":42532.34073809054,"y":28166.50499472598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3dbea2ad-06be-4a8e-ba8e-7718704e1dbe","savedPayload":{"position":{"x":42532.34073809054,"y":28166.50499472598},"targetPosition":{"x":42376.82826924093,"y":27817.20013518818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Channel Period > 5","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.period >= 5","id":"f969b936-fd9a-45f2-bf59-4a18d691bc06","savedPayload":{"position":{"x":42071.50369032152,"y":28412.03351875343},"targetPosition":{"x":42175.356088481385,"y":28142.21750460694},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a8ac6da5-2f72-4c53-953a-4135624d6230","savedPayload":{"position":{"x":42175.356088481385,"y":28142.21750460694},"targetPosition":{"x":42376.82826924093,"y":27817.20013518818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"15b3728c-3b03-4a2b-9e05-6b7f772e6bf3","savedPayload":{"position":{"x":42376.647892021254,"y":27817.5068136667},"targetPosition":{"x":42141.4735875543,"y":27288.901282648552},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"24H Previous Up","conditions":[{"type":"Condition","name":"8H %B < 40","javascriptCode":{"type":"Javascript Code","code":"chart.at08hs.percentageBandwidth.movingAverage <= 40","id":"867dd327-29de-4b01-af95-8e18191a299a","savedPayload":{"position":{"x":42009.52553510572,"y":28397.61097152877},"targetPosition":{"x":41920.29513707274,"y":28122.674939768087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"eef8d507-fcf6-4efa-9fcb-9e58ccc0af36","savedPayload":{"position":{"x":41920.29513707274,"y":28122.674939768087},"targetPosition":{"x":41801.508564871976,"y":27756.88008812336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":" chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"f2fa836d-23f0-47cb-ba81-550089468d9a","savedPayload":{"position":{"x":41594.09593054929,"y":28395.628287923915},"targetPosition":{"x":41683.48044596616,"y":28120.315270572424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f75a18be-7ac8-4276-89bd-b3ff8ea5c69f","savedPayload":{"position":{"x":41683.48044596616,"y":28120.315270572424},"targetPosition":{"x":41801.508564871976,"y":27756.88008812336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Channel Period > 3","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.period >= 3","id":"5556b779-ef49-4a0b-ad26-1cdbfd6a01b8","savedPayload":{"position":{"x":41258.077728478376,"y":28151.823075721775},"targetPosition":{"x":41492.48750611241,"y":27981.443265474267},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a8762e6c-04a8-49dc-a6e7-de73f24bb295","savedPayload":{"position":{"x":41492.48750611241,"y":27981.443265474267},"targetPosition":{"x":41801.508564871976,"y":27756.88008812336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Previous Up","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.direction === \"Up\"","id":"42cf65fc-dc6a-4a45-9e14-1820db151b51","savedPayload":{"position":{"x":41125.69445503929,"y":27756.91467915855},"targetPosition":{"x":41414.56718760629,"y":27756.88469095893},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8137faa0-d59a-4eab-ad95-ca8d2250bbf6","savedPayload":{"position":{"x":41414.56718760629,"y":27756.88469095893},"targetPosition":{"x":41801.508564871976,"y":27756.88008812336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c688240e-5e54-456d-b219-16994f799907","savedPayload":{"position":{"x":41801.41216965176,"y":27756.995654614973},"targetPosition":{"x":42141.4735875543,"y":27288.901282648552},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"6e59e30a-bd6e-45ad-afb9-f1bab0a759d9","savedPayload":{"position":{"x":41787.65669234195,"y":40036.81575348864},"targetPosition":{"x":41904.04932898808,"y":39679.145138662825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"62709ed5-832a-43e8-8f74-29a359af7127","savedPayload":{"position":{"x":41904.04932898808,"y":39679.145138662825},"targetPosition":{"x":41652.55828794296,"y":39399.848757444284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"P3: 90% MA - 4 Deviations","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage * 0.9 - \nchart.at01hs.bollingerBand.deviation * 4 > 1) \n{chart.at01hs.bollingerBand.movingAverage * 0.9 - \nchart.at01hs.bollingerBand.deviation * 4} \nelse {tradingEngine.current.position.takeProfit.value}","id":"2d4907e5-54f3-4677-b191-15a85b95c64e","savedPayload":{"position":{"x":42523.28535749608,"y":39880.1450129694},"targetPosition":{"x":42155.45766439076,"y":39958.33263404494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"12H Previous Oversold","conditions":[{"type":"Condition","name":"12H Previous %B < 15","javascriptCode":{"type":"Javascript Code","code":"chart.at12hs.percentageBandwidth.previous.movingAverage <= 15","id":"7e9cefff-d831-4c3d-ba5a-42ef48397d0f","savedPayload":{"position":{"x":43472.26990133795,"y":28397.535497155954},"targetPosition":{"x":43202.77492439707,"y":28294.117115982957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d1d9d786-da85-4a7b-b5b5-3278dcdccfa8","savedPayload":{"position":{"x":43202.77492439707,"y":28294.117115982957},"targetPosition":{"x":42845.46877984926,"y":28157.037282170782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":" chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"512f3976-5707-426d-b6cf-63306b90b71a","savedPayload":{"position":{"x":43118.652076863946,"y":28770.613748386626},"targetPosition":{"x":43000.96706019627,"y":28506.263810204444},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1e09d719-39f0-4e66-afe9-e46f816c0b8a","savedPayload":{"position":{"x":43000.96706019627,"y":28506.263810204444},"targetPosition":{"x":42845.46877984926,"y":28157.037282170782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Channel Period > 15","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.period >= 15","id":"53159d45-d2aa-4faf-b9a8-b6643623a64b","savedPayload":{"position":{"x":42605.15445744102,"y":28784.132824114742},"targetPosition":{"x":42708.63125013675,"y":28514.050256978342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a3cf6274-a828-41f0-a293-8e79ecfe4e39","savedPayload":{"position":{"x":42708.63125013675,"y":28514.050256978342},"targetPosition":{"x":42845.46877984926,"y":28157.037282170782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7f47a98b-6d2e-40e4-8105-82a9fa301600","savedPayload":{"position":{"x":42845.015325860266,"y":28157.181596084458},"targetPosition":{"x":42609.73098562367,"y":27628.515341881284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"24H Previous Previous Up","conditions":[{"type":"Condition","name":"24H %B MA < 70 || 12H %B MA < 40","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.percentageBandwidth.movingAverage <= 70 || \nchart.at12hs.percentageBandwidth.movingAverage <= 40","id":"52ec70e3-9089-4cba-beb3-c8310ab966b5","savedPayload":{"position":{"x":42480.422191022735,"y":28743.81975140535},"targetPosition":{"x":42391.305358146674,"y":28469.081685540612},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9bb204df-4376-4a7d-996f-8e41d75f49c3","savedPayload":{"position":{"x":42391.305358146674,"y":28469.081685540612},"targetPosition":{"x":42270.38177382897,"y":28096.675602819458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Previous Previous Up","code":"chart.at24hs.candlesProbability.begin > chart.at24hs.candlesProbability.begin","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.previous.direction === \"Up\"","id":"a18dfaba-685b-4ac6-8435-211bb8d59f2b","savedPayload":{"position":{"x":42060.3725608039,"y":28743.772795895635},"targetPosition":{"x":42149.606341045226,"y":28468.80698938408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b9ddf58a-89b4-4fec-899a-ab905e97234a","savedPayload":{"position":{"x":42149.606341045226,"y":28468.80698938408},"targetPosition":{"x":42270.38177382897,"y":28096.675602819458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"1d3956c4-c13a-414f-86ce-49acc5557ebe","savedPayload":{"position":{"x":41720.1490989196,"y":28496.850045737374},"targetPosition":{"x":41953.960289674076,"y":28326.799690843356},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ee9eaf68-0a23-45a3-8aaf-42b97ebf4584","savedPayload":{"position":{"x":41953.960289674076,"y":28326.799690843356},"targetPosition":{"x":42270.38177382897,"y":28096.675602819458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Channel Period > 5","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.period >= 5","id":"4f684afd-4c77-42b0-8b2b-64994ab95e09","savedPayload":{"position":{"x":41589.73458348817,"y":28097.179881520293},"targetPosition":{"x":41879.47535113062,"y":28096.902221344117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5ca55797-a76b-4be7-921d-bdd84773a407","savedPayload":{"position":{"x":41879.47535113062,"y":28096.902221344117},"targetPosition":{"x":42270.38177382897,"y":28096.675602819458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"73890378-cc74-4c04-8e2b-e467429bcdb5","savedPayload":{"position":{"x":42269.64991282163,"y":28096.882748440144},"targetPosition":{"x":42609.73098562367,"y":27628.515341881284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"41a619aa-ca95-4184-a651-0fdfced33f96","savedPayload":{"position":{"x":42039.194972040554,"y":40316.104303517975},"targetPosition":{"x":42155.45766439076,"y":39958.33263404494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"c51fe1c0-ac69-4b35-913f-76e24ee4c4b2","savedPayload":{"position":{"x":42155.45766439076,"y":39958.33263404494},"targetPosition":{"x":41904.04932898808,"y":39679.145138662825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"P4: MA - 3 Deviations","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - \nchart.at01hs.bollingerBand.deviation * 3 > 1) \n{chart.at01hs.bollingerBand.movingAverage - \nchart.at01hs.bollingerBand.deviation * 3} \nelse {tradingEngine.current.position.takeProfit.value}","id":"d1425de3-3c9f-4b1a-a3ad-b5b2a604f857","savedPayload":{"position":{"x":42774.86397678899,"y":40159.54292676287},"targetPosition":{"x":42406.98729342998,"y":40237.647852286485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"24H Previous Oversold","conditions":[{"type":"Condition","name":"24H Previous %B < 20","code":"chart.at24hs.candlesProbability.begin > chart.at24hs.candlesProbability.begin","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.percentageBandwidth.previous.movingAverage <= 20","id":"1ff4ea62-15ff-4409-9e8c-0c5576958be6","savedPayload":{"position":{"x":44115.32358431791,"y":28382.55241133006},"targetPosition":{"x":43827.16293873764,"y":28397.506014485625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"13f09ae8-9b15-4e6a-be3c-d0745b7252a3","savedPayload":{"position":{"x":43827.16293873764,"y":28397.506014485625},"targetPosition":{"x":43442.48439666265,"y":28417.59609135915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":" chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"90d32cba-ec65-4a52-a96a-02e5436b790e","savedPayload":{"position":{"x":44006.030328843815,"y":28783.363277571632},"targetPosition":{"x":43763.29261015742,"y":28625.8006031648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5a58f7e1-75da-4e8f-a4c5-185a59e8c938","savedPayload":{"position":{"x":43763.29261015742,"y":28625.8006031648},"targetPosition":{"x":43442.48439666265,"y":28417.59609135915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Channel Period > 10","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.period >=10","id":"fff48225-fa90-4ed5-aca8-4ae98a55e135","savedPayload":{"position":{"x":43682.67739742739,"y":29042.574667938792},"targetPosition":{"x":43578.857095481646,"y":28772.418634285677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e01c18f1-b9f7-4cc7-91be-6d18c3168f13","savedPayload":{"position":{"x":43578.857095481646,"y":28772.418634285677},"targetPosition":{"x":43442.48439666265,"y":28417.59609135915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H EMA 20 > 50 or Convergence","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.popularEMA.ema20 > chart.at01hs.popularEMA.ema50 || \n(chart.at01hs.popularEMA.ema50 - chart.at01hs.popularEMA.ema20 < \nchart.at01hs.popularEMA.previous.ema50 - chart.at01hs.popularEMA.previous.ema20 && \nchart.at01hs.popularEMA.previous.ema50 - chart.at01hs.popularEMA.previous.ema20 < chart.at01hs.popularEMA.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.ema20 && \nchart.at01hs.popularEMA.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.ema20 < \nchart.at01hs.popularEMA.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.ema20 && \nchart.at01hs.popularEMA.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.ema20 < \nchart.at01hs.popularEMA.previous.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.previous.ema20 && \nchart.at01hs.popularEMA.previous.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.previous.ema20 < \nchart.at01hs.popularEMA.previous.previous.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.previous.previous.ema20)\n","id":"7ee960b5-be23-4649-92ca-fc4ea5adc99b","savedPayload":{"position":{"x":43294.975778356355,"y":29053.382385278834},"targetPosition":{"x":43344.50060695037,"y":28784.90551021713},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4262c963-84df-44ba-ac06-7ecb331ba24d","savedPayload":{"position":{"x":43344.50060695037,"y":28784.90551021713},"targetPosition":{"x":43442.48439666265,"y":28417.59609135915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"186df69f-9a0d-49af-9394-0dbd05f18628","savedPayload":{"position":{"x":41199.57103188469,"y":28950.110112920054},"targetPosition":{"x":41140.91005364732,"y":28562.552426497008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"24H Previous Previous Up","conditions":[{"type":"Condition","name":"24H Previous Previous Up","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.previous.direction === \"Up\"","id":"d08197af-2643-4f8c-83ac-8eb33a9ff474","savedPayload":{"position":{"x":43557.57208812914,"y":29016.385128517006},"targetPosition":{"x":43341.75963610205,"y":28822.010965244244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"750174f5-0953-4204-bb06-9f68030e9185","savedPayload":{"position":{"x":43341.75963610205,"y":28822.010965244244},"targetPosition":{"x":43018.343879476015,"y":28530.69766919585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"9d8a9727-239e-42db-952a-7c04e065ffca","savedPayload":{"position":{"x":43168.543695045955,"y":29237.56823239563},"targetPosition":{"x":43108.50364433588,"y":28954.941588364054},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f42f3843-bf81-4782-b129-f06e98f354d8","savedPayload":{"position":{"x":43108.50364433588,"y":28954.941588364054},"targetPosition":{"x":43018.343879476015,"y":28530.69766919585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Channel Period > 5","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.period >=5","id":"99b3c782-ecb4-43ca-9624-962220c38981","savedPayload":{"position":{"x":42723.976722723775,"y":29192.967008293515},"targetPosition":{"x":42841.348560380284,"y":28928.866378148887},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0fdfb277-cfa0-4fc6-aee9-db2cc997b208","savedPayload":{"position":{"x":42841.348560380284,"y":28928.866378148887},"targetPosition":{"x":43018.343879476015,"y":28530.69766919585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H %B < 60 || 12H %B < 30","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.percentageBandwidth.movingAverage <= 60 || \nchart.at12hs.percentageBandwidth.movingAverage <= 30","id":"90331db7-a6e8-47a6-be28-4e679b728ce3","savedPayload":{"position":{"x":42394.892177506656,"y":28891.344944117667},"targetPosition":{"x":42645.130165104696,"y":28746.555207276062},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ef2973eb-d707-41cc-b492-96dbf5215de1","savedPayload":{"position":{"x":42645.130165104696,"y":28746.555207276062},"targetPosition":{"x":43018.343879476015,"y":28530.69766919585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"91020a9c-998e-407c-94f1-774941d9033c","savedPayload":{"position":{"x":40910.88981848745,"y":28879.293324810562},"targetPosition":{"x":41140.91005364732,"y":28562.552426497008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"25% Target","conditions":[{"type":"Condition","name":"25% Target","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close <= tradingEngine.current.position.entryTargetRate.value * 0.8","id":"a8a904a9-cbf3-40cb-89ef-8066d65fe443","savedPayload":{"position":{"x":40145.43975527936,"y":28721.05668949747},"targetPosition":{"x":40337.56593885415,"y":28690.326044207664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b841c21b-789a-49bf-b959-f91613e089a8","savedPayload":{"position":{"x":40337.56593885415,"y":28690.326044207664},"targetPosition":{"x":40759.92472507648,"y":28623.167530542567},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"66105054-6e57-4aec-ada2-14054981fd68","savedPayload":{"position":{"x":40754.54275286227,"y":28623.823432473342},"targetPosition":{"x":41140.91005364732,"y":28562.552426497008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"830013bf-e507-4960-9742-1a9b8ffdd16a","savedPayload":{"position":{"x":42290.808172252975,"y":40595.48877906602},"targetPosition":{"x":42406.98729342998,"y":40237.647852286485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"b30e4c2c-fe06-4217-af5a-5c728463388a","savedPayload":{"position":{"x":42406.98729342998,"y":40237.647852286485},"targetPosition":{"x":42155.45766439076,"y":39958.33263404494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"P5: MA - 1.5 Deviations","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - \nchart.at01hs.bollingerBand.deviation * 1.5 > 1) \n{chart.at01hs.bollingerBand.movingAverage - \nchart.at01hs.bollingerBand.deviation * 1.5} \nelse {tradingEngine.current.position.takeProfit.value}","id":"b04ad21c-bd81-401e-8b70-c158ab668f66","savedPayload":{"position":{"x":43026.39287434272,"y":40438.9687109263},"targetPosition":{"x":42658.593583432805,"y":40517.05147952684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"24H Previous Oversold","conditions":[{"type":"Condition","name":"24H Previous MA < 10","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.percentageBandwidth.previous.movingAverage <= 10","id":"7637580c-cda0-4056-ad4a-de67510050fa","savedPayload":{"position":{"x":44582.53815170375,"y":28721.763057114633},"targetPosition":{"x":44292.72982399322,"y":28736.77835945741},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ecaa9841-49d1-45da-8249-17e373c7d662","savedPayload":{"position":{"x":44292.72982399322,"y":28736.77835945741},"targetPosition":{"x":43911.088648333556,"y":28756.66466375019},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"f6f6d914-5813-4389-b29e-6c7edc4927e0","savedPayload":{"position":{"x":44474.58301224773,"y":29122.4933176567},"targetPosition":{"x":44231.98387839479,"y":28964.98389076958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9fb9d04e-da7e-45a8-af44-e87d65e5650f","savedPayload":{"position":{"x":44231.98387839479,"y":28964.98389076958},"targetPosition":{"x":43911.088648333556,"y":28756.66466375019},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Channel Period > 10","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.period >=10","id":"a08871c1-b85d-4afc-9480-7eeca7598dd1","savedPayload":{"position":{"x":44151.9993268865,"y":29383.903659131724},"targetPosition":{"x":44048.16786405322,"y":29113.52161202326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1dcf89ef-e3e3-4d6e-bbfb-16ccdeeec348","savedPayload":{"position":{"x":44048.16786405322,"y":29113.52161202326},"targetPosition":{"x":43911.088648333556,"y":28756.66466375019},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H EMA 20 > 50 or Convergence","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.popularEMA.ema20 > chart.at01hs.popularEMA.ema50 || (chart.at01hs.popularEMA.ema50 - chart.at01hs.popularEMA.ema20 < chart.at01hs.popularEMA.previous.ema50 - chart.at01hs.popularEMA.previous.ema20 && chart.at01hs.popularEMA.previous.ema50 - chart.at01hs.popularEMA.previous.ema20 < chart.at01hs.popularEMA.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.ema20 && chart.at01hs.popularEMA.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.ema20 < chart.at01hs.popularEMA.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.ema20 && chart.at01hs.popularEMA.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.ema20 < chart.at01hs.popularEMA.previous.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.previous.ema20 && chart.at01hs.popularEMA.previous.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.previous.ema20 < chart.at01hs.popularEMA.previous.previous.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.previous.previous.ema20)","id":"5dc14b5f-4a07-413a-83ac-7c57eb96a8d3","savedPayload":{"position":{"x":43737.80800512017,"y":29405.87057218924},"targetPosition":{"x":43812.54011228993,"y":29125.827846428245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8a062525-23e1-48dc-83c1-c0cec0e30907","savedPayload":{"position":{"x":43812.54011228993,"y":29125.827846428245},"targetPosition":{"x":43911.088648333556,"y":28756.66466375019},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f3086330-375a-4871-a7a8-f12b0543f1c3","savedPayload":{"position":{"x":42432.94681362908,"y":40899.64790122628},"targetPosition":{"x":42258.75337322312,"y":40558.24753572204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"24H Previous Previous Up","conditions":[{"type":"Condition","name":"24H Previous Previous Up","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.previous.direction === \"Up\"","id":"aca8f925-5511-4d06-92bb-29b637072f66","savedPayload":{"position":{"x":43998.003794883436,"y":29343.295263591957},"targetPosition":{"x":43775.80358171991,"y":29143.14585899625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d0ff1bab-8072-4dab-97b8-69d3cb9d0d48","savedPayload":{"position":{"x":43775.80358171991,"y":29143.14585899625},"targetPosition":{"x":43486.82667224421,"y":28882.75490785915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H %B < 50 || 12H %B < 17.5","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.percentageBandwidth.movingAverage <= 50 || \nchart.at12hs.percentageBandwidth.movingAverage <= 17.5","id":"7673df58-3326-4d28-9005-47214b0f05c0","savedPayload":{"position":{"x":43626.251097769666,"y":29538.30089652601},"targetPosition":{"x":43565.956313109644,"y":29254.531818806714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5435a45d-891a-4456-8521-6587003fb171","savedPayload":{"position":{"x":43565.956313109644,"y":29254.531818806714},"targetPosition":{"x":43486.82667224421,"y":28882.75490785915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"4eadea14-f412-4849-b3f6-187e72b13bd8","savedPayload":{"position":{"x":43214.91248782673,"y":29494.75230498004},"targetPosition":{"x":43332.42890265662,"y":29230.23379586684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a94adefc-e6c3-4531-ab91-84d23096900a","savedPayload":{"position":{"x":43332.42890265662,"y":29230.23379586684},"targetPosition":{"x":43486.82667224421,"y":28882.75490785915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Channel Period > 5","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.period >=5","id":"c69a88a9-be56-4dd6-88d9-c360b06fa501","savedPayload":{"position":{"x":42907.47121996724,"y":29218.134864928008},"targetPosition":{"x":43157.99064454373,"y":29073.088682218553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fe46196d-b481-4b9f-8908-43b5e7094d7f","savedPayload":{"position":{"x":43157.99064454373,"y":29073.088682218553},"targetPosition":{"x":43486.82667224421,"y":28882.75490785915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"80b47c3e-843a-43f5-8f74-5d2a437457fc","savedPayload":{"position":{"x":42140.526378083356,"y":40923.02949555002},"targetPosition":{"x":42258.75337322312,"y":40558.24753572204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"66% Target","conditions":[{"type":"Condition","name":"66% Target","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close <= tradingEngine.current.position.entryTargetRate.value * 0.6","id":"8a74b52a-5fc5-4ed0-85a3-4092e474081c","savedPayload":{"position":{"x":40302.55320504628,"y":29073.299557376606},"targetPosition":{"x":40494.5017127935,"y":29042.651747230284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f27c3841-bbe5-40a0-81e1-031db8512b53","savedPayload":{"position":{"x":40494.5017127935,"y":29042.651747230284},"targetPosition":{"x":40917.007013269416,"y":28975.517531591002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ff1379fd-2b18-4c17-b69b-5aed7bffc5c9","savedPayload":{"position":{"x":41917.17572942156,"y":40732.23165187645},"targetPosition":{"x":42258.75337322312,"y":40558.24753572204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"5e8f7f0f-0a93-4f9d-ac7c-da2b53d38919","savedPayload":{"position":{"x":42542.456285328444,"y":40874.83626406228},"targetPosition":{"x":42658.593583432805,"y":40517.05147952684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"ac38aa6f-c935-4bd3-90f5-69163e3f23ac","savedPayload":{"position":{"x":42658.593583432805,"y":40517.05147952684},"targetPosition":{"x":42406.98729342998,"y":40237.647852286485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"P6: Lower Band","formula":{"type":"Formula","name":"New Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation","id":"5a0e05fc-2b96-46dd-b913-fa10420404c0","savedPayload":{"position":{"x":43161.69590980393,"y":41075.788291085824},"targetPosition":{"x":42910.21751442498,"y":40796.49130719997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"9dc858f9-63b4-48a4-bcfc-5cee9a7219b4","savedPayload":{"position":{"x":42910.21751442498,"y":40796.49130719997},"targetPosition":{"x":42658.593583432805,"y":40517.05147952684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"116048c4-81d3-469d-842c-390bb32de8ce","savedPayload":{"position":{"x":41369.3474946628,"y":39084.708372859495},"targetPosition":{"x":41117.660088646095,"y":38805.26035962731},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"7c129ba3-8e7d-422a-9e40-d3a362b2f251","savedPayload":{"position":{"x":41117.660088646095,"y":38805.26035962731},"targetPosition":{"x":40402.88918801833,"y":38572.9995449057},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.candle.close.value","id":"3d3dc6e9-d5c3-405d-bea2-ff0867368e87","savedPayload":{"position":{"x":41954.78005079185,"y":38959.42102337115},"targetPosition":{"x":41604.23235250702,"y":39092.99172472291},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"93fa6d49-ec93-4df0-aa39-0e41982a794a","savedPayload":{"position":{"x":41604.23235250702,"y":39092.99172472291},"targetPosition":{"x":41215.29094034432,"y":39240.942986802256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInQuotedAsset":{"type":"Target Size In Quoted Asset","name":"New Target Size In Quoted Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.strategyOpenStage.stageQuotedAsset.sizeFilled.value","id":"6e98a177-0236-4e1c-8d32-7c67df342fac","savedPayload":{"position":{"x":41830.56231650442,"y":39739.4312934785},"targetPosition":{"x":41539.89389077708,"y":39504.082559025985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"85c5712b-61bc-4eaf-92a9-4fdacd110f85","savedPayload":{"position":{"x":41539.89389077708,"y":39504.082559025985},"targetPosition":{"x":41215.29094034432,"y":39240.942986802256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4cd64320-79e3-4a06-a892-02756d235dbe","savedPayload":{"position":{"x":41187.56236061995,"y":39334.437176285006},"targetPosition":{"x":40844.307474313435,"y":39181.10253319167},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeExecution":{"type":"Close Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[{"type":"Market Buy Order","name":"Quick Exit","config":"{\n\"percentageOfAlgorithmSize\": 100,\n\"spawnMultipleOrders\": false\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"142e80e8-6ef4-443c-91c2-96e0a2041523","savedPayload":{"position":{"x":40651.38136912206,"y":29251.098056811978},"targetPosition":{"x":40589.00146304098,"y":28955.829228487895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2e4205ca-82db-4481-a5f9-8bd3d3619eac","savedPayload":{"position":{"x":40589.00146304098,"y":28955.829228487895},"targetPosition":{"x":40526.53670257908,"y":28660.461105965296},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4067e6b8-f217-4094-a02f-4da7014704a1","savedPayload":{"position":{"x":40526.53670257908,"y":28660.461105965296},"targetPosition":{"x":40459.56639453115,"y":28343.50465367183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"092bc2da-ac37-407f-8e2f-6492ae11502c","savedPayload":{"position":{"x":41005.12481785392,"y":40717.48558378805},"targetPosition":{"x":40965.94539395366,"y":40343.6464628678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3b1d6016-48ec-4460-8200-30bc40049643","savedPayload":{"position":{"x":40965.94539395366,"y":40343.6464628678},"targetPosition":{"x":40926.793498659055,"y":39969.94181280965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Buy Order #1","id":"7d6c3ac9-4869-4ff3-a9f2-2a6f8a31ccf3"}}}],"marketSellOrders":[],"limitBuyOrders":[],"limitSellOrders":[],"id":"f46a0d35-2aea-47d3-96c9-ec3e063c5168","savedPayload":{"position":{"x":40926.793498659055,"y":39969.94181280965},"targetPosition":{"x":40883.35359530466,"y":39555.069762582076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"13f97380-5bfb-4f7d-a690-ffefb67fdfb9","savedPayload":{"position":{"x":40883.341553092774,"y":39555.14150193544},"targetPosition":{"x":40844.307474313435,"y":39181.10253319167},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"bdaf22d5-ad3a-43e4-8a9e-848b8f32eff4","savedPayload":{"position":{"x":40844.307474313435,"y":39181.10253319167},"targetPosition":{"x":40402.88918801833,"y":38572.9995449057},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5a5f437d-1a17-4619-95e6-925b7686c87c","savedPayload":{"position":{"x":40402.88918801833,"y":38572.9995449057},"targetPosition":{"x":39651.04913415892,"y":38573},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Trading Strategy","name":"Xtreme","triggerStage":{"type":"Trigger Stage","triggerOn":{"type":"Trigger On Event","situations":[{"type":"Situation","name":"Xtreme","conditions":[{"type":"Condition","name":"3 Closes Below MA","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage && \nchart.at01hs.candle.previous.close < chart.at01hs.bollingerBand.previous.movingAverage && \nchart.at01hs.candle.previous.previous.close < chart.at01hs.bollingerBand.previous.previous.movingAverage","id":"afc33e4f-53e2-4106-83c3-9efa7e7bebc5","savedPayload":{"position":{"x":39451.45058758414,"y":40154.89547932353},"targetPosition":{"x":39182.10425305107,"y":40120.59120729343},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0f055de8-0eb0-4a8c-aea8-0acc7480ac6c","savedPayload":{"position":{"x":39182.10425305107,"y":40120.59120729343},"targetPosition":{"x":38644.59010219499,"y":40050.92021210184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Breakdown","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation","id":"34bd2c52-c5aa-4e69-9b82-414008ee0b80","savedPayload":{"position":{"x":39389.570294445635,"y":40376.8860469189},"targetPosition":{"x":39140.45724663851,"y":40268.35154320377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"4ccae6ab-5911-4e5b-aa69-57e157a5acf9","savedPayload":{"position":{"x":39140.45724663851,"y":40268.35154320377},"targetPosition":{"x":38644.59010219499,"y":40050.92021210184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Down","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Down\"","id":"527f0ba5-4997-44c4-94d8-095c7b3d869e","savedPayload":{"position":{"x":39267.68531400058,"y":40574.50909739129},"targetPosition":{"x":39059.891126460745,"y":40400.076754505106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"bfed975b-1086-4648-b900-2c493bcd2278","savedPayload":{"position":{"x":39059.891126460745,"y":40400.076754505106},"targetPosition":{"x":38644.59010219499,"y":40050.92021210184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Deviation > 200","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerBand.deviation > 200","id":"56266555-5754-48e1-be35-51840b451a61","savedPayload":{"position":{"x":39092.75185903594,"y":40728.87845607734},"targetPosition":{"x":38943.35262981497,"y":40503.24920478158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ca52539f-eab7-4867-80a9-4c03295df977","savedPayload":{"position":{"x":38943.35262981497,"y":40503.24920478158},"targetPosition":{"x":38644.59010219499,"y":40050.92021210184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Candle Size < 750","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.max - chart.at01hs.candle.min < 750","id":"63b99ed2-4919-4262-aa74-ca9de1f83e0a","savedPayload":{"position":{"x":38884.59405505455,"y":40827.18444296671},"targetPosition":{"x":38804.9453108053,"y":40568.36656087604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"04132e51-a148-4e3b-a41a-d47deaa5113d","savedPayload":{"position":{"x":38804.9453108053,"y":40568.36656087604},"targetPosition":{"x":38644.59010219499,"y":40050.92021210184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Deviation < 1000","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerBand.deviation < 1000","id":"5de63c96-ba0b-4329-8f5d-36414ecec5f3","savedPayload":{"position":{"x":38655.26223994691,"y":40864.20350269026},"targetPosition":{"x":38651.69765923332,"y":40593.18885947088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"206f98c9-6ebc-47bf-97f9-7a2369cf2a20","savedPayload":{"position":{"x":38651.69765923332,"y":40593.18885947088},"targetPosition":{"x":38644.59010219499,"y":40050.92021210184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Not Completly Oversold","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.percentageBandwidth.movingAverage >= 30 || \nchart.at03hs.percentageBandwidth.movingAverage >= 30 || \nchart.at04hs.percentageBandwidth.movingAverage >= 30 || \nchart.at06hs.percentageBandwidth.movingAverage >= 30 || \nchart.at08hs.percentageBandwidth.movingAverage >= 30","id":"09a75c6c-1d70-4826-9926-b65c58db8ec9","savedPayload":{"position":{"x":38426.931060888455,"y":40834.825006985935},"targetPosition":{"x":38499.73505587303,"y":40573.42656127001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e5cc491c-ca57-4138-8c28-9b0f3aa706d7","savedPayload":{"position":{"x":38499.73505587303,"y":40573.42656127001},"targetPosition":{"x":38644.59010219499,"y":40050.92021210184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Extreme","javascriptCode":{"type":"Javascript Code","code":"if (chart.at01hs.bollingerSubChannel.slope != \"Extreme\") {true} else {if (chart.at01hs.bollingerSubChannel.period <=7) {true} else {false}}","id":"67f3557c-8ecd-46bc-afbc-433af0bc47de","savedPayload":{"position":{"x":38215.049036145545,"y":40742.01152889138},"targetPosition":{"x":38358.03964402334,"y":40511.42306337414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f9dbefdb-09bf-4d90-964f-35b02cde3ce4","savedPayload":{"position":{"x":38358.03964402334,"y":40511.42306337414},"targetPosition":{"x":38644.59010219499,"y":40050.92021210184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H %B MA > 70","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.percentageBandwidth.movingAverage >= 70 || \nchart.at02hs.percentageBandwidth.previous.movingAverage >= 70 || \nchart.at02hs.percentageBandwidth.previous.previous.movingAverage >= 70 || \nchart.at02hs.percentageBandwidth.previous.previous.previous.movingAverage >= 70 || \nchart.at02hs.percentageBandwidth.previous.previous.previous.previous.movingAverage >= 70 || \nchart.at02hs.percentageBandwidth.previous.previous.previous.previous.previous.movingAverage >= 70","id":"3e758bbf-798d-4350-b600-f66e65b79a94","savedPayload":{"position":{"x":38037.92046840576,"y":40592.586450156356},"targetPosition":{"x":38239.85230306536,"y":40411.208491923164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d4c531a6-e637-4fd8-a2b8-b8b248bf4a0a","savedPayload":{"position":{"x":38239.85230306536,"y":40411.208491923164},"targetPosition":{"x":38644.59010219499,"y":40050.92021210184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Deviation > 2000","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerBand.deviation > 2000","id":"6dc8d475-f68f-4405-8418-5869e7ca3785","savedPayload":{"position":{"x":37909.08665536651,"y":40399.61487149729},"targetPosition":{"x":38154.77027654304,"y":40283.38452474934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"445f4ffc-bac0-44f2-9441-cf01424fd36e","savedPayload":{"position":{"x":38154.77027654304,"y":40283.38452474934},"targetPosition":{"x":38644.59010219499,"y":40050.92021210184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8a5bd03d-6958-4fd0-bd5d-84afb04a6bed","savedPayload":{"position":{"x":38644.59010219499,"y":40050.92021210184},"targetPosition":{"x":38559.57490487274,"y":39515.52039065288},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"b21fbf4b-4ed3-4536-93f3-531ca2700817","savedPayload":{"position":{"x":38559.60529585408,"y":39515.70314364694},"targetPosition":{"x":38502.926134818044,"y":39158.246037558776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close > chart.at01hs.bollingerBand.movingAverage","id":"3b591e8c-1739-4466-b9f3-87be08d0db90","savedPayload":{"position":{"x":37637.96935061851,"y":40351.00390265134},"targetPosition":{"x":37850.27682613321,"y":40058.746261260254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"20b59f4c-8ec5-4be8-9d06-f1b223045e83","savedPayload":{"position":{"x":37850.27682613321,"y":40058.746261260254},"targetPosition":{"x":38062.45043366597,"y":39765.72789917614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4b8da5dc-c9d7-4794-ba8a-ad3a737f82c6","savedPayload":{"position":{"x":38062.45043366597,"y":39765.72789917614},"targetPosition":{"x":38290.62990546907,"y":39450.989199355616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"4e265461-a65e-4f61-a123-f74d32a3d14f","savedPayload":{"position":{"x":38290.357287257575,"y":39451.16634353973},"targetPosition":{"x":38502.926134818044,"y":39158.246037558776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","situations":[{"type":"Situation","name":"Xtreme","conditions":[{"type":"Condition","name":"3 Closes Below MA","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage && \nchart.at01hs.candle.previous.close < chart.at01hs.bollingerBand.previous.movingAverage && \nchart.at01hs.candle.previous.previous.close < chart.at01hs.bollingerBand.previous.previous.movingAverage","id":"88151639-ba25-411f-ab3a-8e002e9948f2","savedPayload":{"position":{"x":37484.0773212994,"y":40104.41402880958},"targetPosition":{"x":37527.16306799252,"y":39836.633501466895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fc0bf247-86a1-4352-a85b-a0515a158629","savedPayload":{"position":{"x":37527.16306799252,"y":39836.633501466895},"targetPosition":{"x":37610.36131734098,"y":39300.5234146805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Breakdown","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation","id":"5ce80f14-1175-4cce-8f3f-cd05977d02e8","savedPayload":{"position":{"x":37238.45980658657,"y":40023.24075746717},"targetPosition":{"x":37363.07716749418,"y":39782.71626760197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"449a1458-781c-4214-9ddc-4e268891db36","savedPayload":{"position":{"x":37363.07716749418,"y":39782.71626760197},"targetPosition":{"x":37610.36131734098,"y":39300.5234146805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Down","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Down\"","id":"660a8819-2e1b-46f9-b8ff-0f07b772ffb7","savedPayload":{"position":{"x":37033.53038815898,"y":39876.554250486064},"targetPosition":{"x":37225.68284224414,"y":39684.768260889396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b9a2cd43-d129-444e-9684-04ba93aa939e","savedPayload":{"position":{"x":37225.68284224414,"y":39684.768260889396},"targetPosition":{"x":37610.36131734098,"y":39300.5234146805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Deviation > 200","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerBand.deviation > 200","id":"9d354242-8f6f-4dd4-8488-f453699caf51","savedPayload":{"position":{"x":36885.23144957344,"y":39668.870147535636},"targetPosition":{"x":37127.18638732052,"y":39545.38864930383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2d429ceb-6816-4f9d-b211-4034080d39a3","savedPayload":{"position":{"x":37127.18638732052,"y":39545.38864930383},"targetPosition":{"x":37610.36131734098,"y":39300.5234146805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Candle Size < 750","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.max - chart.at01hs.candle.min < 750","id":"85a4f5bd-4255-4b8d-bb4e-62eddb053030","savedPayload":{"position":{"x":36806.65610531242,"y":39427.21178276862},"targetPosition":{"x":37073.62365338785,"y":39386.06976233504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0b3dba7b-79a2-425e-be41-0368ea2f005d","savedPayload":{"position":{"x":37073.62365338785,"y":39386.06976233504},"targetPosition":{"x":37610.36131734098,"y":39300.5234146805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Deviation < 1000","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerBand.deviation < 1000","id":"89150469-6c19-4781-8c80-f3ac0728d734","savedPayload":{"position":{"x":36807.73799598833,"y":39172.36857934647},"targetPosition":{"x":37076.1105371237,"y":39215.99906864935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c27245cb-4562-4e8b-8cd2-171427de3d04","savedPayload":{"position":{"x":37076.1105371237,"y":39215.99906864935},"targetPosition":{"x":37610.36131734098,"y":39300.5234146805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Not Completly Oversold","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.percentageBandwidth.movingAverage >= 30 || \nchart.at03hs.percentageBandwidth.movingAverage >= 30 || \nchart.at04hs.percentageBandwidth.movingAverage >= 30 || \nchart.at06hs.percentageBandwidth.movingAverage >= 30 || \nchart.at08hs.percentageBandwidth.movingAverage >= 30","id":"72d449b1-2eaf-449c-b4c2-7e54165620e4","savedPayload":{"position":{"x":36885.80802220685,"y":38931.41078306823},"targetPosition":{"x":37127.84217504696,"y":39053.85332450073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"72c0840a-0162-4fb5-8fe0-1043a3500942","savedPayload":{"position":{"x":37127.84217504696,"y":39053.85332450073},"targetPosition":{"x":37610.36131734098,"y":39300.5234146805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Extreme","javascriptCode":{"type":"Javascript Code","code":"if (chart.at01hs.bollingerSubChannel.slope != \"Extreme\") {true} else {if (chart.at01hs.bollingerSubChannel.period <=7) {true} else {false}}","id":"fd550ee5-bb66-4475-9712-165aff7123a2","savedPayload":{"position":{"x":37035.98274981626,"y":38727.944848145286},"targetPosition":{"x":37227.700441606976,"y":38918.248163278215},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"27abcda3-5917-4345-b070-f506dd03d511","savedPayload":{"position":{"x":37227.700441606976,"y":38918.248163278215},"targetPosition":{"x":37610.36131734098,"y":39300.5234146805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H %B MA > 70","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.percentageBandwidth.movingAverage >= 70 || \nchart.at02hs.percentageBandwidth.previous.movingAverage >= 70 || \nchart.at02hs.percentageBandwidth.previous.previous.movingAverage >= 70 || \nchart.at02hs.percentageBandwidth.previous.previous.previous.movingAverage >= 70 || \nchart.at02hs.percentageBandwidth.previous.previous.previous.previous.movingAverage >= 70 || \nchart.at02hs.percentageBandwidth.previous.previous.previous.previous.previous.movingAverage >= 70","id":"ae35fa99-f82e-421d-9df7-695e52a2dbe3","savedPayload":{"position":{"x":37261.668344652535,"y":38577.71554683236},"targetPosition":{"x":37365.24060948038,"y":38818.043409954604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"055aec39-19b4-4001-8c7e-4e9d0b46a41d","savedPayload":{"position":{"x":37365.24060948038,"y":38818.043409954604},"targetPosition":{"x":37610.36131734098,"y":39300.5234146805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"935320b2-9c4b-4f95-a23b-eca780f9968e","savedPayload":{"position":{"x":37610.36131734098,"y":39300.5234146805},"targetPosition":{"x":38145.9573536527,"y":39215.15291472636},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"9473e9a0-df49-4111-aeb3-c3398a2cca06","savedPayload":{"position":{"x":38145.76678165218,"y":39215.15254086143},"targetPosition":{"x":38502.926134818044,"y":39158.246037558776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"7653910c-4637-4b93-909a-934356164e61","savedPayload":{"position":{"x":38502.926134818044,"y":39158.246037558776},"targetPosition":{"x":38927.62779426456,"y":38573.1427484218},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"openStage":{"type":"Open Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"My Formula","code":"tradingEngine.current.episode.candle.close.value","id":"20253ca8-c331-4d15-83dd-3615e5b3bd94","savedPayload":{"position":{"x":38114.76205716014,"y":39892.756098738246},"targetPosition":{"x":38095.8457188499,"y":39530.41574797636},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e2d8b919-87fd-4d37-86b7-7c1e7d6268ff","savedPayload":{"position":{"x":38095.8457188499,"y":39530.41574797636},"targetPosition":{"x":38074.64659168162,"y":39117.207722031824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInBaseAsset":{"type":"Target Size In Base Asset","name":"New Target Size In Base Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.episodeBaseAsset.balance.value","id":"a90e0c3d-a8f5-4cce-a763-2cc1a0d64502","savedPayload":{"position":{"x":37424.52903661776,"y":39541.135761339596},"targetPosition":{"x":37728.09957256382,"y":39343.27600286387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1f3a30b8-30b5-46e9-b8b7-1ceb4bf80aae","savedPayload":{"position":{"x":37728.09957256382,"y":39343.27600286387},"targetPosition":{"x":38074.64659168162,"y":39117.207722031824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"82010f4f-3614-4bdc-8c40-4d99e9e31312","savedPayload":{"position":{"x":37997.36841377296,"y":39065.388832410266},"targetPosition":{"x":38239.77132701316,"y":38796.66511016734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[],"marketSellOrders":[{"type":"Market Sell Order","name":"Quick Entry","config":"{\n\"percentageOfAlgorithmSize\": 100\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"1fe7e332-45dd-45c0-b106-63cdaea4bed4","savedPayload":{"position":{"x":35763.6889564447,"y":38272.66628881695},"targetPosition":{"x":36117.4274329484,"y":38347.59660994325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f2f65162-a972-4815-885c-a82298951d0b","savedPayload":{"position":{"x":36117.4274329484,"y":38347.59660994325},"targetPosition":{"x":36471.502710409375,"y":38422.57842973967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0662db35-3b83-4fad-be6c-aed4105f1804","savedPayload":{"position":{"x":36471.502710409375,"y":38422.57842973967},"targetPosition":{"x":36825.377852278485,"y":38497.64146253638},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"8c738920-803e-4d81-81d7-f08f9d94d4b6","savedPayload":{"position":{"x":36825.377852278485,"y":38497.64146253638},"targetPosition":{"x":37178.692463428306,"y":38572.52790498443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b4d78477-d485-45cc-ba6e-d97c76cf7dcc","savedPayload":{"position":{"x":37178.692463428306,"y":38572.52790498443},"targetPosition":{"x":37532.37709523999,"y":38647.32471238622},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Sell Order #1","id":"8e404329-d41f-41e0-ad5a-c84ee1fa2604"}}}],"limitBuyOrders":[],"limitSellOrders":[],"id":"8243f9c5-daa7-4793-9752-ade0c6dc895a","savedPayload":{"position":{"x":37532.37709523999,"y":38647.32471238622},"targetPosition":{"x":37886.019566331175,"y":38721.93046869884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"a2395358-86a8-43ae-8473-fd8bc36631b7","savedPayload":{"position":{"x":37886.00659912086,"y":38721.835575526115},"targetPosition":{"x":38239.77132701316,"y":38796.66511016734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"17b1363e-f9cb-4a68-bb06-666749e377e9","savedPayload":{"position":{"x":38239.77132701316,"y":38796.66511016734},"targetPosition":{"x":38927.62779426456,"y":38573.1427484218},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","managedStopLoss":{"type":"Managed Stop Loss","name":"New Managed Stop Loss","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.position.entryTargetRate.value * 1.03","id":"2477d7a0-e2ef-4f98-8859-c9abdd65f330","savedPayload":{"position":{"x":37209.75203164019,"y":38754.393621934556},"targetPosition":{"x":37478.67408822439,"y":38511.66427028272},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"shortcutKey":"q"}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Close Below 5%","code":"chart.at24hs.candlesProbability.begin > chart.at24hs.candlesProbability.begin","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < tradingEngine.current.position.entryTargetRate.value * 0.95","id":"aa5d897c-69c4-4c32-a25d-76662d7e110f","savedPayload":{"position":{"x":36101.72399549624,"y":39549.27558735555},"targetPosition":{"x":36445.44783959185,"y":39437.56703640209},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ac91438d-54f6-4de5-bd93-2414037fd447","savedPayload":{"position":{"x":36445.44783959185,"y":39437.56703640209},"targetPosition":{"x":36789.38279699144,"y":39325.76141080925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ba1814d0-9aac-443f-8ce8-9f19e860b532","savedPayload":{"position":{"x":36789.38279699144,"y":39325.76141080925},"targetPosition":{"x":37143.0508919391,"y":39210.74888082896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"784ae520-1c92-4923-b9b1-b3da21840959","savedPayload":{"position":{"x":37134.145925163524,"y":38399.58146331505},"targetPosition":{"x":37478.67408822439,"y":38511.66427028272},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"48832805-7cb3-4fe7-b465-5e20cb5393ce","savedPayload":{"position":{"x":37478.63769690541,"y":38511.671037041764},"targetPosition":{"x":37886.50896567033,"y":38425.03153461448},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"P1: Trailing 4% Above MA","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage * 1.04 < tradingEngine.current.position.stopLoss.value) \n{chart.at01hs.bollingerBand.movingAverage * 1.04} \nelse {tradingEngine.current.position.stopLoss.value}","id":"1348c680-76ae-4766-bb6d-b8885b8b976c","savedPayload":{"position":{"x":36770.57438792511,"y":38662.28664611497},"targetPosition":{"x":37124.431874195296,"y":38587.061336765655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"b65434d1-738d-4df6-9b40-cb3674874299","savedPayload":{"position":{"x":37124.431874195296,"y":38587.061336765655},"targetPosition":{"x":37478.67408822439,"y":38511.66427028272},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e0588afd-77c9-41e2-9ba3-6ad4661b299e","savedPayload":{"position":{"x":37885.8678474191,"y":38424.83084458849},"targetPosition":{"x":38239.906500259654,"y":38349.67218785789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"managedTakeProfit":{"type":"Managed Take Profit","name":"New Managed Take Profit","phases":[{"type":"Phase","name":"P 1","formula":{"type":"Formula","name":"New Formula","code":"chart.at01hs.bollingerBand.movingAverage * 0.6","id":"da970219-d04e-4e81-b13f-11206c1ac444","savedPayload":{"position":{"x":37375.030833011784,"y":37660.82565485131},"targetPosition":{"x":37719.483475408015,"y":37771.41530832327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"3H Oversold","javascriptCode":{"type":"Javascript Code","code":"chart.at03hs.percentageBandwidth.previous.movingAverage <= 10","id":"598ad9f2-1628-484a-8064-dc02a603a76a","savedPayload":{"position":{"x":35847.63864132738,"y":38291.40971335994},"targetPosition":{"x":36201.46120000794,"y":38366.29277517469},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8d0ee4a2-12bc-4397-88eb-0336f5727cc5","savedPayload":{"position":{"x":36201.46120000794,"y":38366.29277517469},"targetPosition":{"x":36555.462532625024,"y":38441.11934284422},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7aec6373-83e5-49e9-a929-24793f0edf63","savedPayload":{"position":{"x":36555.462532625024,"y":38441.11934284422},"targetPosition":{"x":36919.31507199806,"y":38517.78419359422},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"3H Entering Oversold","javascriptCode":{"type":"Javascript Code","code":"chart.at03hs.percentageBandwidth.movingAverage <= 30","id":"80b84359-b9be-4edb-959f-019c7db1a646","savedPayload":{"position":{"x":36266.25533048073,"y":37681.06352842311},"targetPosition":{"x":36535.22491951273,"y":37922.77429375514},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b49b85e8-3e0f-4690-81aa-63bcc653bf61","savedPayload":{"position":{"x":36535.22491951273,"y":37922.77429375514},"targetPosition":{"x":36804.35045348051,"y":38164.65517717734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Up","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","id":"ab06f5d1-3b5b-46bb-a11f-53bdfb934128","savedPayload":{"position":{"x":36953.157311858435,"y":37458.2705923992},"targetPosition":{"x":36878.81409778312,"y":37811.18488124622},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c7e3d21c-8c14-4803-baf0-993d5ea14115","savedPayload":{"position":{"x":36878.81409778312,"y":37811.18488124622},"targetPosition":{"x":36804.35045348051,"y":38164.65517717734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"66e824e8-bcb1-4d2f-b0c0-71d69c21c21d","savedPayload":{"position":{"x":36804.35045348051,"y":38164.65517717734},"targetPosition":{"x":36919.31507199806,"y":38517.78419359422},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"45d39511-6b07-4481-aae9-2db4bb322f55","savedPayload":{"position":{"x":37645.47698032333,"y":37417.07960238308},"targetPosition":{"x":37719.483475408015,"y":37771.41530832327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"af39b8d4-dff2-4b71-85b8-25f18c617aca","savedPayload":{"position":{"x":37719.483475408015,"y":37771.41530832327},"targetPosition":{"x":37998.26884583854,"y":38081.04302975247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"P 2","formula":{"type":"Formula","name":"New Formula","code":"chart.at01hs.bollingerBand.movingAverage * 0.7","id":"6e57c877-ec29-43b0-9003-6a4bc491437b","savedPayload":{"position":{"x":37123.673518854666,"y":37578.28228771735},"targetPosition":{"x":37477.47085753678,"y":37502.751020152165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"4H Previous %B < 15","javascriptCode":{"type":"Javascript Code","code":"chart.at04hs.percentageBandwidth.previous.movingAverage <= 15","id":"70a8d00a-b4e5-4bf7-b778-5044173db6e0","savedPayload":{"position":{"x":39095.28366757773,"y":23824.55724770549},"targetPosition":{"x":38939.236650233164,"y":24112.288616142716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"02fdb9bc-e3fe-4133-9992-33c81371e710","savedPayload":{"position":{"x":38939.236650233164,"y":24112.288616142716},"targetPosition":{"x":38783.113300603865,"y":24400.36665938613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"74c4dbfb-5dee-4404-9eda-2f93ba6fc5b5","savedPayload":{"position":{"x":38783.113300603865,"y":24400.36665938613},"targetPosition":{"x":38619.56548827452,"y":24703.162766335157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"4H %B < 50","javascriptCode":{"type":"Javascript Code","code":"chart.at04hs.percentageBandwidth.movingAverage <= 50","id":"0ecf3b89-510e-41e2-bb99-fca45f1ecade","savedPayload":{"position":{"x":39442.87020196239,"y":24151.351004611926},"targetPosition":{"x":39188.67891163997,"y":24357.411876802467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a9031b3b-9d32-42c7-929d-7d83f7fa0fac","savedPayload":{"position":{"x":39188.67891163997,"y":24357.411876802467},"targetPosition":{"x":38934.19750632295,"y":24563.647489037638},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Up","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","id":"6131bc6f-dacb-4247-a4fc-d18f8d204491","savedPayload":{"position":{"x":39580.56303830054,"y":24461.174123319546},"targetPosition":{"x":39257.561077343926,"y":24512.492499343785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4f96a644-8447-4406-94c9-d466e0d4d7f9","savedPayload":{"position":{"x":39257.561077343926,"y":24512.492499343785},"targetPosition":{"x":38934.19750632295,"y":24563.647489037638},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9253d35a-1ff4-4889-aa4c-d2d9cc495879","savedPayload":{"position":{"x":38934.19750632295,"y":24563.647489037638},"targetPosition":{"x":38619.56548827452,"y":24703.162766335157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"ca7f0fa8-4f3b-4090-bc50-ff76e84401f2","savedPayload":{"position":{"x":37645.390607520996,"y":36986.95975213837},"targetPosition":{"x":37477.47085753678,"y":37502.751020152165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"cbc568dd-3da9-4818-8501-6c7f48b2a42e","savedPayload":{"position":{"x":37477.47085753678,"y":37502.751020152165},"targetPosition":{"x":37719.351357304564,"y":37771.2685613444},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"P 3","formula":{"type":"Formula","name":"New Formula","code":"chart.at01hs.bollingerBand.movingAverage * 0.8","id":"b20cc025-3f64-4362-bc52-a43fa66de135","savedPayload":{"position":{"x":36881.70445408725,"y":37309.54973227244},"targetPosition":{"x":37235.66361686782,"y":37234.23427038164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"6H Previous %B < 15","javascriptCode":{"type":"Javascript Code","code":"chart.at06hs.percentageBandwidth.previous.movingAverage <= 15","id":"ad489932-52d2-423a-bb47-db08d9934027","savedPayload":{"position":{"x":38758.44836752868,"y":23755.239222396136},"targetPosition":{"x":38602.32683408404,"y":24043.072244998246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d0a8b6d2-862f-4dc8-894f-98a147328521","savedPayload":{"position":{"x":38602.32683408404,"y":24043.072244998246},"targetPosition":{"x":38446.14108032258,"y":24331.18178259382},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"51dea0e4-a5b0-419e-9077-f5d60ad8e4cd","savedPayload":{"position":{"x":38446.14108032258,"y":24331.18178259382},"targetPosition":{"x":38282.59988559103,"y":24634.00671373957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"5H %B < 50","javascriptCode":{"type":"Javascript Code","code":"chart.at06hs.percentageBandwidth.movingAverage <= 50","id":"10317b11-632c-4cbf-ad84-7ec0b75f999e","savedPayload":{"position":{"x":39106.043376483954,"y":24082.357912015104},"targetPosition":{"x":38852.0138489145,"y":24288.28628630845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8beb8b51-1353-4670-b392-b4e6c9c2cdf0","savedPayload":{"position":{"x":38852.0138489145,"y":24288.28628630845},"targetPosition":{"x":38597.4174425729,"y":24494.479476611465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Up","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","id":"d87940c6-f532-4acd-96da-06e846214122","savedPayload":{"position":{"x":39248.12095563177,"y":24562.18205430526},"targetPosition":{"x":38923.063182735765,"y":24528.343272622315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b2b584bd-42c3-4a54-94d1-afcc2e676afc","savedPayload":{"position":{"x":38923.063182735765,"y":24528.343272622315},"targetPosition":{"x":38597.4174425729,"y":24494.479476611465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0d104bb9-af75-4f6f-97b6-9d1bbad410b3","savedPayload":{"position":{"x":38597.4174425729,"y":24494.479476611465},"targetPosition":{"x":38282.59988559103,"y":24634.00671373957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"74fa819d-43c6-44b7-8ec4-64bd97c2ce29","savedPayload":{"position":{"x":37403.35609082035,"y":36718.228339963025},"targetPosition":{"x":37235.66361686782,"y":37234.23427038164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"d909c920-b2a7-457f-96a4-1841a61b0428","savedPayload":{"position":{"x":37235.66361686782,"y":37234.23427038164},"targetPosition":{"x":37477.47085753678,"y":37502.751020152165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"P 4","formula":{"type":"Formula","name":"New Formula","code":"chart.at01hs.bollingerBand.movingAverage * 0.85","id":"72e1f768-6908-4402-8935-41705cb7c2e1","savedPayload":{"position":{"x":36639.719261117294,"y":37040.835415176},"targetPosition":{"x":36993.67034881964,"y":36965.518108290045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"8H %B 0< 15 && 1H Extreme","javascriptCode":{"type":"Javascript Code","code":"chart.at08hs.percentageBandwidth.previous.movingAverage <= 15 && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >= 5","id":"72c3f3e2-037a-4840-a2ac-5f682a578c14","savedPayload":{"position":{"x":38581.192660951296,"y":23357.203271860784},"targetPosition":{"x":38425.05966753133,"y":23645.00171050403},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a3c4a2c7-bb79-4d9d-9a6f-bd56fc231211","savedPayload":{"position":{"x":38425.05966753133,"y":23645.00171050403},"targetPosition":{"x":38268.87843383244,"y":23933.009475191215},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ea20d7db-4468-457c-b65f-a52744fb6fc5","savedPayload":{"position":{"x":38268.87843383244,"y":23933.009475191215},"targetPosition":{"x":38105.18512490003,"y":24235.716473532153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"8H %B < 40 && 1H Extreme","javascriptCode":{"type":"Javascript Code","code":"chart.at08hs.percentageBandwidth.movingAverage <= 40 && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >= 3","id":"6485a5b2-2959-4358-947e-98d0f3c88011","savedPayload":{"position":{"x":38928.45727373918,"y":23683.993049232267},"targetPosition":{"x":38674.42610359463,"y":23889.893522129616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d8553226-ae92-4b87-ae86-5b53607d3bd3","savedPayload":{"position":{"x":38674.42610359463,"y":23889.893522129616},"targetPosition":{"x":38419.93984250901,"y":24096.06476414634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Previous Up","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.direction === \"Up\"","id":"d1a82d5f-7ff4-4c23-9147-a13f5199f21f","savedPayload":{"position":{"x":39066.26061963913,"y":23993.76981399158},"targetPosition":{"x":38743.361347523205,"y":24044.905118069637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c80b06ad-0f63-41c0-a485-0bc97313fd48","savedPayload":{"position":{"x":38743.361347523205,"y":24044.905118069637},"targetPosition":{"x":38419.93984250901,"y":24096.06476414634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5a234bc0-ff31-4650-878e-c21a11204d2a","savedPayload":{"position":{"x":38419.93984250901,"y":24096.06476414634},"targetPosition":{"x":38105.18512490003,"y":24235.716473532153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"248f0567-8e65-41c6-9580-71229332c7bb","savedPayload":{"position":{"x":37161.34984379471,"y":36449.52108039478},"targetPosition":{"x":36993.67034881964,"y":36965.518108290045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"d52d95cd-0d77-468c-a7f1-497c2476fe33","savedPayload":{"position":{"x":36993.67034881964,"y":36965.518108290045},"targetPosition":{"x":37235.66361686782,"y":37234.23427038164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"P 5","formula":{"type":"Formula","name":"New Formula","code":"chart.at01hs.bollingerBand.movingAverage * 0.9","id":"a39ae165-abd6-4725-ac6a-4edbef7200e4","savedPayload":{"position":{"x":36397.927516872434,"y":36772.33414032389},"targetPosition":{"x":36751.67517349713,"y":36696.80653466926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Complex","javascriptCode":{"type":"Javascript Code","code":"chart.at12hs.percentageBandwidth.previous.movingAverage <= 15 && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >= 15","id":"0d7d916c-3334-4422-8998-28f78bcbaf78","savedPayload":{"position":{"x":38403.40820952374,"y":22958.866947718074},"targetPosition":{"x":38247.427671825695,"y":23246.484302921846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"60ecd582-0e23-4c8a-8077-7201d263cca2","savedPayload":{"position":{"x":38247.427671825695,"y":23246.484302921846},"targetPosition":{"x":38091.48126852204,"y":23534.18274834644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4d364cc4-cdb0-4fba-bc23-235dcb482a4e","savedPayload":{"position":{"x":38091.48126852204,"y":23534.18274834644},"targetPosition":{"x":37927.78567340919,"y":23837.28259007545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Complex","javascriptCode":{"type":"Javascript Code","code":"(chart.at24hs.percentageBandwidth.movingAverage <= 70 || chart.at12hs.percentageBandwidth.movingAverage <= 40 ) && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >=5","id":"ddebbd89-cba4-4d06-8fe9-a13fcbd4ba18","savedPayload":{"position":{"x":38751.39324533973,"y":23285.45315485731},"targetPosition":{"x":38496.90045390723,"y":23491.574349626986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2bf45ba3-ea96-40d1-a8eb-1f5b58eb97e3","savedPayload":{"position":{"x":38496.90045390723,"y":23491.574349626986},"targetPosition":{"x":38242.39927197236,"y":23697.808863410057},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Prev Prev Up","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.previous.direction === \"Up\"","id":"877fda2b-35d0-45b5-9457-3f791f5ceeb0","savedPayload":{"position":{"x":38889.23962386316,"y":23595.32788156618},"targetPosition":{"x":38565.87043381485,"y":23646.669839478735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"658ac695-5997-4780-9d05-8ca8cdd9cd6a","savedPayload":{"position":{"x":38565.87043381485,"y":23646.669839478735},"targetPosition":{"x":38242.39927197236,"y":23697.808863410057},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"11b94bab-c0d6-4b49-95c2-4a65f5794288","savedPayload":{"position":{"x":38242.39927197236,"y":23697.808863410057},"targetPosition":{"x":37927.78567340919,"y":23837.28259007545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"6b6a705b-b008-4784-8e06-a7ff7138725b","savedPayload":{"position":{"x":36919.53108689965,"y":36181.04089190527},"targetPosition":{"x":36751.67517349713,"y":36696.80653466926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"46eafddb-7478-432f-818f-0c458b59171b","savedPayload":{"position":{"x":36751.67517349713,"y":36696.80653466926},"targetPosition":{"x":36993.67034881964,"y":36965.518108290045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"P 6","formula":{"type":"Formula","name":"New Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation * 1.75","id":"29d4e7bb-f154-44c4-825c-24719949e808","savedPayload":{"position":{"x":36155.847420315156,"y":36503.50679003895},"targetPosition":{"x":36509.86113728645,"y":36428.31398649218},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.percentageBandwidth.previous.movingAverage <= 30 && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >=10","id":"d5ac2bb6-e328-40f7-bae6-26c46b85f9ea","savedPayload":{"position":{"x":38107.53734527356,"y":22505.762078589294},"targetPosition":{"x":37990.45613174171,"y":22811.306302613724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c57b02c1-e38e-4c24-8ca0-5d5790f8c475","savedPayload":{"position":{"x":37990.45613174171,"y":22811.306302613724},"targetPosition":{"x":37873.25775225426,"y":23117.38634223553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cbfd82c7-c57c-4d1e-9a95-b05ad5765eca","savedPayload":{"position":{"x":37873.25775225426,"y":23117.38634223553},"targetPosition":{"x":37750.48960588877,"y":23438.901344713326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"(chart.at24hs.percentageBandwidth.movingAverage <= 60 || chart.at12hs.percentageBandwidth.movingAverage <= 30 ) && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >=5","id":"7af7ef05-50d0-4db9-ae3c-8aed6a9842cd","savedPayload":{"position":{"x":38573.57049098062,"y":22887.061402755466},"targetPosition":{"x":38319.526790868775,"y":23092.99616698178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0b79e13b-e44f-41bb-9450-47881760fb81","savedPayload":{"position":{"x":38319.526790868775,"y":23092.99616698178},"targetPosition":{"x":38065.163363473235,"y":23299.178779751797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Prev Prev Up","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.previous.direction === \"Up\"","id":"8c6bbc80-2d99-434a-ad29-12505c118c41","savedPayload":{"position":{"x":38711.42669325896,"y":23196.920325496787},"targetPosition":{"x":38388.52593116485,"y":23248.079186638875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ce4d9250-7aee-432f-b0f7-a25a0d3739d1","savedPayload":{"position":{"x":38388.52593116485,"y":23248.079186638875},"targetPosition":{"x":38065.163363473235,"y":23299.178779751797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"defc1a9e-ccaa-424b-be17-0efc30e2c0a6","savedPayload":{"position":{"x":38065.163363473235,"y":23299.178779751797},"targetPosition":{"x":37750.48960588877,"y":23438.901344713326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"9fb1dbd3-fed7-424c-add0-f6b7481dab05","savedPayload":{"position":{"x":36677.40095650645,"y":35912.263010028604},"targetPosition":{"x":36509.86113728645,"y":36428.31398649218},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"8c0276f0-0551-4ce2-9287-0c9bfe22085a","savedPayload":{"position":{"x":36509.86113728645,"y":36428.31398649218},"targetPosition":{"x":36751.67517349713,"y":36696.80653466926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"P 7","formula":{"type":"Formula","name":"New Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation * 1.25","id":"4e6d15ed-8c85-43cd-90e3-a73eeed22389","savedPayload":{"position":{"x":35913.69364895766,"y":36234.526743577786},"targetPosition":{"x":36267.74802080292,"y":36159.484072680585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.percentageBandwidth.previous.movingAverage <= 30 && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >=10","id":"c29560f8-3916-4e7b-bd05-ec4c5c70aaad","savedPayload":{"position":{"x":37390.79309470392,"y":22397.395732919955},"targetPosition":{"x":37242.268856997034,"y":22671.563199300526},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"29cd95e8-e310-4279-8fc6-a886eaeb939d","savedPayload":{"position":{"x":37242.268856997034,"y":22671.563199300526},"targetPosition":{"x":37093.56805493957,"y":22946.254914141402},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7849fb9b-2762-47fa-bc35-690f40049780","savedPayload":{"position":{"x":37093.56805493957,"y":22946.254914141402},"targetPosition":{"x":36941.805363861866,"y":23227.807257140754},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"(chart.at24hs.percentageBandwidth.movingAverage <= 50 || chart.at12hs.percentageBandwidth.movingAverage <= 17.5 ) && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >=5","id":"f15eb65a-7dfa-4d09-b624-3a3d3e2b6420","savedPayload":{"position":{"x":37766.17341484961,"y":22772.149326368803},"targetPosition":{"x":37500.399617650364,"y":22934.970548128098},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b4307590-5fe4-4997-a25c-3221fcaea5ea","savedPayload":{"position":{"x":37500.399617650364,"y":22934.970548128098},"targetPosition":{"x":37234.474504860445,"y":23098.08235731443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.previous.direction === \"Up\"","id":"98b65fea-6bb0-4a9a-8d31-3997e56c6c63","savedPayload":{"position":{"x":37850.64581785489,"y":23000.857729337895},"targetPosition":{"x":37542.62101798352,"y":23049.46774867349},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7a79c0f2-514b-441a-ae08-5e1c1d815095","savedPayload":{"position":{"x":37542.62101798352,"y":23049.46774867349},"targetPosition":{"x":37234.474504860445,"y":23098.08235731443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e2165070-d0eb-428c-a168-dfacb74f0844","savedPayload":{"position":{"x":37234.474504860445,"y":23098.08235731443},"targetPosition":{"x":36941.805363861866,"y":23227.807257140754},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"5ea9ce09-4324-4961-a5c0-9018bd9e8d36","savedPayload":{"position":{"x":36435.1328979775,"y":35643.39305318931},"targetPosition":{"x":36267.74802080292,"y":36159.484072680585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"64a62511-14f3-45ad-897b-543abba98920","savedPayload":{"position":{"x":36267.74802080292,"y":36159.484072680585},"targetPosition":{"x":36509.86113728645,"y":36428.31398649218},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"P 8","formula":{"type":"Formula","name":"New Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation","id":"96ea6099-ad3a-4240-95d9-1486bb21c131","savedPayload":{"position":{"x":35820.80737407909,"y":35663.13346569055},"targetPosition":{"x":36062.79156599912,"y":35931.90237114163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"cd3e2a56-39ae-4a5e-8190-f2b65ba6f8e2","savedPayload":{"position":{"x":36025.512511582,"y":35890.48948466867},"targetPosition":{"x":36267.74802080292,"y":36159.484072680585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1d7d8a99-1d8d-41e4-9544-61ae4667aa1a","savedPayload":{"position":{"x":37997.731149400504,"y":38080.77507093165},"targetPosition":{"x":38239.906500259654,"y":38349.67218785789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"fa22b9a6-5479-4409-b77a-b9a20b365f95","savedPayload":{"position":{"x":38239.906500259654,"y":38349.67218785789},"targetPosition":{"x":38927.62779426456,"y":38573.1427484218},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","initialTargets":{"type":"Initial Targets","name":"New Initial Targets","targetRate":{"type":"Target Rate","name":"New Target Rate","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.episode.candle.close.value","id":"00a8423d-4604-4d28-aa43-0fe8410c1a4e","savedPayload":{"position":{"x":37401.44059632813,"y":37921.04684801582},"targetPosition":{"x":37761.848301948994,"y":37883.45547613313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"62dec497-f190-41dc-b7a6-430ffb78fa3c","savedPayload":{"position":{"x":37761.848301948994,"y":37883.45547613313},"targetPosition":{"x":38172.78380977332,"y":37840.76342402955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"targetSizeInQuotedAsset":{"type":"Target Size In Quoted Asset","name":"New Target Size In Quoted Asset","formula":{"type":"Formula","name":"New Formula","code":"tradingEngine.current.strategyOpenStage.stageQuotedAsset.sizeFilled.value","id":"8bbc979f-5425-49af-807b-38944be9b312","savedPayload":{"position":{"x":37716.52205107189,"y":37212.771910899246},"targetPosition":{"x":37929.68327044104,"y":37506.09375449242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e4a38608-0a48-4e4c-b291-36ee1a1b85c5","savedPayload":{"position":{"x":37929.68327044104,"y":37506.09375449242},"targetPosition":{"x":38172.78380977332,"y":37840.76342402955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7421d18f-87c9-4790-8e17-16642ba1efac","savedPayload":{"position":{"x":38172.67307151798,"y":37840.51461422291},"targetPosition":{"x":38502.94200324415,"y":37988.0066859243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeExecution":{"type":"Close Execution","executionAlgorithms":[{"type":"Execution Algorithm","name":"New Execution Algorithm","config":"{\n\"percentageOfStageTargetSize\": 100 \n}","marketBuyOrders":[{"type":"Market Buy Order","name":"Quick Exit","config":"{\n\"percentageOfAlgorithmSize\": 100,\n\"spawnMultipleOrders\": false\n}","createOrderEvent":{"type":"Create Order Event","name":"New Create Order Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"f9b6428b-706c-4762-b526-e65ce3a9eba1","savedPayload":{"position":{"x":38237.49768339514,"y":35463.01675840832},"targetPosition":{"x":38275.454039843986,"y":35821.99148363482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7ce28ab2-846f-44e3-8d42-66e702d7cf6f","savedPayload":{"position":{"x":38275.454039843986,"y":35821.99148363482},"targetPosition":{"x":38313.994405293095,"y":36181.30500045379},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"17c82be6-9c06-467f-8e89-bc76d7f3b0d8","savedPayload":{"position":{"x":38313.994405293095,"y":36181.30500045379},"targetPosition":{"x":38352.4954254265,"y":36550.68025814189},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"acb7cd15-47a6-4b89-a991-02d53cbd5d88","savedPayload":{"position":{"x":38346.818204093506,"y":36496.90268810249},"targetPosition":{"x":38384.51332706088,"y":36856.574213304106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4f521b37-053e-45a1-9cc0-a2b54430a6f1","savedPayload":{"position":{"x":38384.51332706088,"y":36856.574213304106},"targetPosition":{"x":38422.20454511751,"y":37216.258944229055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market Order","name":"Market Buy Order #1","id":"7d6c3ac9-4869-4ff3-a9f2-2a6f8a31ccf3"}}}],"marketSellOrders":[],"limitBuyOrders":[],"limitSellOrders":[],"id":"7bacad1e-a99b-4dee-ba33-4857babf5f60","savedPayload":{"position":{"x":38422.20454511751,"y":37216.258944229055},"targetPosition":{"x":38465.36830558222,"y":37628.21501351909},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2fb3a68a-bccc-4f15-a093-81d7230e3534","savedPayload":{"position":{"x":38465.34585035881,"y":37628.101614423605},"targetPosition":{"x":38502.94200324415,"y":37988.0066859243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"b0b4389a-74f6-4807-af15-1b8c43c247cb","savedPayload":{"position":{"x":38502.94200324415,"y":37988.0066859243},"targetPosition":{"x":38927.62779426456,"y":38573.1427484218},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c6dfb2a4-3e3d-4a44-a9da-00251dae88a7","savedPayload":{"position":{"x":38927.62779426456,"y":38573.1427484218},"targetPosition":{"x":39651.04913415892,"y":38573},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"975c2fc3-a8f5-43e9-900f-4a4f2430d128","savedPayload":{"position":{"x":39652.04913415892,"y":25001},"targetPosition":{"x":39652.04913415892,"y":25001},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"w"}}} \ No newline at end of file diff --git a/Includes/Workspaces/Default.json b/Includes/Workspaces/Default.json new file mode 100644 index 000000000..7b19d78a4 --- /dev/null +++ b/Includes/Workspaces/Default.json @@ -0,0 +1 @@ +{"type":"Workspace","name":"My Default Workspace","rootNodes":[{"type":"Network","name":"My Network","networkNodes":[{"type":"Network Node","name":"My Computer","config":"{ \n\"host\": \"localhost\", \n\"webPort\": \"34248\", \n\"webSocketsPort\": \"8081\"\n}","dataMining":{"type":"Data Mining","name":"New Data Mining","exchangeDataTasks":[{"type":"Exchange Data Tasks","name":"Binance","marketDataTasks":[{"type":"Market Data Tasks","name":"Binance BTC/USDT","dataMineTasks":[{"type":"Data Mine Tasks","name":"Masters","taskManagers":[{"type":"Task Manager","name":"Masters","tasks":[{"type":"Task","name":"Exchange Raw Data","bot":{"type":"Sensor Bot Instance","name":"Exchange Raw Data","config":"{ \n\"startDate\": \"2020-01-01\"\n}","processes":[{"type":"Sensor Process Instance","name":"Exchange Raw Data Historic-OHLCVs","id":"d244c564-4e86-43c7-9796-dc3b6294ec8b","savedPayload":{"position":{"x":23350.72155964175,"y":27974.73694646384},"targetPosition":{"x":23796.134845502005,"y":28201.58542120731},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"343313ae-5705-484d-8bf8-aed25ba61cfa","savedPayload":{"position":{"x":23796.134845502005,"y":28201.58542120731},"targetPosition":{"x":24241.458369037155,"y":28428.234646351164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a8f38508-1cac-4ab1-815f-d338fc813377","savedPayload":{"position":{"x":24241.75852203732,"y":28428.208299607475},"targetPosition":{"x":24687.278008317153,"y":28654.76075777684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Volumes","bot":{"type":"Indicator Bot Instance","name":"Candles Volumes","config":"{}","processes":[{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Market","id":"f0ef12ed-f0fd-4b88-8e15-27cf24265a5f","savedPayload":{"position":{"x":24006.72050468727,"y":27369.71288635874},"targetPosition":{"x":24378.211094165374,"y":27704.217502769996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","id":"7c8b312c-09bf-4c59-853f-1592391a9c57","savedPayload":{"position":{"x":24482.007917121682,"y":27215.198820322174},"targetPosition":{"x":24378.211094165374,"y":27704.217502769996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"8d58e84b-d7ef-464f-8079-0ec0887e3da3","savedPayload":{"position":{"x":24378.211094165374,"y":27704.217502769996},"targetPosition":{"x":24532.587246191903,"y":28179.44371808849},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"bf29e3bd-9386-408b-9091-042da0c53e81","savedPayload":{"position":{"x":24532.888249874817,"y":28179.42182195281},"targetPosition":{"x":24687.278008317153,"y":28654.76075777684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Resistances and Supports","bot":{"type":"Indicator Bot Instance","name":"Resistances and Supports","config":"{}","processes":[{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Market","id":"a707814e-b81b-4102-9b5b-4e2fe969324f","savedPayload":{"position":{"x":25114.95430215858,"y":27265.22588761826},"targetPosition":{"x":25140.944779828777,"y":27764.465158604555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"5d9b2729-43fb-4e7e-aa4f-b8477c424e51"}}},{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Daily","id":"c5395fbe-4b5a-4492-a7fb-e2d259905e27","savedPayload":{"position":{"x":25560.208138746566,"y":27492.2415577616},"targetPosition":{"x":25140.944779828777,"y":27764.465158604555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"be19d91b-9337-4f84-96b3-f4e54ea12df5"}}}],"id":"112be2cf-74ea-4272-9566-cf0cd24c111c","savedPayload":{"position":{"x":25140.944779828777,"y":27764.465158604555},"targetPosition":{"x":24914.084833436762,"y":28209.60437273494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e74c3232-7b59-4006-87fa-b3b2a328a52b","savedPayload":{"position":{"x":24914.38837406222,"y":28209.58287583817},"targetPosition":{"x":24687.278008317153,"y":28654.76075777684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c193ecbb-c3e0-4fd5-94ed-bb6356d1d5ea","savedPayload":{"position":{"x":24687.278008317153,"y":28654.76075777684},"targetPosition":{"x":24841.56187502779,"y":29129.815880564045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"85224e5e-f3ee-4e8d-b9bd-e5901bd49b33","savedPayload":{"position":{"x":24841.56187502779,"y":29129.815880564045},"targetPosition":{"x":24995.89253371458,"y":29604.972474772334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Mine","name":"Masters","id":"35be7b1c-a0f7-4b5f-9ee1-8fb51595e959"}}}],"id":"70d459d6-d270-49e0-b70d-2053c65a40e2","savedPayload":{"position":{"x":24995.89253371458,"y":29604.972474772334},"targetPosition":{"x":25150.241850623457,"y":30080.189364926984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"9a867bf0-a71d-445c-b99a-75b60bbdce09"}}}],"id":"af949a76-a6f4-4ec6-869e-f240480eea81","savedPayload":{"position":{"x":25150.241850623457,"y":30080.189364926984},"targetPosition":{"x":25304.624364815336,"y":30555.516801789207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"61ef0b8d-de6e-4e76-bdd5-996836760a4b"}}}],"id":"4df1cb4e-b9ca-4f62-bb5f-c7e262aaa22a","savedPayload":{"position":{"x":25304.77672338715,"y":30555.384279964088},"targetPosition":{"x":25459.154085934722,"y":31030.919489208696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"testingEnvironment":{"type":"Testing Environment","name":"New Testing Environment","exchangeTradingTasks":[{"type":"Exchange Trading Tasks","name":"Binance","marketTradingTasks":[{"type":"Market Trading Tasks","name":"Binance BTC/USDT","tradingMineTasks":[{"type":"Trading Mine Tasks","name":"Masters","taskManagers":[{"type":"Task Manager","name":"Masters","tasks":[{"type":"Task","name":"Lightning Strike","bot":{"type":"Trading Bot Instance","name":"Low Frequency","config":"{}","processes":[{"type":"Trading Process Instance","name":"Low Frequency Trading","session":{"type":"Backtesting Session","name":"Lightning Strike","config":"{\"folderName\":\"Lightning-Strike\"}","parameters":{"type":"Parameters","name":"New Parameters","sessionBaseAsset":{"type":"Session Base Asset","name":"","config":"{\n\"initialBalance\": 0,\n\"minimumBalance\": 0\n}","id":"fb252bd6-3e7d-49a0-9fc6-be392be5db5b","savedPayload":{"position":{"x":28729.89318678086,"y":27667.892046277073},"targetPosition":{"x":29175.517263857226,"y":27894.46046119258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"sessionQuotedAsset":{"type":"Session Quoted Asset","name":"","config":"{\n\"initialBalance\": 1000\n}","id":"ed578090-732c-4e41-a4ae-9d4f34607170","savedPayload":{"position":{"x":28821.970172747573,"y":27540.953235210563},"targetPosition":{"x":29175.517263857226,"y":27894.46046119258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeRange":{"type":"Time Range","name":"New Time Range","config":"{ \n\"initialDatetime\": \"2020-09-01\",\n\"finalDatetime\": \"2020-09-02\",\n \"allowStartingFromThePast\": false\n}","id":"47fa4509-16f4-42b7-9453-fa3b3d2885b0","savedPayload":{"position":{"x":28948.579490934622,"y":27448.912697699176},"targetPosition":{"x":29175.517263857226,"y":27894.46046119258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","config":"{ \n\"label\": \"01-min\"\n}","id":"dfe3514c-1aa9-4cea-bb2d-e6657037e69d","savedPayload":{"position":{"x":29097.4570951404,"y":27400.529117732793},"targetPosition":{"x":29175.517263857226,"y":27894.46046119258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","config":"{ \n\"positionRate\": 0.1,\n\"stopLoss\": 0.2,\n\"takeProfit\": 0.3\n}","id":"c711e510-373f-468d-8ed9-1601da6a06f5","savedPayload":{"position":{"x":29253.662667889108,"y":27400.484320478983},"targetPosition":{"x":29175.517263857226,"y":27894.46046119258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","config":"{ \n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"fdc7c383-8301-4393-b415-8c2d542e05fe","savedPayload":{"position":{"x":29402.485264293628,"y":27448.850144452546},"targetPosition":{"x":29175.517263857226,"y":27894.46046119258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"snapshots":{"type":"Snapshots","name":"New Snapshots","config":"{ \n\"strategy\": true,\n\"position\": true\n}","id":"28db17c9-2703-430b-a162-5e04b68640a3","savedPayload":{"position":{"x":29529.122291149688,"y":27540.85822328511},"targetPosition":{"x":29175.517263857226,"y":27894.46046119258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"heartbeats":{"type":"Heartbeats","name":"New Heartbeats","config":"{ \n\"date\": true,\n\"candleIndex\": false\n}","id":"78270062-7d10-4afa-baee-2bda8a4b4ed2","savedPayload":{"position":{"x":29621.149956763424,"y":27667.519735030546},"targetPosition":{"x":29175.517263857226,"y":27894.46046119258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedParameters":{"type":"User Defined Parameters","name":"New User Defined Parameters","config":"{ \n\"param1Name\": \"A text string value example\",\n\"param2Name\": 0\n}","id":"4c9cdc50-70c0-43ee-ad54-052f8b7ecbc8","savedPayload":{"position":{"x":29669.565824011614,"y":27816.632292637445},"targetPosition":{"x":29175.517263857226,"y":27894.46046119258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e79ab7df-ba40-46aa-abcd-63df8031a931","savedPayload":{"position":{"x":29175.517263857226,"y":27894.46046119258},"targetPosition":{"x":29097.595765963924,"y":28387.96547726988},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"tradingSystemReference":{"type":"Trading System Reference","name":"Lightning Strike","id":"c6397744-c7b6-4fad-92a0-6954f282c0c2","savedPayload":{"position":{"x":29502.174668738746,"y":28094.385015558837},"targetPosition":{"x":29097.595408148154,"y":28387.95970328165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Trading System","name":"Lightning Strike","id":"628b758d-ffff-445f-9d4f-8aa480a13db3"}}},"tradingEngineReference":{"type":"Trading Engine Reference","name":"Low-Frequency","id":"720feaab-efc8-435a-bb3c-ab4e33ed1ca2","savedPayload":{"position":{"x":29591.420930214048,"y":28466.271411345042},"targetPosition":{"x":29097.595408148154,"y":28387.95970328165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Trading Engine","name":"Low-Frequency","id":"eb20f622-71bf-4479-a574-d2320e1d4bd1"}}},"id":"ce648922-fef2-44e3-8d76-2bd7ab72a29f","savedPayload":{"position":{"x":29097.595408148154,"y":28387.95970328165},"targetPosition":{"x":28693.36834330261,"y":28681.41671045473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"60a5e5c0-cfb3-4488-b46c-55d637212aa5","savedPayload":{"position":{"x":28693.36834330261,"y":28681.41671045473},"targetPosition":{"x":28289.188836864516,"y":28974.995788203585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Trading","id":"a8c8d761-96e5-4a86-9285-6c3881d61442"}}}],"id":"cbfbb9e7-9c30-4482-8a9f-4c90771feffc","savedPayload":{"position":{"x":28289.188836864516,"y":28974.995788203585},"targetPosition":{"x":27885.03613330415,"y":29268.5874780909},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"08222935-2499-4a3e-a927-4f5dfbc392df","savedPayload":{"position":{"x":27885.03613330415,"y":29268.5874780909},"targetPosition":{"x":27480.697687274227,"y":29562.330996667864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"56c5656b-a7e0-42ed-92d6-631e78ca99d0","savedPayload":{"position":{"x":27480.697687274227,"y":29562.330996667864},"targetPosition":{"x":27076.450215078683,"y":29855.996688596668},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1ce02342-473e-4614-ac76-c7788f56ab8e","savedPayload":{"position":{"x":27076.450215078683,"y":29855.996688596668},"targetPosition":{"x":26672.163652311876,"y":30149.686344745624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Trading Mine","name":"Masters","id":"6a54eece-4582-4cda-a854-1cd805e00fed"}}}],"id":"2db856e0-4719-408c-88bc-5b47d412c066","savedPayload":{"position":{"x":26672.163652311876,"y":30149.686344745624},"targetPosition":{"x":26267.85576091813,"y":30443.386159792655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"9a867bf0-a71d-445c-b99a-75b60bbdce09"}}}],"id":"ba36975c-08d6-458d-b7c0-eb4684a85b5d","savedPayload":{"position":{"x":26267.85576091813,"y":30443.386159792655},"targetPosition":{"x":25863.473483628393,"y":30737.135957180035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"61ef0b8d-de6e-4e76-bdd5-996836760a4b"}}}],"id":"5882d8a8-345b-4188-b1c1-797e9ff805d9","savedPayload":{"position":{"x":25863.64971146697,"y":30737.071444003475},"targetPosition":{"x":25459.154085934722,"y":31030.919489208696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"productionEnvironment":{"type":"Production Environment","name":"New Production Environment","exchangeTradingTasks":[{"type":"Exchange Trading Tasks","name":"Binance","marketTradingTasks":[{"type":"Market Trading Tasks","name":"Binance BTC/USDT","tradingMineTasks":[{"type":"Trading Mine Tasks","name":"Masters","taskManagers":[{"type":"Task Manager","name":"Masters","tasks":[{"type":"Task","name":"Lightning Strike","bot":{"type":"Trading Bot Instance","name":"Low Frequency","config":"{}","processes":[{"type":"Trading Process Instance","name":"Low Frequency Trading","session":{"type":"Live Trading Session","name":"Lightning Strike","config":"{\"folderName\":\"Lightning-Strike\"}","parameters":{"type":"Parameters","name":"New Parameters","sessionBaseAsset":{"type":"Session Base Asset","name":"","config":"{\n\"initialBalance\": 0,\n\"minimumBalance\": 0\n}","id":"5db563b5-a8d6-48c6-a34e-bbca8825ce37","savedPayload":{"position":{"x":29136.33779719249,"y":31900.557007311294},"targetPosition":{"x":29513.77662209029,"y":32228.37801386833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"sessionQuotedAsset":{"type":"Session Quoted Asset","name":"","config":"{\n\"initialBalance\": 20\n}","id":"f6cd46c1-66df-422c-82d4-02ac8e37f689","savedPayload":{"position":{"x":29271.38185908932,"y":31791.1034306834},"targetPosition":{"x":29513.77662209029,"y":32228.37801386833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","config":"{ \n\"label\": \"01-min\"\n}","id":"727de4cc-40e6-4064-843c-8cb3a9f2fcdf","savedPayload":{"position":{"x":29435.611912240918,"y":31734.531513385184},"targetPosition":{"x":29513.77662209029,"y":32228.37801386833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","config":"{ \n\"positionRate\": 0.1,\n\"stopLoss\": 0.2,\n\"takeProfit\": 0.3\n}","id":"598dc355-73c9-4e7f-a0e9-ee5fd7952825","savedPayload":{"position":{"x":29609.068802022866,"y":31737.555437792893},"targetPosition":{"x":29513.77662209029,"y":32228.37801386833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","config":"{ \n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"a3646bab-4d27-48a7-b17c-79d6da48f64d","savedPayload":{"position":{"x":29771.213170410017,"y":31799.79563397899},"targetPosition":{"x":29513.77662209029,"y":32228.37801386833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"snapshots":{"type":"Snapshots","name":"New Snapshots","config":"{ \n\"strategy\": true,\n\"position\": true\n}","id":"5021a926-442a-4341-8844-8a432293ecb1","savedPayload":{"position":{"x":29902.294526505633,"y":31913.74413225854},"targetPosition":{"x":29513.77662209029,"y":32228.37801386833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"heartbeats":{"type":"Heartbeats","name":"New Heartbeats","config":"{ \n\"date\": true,\n\"candleIndex\": false\n}","id":"e8cedec0-1bc2-46ba-98de-b7ff746a74c8","savedPayload":{"position":{"x":29986.506569957906,"y":32065.668420774917},"targetPosition":{"x":29513.77662209029,"y":32228.37801386833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"userDefinedParameters":{"type":"User Defined Parameters","name":"New User Defined Parameters","config":"{ \n\"param1Name\": \"A text string value example\",\n\"param2Name\": 0\n}","id":"67da1d57-62ff-424c-ab2e-034e008fc079","savedPayload":{"position":{"x":30013.68034443371,"y":32237.1490071955},"targetPosition":{"x":29513.77662209029,"y":32228.37801386833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"726c35b1-e30b-4620-819f-a88a955f1902","savedPayload":{"position":{"x":29513.77662209029,"y":32228.37801386833},"targetPosition":{"x":29334.86323334934,"y":32695.002812706356},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"tradingSystemReference":{"type":"Trading System Reference","name":"Lightning Strike","id":"ff1cd7c1-9415-4c49-8ecf-188fd0c60ea4","savedPayload":{"position":{"x":29791.614691734634,"y":32491.98444885297},"targetPosition":{"x":29334.86323334934,"y":32695.002812706356},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Trading System","name":"Lightning Strike","id":"628b758d-ffff-445f-9d4f-8aa480a13db3"}}},"tradingEngineReference":{"type":"Trading Engine Reference","name":"Low-Frequency","id":"5fd0a826-0819-4f19-a999-66cc64be0272","savedPayload":{"position":{"x":29801.561287125278,"y":32874.31813935596},"targetPosition":{"x":29334.86323334934,"y":32695.002812706356},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Trading Engine","name":"Low-Frequency","id":"eb20f622-71bf-4479-a574-d2320e1d4bd1"}}},"id":"1ce123af-467f-4295-b317-dba8729faf25","savedPayload":{"position":{"x":29334.86323334934,"y":32695.002812706356},"targetPosition":{"x":28878.4539791934,"y":32897.99329377132},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Resistances and Supports Multi-Period-Daily","id":"0d54601b-fcac-42c9-8ce6-d532bfc81de5","savedPayload":{"position":{"x":29282.623855251295,"y":33191.91239116231},"targetPosition":{"x":28878.4539791934,"y":32897.99329377132},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"7e2fdde9-8b64-44a3-85f1-10c3935bd3e3"}}},"id":"4d7e7fa0-afcb-4b2f-983b-ceacea91b29d","savedPayload":{"position":{"x":28878.4539791934,"y":32897.99329377132},"targetPosition":{"x":28381.61405979186,"y":32845.699264065865},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Trading","id":"a8c8d761-96e5-4a86-9285-6c3881d61442"}}}],"id":"2451fc98-0396-44df-902c-a3eaa90f0618","savedPayload":{"position":{"x":28381.61405979186,"y":32845.699264065865},"targetPosition":{"x":27884.825314464462,"y":32793.4798823336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"keyReference":{"type":"Key Reference","name":"Key for Lighting Strike","id":"a0622fc9-c4e3-44c3-963d-7ae5fa163e99","savedPayload":{"position":{"x":28087.64901178369,"y":33249.50782050918},"targetPosition":{"x":27884.825314464462,"y":32793.4798823336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"Key for Lighting Strike","id":"e85bbbd6-aca8-450f-9237-788062de5761"}}},"id":"c8492c4a-a7a7-4a80-a25a-a610377e6180","savedPayload":{"position":{"x":27884.825314464462,"y":32793.4798823336},"targetPosition":{"x":27480.530470283273,"y":32499.671050557776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dd73b670-11d7-4cdc-848b-c063fb7a3848","savedPayload":{"position":{"x":27480.530470283273,"y":32499.671050557776},"targetPosition":{"x":27076.338818500477,"y":32205.966385015265},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1e087225-153c-4c7e-b9ec-2a36f32ee511","savedPayload":{"position":{"x":27076.338818500477,"y":32205.966385015265},"targetPosition":{"x":26672.09592394053,"y":31912.249482914292},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Trading Mine","name":"Masters","id":"6a54eece-4582-4cda-a854-1cd805e00fed"}}}],"id":"013985a8-7bf7-4b91-8e2d-f4e8bd81cb62","savedPayload":{"position":{"x":26672.09592394053,"y":31912.249482914292},"targetPosition":{"x":26267.828989419053,"y":31618.52729735555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"9a867bf0-a71d-445c-b99a-75b60bbdce09"}}}],"id":"d539c0ac-aaeb-4c44-9dba-ac26df819a8d","savedPayload":{"position":{"x":26267.828989419053,"y":31618.52729735555},"targetPosition":{"x":25863.48739163261,"y":31324.7565723021},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"61ef0b8d-de6e-4e76-bdd5-996836760a4b"}}}],"id":"65a40d20-837c-4652-8356-f8054b4e1346","savedPayload":{"position":{"x":25863.649316387164,"y":31324.764967100098},"targetPosition":{"x":25459.154085934722,"y":31030.919489208696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"u"}}},"dataStorage":{"type":"Data Storage","name":"New Data Storage","dataMinesData":{"type":"Data Mines Data","name":"New Data Mines Data","exchangeDataProducts":[{"type":"Exchange Data Products","name":"Binance","marketDataProducts":[{"type":"Market Data Products","name":"Binance BTC/USDT","dataProducts":[],"dataMineProducts":[{"type":"Data Mine Products","name":"Masters","botProducts":[{"type":"Bot Products","name":"Candles Volumes","dataProducts":[{"type":"Data Product","name":"Candles","id":"b9c30464-73e5-4f5c-b422-9ba1a02b78ab","savedPayload":{"position":{"x":25884.66459599203,"y":31894.120994910885},"targetPosition":{"x":25787.66459599203,"y":31992.120994910885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"07c11481-7dbd-477d-8bf7-79212542a6aa","savedPayload":{"position":{"x":25866.66459599203,"y":31951.120994910885},"targetPosition":{"x":25787.66459599203,"y":31992.120994910885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}}],"dataProductFolders":[],"id":"73bb62ff-8212-4387-b160-40ee8de2a133","savedPayload":{"position":{"x":25845.779903507893,"y":33321.497149217095},"targetPosition":{"x":25578.21805090708,"y":33024.32447768979},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Bot Products","name":"Resistances and Supports","dataProducts":[{"type":"Data Product","name":"Resistances","id":"a1669770-1bbe-40f7-acb3-ded15272935f","savedPayload":{"position":{"x":25870.66459599203,"y":31844.120994910885},"targetPosition":{"x":25841.66459599203,"y":31926.120994910885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Resistances","id":"7a734501-a0fb-4305-803e-7e95d477c513"}}},{"type":"Data Product","name":"Supports","id":"64899503-b618-493a-ba94-bfad2051a611","savedPayload":{"position":{"x":25893.66459599203,"y":31906.120994910885},"targetPosition":{"x":25841.66459599203,"y":31926.120994910885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Supports","id":"bc3c43de-6312-47d4-ae3d-0c95c1b039e0"}}}],"dataProductFolders":[],"id":"a1855a09-0948-43de-bba7-8900c5c161d8","savedPayload":{"position":{"x":25454.75802462653,"y":33404.65393159308},"targetPosition":{"x":25578.21805090708,"y":33024.32447768979},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d37d8bf1-be3b-49ac-805b-0ddb3944e6a0","savedPayload":{"position":{"x":25578.21805090708,"y":33024.32447768979},"targetPosition":{"x":25495.144011515684,"y":32633.239141691807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Mine","name":"Masters","id":"35be7b1c-a0f7-4b5f-9ee1-8fb51595e959"}}}],"id":"6d7273da-5366-4fe3-9749-e643038abd7a","savedPayload":{"position":{"x":25495.144011515684,"y":32633.239141691807},"targetPosition":{"x":25412.048658067353,"y":32242.067466290595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"9a867bf0-a71d-445c-b99a-75b60bbdce09"}}}],"id":"9bc0aea4-0596-449c-91bd-4fb4cb672aa8","savedPayload":{"position":{"x":25412.048658067353,"y":32242.067466290595},"targetPosition":{"x":25328.970250470935,"y":31850.993320895286},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"61ef0b8d-de6e-4e76-bdd5-996836760a4b"}}}],"id":"32e7c122-fa5a-4d00-9d71-d54e890e32de","savedPayload":{"position":{"x":25328.970250470935,"y":31850.993320895286},"targetPosition":{"x":25235.599390289426,"y":31411.456833117474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"tradingMinesData":{"type":"Trading Mines Data","name":"New Trading Mines Data","exchangeTradingProducts":[{"type":"Exchange Trading Products","name":"Binance","marketTradingProducts":[{"type":"Market Trading Products","name":"Binance BTC/USDT","sessionReferences":[{"type":"Session Reference","name":"Lightning Strike Backtesting Session","dataProducts":[],"tradingMineProducts":[{"type":"Trading Mine Products","name":"Masters","botProducts":[{"type":"Bot Products","name":"Low Frequency","dataProducts":[],"dataProductFolders":[{"type":"Data Product Folder","name":"Trading Engine","dataProducts":[],"dataProductFolders":[{"type":"Data Product Folder","name":"Episode","dataProducts":[{"type":"Data Product","name":"Episode Counters","id":"a01b42b0-ea87-47ab-b0e9-52d4b10cb631","savedPayload":{"position":{"x":24480.592002018682,"y":31761.454740869387},"targetPosition":{"x":24394.592002018682,"y":31753.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Episode Counters","id":"d81c6019-864e-42f5-94ba-2f249b865f85"}}},{"type":"Data Product","name":"Episode Statistics","id":"559a20a7-6697-4245-9d6c-ad7c0e31ff84","savedPayload":{"position":{"x":24330.592002018682,"y":31690.454740869387},"targetPosition":{"x":24394.592002018682,"y":31753.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Episode Statistics","id":"400c7f49-37da-41fb-b83d-879960aa74ff"}}},{"type":"Data Product","name":"Episode Candle","id":"24fab05f-ff78-4cca-af61-d4d0bb2f2960","savedPayload":{"position":{"x":24437.592002018682,"y":31733.454740869387},"targetPosition":{"x":24394.592002018682,"y":31753.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Episode Candle","id":"b9a58113-cf27-4d57-9810-87a2cc158804"}}},{"type":"Data Product","name":"Episode Balances","id":"7c580919-08ce-4aff-9e84-888fdf07caec","savedPayload":{"position":{"x":24298.592002018682,"y":31745.454740869387},"targetPosition":{"x":24394.592002018682,"y":31753.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Episode Balances","id":"a9a53d82-133b-4417-b639-f9a56d338233"}}},{"type":"Data Product","name":"Distance To Event","id":"389797d4-8456-4258-9adf-246a6ba69016","savedPayload":{"position":{"x":24458.592002018682,"y":31765.454740869387},"targetPosition":{"x":24394.592002018682,"y":31753.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Distance To Event","id":"8ea88d6c-7d7f-4152-b781-ea108df52c63"}}},{"type":"Data Product","name":"Episode Base Asset","id":"323c7b0b-42b1-4ff0-9d4b-36c2fd605caa","savedPayload":{"position":{"x":24434.592002018682,"y":31776.454740869387},"targetPosition":{"x":24394.592002018682,"y":31753.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Episode Base Asset","id":"234969ff-eab1-4d59-b6fa-79433c9a20e9"}}},{"type":"Data Product","name":"Episode Quoted Asset","id":"63594fc6-3b89-4507-bca8-2d43ef618cbe","savedPayload":{"position":{"x":24492.592002018682,"y":31682.454740869387},"targetPosition":{"x":24394.592002018682,"y":31753.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Episode Quoted Asset","id":"ae525e31-d6a8-47d2-9021-3f2ddb9615b0"}}},{"type":"Data Product","name":"Current Episode","id":"73bb3f9e-b112-4e5a-bce9-6d4bec41cc6c","savedPayload":{"position":{"x":24323.592002018682,"y":31849.454740869387},"targetPosition":{"x":24394.592002018682,"y":31753.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Current Episode","id":"b8da0132-ba28-46ec-aa54-eb9eaac56ce7"}}}],"dataProductFolders":[],"id":"a606455e-f5ce-4535-b1af-6d9dd529f91c","savedPayload":{"position":{"x":24394.592002018682,"y":31753.454740869387},"targetPosition":{"x":24438.592002018682,"y":31839.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Data Product Folder","name":"Strategy","dataProducts":[{"type":"Data Product","name":"Current Strategy","id":"515f5fd6-d860-44d4-b5d6-a19acd9c5c86","savedPayload":{"position":{"x":24492.592002018682,"y":31734.454740869387},"targetPosition":{"x":24471.592002018682,"y":31803.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Current Strategy","id":"895d8a04-ef45-41a7-909a-ba31013ffb90"}}},{"type":"Data Product","name":"Last Strategy","id":"556e97e8-eba3-419d-869d-950cc99371da","savedPayload":{"position":{"x":24465.592002018682,"y":31852.454740869387},"targetPosition":{"x":24471.592002018682,"y":31803.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Last Strategy","id":"0625f524-2b97-4b4d-8a90-590ffc62ecd3"}}}],"dataProductFolders":[],"id":"3af0887b-ae23-4f57-b376-4a540fe13112","savedPayload":{"position":{"x":24471.592002018682,"y":31803.454740869387},"targetPosition":{"x":24438.592002018682,"y":31839.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Data Product Folder","name":"Position","dataProducts":[{"type":"Data Product","name":"Current Position","id":"d33abc39-702b-4d7a-8435-43d90e0f2c3a","savedPayload":{"position":{"x":24369.592002018682,"y":31805.454740869387},"targetPosition":{"x":24464.592002018682,"y":31882.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Current Position","id":"832ecada-8da3-4ba6-b6e9-be34dd5f7ce9"}}},{"type":"Data Product","name":"Last Position","id":"d681fd5f-64af-4f39-9f6d-a767bef7692f","savedPayload":{"position":{"x":24415.592002018682,"y":31816.454740869387},"targetPosition":{"x":24464.592002018682,"y":31882.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Last Position","id":"477cd6d5-862a-44d0-9313-786a4e63a602"}}}],"dataProductFolders":[],"id":"895feaf2-ae82-4b8e-ada6-780beab73ea9","savedPayload":{"position":{"x":24464.592002018682,"y":31882.454740869387},"targetPosition":{"x":24438.592002018682,"y":31839.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Data Product Folder","name":"Stages","dataProducts":[{"type":"Data Product","name":"Open Stage","id":"b0961496-1af9-48cd-bbeb-ac5973192e78","savedPayload":{"position":{"x":24572.592002018682,"y":31678.454740869387},"targetPosition":{"x":24537.592002018682,"y":31755.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Open Stage","id":"73c3c041-ba2a-4798-a362-a453409b518a"}}},{"type":"Data Product","name":"Close Stage","id":"0c9cf78d-ce6e-4318-811d-e748ca72845d","savedPayload":{"position":{"x":24558.592002018682,"y":31710.454740869387},"targetPosition":{"x":24537.592002018682,"y":31755.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Close Stage","id":"2bb9bb41-1ff5-4f83-aa5b-bfc4c9f06a9a"}}},{"type":"Data Product","name":"Trigger Stage","id":"e298787f-b7f2-4334-931e-38b9441e43f9","savedPayload":{"position":{"x":24521.592002018682,"y":31742.454740869387},"targetPosition":{"x":24537.592002018682,"y":31755.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trigger Stage","id":"b6cff826-9056-4fbd-8eca-cbd6cceec962"}}},{"type":"Data Product","name":"Manage Stage","id":"4719b69d-b23e-4037-8c0a-b641fd8ab14c","savedPayload":{"position":{"x":24461.592002018682,"y":31689.454740869387},"targetPosition":{"x":24537.592002018682,"y":31755.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Manage Stage","id":"bd691611-e7a6-49a8-b07d-c15360b55e40"}}}],"dataProductFolders":[],"id":"9fe11205-286a-4610-81ec-29cbc70d6075","savedPayload":{"position":{"x":24537.592002018682,"y":31755.454740869387},"targetPosition":{"x":24438.592002018682,"y":31839.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Data Product Folder","name":"Orders","dataProducts":[{"type":"Data Product","name":"Market Buy Orders","id":"90834a1b-cc7e-48a9-be5c-0e30380af4bd","savedPayload":{"position":{"x":24500.592002018682,"y":31771.454740869387},"targetPosition":{"x":24528.592002018682,"y":31804.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Market Buy Orders","id":"7c769317-2639-4460-8b88-9dc92f7b0585"}}},{"type":"Data Product","name":"Market Sell Orders","id":"e2112d60-5fc2-4e67-befe-d4fbd6c1de77","savedPayload":{"position":{"x":24508.592002018682,"y":31784.454740869387},"targetPosition":{"x":24528.592002018682,"y":31804.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Market Sell Orders","id":"9cc7645a-54fe-40d6-9896-9278167011fb"}}},{"type":"Data Product","name":"Limit Buy Orders","id":"e734b6be-ba40-468c-a94f-1153dc85e00c","savedPayload":{"position":{"x":24462.592002018682,"y":31870.454740869387},"targetPosition":{"x":24528.592002018682,"y":31804.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Limit Buy Orders","id":"4c827ee0-a29b-4b65-8438-03e2ea98b410"}}},{"type":"Data Product","name":"Limit Sell Orders","id":"9a973229-4d9d-45af-b5aa-64906a915f6e","savedPayload":{"position":{"x":24439.592002018682,"y":31813.454740869387},"targetPosition":{"x":24528.592002018682,"y":31804.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Limit Sell Orders","id":"2c753cd8-36d8-466c-bd80-1ebfa8e314dc"}}},{"type":"Data Product","name":"Last Market Order","id":"56517fe9-64da-4404-83f3-005106bc1c0a","savedPayload":{"position":{"x":24429.592002018682,"y":31799.454740869387},"targetPosition":{"x":24528.592002018682,"y":31804.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Last Market Order","id":"6df1ac87-92d5-4788-b0bc-f3543b283ef0"}}},{"type":"Data Product","name":"Last Limit Order","id":"d00c76e7-4be0-4518-9892-a0f6df943951","savedPayload":{"position":{"x":24611.592002018682,"y":31730.454740869387},"targetPosition":{"x":24528.592002018682,"y":31804.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Last Limit Order","id":"c24ec6a1-e937-4d20-93eb-4faf2a0becc3"}}}],"dataProductFolders":[],"id":"b5154bc1-4311-4148-b396-5ebca1c62417","savedPayload":{"position":{"x":24528.592002018682,"y":31804.454740869387},"targetPosition":{"x":24438.592002018682,"y":31839.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"89edd698-1d64-4500-bcef-d13ea74bee1c","savedPayload":{"position":{"x":24438.592002018682,"y":31839.454740869387},"targetPosition":{"x":24453.592002018682,"y":31759.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Data Product Folder","name":"Trading System","dataProducts":[{"type":"Data Product","name":"Trading System Errors","id":"a0c29c57-0a20-4084-9697-142300f62f9c","savedPayload":{"position":{"x":24400.592002018682,"y":31844.454740869387},"targetPosition":{"x":24395.592002018682,"y":31841.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trading System Errors","id":"1d9c570d-77c7-40ac-a61e-c5a57a411de8"}}},{"type":"Data Product","name":"Trading System Highlights","id":"aa0fe882-89a8-4811-8988-c589554afe9d","savedPayload":{"position":{"x":24311.592002018682,"y":31789.454740869387},"targetPosition":{"x":24395.592002018682,"y":31841.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trading System Highlights","id":"319f660a-78be-4cf4-8052-877837cad806"}}},{"type":"Data Product","name":"Trading System Values","id":"bbc65054-b22b-4cbb-816b-529672e2f498","savedPayload":{"position":{"x":24341.592002018682,"y":31813.454740869387},"targetPosition":{"x":24395.592002018682,"y":31841.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trading System Values","id":"c90c009b-588d-45d4-aff1-05e375181dfa"}}},{"type":"Data Product","name":"Trading System Status","id":"776a3ece-8255-4e80-b60f-85bb818b561f","savedPayload":{"position":{"x":24357.592002018682,"y":31807.454740869387},"targetPosition":{"x":24395.592002018682,"y":31841.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trading System Status","id":"eed48c80-35c5-49fa-b12d-18e7280ffb8f"}}},{"type":"Data Product","name":"Trading System Progress","id":"7593aaf9-0505-4b58-9920-235340ff2d2f","savedPayload":{"position":{"x":24342.592002018682,"y":31784.454740869387},"targetPosition":{"x":24395.592002018682,"y":31841.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trading System Progress","id":"04c8606b-5e59-4e7d-b3ac-387bfffcd300"}}},{"type":"Data Product","name":"Trading System Running","id":"3e2e6105-f41f-42e2-bce5-74ebb3b81cbd","savedPayload":{"position":{"x":24349.592002018682,"y":31820.454740869387},"targetPosition":{"x":24395.592002018682,"y":31841.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trading System Running","id":"17236f59-6ef2-4cc3-913c-1ff6db052236"}}},{"type":"Data Product","name":"Trading System Announcements","id":"faab4399-898b-4393-8c27-fa2f3109c60a","savedPayload":{"position":{"x":24324.592002018682,"y":31838.454740869387},"targetPosition":{"x":24395.592002018682,"y":31841.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trading System Announcements","id":"4a6f828a-9671-431e-8257-fc920943581e"}}},{"type":"Data Product","name":"Trading System Warnings","id":"9ff0f035-ca7f-4e65-a82c-186fa7f09157","savedPayload":{"position":{"x":24314.592002018682,"y":31914.454740869387},"targetPosition":{"x":24395.592002018682,"y":31841.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trading System Warnings","id":"34310596-466a-4e9a-a5a2-256b0fe3e339"}}},{"type":"Data Product","name":"Trading System Infos","id":"04210a59-070a-45f1-a2a0-cf50bd4879f7","savedPayload":{"position":{"x":24406.592002018682,"y":31780.454740869387},"targetPosition":{"x":24395.592002018682,"y":31841.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trading System Infos","id":"020ad519-0fc6-4f2f-9f26-b2c7de118fb8"}}}],"dataProductFolders":[],"id":"1a16bc12-581d-4626-846c-895f08e65fdf","savedPayload":{"position":{"x":24395.592002018682,"y":31841.454740869387},"targetPosition":{"x":24453.592002018682,"y":31759.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Data Product Folder","name":"Objects","dataProducts":[{"type":"Data Product","name":"Episodes","id":"73dff61a-7b05-4ca6-b963-99d6c578e9ba","savedPayload":{"position":{"x":24450.592002018682,"y":31727.454740869387},"targetPosition":{"x":24545.592002018682,"y":31727.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Episodes","id":"aeec080e-8caf-4976-8187-ba4e725b73b0"}}},{"type":"Data Product","name":"Strategies","id":"a9c454c8-9075-4dcf-bfe9-ebd0c1658049","savedPayload":{"position":{"x":24507.592002018682,"y":31747.454740869387},"targetPosition":{"x":24545.592002018682,"y":31727.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"21db6fce-8450-4b07-9015-d81a339fd030"}}}],"dataProductFolders":[{"type":"Data Product Folder","name":"Orders","dataProducts":[{"type":"Data Product","name":"Market Buy Orders","id":"cad1eecc-e897-4086-b42c-fcfd843c04cc","savedPayload":{"position":{"x":24587.592002018682,"y":31833.454740869387},"targetPosition":{"x":24603.592002018682,"y":31752.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Market Buy Orders","id":"db256083-9aa2-48e1-8fd6-3425a5085302"}}},{"type":"Data Product","name":"Market Sell Orders","id":"fdf22e85-7071-4847-bdba-e3fb43a616ed","savedPayload":{"position":{"x":24584.592002018682,"y":31838.454740869387},"targetPosition":{"x":24603.592002018682,"y":31752.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Market Sell Orders","id":"1958f79b-5c6c-4874-9154-98c314822ed7"}}},{"type":"Data Product","name":"Limit Buy Orders","id":"d2b1ab31-d8a1-422b-a717-33ee7df9b07b","savedPayload":{"position":{"x":24562.592002018682,"y":31737.454740869387},"targetPosition":{"x":24603.592002018682,"y":31752.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Limit Buy Orders","id":"5deceb32-c7ab-4560-818a-0f0b9d6632fb"}}},{"type":"Data Product","name":"Limit Sell Orders","id":"3b5a12db-b969-4400-8b9d-afb9b7b81642","savedPayload":{"position":{"x":24689.592002018682,"y":31670.454740869387},"targetPosition":{"x":24603.592002018682,"y":31752.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Limit Sell Orders","id":"2a1d405b-2fbe-4ed4-a76a-d2c7be59d20e"}}}],"dataProductFolders":[],"id":"97736b8e-761c-43f2-83bf-df8f5d41b963","savedPayload":{"position":{"x":24603.592002018682,"y":31752.454740869387},"targetPosition":{"x":24545.592002018682,"y":31727.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Data Product Folder","name":"Stages","dataProducts":[{"type":"Data Product","name":"Trigger Stages","id":"9fc29be1-9393-4933-95d3-bebddd73c05e","savedPayload":{"position":{"x":24524.592002018682,"y":31656.454740869387},"targetPosition":{"x":24504.592002018682,"y":31656.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trigger Stages","id":"18cc2e79-7e57-418c-b635-6c68fc11d681"}}},{"type":"Data Product","name":"Open Stages","id":"b555388f-db93-4db1-91be-7772550afa70","savedPayload":{"position":{"x":24456.592002018682,"y":31707.454740869387},"targetPosition":{"x":24504.592002018682,"y":31656.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Open Stages","id":"d5938c00-0849-466d-ae14-4ea91b571678"}}},{"type":"Data Product","name":"Manage Stages","id":"41953904-e48c-4176-bf0f-09d133bc444c","savedPayload":{"position":{"x":24458.592002018682,"y":31664.454740869387},"targetPosition":{"x":24504.592002018682,"y":31656.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Manage Stages","id":"8fab86b3-db8d-4113-8418-1d256bd98cf2"}}},{"type":"Data Product","name":"Close Stages","id":"47b4553c-7f2e-438c-9f4b-9ba30e943a6c","savedPayload":{"position":{"x":24480.592002018682,"y":31712.454740869387},"targetPosition":{"x":24504.592002018682,"y":31656.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Close Stages","id":"ba911e61-f951-48cd-b547-9a70aa211100"}}}],"dataProductFolders":[],"id":"ac789224-64dc-4ff5-a316-2dfbb6347b8a","savedPayload":{"position":{"x":24504.592002018682,"y":31656.454740869387},"targetPosition":{"x":24545.592002018682,"y":31727.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Data Product Folder","name":"Position","dataProducts":[{"type":"Data Product","name":"Positions","id":"6e49b57f-8c94-410f-985b-82c126155b11","savedPayload":{"position":{"x":24710.592002018682,"y":31651.454740869387},"targetPosition":{"x":24633.592002018682,"y":31702.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Positions","id":"1eabba24-cbd4-4cbf-95e0-c5135349d41d"}}},{"type":"Data Product","name":"Position Base Asset","id":"ae8fa9a5-95b6-4769-8ade-f9854e6855ba","savedPayload":{"position":{"x":24690.592002018682,"y":31799.454740869387},"targetPosition":{"x":24633.592002018682,"y":31702.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Position Base Asset","id":"b371b039-f6c8-4f60-84cb-52f55c96c84d"}}},{"type":"Data Product","name":"Position Quoted Asset","id":"9e9b19ee-9c51-4586-b74d-d2880f13f71f","savedPayload":{"position":{"x":24673.592002018682,"y":31768.454740869387},"targetPosition":{"x":24633.592002018682,"y":31702.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Position Quoted Asset","id":"a376f02b-a5d2-4079-b5cd-ab7dc894b909"}}},{"type":"Data Product","name":"Stop Loss","id":"01491591-0462-453c-91e0-6da6f554a729","savedPayload":{"position":{"x":24553.592002018682,"y":31664.454740869387},"targetPosition":{"x":24633.592002018682,"y":31702.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Stop Loss","id":"c18bdc82-216a-4b1d-8850-5c3c9dc2000b"}}},{"type":"Data Product","name":"Take Profit","id":"719dd8a6-58ab-41c6-9693-9b67c12232d2","savedPayload":{"position":{"x":24575.592002018682,"y":31611.454740869387},"targetPosition":{"x":24633.592002018682,"y":31702.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Take Profit","id":"2542c7d0-fa26-4b52-a59a-a3630e52eb89"}}}],"dataProductFolders":[],"id":"2a4cb5a2-8e6a-4b14-816a-b8e0cce4dae5","savedPayload":{"position":{"x":24633.592002018682,"y":31702.454740869387},"targetPosition":{"x":24545.592002018682,"y":31727.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"39e122ca-cdc4-49a6-91a6-2f2c05f62ea0","savedPayload":{"position":{"x":24545.592002018682,"y":31727.454740869387},"targetPosition":{"x":24453.592002018682,"y":31759.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"363150a9-d4e7-4e2e-b327-89109935718c","savedPayload":{"position":{"x":24453.592002018682,"y":31759.454740869387},"targetPosition":{"x":24400.592002018682,"y":31793.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"13a2b4f9-2c05-49b2-b42c-32ffa71ae0b7","savedPayload":{"position":{"x":24400.592002018682,"y":31793.454740869387},"targetPosition":{"x":24360.592002018682,"y":31706.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Trading Mine","name":"Masters","id":"6a54eece-4582-4cda-a854-1cd805e00fed"}}}],"id":"a5de30a4-022e-4f8a-afd0-3eb6d8600ae8","savedPayload":{"position":{"x":24183.91925626802,"y":32627.647982941333},"targetPosition":{"x":24307.4334843297,"y":32247.312898638535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Backtesting Session","name":"Lightning Strike","id":"ce648922-fef2-44e3-8d76-2bd7ab72a29f"}}},{"type":"Session Reference","name":"Lightning Strike Live Trading Session","dataProducts":[],"tradingMineProducts":[{"type":"Trading Mine Products","name":"Masters","botProducts":[{"type":"Bot Products","name":"Low Frequency","dataProducts":[],"dataProductFolders":[{"type":"Data Product Folder","name":"Trading Engine","dataProducts":[],"dataProductFolders":[{"type":"Data Product Folder","name":"Episode","dataProducts":[{"type":"Data Product","name":"Episode Counters","id":"dc6cc4ef-4bd7-4837-8442-919462314db3","savedPayload":{"position":{"x":24563.592002018682,"y":31576.454740869387},"targetPosition":{"x":24575.592002018682,"y":31591.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Episode Counters","id":"d81c6019-864e-42f5-94ba-2f249b865f85"}}},{"type":"Data Product","name":"Episode Statistics","id":"776ed571-8321-47aa-8cfb-c8ebf565dace","savedPayload":{"position":{"x":24543.592002018682,"y":31640.454740869387},"targetPosition":{"x":24575.592002018682,"y":31591.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Episode Statistics","id":"400c7f49-37da-41fb-b83d-879960aa74ff"}}},{"type":"Data Product","name":"Episode Candle","id":"ded93703-a48d-44be-9703-878c28f949cd","savedPayload":{"position":{"x":24632.592002018682,"y":31619.454740869387},"targetPosition":{"x":24575.592002018682,"y":31591.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Episode Candle","id":"b9a58113-cf27-4d57-9810-87a2cc158804"}}},{"type":"Data Product","name":"Episode Balances","id":"e702f1dd-1c91-4d05-ac55-19db363f5f3a","savedPayload":{"position":{"x":24503.592002018682,"y":31683.454740869387},"targetPosition":{"x":24575.592002018682,"y":31591.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Episode Balances","id":"a9a53d82-133b-4417-b639-f9a56d338233"}}},{"type":"Data Product","name":"Distance To Event","id":"b8abea53-8221-47bd-91a2-cdcdd2ad1027","savedPayload":{"position":{"x":24506.592002018682,"y":31587.454740869387},"targetPosition":{"x":24575.592002018682,"y":31591.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Distance To Event","id":"8ea88d6c-7d7f-4152-b781-ea108df52c63"}}},{"type":"Data Product","name":"Episode Base Asset","id":"18bcbd26-c237-4acb-96f4-d9c95d833a42","savedPayload":{"position":{"x":24496.592002018682,"y":31532.454740869387},"targetPosition":{"x":24575.592002018682,"y":31591.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Episode Base Asset","id":"234969ff-eab1-4d59-b6fa-79433c9a20e9"}}},{"type":"Data Product","name":"Episode Quoted Asset","id":"c444f4b5-fa67-4c21-afa8-1f998da7a2a2","savedPayload":{"position":{"x":24513.592002018682,"y":31602.454740869387},"targetPosition":{"x":24575.592002018682,"y":31591.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Episode Quoted Asset","id":"ae525e31-d6a8-47d2-9021-3f2ddb9615b0"}}},{"type":"Data Product","name":"Current Episode","id":"057570bd-69d4-4f3c-b0d4-94ee32f61e65","savedPayload":{"position":{"x":24633.592002018682,"y":31641.454740869387},"targetPosition":{"x":24575.592002018682,"y":31591.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Current Episode","id":"b8da0132-ba28-46ec-aa54-eb9eaac56ce7"}}}],"dataProductFolders":[],"id":"6a331de0-7872-4f86-bea0-6dd802c97921","savedPayload":{"position":{"x":24575.592002018682,"y":31591.454740869387},"targetPosition":{"x":24505.592002018682,"y":31632.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Data Product Folder","name":"Strategy","dataProducts":[{"type":"Data Product","name":"Current Strategy","id":"88dd680c-a81b-48ae-96ba-838281abfa35","savedPayload":{"position":{"x":24538.592002018682,"y":31611.454740869387},"targetPosition":{"x":24504.592002018682,"y":31621.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Current Strategy","id":"895d8a04-ef45-41a7-909a-ba31013ffb90"}}},{"type":"Data Product","name":"Last Strategy","id":"24af3ffc-6a52-4ee3-a30b-f068aa5b2062","savedPayload":{"position":{"x":24538.592002018682,"y":31664.454740869387},"targetPosition":{"x":24504.592002018682,"y":31621.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Last Strategy","id":"0625f524-2b97-4b4d-8a90-590ffc62ecd3"}}}],"dataProductFolders":[],"id":"74c10f36-887b-4233-81e5-abe365511bfa","savedPayload":{"position":{"x":24504.592002018682,"y":31621.454740869387},"targetPosition":{"x":24505.592002018682,"y":31632.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Data Product Folder","name":"Position","dataProducts":[{"type":"Data Product","name":"Current Position","id":"25280962-e4e5-40df-9e42-9edfbad6f6d3","savedPayload":{"position":{"x":24473.592002018682,"y":31679.454740869387},"targetPosition":{"x":24563.592002018682,"y":31707.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Current Position","id":"832ecada-8da3-4ba6-b6e9-be34dd5f7ce9"}}},{"type":"Data Product","name":"Last Position","id":"7a95a249-132d-4e0f-9182-cc7af45cacea","savedPayload":{"position":{"x":24520.592002018682,"y":31785.454740869387},"targetPosition":{"x":24563.592002018682,"y":31707.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Last Position","id":"477cd6d5-862a-44d0-9313-786a4e63a602"}}}],"dataProductFolders":[],"id":"7eca88a8-3724-4ca1-aa30-9227727eb834","savedPayload":{"position":{"x":24563.592002018682,"y":31707.454740869387},"targetPosition":{"x":24505.592002018682,"y":31632.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Data Product Folder","name":"Stages","dataProducts":[{"type":"Data Product","name":"Open Stage","id":"c9c4bca7-f918-4aa8-b538-ffe8aa31d5c2","savedPayload":{"position":{"x":24573.592002018682,"y":31554.454740869387},"targetPosition":{"x":24566.592002018682,"y":31630.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Open Stage","id":"73c3c041-ba2a-4798-a362-a453409b518a"}}},{"type":"Data Product","name":"Close Stage","id":"4201d7c0-43aa-4ac0-bd7e-ab26b688aa2d","savedPayload":{"position":{"x":24581.592002018682,"y":31653.454740869387},"targetPosition":{"x":24566.592002018682,"y":31630.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Close Stage","id":"2bb9bb41-1ff5-4f83-aa5b-bfc4c9f06a9a"}}},{"type":"Data Product","name":"Trigger Stage","id":"4fe24ddc-973f-4a5d-bf8a-d77090486125","savedPayload":{"position":{"x":24475.592002018682,"y":31716.454740869387},"targetPosition":{"x":24566.592002018682,"y":31630.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trigger Stage","id":"b6cff826-9056-4fbd-8eca-cbd6cceec962"}}},{"type":"Data Product","name":"Manage Stage","id":"e2f3d69e-2f0a-4463-8e74-4f0768c4fb70","savedPayload":{"position":{"x":24484.592002018682,"y":31582.454740869387},"targetPosition":{"x":24566.592002018682,"y":31630.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Manage Stage","id":"bd691611-e7a6-49a8-b07d-c15360b55e40"}}}],"dataProductFolders":[],"id":"7236bd16-a6e3-48ac-89bf-dc8674b7e812","savedPayload":{"position":{"x":24566.592002018682,"y":31630.454740869387},"targetPosition":{"x":24505.592002018682,"y":31632.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Data Product Folder","name":"Orders","dataProducts":[{"type":"Data Product","name":"Market Buy Orders","id":"0e0b284a-5014-4ab0-ada0-4322c14a099e","savedPayload":{"position":{"x":24513.592002018682,"y":31491.454740869387},"targetPosition":{"x":24486.592002018682,"y":31585.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Market Buy Orders","id":"7c769317-2639-4460-8b88-9dc92f7b0585"}}},{"type":"Data Product","name":"Market Sell Orders","id":"95b3db7a-9b62-4eab-a76b-4af8794da5a6","savedPayload":{"position":{"x":24461.592002018682,"y":31628.454740869387},"targetPosition":{"x":24486.592002018682,"y":31585.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Market Sell Orders","id":"9cc7645a-54fe-40d6-9896-9278167011fb"}}},{"type":"Data Product","name":"Limit Buy Orders","id":"1c6eed42-23aa-4174-aade-be29222acb8c","savedPayload":{"position":{"x":24432.592002018682,"y":31619.454740869387},"targetPosition":{"x":24486.592002018682,"y":31585.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Limit Buy Orders","id":"4c827ee0-a29b-4b65-8438-03e2ea98b410"}}},{"type":"Data Product","name":"Limit Sell Orders","id":"a2f44cd5-090d-42e5-9eb7-73e732310e85","savedPayload":{"position":{"x":24529.592002018682,"y":31542.454740869387},"targetPosition":{"x":24486.592002018682,"y":31585.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Limit Sell Orders","id":"2c753cd8-36d8-466c-bd80-1ebfa8e314dc"}}},{"type":"Data Product","name":"Last Market Order","id":"8c24d559-ba52-46fe-81b4-8a6bf50c74b6","savedPayload":{"position":{"x":24521.592002018682,"y":31555.454740869387},"targetPosition":{"x":24486.592002018682,"y":31585.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Last Market Order","id":"6df1ac87-92d5-4788-b0bc-f3543b283ef0"}}},{"type":"Data Product","name":"Last Limit Order","id":"c451c035-5ece-451f-836f-b5334cb3f967","savedPayload":{"position":{"x":24483.592002018682,"y":31674.454740869387},"targetPosition":{"x":24486.592002018682,"y":31585.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Last Limit Order","id":"c24ec6a1-e937-4d20-93eb-4faf2a0becc3"}}}],"dataProductFolders":[],"id":"ce9593a8-3e87-43bb-88c7-af50cf651806","savedPayload":{"position":{"x":24486.592002018682,"y":31585.454740869387},"targetPosition":{"x":24505.592002018682,"y":31632.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8be94a26-6821-48bb-8169-3eae2a1131af","savedPayload":{"position":{"x":24505.592002018682,"y":31632.454740869387},"targetPosition":{"x":24493.592002018682,"y":31602.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Data Product Folder","name":"Trading System","dataProducts":[{"type":"Data Product","name":"Trading System Errors","id":"ba606f99-2ae5-44dc-b7db-399e657830e1","savedPayload":{"position":{"x":24531.592002018682,"y":31658.454740869387},"targetPosition":{"x":24561.592002018682,"y":31692.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trading System Errors","id":"1d9c570d-77c7-40ac-a61e-c5a57a411de8"}}},{"type":"Data Product","name":"Trading System Highlights","id":"2d20d8ae-4afa-4e92-8de2-89e66e5efdee","savedPayload":{"position":{"x":24656.592002018682,"y":31618.454740869387},"targetPosition":{"x":24561.592002018682,"y":31692.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trading System Highlights","id":"319f660a-78be-4cf4-8052-877837cad806"}}},{"type":"Data Product","name":"Trading System Values","id":"f8a6219c-c7b4-410a-8aa4-1910583f51c8","savedPayload":{"position":{"x":24565.592002018682,"y":31772.454740869387},"targetPosition":{"x":24561.592002018682,"y":31692.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trading System Values","id":"c90c009b-588d-45d4-aff1-05e375181dfa"}}},{"type":"Data Product","name":"Trading System Status","id":"dcff6f56-7646-4505-aa93-6682a110f3f2","savedPayload":{"position":{"x":24520.592002018682,"y":31671.454740869387},"targetPosition":{"x":24561.592002018682,"y":31692.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trading System Status","id":"eed48c80-35c5-49fa-b12d-18e7280ffb8f"}}},{"type":"Data Product","name":"Trading System Progress","id":"0a9dff80-e462-4110-b988-11ce57bbbcd5","savedPayload":{"position":{"x":24484.592002018682,"y":31747.454740869387},"targetPosition":{"x":24561.592002018682,"y":31692.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trading System Progress","id":"04c8606b-5e59-4e7d-b3ac-387bfffcd300"}}},{"type":"Data Product","name":"Trading System Running","id":"c7e05ad0-7d4a-4ffb-9aee-191511f85ee7","savedPayload":{"position":{"x":24565.592002018682,"y":31712.454740869387},"targetPosition":{"x":24561.592002018682,"y":31692.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trading System Running","id":"17236f59-6ef2-4cc3-913c-1ff6db052236"}}},{"type":"Data Product","name":"Trading System Announcements","id":"e4811789-fd94-49b0-9917-8d9d434f997d","savedPayload":{"position":{"x":24585.592002018682,"y":31736.454740869387},"targetPosition":{"x":24561.592002018682,"y":31692.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trading System Announcements","id":"4a6f828a-9671-431e-8257-fc920943581e"}}},{"type":"Data Product","name":"Trading System Warnings","id":"029ff3a7-9c65-425f-855a-882df68fa05b","savedPayload":{"position":{"x":24530.592002018682,"y":31629.454740869387},"targetPosition":{"x":24561.592002018682,"y":31692.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trading System Warnings","id":"34310596-466a-4e9a-a5a2-256b0fe3e339"}}},{"type":"Data Product","name":"Trading System Infos","id":"0f47adaf-25a0-431f-b15b-0fbf44069b38","savedPayload":{"position":{"x":24536.592002018682,"y":31725.454740869387},"targetPosition":{"x":24561.592002018682,"y":31692.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trading System Infos","id":"020ad519-0fc6-4f2f-9f26-b2c7de118fb8"}}}],"dataProductFolders":[],"id":"7096a712-deb7-4adb-86e0-d688f24d2832","savedPayload":{"position":{"x":24561.592002018682,"y":31692.454740869387},"targetPosition":{"x":24493.592002018682,"y":31602.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Data Product Folder","name":"Objects","dataProducts":[{"type":"Data Product","name":"Episodes","id":"c6fd6067-4b57-4860-ae3b-5668e4444490","savedPayload":{"position":{"x":24487.592002018682,"y":31764.454740869387},"targetPosition":{"x":24523.592002018682,"y":31701.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Episodes","id":"aeec080e-8caf-4976-8187-ba4e725b73b0"}}},{"type":"Data Product","name":"Strategies","id":"60f88096-7343-42d1-afad-83fecd22fb44","savedPayload":{"position":{"x":24508.592002018682,"y":31623.454740869387},"targetPosition":{"x":24523.592002018682,"y":31701.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"21db6fce-8450-4b07-9015-d81a339fd030"}}}],"dataProductFolders":[{"type":"Data Product Folder","name":"Orders","dataProducts":[{"type":"Data Product","name":"Market Buy Orders","id":"9f939086-c934-4924-8353-776707a7cf10","savedPayload":{"position":{"x":24575.592002018682,"y":31710.454740869387},"targetPosition":{"x":24511.592002018682,"y":31757.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Market Buy Orders","id":"db256083-9aa2-48e1-8fd6-3425a5085302"}}},{"type":"Data Product","name":"Market Sell Orders","id":"da5f279e-d387-43cf-80f4-fc114b9ac906","savedPayload":{"position":{"x":24577.592002018682,"y":31727.454740869387},"targetPosition":{"x":24511.592002018682,"y":31757.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Market Sell Orders","id":"1958f79b-5c6c-4874-9154-98c314822ed7"}}},{"type":"Data Product","name":"Limit Buy Orders","id":"367646bb-839a-4071-8305-6d26a647585d","savedPayload":{"position":{"x":24428.592002018682,"y":31796.454740869387},"targetPosition":{"x":24511.592002018682,"y":31757.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Limit Buy Orders","id":"5deceb32-c7ab-4560-818a-0f0b9d6632fb"}}},{"type":"Data Product","name":"Limit Sell Orders","id":"0b2fc73a-9635-40b2-98d8-0c79c69175a9","savedPayload":{"position":{"x":24515.592002018682,"y":31820.454740869387},"targetPosition":{"x":24511.592002018682,"y":31757.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Limit Sell Orders","id":"2a1d405b-2fbe-4ed4-a76a-d2c7be59d20e"}}}],"dataProductFolders":[],"id":"88643ab2-7859-45d4-b967-8681cf970828","savedPayload":{"position":{"x":24511.592002018682,"y":31757.454740869387},"targetPosition":{"x":24523.592002018682,"y":31701.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Data Product Folder","name":"Stages","dataProducts":[{"type":"Data Product","name":"Trigger Stages","id":"7fe8c58f-9cad-47c9-ba4e-d66bff094dcf","savedPayload":{"position":{"x":24523.592002018682,"y":31610.454740869387},"targetPosition":{"x":24476.592002018682,"y":31676.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trigger Stages","id":"18cc2e79-7e57-418c-b635-6c68fc11d681"}}},{"type":"Data Product","name":"Open Stages","id":"41f17745-1819-4681-8a2b-9bdda3cd67c4","savedPayload":{"position":{"x":24572.592002018682,"y":31655.454740869387},"targetPosition":{"x":24476.592002018682,"y":31676.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Open Stages","id":"d5938c00-0849-466d-ae14-4ea91b571678"}}},{"type":"Data Product","name":"Manage Stages","id":"e89c8bfd-fac9-4aff-afc0-3a89c1dc2710","savedPayload":{"position":{"x":24448.592002018682,"y":31626.454740869387},"targetPosition":{"x":24476.592002018682,"y":31676.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Manage Stages","id":"8fab86b3-db8d-4113-8418-1d256bd98cf2"}}},{"type":"Data Product","name":"Close Stages","id":"bc2c6503-e935-4ad7-a76a-89b062d41e91","savedPayload":{"position":{"x":24495.592002018682,"y":31690.454740869387},"targetPosition":{"x":24476.592002018682,"y":31676.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Close Stages","id":"ba911e61-f951-48cd-b547-9a70aa211100"}}}],"dataProductFolders":[],"id":"869369c1-13de-4086-ad40-77b3d54cfc36","savedPayload":{"position":{"x":24476.592002018682,"y":31676.454740869387},"targetPosition":{"x":24523.592002018682,"y":31701.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Data Product Folder","name":"Position","dataProducts":[{"type":"Data Product","name":"Positions","id":"3ed594a0-8452-4bd8-9eaa-37cd83a45b90","savedPayload":{"position":{"x":24449.592002018682,"y":31771.454740869387},"targetPosition":{"x":24512.592002018682,"y":31755.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Positions","id":"1eabba24-cbd4-4cbf-95e0-c5135349d41d"}}},{"type":"Data Product","name":"Position Base Asset","id":"88997c97-e77f-490e-9eb5-c7531beec132","savedPayload":{"position":{"x":24490.592002018682,"y":31730.454740869387},"targetPosition":{"x":24512.592002018682,"y":31755.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Position Base Asset","id":"b371b039-f6c8-4f60-84cb-52f55c96c84d"}}},{"type":"Data Product","name":"Position Quoted Asset","id":"b4772611-d5d0-4fbd-b689-d42de3c045d4","savedPayload":{"position":{"x":24467.592002018682,"y":31741.454740869387},"targetPosition":{"x":24512.592002018682,"y":31755.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Position Quoted Asset","id":"a376f02b-a5d2-4079-b5cd-ab7dc894b909"}}},{"type":"Data Product","name":"Stop Loss","id":"9b064960-3829-441f-b955-334fb8324a53","savedPayload":{"position":{"x":24592.592002018682,"y":31798.454740869387},"targetPosition":{"x":24512.592002018682,"y":31755.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Stop Loss","id":"c18bdc82-216a-4b1d-8850-5c3c9dc2000b"}}},{"type":"Data Product","name":"Take Profit","id":"cbcc817b-4333-4c80-addc-e2a0ee0845c1","savedPayload":{"position":{"x":24563.592002018682,"y":31677.454740869387},"targetPosition":{"x":24512.592002018682,"y":31755.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Take Profit","id":"2542c7d0-fa26-4b52-a59a-a3630e52eb89"}}}],"dataProductFolders":[],"id":"7f74f2e1-91b6-4d7a-87cb-1d6232a41876","savedPayload":{"position":{"x":24512.592002018682,"y":31755.454740869387},"targetPosition":{"x":24523.592002018682,"y":31701.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"291949a0-847b-4b18-b3b4-191496fc38a9","savedPayload":{"position":{"x":24523.592002018682,"y":31701.454740869387},"targetPosition":{"x":24493.592002018682,"y":31602.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ae78f4fc-6ee5-4ae4-9847-3bab0e2e51a6","savedPayload":{"position":{"x":24493.592002018682,"y":31602.454740869387},"targetPosition":{"x":24411.592002018682,"y":31590.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"aa2b0766-a3d5-47e1-acd8-7345af564388","savedPayload":{"position":{"x":24411.592002018682,"y":31590.454740869387},"targetPosition":{"x":24388.592002018682,"y":31597.454740869387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Trading Mine","name":"Masters","id":"6a54eece-4582-4cda-a854-1cd805e00fed"}}}],"id":"9ef30086-0c9d-47c2-8983-db5fc9a99583","savedPayload":{"position":{"x":23916.288091418992,"y":32330.4160418181},"targetPosition":{"x":24307.4334843297,"y":32247.312898638535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Live Trading Session","name":"Lightning Strike","id":"1ce123af-467f-4295-b317-dba8729faf25"}}}],"id":"026bab29-64d0-4d83-862c-446657efa101","savedPayload":{"position":{"x":24307.4334843297,"y":32247.312898638535},"targetPosition":{"x":24604.570591913445,"y":31979.748230793797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"9a867bf0-a71d-445c-b99a-75b60bbdce09"}}}],"id":"f601d2a7-fada-477f-9b63-3ef7ed42d44a","savedPayload":{"position":{"x":24604.570591913445,"y":31979.748230793797},"targetPosition":{"x":24901.691754161984,"y":31712.180595293514},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"61ef0b8d-de6e-4e76-bdd5-996836760a4b"}}}],"id":"e4e268f3-a677-4f90-90a1-d87244e647e5","savedPayload":{"position":{"x":24901.691754161984,"y":31712.180595293514},"targetPosition":{"x":25235.599390289426,"y":31411.456833117474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e2697759-6038-4943-b90c-5a68651ff9a8","savedPayload":{"position":{"x":25304.775925674105,"y":31506.45292458781},"targetPosition":{"x":25459.154085934722,"y":31030.919489208696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"d"}}},"id":"e452cf65-2b2b-44f2-9e67-bdd9d3c008e4","savedPayload":{"position":{"x":25459.154085934722,"y":31030.919489208696},"targetPosition":{"x":24959.356993272086,"y":31030.918778615294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"3c165071-7558-4708-9999-8ffe71d346b1","savedPayload":{"position":{"x":24959.356993272086,"y":31030.918778615294},"targetPosition":{"x":24959.356993272086,"y":31030.918778615294},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"s"}}},{"type":"Crypto Ecosystem","name":"My Crypto Ecosystem","cryptoExchanges":[{"type":"Crypto Exchanges","name":"Tested","exchanges":[{"type":"Crypto Exchange","name":"Binance","config":"{\n \"codeName\": \"binance\",\n \"API\": [\n {\n \"method\": \"fetchTrades\",\n \"fetchType\": \"by Id\",\n \"fetchTradesMethod\": \"publicGetHistoricalTrades\",\n \"firstId\": \"f\"\n }\n ]\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"EUR\"} \n}","assets":[{"type":"Asset","name":"Bitcoin","config":"{ \n\"codeName\": \"BTC\"\n}","id":"5f5e4a94-5090-47d4-8883-cc2325d20bfa","savedPayload":{"position":{"x":20388.362409950103,"y":30180.50103267498},"targetPosition":{"x":20257.280868037065,"y":30662.483643951316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Tether","config":"{ \n\"codeName\": \"USDT\"\n}","id":"f110bfa0-bd5b-469b-a940-4524c8688136","savedPayload":{"position":{"x":20739.484072029136,"y":30531.608397883614},"targetPosition":{"x":20257.280868037065,"y":30662.483643951316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"95d2c30f-215b-486e-8119-f4eac0279575","savedPayload":{"position":{"x":20257.280868037065,"y":30662.483643951316},"targetPosition":{"x":19904.452771430722,"y":31014.47751540765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"E"}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"BTC/USDT","config":"{ \n\"codeName\": \"BTC/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"Bitcoin","id":"1017b30d-de1b-4212-991e-9fd0a5b6c814","savedPayload":{"position":{"x":21388.96438504192,"y":30884.979335164295},"targetPosition":{"x":20904.89002939366,"y":31013.714270954442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"5f5e4a94-5090-47d4-8883-cc2325d20bfa"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"705c4a67-787a-48cd-a3dc-3a557438bf0b","savedPayload":{"position":{"x":21388.257739863664,"y":31144.08702794872},"targetPosition":{"x":20904.89002939366,"y":31013.714270954442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"f110bfa0-bd5b-469b-a940-4524c8688136"}}},"id":"9a867bf0-a71d-445c-b99a-75b60bbdce09","savedPayload":{"position":{"x":20904.89002939366,"y":31013.714270954442},"targetPosition":{"x":20403.773677285502,"y":31014.077377448535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2fd80894-900e-44ac-a1a7-56c14124f7a1","savedPayload":{"position":{"x":20403.773677285502,"y":31014.077377448535},"targetPosition":{"x":19904.452771430722,"y":31014.47751540765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[{"type":"Exchange Account Asset","name":"Bitcoin","id":"ba6f3d5c-b36b-49d9-947f-392068109169","savedPayload":{"position":{"x":21575.601722319476,"y":31726.288539620644},"targetPosition":{"x":21094.017789405832,"y":31854.35905223875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"5f5e4a94-5090-47d4-8883-cc2325d20bfa"}}},{"type":"Exchange Account Asset","name":"Tether","id":"c90be267-90f9-45ae-b225-0578adb4aad9","savedPayload":{"position":{"x":21448.67115605243,"y":32206.114510546377},"targetPosition":{"x":21094.017789405832,"y":31854.35905223875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"f110bfa0-bd5b-469b-a940-4524c8688136"}}}],"id":"8ac5c2a9-a238-48ae-ab43-0a0a95a37464","savedPayload":{"position":{"x":21094.017789405832,"y":31854.35905223875},"targetPosition":{"x":20610.926989268537,"y":31723.7407603541},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"Key for Lighting Strike","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"e85bbbd6-aca8-450f-9237-788062de5761","savedPayload":{"position":{"x":20871.09870402976,"y":32688.50517905718},"targetPosition":{"x":20741.886163162235,"y":32206.142532493093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"48925cc9-f3cd-4499-8466-1338fed28a0d","savedPayload":{"position":{"x":20741.886163162235,"y":32206.142532493093},"targetPosition":{"x":20610.926989268537,"y":31723.7407603541},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"63794496-c94b-42f9-81cc-c588708617a6","savedPayload":{"position":{"x":20610.926989268537,"y":31723.7407603541},"targetPosition":{"x":20257.89847164215,"y":31368.7529116696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4b0c1ac5-515f-44a9-b9b9-e698a9c51eac","savedPayload":{"position":{"x":20257.89847164215,"y":31368.7529116696},"targetPosition":{"x":19904.452771430722,"y":31014.47751540765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"61ef0b8d-de6e-4e76-bdd5-996836760a4b","savedPayload":{"position":{"x":19904.452771430722,"y":31014.47751540765},"targetPosition":{"x":19405.74024942352,"y":31014.877747772705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"tutorial":{"status":"Done"}}}],"id":"e3879d63-6f8f-41a3-8ac3-0349c4361722","savedPayload":{"position":{"x":19405.74024942352,"y":31014.877747772705},"targetPosition":{"x":18904.301618063546,"y":31014.2348844148},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchanges","name":"Untested","exchanges":[{"type":"Crypto Exchange","name":"ACX","config":"{ \n\"codeName\": \"acx\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"ebcb522b-ae58-46d2-9d82-a9b0beec3976","savedPayload":{"position":{"x":17935.64382962515,"y":31014.23747069523},"targetPosition":{"x":17912.64382962515,"y":30954.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"b2649588-27c6-442c-b179-f6d8817188b3","savedPayload":{"position":{"x":17954.64382962515,"y":31004.23747069523},"targetPosition":{"x":17912.64382962515,"y":30954.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"9b2051d5-7ee7-4e94-8c8d-306674889339","savedPayload":{"position":{"x":17838.64382962515,"y":30896.23747069523},"targetPosition":{"x":17766.64382962515,"y":30905.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"1d5461aa-d26c-4df5-b383-8c83e311b8ca","savedPayload":{"position":{"x":17643.64382962515,"y":30952.23747069523},"targetPosition":{"x":17698.64382962515,"y":30973.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"c6372400-de52-4b63-97f3-f748aac9c63f","savedPayload":{"position":{"x":17698.64382962515,"y":30973.23747069523},"targetPosition":{"x":17766.64382962515,"y":30905.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c948314e-2247-4234-b83d-cc2c1b152665","savedPayload":{"position":{"x":17766.64382962515,"y":30905.23747069523},"targetPosition":{"x":17837.64382962515,"y":30978.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"04ccb742-ef1b-4138-b38d-a6b0d92f2f8e","savedPayload":{"position":{"x":17837.64382962515,"y":30978.23747069523},"targetPosition":{"x":17912.64382962515,"y":30954.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e9c21b2d-de21-43b5-8b48-51367a8c981c","savedPayload":{"position":{"x":19584.1279761245,"y":30267.696188204915},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"AOFEX","config":"{ \n\"codeName\": \"aofex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"623ef91b-04c0-4bd5-ac0d-b32c809be3ea","savedPayload":{"position":{"x":17973.64382962515,"y":30923.23747069523},"targetPosition":{"x":17950.64382962515,"y":30994.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"9d0b5855-59a6-4dda-9a4b-33d7a44d582e","savedPayload":{"position":{"x":17901.64382962515,"y":30994.23747069523},"targetPosition":{"x":17950.64382962515,"y":30994.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"e898e569-0dd3-4a22-baa5-caaace66d4ed","savedPayload":{"position":{"x":18062.64382962515,"y":30838.23747069523},"targetPosition":{"x":17982.64382962515,"y":30899.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"64a69d3d-15ff-41c3-a926-5ec93c932ab1","savedPayload":{"position":{"x":17822.64382962515,"y":31052.23747069523},"targetPosition":{"x":17893.64382962515,"y":30981.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"ae2785c5-75a1-44fc-a71b-363d88cb5dac","savedPayload":{"position":{"x":17893.64382962515,"y":30981.23747069523},"targetPosition":{"x":17982.64382962515,"y":30899.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"07ea69aa-7357-43b1-b548-a4c4fab70c55","savedPayload":{"position":{"x":17982.64382962515,"y":30899.23747069523},"targetPosition":{"x":17971.64382962515,"y":30962.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2146b410-fc4e-452d-ae57-5d58c9a29706","savedPayload":{"position":{"x":17971.64382962515,"y":30962.23747069523},"targetPosition":{"x":17950.64382962515,"y":30994.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c2e9bb45-97c7-47e8-b13c-56946e673c53","savedPayload":{"position":{"x":19751.641867167295,"y":30404.792048085135},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Bequant","config":"{ \n\"codeName\": \"bequant\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"b23c8adf-c880-48fd-b4af-4b4be86cf0e5","savedPayload":{"position":{"x":18059.64382962515,"y":31101.23747069523},"targetPosition":{"x":17960.64382962515,"y":31060.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"523bd94f-68f9-457e-91fd-806c1b95e98d","savedPayload":{"position":{"x":18006.64382962515,"y":31117.23747069523},"targetPosition":{"x":17960.64382962515,"y":31060.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"9d914bb1-a68b-41ae-8666-0fcc755358c1","savedPayload":{"position":{"x":17859.64382962515,"y":30964.23747069523},"targetPosition":{"x":17936.64382962515,"y":31059.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"15d903b5-113c-465e-8120-7c46a9a85565","savedPayload":{"position":{"x":17976.64382962515,"y":31146.23747069523},"targetPosition":{"x":17943.64382962515,"y":31134.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"2d1c0bc3-abe2-4340-91bf-2eef5b98a2f0","savedPayload":{"position":{"x":17943.64382962515,"y":31134.23747069523},"targetPosition":{"x":17936.64382962515,"y":31059.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5a50d459-914c-4bfc-91e8-f15c383280eb","savedPayload":{"position":{"x":17936.64382962515,"y":31059.23747069523},"targetPosition":{"x":17931.64382962515,"y":31071.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b2f2b69f-3bef-4edc-9950-5261d9f36382","savedPayload":{"position":{"x":17931.64382962515,"y":31071.23747069523},"targetPosition":{"x":17960.64382962515,"y":31060.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8e928d3e-a2c2-4341-aa2f-b753551c9479","savedPayload":{"position":{"x":19903.18884099064,"y":30559.080135883036},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Bibox","config":"{ \n\"codeName\": \"bibox\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"13c1f22c-9a35-4d3f-b000-c96984fd6a2b","savedPayload":{"position":{"x":17995.64382962515,"y":31047.23747069523},"targetPosition":{"x":17929.64382962515,"y":31003.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"3c6df49d-70c3-468a-bdd8-6768ce6d3a9d","savedPayload":{"position":{"x":17916.64382962515,"y":31018.23747069523},"targetPosition":{"x":17929.64382962515,"y":31003.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"5a54ef39-8fba-4a5f-ac24-5f27e763e28f","savedPayload":{"position":{"x":18050.64382962515,"y":31174.23747069523},"targetPosition":{"x":17956.64382962515,"y":31128.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"08df1f45-dab0-463a-8758-359973f2620d","savedPayload":{"position":{"x":17899.64382962515,"y":31242.23747069523},"targetPosition":{"x":17959.64382962515,"y":31180.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"105b52c2-90ad-4fa1-b690-d8fab14209b4","savedPayload":{"position":{"x":17959.64382962515,"y":31180.23747069523},"targetPosition":{"x":17956.64382962515,"y":31128.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"68c1ef42-1b7b-4cc6-981f-80b20dabcd89","savedPayload":{"position":{"x":17956.64382962515,"y":31128.23747069523},"targetPosition":{"x":17907.64382962515,"y":31057.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fc35e5d0-ea61-42b6-979a-859f19c5ac6c","savedPayload":{"position":{"x":17907.64382962515,"y":31057.23747069523},"targetPosition":{"x":17929.64382962515,"y":31003.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e5f9ee4d-77a3-48ae-b354-b2f6a97d5e47","savedPayload":{"position":{"x":20037.15123822153,"y":30728.908493178325},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"BigONE","config":"{ \n\"codeName\": \"bigone\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"3f289513-c1c8-457c-b65a-8cf62b5f5eb5","savedPayload":{"position":{"x":17778.64382962515,"y":31071.23747069523},"targetPosition":{"x":17839.64382962515,"y":31063.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"8b365e73-1cee-496a-921f-121cb628a130","savedPayload":{"position":{"x":17798.64382962515,"y":31121.23747069523},"targetPosition":{"x":17839.64382962515,"y":31063.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"447a4f6f-cfa0-443e-9339-d7c1153ada31","savedPayload":{"position":{"x":17921.64382962515,"y":31046.23747069523},"targetPosition":{"x":17891.64382962515,"y":31102.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"0d234c53-c121-471e-bce1-a258c13cd148","savedPayload":{"position":{"x":17848.64382962515,"y":31175.23747069523},"targetPosition":{"x":17944.64382962515,"y":31086.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"816e1b6a-d790-4abd-9ae1-e203fa737af2","savedPayload":{"position":{"x":17944.64382962515,"y":31086.23747069523},"targetPosition":{"x":17891.64382962515,"y":31102.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"561a57f7-8c22-4e50-840d-d983ed6bb864","savedPayload":{"position":{"x":17891.64382962515,"y":31102.23747069523},"targetPosition":{"x":17813.64382962515,"y":31064.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e243bd5d-ade7-46c8-876b-6ad8c6eb5e0a","savedPayload":{"position":{"x":17813.64382962515,"y":31064.23747069523},"targetPosition":{"x":17839.64382962515,"y":31063.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"fb9ee540-bf12-4dda-bf87-cb6b58fce649","savedPayload":{"position":{"x":20152.14128663733,"y":30912.33665527969},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Binance Jersey","config":"{ \n\"codeName\": \"binanceje\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"0b979ea9-7a2d-4744-9517-2dfa632dfafc","savedPayload":{"position":{"x":17852.64382962515,"y":30989.23747069523},"targetPosition":{"x":17933.64382962515,"y":30992.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"b9a4497d-20f1-4c61-9a79-444e0fe0ddf4","savedPayload":{"position":{"x":17924.64382962515,"y":30952.23747069523},"targetPosition":{"x":17933.64382962515,"y":30992.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"1b24d8a4-ec70-4501-838c-7633f6f7288e","savedPayload":{"position":{"x":17882.64382962515,"y":31051.23747069523},"targetPosition":{"x":17942.64382962515,"y":31066.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"627472e3-638f-4d68-a917-d0844d6a227b","savedPayload":{"position":{"x":17991.64382962515,"y":31190.23747069523},"targetPosition":{"x":17986.64382962515,"y":31110.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"b8ce75fb-93c9-4ca2-9b2b-9f8ed8af34f3","savedPayload":{"position":{"x":17986.64382962515,"y":31110.23747069523},"targetPosition":{"x":17942.64382962515,"y":31066.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"08b226e4-14ee-4ad3-8d96-efe77cc38489","savedPayload":{"position":{"x":17942.64382962515,"y":31066.23747069523},"targetPosition":{"x":17949.64382962515,"y":31009.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2771eb11-bc72-4273-9e1b-9ac5410c6354","savedPayload":{"position":{"x":17949.64382962515,"y":31009.23747069523},"targetPosition":{"x":17933.64382962515,"y":30992.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2782350a-84a2-40ec-87c6-3c8043376a18","savedPayload":{"position":{"x":20246.328553581017,"y":31107.145035048212},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Binance US","config":"{ \n\"codeName\": \"binanceus\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"817ee1cf-b44c-4458-a9c4-a05a17ea0510","savedPayload":{"position":{"x":17943.64382962515,"y":30999.23747069523},"targetPosition":{"x":17898.64382962515,"y":31020.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"c6694e9e-74dc-4c2e-9151-90f1d6631b45","savedPayload":{"position":{"x":17937.64382962515,"y":30989.23747069523},"targetPosition":{"x":17898.64382962515,"y":31020.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"00144904-5363-49eb-b445-8c8283d92b0d","savedPayload":{"position":{"x":17838.64382962515,"y":31193.23747069523},"targetPosition":{"x":17781.64382962515,"y":31156.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"2e71aa3c-03d4-4dbd-bc50-43b30f59e655","savedPayload":{"position":{"x":17783.64382962515,"y":31148.23747069523},"targetPosition":{"x":17703.64382962515,"y":31182.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"a4d0df32-c600-4421-b893-2a05f0442ed6","savedPayload":{"position":{"x":17703.64382962515,"y":31182.23747069523},"targetPosition":{"x":17781.64382962515,"y":31156.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7a39543a-00e1-452b-8aba-36c2b240f9fc","savedPayload":{"position":{"x":17781.64382962515,"y":31156.23747069523},"targetPosition":{"x":17799.64382962515,"y":31119.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2543c4e5-8233-4348-b6dc-e47aed1ff381","savedPayload":{"position":{"x":17799.64382962515,"y":31119.23747069523},"targetPosition":{"x":17898.64382962515,"y":31020.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0b2b67d2-853b-470e-8b13-925956ad5621","savedPayload":{"position":{"x":20331.322851293367,"y":31300.104639755893},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"bitbank","config":"{ \n\"codeName\": \"bitbank\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"eb6b6842-9bf7-450e-baa3-7a87541a1cf6","savedPayload":{"position":{"x":17955.64382962515,"y":31107.23747069523},"targetPosition":{"x":17941.64382962515,"y":31102.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"6353ff56-759f-457d-81f3-fdb8ae5b3e83","savedPayload":{"position":{"x":17942.64382962515,"y":31183.23747069523},"targetPosition":{"x":17941.64382962515,"y":31102.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"a2b297c7-f33b-48b9-98fa-d339c7b0ff67","savedPayload":{"position":{"x":17999.64382962515,"y":31016.23747069523},"targetPosition":{"x":17945.64382962515,"y":31116.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"9ce6c354-b294-4062-b763-421e5edb69de","savedPayload":{"position":{"x":17883.64382962515,"y":31186.23747069523},"targetPosition":{"x":17845.64382962515,"y":31202.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"547dbf6c-a292-46c0-a628-62856858121e","savedPayload":{"position":{"x":17845.64382962515,"y":31202.23747069523},"targetPosition":{"x":17945.64382962515,"y":31116.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"097055b3-37e5-4100-a24b-91e404fe49a6","savedPayload":{"position":{"x":17945.64382962515,"y":31116.23747069523},"targetPosition":{"x":17897.64382962515,"y":31142.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"51aed4ce-0303-431e-a15f-e6f133f7a2cf","savedPayload":{"position":{"x":17897.64382962515,"y":31142.23747069523},"targetPosition":{"x":17941.64382962515,"y":31102.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6c9a96a7-ed12-4b3e-bb51-306a8da131f5","savedPayload":{"position":{"x":20369.480885163004,"y":31521.257394705244},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"BitBay","config":"{ \n\"codeName\": \"bitbay\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"83b4e523-72a7-41ce-9363-fe0c799dcac1","savedPayload":{"position":{"x":17861.64382962515,"y":30965.23747069523},"targetPosition":{"x":17855.64382962515,"y":30961.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"966698f7-8a28-42d7-bb80-f7cd0601e44f","savedPayload":{"position":{"x":17823.64382962515,"y":31026.23747069523},"targetPosition":{"x":17855.64382962515,"y":30961.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"554829eb-3d40-4b95-a1cd-9de943763e2c","savedPayload":{"position":{"x":17914.64382962515,"y":30924.23747069523},"targetPosition":{"x":17876.64382962515,"y":30921.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"2f534989-7ca7-4c3d-b14a-3b1071543c8c","savedPayload":{"position":{"x":17845.64382962515,"y":30853.23747069523},"targetPosition":{"x":17832.64382962515,"y":30821.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"2f6b76b4-51d4-434f-8aa1-ed86b0e26bd2","savedPayload":{"position":{"x":17832.64382962515,"y":30821.23747069523},"targetPosition":{"x":17876.64382962515,"y":30921.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"cbcc3ab6-9758-4273-99d2-9d05fdd392b5","savedPayload":{"position":{"x":17876.64382962515,"y":30921.23747069523},"targetPosition":{"x":17805.64382962515,"y":31015.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dada6c12-7c41-4ab8-9922-908233829f58","savedPayload":{"position":{"x":17805.64382962515,"y":31015.23747069523},"targetPosition":{"x":17855.64382962515,"y":30961.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8778eee5-97a2-4f9d-bd25-cd5a64ec6663","savedPayload":{"position":{"x":20396.448734743924,"y":31735.759356678773},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Bitfinex","config":"{ \n\"codeName\": \"bitfinex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"33508b53-2769-4f3d-8c98-9fa37e5cbf5b","savedPayload":{"position":{"x":17888.64382962515,"y":31043.23747069523},"targetPosition":{"x":17965.64382962515,"y":30956.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"4d4ad5a1-81a7-4f92-83db-99f57ce261bb","savedPayload":{"position":{"x":17975.64382962515,"y":30868.23747069523},"targetPosition":{"x":17965.64382962515,"y":30956.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"29d52baf-645c-4d8f-9631-ebd391b4c815","savedPayload":{"position":{"x":18034.64382962515,"y":31066.23747069523},"targetPosition":{"x":18037.64382962515,"y":31012.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"d615c33d-c6cf-4572-ac32-8e9ddeb5bb52","savedPayload":{"position":{"x":18023.64382962515,"y":30916.23747069523},"targetPosition":{"x":18106.64382962515,"y":30982.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"0c189040-6318-483c-b6d7-982370a3298d","savedPayload":{"position":{"x":18106.64382962515,"y":30982.23747069523},"targetPosition":{"x":18037.64382962515,"y":31012.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"cd60de4a-d17c-4ba7-936a-cbf2305fe3bb","savedPayload":{"position":{"x":18037.64382962515,"y":31012.23747069523},"targetPosition":{"x":18039.64382962515,"y":30964.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d247f4f5-6f16-4a59-a4a5-6d1554b43562","savedPayload":{"position":{"x":18039.64382962515,"y":30964.23747069523},"targetPosition":{"x":17965.64382962515,"y":30956.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6c076027-683d-4778-8a6a-e60984980fdf","savedPayload":{"position":{"x":20400.432966340482,"y":31951.823337481437},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Bitfinex","config":"{ \n\"codeName\": \"bitfinex2\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"8fc7f955-5c81-446c-bbeb-205988bf1fc0","savedPayload":{"position":{"x":17830.64382962515,"y":31051.23747069523},"targetPosition":{"x":17863.64382962515,"y":31062.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"d5ba38e9-3282-4634-b922-16532c71f426","savedPayload":{"position":{"x":17819.64382962515,"y":31118.23747069523},"targetPosition":{"x":17863.64382962515,"y":31062.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"1cebbed5-28f7-4ccd-afce-9e7634d90fb6","savedPayload":{"position":{"x":17892.64382962515,"y":30997.23747069523},"targetPosition":{"x":17855.64382962515,"y":30970.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"0d109aa9-c80c-4a64-96f0-1d8fda0a70a4","savedPayload":{"position":{"x":17888.64382962515,"y":30805.23747069523},"targetPosition":{"x":17942.64382962515,"y":30905.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"5459ab1e-a1ce-4dae-ae72-61c1f7f37ce0","savedPayload":{"position":{"x":17942.64382962515,"y":30905.23747069523},"targetPosition":{"x":17855.64382962515,"y":30970.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a4615f7a-000d-4ff9-b5ac-109bc9a3a849","savedPayload":{"position":{"x":17855.64382962515,"y":30970.23747069523},"targetPosition":{"x":17919.64382962515,"y":31043.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e10d303e-ea21-4625-bae1-c32ad7a44e8a","savedPayload":{"position":{"x":17919.64382962515,"y":31043.23747069523},"targetPosition":{"x":17863.64382962515,"y":31062.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f3114102-a73c-4086-9594-5888ef1ab4ec","savedPayload":{"position":{"x":20380.94024987357,"y":32167.178892808824},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Bitforex","config":"{ \n\"codeName\": \"bitforex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"698e5e38-ad73-4cb6-b7f6-2b69913faff9","savedPayload":{"position":{"x":17897.64382962515,"y":30956.23747069523},"targetPosition":{"x":17937.64382962515,"y":30945.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"f0142bd4-1b63-4d12-a4b7-e150d0da197f","savedPayload":{"position":{"x":18020.64382962515,"y":31021.23747069523},"targetPosition":{"x":17937.64382962515,"y":30945.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"7164fb28-405b-461a-a7d4-59d438ecf1ce","savedPayload":{"position":{"x":17821.64382962515,"y":30984.23747069523},"targetPosition":{"x":17901.64382962515,"y":30907.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"ce8a00c9-f090-4ec2-84ed-c6661f8bf7b0","savedPayload":{"position":{"x":17825.64382962515,"y":30965.23747069523},"targetPosition":{"x":17818.64382962515,"y":30913.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"579cd74b-98f6-4000-990b-25ae1456c94b","savedPayload":{"position":{"x":17818.64382962515,"y":30913.23747069523},"targetPosition":{"x":17901.64382962515,"y":30907.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"dbac6eef-25d2-4cda-86a6-59ce8a9a26bc","savedPayload":{"position":{"x":17901.64382962515,"y":30907.23747069523},"targetPosition":{"x":17909.64382962515,"y":30970.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a1da9dd3-22ec-4536-bb5a-4d0bb8a56b81","savedPayload":{"position":{"x":17909.64382962515,"y":30970.23747069523},"targetPosition":{"x":17937.64382962515,"y":30945.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"499a5a3b-7871-4c95-9b2e-d58d4d9e2392","savedPayload":{"position":{"x":20338.30314996344,"y":32379.187370649288},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"bitkk","config":"{ \n\"codeName\": \"bitkk\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"efbb916c-780b-447f-a4c2-df68570d4ee1","savedPayload":{"position":{"x":17931.64382962515,"y":30937.23747069523},"targetPosition":{"x":17951.64382962515,"y":30936.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"0d829516-81d9-46a5-9861-7d94cc89455d","savedPayload":{"position":{"x":17951.64382962515,"y":30912.23747069523},"targetPosition":{"x":17951.64382962515,"y":30936.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"fc174aa3-c485-4b9b-ba19-444b0189ccb1","savedPayload":{"position":{"x":17788.64382962515,"y":30980.23747069523},"targetPosition":{"x":17834.64382962515,"y":30983.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"15921d8a-4b45-481c-9165-79969ed3fd27","savedPayload":{"position":{"x":17796.64382962515,"y":30936.23747069523},"targetPosition":{"x":17891.64382962515,"y":30922.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"927d5c8a-85df-48bb-b097-c36abb76ca0e","savedPayload":{"position":{"x":17891.64382962515,"y":30922.23747069523},"targetPosition":{"x":17834.64382962515,"y":30983.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"43d218c2-e633-47d5-8dd8-60bc7f7c0b9e","savedPayload":{"position":{"x":17834.64382962515,"y":30983.23747069523},"targetPosition":{"x":17853.64382962515,"y":30925.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2d310d61-cbc7-4306-af02-be3888939545","savedPayload":{"position":{"x":17853.64382962515,"y":30925.23747069523},"targetPosition":{"x":17951.64382962515,"y":30936.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ded39740-3c93-4fda-bb9c-6ac75d2109f4","savedPayload":{"position":{"x":20272.99373092915,"y":32585.317599070277},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"BitMart","config":"{ \n\"codeName\": \"bitmart\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"10374855-6b4a-460b-9c95-70072ac00315","savedPayload":{"position":{"x":17907.64382962515,"y":30901.23747069523},"targetPosition":{"x":17834.64382962515,"y":30915.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"3aded60c-4061-48ff-ad33-212c965b5c43","savedPayload":{"position":{"x":17829.64382962515,"y":30925.23747069523},"targetPosition":{"x":17834.64382962515,"y":30915.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"1789a3ca-d948-497d-8d1b-1eefd25d16a3","savedPayload":{"position":{"x":17886.64382962515,"y":30937.23747069523},"targetPosition":{"x":17895.64382962515,"y":30988.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"038170bc-0ca7-4a92-8219-61b7bc8431b0","savedPayload":{"position":{"x":17893.64382962515,"y":31034.23747069523},"targetPosition":{"x":17835.64382962515,"y":30962.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"55f79ede-ef02-405f-92bd-11902ab3cc7a","savedPayload":{"position":{"x":17835.64382962515,"y":30962.23747069523},"targetPosition":{"x":17895.64382962515,"y":30988.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8185c660-4af3-4a62-bfa9-8922861101b5","savedPayload":{"position":{"x":17895.64382962515,"y":30988.23747069523},"targetPosition":{"x":17819.64382962515,"y":30909.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"546d48c3-df31-495c-b3b4-cb35109c5542","savedPayload":{"position":{"x":17819.64382962515,"y":30909.23747069523},"targetPosition":{"x":17834.64382962515,"y":30915.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c7ed52a7-895b-46f1-a745-35954d8bcfc6","savedPayload":{"position":{"x":20185.757207083134,"y":32783.18231024052},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"BitMax","config":"{ \n\"codeName\": \"bitmax\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"8a042d0d-7a7a-4a76-889e-42d8642404f4","savedPayload":{"position":{"x":17944.64382962515,"y":31046.23747069523},"targetPosition":{"x":17944.64382962515,"y":31109.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"0c4fcc48-51e6-4ff2-925f-405cda6d1122","savedPayload":{"position":{"x":17898.64382962515,"y":31024.23747069523},"targetPosition":{"x":17944.64382962515,"y":31109.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"ef9d5381-d9e3-47f5-9069-6fc14eda0fa3","savedPayload":{"position":{"x":17879.64382962515,"y":31096.23747069523},"targetPosition":{"x":17977.64382962515,"y":31041.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"c66fe606-9705-45b0-a196-7ea3efb0221e","savedPayload":{"position":{"x":17982.64382962515,"y":31053.23747069523},"targetPosition":{"x":17943.64382962515,"y":31083.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"80a5f68e-776a-44de-8797-d2eb806c306e","savedPayload":{"position":{"x":17943.64382962515,"y":31083.23747069523},"targetPosition":{"x":17977.64382962515,"y":31041.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"011fcf1c-1c94-4c36-a246-d6c400aa39dc","savedPayload":{"position":{"x":17977.64382962515,"y":31041.23747069523},"targetPosition":{"x":17942.64382962515,"y":31103.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4a87b8c5-e009-427f-afb7-21afe5594b59","savedPayload":{"position":{"x":17942.64382962515,"y":31103.23747069523},"targetPosition":{"x":17944.64382962515,"y":31109.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"fc6a9048-ab8c-48f9-91ae-6c95c28714b0","savedPayload":{"position":{"x":20077.628607199156,"y":32970.46032656747},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"BitMEX","config":"{ \n\"codeName\": \"bitmex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"f7636e2b-354a-4217-894b-5e26eddc0c2a","savedPayload":{"position":{"x":17894.64382962515,"y":30934.23747069523},"targetPosition":{"x":17910.64382962515,"y":30922.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"6eb2ddd1-6d06-456c-b4e0-7df56ba182e6","savedPayload":{"position":{"x":17823.64382962515,"y":30834.23747069523},"targetPosition":{"x":17910.64382962515,"y":30922.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"b4a4b8fe-d923-4eb0-a066-171b83d1540d","savedPayload":{"position":{"x":17902.64382962515,"y":31064.23747069523},"targetPosition":{"x":17815.64382962515,"y":30988.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"918ed585-ce46-4d51-a07a-9beee51f70eb","savedPayload":{"position":{"x":17711.64382962515,"y":31036.23747069523},"targetPosition":{"x":17805.64382962515,"y":31078.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"9efef4d8-5be3-4d17-a645-6edffd9535cf","savedPayload":{"position":{"x":17805.64382962515,"y":31078.23747069523},"targetPosition":{"x":17815.64382962515,"y":30988.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6ad31a6e-f27b-45c3-9996-a41fb39aa154","savedPayload":{"position":{"x":17815.64382962515,"y":30988.23747069523},"targetPosition":{"x":17844.64382962515,"y":30896.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"82887393-cb1c-4b01-8581-4b3dabc86584","savedPayload":{"position":{"x":17844.64382962515,"y":30896.23747069523},"targetPosition":{"x":17910.64382962515,"y":30922.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1e2f1dd0-ebf1-4485-83d8-7723a9e3e714","savedPayload":{"position":{"x":19949.879761430722,"y":33144.95349793184},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Bittrex","config":"{ \n\"codeName\": \"bittrex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"88d4ef94-f030-42df-9115-69d9611317b1","savedPayload":{"position":{"x":17839.64382962515,"y":31009.23747069523},"targetPosition":{"x":17893.64382962515,"y":30968.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"7fe8234d-9a39-4b28-bf98-43b4fdb57ee5","savedPayload":{"position":{"x":17878.64382962515,"y":31045.23747069523},"targetPosition":{"x":17893.64382962515,"y":30968.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"5ba7fe13-1e0f-403a-8f4b-8e3968d2e5e2","savedPayload":{"position":{"x":17841.64382962515,"y":30890.23747069523},"targetPosition":{"x":17742.64382962515,"y":30961.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"e926fbb8-d2ac-4e3d-aa59-a0a828d202fd","savedPayload":{"position":{"x":17707.64382962515,"y":30983.23747069523},"targetPosition":{"x":17782.64382962515,"y":31052.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"4fbe41e1-cb15-4bc2-a3de-681c5b22cc97","savedPayload":{"position":{"x":17782.64382962515,"y":31052.23747069523},"targetPosition":{"x":17742.64382962515,"y":30961.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ab9fe180-1c07-44de-a0a1-863761ac52d6","savedPayload":{"position":{"x":17742.64382962515,"y":30961.23747069523},"targetPosition":{"x":17796.64382962515,"y":30903.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"584f29ca-9b3c-4b7f-a2b0-aab4180ecefd","savedPayload":{"position":{"x":17796.64382962515,"y":30903.23747069523},"targetPosition":{"x":17893.64382962515,"y":30968.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f598f002-8fc5-491f-888e-07d017ea83c6","savedPayload":{"position":{"x":19804.010533722707,"y":33304.614548530735},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Bit-Z","config":"{ \n\"codeName\": \"bitz\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"0a22e02b-7d2e-4955-9cfc-ed7d95f0c9a0","savedPayload":{"position":{"x":17751.64382962515,"y":31083.23747069523},"targetPosition":{"x":17850.64382962515,"y":31073.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"298b45af-b73d-4cd5-848a-97de7b857569","savedPayload":{"position":{"x":17944.64382962515,"y":31083.23747069523},"targetPosition":{"x":17850.64382962515,"y":31073.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"6ede807b-b1ab-42b5-bfd7-3b12a942447e","savedPayload":{"position":{"x":17871.64382962515,"y":31049.23747069523},"targetPosition":{"x":17772.64382962515,"y":31098.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"dc172858-3241-4487-950a-e5cae03ac376","savedPayload":{"position":{"x":17751.64382962515,"y":31081.23747069523},"targetPosition":{"x":17753.64382962515,"y":31028.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"19c07cee-1fdf-4e02-ac9f-d110b64ee033","savedPayload":{"position":{"x":17753.64382962515,"y":31028.23747069523},"targetPosition":{"x":17772.64382962515,"y":31098.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b4ef5048-ac4c-410e-bd6d-3338e33ab108","savedPayload":{"position":{"x":17772.64382962515,"y":31098.23747069523},"targetPosition":{"x":17788.64382962515,"y":31134.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e7e96c41-c839-4eec-9bcf-1c60d60fa3f5","savedPayload":{"position":{"x":17788.64382962515,"y":31134.23747069523},"targetPosition":{"x":17850.64382962515,"y":31073.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6cc10926-fe41-43be-887b-fa8aba1c7377","savedPayload":{"position":{"x":19641.732156244707,"y":33447.570499877744},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"BTC-Alpha","config":"{ \n\"codeName\": \"btcalpha\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"263e3b9c-8fdd-4376-b53b-87f32d0f5898","savedPayload":{"position":{"x":17904.64382962515,"y":30922.23747069523},"targetPosition":{"x":17883.64382962515,"y":30971.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"804603e1-3e0f-4219-a9b7-ee27810d4f07","savedPayload":{"position":{"x":17829.64382962515,"y":30977.23747069523},"targetPosition":{"x":17883.64382962515,"y":30971.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"83b25fff-e448-483f-9bee-cb85fa592c6e","savedPayload":{"position":{"x":17734.64382962515,"y":30862.23747069523},"targetPosition":{"x":17829.64382962515,"y":30960.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"efcfa3ca-0f82-4eb7-9b04-ed5eb4e1c3cf","savedPayload":{"position":{"x":17799.64382962515,"y":30864.23747069523},"targetPosition":{"x":17837.64382962515,"y":30919.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"9ca8d728-ee11-4905-9a3a-5ca4ed50f3df","savedPayload":{"position":{"x":17837.64382962515,"y":30919.23747069523},"targetPosition":{"x":17829.64382962515,"y":30960.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2cfde277-afa6-4ad3-bb5b-8a32b89e2037","savedPayload":{"position":{"x":17829.64382962515,"y":30960.23747069523},"targetPosition":{"x":17903.64382962515,"y":30969.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"297a0ea2-f6d7-47fd-9fb7-0d99d00a87d8","savedPayload":{"position":{"x":17903.64382962515,"y":30969.23747069523},"targetPosition":{"x":17883.64382962515,"y":30971.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"30e5485f-213b-435b-a670-07b76cfe5cae","savedPayload":{"position":{"x":19464.9476676534,"y":33572.14457478545},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"BTC Markets","config":"{ \n\"codeName\": \"btcmarkets\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"fcb3b880-0852-4d93-8714-67373f9dca16","savedPayload":{"position":{"x":17911.64382962515,"y":31036.23747069523},"targetPosition":{"x":17994.64382962515,"y":31033.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"953d8eff-0b2e-4b07-8635-393fddae0c9d","savedPayload":{"position":{"x":18025.64382962515,"y":31127.23747069523},"targetPosition":{"x":17994.64382962515,"y":31033.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"c08873f6-9120-4764-8b06-c8110468b423","savedPayload":{"position":{"x":17935.64382962515,"y":30927.23747069523},"targetPosition":{"x":18027.64382962515,"y":31003.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"beaa2557-4976-4e53-8a24-7ea00fc3afd5","savedPayload":{"position":{"x":18054.64382962515,"y":30851.23747069523},"targetPosition":{"x":18125.64382962515,"y":30951.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"445158a2-91b4-4ad8-8380-036cbba6ad7e","savedPayload":{"position":{"x":18125.64382962515,"y":30951.23747069523},"targetPosition":{"x":18027.64382962515,"y":31003.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"cd00e08c-a26d-4b11-93a3-b0e8f35bec4b","savedPayload":{"position":{"x":18027.64382962515,"y":31003.23747069523},"targetPosition":{"x":18016.64382962515,"y":31075.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"35cb55c1-ceb3-4093-98af-8a1c2411fe0f","savedPayload":{"position":{"x":18016.64382962515,"y":31075.23747069523},"targetPosition":{"x":17994.64382962515,"y":31033.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ac2fda42-95ca-404a-8dd2-72bff0ff5a0f","savedPayload":{"position":{"x":19275.72991073397,"y":33676.87575662073},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Buda","config":"{ \n\"codeName\": \"buda\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"27f3573d-e1f0-473f-9bfd-f9198e7240a0","savedPayload":{"position":{"x":17945.64382962515,"y":30937.23747069523},"targetPosition":{"x":17853.64382962515,"y":31005.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"4ddc0981-4e45-42f3-ae11-f5b136b2bc3d","savedPayload":{"position":{"x":17783.64382962515,"y":31008.23747069523},"targetPosition":{"x":17853.64382962515,"y":31005.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"5a325d59-e6a6-4f76-a311-5e67c5f5a8a2","savedPayload":{"position":{"x":17980.64382962515,"y":30843.23747069523},"targetPosition":{"x":17956.64382962515,"y":30936.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"fb985ab9-7759-4780-a052-8ee9be0b712a","savedPayload":{"position":{"x":17907.64382962515,"y":30968.23747069523},"targetPosition":{"x":17958.64382962515,"y":30884.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"fdf7665a-2974-467b-9280-4077a888733f","savedPayload":{"position":{"x":17958.64382962515,"y":30884.23747069523},"targetPosition":{"x":17956.64382962515,"y":30936.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a3105cfc-f80e-4bcb-b399-6ea9c0f7edf0","savedPayload":{"position":{"x":17956.64382962515,"y":30936.23747069523},"targetPosition":{"x":17872.64382962515,"y":30941.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5d69a76f-e7bc-4538-950e-2e2353eccea3","savedPayload":{"position":{"x":17872.64382962515,"y":30941.23747069523},"targetPosition":{"x":17853.64382962515,"y":31005.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"90fe3d74-662e-4fac-aff3-f41990b61ccf","savedPayload":{"position":{"x":19076.29737582386,"y":33760.53582882487},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"BW","config":"{ \n\"codeName\": \"bw\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"457616cd-25f9-4ad3-8c18-6331859dd42e","savedPayload":{"position":{"x":17890.64382962515,"y":31014.23747069523},"targetPosition":{"x":17900.64382962515,"y":30965.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"8c1f9aa2-4253-4129-a533-e515644ddb38","savedPayload":{"position":{"x":17909.64382962515,"y":30970.23747069523},"targetPosition":{"x":17900.64382962515,"y":30965.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"24314a5b-85ca-4036-adc6-618120496f1d","savedPayload":{"position":{"x":17773.64382962515,"y":30945.23747069523},"targetPosition":{"x":17860.64382962515,"y":30865.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"f7c593f6-bd7a-41f7-a5e7-b2e1ea9a528f","savedPayload":{"position":{"x":17820.64382962515,"y":30885.23747069523},"targetPosition":{"x":17828.64382962515,"y":30802.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"60dfc799-f863-4895-8d17-568aa2303ef5","savedPayload":{"position":{"x":17828.64382962515,"y":30802.23747069523},"targetPosition":{"x":17860.64382962515,"y":30865.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"223e466d-d750-4e38-91ce-8a59c15242ba","savedPayload":{"position":{"x":17860.64382962515,"y":30865.23747069523},"targetPosition":{"x":17818.64382962515,"y":30919.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cfff1310-5220-4978-9553-8514be141d14","savedPayload":{"position":{"x":17818.64382962515,"y":30919.23747069523},"targetPosition":{"x":17900.64382962515,"y":30965.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d72db90c-d572-4cbb-8348-e3cc485d8e86","savedPayload":{"position":{"x":18868.988255974582,"y":33822.143715356484},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Bybit","config":"{ \n\"codeName\": \"bybit\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"18fdf7c8-03c4-4f81-a88e-de97589765e1","savedPayload":{"position":{"x":17803.64382962515,"y":31059.23747069523},"targetPosition":{"x":17855.64382962515,"y":31007.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"a62b2603-ac6f-4b6e-9541-86daf32027b1","savedPayload":{"position":{"x":17847.64382962515,"y":31104.23747069523},"targetPosition":{"x":17855.64382962515,"y":31007.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"66ecff99-7102-4f4a-9ce8-4d55fb22dfbc","savedPayload":{"position":{"x":17851.64382962515,"y":31165.23747069523},"targetPosition":{"x":17916.64382962515,"y":31077.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"625e127c-0ebb-4f57-af9f-9dfb57b262a1","savedPayload":{"position":{"x":18004.64382962515,"y":31091.23747069523},"targetPosition":{"x":18008.64382962515,"y":31027.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"8174bb53-66b8-4575-b206-74f9b6352a80","savedPayload":{"position":{"x":18008.64382962515,"y":31027.23747069523},"targetPosition":{"x":17916.64382962515,"y":31077.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ee16357e-abde-4800-b089-f43f4b696a35","savedPayload":{"position":{"x":17916.64382962515,"y":31077.23747069523},"targetPosition":{"x":17944.64382962515,"y":31101.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c9e9473b-aff9-43c8-a6be-5cd30330bee2","savedPayload":{"position":{"x":17944.64382962515,"y":31101.23747069523},"targetPosition":{"x":17855.64382962515,"y":31007.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"516c3831-456b-4d17-b0a0-6a363ba2ddb2","savedPayload":{"position":{"x":18656.233063257194,"y":33860.976946599774},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"ByteTrade","config":"{ \n\"codeName\": \"bytetrade\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"e7a1e531-5a9e-466e-b98d-672de39eed3a","savedPayload":{"position":{"x":18088.64382962515,"y":31024.23747069523},"targetPosition":{"x":17991.64382962515,"y":30981.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"edafaba7-fd82-4d9f-b3f7-5d1c01c56599","savedPayload":{"position":{"x":17941.64382962515,"y":30943.23747069523},"targetPosition":{"x":17991.64382962515,"y":30981.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"50fa78b8-3aea-4e43-adcf-1e31820bf97f","savedPayload":{"position":{"x":17886.64382962515,"y":31008.23747069523},"targetPosition":{"x":17858.64382962515,"y":30967.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"b9c39b04-e86e-4ebb-9aba-39c375f2960c","savedPayload":{"position":{"x":17865.64382962515,"y":30941.23747069523},"targetPosition":{"x":17953.64382962515,"y":31023.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"5965d9cc-1d68-47a7-b838-e6dd81da6ea9","savedPayload":{"position":{"x":17953.64382962515,"y":31023.23747069523},"targetPosition":{"x":17858.64382962515,"y":30967.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f51a08be-ee3f-4d3b-a75e-d783d63092a7","savedPayload":{"position":{"x":17858.64382962515,"y":30967.23747069523},"targetPosition":{"x":17898.64382962515,"y":30965.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d395efd0-691b-4a68-a7f1-9bce95b2f687","savedPayload":{"position":{"x":17898.64382962515,"y":30965.23747069523},"targetPosition":{"x":17991.64382962515,"y":30981.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"45e2306f-03e8-4d17-a73a-72c11dd14e78","savedPayload":{"position":{"x":18440.52614706545,"y":33876.58010752045},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"CEX.IO","config":"{ \n\"codeName\": \"cex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"9de19f0a-5824-4e42-af00-484b64421dc3","savedPayload":{"position":{"x":17890.64382962515,"y":31049.23747069523},"targetPosition":{"x":17896.64382962515,"y":31076.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"39db01bc-0cea-422f-b9e9-7d84e3f5446d","savedPayload":{"position":{"x":17918.64382962515,"y":31105.23747069523},"targetPosition":{"x":17896.64382962515,"y":31076.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"93833d3c-42c9-4e4d-bf0f-5b80a90d10c2","savedPayload":{"position":{"x":17978.64382962515,"y":31126.23747069523},"targetPosition":{"x":17953.64382962515,"y":31167.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"42863a52-30f4-4322-9c20-99a45d6dc3d6","savedPayload":{"position":{"x":17884.64382962515,"y":31149.23747069523},"targetPosition":{"x":17895.64382962515,"y":31148.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"fcff471d-29be-4176-8ff8-12088361f9fc","savedPayload":{"position":{"x":17895.64382962515,"y":31148.23747069523},"targetPosition":{"x":17953.64382962515,"y":31167.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f7975a18-b3ab-49bc-ae45-eb02c99aff8c","savedPayload":{"position":{"x":17953.64382962515,"y":31167.23747069523},"targetPosition":{"x":17881.64382962515,"y":31096.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ec432123-43fe-4171-8c41-b797d3161edb","savedPayload":{"position":{"x":17881.64382962515,"y":31096.23747069523},"targetPosition":{"x":17896.64382962515,"y":31076.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"346bfc30-e32a-453a-bdc6-0ead48221581","savedPayload":{"position":{"x":18224.617648390555,"y":33868.7700257939},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Coinbase Prime","config":"{ \n\"codeName\": \"coinbaseprime\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"73cabd8d-9308-49ed-b544-44f785ee7d38","savedPayload":{"position":{"x":17867.64382962515,"y":30962.23747069523},"targetPosition":{"x":17922.64382962515,"y":30960.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"31bd1360-f0c5-4d70-876a-b152f7cedfd7","savedPayload":{"position":{"x":17960.64382962515,"y":30864.23747069523},"targetPosition":{"x":17922.64382962515,"y":30960.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"9b75fcfa-fe75-48a8-9d28-2ff19c58c041","savedPayload":{"position":{"x":17792.64382962515,"y":30841.23747069523},"targetPosition":{"x":17809.64382962515,"y":30934.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"c900b14a-c728-45af-90f8-29b3e5f29f46","savedPayload":{"position":{"x":17801.64382962515,"y":30986.23747069523},"targetPosition":{"x":17793.64382962515,"y":31006.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"eaf72df3-b66f-4b83-83f9-91e22ec0c300","savedPayload":{"position":{"x":17793.64382962515,"y":31006.23747069523},"targetPosition":{"x":17809.64382962515,"y":30934.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9da95675-2071-41bf-b5ac-4f2af602994f","savedPayload":{"position":{"x":17809.64382962515,"y":30934.23747069523},"targetPosition":{"x":17862.64382962515,"y":31021.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4fc49ad4-57cc-43b0-b14b-15f26af994aa","savedPayload":{"position":{"x":17862.64382962515,"y":31021.23747069523},"targetPosition":{"x":17922.64382962515,"y":30960.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5a8281db-6ace-4186-8cfb-cd249c4af48b","savedPayload":{"position":{"x":18010.599702253105,"y":33837.63840797201},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Coinbase Pro","config":"{ \n\"codeName\": \"coinbasepro\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"a29d6e1a-a94e-4b6b-8741-e9af6e4762f4","savedPayload":{"position":{"x":17788.64382962515,"y":30897.23747069523},"targetPosition":{"x":17841.64382962515,"y":30932.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"10cd9004-0088-4bc0-8fe6-b937f1bb311b","savedPayload":{"position":{"x":17865.64382962515,"y":30918.23747069523},"targetPosition":{"x":17841.64382962515,"y":30932.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"004397e6-ae73-46a6-9ed7-b4ba1930f77b","savedPayload":{"position":{"x":17945.64382962515,"y":30899.23747069523},"targetPosition":{"x":17850.64382962515,"y":30889.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"a81a7021-2228-4386-a773-9ac80c9e723a","savedPayload":{"position":{"x":17738.64382962515,"y":30761.23747069523},"targetPosition":{"x":17792.64382962515,"y":30789.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"482d82f2-364e-483c-b51a-a3fbe8a91577","savedPayload":{"position":{"x":17792.64382962515,"y":30789.23747069523},"targetPosition":{"x":17850.64382962515,"y":30889.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d823ad8e-0452-40f0-bad9-c2cb3ad29a21","savedPayload":{"position":{"x":17850.64382962515,"y":30889.23747069523},"targetPosition":{"x":17772.64382962515,"y":30894.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0c965322-fdd2-4e67-aaf3-dfc4b9dffc59","savedPayload":{"position":{"x":17772.64382962515,"y":30894.23747069523},"targetPosition":{"x":17841.64382962515,"y":30932.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4242da4b-a67e-44d8-8a19-b1c2f078c94c","savedPayload":{"position":{"x":17801.201540182523,"y":33783.55008766244},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"CoinEx","config":"{ \n\"codeName\": \"coinex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"af78f796-60e5-4794-87b8-772c7bc74be1","savedPayload":{"position":{"x":18043.64382962515,"y":31069.23747069523},"targetPosition":{"x":18000.64382962515,"y":31106.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"d351e6d9-36eb-4d0e-aca5-94429bbb23a3","savedPayload":{"position":{"x":18094.64382962515,"y":31090.23747069523},"targetPosition":{"x":18000.64382962515,"y":31106.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"438f74c6-15e0-4553-af2a-febd5290c269","savedPayload":{"position":{"x":17908.64382962515,"y":31088.23747069523},"targetPosition":{"x":17986.64382962515,"y":31075.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"bfb22430-77c7-41a7-8083-771f7d7f3634","savedPayload":{"position":{"x":17927.64382962515,"y":30953.23747069523},"targetPosition":{"x":17947.64382962515,"y":30990.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"51daaa12-1c60-4cef-96d8-a445b4b32296","savedPayload":{"position":{"x":17947.64382962515,"y":30990.23747069523},"targetPosition":{"x":17986.64382962515,"y":31075.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"726b8c33-9873-4be1-b9ef-d6b4483f23b1","savedPayload":{"position":{"x":17986.64382962515,"y":31075.23747069523},"targetPosition":{"x":17919.64382962515,"y":31016.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"30469514-b983-4f6f-9d74-6d6ceef25eb6","savedPayload":{"position":{"x":17919.64382962515,"y":31016.23747069523},"targetPosition":{"x":18000.64382962515,"y":31106.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"62ad0961-6bdf-4a4a-a340-610816742d0a","savedPayload":{"position":{"x":17598.8785975756,"y":33707.139152873264},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"COSS","config":"{ \n\"codeName\": \"coss\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"e6315232-c6b1-4e25-aade-7bc7ba9ba6ac","savedPayload":{"position":{"x":17787.64382962515,"y":30984.23747069523},"targetPosition":{"x":17874.64382962515,"y":31049.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"b1e8451f-09a2-47b0-add3-cf9c35c487bb","savedPayload":{"position":{"x":17829.64382962515,"y":31095.23747069523},"targetPosition":{"x":17874.64382962515,"y":31049.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"d1c9b795-0434-4ce1-9cb7-cc61fac7396d","savedPayload":{"position":{"x":17950.64382962515,"y":31149.23747069523},"targetPosition":{"x":17882.64382962515,"y":31131.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"22be64f9-4b08-4ac3-ae89-6726743a7d5a","savedPayload":{"position":{"x":17890.64382962515,"y":31165.23747069523},"targetPosition":{"x":17956.64382962515,"y":31156.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"c7462500-ba74-4bf3-ad81-35fa232bede3","savedPayload":{"position":{"x":17956.64382962515,"y":31156.23747069523},"targetPosition":{"x":17882.64382962515,"y":31131.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5cd41ced-981a-4075-af43-3a0497eb0fcb","savedPayload":{"position":{"x":17882.64382962515,"y":31131.23747069523},"targetPosition":{"x":17856.64382962515,"y":31148.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b5937899-c6ee-4d7a-b259-1ee23d721f60","savedPayload":{"position":{"x":17856.64382962515,"y":31148.23747069523},"targetPosition":{"x":17874.64382962515,"y":31049.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"695029de-7f61-45bb-aa4c-c6d51e6369ed","savedPayload":{"position":{"x":17406.002941174946,"y":33609.3014054146},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"CREX24","config":"{ \n\"codeName\": \"crex24\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"c5e12f4a-fb26-40d3-9e70-751b55018e74","savedPayload":{"position":{"x":17910.64382962515,"y":31024.23747069523},"targetPosition":{"x":17860.64382962515,"y":31075.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"00cb629e-bad4-4c6e-8abb-499cad3992f4","savedPayload":{"position":{"x":17938.64382962515,"y":31054.23747069523},"targetPosition":{"x":17860.64382962515,"y":31075.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"4909d182-e0d5-49a9-8ad2-a553c8aaaf88","savedPayload":{"position":{"x":17912.64382962515,"y":31301.23747069523},"targetPosition":{"x":17920.64382962515,"y":31249.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"075eb2a2-299b-4a0f-9f6d-76c385521dc4","savedPayload":{"position":{"x":17800.64382962515,"y":31332.23747069523},"targetPosition":{"x":17883.64382962515,"y":31289.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"e062ef2e-b252-4a66-8f58-d9aa8031f526","savedPayload":{"position":{"x":17883.64382962515,"y":31289.23747069523},"targetPosition":{"x":17920.64382962515,"y":31249.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8e75be98-f874-486d-b749-536e364934dc","savedPayload":{"position":{"x":17920.64382962515,"y":31249.23747069523},"targetPosition":{"x":17845.64382962515,"y":31164.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"052f73cd-7ed7-4537-8b01-840b5b892fea","savedPayload":{"position":{"x":17845.64382962515,"y":31164.23747069523},"targetPosition":{"x":17860.64382962515,"y":31075.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"07a7ec7c-273e-4675-8d8d-21ab8514a1f0","savedPayload":{"position":{"x":17224.835844557932,"y":33491.183859380195},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Deribit","config":"{ \n\"codeName\": \"deribit\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"f0b2354b-89e3-4eca-b051-664a3b8283f6","savedPayload":{"position":{"x":17862.64382962515,"y":30844.23747069523},"targetPosition":{"x":17906.64382962515,"y":30929.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"4ae1f824-82a8-4796-a2d5-3d2358d8089f","savedPayload":{"position":{"x":17912.64382962515,"y":31024.23747069523},"targetPosition":{"x":17906.64382962515,"y":30929.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"2013fe7a-d52c-4c9d-ba53-d281d014a8fc","savedPayload":{"position":{"x":17873.64382962515,"y":30926.23747069523},"targetPosition":{"x":17855.64382962515,"y":30967.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"706d5778-ed21-49bd-9277-1840ec52708d","savedPayload":{"position":{"x":17729.64382962515,"y":31033.23747069523},"targetPosition":{"x":17813.64382962515,"y":31053.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"2e76bc02-6e10-4f14-9bf1-a11dc4268466","savedPayload":{"position":{"x":17813.64382962515,"y":31053.23747069523},"targetPosition":{"x":17855.64382962515,"y":30967.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"89a3ccc7-20ab-4e2d-929b-52d9286179b7","savedPayload":{"position":{"x":17855.64382962515,"y":30967.23747069523},"targetPosition":{"x":17818.64382962515,"y":30920.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5c8219e3-4509-4b8b-941b-b88ac2c12237","savedPayload":{"position":{"x":17818.64382962515,"y":30920.23747069523},"targetPosition":{"x":17906.64382962515,"y":30929.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"21971815-4248-45df-8e04-20b9a5a83f06","savedPayload":{"position":{"x":17057.50130244092,"y":33354.1712940054},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"DigiFinex","config":"{ \n\"codeName\": \"digifinex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"e583c93e-9a44-4e0d-acb7-56d7e00a555a","savedPayload":{"position":{"x":17954.64382962515,"y":30992.23747069523},"targetPosition":{"x":17996.64382962515,"y":31033.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"8917c7c0-b420-4d4f-a35a-c0fc6870f0de","savedPayload":{"position":{"x":18052.64382962515,"y":30972.23747069523},"targetPosition":{"x":17996.64382962515,"y":31033.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"a00b5bb0-5ab9-42e2-91fe-b450c7eb66d2","savedPayload":{"position":{"x":18220.64382962515,"y":31090.23747069523},"targetPosition":{"x":18123.64382962515,"y":30998.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"2aafc473-339b-4d23-9b74-06fa7574c293","savedPayload":{"position":{"x":18144.64382962515,"y":31123.23747069523},"targetPosition":{"x":18203.64382962515,"y":31084.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"99e9e136-1ac7-4400-a100-0a2d37f0882d","savedPayload":{"position":{"x":18203.64382962515,"y":31084.23747069523},"targetPosition":{"x":18123.64382962515,"y":30998.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b7cee21b-ddcb-4fd7-b610-43aabb2d1766","savedPayload":{"position":{"x":18123.64382962515,"y":30998.23747069523},"targetPosition":{"x":18032.64382962515,"y":30976.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"08e84a25-4368-4ad6-939f-5a16cece62cc","savedPayload":{"position":{"x":18032.64382962515,"y":30976.23747069523},"targetPosition":{"x":17996.64382962515,"y":31033.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b7d56781-0c51-4ec1-95fd-bf4dc8c00352","savedPayload":{"position":{"x":16905.961132648972,"y":33199.87001886404},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"DSX","config":"{ \n\"codeName\": \"dsx\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"d672ab56-cd32-4ff5-8fc5-3733262aeccb","savedPayload":{"position":{"x":17916.64382962515,"y":31106.23747069523},"targetPosition":{"x":17955.64382962515,"y":31011.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"3731a7b5-ba9d-483e-bb41-abf3ae0232c6","savedPayload":{"position":{"x":17878.64382962515,"y":30946.23747069523},"targetPosition":{"x":17955.64382962515,"y":31011.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"9ef7e0ac-dc27-4b47-a06e-0cb7e80ee3d7","savedPayload":{"position":{"x":18124.64382962515,"y":31136.23747069523},"targetPosition":{"x":18093.64382962515,"y":31072.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"77491a3c-3db7-446f-aa67-9b5a1a3be7b3","savedPayload":{"position":{"x":18109.64382962515,"y":31081.23747069523},"targetPosition":{"x":18188.64382962515,"y":31137.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"bd1bd0b7-4943-4aeb-bf90-d3192dcabbb1","savedPayload":{"position":{"x":18188.64382962515,"y":31137.23747069523},"targetPosition":{"x":18093.64382962515,"y":31072.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"45747fef-f30e-4fae-b02d-5768ae7dbe68","savedPayload":{"position":{"x":18093.64382962515,"y":31072.23747069523},"targetPosition":{"x":18018.64382962515,"y":31005.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"aa2e1c9b-428c-4bb0-9e75-ceb8c9043d4b","savedPayload":{"position":{"x":18018.64382962515,"y":31005.23747069523},"targetPosition":{"x":17955.64382962515,"y":31011.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4c543abc-7372-4701-bc58-107578d45c25","savedPayload":{"position":{"x":16771.99197646475,"y":33030.089037842634},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"FCoin","config":"{ \n\"codeName\": \"fcoin\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"a97d578c-6d7f-403c-8294-18aacf14abd8","savedPayload":{"position":{"x":17893.64382962515,"y":30953.23747069523},"targetPosition":{"x":17919.64382962515,"y":30948.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"442c3834-482e-4928-9255-8ac859ae012e","savedPayload":{"position":{"x":17905.64382962515,"y":30896.23747069523},"targetPosition":{"x":17919.64382962515,"y":30948.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"79754959-1219-4c4d-be63-22766158beb5","savedPayload":{"position":{"x":18106.64382962515,"y":30976.23747069523},"targetPosition":{"x":18069.64382962515,"y":31056.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"1c3ae096-5024-43c3-abca-24498254e363","savedPayload":{"position":{"x":18112.64382962515,"y":30919.23747069523},"targetPosition":{"x":18126.64382962515,"y":30965.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"59db5bfd-e413-48a7-af63-237ad56adc82","savedPayload":{"position":{"x":18126.64382962515,"y":30965.23747069523},"targetPosition":{"x":18069.64382962515,"y":31056.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"833c4e54-08f4-48ec-b90a-2767eb55f244","savedPayload":{"position":{"x":18069.64382962515,"y":31056.23747069523},"targetPosition":{"x":17996.64382962515,"y":30970.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a8cf17b3-0ea7-4a14-8c76-f655344b58a3","savedPayload":{"position":{"x":17996.64382962515,"y":30970.23747069523},"targetPosition":{"x":17919.64382962515,"y":30948.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6ddedcbd-07cb-4928-91b3-348f47118391","savedPayload":{"position":{"x":16657.164468999763,"y":32846.81883991287},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"FCoinJP","config":"{ \n\"codeName\": \"fcoinjp\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"4a8a9810-6df6-451a-ab26-22bd7e7be85a","savedPayload":{"position":{"x":17930.64382962515,"y":31129.23747069523},"targetPosition":{"x":17942.64382962515,"y":31052.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"138ab40c-18ca-4a11-9709-0baa040873e6","savedPayload":{"position":{"x":18007.64382962515,"y":31122.23747069523},"targetPosition":{"x":17942.64382962515,"y":31052.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"258cdf92-8ed0-4133-ae2a-b9f086f56a13","savedPayload":{"position":{"x":17897.64382962515,"y":30887.23747069523},"targetPosition":{"x":17903.64382962515,"y":30977.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"537e8f0c-05ca-4403-bc96-da6c2f4678ae","savedPayload":{"position":{"x":17825.64382962515,"y":30842.23747069523},"targetPosition":{"x":17836.64382962515,"y":30926.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"62519e63-8f4e-4b72-a341-0a6eea01ac3f","savedPayload":{"position":{"x":17836.64382962515,"y":30926.23747069523},"targetPosition":{"x":17903.64382962515,"y":30977.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b4974cc1-f594-436b-8aa4-aff2733b8e3c","savedPayload":{"position":{"x":17903.64382962515,"y":30977.23747069523},"targetPosition":{"x":17873.64382962515,"y":31061.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d84b404f-75e2-4eb5-b34a-b45af8a57ca7","savedPayload":{"position":{"x":17873.64382962515,"y":31061.23747069523},"targetPosition":{"x":17942.64382962515,"y":31052.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"982627ea-df84-4ba9-9219-612fbe1e4276","savedPayload":{"position":{"x":16562.824824611605,"y":32652.208061321595},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"FTX","config":"{ \n\"codeName\": \"ftx\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"20c0a4f5-bdb9-46cc-af7e-2111964551e3","savedPayload":{"position":{"x":17886.64382962515,"y":30940.23747069523},"targetPosition":{"x":17960.64382962515,"y":31019.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"75c99a0b-d3c9-4073-9283-d33e539c36bb","savedPayload":{"position":{"x":17992.64382962515,"y":31061.23747069523},"targetPosition":{"x":17960.64382962515,"y":31019.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"2e037470-549e-4aa8-bbe7-95cdeaef88ea","savedPayload":{"position":{"x":17964.64382962515,"y":31027.23747069523},"targetPosition":{"x":17970.64382962515,"y":31008.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"3b6f5b7b-9c61-4b71-b29a-ca1bc027e55f","savedPayload":{"position":{"x":17817.64382962515,"y":30943.23747069523},"targetPosition":{"x":17890.64382962515,"y":30978.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"a84010f0-04b5-4eab-a3a6-a5944b80a373","savedPayload":{"position":{"x":17890.64382962515,"y":30978.23747069523},"targetPosition":{"x":17970.64382962515,"y":31008.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5cdc51a3-6136-4e03-9e2c-26a752140d17","savedPayload":{"position":{"x":17970.64382962515,"y":31008.23747069523},"targetPosition":{"x":18010.64382962515,"y":30986.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"55258a2b-3199-4070-beed-d34a8496870c","savedPayload":{"position":{"x":18010.64382962515,"y":30986.23747069523},"targetPosition":{"x":17960.64382962515,"y":31019.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0c0bcf5c-2774-423e-9fcf-c512b38dd06d","savedPayload":{"position":{"x":16490.079053283698,"y":32448.53829351838},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Gate.io","config":"{ \n\"codeName\": \"gateio\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"71a15089-9d40-4726-9a41-37d406064164","savedPayload":{"position":{"x":17930.64382962515,"y":30993.23747069523},"targetPosition":{"x":17880.64382962515,"y":31031.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"c025e976-c2c6-49de-81ec-48e2f737b412","savedPayload":{"position":{"x":17925.64382962515,"y":31053.23747069523},"targetPosition":{"x":17880.64382962515,"y":31031.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"876f964a-e12d-4438-87fb-a84be22f86d1","savedPayload":{"position":{"x":17914.64382962515,"y":30833.23747069523},"targetPosition":{"x":17827.64382962515,"y":30882.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"0c5d34c4-467f-4e98-bd39-1b2d9afb834e","savedPayload":{"position":{"x":17852.64382962515,"y":30831.23747069523},"targetPosition":{"x":17870.64382962515,"y":30847.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"89316d8c-893a-46ae-b147-948b4b8a5292","savedPayload":{"position":{"x":17870.64382962515,"y":30847.23747069523},"targetPosition":{"x":17827.64382962515,"y":30882.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a2a5de53-bd45-4904-8bae-0cf5ed66d2af","savedPayload":{"position":{"x":17827.64382962515,"y":30882.23747069523},"targetPosition":{"x":17800.64382962515,"y":30936.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f6f4072d-8cf6-4e47-8b4e-a21cd553348a","savedPayload":{"position":{"x":17800.64382962515,"y":30936.23747069523},"targetPosition":{"x":17880.64382962515,"y":31031.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c4028289-4cdb-4da0-90e6-5f93328b8e03","savedPayload":{"position":{"x":16439.77999306149,"y":32238.19733206756},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Gemini","config":"{ \n\"codeName\": \"gemini\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"9eb15872-8d15-4086-9920-46909eb5f9e7","savedPayload":{"position":{"x":17951.64382962515,"y":30901.23747069523},"targetPosition":{"x":17971.64382962515,"y":30935.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"a84dcf06-57c6-47d7-97a0-9f03f3af8b34","savedPayload":{"position":{"x":18045.64382962515,"y":30891.23747069523},"targetPosition":{"x":17971.64382962515,"y":30935.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"5da1ba65-3839-4664-8105-2ccb11652767","savedPayload":{"position":{"x":18028.64382962515,"y":31112.23747069523},"targetPosition":{"x":17941.64382962515,"y":31044.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"337fe5e2-b9fd-40eb-9f42-44fc5057d981","savedPayload":{"position":{"x":17957.64382962515,"y":31129.23747069523},"targetPosition":{"x":17875.64382962515,"y":31086.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"17a3f4a3-8914-4995-afb0-7e8115791b17","savedPayload":{"position":{"x":17875.64382962515,"y":31086.23747069523},"targetPosition":{"x":17941.64382962515,"y":31044.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"32e4a3f1-40d8-421f-9634-7ab339858286","savedPayload":{"position":{"x":17941.64382962515,"y":31044.23747069523},"targetPosition":{"x":17877.64382962515,"y":30977.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"365f6865-e707-415d-a168-b67c66ca9553","savedPayload":{"position":{"x":17877.64382962515,"y":30977.23747069523},"targetPosition":{"x":17971.64382962515,"y":30935.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"58bf8247-baef-4ea6-a483-7ed8f0ba5043","savedPayload":{"position":{"x":16412.517310591156,"y":32023.651180043937},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"HitBTC","config":"{ \n\"codeName\": \"hitbtc\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"1632c520-fa79-442f-b33b-430cb1356de6","savedPayload":{"position":{"x":17809.64382962515,"y":31086.23747069523},"targetPosition":{"x":17880.64382962515,"y":31069.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"576d1666-dbd3-4914-9fe2-fa05bdf72eea","savedPayload":{"position":{"x":17840.64382962515,"y":31148.23747069523},"targetPosition":{"x":17880.64382962515,"y":31069.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"41317aae-08ce-48cf-a47b-c2d2cc3920ec","savedPayload":{"position":{"x":18096.64382962515,"y":30975.23747069523},"targetPosition":{"x":18026.64382962515,"y":31066.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"23d7e4ba-8432-4214-bd94-0db5046e39cd","savedPayload":{"position":{"x":18039.64382962515,"y":31075.23747069523},"targetPosition":{"x":17981.64382962515,"y":31126.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"ab200349-5ba5-44d2-ad5c-fa826303cfcd","savedPayload":{"position":{"x":17981.64382962515,"y":31126.23747069523},"targetPosition":{"x":18026.64382962515,"y":31066.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a5f24785-5b2c-429b-a2e4-07063e2de904","savedPayload":{"position":{"x":18026.64382962515,"y":31066.23747069523},"targetPosition":{"x":17972.64382962515,"y":31093.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"13f275ca-06a6-4a72-8b4d-a9c079b9cef4","savedPayload":{"position":{"x":17972.64382962515,"y":31093.23747069523},"targetPosition":{"x":17880.64382962515,"y":31069.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8384fa0b-854c-4c23-846e-a5da0179a738","savedPayload":{"position":{"x":16408.610637970432,"y":31807.63631660371},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"HitBTC","config":"{ \n\"codeName\": \"hitbtc2\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"9a29cb9e-ee8d-4315-8532-eef82224b84a","savedPayload":{"position":{"x":17838.64382962515,"y":30922.23747069523},"targetPosition":{"x":17829.64382962515,"y":30949.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"badd79e7-1e21-4dc3-bfa7-8dfb4a6c6267","savedPayload":{"position":{"x":17920.64382962515,"y":30944.23747069523},"targetPosition":{"x":17829.64382962515,"y":30949.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"ffdda0b7-af50-4010-84da-2bc0d562af2b","savedPayload":{"position":{"x":17887.64382962515,"y":30982.23747069523},"targetPosition":{"x":17836.64382962515,"y":31023.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"24816eed-adf7-453e-9b38-42ea4758dbaa","savedPayload":{"position":{"x":18021.64382962515,"y":30979.23747069523},"targetPosition":{"x":17931.64382962515,"y":30923.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"1dd16858-5641-4454-88a3-e5d7446e12a3","savedPayload":{"position":{"x":17931.64382962515,"y":30923.23747069523},"targetPosition":{"x":17836.64382962515,"y":31023.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"457d75ed-ad21-4ee5-b36b-88cdc444008e","savedPayload":{"position":{"x":17836.64382962515,"y":31023.23747069523},"targetPosition":{"x":17808.64382962515,"y":31039.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b29ded7e-e2d5-4c7f-89af-b0816c32c743","savedPayload":{"position":{"x":17808.64382962515,"y":31039.23747069523},"targetPosition":{"x":17829.64382962515,"y":30949.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"09c634c2-5aba-49c5-80bc-4fd4175e7f0c","savedPayload":{"position":{"x":16428.10572237286,"y":31592.246081229765},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Huobi Pro","config":"{ \n\"codeName\": \"huobipro\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"86caa38c-5bdf-40e4-b27b-8d8b64319575","savedPayload":{"position":{"x":18071.64382962515,"y":31171.23747069523},"targetPosition":{"x":17996.64382962515,"y":31077.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"001225af-c715-4566-9502-f8f0ac1c4531","savedPayload":{"position":{"x":18040.64382962515,"y":31019.23747069523},"targetPosition":{"x":17996.64382962515,"y":31077.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"b4bf5ccb-b529-4500-a192-d9c3a0613389","savedPayload":{"position":{"x":18129.64382962515,"y":31073.23747069523},"targetPosition":{"x":18033.64382962515,"y":31090.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"2e58c6d1-cfa7-4dc7-a322-e9356596ea1e","savedPayload":{"position":{"x":17976.64382962515,"y":31132.23747069523},"targetPosition":{"x":17953.64382962515,"y":31093.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"ae04ddf4-ae3e-4bdc-9393-41acc38ef818","savedPayload":{"position":{"x":17953.64382962515,"y":31093.23747069523},"targetPosition":{"x":18033.64382962515,"y":31090.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2428e8ef-6a09-48fa-8ae4-ebfb28420be8","savedPayload":{"position":{"x":18033.64382962515,"y":31090.23747069523},"targetPosition":{"x":18085.64382962515,"y":31157.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"55c71c8b-f21f-4d16-ae93-e29362c39bf5","savedPayload":{"position":{"x":18085.64382962515,"y":31157.23747069523},"targetPosition":{"x":17996.64382962515,"y":31077.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"967c3914-a76d-4389-9c7e-9c258ae683bd","savedPayload":{"position":{"x":16470.77385177832,"y":31380.225727266148},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Huobi Russia","config":"{ \n\"codeName\": \"huobiru\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"9b7b32d6-a42e-44bb-8065-5aa32b1e844b","savedPayload":{"position":{"x":17980.64382962515,"y":31034.23747069523},"targetPosition":{"x":17957.64382962515,"y":31088.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"8d74201c-33cd-4e12-8920-b08d0ef97572","savedPayload":{"position":{"x":17992.64382962515,"y":31105.23747069523},"targetPosition":{"x":17957.64382962515,"y":31088.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"c6e289d7-074b-4837-96e3-687988886fcc","savedPayload":{"position":{"x":18078.64382962515,"y":30954.23747069523},"targetPosition":{"x":18008.64382962515,"y":31029.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"d72f81ba-6b41-414d-9cf0-d5f9c0c25403","savedPayload":{"position":{"x":18026.64382962515,"y":31021.23747069523},"targetPosition":{"x":18083.64382962515,"y":31117.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"5354f66c-6e73-4fe5-80ca-2c25b761ef51","savedPayload":{"position":{"x":18083.64382962515,"y":31117.23747069523},"targetPosition":{"x":18008.64382962515,"y":31029.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"81f5adbb-054c-47f2-b019-52585f5d7417","savedPayload":{"position":{"x":18008.64382962515,"y":31029.23747069523},"targetPosition":{"x":18018.64382962515,"y":31009.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ecd8645b-4bb6-4641-a20f-cee51bf33f1a","savedPayload":{"position":{"x":18018.64382962515,"y":31009.23747069523},"targetPosition":{"x":17957.64382962515,"y":31088.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6f97bb5c-8d85-43ee-86a1-33e22cdfbb5e","savedPayload":{"position":{"x":16536.11473989023,"y":31174.06134299312},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"KKEX","config":"{ \n\"codeName\": \"kkex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"daa4e07a-1cd8-4d92-8004-2eabfaa62f77","savedPayload":{"position":{"x":17924.64382962515,"y":31038.23747069523},"targetPosition":{"x":17987.64382962515,"y":31073.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"cb64951f-d984-4f51-a751-166a316084f3","savedPayload":{"position":{"x":17945.64382962515,"y":31156.23747069523},"targetPosition":{"x":17987.64382962515,"y":31073.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"6915bf12-9271-47e2-8b49-924ae9f5c65f","savedPayload":{"position":{"x":17958.64382962515,"y":31297.23747069523},"targetPosition":{"x":17875.64382962515,"y":31252.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"ff53381f-c6dd-4d17-a477-11396f60663f","savedPayload":{"position":{"x":17805.64382962515,"y":31141.23747069523},"targetPosition":{"x":17861.64382962515,"y":31223.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"ae05bfc4-6ac8-408c-a90b-263830b2a71e","savedPayload":{"position":{"x":17861.64382962515,"y":31223.23747069523},"targetPosition":{"x":17875.64382962515,"y":31252.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"61c85f1a-a2a6-45c9-bb1e-3c76110f5d1e","savedPayload":{"position":{"x":17875.64382962515,"y":31252.23747069523},"targetPosition":{"x":17911.64382962515,"y":31154.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9fafb114-37d2-4d04-9c42-83d04ff62fc7","savedPayload":{"position":{"x":17911.64382962515,"y":31154.23747069523},"targetPosition":{"x":17987.64382962515,"y":31073.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"16ae95ce-796f-4f2b-942c-f98dcbf9cf4b","savedPayload":{"position":{"x":16623.362247525467,"y":30976.169913677237},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Kraken","config":"{ \n\"codeName\": \"kraken\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"747af60f-c8b9-4377-aa6c-172d4137ea23","savedPayload":{"position":{"x":17854.64382962515,"y":31008.23747069523},"targetPosition":{"x":17946.64382962515,"y":30924.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"c75f7d97-9dc2-4d3e-89eb-f8a3d5f16368","savedPayload":{"position":{"x":17916.64382962515,"y":30872.23747069523},"targetPosition":{"x":17946.64382962515,"y":30924.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"0093e946-03f4-4aec-942d-c76aed12ab1a","savedPayload":{"position":{"x":17780.64382962515,"y":31091.23747069523},"targetPosition":{"x":17836.64382962515,"y":31011.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"2a4235ac-e5ea-4484-bccd-f06c8a7275ec","savedPayload":{"position":{"x":17930.64382962515,"y":30869.23747069523},"targetPosition":{"x":17883.64382962515,"y":30953.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"737dec0a-23ab-4044-94ba-95c8bc50c0eb","savedPayload":{"position":{"x":17883.64382962515,"y":30953.23747069523},"targetPosition":{"x":17836.64382962515,"y":31011.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"457b045e-dae5-4f53-a8b7-cab4757e5286","savedPayload":{"position":{"x":17836.64382962515,"y":31011.23747069523},"targetPosition":{"x":17926.64382962515,"y":31005.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6eff12db-8e7c-402a-9e06-ae2618f506a0","savedPayload":{"position":{"x":17926.64382962515,"y":31005.23747069523},"targetPosition":{"x":17946.64382962515,"y":30924.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"644efe9c-597a-4ddf-9e28-b33fb3b62d3e","savedPayload":{"position":{"x":16731.49339037728,"y":30788.871357320448},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"KuCoin","config":"{ \n\"codeName\": \"kucoin\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"01ca3037-4ed3-499e-ad6b-e14ca1d4a51f","savedPayload":{"position":{"x":17919.64382962515,"y":30949.23747069523},"targetPosition":{"x":17920.64382962515,"y":30924.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"8b3c4ce0-98b1-4d46-bd02-6cf44c3dd686","savedPayload":{"position":{"x":17998.64382962515,"y":30978.23747069523},"targetPosition":{"x":17920.64382962515,"y":30924.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"d6c7c0ef-670d-4ed6-9246-6eb7d6bfc359","savedPayload":{"position":{"x":17927.64382962515,"y":30962.23747069523},"targetPosition":{"x":17953.64382962515,"y":30954.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"e8c2c454-b246-4f63-b51b-74d9cbb01ac2","savedPayload":{"position":{"x":17927.64382962515,"y":30924.23747069523},"targetPosition":{"x":17912.64382962515,"y":30869.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"d2bb2603-3b52-443c-8923-86fefafc0b14","savedPayload":{"position":{"x":17912.64382962515,"y":30869.23747069523},"targetPosition":{"x":17953.64382962515,"y":30954.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"fa83b0b9-1039-4406-907c-f809a5af40f5","savedPayload":{"position":{"x":17953.64382962515,"y":30954.23747069523},"targetPosition":{"x":17966.64382962515,"y":30962.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"471161d3-201e-40c6-b433-49643cf7e43b","savedPayload":{"position":{"x":17966.64382962515,"y":30962.23747069523},"targetPosition":{"x":17920.64382962515,"y":30924.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d79bc720-68e1-4771-a66a-bcffa30639d3","savedPayload":{"position":{"x":16859.240342842302,"y":30614.361334848825},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"LBank","config":"{ \n\"codeName\": \"lbank\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"def3f9d0-f09e-4e09-8b6d-a4c322a4384b","savedPayload":{"position":{"x":17877.64382962515,"y":31024.23747069523},"targetPosition":{"x":17838.64382962515,"y":31032.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"53eac3c1-96d6-4cb1-b54d-f3f174eaf733","savedPayload":{"position":{"x":17764.64382962515,"y":31036.23747069523},"targetPosition":{"x":17838.64382962515,"y":31032.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"c6c00704-1357-4426-910e-8134d6f87017","savedPayload":{"position":{"x":18030.64382962515,"y":31212.23747069523},"targetPosition":{"x":17951.64382962515,"y":31172.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"13990604-2192-4be1-b21b-53cf2bafc002","savedPayload":{"position":{"x":17893.64382962515,"y":31189.23747069523},"targetPosition":{"x":17964.64382962515,"y":31122.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"ed2c483e-d412-406d-b6f3-cfb1112a3a05","savedPayload":{"position":{"x":17964.64382962515,"y":31122.23747069523},"targetPosition":{"x":17951.64382962515,"y":31172.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6033b63c-c7fe-4a5d-8cf6-82128e2cfb41","savedPayload":{"position":{"x":17951.64382962515,"y":31172.23747069523},"targetPosition":{"x":17891.64382962515,"y":31096.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"20ece5c4-dbfa-4f4a-a9ee-8c8d9c38943b","savedPayload":{"position":{"x":17891.64382962515,"y":31096.23747069523},"targetPosition":{"x":17838.64382962515,"y":31032.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"cb2558d6-dab0-4f35-b83f-7cfc161b3d4f","savedPayload":{"position":{"x":17005.105300192918,"y":30454.685486944407},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Mercado Bitcoin","config":"{ \n\"codeName\": \"mercado\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"83ab2c39-e844-496f-bebb-7b8607428902","savedPayload":{"position":{"x":17849.64382962515,"y":31081.23747069523},"targetPosition":{"x":17849.64382962515,"y":30986.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"d69e722e-c71a-462a-8bbd-d3482d0eab21","savedPayload":{"position":{"x":17771.64382962515,"y":30887.23747069523},"targetPosition":{"x":17849.64382962515,"y":30986.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"18438709-83cf-49a3-96b8-888ab5adbcc5","savedPayload":{"position":{"x":17937.64382962515,"y":31080.23747069523},"targetPosition":{"x":17866.64382962515,"y":31013.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"6b9d4ed4-af81-462a-aace-fac0afd4687a","savedPayload":{"position":{"x":17787.64382962515,"y":30841.23747069523},"targetPosition":{"x":17873.64382962515,"y":30935.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"802a4c53-8617-4257-95a5-45bfaa60ad0e","savedPayload":{"position":{"x":17873.64382962515,"y":30935.23747069523},"targetPosition":{"x":17866.64382962515,"y":31013.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"87936a4a-aac5-4aca-8f3e-2051611932c4","savedPayload":{"position":{"x":17866.64382962515,"y":31013.23747069523},"targetPosition":{"x":17829.64382962515,"y":30919.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"48f3a793-bb97-447b-8f1a-1d6965219747","savedPayload":{"position":{"x":17829.64382962515,"y":30919.23747069523},"targetPosition":{"x":17849.64382962515,"y":30986.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5002072e-145c-4aeb-a611-3e0e4c60ee5d","savedPayload":{"position":{"x":17167.378061922514,"y":30311.715416269846},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"OKCoin","config":"{ \n\"codeName\": \"okcoin\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"1e4dd5c8-0545-4698-8695-c985880243a3","savedPayload":{"position":{"x":17921.64382962515,"y":31043.23747069523},"targetPosition":{"x":17967.64382962515,"y":30969.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"0e188cae-9764-4963-a78b-e5d7ef272522","savedPayload":{"position":{"x":18005.64382962515,"y":30891.23747069523},"targetPosition":{"x":17967.64382962515,"y":30969.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"6d82bfd7-b4e1-4f93-a0f8-18f62cee944e","savedPayload":{"position":{"x":18047.64382962515,"y":30877.23747069523},"targetPosition":{"x":17963.64382962515,"y":30898.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"d815409c-1dd4-4e89-b844-5b96104509b4","savedPayload":{"position":{"x":17958.64382962515,"y":30988.23747069523},"targetPosition":{"x":17945.64382962515,"y":30961.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"238b9d2c-e2c0-4a77-945e-8e28604c0a2d","savedPayload":{"position":{"x":17945.64382962515,"y":30961.23747069523},"targetPosition":{"x":17963.64382962515,"y":30898.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8416c29a-5d73-4b2a-9463-511f400deafb","savedPayload":{"position":{"x":17963.64382962515,"y":30898.23747069523},"targetPosition":{"x":18047.64382962515,"y":30885.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"04abf32b-084e-4784-aa84-8c5612d3b7b9","savedPayload":{"position":{"x":18047.64382962515,"y":30885.23747069523},"targetPosition":{"x":17967.64382962515,"y":30969.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1f860b4b-2893-4a51-8649-19c47d494a37","savedPayload":{"position":{"x":17344.15611789693,"y":30187.126693269358},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"OKEX","config":"{ \n\"codeName\": \"okex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"7f618566-3d10-4c3c-90b2-7541a5146eeb","savedPayload":{"position":{"x":17770.64382962515,"y":31094.23747069523},"targetPosition":{"x":17847.64382962515,"y":31102.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"21205576-5d12-452c-814f-eb56182162ae","savedPayload":{"position":{"x":17794.64382962515,"y":31173.23747069523},"targetPosition":{"x":17847.64382962515,"y":31102.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"46456247-ae9c-41ea-8395-a5e4a78007d4","savedPayload":{"position":{"x":17724.64382962515,"y":31147.23747069523},"targetPosition":{"x":17795.64382962515,"y":31083.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"706bf601-eaad-48bd-b0a7-8dad59066171","savedPayload":{"position":{"x":17715.64382962515,"y":31182.23747069523},"targetPosition":{"x":17706.64382962515,"y":31162.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"f9c7071c-2e5b-4c90-b482-dfc7ee001244","savedPayload":{"position":{"x":17706.64382962515,"y":31162.23747069523},"targetPosition":{"x":17795.64382962515,"y":31083.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e87e1e10-3404-48b9-8629-5df92ffa1979","savedPayload":{"position":{"x":17795.64382962515,"y":31083.23747069523},"targetPosition":{"x":17789.64382962515,"y":31181.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"08e8fd6a-6b23-4d65-8b8e-d966f845c07f","savedPayload":{"position":{"x":17789.64382962515,"y":31181.23747069523},"targetPosition":{"x":17847.64382962515,"y":31102.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"aa0edec0-8b27-4f94-abce-1e437ce5aba6","savedPayload":{"position":{"x":17533.367035539017,"y":30082.379142694143},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"RightBTC","config":"{ \n\"codeName\": \"rightbtc\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"ade372e9-5070-4fa9-843e-57732c4106c3","savedPayload":{"position":{"x":17999.64382962515,"y":30964.23747069523},"targetPosition":{"x":17991.64382962515,"y":30935.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"b63d440e-4501-475c-b8a6-2b9a144e32a1","savedPayload":{"position":{"x":17984.64382962515,"y":30901.23747069523},"targetPosition":{"x":17991.64382962515,"y":30935.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"81d77477-4f2e-43c0-b284-dde54f91c37f","savedPayload":{"position":{"x":17864.64382962515,"y":31036.23747069523},"targetPosition":{"x":17861.64382962515,"y":31043.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"9ce3cc34-1ba4-4155-96a5-c946b1bcc5ab","savedPayload":{"position":{"x":17819.64382962515,"y":31127.23747069523},"targetPosition":{"x":17810.64382962515,"y":31080.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"c7df4af7-37c1-403d-ada1-b6a527821bdd","savedPayload":{"position":{"x":17810.64382962515,"y":31080.23747069523},"targetPosition":{"x":17861.64382962515,"y":31043.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6de19501-5ce7-4944-b9dd-25b149acbb38","savedPayload":{"position":{"x":17861.64382962515,"y":31043.23747069523},"targetPosition":{"x":17946.64382962515,"y":30988.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"aa87ace4-a976-401c-93f9-24a498261742","savedPayload":{"position":{"x":17946.64382962515,"y":30988.23747069523},"targetPosition":{"x":17991.64382962515,"y":30935.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c20cd9e1-52a0-4d17-b90c-e9d5b63315ce","savedPayload":{"position":{"x":17732.79293669193,"y":29998.69965650162},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"STEX","config":"{ \n\"codeName\": \"stex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"f1d65161-4922-4a1e-ac98-df1a842347a7","savedPayload":{"position":{"x":17872.64382962515,"y":31001.23747069523},"targetPosition":{"x":17892.64382962515,"y":31092.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"c313b2c6-6154-4a9a-b826-fd99cc500cd9","savedPayload":{"position":{"x":17888.64382962515,"y":31186.23747069523},"targetPosition":{"x":17892.64382962515,"y":31092.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"d0a1259b-1c37-4d39-836e-3c434c3b3687","savedPayload":{"position":{"x":17778.64382962515,"y":31076.23747069523},"targetPosition":{"x":17858.64382962515,"y":31091.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"4a1e5627-459c-4dec-be13-c20d4a9ea58f","savedPayload":{"position":{"x":17841.64382962515,"y":31179.23747069523},"targetPosition":{"x":17795.64382962515,"y":31105.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"6981eb0d-0f0e-4f8e-9781-4a03e22e93fd","savedPayload":{"position":{"x":17795.64382962515,"y":31105.23747069523},"targetPosition":{"x":17858.64382962515,"y":31091.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7704478a-9717-43a8-bd2e-88daa6f84bd0","savedPayload":{"position":{"x":17858.64382962515,"y":31091.23747069523},"targetPosition":{"x":17941.64382962515,"y":31173.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"262aad86-f430-49ea-a636-e8bd816a9636","savedPayload":{"position":{"x":17941.64382962515,"y":31173.23747069523},"targetPosition":{"x":17892.64382962515,"y":31092.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0ea23137-3c65-4de1-9772-6ac1b65196e8","savedPayload":{"position":{"x":17940.09687864125,"y":29937.067818848373},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"TideBit","config":"{ \n\"codeName\": \"tidebit\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"c92318bd-8b2d-489b-b8e8-cf30fb63286e","savedPayload":{"position":{"x":17981.64382962515,"y":31021.23747069523},"targetPosition":{"x":17978.64382962515,"y":31048.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"83bca3ec-fc1c-435c-b5fe-b1cf92463fd1","savedPayload":{"position":{"x":18051.64382962515,"y":31072.23747069523},"targetPosition":{"x":17978.64382962515,"y":31048.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"2f3ee9b2-cd41-458c-84da-edac3155028a","savedPayload":{"position":{"x":18075.64382962515,"y":31059.23747069523},"targetPosition":{"x":17987.64382962515,"y":31047.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"009ae4b6-adbc-4900-9fc0-f18936eeed9b","savedPayload":{"position":{"x":18030.64382962515,"y":31058.23747069523},"targetPosition":{"x":18009.64382962515,"y":31028.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"3ee88180-fe10-41df-8251-b1ed0a526e7a","savedPayload":{"position":{"x":18009.64382962515,"y":31028.23747069523},"targetPosition":{"x":17987.64382962515,"y":31047.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"bb88e6e8-a99a-4c4e-9ca5-ffed49aa8b54","savedPayload":{"position":{"x":17987.64382962515,"y":31047.23747069523},"targetPosition":{"x":17925.64382962515,"y":31135.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"13a4a95e-4333-4455-9f7c-90bc839d174a","savedPayload":{"position":{"x":17925.64382962515,"y":31135.23747069523},"targetPosition":{"x":17978.64382962515,"y":31048.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5563c310-701a-4c1e-8155-87c08c927ce3","savedPayload":{"position":{"x":18152.850946231025,"y":29898.204819525756},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"TimeX","config":"{ \n\"codeName\": \"timex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"5c004b5f-eec4-414f-8d01-d9b3fddeee9e","savedPayload":{"position":{"x":17892.64382962515,"y":30973.23747069523},"targetPosition":{"x":17949.64382962515,"y":30914.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"59a33add-d0e9-4ae1-8a01-f1e0ed09cb61","savedPayload":{"position":{"x":17911.64382962515,"y":30878.23747069523},"targetPosition":{"x":17949.64382962515,"y":30914.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"a4189ba1-d1d4-4ff8-91dd-a8696ca493e3","savedPayload":{"position":{"x":17953.64382962515,"y":30880.23747069523},"targetPosition":{"x":17924.64382962515,"y":30871.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"3d34eb9d-e7cb-42fe-8785-c327b2bbc529","savedPayload":{"position":{"x":17839.64382962515,"y":30875.23747069523},"targetPosition":{"x":17930.64382962515,"y":30877.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"773de01f-0999-4a59-91f0-642148cd58d0","savedPayload":{"position":{"x":17930.64382962515,"y":30877.23747069523},"targetPosition":{"x":17924.64382962515,"y":30871.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"fe33a596-4f98-4843-a5b1-26e7e0fcf1c8","savedPayload":{"position":{"x":17924.64382962515,"y":30871.23747069523},"targetPosition":{"x":18018.64382962515,"y":30832.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d078b9a3-cdc6-458e-a511-dc4f5bef38ba","savedPayload":{"position":{"x":18018.64382962515,"y":30832.23747069523},"targetPosition":{"x":17949.64382962515,"y":30914.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"27d69fa7-b561-4986-8c0d-1b374e7e1bf1","savedPayload":{"position":{"x":18368.56547800388,"y":29882.56653460641},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"TOP.Q","config":"{ \n\"codeName\": \"topq\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"eafef6a3-eed2-470e-a15c-aa4c10001cd2","savedPayload":{"position":{"x":17818.64382962515,"y":31115.23747069523},"targetPosition":{"x":17847.64382962515,"y":31105.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"2d5eb813-ceb6-40cd-8682-7205596bb8b5","savedPayload":{"position":{"x":17759.64382962515,"y":31188.23747069523},"targetPosition":{"x":17847.64382962515,"y":31105.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"61f7832c-c1f0-40bc-b1f2-ba947c58309d","savedPayload":{"position":{"x":17741.64382962515,"y":31288.23747069523},"targetPosition":{"x":17788.64382962515,"y":31228.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"63b973da-30a7-467a-b954-c57537aab18d","savedPayload":{"position":{"x":17677.64382962515,"y":31206.23747069523},"targetPosition":{"x":17756.64382962515,"y":31146.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"722dcf44-de3f-4d1a-8655-80561e1e4d55","savedPayload":{"position":{"x":17756.64382962515,"y":31146.23747069523},"targetPosition":{"x":17788.64382962515,"y":31228.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"45d5e04a-4a53-4f32-b4c0-d882456cb263","savedPayload":{"position":{"x":17788.64382962515,"y":31228.23747069523},"targetPosition":{"x":17806.64382962515,"y":31163.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c66e8dfc-4847-4180-b82c-36458f9b405d","savedPayload":{"position":{"x":17806.64382962515,"y":31163.23747069523},"targetPosition":{"x":17847.64382962515,"y":31105.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8fdf13d8-e8d2-4ef4-8b34-f492a25d753a","savedPayload":{"position":{"x":18584.496202345832,"y":29890.341437915624},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Upbit","config":"{ \n\"codeName\": \"upbit\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"f456fec2-cee6-4f0c-b865-1188088879c9","savedPayload":{"position":{"x":17919.64382962515,"y":30973.23747069523},"targetPosition":{"x":17991.64382962515,"y":30980.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"947c1ca0-bff9-4372-b153-40054e29b705","savedPayload":{"position":{"x":17921.64382962515,"y":31014.23747069523},"targetPosition":{"x":17991.64382962515,"y":30980.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"34ffbe12-5a26-446a-8bf6-7395c0370ba2","savedPayload":{"position":{"x":17874.64382962515,"y":30900.23747069523},"targetPosition":{"x":17945.64382962515,"y":30971.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"8f00f19d-74a8-48d8-b951-79f35e87b110","savedPayload":{"position":{"x":17906.64382962515,"y":30902.23747069523},"targetPosition":{"x":17896.64382962515,"y":30896.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"64e1bede-aabf-4831-83a6-fe1cea435613","savedPayload":{"position":{"x":17896.64382962515,"y":30896.23747069523},"targetPosition":{"x":17945.64382962515,"y":30971.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7c80b956-f2ca-4a6f-a661-f17546288d3e","savedPayload":{"position":{"x":17945.64382962515,"y":30971.23747069523},"targetPosition":{"x":18027.64382962515,"y":31048.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e3686b02-4ecc-4dcb-a311-b7ef542a3c37","savedPayload":{"position":{"x":18027.64382962515,"y":31048.23747069523},"targetPosition":{"x":17991.64382962515,"y":30980.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"74e57ecd-3394-42b4-b2c4-6f216f7e41db","savedPayload":{"position":{"x":18798.55440850732,"y":29921.44880743613},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"WhiteBit","config":"{ \n\"codeName\": \"whitebit\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"c16eae45-a568-4b2e-b064-4431bdf34c24","savedPayload":{"position":{"x":17767.64382962515,"y":30899.23747069523},"targetPosition":{"x":17834.64382962515,"y":30950.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"dfdf793f-4ba6-4215-a325-323c0f223553","savedPayload":{"position":{"x":17920.64382962515,"y":31004.23747069523},"targetPosition":{"x":17834.64382962515,"y":30950.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"fd749d13-dbac-493f-9af6-c521eddf909f","savedPayload":{"position":{"x":17815.64382962515,"y":30973.23747069523},"targetPosition":{"x":17720.64382962515,"y":31056.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"79f7d2d0-77a5-4f38-ac68-fd11f18e5e6b","savedPayload":{"position":{"x":17761.64382962515,"y":31182.23747069523},"targetPosition":{"x":17680.64382962515,"y":31153.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"fd0506f4-58b7-431e-bc9d-69bce63c3379","savedPayload":{"position":{"x":17680.64382962515,"y":31153.23747069523},"targetPosition":{"x":17720.64382962515,"y":31056.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"47e8a4b1-9a6c-4555-a881-f7524183d72e","savedPayload":{"position":{"x":17720.64382962515,"y":31056.23747069523},"targetPosition":{"x":17817.64382962515,"y":31010.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7fa08b91-55ab-477d-a097-88ea7f25fb76","savedPayload":{"position":{"x":17817.64382962515,"y":31010.23747069523},"targetPosition":{"x":17834.64382962515,"y":30950.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"467ece1e-d1d0-4a11-ae7a-d0e22cd4eba5","savedPayload":{"position":{"x":19008.017760627106,"y":29975.543674503286},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"ZB","config":"{ \n\"codeName\": \"zb\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","config":"{ \n\"addMissingAssetsFilter\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"db206cbd-a587-4e8e-acbe-6581ad3b5cc4","savedPayload":{"position":{"x":17855.64382962515,"y":31027.23747069523},"targetPosition":{"x":17861.64382962515,"y":30951.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","markets":[],"id":"1dd658c5-7755-44b7-85f0-9bcd787762a0","savedPayload":{"position":{"x":17789.64382962515,"y":31044.23747069523},"targetPosition":{"x":17861.64382962515,"y":30951.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"0de82bbe-7909-4b65-b304-f59b41f618ae","savedPayload":{"position":{"x":17830.64382962515,"y":30696.23747069523},"targetPosition":{"x":17846.64382962515,"y":30793.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","config":"{ \n\"codeName\": \"Paste your exchange API name or label\",\n\"secret\": \"Paste your exchange API secret key\"\n}","id":"c89819d0-8880-4b36-a9b3-0b284d266e3b","savedPayload":{"position":{"x":17891.64382962515,"y":30748.23747069523},"targetPosition":{"x":17865.64382962515,"y":30772.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{}}}],"id":"7a55f503-17fa-45c4-880b-1a9a11a0a555","savedPayload":{"position":{"x":17865.64382962515,"y":30772.23747069523},"targetPosition":{"x":17846.64382962515,"y":30793.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e640fca2-8bab-45ff-9a47-8e7b9650c277","savedPayload":{"position":{"x":17846.64382962515,"y":30793.23747069523},"targetPosition":{"x":17909.64382962515,"y":30886.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"421a99cd-3d9a-46a5-8654-08d6336e75be","savedPayload":{"position":{"x":17909.64382962515,"y":30886.23747069523},"targetPosition":{"x":17861.64382962515,"y":30951.23747069523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"07df07e8-39a8-4fbc-a0c8-150f20b6ac59","savedPayload":{"position":{"x":19210.552786707474,"y":30052.046151377792},"targetPosition":{"x":18404.591353530526,"y":31879.62545277043},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"51f64e29-e3ab-4683-a5de-f397fbf94260","savedPayload":{"position":{"x":18405.50762716974,"y":31879.157053549374},"targetPosition":{"x":18904.301618063546,"y":31014.2348844148},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchanges","name":"Testing Queue","exchanges":[],"id":"895ce4b1-4890-4216-89ba-a012181d2546","savedPayload":{"position":{"x":18654.480599583858,"y":30581.78030444106},"targetPosition":{"x":18904.301618063546,"y":31014.2348844148},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"signalsProviders":[],"id":"7217b56c-e854-4c06-8b8a-d5d3c05a153d","savedPayload":{"position":{"x":18904.301618063546,"y":31014.2348844148},"targetPosition":{"x":18904.301618063546,"y":31014.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Charting Space","name":"New Charting Space","viewport":{"type":"Viewport","name":"New Viewport","config":"{\"zoom\":\"0.00\"}","id":"01713f1d-91b8-44f9-9c5d-a0c12fd09037","savedPayload":{"position":{"x":19400.894458420455,"y":24983.3587758473},"targetPosition":{"x":18900.806237131383,"y":24983.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"frame":{"position":{"x":259.1250000000002,"y":454.3750000000001}}}},"dashboards":[{"type":"Dashboard","name":"Testing Environment My Computer","timeMachines":[{"type":"Time Machine","name":"Lightning Strike Backtesting Session My Computer","config":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","config":"{\n \"autoMinScale\": true,\n \"autoMaxScale\": true,\n \"fromDate\": \"2020-01-01T00:00:00.000Z\",\n \"toDate\": \"2020-10-05T23:59:59.999Z\"\n}","id":"691e2b6e-6b13-4a94-a8cd-15bbad6e8d2b","savedPayload":{"position":{"x":18706.085239280626,"y":26245.493619768145},"targetPosition":{"x":18401.28428876484,"y":25848.90194800391},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","config":"{\n \"autoMinScale\": true,\n \"autoMaxScale\": true,\n \"minValue\": 3782.13,\n \"maxValue\": 12468\n}","id":"d1c91955-e558-4ffe-a349-895405dd7475","savedPayload":{"position":{"x":18530.830907936834,"y":26332.067573889908},"targetPosition":{"x":18401.28428876484,"y":25848.90194800391},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","config":"{\"value\":\"24-hs\"}","id":"69064a57-bfa3-4a7a-a597-55887057befb","savedPayload":{"position":{"x":18336.177815731615,"y":26344.855847995896},"targetPosition":{"x":18401.28428876484,"y":25848.90194800391},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timelineCharts":[{"type":"Timeline Chart","name":"Indicators","layersManager":{"type":"Layers Manager","name":"Masters","config":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n}","layers":[],"botLayers":[{"type":"Bot Layers","name":"Candles Volumes","layers":[{"type":"Layer","name":"Candles","config":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"550e7d96-2b55-4cb5-91d5-6fbceb32cbb8","savedPayload":{"position":{"x":17901.379414240564,"y":27714.45625310164},"targetPosition":{"x":17901.390572362383,"y":27214.713767633013},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"b9c30464-73e5-4f5c-b422-9ba1a02b78ab"}}}],"layerFolders":[],"id":"a9026e9d-f9c2-4509-9a75-862421b5c70b","savedPayload":{"position":{"x":17901.390572362383,"y":27214.713767633013},"targetPosition":{"x":17901.395932656735,"y":26714.927001285883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Bot Layers","name":"Resistances and Supports","layers":[{"type":"Layer","name":"Resistances","config":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ea7115b6-1324-43dc-8fa2-90c12c2c2c48","savedPayload":{"position":{"x":17218.722259236158,"y":27397.55067362305},"targetPosition":{"x":17468.595146666106,"y":26964.763622531013},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Resistances","id":"a1669770-1bbe-40f7-acb3-ded15272935f"}}},{"type":"Layer","name":"Supports","config":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2d16e7e1-8676-4041-a1b1-0172e023558a","savedPayload":{"position":{"x":16968.816123466833,"y":26964.763543733745},"targetPosition":{"x":17468.595146666106,"y":26964.763622531013},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Supports","id":"64899503-b618-493a-ba94-bfad2051a611"}}}],"layerFolders":[],"id":"b7fed612-b218-4378-bb3f-6c90fb947449","savedPayload":{"position":{"x":17468.595146666106,"y":26964.763622531013},"targetPosition":{"x":17901.395932656735,"y":26714.927001285883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"aa6b9a8f-d5f4-4f60-b3fa-bdf957806bfb","savedPayload":{"position":{"x":17901.395932656735,"y":26714.927001285883},"targetPosition":{"x":18151.250913475236,"y":26282.069345500655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0},"referenceParent":{"type":"Data Mine Products","name":"Masters","id":"d37d8bf1-be3b-49ac-805b-0ddb3944e6a0"}}},"id":"6a4b0ce0-7e88-4fe3-b9b5-2116d81b2da0","savedPayload":{"position":{"x":18151.250913475236,"y":26282.069345500655},"targetPosition":{"x":18401.28428876484,"y":25848.90194800391},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Trading Engine","layersManager":{"type":"Layers Manager","name":"Masters","config":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n}","layers":[],"botLayers":[{"type":"Bot Layers","name":"Low Frequency","layers":[],"layerFolders":[{"type":"Layer Folder","name":"Trading Engine","layers":[],"layerFolders":[{"type":"Layer Folder","name":"Episode","layers":[{"type":"Layer","name":"Episode Counters","config":"{ \n\"status\": \"off\"\n}","id":"fbbb590b-c94d-4625-94e2-bc4bfa2ab6f9","savedPayload":{"position":{"x":17369.615314676776,"y":27668.841562264155},"targetPosition":{"x":16881.455267522357,"y":27560.81805667489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Episode Counters","id":"a01b42b0-ea87-47ab-b0e9-52d4b10cb631"}}},{"type":"Layer","name":"Episode Statistics","config":"{ \n\"status\": \"off\"\n}","id":"ab219d3d-1f44-4448-b5f9-f9f6ace6caea","savedPayload":{"position":{"x":17303.16747388602,"y":27829.462657681564},"targetPosition":{"x":16881.455267522357,"y":27560.81805667489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Episode Statistics","id":"559a20a7-6697-4245-9d6c-ad7c0e31ff84"}}},{"type":"Layer","name":"Episode Candle","config":"{ \n\"status\": \"off\"\n}","id":"7dd6f9d6-3840-4a95-a9c9-9445a1335868","savedPayload":{"position":{"x":17185.846232243683,"y":27957.548994948615},"targetPosition":{"x":16881.455267522357,"y":27560.81805667489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Episode Candle","id":"24fab05f-ff78-4cca-af61-d4d0bb2f2960"}}},{"type":"Layer","name":"Episode Balances","config":"{ \n\"status\": \"off\"\n}","id":"371bfe04-1b2d-4d60-ae70-03a2f7522466","savedPayload":{"position":{"x":17031.824555577114,"y":28037.77428784454},"targetPosition":{"x":16881.455267522357,"y":27560.81805667489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Episode Balances","id":"7c580919-08ce-4aff-9e84-888fdf07caec"}}},{"type":"Layer","name":"Distance To Event","config":"{ \n\"status\": \"off\"\n}","id":"f1dea1ef-69f3-4b64-8586-ec43aa281cde","savedPayload":{"position":{"x":16859.980005705944,"y":28060.516661409252},"targetPosition":{"x":16881.455267522357,"y":27560.81805667489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Distance To Event","id":"389797d4-8456-4258-9adf-246a6ba69016"}}},{"type":"Layer","name":"Episode Base Asset","config":"{ \n\"status\": \"off\"\n}","id":"eca94344-450b-4dc9-ad80-8e202b6e0517","savedPayload":{"position":{"x":16720.146686869968,"y":28081.644331195483},"targetPosition":{"x":16881.455267522357,"y":27560.81805667489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Episode Base Asset","id":"323c7b0b-42b1-4ff0-9d4b-36c2fd605caa"}}},{"type":"Layer","name":"Episode Quoted Asset","config":"{ \n\"status\": \"off\"\n}","id":"a4c54659-0b38-4faf-9827-47976eb9cca7","savedPayload":{"position":{"x":16538.534133073324,"y":27928.11277999677},"targetPosition":{"x":16881.455267522357,"y":27560.81805667489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Episode Quoted Asset","id":"63594fc6-3b89-4507-bca8-2d43ef618cbe"}}},{"type":"Layer","name":"Current Episode","config":"{ \n\"status\": \"off\"\n}","id":"e82d97df-5b25-4967-b2b4-da065c5d3ad9","savedPayload":{"position":{"x":16438.118842172375,"y":27791.656999492337},"targetPosition":{"x":16881.455267522357,"y":27560.81805667489},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Current Episode","id":"73bb3f9e-b112-4e5a-bce9-6d4bec41cc6c"}}}],"layerFolders":[],"id":"851d853d-e2d7-4138-b5fd-563f1f844f64","savedPayload":{"position":{"x":16881.455267522357,"y":27560.81805667489},"targetPosition":{"x":16815.94253388532,"y":27065.434531430084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Layer Folder","name":"Strategy","layers":[{"type":"Layer","name":"Current Strategy","config":"{ \n\"status\": \"off\"\n}","id":"dc84698a-bce4-4979-9aca-80661b054191","savedPayload":{"position":{"x":16665.05839477738,"y":27965.793638606552},"targetPosition":{"x":16624.806838862034,"y":27527.143951867685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Current Strategy","id":"515f5fd6-d860-44d4-b5d6-a19acd9c5c86"}}},{"type":"Layer","name":"Last Strategy","config":"{ \n\"status\": \"off\"\n}","id":"d3456e5b-0438-4273-a3ce-6b1d60573c33","savedPayload":{"position":{"x":16192.04282322282,"y":27776.28963880755},"targetPosition":{"x":16624.806838862034,"y":27527.143951867685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Last Strategy","id":"556e97e8-eba3-419d-869d-950cc99371da"}}}],"layerFolders":[],"id":"6ad8b449-785f-40cc-afc0-19c68b508c17","savedPayload":{"position":{"x":16624.806838862034,"y":27527.143951867685},"targetPosition":{"x":16815.94253388532,"y":27065.434531430084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Layer Folder","name":"Position","layers":[{"type":"Layer","name":"Current Position","config":"{\n \"status\": \"off\"\n}","id":"4b8d055f-0c36-40a6-af78-5faf9b34b72c","savedPayload":{"position":{"x":16263.911411221576,"y":27887.017338929047},"targetPosition":{"x":16419.428268555628,"y":27369.65419953046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Current Position","id":"d33abc39-702b-4d7a-8435-43d90e0f2c3a"}}},{"type":"Layer","name":"Last Position","config":"{ \n\"status\": \"off\"\n}","id":"ac24a200-397f-4d7c-9916-581328c74f22","savedPayload":{"position":{"x":15930.683136179856,"y":27446.741891494232},"targetPosition":{"x":16419.428268555628,"y":27369.65419953046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Last Position","id":"d681fd5f-64af-4f39-9f6d-a767bef7692f"}}}],"layerFolders":[],"id":"acf27818-08f1-4c0d-9cc9-30c38ba892fb","savedPayload":{"position":{"x":16419.428268555628,"y":27369.65419953046},"targetPosition":{"x":16815.94253388532,"y":27065.434531430084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Layer Folder","name":"Stages","layers":[{"type":"Layer","name":"Open Stage","config":"{ \n\"status\": \"off\"\n}","id":"b9eeeeb3-43db-4d4f-9f28-f42e947494f9","savedPayload":{"position":{"x":16081.8024827204,"y":27569.844459509128},"targetPosition":{"x":16320.487948353533,"y":27130.48564334826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Open Stage","id":"b0961496-1af9-48cd-bbeb-ac5973192e78"}}},{"type":"Layer","name":"Close Stage","config":"{ \n\"status\": \"off\"\n}","id":"eda9462a-9688-42cf-ae97-b3dfd02c718c","savedPayload":{"position":{"x":15861.804663880679,"y":27334.104337992987},"targetPosition":{"x":16320.487948353533,"y":27130.48564334826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Close Stage","id":"0c9cf78d-ce6e-4318-811d-e748ca72845d"}}},{"type":"Layer","name":"Trigger Stage","config":"{ \n\"status\": \"off\"\n}","id":"1481d280-6112-4d0d-8a48-3fe4e65efc9d","savedPayload":{"position":{"x":15794.751172927,"y":27059.819168542694},"targetPosition":{"x":16320.487948353533,"y":27130.48564334826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trigger Stage","id":"e298787f-b7f2-4334-931e-38b9441e43f9"}}},{"type":"Layer","name":"Manage Stage","config":"{ \n\"status\": \"off\"\n}","id":"2f579332-aa55-4e51-bbf4-370614838fd3","savedPayload":{"position":{"x":15983.678465146957,"y":26766.521536690572},"targetPosition":{"x":16320.487948353533,"y":27130.48564334826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Manage Stage","id":"4719b69d-b23e-4037-8c0a-b641fd8ab14c"}}}],"layerFolders":[],"id":"5b4e1c43-9fb7-439f-9ca9-e600bd41718d","savedPayload":{"position":{"x":16320.487948353533,"y":27130.48564334826},"targetPosition":{"x":16815.94253388532,"y":27065.434531430084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Layer Folder","name":"Orders","layers":[{"type":"Layer","name":"Market Buy Orders","config":"{ \n\"status\": \"off\"\n}","id":"be00b86a-5b53-4dbd-ab79-7d135115a05e","savedPayload":{"position":{"x":15981.681254722265,"y":27206.80398470277},"targetPosition":{"x":16354.435022890473,"y":26873.913228534242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Market Buy Orders","id":"90834a1b-cc7e-48a9-be5c-0e30380af4bd"}}},{"type":"Layer","name":"Market Sell Orders","config":"{ \n\"status\": \"off\"\n}","id":"3870b052-156c-4f10-9658-3fe3df4baf10","savedPayload":{"position":{"x":15907.766921038878,"y":26991.828402965275},"targetPosition":{"x":16354.435022890473,"y":26873.913228534242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Market Sell Orders","id":"e2112d60-5fc2-4e67-befe-d4fbd6c1de77"}}},{"type":"Layer","name":"Limit Buy Orders","config":"{\n \"status\": \"off\"\n}","id":"5fa754c9-ffc3-499c-b566-0031b276cb73","savedPayload":{"position":{"x":15854.003963464067,"y":26791.47046059904},"targetPosition":{"x":16354.435022890473,"y":26873.913228534242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Limit Buy Orders","id":"e734b6be-ba40-468c-a94f-1153dc85e00c"}}},{"type":"Layer","name":"Limit Sell Orders","config":"{\n \"status\": \"off\"\n}","id":"15ec260c-02f5-46e0-853b-6e751175dac7","savedPayload":{"position":{"x":15946.595933594896,"y":26584.386411643816},"targetPosition":{"x":16354.435022890473,"y":26873.913228534242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Limit Sell Orders","id":"9a973229-4d9d-45af-b5aa-64906a915f6e"}}},{"type":"Layer","name":"Last Market Order","config":"{ \n\"status\": \"off\"\n}","id":"be57de60-d843-4bc8-bcb8-d8be27ceffbb","savedPayload":{"position":{"x":16112.599521408476,"y":26436.26698301044},"targetPosition":{"x":16354.435022890473,"y":26873.913228534242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Last Market Order","id":"56517fe9-64da-4404-83f3-005106bc1c0a"}}},{"type":"Layer","name":"Last Limit Order","config":"{ \n\"status\": \"off\"\n}","id":"407c7816-701b-43bf-92d8-cc728af78f0e","savedPayload":{"position":{"x":16326.514663407172,"y":26374.73332350363},"targetPosition":{"x":16354.435022890473,"y":26873.913228534242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Last Limit Order","id":"d00c76e7-4be0-4518-9892-a0f6df943951"}}}],"layerFolders":[],"id":"ac1ed18a-243b-4211-bb24-83bbfc20cd0a","savedPayload":{"position":{"x":16354.435022890473,"y":26873.913228534242},"targetPosition":{"x":16815.94253388532,"y":27065.434531430084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"41428787-ca89-4ab9-a5cc-29e66e7c486d","savedPayload":{"position":{"x":16815.94253388532,"y":27065.434531430084},"targetPosition":{"x":17211.887378913278,"y":26761.65357700895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"153096ea-a48c-4ed5-9f8e-49eafa7a779c","savedPayload":{"position":{"x":17211.887378913278,"y":26761.65357700895},"targetPosition":{"x":17608.087169245202,"y":26457.665815155528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"918bdf6d-3cfe-4c8b-894d-320cc72aef70","savedPayload":{"position":{"x":17608.087169245202,"y":26457.665815155528},"targetPosition":{"x":18004.58716757543,"y":26153.40165163241},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0},"referenceParent":{"type":"Trading Mine Products","name":"Masters","id":"13a2b4f9-2c05-49b2-b42c-32ffa71ae0b7"}}},"id":"f0cc2b79-bae6-4441-a456-9fda5962a74f","savedPayload":{"position":{"x":18004.40482925915,"y":26153.31512516243},"targetPosition":{"x":18401.28428876484,"y":25848.90194800391},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Trading System","layersManager":{"type":"Layers Manager","name":"Masters","config":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n}","layers":[],"botLayers":[{"type":"Bot Layers","name":"Low Frequency","layers":[],"layerFolders":[{"type":"Layer Folder","name":"Trading System","layers":[{"type":"Layer","name":"Trading System Errors","config":"{ \n\"status\": \"off\"\n}","id":"49761e84-d6c2-4c25-9604-fb2ddf93e510","savedPayload":{"position":{"x":16908.868785422477,"y":26498.16661359802},"targetPosition":{"x":16926.50340983706,"y":26097.78127173703},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trading System Errors","id":"a0c29c57-0a20-4084-9697-142300f62f9c"}}},{"type":"Layer","name":"Trading System Highlights","config":"{ \n\"status\": \"off\"\n}","id":"622a88bb-151c-48ef-bb99-e093498bf002","savedPayload":{"position":{"x":16784.079378960796,"y":26473.24915657477},"targetPosition":{"x":16926.50340983706,"y":26097.78127173703},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trading System Highlights","id":"aa0fe882-89a8-4811-8988-c589554afe9d"}}},{"type":"Layer","name":"Trading System Values","config":"{ \n\"status\": \"off\"\n}","id":"fba6a9fb-5e9a-46dd-aa2b-33950f0ec9f1","savedPayload":{"position":{"x":16674.17772780151,"y":26410.629959027327},"targetPosition":{"x":16926.50340983706,"y":26097.78127173703},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trading System Values","id":"bbc65054-b22b-4cbb-816b-529672e2f498"}}},{"type":"Layer","name":"Trading System Status","config":"{ \n\"status\": \"off\"\n}","id":"4ec0d56a-b497-4d90-9157-094c08930962","savedPayload":{"position":{"x":16589.35068678223,"y":26317.245278540355},"targetPosition":{"x":16926.50340983706,"y":26097.78127173703},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trading System Status","id":"776a3ece-8255-4e80-b60f-85bb818b561f"}}},{"type":"Layer","name":"Trading System Progress","config":"{ \n\"status\": \"off\"\n}","id":"5db72b24-ad72-49dd-8a32-1256fb25d04a","savedPayload":{"position":{"x":16537.989038785094,"y":26202.237839910187},"targetPosition":{"x":16926.50340983706,"y":26097.78127173703},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trading System Progress","id":"7593aaf9-0505-4b58-9920-235340ff2d2f"}}},{"type":"Layer","name":"Trading System Running","config":"{ \n\"status\": \"off\"\n}","id":"cbdfc3db-d5dd-476c-bf02-cf86d8a01300","savedPayload":{"position":{"x":16524.745363533515,"y":26077.08129911308},"targetPosition":{"x":16926.50340983706,"y":26097.78127173703},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trading System Running","id":"3e2e6105-f41f-42e2-bce5-74ebb3b81cbd"}}},{"type":"Layer","name":"Trading System Announcements","config":"{ \n\"status\": \"off\"\n}","id":"105a157c-b33a-40d0-9711-19526b04bfda","savedPayload":{"position":{"x":16551.015550574797,"y":25954.09235409774},"targetPosition":{"x":16926.50340983706,"y":26097.78127173703},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trading System Announcements","id":"faab4399-898b-4393-8c27-fa2f3109c60a"}}},{"type":"Layer","name":"Trading System Warnings","config":"{ \n\"status\": \"off\"\n}","id":"ab8b1fdc-4319-4b37-ae29-333912412215","savedPayload":{"position":{"x":16613.786293229427,"y":25843.789915164496},"targetPosition":{"x":16926.50340983706,"y":26097.78127173703},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trading System Warnings","id":"9ff0f035-ca7f-4e65-a82c-186fa7f09157"}}},{"type":"Layer","name":"Trading System Infos","config":"{ \n\"status\": \"off\"\n}","id":"051bd185-3255-41a5-bf62-ea8b27b32ddf","savedPayload":{"position":{"x":16732.783502595135,"y":25787.14617978885},"targetPosition":{"x":16926.50340983706,"y":26097.78127173703},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trading System Infos","id":"04210a59-070a-45f1-a2a0-cf50bd4879f7"}}}],"layerFolders":[],"id":"838dab4e-c0bf-47f3-ac6a-8f815e5e666b","savedPayload":{"position":{"x":16926.50340983706,"y":26097.78127173703},"targetPosition":{"x":17312.504725681127,"y":25994.118489364708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"74e5c728-fd06-4e79-8ec1-32ab2720adf5","savedPayload":{"position":{"x":17312.504725681127,"y":25994.118489364708},"targetPosition":{"x":17728.621526107163,"y":25882.512207770327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8a7bce21-b09a-41e3-b9af-87f1939e9136","savedPayload":{"position":{"x":17435.249075924137,"y":26107.72559811088},"targetPosition":{"x":17918.14324924388,"y":25978.374425566097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0},"referenceParent":{"type":"Trading Mine Products","name":"Masters","id":"13a2b4f9-2c05-49b2-b42c-32ffa71ae0b7"}}},"id":"a514d9bb-8862-4c81-b82e-dbde66abeb77","savedPayload":{"position":{"x":17918.04956340514,"y":25978.18447127247},"targetPosition":{"x":18401.28428876484,"y":25848.90194800391},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Objects","layersManager":{"type":"Layers Manager","name":"Masters","config":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n}","layers":[],"botLayers":[{"type":"Bot Layers","name":"Low Frequency","layers":[],"layerFolders":[{"type":"Layer Folder","name":"Objects","layers":[{"type":"Layer","name":"Episodes","config":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"17c8f568-4716-4a19-a607-689b78a83ef9","savedPayload":{"position":{"x":16115.39648009967,"y":25985.505720817862},"targetPosition":{"x":16420.303357177294,"y":25587.954983541822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Episodes","id":"73dff61a-7b05-4ca6-b963-99d6c578e9ba"}}},{"type":"Layer","name":"Strategies","config":"{ \n\"status\": \"off\"\n}","id":"86978570-76c1-4780-a91d-4e72e88ef817","savedPayload":{"position":{"x":15957.823183600161,"y":25779.358465524216},"targetPosition":{"x":16420.303357177294,"y":25587.954983541822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"a9c454c8-9075-4dcf-bfe9-ebd0c1658049"}}}],"layerFolders":[{"type":"Layer Folder","name":"Orders","layers":[{"type":"Layer","name":"Market Buy Orders","config":"{ \n\"status\": \"off\"\n}","id":"653e6b00-bda3-4662-a2bd-934212e884d1","savedPayload":{"position":{"x":15579.86442305616,"y":25885.63691973226},"targetPosition":{"x":15924.454225865862,"y":25522.974911703473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Market Buy Orders","id":"cad1eecc-e897-4086-b42c-fcfd843c04cc"}}},{"type":"Layer","name":"Market Sell Orders","config":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2887f930-5d79-42ff-ab1d-7d5cdc6b47da","savedPayload":{"position":{"x":15432.506269267476,"y":25613.627316851438},"targetPosition":{"x":15924.454225865862,"y":25522.974911703473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Market Sell Orders","id":"fdf22e85-7071-4847-bdba-e3fb43a616ed"}}},{"type":"Layer","name":"Limit Buy Orders","config":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"3040a2f6-0b1c-4ed3-a816-39c916465c9a","savedPayload":{"position":{"x":15473.387997903394,"y":25308.558987165365},"targetPosition":{"x":15924.454225865862,"y":25522.974911703473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Limit Buy Orders","id":"d2b1ab31-d8a1-422b-a717-33ee7df9b07b"}}},{"type":"Layer","name":"Limit Sell Orders","config":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"a59ef70f-534f-410b-99ef-3a700d2ca82a","savedPayload":{"position":{"x":15650.72702979423,"y":25101.764675763054},"targetPosition":{"x":15924.454225865862,"y":25522.974911703473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Limit Sell Orders","id":"3b5a12db-b969-4400-8b9d-afb9b7b81642"}}}],"layerFolders":[],"id":"334a2964-17df-4237-a302-962416655896","savedPayload":{"position":{"x":15924.454225865862,"y":25522.974911703473},"targetPosition":{"x":16420.303357177294,"y":25587.954983541822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Layer Folder","name":"Stages","layers":[{"type":"Layer","name":"Trigger Stages","config":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"a6b1a2c5-ca70-42b9-932f-2ff00aff2524","savedPayload":{"position":{"x":15544.017678857432,"y":25425.462084851635},"targetPosition":{"x":16023.52653783795,"y":25283.3082730222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trigger Stages","id":"9fc29be1-9393-4933-95d3-bebddd73c05e"}}},{"type":"Layer","name":"Open Stages","config":"{ \n\"status\": \"off\"\n}","id":"663ddaf7-784f-4baa-8f69-3ed0ef5cd685","savedPayload":{"position":{"x":15550.823311983959,"y":25116.30607909466},"targetPosition":{"x":16023.52653783795,"y":25283.3082730222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Open Stages","id":"b555388f-db93-4db1-91be-7772550afa70"}}},{"type":"Layer","name":"Manage Stages","config":"{ \n\"status\": \"off\"\n}","id":"9a4be770-082c-4d0f-a747-0b74d792e76f","savedPayload":{"position":{"x":15728.277795953174,"y":24877.547726723427},"targetPosition":{"x":16023.52653783795,"y":25283.3082730222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Manage Stages","id":"41953904-e48c-4176-bf0f-09d133bc444c"}}},{"type":"Layer","name":"Close Stages","config":"{ \n\"status\": \"off\"\n}","id":"efb9d388-a679-49b2-b792-1b8258a489d6","savedPayload":{"position":{"x":16036.125039599678,"y":24790.208940178803},"targetPosition":{"x":16023.52653783795,"y":25283.3082730222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Close Stages","id":"47b4553c-7f2e-438c-9f4b-9ba30e943a6c"}}}],"layerFolders":[],"id":"eea75e9a-a735-4db8-9eea-cf2c4e4119e3","savedPayload":{"position":{"x":16023.52653783795,"y":25283.3082730222},"targetPosition":{"x":16420.303357177294,"y":25587.954983541822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Layer Folder","name":"Position","layers":[{"type":"Layer","name":"Positions","config":"{ \n\"status\": \"off\"\n}","id":"bb0ea641-23a7-48d0-a70d-f3314722f129","savedPayload":{"position":{"x":15769.085211279895,"y":25043.34382759041},"targetPosition":{"x":16229.296572394282,"y":25126.066853588283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Positions","id":"6e49b57f-8c94-410f-985b-82c126155b11"}}},{"type":"Layer","name":"Position Base Asset","config":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"fa1cf76f-30a6-4cfd-ba4f-8511afca64b8","savedPayload":{"position":{"x":15844.85911518537,"y":24815.579664839803},"targetPosition":{"x":16229.296572394282,"y":25126.066853588283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Position Base Asset","id":"ae8fa9a5-95b6-4769-8ade-f9854e6855ba"}}},{"type":"Layer","name":"Position Quoted Asset","config":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"bf7d5c92-8894-4040-8d2f-3f5cdec443af","savedPayload":{"position":{"x":16038.287615627753,"y":24659.155800255463},"targetPosition":{"x":16229.296572394282,"y":25126.066853588283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Position Quoted Asset","id":"9e9b19ee-9c51-4586-b74d-d2880f13f71f"}}},{"type":"Layer","name":"Stop Loss","config":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"125c9155-a747-4ac4-9d9f-1b93a4ae8d17","savedPayload":{"position":{"x":16294.541437710524,"y":24629.72000224595},"targetPosition":{"x":16229.296572394282,"y":25126.066853588283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Stop Loss","id":"01491591-0462-453c-91e0-6da6f554a729"}}},{"type":"Layer","name":"Take Profit","config":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"3745d5cd-a2be-43ed-b5df-d05c328f8665","savedPayload":{"position":{"x":16532.917386265202,"y":24729.236040998087},"targetPosition":{"x":16229.296572394282,"y":25126.066853588283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Take Profit","id":"719dd8a6-58ab-41c6-9693-9b67c12232d2"}}}],"layerFolders":[],"id":"9854e8b2-d863-42f3-afd5-416d5e2c548e","savedPayload":{"position":{"x":16229.296572394282,"y":25126.066853588283},"targetPosition":{"x":16420.303357177294,"y":25587.954983541822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6e31ae33-68d1-4dca-8b29-6e59a2a4448e","savedPayload":{"position":{"x":16420.303357177294,"y":25587.954983541822},"targetPosition":{"x":16915.0166511096,"y":25653.393625303714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8c851b59-3105-460c-bb4b-cb4944db1049","savedPayload":{"position":{"x":16915.0166511096,"y":25653.393625303714},"targetPosition":{"x":17409.9116821377,"y":25718.509455722615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"be53f7bc-6c26-4fd7-a0d0-96b965bbf655","savedPayload":{"position":{"x":17409.9116821377,"y":25718.509455722615},"targetPosition":{"x":17905.521538239824,"y":25783.587984353617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0},"referenceParent":{"type":"Trading Mine Products","name":"Masters","id":"13a2b4f9-2c05-49b2-b42c-32ffa71ae0b7"}}},"id":"43eeb152-b0b8-468d-84d1-7d03fd636387","savedPayload":{"position":{"x":17905.39499623078,"y":25783.334655023158},"targetPosition":{"x":18401.28428876484,"y":25848.90194800391},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"499eac86-6c40-4362-a36a-5f2002081866","savedPayload":{"position":{"x":18401.28428876484,"y":25848.90194800391},"targetPosition":{"x":18651.060544637505,"y":25416.121814317405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":585,"y":-155},"width":240,"height":113.625,"radius":0},"referenceParent":{"type":"Backtesting Session","name":"Lightning Strike","id":"ce648922-fef2-44e3-8d76-2bd7ab72a29f"}}}],"id":"885265c2-ebb1-4283-a617-34a88780276d","savedPayload":{"position":{"x":18651.060544637505,"y":25416.121814317405},"targetPosition":{"x":18900.806237131383,"y":24983.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Testing Environment","name":"New Testing Environment","id":"5882d8a8-345b-4188-b1c1-797e9ff805d9"}}},{"type":"Dashboard","name":"Production Environment My Computer","timeMachines":[{"type":"Time Machine","name":"Lightning Strike Live Trading Session My Computer","config":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","config":"{\n \"autoMinScale\": false,\n \"autoMaxScale\": false,\n \"fromDate\": \"2020-10-05T12:42:37.381Z\",\n \"toDate\": \"2020-10-05T16:42:37.381Z\"\n}","id":"708c5a9f-a995-4210-aaaf-0794782f0e9e","savedPayload":{"position":{"x":17905.370074374205,"y":24183.19744184367},"targetPosition":{"x":18401.255084336157,"y":24117.710192006354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","config":"{\n \"autoMinScale\": true,\n \"autoMaxScale\": true,\n \"minValue\": 10675.04,\n \"maxValue\": 10735.99\n}","id":"ee3f6af0-8649-489b-9168-b4f16d2f5a78","savedPayload":{"position":{"x":17918.02430269543,"y":23988.332882911032},"targetPosition":{"x":18401.255084336157,"y":24117.710192006354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","config":"{\n \"value\": \"01-min\",\n \"autoMinScale\": false,\n \"autoMaxScale\": true,\n \"fromDate\": \"2020-10-05T09:53:58.939Z\",\n \"toDate\": \"2020-10-05T13:53:58.939Z\"\n}","id":"480f9696-76df-4026-a435-7bf364c08056","savedPayload":{"position":{"x":18004.366676975926,"y":23813.179527331024},"targetPosition":{"x":18401.255084336157,"y":24117.710192006354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timelineCharts":[{"type":"Timeline Chart","name":"New Data Mine Products","layersManager":{"type":"Layers Manager","name":"Masters","config":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n}","layers":[],"botLayers":[{"type":"Bot Layers","name":"Candles Volumes","layers":[{"type":"Layer","name":"Candles","config":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"e3cbbcbe-c938-4669-b670-c317476e0a3b","savedPayload":{"position":{"x":17330.282280946285,"y":23355.185090627896},"targetPosition":{"x":17730.615945713467,"y":23355.800511833073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"b9c30464-73e5-4f5c-b422-9ba1a02b78ab"}}},{"type":"Layer","name":"Volumes","config":"{ \n\"status\": \"off\"\n}","id":"385a5f98-118a-43fd-b019-54e825d1f4ae","savedPayload":{"position":{"x":17530.242023030805,"y":23008.82762508108},"targetPosition":{"x":17730.615945713467,"y":23355.800511833073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"07c11481-7dbd-477d-8bf7-79212542a6aa"}}}],"layerFolders":[],"id":"6848a114-9979-41dd-8d95-3a899679ba08","savedPayload":{"position":{"x":17730.615945713467,"y":23355.800511833073},"targetPosition":{"x":18076.764681458488,"y":23555.35773780234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Bot Layers","name":"Resistances and Supports","layers":[{"type":"Layer","name":"Resistances","config":"{ \n\"status\": \"off\"\n}","id":"0cf13cfa-2a37-4691-902c-513ab5780da8","savedPayload":{"position":{"x":17876.760168957182,"y":22808.70834871907},"targetPosition":{"x":18076.97910230742,"y":23155.764394445654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Resistances","id":"a1669770-1bbe-40f7-acb3-ded15272935f"}}},{"type":"Layer","name":"Supports","config":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"d9245f0b-54e8-44b1-94bd-56c7048eb5c1","savedPayload":{"position":{"x":18276.505496583897,"y":22808.73608811249},"targetPosition":{"x":18076.97910230742,"y":23155.764394445654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Supports","id":"64899503-b618-493a-ba94-bfad2051a611"}}}],"layerFolders":[],"id":"20bd60bb-917b-4a0f-acc5-b019d1c3bd81","savedPayload":{"position":{"x":18076.97910230742,"y":23155.764394445654},"targetPosition":{"x":18076.764681458488,"y":23555.35773780234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4cbbc012-c91e-4acd-a8d2-feb149e728a0","savedPayload":{"position":{"x":18076.764681458488,"y":23555.35773780234},"targetPosition":{"x":18301.331767523672,"y":23944.42452474204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":330,"radius":0},"referenceParent":{"type":"Data Mine Products","name":"Masters","id":"d37d8bf1-be3b-49ac-805b-0ddb3944e6a0"}}},"id":"bb7afb85-32ea-4471-8400-615a34fc126f","savedPayload":{"position":{"x":18151.166082164884,"y":23684.435763196638},"targetPosition":{"x":18401.255084336157,"y":24117.710192006354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Trading Engine","layersManager":{"type":"Layers Manager","name":"Masters","config":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n}","layers":[],"botLayers":[{"type":"Bot Layers","name":"Low Frequency","layers":[],"layerFolders":[{"type":"Layer Folder","name":"Trading Engine","layers":[],"layerFolders":[{"type":"Layer Folder","name":"Episode","layers":[{"type":"Layer","name":"Episode Counters","config":"{ \n\"status\": \"off\"\n}","id":"05da2270-0016-4d22-89d8-b77cd14008a9","savedPayload":{"position":{"x":12562.806237131383,"y":25199.35640053908},"targetPosition":{"x":12653.806237131383,"y":25251.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Episode Counters","id":"dc6cc4ef-4bd7-4837-8442-919462314db3"}}},{"type":"Layer","name":"Episode Statistics","config":"{ \n\"status\": \"off\"\n}","id":"a4165460-e0a7-4a0d-b506-15e756dfac93","savedPayload":{"position":{"x":12557.806237131383,"y":25188.35640053908},"targetPosition":{"x":12653.806237131383,"y":25251.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Episode Statistics","id":"776ed571-8321-47aa-8cfb-c8ebf565dace"}}},{"type":"Layer","name":"Episode Candle","config":"{ \n\"status\": \"off\"\n}","id":"371e0cd7-af57-4469-836d-45c4e6059760","savedPayload":{"position":{"x":12655.806237131383,"y":25216.35640053908},"targetPosition":{"x":12653.806237131383,"y":25251.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Episode Candle","id":"ded93703-a48d-44be-9703-878c28f949cd"}}},{"type":"Layer","name":"Episode Balances","config":"{ \n\"status\": \"off\"\n}","id":"5ed81442-77cc-4101-b1ff-8c7cbac57d4f","savedPayload":{"position":{"x":12583.806237131383,"y":25197.35640053908},"targetPosition":{"x":12653.806237131383,"y":25251.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Episode Balances","id":"e702f1dd-1c91-4d05-ac55-19db363f5f3a"}}},{"type":"Layer","name":"Distance To Event","config":"{ \n\"status\": \"off\"\n}","id":"5e046a6a-4f38-4b44-bae1-1aed6d4d3753","savedPayload":{"position":{"x":12651.806237131383,"y":25318.35640053908},"targetPosition":{"x":12653.806237131383,"y":25251.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Distance To Event","id":"b8abea53-8221-47bd-91a2-cdcdd2ad1027"}}},{"type":"Layer","name":"Episode Base Asset","config":"{ \n\"status\": \"off\"\n}","id":"b78a78ec-dca3-499b-881a-d2e3a82bf116","savedPayload":{"position":{"x":12668.806237131383,"y":25233.35640053908},"targetPosition":{"x":12653.806237131383,"y":25251.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Episode Base Asset","id":"18bcbd26-c237-4acb-96f4-d9c95d833a42"}}},{"type":"Layer","name":"Episode Quoted Asset","config":"{ \n\"status\": \"off\"\n}","id":"bb95c2a9-6f82-4a2a-9105-17b8f6c3c51a","savedPayload":{"position":{"x":12702.806237131383,"y":25219.35640053908},"targetPosition":{"x":12653.806237131383,"y":25251.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Episode Quoted Asset","id":"c444f4b5-fa67-4c21-afa8-1f998da7a2a2"}}},{"type":"Layer","name":"Current Episode","config":"{ \n\"status\": \"off\"\n}","id":"4ad5b6f0-f4a9-4aab-aedf-9175647498b0","savedPayload":{"position":{"x":12659.806237131383,"y":25207.35640053908},"targetPosition":{"x":12653.806237131383,"y":25251.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Current Episode","id":"057570bd-69d4-4f3c-b0d4-94ee32f61e65"}}}],"layerFolders":[],"id":"7216b7a3-1371-4f07-a395-74c547579ab4","savedPayload":{"position":{"x":12653.806237131383,"y":25251.35640053908},"targetPosition":{"x":12701.806237131383,"y":25230.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Layer Folder","name":"Strategy","layers":[{"type":"Layer","name":"Current Strategy","config":"{ \n\"status\": \"off\"\n}","id":"d2c0a1c8-70ef-4f7b-835a-a99ac6a5837a","savedPayload":{"position":{"x":12548.806237131383,"y":25269.35640053908},"targetPosition":{"x":12643.806237131383,"y":25282.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Current Strategy","id":"88dd680c-a81b-48ae-96ba-838281abfa35"}}},{"type":"Layer","name":"Last Strategy","config":"{ \n\"status\": \"off\"\n}","id":"076af680-2114-480b-a979-f7eea4966d7b","savedPayload":{"position":{"x":12640.806237131383,"y":25238.35640053908},"targetPosition":{"x":12643.806237131383,"y":25282.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Last Strategy","id":"24af3ffc-6a52-4ee3-a30b-f068aa5b2062"}}}],"layerFolders":[],"id":"56112c60-50dd-4d19-89aa-1d46005f194f","savedPayload":{"position":{"x":12643.806237131383,"y":25282.35640053908},"targetPosition":{"x":12701.806237131383,"y":25230.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Layer Folder","name":"Position","layers":[{"type":"Layer","name":"Current Position","config":"{ \n\"status\": \"off\"\n}","id":"bb93ebef-f7ee-42c2-93b8-fe46eba0874a","savedPayload":{"position":{"x":12762.806237131383,"y":25220.35640053908},"targetPosition":{"x":12765.806237131383,"y":25191.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Current Position","id":"25280962-e4e5-40df-9e42-9edfbad6f6d3"}}},{"type":"Layer","name":"Last Position","config":"{ \n\"status\": \"off\"\n}","id":"595e7228-5676-4f5c-82bf-baa43e9325ab","savedPayload":{"position":{"x":12826.806237131383,"y":25179.35640053908},"targetPosition":{"x":12765.806237131383,"y":25191.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Last Position","id":"7a95a249-132d-4e0f-9182-cc7af45cacea"}}}],"layerFolders":[],"id":"9f594c8a-87fe-4c4b-b550-493405fe0b2d","savedPayload":{"position":{"x":12765.806237131383,"y":25191.35640053908},"targetPosition":{"x":12701.806237131383,"y":25230.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Layer Folder","name":"Stages","layers":[{"type":"Layer","name":"Open Stage","config":"{ \n\"status\": \"off\"\n}","id":"3ce44f39-8ac9-4984-ad9d-daa53ed3f707","savedPayload":{"position":{"x":12715.806237131383,"y":25087.35640053908},"targetPosition":{"x":12760.806237131383,"y":25157.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Open Stage","id":"c9c4bca7-f918-4aa8-b538-ffe8aa31d5c2"}}},{"type":"Layer","name":"Close Stage","config":"{ \n\"status\": \"off\"\n}","id":"a7d5f0aa-8259-4271-aa95-7b351aa9b9c0","savedPayload":{"position":{"x":12675.806237131383,"y":25087.35640053908},"targetPosition":{"x":12760.806237131383,"y":25157.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Close Stage","id":"4201d7c0-43aa-4ac0-bd7e-ab26b688aa2d"}}},{"type":"Layer","name":"Trigger Stage","config":"{ \n\"status\": \"off\"\n}","id":"9a9f6580-ab06-4005-9274-98f7e9a491e5","savedPayload":{"position":{"x":12725.806237131383,"y":25124.35640053908},"targetPosition":{"x":12760.806237131383,"y":25157.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trigger Stage","id":"4fe24ddc-973f-4a5d-bf8a-d77090486125"}}},{"type":"Layer","name":"Manage Stage","config":"{ \n\"status\": \"off\"\n}","id":"f60905ad-b491-45ee-9768-8087df9aef78","savedPayload":{"position":{"x":12804.806237131383,"y":25256.35640053908},"targetPosition":{"x":12760.806237131383,"y":25157.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Manage Stage","id":"e2f3d69e-2f0a-4463-8e74-4f0768c4fb70"}}}],"layerFolders":[],"id":"5389c77c-63a7-4495-9cc5-cdc0c70b76e6","savedPayload":{"position":{"x":12760.806237131383,"y":25157.35640053908},"targetPosition":{"x":12701.806237131383,"y":25230.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Layer Folder","name":"Orders","layers":[{"type":"Layer","name":"Market Buy Orders","config":"{ \n\"status\": \"off\"\n}","id":"f602d8ef-b6a6-423f-a772-9a4b5d5b9c43","savedPayload":{"position":{"x":12760.806237131383,"y":25246.35640053908},"targetPosition":{"x":12775.806237131383,"y":25241.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Market Buy Orders","id":"0e0b284a-5014-4ab0-ada0-4322c14a099e"}}},{"type":"Layer","name":"Market Sell Orders","config":"{ \n\"status\": \"off\"\n}","id":"0a0dd259-5704-46de-900f-5d1dc24af4f6","savedPayload":{"position":{"x":12826.806237131383,"y":25149.35640053908},"targetPosition":{"x":12775.806237131383,"y":25241.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Market Sell Orders","id":"95b3db7a-9b62-4eab-a76b-4af8794da5a6"}}},{"type":"Layer","name":"Limit Buy Orders","config":"{ \n\"status\": \"off\"\n}","id":"de6f83f6-a6d9-45c7-93fd-e2c72238040e","savedPayload":{"position":{"x":12748.806237131383,"y":25232.35640053908},"targetPosition":{"x":12775.806237131383,"y":25241.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Limit Buy Orders","id":"1c6eed42-23aa-4174-aade-be29222acb8c"}}},{"type":"Layer","name":"Limit Sell Orders","config":"{ \n\"status\": \"off\"\n}","id":"ac0f1c2a-5eed-45ee-84da-3d24e455abd3","savedPayload":{"position":{"x":12717.806237131383,"y":25162.35640053908},"targetPosition":{"x":12775.806237131383,"y":25241.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Limit Sell Orders","id":"a2f44cd5-090d-42e5-9eb7-73e732310e85"}}},{"type":"Layer","name":"Last Market Order","config":"{ \n\"status\": \"off\"\n}","id":"89def699-c33f-4344-a045-babca1f545ee","savedPayload":{"position":{"x":12816.806237131383,"y":25251.35640053908},"targetPosition":{"x":12775.806237131383,"y":25241.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Last Market Order","id":"8c24d559-ba52-46fe-81b4-8a6bf50c74b6"}}},{"type":"Layer","name":"Last Limit Order","config":"{ \n\"status\": \"off\"\n}","id":"a7e04514-bf32-4021-822c-47af56c55a76","savedPayload":{"position":{"x":12842.806237131383,"y":25279.35640053908},"targetPosition":{"x":12775.806237131383,"y":25241.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Last Limit Order","id":"c451c035-5ece-451f-836f-b5334cb3f967"}}}],"layerFolders":[],"id":"a302255a-cf35-4801-ae3c-95cb47ae9613","savedPayload":{"position":{"x":12775.806237131383,"y":25241.35640053908},"targetPosition":{"x":12701.806237131383,"y":25230.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1857004e-2f12-4287-8847-173043d8d2ab","savedPayload":{"position":{"x":12701.806237131383,"y":25230.35640053908},"targetPosition":{"x":12718.806237131383,"y":25185.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"23ad1663-d4da-4ece-8964-30012894ae5b","savedPayload":{"position":{"x":12718.806237131383,"y":25185.35640053908},"targetPosition":{"x":12786.806237131383,"y":25096.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ddb3fafa-58f4-46c1-9b24-61efe3ec13a6","savedPayload":{"position":{"x":12786.806237131383,"y":25096.35640053908},"targetPosition":{"x":12784.806237131383,"y":25136.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":330,"radius":0},"referenceParent":{"type":"Trading Mine Products","name":"Masters","id":"aa2b0766-a3d5-47e1-acd8-7345af564388"}}},"id":"788a0207-20ea-411c-862d-b1b13db4e09f","savedPayload":{"position":{"x":18336.067190560676,"y":23621.683834168223},"targetPosition":{"x":18401.255084336157,"y":24117.710192006354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Trading System","layersManager":{"type":"Layers Manager","name":"Masters","config":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n}","layers":[],"botLayers":[{"type":"Bot Layers","name":"Low Frequency","layers":[],"layerFolders":[{"type":"Layer Folder","name":"Trading System","layers":[{"type":"Layer","name":"Trading System Errors","config":"{ \n\"status\": \"off\"\n}","id":"2a1db97f-553d-47ea-b452-c90ba9af9e79","savedPayload":{"position":{"x":12580.806237131383,"y":25081.35640053908},"targetPosition":{"x":12648.806237131383,"y":25126.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trading System Errors","id":"ba606f99-2ae5-44dc-b7db-399e657830e1"}}},{"type":"Layer","name":"Trading System Highlights","config":"{ \n\"status\": \"off\"\n}","id":"3c1c9d45-c482-4374-92ad-c3c28bfb7679","savedPayload":{"position":{"x":12608.806237131383,"y":25222.35640053908},"targetPosition":{"x":12648.806237131383,"y":25126.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trading System Highlights","id":"2d20d8ae-4afa-4e92-8de2-89e66e5efdee"}}},{"type":"Layer","name":"Trading System Values","config":"{ \n\"status\": \"off\"\n}","id":"a560c8af-91cd-4aea-ab9f-01ed60892abb","savedPayload":{"position":{"x":12678.806237131383,"y":25045.35640053908},"targetPosition":{"x":12648.806237131383,"y":25126.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trading System Values","id":"f8a6219c-c7b4-410a-8aa4-1910583f51c8"}}},{"type":"Layer","name":"Trading System Status","config":"{ \n\"status\": \"off\"\n}","id":"40debb84-1e2e-452b-99ff-95ff3994fb29","savedPayload":{"position":{"x":12660.806237131383,"y":25104.35640053908},"targetPosition":{"x":12648.806237131383,"y":25126.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trading System Status","id":"dcff6f56-7646-4505-aa93-6682a110f3f2"}}},{"type":"Layer","name":"Trading System Progress","config":"{ \n\"status\": \"off\"\n}","id":"5785c4fb-879d-4b89-aab8-9ec37d5f561b","savedPayload":{"position":{"x":12578.806237131383,"y":25058.35640053908},"targetPosition":{"x":12648.806237131383,"y":25126.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trading System Progress","id":"0a9dff80-e462-4110-b988-11ce57bbbcd5"}}},{"type":"Layer","name":"Trading System Running","config":"{ \n\"status\": \"off\"\n}","id":"74d8c1f7-8dd5-4e2c-b3cf-7f7bcfe7143c","savedPayload":{"position":{"x":12680.806237131383,"y":25042.35640053908},"targetPosition":{"x":12648.806237131383,"y":25126.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trading System Running","id":"c7e05ad0-7d4a-4ffb-9aee-191511f85ee7"}}},{"type":"Layer","name":"Trading System Announcements","config":"{ \n\"status\": \"off\"\n}","id":"4476fcb1-3898-440f-b69e-afba06be912a","savedPayload":{"position":{"x":12740.806237131383,"y":25084.35640053908},"targetPosition":{"x":12648.806237131383,"y":25126.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trading System Announcements","id":"e4811789-fd94-49b0-9917-8d9d434f997d"}}},{"type":"Layer","name":"Trading System Warnings","config":"{ \n\"status\": \"off\"\n}","id":"43fe3418-9b3c-4cd9-b9a9-3994851e0b65","savedPayload":{"position":{"x":12648.806237131383,"y":25054.35640053908},"targetPosition":{"x":12648.806237131383,"y":25126.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trading System Warnings","id":"029ff3a7-9c65-425f-855a-882df68fa05b"}}},{"type":"Layer","name":"Trading System Infos","config":"{ \n\"status\": \"off\"\n}","id":"de34ba07-61b5-4785-bcf5-ff5b81d63e48","savedPayload":{"position":{"x":12565.806237131383,"y":25058.35640053908},"targetPosition":{"x":12648.806237131383,"y":25126.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trading System Infos","id":"0f47adaf-25a0-431f-b15b-0fbf44069b38"}}}],"layerFolders":[],"id":"36e02794-0943-4520-af39-2f274050610c","savedPayload":{"position":{"x":12648.806237131383,"y":25126.35640053908},"targetPosition":{"x":12703.806237131383,"y":25084.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1ccfa34c-ca21-4ac3-be74-30f85549bf5e","savedPayload":{"position":{"x":12703.806237131383,"y":25084.35640053908},"targetPosition":{"x":12677.806237131383,"y":25136.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c1c4bd7c-b755-461a-a5ed-b59804b4c280","savedPayload":{"position":{"x":12677.806237131383,"y":25136.35640053908},"targetPosition":{"x":12715.806237131383,"y":25039.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":330,"radius":0},"referenceParent":{"type":"Trading Mine Products","name":"Masters","id":"aa2b0766-a3d5-47e1-acd8-7345af564388"}}},"id":"ed6507e7-437f-4740-a897-11dc4da4d20a","savedPayload":{"position":{"x":18530.73587145995,"y":23634.49441264758},"targetPosition":{"x":18401.255084336157,"y":24117.710192006354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Objects","layersManager":{"type":"Layers Manager","name":"Masters","config":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n}","layers":[],"botLayers":[{"type":"Bot Layers","name":"Low Frequency","layers":[],"layerFolders":[{"type":"Layer Folder","name":"Objects","layers":[{"type":"Layer","name":"Episodes","config":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"76852fcc-d524-43b8-a0b1-8645c2fed91e","savedPayload":{"position":{"x":13048.806237131383,"y":25113.35640053908},"targetPosition":{"x":13025.806237131383,"y":25029.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Episodes","id":"c6fd6067-4b57-4860-ae3b-5668e4444490"}}},{"type":"Layer","name":"Strategies","config":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"43b43957-23d5-401b-b3e0-391c430b72c9","savedPayload":{"position":{"x":13043.806237131383,"y":25078.35640053908},"targetPosition":{"x":13025.806237131383,"y":25029.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"60f88096-7343-42d1-afad-83fecd22fb44"}}}],"layerFolders":[{"type":"Layer Folder","name":"Orders","layers":[{"type":"Layer","name":"Market Buy Orders","config":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"aaff7fb6-bd83-48f2-819a-a1dd674876a7","savedPayload":{"position":{"x":12917.806237131383,"y":24969.35640053908},"targetPosition":{"x":12987.806237131383,"y":24987.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Market Buy Orders","id":"9f939086-c934-4924-8353-776707a7cf10"}}},{"type":"Layer","name":"Market Sell Orders","config":"{ \n\"status\": \"off\"\n}","id":"bec241f4-5a8f-4fe7-9620-76d92f64da9c","savedPayload":{"position":{"x":13043.806237131383,"y":25078.35640053908},"targetPosition":{"x":12987.806237131383,"y":24987.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Market Sell Orders","id":"da5f279e-d387-43cf-80f4-fc114b9ac906"}}},{"type":"Layer","name":"Limit Buy Orders","config":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"2d03d083-7199-4bf2-8e8a-4c96f23a16a8","savedPayload":{"position":{"x":13073.806237131383,"y":25020.35640053908},"targetPosition":{"x":12987.806237131383,"y":24987.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Limit Buy Orders","id":"367646bb-839a-4071-8305-6d26a647585d"}}},{"type":"Layer","name":"Limit Sell Orders","config":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"cb5de20d-e440-4bdb-a074-c408740e9022","savedPayload":{"position":{"x":12969.806237131383,"y":24975.35640053908},"targetPosition":{"x":12987.806237131383,"y":24987.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Limit Sell Orders","id":"0b2fc73a-9635-40b2-98d8-0c79c69175a9"}}}],"layerFolders":[],"id":"a8409c29-905d-495f-bbca-3d0eef14f91c","savedPayload":{"position":{"x":12987.806237131383,"y":24987.35640053908},"targetPosition":{"x":13025.806237131383,"y":25029.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Layer Folder","name":"Stages","layers":[{"type":"Layer","name":"Trigger Stages","config":"{ \n\"status\": \"off\"\n}","id":"04d1a0a8-1419-4fbd-9c28-eef6cfefd5d4","savedPayload":{"position":{"x":12922.806237131383,"y":25051.35640053908},"targetPosition":{"x":13018.806237131383,"y":25092.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trigger Stages","id":"7fe8c58f-9cad-47c9-ba4e-d66bff094dcf"}}},{"type":"Layer","name":"Open Stages","config":"{ \n\"status\": \"off\"\n}","id":"74cda6e5-4fe2-41ef-a611-2c0374780ad5","savedPayload":{"position":{"x":13001.806237131383,"y":25002.35640053908},"targetPosition":{"x":13018.806237131383,"y":25092.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Open Stages","id":"41f17745-1819-4681-8a2b-9bdda3cd67c4"}}},{"type":"Layer","name":"Manage Stages","config":"{ \n\"status\": \"off\"\n}","id":"fb041378-9424-4709-a9ed-79426fcdfe68","savedPayload":{"position":{"x":13059.806237131383,"y":25160.35640053908},"targetPosition":{"x":13018.806237131383,"y":25092.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Manage Stages","id":"e89c8bfd-fac9-4aff-afc0-3a89c1dc2710"}}},{"type":"Layer","name":"Close Stages","config":"{ \n\"status\": \"off\"\n}","id":"6c4ac373-c5ff-4bfd-8047-4caaba6b7788","savedPayload":{"position":{"x":12997.806237131383,"y":25084.35640053908},"targetPosition":{"x":13018.806237131383,"y":25092.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Close Stages","id":"bc2c6503-e935-4ad7-a76a-89b062d41e91"}}}],"layerFolders":[],"id":"4b2ee5fd-d4f7-4a7c-bb6e-5e4c633b1b9f","savedPayload":{"position":{"x":13018.806237131383,"y":25092.35640053908},"targetPosition":{"x":13025.806237131383,"y":25029.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Layer Folder","name":"Position","layers":[{"type":"Layer","name":"Positions","config":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"4f77d851-9e93-4e85-9cfb-ec2ab200d79b","savedPayload":{"position":{"x":12919.806237131383,"y":25149.35640053908},"targetPosition":{"x":13010.806237131383,"y":25117.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Positions","id":"3ed594a0-8452-4bd8-9eaa-37cd83a45b90"}}},{"type":"Layer","name":"Position Base Asset","config":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"0213c668-a6d8-4737-ae57-d59d62b8f715","savedPayload":{"position":{"x":13105.806237131383,"y":25093.35640053908},"targetPosition":{"x":13010.806237131383,"y":25117.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Position Base Asset","id":"88997c97-e77f-490e-9eb5-c7531beec132"}}},{"type":"Layer","name":"Position Quoted Asset","config":"{ \n\"status\": \"off\"\n}","id":"f07986eb-010f-46cd-803d-dcac674adb80","savedPayload":{"position":{"x":13083.806237131383,"y":25172.35640053908},"targetPosition":{"x":13010.806237131383,"y":25117.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Position Quoted Asset","id":"b4772611-d5d0-4fbd-b689-d42de3c045d4"}}},{"type":"Layer","name":"Stop Loss","config":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"3f8f8fa3-2149-42d6-92e9-214354cfa186","savedPayload":{"position":{"x":12968.806237131383,"y":25080.35640053908},"targetPosition":{"x":13010.806237131383,"y":25117.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Stop Loss","id":"9b064960-3829-441f-b955-334fb8324a53"}}},{"type":"Layer","name":"Take Profit","config":"{ \n\"status\": \"off\"\n}","id":"65ec58e6-2c00-41d4-a145-e6b7e7178bf0","savedPayload":{"position":{"x":13081.806237131383,"y":25089.35640053908},"targetPosition":{"x":13010.806237131383,"y":25117.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Take Profit","id":"cbcc817b-4333-4c80-addc-e2a0ee0845c1"}}}],"layerFolders":[],"id":"66e5c011-9163-422d-863f-115135f832ad","savedPayload":{"position":{"x":13010.806237131383,"y":25117.35640053908},"targetPosition":{"x":13025.806237131383,"y":25029.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"91b8a8e8-823d-4746-967f-c8d85a1ad3ad","savedPayload":{"position":{"x":13025.806237131383,"y":25029.35640053908},"targetPosition":{"x":12929.806237131383,"y":25064.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dcaccce7-d98d-49b3-b3b6-e83495b688c3","savedPayload":{"position":{"x":12929.806237131383,"y":25064.35640053908},"targetPosition":{"x":12861.806237131383,"y":25132.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e328f755-80a6-4799-8f12-002a2ddb983d","savedPayload":{"position":{"x":12861.806237131383,"y":25132.35640053908},"targetPosition":{"x":12827.806237131383,"y":25061.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":330,"radius":0},"referenceParent":{"type":"Trading Mine Products","name":"Masters","id":"aa2b0766-a3d5-47e1-acd8-7345af564388"}}},"id":"93708a53-ad8d-48e0-9728-b87ea96d1545","savedPayload":{"position":{"x":18706.00611902155,"y":23721.076848739758},"targetPosition":{"x":18401.255084336157,"y":24117.710192006354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cc1fcc1e-81de-4011-8e59-c37ebe32ecf7","savedPayload":{"position":{"x":18401.255084336157,"y":24117.710192006354},"targetPosition":{"x":18651.052979783042,"y":24550.554352801882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":585,"y":65},"width":240,"height":113.625,"radius":0},"referenceParent":{"type":"Live Trading Session","name":"Lightning Strike","id":"1ce123af-467f-4295-b317-dba8729faf25"}}}],"id":"abc16155-6614-4397-bf7e-ab4a0ff7c1a4","savedPayload":{"position":{"x":18651.052979783042,"y":24550.554352801882},"targetPosition":{"x":18900.806237131383,"y":24983.35640053908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Production Environment","name":"New Production Environment","id":"65a40d20-837c-4652-8356-f8054b4e1346"}}}],"id":"21d2ec55-9e56-4652-8e96-c7e451262c36","savedPayload":{"position":{"x":18900.806237131383,"y":24983.35640053908},"targetPosition":{"x":18900.806237131383,"y":24983.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"c"}}},{"type":"Includes","name":"New Includes","includedDataMines":{"type":"Included Data Mines","name":"New Included Data Mines","includedFiles":[{"type":"Included File","name":"Masters","includedFilePosition":{"type":"Included File Position","name":"Masters","id":"d5234bd2-ef4e-4856-a6a0-ce7659653a48","savedPayload":{"position":{"x":18879.35218735615,"y":18688.55301821844},"targetPosition":{"x":19769.600624865554,"y":24994.797903799757},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ecc1a524-de9b-4e73-8874-b99a7ea0402b","savedPayload":{"position":{"x":19769.600624865554,"y":24994.797903799757},"targetPosition":{"x":19296.399294164203,"y":24994.80221451139},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cbc3d9be-5e59-45d8-bb0f-4ec82763691d","savedPayload":{"position":{"x":32833.260761628066,"y":18689.79734910344},"targetPosition":{"x":32392.37828125503,"y":18689.802375894946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"includedTradingMines":{"type":"Included Trading Mines","name":"New Included Trading Mines","includedFiles":[{"type":"Included File","name":"Masters","includedFilePosition":{"type":"Included File Position","name":"Masters","id":"ad1ce785-858f-4cfc-ba68-108b5e0c54d9","savedPayload":{"position":{"x":24941.217404066585,"y":18714.893045797242},"targetPosition":{"x":32923.77486089474,"y":25876.557686860764},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8a64c00e-4f8c-49bf-b57d-4e2e388bae41","savedPayload":{"position":{"x":32923.77486089474,"y":25876.557686860764},"targetPosition":{"x":32677.064086602786,"y":25449.16027608683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8d881813-3ab9-4e8b-ab5a-48dedab2dd19","savedPayload":{"position":{"x":32612.775032135152,"y":19071.63366157499},"targetPosition":{"x":32392.37828125503,"y":18689.802375894946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"includedTradingSystems":{"type":"Included Trading Systems","name":"New Included Trading Systems","includedFiles":[{"type":"Included File","name":"Masters-Lightning-Strike","includedFilePosition":{"type":"Included File Position","name":"Masters-Lightning-Strike","id":"37ab4b0d-6bd8-46b6-9778-e193c32669a4","savedPayload":{"position":{"x":32445.365708673427,"y":31023.826468868458},"targetPosition":{"x":18183.43031991079,"y":25663.6856731242},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5fdcecee-8c8f-4e0f-b36b-81e9231970a6","savedPayload":{"position":{"x":18362.70764415141,"y":25842.885099920997},"targetPosition":{"x":18607.51288355638,"y":25418.786308178733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3569d452-c593-4e54-a356-7ff8c6b519f3","savedPayload":{"position":{"x":32171.974874313317,"y":19071.65282487939},"targetPosition":{"x":32392.37828125503,"y":18689.802375894946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"includedTradingEngines":{"type":"Included Trading Engines","name":"New Included Trading Engines","includedFiles":[{"type":"Included File","name":"Low-Frequency","includedFilePosition":{"type":"Included File Position","name":"Low-Frequency","id":"e117a2a4-09b3-4181-8455-e680de3bdeb3","savedPayload":{"position":{"x":32396.55093774257,"y":24950.049392142086},"targetPosition":{"x":17872.26258667668,"y":24994.75799961197},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e9270d67-4630-4ac9-91ca-1dec4fb5aa38","savedPayload":{"position":{"x":17872.26851625474,"y":24994.752319768133},"targetPosition":{"x":18362.368036589498,"y":24994.752511313756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"87a28762-63d0-45f7-bd39-9dea436d8244","savedPayload":{"position":{"x":31951.451926309524,"y":18689.80264881546},"targetPosition":{"x":32392.37828125503,"y":18689.802375894946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"includedSuperScripts":{"type":"Included Super Scripts","name":"New Included Super Scripts","includedFiles":[],"id":"5fd84f39-a051-4533-b7d2-6ce18ea55a9a","savedPayload":{"position":{"x":32171.955398877653,"y":18307.912859151947},"targetPosition":{"x":32392.37828125503,"y":18689.802375894946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"includedTutorials":{"type":"Included Tutorials","name":"New Included Tutorials","includedFiles":[],"id":"af3b483a-7a9a-4ca7-b6fe-968b6d4aed7b","savedPayload":{"position":{"x":32612.793617525556,"y":18307.933728486147},"targetPosition":{"x":32392.37828125503,"y":18689.802375894946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"bfb0b514-3b9f-4e9a-85ca-d0ca714b09f6","savedPayload":{"position":{"x":32392.37828125503,"y":18680.802375894946},"targetPosition":{"x":32392.37828125503,"y":18680.802375894946},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Tutorial","name":"Welcome to Superalgos!","config":"{\n \"title\": \"Congratulations!\",\n \"summary\": \"You are now running Superalgos! Let's get you started! I can't wait to show you around!\",\n \"subTitle\": \"Welcome to Superalgos!\",\n \"gif\": \"\",\n \"image\": \"tutorial\",\n \"definition\": \"I'm an interactive tutorial, the first in a series created to walk you through the basic operation of the system!\",\n \"paragraph1\": \"My goal is to get you started and show you the tools that will help you move around comfortably to discover all the cool things that Superalgos may do for you.\",\n \"callOut\": \"\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"Please, always click Next to continue!\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[],"tutorialTopics":[{"type":"Tutorial Topic","name":"Nodes & Hierarchies","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[{"type":"Tutorial Step","name":"That's Me","config":"{\n \"subTitle\": \"That's Me On the Right!\",\n \"gif\": \"\",\n \"image\": \"tutorial\",\n \"definition\": \"Tutorials are defined within the system, so you may create more of us if you wish! But we'll discuss that God-like power later on... let's focus on the basics first!\",\n \"paragraph1\": \"Superalgos is inherently a visual tool. The system represents information in hierarchical structures of interconnected nodes, represented by icons. What you see on your right is one of these hierarchies—in particular, a ->Tutorial-> hierarchy with a label reading Welcome to Superalgos!\",\n \"callOut\": \"Hover your mouse pointer over the Tutorial node and see what happens!\",\n \"paragraph2\": \"Wow! Cool right? That's a lot of buttons!\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"57f5e946-1289-4508-95f0-dfe5e95a7346","savedPayload":{"position":{"x":19827.94422586581,"y":44379.34807942604},"targetPosition":{"x":19394.24686952025,"y":44629.12069904685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Tutorial","name":"Welcome to Superalgos!","id":"6f36f540-8de9-4458-b2c7-875884121b87"}}},{"type":"Tutorial Step","name":"Expand That Node!","config":"{\n \"subTitle\": \"Expand That Node!\",\n \"gif\": \"\",\n \"image\": \"expand\",\n \"definition\": \"Each node features a menu. The button on the bottom-left expands and collapses the structure of nodes below the current node.\",\n \"paragraph1\": \"\",\n \"callOut\": \"Go ahead and click the expand button!\",\n \"paragraph2\": \"The ->Tutorial-> node has several offspring, and these have several more offspring. That's why it's a hierarchy!\",\n \"note\": \"Structured visual representations of information are at the core of how Superalgos administers the complexity behind flexible and scalable trading operations.\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\" \n}","id":"dc75d95f-68d8-44a0-a1d2-d4a12a2fd43f","savedPayload":{"position":{"x":19827.836910533093,"y":44879.16612004278},"targetPosition":{"x":19394.24686952025,"y":44629.12069904685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"tutorialTopics":[],"id":"892c8d8c-824e-4293-af86-bdb81464c7d6","savedPayload":{"position":{"x":19394.283831433255,"y":44629.09346198914},"targetPosition":{"x":18893.791666666664,"y":44629.094484167515},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Topic","name":"Start Data Mining","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[{"type":"Tutorial Step","name":"Let's Go for a Ride!","config":"{\n \"subTitle\": \"Let's Go for a Ride!\",\n \"gif\": \"\",\n \"image\": \"network\",\n \"definition\": \"Before I show you the rest of the menu, let's take a look at another hierarchy: the ->Network->. \",\n \"paragraph1\": \"The Network hierarchy is the control room of the system. This is where you control your ->Data Mining->, ->Testing Environment->, and ->Production Environment->.\",\n \"callOut\": \"Expand the hierarchy and take a look inside!\",\n \"paragraph2\": \"See the nodes I mentioned earlier? Cool! We are here to start your first ever data mining operation. Are you ready?\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"pressButton\": \"\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"43329093-256d-4bfa-84d1-3eb245287604","savedPayload":{"position":{"x":19717.151257586946,"y":44817.380418046625},"targetPosition":{"x":19247.588699533557,"y":44982.72844445787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Network","name":"My Network","id":"3c165071-7558-4708-9999-8ffe71d346b1"}}},{"type":"Tutorial Step","name":"Ready to Rock?","config":"{\n \"subTitle\": \"Ready to Rock?\",\n \"gif\": \"\",\n \"image\": \"data-mining\",\n \"definition\": \"The ->Data Mining-> node controls all the data mining tasks defined for this ->Network Node->.\",\n \"bulletListIntro\": \"You are about to start the first of the following activities that we'll cover in the next few minutes:\",\n \"bulletArray\": [\n [\n \"1. Run a data mining operation\",\n \" to get data for the BTC/USDT ->Market-> from Binance.\"\n ],\n [\n \"2. Run a ->Backtesting Session->\",\n \" with an existing open-source strategy.\"\n ],\n [\n \"3. Run a ->Live Trading Session->\",\n \" with minimal funds, to test the critical aspects of the system.\"\n ]\n ],\n \"paragraph1\": \"\",\n \"callOut\": \"Are you cool with this? Shall we start?\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"pressButton\": \"\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"d35ce1f2-4963-4add-8998-9bb8995a24e7","savedPayload":{"position":{"x":19745.149208199524,"y":45039.05761518856},"targetPosition":{"x":19247.588699533557,"y":44982.72844445787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Data Mining","name":"New Data Mining","id":"4df1cb4e-b9ca-4f62-bb5f-c7e262aaa22a"}}},{"type":"Tutorial Step","name":"Let's Mine Some Data!","config":"{\n \"subTitle\": \"Let's Mine Some Data!\",\n \"gif\": \"\",\n \"image\": \"run\",\n \"definition\": \"The Run All Exchange Data Tasks button on the top-right corner of the menu runs... well... all ->Exchange Data Tasks->!\",\n \"paragraph1\": \"And that is exactly what we want to do, so...\",\n \"callOut\": \"Select the button on the menu and let's mine!\",\n \"paragraph2\": \"Confirm the request by clicking the button a second time. In about 20 seconds, you should see a status notice below the Data Mining node indicating that 1 out of 1 Exchange Data Tasks node is running.\",\n \"note\": \"Your console app should show something similar to the video on the next step.\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"pressButton\": \"\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"37dc22e6-b981-472c-abd6-a61904b5c46e","savedPayload":{"position":{"x":19671.692964608945,"y":45249.03994479081},"targetPosition":{"x":19247.588699533557,"y":44982.72844445787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Data Mining","name":"New Data Mining","id":"4df1cb4e-b9ca-4f62-bb5f-c7e262aaa22a"}}},{"type":"Tutorial Step","name":"GIF","config":"{\n \"gif\": \"welcome-start-data-mining-console\",\n \"position\": \"Left\",\n \"slider\": \"toTop\"\n}","id":"204754e6-6145-44fd-877f-6373b2c9caa1","savedPayload":{"position":{"x":19514.198467994673,"y":45406.34934450244},"targetPosition":{"x":19247.588699533557,"y":44982.72844445787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"How Are Things Going?","config":"{\n \"subTitle\": \"How Are Things Going?\",\n \"gif\": \"\",\n \"image\": \"sensor-bot-instance\",\n \"definition\": \"I just dragged you deep into the confines of the Data Mining operation. See the progress of the ->Sensor Bot Instance-> to your right!\",\n \"paragraph1\": \"The sensor bot is currently extracting data from the exchange. As soon as she completes the extraction for the defined datetime range something really cool will happen... automatically!\",\n \"callOut\": \"Can you guess what that may be?\",\n \"paragraph2\": \"I won't tell you! You'll find out soon... be patient! It should take no longer than 3 to 5 minutes to extract the data from Binance. Promise you won't click Next until you see the progress notice at 100%!\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"pressButton\": \"\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"bc5ee6e3-62d6-481d-8eb9-5061e93fcf32","savedPayload":{"position":{"x":19304.3121828983,"y":45479.84098280582},"targetPosition":{"x":19247.588699533557,"y":44982.72844445787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Sensor Process Instance","name":"Exchange Raw Data Historic-OHLCVs","id":"d244c564-4e86-43c7-9796-dc3b6294ec8b"}}},{"type":"Tutorial Step","name":"Candles Volumes in Action","config":"{\n \"subTitle\": \"Candles Volumes in Action\",\n \"gif\": \"\",\n \"image\": \"indicator-bot-instance\",\n \"definition\": \"That's right! Indicators start working as soon as the sensor bot finishes her job!\",\n \"paragraph1\": \"You're watching the progress of Candles Volumes. She turns the one-minute candles the sensor bot downloads from the exchange into candles for all time frames.\",\n \"callOut\": \"What happens after Candles Volumes finishes?\",\n \"paragraph2\": \"Other bots need Candles Volumes to finish her work so that they may start doing theirs. Imagine a bot needs to calculate a 20-periods Simple Moving Average for all time frames. She needs the ->Data Product-> produced by Candles Volumes as input for the SMA calculation. We call such a need a ->Data Dependency->.\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"pressButton\": \"\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"c04422c9-b9b5-491d-9d69-7c12c5d48a46","savedPayload":{"position":{"x":19081.990704235464,"y":45448.54664312762},"targetPosition":{"x":19247.588699533557,"y":44982.72844445787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Market","id":"f0ef12ed-f0fd-4b88-8e15-27cf24265a5f"}}}],"tutorialTopics":[],"id":"acb0a041-37aa-49d3-b221-66ca76b7d874","savedPayload":{"position":{"x":19247.75227963546,"y":44982.796828381295},"targetPosition":{"x":18893.791666666664,"y":44629.094484167515},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Topic","name":"Control Basics","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[],"tutorialTopics":[{"type":"Tutorial Topic","name":"Moving Around","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[{"type":"Tutorial Step","name":"Click & Drag Baby!","config":"{\n \"subTitle\": \"Click & Drag Baby!\",\n \"gif\": \"\",\n \"image\": \"hand-drag\",\n \"definition\": \"I want to show you something while the data mining operation progresses. I'll teach you how to walk... in two seconds!\",\n \"paragraph1\": \"\",\n \"callOut\": \"Just click and drag with your mouse!\",\n \"paragraph2\": \"Easy, right? Great!

However, the design space is a huge place and I wouldn't want you to get tendinitis dragging your way around like this. I'll teach you a couple more tricks in the next couple of steps.\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"pressButton\": \"\",\n \"documentationURL\": \"\" \n}","id":"c01bc5ad-0d8a-4678-b415-32d08149af10","savedPayload":{"position":{"x":19641.596016681535,"y":45614.78800550081},"targetPosition":{"x":19143.9778734982,"y":45562.417341617576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"Time to Take Control!","config":"{\n \"subTitle\": \"Time to Take Control!\",\n \"gif\": \"\",\n \"image\": \"key-ctrl\",\n \"definition\": \"Yes! You may use your keyboard too! You are going to love this for long-distance travel on the design space!\",\n \"paragraph1\": \"Here's the trick:\",\n \"callOut\": \"Regular folks may use the Ctrl key plus arrow keys: ← → ↑ ↓\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"Of course Mac fanboys and fangirls must replace Ctrl with Command\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"pressButton\": \"\",\n \"documentationURL\": \"\" \n}","id":"da5d7044-7add-4cec-8602-60cba9f5964f","savedPayload":{"position":{"x":19515.81809404447,"y":45897.26572817753},"targetPosition":{"x":19143.9778734982,"y":45562.417341617576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"Spacetime Teleportation!","config":"{\n \"subTitle\": \"Spacetime Teleportation!\",\n \"gif\": \"\",\n \"image\": \"mouse-right-click\",\n \"definition\": \"Ok, you're not actually going to be teleporting, nor will you bend spacetime, but it almost feels like it! It's time to learn to use the design space map.\",\n \"paragraph1\": \"I said earlier that the design space is huge, and I meant it! Going from one corner to the opposite would take hundreds of clicks and drags. While using the keyboard allows you to develop neck-breaking speeds, it's not as cool as teleporting! This is how it works:\",\n \"callOut\": \"Right-click to open the map and left-click anywhere on the map to go to that specific spot!\",\n \"paragraph2\": \"Look at me on the bottom-left corner of the design space? Now you know where to find me!\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"pressButton\": \"\",\n \"documentationURL\": \"\" \n}","id":"56422b6d-9194-426a-844b-bc305ae93799","savedPayload":{"position":{"x":19248.09697828514,"y":46051.8865416851},"targetPosition":{"x":19143.9778734982,"y":45562.417341617576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"Warp-Speed Zooming!","config":"{\n \"subTitle\": \"Warp-Speed Zooming!\",\n \"gif\": \"\",\n \"image\": \"mouse-wheel-down\",\n \"definition\": \"There's one more tool that you may find useful to manipulate spacetime! The native browser zoom function!\",\n \"paragraph1\": \"Sometimes you may wish to visualize larger sections of hierarchies than your screen allows.\",\n \"callOut\": \"Hit Ctrl and scroll the wheel of your mouse!\",\n \"paragraph2\": \" \",\n \"note\": \"\",\n \"tip\": \"Chrome indicates the level of zoom on the top-right corner. When zooming in or out, the design space gets centered on the screen. After applying the desired level of zoom, use the design space map to go back where you were.\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"pressButton\": \"\",\n \"documentationURL\": \"\"\n}","id":"ab46d3df-1c4b-4520-a042-d022945134e7","savedPayload":{"position":{"x":18941.145878111103,"y":46019.543823771426},"targetPosition":{"x":19143.9778734982,"y":45562.417341617576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"tutorialTopics":[],"id":"595cc636-c692-401c-9d45-a954146f4679","savedPayload":{"position":{"x":19144.125791426482,"y":45562.61452996405},"targetPosition":{"x":18893.911462026193,"y":45129.3072721109},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Topic","name":"Tutorials & Help","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[{"type":"Tutorial Step","name":"A Bit About Tutorials","config":"{\n \"subTitle\": \"A Bit About Tutorials...\",\n \"gif\": \"\",\n \"image\": \"tutorial\",\n \"definition\": \"Before we get back to business, let me tell you a few things about how we—tutorials—work.\",\n \"bulletListIntro\": \"This is likely the most important bit:\",\n \"bulletArray\": [\n [\n \"You are the boss!\",\n \" You may stop a tutorial and skip steps—or entire topics—at any point. Once you're ready to pick up the lesson again, find us on the bottom-left corner of the design space. Select Resume on the menu to start where you left, or on the first step skipped. Select Play to start from the beginning!\"\n ]\n ],\n \"paragraph1\": \"\",\n \"callOut\": \"Let's try that! Click the Stop button below, and once I'm gone, open my menu and select Resume.\",\n \"paragraph2\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"82087d62-2c6a-4336-b974-6ecf06d1485b","savedPayload":{"position":{"x":18773.381074346435,"y":46045.9283009799},"targetPosition":{"x":18644.0041257748,"y":45562.62251646021},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Tutorial","name":"Welcome to Superalgos!","id":"6f36f540-8de9-4458-b2c7-875884121b87"}}},{"type":"Tutorial Step","name":"Need a Quick Reminder?","config":"{\n \"subTitle\": \"Need a Quick Reminder?\",\n \"gif\": \"\",\n \"image\": \"key-left\",\n \"definition\": \"At this point, I'm probably overflowing your hippocampus! But don't worry... you may go back to any previous step!\",\n \"bulletListIntro\": \"If you ever need a reminder about any of these topics...\",\n \"bulletArray\": [\n [\n \"Find a ->Tutorial Topic-> and replay it!\",\n \" You may find me on the bottom-left corner of the design space, expand me, browse through the hierarchy of topics and steps, and click Play on any of them. Topics are arranged in a clockwise direction, starting from the right-hand side of the main ->Tutorial-> node.\"\n ]\n ],\n \"paragraph1\": \"\",\n \"callOut\": \"Find the Need a Quick Reminder? step under the Tutorials & Help topic below. Then click Stop, and restart by clicking Play on the said ->Tutorial Step->!\",\n \"paragraph2\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"5d1d848b-4633-4b70-8cb0-01b527a99d23","savedPayload":{"position":{"x":18393.987758662548,"y":45995.9788523985},"targetPosition":{"x":18644.0041257748,"y":45562.62251646021},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Tutorial","name":"Welcome to Superalgos!","id":"6f36f540-8de9-4458-b2c7-875884121b87"}}},{"type":"Tutorial Step","name":"Hungry For More Info?!","config":"{\n \"subTitle\": \"Hungry For More Info?\",\n \"gif\": \"\",\n \"image\": \"help\",\n \"definition\": \"I won't go into every detail as we move along, but if you need more info on a node, the help button on the menu takes you straight to its documentation.\",\n \"bulletListIntro\": \"The documentation of a node may include one or more of the following sections:\",\n \"bulletArray\": [\n [\n \"Definition:\",\n \" describes what the node is or does.\"\n ],\n [\n \"Content:\",\n \" describes how the node works.\"\n ],\n [\n \"Adding:\",\n \" describes how to add the node.\"\n ],\n [\n \"Configure:\",\n \" goes through the node's configuration.\"\n ],\n [\n \"Start:\",\n \" for nodes that may be started or stopped.\"\n ]\n ],\n \"paragraph1\": \"\",\n \"callOut\": \"Click the help button on the ->Data Mining-> node!\",\n \"paragraph2\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"530a357e-59e6-4c88-b5da-5500e8bed6a8","savedPayload":{"position":{"x":18160.88796974517,"y":45692.36748025638},"targetPosition":{"x":18644.0041257748,"y":45562.62251646021},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Data Mining","name":"New Data Mining","id":"4df1cb4e-b9ca-4f62-bb5f-c7e262aaa22a"}}}],"tutorialTopics":[],"id":"b230cbd7-658c-4a1c-b772-90462da2afaa","savedPayload":{"position":{"x":18644.0041257748,"y":45562.62251646021},"targetPosition":{"x":18893.911462026193,"y":45129.3072721109},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"id":"abde1c6f-1863-4752-9146-acda3dcfb987","savedPayload":{"position":{"x":18893.911462026193,"y":45129.3072721109},"targetPosition":{"x":18893.791666666664,"y":44629.094484167515},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Topic","name":"Explore Data Mining","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[{"type":"Tutorial Step","name":"Back to Work!","config":"{\n \"subTitle\": \"Ok... Back to Work!\",\n \"gif\": \"\",\n \"image\": \"data-mining\",\n \"definition\": \"Now that you're comfortable moving around, I want you to go on a little tour exploring the ->Data Mining-> section of the hierarchy.\",\n \"bulletListIntro\": \"Notice the following:\",\n \"bulletArray\": [\n [\n \"The section is organized—first and foremost—by exchange and market.\",\n \" This will help you work with multiple exchanges and multiple markets in an orderly fashion.\"\n ],\n [\n \"The ->Exchange Data Tasks-> and ->Market Data Tasks-> nodes\",\n \" may control all tasks in the exchange and market respectively.\"\n ]\n ],\n \"paragraph1\": \"\",\n \"callOut\": \"Go out and check those nodes and their menus!\",\n \"paragraph2\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\" \n}","id":"20adac13-77a2-4694-a064-0851ae86b20b","savedPayload":{"position":{"x":18714.26362197945,"y":45168.10526166155},"targetPosition":{"x":18550.00027943737,"y":44695.680880535816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"The Magic of Data Mines","config":"{\n \"subTitle\": \"The Magic of Data Mines\",\n \"gif\": \"\",\n \"image\": \"data-mine-tasks\",\n \"definition\": \"Within each market, the operation is organized by ->Data Mine->. Superalgos ships with several open-source data mines, each with multiple indicators.\",\n \"paragraph1\": \"Think of data mines as plugins that developers may create to extend the data analysis capacity of the system. An ->Indicator Bot-> may process data other indicators produce, hence adding value and producing deeper and richer analysis.\",\n \"callOut\": \"If you have a basic understanding of JavaScript, you may create indicators too!\",\n \"paragraph2\": \"But I'm getting ahead of myself talking about building data mines at this point! Let's get back on track!\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"18b58454-4ed5-4c3c-939b-d1f87742a7a1","savedPayload":{"position":{"x":18493.186649549843,"y":45193.051144283716},"targetPosition":{"x":18550.00027943737,"y":44695.680880535816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Data Mine Tasks","name":"Masters","id":"85224e5e-f3ee-4e8d-b9bd-e5901bd49b33"}}},{"type":"Tutorial Step","name":"The Core of Data Mining","config":"{\n \"subTitle\": \"At the Core of Data Mining\",\n \"gif\": \"\",\n \"image\": \"task\",\n \"definition\": \"The core of a data mining operation are tasks running bots. One ->Task-> controls one bot, and a ->Task Manager-> may control multiple tasks.\",\n \"paragraph1\": \"Buy now you've learned about six different devices that you may use to control each bot in your data mining operation. At the highest level, the ->Data Mining-> node controls all data mining bots in the ->Network Node->.\",\n \"callOut\": \"We'll talk about network nodes in a minute...\",\n \"paragraph2\": \"At the lowest level, an individual task controls a single bot. The nodes in between are organizational nodes that help keep the operation orderly, and allow granular control over the different sections.\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"22c05bc7-0d7b-42b7-9c5c-73376a7a9c97","savedPayload":{"position":{"x":18283.172918586068,"y":45119.6368609039},"targetPosition":{"x":18550.00027943737,"y":44695.680880535816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Task","name":"Exchange Raw Data","id":"a8f38508-1cac-4ab1-815f-d338fc813377"}}},{"type":"Tutorial Step","name":"Are We Up to Date?","config":"{\n \"subTitle\": \"Are We Up to Date?\",\n \"gif\": \"\",\n \"image\": \"indicator-process-instance\",\n \"definition\": \"By now, all processes should be at 100%. When that happens, we refer to the data mining operation as being up to date.\",\n \"paragraph1\": \"When all processes are up to date, the bots keep running, processing information in realtime as it is produced at the exchange. That is, the data mining operation doesn't stop unless you stop it!\",\n \"callOut\": \"Look around and see if all processes are at 100%\",\n \"paragraph2\": \"To run a ->Live Trading Session->, you need a constant feed of information from the exchange, being processed in realtime, so that the ->Trading Bot-> may apply the rules of your ->Trading System-> to make live trading decisions.\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\" \n}","id":"ad16ed9d-91fe-4f44-8c20-8c257b65cc9c","savedPayload":{"position":{"x":18125.713411032135,"y":44962.27546301136},"targetPosition":{"x":18550.00027943737,"y":44695.680880535816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"Time to Stop!","config":"{\n \"subTitle\": \"Time to Stop!\",\n \"gif\": \"\",\n \"image\": \"stop\",\n \"definition\": \"We are not going to run a ->Live Trading Session-> just yet, so there is no point in keeping our data mining running at this point.\",\n \"bulletListIntro\": \"There are two main reasons to run a data mining op:\",\n \"bulletArray\": [\n [\n \"To process historic data.\",\n \"You may want to process a datetime range of any given ->Market-> to run a ->Backtesting Session->, or to process new indicators.\"\n ],\n [\n \"To run a live session.\",\n \"Live sessions (->Paper Trading Session->, ->Forward Testing Session->, and ->Live Trading Session->) need a live market feed.\"\n ]\n ],\n \"paragraph1\": \"\",\n \"callOut\": \"If all processes are up to date, then select Stop All Tasks in the Masters ->Task Manager->\",\n \"paragraph2\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"dc68fa92-dee8-4d89-8add-893084d24afa","savedPayload":{"position":{"x":18052.06590028299,"y":44752.22559372604},"targetPosition":{"x":18550.00027943737,"y":44695.680880535816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Task Manager","name":"Masters","id":"c193ecbb-c3e0-4fd5-94ed-bb6356d1d5ea"}}},{"type":"Tutorial Step","name":"Careful With Your Data","config":"{\n \"subTitle\": \"Careful With Your Data!\",\n \"gif\": \"\",\n \"image\": \"dataset-definition\",\n \"definition\": \"It may take up to one minute for all tasks to come to a halt. You should never close the system before all tasks stop.\",\n \"paragraph1\": \"\",\n \"callOut\": \"Take another quick look at the console app to see how tasks get stopped!\",\n \"paragraph2\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"Closing the backend before tasks stop may cause your data to become corrupt.\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"e2d919b0-de13-418a-a859-c354ab00e098","savedPayload":{"position":{"x":18076.817692245422,"y":44531.06069045461},"targetPosition":{"x":18550.00027943737,"y":44695.680880535816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"tutorialTopics":[],"id":"07d273cd-95b0-4c7e-b81f-8c9c26041598","savedPayload":{"position":{"x":18540.24797757539,"y":44982.90846445738},"targetPosition":{"x":18893.791666666664,"y":44629.094484167515},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Topic","name":"Charting Space","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[],"tutorialTopics":[{"type":"Tutorial Topic","name":"The Viewport","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[{"type":"Tutorial Step","name":"The Other Dimension","config":"{\n \"subTitle\": \"The Bright Side\",\n \"gif\": \"\",\n \"image\": \"charting-space\",\n \"definition\": \"So far, you've been confined to the dark side of Superalgos. Get ready to be exposed to the bright side: the ->Charting Space->.\",\n \"paragraph1\": \"The charting space lives on top of the design space, separated by a turquoise slider.\",\n \"callOut\": \"\",\n \"paragraph2\": \"As you will come to expect from Superalgos, the charting space is configurable and highly flexible. Everything that happens there is defined on the ->Charting Space-> hierarchy.\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"The charting space is known for blowing people's minds. Please, refrain from continuing with this tutorial if you are currently under the influence of psychoactive substances.\",\n \"position\": \"Left\",\n \"slider\": \"toMiddle\",\n \"useReferenceParentTo\": \"Position at Node\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"6a04a6a7-2c77-4fc0-9aab-2355183e9de5","savedPayload":{"position":{"x":18266.982808147306,"y":45428.7886735639},"targetPosition":{"x":18040.024272795825,"y":44982.949857879576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Charting Space","name":"New Charting Space","id":"21d2ec55-9e56-4652-8e96-c7e451262c36"}}},{"type":"Tutorial Step","name":"Break On Through","config":"{\n \"subTitle\": \"Break On Through!\",\n \"gif\": \"\",\n \"image\": \"full-board\",\n \"definition\": \"I'll get you up to speed with moving around and browsing the charting space in no time... Let's deal with the slider first!\",\n \"paragraph1\": \"\",\n \"callOut\": \"Click it and drag it down to close the design space and open the charting space. Do the opposite for the reversed effect. To do it with the keyboard, hit Ctrl + Shift + ↓. Try ↑ ← → too!\",\n \"paragraph2\": \"\",\n \"note\": \"Unless you need both spaces to be partially open, it's always a good idea to fully close either of them to save computing resources in your machine.\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"documentationURL\": \"\" \n}","id":"31192a2d-e45f-45ee-9f78-53aef9f1e4c2","savedPayload":{"position":{"x":18117.714200307066,"y":45477.362819740665},"targetPosition":{"x":18040.024272795825,"y":44982.949857879576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"Navigating the White Room","config":"{\n \"subTitle\": \"Navigating the White Room\",\n \"gif\": \"\",\n \"image\": \"mouse-right-click\",\n \"definition\": \"Just like the design space, the charting space features a huge area where you may set up as many charts as you wish... or as many as your hardware can cope with! \",\n \"paragraph1\": \"There are only two charts in this default ->Workspace->, to keep things simple for newcomers. Advanced users monitor charts from multiple exchanges and multiple markets.\",\n \"callOut\": \"To move around the charting space, click and drag using the right button of the mouse.

The keyboard combination is Shift plus the arrow keys ↑ ← → ↓\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"repositionAtTimeMachineNoZoomReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"8c9f537d-1b51-41b0-abb8-fdcaf8db5224","savedPayload":{"position":{"x":17961.250595732366,"y":45477.52793063553},"targetPosition":{"x":18040.024272795825,"y":44982.949857879576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Time Machine","name":"Lightning Strike Backtesting Session My Computer","id":"499eac86-6c40-4362-a36a-5f2002081866"}}},{"type":"Tutorial Step","name":"Talkin Time Travel","config":"{\n \"subTitle\": \"Talkin' Time Travel\",\n \"gif\": \"\",\n \"image\": \"time-machine\",\n \"definition\": \"I mentioned earlier there are two charts in this workspace. In Superalgos, we call each of these a ->Time Machine->.\",\n \"paragraph1\": \"A time machine may hold one ->Timeline Chart-> or more. We call them time machines because all timeline charts within a time machine are synchronized in time. This feature of time machines allows to superimpose different layers of data sharing the same ->Time Scale->.\",\n \"callOut\": \"Hover your mouse pointer over the time machines!\",\n \"paragraph2\": \"Notice the label emerging on the left-hand side showing which exchange and market the data is associated with. A single time machine may hold data from multiple markets and multiple exchanges!\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"repositionAtTimeMachineNoZoomReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"2f4e6515-64e4-40ab-b894-5cb2468cad2c","savedPayload":{"position":{"x":17812.36486404308,"y":45429.18480228029},"targetPosition":{"x":18040.024272795825,"y":44982.949857879576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Time Machine","name":"Lightning Strike Backtesting Session My Computer","id":"499eac86-6c40-4362-a36a-5f2002081866"}}},{"type":"Tutorial Step","name":"Bending Time?","config":"{\n \"subTitle\": \"Bending time?\",\n \"gif\": \"\",\n \"image\": \"time-machine\",\n \"definition\": \"Ok... maybe it's not actually like bending, but, bear with me... You'll love how you can shape time machines to whatever format you wish.\",\n \"paragraph1\": \"Hover your mouse pointer over any of the edges of the turquoise frame defining the time machine and see what happens. See how the edge is highlighted in yellow?\",\n \"callOut\": \"Cool! Now, left-click the frame and pull!\",\n \"paragraph2\": \"\",\n \"note\": \"This is how you may shape time machines to your liking.\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\"\n}","id":"88985962-8763-415e-a06e-362faaf83c3a","savedPayload":{"position":{"x":17685.700622491262,"y":45337.13543097383},"targetPosition":{"x":18040.024272795825,"y":44982.949857879576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"Size Matters?","config":"{\n \"subTitle\": \"Size Matters?\",\n \"gif\": \"\",\n \"image\": \"time-machine\",\n \"definition\": \"How about shaping the time machine to the exact aspect ratio of your screen?\",\n \"paragraph1\": \"Matching the aspect ratio of your time machines to the aspect ratio of your screen is crucial for charts to fit your screen tightly!\",\n \"callOut\": \"Point your mouse at one of the time machines and hit Ctrl + Shift + A. Do the same with the other one!\",\n \"paragraph2\": \"\",\n \"tip\": \"From now on, leave the time machines matching your screen... it'll work best for our ride!\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\" \n}","id":"5dce35cc-5f3c-4f2d-b8f1-979ac03ddfa2","savedPayload":{"position":{"x":17593.6547917236,"y":45210.43684124855},"targetPosition":{"x":18040.024272795825,"y":44982.949857879576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"Putting Things in Order","config":"{\n \"subTitle\": \"Putting Things in Order\",\n \"gif\": \"\",\n \"image\": \"hand-drag\",\n \"definition\": \"One more thing before we dive into the charts. You need to know how to put the house in order!\",\n \"paragraph1\": \"The time will come in which you may be working with tens of charts. You already know how to change their format... Now you need to know how to move them around, so that you may create whatever arrangements you require. It's quite easy:\",\n \"callOut\": \"Hit Shift left-click, and drag!\",\n \"paragraph2\": \"I believe we've covered everything about how to manage the charting space. It's time to dive into the charts!\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\" }","id":"9cded7dd-5236-4000-9b0f-d576fa185734","savedPayload":{"position":{"x":17545.238023813392,"y":45061.50364699754},"targetPosition":{"x":18040.024272795825,"y":44982.949857879576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"Get In the Wormhole!","config":"{\n \"subTitle\": \"Get In the Wormhole!\",\n \"gif\": \"\",\n \"image\": \"mouse-wheel-up\",\n \"definition\": \"It's time to dive into a ->Time Machine-> and see what happens! Are you ready for a full-on immersive experience?\",\n \"paragraph1\": \"The charting space is like the Google Maps of market charts. As you already know, you left-click and drag to move around the landscape... but, how do you zoom in to see the details?\",\n \"callOut\": \"With the wheel of the mouse! Try it!\",\n \"paragraph2\": \"Exactly! Just like in Google Maps! Point the mouse to the area of interest, then roll the wheel of the mouse forwards to zoom in, and backward to zoom out!\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\" \n}","id":"ad3ff699-7830-478b-8b62-b3b0af7d0134","savedPayload":{"position":{"x":17545.236387206907,"y":44905.09469315865},"targetPosition":{"x":18040.024272795825,"y":44982.949857879576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Dashboard","name":"Production Environment My Computer","id":"abc16155-6614-4397-bf7e-ab4a0ff7c1a4"}}},{"type":"Tutorial Step","name":"The Elegant Way...","config":"{\n \"subTitle\": \"The Elegant Way...\",\n \"gif\": \"\",\n \"image\": \"mouse-pointer\",\n \"definition\": \"I know! Zooming into a random spot is unlikely to position the chart squared with your screen, right? No worries...\",\n \"paragraph1\": \"I'll show you how to get into a chart so that everything fits nicely. First, use the Ctrl + Shift + A keys to adjust the aspect ratio to fit your screen. Then, zoom out fully with your mouse. From this position...\",\n \"callOut\": \"Double-click on the time machine on top! Twice!\",\n \"paragraph2\": \"The first double-click centers the chart, and takes you to a certain level of zoom; some margin is left to fit the name of the chart and the tab on the top-left corner. The second double-click takes you all the way in, to the zoom level on which layer managers emerge.\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"keyPressedTimeMachineReferenceParent\": {\n \"shiftKey\": true,\n \"ctrlKey\": true,\n \"metaKey\": true,\n \"code\": \"ArrowRight\",\n \"key\": \"A\"\n },\n \"repositionAtTimeMachineNoZoomReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"dcb0863d-fdce-4620-a41a-ebdf5fa15989","savedPayload":{"position":{"x":17593.806451115262,"y":44755.9177831839},"targetPosition":{"x":18040.024272795825,"y":44982.949857879576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Time Machine","name":"Lightning Strike Backtesting Session My Computer","id":"499eac86-6c40-4362-a36a-5f2002081866"}}}],"tutorialTopics":[],"id":"37f74e1d-2e40-409e-8475-b3d990cd7211","savedPayload":{"position":{"x":18039.943869663795,"y":44983.11431182304},"targetPosition":{"x":18393.832462057886,"y":44629.24592314735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Topic","name":"The Charts","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[],"tutorialTopics":[{"type":"Tutorial Topic","name":"Navigation & Scales","config":"{ \n \"title\": \" \",\n \"summary\": \"\",\n \"gif\": \"\",\n \"image\": \"\",\n \"definition\": \"\",\n \"paragraph1\": \"\",\n \"callOut\": \"\",\n \"externalLink\": [\"\", \"\"],\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\", \n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\" \n }","tutorialSteps":[{"type":"Tutorial Step","name":"Moving in Wonderland","config":"{\n \"subTitle\": \"Moving in Wonderland\",\n \"gif\": \"\",\n \"image\": \"mouse-left-click\",\n \"definition\": \"So, you are finally inside a chart. The first thing you'll want to do is move around and learn what these charts may do for you.\",\n \"paragraph1\": \"Let's get on with that! Like in the design space—when inside a time machine—you move by using your mouse and your keyboard. This is how: \",\n \"callOut\": \"With the mouse, left-click and drag. With the keyboard, use the arrow keys: ← → ↑ ↓\",\n \"paragraph2\": \"\",\n \"note\": \"What? It's not working? Are you stuck with a frozen chart? Like in the video on the next step? Don't worry! I know what's going on...\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"keyPressedTimeMachineReferenceParent\": {\n \"shiftKey\": true,\n \"ctrlKey\": true,\n \"metaKey\": true,\n \"code\": \"ArrowRight\",\n \"key\": \"A\"\n },\n \"repositionAtTimeMachineReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"6643c200-4d20-4e65-9fa6-93f60d7eb16b","savedPayload":{"position":{"x":17331.332917835138,"y":38037.390370433146},"targetPosition":{"x":17488.74490768187,"y":37303.70515775101},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Time Machine","name":"Lightning Strike Backtesting Session My Computer","id":"499eac86-6c40-4362-a36a-5f2002081866"}}},{"type":"Tutorial Step","name":"GIF","config":"{\n \"gif\": \"welcome-charts-scales-auto-locked\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\"\n}","id":"23a3914b-29e2-40c9-9356-395699ce655c","savedPayload":{"position":{"x":17250.18351904747,"y":37743.584567873295},"targetPosition":{"x":17488.74490768187,"y":37303.70515775101},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Time Machine","name":"Lightning Strike Backtesting Session My Computer","id":"499eac86-6c40-4362-a36a-5f2002081866"}}},{"type":"Tutorial Step","name":"Unlocking Time!","config":"{\n \"subTitle\": \"Unlocking Time!\",\n \"gif\": \"\",\n \"image\": \"time-scale\",\n \"definition\": \"The reason why you can't move is that scales are locked in the automatic mode so that you may easily find the data after your first data mining operation.\",\n \"paragraph1\": \"Setting the ->Time Scale-> in automatic mode forces the whole datetime range of available data into the chart.\",\n \"callOut\": \"To toggle between the various automatic modes and manual mode, hit Shift and make a gentle one-step roll with the wheel of your mouse on top of the time scale box.\",\n \"paragraph2\": \"Once you've taken care of that, you should be able to move freely on the X-axis, that is, the time axis of the chart. See the video on the next step for clarity.\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\" \n}","id":"365c119b-2ce9-47b9-826e-f942134d6bbc","savedPayload":{"position":{"x":16959.6740524984,"y":37836.07116827604},"targetPosition":{"x":17488.74490768187,"y":37303.70515775101},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"GIF","config":"{\n \"gif\": \"welcome-charts-scales-unlock-time-scale\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\"\n}","id":"51b4c5ac-f874-4814-9bce-31a0fd7949ee","savedPayload":{"position":{"x":17050.171921779212,"y":37544.9284269789},"targetPosition":{"x":17488.74490768187,"y":37303.70515775101},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"Scaling Time!","config":"{\n \"subTitle\": \"Scaling Time!\",\n \"gif\": \"\",\n \"image\": \"time-scale\",\n \"definition\": \"Did you pick up the trick to scale time from the previous video? If not, go to the previous step and watch attentively!\",\n \"paragraph1\": \"That's it! Scroll it, my friend!\",\n \"callOut\": \"Scrolling the wheel of the mouse on top of the time scale box shrinks and expands time!\",\n \"paragraph2\": \"\",\n \"note\": \"There's one more interesting detail worth noting in the previous video: when the time scale exits the automatic mode, the two tiny green triangles indicating each end of the automatic scale disappear!\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\" \n}","id":"a277338e-20c4-4608-bed1-4aa09c40491d","savedPayload":{"position":{"x":16755.81107692844,"y":37465.65339403948},"targetPosition":{"x":17488.74490768187,"y":37303.70515775101},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"Playing With the Rate Scale!","config":"{\n \"subTitle\": \"Playing with the Rate Scale!\",\n \"gif\": \"\",\n \"image\": \"rate-scale\",\n \"definition\": \"Do I need to tell you how the ->Rate Scale-> works or can you figure it out on your own? Ok... I'll give you a hint...\",\n \"paragraph1\": \"\",\n \"callOut\": \"The rate scale works like the time scale! Check the video coming next for clarity!\",\n \"tip\": \"Play with the semi-automatic scale modes too! You know, when a single tiny triangle remains visible after a few flicks of the mouse wheel.\",\n \"note\": \"There's one more scale to work with. I'll tell you all about it after the video.\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"documentationURL\": \"\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\" \n}","id":"2650860c-ce1a-4a1c-af5c-29742a5ab23c","savedPayload":{"position":{"x":16989.275790483596,"y":37269.925849401836},"targetPosition":{"x":17488.74490768187,"y":37303.70515775101},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"GIF","config":"{\n \"gif\": \"welcome-charts-scales-unlock-rate-scale\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\"\n}","id":"0ff92017-1558-4587-8619-78fe07025467","savedPayload":{"position":{"x":16784.45421152269,"y":37043.99795065355},"targetPosition":{"x":17488.74490768187,"y":37303.70515775101},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"No Lock on Time Frames!","config":"{\n \"subTitle\": \"Time Frames Salad?\",\n \"gif\": \"\",\n \"image\": \"time-frame-scale\",\n \"definition\": \"News-flash about the ->Time Frame Scale->: there is no automatic mode!\",\n \"paragraph1\": \"You may freely toggle through all available time frames! In descending order: 24, 8, 6, 4, 3, 2, and 1 hours, and 45, 40, 30, 20, 15, 10, 5, 4, 3, 2, and 1 minutes.\",\n \"callOut\": \"\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"important\": \"Beware when you switch the time frame scale to lower time frames! Dropping time frames too fast and without adjusting the time scale may cause too much information to be rendered on-screen at a time, slowing down your computer. How much information density your hardware may handle depends on its CPU and GPU performance.\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\" \n}","id":"32d93242-2796-4ab5-b182-da48a5f3cdce","savedPayload":{"position":{"x":17086.420495210314,"y":37005.73124758606},"targetPosition":{"x":17488.74490768187,"y":37303.70515775101},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"GIF","config":"{\n \"gif\": \"welcome-charts-scales-time-frame-scale\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\"\n}","id":"af446d58-735f-4f02-a22e-60afd853bd93","savedPayload":{"position":{"x":17036.275331545603,"y":36704.46823053964},"targetPosition":{"x":17488.74490768187,"y":37303.70515775101},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"Scales' Best-Kept Secrets","config":"{\n \"subTitle\": \"Scales' Best-Kept Secrets\",\n \"gif\": \"\",\n \"image\": \"balance\",\n \"definition\": \"You just learned the basics about the three scales governing the charts, but there's more!\",\n \"paragraph1\": \"Remember I mentioned that a ->Time Machine-> may feature multiple charts from multiple exchanges and markets? There is no limit as to how you may visualize data in Superalgos, and scales play a major role in more complex configurations than the ones we are exploring at this point.\",\n \"callOut\": \"If you wish to learn all the details, feel free to go through the Scale Boxes section of the documentation.\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"https://docs.superalgos.org/suite-scale-boxes.html\" \n}","id":"79f7a1e7-b211-452c-b60f-61653fab957a","savedPayload":{"position":{"x":17312.619088228465,"y":36835.61427092308},"targetPosition":{"x":17488.74490768187,"y":37303.70515775101},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"tutorialTopics":[],"id":"7d8a4998-6575-4261-b37a-14c44956c4c8","savedPayload":{"position":{"x":17488.74490768187,"y":37303.70515775101},"targetPosition":{"x":17987.66345110895,"y":37266.358226672055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Topic","name":"Layers & Managers","config":"{ \n \"title\": \" \",\n \"summary\": \"\",\n \"gif\": \"\",\n \"image\": \"\",\n \"definition\": \"\",\n \"paragraph1\": \"\",\n \"callOut\": \"\",\n \"externalLink\": [\"\", \"\"],\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\", \n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\" \n }","tutorialSteps":[{"type":"Tutorial Step","name":"Switching Gears","config":"{\n \"subTitle\": \"Switching Gears...\",\n \"gif\": \"\",\n \"image\": \"layers-manager\",\n \"definition\": \"Leaving scales behind, let's take a look at how the system makes data available on the charts.\",\n \"paragraph1\": \"Every ->Timeline Chart-> has an associated ->Layers Manager->, which is represented as a drop-down menu listing multiple layers.\",\n \"callOut\": \"To open a layers manager, scroll the wheel of the mouse on its header. Use the wheel of the mouse to scroll through its content too!\",\n \"paragraph2\": \"See the video on the next step for clarity...\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Right\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\" \n}","id":"fdb608ad-eea0-42a7-abaa-adab5dfb7df5","savedPayload":{"position":{"x":17210.98284965842,"y":36927.3481014133},"targetPosition":{"x":17705.882308495926,"y":36852.93546458764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"GIF","config":"{\n \"gif\": \"welcome-charts-layer-managers-scroll\",\n \"position\": \"Right\",\n \"slider\": \"toBottom\"\n}","id":"8b9a4e1e-dc3a-4f4e-87c5-579f7cc04f55","savedPayload":{"position":{"x":17227.587453717922,"y":36704.691976515},"targetPosition":{"x":17705.882308495926,"y":36852.93546458764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"Layers on Top of Layers","config":"{\n \"subTitle\": \"Layers on Top of Layers\",\n \"gif\": \"\",\n \"image\": \"layer\",\n \"definition\": \"Your data mining operation features bots making data products. Each product is made available on the charts through a ->Layer-> in a layers manager.\",\n \"paragraph1\": \"The first layer manager to the left of this time machine features three layers. Those layers represent the data products that the ->Trading System-> we are going to test later on uses to make trading decisions.\",\n \"callOut\": \"To turn layers on and off, left-click on them!\",\n \"paragraph2\": \"\",\n \"note\": \"Superalgos ships with many more indicator bots, but we are not using them for this tutorial. You will learn about them later!\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Right\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\" \n}","id":"bf48b83f-67dc-4dc4-b6d1-23b94bc26b40","savedPayload":{"position":{"x":17338.961477683555,"y":36512.12767953261},"targetPosition":{"x":17705.882308495926,"y":36852.93546458764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"GIF","config":"{\n \"gif\": \"welcome-charts-layer-on\",\n \"position\": \"Right\",\n \"slider\": \"toBottom\"\n}","id":"9875e052-3270-49b1-8d63-7c1172fbeeae","savedPayload":{"position":{"x":17522.919910439818,"y":36386.7961852823},"targetPosition":{"x":17705.882308495926,"y":36852.93546458764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"The Hard Data","config":"{\n \"subTitle\": \"The Hard Data\",\n \"gif\": \"\",\n \"image\": \"plotter-panel\",\n \"definition\": \"A ->Plotter Panel-> features non-graphical representations of data, mostly in the form of numerical values or text.\",\n \"paragraph1\": \"Each layer may or may not feature one or more associated panels. It's up to the developer of the corresponding ->Indicator Bot-> to define them or not.\",\n \"callOut\": \"To access panels, left-click on the plotter panel icon of the layer of choice.\",\n \"paragraph2\": \"\",\n \"tip\": \"You may move layers managers and plotter panels by left-clicking on their headers and dragging them to any corner of the screen.\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Right\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\" \n}","id":"4f20424d-85a0-4dc4-afea-b611107942a5","savedPayload":{"position":{"x":17742.900041145484,"y":36353.62548762955},"targetPosition":{"x":17705.882308495926,"y":36852.93546458764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"GIF","config":"{\n \"gif\": \"welcome-charts-layer-panels\",\n \"position\": \"Right\",\n \"slider\": \"toBottom\"\n}","id":"d5ff12ca-f763-4291-846a-7dec3d9b1d4f","savedPayload":{"position":{"x":17955.71823713434,"y":36419.31004343566},"targetPosition":{"x":17705.882308495926,"y":36852.93546458764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"tutorialTopics":[],"id":"14ecf560-9e64-4af8-911e-317cc3cd397a","savedPayload":{"position":{"x":17705.882308495926,"y":36852.93546458764},"targetPosition":{"x":17987.66345110895,"y":37266.358226672055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"id":"78e702e2-fad8-4ae4-8341-8deb43c6cab8","savedPayload":{"position":{"x":17893.2503531337,"y":44629.53077688413},"targetPosition":{"x":18393.832462057886,"y":44629.24592314735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Topic","name":"Setup Overview","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[{"type":"Tutorial Step","name":"Back in Time","config":"{\n \"subTitle\": \"Back in Time\",\n \"gif\": \"\",\n \"image\": \"time-machine\",\n \"definition\": \"This is the ->Charting Space-> hierarchy setup of the ->Time Machine-> we've been playing with on the charts.\",\n \"paragraph1\": \"\",\n \"callOut\": \"Spend a few minutes exploring these definitions! Take a peek at different node's menus!\",\n \"paragraph2\": \"I hope the structure of nodes is intuitive enough to grasp how powerful the concept of the design space is. You set up a time machine by adding timeline charts nodes and the desired scales. Then set up layer managers and layers referencing the corresponding ->Data Mine Products-> so that the desired data becomes available on a particular layers manager on the charts. It's like the Legoland® of trading charts!\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Right\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"855e28cc-8651-4ad6-a8fa-bf792f170c57","savedPayload":{"position":{"x":18518.25751567298,"y":36350.56863754493},"targetPosition":{"x":18768.071251710393,"y":36784.12476715397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Time Machine","name":"Lightning Strike Backtesting Session My Computer","id":"499eac86-6c40-4362-a36a-5f2002081866"}}},{"type":"Tutorial Step","name":"Visual Scripting on Steroids","config":"{\n \"subTitle\": \"Visual Scripting on Steroids\",\n \"gif\": \"\",\n \"image\": \"indicator-bot\",\n \"definition\": \"Talking about block-building, we are now in the confines of the Masters ->Data Mine->. To your left, the definition of one of the bots you sent mining minutes ago.\",\n \"paragraph1\": \"Pretty much like with the Lego-like definitions of the ->Charting Space->, bots are too defined on a visual environment.\",\n \"callOut\": \"All developers need to code is the actual ->Data Building Procedure->.\",\n \"paragraph2\": \"Everything else is defined on a visual setting: processes with their dependencies, outputs and so on, and products, with their record and dataset definitions, etc.\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Right\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"2dfc697d-48b0-49bb-8760-3c3a76b56916","savedPayload":{"position":{"x":18864.352842047694,"y":36280.98090444851},"targetPosition":{"x":18768.071251710393,"y":36784.12476715397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Indicator Bot","name":"Resistances and Supports","id":"c037980d-d455-41a0-b058-2d7849ddf582"}}},{"type":"Tutorial Step","name":"Plotters Magic","config":"{\n \"subTitle\": \"Plotters Magic!\",\n \"gif\": \"\",\n \"image\": \"plotter\",\n \"definition\": \"And this is how plotters are built! Plotters create graphical representations of data... from candles, to everything else!\",\n \"paragraph1\": \"Again, visual scripting at its best! Plotters use stylized polygons made out of coordinate points to paint lines and shapes that represent data. Every layer made available on the charts is created with a set of definitions of the sort you are looking at right now. The particular case of the Resistances and Supports bot is a rather complex one, but does showcase the power of the tool!\",\n \"callOut\": \"Crawl your way up the branches of the Resistance Zone 5 ->Polygon-> (to the right) for a sneak peek of how this beauty was built!\",\n \"paragraph2\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"086416b2-3bf6-4e35-8e26-7e89dd75cf74","savedPayload":{"position":{"x":19201.264664441554,"y":36533.516679549204},"targetPosition":{"x":18768.071251710393,"y":36784.12476715397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Polygon","name":"Resistance Zone 5","id":"550e31bb-a95f-4fad-bfbb-b42aae7dc5d3"}}}],"tutorialTopics":[],"id":"2e9878b3-ebe5-48bb-8f97-2dfd8f6ac3e0","savedPayload":{"position":{"x":18037.413428617616,"y":44245.15186538368},"targetPosition":{"x":18393.832462057886,"y":44629.24592314735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"id":"6d0ab467-3134-4ba8-b37c-b3a9f5ba7638","savedPayload":{"position":{"x":18393.832462057886,"y":44629.24592314735},"targetPosition":{"x":18893.791666666664,"y":44629.094484167515},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Topic","name":"Backtesting","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[],"tutorialTopics":[{"type":"Tutorial Topic","name":"Network","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[{"type":"Tutorial Step","name":"Let's Do Some Testing!","config":"{\n \"subTitle\": \"Let's Do Some Testing!\",\n \"gif\": \"\",\n \"image\": \"testing-environment\",\n \"definition\": \"We are back on the ->Network-> hierarchy to show you one of the core strategy-testing resources built-in the ->Trading Bot->.\",\n \"paragraph1\": \"But before you run your first ->Backtesting Session->, let's go on a quick scouting mission to grasp how the ->Testing Environment-> is set up.\",\n \"callOut\": \"Expand the testing environment and look at the structure of nodes to the right... Looks Familiar?\",\n \"paragraph2\": \"Indeed! It resembles the ->Data Mining-> section: tasks are organized by exchange, market, and trading mine, so that you may test any number of strategies optimized for different markets, on multiple exchanges.\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"db2ed6a0-ba47-4caa-b2f2-78172f44a002","savedPayload":{"position":{"x":18454.84699581967,"y":36731.63389054326},"targetPosition":{"x":18936.202678815687,"y":36810.38371149428},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Testing Environment","name":"New Testing Environment","id":"5882d8a8-345b-4188-b1c1-797e9ff805d9"}}},{"type":"Tutorial Step","name":"Aim High, Trade Big!","config":"{\n \"subTitle\": \"Aim High, Trade Big!\",\n \"gif\": \"\",\n \"image\": \"network-node\",\n \"definition\": \"Picture an army of bots working with multiple exchanges, markets, and strategies, running on a network ala trading farm.\",\n \"paragraph1\": \"That is what the ->Network Node-> is about. What you've seen so far is running on your local machine. But...\",\n \"callOut\": \"Superalgos supports distributing tasks across networks of nodes running the backend to be processed in a coordinated fashion, enabling smart and scalable operations. Any machine running the GUI may control the enterprise!\",\n \"paragraph2\": \"You may set up a network with a few Raspberry Pi, an industrial-grade datacenter—or anything in between.\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"ff49ac75-5039-4f1f-9d05-826751b5e4e4","savedPayload":{"position":{"x":18531.3237678704,"y":36515.501615855064},"targetPosition":{"x":18936.202678815687,"y":36810.38371149428},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Network Node","name":"My Computer","id":"e452cf65-2b2b-44f2-9e67-bdd9d3c008e4"}}},{"type":"Tutorial Step","name":"Enough Digressing!","config":"{\n \"subTitle\": \"Enough Digressing!\",\n \"gif\": \"\",\n \"image\": \"backtesting-session\",\n \"definition\": \"We'll run a ->Backtesting Session-> with a bunch of preconfigured parameters so that you may have a quick glimpse at how simulations work.\",\n \"paragraph1\": \"As you can see to the right, a trading session has a reference to a ->Trading System->. That is, the ->Trading Bot-> will apply the rules of the referenced trading system to make decisions. There's also a reference to a ->Trading Engine->—a subject worth its own chapter, so I'll leave it for later! \",\n \"callOut\": \"The trading session is affected by several parameters. Take a quick look at their configurations selecting Configure on the menu!\",\n \"paragraph2\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\",\n \"positionAtReferenceParent\": true\n}","id":"57d77273-09c9-4800-acfd-148ebc9faf21","savedPayload":{"position":{"x":18732.650497282906,"y":36352.84966827805},"targetPosition":{"x":18936.202678815687,"y":36810.38371149428},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Backtesting Session","name":"Lightning Strike","id":"ce648922-fef2-44e3-8d76-2bd7ab72a29f"}}},{"type":"Tutorial Step","name":"What? When? How?","config":"{\n \"subTitle\": \"What? When? How?\",\n \"gif\": \"\",\n \"image\": \"parameters\",\n \"definition\": \"->Parameters-> determine key aspects of how the trading session is to run. Let's take a quick, superficial view...\",\n \"bulletListIntro\": \"\",\n \"bulletArray\": [\n [\n \"->Session Base Asset->:\",\n \" no capital is assigned in BTC.\"\n ],\n [\n \"->Session Quoted Asset->:\",\n \" 1000 USDT of initial capital.\"\n ],\n [\n \"->Time Range->:\",\n \" we'll test a single day, 2020-09-01.\"\n ],\n [\n \"->Time Frame->:\",\n \" orders are placed/canceled every minute, thus 01-min is appropriate.\"\n ],\n [\n \"->Slippage->:\",\n \"it's irrelevant for this case, as the trading system uses limit orders only.\"\n ],\n [\n \"->Fee Structure->:\",\n \"0.1% is the lower Binance tier.\"\n ]\n ],\n \"paragraph1\": \"The remaining parameters do not affect the simulation. To learn more about these ->Parameters->, take a look at the documentation.\",\n \"callOut\": \"\",\n \"paragraph2\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"https://julian-molina.github.io/Documentation/suite-parameters.html\"\n}","id":"0f48b2d4-48eb-4041-a9eb-4a257ca34fdd","savedPayload":{"position":{"x":18988.076928415405,"y":36312.42460340326},"targetPosition":{"x":18936.202678815687,"y":36810.38371149428},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"Ready. Set. Go!","config":"{\n \"subTitle\": \"Ready. Set. Go!\",\n \"gif\": \"\",\n \"image\": \"task\",\n \"definition\": \"Let's get going! This is going to be quick anyway, as we are testing a single day worth of historic data.\",\n \"paragraph1\": \"Running a trading task is quite similar to running a data mining task. The difference lies in that—after running the task—you also need to run the trading session.\",\n \"callOut\": \"Select Run on the ->Task-> menu and then select Run on the ->Backtesting Session-> menu.\",\n \"paragraph2\": \"\",\n \"note\": \"When the progress notice of the ->Trading Process Instance-> get's to the 100% mark, stop the task and click Next.\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n}","id":"eca826de-b47a-4589-80bc-0fcf17b4af98","savedPayload":{"position":{"x":19234.36642024111,"y":36414.04943134148},"targetPosition":{"x":18936.202678815687,"y":36810.38371149428},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Task","name":"Lightning Strike","id":"08222935-2499-4a3e-a927-4f5dfbc392df"}}}],"tutorialTopics":[],"id":"e3e4bbab-06a8-4ac2-945d-520d605c7c28","savedPayload":{"position":{"x":18048.752739323045,"y":44384.5893349171},"targetPosition":{"x":18540.446296048747,"y":44275.55173107869},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Topic","name":"On the Charts","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[],"tutorialTopics":[{"type":"Tutorial Topic","name":"Trading System & Orders","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[{"type":"Tutorial Step","name":"Getting to the Fun Bits","config":"{\n \"subTitle\": \"Getting to the Fun Bits!\",\n \"gif\": \"\",\n \"image\": \"time-machine\",\n \"definition\": \"I took the liberty of bringing you to a particular moment in time, interesting for what comes next.\",\n \"paragraph1\": \"You are about to be exposed to the beauty of simulations. Am I a simulation? Are you? Is this whole thing real?\",\n \"callOut\": \"Look around and decide for yourself!\",\n \"paragraph2\": \"First of all, notice you are now in the 1-minute time frame, thus, these are 1-minute candles. The span of time in your screen is little more than one hour, at the beginning of September 1st 2020.\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"keyPressedTimeMachineReferenceParent\": {\n \"shiftKey\": true,\n \"ctrlKey\": true,\n \"metaKey\": true,\n \"code\": \"\",\n \"key\": \"A\"\n },\n \"repositionAtTimeMachineReferenceParent\": true,\n \"batchConfigChangesReferenceParent\": [\n {\n \"nodePath\": \"referenceParent.timeScale\",\n \"properties\": {\n \"autoMinScale\": false,\n \"autoMaxScale\": false,\n \"fromDate\": \"2020-08-31T23:40:00.000Z\",\n \"toDate\": \"2020-09-01T01:00:00.000Z\"\n }\n },\n {\n \"nodePath\": \"referenceParent.rateScale\",\n \"properties\": {\n \"autoMinScale\": false,\n \"autoMaxScale\": false,\n \"minValue\": 11400,\n \"maxValue\": 11800\n }\n },\n {\n \"nodePath\": \"referenceParent.timeFrameScale\",\n \"properties\": {\n \"value\": \"01-min\"\n }\n }\n ],\n \"documentationURL\": \"\"\n}","id":"c3854cd2-deb1-42ea-83ae-e2db25c94b8f","savedPayload":{"position":{"x":17322.0136471372,"y":44493.55807517686},"targetPosition":{"x":17594.90066808223,"y":44074.07834295114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Time Machine","name":"Lightning Strike Backtesting Session My Computer","id":"499eac86-6c40-4362-a36a-5f2002081866"}}},{"type":"Tutorial Step","name":"What Is It We Are Testing?","config":"{\n \"subTitle\": \"What Is It We Are Testing?\",\n \"gif\": \"\",\n \"image\": \"trading-system\",\n \"definition\": \"We've run a backtest but we haven't discussed the ->Trading System-> we are testing! Let's go through the basics!\",\n \"paragraph1\": \"The trading idea is buy the falling knife and sell the rebound. The strategy places a ->Limit Buy Order-> a distance below the price. If the order is not filled by the next minute, the order is canceled and a new order is placed, potentially at an adjusted rate. If the price drops suddenly, chances are the order will get filled. If that happens, then the strategy tries to sell at a higher price.\",\n \"callOut\": \"\",\n \"paragraph2\": \" \",\n \"note\": \"Let's not discuss the merits of the trading idea but the implementation. This is a demo to show off the capacities of the ->Trading Bot->, not the strategy per se.\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\"\n}","id":"f8027526-427e-4ab8-b1b8-2b3d1662d5d5","savedPayload":{"position":{"x":17127.514143266206,"y":44253.26628744524},"targetPosition":{"x":17594.90066808223,"y":44074.07834295114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"Green Silver Bullets","config":"{\n \"subTitle\": \"Green Silver Bullets\",\n \"gif\": \"\",\n \"image\": \"bullet-limit-buy-order\",\n \"definition\": \"Do you see the green bullets with an L at the center? Those are the limit buy orders I mentioned.\",\n \"paragraph1\": \"Notice how an order is placed every minute and is canceled before a new order is placed. Do you recognize the symbol for the order cancellation? It's the smaller, darker bullet with a white horizontal stripe in the middle!\",\n \"callOut\": \"Notice the knife falling at 00:21 AM! The price fell well below the rate of the limit order, therefore, the order was filled! That is what the bigger—filled—green bullet indicates!\",\n \"paragraph2\": \"So... what happens afterward?\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"batchConfigChangesReferenceParent\": [\n {\n \"nodePath\": \"referenceParent.timeScale\",\n \"properties\": {\n \"autoMinScale\": false,\n \"autoMaxScale\": false,\n \"fromDate\": \"2020-08-31T23:40:00.000Z\",\n \"toDate\": \"2020-09-01T01:00:00.000Z\"\n }\n },\n {\n \"nodePath\": \"referenceParent.rateScale\",\n \"properties\": {\n \"autoMinScale\": false,\n \"autoMaxScale\": false,\n \"minValue\": 11400,\n \"maxValue\": 11800\n }\n },\n {\n \"nodePath\": \"referenceParent.timeFrameScale\",\n \"properties\": {\n \"value\": \"01-min\"\n }\n }\n ],\n \"documentationURL\": \"\"\n}","id":"c1622cba-b4f1-4bdd-adc5-d1f40045617f","savedPayload":{"position":{"x":17111.285725092963,"y":43944.759743073686},"targetPosition":{"x":17594.90066808223,"y":44074.07834295114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Time Machine","name":"Lightning Strike Backtesting Session My Computer","id":"499eac86-6c40-4362-a36a-5f2002081866"}}},{"type":"Tutorial Step","name":"Sell It Quick!","config":"{\n \"subTitle\": \"Sell It Quick!\",\n \"gif\": \"\",\n \"image\": \"bullet-limit-sell-order\",\n \"definition\": \"I'm sure you noted there are no more limit buy orders after the order got filled. Instead, sell orders start popping up!\",\n \"paragraph1\": \"\",\n \"callOut\": \"Notice how the first ->Limit Sell Order-> is placed at 00:22 AM, the minute after the buy order filled!\",\n \"paragraph2\": \"It's the same minute Superalgos would have gotten notice from the exchange that the order got filled. The ->Trading Bot-> connects with the exchange and goes through two distinct cycles. In the first ->Cycle->, it finds out the status of existing orders. In the second, it gives new instructions.\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\"\n}","id":"bc79cac7-40bc-4c9c-b33d-88757ebd89e0","savedPayload":{"position":{"x":17245.977449729566,"y":43709.48274357225},"targetPosition":{"x":17594.90066808223,"y":44074.07834295114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Time Machine","name":"Lightning Strike Backtesting Session My Computer","id":"499eac86-6c40-4362-a36a-5f2002081866"}}}],"tutorialTopics":[],"id":"3b4175ca-1cc8-4945-bccc-2b9c895ebbfb","savedPayload":{"position":{"x":17595.000390847712,"y":44073.84166966825},"targetPosition":{"x":18094.78231361018,"y":44047.9377260618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Topic","name":"Support","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[{"type":"Tutorial Step","name":"Shall We Dig Deeper?","config":"{\n \"subTitle\": \"Shall We Dig Deeper?\",\n \"gif\": \"\",\n \"image\": \"layer-resistance\",\n \"definition\": \"The logic behind the placing of buy orders is influenced by the Resistances & Supports ->Indicator Bot-> from the Masters ->Data Mine-> you ran earlier.\",\n \"paragraph1\": \"I took the liberty to turn the Supports layer on to show you this beauty... I hope you don't mind!\",\n \"callOut\": \"The indicator identifies levels (price ranges) on which price is rejected, and keeps a counter of how many rejections occur until the level is breached.\",\n \"paragraph2\": \"The way levels are represented on-screen varies with the number of rejections the level has witnessed, giving us a visual clue of how strong each support level may be. Once a level is breached, it disappears.\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"batchConfigChangesReferenceParent\": [\n {\n \"nodePath\": \"referenceParent.timeScale\",\n \"properties\": {\n \"autoMinScale\": false,\n \"autoMaxScale\": false,\n \"fromDate\": \"2020-08-31T23:00:00.000Z\",\n \"toDate\": \"2020-09-01T02:00:00.000Z\"\n }\n },\n {\n \"nodePath\": \"referenceParent.rateScale\",\n \"properties\": {\n \"autoMinScale\": false,\n \"autoMaxScale\": false,\n \"minValue\": 11400,\n \"maxValue\": 11800\n }\n },\n {\n \"nodePath\": \"referenceParent.timeFrameScale\",\n \"properties\": {\n \"value\": \"01-min\"\n }\n },\n {\n \"nodePath\": \"referenceParent.timelineCharts[0].layersManager\",\n \"properties\": {\n \"visibleLayers\": 3,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n }\n },\n {\n \"nodePath\": \"referenceParent.timelineCharts[0].layersManager.botLayers[1].layers[1]\",\n \"properties\": {\n \"status\": \"on\",\n \"showPanels\": false\n }\n }\n ],\n \"documentationURL\": \"\"\n}","id":"c2c01aaa-8d57-41de-8eca-30de64007320","savedPayload":{"position":{"x":17322.110329154428,"y":43654.40090035838},"targetPosition":{"x":17821.929771982217,"y":43628.4390538609},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Time Machine","name":"Lightning Strike Backtesting Session My Computer","id":"499eac86-6c40-4362-a36a-5f2002081866"}}},{"type":"Tutorial Step","name":"Who's Keeping Score?","config":"{\n \"subTitle\": \"Who's Keeping Score?\",\n \"gif\": \"\",\n \"image\": \"layer-resistance\",\n \"definition\": \"Check the table below and see if you can interpret the support levels you see on the charts. \",\n \"paragraph1\": \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Rejections  <\\/th>\\r\\n   Graphics  <\\/th>\\r\\n   Comments<\\/th>\\r\\n <\\/tr>\\r\\n <\\/thead>\\r\\n
1<\\/td>\\r\\n <\\/span><\\/td>\\r\\n   A faint, grey dotted line.<\\/td>\\r\\n <\\/tr>\\r\\n
2<\\/td>\\r\\n  <\\/span><\\/td>\\r\\n   A grey block.<\\/td>\\r\\n <\\/tr>\\r\\n
3<\\/td>\\r\\n  <\\/span><\\/td>\\r\\n   A turquoise block.<\\/td>\\r\\n <\\/tr>\\r\\n
4<\\/td>\\r\\n  <\\/span><\\/td>\\r\\n   A yellow block.<\\/td>\\r\\n <\\/tr>\\r\\n
5<\\/td>\\r\\n  <\\/span><\\/td>\\r\\n   A green block.<\\/td>\\r\\n <\\/tr>\\r\\n
6<\\/td>\\r\\n  <\\/span><\\/td>\\r\\n   An orange block.<\\/td>\\r\\n <\\/tr>\\r\\n
7 or more<\\/td>\\r\\n  <\\/span><\\/td>\\r\\n   A purple block.<\\/td>\\r\\n <\\/tr>\\r\\n <\\/tbody>\\r\\n <\\/table>\",\n \"paragraph2\": \"
For a new support level with one rejection, the dotted line marks the exact level on which price bounced. For further rejections, the blocks mark the rate ranges on which subsequent rejections are counted.\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\"\n}","id":"1b10ba0b-25e4-40e6-9298-fd0e060218c7","savedPayload":{"position":{"x":17375.98774411628,"y":43401.18678428934},"targetPosition":{"x":17821.929771982217,"y":43628.4390538609},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"The Power of Data Mining","config":"{\n \"subTitle\": \"The Power of Data Mining\",\n \"gif\": \"\",\n \"image\": \"layer-resistance\",\n \"definition\": \"Why do levels jump up and down? There's something I haven't told you yet, 'cos I'm afraid it may blow your mind!\",\n \"paragraph1\": \"\",\n \"callOut\": \"The bot keeps track of all support levels alive since the start of the dataset, but only shows you the five levels closest to the current price.\",\n \"paragraph2\": \"Keeping track of information for the whole span of the dataset—which may count years—is the true value of data mining, and the kind of things you wouldn't be able to calculate with a function, on the fly. The ->Plotter-> associated with the ->Indicator Bot-> dynamically shows the five levels of support closest to the price because those are the relevant levels for the context.\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\"\n}\n","id":"8019055c-dcbd-4f0c-a1be-715cf6512a09","savedPayload":{"position":{"x":17549.297837563205,"y":43208.70732098896},"targetPosition":{"x":17821.929771982217,"y":43628.4390538609},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"Find the Logic Challenge","config":"{\n \"subTitle\": \"Find the Logic Challenge!\",\n \"gif\": \"\",\n \"image\": \"layer-resistance\",\n \"definition\": \"Now that you know how the indicator works, can you find the relationship between buy orders and support levels?\",\n \"paragraph1\": \"\",\n \"callOut\": \"Take some time to explore the period of time tested looking for clues on how support levels determine the rate of the ->Limit Buy Order->!\",\n \"paragraph2\": \"It's fun noticing how new levels form when price changes direction, and how an established level changes color when price bounces-off it.\",\n \"tip\": \"But the trick lies in counting levels above the order!\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\"\n}","id":"1b6dc587-016b-4c65-9f8e-3e3e59ddc9b7","savedPayload":{"position":{"x":17795.596034086502,"y":43128.63291589612},"targetPosition":{"x":17821.929771982217,"y":43628.4390538609},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"Here's How It Works","config":"{\n \"subTitle\": \"Here's How it Works...\",\n \"gif\": \"\",\n \"image\": \"layer-resistance\",\n \"definition\": \"Got it? The ->Trading Bot-> places the ->Limit Buy Order-> at the fifth support level! What's the logic behind this?\",\n \"paragraph1\": \"It's sort of arbitrary, but the strategy defines a falling knife as the price action capable of breaching at least four support levels and getting to the fifth during a single minute. Statistically, such events—in this time frame—produce more bounces than continuations. They may be caused by large market orders that temporarily increase the bid/ask spread in the order book.\",\n \"callOut\": \"Take a minute to verify that buy orders are placed at the fifth support level!\",\n \"paragraph2\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\"\n}","id":"f9e682fd-3906-4dd4-ad44-9c4af0d8a632","savedPayload":{"position":{"x":18048.740796807728,"y":43182.454521090134},"targetPosition":{"x":17821.929771982217,"y":43628.4390538609},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"tutorialTopics":[],"id":"dbb272f3-27d5-4938-96a4-e5ee1b87bff2","savedPayload":{"position":{"x":17822.21090663398,"y":43628.28339415014},"targetPosition":{"x":18094.78231361018,"y":44047.9377260618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"id":"5e3deefe-2224-4b65-be4d-0b7ab311bd48","savedPayload":{"position":{"x":18094.78231361018,"y":44047.9377260618},"targetPosition":{"x":18540.446296048747,"y":44275.55173107869},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Topic","name":"Trading System","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[{"type":"Tutorial Step","name":"Come Meet Someone","config":"{\n \"subTitle\": \"Come Meet Someone!\",\n \"gif\": \"\",\n \"image\": \"execution-algorithm\",\n \"definition\": \"Sorry for dragging you away from the charts, but I wanted to introduce you to someone: the guy on the right is the one placing the buy orders!\",\n \"paragraph1\": \"We are inside the Lightning Strike ->Trading System->, within the definitions of the ->Open Stage->. In this stage, the ->Execution Algorithm-> takes over after the decision to take a position has already been made on the ->Trigger Stage->. I know you still don't know what a ->Situation-> or a ->Condition-> are, but I'd still like you to do something...\",\n \"callOut\": \"Take a few minutes to explore the nodes below the execution algorithm, check the formulas and conditions, and see what you can make of them!\",\n \"paragraph2\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\"\n}","id":"395d6137-6954-48d0-89d7-a41226d6c667","savedPayload":{"position":{"x":19400.217412411857,"y":36449.60858874119},"targetPosition":{"x":19510.573469233084,"y":36933.052289423926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Execution Algorithm","name":"Buy Orders","id":"e635ed9f-3c8c-45bf-8be0-e3836fa0844e"}}},{"type":"Tutorial Step","name":"Formulations","config":"{\n \"subTitle\": \"Formulations...\",\n \"gif\": \"\",\n \"image\": \"formula\",\n \"definition\": \"What you just went through is the definition of the ->Limit Buy Order-> that is placed and cancelled every minute until it gets filled.\",\n \"paragraph1\": \"This is the node that determines the rate of the limit order. Remember what we discussed earlier about placing the order at the rate of the fifth support level?\",\n \"callOut\": \"Go to the ->Formula-> attached to the ->Order Rate-> node and click Edit on the menu.\",\n \"paragraph2\": \"Well... that is how it's done! As you can see, the syntax is virtually self-explanatory! It involves defining the time frame, the indicator, and the indicator property involved.\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\"\n}","id":"f8c57877-6059-4c16-8dbe-18571d22d8ca","savedPayload":{"position":{"x":19665.91879671924,"y":36457.42473176237},"targetPosition":{"x":19510.573469233084,"y":36933.052289423926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Order Rate","name":"New Order Rate","id":"3ff96eb6-5965-4f82-98d4-cd23bf8d0369"}}},{"type":"Tutorial Step","name":"The Seller","config":"{\n \"subTitle\": \"The Seller\",\n \"gif\": \"\",\n \"image\": \"execution-algorithm\",\n \"definition\": \"We are now in the ->Close Stage->. I though it would be interesting to tell you more about execution algorithms, with another example.\",\n \"paragraph1\": \"An ->Execution Algorithm-> may handle multiple orders, of all types. In this case, multiple limit sell orders are defined.\",\n \"callOut\": \"Select Configure on the menu of the algorithm and reflect on the implications of this definition!\",\n \"paragraph2\": \"Both the open stage, where you define how to take a position, and the close stage, where you define how to exit, may feature multiple execution algorithms, each of them handling a certain amount of capital.\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Right\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\"\n}","id":"29fe5e28-80f8-4ca0-902b-5b8de961aeca","savedPayload":{"position":{"x":19882.649921265922,"y":36598.39018086119},"targetPosition":{"x":19510.573469233084,"y":36933.052289423926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Execution Algorithm","name":"Race to Break Even","id":"0fe764ce-3312-4964-9841-b55500e3f80a"}}},{"type":"Tutorial Step","name":"Simplifying Complexity","config":"{\n \"subTitle\": \"Simplifying Complexity\",\n \"gif\": \"\",\n \"image\": \"trading-system\",\n \"definition\": \"We haven't discussed trading systems as a framework, but a feature relevant to this explanation is that they may handle multiple strategies.\",\n \"paragraph1\": \"Each strategy features an ->Open Stage-> and a ->Close Stage->, each with its own execution definitions. Each stage may feature multiple execution algorithms, and each algorithm may handle multiple orders.\",\n \"callOut\": \"Do you see the pattern? We call it granularity. \",\n \"paragraph2\": \"Superalgos breaks down each issue to the minimum expression, and integrates the solutions. This is how it allows you to design, deploy, and manage both simple and the most complex trading setups you may envision.\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Right\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\"\n}","id":"4b24efc4-d836-4a22-9791-8f34fed6f6d2","savedPayload":{"position":{"x":20034.9669346752,"y":36797.6408586289},"targetPosition":{"x":19510.573469233084,"y":36933.052289423926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Trading Strategy","name":"My Trading Strategy","id":"711041eb-3055-4611-b64f-570363bae854"}}},{"type":"Tutorial Step","name":"Let's Take a Peek","config":"{\n \"subTitle\": \"Let's Take a Peek...\",\n \"gif\": \"\",\n \"image\": \"limit-sell-order\",\n \"definition\": \"Before we leave the trading system, let's take a quick look into one of these orders and see what may be of interest.\",\n \"paragraph1\": \"\",\n \"callOut\": \"Expand Profit 0.6 and check the formula of the ->Order Rate-> node.\",\n \"paragraph2\": \"Let's focus on this misterious bit of the formula:
tradingEngine.current.position.exitTargetRate.value

The formula is fetching the value of the ->Exit Target Rate->, defined elsewhere. Let's not focus and what this target rate may be. Instead, let's take a look at the mechanism by which a ->Trading System-> may have access to information processed by the ->Trading Bot->. \",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Right\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\"\n}","id":"66730e1d-6c7d-4af9-a053-b77d3c0c80a3","savedPayload":{"position":{"x":19986.4937190843,"y":37087.71203626196},"targetPosition":{"x":19510.573469233084,"y":36933.052289423926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Limit Sell Order","name":"Profit 0.6","id":"b80fe127-d306-4fc1-a3a8-95bf88de046f"}}}],"tutorialTopics":[],"id":"4a22546a-13ad-4d99-8309-9583c44d331a","savedPayload":{"position":{"x":18313.287318614694,"y":43829.600148277634},"targetPosition":{"x":18540.446296048747,"y":44275.55173107869},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Topic","name":"Trading Engine","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[{"type":"Tutorial Step","name":"Find the Node Challenge","config":"{\n \"subTitle\": \"Find the Node Challenge\",\n \"gif\": \"\",\n \"image\": \"trading-engine\",\n \"definition\": \"The ->Trading Engine-> administers the complexity entailed in automated trading by making information accessible to users and trading systems.\",\n \"paragraph1\": \"Rember my comments about granularity? Remember how the formula on the trading system fetched the value of the exit target rate? Here's a quick reminder:

tradingEngine.current.position.exitTargetRate.value\",\n \"callOut\": \"What if I told you that this string holds the path to that piece of information in the data structure of the ->Trading Engine-> hierarchy? Can you find the ->Exit Target Rate-> node? Expand the node and follow the breadcrumb trail!\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\"\n}","id":"1da79160-ab19-4a67-ad10-383158a5330c","savedPayload":{"position":{"x":18910.236951329134,"y":36375.28515925685},"targetPosition":{"x":19106.78637393252,"y":36835.74721863334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Trading Engine","name":"Low-Frequency","id":"eb20f622-71bf-4479-a574-d2320e1d4bd1"}}},{"type":"Tutorial Step","name":"Found It?","config":"{\n \"subTitle\": \"Found It?\",\n \"gif\": \"\",\n \"image\": \"copy-path\",\n \"definition\": \"This is how the ->Trading Engine-> makes every bit of information processed by the ->Trading Bot-> available to trading systems.\",\n \"paragraph1\": \"There is a path to every piece of data, and by knowing the path, you may access the data from within any ->Formula-> or ->Condition-> in a ->Trading Strategy->. Let's run a quick check:\",\n \"callOut\": \"Open the menu of the ->Exit Target Rate-> node to the left, and click Copy Node Path. Now, open a text editor and paste what you copied.\",\n \"paragraph2\": \"Ok! This is how formulas and conditions access the information... How about humans?\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Right\",\n \"slider\": \"toTop\",\n \"pressButton\": \"\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\"\n}","id":"ff08fcfb-7c33-4d70-9260-f960f4e1dd12","savedPayload":{"position":{"x":19129.274702347146,"y":36335.57217731544},"targetPosition":{"x":19106.78637393252,"y":36835.74721863334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Exit Target Rate","name":"New Exit Target Rate","id":"bc637b55-04bd-4701-9683-78593832cb09"}}},{"type":"Tutorial Step","name":"The Coolest Trick!","config":"{\n \"subTitle\": \"The Coolest Trick!\",\n \"gif\": \"\",\n \"image\": \"exit-target-rate\",\n \"definition\": \"Humans may access this information by using a cool trick that makes the charting space interact with the design space!\",\n \"bulletListIntro\": \"To use this trick, I just did the following:\",\n \"bulletArray\": [\n [\n \"Split the screen in half\",\n \" pulling the slider up so that we can see both spaces at the same time.\"\n ],\n [\n \"Turn on the Current Position layer\",\n \" on the Trading Engine layers manager. I chose this layer because it corresponds to this section of the hierarchy... tradingEngine.current.position... remember ?\"\n ]\n ],\n \"paragraph1\": \"\",\n \"callOut\": \"Now, slide the mouse pointer across the candles on which the position is taken and see what happens on the nodes to the left...\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Right\",\n \"slider\": \"toMiddle\",\n \"batchConfigChangesReferenceParent\": [\n {\n \"nodePath\": \"referenceParent.timeScale\",\n \"properties\": {\n \"autoMinScale\": false,\n \"autoMaxScale\": false,\n \"fromDate\": \"2020-08-31T23:40:00.000Z\",\n \"toDate\": \"2020-09-01T01:00:00.000Z\"\n }\n },\n {\n \"nodePath\": \"referenceParent.rateScale\",\n \"properties\": {\n \"autoMinScale\": false,\n \"autoMaxScale\": false,\n \"minValue\": 11000,\n \"maxValue\": 11800\n }\n },\n {\n \"nodePath\": \"referenceParent.timeFrameScale\",\n \"properties\": {\n \"value\": \"01-min\"\n }\n },\n {\n \"nodePath\": \"referenceParent.timelineCharts[1].layersManager\",\n \"properties\": {\n \"visibleLayers\": 3,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n }\n },\n {\n \"nodePath\": \"referenceParent.timelineCharts[1].layersManager.botLayers[0].layerFolders[0].layerFolders[2].layers[0]\",\n \"properties\": {\n \"status\": \"on\"\n }\n }\n ],\n \"documentationURL\": \"\"\n}","id":"2cc2befe-1858-4c96-a45c-52e3dbfa7384","savedPayload":{"position":{"x":19343.97061836935,"y":36394.84513213194},"targetPosition":{"x":19106.78637393252,"y":36835.74721863334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Time Machine","name":"Lightning Strike Backtesting Session My Computer","id":"499eac86-6c40-4362-a36a-5f2002081866"}}},{"type":"Tutorial Step","name":"GIF","config":"{\n \"gif\": \"welcome-backtesting-trading-engine-visualization-01\",\n \"position\": \"Right\",\n \"slider\": \"toMiddle\",\n \"positionAtReferenceParent\": true\n}","id":"0276fff4-493c-42c8-8d06-267a23646783","savedPayload":{"position":{"x":19511.71684671561,"y":36541.32367026914},"targetPosition":{"x":19106.78637393252,"y":36835.74721863334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Exit Target Rate","name":"New Exit Target Rate","id":"bc637b55-04bd-4701-9683-78593832cb09"}}},{"type":"Tutorial Step","name":"Feedback Loops","config":"{\n \"subTitle\": \"Feedback Loops\",\n \"gif\": \"\",\n \"image\": \"limit-buy-order\",\n \"definition\": \"Lets take a look at another example to let the notion of the constant feedback loop sink in before we move on!\",\n \"paragraph1\": \"This is the data structure where information about limit buy orders is kept.\",\n \"callOut\": \"Go to the Trading Engine layers manager on the charts (the second counting from the left). Scroll down and turn on the Limit Buy Orders layer. Now swipe the mouse pointer over a few of the buy orders and check the effect on the nodes on the design space.\",\n \"paragraph2\": \"Can you envision the implications of having this level of control over the data managed by the trading bot?\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Right\",\n \"slider\": \"toMiddle\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\"\n}","id":"f5c6cc94-ab96-4729-aa90-12c904c58066","savedPayload":{"position":{"x":19599.454772728794,"y":36745.84812660786},"targetPosition":{"x":19106.78637393252,"y":36835.74721863334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Rate","name":"New Rate","id":"1c848292-d64a-456f-b1b9-b9e4a387436e"}}},{"type":"Tutorial Step","name":"GIF","config":"{\n \"gif\": \"welcome-backtesting-trading-engine-visualization-02\",\n \"position\": \"Right\",\n \"slider\": \"toMiddle\",\n \"positionAtReferenceParent\": true\n}","id":"3169f747-4d89-463d-8307-aa7f7b4a4a62","savedPayload":{"position":{"x":19616.63029253556,"y":37004.2162260887},"targetPosition":{"x":19106.78637393252,"y":36835.74721863334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"tutorialTopics":[],"id":"9c34436a-f531-443a-bcd5-d69e352da251","savedPayload":{"position":{"x":18611.497846935807,"y":43805.6854730638},"targetPosition":{"x":18540.446296048747,"y":44275.55173107869},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"id":"9cf3ea6e-9edb-44ed-81ff-8a00886ce731","savedPayload":{"position":{"x":18540.446296048747,"y":44275.55173107869},"targetPosition":{"x":18893.791666666664,"y":44629.094484167515},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Topic","name":"Live Trading","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[],"tutorialTopics":[{"type":"Tutorial Topic","name":"Set Up & Run","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[{"type":"Tutorial Step","name":"Enough Chit Chat","config":"{\n \"subTitle\": \"Enough Chit Chat!\",\n \"gif\": \"\",\n \"image\": \"production-environment\",\n \"definition\": \"Ok, my friend... It's time for the real deal! Are you ready for a little ->Live Trading Session->?\",\n \"bulletListIntro\": \"I'll help you with the three main requirements:\",\n \"bulletArray\": [\n [\n \"Check your parameters,\",\n \" in particular, decide how much capital you wish to assign to the session.\"\n ],\n [\n \"Set up an ->Exchange Account Key->\",\n \" so that the app may access your account at the exchange.\"\n ],\n [\n \"Ensure a live data feed\",\n \", that is, the data mining operation with the indicators required by the ->Trading System-> must be running and up to date.\"\n ]\n ],\n \"paragraph1\": \"\",\n \"callOut\": \"To proceed with a ->Live Trading Session->, click Next.\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\"\n}","id":"8dfa9fdb-3591-4dbe-a865-0ef760ce9742","savedPayload":{"position":{"x":18151.272682972678,"y":36842.0484591931},"targetPosition":{"x":18646.621267607057,"y":36743.10774608528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Production Environment","name":"New Production Environment","id":"65a40d20-837c-4652-8356-f8054b4e1346"}}},{"type":"Tutorial Step","name":"Warning!","config":"{\n \"warning\": \"Superalgos is a piece of computer software. Like with any software, errors may occur at any point, including errors that may cause you to lose money. You are responsible for taking all precautions you may deem appropriate before trading live. Even if you take all possible precautionary measures, things may still go wrong and errors may occur. By using this software to trade live despite the warnings, you acknowledge that you are aware of the inherent risks in trading and in using software for that purpose. The Superalgos Project offers the software AS IS, with no explicit or implied warranties of any kind. The project, the software, the superalgos.org website, and this tutorial do not offer financial advice. Although the strategies shipping with the system may be fully functional, Superalgos does not make any express or implied recommendation as to how you should use them. We share strategies for educational purposes only. Trade under your responsibility and at your own risk. The use of the software is subject to the terms of the LICENSE.\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\"\n}","id":"1ad5babb-40d3-48f4-a784-5c2ea0e6b171","savedPayload":{"position":{"x":18149.116172849153,"y":36690.1732869149},"targetPosition":{"x":18646.621267607057,"y":36743.10774608528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"Let's Start With 20 Bucks!","config":"{\n \"subTitle\": \"Let's Start With 20 Bucks!\",\n \"gif\": \"\",\n \"image\": \"session-quoted-asset\",\n \"definition\": \"The default initialBalance is set to 20 USDT, which ensures we are above the minimum transaction amount supported by Binance.\",\n \"paragraph1\": \"The initialBalance is defined in the configuration of the ->Session Quoted Asset->.\",\n \"callOut\": \"Check that the above is the case and decide for yourself if you wish to change it.\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"important\": \"Make sure you have at least 20 USDT at the exchange! The ->Trading Bot-> will place one limit order for 20 USDT, and cancel it the next minute in case it is not filled, as explained earlier.\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\"\n}","id":"04b09505-d781-4d1f-8686-57eb3a0cf95c","savedPayload":{"position":{"x":18189.71414351859,"y":36539.037133627135},"targetPosition":{"x":18646.621267607057,"y":36743.10774608528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Session Quoted Asset","name":"","id":"f6cd46c1-66df-422c-82d4-02ac8e37f689"}}},{"type":"Tutorial Step","name":"Enjoy the Outdoors!","config":"{\n \"subTitle\": \"Enjoy the Outdoors!\",\n \"gif\": \"\",\n \"image\": \"crypto-ecosystem\",\n \"definition\": \"I believe you haven't visited the ->Crypto Ecosystem-> hierarchy, right? This is where you configure which exchanges and markets you wish to work with...\",\n \"paragraph1\": \"... among other things, such as your accounts with those exchanges, your API keys, your assets, and so on.\",\n \"callOut\": \"Why don't you take a little walk and I'll catch up with you in the next step?\",\n \"paragraph2\": \"\",\n \"tip\": \"Just look around... enjoy the views...\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\"\n}","id":"ff963975-de14-44e0-a552-44b29644a938","savedPayload":{"position":{"x":18275.057980918613,"y":36407.74506356766},"targetPosition":{"x":18646.621267607057,"y":36743.10774608528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Crypto Ecosystem","name":"My Crypto Ecosystem","id":"7217b56c-e854-4c06-8b8a-d5d3c05a153d"}}},{"type":"Tutorial Step","name":"Your Keys, Your Coins!","config":"{\n \"subTitle\": \"Your Keys, Your Coins!\",\n \"gif\": \"\",\n \"image\": \"exchange-account-key\",\n \"definition\": \"This is where you configure your ->Exchange Account Key-> for the Lightning Strike ->Live Trading Session->.\",\n \"paragraph1\": \"\",\n \"callOut\": \"Open the configuration and carefully enter the API name or label and the API secret key.\",\n \"paragraph2\": \"Delete the default text string for each parameter first, so that no foreign character gets mixed up with the keys.\",\n \"note\": \"In the future, when you get to run multiple live sessions at the same time, you will need to set up one ->Exchange Account Key-> per session. This is a requirement in most exchanges.\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\"\n}","id":"a36187cc-415e-424b-8275-352f953552f8","savedPayload":{"position":{"x":18396.720160624332,"y":36309.165434983646},"targetPosition":{"x":18646.621267607057,"y":36743.10774608528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Exchange Account Key","name":"Key for Lighting Strike","id":"e85bbbd6-aca8-450f-9237-788062de5761"}}},{"type":"Tutorial Step","name":"Fire Up the Machine!","config":"{\n \"subTitle\": \"Fire Up the Machine!\",\n \"gif\": \"\",\n \"image\": \"data-mining\",\n \"definition\": \"Now it's time to fire up your ->Data Mining-> operation.\",\n \"paragraph1\": \"\",\n \"callOut\": \"Select Run All Exchange Data Tasks on the menu.\",\n \"paragraph2\": \"We'll give it a few minutes to catch up with the present time. Remember, all indicators must get to 100% before we can start trading!\",\n \"tip\": \"If you're getting a bit anxious, feel free to go down the ->Data Mining-> section and check the status of the process instances!\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\"\n}","id":"87824465-1fda-4f6a-bb4f-31f6d7f77268","savedPayload":{"position":{"x":18542.880762064968,"y":36253.07819241989},"targetPosition":{"x":18646.621267607057,"y":36743.10774608528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Data Mining","name":"New Data Mining","id":"4df1cb4e-b9ca-4f62-bb5f-c7e262aaa22a"}}},{"type":"Tutorial Step","name":"Are We Ready Yet?","config":"{\n \"subTitle\": \"Are We Ready Yet?\",\n \"gif\": \"\",\n \"image\": \"indicator-process-instance\",\n \"definition\": \"Resistances and Supports Multi-Period-Daily to the left is the last of the process to finish.\",\n \"paragraph1\": \"If this process is at 100%, then we are ready to go.\",\n \"callOut\": \"\",\n \"paragraph2\": \"\",\n \"note\": \"Either way, nothing catastrophic happens if you attempt to run a ->Live Trading Session-> when the required indicators are not up to date. There would be an error, and you'd be notified of the reason. So, no big deal!\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Right\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\"\n}","id":"f05ce10a-6ccd-4910-9373-8f3d211fe390","savedPayload":{"position":{"x":18699.063491628538,"y":36244.93142289231},"targetPosition":{"x":18646.621267607057,"y":36743.10774608528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Daily","id":"c5395fbe-4b5a-4492-a7fb-e2d259905e27"}}},{"type":"Tutorial Step","name":"Let's Do this!","config":"{\n \"subTitle\": \"Let's Do This!\",\n \"gif\": \"\",\n \"image\": \"live-trading-session\",\n \"definition\": \"We've gone through the 3-point checklist and we are ready to go, so let's get on with it!\",\n \"paragraph1\": \"\",\n \"callOut\": \"Run the Lightning Strike ->Task->, and then run the Lightning Strike ->Live Trading Session-> to the right!\",\n \"paragraph2\": \"\",\n \"note\": \"Once you run the session, the trading bot may have to wait up to 60 seconds for the last indicator to finish processing. Once it does, you will see the current date and a 0% progress notice under the ->Trading Process Instance->, which will remain like that throughout the run.\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\"\n}","id":"ba33c98c-dc22-408d-8206-c173344cdb24","savedPayload":{"position":{"x":18850.462373841467,"y":36285.5831070938},"targetPosition":{"x":18646.621267607057,"y":36743.10774608528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Task","name":"Lightning Strike","id":"c8492c4a-a7a7-4a80-a25a-a610377e6180"}}},{"type":"Tutorial Step","name":"GIF","config":"{\n \"gif\": \"welcome-live-trading-process-progress\",\n \"position\": \"Left\",\n\"positionAtReferenceParent\": true,\n \"slider\": \"toTop\"\n}","id":"bd2e54f6-f3ca-4bf7-a453-b2a2ce55e65c","savedPayload":{"position":{"x":18982.00116780749,"y":36371.20811973339},"targetPosition":{"x":18646.621267607057,"y":36743.10774608528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Trading Process Instance","name":"Low Frequency Trading","id":"4d7e7fa0-afcb-4b2f-983b-ceacea91b29d"}}}],"tutorialTopics":[],"id":"8f866187-280e-4e87-b871-41dc645fd412","savedPayload":{"position":{"x":18651.616700251197,"y":43671.04639384764},"targetPosition":{"x":18894.078796021226,"y":44128.98447307867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Topic","name":"Monitoring","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[{"type":"Tutorial Step","name":"Check Your Console!","config":"{\n \"subTitle\": \"Check Your Console!\",\n \"gif\": \"\",\n \"image\": \"trading-process-instance\",\n \"definition\": \"If you don't see any errors on the ->Trading Process Instance->, chances are everything is working fine!\",\n \"paragraph1\": \"However, you may want to take a look at your console application and see if you notice anything out of the norm.\",\n \"callOut\": \"Take a look at your console app!\",\n \"paragraph2\": \"\",\n \"note\": \"You should be able to see the alternating executions of the Candles-Volumes and Resistances-And-Support indicators, with the Low-Frequency ->Trading Bot->\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\"\n}","id":"036556c5-b0bd-494a-bec2-bd7413506475","savedPayload":{"position":{"x":18894.33004087129,"y":43262.26755031533},"targetPosition":{"x":19144.249510366495,"y":43695.83851699316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"GIF","config":"{\n \"gif\": \"welcome-live-trading-console\",\n \"position\": \"Left\",\n \"slider\": \"toTop\"\n}","id":"2708d375-3245-455d-85d2-b164ab3ba86f","savedPayload":{"position":{"x":19144.33154604035,"y":43195.306320067524},"targetPosition":{"x":19144.249510366495,"y":43695.83851699316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"Is It Working?","config":"{\n \"subTitle\": \"Is It Working?\",\n \"gif\": \"\",\n \"image\": \"binance\",\n \"definition\": \"The unequivocal way to verify things are working fine is logging on to Binance and checking your order history for BTC/USDT.\",\n \"paragraph1\": \"\",\n \"callOut\": \"Go to Binance and take a look at what's going on!\",\n \"paragraph2\": \"\",\n \"note\": \"At any point in time, you should see one open order and a number of canceled orders pilling up in your order history, pretty much like in the video on the next step!\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\"\n}","id":"8f6913ec-257f-49ba-bdbb-dcd43e5fe727","savedPayload":{"position":{"x":19394.494588705675,"y":43262.38996809292},"targetPosition":{"x":19144.249510366495,"y":43695.83851699316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"GIF","config":"{\n \"gif\": \"welcome-live-trading-binance-orders\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"changeNodeConfigWithEvalReferenceParent\": {\n \"autoMinScale\": false,\n \"autoMaxScale\": false,\n \"fromDate\": \"(new Date((new Date()).valueOf() - 60000 * 120)).toISOString()\",\n \"toDate\": \"(new Date((new Date()).valueOf() + 60000 * 120)).toISOString()\"\n }\n}","id":"9a3be7a3-9fe8-4d58-a84c-abd59c43e7f2","savedPayload":{"position":{"x":19577.647181258162,"y":43445.53920116535},"targetPosition":{"x":19144.249510366495,"y":43695.83851699316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Time Scale","name":"New Time Scale","id":"708c5a9f-a995-4210-aaaf-0794782f0e9e"}}},{"type":"Tutorial Step","name":"Monitor the Fun Way","config":"{\n \"subTitle\": \"Monitoring the Fun Way!\",\n \"gif\": \"\",\n \"image\": \"bullet-limit-buy-order\",\n \"definition\": \"You thought we would let you monitor the ->Live Trading Session-> watching the ugly list of orders at the exchange? No way!\",\n \"paragraph1\": \"Superalgos produces the same kind of simulations you love for live sessions too, in realtime!\",\n \"callOut\": \"Can you see the first few buy orders on the chart?\",\n \"paragraph2\": \"\",\n \"note\": \"Notice that the ->Time Scale-> is set to automatic mode on the right-hand side to glue the current candle to the right border of the screen. The ->Rate Scale-> is automatic on both ends. Feel free to change those to your liking.\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\",\n \"repositionAtTimeMachineReferenceParent\": true,\n \"batchConfigChangesReferenceParent\": [\n {\n \"nodePath\": \"referenceParent.rateScale\",\n \"properties\": {\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n }\n },\n {\n \"nodePath\": \"referenceParent.timeFrameScale\",\n \"properties\": {\n \"value\": \"01-min\"\n }\n }\n ]\n}","id":"d84be58b-a1c7-4504-89aa-f98efe132c30","savedPayload":{"position":{"x":19644.70725474376,"y":43695.77846722921},"targetPosition":{"x":19144.249510366495,"y":43695.83851699316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Time Machine","name":"Lightning Strike Live Trading Session My Computer","id":"cc1fcc1e-81de-4011-8e59-c37ebe32ecf7"}}}],"tutorialTopics":[],"id":"03e5e234-40eb-4fbe-8df3-95a40f1b34ea","savedPayload":{"position":{"x":19144.38873000197,"y":43695.62703466544},"targetPosition":{"x":18894.078796021226,"y":44128.98447307867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"id":"8f829077-b2bd-4747-a01d-762f35b3a070","savedPayload":{"position":{"x":18894.078796021226,"y":44128.98447307867},"targetPosition":{"x":18893.791666666664,"y":44629.094484167515},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Topic","name":"The End","config":"{\n \"position\": \"Left\",\n \"pressButton\": \"Next\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[{"type":"Tutorial Step","name":"What's Next?","config":"{\n \"subTitle\": \"What's Next?\",\n \"gif\": \"\",\n \"image\": \"bullet-info\",\n \"definition\": \"There are tons of things we haven't covered yet, I know! Just look around! So much stuff to see! It's mind-boggling.\",\n \"paragraph1\": \"I'm sure you still have tons of questions floating in your head... How do I build my own strategies? How do I measure performance? How do I build an indicator? How do I deploy a trading farm? How may I integrate with TradingView? How do I set up Telegram announcements? Don't worry! You'll get there my friend... you'll just have to do some reading!\",\n \"callOut\": \"\",\n \"paragraph2\": \"\",\n \"tip\": \"In the meantime, remember to stop your live session and data mining when you no longer need them running, and especially before closing the backend.\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\"\n}","id":"06efb824-f003-4a3c-8323-549a6427d83e","savedPayload":{"position":{"x":19377.772686222084,"y":43792.651442330716},"targetPosition":{"x":19247.752701769314,"y":44275.60166052519},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"This Is The End","config":"{\n \"subTitle\": \"This Is The End!\",\n \"gif\": \"\",\n \"image\": \"close-stage-event\",\n \"definition\": \"Ok, my friend, this is the end! I hope you've enjoyed the show and that I've managed to get you hooked to Superalgos!\",\n \"paragraph1\": \"There's no doubt in my mind that you haven't seen anything like Superalgos before. As you may now figure, Superalgos is a vast system and keeps growing by the hour. The community behind the project has a very ambitious vision and is determined to make it a reality.

I hope we can count on your help once you start using the system! Superalgos is a community project, and we need your help to keep it open-source and free!\",\n \"callOut\": \"Check the documentation and \",\n \"externalLink\": [\n \"join the community!\",\n \"https://t.me/superalgoscommunity\"\n ],\n \"paragraph2\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\"\n}","id":"708b6ed8-28ac-41c8-bf4f-7c1cec6af6a3","savedPayload":{"position":{"x":19731.324808665206,"y":44146.217273429946},"targetPosition":{"x":19247.752701769314,"y":44275.60166052519},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"tutorialTopics":[],"id":"fcea7b25-5a13-40e6-a92f-9c530b8a7476","savedPayload":{"position":{"x":19247.801507723423,"y":44275.45947450139},"targetPosition":{"x":18893.791666666664,"y":44629.094484167515},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"id":"6f36f540-8de9-4458-b2c7-875884121b87","savedPayload":{"position":{"x":18893.791666666664,"y":44629.094484167515},"targetPosition":{"x":18893.791666666664,"y":44629.094484167515},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isPlaying":true,"isRunning":false},"tutorial":{"status":"Done"}}},{"type":"Tutorial","name":"Install a New Market","config":"{\n \"title\": \"Install a New Market\",\n \"summary\": \"\",\n \"subTitle\": \"\",\n \"gif\": \"\",\n \"image\": \"market\",\n \"definition\": \"This tutorial walks you through the process of setting up a new ->Market-> on which to run data mining and trading operations.\",\n \"bulletListIntro\": \"Setting up a new Market involves:\",\n \"bulletArray\": [\n [\n \"1. Adding the assets \",\n \"for the exchange of choice.\"\n ],\n [\n \"2. Setting up a market \",\n \"with the said assets.\"\n ],\n [\n \"3. Installing the market\",\n \"\"\n ]\n ],\n \"paragraph1\": \"Let's get on with it!\",\n \"callOut\": \"When you click the Next button below, you will go to the ->Exchange Assets-> node under Binance, in the ->Crypto Ecosystem-> hierarchy.\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[],"tutorialTopics":[{"type":"Tutorial Topic","name":"Add the Assets","config":"{\n \"title\": \"Add the Assets\",\n \"summary\": \"\",\n \"gif\": \"\",\n \"image\": \"asset\",\n \"definition\": \"If the assets you wish to work with are not listed under ->Exchange Assets->, you must add and configure them first.\",\n \"paragraph1\": \"\",\n \"callOut\": \"In this section of the tutorial, you will learn to define which assets you may want to work with.\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"Each exchange may list hundreds of assets, however, you will likely be interested in just a few. Some automated operations may feed on your definitions, so keeping them free of junk is always a good idea.\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\"\n}","tutorialSteps":[{"type":"Tutorial Step","name":"New Tutorial Step","config":"{\n \"title\": \"Add the Assets\",\n \"summary\": \"\",\n \"subTitle\": \"Step 1: Add Nodes\",\n \"gif\": \"\",\n \"image\": \"exchange-assets\",\n \"definition\": \"Open the ->Exchange Assets-> node menu and use the Add Asset button to add the required assets.\",\n \"paragraph1\": \"\",\n \"callOut\": \"\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"Assets under Exchange Assets may not be duplicated. If the definitions for the assets you are interested in already exist, you may reuse them instead of creating new ones. If such is the case, simply skip the next few steps until you need to set up the ->Market->.\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\"\n}","id":"1b3b8d0e-3aa9-4aba-8b74-351647a3b5b5","savedPayload":{"position":{"x":25806.74622643583,"y":44283.6114026464},"targetPosition":{"x":25452.976661117904,"y":44637.291552450784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"New Tutorial Step","config":"{\n \"title\": \"Add the Assets\",\n \"summary\": \"\",\n \"subTitle\": \"Step 2: Configure Assets\",\n \"gif\": \"\",\n \"image\": \"asset\",\n \"definition\": \"Edit the configuration of each of the new assets entering the ticker (as listed by the exchange) in the codeName property. For example: 'codeName': 'ETH'\",\n \"paragraph1\": \"\",\n \"callOut\": \"\",\n \"externalLink\": [\n \"\",\n \"\"\n ],\n \"paragraph2\": \"\",\n \"note\": \"If the icon for the configured assets exist in the image library, the default icon is replaced automatically.\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\"\n}","id":"05f7092a-2326-40e7-b618-f3be5523e670","savedPayload":{"position":{"x":25953.29181755802,"y":44637.28585791704},"targetPosition":{"x":25452.976661117904,"y":44637.291552450784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"New Tutorial Step","config":"{\n \"title\": \"Add the Assets\",\n \"summary\": \"\",\n \"subTitle\": \"Step 3: Label Nodes\",\n \"gif\": \"\",\n \"image\": \"asset\",\n \"definition\": \"Label the assets with the descriptive name of the coin or token, for ease of use. For example: Ether.\",\n \"paragraph1\": \"\",\n \"callOut\": \"\",\n \"externalLink\": [\n \"\",\n \"\"\n ],\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"Keeping a tidy ->Workspace-> with proper labels for significant nodes helps in managing large operations and administering complexity.\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\"\n}","id":"281274f1-a4ec-47a2-b97c-0c29aa71eed9","savedPayload":{"position":{"x":25807.083074038655,"y":44990.51769797708},"targetPosition":{"x":25452.976661117904,"y":44637.291552450784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"tutorialTopics":[],"id":"cd6f2f74-407e-46c9-b7de-95d9ab2cc82d","savedPayload":{"position":{"x":25452.976661117904,"y":44637.291552450784},"targetPosition":{"x":24952.875,"y":44637.3202247191},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Exchange Assets","name":"New Exchange Assets","id":"95d2c30f-215b-486e-8119-f4eac0279575"}}},{"type":"Tutorial Topic","name":"Set up the Market","config":"{ \n \"title\": \"Set Up the Market\",\n \"summary\": \"\",\n \"gif\": \"\",\n \"image\": \"market\",\n \"definition\": \"If there is no ->Market-> set up with the pair you wish to work with under ->Exchange Markets->, you must set up the market definition before installing it.\",\n \"paragraph1\": \"\",\n \"callOut\": \"The next few steps teach you how to set up the market so that you may later install it.\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"Make sure that the combination of base and quoted assets that you wish to define as a market in Superalgos exists as a market listed at the exchange.\",\n \"warning\": \"\", \n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\" \n }","tutorialSteps":[{"type":"Tutorial Step","name":"New Tutorial Step","config":"{\n \"title\": \"Set Up the Market\",\n \"summary\": \"\",\n \"subTitle\": \"Step 1: Add Market\",\n \"gif\": \"\",\n \"image\": \"market\",\n \"definition\": \"Add a new Market node using the Add Market option on the menu.\",\n \"paragraph1\": \"A Market node is added featuring two offspring: a ->Market Base Asset-> and a ->Market Quoted Asset->.\",\n \"callOut\": \"\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"Before continuing, make sure which is the base and which the quoted asset in the exchange's listing. Usually, the base asset is the first in the name of the pair, but this is not enforced on every exchange, so be vigilant.\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\"\n}","id":"cae5ddd4-0c48-488d-86f7-38192c7fdbca","savedPayload":{"position":{"x":25700.074654477285,"y":45123.0726775112},"targetPosition":{"x":25202.812579386053,"y":45070.41037869994},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"New Tutorial Step","config":"{\n \"title\": \"Set Up the Market\",\n \"summary\": \"\",\n \"subTitle\": \"Step 2: Reference Base A.\",\n \"gif\": \"\",\n \"image\": \"asset\",\n \"definition\": \"Establish a reference from the ->Market Base Asset-> node in the Market you just defined to the corresponding ->Asset-> node defined under Exchange Assets.\",\n \"paragraph1\": \"\",\n \"callOut\": \"\",\n \"paragraph2\": \"\",\n \"note\": \"If you are not familiar with establishing references, please read about the topic in the documentation.\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"https://docs.superalgos.org/suite-how-to-remove-and-establish-references.html\"\n}","id":"a7a049cb-72e0-4d76-9247-ee0d873e79c8","savedPayload":{"position":{"x":25574.535001819924,"y":45405.272089936414},"targetPosition":{"x":25202.812579386053,"y":45070.41037869994},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"New Tutorial Step","config":"{\n \"title\": \"Set Up the Market\",\n \"summary\": \"\",\n \"subTitle\": \"Step 3: Reference Quoted A.\",\n \"gif\": \"\",\n \"image\": \"asset\",\n \"definition\": \"Now establish a reference from the ->Market Quoted Asset-> node in the Market you just defined to the corresponding ->Asset-> node defined under Exchange Assets.\",\n \"paragraph1\": \"\",\n \"callOut\": \"\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\"\n}","id":"9710d88d-c4ae-406b-9079-31bcf7395817","savedPayload":{"position":{"x":25306.773966770266,"y":45559.81647184133},"targetPosition":{"x":25202.812579386053,"y":45070.41037869994},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"New Tutorial Step","config":"{\n \"title\": \"Set Up the Market\",\n \"summary\": \"\",\n \"subTitle\": \"Step 4: Label the Market\",\n \"gif\": \"\",\n \"image\": \"market\",\n \"definition\": \"Label the Market with the ticker names corresponding to the Market Base Asset and the Market Quoted Asset, just like the exchange listing. For example: ETH/USDT.\",\n \"paragraph1\": \"\",\n \"callOut\": \"\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"Keeping a tidy ->Workspace-> with proper labels for significant nodes helps in managing large operations and administering complexity.\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\"\n}","id":"2d2ce361-6261-44b4-b7ff-466035934334","savedPayload":{"position":{"x":24999.45113888312,"y":45527.486835046875},"targetPosition":{"x":25202.812579386053,"y":45070.41037869994},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"tutorialTopics":[],"id":"4de3cd7d-f552-4f39-b4cd-e29269b64668","savedPayload":{"position":{"x":25202.812579386053,"y":45070.41037869994},"targetPosition":{"x":24952.875,"y":44637.3202247191},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Exchange Markets","name":"New Exchange Markets","id":"2fd80894-900e-44ac-a1a7-56c14124f7a1"}}},{"type":"Tutorial Topic","name":"Install the Market","config":"{\n \"title\": \"Install the Market\",\n \"summary\": \"Now that the Market is set up, installing it is just a click away.\",\n \"subTitle\": \"Single Step: Install\",\n \"gif\": \"\",\n \"image\": \"market\",\n \"definition\": \"Click the Install Market button on the ->Market-> node you just finished setting up.\",\n \"paragraph1\": \"\",\n \"callOut\": \"\",\n \"paragraph2\": \"\",\n \"note\": \"The Install Market function sets up many data structures in the local ->Network Node-> and in the ->Charting Space->. The next few steps in the tutorial will help you get familiar with the installation.\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[],"tutorialTopics":[],"id":"e003540b-91f4-41ce-8082-45122ddb55e7","savedPayload":{"position":{"x":24702.80624850437,"y":45070.49479561351},"targetPosition":{"x":24952.875,"y":44637.3202247191},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Topic","name":"Network Verification","config":"{\n \"title\": \"Network Verification\",\n \"summary\": \"\",\n \"subTitle\": \"\",\n \"gif\": \"\",\n \"image\": \"network-node\",\n \"definition\": \"The Install Market function sets up many data structures in the local ->Network Node->. \",\n \"paragraph1\": \"In the next few steps, you will verify that each of the expected data structures was created successfully. The expected structures are:\",\n \"callOut\": \"1. ->Data Mining-> tasks for all data mines included in your workspace.

2. Backtesting and live trading tasks for all included trading systems.

3. The corresponding ->Data Storage-> definitions.\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\"\n}","tutorialSteps":[{"type":"Tutorial Step","name":"New Tutorial Step","config":"{\n \"title\": \"Network Verification\",\n \"subTitle\": \"Step 1: Verify Data Mining\",\n \"gif\": \"\",\n \"image\": \"data-mining\",\n \"definition\": \"Verify that the ->Data Mining-> tasks for the corresponding Market were created successfully.\",\n \"bulletListIntro\": \"Look for the following data structures:\",\n \"bulletArray\": [\n [\n \"A ->Market Data Tasks-> node\",\n \" for the new market.\"\n ],\n [\n \"One ->Data Mine Tasks-> node\",\n \" for each Data Mine included in the Workspace.\"\n ],\n [\n \"One ->Task Manager-> per ->Data Mine->\",\n \" and one ->Task-> for each bot defined in each data mine.\"\n ]\n ],\n \"paragraph1\": \"\",\n \"callOut\": \"\",\n \"externalLink\": [\n \"\",\n \"\"\n ],\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\"\n}","id":"4bca0860-329c-4fde-a11e-d404d0f23431","savedPayload":{"position":{"x":24158.696029335413,"y":45041.99841093917},"targetPosition":{"x":24452.794871212405,"y":44637.32193533236},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"New Tutorial Step","config":"{\n \"title\": \"Network Verification\",\n \"subTitle\": \"Step 2: Verify Testing Env.\",\n \"gif\": \"\",\n \"image\": \"testing-environment\",\n \"definition\": \"Verify that the ->Testing Environment-> tasks for the corresponding ->Market-> were created successfully.\",\n \"bulletListIntro\": \"Look for the following data structures:\",\n \"bulletArray\": [\n [\n \"A ->Market Trading Tasks-> node\",\n \" for the new market.\"\n ],\n [\n \"One ->Trading Mine Tasks-> node\",\n \" for each trading mine included in the Workspace.\"\n ],\n [\n \"One ->Task Manager-> per trading mine and one ->Task-> with a ->Backtesting Session->\",\n \" for each ->Trading System-> in the workspace.\"\n ]\n ],\n \"paragraph1\": \"\",\n \"callOut\": \"\",\n \"externalLink\": [\n \"\",\n \"\"\n ],\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\"\n}","id":"495e3d4c-87a8-4147-ad2a-06920da9d7a6","savedPayload":{"position":{"x":23976.94609855476,"y":44791.83617884339},"targetPosition":{"x":24452.794871212405,"y":44637.32193533236},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"New Tutorial Step","config":"{\n \"title\": \"Network Verification\",\n \"subTitle\": \"Step 3: Verify Prod. Env.\",\n \"gif\": \"\",\n \"image\": \"production-environment\",\n \"definition\": \"Verify that the ->Production Environment-> tasks for the corresponding ->Market-> were created successfully.\",\n \"bulletListIntro\": \"Look for the following data structures:\",\n \"bulletArray\": [\n [\n \"A ->Market Trading Tasks-> node\",\n \" for the new market.\"\n ],\n [\n \"One ->Trading Mine Tasks-> node\",\n \" for each trading mine included in the workspace.\"\n ],\n [\n \"One ->Task Manager-> per ->Trading Mine-> and one ->Task-> with a ->Backtesting Session->\",\n \" for each ->Trading System-> in the workspace.\"\n ]\n ],\n \"paragraph1\": \"\",\n \"callOut\": \"\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\"\n}","id":"43b85e55-3417-4b13-a7b6-7c5bc0fb691d","savedPayload":{"position":{"x":23976.927206632343,"y":44482.85992199178},"targetPosition":{"x":24452.794871212405,"y":44637.32193533236},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"New Tutorial Step","config":"{\n \"title\": \"Network Verification\",\n \"subTitle\": \"Step 4: Verify Data Storage\",\n \"gif\": \"\",\n \"image\": \"data-storage\",\n \"definition\": \"Verify that the ->Data Storage-> nodes for the corresponding ->Market-> were created successfully.\",\n \"bulletListIntro\": \"Look for the following data structures:\",\n \"bulletArray\": [\n [\n \"A ->Market Data Products-> node\",\n \" under ->Data Mines Data->, with a ->Data Mine Products-> node for each ->Data Mine-> in the workspace.\"\n ],\n [\n \"A ->Market Trading Products-> node\",\n \" under ->Trading Mines Data->, with a ->Session Reference-> for each trading session in the testing and production environments.\"\n ]\n ],\n \"paragraph1\": \"\",\n \"callOut\": \"\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\"\n}","id":"f37edf40-24ba-42d0-9458-bf008c123659","savedPayload":{"position":{"x":24158.648260123853,"y":44232.78190433869},"targetPosition":{"x":24452.794871212405,"y":44637.32193533236},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"tutorialTopics":[],"id":"89c6f1e3-d4c8-48c0-aec1-9dda6e0b9797","savedPayload":{"position":{"x":24452.794871212405,"y":44637.32193533236},"targetPosition":{"x":24952.875,"y":44637.3202247191},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Network Node","name":"My Computer","id":"e452cf65-2b2b-44f2-9e67-bdd9d3c008e4"}}},{"type":"Tutorial Topic","name":"Charts Verification","config":"{\n \"title\": \"Charts Verification\",\n \"summary\": \"\",\n \"subTitle\": \"\",\n \"gif\": \"\",\n \"image\": \"charting-space\",\n \"definition\": \"Beyond the data structures set up in the Network hierarchy, the Install Market function also sets up charts matching the trading sessions created.\",\n \"paragraph1\": \"In the next few steps you will verify that the expected data structures were created successfully.\",\n \"callOut\": \"The charts created allow working with each of the trading sessions independently.\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"Notice from the organization of the charts that Superalgos allows scaling up your operation to unlimited trading systems and charts.\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Right\",\n \"slider\": \"toTop\",\n \"positionAtReferenceParent\": true,\n \"documentationURL\": \"\"\n}","tutorialSteps":[{"type":"Tutorial Step","name":"New Tutorial Step","config":"{\n \"title\": \"Charts Verification\",\n \"subTitle\": \"Step 1: Verify Charting S.\",\n \"gif\": \"\",\n \"image\": \"charting-space\",\n \"definition\": \"Verify that the ->Charting Space-> data structures for the corresponding Market were created successfully.\",\n \"bulletListIntro\": \"Look for the following data structures:\",\n \"bulletArray\": [\n [\n \"A ->Time Machine-> node\",\n \" for each trading session created in the ->Testing Environment->.\"\n ],\n [\n \"A ->Time Machine-> node\",\n \" for each trading session created in the ->Production Environment->.\"\n ]\n ],\n \"paragraph1\": \"\",\n \"callOut\": \"\",\n \"externalLink\": [\n \"\",\n \"\"\n ],\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Right\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\"\n}","id":"17eb1e8e-e9f4-4fe4-a8ea-2c0ea0804d87","savedPayload":{"position":{"x":24269.860903032473,"y":43953.81463102257},"targetPosition":{"x":24702.93486808084,"y":44204.15147045983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}},{"type":"Tutorial Step","name":"New Tutorial Step","config":"{\n \"title\": \"Charts Verification\",\n \"subTitle\": \"Step 2: Verify the Charts\",\n \"gif\": \"\",\n \"image\": \"time-machine\",\n \"definition\": \"Verify that the time machines created show up on the chartsing space... you should find...\",\n \"bulletListIntro\": \"\",\n \"bulletArray\": [\n [\n \"A ->Time Machine->\",\n \" for each trading session created in the ->Testing Environment->.\"\n ],\n [\n \"A ->Time Machine->\",\n \" for each trading session created in the ->Production Environment->.\"\n ]\n ],\n \"paragraph1\": \"\",\n \"callOut\": \"\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"Hover your mouse over a chart to see what ->Crypto Exchange-> and ->Market-> it features.\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toBottom\",\n \"documentationURL\": \"\"\n}","id":"a94fa42a-87c8-4874-ba45-ffa0ffd02f36","savedPayload":{"position":{"x":24702.935411101964,"y":43703.8953750845},"targetPosition":{"x":24702.93486808084,"y":44204.15147045983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"tutorialTopics":[],"id":"064a5be1-bb06-468b-8fad-d78d2c844ee1","savedPayload":{"position":{"x":24702.93486808084,"y":44204.15147045983},"targetPosition":{"x":24952.875,"y":44637.3202247191},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"},"referenceParent":{"type":"Charting Space","name":"New Charting Space","id":"21d2ec55-9e56-4652-8e96-c7e451262c36"}}},{"type":"Tutorial Topic","name":"The End","config":"{\n \"title\": \"You Made It!\",\n \"subTitle\": \"\",\n \"gif\": \"\",\n \"image\": \"tutorial\",\n \"definition\": \"Congratulations... you have reached the end of this tutorial!\",\n \"paragraph1\": \"\",\n \"callOut\": \"\",\n \"paragraph2\": \"\",\n \"note\": \"\",\n \"tip\": \"You may revisit this tutorial at any point. If you select the Play option on the menu, you start right from the beginning. If you select the Resume option instead, you start where you last left, or where you last skipped a step.\",\n \"important\": \"\",\n \"warning\": \"\",\n \"position\": \"Left\",\n \"slider\": \"toTop\",\n \"documentationURL\": \"\"\n}","tutorialSteps":[],"tutorialTopics":[],"id":"9b5e9927-860c-4b89-ac5d-d7f6fd86b18d","savedPayload":{"position":{"x":25202.92749724596,"y":44204.095327049356},"targetPosition":{"x":24952.875,"y":44637.3202247191},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Reset"}}}],"id":"d86ff84f-15d3-4a2d-9674-114c5b526de5","savedPayload":{"position":{"x":24952.875,"y":44637.3202247191},"targetPosition":{"x":24952.875,"y":44637.3202247191},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"tutorial":{"status":"Done"}}}]} \ No newline at end of file diff --git a/Includes/Workspaces/Simple Workspace.json b/Includes/Workspaces/Simple Workspace.json new file mode 100644 index 000000000..43278a870 --- /dev/null +++ b/Includes/Workspaces/Simple Workspace.json @@ -0,0 +1 @@ +{"type":"Workspace","name":"Simple Workspace","rootNodes":[{"type":"Network","name":"Superalgos","networkNodes":[{"type":"Network Node","name":"My Computer","code":"{ \n\"host\": \"localhost\", \n\"webPort\": \"34247\", \n\"webSocketsPort\": \"8080\"\n}","dataStorage":{"type":"Data Storage","name":"New Data Storage","dataMinesData":{"type":"Data Mines Data","name":"New Data Mines Data","exchangeDataProducts":[{"type":"Exchange Data Products","name":"Binance","marketDataProducts":[{"type":"Market Data Products","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"dd7c8795-bb24-4438-9d77-b37a9000ad7f","savedPayload":{"position":{"x":23356.151545791756,"y":29738.98747213911},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"98e6c917-f4b7-4b71-9215-de3ccaf3dc0c","savedPayload":{"position":{"x":23289.9634168229,"y":29661.78881099821},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"1d7dd537-5f6f-4eb2-8e56-ddba0aef720f","savedPayload":{"position":{"x":23230.726477172728,"y":29579.136981834145},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"221c8d22-8a7f-4014-a7ed-0bafc886b123","savedPayload":{"position":{"x":23178.792376750385,"y":29491.41855346877},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"6929ebe7-6486-4299-add5-ed0282500d91","savedPayload":{"position":{"x":23134.820126282055,"y":29399.731870197298},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"4a3ed8eb-a73e-4fb4-835a-681cf47d7373","savedPayload":{"position":{"x":23098.94227036551,"y":29304.396880399865},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"5ffc6a67-e33b-422b-8e36-f9711f93c723","savedPayload":{"position":{"x":23071.52275176024,"y":29206.288390341324},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"48f7953c-f62d-4292-b042-d1ac05f8f80f","savedPayload":{"position":{"x":23052.75926008704,"y":29106.03719846947},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"3b9a3c93-6d41-440e-89a2-2fd1b2dde603","savedPayload":{"position":{"x":23042.814830135056,"y":29004.579368724586},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"70401ea0-3fed-4e40-8bba-a1e5adce9b8c","savedPayload":{"position":{"x":23041.789677606528,"y":28902.64008643744},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"06ac8eb7-8b14-42b1-9e2e-466280ade032","savedPayload":{"position":{"x":23049.700325993366,"y":28801.01149261394},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"014bba70-64d4-4035-b06d-145ee9b4c54c","savedPayload":{"position":{"x":23066.451343666628,"y":28700.467627905105},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"768cc06c-6fdf-491a-a741-5e08f0e25e38","savedPayload":{"position":{"x":23091.90243592807,"y":28601.771247408127},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"40794460-b815-498f-a245-e677de0eed86","savedPayload":{"position":{"x":23125.87385332102,"y":28505.678405998704},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"7ccbd0c1-c804-47e3-9314-14cbb756c806","savedPayload":{"position":{"x":23168.113046926162,"y":28412.926671816662},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"728d6f08-086f-41ba-9126-30ec56a45ea5","savedPayload":{"position":{"x":23218.26811393212,"y":28324.208653268815},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"1510fd36-633e-40a7-adbe-680660d64bd0","savedPayload":{"position":{"x":23275.97808919002,"y":28240.21263462143},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"2404b1eb-c7c9-46e7-b22a-93cfcc3739f4","savedPayload":{"position":{"x":23340.794026691627,"y":28161.573768965605},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"d83476c3-2f0b-4d4a-abb2-0e47ed0a421d","savedPayload":{"position":{"x":23412.228306701436,"y":28088.898529126596},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"0428f20b-9620-480e-a531-dbb2e5f59ef4","savedPayload":{"position":{"x":23489.729271167354,"y":28022.735403909905},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"fcfec9fa-1a0d-4285-9fad-4a23409f88ed","savedPayload":{"position":{"x":23572.70454427426,"y":27963.58713898618},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"08f223a8-9707-4c45-b638-1fe0e4a2b053","savedPayload":{"position":{"x":23660.515162473926,"y":27911.893025426885},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"66f1a9be-fe96-48c3-91e4-500c6e246423","savedPayload":{"position":{"x":23752.505298075637,"y":27868.07258252279},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"e432c706-cbcd-4af0-b23c-b18e5b29377a","savedPayload":{"position":{"x":23847.95913527734,"y":27832.427532108184},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"7f2dfd8e-de4a-4bd1-8d34-27581f1a3ed8","savedPayload":{"position":{"x":23946.157909027424,"y":27805.25163401685},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"595d148f-6cdf-48d3-ab8f-23fba0052631","savedPayload":{"position":{"x":24046.35154285919,"y":27786.752107717173},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"2045098a-e9b4-4409-9fd9-ee7285d9b7cf","savedPayload":{"position":{"x":24147.77467987278,"y":27777.06705636967},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"295bd09d-e868-4e8b-9944-39bf6e0d7951","savedPayload":{"position":{"x":24245.91228719812,"y":27776.013493575814},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"ba6f23d4-c2e7-41b4-88a0-e14ebb34e21c","savedPayload":{"position":{"x":24349.39951127062,"y":27783.740506660914},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}},{"type":"Data Product","name":"Resistances","id":"0669d924-aace-46d1-b126-ccced8fd33cf","savedPayload":{"position":{"x":24450.846146593023,"y":27800.63111612365},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Resistances","id":"7a734501-a0fb-4305-803e-7e95d477c513"}}},{"type":"Data Product","name":"Supports","id":"5e7a0e50-e6ed-4106-8025-8b35ad6c597c","savedPayload":{"position":{"x":24545.238460843404,"y":27824.631612616984},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Supports","id":"bc3c43de-6312-47d4-ae3d-0c95c1b039e0"}}},{"type":"Data Product","name":"Basic Candles","id":"4e14ecf7-3eaa-48ce-91fb-c6e1c806fdf8","savedPayload":{"position":{"x":24641.868946969375,"y":27857.909758166585},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Basic Candles","id":"7519e3d8-b5ec-47eb-84c9-8c9262c9efc6"}}},{"type":"Data Product","name":"One-Candle Patterns","id":"e11730aa-5ffb-42bd-8bfb-56e7fa36cd68","savedPayload":{"position":{"x":24738.37016391436,"y":27901.414020469074},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"One-Candle Patterns","id":"f3c0863c-ac0c-4fc0-b9ee-5f0f2bd722ea"}}},{"type":"Data Product","name":"Two-Candles Patterns","id":"3d5a0163-c683-43d8-b344-ec1113c4726c","savedPayload":{"position":{"x":24829.749543811897,"y":27953.46377656059},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Two-Candles Patterns","id":"29283392-6a01-4acd-8f41-328e92281980"}}},{"type":"Data Product","name":"Three-Candles Patterns","id":"86ebf7ee-0102-4dc1-a597-0f0df3e07df8","savedPayload":{"position":{"x":24926.75507085331,"y":28022.599661276992},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Three-Candles Patterns","id":"1b6f79d8-d1ba-49e5-a808-42f71fba5657"}}}],"id":"cbdd3605-b905-453f-9ecb-e986cb2729f9","savedPayload":{"position":{"x":24208.282416169728,"y":28942.5921453813},"targetPosition":{"x":25074.84103413734,"y":29722.95696490207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}}],"id":"7f87ecc6-8dd3-42e9-9217-1579b64aae75","savedPayload":{"position":{"x":25074.591135580602,"y":29722.707164537456},"targetPosition":{"x":25508.2464317103,"y":30113.175313762848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"bf04ccea-266d-4115-b50e-fefdf29b873a","savedPayload":{"position":{"x":25508.2464317103,"y":30113.175313762848},"targetPosition":{"x":25941.962394841834,"y":30503.689482436115},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"i"}}},"tradingMinesData":{"type":"Trading Mines Data","name":"New Trading Mines Data","exchangeTradingProducts":[{"type":"Exchange Trading Products","name":"Binance","sessionReferences":[{"type":"Session Reference","name":"Back WHB ","marketDataProducts":{"type":"Market Data Products","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"573fb46f-78d2-4bf3-ad11-e42d2531d53e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"39d7a06d-5aad-4b03-8778-e4df8dacc825","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"7af9d35c-7464-4ed5-9ee6-ccf7a9943894","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"82b46974-7a93-4066-a3b7-378b42710364","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"109e30d5-c839-4e20-8744-2e4dc002f3a8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"3792a579-2f2c-4c29-9cb1-05e2683db5da","savedPayload":{"position":{"x":25598.923749057652,"y":28711.764679557487},"targetPosition":{"x":26184.379330131018,"y":29362.007651139225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Backtesting Session","name":"Back WHB","id":"f32f1cdc-425f-4193-a43b-be9312c74234"}}},{"type":"Session Reference","name":"Paper WHB ","marketDataProducts":{"type":"Market Data Products","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"63636068-307e-4cea-b31f-f47e106cea2c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"20848048-8efb-47b1-aaf0-789d2f6c5b1d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"87b74841-4f6a-4658-b01b-7feb254b5d2f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"5e28998c-b35f-4cc0-9fd6-8ee5f5714545","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"12cd1cb4-f163-4d1b-8955-cae6904831c7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"5f2e9d8a-f1df-4efd-8232-718818cab630","savedPayload":{"position":{"x":26093.003519281363,"y":28491.783569682495},"targetPosition":{"x":26184.379330131018,"y":29362.007651139225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Paper Trading Session","name":"Paper WHB","id":"2198ec50-3d31-43b7-a57d-e386bef38a93"}}},{"type":"Session Reference","name":"Live Trading WHB ","marketDataProducts":{"type":"Market Data Products","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"af19e56c-eaf1-4b0b-93f9-74b9ac1843c2","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"30ac52a8-ee50-439c-83c8-df75ab49374a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"c35fa0be-6e51-4d14-9a52-6b0174cc1aab","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"6a059555-2555-4c7f-a722-2ab4ca0440c5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"863885a8-2351-4b29-9f2e-ae3aeda223fc","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"ee314903-8ee9-4068-8a90-9452c460b910","savedPayload":{"position":{"x":26621.815570035997,"y":28604.216203591706},"targetPosition":{"x":26184.379330131018,"y":29362.007651139225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Live Trading Session","name":"Live Trading WHB","id":"5335fd67-ebdc-4cfd-936d-b76af957713e"}}},{"type":"Session Reference","name":"Fwd WHB ","marketDataProducts":{"type":"Market Data Products","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"5919a710-a950-4049-9605-3f127b7fac6b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"c7030a88-152f-421c-8b32-66f3c222286a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"f4b18249-5044-4b34-83f7-3cedbbe939c5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"25db80e6-c4cf-4568-98d3-0cba83625ece","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"9b6e94d5-442d-4882-beb6-6b616adb24a7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"3892574a-ebe9-4d4d-8e79-02e6f0900c44","savedPayload":{"position":{"x":26983.70100916551,"y":29006.098744413946},"targetPosition":{"x":26184.379330131018,"y":29362.007651139225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Forward Testing Session","name":"Fwd WHB","id":"0e7edb98-38ff-4516-89a1-188030989ddc"}}}],"id":"5b3343c9-3fab-46ec-92e3-9c074759a112","savedPayload":{"position":{"x":26184.336812387766,"y":29361.92271222933},"targetPosition":{"x":26063.13281762007,"y":29932.789779714392},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"29ca14e5-dabe-470a-be64-ed7996bd1e55","savedPayload":{"position":{"x":26063.13281762007,"y":29932.789779714392},"targetPosition":{"x":25941.962394841834,"y":30503.689482436115},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0726a9e4-23b6-4d27-a8de-e91a9665a8ba","savedPayload":{"position":{"x":25942.05131952079,"y":30503.61497742276},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"d"}}},"dataMining":{"type":"Data Mining","name":"New Data Mining","exchangeTasks":[{"type":"Exchange Tasks","name":"Binance","taskManagers":[{"type":"Task Manager","name":"Masters BTC/USDT","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"b1a110d4-ac93-402d-8465-a35a835d0c22","savedPayload":{"position":{"x":25911.866371765023,"y":29035.22970278082},"targetPosition":{"x":26161.033147086047,"y":29187.786307635728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"fa3aae08-61b3-4a35-af20-c1242b9954c8","savedPayload":{"position":{"x":26161.033147086047,"y":29187.786307635728},"targetPosition":{"x":26410.315846245398,"y":29340.432686747954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"e61db3ab-b80d-4575-8da1-5598e0b1b525","savedPayload":{"position":{"x":26410.315846245398,"y":29340.432686747954},"targetPosition":{"x":26659.69618698426,"y":29492.857356341436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"160f8edd-29cf-40c2-bb21-5f569d97f9d1","savedPayload":{"position":{"x":26659.69618698426,"y":29492.857356341436},"targetPosition":{"x":27157.999720881897,"y":29797.373832633883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"22df3948-2a73-4ca6-a927-4b722dbb27dc","savedPayload":{"position":{"x":26188.27442175536,"y":28720.7107633861},"targetPosition":{"x":26415.410828993652,"y":28904.65215868557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"5324b18d-e2b0-495e-94a0-cfc3f3473766","savedPayload":{"position":{"x":26415.410828993652,"y":28904.65215868557},"targetPosition":{"x":26642.568804807575,"y":29088.530378436128},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"d7e0c235-4024-4888-86ba-32cf5c73b852","savedPayload":{"position":{"x":26328.475813638193,"y":28270.36317952221},"targetPosition":{"x":26485.465233723393,"y":28679.394363334697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"02adb2d3-1740-4f42-975e-e0365e308b97","savedPayload":{"position":{"x":26485.465233723393,"y":28679.394363334697},"targetPosition":{"x":26642.568804807575,"y":29088.530378436128},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"ccf1813f-31d2-4359-88ce-8c8e6132f222","savedPayload":{"position":{"x":26642.568804807575,"y":29088.530378436128},"targetPosition":{"x":26814.557146223146,"y":29325.043724758394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b55a2f7e-354e-47ce-8986-a4a0079efe2b","savedPayload":{"position":{"x":26814.557146223146,"y":29325.043724758394},"targetPosition":{"x":27157.999720881897,"y":29797.373832633883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"89bf947b-a245-4aad-a2fa-472ad6f8fd2e","savedPayload":{"position":{"x":26674.739783479326,"y":28431.12954793744},"targetPosition":{"x":26814.084590819686,"y":28688.131186804178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"df74508f-a106-4190-83ae-8c43455cd889","savedPayload":{"position":{"x":26814.084590819686,"y":28688.131186804178},"targetPosition":{"x":26953.443835783408,"y":28945.050126517544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"441d958c-4ebf-4cc5-b49e-cdaf3802efc3","savedPayload":{"position":{"x":26976.1242270086,"y":28068.78682555253},"targetPosition":{"x":26964.778094890844,"y":28506.842378514466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"daf27799-58cb-480a-832b-4e3404882961","savedPayload":{"position":{"x":26964.778094890844,"y":28506.842378514466},"targetPosition":{"x":26953.443835783408,"y":28945.050126517544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"b1b31e7e-12f8-45fd-9508-cb82030d7507","savedPayload":{"position":{"x":26953.443835783408,"y":28945.050126517544},"targetPosition":{"x":27021.661225205866,"y":29229.486533288866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"52b4b8db-0336-423c-9343-5353225b4bfb","savedPayload":{"position":{"x":27021.661225205866,"y":29229.486533288866},"targetPosition":{"x":27157.999720881897,"y":29797.373832633883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f7457cf6-bcdc-48e1-b6e2-b45de382bc37","savedPayload":{"position":{"x":27234.51336543948,"y":28349.988340088526},"targetPosition":{"x":27264.818633874467,"y":28640.814280711467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"5a6b7843-090c-4b3b-9be4-ed8c8d1f6935","savedPayload":{"position":{"x":27264.818633874467,"y":28640.814280711467},"targetPosition":{"x":27295.136953430276,"y":28931.564545251596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"e78c5425-7d77-47c5-bb63-db88cad6e060","savedPayload":{"position":{"x":27651.55385606688,"y":28130.76654747594},"targetPosition":{"x":27473.387701277607,"y":28531.091907082726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"4c5ed30f-d600-44e2-ac14-33ce0528178e","savedPayload":{"position":{"x":27473.387701277607,"y":28531.091907082726},"targetPosition":{"x":27295.136953430276,"y":28931.564545251596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"b4fb4df9-2d6e-4c0a-8eb5-d1bd78232d0d","savedPayload":{"position":{"x":27295.136953430276,"y":28931.564545251596},"targetPosition":{"x":27249.359613223736,"y":29220.504934869365},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"aacffa8c-5a19-423f-b551-0f9a5c46a628","savedPayload":{"position":{"x":27249.359613223736,"y":29220.504934869365},"targetPosition":{"x":27157.999720881897,"y":29797.373832633883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"7af918d3-d9a4-4553-9b3d-12224b4ad938","savedPayload":{"position":{"x":27782.691779441622,"y":28489.562242457137},"targetPosition":{"x":27699.503502559655,"y":28769.847625622115},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"0d8ca3f1-31af-40e4-8f43-4dacc8950dff","savedPayload":{"position":{"x":27699.503502559655,"y":28769.847625622115},"targetPosition":{"x":27616.31118070153,"y":29050.06242422175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f11fe52f-ba3f-486d-93f2-a6b82fa67c2d","savedPayload":{"position":{"x":28252.21648791965,"y":28446.87019586432},"targetPosition":{"x":27934.385960243617,"y":28748.421109549057},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"ba74160c-2b59-497a-b895-4ddade53f72e","savedPayload":{"position":{"x":27934.385960243617,"y":28748.421109549057},"targetPosition":{"x":27616.31118070153,"y":29050.06242422175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"3a93a6a1-0d2e-475b-874e-8784dc4b6c78","savedPayload":{"position":{"x":27616.31118070153,"y":29050.06242422175},"targetPosition":{"x":27463.299881675714,"y":29299.430616794594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"9843b9dd-ff8e-4cef-b063-730b0317420d","savedPayload":{"position":{"x":27463.299881675714,"y":29299.430616794594},"targetPosition":{"x":27157.999720881897,"y":29797.373832633883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"da37aa9d-a68c-49eb-be66-5fcc1a13ab69","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"abae0d8d-c44c-4825-b6ad-aabad604ba2d","savedPayload":{"position":{"x":28104.305767386773,"y":29110.71366353339},"targetPosition":{"x":27867.617154339066,"y":29282.47648161653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"f33858b9-8561-4f70-ba70-d8d168786321","savedPayload":{"position":{"x":27867.617154339066,"y":29282.47648161653},"targetPosition":{"x":27630.747447074114,"y":29454.268224954394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"64e8f70e-829c-47cd-b933-f4e4dd0c90fc","savedPayload":{"position":{"x":27630.747447074114,"y":29454.268224954394},"targetPosition":{"x":27157.999720881897,"y":29797.373832633883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Resistances & Supports","bot":{"type":"Indicator Bot Instance","name":"Resistances & Supports","code":" {\n \"repo\": \"\"\n }","processes":[{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"5e0f86e6-2a43-49c2-a347-7203f0867c2d","savedPayload":{"position":{"x":28781.037314525078,"y":29175.961565324156},"targetPosition":{"x":28395.989079901734,"y":29384.862138219618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"f9f341a9-ba04-4c03-8f3b-249e72681562","savedPayload":{"position":{"x":28395.989079901734,"y":29384.862138219618},"targetPosition":{"x":28010.758499425036,"y":29593.820159886338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"5d9b2729-43fb-4e7e-aa4f-b8477c424e51"}}},{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"9974d57e-33ac-4fcf-ad75-35a8c4dc549e","savedPayload":{"position":{"x":28595.21525205699,"y":29609.221777004426},"targetPosition":{"x":28302.991357735238,"y":29601.560258926966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"9c93e98f-e166-4c8d-a9d7-08ada9c68eeb","savedPayload":{"position":{"x":28302.991357735238,"y":29601.560258926966},"targetPosition":{"x":28010.758499425036,"y":29593.820159886338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"be19d91b-9337-4f84-96b3-f4e54ea12df5"}}}],"id":"88a4c3b6-e148-47e8-91b2-bf72bb167dc5","savedPayload":{"position":{"x":28010.758499425036,"y":29593.820159886338},"targetPosition":{"x":27726.20889929263,"y":29661.685428695426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6c9dc449-6a37-4f34-8984-13aafed439fc","savedPayload":{"position":{"x":27726.20889929263,"y":29661.685428695426},"targetPosition":{"x":27157.999720881897,"y":29797.373832633883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ea242bf3-f7e6-431a-ab41-e022cb3ac6df","savedPayload":{"position":{"x":27157.99715524524,"y":29796.07562391848},"targetPosition":{"x":27066.795935474333,"y":30372.8455418336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta BTC/USDT","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"08b275d2-c921-49d0-a88d-5669df5c17e0","savedPayload":{"position":{"x":27246.45457888948,"y":28356.458201022706},"targetPosition":{"x":27392.427732535423,"y":28609.39924916399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"a5449b25-a98e-4fa4-87eb-5f60b967770a","savedPayload":{"position":{"x":27392.427732535423,"y":28609.39924916399},"targetPosition":{"x":27538.346543719807,"y":28862.269200750747},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"287d4ba4-1404-4256-bdbb-cf2c970e5269","savedPayload":{"position":{"x":28121.44975504309,"y":27851.455214901147},"targetPosition":{"x":27829.881722021866,"y":28356.799326604483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"05fb2b7e-6704-4f05-b12b-b590101e5ca9","savedPayload":{"position":{"x":27829.881722021866,"y":28356.799326604483},"targetPosition":{"x":27538.346543719807,"y":28862.269200750747},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"f6dc278d-5a5c-4cba-b513-f0660a9f492d","savedPayload":{"position":{"x":27538.346543719807,"y":28862.269200750747},"targetPosition":{"x":27538.352910477868,"y":29445.812304284584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a15b5f86-52c2-4a22-9dd9-311d981601ba","savedPayload":{"position":{"x":27538.352910477868,"y":29445.812304284584},"targetPosition":{"x":27538.58167781868,"y":30029.957504632985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f8ea11d8-7b32-4ed0-968d-a20df0b49d7f","savedPayload":{"position":{"x":28285.712604510427,"y":28504.402887622684},"targetPosition":{"x":28255.184541139024,"y":28794.883276237004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"e32509df-e962-4760-991e-6533a398c58e","savedPayload":{"position":{"x":28255.184541139024,"y":28794.883276237004},"targetPosition":{"x":28224.675454450076,"y":29085.260838175454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"0d4140a1-5e1f-4e2e-b540-582474e41889","savedPayload":{"position":{"x":29290.747119288608,"y":28610.46997447102},"targetPosition":{"x":28757.74172969406,"y":28847.807492486478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"96466f5a-6dd9-4db9-b30c-1c4622076d8a","savedPayload":{"position":{"x":28757.74172969406,"y":28847.807492486478},"targetPosition":{"x":28224.675454450076,"y":29085.260838175454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"fffaf3df-a88c-4d45-bb52-d02b818502b5","savedPayload":{"position":{"x":28224.675454450076,"y":29085.260838175454},"targetPosition":{"x":27881.7339061849,"y":29557.358580923727},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"53fd5de3-7d70-4eb7-8dd6-976d1e188d12","savedPayload":{"position":{"x":27881.7339061849,"y":29557.358580923727},"targetPosition":{"x":27538.58167781868,"y":30029.957504632985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"78a80ff6-f4f2-4680-9a7b-65225144dd94","savedPayload":{"position":{"x":29040.000471124044,"y":29235.459222388195},"targetPosition":{"x":28844.48310438237,"y":29452.405685630765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"301a8d2c-f659-4d4b-9906-40177bdc1256","savedPayload":{"position":{"x":28844.48310438237,"y":29452.405685630765},"targetPosition":{"x":28649.042574668892,"y":29669.27747241303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"a9291a08-1ba1-436b-b491-e759cc8fb7d1","savedPayload":{"position":{"x":29790.722517415437,"y":29911.26025820064},"targetPosition":{"x":29219.93543798035,"y":29790.268131169552},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"19fff031-07c3-4836-9bca-1570eb69a931","savedPayload":{"position":{"x":29219.93543798035,"y":29790.268131169552},"targetPosition":{"x":28649.042574668892,"y":29669.27747241303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"a81bcaf4-6c99-4b6a-8291-5fa657ae2c17","savedPayload":{"position":{"x":28649.042574668892,"y":29669.27747241303},"targetPosition":{"x":28094.032870143245,"y":29849.517133815796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8e2997a2-13ae-464c-b980-9ec46584db3b","savedPayload":{"position":{"x":28094.032870143245,"y":29849.517133815796},"targetPosition":{"x":27538.58167781868,"y":30029.957504632985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f6802028-335d-4e31-90a7-9d608199aafb","savedPayload":{"position":{"x":29220.053052321964,"y":30269.327751130564},"targetPosition":{"x":28934.412735437945,"y":30330.02440533622},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"8540fa7a-f4b2-4e97-923c-e8acd00bbb9f","savedPayload":{"position":{"x":28934.412735437945,"y":30330.02440533622},"targetPosition":{"x":28648.80415483949,"y":30390.559612903737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"51d58c12-ad1f-450e-94fd-ea0f8ad08769","savedPayload":{"position":{"x":29429.67599546543,"y":31257.953265472057},"targetPosition":{"x":29039.27607701413,"y":30824.29029510223},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"c655562c-3839-42e0-9ea6-982629405d33","savedPayload":{"position":{"x":29039.27607701413,"y":30824.29029510223},"targetPosition":{"x":28648.80415483949,"y":30390.559612903737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"f84cf5d6-034c-42db-b197-e95c0228efc9","savedPayload":{"position":{"x":28648.80415483949,"y":30390.559612903737},"targetPosition":{"x":28093.83871815004,"y":30210.370247354684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"385443d2-f17f-459c-b603-58f42e5c366f","savedPayload":{"position":{"x":28093.83871815004,"y":30210.370247354684},"targetPosition":{"x":27538.58167781868,"y":30029.957504632985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"2a5cc26f-cb88-4743-b412-c33acb6aa0fb","savedPayload":{"position":{"x":27539.223688729708,"y":30029.634957847353},"targetPosition":{"x":27066.795935474333,"y":30372.8455418336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Buddha BTC/USDT","tasks":[{"type":"Task","name":"Candle Patterns","bot":{"type":"Indicator Bot Instance","name":"Candle Patterns","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Patterns Multi-Period-Market","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"db4b89d0-10af-4bde-9055-daa8ce7f16f4","savedPayload":{"position":{"x":29342.03675229305,"y":30439.22702105004},"targetPosition":{"x":29069.35768445914,"y":30543.713755023884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"6afbb9c2-b0f0-44b7-95e7-b7b5468cc1f4","savedPayload":{"position":{"x":29069.35768445914,"y":30543.713755023884},"targetPosition":{"x":28796.746879396986,"y":30648.13698907694},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"3aaf9f93-0516-4b3d-9772-44be91615154"}}},{"type":"Indicator Process Instance","name":"Candle Patterns Multi-Period-Daily","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"96d74290-d474-49ec-9d92-eac2a3281231","savedPayload":{"position":{"x":29703.94343053783,"y":31382.73162430061},"targetPosition":{"x":29250.375224712014,"y":31015.46751245425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"743650af-a6cd-47fc-b0a1-41de65a6e632","savedPayload":{"position":{"x":29250.375224712014,"y":31015.46751245425},"targetPosition":{"x":28796.746879396986,"y":30648.13698907694},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8a7ce3e2-20a1-496b-86bf-2d7842f88536"}}}],"id":"a9c80bea-5545-423f-b5d7-f2f65164d208","savedPayload":{"position":{"x":28796.746879396986,"y":30648.13698907694},"targetPosition":{"x":28220.260313542076,"y":30556.774932345154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2c112f81-7eae-4382-8094-93c545119bb0","savedPayload":{"position":{"x":28220.260313542076,"y":30556.774932345154},"targetPosition":{"x":27643.407918116736,"y":30465.291929387033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fea766d7-9514-415b-aa35-364742aea91d","savedPayload":{"position":{"x":27643.545443825915,"y":30464.211386861785},"targetPosition":{"x":27066.795935474333,"y":30372.8455418336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b1c93d10-5dd9-4b3f-9662-b9bf7850b81a","savedPayload":{"position":{"x":27066.795935474333,"y":30372.8455418336},"targetPosition":{"x":26594.620238310126,"y":30715.850372716235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"7449a608-32ca-4285-94d1-c96791e2817f","savedPayload":{"position":{"x":26594.74547070257,"y":30715.764002746084},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"testingEnvironment":{"type":"Testing Environment","name":"New Testing Environment","exchangeTasks":[{"type":"Exchange Tasks","name":"Binance","taskManagers":[{"type":"Task Manager","name":"Paper & Backtesting Sessions BTC/USDT","tasks":[{"type":"Task","name":"Paper Trading WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"34d3f232-9fb1-47e1-97be-9233ef34db93","savedPayload":{"position":{"x":29064.393244637387,"y":32246.70439914241},"targetPosition":{"x":29279.54118924854,"y":32443.944382994956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"969cd1c0-1d6d-4667-a810-d18369410d94","savedPayload":{"position":{"x":29299.46844670258,"y":32152.36958532117},"targetPosition":{"x":29279.54118924854,"y":32443.944382994956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"4af996da-6714-41ac-ad51-5706f41b40f0","savedPayload":{"position":{"x":29520.077958658403,"y":32277.632667932994},"targetPosition":{"x":29279.54118924854,"y":32443.944382994956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"963db77e-0405-4fc4-8780-1b7fa93f41a6","savedPayload":{"position":{"x":29559.768671541227,"y":32527.95233253213},"targetPosition":{"x":29279.54118924854,"y":32443.944382994956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"cd125f30-93e7-4786-b1e1-33274bd2877c","savedPayload":{"position":{"x":29388.662976726024,"y":32715.280877632933},"targetPosition":{"x":29279.54118924854,"y":32443.944382994956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"f8fcac2e-2a52-4189-a95d-77e83b5a6f98","savedPayload":{"position":{"x":29136.09535884985,"y":32698.32517200085},"targetPosition":{"x":29279.54118924854,"y":32443.944382994956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b5ba0c98-c052-4195-92c2-119652d91c32","savedPayload":{"position":{"x":29279.54118924854,"y":32443.944382994956},"targetPosition":{"x":28991.156025125947,"y":32489.43729500607},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2198ec50-3d31-43b7-a57d-e386bef38a93","savedPayload":{"position":{"x":28991.156025125947,"y":32489.43729500607},"targetPosition":{"x":28703.43428550334,"y":32534.931766037582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"h"},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"06c8bcea-4122-4a35-8db3-a1ddc7657e4b","savedPayload":{"position":{"x":28886.618773071255,"y":32762.168395792276},"targetPosition":{"x":28703.43428550334,"y":32534.931766037582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"731abb89-b672-41b1-b403-2932226d3df7","savedPayload":{"position":{"x":28703.43428550334,"y":32534.931766037582},"targetPosition":{"x":28431.211697225608,"y":32430.273741172245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"4f784203-664a-4791-9e3a-7565f0a11e79","savedPayload":{"position":{"x":28431.211697225608,"y":32430.273741172245},"targetPosition":{"x":28083.989128969773,"y":32297.060009772482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"e04e8948-849d-4161-af18-4644990d0b49","savedPayload":{"position":{"x":28084.329308809214,"y":32297.143658779103},"targetPosition":{"x":27539.091525582156,"y":32088.114943529785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Backtesting WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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}","id":"48e2c5e0-8f9e-40f0-8ab6-2ecc57aa3039","savedPayload":{"position":{"x":28782.980995918995,"y":32991.24967931307},"targetPosition":{"x":28870.94205680006,"y":33269.9197687117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{}","id":"e8703a6e-e6c0-485f-a27d-a9e60a57a0a6","savedPayload":{"position":{"x":29033.712298994065,"y":33027.22078146843},"targetPosition":{"x":28870.94205680006,"y":33269.9197687117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"initialDatetime\": \"2019-01-01\",\n\"finalDatetime\": \"2020-12-31\"\n}","id":"08815e4e-c066-4914-85b7-a4f7ce4748a5","savedPayload":{"position":{"x":29162.101501725396,"y":33245.90506025486},"targetPosition":{"x":28870.94205680006,"y":33269.9197687117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-hs\"\n}","id":"805c356b-4a05-424e-ba29-260e35c11943","savedPayload":{"position":{"x":29071.207528800398,"y":33482.48322373823},"targetPosition":{"x":28870.94205680006,"y":33269.9197687117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"bcccd1fd-188c-43e4-abfc-4bc89d6adecc","savedPayload":{"position":{"x":28829.657320025402,"y":33559.09625732106},"targetPosition":{"x":28870.94205680006,"y":33269.9197687117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"ae594b88-e40b-408b-8082-3ba92ffc2c8c","savedPayload":{"position":{"x":28619.150949733543,"y":33417.95295637538},"targetPosition":{"x":28870.94205680006,"y":33269.9197687117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c220646b-827b-43c8-ab7e-5ecd53b4070a","savedPayload":{"position":{"x":28870.94205680006,"y":33269.9197687117},"targetPosition":{"x":28598.24552294302,"y":33165.15385183666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f32f1cdc-425f-4193-a43b-be9312c74234","savedPayload":{"position":{"x":28598.24552294302,"y":33165.15385183666},"targetPosition":{"x":28326.18831241346,"y":33060.90150635848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"02fe6309-40c0-4e31-9aed-fbf8f434bfa9","savedPayload":{"position":{"x":28371.238691846604,"y":33349.19375794562},"targetPosition":{"x":28326.18831241346,"y":33060.90150635848},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"dd22d90b-5a91-4723-9f65-17eb94fb4d9d","savedPayload":{"position":{"x":28326.18831241346,"y":33060.90150635848},"targetPosition":{"x":28142.71583640529,"y":32834.0296077393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"0942010b-12f0-4be9-979d-c3e1bbc4eb74","savedPayload":{"position":{"x":28142.71583640529,"y":32834.0296077393},"targetPosition":{"x":27906.18113622337,"y":32541.76131576305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a8ff6583-b710-44b1-8768-d8a70bdf22c9","savedPayload":{"position":{"x":27906.39889679037,"y":32542.04443009769},"targetPosition":{"x":27539.091525582156,"y":32088.114943529785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"caed4703-e134-4a48-9062-fe5277b7d95f","savedPayload":{"position":{"x":27539.091525582156,"y":32088.114943529785},"targetPosition":{"x":27066.843367177287,"y":31745.041164200262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"f69b2c23-ccc5-47fb-9945-9b7badcea636","savedPayload":{"position":{"x":27066.843367177287,"y":31745.041164200262},"targetPosition":{"x":26594.6500251233,"y":31402.008546193836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"2ae685a1-25c6-4bd5-b559-d83e373e8d45","savedPayload":{"position":{"x":26594.745911822236,"y":31402.080901386686},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"productionEnvironment":{"type":"Production Environment","name":"New Production Environment","exchangeTasks":[{"type":"Exchange Tasks","name":"Binance","taskManagers":[{"type":"Task Manager","name":"Fwd & Live Sessions BTC/USDT","tasks":[{"type":"Task","name":"Fwd Testing WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"079cdfaf-2d41-4fa3-a68d-9e2620de0cdd","savedPayload":{"position":{"x":25903.964610736308,"y":34224.02783814853},"targetPosition":{"x":25782.77845918733,"y":34488.92344707184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"5f5ec9f1-c4e2-4ca7-94c4-bad619511e5c","savedPayload":{"position":{"x":26066.32062068881,"y":34418.71426901046},"targetPosition":{"x":25782.77845918733,"y":34488.92344707184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"d5fda5e7-7571-41e7-b19a-a721d73fd8f5","savedPayload":{"position":{"x":26015.407862691092,"y":34666.99323477001},"targetPosition":{"x":25782.77845918733,"y":34488.92344707184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"f6ed8468-7fd1-4aac-848b-647973e41b04","savedPayload":{"position":{"x":25789.35810184877,"y":34782.2248864464},"targetPosition":{"x":25782.77845918733,"y":34488.92344707184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"da2d51df-7c40-4bf0-80ec-63a38992fcfe","savedPayload":{"position":{"x":25558.745718953734,"y":34677.46423439426},"targetPosition":{"x":25782.77845918733,"y":34488.92344707184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"4e1b48a9-df71-402e-9159-66c49cdc08b3","savedPayload":{"position":{"x":25496.923539950913,"y":34431.95773730544},"targetPosition":{"x":25782.77845918733,"y":34488.92344707184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b9e7a071-26dd-4796-8704-2314f6c2c603","savedPayload":{"position":{"x":25782.77845918733,"y":34488.92344707184},"targetPosition":{"x":25650.00488421677,"y":34229.51031958291},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0e7edb98-38ff-4516-89a1-188030989ddc","savedPayload":{"position":{"x":25650.00488421677,"y":34229.51031958291},"targetPosition":{"x":25517.447589607607,"y":33969.109084071606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","keyInstance":{"type":"Key Instance","name":"New Exchange Account Key","id":"8d9b39d4-b764-486d-a2f6-e84391bbd818","savedPayload":{"position":{"x":25199.98943727795,"y":34458.909197010624},"targetPosition":{"x":25358.613496630183,"y":34214.36409675572},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"New Exchange Account Key","id":"88eab4e5-3be4-4982-93fa-e95bcb1ab559"}}},"id":"f122bd16-0c85-43d1-932a-57a710db8013","savedPayload":{"position":{"x":25358.613496630183,"y":34214.36409675572},"targetPosition":{"x":25517.447589607607,"y":33969.109084071606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"a034c52a-8924-4e60-9653-f6da1ea6f8b5","savedPayload":{"position":{"x":25517.447589607607,"y":33969.109084071606},"targetPosition":{"x":25532.40977310501,"y":33678.55423090444},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"74f70f20-305b-4e90-aad6-1bcd2ff8ee1c","savedPayload":{"position":{"x":25532.40977310501,"y":33678.55423090444},"targetPosition":{"x":25551.50194338215,"y":33306.87326831779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"749d6eaf-1548-47ca-901d-1cfc1a21b0a5","savedPayload":{"position":{"x":25551.252874257087,"y":33307.590369724894},"targetPosition":{"x":25581.485374725336,"y":32724.418698281694},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Live Trading WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"166cdb09-90e0-49a1-9c38-b57364287620","savedPayload":{"position":{"x":25109.403090562835,"y":34182.82494345859},"targetPosition":{"x":24871.44407298634,"y":34352.81569267779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"5bf43efd-3dd2-44f2-b25e-f6c7a5fda17e","savedPayload":{"position":{"x":25152.70374824769,"y":34432.37709783826},"targetPosition":{"x":24871.44407298634,"y":34352.81569267779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"88d7104b-7925-408a-b490-bbbaaafd7a5f","savedPayload":{"position":{"x":24984.386057092983,"y":34622.13083241753},"targetPosition":{"x":24871.44407298634,"y":34352.81569267779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"1c158006-c3c1-4157-8ad6-f08ee2b769d6","savedPayload":{"position":{"x":24731.322324191053,"y":34608.83398610883},"targetPosition":{"x":24871.44407298634,"y":34352.81569267779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"01064db9-f153-4d30-a26c-d9d339e7a856","savedPayload":{"position":{"x":24583.70097256323,"y":34402.545126152516},"targetPosition":{"x":24871.44407298634,"y":34352.81569267779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"06f7cc4e-6112-4ac8-9f20-610b357a58d2","savedPayload":{"position":{"x":24652.882864423478,"y":34158.98471560196},"targetPosition":{"x":24871.44407298634,"y":34352.81569267779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b86ce81f-5084-48d1-8a45-8f45fbe97891","savedPayload":{"position":{"x":24871.44407298634,"y":34352.81569267779},"targetPosition":{"x":24886.92820703921,"y":34060.78806671803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5335fd67-ebdc-4cfd-936d-b76af957713e","savedPayload":{"position":{"x":24886.92820703921,"y":34060.78806671803},"targetPosition":{"x":24901.83488901802,"y":33770.080096507605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","keyInstance":{"type":"Key Instance","name":"New Exchange Account Key","id":"a0061ba6-2359-4c5c-822d-1e17aaf7c2fd","savedPayload":{"position":{"x":24381.103071237296,"y":34034.3846956502},"targetPosition":{"x":24641.69046361135,"y":33901.74001268537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"New Exchange Account Key","id":"88eab4e5-3be4-4982-93fa-e95bcb1ab559"}}},"id":"954b1896-121c-41e2-9608-5b46a70082fb","savedPayload":{"position":{"x":24641.69046361135,"y":33901.74001268537},"targetPosition":{"x":24901.83488901802,"y":33770.080096507605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"8cb4d9af-0f53-4b33-9174-330da87b166c","savedPayload":{"position":{"x":24901.83488901802,"y":33770.080096507605},"targetPosition":{"x":25060.95076051503,"y":33525.41746799385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"8b30643a-eb54-4d6f-958d-8393f9a1e5f4","savedPayload":{"position":{"x":25060.95076051503,"y":33525.41746799385},"targetPosition":{"x":25263.574609488252,"y":33213.651006905486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"52ec5181-d057-42e3-a6e8-407d20d4e641","savedPayload":{"position":{"x":25263.298335502997,"y":33214.03063510181},"targetPosition":{"x":25581.485374725336,"y":32724.418698281694},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1bbb36fe-edbf-49d8-9827-85a1345c0289","savedPayload":{"position":{"x":25581.485374725336,"y":32724.418698281694},"targetPosition":{"x":25761.810958011934,"y":32169.23148961144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"l"}}}],"id":"fa859e89-960f-4fe1-8e68-1e41b0ea80ec","savedPayload":{"position":{"x":25761.810958011934,"y":32169.23148961144},"targetPosition":{"x":25942.088401105026,"y":31614.106118777217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"32656457-f603-416a-b805-546642094dc4","savedPayload":{"position":{"x":25942.051613267777,"y":31614.229119805834},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"u"}}},"id":"ce601334-52c5-4ffb-ab61-49ca1943a15a","savedPayload":{"position":{"x":26122.378344035824,"y":31058.919069244217},"targetPosition":{"x":24954.356993272086,"y":31057.918778615294},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"r"}}}],"id":"efbbc81b-93c8-4ce0-873e-675f39d333e8","savedPayload":{"position":{"x":24954.356993272086,"y":31057.918778615294},"targetPosition":{"x":24954.356993272086,"y":31057.918778615294},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"n"}}},{"type":"Crypto Ecosystem","name":"My Crypto Ecosystem","cryptoExchanges":[{"type":"Crypto Exchanges","name":"Tested","exchanges":[{"type":"Crypto Exchange","name":"Binance","code":"{\n \"codeName\": \"binance\",\n \"API\": [\n {\n \"method\": \"fetchTrades\",\n \"fetchType\": \"by Id\",\n \"fetchTradesMethod\": \"publicGetHistoricalTrades\",\n \"firstId\": \"f\"\n }\n ]\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"EUR\"} \n}","assets":[{"type":"Asset","name":"Bitcoin","code":"{ \n\"codeName\": \"BTC\"\n}","id":"b2814a75-fd57-45c4-a3cb-af276793e573","savedPayload":{"position":{"x":15967.44309285646,"y":29847.135043296803},"targetPosition":{"x":16205.545945497362,"y":30527.756016236122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Tether","code":"{ \n\"codeName\": \"USDT\"\n}","id":"04c5f172-6976-4557-b95f-38004b5201a6","savedPayload":{"position":{"x":16286.157460522874,"y":29811.18041511011},"targetPosition":{"x":16205.545945497362,"y":30527.756016236122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Ether","code":"{ \n\"codeName\": \"ETH\"\n}","id":"4175d47c-e12c-4902-b026-f4999a6d07a4","savedPayload":{"position":{"x":16589.12428459197,"y":29917.189032436385},"targetPosition":{"x":16205.545945497362,"y":30527.756016236122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Monero","code":"{ \n\"codeName\": \"XMR\"\n}","id":"e3b61070-77b9-4dcf-9862-7f05ffa237f3","savedPayload":{"position":{"x":16816.088566826857,"y":30144.150476341456},"targetPosition":{"x":16205.545945497362,"y":30527.756016236122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Stellar","code":"{ \n\"codeName\": \"XLM\"\n}","id":"6dee1e7e-80f3-4597-a28a-881af206ec14","savedPayload":{"position":{"x":16922.098690796603,"y":30447.112178621046},"targetPosition":{"x":16205.545945497362,"y":30527.756016236122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Ethereum Classic","code":"{ \n\"codeName\": \"ETC\"\n}","id":"59378d33-4833-495a-89bb-f739710be7d9","savedPayload":{"position":{"x":16886.145790164148,"y":30765.817563816232},"targetPosition":{"x":16205.545945497362,"y":30527.756016236122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"f4451bbc-50ea-4558-9b3c-abd3e757a76e","savedPayload":{"position":{"x":16205.545945497362,"y":30527.756016236122},"targetPosition":{"x":15695.118637317873,"y":31038.258824041466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"E"}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"BTC/USDT","code":"{ \n\"codeName\": \"BTC/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"Bitcoin","id":"07b514a4-3ea2-4ab7-aeb0-07b48acb6f8d","savedPayload":{"position":{"x":21418.148667708156,"y":30701.46319009064},"targetPosition":{"x":20014.971960652125,"y":31038.270359234422},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"b2814a75-fd57-45c4-a3cb-af276793e573"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"61e7d2b5-1672-4e11-8380-345a4fe4a991","savedPayload":{"position":{"x":22170.863427392924,"y":30868.69006065924},"targetPosition":{"x":20014.971960652125,"y":31038.270359234422},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"04c5f172-6976-4557-b95f-38004b5201a6"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"a174a91f-0818-4fdc-88cd-20dbdf45c548","savedPayload":{"position":{"x":20374.973408504586,"y":31066.505521421997},"targetPosition":{"x":20014.971960652125,"y":31038.270359234422},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"11beab3d-d894-4d20-9940-f864ba957f91","savedPayload":{"position":{"x":20716.561988257432,"y":31206.642862985776},"targetPosition":{"x":20014.971960652125,"y":31038.270359234422},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"5489751f-5ce4-40d0-9854-5bcfdc810269","savedPayload":{"position":{"x":20014.971960652125,"y":31038.270359234422},"targetPosition":{"x":18576.40661231586,"y":31038.255631454067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0e1257c5-49b1-4b52-8942-9bdef72854d2","savedPayload":{"position":{"x":18576.427729977804,"y":31038.253067304962},"targetPosition":{"x":15695.118637317873,"y":31038.258824041466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b","savedPayload":{"position":{"x":17883.94349661904,"y":31699.023105013377},"targetPosition":{"x":17413.34383070435,"y":32245.925504430856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"b2814a75-fd57-45c4-a3cb-af276793e573"}}},{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da","savedPayload":{"position":{"x":18074.681671083465,"y":31957.444909698865},"targetPosition":{"x":17413.34383070435,"y":32245.925504430856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"04c5f172-6976-4557-b95f-38004b5201a6"}}},{"type":"Exchange Account Asset","name":"Ether","id":"b3d0800f-f430-4549-86e9-68001c43fa1f","savedPayload":{"position":{"x":18134.395487270907,"y":32272.81618121735},"targetPosition":{"x":17413.34383070435,"y":32245.925504430856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ether","id":"4175d47c-e12c-4902-b026-f4999a6d07a4"}}},{"type":"Exchange Account Asset","name":"Monero","id":"ee25ff6a-8b3d-4f30-8acf-71ca4b186195","savedPayload":{"position":{"x":18051.273125881857,"y":32583.04169055345},"targetPosition":{"x":17413.34383070435,"y":32245.925504430856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Monero","id":"e3b61070-77b9-4dcf-9862-7f05ffa237f3"}}},{"type":"Exchange Account Asset","name":"Stellar","id":"5716ea79-1392-4f6d-a46e-dba38ab9b39e","savedPayload":{"position":{"x":17841.77944119295,"y":32826.479447759964},"targetPosition":{"x":17413.34383070435,"y":32245.925504430856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Stellar","id":"6dee1e7e-80f3-4597-a28a-881af206ec14"}}},{"type":"Exchange Account Asset","name":"Ethereum Classic","id":"d9d0d41c-67a9-42ea-8c64-067647ee53a4","savedPayload":{"position":{"x":17547.395223150266,"y":32954.91197925835},"targetPosition":{"x":17413.34383070435,"y":32245.925504430856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ethereum Classic","id":"59378d33-4833-495a-89bb-f739710be7d9"}}}],"id":"f7bbfcc0-2359-4de1-8ddc-5e117bde0c52","savedPayload":{"position":{"x":17413.34383070435,"y":32245.925504430856},"targetPosition":{"x":16715.955521876418,"y":32059.186949757976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"88eab4e5-3be4-4982-93fa-e95bcb1ab559","savedPayload":{"position":{"x":17089.155476335174,"y":33453.08398755229},"targetPosition":{"x":16902.661477551464,"y":32756.597581416187},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"cf3895fd-4f0c-4bd8-8afb-886a718cc891","savedPayload":{"position":{"x":16902.661477551464,"y":32756.597581416187},"targetPosition":{"x":16715.955521876418,"y":32059.186949757976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a718949a-e315-4bda-8523-b0b03e3ca507","savedPayload":{"position":{"x":16715.955521876418,"y":32059.186949757976},"targetPosition":{"x":16205.554645103493,"y":31548.73263125611},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a913b30b-17d3-4b2b-9c39-9c7dc67f0000","savedPayload":{"position":{"x":16205.554645103493,"y":31548.73263125611},"targetPosition":{"x":15695.118637317873,"y":31038.258824041466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"22d2b36e-7a77-40a6-8948-b7d0fb744923","savedPayload":{"position":{"x":15695.118637317873,"y":31038.258824041466},"targetPosition":{"x":14251.232225370944,"y":31038.26024839772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"c16f8dd4-05f5-45db-8a47-713eb1116f72","savedPayload":{"position":{"x":14251.232225370944,"y":31038.26024839772},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"signalsProviders":[],"superActions":{"type":"Super Actions","name":"New Super Actions","superActions":[{"type":"Super Action","name":"Install Market","id":"2cd8e9dd-02a8-40b5-8979-108491309697","savedPayload":{"position":{"x":13596.796537982185,"y":29900.600915146206},"targetPosition":{"x":13238.769838624787,"y":30494.890822183912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"d103d8f7-8b21-436a-a0cf-8244b3dcb756","savedPayload":{"position":{"x":13738.553946135695,"y":30013.646249280533},"targetPosition":{"x":13238.769838624787,"y":30494.890822183912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"c934df8f-d942-4723-ad44-f187e5df4351","savedPayload":{"position":{"x":12166.581869182457,"y":31038.25465749285},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9f4e7bfb-ea29-47cd-92bd-11f31d177ff8","savedPayload":{"position":{"x":12805.301618063546,"y":31038.2348844148},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"e"}}},{"type":"Charting Space","name":"New Charting Space","viewport":{"type":"Viewport","name":"New Viewport","code":"{\"zoom\":\"1.40\"}","id":"c3db9bcf-39ee-47d1-ab4f-14bd5de815da","savedPayload":{"position":{"x":13421.60994808922,"y":24983.353401471086},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"frame":{"position":{"x":-7465.5,"y":-4195}}}},"dashboards":[{"type":"Dashboard","name":"Super Action Generated","timeMachines":[{"type":"Time Machine","name":"Binance BTC/USDT","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2017-08-17T00:00:00.000Z\",\n \"toDate\": \"2020-06-12T23:59:59.999Z\",\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"9368d644-21cd-4be9-bb36-df83b66c67d1","savedPayload":{"position":{"x":10946.923861891786,"y":25793.448987624084},"targetPosition":{"x":11145.59418749938,"y":24985.438495388044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 2817,\n \"maxValue\": 19798.68,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"7242faad-e2a0-4dd2-8016-bd4448a3b61c","savedPayload":{"position":{"x":10759.039869211012,"y":25722.29710291016},"targetPosition":{"x":11145.59418749938,"y":24985.438495388044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"24-hs\"}","id":"cddfbb92-c310-477a-9c66-b2a38ff8309f","savedPayload":{"position":{"x":10593.851066394142,"y":25608.319005926976},"targetPosition":{"x":11145.59418749938,"y":24985.438495388044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timelineCharts":[{"type":"Timeline Chart","name":"Indicators","layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 5,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n}","layers":[{"type":"Layer","name":"Candles","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"09e91fb3-cdff-4c0c-b320-417aeb4f2538","savedPayload":{"position":{"x":45798.08358329995,"y":30783.47112133315},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"dd7c8795-bb24-4438-9d77-b37a9000ad7f"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2b8f6dec-a712-4716-88d8-a33c01398956","savedPayload":{"position":{"x":45898.37673360377,"y":30788.25119234455},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"6929ebe7-6486-4299-add5-ed0282500d91"}}},{"type":"Layer","name":"Resistances","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"57d807c2-eeac-46a5-bd07-6f630a578562","savedPayload":{"position":{"x":45996.05938571397,"y":30809.588522972816},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Resistances","id":"0669d924-aace-46d1-b126-ccced8fd33cf"}}},{"type":"Layer","name":"Supports","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9a035c82-60cb-4ab4-b4f8-e40b0dde7c2c","savedPayload":{"position":{"x":46088.671022938994,"y":30846.72421469604},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Supports","id":"5e7a0e50-e6ed-4106-8025-8b35ad6c597c"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"25363a67-bcaf-4392-9ed8-2b6c99fb31c8","savedPayload":{"position":{"x":46173.797322491286,"y":30898.58369972401},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"1d7dd537-5f6f-4eb2-8e56-ddba0aef720f"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"63dbae3f-cebc-4587-9b9c-60ffe83e4143","savedPayload":{"position":{"x":46249.17664768098,"y":30963.730987652525},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"221c8d22-8a7f-4014-a7ed-0bafc886b123"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2203bc66-a385-438b-8050-0b812b655d0a","savedPayload":{"position":{"x":46312.78393052083,"y":31040.384533238812},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"d83476c3-2f0b-4d4a-abb2-0e47ed0a421d"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ea4ce55e-855e-4a61-ad12-222a0077e51e","savedPayload":{"position":{"x":46362.900460538505,"y":31126.454059169817},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"5ffc6a67-e33b-422b-8e36-f9711f93c723"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e9272caf-38f8-44de-a698-13f8b19b50c3","savedPayload":{"position":{"x":46398.167326095994,"y":31219.59432824167},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"0428f20b-9620-480e-a531-dbb2e5f59ef4"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"a9fcfaea-cd50-464e-aa65-1f2a3e98633d","savedPayload":{"position":{"x":46417.62588351845,"y":31317.267577006704},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"48f7953c-f62d-4292-b042-d1ac05f8f80f"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\"\n}","id":"8c1e005a-c340-4850-9de2-900a4cfc44bb","savedPayload":{"position":{"x":46420.70567572493,"y":31416.809466474464},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"3b9a3c93-6d41-440e-89a2-2fd1b2dde603"}}},{"type":"Layer","name":"Base5 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"6223f2d7-bdb4-474a-9e60-b54dc00680ea","savedPayload":{"position":{"x":46407.31337137963,"y":31515.483822428057},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"2404b1eb-c7c9-46e7-b22a-93cfcc3739f4"}}},{"type":"Layer","name":"Base6 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"a71c4fa6-d034-499c-9b30-7a46378cadc0","savedPayload":{"position":{"x":46377.87367543775,"y":31610.607629023725},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"1510fd36-633e-40a7-adbe-680660d64bd0"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"53c4ff8b-f3c5-4329-8fe4-6209c0ffb9f1","savedPayload":{"position":{"x":46333.185880681754,"y":31699.591341637817},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"70401ea0-3fed-4e40-8bba-a1e5adce9b8c"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"09cbb1f5-edad-4f9f-ab1c-7f9b0a0d8f7c","savedPayload":{"position":{"x":46274.467312818415,"y":31780.011584392756},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"06ac8eb7-8b14-42b1-9e2e-466280ade032"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"88466a0a-b385-417f-9efa-8c0139e05a5e","savedPayload":{"position":{"x":46203.31676678368,"y":31849.67669835976},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"014bba70-64d4-4035-b06d-145ee9b4c54c"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"6564d574-c6fd-4ee0-96ab-0e7c62e1cd7c","savedPayload":{"position":{"x":46121.67361107911,"y":31906.68977984249},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"768cc06c-6fdf-491a-a741-5e08f0e25e38"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"941fef87-83dd-457f-818c-71745fa1692a","savedPayload":{"position":{"x":46028.33674024209,"y":31950.48529383432},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"40794460-b815-498f-a245-e677de0eed86"}}}],"id":"1c96281c-523a-4597-b9b2-2db3d880ff49","savedPayload":{"position":{"x":45819.36840869368,"y":31385.419815840156},"targetPosition":{"x":45228.931388073186,"y":31502.74417203152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":400,"radius":0}}},"id":"ff535c6b-411f-4790-ab2b-c755c74de1b9","savedPayload":{"position":{"x":10460.77660275286,"y":25458.136395021345},"targetPosition":{"x":11145.59418749938,"y":24985.438495388044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 42351.89975036308,\n \"maxValue\": 51255.921014138075,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"9ee722c6-095f-4f4a-b8b2-9cb9bca115aa","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,"arrangementStyle":0},"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":"c4041768-1a6e-4f5b-8d7b-b681a175f27a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"98e6c917-f4b7-4b71-9215-de3ccaf3dc0c"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"e9404a3f-2768-4b17-ac7a-8b11e1a1957c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"858fd2be-abef-4173-abef-dedf17f00d47","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"8411d061-e010-4d33-b35c-e71d743fd403","savedPayload":{"position":{"x":10367.522901471777,"y":25280.4771258903},"targetPosition":{"x":11145.59418749938,"y":24985.438495388044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 15.455260570304773,\n \"maxValue\": 19.455260570304773,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"60aaeaeb-2247-4536-a1a2-cf7d731b6fc5","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"c230772e-ca08-45df-bad6-4b72be44d9a5","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"4a3ed8eb-a73e-4fb4-835a-681cf47d7373"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f9435119-1d3f-4106-9c78-531f6ef4714f","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"728d6f08-086f-41ba-9126-30ec56a45ea5"}}}],"id":"acbd2ecb-2f75-44b8-8659-26482cb6fb0b","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"a7f9fef6-c3f9-4e17-b894-9a5e154ccbbe","savedPayload":{"position":{"x":10319.501234034708,"y":25085.668754056125},"targetPosition":{"x":11145.59418749938,"y":24985.438495388044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 15.455260570304773,\n \"maxValue\": 19.455260570304773,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"1415a288-9d79-45c9-a55c-9991e8b6953b","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"33e885d3-27f0-4ff7-8715-bc2f945e698e","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"7ccbd0c1-c804-47e3-9314-14cbb756c806"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f3cd6f15-98f5-4165-b6c3-04b8796fb43d","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"08f223a8-9707-4c45-b638-1fe0e4a2b053"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"66440f58-8741-4b22-8146-00f772837545","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"66f1a9be-fe96-48c3-91e4-500c6e246423"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"3ba14173-bac8-4013-9a5c-b8aecd05e0ae","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"e432c706-cbcd-4af0-b23c-b18e5b29377a"}}}],"id":"ab7c3367-a36e-4a78-b43b-bfeea5fc5201","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0}}},"id":"156b9564-14a5-4148-8ca6-1e7b98d4189d","savedPayload":{"position":{"x":10319.495789693327,"y":24885.223944965113},"targetPosition":{"x":11145.59418749938,"y":24985.438495388044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"New Timeline Chart","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":"Basic Candles","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"a1e1be1e-abd3-4f1a-8276-5e85faf96711","savedPayload":{"position":{"x":9619.558264278454,"y":24766.74410426457},"targetPosition":{"x":9967.84087214802,"y":24538.842777211656},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Basic Candles","id":"4e14ecf7-3eaa-48ce-91fb-c6e1c806fdf8"}}},{"type":"Layer","name":"One-Candle Patterns","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"2f5c0f35-f7cf-47b0-b581-e316ec89ad4b","savedPayload":{"position":{"x":9551.970262622304,"y":24518.734805217813},"targetPosition":{"x":9967.84087214802,"y":24538.842777211656},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"One-Candle Patterns","id":"e11730aa-5ffb-42bd-8bfb-56e7fa36cd68"}}},{"type":"Layer","name":"Two-Candles Patterns","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"cb8fc837-b9de-4170-97dd-475fced9586a","savedPayload":{"position":{"x":9643.18441786344,"y":24278.227435341218},"targetPosition":{"x":9967.84087214802,"y":24538.842777211656},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Two-Candles Patterns","id":"3d5a0163-c683-43d8-b344-ec1113c4726c"}}},{"type":"Layer","name":"Three-Candles Patterns","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"0a2dcfc3-61d9-4a35-a1bf-749e1cb8d0fa","savedPayload":{"position":{"x":9858.371788945384,"y":24137.259854558724},"targetPosition":{"x":9967.84087214802,"y":24538.842777211656},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Three-Candles Patterns","id":"86ebf7ee-0102-4dc1-a597-0f0df3e07df8"}}}],"id":"55075e98-d2e8-46dd-a004-8087bf764d2f","savedPayload":{"position":{"x":9967.84087214802,"y":24538.842777211656},"targetPosition":{"x":10367.789556959418,"y":24690.467627068847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":600,"y":80},"width":150,"height":40,"radius":0}}},"id":"45aca655-16bb-4cf5-9eea-07d6c140845c","savedPayload":{"position":{"x":10367.521300165456,"y":24690.422017779598},"targetPosition":{"x":11145.59418749938,"y":24985.438495388044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"eb70203f-383c-4227-8b82-64458c8ceb62","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,"arrangementStyle":0},"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":"3a82f6d9-2063-4fd7-aa79-dedc4222c58c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"af19e56c-eaf1-4b0b-93f9-74b9ac1843c2"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"605b9ea8-5ed1-4750-8921-88bc481ffbc4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"30ac52a8-ee50-439c-83c8-df75ab49374a"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"3e97cb0b-80dd-4d12-8205-852c759a3f55","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"6a059555-2555-4c7f-a722-2ab4ca0440c5"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"76a918d5-1242-4b97-a252-550200546f5c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"c35fa0be-6e51-4d14-9a52-6b0174cc1aab"}}}],"id":"8658198e-ea8a-45ef-b05f-b2810aa3e015","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":40,"radius":0}}},"id":"6616907b-5ec0-4c2d-b47b-885343226b81","savedPayload":{"position":{"x":10460.770402341761,"y":24512.755142740196},"targetPosition":{"x":11145.59418749938,"y":24985.438495388044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"b10a1160-3d9b-44a5-97e9-dbfdc9f103b6","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,"arrangementStyle":0},"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":"b4fb2c12-42e4-496d-aea2-ccf8c90c2e6a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"5919a710-a950-4049-9605-3f127b7fac6b"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"fc3d15bc-ac9c-4150-9a26-4c8baef90266","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"c7030a88-152f-421c-8b32-66f3c222286a"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"c749facc-4350-43c1-b881-72c781475f56","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"25db80e6-c4cf-4568-98d3-0cba83625ece"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"30fa6c26-bdbb-4a70-a917-f42d99583938","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"f4b18249-5044-4b34-83f7-3cedbbe939c5"}}}],"id":"c689ea14-8d8b-4482-9cf3-c652904ebd27","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1620,"y":80},"width":150,"height":40,"radius":0}}},"id":"fabbc9b6-b752-4ba6-80a4-835eaa856948","savedPayload":{"position":{"x":10593.867942005458,"y":24362.550147873604},"targetPosition":{"x":11145.59418749938,"y":24985.438495388044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"d7c6c5e8-82d8-4f2a-a07e-66c3498d1fe5","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,"arrangementStyle":0},"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":"b978b005-7bc2-4246-b4d9-5fcfc463eacf","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"63636068-307e-4cea-b31f-f47e106cea2c"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"1ca55ee3-231b-41ad-9acd-24f043e8aa01","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"20848048-8efb-47b1-aaf0-789d2f6c5b1d"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"52850e27-6287-4005-ba6e-66f5b193e3ad","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"5e28998c-b35f-4cc0-9fd6-8ee5f5714545"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"46bd81b8-5b9f-4c5f-89bb-149e19bd0267","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"87b74841-4f6a-4658-b01b-7feb254b5d2f"}}}],"id":"0cf47550-1612-4cd7-8fdd-a68014bd52cc","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1470,"y":80},"width":150,"height":40,"radius":0}}},"id":"c285480b-3a39-4dd0-be1d-6470a97d22a7","savedPayload":{"position":{"x":10759.041300556155,"y":24248.589653721287},"targetPosition":{"x":11145.59418749938,"y":24985.438495388044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"4978dec9-1374-421a-865e-9e0d30682f65","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,"arrangementStyle":0},"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":"93d62cc0-6914-411e-bf9f-008271cd2965","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"573fb46f-78d2-4bf3-ad11-e42d2531d53e"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"cbb41381-e76d-44f5-8dd3-f9a8c0c0379f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"39d7a06d-5aad-4b03-8778-e4df8dacc825"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"88471305-9c12-4caf-856b-675fb2db2db3","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"82b46974-7a93-4066-a3b7-378b42710364"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"8cb92f6b-8ede-44ef-928a-36f4ec022af8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"7af9d35c-7464-4ed5-9ee6-ccf7a9943894"}}}],"id":"3ec4f352-fb06-4ade-8393-7a5a83765773","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1320,"y":80},"width":150,"height":40,"radius":0}}},"id":"ac6929d9-238c-4689-b2ee-3cc001be578b","savedPayload":{"position":{"x":10946.925109469086,"y":24177.437733514413},"targetPosition":{"x":11145.59418749938,"y":24985.438495388044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a9786387-316d-4b02-a53a-60187e2e17ed","savedPayload":{"position":{"x":11145.59418749938,"y":24985.438495388044},"targetPosition":{"x":11977.548614254114,"y":24985.413885429127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":933.1875,"y":529.375},"width":240,"height":113.625,"radius":0}}}],"id":"64fa2a31-21ea-4b56-a625-dc4082876a89","savedPayload":{"position":{"x":11977.548614254114,"y":24985.413885429127},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":0,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"t"}}}],"id":"c53a4385-3fb3-49d5-b506-99bcaef2c141","savedPayload":{"position":{"x":12809.806237131383,"y":24985.35640053908},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":0,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"c"}}},{"type":"Data Mine","name":"Buddha","code":"{ \n\"codeName\": \"Buddha\"\n}","sensorBots":[],"indicatorBots":[{"type":"Indicator Bot","name":"Candle Patterns","code":"{\n\"codeName\": \"Candle-Patterns\",\n\"repo\": \"Candle-Patterns-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates Candles Patterns for Time Frames of 01-hs and above.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Basic Candles","id":"3e933426-1c7b-45e1-845f-08a7d2684620","savedPayload":{"position":{"x":13013.679527195516,"y":11574.647742916512},"targetPosition":{"x":13213.4740995075,"y":11664.527233498671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"07be5b9b-e8fd-49fc-ab77-20f89fdea10f"}}},{"type":"Output Dataset","name":"Multi-Period-Market One-Candle Patterns","id":"201dc796-db42-49ce-8b9c-1b26c0f3a0ce","savedPayload":{"position":{"x":13053.773008970187,"y":11505.43035401585},"targetPosition":{"x":13213.4740995075,"y":11664.527233498671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"144d8665-1ff0-4db3-9340-a33fd7d0d098"}}},{"type":"Output Dataset","name":"Multi-Period-Market Two-Candles Patterns","id":"c20616cc-d93f-40fc-904a-025fc2799a75","savedPayload":{"position":{"x":13114.615218060771,"y":11461.962677650328},"targetPosition":{"x":13213.4740995075,"y":11664.527233498671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"8c35ce52-9dee-4d20-92e6-50ba7fd2882b"}}},{"type":"Output Dataset","name":"Multi-Period-Market Three-Candles Patterns","id":"c8074ffc-f5ff-4cb5-8e83-0adcecc82a0c","savedPayload":{"position":{"x":13211.46873119432,"y":11466.168099347926},"targetPosition":{"x":13213.4740995075,"y":11664.527233498671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"087fc67e-78f9-4204-ba5e-8b670566a716"}}}],"id":"0dc09316-0987-4d22-b600-bd3868942026","savedPayload":{"position":{"x":13213.4740995075,"y":11664.527233498671},"targetPosition":{"x":13427.670947273291,"y":11978.477228568285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candle Patterns Multi-Period-Market","code":"{\"mainUtility\": \"Self Reference\"}","id":"2d079388-93e4-4005-b392-c4a997904ccb","savedPayload":{"position":{"x":13236.229833924866,"y":11365.540590705074},"targetPosition":{"x":13393.866758309712,"y":11525.809343112047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"401fbf30-8faa-40e9-9707-fac2d35f6195"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","code":"{ \n\"mainUtility\": \"Market Starting Point\"\n}","id":"418e1725-b690-4a55-b5f7-a4a92465c162","savedPayload":{"position":{"x":13378.090018146784,"y":11311.418729308469},"targetPosition":{"x":13393.866758309712,"y":11525.809343112047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"85c548fd-9ef7-4936-a86d-2a206cf90039","savedPayload":{"position":{"x":13534.119041551294,"y":11363.003070936125},"targetPosition":{"x":13393.866758309712,"y":11525.809343112047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"id":"de8bf1ab-cf7b-41ab-b8cb-ae38b1e587ce","savedPayload":{"position":{"x":13393.866758309712,"y":11525.809343112047},"targetPosition":{"x":13427.670947273291,"y":11978.477228568285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"401fbf30-8faa-40e9-9707-fac2d35f6195","savedPayload":{"position":{"x":13603.179986581014,"y":11613.905042446066},"targetPosition":{"x":13427.670947273291,"y":11978.477228568285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"e100074c-7981-49e1-9d06-813104ee4c41","savedPayload":{"position":{"x":13762.503794823628,"y":11749.438334039018},"targetPosition":{"x":13427.670947273291,"y":11978.477228568285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"2a8f2e62-256b-4281-a470-3f640af21337","savedPayload":{"position":{"x":13838.07181053804,"y":11948.152768924294},"targetPosition":{"x":13427.670947273291,"y":11978.477228568285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3aaf9f93-0516-4b3d-9772-44be91615154","savedPayload":{"position":{"x":13950.490192396774,"y":11647.45024224731},"targetPosition":{"x":13606.59207657629,"y":12362.027718520723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Calculates Candles Patterns for Time Frames of 45-min and below.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily Basic Candles","id":"3fc6cd67-c356-41fc-89d9-5c1cdcdd7360","savedPayload":{"position":{"x":13814.82981676934,"y":11210.620425655228},"targetPosition":{"x":14023.609954390777,"y":11501.474680336007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"9e6d7f95-b2fe-466e-9a5d-175479cbf85d"}}},{"type":"Output Dataset","name":"Multi-Period-Daily One-Candle Patterns","id":"7b078979-c28c-4ba5-8305-d469c8d4ec84","savedPayload":{"position":{"x":13915.392401579804,"y":11160.138295803597},"targetPosition":{"x":14023.609954390777,"y":11501.474680336007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f0a11771-dd69-4b9a-9347-7cb2d1f231ff"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Two-Candles Patterns","id":"5ab95923-5553-40a7-836e-14b96f8a4764","savedPayload":{"position":{"x":14026.050837456278,"y":11143.489245220206},"targetPosition":{"x":14023.609954390777,"y":11501.474680336007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"4f1260c8-6d74-454e-963a-fa3ff910329c"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Three-Candles Patterns","id":"cb6acbaf-bf43-4bf6-b8ca-7689130cc9cf","savedPayload":{"position":{"x":14137.001698365588,"y":11162.191028915156},"targetPosition":{"x":14023.609954390777,"y":11501.474680336007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"b60cb94f-79c5-410c-b166-abc97d0f2bc3"}}}],"id":"bcfa61bd-e1d0-4a60-9fd5-ab7dabe4fd39","savedPayload":{"position":{"x":14023.609954390777,"y":11501.474680336007},"targetPosition":{"x":14086.948199287108,"y":11924.601188793304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candles Patterns Multi-Period-Daily","code":"{\"mainUtility\": \"Self Reference\"}","id":"a7ea36fb-cc2e-4d55-b021-e67d8c5a7020","savedPayload":{"position":{"x":14155.912206707464,"y":10958.342657178391},"targetPosition":{"x":14348.13586069017,"y":11259.956647901501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"3a20d7e9-d551-4346-81c7-e3b0098bef99"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","code":"{\"mainUtility\": \"Market Starting Point\"}","id":"48b53dc5-015c-43f1-9485-047aaaffe0f7","savedPayload":{"position":{"x":14369.563493443755,"y":10902.913742173105},"targetPosition":{"x":14348.13586069017,"y":11259.956647901501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","code":"{ \n\"mainUtility\": \"Market Ending Point\"\n}","id":"49d2c9ad-bdde-427a-8590-801aa4422cca","savedPayload":{"position":{"x":14575.278621413228,"y":10983.731390945131},"targetPosition":{"x":14348.13586069017,"y":11259.956647901501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"19bf518a-1e20-4e3a-8f40-8e07324f634b","savedPayload":{"position":{"x":14694.258957517683,"y":11170.063669211186},"targetPosition":{"x":14348.13586069017,"y":11259.956647901501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"id":"2a7a3bf2-9044-4040-95a7-28c1a339a37f","savedPayload":{"position":{"x":14348.13586069017,"y":11259.956647901501},"targetPosition":{"x":14086.948199287108,"y":11924.601188793304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"3a20d7e9-d551-4346-81c7-e3b0098bef99","savedPayload":{"position":{"x":14645.560909474185,"y":11479.627921322592},"targetPosition":{"x":14086.948199287108,"y":11924.601188793304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"4d03c099-0d5e-4668-a347-c0de2f42f8bd","savedPayload":{"position":{"x":14515.901435945685,"y":11860.04841298157},"targetPosition":{"x":14086.948199287108,"y":11924.601188793304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"3ef2f54d-64c9-4264-a298-0c5a908458ab","savedPayload":{"position":{"x":14487.323542021102,"y":12081.165342539933},"targetPosition":{"x":14086.948199287108,"y":11924.601188793304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8a7ce3e2-20a1-496b-86bf-2d7842f88536","savedPayload":{"position":{"x":14226.675457122019,"y":11867.678888774926},"targetPosition":{"x":13606.59207657629,"y":12362.027718520723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Basic Candles","code":"{\n \"codeName\": \"Basic-Candles\",\n \"singularVariableName\": \"basicCandle\",\n \"pluralVariableName\": \"basicCandles\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"07be5b9b-e8fd-49fc-ab77-20f89fdea10f","savedPayload":{"position":{"x":14428.195169444913,"y":11854.812092996133},"targetPosition":{"x":14282.02559347152,"y":12197.197566354245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"9e6d7f95-b2fe-466e-9a5d-175479cbf85d","savedPayload":{"position":{"x":14601.514604868862,"y":12006.69816479026},"targetPosition":{"x":14282.02559347152,"y":12197.197566354245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"Basic Candles Variables","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"7d35e864-2f37-4d1c-912d-225952131ffd","savedPayload":{"position":{"x":15127.939028481416,"y":11816.525419765045},"targetPosition":{"x":15387.688231694168,"y":11918.989845926302},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"52215804-fb71-43ed-a232-3b29d843cb58","savedPayload":{"position":{"x":15387.688231694168,"y":11918.989845926302},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"bdeaed7f-2923-4fde-a7ea-257f00bb7ee9","savedPayload":{"position":{"x":15246.07240005028,"y":11608.820466242958},"targetPosition":{"x":15466.520322835773,"y":11780.561876712998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b8f2240b-03a9-4fd5-8e37-d43237554239","savedPayload":{"position":{"x":15466.520322835773,"y":11780.561876712998},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"name","code":"{\n \"codeName\": \"name\",\n \"isString\": true\n}","formula":{"type":"Formula","code":"variable.name","id":"5ac4a021-ae1b-45d7-80ea-09587174c038","savedPayload":{"position":{"x":15417.707055580626,"y":11443.434740736122},"targetPosition":{"x":15580.974897394168,"y":11670.19758162406},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8220f919-2232-47b2-8bcb-1d30a905c026","savedPayload":{"position":{"x":15580.974897394168,"y":11670.19758162406},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"size","code":"{ \n\"codeName\": \"size\",\n\"isString\": true\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.size","id":"8162dea0-df67-42b5-8223-7533f950af7a","savedPayload":{"position":{"x":15629.303554034559,"y":11332.716355251554},"targetPosition":{"x":15721.874082289012,"y":11596.528740357437},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2bff73a1-c5c2-4413-91ed-9d2aaf642d83","savedPayload":{"position":{"x":15721.874082289012,"y":11596.528740357437},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"direction","code":"{ \n\"codeName\": \"direction\",\n\"isString\": true\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.direction","id":"770f6a35-9069-49ba-9c12-99dc6e5ff54a","savedPayload":{"position":{"x":15863.297678003159,"y":11286.411919238653},"targetPosition":{"x":15877.835942969192,"y":11565.740790632775},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"871bc42d-f3f7-4896-b575-ca23f325e50f","savedPayload":{"position":{"x":15877.835942969192,"y":11565.740790632775},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"upperShadowPercent","code":"{ \n\"codeName\": \"upperShadowPercent\",\n\"isString\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.upperShadowPercent","id":"1645f231-45ab-48b5-9891-45f27e2b4d7e","savedPayload":{"position":{"x":16100.383887967386,"y":11307.775647761064},"targetPosition":{"x":16035.898908294184,"y":11579.830281086974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"dec83c16-8f66-4403-9dda-e536223e7577","savedPayload":{"position":{"x":16035.898908294184,"y":11579.830281086974},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bodyPercent","code":"{ \n\"codeName\": \"bodyPercent\",\n\"isString\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bodyPercent","id":"36408e7c-d9cc-4d63-9115-feffa763b85f","savedPayload":{"position":{"x":16322.022917705659,"y":11395.267266757755},"targetPosition":{"x":16183.698010961622,"y":11638.159796285936},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cba04177-1edd-444f-94a3-79784d84d70e","savedPayload":{"position":{"x":16183.698010961622,"y":11638.159796285936},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"lowerShadowPercent","code":"{ \n\"codeName\": \"lowerShadowPercent\",\n\"isString\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.lowerShadowPercent","id":"71464adc-3bd3-47b8-b018-cbacf897c119","savedPayload":{"position":{"x":16510.595118433743,"y":11541.805900307281},"targetPosition":{"x":16309.28417074969,"y":11735.742370968435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c2c5753a-2e74-4429-9b6a-aa016a753be2","savedPayload":{"position":{"x":16309.28417074969,"y":11735.742370968435},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"body","code":"{ \n\"codeName\": \"body\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.body","id":"1bc97398-5645-4452-9169-f62efc0a7fe1","savedPayload":{"position":{"x":16649.862514301047,"y":11735.225677070326},"targetPosition":{"x":16402.11751924421,"y":11864.671996317895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f0019951-d651-4fcf-888e-0a0cf1564c98","savedPayload":{"position":{"x":16402.11751924421,"y":11864.671996317895},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"upperShadow","code":"{ \n\"codeName\": \"upperShadow\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.upperShadow","id":"cf426ed9-53d3-411e-acf1-1694c5d45b89","savedPayload":{"position":{"x":16729.0764873906,"y":11960.582147915231},"targetPosition":{"x":16454.858369364494,"y":12014.768933801128},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2d3b26eb-15bc-4272-b296-9658ac24baa9","savedPayload":{"position":{"x":16454.858369364494,"y":12014.768933801128},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"lowerShadow","code":"{ \n\"codeName\": \"lowerShadow\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.lowerShadow","id":"a0909b34-9ad9-4290-aa93-5b1731b74a66","savedPayload":{"position":{"x":16742.01206754522,"y":12198.188052716076},"targetPosition":{"x":16463.403229052834,"y":12173.186128916357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2369782b-6afb-41e1-a93f-721c7442e5c3","savedPayload":{"position":{"x":16463.403229052834,"y":12173.186128916357},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"length","code":"{ \n\"codeName\": \"length\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.length","id":"3639b9ee-c558-4699-9b48-2ddfdc59fa33","savedPayload":{"position":{"x":16686.968822601964,"y":12430.21258429505},"targetPosition":{"x":16426.82231102211,"y":12327.932168126248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a6773db1-97fb-418d-b7cf-d4298054f376","savedPayload":{"position":{"x":16426.82231102211,"y":12327.932168126248},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"meanBody","code":"{ \n\"codeName\": \"meanBody\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.meanBody","id":"a45ab78a-fa03-469b-ab64-78fd184d9dd5","savedPayload":{"position":{"x":16568.563673527475,"y":12637.657602791887},"targetPosition":{"x":16347.943146200396,"y":12465.989970586961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c32b5645-7bbe-4f06-aaef-d9efc3a5c9da","savedPayload":{"position":{"x":16347.943146200396,"y":12465.989970586961},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"avgRef","code":"{ \n\"codeName\": \"avgRef\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.avgRef","id":"26313abc-cd03-4fb9-b54d-2a0d67a3c0da","savedPayload":{"position":{"x":16396.95716008808,"y":12803.215606722491},"targetPosition":{"x":16233.558031826937,"y":12576.405072409163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0bdc3b36-d092-421f-8741-a0ecfa8fcc41","savedPayload":{"position":{"x":16233.558031826937,"y":12576.405072409163},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Nbodies","code":"{ \n\"codeName\": \"Nbodies\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.Nbodies","id":"f5b650b4-497d-4eef-84f8-c53b5703dbed","savedPayload":{"position":{"x":16185.456446329934,"y":12913.579981425799},"targetPosition":{"x":16092.631933821867,"y":12649.946689224127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cf0a624b-44cb-4926-8e26-867ea485e3fe","savedPayload":{"position":{"x":16092.631933821867,"y":12649.946689224127},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"dojiFactor","code":"{ \n\"codeName\": \"dojiFactor\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.dojiFactor","id":"8e3696bf-dace-4ecb-a9e7-db654ba86ed8","savedPayload":{"position":{"x":15951.338423271372,"y":12960.07191237919},"targetPosition":{"x":15936.664027922136,"y":12680.941417585764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cda80e33-8ed9-4579-8c45-99da25652634","savedPayload":{"position":{"x":15936.664027922136,"y":12680.941417585764},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"sizeFactor","code":"{ \n\"codeName\": \"sizeFactor\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.sizeFactor","id":"08e5507c-e88f-410e-ac54-886d8ce157d2","savedPayload":{"position":{"x":15714.911759608227,"y":12938.753275437566},"targetPosition":{"x":15778.880197046594,"y":12666.480185362861},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"20fadb1a-1f55-4b10-ba45-cda61d8d0157","savedPayload":{"position":{"x":15778.880197046594,"y":12666.480185362861},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Nlengths","code":"{ \n\"codeName\": \"Nlengths\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.Nlengths","id":"addc3851-bbe2-47ac-8652-5b745e12918a","savedPayload":{"position":{"x":15481.703225238807,"y":12854.291052921695},"targetPosition":{"x":15630.890909021455,"y":12608.227366997262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0a736450-a2e1-41a0-8c29-cd2434296872","savedPayload":{"position":{"x":15630.890909021455,"y":12608.227366997262},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"sizeMethod","code":"{ \n\"codeName\": \"sizeMethod\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.sizeMethod","id":"e2109d1f-c4aa-46d6-a6b7-75d1ffd9c0ee","savedPayload":{"position":{"x":15304.563842686297,"y":12704.592493090222},"targetPosition":{"x":15505.452513022656,"y":12510.667579840174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"23853614-5c16-4e3e-b1ae-d3fda37d5884","savedPayload":{"position":{"x":15505.452513022656,"y":12510.667579840174},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"meanLength","code":"{ \n\"codeName\": \"meanLength\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.meanLength","id":"4731c75f-5e23-4972-ba37-10bd4363ee0d","savedPayload":{"position":{"x":15165.029513378944,"y":12510.925606284693},"targetPosition":{"x":15412.45005195976,"y":12381.611095625749},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fc7702c5-1b49-4ed6-b2b3-fde741557115","savedPayload":{"position":{"x":15412.45005195976,"y":12381.611095625749},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"min","code":"{ \n\"codeName\": \"min\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.candleMin","id":"016b76f2-2f06-408e-986f-e29cd5edc107","savedPayload":{"position":{"x":15085.888117137885,"y":12285.431442875508},"targetPosition":{"x":15359.625290852648,"y":12231.37526005558},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"31730ec0-eedf-404d-9a38-bd065bdc2064","savedPayload":{"position":{"x":15359.625290852648,"y":12231.37526005558},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4d364dfd-44f1-4d8e-87fd-5aa54564e167","savedPayload":{"position":{"x":15907.153147447421,"y":12123.258200863127},"targetPosition":{"x":14282.02559347152,"y":12197.197566354245},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* ¡¡¡ VERY IMPORTANT !!!\n\"PLEASE READ BEFORE STARTING ALL DOCUMENTATION RELATED TO THIS INDICATOR ON THE SUPERALGOS WEBSITE\" */\n\n/* INTRODUCTION:\nThere are a lot of combinations in order to construct a candle. That's why we are going to define 4 families of candles based on their appearence.\n1) “CLASSIC CANDLES”: These candles have two shadows shorter than the body.\n2) “MARUBOZU CANDLES”: These candles have no at least one shadow. The shadow, if present, cannot be longer than the body. \n3) “SPINNING TOP CANDLES”: These candles have differents opening and closing prices and have at least one shadow. At the same time at least one shadow has to be longer than the body.\n4) “DOJI CANDLES”: These candles have no body. The open price is equal to the close price. */\n\n// ---------------------------------------------------------------------------------------------------------------------\n// From here the variables to be used will be defined\n// ---------------------------------------------------------------------------------------------------------------------\n\n/* The following variables could be modified by the user to adapt the indicator with his preferences\n(Please, read the documentation before) */\n\nlet sizeMethod = \"SMA\" // Choose \"SMA\" or \"EMA\" to calculate the average length of the last \"Nlengths\" candles\nlet Nlengths = 20 // Default value: 20 - \"Nlengths\" is the number of candles to calculate the average length value\nlet sizeFactor = 75 // Default value: 75% - \"sizeFactor\" is to define \"Long\" or \"Short\" size\nlet Nbodies = 10 // Default value: 10 - \"Nbodies\" is the number of bodies to calculate the average bodie value\nlet dojiFactor = 3 // Default value: 3% - \"dojiFactor\" is to define when a candle is \"doji\" or not\n\n /* In order to avoid errors, the initial condition of the name of the candle is defined */\nvariable.name = \"Unknown\" // To be used on the Plotter Panel and Conditions\n\n/* Candles as dependencies are defined */\nlet candle = record.current \n\n/* The height of the body */\nlet body = Math.abs (candle.close-candle.open)\n\n/* Array of N bodies is defined to verify if a candle has a Short Body or a Long Body */\nif (variable.lastNbodies.length > Nbodies) {\n variable.lastNbodies.shift() // Remove the first element of the array to keep it at a maximun of N elements\n}\nlet meanBody \nif (variable.lastNbodies.length < Nbodies) { // If \"lastNbodies\" array hasn't enough bodies, zero value is defined\n meanBody = 0 \n} else { \n let sum = 0 // Initialize sum variable \n for (let i = variable.lastNbodies.length-Nbodies; i < variable.lastNbodies.length; i++) { // Iterate through the last periods\n sum = sum + variable.lastNbodies[i]\n } \n meanBody = sum/Nbodies\n}\nvariable.lastNbodies.push(body) // Add the current body value to the \"lastNbodies\" array for next cycle\n\n /* Total length of the candle, equivalent to the sum of upper shadow, lower shadow and body */\nlet length = candle.max - candle.min \n\n/* Calculating average candles length \"EMA\" or \"SMA\" */\nif (sizeMethod === \"EMA\") {\n let k = 2 / (Nlengths + 1)\n variable.EMAlength = length * k + variable.previousEMAlength * (1-k)\n variable.previousEMAlength = variable.EMAlength\n variable.avgRef = variable.EMAlength * sizeFactor / 100\n variable.SMAlength = 0\n} \nif (sizeMethod === \"SMA\") {\n variable.EMAlength = 0\n if (variable.lastNlengths.length > Nlengths) {\n variable.lastNlengths.shift() // Remove the first element of the array to keep it at a maximun of N elements \n } \n if (variable.lastNlengths.length < Nlengths) { // If \"lastNlengths\" array hasn't enough candles length, zero value is defined\n variable.SMAlength = 0 \n variable.avgRef = 0 \n } else { \n let sum = 0 // Initialize sum variable \n for (let i = variable.lastNlengths.length-Nlengths; i < variable.lastNlengths.length; i++) { // Iterate through the last periods\n sum = sum + variable.lastNlengths[i]\n } \n variable.SMAlength = sum/Nlengths\n variable.avgRef = variable.SMAlength * sizeFactor / 100 // To be used in Shapes\n }\n variable.lastNlengths.push(length) // Add the current length value to the \"lastNlengths\" array for next cycle\n}\n\n/* Only one MA is calculated, the other is defined as 0. It is useful to integrate both variables into one for future operations */\nvariable.meanLength = variable.SMAlength + variable.EMAlength // To be used in Shapes and Conditions\n\n/* Defining if a candle is \"Long\" or \"Short\" */\nlet size\nif (length > variable.avgRef) {\n size = \"Long\"\n} else {\n size = \"Short\"\n} \n\n/* Green candles are \"Bullish\" and red candles are \"Bearish\" */\nlet direction \nif (candle.close > candle.open) {\n direction = \"Bullish\"\n} else {\n direction = \"Bearish\"\n}\n\n/* The value of the upper shadow */\nlet upperShadow \nif (direction === \"Bullish\") {\n upperShadow = candle.max-candle.close\n} else {\n upperShadow = candle.max-candle.open\n}\n\n/* The value of the lower shadow */\nlet lowerShadow \nif (direction === \"Bullish\") {\n lowerShadow = candle.open-candle.min\n} else {\n lowerShadow = candle.close-candle.min\n}\n\n/* Four possibilities of combinations of the shadows are defined: \"lower\", \"upper\", \"both\", \"none\" */\nlet shadow\nif (upperShadow > 0 && lowerShadow > 0) {\n shadow = \"Both\"\n}\nif (upperShadow === 0 && lowerShadow === 0) {\n shadow = \"None\"\n}\nif (upperShadow > 0 && lowerShadow === 0) {\n shadow = \"Upper\"\n}\nif (upperShadow === 0 && lowerShadow > 0) {\n shadow = \"Lower\"\n}\n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here the name of the candles will be defined\n// ----------------------------------------------------------------------------------------------------------------------------\n\nif (body > length*dojiFactor/100) { // From here all kind of candles that are NOT \"doji\" are defined\n\n/* \"CLASSIC CANDLES\" family:\nThese candles have the following characteristics in common:\n1) Both shadows are present.\n2) Each shadow is shorter than the body. \n3) The opening price differs from the closing price. */\n\nif (shadow === \"Both\" && upperShadow <= body && lowerShadow <= body) {\n\n/* \"SHORT GREEN CANDLE\" and \"SHORT RED CANDLE\" properties:\n1) Bullish or Bearish.\n2) Relative Size: Short. */\n\nif (direction === \"Bullish\" && size === \"Short\") {\n variable.name = \"Short Green Candle\"\n}\nif (direction === \"Bearish\" && size === \"Short\") {\n variable.name = \"Short Red Candle\"\n}\n\n/* \"GREEN CANDLE\" and \"RED CANDLE\" properties: \n1) Bullish or Bearish.\n2) Relative Size: Long . */\n\nif (direction === \"Bullish\" && size === \"Long\") {\n variable.name = \"Green Candle\"\n}\nif (direction === \"Bearish\" && size === \"Long\") {\n variable.name = \"Red Candle\"\n}\n\n/* \"LONG GREEN CANDLE\" and \"LONG RED CANDLE\" properties:\n1) Bullish or Bearish respectively.\n2) The body is at least three times higher than the mean body.\n4) Relative Size: Long. */\n\nif (direction === \"Bullish\" && size === \"Long\" && body >= meanBody*3) {\n variable.name = \"Long Green Candle\"\n}\nif (direction === \"Bearish\" && size === \"Long\" && body >= meanBody*3) {\n variable.name = \"Long Red Candle\"\n}\n\n} // Closing \"Classic Candles\" Family \n\n/* \"MARUBOZU CANDLES\" family:\nThese candles have the following characteristics in common:\n1) Lack at least one shadow.\n2) If it has one shadow, it must be shorter than the body.\n3) The opening price differs from the closing price.\n4) Relative Size: Short or Long. */\n\n/* \"GREEN MARUBOZU\" and \"RED MARUBOZU\" properties: \n1) Bullish or Barish.\n2) No shadows. */\n\nif (direction === \"Bullish\" && shadow === \"None\") {\n variable.name = \"Green Marubozu\"\n}\nif (direction === \"Bearish\" && shadow === \"None\") {\n variable.name = \"Red Marubozu\"\n}\n\n/* \"OPENING GREEN MARUBOZU\" properties: \n1) Bullish.\n2) No lower shadow. */\n\nif (direction === \"Bullish\" && shadow === \"Upper\" && upperShadow <= body) {\n variable.name = \"Opening Green Marubozu\"\n}\n\n/* \"CLOSING GREEN MARUBOZU\" properties:\n1) Bullish.\n2) No upper shadow. */\n\nif (direction === \"Bullish\" && shadow === \"Lower\" && lowerShadow <= body) {\n variable.name = \"Closing Green Marubozu\"\n}\n\n/* \"CLOSING RED MARUBOZU\" properties:\n1) Bearish.\n2) No lower shadow. */\n\nif (direction === \"Bearish\" && shadow === \"Upper\" && upperShadow <= body) {\n variable.name = \"Closing Red Marubozu\"\n}\n\n/* \"OPENING RED MARUBOZU\" properties: \n1) Bearish.\n2) No upper shadow. */\n\nif (direction === \"Bearish\" && shadow === \"Lower\" && lowerShadow <= body) {\n variable.name = \"Opening Red Marubozu\"\n}\n\n/* \"SPINNING TOP CANDLES\" family:\nThese candles have the following characteristics in common:\n1) Have at least one shadow.\n2) At least one shadow is greater than the body.\n3) The opening price differs from the closing price. */\n\n/* \"GREEN SPINNING TOP\" and \"RED SPINNING TOP\" properties:\n1) Bullish or Bearish.\n4) Relative Size: Short or Long. \n5) If it's relative size is Long, none of the shadows can exceed three times the body. */\n\nif (shadow !== \"None\") { \n if (upperShadow > body || lowerShadow > body) { \n if (size === \"Long\") {\n if (upperShadow > 3*body || lowerShadow > 3*body) {\n } else {\n if (direction === \"Bullish\") {\n variable.name = \"Green Spinning Top\"\n } else {\n variable.name = \"Red Spinning Top\"\n }\n } \n } else {\n if (direction === \"Bullish\") {\n variable.name = \"Green Spinning Top\"\n } else {\n variable.name = \"Red Spinning Top\"\n }\n }\n } \n} \n\n/* \"HIGH WAVE\" properties:\n1) Bullish or Bearish.\n2) Relative Size: Long.\n3) The length of at least one shadow is at least 3 times larger than the body.*/\n\nif (shadow !== \"None\" && size === \"Long\") {\n if (upperShadow > 3*body || lowerShadow > 3*body) { \n variable.name = \"High Wave\"\n } \n}\n\n} else { // Closing the initial \"dojiFactor\" if condition, from here \"Doji Candles\" family are defined \n\n/* \"DOJI CANDLES\" family:\nThese candles have the following characteristics in common:\n1) Have no body, or very small body if it is allowed. */\n\n/* \"FOUR-PRICE DOJI\" properties:\n1) No shadows.\n2) Relative Size: Short.*/\n\nif (shadow === \"None\" && size === \"Short\") {\n variable.name = \"Four-Price Doji\"\n}\n\n/* \"STAR DOJI\" properties:\n1) Body is located nearly mid-range (between 60% and 40% of total length).\n2) Relative Size: Short. */\n\nif (size === \"Short\" && upperShadow <= length * 0.6 && upperShadow >= length * (0.4 - dojiFactor/100)) {\n variable.name = \"Star Doji\"\n}\n\n/* \"LONG-LEGGED DOJI\" properties:\n1) Body is located nearly mid-range (between 60% and 40% of total length).\n2) Relative Size: Long. */\n\nif (size === \"Long\" && upperShadow <= length * 0.6 && upperShadow >= length * (0.4 - dojiFactor/100)) {\n variable.name = \"Long-Legged Doji\"\n}\n\n/* \"DRAGONFLY DOJI\" properties:\n1) Upper shadow shorter than 1% of total candle length.\n2) Relative Size: Long. */\n\nif (size === \"Long\" && upperShadow <= length * 0.01) {\n variable.name = \"Dragonfly Doji\"\n}\n\n/* \"GRAVESTONE DOJI\" properties:\n1) Lower shadow shorter than 1% of total candle length.\n2) Relative Size: Long.*/\n\nif (size === \"Long\" && lowerShadow <= length * 0.01) {\n variable.name = \"Gravestone Doji\"\n}\n\n/* \"GENERIC DOJI\" properties:\n1) None of the above five Doji. */\n\nif (variable.name === \"Unknown\") {\n variable.name = \"Generic Doji\"\n}\n\n} // Closing the \"dojiFactor\" else\n\n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here all the variables that will be written in the records are defined \n// ----------------------------------------------------------------------------------------------------------------------------\n\nvariable.size = size // To be used on the Plotter Panel and Conditions\nvariable.direction = direction // To be used on the Plotter Panel and Conditions\nif (length > 0) { // Condition to avoid dividing by 0\n variable.upperShadowPercent = upperShadow/length*100 // To be used on the Plotter Panel\n variable.bodyPercent = body/length*100 // To be used on the Plotter Panel\n variable.lowerShadowPercent = lowerShadow/length*100 // To be used on the Plotter Panel\n} else {\n variable.lowerShadowPercent = 0\n variable.bodyPercent = 0\n variable.upperShadowPercent = 0\n}\nvariable.Nbodies = Nbodies // To be used on the Plotter Panel\nvariable.sizeFactor = sizeFactor // To be used on the Plotter Panel\nvariable.dojiFactor = dojiFactor // To be used on the Plotter Panel\nvariable.Nlengths = Nlengths // To be used on the Plotter Panel\nvariable.sizeMethod = sizeMethod // To be used on the Plotter Panel\nvariable.candleMin = candle.min // To be used in Shapes\nvariable.length = length // To be used in Conditions\nvariable.upperShadow = upperShadow // To be used in Conditions\nvariable.lowerShadow = lowerShadow // To be used in Conditions\nvariable.body = body // To be used in Conditions\nvariable.meanBody = meanBody // To be used in Conditions\n","id":"119670a5-5f25-4a75-aaad-6939a18aebf0","savedPayload":{"position":{"x":15578.211960985802,"y":12826.18654284573},"targetPosition":{"x":15202.902576599441,"y":12756.938898857712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"shortcutKey":"f"}}},"id":"351fa6f0-1fbb-4e1b-9d95-3599476aed35","savedPayload":{"position":{"x":15202.902576599441,"y":12756.938898857712},"targetPosition":{"x":14839.5003498846,"y":12684.719289550252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"/* ¡¡¡ VERY IMPORTANT !!!\n\"PLEASE READ BEFORE STARTING ALL DOCUMENTATION RELATED TO THIS INDICATOR ON THE SUPERALGOS WEBSITE\" */\n\n/* It is necessary to define when a candle has a long or a short body. To do that, the bodies of the last N candles have to be averaged. */\nvariable.lastNbodies = [ ] // Define \"lastNbodies\" array to record the value of the last N bodies (SMA)\n\n/* It is necessary to define when a candle is \"Long\" or \"Short\". To do that, the length of the last N candles have to be averaged. */\nvariable.previousEMAlength = 0 // Initialize the variable previous enter to the main loop (EMA)\nvariable.lastNlengths = [ ] // Define \"lastNlengths\" array to record the value of the last N candles length (SMA)","id":"70e6788a-2518-48cf-8493-27f1e7e5ad61","savedPayload":{"position":{"x":15019.074641186478,"y":13213.234372073503},"targetPosition":{"x":14959.275402183777,"y":13036.739578043598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0b2207a1-b217-4c06-92bd-6985d621d035","savedPayload":{"position":{"x":14959.275402183777,"y":13036.739578043598},"targetPosition":{"x":14839.5003498846,"y":12684.719289550252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f2638b08-3f3b-4574-9e89-dc41f984273d","savedPayload":{"position":{"x":14839.5003498846,"y":12684.719289550252},"targetPosition":{"x":14282.02559347152,"y":12197.197566354245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7519e3d8-b5ec-47eb-84c9-8c9262c9efc6","savedPayload":{"position":{"x":14379.181683083678,"y":12185.939971032949},"targetPosition":{"x":13606.59207657629,"y":12362.027718520723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Basic Candles","id":"09e0a24c-ead1-40c6-9e43-72b46e4294c5"}}},{"type":"Product Definition","name":"One-Candle Patterns","code":"{\n \"codeName\": \"One-Candle-Patterns\",\n \"singularVariableName\": \"oneCandlePattern\",\n \"pluralVariableName\": \"oneCandlePatterns\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"144d8665-1ff0-4db3-9340-a33fd7d0d098","savedPayload":{"position":{"x":13855.232228880854,"y":12290.122975741639},"targetPosition":{"x":13659.624143226229,"y":12460.058623299085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"f0a11771-dd69-4b9a-9347-7cb2d1f231ff","savedPayload":{"position":{"x":13918.821920909919,"y":12437.591273370403},"targetPosition":{"x":13659.624143226229,"y":12460.058623299085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"One-Candle Patterns Records","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"6269672d-95af-44a9-8f10-52f7d4a6892b","savedPayload":{"position":{"x":14642.838820368012,"y":12623.8765135383},"targetPosition":{"x":14738.27800538994,"y":12816.34542755674},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"023fd450-0cae-4b41-8cb2-c446ac69bf32","savedPayload":{"position":{"x":14738.27800538994,"y":12816.34542755674},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"6902c73f-da76-4ca0-b8c2-4ac0351c9a59","savedPayload":{"position":{"x":14881.44398764256,"y":12581.15845812447},"targetPosition":{"x":14857.787532492319,"y":12794.895160068027},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ebafaaab-38a0-4bed-a8ea-169f0e92b1cb","savedPayload":{"position":{"x":14857.787532492319,"y":12794.895160068027},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"name","code":"{ \n\"codeName\": \"name\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.name","id":"ae345ad9-8364-4e58-bd0a-8b44803b1d98","savedPayload":{"position":{"x":15105.334254601305,"y":12674.617034283336},"targetPosition":{"x":14969.818118375286,"y":12841.642442325423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b633fced-5335-4a72-b0cf-ebb6237e2a17","savedPayload":{"position":{"x":14969.818118375286,"y":12841.642442325423},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trend","code":"{ \n\"codeName\": \"trend\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trend","id":"5cd8361b-112f-4a4f-9fcd-42a2ff493e96","savedPayload":{"position":{"x":15243.112905761813,"y":12874.300324548805},"targetPosition":{"x":15038.748434274363,"y":12941.516761999483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"853f4eb3-8068-47d1-9726-22b0c7e835ad","savedPayload":{"position":{"x":15038.748434274363,"y":12941.516761999483},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"forecast","code":"{ \n\"codeName\": \"forecast\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.forecast","id":"3b9c18d5-c9e8-4fad-bb3c-1c46751b91a9","savedPayload":{"position":{"x":15251.075425193969,"y":13116.315266371254},"targetPosition":{"x":15042.736624804726,"y":13062.537889781352},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1325daec-fb39-4cb8-acec-14adc2ee94e9","savedPayload":{"position":{"x":15042.736624804726,"y":13062.537889781352},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trendLine","code":"{ \n\"codeName\": \"trendLine\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trendLine","id":"d4a6b997-360b-442b-a08c-b75c331a6a84","savedPayload":{"position":{"x":15049.859099145022,"y":13241.555780756775},"targetPosition":{"x":14979.889341311587,"y":13166.075051767053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"e1a74ac9-f660-4d09-89e9-f8eaebf137c4","savedPayload":{"position":{"x":14979.889341311587,"y":13166.075051767053},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bearishArrowHead","code":"{ \n\"codeName\": \"bearishArrowHead\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bearishArrowHead","id":"7ca628f3-61d6-4b1f-a4a8-610d07bd8bdb","savedPayload":{"position":{"x":14889.607307430499,"y":13321.232530761527},"targetPosition":{"x":14871.637870524024,"y":13219.891481081962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"d9837267-f999-420e-8906-169c546fc7f5","savedPayload":{"position":{"x":14871.637870524024,"y":13219.891481081962},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bullishArrowHead","code":"{ \n\"codeName\": \"bullishArrowHead\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bullishArrowHead","id":"9ddcf2bf-57b5-489e-a7a5-496afd9b7301","savedPayload":{"position":{"x":14712.278539578045,"y":13301.545016896098},"targetPosition":{"x":14751.741640627028,"y":13206.586613440515},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"c474fa25-64ec-470c-ab04-4132e0f3f9a3","savedPayload":{"position":{"x":14751.741640627028,"y":13206.586613440515},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"period","code":"{ \n\"codeName\": \"period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.period","id":"4986b4c7-0753-4bab-bf62-906acab4c408","savedPayload":{"position":{"x":14568.172514542086,"y":13192.398287275866},"targetPosition":{"x":14657.342968963178,"y":13130.798897913755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"49eea75b-d5c8-44cd-afa7-8689127ac9ae","savedPayload":{"position":{"x":14657.342968963178,"y":13130.798897913755},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trendMethod","code":"{ \n\"codeName\": \"trendMethod\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trendMethod","id":"8fdf87c8-a467-49a9-9b6a-e70cd12a2b93","savedPayload":{"position":{"x":14511.33839365495,"y":13018.41170585364},"targetPosition":{"x":14619.524983465952,"y":13015.216623829514},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6337c29e-3df8-4e54-82ab-a2cdeb800a1b","savedPayload":{"position":{"x":14619.524983465952,"y":13015.216623829514},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"02d96f47-c6f0-4423-a144-4799f4023c99","savedPayload":{"position":{"x":14834.206906422474,"y":13008.82527232067},"targetPosition":{"x":13659.624143226229,"y":12460.058623299085},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","name":"One-Candle Patterns Code","code":"// -----------------------------------------------------------------------------------------------------------------------------\n// From here the variables that will be used during the definition of the patterns will be defined\n// -----------------------------------------------------------------------------------------------------------------------------\n\n/* The following variables could be modified by the user to adapt the indicator with his preferences\n(Please, read the documentation before) */\nlet N = 10 // Default value: 10 periods - \"N\" is the period to calculate the Moving Average of the trend line (between 5 and 20) \nvariable.trendMethod = \"EMA\" // Choose \"SMA\" or \"EMA\" to calculate the Moving Average of the trend line\n\n /* In order to avoid errors, the initial condition of the output variables are defined */\nvariable.name = \"No Pattern\" // The name of the one-candle pattern\nvariable.forecast = \"None\" // The forecast of the pattern\n\n/* \"Candles\" and \"Basic Candles\" are dependencies */\nlet candle = record.current // Calling \"Candles\"\nlet basicCandle = getElement ('basicCandles', candle) // Calling \"Basic Candles\"\nvariable.lastN.push(candle.close) // Add the current Candle Close value to the \"lastN\" array\n\n/* To define if the trend is Up or Down , it is necessary to average the candle closes of the last N candles. */\nif (variable.trendMethod === \"SMA\") {\n if (variable.lastN.length > N) {\n variable.lastN.shift() // Remove the first element of the array to keep it at a maximun of N elements\n }\n let smaN\n if (variable.lastN.length < N) { // If the array \"lastN\" has not enough Candle Closes, the value zero for the smaN is defined\n smaN = 0 \n } else { \n let sum = 0 // Initialize sum variable \n for (let i = variable.lastN.length-N; i < variable.lastN.length; i++) { // Iterate through the last periods\n sum = sum + variable.lastN[i]\n } \n smaN = sum/N\n variable.lastMA.push(smaN) // Add the current SMA value to the \"lastMA\" array\n if (variable.lastMA.length > 4) {\n variable.lastMA.shift() // Remove the first element of the array to keep it at a maximun of 4 SMA's\n }\n }\n}\n\nif (variable.trendMethod === \"EMA\") {\n let k = 2 / (N + 1)\n variable.ema = candle.close * k + variable.previousEMA * (1-k)\n variable.previousEMA = variable.ema\n variable.lastMA.push(variable.ema) // Add the current EMA value to the \"lastMA\" array\n if (variable.lastMA.length > 4) {\n variable.lastMA.shift() // Remove the first element of the array to keep it at a maximun of 4 EMA's\n }\n} \n\n/* Calling the 3 last and current Moving Averages of the \"lastMA\" array */\nlet ma3Back = variable.lastMA [0] \nlet ma2Back = variable.lastMA [1]\nlet ma1Back = variable.lastMA [2]\nlet trendLine = variable.lastMA [3]\n\n/* Defining trend (Uptrend or Downtrend). It is important to avoid \"undefined\" candles or ma's */\nlet trend = \"None\"\nlet candle1Back = mainDependency.records[index - 1] // Calling previous candle\nlet candle2Back = mainDependency.records[index - 2] // Calling 2 previous candle\nlet candle3Back = mainDependency.records[index - 3] // Calling 3 previous candle\n\nif (candle1Back !== undefined && candle2Back !== undefined && candle3Back !== undefined) { \n if (ma1Back !== undefined && ma2Back !== undefined && ma3Back !== undefined) { \n if (candle1Back.close >= ma1Back && candle1Back.open >= ma1Back) {\n if (candle2Back.close >= ma2Back && candle2Back.open >= ma2Back) {\n if (candle3Back.close >= ma3Back && candle3Back.open >= ma3Back) {\n trend = \"Uptrend\"\n }\n }\n }\n if (candle1Back.close <= ma1Back && candle1Back.open <= ma1Back) {\n if (candle2Back.close <= ma2Back && candle2Back.open <= ma2Back) {\n if (candle3Back.close <= ma3Back && candle3Back.open <= ma3Back) {\n trend = \"Downtrend\"\n }\n }\n }\n }\n}\n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here patterns will be defined\n// ----------------------------------------------------------------------------------------------------------------------------\n\n/* Patterns will be grouped as follows:\n1) Bearish continuation --> These patterns indicates that the current downtrend could continue.\n2) Bearish Reversal --> These patterns indicates that the current uptrend could turn to downtrend.\n3) Bullish Continuation --> These patterns indicates that the current uptrend could continue.\n4) Bullish Reversal --> These patterns indicates that the current downtrend could turn to uptrend. */\n\n/* \"BEARISH CONTINUATION\" group:\nThese patterns should appear during a downtrend to be valid*/\nif (trend === \"Downtrend\") {\n\n/* \"BEARISH STRONG LINE\" properties:\n1) Basic Candle can be \"Long Red Candle\", \"Red Marubozu\", \"Opening Red Marubozu\" or \"Closing Red Marubozu\".\n2) Average size: Long.\n3) The body has to be three times higher than the mean body.\n4) The body is placed below the trend line. */\n\nif (basicCandle.name === \"Long Red Candle\" || basicCandle.name === \"Red Marubozu\" || basicCandle.name === \"Opening Red Marubozu\" || basicCandle.name === \"Closing Red Marubozu\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.body >= basicCandle.meanBody*3) {\n if (candle.open <= trendLine) {\n variable.name = \"Bearish Strong Line\"\n variable.forecast = \"Bearish Continuation\"\n }\n }\n }\n}\n\n} // Closing \"Bearish Continuation\" group\n\n//-------------------------------------------------------\n\n/* \"BEARISH REVERSAL\" group:\nThese patterns should appear during an uptrend to be valid */\nif (trend === \"Uptrend\") {\n\n/* \"BEARISH BELT HOLD\" properties:\n1) Basic Candle is \"Opening Red Marubozu\". \n2) Average size: Long.\n3) Short lower shadow. (20 percent of the candle is defined, user can change it). */\n\nif (basicCandle.name === \"Opening Red Marubozu\") {\n if (basicCandle.size === \"Long\") {\n if(basicCandle.lowerShadow <= basicCandle.length*0.2) {\n variable.name = \"Bearish Belt Hold\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n}\n\n/* \"HANGING MAN\" properties:\n1) Basic Candle can be \"Green Spinning Top\", \" Red Spinning Top\" or \"High Wave\".\n2) Average size: Long.\n3) The upper shadow shorter than the body.\n4) Long lower shadow that is at least twice the size as the body.\n5) The body above the trend line. */\n\nif (basicCandle.name === \"Green Spinning Top\" || basicCandle.name === \"Red Spinning Top\" || basicCandle.name === \"High Wave\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.upperShadow <= basicCandle.body) {\n if (basicCandle.lowerShadow >= basicCandle.body*2) {\n if (candle.close >= trendLine && candle.open >= trendLine) {\n variable.name = \"Hanging Man\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n } \n}\n\n/* \"SHOOTING STAR\" properties:\n1) Basic Candle can be \"Green Spinning Top\", \" Red Spinning Top\" or \"High Wave\".\n2) Average size: Long.\n3) The lower shadow shorter than the body.\n4) Upper shadow that is at least two times longer than the body.\n5) The body above the trend line. */\n\nif (basicCandle.name === \"Green Spinning Top\" || basicCandle.name === \"Red Spinning Top\" || basicCandle.name === \"High Wave\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.lowerShadow <= basicCandle.body) {\n if (basicCandle.upperShadow >= basicCandle.body*2) {\n if (candle.close >= trendLine && candle.open >= trendLine) {\n variable.name = \"Shooting Star\"\n variable.forecast = \"Bearish Reversal\"\n } \n }\n }\n } \n}\n\n/* \"BEARISH STRONG LINE\" properties:\n1) Basic Candle can be \"Long Red Candle\", \"Red Marubozu\", \"Opening Red Marubozu\" or \"Closing Red Marubozu\". \n2) Average size: Long.\n3) The body has to be three times higher than the mean body.\n4) The opening price is above the trendline (Remember, if the body is below the trendline, belongs to bearish continuation). */\n\nif (basicCandle.name === \"Long Red Candle\" || basicCandle.name === \"Red Marubozu\" || basicCandle.name === \"Opening Red Marubozu\" || basicCandle.name === \"Closing Red Marubozu\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.body >= basicCandle.meanBody*3) {\n if (candle.open >= trendLine) {\n variable.name = \"Bearish Strong Line\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n} // Closing \"Bearish Reversal\" group\n\n//-------------------------------------------------------\n\n/* \"BULLISH CONTINUATION\" group:\nThese patterns should appear during an uptrend to be valid */\nif (trend === \"Uptrend\") {\n\n/* \"BULLISH STRONG LINE\" properties:\n1) Basic Candle can be \"Long Green Candle\", \"Green Marubozu\", \"Opening Green Marubozu\" or \"Closing Green Marubozu\".\n2) Average size: Long.\n3) The body has to be three times higher than the mean body.\n4) The body is placed above the trendline. */\n\nif (basicCandle.name === \"Long Green Candle\" || basicCandle.name === \"Green Marubozu\" || basicCandle.name === \"Opening Green Marubozu\" || basicCandle.name === \"Closing Green Marubozu\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.body >= basicCandle.meanBody*3) {\n if (candle.open >= trendLine) {\n variable.name = \"Bullish Strong Line\"\n variable.forecast = \"Bullish Continuation\"\n }\n }\n }\n}\n\n} // Closing \"Bullish Continuation\" group\n\n//-------------------------------------------------------\n\n/* \"BULLISH REVERSAL\" group:\nThese patterns should appear during a downtrend*/\nif (trend === \"Downtrend\") {\n\n/* \"BULLISH BELT HOLD\" properties:\n1) Basic Candle is \"Opening Green Marubozu\".\n2) Average size: Long.\n3) Short upper shadow. 20 percent of the candle length, user can change it value. */\n\nif (basicCandle.name === \"Opening Green Marubozu\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.upperShadow <= basicCandle.length*0.2) {\n variable.name = \"Bullish Belt Hold\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n}\n\n/* \"HAMMER\" properties:\n1) Basic Candle can be \"Green Spinning Top\", \" Red Spinning Top\" or \"High Wave\".\n2) Average size: Long.\n3) The upper shadow shorter than the body.\n4) Lower shadow at least two times longer than the body. \n5) The body has to be below the trend line. */\n\nif (basicCandle.name === \"Green Spinning Top\" || basicCandle.name === \"Red Spinning Top\" || basicCandle.name === \"High Wave\" ) {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.upperShadow <= basicCandle.body) {\n if (basicCandle.lowerShadow >= basicCandle.body*2) {\n if (candle.close <= trendLine && candle.open <= trendLine) {\n variable.name = \"Hammer\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n }\n } \n}\n \n/* \"BULLISH STRONG LINE\" properties:\n1) Basic Candle can be \"Long Green Candle\", \"Green Marubozu\", \"Opening Green Marubozu\" or \"Closing Green Marubozu\". \n2) Average size: Long.\n3) The body three times higher than the mean body.\n4) The opening price is below the trendline (Remember, if the body is placed above the trendline, belongs to bulliish continuation). */\n\nif (basicCandle.name === \"Long Green Candle\" || basicCandle.name === \"Green Marubozu\" || basicCandle.name === \"Opening Green Marubozu\" || basicCandle.name === \"Closing Green Marubozu\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.body >= basicCandle.meanBody*3) {\n if (candle.open <= trendLine) {\n variable.name = \"Bullish Strong Line\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n }\n}\n\n} // Closing \"Bullish Reversal\" group\n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here all the variables that will be written in the records are defined \n// ----------------------------------------------------------------------------------------------------------------------------\n\nvariable.trend = trend\nvariable.trendLine = trendLine\nvariable.period = N // This record will be for pattern visualization on the chart\nvariable.bearishArrowHead = candle.max*1.02 // This record will be for pattern visualization on the chart\nvariable.bullishArrowHead = candle.min*0.98 // This record will be for pattern visualization on the chart","id":"87a8f692-4d18-4965-a6ee-69543d5c9f94","savedPayload":{"position":{"x":14340.48899100794,"y":13239.367837205045},"targetPosition":{"x":14169.769202193107,"y":13110.560472122997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"45f3274c-5f6c-4730-83cc-3a4a80be5f11","savedPayload":{"position":{"x":14169.769202193107,"y":13110.560472122997},"targetPosition":{"x":13827.730487812114,"y":12853.75571479652},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"/* It is necessary to define Moving Average of N Periods to define the trend of the market. */\nvariable.lastN = [ ] // Define lastN array to record the value of the last N candle closes (SMA)\nvariable.previousEMA = 0 // Initialize the variable previous enter to the main loop (EMA)\nvariable.lastMA = [0, 0, 0, 0] // Define lastMA array to record the value of the last 3 and current Moving Averages of N Periods","id":"dcdb9df8-32b5-4c90-b392-8eb147d91a1e","savedPayload":{"position":{"x":13750.970919017596,"y":13492.31266433275},"targetPosition":{"x":13776.559689602316,"y":13279.347431968074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0571fcc4-4f29-4c5b-8de0-54da0ee0dd44","savedPayload":{"position":{"x":13776.559689602316,"y":13279.347431968074},"targetPosition":{"x":13827.730487812114,"y":12853.75571479652},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"61de6419-4760-4b57-a184-d5aac5114be8","savedPayload":{"position":{"x":13827.730487812114,"y":12853.75571479652},"targetPosition":{"x":13659.624143226229,"y":12460.058623299085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f3c0863c-ac0c-4fc0-b9ee-5f0f2bd722ea","savedPayload":{"position":{"x":14379.112104101332,"y":12538.32359932046},"targetPosition":{"x":13606.59207657629,"y":12362.027718520723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"One-Candle Patterns","id":"14f83391-e4a6-470c-90c0-19763f83429b"}}},{"type":"Product Definition","name":"Two-Candles Patterns","code":"{\n \"codeName\": \"Two-Candles-Patterns\",\n \"singularVariableName\": \"twoCandlePattern\",\n \"pluralVariableName\": \"twoCandlePatterns\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"8c35ce52-9dee-4d20-92e6-50ba7fd2882b","savedPayload":{"position":{"x":13990.38004900581,"y":12517.500992411471},"targetPosition":{"x":13577.071414529011,"y":12631.776049507755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"4f1260c8-6d74-454e-963a-fa3ff910329c","savedPayload":{"position":{"x":13978.133662362168,"y":12782.121569423156},"targetPosition":{"x":13577.071414529011,"y":12631.776049507755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"Two-Candles Patterns Records","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"61a74369-9fad-4af6-99d8-c6e4821d4750","savedPayload":{"position":{"x":14396.144605236186,"y":12930.93228274267},"targetPosition":{"x":14397.27005487563,"y":13039.477642927437},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d0948117-06a2-44e6-a9c6-eed01b943780","savedPayload":{"position":{"x":14397.27005487563,"y":13039.477642927437},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"73933242-2824-4a63-bb50-d6043c1796a0","savedPayload":{"position":{"x":14572.020070613304,"y":12979.84020445404},"targetPosition":{"x":14514.209088586304,"y":13072.050847780967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d5bcbb61-ab9d-4908-91c4-0bbbdade33c0","savedPayload":{"position":{"x":14514.209088586304,"y":13072.050847780967},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"name","code":"{ \n\"codeName\": \"name\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.name","id":"34cec9a0-7a4d-430c-a69e-b67150a8701d","savedPayload":{"position":{"x":14687.551547782925,"y":13119.168264882514},"targetPosition":{"x":14594.23084078616,"y":13162.999720041678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"c8a5978b-4038-4493-9c79-697d6508604f","savedPayload":{"position":{"x":14594.23084078616,"y":13162.999720041678},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trend","code":"{ \n\"codeName\": \"trend\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trend","id":"d5af582e-67e7-4bd4-80c8-561fb4b28f0b","savedPayload":{"position":{"x":14715.235926855486,"y":13295.608928345133},"targetPosition":{"x":14612.929085298943,"y":13282.255150744186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"ceed7f12-8a54-43bf-9bd0-c9297493d6a1","savedPayload":{"position":{"x":14612.929085298943,"y":13282.255150744186},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"forecast","code":"{ \n\"codeName\": \"forecast\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.forecast","id":"ce5d5a36-b9dd-404d-90c1-a6556cc15145","savedPayload":{"position":{"x":14642.841053098498,"y":13459.441183598585},"targetPosition":{"x":14564.04222961525,"y":13392.884859371936},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"0e22e091-4ace-44ab-b1c9-aa386e928299","savedPayload":{"position":{"x":14564.04222961525,"y":13392.884859371936},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bullishArrowHead","code":"{ \n\"codeName\": \"bullishArrowHead\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bullishArrowHead","id":"7095f60c-5b45-4f3c-b026-97c89a480135","savedPayload":{"position":{"x":14493.388098710042,"y":13558.13390390614},"targetPosition":{"x":14463.11708574021,"y":13459.528264028497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"228d8125-2609-45c6-9cc7-e644c017ee0e","savedPayload":{"position":{"x":14463.11708574021,"y":13459.528264028497},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bearishArrowHead","code":"{ \n\"codeName\": \"bearishArrowHead\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bearishArrowHead","id":"409212af-d4f2-4371-9cc2-4402e16c1889","savedPayload":{"position":{"x":14314.86052199146,"y":13560.351320346243},"targetPosition":{"x":14342.44913435762,"y":13461.021547511327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"fa50b0e1-d8df-4a16-91c9-361541808fbf","savedPayload":{"position":{"x":14342.44913435762,"y":13461.021547511327},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trendLine","code":"{ \n\"codeName\": \"trendLine\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trendLine","id":"7302e487-d514-4964-bdc3-9901ba318dea","savedPayload":{"position":{"x":14163.143697250125,"y":13465.386801343191},"targetPosition":{"x":14239.957236947837,"y":13396.86594323422},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"64444857-2818-42de-a4c1-69c4d2804ebf","savedPayload":{"position":{"x":14239.957236947837,"y":13396.86594323422},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"period","code":"{ \n\"codeName\": \"period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.period","id":"dfdef370-336e-4650-a441-4b65f7304047","savedPayload":{"position":{"x":14080.61005028047,"y":13304.371564081312},"targetPosition":{"x":14187.830358506526,"y":13287.532682305162},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6dafe978-a5df-4f5b-a7ae-d496b83bcc94","savedPayload":{"position":{"x":14187.830358506526,"y":13287.532682305162},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trendMethod","code":"{ \n\"codeName\": \"trendMethod\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trendMethod","id":"aea83576-35e1-4190-b284-faf3f696436b","savedPayload":{"position":{"x":14105.043167805037,"y":13123.373354539315},"targetPosition":{"x":14203.984680208447,"y":13167.178249831239},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"552e82f9-e5e6-4802-9cf2-d9a7bbbc5a22","savedPayload":{"position":{"x":14203.984680208447,"y":13167.178249831239},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"17ec2118-b9df-415f-b5f3-120fb3b3155a","savedPayload":{"position":{"x":14400.128677128949,"y":13254.391891487401},"targetPosition":{"x":13577.071414529011,"y":12631.776049507755},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","name":"Two-Candles Patterns Code","code":"// -----------------------------------------------------------------------------------------------------------------------------\n// From here the variables that will be used during the definition of the patterns will be defined\n// -----------------------------------------------------------------------------------------------------------------------------\n\n /* In order to avoid errors, the initial condition of the output variables are defined */\nvariable.name = \"No Pattern\" // The name of the two-candle pattern, for panel visualization\nvariable.forecast = \"None\" // The forecast of the two-candle pattern, for panel visualization\nvariable.trend = \"None\" // The trend of the current pattern, for panel visualization\nvariable.trendLine = 1 // This record will be for pattern shapes visualization on the chart\nvariable.bearishArrowHead = 1 // This record will be for pattern shapes visualization on the chart\nvariable.bullishArrowHead = 1 // This record will be for pattern shapes visualization on the chart\nvariable.period = 0 // The period of the trend MA, for panel visualization\n \n/* \"Candles\", \"Basic Candles\" and \"One-Candle Patterns\" are dependencies */\nlet candle = record.current // Calling \"Candles\"\nlet basicCandle = getElement ('basicCandles', candle) // Calling \"Basic Candles\" product\nlet oneCandlePattern = getElement ('oneCandlePatterns', candle) // Calling \"One-Candle Patterns\" product\n\n/* Some properties of the previous candle are needed (max, min, open and close) */\nlet candle1Back = mainDependency.records[index - 1] \n\n/* In order to avoid \"undefined\" elements during calculations */\nif (basicCandle !== undefined && oneCandlePattern !== undefined && candle1Back !== undefined) { \n\n/*Another properties of the previous candle are needed (trend, span, name and direction)*/\nvariable.records1Back.push(oneCandlePattern.trend, basicCandle.size, basicCandle.name, basicCandle.direction)\nlet trend1Back = \"None\"\nlet size1Back = \"None\"\nlet name1Back = \"None\"\nlet direction1Back = \"None\"\nif (variable.records1Back[0] !== undefined) {\n trend1Back = variable.records1Back[0] // Taking first element of the array (index 0)\n}\nif (variable.records1Back[1] !== undefined) {\n size1Back = variable.records1Back[1] // Taking second element of the array (index 1)\n}\nif (variable.records1Back[2] !== undefined) {\n name1Back = variable.records1Back[2] // Taking third element of the array (index 2)\n}\nif (variable.records1Back[3] !== undefined) {\n direction1Back = variable.records1Back[3] // Taking fourth element of the array (index 3)\n}\nif (variable.records1Back.length === 8) { // Array with 8 elements, 4 currents and 4 from previous\n variable.records1Back.splice(0, 4) // Remove the first 4 elements of the array\n} \n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here patterns will be defined\n// ----------------------------------------------------------------------------------------------------------------------------\n\n/* Patterns will be grouped as follows:\n1) Bearish continuation --> These patterns indicates that the current downtrend could continue.\n2) Bearish Reversal --> These patterns indicates that the current uptrend could turn to downtrend.\n3) Bullish Continuation --> These patterns indicates that the current uptrend could continue.\n4) Bullish Reversal --> These patterns indicates that the current downtrend could turn to uptrend. */\n\n/* \"BEARISH CONTINUATION\" group:\nThese patterns should appear during a downtrend to be valid*/\nif (trend1Back === \"Downtrend\") {\n\n/* \"LAST ENGULFING BOTTOM\" properties:\nIt is important to know that this pattern has a \"Bearish Continuation\" or \"Bullish Reversal\" forecast, depending on the context.\n--First candle\n1) Can be any green basic candle, excluding Four-Price Doji.\n--Second candle\n1) Can be the following red basic candles: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Candle's body engulfs the prior candle's body.\n3) Average size: long. */\n\nif (direction1Back === \"Bullish\" && name1Back !== \"Four-Price Doji\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.name === \"Red Candle\" || basicCandle.name === \"Long Red Candle\" || basicCandle.name === \"Red Marubozu\" || basicCandle.name === \"Opening Red Marubozu\" || basicCandle.name === \"Closing Red Marubozu\") {\n if (candle1Back.close <= candle.open && candle1Back.open > candle.close) {\n variable.name = \"Last Engulfing Bottom\"\n variable.forecast = \"Depends On The Context\"\n }\n }\n }\n}\n\n} // Closing \"Bearish Continuation\" group\n\n//-------------------------------------------------------\n\n/* \"BEARISH REVERSAL\" group:\nThese patterns should appear during an uptrend to be valid */\nif (trend1Back === \"Uptrend\") {\n\n/* \"BEARISH ENGULFING\" properties:\n--First candle\n1) Can be any green basic candle, excluding Four-Price Doji.\n--Second candle\n1) Can be the following red basic candles: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Candle's body engulfs the prior candle's body.\n3) Average size: long. */\n\nif (direction1Back === \"Bullish\" && name1Back !== \"Four-Price Doji\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.name === \"Red Candle\" || basicCandle.name === \"Long Red Candle\" || basicCandle.name === \"Red Marubozu\" || basicCandle.name === \"Opening Red Marubozu\" || basicCandle.name === \"Closing Red Marubozu\") {\n if (candle1Back.close <= candle.open && candle1Back.open > candle.close) {\n variable.name = \"Bearish Engulfing\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n/* \"BEARISH HARAMI\" properties:\n--First candle\n1) Can be the following green basic candles: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Average size: Long.\n--Second candle\n1) Can be any red basic candle, excluding Four-Price Doji.\n2) Candle's body engulfed by the previous candle's body. */\n\nif (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Green Marubozu\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\") {\n if (size1Back === \"Long\") {\n if (basicCandle.direction === \"Bearish\" && basicCandle.name !== \"Four-Price Doji\") {\n if (candle1Back.close >= candle.open && candle1Back.open < candle.close) {\n variable.name = \"Bearish Harami\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n/* \"BEARISH HARAMI CROSS\" properties:\n--First candle\n1) Can be the following green basic candles: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Average size: Long.\n--Second candle\n1) Should be a Classic Doji.\n2) Candle's body (including shadows) engulfed by the prior candle's body. */\n\nif (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Green Marubozu\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\") {\n if (size1Back === \"Long\") {\n if (basicCandle.name === \"Classic Doji\") {\n if (candle1Back.close >= candle.max && candle1Back.open <= candle.min) {\n variable.name = \"Bearish Harami Cross\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n/* \"BEARISH TASUKI LINE\" properties:\n--First candle\n1) Bullish candle.\n2) Average size: Long.\n--Second candle\n1) Bearish candle.\n2) Opening price below or equal to the previous closing price.\n3) Closing price below the previous opening price.\n4) Average size: Long. */\n\nif (direction1Back === \"Bullish\" && size1Back === \"Long\") {\n if (basicCandle.direction === \"Bearish\" && basicCandle.size === \"Long\") {\n if (candle.open <= candle1Back.close && candle.close < candle1Back.open) {\n variable.name = \"Bearish Tasuki Line\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n}\n\n/* \"DESCENDING HAWK\" properties:\n--First candle\n1) Can be the following green basic candles: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Average size: Long.\n--Second candle\n1) Can be the following green basic candles: Short Green Candle, Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Candle's body engulfed by the prior candle's body. */\n\nif (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Green Marubozu\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\") {\n if (size1Back === \"Long\") {\n if (basicCandle.name === \"Short Green Candle\" || basicCandle.name === \"Green Candle\" || basicCandle.name === \"Long Green Candle\" || basicCandle.name === \"Green Marubozu\" || basicCandle.name === \"Opening Green Marubozu\" || basicCandle.name === \"Closing Green Marubozu\") {\n if (candle1Back.close >= candle.close && candle1Back.open < candle.open) {\n variable.name = \"Descending Hawk\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n/* \"TWEEZERS TOP\" properties:\n--First candle\n1) Any candle except the Four-Price Doji.\n2) Could be \"Bullish\" or \"Bearish\" candle.\n--Second candle\n1) Any candle except the Four-Price Doji.\n2) Could be \"Bullish\" or \"Bearish\" candle.\n3) High price equal to the previous high price. */\n\nif (candle1Back.name !== \"Four-Price Doji\" && basicCandle.name !== \"Four-Price Doji\" && candle.max === candle1Back.max) {\n variable.name = \"Tweezers Top\"\n variable.forecast = \"Bearish Reversal\"\n}\n\n/* \"TWO-CANDLE SHOOTING STAR\" properties:\n--First candle\n1) Can be the following green basic candles: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Average size: Long.\n--Second candle\n1) Can be the following basic candles: Red Spinning Top, Green Spinning Top, High Wave. \n2) No lower shadow or the shadow cannot be longer than then body.\n3) Upper shadow at least 2.5 times longer than the body.\n4) The open above or at the level of the previous candle’s close. */\n\nif (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Green Marubozu\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\") {\n if (size1Back === \"Long\") {\n if (basicCandle.name === \"Red Spinning Top\" || basicCandle.name === \"Green Spinning Top\" || basicCandle.name === \"High Wave\") {\n if (basicCandle.lowerShadow <= basicCandle.body && basicCandle.upperShadow >= basicCandle.body*2.5 && candle.open >= candle1Back.close) {\n variable.name = \"Two-Candle Shooting Star\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n} // Closing \"Bearish Reversal\" group\n\n//-------------------------------------------------------\n\n/* \"BULLISH CONTINUATION\" group:\nThese patterns should appear during an uptrend to be valid */\nif (trend1Back === \"Uptrend\") {\n\n/* \"LAST ENGULFING TOP\" properties:\nIt is important to know that this pattern has a \"Bearish Continuation\" or \"Bullish Reversal\" forecast, depending on the context.\n--First candle\n1) Bearish candle, excluding \"Four-Price Doji\".\n--Second candle\n1) Can be the following green basic candles: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Candle's body engulfs the prior candle's body. \n3) Average size: Long. */\n\nif (direction1Back === \"Bearish\" && name1Back !== \"Four-Price Doji\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.name === \"Green Candle\" || basicCandle.name === \"Long Green Candle\" || basicCandle.name === \"Green Marubozu\" || basicCandle.name === \"Opening Green Marubozu\" || basicCandle.name === \"Closing Green Marubozu\") {\n if (candle1Back.close >= candle.open && candle1Back.open < candle.close) { \n variable.name = \"Last Engulfing Top\"\n variable.forecast = \"Depends On The Context\"\n }\n }\n }\n}\n\n} // Closing \"Bullish Continuation\" group\n \n//-------------------------------------------------------\n\n/* \"BULLISH REVERSAL\" group:\nThese patterns should appear during a downtrend*/\nif (trend1Back === \"Downtrend\") {\n\n/* \"BULLISH ENGULFING\" properties:\n--First candle\n1) Bearish candle, excluding \"Four-Price Doji\".\n--Second candle\n1) Can be the following green basic candles: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Candle's body engulfs the prior candle's body. \n3) Average size: Long. */\n\nif (direction1Back === \"Bearish\" && name1Back !== \"Four-Price Doji\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.name === \"Green Candle\" || basicCandle.name === \"Long Green Candle\" || basicCandle.name === \"Green Marubozu\" || basicCandle.name === \"Opening Green Marubozu\" || basicCandle.name === \"Closing Green Marubozu\") {\n if (candle1Back.close >= candle.open && candle1Back.open < candle.close) { \n variable.name = \"Bullish Engulfing\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n }\n}\n\n/* \"BULLISH HARAMI\" properties:\n--First candle\n1) Can be the following red basic candles: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Average size: Long.\n--Second candle\n1) Can be any green basic candle, excluding Four-Price Doji.\n2) Candle's body engulfed by the prior candle's body. */\n\nif (name1Back === \"Red Candle\" || name1Back === \"Long Red Candle\" || name1Back === \"Red Marubozu\" || name1Back === \"Opening Red Marubozu\" || name1Back === \"Closing Red Marubozu\") {\n if (size1Back === \"Long\") {\n if (basicCandle.direction === \"Bullish\" && basicCandle.name !== \"Four-Price Doji\") {\n if (candle1Back.close <= candle.open && candle1Back.open > candle.close) {\n variable.name = \"Bullish Harami\"\n variable.forecast = \"Bulliish Reversal\"\n }\n }\n }\n}\n\n/* \"BULLISH HARAMI CROSS\" properties:\n--First candle\n1) Can be the following red basic candles: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Average size: Long.\n--Second candle\n1) Should be a Classic Doji.\n2) Candle's body (including shadows) engulfed by the prior candle's body. */\n\nif (name1Back === \"Red Candle\" || name1Back === \"Long Red Candle\" || name1Back === \"Red Marubozu\" || name1Back === \"Opening Red Marubozu\" || name1Back === \"Closing Red Marubozu\") {\n if (size1Back === \"Long\") {\n if (basicCandle.name === \"Classic Doji\") {\n if (candle1Back.open >= candle.max && candle1Back.close <= candle.min) {\n variable.name = \"Bullish Harami Cross\"\n variable.forecast = \"Bulliish Reversal\"\n }\n }\n }\n}\n\n/* \"BULLISH TASUKI LINE\" properties:\n--First candle\n1) Bearish candle.\n2) Average size: Long.\n--Second candle\n1) Bullish candle.\n2) Opening price above or equal to the previous closing price\n3) Closing price above the previous opening price\n4) Average size: Long. */\n\nif (direction1Back === \"Bearish\" && size1Back === \"Long\") {\n if (basicCandle.direction === \"Bullish\" && basicCandle.size === \"Long\") {\n if (candle.open >= candle1Back.close && candle.close > candle1Back.open) {\n variable.name = \"Bullish Tasuki Line\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n}\n\n/* \"TWEEZERS BOTTOM\" properties:\n--First candle\n1) Any candle except the Four-Price Doji.\n2) Could be \"Bullish\" or \"Bearish\" candle.\n--Second candle\n1) Any candle except the Four-Price Doji.\n2) Could be \"Bullish\" or \"Bearish\" candle.\n3) Low price equal to the previous low price. */\n\nif (candle1Back.name !== \"Four-Price Doji\" && basicCandle.name !== \"Four-Price Doji\" && candle.min === candle1Back.min) {\n variable.name = \"Tweezers Bottom\"\n variable.forecast = \"Bullish Reversal\"\n}\n\n} // Closing \"Bullish Reversal\" group\n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here all the variables that will be written in the records are defined \n// ----------------------------------------------------------------------------------------------------------------------------\n\nvariable.trend = trend1Back\nvariable.trendLine = oneCandlePattern.trendLine\nvariable.period = oneCandlePattern.period\nvariable.trendMethod = oneCandlePattern.trendMethod\nvariable.bearishArrowHead = candle.max*1.02 \nvariable.bullishArrowHead = candle.min*0.98\n\n} // Closing initial \"undefined\" avoid\n","id":"0df41d0a-e490-427e-a355-9043e81eb3c1","savedPayload":{"position":{"x":13754.224188597855,"y":13439.902895441395},"targetPosition":{"x":13656.103319071339,"y":13249.373117972671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"36593fb7-a9ab-4e3f-95ff-9c291e0f96f6","savedPayload":{"position":{"x":13656.103319071339,"y":13249.373117972671},"targetPosition":{"x":13557.80099157917,"y":13059.155699348652},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"/* Because this pattern has two candles, the properties of the previous candle are needed. */\nvariable.records1Back = [ ] // The properties will be record in this array","id":"36e0e453-9058-45de-bcff-bc1e17fe7aa8","savedPayload":{"position":{"x":13326.665381411352,"y":13420.6780298007},"targetPosition":{"x":13442.245658748729,"y":13239.81874221474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a939b7f6-400d-483f-9017-676c53451613","savedPayload":{"position":{"x":13442.245658748729,"y":13239.81874221474},"targetPosition":{"x":13557.80099157917,"y":13059.155699348652},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"896e9b4a-04e0-497d-be61-af2c96bb9d86","savedPayload":{"position":{"x":13557.80099157917,"y":13059.155699348652},"targetPosition":{"x":13577.071414529011,"y":12631.776049507755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"29283392-6a01-4acd-8f41-328e92281980","savedPayload":{"position":{"x":14226.066398305322,"y":12856.062869585414},"targetPosition":{"x":13606.59207657629,"y":12362.027718520723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Two-Candles Patterns","id":"3bf46641-3478-41fd-8407-0af20e72f30b"}}},{"type":"Product Definition","name":"Three-Candles Patterns","code":"{\n \"codeName\": \"Three-Candles-Patterns\",\n \"singularVariableName\": \"threeCandlePattern\",\n \"pluralVariableName\": \"threeCandlePatterns\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"087fc67e-78f9-4204-ba5e-8b670566a716","savedPayload":{"position":{"x":13849.871604695945,"y":12827.293777411433},"targetPosition":{"x":13427.889262586501,"y":12750.836137278113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"b60cb94f-79c5-410c-b166-abc97d0f2bc3","savedPayload":{"position":{"x":13724.11718972927,"y":13060.811076982278},"targetPosition":{"x":13427.889262586501,"y":12750.836137278113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"Three-Candles Patterns Records","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"1c316dcb-6d17-4108-ac41-f2d059685e5e","savedPayload":{"position":{"x":13711.238306530115,"y":12920.658171649195},"targetPosition":{"x":13644.948543022758,"y":13068.723520078449},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8328e683-8704-4b65-a774-63da0346e252","savedPayload":{"position":{"x":13644.948543022758,"y":13068.723520078449},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"db0992c2-3fd6-4eb9-bbe9-40dad5ae53f6","savedPayload":{"position":{"x":13948.582537330978,"y":13116.174731794308},"targetPosition":{"x":13813.151539554317,"y":13201.972933230269},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fbef0b72-edde-4678-aca5-f405068271b3","savedPayload":{"position":{"x":13813.151539554317,"y":13201.972933230269},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"name","code":"{ \n\"codeName\": \"name\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.name","id":"c397cffb-3ba1-435b-af0b-e920b319b23b","savedPayload":{"position":{"x":13966.973813754968,"y":13393.072203548825},"targetPosition":{"x":13864.707294117426,"y":13392.478752055717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"2f7591d7-6877-4fde-aafb-1b9580f6ad60","savedPayload":{"position":{"x":13864.707294117426,"y":13392.478752055717},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trend","code":"{ \n\"codeName\": \"trend\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trend","id":"ea48eb6b-63a3-444c-abd2-166097bb50c5","savedPayload":{"position":{"x":13891.677257473519,"y":13636.710911863762},"targetPosition":{"x":13806.927759912025,"y":13581.451438251337},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"162b594a-c0a4-45c0-a52c-45682978d00a","savedPayload":{"position":{"x":13806.927759912025,"y":13581.451438251337},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"forecast","code":"{ \n\"codeName\": \"forecast\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.forecast","id":"fd07c697-966a-4a3c-a123-61198f194538","savedPayload":{"position":{"x":13698.461434968936,"y":13800.839962044862},"targetPosition":{"x":13656.986895067497,"y":13708.263944451232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"c1afb085-e6cd-4c27-af62-6765cb270c1d","savedPayload":{"position":{"x":13656.986895067497,"y":13708.263944451232},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bullishArrowHead","code":"{ \n\"codeName\": \"bullishArrowHead\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bullishArrowHead","id":"dd019f19-f96a-4e88-a2e1-0159ba87fbe3","savedPayload":{"position":{"x":13444.092360755101,"y":13835.639457658825},"targetPosition":{"x":13460.938946120285,"y":13734.520497296007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"7059a7a5-021b-4277-80b9-8ef4c5387736","savedPayload":{"position":{"x":13460.938946120285,"y":13734.520497296007},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bearishArrowHead","code":"{ \n\"codeName\": \"bearishArrowHead\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bearishArrowHead","id":"bc455c93-3c64-4cf4-ab94-0116da22c404","savedPayload":{"position":{"x":13215.851726337816,"y":13726.980994488415},"targetPosition":{"x":13281.961445417463,"y":13650.232814784054},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"ec8749b1-4f5f-4163-b079-3dd9bec6eefa","savedPayload":{"position":{"x":13281.961445417463,"y":13650.232814784054},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trendLine","code":"{ \n\"codeName\": \"trendLine\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trendLine","id":"54625f1a-aa6f-44a6-bf2e-bcf1f5210674","savedPayload":{"position":{"x":13080.373564613936,"y":13512.507791593513},"targetPosition":{"x":13177.690028495439,"y":13484.984819448468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"7a781a34-4af5-4eb1-b237-1746ea2e69d0","savedPayload":{"position":{"x":13177.690028495439,"y":13484.984819448468},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"period","code":"{ \n\"codeName\": \"period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.period","id":"fd68bb74-c7f3-48ff-941c-121031aaf6a1","savedPayload":{"position":{"x":13033.546225688598,"y":13233.68488038103},"targetPosition":{"x":13187.023177611489,"y":13282.410877240069},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b738ac34-a6eb-41c3-9871-0fc1732be676","savedPayload":{"position":{"x":13187.023177611489,"y":13282.410877240069},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trendMethod","code":"{ \n\"codeName\": \"trendMethod\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trendMethod","id":"65ed19cf-524e-4ccd-94df-c60c9b41c40a","savedPayload":{"position":{"x":13179.147447450905,"y":13000.271711780137},"targetPosition":{"x":13285.105306373436,"y":13122.105896094334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"32ff1b3e-acb0-4961-82b9-1dd37a795c41","savedPayload":{"position":{"x":13285.105306373436,"y":13122.105896094334},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8a01e390-aea9-494b-a002-9c7498f23189","savedPayload":{"position":{"x":13514.160444418765,"y":13388.07052073227},"targetPosition":{"x":13427.889262586501,"y":12750.836137278113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","name":"Three-Candles Patterns Code","code":"// -----------------------------------------------------------------------------------------------------------------------------\n// From here the variables that will be used during the definition of the patterns will be defined\n// -----------------------------------------------------------------------------------------------------------------------------\n\n /* In order to avoid errors, the initial condition of the output variables are defined */\nvariable.name = \"No Pattern\" // The name of the pattern, for panel visualization\nvariable.forecast = \"None\" // The forecast of the pattern, for panel visualization\nvariable.trend = \"None\" // The trend of the current pattern, for panel visualization\nvariable.trendLine = 1 // This record will be for pattern shapes visualization on the chart\nvariable.bearishArrowHead = 1 // This record will be for pattern shapes visualization on the chart\nvariable.bullishArrowHead = 1 // This record will be for pattern shapes visualization on the chart\nvariable.period = 0 // The period of the trend MA, for panel visualization\n\n/* \"Candles\", \"Basic Candles\" and \"One-Candle Patterns\" are dependencies */\nlet candle = record.current // Calling \"Candles\" records\nlet basicCandle = getElement ('basicCandles', candle) // Calling \"Basic Candles\" records\nlet oneCandlePattern = getElement ('oneCandlePatterns', candle) // Calling \"One-Candle Patterns\" records\n\n/* Some properties of the previous 2 candles are needed (max, min, open and close) */\nlet candle1Back = mainDependency.records[index - 1] \nlet candle2Back = mainDependency.records[index - 2] \n\n/* To avoid \"undefined\" elements during calculations, the following if() condition will include all the entire code */\nif (basicCandle !== undefined && oneCandlePattern !== undefined && candle1Back !== undefined && candle2Back !== undefined) { \n\n/*To define patterns, another properties of the 2 previous candles are needed (trend, size, name and direction)*/\nvariable.recordsBack.push(oneCandlePattern.trend, basicCandle.size, basicCandle.name, basicCandle.direction)\nlet trend1Back = \"None\"\nlet size1Back = \"None\"\nlet name1Back = \"None\"\nlet direction1Back = \"None\"\nlet trend2Back = \"None\"\nlet size2Back = \"None\"\nlet name2Back = \"None\"\nlet direction2Back = \"None\"\n\nif (variable.recordsBack[0] !== undefined) {\n trend2Back = variable.recordsBack[0] // Taking first element of the array (index 0)\n}\nif (variable.recordsBack[1] !== undefined) {\n size2Back = variable.recordsBack[1] // Taking second element of the array (index 1)\n}\nif (variable.recordsBack[2] !== undefined) {\n name2Back = variable.recordsBack[2] // Taking third element of the array (index 2)\n}\nif (variable.recordsBack[3] !== undefined) {\n direction2Back = variable.recordsBack[3] // Taking fourth element of the array (index 3)\n}\nif (variable.recordsBack[0] !== undefined) {\n trend1Back = variable.recordsBack[4] // Taking fifth element of the array (index 4)\n}\nif (variable.recordsBack[1] !== undefined) {\n size1Back = variable.recordsBack[5] // Taking sixth element of the array (index 5)\n}\nif (variable.recordsBack[2] !== undefined) {\n name1Back = variable.recordsBack[6] // Taking seventh element of the array (index 6)\n}\nif (variable.recordsBack[3] !== undefined) {\n direction1Back = variable.recordsBack[7] // Taking eigthth element of the array (index 7)\n}\nif (variable.recordsBack.length === 12) { // Array with 12 elements, 4 currents, 4 from 1 previous and 4 from 2 previous \n variable.recordsBack.splice(0, 4) // Remove the first 4 elements of the array\n} \n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here patterns will be defined\n// ----------------------------------------------------------------------------------------------------------------------------\n\n/* Patterns will be grouped as follows:\n1) Bearish continuation --> These patterns indicates that the current downtrend could continue.\n2) Bearish Reversal --> These patterns indicates that the current uptrend could turn to downtrend.\n3) Bullish Continuation --> These patterns indicates that the current uptrend could continue.\n4) Bullish Reversal --> These patterns indicates that the current downtrend could turn to uptrend. */\n\n/* \"BEARISH CONTINUATION\" group:\nThese patterns should appear during a downtrend to be valid*/\nif (trend2Back === \"Downtrend\") {\n\n} // Closing \"Bearish Continuation\" group\n\n//-------------------------------------------------------\n\n/* \"BEARISH REVERSAL\" group:\nThese patterns should appear during an uptrend to be valid */\nif (trend2Back === \"Uptrend\") {\n\n/* \"ADVANCE BLOCK\" properties:\n--First candle\n1) Any following bullish basic candle: Green Candle, Long Green Candle, Opening Green Marubozu, Closing Green Marubozu or Green Marubozu.\n2) Average size: Long.\n--Second candle\n1) Bullish.\n2) Body shortet than the previous candle.\n3) Shadows longer than the first candle.\n--Third Candle \n1) Bullish.\n2) Body shortet than the previous candle.\n3) Shadows longer than the first candle. */\n\nif (name2Back === \"Green Candle\" || name2Back === \"Long Green Candle\" || name2Back === \"Opening Green Marubozu\" || name2Back === \"Closing Green Marubozu\" || name2Back === \"Green Marubozu\") {\n if (size2Back === \"Long\") {\n if (direction1Back === \"Bullish\" && (candle1Back.close - candle1Back.open) < (candle2Back.close - candle2Back.open) ) {\n if (basicCandle.direction === \"Bullish\" && (candle.close-candle.open) < (candle1Back.close - candle1Back.open) ) {\n variable.name = \"Advance Block\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n/* \"DELIBERATION\" properties:\n--First candle\n1) Any following bullish basic candle: Green Candle, Long Green Candle, Opening Green Marubozu, Closing Green Marubozu or Green Marubozu.\n--Second candle\n1) Any following bullish basic candle: Green Candle, Long Green Candle, Opening Green Marubozu, Closing Green Marubozu or Green Marubozu.\n2) Opening price is above the previous opening price.\n3) Closing price is above the previous closing price.\n--Third Candle \n1) Any following bullish basic candle: Short Green Candle or Green Spinning Top.\n2) Opening price is slightly lower or higher than the previous closing price.\n3) Closing price is above the previous closing price.\n4) Average size: Short. */\n\nif (name2Back === \"Green Candle\" || name2Back === \"Long Green Candle\" || name2Back === \"Opening Green Marubozu\" || name2Back === \"Closing Green Marubozu\" || name2Back === \"Green Marubozu\") {\n if (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\" || name1Back === \"Green Marubozu\") {\n if (candle1Back.open > candle2Back.open && candle1Back.close > candle2Back.close) {\n if (basicCandle.name === \"Short Green Candle\" || basicCandle.name === \"Green Spinning Top\") { \n if (basicCandle.size === \"Short\" && candle.close > candle1Back.close) {\n variable.name = \"Deliberation\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n }\n}\n\n/* \"IDENTICAL THREE CROWS\" properties:\n--First candle\n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Average size: Long.\n--Second candle\n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Average size: Long. \n3) Opening price at or near the prior close.\n--Third Candle\n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Average size: Long. \n3) Opening price at or near the prior close.*/\n\nif (name2Back === \"Red Candle\" || name2Back === \"Long Red Candle\" || name2Back === \"Red Marubozu\" || name2Back === \"Opening Red Marubozu\" || name2Back === \"Closing Red Marubozu\") {\n if (name1Back === \"Red Candle\" || name1Back === \"Long Red Candle\" || name1Back === \"Red Marubozu\" || name1Back === \"Opening Red Marubozu\" || name1Back === \"Closing Red Marubozu\") {\n if (basicCandle.name === \"Red Candle\" || basicCandle.name === \"Long Red Candle\" || basicCandle.name === \"Red Marubozu\" || basicCandle.name === \"Opening Red Marubozu\" || basicCandle.name === \"Closing Red Marubozu\") {\n if (size2Back === \"Long\" && size1Back === \"Long\" && basicCandle.size === \"Long\") {\n variable.name = \"Identical Three Crows\"\n variable.forecast = \"Bulliish Reversal\"\n }\n }\n }\n}\n\n/* \"THREE INSIDE DOWN\" properties:\n1) Any following bullish basic candle: Green Candle, Long Green Candle, Opening Green Marubozu, Closing Green Marubozu or Green Marubozu.\n2) Average size: Long.\n--Second candle\n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu or Red Spinning Top.\n2) Candle body is engulfed by the prior candle body.\n--Third Candle \n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu or Red Spinning Top.\n2) Closing price is below the previous closing price. */\n\nif (name2Back === \"Green Candle\" || name2Back === \"Long Green Candle\" || name2Back === \"Opening Green Marubozu\" || name2Back === \"Closing Green Marubozu\" || name2Back === \"Green Marubozu\") {\n if (size2Back === \"Long\") {\n if (name1Back === \"Red Candle\" || name1Back === \"Long Red Candle\" || name1Back === \"Red Marubozu\" || name1Back === \"Opening Red Marubozu\" || name1Back === \"Closing Red Marubozu\" || name1Back === \"Red Spinning Top\") {\n if (candle1Back.close > candle2Back.open) {\n if (basicCandle.name === \"Red Candle\" || basicCandle.name === \"Long Red Candle\" || basicCandle.name === \"Red Marubozu\" || basicCandle.name === \"Opening Red Marubozu\" || basicCandle.name === \"Closing Red Marubozu\" || basicCandle.name === \"Red Spinning Top\") {\n variable.name = \"Three Inside Down\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n }\n}\n\n/* \"THREE OUTSIDE DOWN\" properties:\n1) Any bullish basic candle except \"Four-Price Doji\".\n--Second candle\n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Candle's body engulfs the prior candle's body. \n3) Average size: Long.\n--Third Candle \n1) Any bearish basic candle except \"Four-Price Doji\".\n2) Closing price is below the previous closing price. */ \n\nif (direction2Back === \"Bullish\" && name2Back !== \"Four-Price Doji\") {\n if (name1Back === \"Red Candle\" || name1Back === \"Long Red Candle\" || name1Back === \"Red Marubozu\" || name1Back === \"Opening Red Marubozu\" || name1Back === \"Closing Red Marubozu\") {\n if (candle1Back.close < candle2Back.open && size1Back === \"Long\") {\n if (basicCandle.direction === \"Bearish\" && basicCandle.name !== \"Four-Price Doji\") {\n variable.name = \"Three Outside Down\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n} // Closing \"Bearish Reversal\" group\n\n//-------------------------------------------------------\n\n/* \"BULLISH CONTINUATION\" group:\nThese patterns should appear during an uptrend to be valid */\nif (trend2Back === \"Uptrend\") {\n\n\n\n} // Closing \"Bullish Continuation\" group\n \n//-------------------------------------------------------\n\n/* \"BULLISH REVERSAL\" group:\nThese patterns should appear during a downtrend*/\nif (trend2Back === \"Downtrend\") {\n\n/* \"THREE INSIDE UP\" properties:\n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Average size: Long.\n--Second candle\n1) Any following bullish basic candle: Green Candle, Long Green Candle, Opening Green Marubozu, Closing Green Marubozu, Green Marubozu or Green Spinning Top.\n2) Candle body is engulfed by the prior candle body.\n--Third Candle \n1) Any following bullish basic candle: Green Candle, Long Green Candle, Opening Green Marubozu, Closing Green Marubozu, Green Marubozu or Green Spinning Top.\n2) Closing price is above the previous closing price. */\n\nif (name2Back === \"Red Candle\" || name2Back === \"Long Red Candle\" || name2Back === \"Opening Red Marubozu\" || name2Back === \"Closing Red Marubozu\" || name2Back === \"Red Marubozu\") {\n if (size2Back === \"Long\") {\n if (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Green Marubozu\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\" || name1Back === \"Green Spinning Top\") {\n if (candle1Back.close < candle2Back.open) {\n if (basicCandle.name === \"Green Candle\" || basicCandle.name === \"Long Green Candle\" || basicCandle.name === \"Green Marubozu\" || basicCandle.name === \"Opening Green Marubozu\" || basicCandle.name === \"Closing Green Marubozu\" || basicCandle.name === \"Green Spinning Top\") {\n variable.name = \"Three Inside Up\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n }\n }\n}\n\n/* \"THREE OUTSIDE UP\" properties:\n1) Any bearish basic candle except \"Four-Price Doji\".\n--Second candle\n1) Any following bearish basic candle: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Candle's body engulfs the prior candle's body. \n3) Average size: Long.\n--Third Candle \n1) Any bullish basic candle except \"Four-Price Doji\".\n2) Closing price is above the previous closing price. */ \n\nif (direction2Back === \"Bearish\" && name2Back !== \"Four-Price Doji\") {\n if (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Green Marubozu\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\") {\n if (candle1Back.close > candle2Back.open && size1Back === \"Long\") {\n if (basicCandle.direction === \"Bullish\" && basicCandle.name !== \"Four-Price Doji\") {\n variable.name = \"Three Outside Up\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n }\n}\n\n} // Closing \"Bullish Reversal\" group\n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here all the variables that will be written in the records are defined \n// ----------------------------------------------------------------------------------------------------------------------------\n\nvariable.trend = trend2Back\nvariable.trendLine = oneCandlePattern.trendLine\nvariable.period = oneCandlePattern.period\nvariable.trendMethod = oneCandlePattern.trendMethod\nvariable.bearishArrowHead = candle.max*1.02\nvariable.bullishArrowHead = candle.min*0.98 \n\n} // Closing initial \"undefined\" avoid","id":"e4b8fa10-e9de-48b2-871b-fd5bc2be8544","savedPayload":{"position":{"x":13142.912800841958,"y":13958.22738315719},"targetPosition":{"x":13133.406897710382,"y":13636.959376914901},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a3ca00b1-8cb7-40f0-9d46-e86bcae26607","savedPayload":{"position":{"x":13133.406897710382,"y":13636.959376914901},"targetPosition":{"x":13123.908174017677,"y":13315.777079336249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"/* Because of these patterns have three candles, the properties of the previous 2 candles are needed. */\nvariable.recordsBack = [ ] // The properties will be recorded in this array","id":"69da8b87-1e7f-45f4-bd47-9a9b0a2057e0","savedPayload":{"position":{"x":12577.05122235381,"y":13653.728456911864},"targetPosition":{"x":12850.45315023664,"y":13484.773677918183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"20684141-89f4-4049-8130-5219f9934b94","savedPayload":{"position":{"x":12850.45315023664,"y":13484.773677918183},"targetPosition":{"x":13123.908174017677,"y":13315.777079336249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1193e656-0fce-4d39-8f46-316d51a8bb95","savedPayload":{"position":{"x":13123.908174017677,"y":13315.777079336249},"targetPosition":{"x":13427.889262586501,"y":12750.836137278113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1b6f79d8-d1ba-49e5-a808-42f71fba5657","savedPayload":{"position":{"x":13950.278960828266,"y":13075.956449119707},"targetPosition":{"x":13606.59207657629,"y":12362.027718520723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Three-Candles Patterns","id":"acdb9c43-0859-42be-87b0-1a600cf513d4"}}}],"id":"254b4e7d-0ede-4208-8f0a-a486dd1a0faf","savedPayload":{"position":{"x":13606.59207657629,"y":12362.027718520723},"targetPosition":{"x":12813.422748313864,"y":12362.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"tradingBots":[],"plotters":[{"type":"Plotter","name":"Candle Patterns","code":"{\n\"codeName\": \"Candle-Patterns\"\n}","modules":[{"type":"Plotter Module","name":"Basic Candles","code":"{ \n\"codeName\": \"Basic-Candles\"\n}","shapes":{"type":"Shapes","name":"Basic Candles","chartPoints":[{"type":"Chart Points","name":"Candle Min","points":[{"type":"Point","name":"Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)/2\ny = record.previous.min","id":"da43ce7b-c3af-49b7-a95c-025494c40a6e","savedPayload":{"position":{"x":13108.977936557767,"y":12188.383729155756},"targetPosition":{"x":12992.912224357988,"y":12465.951795130548},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"84c72ff6-fc9c-4869-bd8e-ea8404df0a0f","savedPayload":{"position":{"x":12992.912224357988,"y":12465.951795130548},"targetPosition":{"x":12874.382023295504,"y":12749.007888679644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.min","id":"ee2ef08b-7253-46c1-a087-49feaeae0bd9","savedPayload":{"position":{"x":13359.207789242111,"y":12380.215962023818},"targetPosition":{"x":13119.485580714008,"y":12562.33832997655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b077cf02-7c54-4023-9182-4de81327ff35","savedPayload":{"position":{"x":13119.485580714008,"y":12562.33832997655},"targetPosition":{"x":12874.382023295504,"y":12749.007888679644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2fe07cd8-53ed-4533-a747-05b3906b4755","savedPayload":{"position":{"x":12902.05239713271,"y":12933.635229601114},"targetPosition":{"x":12636.947299989895,"y":13276.879874685575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Mean Length","points":[{"type":"Point","name":"Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)/2\ny = record.previous.min + record.previous.meanLength","id":"c8b8a404-7746-458c-91a4-61d13114c824","savedPayload":{"position":{"x":13673.67750381596,"y":12508.224804263064},"targetPosition":{"x":13349.1040677911,"y":12795.400192005116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2b2ed3d9-a095-403e-8ed8-62f7e73e9f1c","savedPayload":{"position":{"x":13349.1040677911,"y":12795.400192005116},"targetPosition":{"x":13024.73065709388,"y":13082.971349162055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.min + record.meanLength","id":"372fd8b2-9346-4c0a-8465-cb4e2ece90bc","savedPayload":{"position":{"x":13874.48022293734,"y":12909.507347296605},"targetPosition":{"x":13449.660696018584,"y":12996.332616362892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"628ac9f1-445b-4638-8fd5-aa62f6fd859c","savedPayload":{"position":{"x":13449.660696018584,"y":12996.332616362892},"targetPosition":{"x":13024.73065709388,"y":13082.971349162055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"86515391-e909-4183-a0bb-2f6b6d452087","savedPayload":{"position":{"x":13025.021918291819,"y":13082.660247868029},"targetPosition":{"x":12636.947299989895,"y":13276.879874685575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"avgRef","points":[{"type":"Point","name":"Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)/2\ny = record.previous.min + record.previous.avgRef","id":"a231e15f-f884-4326-983c-001a812d2e08","savedPayload":{"position":{"x":13578.803437753708,"y":12816.49484688219},"targetPosition":{"x":13289.589120403027,"y":12897.623893279399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"41fec509-9af9-4ef7-b947-90382ad5ee5d","savedPayload":{"position":{"x":13289.589120403027,"y":12897.623893279399},"targetPosition":{"x":12990.869619180365,"y":12982.381124986036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.min + record.avgRef","id":"69d5c95c-ec98-4656-9057-54ab9fc64a1e","savedPayload":{"position":{"x":13588.803821069829,"y":13118.492608097265},"targetPosition":{"x":13289.456404283654,"y":13057.80208764004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9703549c-8ca6-4293-b4ec-83a4f899c806","savedPayload":{"position":{"x":13289.456404283654,"y":13057.80208764004},"targetPosition":{"x":12990.869619180365,"y":12982.381124986036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3fe2df6a-c2fe-4f66-8529-c959ba7dd010","savedPayload":{"position":{"x":13070.913458756182,"y":13270.299786173973},"targetPosition":{"x":12636.947299989895,"y":13276.879874685575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Candle Min","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 0.4,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"e19cb185-a1ae-4595-b22f-825aabca3f15","savedPayload":{"position":{"x":13898.021347587734,"y":13494.579614494232},"targetPosition":{"x":13464.696463105538,"y":13476.688840008886},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"0c47d43f-28d6-4e22-bcab-ce1a5ba86b13","savedPayload":{"position":{"x":13464.696463105538,"y":13476.688840008886},"targetPosition":{"x":13031.145557927823,"y":13459.07687683122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin","id":"aeb3daf8-939c-472d-a653-bb053b201626","savedPayload":{"position":{"x":13424.961913957333,"y":13641.327996042652},"targetPosition":{"x":13031.145557927823,"y":13459.07687683122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin","id":"84c72ff6-fc9c-4869-bd8e-ea8404df0a0f"}}},{"type":"Polygon Vertex","name":"End","id":"cf9cdbd9-6a4d-4958-906f-555616617a31","savedPayload":{"position":{"x":13340.7104577407,"y":13755.603986751803},"targetPosition":{"x":13031.145557927823,"y":13459.07687683122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End","id":"b077cf02-7c54-4023-9182-4de81327ff35"}}}],"id":"0e718fe1-b457-49b9-a1cd-118bd9f111f4","savedPayload":{"position":{"x":13031.145557927823,"y":13459.07687683122},"targetPosition":{"x":12636.947299989895,"y":13276.879874685575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Mean Length","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 0.4,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"51351071-cd12-48d6-aa76-8755bd6322b4","savedPayload":{"position":{"x":13665.695313969807,"y":14042.575803215057},"targetPosition":{"x":13283.077530411732,"y":13838.513756463306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"8487ed2a-b56a-4d41-895c-569bf127fedc","savedPayload":{"position":{"x":13283.077530411732,"y":13838.513756463306},"targetPosition":{"x":12915.71562588088,"y":13611.66361370111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin","id":"4db28f87-f9dd-4420-87bc-d210699f8a01","savedPayload":{"position":{"x":13191.347301384953,"y":13946.99420050665},"targetPosition":{"x":12915.71562588088,"y":13611.66361370111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin","id":"2b2ed3d9-a095-403e-8ed8-62f7e73e9f1c"}}},{"type":"Polygon Vertex","name":"End","id":"a4fa988d-7488-4bf4-90f9-2ee6fd939475","savedPayload":{"position":{"x":13064.240731414515,"y":14016.02494944438},"targetPosition":{"x":12915.71562588088,"y":13611.66361370111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End","id":"628ac9f1-445b-4638-8fd5-aa62f6fd859c"}}}],"id":"32840d7a-c3be-4c5c-8604-ddec41903a8e","savedPayload":{"position":{"x":12915.71562588088,"y":13611.66361370111},"targetPosition":{"x":12636.947299989895,"y":13276.879874685575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"avgRef","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 0.4,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n }\n}","id":"dc036a39-a0d7-43f5-ae0a-f49f80566f35","savedPayload":{"position":{"x":13229.33091362232,"y":14410.229144070205},"targetPosition":{"x":12973.163921033449,"y":14060.158090951238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"332c16f9-b95f-4a5d-a0a7-825adec7b190","savedPayload":{"position":{"x":12973.163921033449,"y":14060.158090951238},"targetPosition":{"x":12739.274799254119,"y":13699.009204216736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin","id":"6df63fd0-62c4-49d9-aa62-43e4ebb9e2a3","savedPayload":{"position":{"x":12841.775246025314,"y":14120.818786566584},"targetPosition":{"x":12739.274799254119,"y":13699.009204216736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin","id":"41fec509-9af9-4ef7-b947-90382ad5ee5d"}}},{"type":"Polygon Vertex","name":"End","id":"66870fcb-caf4-4e03-9db2-4f7fc0f8cae2","savedPayload":{"position":{"x":12673.03883864232,"y":14128.100137931784},"targetPosition":{"x":12739.274799254119,"y":13699.009204216736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End","id":"9703549c-8ca6-4293-b4ec-83a4f899c806"}}}],"id":"b504d259-c93f-4dfa-af0f-ffc23b3e616d","savedPayload":{"position":{"x":12739.274799254119,"y":13699.009204216736},"targetPosition":{"x":12636.947299989895,"y":13276.879874685575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dc146044-78b9-46c7-8e91-47619c333444","savedPayload":{"position":{"x":12636.947299989895,"y":13276.879874685575},"targetPosition":{"x":12212.72884485266,"y":13187.077894379872},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Basic Candles","code":"{ \n\"codeName\": \"Basic-Candles\"\n}","panelData":[{"type":"Panel Data","name":"Name","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.name","id":"b94b9d37-1552-4a01-b14b-4897feedd52f","savedPayload":{"position":{"x":12949.630260119242,"y":13182.414450702889},"targetPosition":{"x":12530.612237229694,"y":13296.48962114836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6c416dd7-5075-49cc-b404-52fcca7a314c","savedPayload":{"position":{"x":12530.612237229694,"y":13296.48962114836},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Size","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.size","id":"7ab67e86-30c4-4d4c-9048-156de658edaa","savedPayload":{"position":{"x":12816.817350046273,"y":13632.297181375847},"targetPosition":{"x":12409.260001385079,"y":13500.956335236164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"84776c6f-6b89-4889-a119-f407ad30a39b","savedPayload":{"position":{"x":12409.260001385079,"y":13500.956335236164},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Upper Shadow %","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.upperShadowPercent","id":"1515c038-a83d-4a33-803d-93f19df9d44f","savedPayload":{"position":{"x":12550.381326036735,"y":14037.469816083092},"targetPosition":{"x":12273.262806955621,"y":13704.12039771927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5bfcb212-425e-481c-93ee-4ddfe0365d04","savedPayload":{"position":{"x":12273.262806955621,"y":13704.12039771927},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Body %","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.bodyPercent","id":"13fb74c6-4320-4755-b896-e3c15b507a8c","savedPayload":{"position":{"x":12102.300757918912,"y":14231.879548647366},"targetPosition":{"x":12049.07457118533,"y":13801.358948162142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4787fdfa-a1b4-4252-be30-1c394ae28d23","savedPayload":{"position":{"x":12049.07457118533,"y":13801.358948162142},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Lower Shadow %","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.lowerShadowPercent","id":"621a0736-7286-407f-be3c-7f9237c1c4e6","savedPayload":{"position":{"x":11620.425246523768,"y":14152.966743446337},"targetPosition":{"x":11808.091895536174,"y":13761.905791832762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"10570ba3-e68c-4aa0-83b9-daed46a61cee","savedPayload":{"position":{"x":11808.091895536174,"y":13761.905791832762},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Parameter: \"Nbodies\"","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.Nbodies","id":"1ae2288d-9479-410d-9243-21430691060b","savedPayload":{"position":{"x":11257.070102854932,"y":13825.7521669367},"targetPosition":{"x":11626.384453779205,"y":13598.27016763233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"34f62235-4353-4f23-8630-841fbee8665b","savedPayload":{"position":{"x":11626.384453779205,"y":13598.27016763233},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Parameter: \"dojiFactor\" %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.dojiFactor","id":"165f2a72-3eac-4740-8445-c9aa133e0ae4","savedPayload":{"position":{"x":11128.212021323285,"y":13354.727980753762},"targetPosition":{"x":11561.962833022772,"y":13362.694365750584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8fe17343-1ae4-4ba8-990a-bfe78872d998","savedPayload":{"position":{"x":11561.962833022772,"y":13362.694365750584},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Parameter: \"sizeFactor\" %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeFactor","id":"6d9b3c35-1b25-46fb-8b16-ad551cf53493","savedPayload":{"position":{"x":11329.926819301452,"y":12915.28549485325},"targetPosition":{"x":11635.3026294884,"y":13129.436859171616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6c2bd7cb-ea2a-48fe-9328-6e7cf397abe5","savedPayload":{"position":{"x":11635.3026294884,"y":13129.436859171616},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Parameter: \"Nlengths\"","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.Nlengths","id":"42a0f840-7b6f-4e38-ac13-442a40767d70","savedPayload":{"position":{"x":11650.230180812932,"y":12575.088276018505},"targetPosition":{"x":11823.069688597921,"y":12972.80360620623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"26d5e8b8-22fc-40fc-bb28-c3d5272845d0","savedPayload":{"position":{"x":11823.069688597921,"y":12972.80360620623},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Average Size Method","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeMethod","id":"867e57e7-6fc8-4e52-834d-f20f077f37fd","savedPayload":{"position":{"x":12100.695122814745,"y":12456.860795743183},"targetPosition":{"x":12031.325086366693,"y":12885.561054720325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"87d0bb1d-c8e2-47a6-85cc-4e747082305f","savedPayload":{"position":{"x":12031.325086366693,"y":12885.561054720325},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7e6dc8b6-bdeb-4f1a-bf39-a239fa100200","savedPayload":{"position":{"x":11995.91387719581,"y":13370.64016764527},"targetPosition":{"x":12212.72884485266,"y":13187.077894379872},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"09e0a24c-ead1-40c6-9e43-72b46e4294c5","savedPayload":{"position":{"x":12212.801118375293,"y":13187.56026971265},"targetPosition":{"x":11944.774819498161,"y":12362.05365917036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"One-Candle Patterns","code":"{ \n\"codeName\": \"One-Candle-Patterns\"\n}","shapes":{"type":"Shapes","name":"One-Candle Pattern","chartPoints":[{"type":"Chart Points","name":"Bearish Arrow","points":[{"type":"Point","name":"-1-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)\ny = record.bearishArrowHead*1.01","id":"e175ab11-cdad-4cfa-bc0e-e9d68fd56419","savedPayload":{"position":{"x":12965.483055921071,"y":12868.64329873116},"targetPosition":{"x":12751.830573939056,"y":13103.9914215748},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f0e4b32d-4c67-44a9-b215-46dd2de99095","savedPayload":{"position":{"x":12751.830573939056,"y":13103.9914215748},"targetPosition":{"x":12325.132217733979,"y":13574.414781135878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-2-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bearishArrowHead*1.01","id":"ad0cc3d5-6a7a-45ac-b7db-41438836230c","savedPayload":{"position":{"x":13187.394324262874,"y":13167.773151426483},"targetPosition":{"x":12899.596747782605,"y":13303.156224936247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"23dc1c78-a55d-482c-be5b-f6893e5294c7","savedPayload":{"position":{"x":12899.596747782605,"y":13303.156224936247},"targetPosition":{"x":12325.132217733979,"y":13574.414781135878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-3-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bearishArrowHead*1.03","id":"16686f17-868b-406b-a3ab-f4e9dbc8a002","savedPayload":{"position":{"x":13278.11981347048,"y":13528.503138391638},"targetPosition":{"x":12960.259486967265,"y":13543.678389079925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2c9565a9-49d5-4f04-91ad-a073ff669a46","savedPayload":{"position":{"x":12960.259486967265,"y":13543.678389079925},"targetPosition":{"x":12325.132217733979,"y":13574.414781135878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-4-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bearishArrowHead*1.03","id":"1c6a13b5-d22c-4c2f-b692-a387651394ab","savedPayload":{"position":{"x":13222.739691656414,"y":13896.057843602894},"targetPosition":{"x":12923.159535456434,"y":13788.691205248766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fe68b37d-0bf8-4347-9e38-4013fa120bc8","savedPayload":{"position":{"x":12923.159535456434,"y":13788.691205248766},"targetPosition":{"x":12325.132217733979,"y":13574.414781135878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-5-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bearishArrowHead*1.01","id":"7de429ac-d43c-4d1f-970a-69cfdcbc1fcc","savedPayload":{"position":{"x":13031.388885189543,"y":14215.395793400503},"targetPosition":{"x":12795.742097139453,"y":14001.402450098667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a4e0461d-4d13-4a01-9332-3fd94aa6647a","savedPayload":{"position":{"x":12795.742097139453,"y":14001.402450098667},"targetPosition":{"x":12325.132217733979,"y":13574.414781135878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-6-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end+(record.end-record.begin)\ny = record.bearishArrowHead*1.01","id":"e156a730-1cf6-40a2-8272-8ba1ff8534a7","savedPayload":{"position":{"x":12732.143036938007,"y":14436.801488517705},"targetPosition":{"x":12596.296975152018,"y":14149.137635633617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7b205c46-8dc6-4e0b-bca6-258a84c652c5","savedPayload":{"position":{"x":12596.296975152018,"y":14149.137635633617},"targetPosition":{"x":12325.132217733979,"y":13574.414781135878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-7-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.bearishArrowHead","id":"459bad82-6540-43d3-8c3c-73b119d4dfed","savedPayload":{"position":{"x":12370.78210048176,"y":14527.175870211293},"targetPosition":{"x":12355.689024391071,"y":14209.156277807786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"71bbdced-dc17-4019-a104-c37bd0ecdc98","savedPayload":{"position":{"x":12355.689024391071,"y":14209.156277807786},"targetPosition":{"x":12325.132217733979,"y":13574.414781135878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fccdf048-5edb-4377-9f0e-27a4c21e21f1","savedPayload":{"position":{"x":12353.367503585854,"y":13505.45441654266},"targetPosition":{"x":11788.958007882462,"y":13302.96903920655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Trend Line","points":[{"type":"Point","name":"Trend Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.trendLine\n","id":"1b000a16-4143-4eb2-8b9c-9661ddad10ed","savedPayload":{"position":{"x":12563.190535024169,"y":13756.297769489316},"targetPosition":{"x":12256.577146985215,"y":13671.542095945184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0a20e46e-5535-4cb4-b34a-36faec96f4da","savedPayload":{"position":{"x":12256.577146985215,"y":13671.542095945184},"targetPosition":{"x":11950.136160700109,"y":13586.56103909256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Trend Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.trendLine","id":"f159d45c-483e-4c46-b6ef-b1cd92d00cb7","savedPayload":{"position":{"x":12110.20290112685,"y":14202.628591547256},"targetPosition":{"x":12030.272260088852,"y":13894.498807566852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"58992b77-271b-4362-b130-251d65d8be55","savedPayload":{"position":{"x":12030.272260088852,"y":13894.498807566852},"targetPosition":{"x":11950.136160700109,"y":13586.56103909256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"edfd4367-c042-4fa0-8f77-31c218fc8d78","savedPayload":{"position":{"x":12004.857202186486,"y":13522.3871105841},"targetPosition":{"x":11788.958007882462,"y":13302.96903920655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Bullish Arrow","points":[{"type":"Point","name":"-1-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)\ny = record.bullishArrowHead*0.99","id":"fba54222-55a5-437d-92aa-756f08eecdb5","savedPayload":{"position":{"x":12884.050693370733,"y":14021.323169752775},"targetPosition":{"x":12566.608309237596,"y":14001.316971556336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e8aef2aa-6d0c-42f5-82a4-7c37a157c8de","savedPayload":{"position":{"x":12566.608309237596,"y":14001.316971556336},"targetPosition":{"x":11932.50874538122,"y":13961.039115376421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-2-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bullishArrowHead*0.99","id":"187b028b-4696-4003-90a1-b5beb8ea2ba3","savedPayload":{"position":{"x":12788.595239524107,"y":14381.163669077672},"targetPosition":{"x":12502.841142236866,"y":14240.837003499404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b834103f-86be-4106-ac3c-47b326cd97b4","savedPayload":{"position":{"x":12502.841142236866,"y":14240.837003499404},"targetPosition":{"x":11932.50874538122,"y":13961.039115376421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-3-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bullishArrowHead*0.97","id":"e51d81db-649a-4b1b-8aad-ed2f24a9affa","savedPayload":{"position":{"x":12562.577984845044,"y":14676.818415156464},"targetPosition":{"x":12352.355755387507,"y":14437.89708951016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"54a1db25-bb24-4ef9-bcbd-1432848214fd","savedPayload":{"position":{"x":12352.355755387507,"y":14437.89708951016},"targetPosition":{"x":11932.50874538122,"y":13961.039115376421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-4-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bullishArrowHead*0.97","id":"bb33e4b3-dea3-40d4-89d6-4621df7a0ae0","savedPayload":{"position":{"x":12240.629646714464,"y":14863.711297217418},"targetPosition":{"x":12137.941308197125,"y":14562.57552425211},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"800f7290-42e1-4970-a00c-f4a5cd30312b","savedPayload":{"position":{"x":12137.941308197125,"y":14562.57552425211},"targetPosition":{"x":11932.50874538122,"y":13961.039115376421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-5-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bullishArrowHead*0.99","id":"a09fda1a-0f15-45d2-92ae-e780435c819e","savedPayload":{"position":{"x":11872.148343880908,"y":14913.172845339974},"targetPosition":{"x":11892.179029474377,"y":14595.373171973026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"4a83e816-d5a4-47f0-a30e-3f5e5320147e","savedPayload":{"position":{"x":11892.179029474377,"y":14595.373171973026},"targetPosition":{"x":11932.50874538122,"y":13961.039115376421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-6-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end+(record.end-record.begin)\ny = record.bullishArrowHead*0.99","id":"1b3b0d03-bef2-4f05-9460-19227819c39b","savedPayload":{"position":{"x":11512.246000757412,"y":14817.147676223887},"targetPosition":{"x":11652.489877668344,"y":14531.57038171824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c6806791-bd74-413b-b86c-61383118cba6","savedPayload":{"position":{"x":11652.489877668344,"y":14531.57038171824},"targetPosition":{"x":11932.50874538122,"y":13961.039115376421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-7-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.bullishArrowHead","id":"931a9f64-7ec8-44a9-8555-6d03477940f2","savedPayload":{"position":{"x":11216.643926630622,"y":14590.919195459615},"targetPosition":{"x":11455.577456180035,"y":14380.865419957876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2f37b7be-5805-419d-a0a8-3e2fc5eb9e3b","savedPayload":{"position":{"x":11455.577456180035,"y":14380.865419957876},"targetPosition":{"x":11932.50874538122,"y":13961.039115376421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2591fc95-5f9b-409c-8816-11a3dd6d8581","savedPayload":{"position":{"x":11982.730643990966,"y":13870.65896417198},"targetPosition":{"x":11788.958007882462,"y":13302.96903920655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Bearish Arrow","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.forecast === \"Bearish Reversal\" || record.forecast === \"Bearish Continuation\" ","id":"c92a8076-d1cf-4879-88e2-16f89c878649","savedPayload":{"position":{"x":12235.615205815931,"y":14242.043383584158},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n\"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.5,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"921dec12-c29d-4656-8ea5-6e5fc7c92469","savedPayload":{"position":{"x":12386.543247211037,"y":14599.372943005143},"targetPosition":{"x":12141.383879811041,"y":14396.716873901229},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"d7ca8665-bd27-421a-be79-e5b48c4ffd3f","savedPayload":{"position":{"x":12141.383879811041,"y":14396.716873901229},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n }\n}","id":"2360af46-2b53-4cea-a26b-019107a4e4dc","savedPayload":{"position":{"x":12185.23587033499,"y":14782.072668870904},"targetPosition":{"x":12007.154540660602,"y":14518.332468126262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"1beaa578-f91e-4eb9-bcc9-4c979bc9a87c","savedPayload":{"position":{"x":12007.154540660602,"y":14518.332468126262},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"-1-","id":"6c20d736-5211-4bb1-836f-3ee460ba4f75","savedPayload":{"position":{"x":11716.852909625657,"y":14624.232075949345},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-1-","id":"f0e4b32d-4c67-44a9-b215-46dd2de99095"}}},{"type":"Polygon Vertex","name":"-2-","id":"7870b61d-7540-4f9e-9d57-bc8b54dab81d","savedPayload":{"position":{"x":11623.59231302339,"y":14627.66878102049},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-2-","id":"23dc1c78-a55d-482c-be5b-f6893e5294c7"}}},{"type":"Polygon Vertex","name":"-3-","id":"666d3979-14ea-4753-8d79-36a17ace6f3b","savedPayload":{"position":{"x":11531.977950824123,"y":14617.239015482895},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-3-","id":"2c9565a9-49d5-4f04-91ad-a073ff669a46"}}},{"type":"Polygon Vertex","name":"-4-","id":"58596c8a-eab1-4926-a006-4c287afd7096","savedPayload":{"position":{"x":11443.396226776775,"y":14593.729412979172},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-4-","id":"fe68b37d-0bf8-4347-9e38-4013fa120bc8"}}},{"type":"Polygon Vertex","name":"-5-","id":"e6073465-7636-48b1-8344-5e82a314ac1d","savedPayload":{"position":{"x":11359.384708955913,"y":14557.807998817012},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-5-","id":"a4e0461d-4d13-4a01-9332-3fd94aa6647a"}}},{"type":"Polygon Vertex","name":"-6-","id":"87a3f44c-5361-4e65-a9f3-1c5a461600b0","savedPayload":{"position":{"x":11281.510600734495,"y":14510.28688448735},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-6-","id":"7b205c46-8dc6-4e0b-bca6-258a84c652c5"}}},{"type":"Polygon Vertex","name":"-7-","id":"dcd75a74-5275-4181-8801-8bb625ab2545","savedPayload":{"position":{"x":11204.2163719251,"y":14444.367521032163},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-7-","id":"71bbdced-dc17-4019-a104-c37bd0ecdc98"}}}],"id":"d503108f-9b4f-4aae-9e99-b92e1aedb6c8","savedPayload":{"position":{"x":11717.295634801481,"y":13899.316787849044},"targetPosition":{"x":11788.958007882462,"y":13302.96903920655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Trend Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"8b777f5a-b79e-45c5-ae85-3693d946b577","savedPayload":{"position":{"x":11754.491297468012,"y":14221.928059725631},"targetPosition":{"x":11690.670498529573,"y":13928.733372537468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"9ec3107b-2173-46b2-b831-7144910bd2ed","savedPayload":{"position":{"x":11690.670498529573,"y":13928.733372537468},"targetPosition":{"x":11640.674066617728,"y":13577.428401494675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Trend Line End","id":"66cee7f2-7951-4c23-84d9-8af01e017f34","savedPayload":{"position":{"x":11446.52123541505,"y":13881.528809602585},"targetPosition":{"x":11640.674066617728,"y":13577.428401494675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Trend Line End","id":"58992b77-271b-4362-b130-251d65d8be55"}}},{"type":"Polygon Vertex","name":"Trend Line Begin","id":"968f315d-33e1-4866-b061-42fb61964ad6","savedPayload":{"position":{"x":11291.487886964725,"y":13665.409189827207},"targetPosition":{"x":11640.674066617728,"y":13577.428401494675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Trend Line Begin","id":"0a20e46e-5535-4cb4-b34a-36faec96f4da"}}}],"id":"2e0fe089-4dae-4895-b46b-4f5e07ac9926","savedPayload":{"position":{"x":11623.025853596115,"y":13562.808922097776},"targetPosition":{"x":11788.958007882462,"y":13302.96903920655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Bullish Arrow","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.forecast === \"Bullish Reversal\" || record.forecast === \"Bullish Continuation\" ","id":"e32f5ba5-7e4e-4b48-9255-985134b35bf6","savedPayload":{"position":{"x":11356.333851880048,"y":14309.19499572535},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n\"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.5,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"dc4c1077-65c7-4b76-8420-ea719c497798","savedPayload":{"position":{"x":11171.794743914175,"y":14650.734757758717},"targetPosition":{"x":11175.745440661813,"y":14330.932431226403},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"8f42597b-9b13-46a3-b926-bf79570f27eb","savedPayload":{"position":{"x":11175.745440661813,"y":14330.932431226403},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n }\n}","id":"97b28c5b-f7c8-41d4-82a7-2db8fe1bd533","savedPayload":{"position":{"x":10900.571835786326,"y":14607.936193660593},"targetPosition":{"x":10995.921202414036,"y":14303.32115943792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"fc855e6f-bb88-485d-8079-99653a800a36","savedPayload":{"position":{"x":10995.921202414036,"y":14303.32115943792},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"-1-","id":"6f1e0d8e-a1a7-4fc7-ab01-d2e4d5cb0807","savedPayload":{"position":{"x":10730.677169859624,"y":14140.232690672607},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-1-","id":"e8aef2aa-6d0c-42f5-82a4-7c37a157c8de"}}},{"type":"Polygon Vertex","name":"-2-","id":"7bff821f-bb70-4a9f-89b9-74bd1dcde01f","savedPayload":{"position":{"x":10669.455225389724,"y":14069.029034667272},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-2-","id":"b834103f-86be-4106-ac3c-47b326cd97b4"}}},{"type":"Polygon Vertex","name":"-3-","id":"e14aa3b8-ed10-4358-87db-81d0f2fd580c","savedPayload":{"position":{"x":10619.03190035281,"y":13991.292631787524},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-3-","id":"54a1db25-bb24-4ef9-bcbd-1432848214fd"}}},{"type":"Polygon Vertex","name":"-4-","id":"fa285436-8897-49fa-81bf-bcf727e368de","savedPayload":{"position":{"x":10580.696718259642,"y":13907.589130141916},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-4-","id":"800f7290-42e1-4970-a00c-f4a5cd30312b"}}},{"type":"Polygon Vertex","name":"-5-","id":"cb9d9c29-9b41-42ba-bb6b-3e63dcbd253e","savedPayload":{"position":{"x":10556.368939645708,"y":13819.304483172136},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-5-","id":"4a83e816-d5a4-47f0-a30e-3f5e5320147e"}}},{"type":"Polygon Vertex","name":"-6-","id":"56ccabba-f502-416d-92ff-da20ee90ddf3","savedPayload":{"position":{"x":10547.376439499101,"y":13728.662757496488},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-6-","id":"c6806791-bd74-413b-b86c-61383118cba6"}}},{"type":"Polygon Vertex","name":"-7-","id":"688ebb45-45d7-4e2a-bfbc-f0bb799b2360","savedPayload":{"position":{"x":10551.83122632822,"y":13627.127452074243},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-7-","id":"2f37b7be-5805-419d-a0a8-3e2fc5eb9e3b"}}}],"id":"2cd7982f-ecc8-41ce-8b27-ede1d1ad7d8c","savedPayload":{"position":{"x":11278.026117322934,"y":13618.688201219642},"targetPosition":{"x":11788.958007882462,"y":13302.96903920655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0a02f148-0036-4d1c-aac5-a4e4ee5c25e7","savedPayload":{"position":{"x":11788.985336730206,"y":13303.148965975284},"targetPosition":{"x":11726.454631962377,"y":12706.323293734202},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"One-Candle Patterns","code":"{ \n\"codeName\": \"One-Candle-Patterns\"\n}","panelData":[{"type":"Panel Data","name":"Pattern Name","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.name","id":"664bc7e8-5c76-4dea-82ad-acef43eaa2da","savedPayload":{"position":{"x":11501.93740317275,"y":13176.94603730852},"targetPosition":{"x":11426.363737763586,"y":12886.064548854436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"119aa231-cf07-40a8-98ee-679e8d4e99ce","savedPayload":{"position":{"x":11426.363737763586,"y":12886.064548854436},"targetPosition":{"x":11404.41259716337,"y":12563.288189030278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Direction","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trend","id":"d4102f27-72a7-412c-b9b4-244e3ef5100d","savedPayload":{"position":{"x":11043.95740825339,"y":13044.183060725472},"targetPosition":{"x":11223.967414000515,"y":12803.702728176195},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2409211c-7992-4b1a-8273-25ce7e284b72","savedPayload":{"position":{"x":11223.967414000515,"y":12803.702728176195},"targetPosition":{"x":11404.41259716337,"y":12563.288189030278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Forecast","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.forecast","id":"19821933-d558-452e-9dc0-5df90116fcc1","savedPayload":{"position":{"x":10803.749528281682,"y":12581.122148207885},"targetPosition":{"x":11103.854307668524,"y":12572.148609337759},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e240fe07-156c-4766-8fe0-f123781842ef","savedPayload":{"position":{"x":11103.854307668524,"y":12572.148609337759},"targetPosition":{"x":11404.41259716337,"y":12563.288189030278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Method","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trendMethod","id":"7541dc87-d801-48bc-b2d8-391e605c0c5e","savedPayload":{"position":{"x":11015.814020906739,"y":12105.124543641734},"targetPosition":{"x":11209.89927891457,"y":12334.131330156766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e0c328ed-84b7-43a2-bfb2-274d1b1d3bae","savedPayload":{"position":{"x":11209.89927891457,"y":12334.131330156766},"targetPosition":{"x":11404.41259716337,"y":12563.288189030278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Period","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"6b66e742-6d13-43d6-a00f-a6ed9d070249","savedPayload":{"position":{"x":11519.191959073312,"y":11973.773593496275},"targetPosition":{"x":11461.907216338393,"y":12268.52539343757},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e457e54c-7cbb-4866-9b67-3bb71332e2c5","savedPayload":{"position":{"x":11461.907216338393,"y":12268.52539343757},"targetPosition":{"x":11404.41259716337,"y":12563.288189030278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Value","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trendLine","id":"e33fff96-c3f5-4376-8d90-4feafc0df08b","savedPayload":{"position":{"x":11924.983441013894,"y":12225.374211815923},"targetPosition":{"x":11658.458671376004,"y":12362.787527456234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"42d2f0eb-65fa-4358-af25-484517433307","savedPayload":{"position":{"x":11658.458671376004,"y":12362.787527456234},"targetPosition":{"x":11404.41259716337,"y":12563.288189030278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d2af80dc-8d17-42f3-b88a-af1726c59859","savedPayload":{"position":{"x":11404.41259716337,"y":12563.288189030278},"targetPosition":{"x":11726.454631962377,"y":12706.323293734202},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"14f83391-e4a6-470c-90c0-19763f83429b","savedPayload":{"position":{"x":11242.580100163783,"y":12872.161390267005},"targetPosition":{"x":11944.774819498161,"y":12362.05365917036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Two-Candles Patterns","code":"{ \n\"codeName\": \"Two-Candles Patterns\"\n}","shapes":{"type":"Shapes","name":"Two-Candles Patterns","chartPoints":[{"type":"Chart Points","name":"Bearish Arrow","points":[{"type":"Point","name":"-1-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)\ny = record.bearishArrowHead*1.01","id":"7dc394b3-ca00-4738-a554-420b393aa4f8","savedPayload":{"position":{"x":12080.364766906878,"y":13220.782956633711},"targetPosition":{"x":11790.248866809208,"y":13090.111787601752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7291f0d5-78e1-4d7c-a73d-2068e491344b","savedPayload":{"position":{"x":11790.248866809208,"y":13090.111787601752},"targetPosition":{"x":11210.883601978836,"y":12829.416928291432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-2-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bearishArrowHead*1.01","id":"cfdc25f2-f236-4fd0-a09c-11759c6a4e07","savedPayload":{"position":{"x":11864.254631850083,"y":13523.767719263178},"targetPosition":{"x":11646.060247337566,"y":13291.842840506357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"87745033-dc64-4d86-8579-29cf35124f9a","savedPayload":{"position":{"x":11646.060247337566,"y":13291.842840506357},"targetPosition":{"x":11210.883601978836,"y":12829.416928291432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-3-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bearishArrowHead*1.04","id":"f30d7904-2195-4bab-93d4-d5083000fe6b","savedPayload":{"position":{"x":11548.872612758332,"y":13721.322106848394},"targetPosition":{"x":11436.15829430936,"y":13423.781375380397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"87fc7e3a-455f-49bb-ab44-fc06ba845f00","savedPayload":{"position":{"x":11436.15829430936,"y":13423.781375380397},"targetPosition":{"x":11210.883601978836,"y":12829.416928291432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-4-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bearishArrowHead*1.04","id":"f29b34a0-8604-4cde-b52c-237a422ccb31","savedPayload":{"position":{"x":11182.440371853707,"y":13782.892125833674},"targetPosition":{"x":11191.895398924,"y":13464.716740789758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2bab7192-a08c-4461-b36e-f369491dfd42","savedPayload":{"position":{"x":11191.895398924,"y":13464.716740789758},"targetPosition":{"x":11210.883601978836,"y":12829.416928291432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-5-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bearishArrowHead*1.01","id":"20df1362-6e33-45c3-bf48-c4a76035b428","savedPayload":{"position":{"x":10819.670867042692,"y":13699.328603873406},"targetPosition":{"x":10950.196779102633,"y":13409.036213563837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3c9d80e6-ad20-4b47-a8f5-1bf19a0b80e2","savedPayload":{"position":{"x":10950.196779102633,"y":13409.036213563837},"targetPosition":{"x":11210.883601978836,"y":12829.416928291432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-6-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end+(record.end-record.begin)\ny = record.bearishArrowHead*1.01","id":"64a8c860-86c4-40da-9ca0-d5e424ade757","savedPayload":{"position":{"x":10516.426943651764,"y":13483.271111995491},"targetPosition":{"x":10748.207670935357,"y":13265.113689035281},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c6a0d716-6534-453b-9d0f-a8c6faa502f0","savedPayload":{"position":{"x":10748.207670935357,"y":13265.113689035281},"targetPosition":{"x":11210.883601978836,"y":12829.416928291432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-7-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.bearishArrowHead","id":"62fc84a0-55e5-452c-b72d-4c91174ea85a","savedPayload":{"position":{"x":10319.068694124551,"y":13167.497391595014},"targetPosition":{"x":10616.657668901848,"y":13054.714065527793},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fef9ea3b-84c5-43cd-9602-96f8170065bd","savedPayload":{"position":{"x":10616.657668901848,"y":13054.714065527793},"targetPosition":{"x":11210.883601978836,"y":12829.416928291432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9020cd21-a011-4b59-aec4-56469a5ce79f","savedPayload":{"position":{"x":11212.08238612305,"y":12793.886426050642},"targetPosition":{"x":11230.088306354333,"y":12194.214105362249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Trend Line","points":[{"type":"Point","name":"Trend Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.trendLine\n","id":"aed6b5b4-e6e5-4e5c-a13b-1d707c93c15a","savedPayload":{"position":{"x":11112.203423838924,"y":13135.049712488144},"targetPosition":{"x":11098.154486588639,"y":12816.675111736882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"691a374a-ab65-4dc5-b788-979162f87185","savedPayload":{"position":{"x":11098.154486588639,"y":12816.675111736882},"targetPosition":{"x":11083.52637072901,"y":12476.574737981895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Trend Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.trendLine","id":"9b3acde4-3360-4869-8685-c08922111bd5","savedPayload":{"position":{"x":10528.328676106998,"y":12831.586770785856},"targetPosition":{"x":10796.587520809484,"y":12660.256912026685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1e2e8a50-8a93-4696-9ed7-f8ea1da75c5e","savedPayload":{"position":{"x":10796.587520809484,"y":12660.256912026685},"targetPosition":{"x":11083.52637072901,"y":12476.574737981895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7af63af8-4b52-4c71-b427-906a0eaa37d2","savedPayload":{"position":{"x":11091.612510483377,"y":12460.869122431828},"targetPosition":{"x":11230.088306354333,"y":12194.214105362249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Bullish Arrow","points":[{"type":"Point","name":"-1-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)\ny = record.bullishArrowHead*0.99","id":"7cd5ae63-7c34-4ce3-84f9-8de0b14fbafa","savedPayload":{"position":{"x":10957.995336187574,"y":13499.347586436937},"targetPosition":{"x":10879.208138403894,"y":13191.010310464353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"38b0018b-d162-492e-90b3-604efc79c16e","savedPayload":{"position":{"x":10879.208138403894,"y":13191.010310464353},"targetPosition":{"x":10721.704601814654,"y":12575.369642451864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-2-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bullishArrowHead*0.99","id":"3221cc5c-76c7-4335-bc1c-a781c1c7a6f4","savedPayload":{"position":{"x":10586.804919038863,"y":13519.5759173753},"targetPosition":{"x":10631.795073687696,"y":13204.472858274814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"66a65473-db28-42bf-8491-3497a35cc42b","savedPayload":{"position":{"x":10631.795073687696,"y":13204.472858274814},"targetPosition":{"x":10721.704601814654,"y":12575.369642451864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-3-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bullishArrowHead*0.96","id":"5dbc1498-0b47-48cd-a37c-1a4f19f6c788","savedPayload":{"position":{"x":10235.638110508145,"y":13395.963856067829},"targetPosition":{"x":10397.830607018597,"y":13122.11928578089},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cb37189b-fdb7-4cd7-aa78-1dfd71c8e614","savedPayload":{"position":{"x":10397.830607018597,"y":13122.11928578089},"targetPosition":{"x":10721.704601814654,"y":12575.369642451864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-4-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bullishArrowHead*0.96","id":"1bcf2a18-15b8-4a2c-b7b6-1167c00ff5e9","savedPayload":{"position":{"x":9958.51463690534,"y":13147.352166790564},"targetPosition":{"x":10213.201596397783,"y":12956.49560590405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"aae0a6cc-e05b-402f-800c-807df07b1f37","savedPayload":{"position":{"x":10213.201596397783,"y":12956.49560590405},"targetPosition":{"x":10721.704601814654,"y":12575.369642451864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-5-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bullishArrowHead*0.99","id":"8011dcdd-1c27-4bcb-8ea6-3344573aa905","savedPayload":{"position":{"x":9797.608411032441,"y":12811.642008035207},"targetPosition":{"x":10106.006106977726,"y":12732.832615058134},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a5f609bd-7162-4155-8778-d085b000ef04","savedPayload":{"position":{"x":10106.006106977726,"y":12732.832615058134},"targetPosition":{"x":10721.704601814654,"y":12575.369642451864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-6-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end+(record.end-record.begin)\ny = record.bullishArrowHead*0.99","id":"37fa781c-1480-47fd-a862-39894108dc46","savedPayload":{"position":{"x":9777.434768608586,"y":12440.483473176917},"targetPosition":{"x":10092.560564373696,"y":12485.454399858972},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6edd83d4-739a-4651-9204-2a0f617e1256","savedPayload":{"position":{"x":10092.560564373696,"y":12485.454399858972},"targetPosition":{"x":10721.704601814654,"y":12575.369642451864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-7-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.bullishArrowHead","id":"65f9907e-ab3a-4ef4-a902-b8204afc49d7","savedPayload":{"position":{"x":9901.123266502633,"y":12089.222366557253},"targetPosition":{"x":10174.944718196417,"y":12251.419740461577},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b98d1777-f3a2-4bcc-8312-6d89d1c6662e","savedPayload":{"position":{"x":10174.944718196417,"y":12251.419740461577},"targetPosition":{"x":10721.704601814654,"y":12575.369642451864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"20da6d05-3166-4ba2-bd3c-b21770ae1958","savedPayload":{"position":{"x":10750.266363912004,"y":12553.875282572766},"targetPosition":{"x":11230.088306354333,"y":12194.214105362249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Bearish Arrow","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.forecast === \"Bearish Reversal\" || record.forecast === \"Bearish Continuation\" ","id":"bebcd91f-d028-4d8c-bc25-317d19f1b955","savedPayload":{"position":{"x":10545.921551362917,"y":12950.461440057985},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n\"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.5,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"8d874a62-2e9c-43e9-9632-e93a7e25d8c3","savedPayload":{"position":{"x":10254.470661709795,"y":13203.968708192891},"targetPosition":{"x":10370.531202082246,"y":12907.47369966236},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6e948385-96a4-40ba-b8db-eb11d079aad1","savedPayload":{"position":{"x":10370.531202082246,"y":12907.47369966236},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 3,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n }\n}","id":"65302767-1fb6-4a56-b981-4ca898e3fc1f","savedPayload":{"position":{"x":10019.354758517326,"y":13068.057848255628},"targetPosition":{"x":10214.217089568454,"y":12817.719639137931},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6365634c-c753-4be1-9f4e-d81a88690b96","savedPayload":{"position":{"x":10214.217089568454,"y":12817.719639137931},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"-1-","id":"952bb578-3cc3-4576-b7dd-a043f2b4d719","savedPayload":{"position":{"x":10022.184079381099,"y":12573.955392658285},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-1-","id":"7291f0d5-78e1-4d7c-a73d-2068e491344b"}}},{"type":"Polygon Vertex","name":"-2-","id":"bc4ee454-7c2b-4808-a99c-002afae05d39","savedPayload":{"position":{"x":9990.314472494567,"y":12485.992965465333},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-2-","id":"87745033-dc64-4d86-8579-29cf35124f9a"}}},{"type":"Polygon Vertex","name":"-3-","id":"6ad8a90c-4d6e-47ed-a4be-ae3a5684b26d","savedPayload":{"position":{"x":9971.59872853725,"y":12395.55272137446},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-3-","id":"87fc7e3a-455f-49bb-ab44-fc06ba845f00"}}},{"type":"Polygon Vertex","name":"-4-","id":"a49d5c98-f797-45ec-832a-c89de61c5030","savedPayload":{"position":{"x":9966.45605918407,"y":12303.952338163099},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-4-","id":"2bab7192-a08c-4461-b36e-f369491dfd42"}}},{"type":"Polygon Vertex","name":"-5-","id":"5ee4c947-de43-4212-adf9-28d28820da8e","savedPayload":{"position":{"x":9974.562593159011,"y":12212.881430747817},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-5-","id":"3c9d80e6-ad20-4b47-a8f5-1bf19a0b80e2"}}},{"type":"Polygon Vertex","name":"-6-","id":"c6e490ea-bdfd-4738-84e7-dcd8e1078605","savedPayload":{"position":{"x":9996.735865147144,"y":12124.449288633105},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-6-","id":"c6a0d716-6534-453b-9d0f-a8c6faa502f0"}}},{"type":"Polygon Vertex","name":"-7-","id":"2aaa39e8-be04-491e-862e-b1bb03c8d29d","savedPayload":{"position":{"x":10035.594561056812,"y":12030.551045346489},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-7-","id":"fef9ea3b-84c5-43cd-9602-96f8170065bd"}}}],"id":"49566c3d-5038-4737-a68a-4f1f99a53296","savedPayload":{"position":{"x":10640.963579422994,"y":12310.144397142643},"targetPosition":{"x":11230.088306354333,"y":12194.214105362249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Trend Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"5d90400c-c680-452a-b5d6-dd01f3483a67","savedPayload":{"position":{"x":10336.04431049231,"y":12450.530040797157},"targetPosition":{"x":10610.378394632273,"y":12289.861961035038},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6ab5c6b9-d4e4-4b61-a135-17bb3a0204cb","savedPayload":{"position":{"x":10610.378394632273,"y":12289.861961035038},"targetPosition":{"x":10921.79645213607,"y":12114.128738025604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Trend Line End","id":"d99e5489-5977-4ca7-9d11-a65feaeb3e1e","savedPayload":{"position":{"x":10568.411398546887,"y":12022.163589007218},"targetPosition":{"x":10921.79645213607,"y":12114.128738025604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Trend Line End","id":"1e2e8a50-8a93-4696-9ed7-f8ea1da75c5e"}}},{"type":"Polygon Vertex","name":"Trend Line Begin","id":"0f83b930-9073-41a5-a3e6-59ea6b3ebafd","savedPayload":{"position":{"x":10727.167582598435,"y":11850.56892593657},"targetPosition":{"x":10921.79645213607,"y":12114.128738025604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Trend Line Begin","id":"691a374a-ab65-4dc5-b788-979162f87185"}}}],"id":"f826e8bf-cc5c-4b7f-9d15-1fc6a45d7ced","savedPayload":{"position":{"x":10939.089469477603,"y":12118.64120094056},"targetPosition":{"x":11230.088306354333,"y":12194.214105362249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Bullish Arrow","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.forecast === \"Bullish Reversal\" || record.forecast === \"Bullish Continuation\" ","id":"edbfaf8f-8507-4d7b-9057-353f9571e615","savedPayload":{"position":{"x":10213.778124897002,"y":12132.269517906983},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n\"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.5,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"010c4131-393a-474e-98af-444ebfbb7a8d","savedPayload":{"position":{"x":9832.110411093618,"y":12061.536130343056},"targetPosition":{"x":10136.738383878033,"y":11968.48508335417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"5f6e62fc-4d25-4af4-86df-ca18bdd1e897","savedPayload":{"position":{"x":10136.738383878033,"y":11968.48508335417},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 3,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n }\n}","id":"51545ef3-4202-4f31-8746-908b4d04e273","savedPayload":{"position":{"x":9790.998444728728,"y":11792.777718410327},"targetPosition":{"x":10109.09160879138,"y":11789.752637665544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"504af6cf-5682-4ec9-90f1-3b5ac174cb67","savedPayload":{"position":{"x":10109.09160879138,"y":11789.752637665544},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"-1-","id":"e9090bdf-ffe5-4031-89d1-3de33dec1105","savedPayload":{"position":{"x":10180.91832187618,"y":11489.022185253545},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-1-","id":"38b0018b-d162-492e-90b3-604efc79c16e"}}},{"type":"Polygon Vertex","name":"-2-","id":"4a190301-2d52-49ae-a061-9bb553ea1c0f","savedPayload":{"position":{"x":10229.487357706232,"y":11409.369514204043},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-2-","id":"66a65473-db28-42bf-8491-3497a35cc42b"}}},{"type":"Polygon Vertex","name":"-3-","id":"f5a0eaa5-7837-4d60-8040-37f4353e3b27","savedPayload":{"position":{"x":10288.806371235347,"y":11338.81796836232},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-3-","id":"cb37189b-fdb7-4cd7-aa78-1dfd71c8e614"}}},{"type":"Polygon Vertex","name":"-4-","id":"13577516-ccb2-469f-9d59-f5bc71c16e77","savedPayload":{"position":{"x":10356.915208917773,"y":11277.45963608795},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-4-","id":"aae0a6cc-e05b-402f-800c-807df07b1f37"}}},{"type":"Polygon Vertex","name":"-5-","id":"9884c89e-fbb3-4101-b19f-0522b933175c","savedPayload":{"position":{"x":10433.13499988092,"y":11227.026027209664},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-5-","id":"a5f609bd-7162-4155-8778-d085b000ef04"}}},{"type":"Polygon Vertex","name":"-6-","id":"a089c901-705c-4b1a-bf29-fca8669ad902","savedPayload":{"position":{"x":10515.800630207897,"y":11188.449222250814},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-6-","id":"6edd83d4-739a-4651-9204-2a0f617e1256"}}},{"type":"Polygon Vertex","name":"-7-","id":"6a3d330f-6852-4cb0-80fe-72c3bf02aa31","savedPayload":{"position":{"x":10613.300853575201,"y":11160.109996005818},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-7-","id":"b98d1777-f3a2-4bcc-8312-6d89d1c6662e"}}}],"id":"ba0bcada-77c5-450e-a1fc-7708bcaca60b","savedPayload":{"position":{"x":10772.02987586426,"y":11806.085959361126},"targetPosition":{"x":11230.088306354333,"y":12194.214105362249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e0c63725-4cfb-4d1e-9b70-80343de2e9b3","savedPayload":{"position":{"x":11230.088306354333,"y":12194.214105362249},"targetPosition":{"x":11726.311308429293,"y":12000.002156669318},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Two-Candles Patterns","code":"{ \n\"codeName\": \"Two-Candles Patterns\"\n}","panelData":[{"type":"Panel Data","name":"Pattern Name","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.name","id":"6d2625d7-82c7-4186-95a7-8bfe0892446a","savedPayload":{"position":{"x":11282.2990000533,"y":11726.161646922197},"targetPosition":{"x":11535.512418924576,"y":11564.887805754493},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f5538abe-a9aa-42ad-9c30-798dc41ddb80","savedPayload":{"position":{"x":11535.512418924576,"y":11564.887805754493},"targetPosition":{"x":11788.733371624632,"y":11403.513224859445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Direction","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trend","id":"7f273725-f758-4f3e-bc3a-d7d47f919c7a","savedPayload":{"position":{"x":11220.037908516686,"y":11209.153715114357},"targetPosition":{"x":11504.352857782778,"y":11306.304335360548},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2e819599-22c9-4acd-ac77-92f18b20cb61","savedPayload":{"position":{"x":11504.352857782778,"y":11306.304335360548},"targetPosition":{"x":11788.733371624632,"y":11403.513224859445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Forecast","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.forecast","id":"43090bdd-e415-48e8-ba75-4b80d4f0aeee","savedPayload":{"position":{"x":11586.129481188585,"y":10837.61793014342},"targetPosition":{"x":11687.410807177355,"y":11120.507471023042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"39649444-cba8-41d2-bb32-064f43cf8df4","savedPayload":{"position":{"x":11687.410807177355,"y":11120.507471023042},"targetPosition":{"x":11788.733371624632,"y":11403.513224859445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Method","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trendMethod","id":"f7a45eca-7fe0-4837-b719-92e81fa0774d","savedPayload":{"position":{"x":12104.279119313203,"y":10892.061094636183},"targetPosition":{"x":11946.510748979814,"y":11147.737856386202},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6cb4eef6-735b-409a-92c4-fe2b2e1e82be","savedPayload":{"position":{"x":11946.510748979814,"y":11147.737856386202},"targetPosition":{"x":11788.733371624632,"y":11403.513224859445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Period","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"75c3e3bd-c749-463d-bae4-296abf83f078","savedPayload":{"position":{"x":12385.01152304191,"y":11331.348876381158},"targetPosition":{"x":12086.880994256426,"y":11367.456255990743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4c31ec17-bf6c-4dfc-8f42-1e7fe7e77297","savedPayload":{"position":{"x":12086.880994256426,"y":11367.456255990743},"targetPosition":{"x":11788.733371624632,"y":11403.513224859445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Value","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trendLine","id":"d9e33fbf-8990-4363-b674-f1ec7f71bfcd","savedPayload":{"position":{"x":12215.748183200936,"y":11824.340368643023},"targetPosition":{"x":12002.46074564505,"y":11613.906972541092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d4f75b19-1a90-48d8-b6fe-9f064505ae93","savedPayload":{"position":{"x":12002.46074564505,"y":11613.906972541092},"targetPosition":{"x":11788.733371624632,"y":11403.513224859445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6426039f-b3dc-443b-bf6a-faa1dd1e3f2c","savedPayload":{"position":{"x":11788.733371624632,"y":11403.513224859445},"targetPosition":{"x":11726.311308429293,"y":12000.002156669318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3bf46641-3478-41fd-8407-0af20e72f30b","savedPayload":{"position":{"x":11242.579324512362,"y":11851.939369699156},"targetPosition":{"x":11944.774819498161,"y":12362.05365917036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Three-Candles Patterns","code":"{ \n\"codeName\": \"Three-Candles Patterns\"\n}","shapes":{"type":"Shapes","name":"Three-Candles Patterns","chartPoints":[{"type":"Chart Points","name":"Bearish Arrow","points":[{"type":"Point","name":"-1-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)\ny = record.bearishArrowHead*1.01","id":"050fd307-0763-423f-b0a7-488f1e22b2f0","savedPayload":{"position":{"x":11323.22312544964,"y":12398.77290242567},"targetPosition":{"x":11355.846289853453,"y":12100.317423764762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b20f834d-a9d0-419e-87ce-c9d56cdfe948","savedPayload":{"position":{"x":11355.846289853453,"y":12100.317423764762},"targetPosition":{"x":11420.877930333358,"y":11503.982415719443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-2-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bearishArrowHead*1.01","id":"ea09a04d-33f3-430d-9210-b60a0d93accf","savedPayload":{"position":{"x":10988.173987892253,"y":12293.359470804624},"targetPosition":{"x":11132.623775381358,"y":12029.93345933905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d119f364-4c32-4605-afcb-025e62d32f20","savedPayload":{"position":{"x":11132.623775381358,"y":12029.93345933905},"targetPosition":{"x":11420.877930333358,"y":11503.982415719443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-3-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bearishArrowHead*1.05","id":"c472d80d-ff4c-4bdf-af76-b8fb1c9dd3f5","savedPayload":{"position":{"x":10718.975254856272,"y":12067.705534662236},"targetPosition":{"x":10953.244304894615,"y":11879.595091179535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0e94de71-51dc-4d00-81fc-db6a47af48e9","savedPayload":{"position":{"x":10953.244304894615,"y":11879.595091179535},"targetPosition":{"x":11420.877930333358,"y":11503.982415719443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-4-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bearishArrowHead*1.05","id":"c851f754-5148-4d6c-abef-446f4dcbf95c","savedPayload":{"position":{"x":10556.586322739728,"y":11756.177469363914},"targetPosition":{"x":10845.051173261003,"y":11672.051259630229},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"54f3f9d8-a0fd-489b-a280-5791c92afe4a","savedPayload":{"position":{"x":10845.051173261003,"y":11672.051259630229},"targetPosition":{"x":11420.877930333358,"y":11503.982415719443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-5-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bearishArrowHead*1.01","id":"305bea41-e179-499b-bff8-687f861b575a","savedPayload":{"position":{"x":10525.745074217419,"y":11406.81436868035},"targetPosition":{"x":10824.50657379665,"y":11439.198329378869},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"75712c99-427f-4995-ad28-116f514f1b1d","savedPayload":{"position":{"x":10824.50657379665,"y":11439.198329378869},"targetPosition":{"x":11420.877930333358,"y":11503.982415719443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-6-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end+(record.end-record.begin)\ny = record.bearishArrowHead*1.01","id":"3fd2696f-e7e8-41f5-ae74-e757cb72b755","savedPayload":{"position":{"x":10631.124209494767,"y":11071.749322646681},"targetPosition":{"x":10894.737895024446,"y":11215.962561313583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"32a9e24a-ecbb-4272-868f-8a2c1131d780","savedPayload":{"position":{"x":10894.737895024446,"y":11215.962561313583},"targetPosition":{"x":11420.877930333358,"y":11503.982415719443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-7-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.bearishArrowHead","id":"b02696af-5430-4311-a2b8-b7a69d5f085b","savedPayload":{"position":{"x":10867.949211062165,"y":10813.470283355004},"targetPosition":{"x":11044.961393591799,"y":11036.833646122217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"da13c2e7-5b21-44b3-98ef-e101a208cd82","savedPayload":{"position":{"x":11044.961393591799,"y":11036.833646122217},"targetPosition":{"x":11420.877930333358,"y":11503.982415719443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ed6c9b38-f0d8-49d8-b6e6-831ba4391e67","savedPayload":{"position":{"x":11420.37969691572,"y":11503.86735025911},"targetPosition":{"x":11996.288685770072,"y":11335.876531559219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Trend Line","points":[{"type":"Point","name":"Trend Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.trendLine\n","id":"8df901ad-9507-4c1b-aa66-e80e52142e64","savedPayload":{"position":{"x":11016.722031728412,"y":11454.378828646537},"targetPosition":{"x":11316.130511374482,"y":11343.228840785512},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f05e403b-b940-4007-be9d-517cd5f5b761","savedPayload":{"position":{"x":11316.130511374482,"y":11343.228840785512},"targetPosition":{"x":11634.746916819295,"y":11224.7967380953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Trend Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.trendLine","id":"c790f239-fe7c-488c-a22c-ea82c2ea43f3","savedPayload":{"position":{"x":11123.976317395478,"y":10806.782956392311},"targetPosition":{"x":11370.717363619271,"y":11009.24532402787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e185278f-a45c-43e3-8691-6252e48809cc","savedPayload":{"position":{"x":11370.717363619271,"y":11009.24532402787},"targetPosition":{"x":11634.746916819295,"y":11224.7967380953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"30170318-2cab-4bb6-ad3b-362b5a25d245","savedPayload":{"position":{"x":11699.858996619034,"y":11286.736822449375},"targetPosition":{"x":11996.288685770072,"y":11335.876531559219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Bullish Arrow","points":[{"type":"Point","name":"-1-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)\ny = record.bullishArrowHead*0.99","id":"91cd5c4e-6dc9-41f4-abba-e66c6d9c7c3e","savedPayload":{"position":{"x":10622.722060799468,"y":11421.307241331033},"targetPosition":{"x":10891.625071432056,"y":11250.994753964025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a9852c0f-8ac8-4b9d-ac29-e8d8f29da720","savedPayload":{"position":{"x":10891.625071432056,"y":11250.994753964025},"targetPosition":{"x":11428.37470788099,"y":10910.903506853843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-2-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bullishArrowHead*0.99","id":"99075b18-7979-4f15-915a-272a4debd949","savedPayload":{"position":{"x":10488.598236123893,"y":11073.923504266513},"targetPosition":{"x":10802.297353325306,"y":11019.557174673808},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"bb29fdb8-abfe-4377-9063-6790f2eb8d8f","savedPayload":{"position":{"x":10802.297353325306,"y":11019.557174673808},"targetPosition":{"x":11428.37470788099,"y":10910.903506853843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-3-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bullishArrowHead*0.94","id":"9ab43674-72c8-4525-8697-49cbf37785e0","savedPayload":{"position":{"x":10497.727053251536,"y":10702.345373796044},"targetPosition":{"x":10808.36473501717,"y":10771.960855075955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a46f8fdb-d00f-46f6-8ec9-3ef0166107ef","savedPayload":{"position":{"x":10808.36473501717,"y":10771.960855075955},"targetPosition":{"x":11428.37470788099,"y":10910.903506853843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-4-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bullishArrowHead*0.94","id":"cb153aae-7f46-4fbc-aa01-26f7193e8eaf","savedPayload":{"position":{"x":10648.465081528218,"y":10361.987151463314},"targetPosition":{"x":10908.81157590773,"y":10545.175423604298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2e60f4be-e8cc-4489-81f6-27fa3f61921b","savedPayload":{"position":{"x":10908.81157590773,"y":10545.175423604298},"targetPosition":{"x":11428.37470788099,"y":10910.903506853843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-5-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bullishArrowHead*0.99","id":"0b2f59a6-9de6-4ccd-81bc-28288491d705","savedPayload":{"position":{"x":10917.982222647839,"y":10105.243364118034},"targetPosition":{"x":11088.280310237424,"y":10374.161971966498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"1740e52b-986e-49cf-bb3f-c373200c4449","savedPayload":{"position":{"x":11088.280310237424,"y":10374.161971966498},"targetPosition":{"x":11428.37470788099,"y":10910.903506853843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-6-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end+(record.end-record.begin)\ny = record.bullishArrowHead*0.99","id":"ee129388-9aec-4709-bf79-3a3b83fe769e","savedPayload":{"position":{"x":11265.239362694574,"y":9971.125616480742},"targetPosition":{"x":11319.681104897198,"y":10284.73143550902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c8b169eb-6d38-41ab-bc48-e5a08c6f9f45","savedPayload":{"position":{"x":11319.681104897198,"y":10284.73143550902},"targetPosition":{"x":11428.37470788099,"y":10910.903506853843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-7-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.bullishArrowHead","id":"c58904a7-8615-4a27-bd74-1966b35e8924","savedPayload":{"position":{"x":11637.053653088271,"y":9980.249492741956},"targetPosition":{"x":11567.473909210032,"y":10290.876282666291},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f5cee1fe-b34d-47e5-8d4a-26061487b242","savedPayload":{"position":{"x":11567.473909210032,"y":10290.876282666291},"targetPosition":{"x":11428.37470788099,"y":10910.903506853843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b8b4b3de-a98c-4d32-a385-61a186871641","savedPayload":{"position":{"x":11505.611569683755,"y":10990.706000633125},"targetPosition":{"x":11996.288685770072,"y":11335.876531559219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Bearish Arrow","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.forecast === \"Bearish Reversal\" || record.forecast === \"Bearish Continuation\" ","id":"4db8acef-2d4b-4e56-b319-d32b145c4fc1","savedPayload":{"position":{"x":11119.128095792617,"y":10944.30589967562},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n\"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.5,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"da54ef22-f928-44a9-ba54-ddc157d6e2fd","savedPayload":{"position":{"x":10805.569639139107,"y":10755.57900249862},"targetPosition":{"x":11105.440095096237,"y":10774.203022515425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"bd6aeeb9-f9ce-4289-84ee-b89e5bce37ed","savedPayload":{"position":{"x":11105.440095096237,"y":10774.203022515425},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n }\n}","id":"e73e98ac-0abf-488c-88c7-5f218487754a","savedPayload":{"position":{"x":10857.94135517372,"y":10504.319824510389},"targetPosition":{"x":11140.326425888801,"y":10606.83889254854},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"871328e3-7832-4dc2-8758-72612387f556","savedPayload":{"position":{"x":11140.326425888801,"y":10606.83889254854},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"-1-","id":"bc05844f-b3a3-4f25-8688-b555ff25cd31","savedPayload":{"position":{"x":11301.050977821582,"y":10366.359233076688},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-1-","id":"b20f834d-a9d0-419e-87ce-c9d56cdfe948"}}},{"type":"Polygon Vertex","name":"-2-","id":"a7f33d57-8a91-4bf6-a755-2f9572b02d0b","savedPayload":{"position":{"x":11371.1722624145,"y":10310.524995235808},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-2-","id":"d119f364-4c32-4605-afcb-025e62d32f20"}}},{"type":"Polygon Vertex","name":"-3-","id":"4f2d69c6-4919-44a1-b4f4-b11c4d07a8d5","savedPayload":{"position":{"x":11447.492241286429,"y":10267.014695489712},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-3-","id":"0e94de71-51dc-4d00-81fc-db6a47af48e9"}}},{"type":"Polygon Vertex","name":"-4-","id":"cae92b34-1055-4413-8521-b00838b6b3a1","savedPayload":{"position":{"x":11528.553759990715,"y":10235.52821971701},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-4-","id":"54f3f9d8-a0fd-489b-a280-5791c92afe4a"}}},{"type":"Polygon Vertex","name":"-5-","id":"26a5fbf5-1e3c-49a3-a80e-89a38760a6ce","savedPayload":{"position":{"x":11612.88523066173,"y":10216.204955748748},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-5-","id":"75712c99-427f-4995-ad28-116f514f1b1d"}}},{"type":"Polygon Vertex","name":"-6-","id":"85dd4fe1-e267-4e2c-8249-e5a4ad8ac57b","savedPayload":{"position":{"x":11698.894659071782,"y":10209.23251766486},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-6-","id":"32a9e24a-ecbb-4272-868f-8a2c1131d780"}}},{"type":"Polygon Vertex","name":"-7-","id":"0b35f295-6655-45ea-8050-3ea4d565b0a8","savedPayload":{"position":{"x":11799.939994389679,"y":10218.071780310376},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-7-","id":"da13c2e7-5b21-44b3-98ef-e101a208cd82"}}}],"id":"d6bca38f-dad2-4bad-b869-718840793911","savedPayload":{"position":{"x":11703.84184652783,"y":10811.247330102198},"targetPosition":{"x":11996.288685770072,"y":11335.876531559219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Trend Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"735def02-7235-4d8d-b742-2606e271785c","savedPayload":{"position":{"x":11434.031783580725,"y":10494.076725758625},"targetPosition":{"x":11671.890060263624,"y":10704.93803143185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"1cb25c02-7f14-4290-a1dd-cdecfa3d41f1","savedPayload":{"position":{"x":11671.890060263624,"y":10704.93803143185},"targetPosition":{"x":11928.444303103635,"y":10958.74838780957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Trend Line End","id":"ca4b7aaa-e204-477b-917d-5b0d73dcd9ae","savedPayload":{"position":{"x":11906.522706605705,"y":10594.53477284026},"targetPosition":{"x":11928.444303103635,"y":10958.74838780957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Trend Line End","id":"e185278f-a45c-43e3-8691-6252e48809cc"}}},{"type":"Polygon Vertex","name":"Trend Line Begin","id":"1e9cb0f5-9153-4ebf-bea2-e4cdff34e27d","savedPayload":{"position":{"x":12145.984798752914,"y":10662.181312939032},"targetPosition":{"x":11928.444303103635,"y":10958.74838780957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Trend Line Begin","id":"f05e403b-b940-4007-be9d-517cd5f5b761"}}}],"id":"954cc880-be0c-444b-b810-ddf42e1d6d03","savedPayload":{"position":{"x":11978.403649318927,"y":11035.96342506963},"targetPosition":{"x":11996.288685770072,"y":11335.876531559219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Bullish Arrow","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.forecast === \"Bullish Reversal\" || record.forecast === \"Bullish Continuation\" ","id":"71c1088c-78e4-4b13-a432-48488e81f5a9","savedPayload":{"position":{"x":11692.554917196347,"y":10291.090417710408},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n\"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.5,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"26a20027-9ab4-483f-8e8b-54c5feae8eb7","savedPayload":{"position":{"x":11642.115561638522,"y":9906.477084346494},"targetPosition":{"x":11824.629310498469,"y":10167.22023430977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"784e3863-e27c-439a-b219-d2257040f9a8","savedPayload":{"position":{"x":11824.629310498469,"y":10167.22023430977},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n }\n}","id":"c87d6249-dfd9-4bfc-b6d5-1033dc34ab93","savedPayload":{"position":{"x":11884.802002959816,"y":9783.86423191742},"targetPosition":{"x":11986.280508726017,"y":10085.56687123808},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"c307cae0-1d47-4fbd-b17e-c71ed0b460a2","savedPayload":{"position":{"x":11986.280508726017,"y":10085.56687123808},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"-1-","id":"01f59ec4-922f-4f32-89ff-271b4a1715ff","savedPayload":{"position":{"x":12294.252799338366,"y":10060.7280535677},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-1-","id":"a9852c0f-8ac8-4b9d-ac29-e8d8f29da720"}}},{"type":"Polygon Vertex","name":"-2-","id":"63a0a7cf-0e25-4c76-a647-7bce1cf8349d","savedPayload":{"position":{"x":12385.026289073689,"y":10082.266763057805},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-2-","id":"bb29fdb8-abfe-4377-9063-6790f2eb8d8f"}}},{"type":"Polygon Vertex","name":"-3-","id":"34336858-138b-4d29-8e19-963f987eeb7a","savedPayload":{"position":{"x":12470.562647038838,"y":10116.664251173223},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-3-","id":"a46f8fdb-d00f-46f6-8ec9-3ef0166107ef"}}},{"type":"Polygon Vertex","name":"-4-","id":"41b893b7-8450-497e-a10e-378e2aad4f86","savedPayload":{"position":{"x":12549.705420679315,"y":10162.871690624499},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-4-","id":"2e60f4be-e8cc-4489-81f6-27fa3f61921b"}}},{"type":"Polygon Vertex","name":"-5-","id":"b298e992-97da-4b07-b1b5-2419ef56b05a","savedPayload":{"position":{"x":12621.14538227319,"y":10219.833486475736},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-5-","id":"1740e52b-986e-49cf-bb3f-c373200c4449"}}},{"type":"Polygon Vertex","name":"-6-","id":"c38d5012-bbf9-4b31-916a-e98a2557f2c3","savedPayload":{"position":{"x":12683.579723535302,"y":10286.353118900364},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-6-","id":"c8b169eb-6d38-41ab-bc48-e5a08c6f9f45"}}},{"type":"Polygon Vertex","name":"-7-","id":"fd3144a6-1558-42b5-82d8-54975ee48863","savedPayload":{"position":{"x":12740.522915933889,"y":10370.39277722574},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-7-","id":"f5cee1fe-b34d-47e5-8d4a-26061487b242"}}}],"id":"f8d58d58-6d2e-454f-ae56-4f57ab357a85","savedPayload":{"position":{"x":12223.891295761274,"y":10780.059084585857},"targetPosition":{"x":11996.288685770072,"y":11335.876531559219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"01e600b6-8d17-4ea5-bb31-30308e68433e","savedPayload":{"position":{"x":11996.288685770072,"y":11335.876531559219},"targetPosition":{"x":12397.657402922323,"y":11781.568320022714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Three-Candles Patterns","code":"{ \n\"codeName\": \"Three-Candles Patterns\"\n}","panelData":[{"type":"Panel Data","name":"Pattern Name","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.name","id":"5a0d3dea-2329-4eb2-8c13-a112d1f03368","savedPayload":{"position":{"x":12520.225192568534,"y":11274.495236933637},"targetPosition":{"x":12752.031876878431,"y":11465.487959759146},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8b719d3b-612d-4978-bde8-a748068d4366","savedPayload":{"position":{"x":12752.031876878431,"y":11465.487959759146},"targetPosition":{"x":12984.005202484354,"y":11656.548224762046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Direction","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trend","id":"9d7f27b8-56b3-4b97-a3b4-1687a546f367","savedPayload":{"position":{"x":12992.798571351457,"y":11055.225497182697},"targetPosition":{"x":12988.381012769514,"y":11355.809115148824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bdf5aa9a-a121-4275-969e-5eed6ebd878d","savedPayload":{"position":{"x":12988.381012769514,"y":11355.809115148824},"targetPosition":{"x":12984.005202484354,"y":11656.548224762046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Forecast","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.forecast","id":"04bc641a-62a0-4441-b4d5-58fa30fe413e","savedPayload":{"position":{"x":13459.347048368,"y":11288.32697847158},"targetPosition":{"x":13221.660400327579,"y":11472.36407937657},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6ddacd18-8603-4112-bd00-80fe0cb03dcb","savedPayload":{"position":{"x":13221.660400327579,"y":11472.36407937657},"targetPosition":{"x":12984.005202484354,"y":11656.548224762046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Method","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trendMethod","id":"3b43a0f7-d76f-4b8a-8228-9b0282826022","savedPayload":{"position":{"x":13568.094005273182,"y":11796.631855760772},"targetPosition":{"x":13275.698912066033,"y":11726.80305203203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"950a394b-df06-4b90-88fc-b59cb3cc1cb5","savedPayload":{"position":{"x":13275.698912066033,"y":11726.80305203203},"targetPosition":{"x":12984.005202484354,"y":11656.548224762046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Period","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"2b0825d5-9e69-4b0a-861a-c88870b859c4","savedPayload":{"position":{"x":13235.632770919176,"y":12200.615384520046},"targetPosition":{"x":13109.834091389432,"y":11928.5188774151},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"63fbe7e3-b323-40ea-bfdc-0aac0df03c0f","savedPayload":{"position":{"x":13109.834091389432,"y":11928.5188774151},"targetPosition":{"x":12984.005202484354,"y":11656.548224762046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Value","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trendLine","id":"e838b1bb-2079-479e-b85a-38019fca078d","savedPayload":{"position":{"x":12714.895621827774,"y":12192.691719649098},"targetPosition":{"x":12849.570038510854,"y":11924.688453015544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f36e0123-4262-45d3-8e18-699407c0bb78","savedPayload":{"position":{"x":12849.570038510854,"y":11924.688453015544},"targetPosition":{"x":12984.005202484354,"y":11656.548224762046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1f14d068-2fc4-42b5-8edf-7d552f50d1ed","savedPayload":{"position":{"x":12984.005202484354,"y":11656.548224762046},"targetPosition":{"x":12397.657402922323,"y":11781.568320022714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"acdb9c43-0859-42be-87b0-1a600cf513d4","savedPayload":{"position":{"x":12212.794578909132,"y":11536.541369818186},"targetPosition":{"x":11944.774819498161,"y":12362.05365917036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e10e4374-b30c-4974-b2ff-bd789f50fde2","savedPayload":{"position":{"x":11944.774819498161,"y":12362.05365917036},"targetPosition":{"x":12813.422748313864,"y":12362.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"38d04c99-51a6-4c1c-853e-ba67e216854b","savedPayload":{"position":{"x":12813.422748313864,"y":12362.02928226611},"targetPosition":{"x":12813.422748313864,"y":12362.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}]} \ No newline at end of file diff --git a/Includes/Workspaces/WHB-BBTB-Paper Trading.json b/Includes/Workspaces/WHB-BBTB-Paper Trading.json new file mode 100644 index 000000000..d6ef32862 --- /dev/null +++ b/Includes/Workspaces/WHB-BBTB-Paper Trading.json @@ -0,0 +1 @@ +{"type":"Workspace","name":"Binance - WHB - BBTB","rootNodes":[{"type":"Network","name":"Superalgos","networkNodes":[{"type":"Network Node","name":"My Computer","code":"{ \n\"host\": \"localhost\", \n\"webPort\": \"34247\", \n\"webSocketsPort\": \"8080\"\n}","dataStorage":{"type":"Data Storage","name":"New Data Storage","dataMinesData":{"type":"Data Mines Data","name":"New Data Mines Data","exchangeDataProducts":[{"type":"Exchange Data Products","name":"Binance","marketDataProducts":[{"type":"Market Data Products","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"dd7c8795-bb24-4438-9d77-b37a9000ad7f","savedPayload":{"position":{"x":39655.39345377463,"y":28084.121285348076},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"98e6c917-f4b7-4b71-9215-de3ccaf3dc0c","savedPayload":{"position":{"x":39619.08803001109,"y":27971.34006849996},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"1d7dd537-5f6f-4eb2-8e56-ddba0aef720f","savedPayload":{"position":{"x":39594.11393185164,"y":27855.840877332517},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"221c8d22-8a7f-4014-a7ed-0bafc886b123","savedPayload":{"position":{"x":39580.59887306321,"y":27738.507421368748},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"6929ebe7-6486-4299-add5-ed0282500d91","savedPayload":{"position":{"x":39578.655464896365,"y":27620.63069875915},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"4a3ed8eb-a73e-4fb4-835a-681cf47d7373","savedPayload":{"position":{"x":39588.297198778826,"y":27502.946480135615},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"5ffc6a67-e33b-422b-8e36-f9711f93c723","savedPayload":{"position":{"x":39609.428887621216,"y":27386.77785099828},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"48f7953c-f62d-4292-b042-d1ac05f8f80f","savedPayload":{"position":{"x":39641.84608404141,"y":27273.24280350331},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"3b9a3c93-6d41-440e-89a2-2fd1b2dde603","savedPayload":{"position":{"x":39685.2360649887,"y":27163.433854438405},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"70401ea0-3fed-4e40-8bba-a1e5adce9b8c","savedPayload":{"position":{"x":39739.18066448831,"y":27058.407968059906},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"06ac8eb7-8b14-42b1-9e2e-466280ade032","savedPayload":{"position":{"x":39803.16019594351,"y":26959.1762369918},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"014bba70-64d4-4035-b06d-145ee9b4c54c","savedPayload":{"position":{"x":39876.55840037216,"y":26866.694054096202},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"768cc06c-6fdf-491a-a741-5e08f0e25e38","savedPayload":{"position":{"x":39958.66834477317,"y":26781.851861425766},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"40794460-b815-498f-a245-e677de0eed86","savedPayload":{"position":{"x":40048.69920292061,"y":26705.466552453436},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"7ccbd0c1-c804-47e3-9314-14cbb756c806","savedPayload":{"position":{"x":40145.78385240617,"y":26638.273605375165},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"728d6f08-086f-41ba-9126-30ec56a45ea5","savedPayload":{"position":{"x":40248.98721974834,"y":26580.920017944973},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"1510fd36-633e-40a7-adbe-680660d64bd0","savedPayload":{"position":{"x":40357.31529765827,"y":26533.95809992029},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"2404b1eb-c7c9-46e7-b22a-93cfcc3739f4","savedPayload":{"position":{"x":40469.72474382882,"y":26497.840166222424},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"d83476c3-2f0b-4d4a-abb2-0e47ed0a421d","savedPayload":{"position":{"x":40585.132955318084,"y":26472.914171771416},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"0428f20b-9620-480e-a531-dbb2e5f59ef4","savedPayload":{"position":{"x":40702.42850753783,"y":26459.42033593334},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"fcfec9fa-1a0d-4285-9fad-4a23409f88ed","savedPayload":{"position":{"x":40820.28557415008,"y":26457.488926076465},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"08f223a8-9707-4c45-b638-1fe0e4a2b053","savedPayload":{"position":{"x":40937.95845139182,"y":26467.13880986452},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"66f1a9be-fe96-48c3-91e4-500c6e246423","savedPayload":{"position":{"x":41054.120384899,"y":26488.277064496815},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"e432c706-cbcd-4af0-b23c-b18e5b29377a","savedPayload":{"position":{"x":41167.65178678811,"y":26520.700545782674},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"7f2dfd8e-de4a-4bd1-8d34-27581f1a3ed8","savedPayload":{"position":{"x":41277.4594798642,"y":26564.097566374792},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"595d148f-6cdf-48d3-ab8f-23fba0052631","savedPayload":{"position":{"x":41382.48641024106,"y":26618.051155654128},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"2045098a-e9b4-4409-9fd9-ee7285d9b7cf","savedPayload":{"position":{"x":41481.72199276818,"y":26682.043494609432},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"295bd09d-e868-4e8b-9944-39bf6e0d7951","savedPayload":{"position":{"x":41574.21247985582,"y":26755.461785010735},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"ba6f23d4-c2e7-41b4-88a0-e14ebb34e21c","savedPayload":{"position":{"x":41659.072595416554,"y":26837.602086697607},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}},{"type":"Data Product","name":"Resistances","id":"0669d924-aace-46d1-b126-ccced8fd33cf","savedPayload":{"position":{"x":41734.78246123321,"y":26926.742016325188},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Resistances","id":"7a734501-a0fb-4305-803e-7e95d477c513"}}},{"type":"Data Product","name":"Supports","id":"5e7a0e50-e6ed-4106-8025-8b35ad6c597c","savedPayload":{"position":{"x":41803.59685318991,"y":27026.194745818015},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Supports","id":"bc3c43de-6312-47d4-ae3d-0c95c1b039e0"}}}],"id":"cbdd3605-b905-453f-9ecb-e986cb2729f9","savedPayload":{"position":{"x":24207.999751769254,"y":28942.4248575682},"targetPosition":{"x":25074.611669244932,"y":29722.715919865514},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}}],"id":"7f87ecc6-8dd3-42e9-9217-1579b64aae75","savedPayload":{"position":{"x":25074.725705182926,"y":29722.361915324287},"targetPosition":{"x":25508.405506167062,"y":30112.915970947008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"bf04ccea-266d-4115-b50e-fefdf29b873a","savedPayload":{"position":{"x":25508.405506167062,"y":30112.915970947008},"targetPosition":{"x":25942.043094058594,"y":30503.50687445451},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"i"}}},"tradingMinesData":{"type":"Trading Mines Data","name":"New Trading Mines Data","exchangeTradingProducts":[{"type":"Exchange Trading Products","name":"Binance","sessionReferences":[{"type":"Session Reference","name":"Back WHB ","marketDataProducts":{"type":"Market Data Products","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"573fb46f-78d2-4bf3-ad11-e42d2531d53e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"39d7a06d-5aad-4b03-8778-e4df8dacc825","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"7af9d35c-7464-4ed5-9ee6-ccf7a9943894","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"82b46974-7a93-4066-a3b7-378b42710364","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"109e30d5-c839-4e20-8744-2e4dc002f3a8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"3792a579-2f2c-4c29-9cb1-05e2683db5da","savedPayload":{"position":{"x":25442.41940134145,"y":28898.292141318674},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Backtesting Session","name":"Back WHB","id":"f32f1cdc-425f-4193-a43b-be9312c74234"}}},{"type":"Session Reference","name":"Paper WHB ","marketDataProducts":{"type":"Market Data Products","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"63636068-307e-4cea-b31f-f47e106cea2c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"20848048-8efb-47b1-aaf0-789d2f6c5b1d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"87b74841-4f6a-4658-b01b-7feb254b5d2f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"5e28998c-b35f-4cc0-9fd6-8ee5f5714545","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"12cd1cb4-f163-4d1b-8955-cae6904831c7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"5f2e9d8a-f1df-4efd-8232-718818cab630","savedPayload":{"position":{"x":25645.811186643416,"y":28672.384434673422},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Paper Trading Session","name":"Paper WHB","id":"2198ec50-3d31-43b7-a57d-e386bef38a93"}}},{"type":"Session Reference","name":"Live Trading WHB ","marketDataProducts":{"type":"Market Data Products","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"af19e56c-eaf1-4b0b-93f9-74b9ac1843c2","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"30ac52a8-ee50-439c-83c8-df75ab49374a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"c35fa0be-6e51-4d14-9a52-6b0174cc1aab","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"6a059555-2555-4c7f-a722-2ab4ca0440c5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"863885a8-2351-4b29-9f2e-ae3aeda223fc","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"ee314903-8ee9-4068-8a90-9452c460b910","savedPayload":{"position":{"x":25914.176401881115,"y":28529.692846346756},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Live Trading Session","name":"Live Trading WHB","id":"5335fd67-ebdc-4cfd-936d-b76af957713e"}}},{"type":"Session Reference","name":"Fwd WHB ","marketDataProducts":{"type":"Market Data Products","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"5919a710-a950-4049-9605-3f127b7fac6b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"c7030a88-152f-421c-8b32-66f3c222286a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"f4b18249-5044-4b34-83f7-3cedbbe939c5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"25db80e6-c4cf-4568-98d3-0cba83625ece","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"9b6e94d5-442d-4882-beb6-6b616adb24a7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"3892574a-ebe9-4d4d-8e79-02e6f0900c44","savedPayload":{"position":{"x":26214.957290034235,"y":28487.39268280673},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Forward Testing Session","name":"Fwd WHB","id":"0e7edb98-38ff-4516-89a1-188030989ddc"}}},{"type":"Session Reference","name":"Back BBTB Binance BTC/USDT","marketDataProducts":{"type":"Market Data Products","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Simulation","id":"653622df-b35b-4c72-9b1d-cbbea2d45a93","savedPayload":{"position":{"x":26455.573591725715,"y":27743.761762864735},"targetPosition":{"x":26685.903141314688,"y":28119.50039190219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"bcd39fee-3584-4e3a-b524-05ecb62d4582","savedPayload":{"position":{"x":26718.02998233403,"y":27678.207255468882},"targetPosition":{"x":26685.903141314688,"y":28119.50039190219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"aa60feec-3e11-4509-ab4f-5eac17ea7d3b","savedPayload":{"position":{"x":26969.002379074984,"y":27779.578235462006},"targetPosition":{"x":26685.903141314688,"y":28119.50039190219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"d6a48300-ab24-4b7b-8fb1-b431e389c7d1","savedPayload":{"position":{"x":27112.390627347257,"y":28009.145745126465},"targetPosition":{"x":26685.903141314688,"y":28119.50039190219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"1a28b5a4-fd4e-4911-a195-3a27cac67cd9","savedPayload":{"position":{"x":26685.903141314688,"y":28119.50039190219},"targetPosition":{"x":26511.90768779935,"y":28550.735424728384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"894fe28c-55f0-4ce7-a61f-31b7a58036b0","savedPayload":{"position":{"x":26512.25277222365,"y":28550.5818725418},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Backtesting Session","name":"Back BBTB","id":"5d72321e-97e7-404f-8272-809dbbf4db35"}}},{"type":"Session Reference","name":"Paper BBTB Binance BTC/USDT","marketDataProducts":{"type":"Market Data Products","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Simulation","id":"2004d488-ba55-478c-afa4-c00a555bf34c","savedPayload":{"position":{"x":26971.216338450067,"y":27957.810135682634},"targetPosition":{"x":27062.315598951875,"y":28386.268950715483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"7859d024-817a-4059-8a17-86690194f9de","savedPayload":{"position":{"x":27240.2554163473,"y":27986.018658800323},"targetPosition":{"x":27062.315598951875,"y":28386.268950715483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"11af0867-3396-48d4-b794-9d133d2d2416","savedPayload":{"position":{"x":27441.353895746524,"y":28167.02459841552},"targetPosition":{"x":27062.315598951875,"y":28386.268950715483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"dd541e63-8071-4b0f-8eb8-5fd50ef3eb82","savedPayload":{"position":{"x":27497.330846318662,"y":28431.383320855293},"targetPosition":{"x":27062.315598951875,"y":28386.268950715483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"778e7f94-7cf1-43a2-8843-2faca50fd6b2","savedPayload":{"position":{"x":27062.315598951875,"y":28386.268950715483},"targetPosition":{"x":26769.67959034035,"y":28711.749779677113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"fdfa0714-e7cc-4833-8623-2366fc36e275","savedPayload":{"position":{"x":26770.006560596325,"y":28711.63882050236},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Paper Trading Session","name":"Paper BBTB","id":"a70b66f2-4d79-4ab0-8a84-cb47fd872b79"}}},{"type":"Session Reference","name":"Live Trading BBTB Binance BTC/USDT","marketDataProducts":{"type":"Market Data Products","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Simulation","id":"84c5619b-c379-4bed-bd1c-3dccfc840fa7","savedPayload":{"position":{"x":27403.685124941287,"y":28311.811214135712},"targetPosition":{"x":27342.982549435495,"y":28745.594465055852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"9cd0c0da-e0df-4b83-a7f5-7e503f050020","savedPayload":{"position":{"x":27646.983850070956,"y":28430.393602867665},"targetPosition":{"x":27342.982549435495,"y":28745.594465055852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"8681f8d9-c6fa-4966-aa76-e627000962cb","savedPayload":{"position":{"x":27773.915926630965,"y":28669.291142164537},"targetPosition":{"x":27342.982549435495,"y":28745.594465055852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"05aa1029-fde5-4240-b5ef-31636ed817ee","savedPayload":{"position":{"x":27735.959746783006,"y":28937.181489181425},"targetPosition":{"x":27342.982549435495,"y":28745.594465055852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"c966a877-9552-4b7c-9b12-f6cbf5e631d6","savedPayload":{"position":{"x":27342.982549435495,"y":28745.594465055852},"targetPosition":{"x":26956.711147228187,"y":28951.208113208817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"9576879e-2a52-4224-b082-6d8f0a25424f","savedPayload":{"position":{"x":26957.130045686332,"y":28951.141808070486},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Live Trading Session","name":"Live Trading BBTB","id":"ef82a64d-7c70-48d5-868a-09acf97e5289"}}},{"type":"Session Reference","name":"Fwd BBTB Binance BTC/USDT","marketDataProducts":{"type":"Market Data Products","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Simulation","id":"3713af17-7ed8-4d32-abbb-66be7ba3d95b","savedPayload":{"position":{"x":27689.20756476676,"y":28792.01762932115},"targetPosition":{"x":27483.76587740709,"y":29178.885493436097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"8206a3c4-7a92-4f52-aa29-d0b912511e94","savedPayload":{"position":{"x":27877.30263666776,"y":28986.652324934446},"targetPosition":{"x":27483.76587740709,"y":29178.885493436097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"35c51f59-d967-4fb9-bf3d-ebef155fe90a","savedPayload":{"position":{"x":27914.92862485214,"y":29254.298693059718},"targetPosition":{"x":27483.76587740709,"y":29178.885493436097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"82cb4b63-c7ed-4e1c-b558-5caf08e7840e","savedPayload":{"position":{"x":27787.524400010894,"y":29492.93889701325},"targetPosition":{"x":27483.76587740709,"y":29178.885493436097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"b07b8215-91b7-4cdf-b0c9-f6de319d98af","savedPayload":{"position":{"x":27483.76587740709,"y":29178.885493436097},"targetPosition":{"x":27050.43363927934,"y":29240.015942621932},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"f28418b1-30c9-4f12-9162-b483ed79adf9","savedPayload":{"position":{"x":27051.047858882026,"y":29240.240033953312},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Forward Testing Session","name":"Fwd BBTB","id":"7b91c25c-ac96-4c3c-9e79-17c262f17180"}}}],"id":"5b3343c9-3fab-46ec-92e3-9c074759a112","savedPayload":{"position":{"x":26184.524152752183,"y":29361.71743417283},"targetPosition":{"x":26063.272886633127,"y":29932.60782590063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"29ca14e5-dabe-470a-be64-ed7996bd1e55","savedPayload":{"position":{"x":26063.272886633127,"y":29932.60782590063},"targetPosition":{"x":25942.043094058594,"y":30503.50687445451},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0726a9e4-23b6-4d27-a8de-e91a9665a8ba","savedPayload":{"position":{"x":25941.60968395914,"y":30503.712197202494},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"d"}}},"dataMining":{"type":"Data Mining","name":"New Data Mining","exchangeTasks":[{"type":"Exchange Tasks","name":"Binance","taskManagers":[{"type":"Task Manager","name":"Masters BTC/USDT","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"b1a110d4-ac93-402d-8465-a35a835d0c22","savedPayload":{"position":{"x":26295.883180649682,"y":28781.02071571988},"targetPosition":{"x":26497.222428934132,"y":28992.954328293225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"fa3aae08-61b3-4a35-af20-c1242b9954c8","savedPayload":{"position":{"x":26497.222428934132,"y":28992.954328293225},"targetPosition":{"x":26698.686701323943,"y":29204.867065588183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"e61db3ab-b80d-4575-8da1-5598e0b1b525","savedPayload":{"position":{"x":26698.686701323943,"y":29204.867065588183},"targetPosition":{"x":26900.400112353815,"y":29416.82711146725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"160f8edd-29cf-40c2-bb21-5f569d97f9d1","savedPayload":{"position":{"x":26900.400112353815,"y":29416.82711146725},"targetPosition":{"x":27303.082032029302,"y":29840.118738367644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true}}},{"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"22df3948-2a73-4ca6-a927-4b722dbb27dc","savedPayload":{"position":{"x":26644.45974747229,"y":28548.554481944204},"targetPosition":{"x":26816.384758751177,"y":28785.12135425244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"5324b18d-e2b0-495e-94a0-cfc3f3473766","savedPayload":{"position":{"x":26816.384758751177,"y":28785.12135425244},"targetPosition":{"x":26988.358298338662,"y":29021.66046932211},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"d7e0c235-4024-4888-86ba-32cf5c73b852","savedPayload":{"position":{"x":26896.499168167244,"y":28149.837121509467},"targetPosition":{"x":26942.377588467076,"y":28585.66629249468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"02adb2d3-1740-4f42-975e-e0365e308b97","savedPayload":{"position":{"x":26942.377588467076,"y":28585.66629249468},"targetPosition":{"x":26988.358298338662,"y":29021.66046932211},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"ccf1813f-31d2-4359-88ce-8c8e6132f222","savedPayload":{"position":{"x":26988.358298338662,"y":29021.66046932211},"targetPosition":{"x":27093.434632225042,"y":29294.809817955294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b55a2f7e-354e-47ce-8986-a4a0079efe2b","savedPayload":{"position":{"x":27093.434632225042,"y":29294.809817955294},"targetPosition":{"x":27303.082032029302,"y":29840.118738367644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"89bf947b-a245-4aad-a2fa-472ad6f8fd2e","savedPayload":{"position":{"x":27189.007070173757,"y":28394.628683967607},"targetPosition":{"x":27257.189858102716,"y":28679.07241420818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"df74508f-a106-4190-83ae-8c43455cd889","savedPayload":{"position":{"x":27257.189858102716,"y":28679.07241420818},"targetPosition":{"x":27325.42525358709,"y":28963.47675137435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"441d958c-4ebf-4cc5-b49e-cdaf3802efc3","savedPayload":{"position":{"x":27573.93948456691,"y":28122.727349099685},"targetPosition":{"x":27449.67837159323,"y":28543.00784031277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"daf27799-58cb-480a-832b-4e3404882961","savedPayload":{"position":{"x":27449.67837159323,"y":28543.00784031277},"targetPosition":{"x":27325.42525358709,"y":28963.47675137435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"b1b31e7e-12f8-45fd-9508-cb82030d7507","savedPayload":{"position":{"x":27325.42525358709,"y":28963.47675137435},"targetPosition":{"x":27318.04771096425,"y":29256.090207341334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"52b4b8db-0336-423c-9343-5353225b4bfb","savedPayload":{"position":{"x":27318.04771096425,"y":29256.090207341334},"targetPosition":{"x":27303.082032029302,"y":29840.118738367644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f7457cf6-bcdc-48e1-b6e2-b45de382bc37","savedPayload":{"position":{"x":27750.59008771799,"y":28461.011883914747},"targetPosition":{"x":27704.890336736928,"y":28749.968449995053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"5a6b7843-090c-4b3b-9be4-ed8c8d1f6935","savedPayload":{"position":{"x":27704.890336736928,"y":28749.968449995053},"targetPosition":{"x":27659.265537524494,"y":29038.892445996626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"e78c5425-7d77-47c5-bb63-db88cad6e060","savedPayload":{"position":{"x":28210.57800543983,"y":28357.190791083507},"targetPosition":{"x":27934.9127248574,"y":28697.97601481323},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"4c5ed30f-d600-44e2-ac14-33ce0528178e","savedPayload":{"position":{"x":27934.9127248574,"y":28697.97601481323},"targetPosition":{"x":27659.265537524494,"y":29038.892445996626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"b4fb4df9-2d6e-4c0a-8eb5-d1bd78232d0d","savedPayload":{"position":{"x":27659.265537524494,"y":29038.892445996626},"targetPosition":{"x":27540.451050111034,"y":29306.356831327645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"aacffa8c-5a19-423f-b551-0f9a5c46a628","savedPayload":{"position":{"x":27540.451050111034,"y":29306.356831327645},"targetPosition":{"x":27303.082032029302,"y":29840.118738367644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true}}},{"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"7af918d3-d9a4-4553-9b3d-12224b4ad938","savedPayload":{"position":{"x":28245.174909819263,"y":28766.904509828622},"targetPosition":{"x":28091.2278106834,"y":28986.952429924397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"0d8ca3f1-31af-40e4-8f43-4dacc8950dff","savedPayload":{"position":{"x":28091.2278106834,"y":28986.952429924397},"targetPosition":{"x":27938.73044929597,"y":29236.34314519764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f11fe52f-ba3f-486d-93f2-a6b82fa67c2d","savedPayload":{"position":{"x":28718.945795488988,"y":28822.516728436756},"targetPosition":{"x":28333.864281860973,"y":29031.952283085076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"ba74160c-2b59-497a-b895-4ddade53f72e","savedPayload":{"position":{"x":28333.864281860973,"y":29031.952283085076},"targetPosition":{"x":27938.73044929597,"y":29236.34314519764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":true,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"3a93a6a1-0d2e-475b-874e-8784dc4b6c78","savedPayload":{"position":{"x":27938.73044929597,"y":29236.34314519764},"targetPosition":{"x":27726.62465987292,"y":29437.897749686173},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"9843b9dd-ff8e-4cef-b063-730b0317420d","savedPayload":{"position":{"x":27726.62465987292,"y":29437.897749686173},"targetPosition":{"x":27303.082032029302,"y":29840.118738367644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"da37aa9d-a68c-49eb-be66-5fcc1a13ab69","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"abae0d8d-c44c-4825-b6ad-aabad604ba2d","savedPayload":{"position":{"x":28394.53872961677,"y":29420.62786332786},"targetPosition":{"x":28121.319348218272,"y":29525.417752214318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"f33858b9-8561-4f70-ba70-d8d168786321","savedPayload":{"position":{"x":28121.319348218272,"y":29525.417752214318},"targetPosition":{"x":27848.09286525633,"y":29630.41216377752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"64e8f70e-829c-47cd-b933-f4e4dd0c90fc","savedPayload":{"position":{"x":27848.09286525633,"y":29630.41216377752},"targetPosition":{"x":27303.082032029302,"y":29840.118738367644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true}}},{"type":"Task","name":"Resistances & Supports","bot":{"type":"Indicator Bot Instance","name":"Resistances & Supports","code":" {\n \"repo\": \"\"\n }","processes":[{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"5e0f86e6-2a43-49c2-a347-7203f0867c2d","savedPayload":{"position":{"x":29011.52718735605,"y":29677.41573263354},"targetPosition":{"x":28585.083084291266,"y":29779.557601835302},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"f9f341a9-ba04-4c03-8f3b-249e72681562","savedPayload":{"position":{"x":28585.083084291266,"y":29779.557601835302},"targetPosition":{"x":28159.021356724304,"y":29882.033674231632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"5d9b2729-43fb-4e7e-aa4f-b8477c424e51"}}},{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"9974d57e-33ac-4fcf-ad75-35a8c4dc549e","savedPayload":{"position":{"x":28720.015724301054,"y":30047.848625422554},"targetPosition":{"x":28439.576021517783,"y":29964.85029882945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"9c93e98f-e166-4c8d-a9d7-08ada9c68eeb","savedPayload":{"position":{"x":28439.576021517783,"y":29964.85029882945},"targetPosition":{"x":28159.021356724304,"y":29882.033674231632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"be19d91b-9337-4f84-96b3-f4e54ea12df5"}}}],"id":"88a4c3b6-e148-47e8-91b2-bf72bb167dc5","savedPayload":{"position":{"x":28159.021356724304,"y":29882.033674231632},"targetPosition":{"x":27866.35245532622,"y":29874.794424807704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6c9dc449-6a37-4f34-8984-13aafed439fc","savedPayload":{"position":{"x":27866.35245532622,"y":29874.794424807704},"targetPosition":{"x":27303.082032029302,"y":29840.118738367644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ea242bf3-f7e6-431a-ab41-e022cb3ac6df","savedPayload":{"position":{"x":27303.082032029302,"y":29840.118738367644},"targetPosition":{"x":27066.080859135393,"y":30373.26277782218},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta BTC/USDT","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"08b275d2-c921-49d0-a88d-5669df5c17e0","savedPayload":{"position":{"x":28241.845428201705,"y":28663.44944919631},"targetPosition":{"x":28242.430327677328,"y":28985.435432006685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"a5449b25-a98e-4fa4-87eb-5f60b967770a","savedPayload":{"position":{"x":28242.430327677328,"y":28985.435432006685},"targetPosition":{"x":28251.366125504286,"y":29282.618619527882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"287d4ba4-1404-4256-bdbb-cf2c970e5269","savedPayload":{"position":{"x":29262.888499407756,"y":28698.749245477964},"targetPosition":{"x":28757.267916115878,"y":28990.695347648223},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"05fb2b7e-6704-4f05-b12b-b590101e5ca9","savedPayload":{"position":{"x":28757.267916115878,"y":28990.695347648223},"targetPosition":{"x":28251.366125504286,"y":29282.618619527882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"f6dc278d-5a5c-4cba-b513-f0660a9f492d","savedPayload":{"position":{"x":28251.366125504286,"y":29282.618619527882},"targetPosition":{"x":27959.043137231773,"y":29788.39353206373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a15b5f86-52c2-4a22-9dd9-311d981601ba","savedPayload":{"position":{"x":27959.043137231773,"y":29788.39353206373},"targetPosition":{"x":27646.483205424855,"y":30312.68782112075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f8ea11d8-7b32-4ed0-968d-a20df0b49d7f","savedPayload":{"position":{"x":29058.123323616346,"y":29365.592035520756},"targetPosition":{"x":28886.085221923953,"y":29601.940279691247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"e32509df-e962-4760-991e-6533a398c58e","savedPayload":{"position":{"x":28886.085221923953,"y":29601.940279691247},"targetPosition":{"x":28714.220541495124,"y":29838.336300834977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"0d4140a1-5e1f-4e2e-b540-582474e41889","savedPayload":{"position":{"x":29875.737816682104,"y":29959.950294544436},"targetPosition":{"x":29295.07970717747,"y":29899.13237115068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"96466f5a-6dd9-4db9-b30c-1c4622076d8a","savedPayload":{"position":{"x":29295.07970717747,"y":29899.13237115068},"targetPosition":{"x":28714.220541495124,"y":29838.336300834977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"fffaf3df-a88c-4d45-bb52-d02b818502b5","savedPayload":{"position":{"x":28714.220541495124,"y":29838.336300834977},"targetPosition":{"x":28180.258265470642,"y":30075.671588361656},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"53fd5de3-7d70-4eb7-8dd6-976d1e188d12","savedPayload":{"position":{"x":28180.258265470642,"y":30075.671588361656},"targetPosition":{"x":27646.483205424855,"y":30312.68782112075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true}}},{"type":"Task","name":"MACD","bot":{"type":"Indicator Bot Instance","name":"MACD","code":" {\n\"repo\": \"MACD-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"78a80ff6-f4f2-4680-9a7b-65225144dd94","savedPayload":{"position":{"x":29344.89030317149,"y":30375.29430631091},"targetPosition":{"x":29066.87926282464,"y":30465.46320932501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"301a8d2c-f659-4d4b-9906-40177bdc1256","savedPayload":{"position":{"x":29066.87926282464,"y":30465.46320932501},"targetPosition":{"x":28788.959285772373,"y":30555.60369823627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"a9291a08-1ba1-436b-b491-e759cc8fb7d1","savedPayload":{"position":{"x":29657.705357360162,"y":31335.98684219346},"targetPosition":{"x":29223.22494058304,"y":30945.392194454824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"19fff031-07c3-4836-9bca-1570eb69a931","savedPayload":{"position":{"x":29223.22494058304,"y":30945.392194454824},"targetPosition":{"x":28788.959285772373,"y":30555.60369823627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"a81bcaf4-6c99-4b6a-8291-5fa657ae2c17","savedPayload":{"position":{"x":28788.959285772373,"y":30555.60369823627},"targetPosition":{"x":28217.863740614983,"y":30434.314806049108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8e2997a2-13ae-464c-b980-9ec46584db3b","savedPayload":{"position":{"x":28217.863740614983,"y":30434.314806049108},"targetPosition":{"x":27646.483205424855,"y":30312.68782112075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f6802028-335d-4e31-90a7-9d608199aafb","savedPayload":{"position":{"x":28973.11521515792,"y":31344.335763341525},"targetPosition":{"x":28704.970711911235,"y":31270.605242395817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"8540fa7a-f4b2-4e97-923c-e8acd00bbb9f","savedPayload":{"position":{"x":28704.970711911235,"y":31270.605242395817},"targetPosition":{"x":28427.545214442536,"y":31180.51925091947},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"51d58c12-ad1f-450e-94fd-ea0f8ad08769","savedPayload":{"position":{"x":28673.375571091077,"y":32328.64889871979},"targetPosition":{"x":28551.84630651388,"y":31757.586799138462},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"c655562c-3839-42e0-9ea6-982629405d33","savedPayload":{"position":{"x":28551.84630651388,"y":31757.586799138462},"targetPosition":{"x":28427.545214442536,"y":31180.51925091947},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"f84cf5d6-034c-42db-b197-e95c0228efc9","savedPayload":{"position":{"x":28427.545214442536,"y":31180.51925091947},"targetPosition":{"x":28037.115804417565,"y":30746.897349476265},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"385443d2-f17f-459c-b603-58f42e5c366f","savedPayload":{"position":{"x":28037.115804417565,"y":30746.897349476265},"targetPosition":{"x":27646.483205424855,"y":30312.68782112075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true,"shortcutKey":""}}}],"id":"2a5cc26f-cb88-4743-b412-c33acb6aa0fb","savedPayload":{"position":{"x":27646.483205424855,"y":30312.68782112075},"targetPosition":{"x":27066.080859135393,"y":30373.26277782218},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true,"shortcutKey":"j"}}}],"id":"b1c93d10-5dd9-4b3f-9662-b9bf7850b81a","savedPayload":{"position":{"x":27066.080859135393,"y":30373.26277782218},"targetPosition":{"x":26594.258895134553,"y":30716.023926107933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"7449a608-32ca-4285-94d1-c96791e2817f","savedPayload":{"position":{"x":26594.258895134553,"y":30716.023926107933},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":true}}},"testingEnvironment":{"type":"Testing Environment","name":"New Testing Environment","exchangeTasks":[{"type":"Exchange Tasks","name":"Binance","taskManagers":[{"type":"Task Manager","name":"Paper & Backtesting Sessions WHB","tasks":[{"type":"Task","name":"Paper Trading WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"34d3f232-9fb1-47e1-97be-9233ef34db93","savedPayload":{"position":{"x":28971.432538037425,"y":31197.566779872068},"targetPosition":{"x":29256.219118556106,"y":31260.634923884376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"969cd1c0-1d6d-4667-a810-d18369410d94","savedPayload":{"position":{"x":29127.62298552182,"y":30998.711317235444},"targetPosition":{"x":29256.219118556106,"y":31260.634923884376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"4af996da-6714-41ac-ad51-5706f41b40f0","savedPayload":{"position":{"x":29381.620075223396,"y":30996.639103531685},"targetPosition":{"x":29256.219118556106,"y":31260.634923884376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"963db77e-0405-4fc4-8780-1b7fa93f41a6","savedPayload":{"position":{"x":29540.89032751756,"y":31193.558193870093},"targetPosition":{"x":29256.219118556106,"y":31260.634923884376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"cd125f30-93e7-4786-b1e1-33274bd2877c","savedPayload":{"position":{"x":29486.30541580984,"y":31441.24034082615},"targetPosition":{"x":29256.219118556106,"y":31260.634923884376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"f8fcac2e-2a52-4189-a95d-77e83b5a6f98","savedPayload":{"position":{"x":29258.946454726385,"y":31552.954199174594},"targetPosition":{"x":29256.219118556106,"y":31260.634923884376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b5ba0c98-c052-4195-92c2-119652d91c32","savedPayload":{"position":{"x":29256.219118556106,"y":31260.634923884376},"targetPosition":{"x":29028.981165627734,"y":31444.11933945327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2198ec50-3d31-43b7-a57d-e386bef38a93","savedPayload":{"position":{"x":29028.981165627734,"y":31444.11933945327},"targetPosition":{"x":28797.356906507983,"y":31618.925881685504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"h"},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"a239a374-497a-43f9-8382-5277410b1c2d"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"06c8bcea-4122-4a35-8db3-a1ddc7657e4b","savedPayload":{"position":{"x":29070.088941847967,"y":31724.123641159495},"targetPosition":{"x":28797.356906507983,"y":31618.925881685504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"731abb89-b672-41b1-b403-2932226d3df7","savedPayload":{"position":{"x":28797.356906507983,"y":31618.925881685504},"targetPosition":{"x":28509.04657394574,"y":31664.047464690102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"4f784203-664a-4791-9e3a-7565f0a11e79","savedPayload":{"position":{"x":28509.04657394574,"y":31664.047464690102},"targetPosition":{"x":28223.31952830963,"y":31715.314102497134},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"e04e8948-849d-4161-af18-4644990d0b49","savedPayload":{"position":{"x":28223.31952830963,"y":31715.314102497134},"targetPosition":{"x":27646.767298437604,"y":31806.53499900127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true}}},{"type":"Task","name":"Backtesting WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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.01\n}","id":"48e2c5e0-8f9e-40f0-8ab6-2ecc57aa3039","savedPayload":{"position":{"x":29217.225754587722,"y":31983.258491208453},"targetPosition":{"x":29432.857876743965,"y":32180.244409486728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{}","id":"e8703a6e-e6c0-485f-a27d-a9e60a57a0a6","savedPayload":{"position":{"x":29452.432523801002,"y":31888.895302464356},"targetPosition":{"x":29432.857876743965,"y":32180.244409486728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"initialDatetime\": \"2020-01-01\",\n\"finalDatetime\": \"2020-12-31\"\n}","id":"08815e4e-c066-4914-85b7-a4f7ce4748a5","savedPayload":{"position":{"x":29672.90640789369,"y":32013.935217523467},"targetPosition":{"x":29432.857876743965,"y":32180.244409486728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-hs\"\n}","id":"805c356b-4a05-424e-ba29-260e35c11943","savedPayload":{"position":{"x":29712.522203850902,"y":32264.186012182166},"targetPosition":{"x":29432.857876743965,"y":32180.244409486728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"bcccd1fd-188c-43e4-abfc-4bc89d6adecc","savedPayload":{"position":{"x":29541.439319307334,"y":32451.40799480543},"targetPosition":{"x":29432.857876743965,"y":32180.244409486728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"ae594b88-e40b-408b-8082-3ba92ffc2c8c","savedPayload":{"position":{"x":29288.759677672737,"y":32434.456674550867},"targetPosition":{"x":29432.857876743965,"y":32180.244409486728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c220646b-827b-43c8-ab7e-5ecd53b4070a","savedPayload":{"position":{"x":29432.857876743965,"y":32180.244409486728},"targetPosition":{"x":29144.04715487322,"y":32225.5091430307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f32f1cdc-425f-4193-a43b-be9312c74234","savedPayload":{"position":{"x":29144.04715487322,"y":32225.5091430307},"targetPosition":{"x":28856.205248366554,"y":32270.90622714756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"a239a374-497a-43f9-8382-5277410b1c2d"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"02fe6309-40c0-4e31-9aed-fbf8f434bfa9","savedPayload":{"position":{"x":29039.454180951416,"y":32498.13422860966},"targetPosition":{"x":28856.205248366554,"y":32270.90622714756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"dd22d90b-5a91-4723-9f65-17eb94fb4d9d","savedPayload":{"position":{"x":28856.205248366554,"y":32270.90622714756},"targetPosition":{"x":28583.873065071595,"y":32166.066564395605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"0942010b-12f0-4be9-979d-c3e1bbc4eb74","savedPayload":{"position":{"x":28583.873065071595,"y":32166.066564395605},"targetPosition":{"x":28191.77588844909,"y":32015.340325566805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a8ff6583-b710-44b1-8768-d8a70bdf22c9","savedPayload":{"position":{"x":28191.809503651377,"y":32016.176723033914},"targetPosition":{"x":27646.767298437604,"y":31806.53499900127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"caed4703-e134-4a48-9062-fe5277b7d95f","savedPayload":{"position":{"x":27646.767298437604,"y":31806.53499900127},"targetPosition":{"x":27066.28827431158,"y":31745.457342346464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true,"shortcutKey":""}}},{"type":"Task Manager","name":"Paper & Backtesting Sessions BBBT","tasks":[{"type":"Task","name":"Paper Trading BBTB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Paper Trading Session","name":"Paper BBTB","code":"{\n\"folderName\": \"Paper-BBTB\"\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"413c658b-ecb1-412a-ad17-dd21a6cf9edf","savedPayload":{"position":{"x":28494.87847972939,"y":33117.837463101605},"targetPosition":{"x":28582.677305930327,"y":33396.13827516476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"937d18df-32f8-4619-93a0-df66d785f502","savedPayload":{"position":{"x":28745.622400756707,"y":33153.79434931601},"targetPosition":{"x":28582.677305930327,"y":33396.13827516476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"8d7017e0-2478-4f6f-9a06-97e02f485e0d","savedPayload":{"position":{"x":28874.16618186828,"y":33372.630426792784},"targetPosition":{"x":28582.72520361375,"y":33396.230397112864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"fbd66c8d-fb89-41ef-a7d8-ddc1892ea0b7","savedPayload":{"position":{"x":28783.227697232684,"y":33609.18186704609},"targetPosition":{"x":28582.72520361375,"y":33396.230397112864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"71601678-f7fe-4093-81a7-2e7c4f15b36c","savedPayload":{"position":{"x":28541.67266704583,"y":33685.82976758999},"targetPosition":{"x":28582.72520361375,"y":33396.230397112864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"77080ae1-9bce-474f-b5b6-31c227d35298","savedPayload":{"position":{"x":28331.135530189662,"y":33544.71882418469},"targetPosition":{"x":28582.72520361375,"y":33396.230397112864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6681be32-37aa-4703-8cbe-3766844aba04","savedPayload":{"position":{"x":28582.677305930327,"y":33396.13827516476},"targetPosition":{"x":28310.11794612376,"y":33291.432934566474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a70b66f2-4d79-4ab0-8a84-cb47fd872b79","savedPayload":{"position":{"x":28310.11794612376,"y":33291.432934566474},"targetPosition":{"x":28037.88646160735,"y":33186.8036712498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"h"},"referenceParent":{"type":"Trading System","name":"BB Top Bounce","id":"3313017d-fdce-481b-9679-fe8e4f67cd45"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"53fd90cb-3efc-47b2-90f5-0f8010fc6ef9","savedPayload":{"position":{"x":28083.09970217264,"y":33475.45289741696},"targetPosition":{"x":28037.88646160735,"y":33186.8036712498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"b3dec672-be14-4dca-8be4-5b495373b662","savedPayload":{"position":{"x":28037.88646160735,"y":33186.8036712498},"targetPosition":{"x":27854.515630826965,"y":32959.87913499302},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"4315bf06-ef80-490e-af6f-d00b72bfa20d","savedPayload":{"position":{"x":27854.515630826965,"y":32959.87913499302},"targetPosition":{"x":27670.884515974827,"y":32732.728296686793},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"b55596f0-998c-4efa-ae49-4645b999dc38","savedPayload":{"position":{"x":27670.884515974827,"y":32732.728296686793},"targetPosition":{"x":27303.460274268815,"y":32278.945464630924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true}}},{"type":"Task","name":"Backtesting BBTB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Backtesting Session","name":"Back BBTB","code":"{\n\"folderName\": \"Back-BBTB\"\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"Bitcoin","code":"{\n\"initialBalance\": 1,\n\"minimumBalance\": 0.01\n}","id":"11c310f7-a52f-467f-afbc-57c04639a979","savedPayload":{"position":{"x":27935.52960924423,"y":33727.16185142834},"targetPosition":{"x":27872.39632969643,"y":34011.519737305855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{}","id":"208693a0-838b-4992-9344-4b798acce6c2","savedPayload":{"position":{"x":28134.868125629793,"y":33883.771084640226},"targetPosition":{"x":27872.39632969643,"y":34011.519737305855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"initialDatetime\": \"2020-01-01\",\n\"finalDatetime\": \"2020-12-31\"\n}","id":"48fa15e9-aff6-4521-b5e3-a45e1a01d9b1","savedPayload":{"position":{"x":28136.73926831989,"y":34137.15258391286},"targetPosition":{"x":27872.39632969643,"y":34011.519737305855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-hs\"\n}","id":"d3a5cba8-3272-43c9-89d7-a40de0f49045","savedPayload":{"position":{"x":27939.615119163645,"y":34296.76627194934},"targetPosition":{"x":27872.39632969643,"y":34011.519737305855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"b764240b-aec9-4ddc-bac7-99bb34bc2163","savedPayload":{"position":{"x":27692.135848308008,"y":34242.23814259691},"targetPosition":{"x":27872.39632969643,"y":34011.519737305855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"e233bb2d-080c-4f2e-9188-edba85ae74d9","savedPayload":{"position":{"x":27580.387613737523,"y":34014.763941953664},"targetPosition":{"x":27872.39632969643,"y":34011.519737305855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e3473182-57b9-41f8-8d5a-1bb13c8b5441","savedPayload":{"position":{"x":27872.39632969643,"y":34011.519737305855},"targetPosition":{"x":27688.812086800328,"y":33785.136479923625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5d72321e-97e7-404f-8272-809dbbf4db35","savedPayload":{"position":{"x":27688.812086800328,"y":33785.136479923625},"targetPosition":{"x":27505.304688678796,"y":33557.97215461767},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"BB Top Bounce","id":"3313017d-fdce-481b-9679-fe8e4f67cd45"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"eb149e85-7202-4f3f-832f-0b25c4d97b0b","savedPayload":{"position":{"x":27400.38204056495,"y":33831.01076050117},"targetPosition":{"x":27505.304688678796,"y":33557.97215461767},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"919e2ba3-4089-4729-add5-0be715c27ceb","savedPayload":{"position":{"x":27505.304688678796,"y":33557.97215461767},"targetPosition":{"x":27460.053021849162,"y":33270.2350467557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"a1d698ca-cc6f-4ba2-8a19-c72a1fda3547","savedPayload":{"position":{"x":27460.053021849162,"y":33270.2350467557},"targetPosition":{"x":27394.546920638215,"y":32854.98869482298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"648b9d39-4e74-4c95-8ad6-8fd048e86a51","savedPayload":{"position":{"x":27394.309953423523,"y":32855.9278698358},"targetPosition":{"x":27303.460274268815,"y":32278.945464630924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"e5b805c8-a056-4356-894f-2dbc5af0e663","savedPayload":{"position":{"x":27303.501363216124,"y":32278.927172840664},"targetPosition":{"x":27066.28827431158,"y":31745.457342346464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true,"shortcutKey":""}}}],"id":"f69b2c23-ccc5-47fb-9945-9b7badcea636","savedPayload":{"position":{"x":27066.28827431158,"y":31745.457342346464},"targetPosition":{"x":26594.350231870896,"y":31402.227991512707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"2ae685a1-25c6-4bd5-b559-d83e373e8d45","savedPayload":{"position":{"x":26594.350231870896,"y":31402.227991512707},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":true}}},"productionEnvironment":{"type":"Production Environment","name":"New Production Environment","exchangeTasks":[{"type":"Exchange Tasks","name":"Binance","taskManagers":[{"type":"Task Manager","name":"Fwd & Live Sessions WHB","tasks":[{"type":"Task","name":"Fwd Testing WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"079cdfaf-2d41-4fa3-a68d-9e2620de0cdd","savedPayload":{"position":{"x":26910.021545551564,"y":33878.20538019948},"targetPosition":{"x":26938.460095448998,"y":34169.41187072626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"5f5ec9f1-c4e2-4ca7-94c4-bad619511e5c","savedPayload":{"position":{"x":27148.01063503007,"y":33966.01103908403},"targetPosition":{"x":26938.460095448998,"y":34169.41187072626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"d5fda5e7-7571-41e7-b19a-a721d73fd8f5","savedPayload":{"position":{"x":27228.223941558408,"y":34206.05209392076},"targetPosition":{"x":26938.460095448998,"y":34169.41187072626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"f6ed8468-7fd1-4aac-848b-647973e41b04","savedPayload":{"position":{"x":27090.039351877273,"y":34419.33692857233},"targetPosition":{"x":26938.460095448998,"y":34169.41187072626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"da2d51df-7c40-4bf0-80ec-63a38992fcfe","savedPayload":{"position":{"x":26838.05746723943,"y":34444.00375753654},"targetPosition":{"x":26938.460095448998,"y":34169.41187072626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"4e1b48a9-df71-402e-9159-66c49cdc08b3","savedPayload":{"position":{"x":26661.978984189693,"y":34261.43705453156},"targetPosition":{"x":26938.460095448998,"y":34169.41187072626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b9e7a071-26dd-4796-8704-2314f6c2c603","savedPayload":{"position":{"x":26938.460095448998,"y":34169.41187072626},"targetPosition":{"x":26693.307245106695,"y":34009.68815888209},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0e7edb98-38ff-4516-89a1-188030989ddc","savedPayload":{"position":{"x":26693.307245106695,"y":34009.68815888209},"targetPosition":{"x":26449.279251038242,"y":33851.13016897596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"a239a374-497a-43f9-8382-5277410b1c2d"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","keyInstance":{"type":"Key Instance","name":"WHB","id":"8d9b39d4-b764-486d-a2f6-e84391bbd818","savedPayload":{"position":{"x":26419.029585690965,"y":34434.89440876462},"targetPosition":{"x":26433.64744618784,"y":34142.481013707016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"WHB","id":"88eab4e5-3be4-4982-93fa-e95bcb1ab559"}}},"id":"f122bd16-0c85-43d1-932a-57a710db8013","savedPayload":{"position":{"x":26433.64744618784,"y":34142.481013707016},"targetPosition":{"x":26449.279251038242,"y":33851.13016897596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"a034c52a-8924-4e60-9653-f6da1ea6f8b5","savedPayload":{"position":{"x":26449.279251038242,"y":33851.13016897596},"targetPosition":{"x":26316.92939841393,"y":33591.09577845997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"74f70f20-305b-4e90-aad6-1bcd2ff8ee1c","savedPayload":{"position":{"x":26316.92939841393,"y":33591.09577845997},"targetPosition":{"x":26148.05085911208,"y":33259.678571238874},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"749d6eaf-1548-47ca-901d-1cfc1a21b0a5","savedPayload":{"position":{"x":26148.258495506143,"y":33259.33262854982},"targetPosition":{"x":25882.854246796225,"y":32739.299037174344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Live Trading WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"166cdb09-90e0-49a1-9c38-b57364287620","savedPayload":{"position":{"x":26206.913137023843,"y":34159.67844342709},"targetPosition":{"x":26085.882722277336,"y":34425.20699850924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"5bf43efd-3dd2-44f2-b25e-f6c7a5fda17e","savedPayload":{"position":{"x":26369.31262822603,"y":34354.3650248871},"targetPosition":{"x":26085.882722277336,"y":34425.20699850924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"88d7104b-7925-408a-b490-bbbaaafd7a5f","savedPayload":{"position":{"x":26319.710703428864,"y":34605.01649378187},"targetPosition":{"x":26086.823060661056,"y":34427.10655731405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"1c158006-c3c1-4157-8ad6-f08ee2b769d6","savedPayload":{"position":{"x":26092.653639061344,"y":34720.14421444298},"targetPosition":{"x":26086.823060661056,"y":34427.10655731405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"01064db9-f153-4d30-a26c-d9d339e7a856","savedPayload":{"position":{"x":25863.289014292863,"y":34615.06458940235},"targetPosition":{"x":26086.823060661056,"y":34427.10655731405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"06f7cc4e-6112-4ac8-9f20-610b357a58d2","savedPayload":{"position":{"x":25800.619749067708,"y":34369.65589984576},"targetPosition":{"x":26086.823060661056,"y":34427.10655731405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b86ce81f-5084-48d1-8a45-8f45fbe97891","savedPayload":{"position":{"x":26085.882722277336,"y":34425.20699850924},"targetPosition":{"x":25953.54078456798,"y":34164.966832844664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5335fd67-ebdc-4cfd-936d-b76af957713e","savedPayload":{"position":{"x":25953.54078456798,"y":34164.966832844664},"targetPosition":{"x":25821.361016582057,"y":33905.1503032116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"a239a374-497a-43f9-8382-5277410b1c2d"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","keyInstance":{"type":"Key Instance","name":"WHB","id":"a0061ba6-2359-4c5c-822d-1e17aaf7c2fd","savedPayload":{"position":{"x":25502.59020355087,"y":34394.754103129955},"targetPosition":{"x":25661.882303820435,"y":34149.89426927967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"WHB","id":"88eab4e5-3be4-4982-93fa-e95bcb1ab559"}}},"id":"954b1896-121c-41e2-9608-5b46a70082fb","savedPayload":{"position":{"x":25661.882303820435,"y":34149.89426927967},"targetPosition":{"x":25821.361016582057,"y":33905.1503032116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"8cb4d9af-0f53-4b33-9174-330da87b166c","savedPayload":{"position":{"x":25821.361016582057,"y":33905.1503032116},"targetPosition":{"x":25836.74291688131,"y":33613.94559042871},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"8b30643a-eb54-4d6f-958d-8393f9a1e5f4","savedPayload":{"position":{"x":25836.74291688131,"y":33613.94559042871},"targetPosition":{"x":25852.055901777552,"y":33322.2430462622},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"52ec5181-d057-42e3-a6e8-407d20d4e641","savedPayload":{"position":{"x":25852.055901777552,"y":33322.2430462622},"targetPosition":{"x":25882.854246796225,"y":32739.299037174344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1bbb36fe-edbf-49d8-9827-85a1345c0289","savedPayload":{"position":{"x":25882.854246796225,"y":32739.299037174344},"targetPosition":{"x":25761.601496698062,"y":32168.52024266521},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"l"}}},{"type":"Task Manager","name":"Fwd & Live Sessions BBTB","tasks":[{"type":"Task","name":"Fwd Testing BBTB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Forward Testing Session","name":"Fwd BBTB","code":"{\n\"folderName\": \"Fwd-BBTB\",\n\"balancePercentage\": 10\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"3a75a6ee-f188-4bd1-81ff-8018094d1eb0","savedPayload":{"position":{"x":24857.094321966553,"y":34017.30375601778},"targetPosition":{"x":24619.145851955524,"y":34187.288899821026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"b0d3da2f-f67f-473e-9f61-1296a9bfd952","savedPayload":{"position":{"x":24900.379262240484,"y":34266.88105509463},"targetPosition":{"x":24619.145851955524,"y":34187.288899821026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"6b4f8416-a9ec-47f5-ac7b-3c5005733328","savedPayload":{"position":{"x":24732.106855452465,"y":34456.57555177858},"targetPosition":{"x":24619.145851955524,"y":34187.288899821026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"ab1e8a12-e834-4062-b411-dbf174dcee6d","savedPayload":{"position":{"x":24479.061255754154,"y":34443.320476277215},"targetPosition":{"x":24619.145851955524,"y":34187.288899821026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"97669707-03fd-488c-bb1d-1ee4cafcf93a","savedPayload":{"position":{"x":24331.540268704146,"y":34237.15844285456},"targetPosition":{"x":24619.145851955524,"y":34187.288899821026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"e92c18cc-6c10-4231-bd61-ec3561875ff6","savedPayload":{"position":{"x":24400.852816728264,"y":33993.59591676479},"targetPosition":{"x":24619.145851955524,"y":34187.288899821026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"231917f8-cc46-4f5b-834c-0b0ff89dd932","savedPayload":{"position":{"x":24619.145851955524,"y":34187.288899821026},"targetPosition":{"x":24634.678502791634,"y":33895.04800320409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7b91c25c-ac96-4c3c-9e79-17c262f17180","savedPayload":{"position":{"x":24634.678502791634,"y":33895.04800320409},"targetPosition":{"x":24649.52986998621,"y":33604.070042960644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Trading System","name":"BB Top Bounce","id":"3313017d-fdce-481b-9679-fe8e4f67cd45"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","keyInstance":{"type":"Key Instance","name":"BBTB","id":"98b73dbc-52e7-4292-9051-d0cb41db5f72","savedPayload":{"position":{"x":24129.27847262082,"y":33869.54908085728},"targetPosition":{"x":24389.757289928526,"y":33736.110358887185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"BBTB","id":"bfea6ed0-673c-4245-9b5e-7837785a63c9"}}},"id":"ea2bb934-5c1f-4006-87af-865cf23f968c","savedPayload":{"position":{"x":24389.757289928526,"y":33736.110358887185},"targetPosition":{"x":24649.52986998621,"y":33604.070042960644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"c639e264-5ac1-41d3-8b56-c4c4cd46af16","savedPayload":{"position":{"x":24649.52986998621,"y":33604.070042960644},"targetPosition":{"x":24808.52711960168,"y":33359.15206815564},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"e6d0e073-c898-41ec-9f84-611faf9732fa","savedPayload":{"position":{"x":24808.52711960168,"y":33359.15206815564},"targetPosition":{"x":25009.92952810802,"y":33048.84834292683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"29dd451d-55ac-4d0c-9b16-7e0da9bcd453","savedPayload":{"position":{"x":25010.003900512038,"y":33048.680845510964},"targetPosition":{"x":25327.724179065375,"y":32558.7886376995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Live Trading BBTB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Live Trading Session","name":"Live Trading BBTB","code":"{\n\"folderName\": \"Live-WHB\"\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"d5a1b4b6-2bfc-4772-9c60-0c55f2abb0b1","savedPayload":{"position":{"x":24259.65690114779,"y":33549.20053883887},"targetPosition":{"x":23969.104504329505,"y":33576.91878946957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"7354aa3e-f4a4-47b2-a709-50cc86d27d9d","savedPayload":{"position":{"x":24172.271339315303,"y":33786.90215883397},"targetPosition":{"x":23969.104504329505,"y":33576.91878946957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"de6e1749-8ecd-4cae-8a14-c2e51040ee7c","savedPayload":{"position":{"x":23931.88267060138,"y":33867.03794127833},"targetPosition":{"x":23969.104504329505,"y":33576.91878946957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"a9e15ef3-5525-4394-b2df-27ca00c3d946","savedPayload":{"position":{"x":23719.10104222115,"y":33728.79606523192},"targetPosition":{"x":23969.104504329505,"y":33576.91878946957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"d4e3d01f-dd4f-4e1d-a19f-309b3e06b627","savedPayload":{"position":{"x":23694.345712194692,"y":33476.6385777761},"targetPosition":{"x":23969.104504329505,"y":33576.91878946957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"9f20c206-6968-406a-b3ea-fe7279839093","savedPayload":{"position":{"x":23876.174603559277,"y":33300.04145285883},"targetPosition":{"x":23969.104504329505,"y":33576.91878946957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c1085d75-2c80-4b85-937c-fd9d0bda0569","savedPayload":{"position":{"x":23969.104504329505,"y":33576.91878946957},"targetPosition":{"x":24128.21229147908,"y":33332.02911909801},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ef82a64d-7c70-48d5-868a-09acf97e5289","savedPayload":{"position":{"x":24128.21229147908,"y":33332.02911909801},"targetPosition":{"x":24287.003674972984,"y":33087.60393157113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"BB Top Bounce","id":"3313017d-fdce-481b-9679-fe8e4f67cd45"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","keyInstance":{"type":"Key Instance","name":"BBTB","id":"93b6328f-bf96-4ee9-95de-ef6dcc2f0d16","savedPayload":{"position":{"x":23703.56637178532,"y":33056.44592343519},"targetPosition":{"x":23995.28562662997,"y":33071.90981760334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"BBTB","id":"bfea6ed0-673c-4245-9b5e-7837785a63c9"}}},"id":"e5be2d9b-1d10-4752-8dda-3bd86a1d2e87","savedPayload":{"position":{"x":23995.28562662997,"y":33071.90981760334},"targetPosition":{"x":24287.003674972984,"y":33087.60393157113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"51e40ee6-299f-4916-b55b-2d5bb47f9c9d","savedPayload":{"position":{"x":24287.003674972984,"y":33087.60393157113},"targetPosition":{"x":24546.92479327684,"y":32955.57056182307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"d5320e1e-a4eb-4900-a6fc-8de4467e4363","savedPayload":{"position":{"x":24546.92479327684,"y":32955.57056182307},"targetPosition":{"x":24807.30357570537,"y":32823.26625993325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e3796688-b650-45cd-a0c0-24fe3a2e0d74","savedPayload":{"position":{"x":24807.30357570537,"y":32823.26625993325},"targetPosition":{"x":25327.724179065375,"y":32558.7886376995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0357b28b-fc1c-47aa-9b37-1106936ea9b2","savedPayload":{"position":{"x":25327.724179065375,"y":32558.7886376995},"targetPosition":{"x":25761.601496698062,"y":32168.52024266521},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"l"}}}],"id":"fa859e89-960f-4fe1-8e68-1e41b0ea80ec","savedPayload":{"position":{"x":25761.601496698062,"y":32168.52024266521},"targetPosition":{"x":25941.936545722037,"y":31613.756231123843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"32656457-f603-416a-b805-546642094dc4","savedPayload":{"position":{"x":25941.744692627148,"y":31614.344640604217},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"u"}}},"id":"ce601334-52c5-4ffb-ab61-49ca1943a15a","savedPayload":{"position":{"x":26122.378344035824,"y":31058.919069244217},"targetPosition":{"x":24954.356993272086,"y":31057.918778615294},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"r"}}}],"id":"efbbc81b-93c8-4ce0-873e-675f39d333e8","savedPayload":{"position":{"x":24954.356993272086,"y":31057.918778615294},"targetPosition":{"x":24954.356993272086,"y":31057.918778615294},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"n"}}},{"type":"Crypto Ecosystem","name":"My Crypto Ecosystem","cryptoExchanges":[{"type":"Crypto Exchanges","name":"Tested","exchanges":[{"type":"Crypto Exchange","name":"Binance","code":"{\n \"codeName\": \"binance\",\n \"API\": [\n {\n \"method\": \"fetchTrades\",\n \"fetchType\": \"by Id\",\n \"fetchTradesMethod\": \"publicGetHistoricalTrades\",\n \"firstId\": \"f\"\n }\n ]\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"EUR\"} \n}","assets":[{"type":"Asset","name":"Bitcoin","code":"{ \n\"codeName\": \"BTC\"\n}","id":"b2814a75-fd57-45c4-a3cb-af276793e573","savedPayload":{"position":{"x":14195.09373519908,"y":30498.57953967648},"targetPosition":{"x":14305.025652484152,"y":30812.79046466984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Tether","code":"{ \n\"codeName\": \"USDT\"\n}","id":"04c5f172-6976-4557-b95f-38004b5201a6","savedPayload":{"position":{"x":14342.003487956641,"y":30482.411278035917},"targetPosition":{"x":14305.025652484152,"y":30812.79046466984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Ether","code":"{ \n\"codeName\": \"ETH\"\n}","id":"4175d47c-e12c-4902-b026-f4999a6d07a4","savedPayload":{"position":{"x":14481.605152989256,"y":30531.154856472},"targetPosition":{"x":14305.025652484152,"y":30812.79046466984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Monero","code":"{ \n\"codeName\": \"XMR\"\n}","id":"e3b61070-77b9-4dcf-9862-7f05ffa237f3","savedPayload":{"position":{"x":14586.128143352431,"y":30635.66020347477},"targetPosition":{"x":14305.025652484152,"y":30812.79046466984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Stellar","code":"{ \n\"codeName\": \"XLM\"\n}","id":"6dee1e7e-80f3-4597-a28a-881af206ec14","savedPayload":{"position":{"x":14635.380023465843,"y":30775.418809131024},"targetPosition":{"x":14305.025652484152,"y":30812.79046466984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Ethereum Classic","code":"{ \n\"codeName\": \"ETC\"\n}","id":"59378d33-4833-495a-89bb-f739710be7d9","savedPayload":{"position":{"x":14618.714156215316,"y":30922.740363095792},"targetPosition":{"x":14305.025652484152,"y":30812.79046466984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"f4451bbc-50ea-4558-9b3c-abd3e757a76e","savedPayload":{"position":{"x":14305.17360826227,"y":30812.68986934228},"targetPosition":{"x":14079.894884165275,"y":31038.166461562458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"E"}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"BTC/USDT","code":"{ \n\"codeName\": \"BTC/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"Bitcoin","id":"07b514a4-3ea2-4ab7-aeb0-07b48acb6f8d","savedPayload":{"position":{"x":15236.371832479537,"y":30780.053229243735},"targetPosition":{"x":15049.153562663865,"y":31038.131226693393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"b2814a75-fd57-45c4-a3cb-af276793e573"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"61e7d2b5-1672-4e11-8380-345a4fe4a991","savedPayload":{"position":{"x":15352.419771068837,"y":30939.69858316036},"targetPosition":{"x":15049.153562663865,"y":31038.131226693393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"04c5f172-6976-4557-b95f-38004b5201a6"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"a174a91f-0818-4fdc-88cd-20dbdf45c548","savedPayload":{"position":{"x":15352.36057193139,"y":31136.524172911017},"targetPosition":{"x":15049.153562663865,"y":31038.131226693393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"11beab3d-d894-4d20-9940-f864ba957f91","savedPayload":{"position":{"x":15236.806192935961,"y":31295.59566491682},"targetPosition":{"x":15049.153562663865,"y":31038.131226693393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"5489751f-5ce4-40d0-9854-5bcfdc810269","savedPayload":{"position":{"x":15049.153562663865,"y":31038.131226693393},"targetPosition":{"x":14716.990761953079,"y":31038.17830230591},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0e1257c5-49b1-4b52-8942-9bdef72854d2","savedPayload":{"position":{"x":14716.843959091762,"y":31038.024738221364},"targetPosition":{"x":14079.894884165275,"y":31038.166461562458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b","savedPayload":{"position":{"x":15045.552221144293,"y":31329.003976386983},"targetPosition":{"x":14837.69016883917,"y":31570.65978539939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"b2814a75-fd57-45c4-a3cb-af276793e573"}}},{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da","savedPayload":{"position":{"x":15129.925421763637,"y":31443.234588877498},"targetPosition":{"x":14837.69016883917,"y":31570.65978539939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"04c5f172-6976-4557-b95f-38004b5201a6"}}},{"type":"Exchange Account Asset","name":"Ether","id":"b3d0800f-f430-4549-86e9-68001c43fa1f","savedPayload":{"position":{"x":15156.324673396291,"y":31582.493916797535},"targetPosition":{"x":14837.69016883917,"y":31570.65978539939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ether","id":"4175d47c-e12c-4902-b026-f4999a6d07a4"}}},{"type":"Exchange Account Asset","name":"Monero","id":"ee25ff6a-8b3d-4f30-8acf-71ca4b186195","savedPayload":{"position":{"x":15119.60270103622,"y":31719.58562930427},"targetPosition":{"x":14837.69016883917,"y":31570.65978539939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Monero","id":"e3b61070-77b9-4dcf-9862-7f05ffa237f3"}}},{"type":"Exchange Account Asset","name":"Stellar","id":"5716ea79-1392-4f6d-a46e-dba38ab9b39e","savedPayload":{"position":{"x":15027.042577031634,"y":31827.16324834079},"targetPosition":{"x":14837.69016883917,"y":31570.65978539939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Stellar","id":"6dee1e7e-80f3-4597-a28a-881af206ec14"}}},{"type":"Exchange Account Asset","name":"Ethereum Classic","id":"d9d0d41c-67a9-42ea-8c64-067647ee53a4","savedPayload":{"position":{"x":14896.892806780692,"y":31883.891480137856},"targetPosition":{"x":14837.69016883917,"y":31570.65978539939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ethereum Classic","id":"59378d33-4833-495a-89bb-f739710be7d9"}}}],"id":"f7bbfcc0-2359-4de1-8ddc-5e117bde0c52","savedPayload":{"position":{"x":14837.69016883917,"y":31570.65978539939},"targetPosition":{"x":14529.97816888475,"y":31488.389186969194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"WHB","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"88eab4e5-3be4-4982-93fa-e95bcb1ab559","savedPayload":{"position":{"x":14771.379005546727,"y":32072.350747523094},"targetPosition":{"x":14612.113800977872,"y":31796.265546651335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Exchange Account Key","name":"BBTB","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"bfea6ed0-673c-4245-9b5e-7837785a63c9","savedPayload":{"position":{"x":14612.064462876144,"y":32115.0038323965},"targetPosition":{"x":14612.113800977872,"y":31796.265546651335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"cf3895fd-4f0c-4bd8-8afb-886a718cc891","savedPayload":{"position":{"x":14612.113800977872,"y":31796.265546651335},"targetPosition":{"x":14529.97816888475,"y":31488.389186969194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a718949a-e315-4bda-8523-b0b03e3ca507","savedPayload":{"position":{"x":14529.97816888475,"y":31488.389186969194},"targetPosition":{"x":14305.012345932206,"y":31263.313648257546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a913b30b-17d3-4b2b-9c39-9c7dc67f0000","savedPayload":{"position":{"x":14305.012345932206,"y":31263.313648257546},"targetPosition":{"x":14079.894884165275,"y":31038.166461562458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"22d2b36e-7a77-40a6-8948-b7d0fb744923","savedPayload":{"position":{"x":14079.894884165275,"y":31038.166461562458},"targetPosition":{"x":13442.879291220586,"y":31038.17362849701},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"c16f8dd4-05f5-45db-8a47-713eb1116f72","savedPayload":{"position":{"x":13442.879291220586,"y":31038.17362849701},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"signalsProviders":[],"superActions":{"type":"Super Actions","name":"New Super Actions","superActions":[{"type":"Super Action","name":"Install Market","id":"2cd8e9dd-02a8-40b5-8979-108491309697","savedPayload":{"position":{"x":13596.796537982185,"y":29900.600915146206},"targetPosition":{"x":13238.769838624787,"y":30494.890822183912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"d103d8f7-8b21-436a-a0cf-8244b3dcb756","savedPayload":{"position":{"x":13738.553946135695,"y":30013.646249280533},"targetPosition":{"x":13238.769838624787,"y":30494.890822183912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"c934df8f-d942-4723-ad44-f187e5df4351","savedPayload":{"position":{"x":12166.581869182457,"y":31038.25465749285},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9f4e7bfb-ea29-47cd-92bd-11f31d177ff8","savedPayload":{"position":{"x":12805.301618063546,"y":31038.2348844148},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"e"}}},{"type":"Charting Space","name":"New Charting Space","viewport":{"type":"Viewport","name":"New Viewport","code":"{\"zoom\":\"0.00\"}","id":"c3db9bcf-39ee-47d1-ab4f-14bd5de815da","savedPayload":{"position":{"x":13421.60994808922,"y":24983.353401471086},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"frame":{"position":{"x":-120.99999999999977,"y":42.59064327485356}}}},"dashboards":[{"type":"Dashboard","name":"Super Action Generated","timeMachines":[{"type":"Time Machine","name":"WHB Binance BTC/USDT","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2020-05-27T09:53:30.531Z\",\n \"toDate\": \"2020-05-27T11:00:59.999Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": true\n}","id":"9368d644-21cd-4be9-bb36-df83b66c67d1","savedPayload":{"position":{"x":11611.720379074248,"y":26036.808408556513},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 8468.468050704952,\n \"maxValue\": 10604.90816010915,\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"7242faad-e2a0-4dd2-8016-bd4448a3b61c","savedPayload":{"position":{"x":11472.84821627644,"y":26143.60061063287},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-min\"}","id":"cddfbb92-c310-477a-9c66-b2a38ff8309f","savedPayload":{"position":{"x":11311.376506720255,"y":26210.551198106474},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timelineCharts":[{"type":"Timeline Chart","name":"Indicators","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":"Candles","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"09e91fb3-cdff-4c0c-b320-417aeb4f2538","savedPayload":{"position":{"x":45798.08358329995,"y":30783.47112133315},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"dd7c8795-bb24-4438-9d77-b37a9000ad7f"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"2b8f6dec-a712-4716-88d8-a33c01398956","savedPayload":{"position":{"x":45898.37673360377,"y":30788.25119234455},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"6929ebe7-6486-4299-add5-ed0282500d91"}}},{"type":"Layer","name":"Resistances","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"57d807c2-eeac-46a5-bd07-6f630a578562","savedPayload":{"position":{"x":45996.05938571397,"y":30809.588522972816},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Resistances","id":"0669d924-aace-46d1-b126-ccced8fd33cf"}}},{"type":"Layer","name":"Supports","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9a035c82-60cb-4ab4-b4f8-e40b0dde7c2c","savedPayload":{"position":{"x":46088.671022938994,"y":30846.72421469604},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Supports","id":"5e7a0e50-e6ed-4106-8025-8b35ad6c597c"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"25363a67-bcaf-4392-9ed8-2b6c99fb31c8","savedPayload":{"position":{"x":46173.797322491286,"y":30898.58369972401},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"1d7dd537-5f6f-4eb2-8e56-ddba0aef720f"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"63dbae3f-cebc-4587-9b9c-60ffe83e4143","savedPayload":{"position":{"x":46249.17664768098,"y":30963.730987652525},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"221c8d22-8a7f-4014-a7ed-0bafc886b123"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"2203bc66-a385-438b-8050-0b812b655d0a","savedPayload":{"position":{"x":46312.78393052083,"y":31040.384533238812},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"d83476c3-2f0b-4d4a-abb2-0e47ed0a421d"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ea4ce55e-855e-4a61-ad12-222a0077e51e","savedPayload":{"position":{"x":46362.900460538505,"y":31126.454059169817},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"5ffc6a67-e33b-422b-8e36-f9711f93c723"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"e9272caf-38f8-44de-a698-13f8b19b50c3","savedPayload":{"position":{"x":46398.167326095994,"y":31219.59432824167},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"0428f20b-9620-480e-a531-dbb2e5f59ef4"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"a9fcfaea-cd50-464e-aa65-1f2a3e98633d","savedPayload":{"position":{"x":46417.62588351845,"y":31317.267577006704},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"48f7953c-f62d-4292-b042-d1ac05f8f80f"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\"\n}","id":"8c1e005a-c340-4850-9de2-900a4cfc44bb","savedPayload":{"position":{"x":46420.70567572493,"y":31416.809466474464},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"3b9a3c93-6d41-440e-89a2-2fd1b2dde603"}}},{"type":"Layer","name":"Base5 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"6223f2d7-bdb4-474a-9e60-b54dc00680ea","savedPayload":{"position":{"x":46407.31337137963,"y":31515.483822428057},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"2404b1eb-c7c9-46e7-b22a-93cfcc3739f4"}}},{"type":"Layer","name":"Base6 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"a71c4fa6-d034-499c-9b30-7a46378cadc0","savedPayload":{"position":{"x":46377.87367543775,"y":31610.607629023725},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"1510fd36-633e-40a7-adbe-680660d64bd0"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"53c4ff8b-f3c5-4329-8fe4-6209c0ffb9f1","savedPayload":{"position":{"x":46333.185880681754,"y":31699.591341637817},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"70401ea0-3fed-4e40-8bba-a1e5adce9b8c"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"09cbb1f5-edad-4f9f-ab1c-7f9b0a0d8f7c","savedPayload":{"position":{"x":46274.467312818415,"y":31780.011584392756},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"06ac8eb7-8b14-42b1-9e2e-466280ade032"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"88466a0a-b385-417f-9efa-8c0139e05a5e","savedPayload":{"position":{"x":46203.31676678368,"y":31849.67669835976},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"014bba70-64d4-4035-b06d-145ee9b4c54c"}}},{"type":"Layer","name":"Base7 EMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6564d574-c6fd-4ee0-96ab-0e7c62e1cd7c","savedPayload":{"position":{"x":46121.67361107911,"y":31906.68977984249},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"768cc06c-6fdf-491a-a741-5e08f0e25e38"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"941fef87-83dd-457f-818c-71745fa1692a","savedPayload":{"position":{"x":46028.33674024209,"y":31950.48529383432},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"40794460-b815-498f-a245-e677de0eed86"}}}],"id":"1c96281c-523a-4597-b9b2-2db3d880ff49","savedPayload":{"position":{"x":45819.36840869368,"y":31385.419815840156},"targetPosition":{"x":45228.931388073186,"y":31502.74417203152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"ff535c6b-411f-4790-ab2b-c755c74de1b9","savedPayload":{"position":{"x":11138.25130732125,"y":26233.38907834376},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 2109149.343784579,\n \"maxValue\": 2118053.365048354,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"9ee722c6-095f-4f4a-b8b2-9cb9bca115aa","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,"arrangementStyle":0},"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":"c4041768-1a6e-4f5b-8d7b-b681a175f27a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"98e6c917-f4b7-4b71-9215-de3ccaf3dc0c"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"e9404a3f-2768-4b17-ac7a-8b11e1a1957c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"858fd2be-abef-4173-abef-dedf17f00d47","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"8411d061-e010-4d33-b35c-e71d743fd403","savedPayload":{"position":{"x":10965.194408624708,"y":26210.60036281255},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 25826.74987533423,\n \"maxValue\": 25961.190304401338,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"60aaeaeb-2247-4536-a1a2-cf7d731b6fc5","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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\": true\n}","id":"c230772e-ca08-45df-bad6-4b72be44d9a5","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"4a3ed8eb-a73e-4fb4-835a-681cf47d7373"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"f9435119-1d3f-4106-9c78-531f6ef4714f","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"728d6f08-086f-41ba-9126-30ec56a45ea5"}}}],"id":"acbd2ecb-2f75-44b8-8659-26482cb6fb0b","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"a7f9fef6-c3f9-4e17-b894-9a5e154ccbbe","savedPayload":{"position":{"x":10803.78018262477,"y":26143.752131657493},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 943.9334763368367,\n \"maxValue\": 947.9334763368367,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"1415a288-9d79-45c9-a55c-9991e8b6953b","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"33e885d3-27f0-4ff7-8715-bc2f945e698e","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"7ccbd0c1-c804-47e3-9314-14cbb756c806"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f3cd6f15-98f5-4165-b6c3-04b8796fb43d","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"08f223a8-9707-4c45-b638-1fe0e4a2b053"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"66440f58-8741-4b22-8146-00f772837545","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"66f1a9be-fe96-48c3-91e4-500c6e246423"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"3ba14173-bac8-4013-9a5c-b8aecd05e0ae","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"e432c706-cbcd-4af0-b23c-b18e5b29377a"}}}],"id":"ab7c3367-a36e-4a78-b43b-bfeea5fc5201","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0}}},"id":"156b9564-14a5-4148-8ca6-1e7b98d4189d","savedPayload":{"position":{"x":10665.17152728171,"y":26037.402405028162},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"4978dec9-1374-421a-865e-9e0d30682f65","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,"arrangementStyle":0},"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":"93d62cc0-6914-411e-bf9f-008271cd2965","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"573fb46f-78d2-4bf3-ad11-e42d2531d53e"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"cbb41381-e76d-44f5-8dd3-f9a8c0c0379f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"39d7a06d-5aad-4b03-8778-e4df8dacc825"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"88471305-9c12-4caf-856b-675fb2db2db3","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"82b46974-7a93-4066-a3b7-378b42710364"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"8cb92f6b-8ede-44ef-928a-36f4ec022af8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"7af9d35c-7464-4ed5-9ee6-ccf7a9943894"}}}],"id":"3ec4f352-fb06-4ade-8393-7a5a83765773","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":40,"radius":0}}},"id":"ac6929d9-238c-4689-b2ee-3cc001be578b","savedPayload":{"position":{"x":10558.81501585983,"y":25898.797450091883},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Paper Trading","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-min\"}","id":"d7c6c5e8-82d8-4f2a-a07e-66c3498d1fe5","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,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"on\",\n \"showPanels\": true\n}","id":"b978b005-7bc2-4246-b4d9-5fcfc463eacf","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"63636068-307e-4cea-b31f-f47e106cea2c"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"1ca55ee3-231b-41ad-9acd-24f043e8aa01","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"20848048-8efb-47b1-aaf0-789d2f6c5b1d"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"on\"\n}","id":"52850e27-6287-4005-ba6e-66f5b193e3ad","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"5e28998c-b35f-4cc0-9fd6-8ee5f5714545"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"on\"\n}","id":"46bd81b8-5b9f-4c5f-89bb-149e19bd0267","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"87b74841-4f6a-4658-b01b-7feb254b5d2f"}}}],"id":"0cf47550-1612-4cd7-8fdd-a68014bd52cc","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1620,"y":80},"width":150,"height":330,"radius":0}}},"id":"c285480b-3a39-4dd0-be1d-6470a97d22a7","savedPayload":{"position":{"x":10491.96325073248,"y":25737.373898896472},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"b10a1160-3d9b-44a5-97e9-dbfdc9f103b6","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,"arrangementStyle":0},"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":"b4fb2c12-42e4-496d-aea2-ccf8c90c2e6a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"5919a710-a950-4049-9605-3f127b7fac6b"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"fc3d15bc-ac9c-4150-9a26-4c8baef90266","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"c7030a88-152f-421c-8b32-66f3c222286a"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"c749facc-4350-43c1-b881-72c781475f56","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"25db80e6-c4cf-4568-98d3-0cba83625ece"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"30fa6c26-bdbb-4a70-a917-f42d99583938","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"f4b18249-5044-4b34-83f7-3cedbbe939c5"}}}],"id":"c689ea14-8d8b-4482-9cf3-c652904ebd27","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1470,"y":80},"width":150,"height":40,"radius":0}}},"id":"fabbc9b6-b752-4ba6-80a4-835eaa856948","savedPayload":{"position":{"x":10469.194131114753,"y":25564.28586691085},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"eb70203f-383c-4227-8b82-64458c8ceb62","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,"arrangementStyle":0},"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":"3a82f6d9-2063-4fd7-aa79-dedc4222c58c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"af19e56c-eaf1-4b0b-93f9-74b9ac1843c2"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"605b9ea8-5ed1-4750-8921-88bc481ffbc4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"30ac52a8-ee50-439c-83c8-df75ab49374a"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"3e97cb0b-80dd-4d12-8205-852c759a3f55","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"6a059555-2555-4c7f-a722-2ab4ca0440c5"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"76a918d5-1242-4b97-a252-550200546f5c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"c35fa0be-6e51-4d14-9a52-6b0174cc1aab"}}}],"id":"8658198e-ea8a-45ef-b05f-b2810aa3e015","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1320,"y":80},"width":150,"height":40,"radius":0}}},"id":"6616907b-5ec0-4c2d-b47b-885343226b81","savedPayload":{"position":{"x":10492.226838547804,"y":25390.75587290283},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a9786387-316d-4b02-a53a-60187e2e17ed","savedPayload":{"position":{"x":11138.236958169193,"y":25564.296880103568},"targetPosition":{"x":11472.267056451483,"y":24985.351675411093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":1135,"y":395},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"BBTB Binance BTC/USDT","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2020-05-27T08:46:57.183Z\",\n \"toDate\": \"2020-05-27T11:00:59.999Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": true\n}","id":"28d6f2c6-d921-4bc6-a262-f9d432e43a75","savedPayload":{"position":{"x":10492.140742264783,"y":24579.9362145769},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 8539.15569832808,\n \"maxValue\": 10398.820427646755,\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"305a3f31-2554-45f4-9a5a-063087eade65","savedPayload":{"position":{"x":10469.108817024662,"y":24406.41410216667},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-min\"}","id":"af0e57b5-269b-4d97-ac21-76195ede4cd6","savedPayload":{"position":{"x":10491.878304594275,"y":24233.318318413578},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timelineCharts":[{"type":"Timeline Chart","name":"Indicators","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":"Candles","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"8b7edeec-2998-4877-95d6-4bc85a91f199","savedPayload":{"position":{"x":46248.05137575185,"y":30539.981477083165},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"dd7c8795-bb24-4438-9d77-b37a9000ad7f"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"2360e8bf-a667-40b9-ad6e-84bca97a4c90","savedPayload":{"position":{"x":46348.34452605566,"y":30544.761548094564},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"6929ebe7-6486-4299-add5-ed0282500d91"}}},{"type":"Layer","name":"Resistances","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f2d657ea-cfc5-47d7-9a00-b1c1ebc61e3f","savedPayload":{"position":{"x":46446.02717816587,"y":30566.09887872283},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Resistances","id":"0669d924-aace-46d1-b126-ccced8fd33cf"}}},{"type":"Layer","name":"Supports","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"5f830182-98fa-4e85-b66b-f1e240d821c9","savedPayload":{"position":{"x":46538.63881539089,"y":30603.234570446057},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Supports","id":"5e7a0e50-e6ed-4106-8025-8b35ad6c597c"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ae39c816-1963-4071-af1d-22d6cf94041e","savedPayload":{"position":{"x":46623.76511494318,"y":30655.094055474026},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"1d7dd537-5f6f-4eb2-8e56-ddba0aef720f"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"84a553d0-1d85-4164-8a7e-f583326a807d","savedPayload":{"position":{"x":46699.14444013288,"y":30720.24134340254},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"221c8d22-8a7f-4014-a7ed-0bafc886b123"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"c2fde932-5320-4d26-a998-4a4f5bf4d847","savedPayload":{"position":{"x":46762.751722972724,"y":30796.894888988827},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"d83476c3-2f0b-4d4a-abb2-0e47ed0a421d"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"986d6828-d93c-4eba-9ac2-c2c94d90582e","savedPayload":{"position":{"x":46812.8682529904,"y":30882.964414919832},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"5ffc6a67-e33b-422b-8e36-f9711f93c723"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"90090b4c-f6bb-465f-8240-1ff1b829503d","savedPayload":{"position":{"x":46848.135118547885,"y":30976.104683991685},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"0428f20b-9620-480e-a531-dbb2e5f59ef4"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"3100c7a8-46ce-4713-bb6c-4a90bf09dcbc","savedPayload":{"position":{"x":46867.59367597035,"y":31073.77793275672},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"48f7953c-f62d-4292-b042-d1ac05f8f80f"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\"\n}","id":"534a2350-9486-4c2b-8e42-0988e56d4a6e","savedPayload":{"position":{"x":46870.67346817683,"y":31173.31982222448},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"3b9a3c93-6d41-440e-89a2-2fd1b2dde603"}}},{"type":"Layer","name":"Base5 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"948561ae-efea-46e1-9667-5c4817118eca","savedPayload":{"position":{"x":46857.28116383152,"y":31271.994178178073},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"2404b1eb-c7c9-46e7-b22a-93cfcc3739f4"}}},{"type":"Layer","name":"Base6 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"49e73773-8345-4e59-9fed-0cf16c82be08","savedPayload":{"position":{"x":46827.84146788965,"y":31367.11798477374},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"1510fd36-633e-40a7-adbe-680660d64bd0"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"0f88f124-bb93-4bac-918e-fd11496d1a76","savedPayload":{"position":{"x":46783.15367313365,"y":31456.101697387832},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"70401ea0-3fed-4e40-8bba-a1e5adce9b8c"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"5fcb4df6-3903-4e0a-b29d-4ca52ca10f40","savedPayload":{"position":{"x":46724.43510527031,"y":31536.52194014277},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"06ac8eb7-8b14-42b1-9e2e-466280ade032"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"b9c8e51c-82eb-4dc5-9b12-01a5c660e27d","savedPayload":{"position":{"x":46653.28455923557,"y":31606.187054109774},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"014bba70-64d4-4035-b06d-145ee9b4c54c"}}},{"type":"Layer","name":"Base7 EMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e101b9b9-54f7-4450-b658-41d428fe98b3","savedPayload":{"position":{"x":46571.641403531,"y":31663.200135592506},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"768cc06c-6fdf-491a-a741-5e08f0e25e38"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"7f4a8c67-cfb0-4370-a7d1-3dbb51a4200a","savedPayload":{"position":{"x":46478.30453269399,"y":31706.995649584336},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"40794460-b815-498f-a245-e677de0eed86"}}}],"id":"4ecd5f52-f81e-456c-9497-9c1d2fe4c659","savedPayload":{"position":{"x":46269.336201145576,"y":31141.93017159017},"targetPosition":{"x":45678.899180525084,"y":31259.254527781533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"6916ddb0-8156-49b5-a37b-16818ad780fd","savedPayload":{"position":{"x":10558.729861137988,"y":24071.895181337284},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 2042396.836815424,\n \"maxValue\": 2051300.858079199,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"fea71c82-c589-4e2b-9a23-a9f90a980a5c","savedPayload":{"position":{"x":44405.55033743636,"y":31261.51022477371},"targetPosition":{"x":44080.414675039254,"y":31287.13850027945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"0358d7fb-73e1-4099-bbad-672d80f35e8e","savedPayload":{"position":{"x":44612.89390157048,"y":31479.949969919875},"targetPosition":{"x":44401.28500610063,"y":31441.688531642707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"98e6c917-f4b7-4b71-9215-de3ccaf3dc0c"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"1647ec62-daa0-4985-ae3d-9ad7b3222397","savedPayload":{"position":{"x":44564.361174041755,"y":31581.712327942194},"targetPosition":{"x":44401.28500610063,"y":31441.688531642707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"111f471b-a72c-4330-97b0-3f2b310f3c55","savedPayload":{"position":{"x":44401.28500610063,"y":31441.688531642707},"targetPosition":{"x":44080.414675039254,"y":31287.13850027945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"237e33ff-32f9-4f45-bb51-b42e93d4f2e3","savedPayload":{"position":{"x":10665.086276963259,"y":23933.289816556313},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 24818.86417825609,\n \"maxValue\": 24953.3046073232,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"9294ac73-b348-4f8c-aa4b-a98e72b643ce","savedPayload":{"position":{"x":44361.21664273736,"y":31366.73167335227},"targetPosition":{"x":44060.4423815896,"y":31347.32101223103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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\": true\n}","id":"e8cef08c-fcbb-4430-8a2f-825d101f44e3","savedPayload":{"position":{"x":44529.19471727387,"y":31592.619948516272},"targetPosition":{"x":44324.99063603653,"y":31523.731134007154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"4a3ed8eb-a73e-4fb4-835a-681cf47d7373"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"ce432b11-fd42-4bbb-be67-be70436e1935","savedPayload":{"position":{"x":44467.06932232549,"y":31685.848244771263},"targetPosition":{"x":44324.99063603653,"y":31523.731134007154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"728d6f08-086f-41ba-9126-30ec56a45ea5"}}}],"id":"40c545c9-8f6e-4777-a5b7-6386c382d0ef","savedPayload":{"position":{"x":44324.99063603653,"y":31523.731134007154},"targetPosition":{"x":44060.4423815896,"y":31347.32101223103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"3b7bd98c-c062-412b-8efc-b6943b0c57c4","savedPayload":{"position":{"x":10803.694986500428,"y":23826.93951465946},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 913.9458988180226,\n \"maxValue\": 917.9458988180226,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"33fca6f7-ae02-4d47-987b-6d4cdd54d7dc","savedPayload":{"position":{"x":44290.58808276839,"y":31546.332726046596},"targetPosition":{"x":44008.67786449814,"y":31450.627230444796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"3f2dd6ab-cbb0-47d4-bcc0-4c65a6a26bbf","savedPayload":{"position":{"x":44413.860692334245,"y":31705.270868973323},"targetPosition":{"x":44217.224018592766,"y":31688.7983598539},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"7ccbd0c1-c804-47e3-9314-14cbb756c806"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6970ee87-56eb-42e1-a7f5-e8496ae7c14e","savedPayload":{"position":{"x":44370.6894603055,"y":31786.435037256044},"targetPosition":{"x":44217.224018592766,"y":31688.7983598539},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"08f223a8-9707-4c45-b638-1fe0e4a2b053"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"8467da0c-25b2-4471-8a51-d10e22c09575","savedPayload":{"position":{"x":44303.94190533702,"y":31846.937174734503},"targetPosition":{"x":44217.224018592766,"y":31688.7983598539},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"66f1a9be-fe96-48c3-91e4-500c6e246423"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"538dc51b-9d04-4064-8997-7c2cfd01def4","savedPayload":{"position":{"x":44207.172795775405,"y":31883.5736299024},"targetPosition":{"x":44217.224018592766,"y":31688.7983598539},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"e432c706-cbcd-4af0-b23c-b18e5b29377a"}}}],"id":"413ae363-1475-4fb5-918f-607c5ee50198","savedPayload":{"position":{"x":44217.224018592766,"y":31688.7983598539},"targetPosition":{"x":44008.67786449814,"y":31450.627230444796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0}}},"id":"6fbb972a-6cb6-479d-bbd8-20d96f997ec7","savedPayload":{"position":{"x":10965.11030574667,"y":23760.090535827057},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"c0059d35-5a9a-4569-9384-72e2e15f134d","savedPayload":{"position":{"x":27557.63582153647,"y":27912.736751977856},"targetPosition":{"x":27650.227157061017,"y":28257.50773383182},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"1ab2b96f-e3d5-46a0-9be0-2f2b76209ea2","savedPayload":{"position":{"x":27665.65594917696,"y":27585.32604165042},"targetPosition":{"x":27743.053578769875,"y":27912.28127902672},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"653622df-b35b-4c72-9b1d-cbbea2d45a93"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"3d8a3ad2-2047-4906-b695-5336d5d7c98a","savedPayload":{"position":{"x":27773.681834722982,"y":27575.417965010536},"targetPosition":{"x":27743.053578769875,"y":27912.28127902672},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"bcd39fee-3584-4e3a-b524-05ecb62d4582"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"75f4bc8d-ba22-4a6e-a8c2-2c384ef2b98c","savedPayload":{"position":{"x":27879.136658694806,"y":27601.456940514337},"targetPosition":{"x":27743.053578769875,"y":27912.28127902672},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"d6a48300-ab24-4b7b-8fb1-b431e389c7d1"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"db1b234c-5cba-4b03-8572-755e2af13f73","savedPayload":{"position":{"x":27979.473145949694,"y":27672.59337035246},"targetPosition":{"x":27743.053578769875,"y":27912.28127902672},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"aa60feec-3e11-4509-ab4f-5eac17ea7d3b"}}}],"id":"ce11bc60-a642-46e6-ab04-99b6835f22d3","savedPayload":{"position":{"x":27743.053578769875,"y":27912.28127902672},"targetPosition":{"x":27650.227157061017,"y":28257.50773383182},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":40,"radius":0}}},"id":"d3f769da-9958-4549-b2d9-7eb8582f94c2","savedPayload":{"position":{"x":11138.157252601008,"y":23737.30184414623},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Paper Trading","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-min\"}","id":"4c7c5182-d380-459d-aaf3-27cf75fff424","savedPayload":{"position":{"x":28262.385658877018,"y":28130.53416813641},"targetPosition":{"x":28262.41822833366,"y":28486.384792584635},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"on\",\n \"showPanels\": true\n}","id":"8c3a6cb3-9c1c-4a56-8e45-34da3b7211a5","savedPayload":{"position":{"x":28447.69443236196,"y":27841.456778292883},"targetPosition":{"x":28440.385696197893,"y":28177.98107529941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"2004d488-ba55-478c-afa4-c00a555bf34c"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"f6941192-1842-4fa5-9963-3d82963ccf8f","savedPayload":{"position":{"x":28557.462280733387,"y":27859.50803963232},"targetPosition":{"x":28440.385696197893,"y":28177.98107529941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"7859d024-817a-4059-8a17-86690194f9de"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"on\"\n}","id":"dbc9d245-aa65-4b6e-bed2-43a76dd4c5f6","savedPayload":{"position":{"x":28655.050318792713,"y":27915.11964276374},"targetPosition":{"x":28440.385696197893,"y":28177.98107529941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"dd541e63-8071-4b0f-8eb8-5fd50ef3eb82"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"on\"\n}","id":"d4c540d0-ef98-40c5-8b3b-401a36d97a35","savedPayload":{"position":{"x":28729.501541674534,"y":28006.267495681434},"targetPosition":{"x":28440.385696197893,"y":28177.98107529941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"11af0867-3396-48d4-b794-9d133d2d2416"}}}],"id":"848138ac-75f4-4f45-9d75-5f3efd1b1851","savedPayload":{"position":{"x":28440.385696197893,"y":28177.98107529941},"targetPosition":{"x":28262.41822833366,"y":28486.384792584635},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1620,"y":80},"width":150,"height":330,"radius":0}}},"id":"7e78029b-0e92-4aca-b46e-b0abd6a9efc1","savedPayload":{"position":{"x":11311.290953212665,"y":23760.139397561445},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"30f19a00-1682-4e5b-bbf1-038de1e095a0","savedPayload":{"position":{"x":28472.766660410845,"y":29349.031832198143},"targetPosition":{"x":28472.716345933826,"y":29707.546693237375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"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":"55f431d8-2f2b-4a23-8918-c7e648f501f4","savedPayload":{"position":{"x":28819.954200077675,"y":29131.835390461678},"targetPosition":{"x":28725.76222074944,"y":29454.779651892102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"3713af17-7ed8-4d32-abbb-66be7ba3d95b"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"352896a0-4682-4e04-b63a-8c449e290e3c","savedPayload":{"position":{"x":28923.00109202421,"y":29179.54612793986},"targetPosition":{"x":28725.76222074944,"y":29454.779651892102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"8206a3c4-7a92-4f52-aa29-d0b912511e94"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"ad636a90-0f4f-4851-8ac4-f1d8f62db35f","savedPayload":{"position":{"x":28999.37401037677,"y":29254.845401658935},"targetPosition":{"x":28725.76222074944,"y":29454.779651892102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"82cb4b63-c7ed-4e1c-b558-5caf08e7840e"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"46e22bd5-7a0a-4cf4-a07a-ffb56e480b13","savedPayload":{"position":{"x":29049.875305170575,"y":29364.278029383444},"targetPosition":{"x":28725.76222074944,"y":29454.779651892102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"35c51f59-d967-4fb9-bf3d-ebef155fe90a"}}}],"id":"b3fbff56-9599-4434-b850-ecde29200a93","savedPayload":{"position":{"x":28725.76222074944,"y":29454.779651892102},"targetPosition":{"x":28472.716345933826,"y":29707.546693237375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1470,"y":80},"width":150,"height":40,"radius":0}}},"id":"6a6e8794-41f5-43a6-afd2-7e46272b49f6","savedPayload":{"position":{"x":11472.759865802207,"y":23827.087856289705},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Live Trading","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-min\"}","id":"0e5d370a-9170-44e8-870a-20dcc784a793","savedPayload":{"position":{"x":28317.561321721798,"y":28460.143313868284},"targetPosition":{"x":28139.557768239833,"y":28769.97071387159},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"d4b2f167-9859-46d5-a98f-18ce9b8c2c37","savedPayload":{"position":{"x":28624.627247902066,"y":28305.973052222267},"targetPosition":{"x":28447.39063058376,"y":28591.244910585203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"84c5619b-c379-4bed-bd1c-3dccfc840fa7"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"303943c9-fa32-4510-abdb-59c743008a7a","savedPayload":{"position":{"x":28705.758217764087,"y":28373.020535680873},"targetPosition":{"x":28447.39063058376,"y":28591.244910585203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"9cd0c0da-e0df-4b83-a7f5-7e503f050020"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"09bd756c-955e-40c3-b093-f5bd16a47d94","savedPayload":{"position":{"x":28763.500035918594,"y":28466.28104399784},"targetPosition":{"x":28447.39063058376,"y":28591.244910585203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"05aa1029-fde5-4240-b5ef-31636ed817ee"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"7baed766-dcbe-4ca9-a45c-f09d5e1f0c0c","savedPayload":{"position":{"x":28784.40971720822,"y":28589.492110455},"targetPosition":{"x":28447.39063058376,"y":28591.244910585203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"8681f8d9-c6fa-4966-aa76-e627000962cb"}}}],"id":"73aed3a7-3c46-4847-85a8-1da38a836b75","savedPayload":{"position":{"x":28447.39063058376,"y":28591.244910585203},"targetPosition":{"x":28139.557768239833,"y":28769.97071387159},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1320,"y":80},"width":150,"height":40,"radius":0}}},"id":"0440d6cc-9623-40ab-b3fd-b6fc234d2550","savedPayload":{"position":{"x":11611.635854119537,"y":23933.882953163084},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f2065c00-1afb-40e3-937c-fa4046f388a2","savedPayload":{"position":{"x":11138.15835124918,"y":24406.41899509399},"targetPosition":{"x":11472.267056451483,"y":24985.351675411093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":725,"y":395},"width":240,"height":113.625,"radius":0}}}],"id":"64fa2a31-21ea-4b56-a625-dc4082876a89","savedPayload":{"position":{"x":11472.267056451483,"y":24985.351675411093},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":0,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"t"}}}],"id":"c53a4385-3fb3-49d5-b506-99bcaef2c141","savedPayload":{"position":{"x":12809.806237131383,"y":24985.35640053908},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":0,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"c"}}},{"type":"Trading System","name":"BB Top Bounce","code":"{ \n\"codeName\": \"\"\n}","strategies":[{"type":"Strategy","name":"S1 - 3H Down","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"99948a6e-e866-4339-86ba-eac367226312","savedPayload":{"position":{"x":31745.87792199155,"y":30844.340258645996},"targetPosition":{"x":32052.38122416619,"y":30583.023145060495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f0534c68-ab47-4370-b1fd-b3be4c1c262f","savedPayload":{"position":{"x":32052.38122416619,"y":30583.023145060495},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"d3bd1690-1f94-484b-ac3c-7be2c7be85ed","savedPayload":{"position":{"x":31605.618112221746,"y":30565.806770971594},"targetPosition":{"x":31989.318028702757,"y":30441.460815337527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e2d7334d-cf52-44d9-a20e-5be201ca6799","savedPayload":{"position":{"x":31989.318028702757,"y":30441.460815337527},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"d1fa707f-eb75-4b1c-8117-688b9b94e539","savedPayload":{"position":{"x":31554.61755893405,"y":30257.172197674274},"targetPosition":{"x":31956.687749228324,"y":30288.882416651897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fb71bcfb-2a40-4e8a-b8e8-b492128350a0","savedPayload":{"position":{"x":31956.687749228324,"y":30288.882416651897},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerChannel.direction === \"Down\"","id":"8c8c5128-b88b-44a5-8e36-d5c61127404f","savedPayload":{"position":{"x":31639.94576021355,"y":29954.803831254892},"targetPosition":{"x":31999.203547395213,"y":30137.794869043297},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"22246178-a8f9-4ec8-b55b-36cf7a24fbff","savedPayload":{"position":{"x":31999.203547395213,"y":30137.794869043297},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Medium, Steep or Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerSubChannel.slope === \"Medium\" || chart.at03hs.bollingerSubChannel.slope === \"Steep\" || chart.at03hs.bollingerSubChannel.slope === \"Extreme\" ","id":"bf8df41c-c62f-4cd6-840e-1dd538359c3b","savedPayload":{"position":{"x":31834.655620259655,"y":29707.873760246843},"targetPosition":{"x":32096.553555740164,"y":30014.31400704127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9dba774d-1afa-40dd-b5ec-8f4029824473","savedPayload":{"position":{"x":32096.553555740164,"y":30014.31400704127},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerSubChannel.slope === \"Gentle\"","id":"c4428437-7308-46f3-884e-22d2aac8d1a0","savedPayload":{"position":{"x":32109.03084733644,"y":29554.180048988066},"targetPosition":{"x":32233.790964800362,"y":29937.452098557496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7766453d-73ca-46f7-a39c-00f4f11af05e","savedPayload":{"position":{"x":32233.790964800362,"y":29937.452098557496},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"eac9b2d4-4364-4116-9d99-e92b8bbce5e7","savedPayload":{"position":{"x":32420.849012406088,"y":29517.112042973775},"targetPosition":{"x":32389.86788822145,"y":29918.98295933012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"40cb1853-f93e-4023-8d45-708376281bde","savedPayload":{"position":{"x":32389.86788822145,"y":29918.98295933012},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8d558598-60b5-4104-9a84-1773b125c509","savedPayload":{"position":{"x":32358.475513276375,"y":30321.19625417135},"targetPosition":{"x":32756.369395728692,"y":30473.2782041962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"3afd4ef5-2175-48fa-844f-e4e4ed775b26","savedPayload":{"position":{"x":32756.369395728692,"y":30473.2782041962},"targetPosition":{"x":33115.49575849726,"y":30655.993268223905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"0fb11814-5ba2-4c23-86b0-e6f8c01363e6","savedPayload":{"position":{"x":32617.29250092579,"y":29121.850815516915},"targetPosition":{"x":32741.838475650537,"y":29505.18938868129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"32415e55-51cb-44cf-a0d9-9de73b946da8","savedPayload":{"position":{"x":32741.838475650537,"y":29505.18938868129},"targetPosition":{"x":32866.375295950726,"y":29888.60205395678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"317dd29a-db32-4f10-bee0-325b7a7c816c","savedPayload":{"position":{"x":32866.375295950726,"y":29888.60205395678},"targetPosition":{"x":32991.015860687716,"y":30271.979726021065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"547d578f-4568-4b1f-965d-1d598b7b67bb","savedPayload":{"position":{"x":32991.015860687716,"y":30271.979726021065},"targetPosition":{"x":33115.49575849726,"y":30655.993268223905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"903651ac-50d3-44ea-aae2-0b6bbe43b989","savedPayload":{"position":{"x":32519.153930150867,"y":29623.888173680094},"targetPosition":{"x":32898.8713319454,"y":29758.68564157265},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4c4c6084-bebe-46ce-a12f-68924568c81d","savedPayload":{"position":{"x":32898.8713319454,"y":29758.68564157265},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"b16e3f56-5a3f-4af9-a9d1-ff3bbf9ca0b8","savedPayload":{"position":{"x":32679.72474976604,"y":29354.39087414772},"targetPosition":{"x":32979.10492621333,"y":29624.347968493967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c4e1f247-db57-4488-81e9-c7602562b8f3","savedPayload":{"position":{"x":32979.10492621333,"y":29624.347968493967},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"34452811-c161-4b33-8335-bc996a8638ad","savedPayload":{"position":{"x":32931.691553348195,"y":29166.564159994483},"targetPosition":{"x":33105.053842370166,"y":29530.40381131325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"db35b110-1991-4e3d-a1bd-04b0d1bad669","savedPayload":{"position":{"x":33105.053842370166,"y":29530.40381131325},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerChannel.direction === \"Down\"","id":"8fcf0aed-cd6b-4df9-8ec4-4511fcde66d8","savedPayload":{"position":{"x":33236.37478842459,"y":29089.384601838196},"targetPosition":{"x":33257.444177016405,"y":29491.79286529503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"48bd56ea-0d5a-404d-a887-061493bebbcf","savedPayload":{"position":{"x":33257.444177016405,"y":29491.79286529503},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Medium, Steep or Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerSubChannel.slope === \"Medium\" || chart.at03hs.bollingerSubChannel.slope === \"Steep\" || chart.at03hs.bollingerSubChannel.slope === \"Extreme\" ","id":"40b36ec9-ebf1-43fe-8003-f0d130b7cb36","savedPayload":{"position":{"x":33547.15819738872,"y":29134.731069626498},"targetPosition":{"x":33412.887765036874,"y":29514.443714403056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6c90a754-52bd-47cf-a3b5-95ad037bbb62","savedPayload":{"position":{"x":33412.887765036874,"y":29514.443714403056},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerSubChannel.slope === \"Gentle\"","id":"3f28257c-cc33-4c59-b40b-85bc88821f96","savedPayload":{"position":{"x":33817.50271555692,"y":29295.712530312267},"targetPosition":{"x":33548.076869473945,"y":29594.931818674166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fc2fb509-2854-4359-aa1e-b32a2174bd35","savedPayload":{"position":{"x":33548.076869473945,"y":29594.931818674166},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"5226a3d7-c8f8-41bd-9b45-f6238576628f","savedPayload":{"position":{"x":34005.82672873455,"y":29547.817722630363},"targetPosition":{"x":33642.2312063245,"y":29721.07059078792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0b38876e-bcad-4cec-90e2-c2e358723d29","savedPayload":{"position":{"x":33642.2312063245,"y":29721.07059078792},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"46e2ecf6-82ae-435d-a3a0-d5e2903404fd","savedPayload":{"position":{"x":33278.333917070595,"y":29894.451567060434},"targetPosition":{"x":33299.00147256256,"y":30297.01571488586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"c296b2ce-4039-48ec-b8bb-99c9d96853eb","savedPayload":{"position":{"x":33609.682057130776,"y":29953.38300829202},"targetPosition":{"x":33434.376532064154,"y":30147.396378822883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d0dbc486-d195-4db3-b895-385088b800ba","savedPayload":{"position":{"x":33434.475794635255,"y":30147.282072860846},"targetPosition":{"x":33299.00147256256,"y":30297.01571488586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"93418d2a-3047-4f80-aa59-0c6fdb35ad43","savedPayload":{"position":{"x":33299.00147256256,"y":30297.01571488586},"targetPosition":{"x":33115.49575849726,"y":30655.993268223905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"1055a2cc-e93a-4dd8-a992-f56553527ddd","savedPayload":{"position":{"x":33115.49575849726,"y":30655.993268223905},"targetPosition":{"x":33239.48474341851,"y":31038.643250235426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"853852d1-d2fa-4e32-a891-e98ca52a556e","savedPayload":{"position":{"x":33687.32525899127,"y":28630.28850235298},"targetPosition":{"x":33979.54395432601,"y":28708.55040929766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"3bdebe73-3546-43f3-b644-73ec62086c66","savedPayload":{"position":{"x":33666.51804208801,"y":27539.983917204023},"targetPosition":{"x":33744.69548060642,"y":27832.06710596675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"36615e86-2c8e-4182-ab3e-5c263c44fcb1","savedPayload":{"position":{"x":33744.70691352631,"y":27832.134330548877},"targetPosition":{"x":33822.954696502624,"y":28124.404333447008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6aae47da-70b4-4fd3-b2da-65a1d645b915","savedPayload":{"position":{"x":33822.86695788699,"y":28124.39717183063},"targetPosition":{"x":33901.15598726982,"y":28416.52491269287},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"18261801-3d1b-4dfe-872c-019fff59db4d","savedPayload":{"position":{"x":33901.15572942444,"y":28416.51381216433},"targetPosition":{"x":33979.54395432601,"y":28708.55040929766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"678cc7e5-c7cf-48e5-beee-37455617aa15","savedPayload":{"position":{"x":33979.616026972566,"y":28708.527885863212},"targetPosition":{"x":34193.31786858143,"y":28922.065415950765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a57d76af-2d34-41a0-b68b-a5dda59436b4","savedPayload":{"position":{"x":34193.31786858143,"y":28922.065415950765},"targetPosition":{"x":34406.84857131276,"y":29135.252280701574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"f191391f-f798-4819-b46b-8ae9538ff71f","savedPayload":{"position":{"x":34123.43694196574,"y":28303.266547138595},"targetPosition":{"x":34313.34298525399,"y":28538.488004355862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"65b73feb-09e0-491d-99fd-30f331acac97","savedPayload":{"position":{"x":34436.073537225195,"y":27376.24000730662},"targetPosition":{"x":34483.20864925244,"y":27674.87599559046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fa12e6f8-f9d6-4eb7-9e3b-1e0f17581548","savedPayload":{"position":{"x":34483.301676393894,"y":27675.108504545075},"targetPosition":{"x":34530.31165278271,"y":27973.96671756476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"2eff0ccd-bf54-4456-aff5-9f46cf1469ff","savedPayload":{"position":{"x":35000.38389861486,"y":27593.093039459363},"targetPosition":{"x":34765.46226665505,"y":27783.35172716299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a4af8e92-a505-48fd-8080-8a715cd856dc","savedPayload":{"position":{"x":34765.43852093076,"y":27783.562045970917},"targetPosition":{"x":34530.31165278271,"y":27973.96671756476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ef07d7e4-53c0-4746-a1a2-4b4856cba9df","savedPayload":{"position":{"x":34530.30099769694,"y":27973.974792996265},"targetPosition":{"x":34421.88845899308,"y":28256.249074095707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"2484f7be-38df-4139-94b4-d753e6d50eed","savedPayload":{"position":{"x":34421.82014227279,"y":28256.221955834993},"targetPosition":{"x":34313.34298525399,"y":28538.488004355862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"8ba924d4-3ac9-41de-ba03-02368b3bde5a","savedPayload":{"position":{"x":34313.4187637897,"y":28538.448023932728},"targetPosition":{"x":34360.1918698118,"y":28837.00124492984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8c2601bb-ff4c-4947-b514-96f43313e134","savedPayload":{"position":{"x":34360.1600707038,"y":28837.029615626387},"targetPosition":{"x":34406.84857131276,"y":29135.252280701574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"058068ed-ad77-4574-b61b-58e54f0db35b","savedPayload":{"position":{"x":34682.314020993916,"y":28597.031066228574},"targetPosition":{"x":34544.60399635092,"y":28866.212135868725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9ba67283-694d-42a9-995f-19e53d5519d0","savedPayload":{"position":{"x":34544.60399635092,"y":28866.212135868725},"targetPosition":{"x":34406.84857131276,"y":29135.252280701574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"bd3b401d-5b77-43ba-87e1-c4f9552bf56f","savedPayload":{"position":{"x":34946.04548109355,"y":28861.386648858126},"targetPosition":{"x":34676.46337129765,"y":28998.42894504949},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4938fc97-68bf-490e-85a0-66254b98bbac","savedPayload":{"position":{"x":34676.46337129765,"y":28998.42894504949},"targetPosition":{"x":34406.84857131276,"y":29135.252280701574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3f9517c2-52d1-4922-a838-1aacf268bcc7","savedPayload":{"position":{"x":34406.84857131276,"y":29135.252280701574},"targetPosition":{"x":34217.642980461096,"y":30328.208176155946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"97162469-0f8d-4710-81e1-1a1f3070a5ac","savedPayload":{"position":{"x":34462.41262967484,"y":30150.616620789337},"targetPosition":{"x":34217.642980461096,"y":30328.208176155946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"b23bab61-270d-4e0e-bcdc-f57457942e30","savedPayload":{"position":{"x":34822.17690991721,"y":30423.728911300397},"targetPosition":{"x":34516.57606336537,"y":30375.449231047525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a92fd7c1-db55-485b-bb59-7894f339959d","savedPayload":{"position":{"x":34516.582487985164,"y":30375.451352699893},"targetPosition":{"x":34217.642980461096,"y":30328.208176155946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e35699bc-1fe9-4cdc-b029-6361f0ce8592","savedPayload":{"position":{"x":34217.642980461096,"y":30328.208176155946},"targetPosition":{"x":33239.48474341851,"y":31038.643250235426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Standard Run","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"0e9e87f6-4636-4f1f-8091-d1c3090ee345","savedPayload":{"position":{"x":34864.4258519058,"y":31073.451873580834},"targetPosition":{"x":34461.11172798981,"y":31137.136196285086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"4a44eb01-4bb2-4b85-bd64-cab1b6a4678f","savedPayload":{"position":{"x":34461.11172798981,"y":31137.136196285086},"targetPosition":{"x":33939.89373966002,"y":31219.42301087441},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a9042fd2-0f05-4208-91b7-81e00b6493fb","savedPayload":{"position":{"x":33964.17199362247,"y":31212.629100310176},"targetPosition":{"x":33565.701923404486,"y":31275.6154406843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"aadae3ad-5cf1-4417-baad-c6e8b0ab8f31","savedPayload":{"position":{"x":34479.54862907233,"y":31441.47133565945},"targetPosition":{"x":34242.223416518915,"y":31767.17190193582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bfc7fa92-c54c-43e7-8a6d-f89572d1fee2","savedPayload":{"position":{"x":35534.17506364013,"y":32601.01834737772},"targetPosition":{"x":35227.57871058723,"y":32377.80094191258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5ea229bf-a68c-40f9-a6ac-8bae8171ecda","savedPayload":{"position":{"x":35227.57871058723,"y":32377.80094191258},"targetPosition":{"x":34900.77194830591,"y":32141.7292100267},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"585c2f06-93d7-403f-ab70-0aab9c936f72","savedPayload":{"position":{"x":34900.77194830591,"y":32141.7292100267},"targetPosition":{"x":34573.63535245736,"y":31912.267182708572},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"cddeb772-d0f7-4ba8-b303-b623746f3f6e","savedPayload":{"position":{"x":34573.63535245736,"y":31912.267182708572},"targetPosition":{"x":34242.223416518915,"y":31767.17190193582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"4862beb3-990c-43ba-a21b-93ce1227d060","savedPayload":{"position":{"x":34095.983992917565,"y":33156.25692616599},"targetPosition":{"x":33932.40423152793,"y":32787.97422544229},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dc6ade59-03df-4aa5-a892-5e225a38cb35","savedPayload":{"position":{"x":33932.40423152793,"y":32787.97422544229},"targetPosition":{"x":33768.76262490215,"y":32419.670081760734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"54428b89-eb5f-4844-9fec-b049f074b3c8","savedPayload":{"position":{"x":33684.54360513825,"y":33221.50127229437},"targetPosition":{"x":33726.58189119683,"y":32820.64500846274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"81b0626e-e4c7-40dc-ae8d-ec5603067461","savedPayload":{"position":{"x":33726.58189119683,"y":32820.64500846274},"targetPosition":{"x":33768.76262490215,"y":32419.670081760734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"05867691-257f-4795-b70f-180ef26713fd","savedPayload":{"position":{"x":33295.15009910802,"y":33072.03862949453},"targetPosition":{"x":33531.844828303714,"y":32745.9038412817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2d354bdf-7142-4921-aec4-60a295569584","savedPayload":{"position":{"x":33531.844828303714,"y":32745.9038412817},"targetPosition":{"x":33768.76262490215,"y":32419.670081760734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"74adc18a-fcb8-47ad-a447-1595f16cc7f6","savedPayload":{"position":{"x":33032.65657548499,"y":32747.964707298193},"targetPosition":{"x":33400.58073167286,"y":32583.817208006196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8c760094-3830-48d3-a97c-a9dee27f3c7e","savedPayload":{"position":{"x":33400.58073167286,"y":32583.817208006196},"targetPosition":{"x":33768.76262490215,"y":32419.670081760734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"45a3f428-25a5-4cf2-a13f-08bf3bbc4972","savedPayload":{"position":{"x":32967.43396894057,"y":32336.52703312829},"targetPosition":{"x":33367.984332677246,"y":32377.98795861293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6106746d-8995-425e-8dd9-009894a5dd07","savedPayload":{"position":{"x":33367.984332677246,"y":32377.98795861293},"targetPosition":{"x":33768.76262490215,"y":32419.670081760734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"61a873ab-dc8f-4023-93cd-a861bd965858","savedPayload":{"position":{"x":33768.76262490215,"y":32419.670081760734},"targetPosition":{"x":34005.569456507634,"y":32093.444793007522},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"aa98a93e-c928-4900-854a-97b3750182d2","savedPayload":{"position":{"x":34005.569456507634,"y":32093.444793007522},"targetPosition":{"x":34242.223416518915,"y":31767.17190193582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"83f85765-e13b-406a-bd56-7fd820eebc16"}}}],"announcements":[],"id":"e3b43a25-cbb0-4ebc-ac2f-148a56d7d934","savedPayload":{"position":{"x":34242.223416518915,"y":31767.17190193582},"targetPosition":{"x":33891.42358861794,"y":31512.39396500924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"e603a735-7a74-4654-b0bb-50bee2d1e307","savedPayload":{"position":{"x":34965.37684662937,"y":31962.859663977957},"targetPosition":{"x":34566.985205192934,"y":32026.856287734012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"12b3cadf-b8f9-4f43-8799-40c1509f8d07","savedPayload":{"position":{"x":35934.15152043711,"y":32273.569658836277},"targetPosition":{"x":35565.78497710967,"y":32437.163554507133},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d45aa91c-a153-4311-8403-8e4492ffcc95","savedPayload":{"position":{"x":35565.78497710967,"y":32437.163554507133},"targetPosition":{"x":35196.94350553596,"y":32600.98818807042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"47191a8e-485b-4f11-be05-c1b6253da95e","savedPayload":{"position":{"x":36019.79323488345,"y":32698.898330709257},"targetPosition":{"x":35618.76476118394,"y":32656.59127038628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0a6eff46-6a7b-4a29-81a4-93a751a056bf","savedPayload":{"position":{"x":35618.76476118394,"y":32656.59127038628},"targetPosition":{"x":35196.94350553596,"y":32600.98818807042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"e9cfe84c-e144-4e95-88ce-8bfdffd42f89","savedPayload":{"position":{"x":35850.04803078668,"y":33074.805375387914},"targetPosition":{"x":35523.743612251135,"y":32837.93392343165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9dfa9604-bc08-4df3-980d-2f8b06185031","savedPayload":{"position":{"x":35523.743612251135,"y":32837.93392343165},"targetPosition":{"x":35196.94350553596,"y":32600.98818807042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"8c332bfe-ab0c-4905-9440-86091b7040b1","savedPayload":{"position":{"x":35526.96283562273,"y":33337.71267605346},"targetPosition":{"x":35362.78202114205,"y":32969.172911299174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e358399e-001d-4d07-83e4-2bf9d65ed1bd","savedPayload":{"position":{"x":35362.78202114205,"y":32969.172911299174},"targetPosition":{"x":35196.94350553596,"y":32600.98818807042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div previous ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"51ec782d-f54f-46b5-b45a-9db5cf7a380e","savedPayload":{"position":{"x":35078.386460330876,"y":33413.44311371471},"targetPosition":{"x":35120.761185118834,"y":33012.25356399207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c64c6aff-2525-4e58-9e27-ac7a8b3dc8cb","savedPayload":{"position":{"x":35120.761185118834,"y":33012.25356399207},"targetPosition":{"x":35196.94350553596,"y":32600.98818807042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"08f82342-86ce-4222-b954-968397dd2d33","savedPayload":{"position":{"x":35196.94350553596,"y":32600.98818807042},"targetPosition":{"x":34870.15982787527,"y":32364.087714314013},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"170cad22-eef5-48c3-b5d9-fae484dab493","savedPayload":{"position":{"x":34870.15982787527,"y":32364.087714314013},"targetPosition":{"x":34566.985205192934,"y":32026.856287734012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"83f85765-e13b-406a-bd56-7fd820eebc16"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"0320d330-7d8e-4577-8ea3-debcdf5c4971","savedPayload":{"position":{"x":35201.0639175972,"y":33465.70824658257},"targetPosition":{"x":34945.200145626884,"y":33137.04979310342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6611a627-dfaf-4248-8aaa-e27fb7ac7141","savedPayload":{"position":{"x":34945.200145626884,"y":33137.04979310342},"targetPosition":{"x":34692.15922488175,"y":32823.47675811349},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"51f5f720-c0df-4209-a32f-80f67688004d","savedPayload":{"position":{"x":34403.59582771485,"y":33576.18639286568},"targetPosition":{"x":34547.81576381235,"y":33199.90475745102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"62ebc71f-7dab-4090-9f0e-c557cbbf5045","savedPayload":{"position":{"x":34547.81576381235,"y":33199.90475745102},"targetPosition":{"x":34692.15922488175,"y":32823.47675811349},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9cfa9122-1b64-4a37-877f-1c722493562a","savedPayload":{"position":{"x":34692.15922488175,"y":32823.47675811349},"targetPosition":{"x":34629.497980836786,"y":32425.186055399783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"73f3e391-cceb-4d27-932f-7b3c76d63b24","savedPayload":{"position":{"x":34629.497980836786,"y":32425.186055399783},"targetPosition":{"x":34566.985205192934,"y":32026.856287734012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"e3b43a25-cbb0-4ebc-ac2f-148a56d7d934"}}}],"announcements":[],"id":"913c2adb-a405-40e1-b661-300ec59c4ea0","savedPayload":{"position":{"x":34566.985205192934,"y":32026.856287734012},"targetPosition":{"x":34242.223416518915,"y":31767.17190193582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"be65b94d-3942-43c3-96aa-354447d5d591","savedPayload":{"position":{"x":35266.86864213329,"y":32080.796230194483},"targetPosition":{"x":34898.47957079251,"y":32244.880649959683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"fb87ce68-53e9-4553-a0d4-c996920c9b7a","savedPayload":{"position":{"x":35881.98510857697,"y":33453.83239370252},"targetPosition":{"x":35556.24500068716,"y":33217.03786906918},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1c9f9e96-a31d-42dc-a72f-ee8c25057426","savedPayload":{"position":{"x":35556.24500068716,"y":33217.03786906918},"targetPosition":{"x":35230.10643190333,"y":32980.148545011216},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"2d8cbbda-0c6c-4f48-ab1a-4f3ee6cb46d1","savedPayload":{"position":{"x":35144.11024531394,"y":33766.74632003621},"targetPosition":{"x":35186.14435295862,"y":33366.033340052745},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e4719fbb-2730-46bf-9593-75e9544d860c","savedPayload":{"position":{"x":35186.14435295862,"y":33366.033340052745},"targetPosition":{"x":35230.10643190333,"y":32980.148545011216},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"60819e62-c36a-4cf6-86ea-09aa1046f1b7","savedPayload":{"position":{"x":35230.10643190333,"y":32980.148545011216},"targetPosition":{"x":35061.15284169607,"y":32613.19638922832},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"297f0537-a281-46ab-89a4-9aab36495673","savedPayload":{"position":{"x":35061.15284169607,"y":32613.19638922832},"targetPosition":{"x":34898.47957079251,"y":32244.880649959683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"e3b43a25-cbb0-4ebc-ac2f-148a56d7d934"}}}],"announcements":[],"id":"83f85765-e13b-406a-bd56-7fd820eebc16","savedPayload":{"position":{"x":34898.47957079251,"y":32244.880649959683},"targetPosition":{"x":34566.985205192934,"y":32026.856287734012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cf907f3e-a01a-4ffb-9e3b-23ea0d8f34d1","savedPayload":{"position":{"x":33892.049283641114,"y":31512.87348125915},"targetPosition":{"x":33565.701923404486,"y":31275.6154406843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"fa95edc3-acc6-44c0-acb1-47583e1ff54a","savedPayload":{"position":{"x":33690.80820420145,"y":32071.297117691756},"targetPosition":{"x":33628.26011341306,"y":31673.51260213062},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"67446ae0-3e01-451b-8689-d9c7ea48a1f4","savedPayload":{"position":{"x":33629.00012297632,"y":31673.95650524724},"targetPosition":{"x":33565.701923404486,"y":31275.6154406843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3f7a5501-fa20-4b3b-b038-2297cb2fd04e","savedPayload":{"position":{"x":33565.701923404486,"y":31275.6154406843},"targetPosition":{"x":33239.48474341851,"y":31038.643250235426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"938021bb-3f71-4d07-961b-bdac0c208ec6","savedPayload":{"position":{"x":33385.03651416626,"y":31721.91869755804},"targetPosition":{"x":33115.24150182601,"y":31421.868407518647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"dc7931a1-ce6a-4a8b-bc84-65cbfc4ebbd0","savedPayload":{"position":{"x":32676.438509295866,"y":32098.960417908125},"targetPosition":{"x":32895.535995884864,"y":31760.66588131618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4f75b57a-e00c-4479-9cf0-7c87eef8254b","savedPayload":{"position":{"x":32895.5338274171,"y":31760.68558474898},"targetPosition":{"x":33115.24150182601,"y":31421.868407518647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2371e1b0-7d6e-47d8-92b3-8447bd933af5","savedPayload":{"position":{"x":33115.24150182601,"y":31421.868407518647},"targetPosition":{"x":33239.48474341851,"y":31038.643250235426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"77e56192-a0b0-4786-afdb-8e59ba757ccf","savedPayload":{"position":{"x":33239.48474341851,"y":31038.643250235426},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S3 - 2H Down","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"0c6d7b91-4bbf-4e27-850c-6348ffea4055","savedPayload":{"position":{"x":31634.350378426207,"y":30259.571095345415},"targetPosition":{"x":32263.43911849039,"y":30259.947220728467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9c8b0541-0125-4ed1-8bcb-2d8a539bcc85","savedPayload":{"position":{"x":32263.43911849039,"y":30259.947220728467},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"b09863b6-7ea3-4929-8b3c-f99409fb1bf1","savedPayload":{"position":{"x":31696.88500088226,"y":29870.632625415637},"targetPosition":{"x":32294.89171998345,"y":30065.140782336246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"26835b4a-83a2-4209-84a0-e38c74ff993a","savedPayload":{"position":{"x":32294.89171998345,"y":30065.140782336246},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"2fc1bc08-9def-4a37-abc3-dbac24a2c360","savedPayload":{"position":{"x":31875.884827815316,"y":29520.365687488113},"targetPosition":{"x":32384.487164002785,"y":29890.063455449697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1fa5642c-48f4-492b-81d3-5d752decd8af","savedPayload":{"position":{"x":32384.487164002785,"y":29890.063455449697},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Down","code":"chart.at02hs.bollingerBand.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Down\"","id":"07c23ae8-6440-4b6e-aabe-67afdba80c7c","savedPayload":{"position":{"x":32154.209372947636,"y":29242.349943028978},"targetPosition":{"x":32523.67032296668,"y":29751.085106238465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c14a9e3b-6d84-44c9-8273-1a37850087b4","savedPayload":{"position":{"x":32523.67032296668,"y":29751.085106238465},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Up","code":"chart.at02hs.bollingerBand.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Up\"","id":"57d558fd-ecfa-429a-9304-88f41b32b44c","savedPayload":{"position":{"x":32504.830345617527,"y":29063.85702318619},"targetPosition":{"x":32698.994485377014,"y":29661.828315918163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ab49ca45-333d-4ed9-99a1-a3ca632cbbb2","savedPayload":{"position":{"x":32698.994485377014,"y":29661.828315918163},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H NOT Side","code":"chart.at04hs.bollingerSubChannel.slope === \"Side\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope != \"Side\"","id":"261d9835-4d23-4b58-946d-b9324d920273","savedPayload":{"position":{"x":32893.22119985897,"y":29002.336709240757},"targetPosition":{"x":32893.22305153142,"y":29631.07615103375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4d450dc4-bfbb-4779-b070-cac385b809c7","savedPayload":{"position":{"x":32893.22305153142,"y":29631.07615103375},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H RSI > 60","code":"chart.at24hs.rsi14.value < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.rsi14.value > 60","id":"c0afd580-e4b8-4c7c-ac4c-7370e5a79a98","savedPayload":{"position":{"x":33281.4681278924,"y":29063.86071973356},"targetPosition":{"x":33087.3880414573,"y":29661.86609096789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"95207d90-4af8-4b5a-8321-0076e8b8929d","savedPayload":{"position":{"x":33087.3880414573,"y":29661.86609096789},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"92ef2b33-6bd1-4ab7-91a4-ddb3e035ed08","savedPayload":{"position":{"x":33632.012109517724,"y":29242.375556754567},"targetPosition":{"x":33262.687218260275,"y":29751.231513287654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3ac7ebe1-3f6f-4e35-a8a2-f39aa509c849","savedPayload":{"position":{"x":33262.687218260275,"y":29751.231513287654},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 3: 02H Down && 4H Side && 1H Medium, Steep or Extreme","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Down\" && chart.at12hs.bollingerChannel.direction === \"Down\" && chart.at04hs.bollingerSubChannel.slope === \"Side\" && (chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\")) {false} else {true}","id":"6ef3aec8-78cb-4942-bcfd-ff860b2b7971","savedPayload":{"position":{"x":33910.39444114047,"y":29520.60636592229},"targetPosition":{"x":33401.847358196974,"y":29890.34803965414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5af02e84-f067-45ee-8d7e-44966254e430","savedPayload":{"position":{"x":33401.847358196974,"y":29890.34803965414},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"20017afc-2e99-4596-9a1d-41b8b8ee7999","savedPayload":{"position":{"x":32893.236637209084,"y":30260.196412414953},"targetPosition":{"x":33087.874215175114,"y":30859.83394852712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"e6080867-291e-4dc7-b00f-582656e25e80","savedPayload":{"position":{"x":33087.874215175114,"y":30859.83394852712},"targetPosition":{"x":33217.802289890395,"y":31259.358809115663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"890f22bb-d291-4fdd-b444-5afbea478f13","savedPayload":{"position":{"x":33996.096905529594,"y":29767.64086654404},"targetPosition":{"x":33805.65783204276,"y":30141.695325277316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ef921c85-8bd3-49cc-aeaa-2556181fec27","savedPayload":{"position":{"x":33805.65783204276,"y":30141.695325277316},"targetPosition":{"x":33599.576454871414,"y":30510.782338093184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d4217f36-b6e4-45dc-979d-5ad1e74d0b85","savedPayload":{"position":{"x":33599.576454871414,"y":30510.782338093184},"targetPosition":{"x":33408.94602515501,"y":30885.02159265233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"92cd971f-1315-425e-883c-4adefb12883e","savedPayload":{"position":{"x":33408.94602515501,"y":30885.02159265233},"targetPosition":{"x":33217.802289890395,"y":31259.358809115663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"f5611889-2d66-4b5a-84ca-1bd444e56cb0","savedPayload":{"position":{"x":33395.423835013324,"y":29567.707236019025},"targetPosition":{"x":33709.38286226146,"y":30112.552280287062},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96fdbdfc-c7d9-4e54-972c-de01d3f58a76","savedPayload":{"position":{"x":33709.38286226146,"y":30112.552280287062},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"ccd315a6-ae1c-4fcf-b6d4-deac89aef390","savedPayload":{"position":{"x":33778.40641159468,"y":29431.615941930762},"targetPosition":{"x":33908.92112230485,"y":30046.80251988933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"382fb23e-b4bc-4792-a492-328fa6201f6c","savedPayload":{"position":{"x":33908.92112230485,"y":30046.80251988933},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"cbc7b7f8-b6f1-4752-9259-6372178089e4","savedPayload":{"position":{"x":34170.783725012014,"y":29411.253122777303},"targetPosition":{"x":34105.031023089345,"y":30036.658201403985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"74975af2-4802-47bc-8251-97981c77dc4a","savedPayload":{"position":{"x":34105.031023089345,"y":30036.658201403985},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Down","code":"chart.at02hs.bollingerBand.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Down\"","id":"b7bdf1ce-16a5-4fc0-a87b-f8815615ef99","savedPayload":{"position":{"x":34550.61749887825,"y":29513.125500171263},"targetPosition":{"x":34294.97437106376,"y":30087.594297581873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a1e09269-19e5-4dff-8aeb-66d8bf6bd96d","savedPayload":{"position":{"x":34294.97437106376,"y":30087.594297581873},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Up","code":"chart.at02hs.bollingerBand.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Up\"","id":"c516d181-ad48-49cd-a298-fddb6e91de94","savedPayload":{"position":{"x":34880.39014568893,"y":29727.362169392713},"targetPosition":{"x":34459.88109390561,"y":30194.77025937824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d57a06c7-d40b-4488-93fe-f7441dd299c6","savedPayload":{"position":{"x":34459.88109390561,"y":30194.77025937824},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H NOT Side","code":"chart.at04hs.bollingerSubChannel.slope === \"Side\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope != \"Side\"","id":"9fabe671-7d14-43b5-ba69-831f4f2a066f","savedPayload":{"position":{"x":35127.70499575345,"y":30032.837976998024},"targetPosition":{"x":34583.614143110055,"y":30347.712936148797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"177c777c-ff05-4dc0-8b6b-d663b7329938","savedPayload":{"position":{"x":34583.614143110055,"y":30347.712936148797},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H RSI > 60","code":"chart.at24hs.rsi14.value < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.rsi14.value > 60","id":"e48e0eea-8553-4baa-ab82-de8e822619b3","savedPayload":{"position":{"x":35232.973925329425,"y":30343.470555819193},"targetPosition":{"x":34654.06615516728,"y":30531.468555641797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ee231079-650d-4046-8e5b-ad3a82e09efa","savedPayload":{"position":{"x":34654.06615516728,"y":30531.468555641797},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"241ea7c4-ec8c-4f74-994f-27cdc3cc5084","savedPayload":{"position":{"x":35289.263598407466,"y":30849.634778970838},"targetPosition":{"x":34664.35817900187,"y":30727.80228253821},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b1bb2780-2f92-47da-9ea5-39d0397e7144","savedPayload":{"position":{"x":34664.35817900187,"y":30727.80228253821},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 3: 02H Down && 4H Side && 1H Medium, Steep or Extreme","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Down\" && chart.at12hs.bollingerChannel.direction === \"Down\" && chart.at04hs.bollingerSubChannel.slope === \"Side\" && (chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\")) {false} else {true}","id":"35f95b09-f037-43ba-96f9-fa9d7d677bea","savedPayload":{"position":{"x":35186.911624698034,"y":31174.495365223673},"targetPosition":{"x":34613.44451250334,"y":30917.967080169867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6d92e5f1-7164-4f38-9a56-07334aee23fd","savedPayload":{"position":{"x":34613.44451250334,"y":30917.967080169867},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2f0018b8-a386-4eb2-8cf8-b61c00af7639","savedPayload":{"position":{"x":34039.16510092277,"y":30662.160080407033},"targetPosition":{"x":33617.50526924846,"y":31130.04262069468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"ef95cbde-2d8b-4b1e-99a5-887e8ae2134c","savedPayload":{"position":{"x":34064.66251833871,"y":31147.655408084436},"targetPosition":{"x":33889.356993272086,"y":31341.668778615298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96060481-8324-4e13-808e-110537619ad7","savedPayload":{"position":{"x":33827.692335875254,"y":31119.423819500727},"targetPosition":{"x":33617.50526924846,"y":31130.04262069468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a937976d-4084-4184-a913-910b75ed6659","savedPayload":{"position":{"x":33617.50526924846,"y":31130.04262069468},"targetPosition":{"x":33217.802289890395,"y":31259.358809115663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"def5d0af-b5ee-43f9-9ea0-0b73cd37d82e","savedPayload":{"position":{"x":33217.802289890395,"y":31259.358809115663},"targetPosition":{"x":33027.197109693196,"y":31632.476242375036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"7e0c459e-9cc8-4d5a-bc57-fb82c79c09c5","savedPayload":{"position":{"x":35135.70214605619,"y":30167.516083927436},"targetPosition":{"x":35293.07724412037,"y":30440.26764173129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"e3edba7e-b9f0-4f02-8f66-ce5b9829d767","savedPayload":{"position":{"x":35922.91984041911,"y":29348.815450539747},"targetPosition":{"x":35765.484647432946,"y":29621.567567535756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"076b5c63-1619-410e-9ee5-1fa66f3d035f","savedPayload":{"position":{"x":35765.484647432946,"y":29621.567567535756},"targetPosition":{"x":35607.95729325596,"y":29894.457895979314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"094675d4-792f-4529-9f36-55540ba6c57d","savedPayload":{"position":{"x":35607.95729325596,"y":29894.457895979314},"targetPosition":{"x":35450.49478104098,"y":30167.39244502679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"7318274d-9569-419a-ba18-c3c1df7191f8","savedPayload":{"position":{"x":35450.49478104098,"y":30167.39244502679},"targetPosition":{"x":35293.07724412037,"y":30440.26764173129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"d4d2eb85-82c2-4c39-9f1f-9c865905dd5b","savedPayload":{"position":{"x":35293.07724412037,"y":30440.26764173129},"targetPosition":{"x":35288.817725527595,"y":30747.9133770426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"295179a4-3458-455d-b4de-549db3a926a8","savedPayload":{"position":{"x":35288.817725527595,"y":30747.9133770426},"targetPosition":{"x":35289.0497852532,"y":31090.402311553746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"3466c2e0-e14f-4e76-9735-651f84617051","savedPayload":{"position":{"x":35692.920333218164,"y":30268.646393535015},"targetPosition":{"x":35659.66370706001,"y":30581.829281582708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"0ecb1abe-ce06-4d16-a850-b180b6b66252","savedPayload":{"position":{"x":36605.838815369854,"y":29816.50777554093},"targetPosition":{"x":36420.67086759038,"y":30071.16215403728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"30e0b04a-1a96-4850-ae5c-f3e85da03da3","savedPayload":{"position":{"x":36420.67086759038,"y":30071.16215403728},"targetPosition":{"x":36235.36714817673,"y":30325.959128296938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"f6e4f3d5-a156-48d8-9c93-1109c5a5fca5","savedPayload":{"position":{"x":36861.988247619585,"y":30391.53865762637},"targetPosition":{"x":36548.78807948588,"y":30358.761659611344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a40f8de3-9ee1-47f7-9f91-71dd2240ab98","savedPayload":{"position":{"x":36548.78807948588,"y":30358.761659611344},"targetPosition":{"x":36235.36714817673,"y":30325.959128296938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"22980027-50ca-447a-a53c-fa84e87cfc4b","savedPayload":{"position":{"x":36235.36714817673,"y":30325.959128296938},"targetPosition":{"x":35947.5490253868,"y":30453.9215256811},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"ae0768db-6f1c-438d-af27-223b71c98b26","savedPayload":{"position":{"x":35947.5490253868,"y":30453.9215256811},"targetPosition":{"x":35659.66370706001,"y":30581.829281582708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"76c590b2-d1f8-497d-aadc-084d4500772c","savedPayload":{"position":{"x":35659.66370706001,"y":30581.829281582708},"targetPosition":{"x":35474.3107204167,"y":30836.26619004085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9fcc3e4a-8a02-4dbd-82b8-b0f10843f527","savedPayload":{"position":{"x":35474.3107204167,"y":30836.26619004085},"targetPosition":{"x":35289.0497852532,"y":31090.402311553746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"1f9b31ce-64a5-4606-ba43-cdab0eb3dece","savedPayload":{"position":{"x":35888.51870731133,"y":30897.094478356263},"targetPosition":{"x":35588.76478443183,"y":30993.81670423616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"811a932e-9ad1-454e-aa71-86c100807627","savedPayload":{"position":{"x":35588.76478443183,"y":30993.81670423616},"targetPosition":{"x":35289.0497852532,"y":31090.402311553746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"4c2c3a4f-8cca-4211-b3d1-180266f99704","savedPayload":{"position":{"x":35888.02932685479,"y":31285.56938726938},"targetPosition":{"x":35588.475187273674,"y":31188.07770374712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7da16723-66b0-44a8-80a2-32afbfc33eda","savedPayload":{"position":{"x":35588.475187273674,"y":31188.07770374712},"targetPosition":{"x":35289.0497852532,"y":31090.402311553746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"05204106-bf49-4b86-be1e-c04acfff70ff","savedPayload":{"position":{"x":35289.0497852532,"y":31090.402311553746},"targetPosition":{"x":34270.93031373407,"y":31829.561903674166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"b739c187-7a8d-4877-b35d-db44832293a9","savedPayload":{"position":{"x":34582.036710214496,"y":31878.912006201877},"targetPosition":{"x":34270.93031373407,"y":31829.561903674166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"79d58168-9a31-4fe8-9e7e-19212ea5b481","savedPayload":{"position":{"x":34611.957839823925,"y":32060.94845886817},"targetPosition":{"x":34306.356993272086,"y":32012.668778615298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4a32c55d-ae86-4918-b898-ad027b574e14","savedPayload":{"position":{"x":34456.25406941115,"y":32084.595626386963},"targetPosition":{"x":34270.93031373407,"y":31829.561903674166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"96a417b6-09d8-4b1e-9778-3bef281c7849","savedPayload":{"position":{"x":34270.93031373407,"y":31829.561903674166},"targetPosition":{"x":33027.197109693196,"y":31632.476242375036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Slow Run","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"c57b9aaa-edc1-4a24-a2f9-1eeb3eed3d5c","savedPayload":{"position":{"x":34130.26731414797,"y":32800.3400427803},"targetPosition":{"x":33790.66857191591,"y":32553.726624302923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"22d1ba82-cecd-4ebf-a9b0-c02a2dcc4385","savedPayload":{"position":{"x":33790.66857191591,"y":32553.726624302923},"targetPosition":{"x":33432.69324860659,"y":32293.801129954125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f41b282c-06b8-4a86-9c94-18173ce77526","savedPayload":{"position":{"x":33432.82333847737,"y":32294.4434055754},"targetPosition":{"x":33092.84480699051,"y":32047.383542560598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"214e21c2-bdab-4d05-91b2-02f327d177b8","savedPayload":{"position":{"x":33560.189047347376,"y":33061.25591731097},"targetPosition":{"x":33168.17755880856,"y":32910.85719093055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"401d2bc0-0193-42de-8a65-df43242eb516","savedPayload":{"position":{"x":31019.353328127647,"y":34771.29319333476},"targetPosition":{"x":30873.113188713138,"y":34459.5430677265},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b023b429-024c-46eb-86f8-6e4e23be3b3c","savedPayload":{"position":{"x":30873.113188713138,"y":34459.5430677265},"targetPosition":{"x":30730.968945388893,"y":34140.681493701086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ee7cd341-d632-47d6-9ddf-4462e6961461","savedPayload":{"position":{"x":30730.968945388893,"y":34140.681493701086},"targetPosition":{"x":30588.167033308324,"y":33817.51375204604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"5c96f85d-f36d-496f-8c82-68bdbde4456f","savedPayload":{"position":{"x":32841.61331690757,"y":33175.13217299862},"targetPosition":{"x":33168.17755880856,"y":32910.85719093055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"241d29a5-2372-4c0b-9dd1-9c74e98d8593","savedPayload":{"position":{"x":33168.17755880856,"y":32910.85719093055},"targetPosition":{"x":33099.11889863151,"y":32474.052057676712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"54a1a04f-b59d-40d9-91d6-9716c0198983","savedPayload":{"position":{"x":33573.69376797636,"y":33571.86718032515},"targetPosition":{"x":33233.80391345122,"y":33325.478360001805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"23d9abaa-63cc-4aef-abaf-7b493213cd29","savedPayload":{"position":{"x":32449.77558908902,"y":34154.4611915215},"targetPosition":{"x":32015.40384472738,"y":34108.56368300236},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"28be9fea-5e5c-4c99-b4a4-6c01a831d9ce","savedPayload":{"position":{"x":32015.40384472738,"y":34108.56368300236},"targetPosition":{"x":31568.575996973697,"y":34061.39642915175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"c59f1c98-a4e9-40c1-8690-6543baa7a966","savedPayload":{"position":{"x":32283.759517871575,"y":34582.810236984864},"targetPosition":{"x":31931.786549495515,"y":34326.11237323376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c24d0f99-6491-40b3-94d9-49f91d354f3c","savedPayload":{"position":{"x":31931.786549495515,"y":34326.11237323376},"targetPosition":{"x":31568.575996973697,"y":34061.39642915175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"d6b4d297-a5fa-4561-acb0-b8d3b891912e","savedPayload":{"position":{"x":31946.197478846712,"y":34889.8385827318},"targetPosition":{"x":31751.053079962017,"y":34472.602873182244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c3f66d39-dc88-4049-895a-378f492a7d35","savedPayload":{"position":{"x":31751.053079962017,"y":34472.602873182244},"targetPosition":{"x":31568.575996973697,"y":34061.39642915175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"e9ac7090-a4d5-409d-9432-0d422f60e6e1","savedPayload":{"position":{"x":31475.217579292843,"y":34943.29649864423},"targetPosition":{"x":31521.155688266826,"y":34508.526991908395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a05e64ed-4262-42f1-b9dc-cc14f8b27c2d","savedPayload":{"position":{"x":31521.155688266826,"y":34508.526991908395},"targetPosition":{"x":31568.575996973697,"y":34061.39642915175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div previous ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"cb158763-cb2f-494b-88ab-dafeb3825ca4","savedPayload":{"position":{"x":31046.924625195723,"y":34779.00271509945},"targetPosition":{"x":31304.05023460572,"y":34425.23837899979},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"386bbe6b-9082-47e7-b750-e0e9d16a7030","savedPayload":{"position":{"x":31304.05023460572,"y":34425.23837899979},"targetPosition":{"x":31568.575996973697,"y":34061.39642915175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"32813be2-a6cd-4e5d-9a58-87eae5b3b5e9","savedPayload":{"position":{"x":33456.2367626283,"y":34169.229931685244},"targetPosition":{"x":33390.31829204923,"y":33754.57207201343},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"264bdd5b-5246-4a3f-bd09-5c50baf57963","savedPayload":{"position":{"x":33390.31829204923,"y":33754.57207201343},"targetPosition":{"x":33233.80391345122,"y":33325.478360001805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"241d29a5-2372-4c0b-9dd1-9c74e98d8593"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"308d9cf6-beba-4d14-9b90-bb11409e3835","savedPayload":{"position":{"x":32678.163507437253,"y":36556.91105564189},"targetPosition":{"x":32834.64820004886,"y":36148.98136136614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a787ffbe-ea25-41cb-a719-de115285eead","savedPayload":{"position":{"x":32834.64820004886,"y":36148.98136136614},"targetPosition":{"x":32991.201109072026,"y":35740.89140224141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d4b41076-5b23-498d-bc3e-1ccf277a1a43","savedPayload":{"position":{"x":32739.83720167254,"y":34005.06095530531},"targetPosition":{"x":32986.689244005254,"y":33665.01100359143},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"7cb4214c-3e3e-4a70-ad14-6ae2a568f24c","savedPayload":{"position":{"x":32986.689244005254,"y":33665.01100359143},"targetPosition":{"x":33233.80391345122,"y":33325.478360001805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"241d29a5-2372-4c0b-9dd1-9c74e98d8593"}}}],"announcements":[],"id":"592ad0d7-d583-4827-8ae6-48f6ad25c1a3","savedPayload":{"position":{"x":33233.80391345122,"y":33325.478360001805},"targetPosition":{"x":33168.17755880856,"y":32910.85719093055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"580ecace-0d6d-4632-ad8d-e6dc86df51c8","savedPayload":{"position":{"x":33668.801065501335,"y":33887.456734513806},"targetPosition":{"x":33276.768273175025,"y":33736.54711405289},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bf6a5ecf-f5c8-4d13-a15c-1b567422bee0","savedPayload":{"position":{"x":34576.829412485866,"y":37000.01142562244},"targetPosition":{"x":34410.432322905384,"y":36626.06517025616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ca87de8b-af92-4d83-af59-7c71f17e1be4","savedPayload":{"position":{"x":34410.432322905384,"y":36626.06517025616},"targetPosition":{"x":34243.930379694895,"y":36251.90943343497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"d626af7e-c8bb-4e17-95e5-ba5abda158d8","savedPayload":{"position":{"x":33763.03089309385,"y":36914.47628256974},"targetPosition":{"x":34003.45132162593,"y":36583.27161248551},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"98a76d2a-1ec4-413c-85b2-59865c6e1187","savedPayload":{"position":{"x":34003.45132162593,"y":36583.27161248551},"targetPosition":{"x":34243.930379694895,"y":36251.90943343497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9406f175-4d00-436d-ab9e-27081d36611b","savedPayload":{"position":{"x":34243.930379694895,"y":36251.90943343497},"targetPosition":{"x":34286.475860589395,"y":35844.37747430465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"aef3e320-bbaf-42e5-8083-21157428bfaf","savedPayload":{"position":{"x":33126.35798120075,"y":34129.20434251816},"targetPosition":{"x":33276.768273175025,"y":33736.54711405289},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"241d29a5-2372-4c0b-9dd1-9c74e98d8593"}}}],"announcements":[],"id":"9b594083-3fb0-4dfa-ba4b-1b1ada8687fe","savedPayload":{"position":{"x":33276.768273175025,"y":33736.54711405289},"targetPosition":{"x":33233.80391345122,"y":33325.478360001805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"80d81cb5-6a3a-4eff-ad9f-5590450c7366","savedPayload":{"position":{"x":33158.365096722715,"y":32462.606975036346},"targetPosition":{"x":33092.84480699051,"y":32047.383542560598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"8d20508d-dc45-4488-8a09-814a24826d00","savedPayload":{"position":{"x":32806.905084060476,"y":32680.453294176434},"targetPosition":{"x":32744.356993272086,"y":32282.668778615298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c04c40be-cd86-4c0e-b802-681f5c47a7f7","savedPayload":{"position":{"x":32846.11743673657,"y":32387.282950915138},"targetPosition":{"x":33092.84480699051,"y":32047.383542560598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3ea826ac-fe6b-4b8c-a0dc-f830202e8306","savedPayload":{"position":{"x":33092.84480699051,"y":32047.383542560598},"targetPosition":{"x":33027.197109693196,"y":31632.476242375036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"0400f408-3b91-42fd-839b-c71d8212e22b","savedPayload":{"position":{"x":32424.640743292275,"y":32175.998602689077},"targetPosition":{"x":32653.493876842065,"y":31823.167177806845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"761d7668-7a62-4221-be67-5754f4b7b2f2","savedPayload":{"position":{"x":32352.256298910706,"y":32433.62407361041},"targetPosition":{"x":32571.508942630673,"y":32095.215305371734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"00e6ad00-1176-41ab-a1f3-52a59aa8f7cd","savedPayload":{"position":{"x":32242.00054662029,"y":31910.80310333033},"targetPosition":{"x":32653.493876842065,"y":31823.167177806845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f83a0cfd-237d-4b3f-b4f0-9fa0a71b00bb","savedPayload":{"position":{"x":32653.493876842065,"y":31823.167177806845},"targetPosition":{"x":33027.197109693196,"y":31632.476242375036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4af71378-a61f-4d1d-a1cd-6933897ef3bd","savedPayload":{"position":{"x":33027.197109693196,"y":31632.476242375036},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S8 - 4H Up","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"0b8368d3-b1b1-413b-bbeb-95641a85b80f","savedPayload":{"position":{"x":32583.02153148494,"y":30375.069170464114},"targetPosition":{"x":32890.507807742724,"y":30666.144907896156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6034fcd2-8d4d-48b8-a392-18535fa70a53","savedPayload":{"position":{"x":32890.507807742724,"y":30666.144907896156},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"5e94af5d-2be9-4ae9-ae44-2867f755a827","savedPayload":{"position":{"x":32771.60113409807,"y":30224.788572225458},"targetPosition":{"x":32985.067261121585,"y":30591.65661580369},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f811cfed-9f3e-4211-84da-066b038d0b33","savedPayload":{"position":{"x":32985.067261121585,"y":30591.65661580369},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"9d5052c6-8411-4f18-ace8-17f021dfd5e2","savedPayload":{"position":{"x":32997.279518098934,"y":30134.976526965966},"targetPosition":{"x":33098.83303822341,"y":30547.231787359233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d4f2d1aa-32fd-4345-8291-3da0a9bf3fc5","savedPayload":{"position":{"x":33098.83303822341,"y":30547.231787359233},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Up\"","id":"3347b5df-6552-43dd-8265-43bb7d87df98","savedPayload":{"position":{"x":33236.19812252272,"y":30108.997090796624},"targetPosition":{"x":33217.92836568535,"y":30533.18565473396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7a4b6d88-b433-435d-a683-6eb73780f27b","savedPayload":{"position":{"x":33217.92836568535,"y":30533.18565473396},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"3bf685d6-ac1f-4bab-a7f1-8450ee657948","savedPayload":{"position":{"x":33473.11688690986,"y":30153.501414040173},"targetPosition":{"x":33336.27708618797,"y":30555.259147958208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"22eebcad-ee09-4e3b-897e-9495bb82784d","savedPayload":{"position":{"x":33336.27708618797,"y":30555.259147958208},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Side or 1H Extreme or Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope === \"Side\" || (chart.at04hs.bollingerSubChannel.slope === \"Gentle\" && (chart.at01hs.bollingerSubChannel.slope === \"Extreme\" || chart.at01hs.bollingerSubChannel.slope === \"Side\"))","id":"d5a69ea3-5ae1-4e4b-b858-8844f20f6369","savedPayload":{"position":{"x":33688.10523565221,"y":30263.125417578416},"targetPosition":{"x":33443.773670688315,"y":30610.037447064653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"54ac9a91-76eb-4d28-9d75-bcad0008c481","savedPayload":{"position":{"x":33443.773670688315,"y":30610.037447064653},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"e84f9d0b-15fc-4656-a2ed-392304b44df3","savedPayload":{"position":{"x":33863.57761044307,"y":30428.90350360676},"targetPosition":{"x":33531.52386726751,"y":30692.94592730243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"658b7720-b18e-42d0-9cb3-7f5c71928409","savedPayload":{"position":{"x":33531.52386726751,"y":30692.94592730243},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 3: 02H Down && 4H Side && 1H Medium, Steep or Extreme","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Down\" && chart.at12hs.bollingerChannel.direction === \"Down\" && chart.at04hs.bollingerSubChannel.slope === \"Side\" && (chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\")) {false} else {true}","id":"84b0abb3-cf34-491e-9436-4fdb07ee4977","savedPayload":{"position":{"x":33985.280778200904,"y":30637.388456021126},"targetPosition":{"x":33592.38327848182,"y":30797.24063448982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f39b86b4-5a2a-470c-8503-0ee11eab51f6","savedPayload":{"position":{"x":33592.38327848182,"y":30797.24063448982},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 4: 02H Up && 02H Gentle && 3H Side","code":"chart.at02hs.percentageBandwidth.movingAverage > chart.at24hs.bollingerSubChannel.slope + chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Gentle\" && chart.at03hs.bollingerSubChannel.slope === \"Side\") {false} else {true}","id":"3bde8f4f-c2e3-413b-8df1-37aeb20a85f9","savedPayload":{"position":{"x":34043.32401464137,"y":30871.65436333817},"targetPosition":{"x":33621.38059220496,"y":30914.477414693258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"04fd8c8d-8074-4932-b3e1-56357c7829ea","savedPayload":{"position":{"x":33621.38059220496,"y":30914.477414693258},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 2: 02H, 03H, 04H, 06H, all Up && 2H Steep && 1H, 6H NOT Gentle","code":"chart.at24hs.bollingerChannel.direction + chart.at24hs.bollingerBand.slope > chart.at01hs.rsi14.value","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerSubChannel.direction === \"Up\" && chart.at03hs.bollingerSubChannel.direction === \"Up\" && chart.at04hs.bollingerSubChannel.direction === \"Up\" && chart.at06hs.bollingerSubChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Steep\" && chart.at01hs.bollingerSubChannel.slope != \"Gentle\" && chart.at06hs.bollingerSubChannel.slope != \"Gentle\") {false} else {true}","id":"cf1a034f-093e-422f-ba6f-ec4c3ce091d2","savedPayload":{"position":{"x":34030.35077514018,"y":31104.321423914676},"targetPosition":{"x":33616.07981062104,"y":31035.056200409377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"69c8d1ca-52b4-4eed-a65b-7a8a870bb46d","savedPayload":{"position":{"x":33616.07981062104,"y":31035.056200409377},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"64643171-239b-49ac-adc7-0124075eb96e","savedPayload":{"position":{"x":33198.90105550597,"y":30956.877809899306},"targetPosition":{"x":33028.14648636911,"y":31378.695917323454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"9c8b28ef-af88-416c-9262-20efbf357408","savedPayload":{"position":{"x":33028.14648636911,"y":31378.695917323454},"targetPosition":{"x":32835.90089509466,"y":31756.649802761232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"09286632-34ad-4ea0-9f01-32bd89b20900","savedPayload":{"position":{"x":34447.590158460414,"y":31232.025739290348},"targetPosition":{"x":34044.21217345816,"y":31363.108994682723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f75343e2-3c65-413b-85de-8e88a1f91e09","savedPayload":{"position":{"x":34044.21217345816,"y":31363.108994682723},"targetPosition":{"x":33640.74002460985,"y":31494.101999004426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"68074fb6-7ca9-43a7-a83c-abcd0c55148c","savedPayload":{"position":{"x":33640.74002460985,"y":31494.101999004426},"targetPosition":{"x":33239.78472574559,"y":31625.86269368105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"07f812fb-602f-4713-871d-648faa64a6ce","savedPayload":{"position":{"x":33239.78472574559,"y":31625.86269368105},"targetPosition":{"x":32835.90089509466,"y":31756.649802761232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"07c87bc6-f04b-4a08-88c3-82df8036a971","savedPayload":{"position":{"x":33850.367819499166,"y":31107.164291469344},"targetPosition":{"x":33751.92630459747,"y":31519.524189915035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9a120c5b-3fda-4ff3-89af-621d53b2e075","savedPayload":{"position":{"x":33751.92630459747,"y":31519.524189915035},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"d054b93f-3378-49e9-9e18-73373b1ec935","savedPayload":{"position":{"x":34061.47889360183,"y":31200.202061977026},"targetPosition":{"x":33848.155210901954,"y":31560.253992569105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cbc32f34-4189-4526-a323-9291e672495c","savedPayload":{"position":{"x":33848.155210901954,"y":31560.253992569105},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"562f3238-94f0-41af-8d61-f9984bc8bd0b","savedPayload":{"position":{"x":34248.89826260879,"y":31340.441558383638},"targetPosition":{"x":33943.065513621616,"y":31634.31513182773},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d5b4549d-92bd-4c3e-af81-884899aae8d9","savedPayload":{"position":{"x":33943.065513621616,"y":31634.31513182773},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Up\"","id":"ce7a4a64-743a-443d-a825-b02c25d4b55a","savedPayload":{"position":{"x":34389.59498945044,"y":31536.34634291851},"targetPosition":{"x":34013.448225311375,"y":31732.263679781754},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4b992367-9f3a-4ce3-b389-2fc84c8cca16","savedPayload":{"position":{"x":34013.448225311375,"y":31732.263679781754},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"a1c10e9c-19b9-4805-b441-ce3ec64b23a1","savedPayload":{"position":{"x":34469.42688721992,"y":31763.970288609766},"targetPosition":{"x":34053.391618664995,"y":31846.123357271776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f5f2b1bb-f847-4994-a1ab-5252c7c685c6","savedPayload":{"position":{"x":34053.391618664995,"y":31846.123357271776},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Side or 1H Extreme or Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope === \"Side\" || (chart.at04hs.bollingerSubChannel.slope === \"Gentle\" && (chart.at01hs.bollingerSubChannel.slope === \"Extreme\" || chart.at01hs.bollingerSubChannel.slope === \"Side\"))","id":"3d26867a-7ffc-4b17-a226-c2cf2d02a1ae","savedPayload":{"position":{"x":34481.870711502044,"y":32004.452875644973},"targetPosition":{"x":34059.63071301428,"y":31966.419472112397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a96f6aed-5ba0-458e-b073-a14a7030a4ce","savedPayload":{"position":{"x":34059.63071301428,"y":31966.419472112397},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"f674d92e-8b5b-4a88-9c97-c0499fea9f41","savedPayload":{"position":{"x":34425.87549450783,"y":32239.301956007203},"targetPosition":{"x":34031.64897146041,"y":32083.89092574789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b0663ef7-ad0e-44eb-8448-87c92b066de1","savedPayload":{"position":{"x":34031.64897146041,"y":32083.89092574789},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 3: 02H Down && 4H Side && 1H Medium, Steep or Extreme","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Down\" && chart.at12hs.bollingerChannel.direction === \"Down\" && chart.at04hs.bollingerSubChannel.slope === \"Side\" && (chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\")) {false} else {true}","id":"6337812b-5df1-428e-9d36-f7935dde3ca7","savedPayload":{"position":{"x":34305.98828960082,"y":32448.99884859954},"targetPosition":{"x":33971.70269044266,"y":32188.76251868252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cda16118-0ec1-4313-bb27-be56055bb89a","savedPayload":{"position":{"x":33971.70269044266,"y":32188.76251868252},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 4: 02H Up && 02H Gentle && 3H Side","code":"chart.at02hs.percentageBandwidth.movingAverage > chart.at24hs.bollingerSubChannel.slope + chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Gentle\" && chart.at03hs.bollingerSubChannel.slope === \"Side\") {false} else {true}","id":"d467380e-37f7-4d69-8384-c766fa7511ef","savedPayload":{"position":{"x":34131.9442575213,"y":32616.530009178252},"targetPosition":{"x":33884.62935458651,"y":32272.531065884734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"90afdd8d-1565-42b1-abbb-e88eb2e359db","savedPayload":{"position":{"x":33884.62935458651,"y":32272.531065884734},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 2: 02H, 03H, 04H, 06H, all Up && 2H Steep && 1H, 6H NOT Gentle","code":"chart.at24hs.bollingerChannel.direction + chart.at24hs.bollingerBand.slope > chart.at01hs.rsi14.value","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerSubChannel.direction === \"Up\" && chart.at03hs.bollingerSubChannel.direction === \"Up\" && chart.at04hs.bollingerSubChannel.direction === \"Up\" && chart.at06hs.bollingerSubChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Steep\" && chart.at01hs.bollingerSubChannel.slope != \"Gentle\" && chart.at06hs.bollingerSubChannel.slope != \"Gentle\") {false} else {true}","id":"051149b3-b815-4eb2-952c-88317a972764","savedPayload":{"position":{"x":33917.66926583683,"y":32728.305067164874},"targetPosition":{"x":33777.32415729678,"y":32328.419178658256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ac3a3676-3fc0-4eed-97c8-51fe93a65256","savedPayload":{"position":{"x":33777.32415729678,"y":32328.419178658256},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3583b309-fa26-4e63-bfb2-055d5bad14b7","savedPayload":{"position":{"x":33637.0339345046,"y":31928.112734113376},"targetPosition":{"x":33213.509077296134,"y":31949.716370342587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"1cca5dce-5617-4b2d-b103-68c7289c7912","savedPayload":{"position":{"x":33248.66251833871,"y":31922.655408084436},"targetPosition":{"x":33073.356993272086,"y":32116.668778615298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bdadf3d3-ff21-4ea1-a342-9c135a422a3b","savedPayload":{"position":{"x":33370.94219349302,"y":32092.35851956931},"targetPosition":{"x":33213.509077296134,"y":31949.716370342587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e86cdca6-99e9-487f-b824-af95cf635d1f","savedPayload":{"position":{"x":33213.509077296134,"y":31949.716370342587},"targetPosition":{"x":32835.90089509466,"y":31756.649802761232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"fa8dc2de-7299-4e00-82a7-deb31393b442","savedPayload":{"position":{"x":32835.90089509466,"y":31756.649802761232},"targetPosition":{"x":32433.371579576764,"y":31886.914337943625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"be4be272-6865-445f-81e9-320f8bfdc392","savedPayload":{"position":{"x":34967.124271760935,"y":32358.1785110076},"targetPosition":{"x":34884.7347766961,"y":32665.58211057604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"5bee76dc-6b48-47d0-92c1-be86008a0567","savedPayload":{"position":{"x":36114.12799068074,"y":32336.170693053667},"targetPosition":{"x":35806.871460174916,"y":32418.413004338316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"058c7bc3-1b46-415d-bcf6-b2b260049b34","savedPayload":{"position":{"x":35806.871460174916,"y":32418.413004338316},"targetPosition":{"x":35499.43380969467,"y":32500.74406598618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cba32e81-cca9-4056-bd59-82f986580893","savedPayload":{"position":{"x":35499.43380969467,"y":32500.74406598618},"targetPosition":{"x":35192.04380396341,"y":32583.121051172304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"72bf5a83-c129-4bcb-b196-7efbf38b3122","savedPayload":{"position":{"x":35192.04380396341,"y":32583.121051172304},"targetPosition":{"x":34884.7347766961,"y":32665.58211057604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"502b92e1-1e58-46a5-9ecf-8cc1636f0ff4","savedPayload":{"position":{"x":34884.7347766961,"y":32665.58211057604},"targetPosition":{"x":34660.02936631182,"y":32890.48337181073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"eb4ede91-3ccc-41f8-b54c-8295767f386c","savedPayload":{"position":{"x":34660.02936631182,"y":32890.48337181073},"targetPosition":{"x":34435.67151202602,"y":33115.14655163129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"39c79407-8af5-465e-af51-1c75aad45115","savedPayload":{"position":{"x":35311.11096720446,"y":32816.9272234083},"targetPosition":{"x":35063.64575113468,"y":33016.76264590724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"aa01ada7-95ad-41e6-96f7-5c31702a541e","savedPayload":{"position":{"x":36286.24106064014,"y":33145.81980834591},"targetPosition":{"x":35972.055489563856,"y":33195.34612138585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d717b269-b5ec-4198-b8c4-4191fbbc4b18","savedPayload":{"position":{"x":35972.055489563856,"y":33195.34612138585},"targetPosition":{"x":35657.673132234,"y":33244.878314280504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"5e2b89fd-d5f9-4c8a-98e1-44ff5c2844cd","savedPayload":{"position":{"x":36058.15655754124,"y":33739.29437123348},"targetPosition":{"x":35857.98050868123,"y":33492.17091282344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d715ce3c-8efb-4ff3-bac9-4339b5906a91","savedPayload":{"position":{"x":35857.98050868123,"y":33492.17091282344},"targetPosition":{"x":35657.673132234,"y":33244.878314280504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1133b940-15fd-4255-8099-8c83ebf9ab1d","savedPayload":{"position":{"x":35657.673132234,"y":33244.878314280504},"targetPosition":{"x":35360.66365230035,"y":33130.86179964265},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"e6a82789-515c-403d-a11d-9c16d7e1e2d0","savedPayload":{"position":{"x":35360.66365230035,"y":33130.86179964265},"targetPosition":{"x":35063.64575113468,"y":33016.76264590724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"2fbf4e78-500b-4e2a-876b-fec9950bfeb4","savedPayload":{"position":{"x":35063.64575113468,"y":33016.76264590724},"targetPosition":{"x":34749.50080339453,"y":33066.0137817785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7e699a39-d4bc-44d7-bb6c-7813d7d63aeb","savedPayload":{"position":{"x":34749.50080339453,"y":33066.0137817785},"targetPosition":{"x":34435.67151202602,"y":33115.14655163129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"3d73ecde-b6ca-4229-9536-fbc7f87e0d45","savedPayload":{"position":{"x":35001.972454730174,"y":33404.90881119627},"targetPosition":{"x":34718.751802473744,"y":33260.05696886418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c43b5b83-3c68-480e-b390-26c224b63bbf","savedPayload":{"position":{"x":34718.751802473744,"y":33260.05696886418},"targetPosition":{"x":34435.67151202602,"y":33115.14655163129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"1e208de6-1b0c-4754-9b10-41edc1653336","savedPayload":{"position":{"x":34723.83391273956,"y":33682.356075508505},"targetPosition":{"x":34579.63262505743,"y":33398.762441228064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2c575ff8-0704-4398-8792-34e0eeb4381f","savedPayload":{"position":{"x":34579.63262505743,"y":33398.762441228064},"targetPosition":{"x":34435.67151202602,"y":33115.14655163129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"05c05d0c-7815-464b-bbf2-f7d2820d0235","savedPayload":{"position":{"x":34435.67151202602,"y":33115.14655163129},"targetPosition":{"x":33180.75535106592,"y":32916.07101014247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"478b1483-d146-4141-b6e7-2e913d285da5","savedPayload":{"position":{"x":33367.5784322329,"y":33173.57800692712},"targetPosition":{"x":33180.75535106592,"y":32916.07101014247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"08bb3184-c06a-43b6-9463-fd922b64abbd","savedPayload":{"position":{"x":33158.957839823925,"y":33124.948458868166},"targetPosition":{"x":32853.356993272086,"y":33076.6687786153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c6b029d3-1de0-4dbf-80bd-e303ae27a2ba","savedPayload":{"position":{"x":33131.10438055651,"y":33230.608107064065},"targetPosition":{"x":33180.75535106592,"y":32916.07101014247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a4386996-dbe4-434c-818b-66ac926fc575","savedPayload":{"position":{"x":33180.75535106592,"y":32916.07101014247},"targetPosition":{"x":32433.371579576764,"y":31886.914337943625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Controlled Run","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"6938be43-dc74-4576-8b0a-8b18bd34792e","savedPayload":{"position":{"x":32052.655649535795,"y":33496.36457838122},"targetPosition":{"x":32096.65981549785,"y":33074.519171615095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"6cefcdbc-918c-4abe-99f9-5a99c391d79b","savedPayload":{"position":{"x":32096.65981549785,"y":33074.519171615095},"targetPosition":{"x":32140.64270658053,"y":32652.206682617852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"901eb16f-14dd-4fd2-81c1-b4713a1b34e0","savedPayload":{"position":{"x":32250.309062987384,"y":32649.586359950557},"targetPosition":{"x":32184.041014524384,"y":32230.18847885705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"0199babe-dfd7-4f18-b9d7-3b73ade997fd","savedPayload":{"position":{"x":31582.494012962958,"y":32962.937014157265},"targetPosition":{"x":31410.280046457636,"y":32575.275710033362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"89e97633-9b3e-42ba-9cf6-bf29d6383a72","savedPayload":{"position":{"x":35114.68579910982,"y":35351.53563650537},"targetPosition":{"x":34955.055100783706,"y":34993.54246316036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"971da4c6-325b-4c78-a025-95dbd138bbc4","savedPayload":{"position":{"x":34955.055100783706,"y":34993.54246316036},"targetPosition":{"x":34795.109639340524,"y":34635.50799960973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2af1c651-e988-4ae0-92a3-d0918b8a1cfe","savedPayload":{"position":{"x":34795.109639340524,"y":34635.50799960973},"targetPosition":{"x":34634.92973533252,"y":34277.38989257793},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"4e18019c-6173-4b68-b709-174bc220cd55","savedPayload":{"position":{"x":31120.854325706285,"y":32749.006422256185},"targetPosition":{"x":31410.280046457636,"y":32575.275710033362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"a8860a5a-66b5-41f0-8a6c-dac7bf971c9d","savedPayload":{"position":{"x":30218.098378964016,"y":31775.44357488877},"targetPosition":{"x":30641.420921935773,"y":31788.395864739927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"690aeb6d-75ec-45c9-b321-9d943d84df5f","savedPayload":{"position":{"x":30641.420921935773,"y":31788.395864739927},"targetPosition":{"x":31065.15767239706,"y":31801.060086999303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"d691ad30-4129-48d1-9b75-2b2337e409d2","savedPayload":{"position":{"x":30312.735304700313,"y":31410.31946547273},"targetPosition":{"x":30688.782681018638,"y":31605.692657427535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"30880b5e-f66a-4d5a-b112-14bcc8bb9ac9","savedPayload":{"position":{"x":30688.782681018638,"y":31605.692657427535},"targetPosition":{"x":31065.15767239706,"y":31801.060086999303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"8d66b5bd-521c-4d19-9fc0-baa4fb54ad84","savedPayload":{"position":{"x":30556.44880964036,"y":31122.5653875293},"targetPosition":{"x":30810.690604022504,"y":31461.749653777068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c4298d6d-c635-49fe-a517-0dc19531c919","savedPayload":{"position":{"x":30810.690604022504,"y":31461.749653777068},"targetPosition":{"x":31065.15767239706,"y":31801.060086999303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"67b51901-a5fe-4fad-aad4-fc4d756b09cc","savedPayload":{"position":{"x":30900.789650854644,"y":30969.119767215772},"targetPosition":{"x":30982.937053526082,"y":31385.017133242192},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b051770c-7c9c-4636-86c8-d3b419f9a8bd","savedPayload":{"position":{"x":30982.937053526082,"y":31385.017133242192},"targetPosition":{"x":31065.15767239706,"y":31801.060086999303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"8d54874e-6c21-434a-80fa-492bf2a9be2b","savedPayload":{"position":{"x":31276.64844988148,"y":30980.361588941225},"targetPosition":{"x":31171.060852877814,"y":31390.702278688343},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9aa25c88-a620-42f1-b1e8-403c5c8718b1","savedPayload":{"position":{"x":31171.060852877814,"y":31390.702278688343},"targetPosition":{"x":31065.15767239706,"y":31801.060086999303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Down && NOT Side","code":"chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Down\" && chart.at01hs.bollingerSubChannel.slope != \"Side\"","id":"e8c97495-8098-4209-a220-6c399baba0f3","savedPayload":{"position":{"x":31610.0599232527,"y":31161.58973768663},"targetPosition":{"x":31338.32832705977,"y":31477.72508842297},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f39ad55a-1988-4ac8-9d5c-99054f951179","savedPayload":{"position":{"x":31338.32832705977,"y":31477.72508842297},"targetPosition":{"x":31065.15767239706,"y":31801.060086999303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"abaf1d9b-b5f9-4f8f-9a59-10936c3ea7b1","savedPayload":{"position":{"x":31065.15767239706,"y":31801.060086999303},"targetPosition":{"x":31237.76485603842,"y":32188.236450221637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"f9636b68-93f0-4100-8046-1d62eed73501","savedPayload":{"position":{"x":31237.76485603842,"y":32188.236450221637},"targetPosition":{"x":31410.280046457636,"y":32575.275710033362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"274cc7b8-9ab0-4f9a-9302-3357cfcac9da"}}}],"announcements":[],"id":"b1d129c5-5f5e-4b1a-a2d6-b79561d2a6ce","savedPayload":{"position":{"x":31410.280046457636,"y":32575.275710033362},"targetPosition":{"x":31797.26417642712,"y":32402.646659011032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"640cd6a8-a447-43ca-84f9-7dc5e6c8c826","savedPayload":{"position":{"x":30847.41292297006,"y":33144.808922085795},"targetPosition":{"x":30998.534423684807,"y":32747.451613870147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"9502bdd5-310a-4048-81ca-1eb0afe3c99d","savedPayload":{"position":{"x":30205.803426783637,"y":34001.091193026725},"targetPosition":{"x":30249.917950331896,"y":33577.896743108766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cb42b9eb-16cb-4bb4-af70-570fc4d1cd29","savedPayload":{"position":{"x":30249.917950331896,"y":33577.896743108766},"targetPosition":{"x":30294.134801020176,"y":33154.57222324627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"da7a29f2-93be-4ce8-aeb0-f286b5710891","savedPayload":{"position":{"x":29796.111617502072,"y":33843.85742346663},"targetPosition":{"x":30044.979866313377,"y":33499.24970649383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b4748a9d-7f41-4ce0-92ea-267488fd2e02","savedPayload":{"position":{"x":30044.979866313377,"y":33499.24970649383},"targetPosition":{"x":30294.134801020176,"y":33154.57222324627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"792355fa-6601-4a41-b673-b814127b3524","savedPayload":{"position":{"x":29519.96605719332,"y":33502.923264063706},"targetPosition":{"x":29906.846942045566,"y":33328.73011607854},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4cd7afea-ce88-4111-b74e-dc48e34bcee5","savedPayload":{"position":{"x":29906.846942045566,"y":33328.73011607854},"targetPosition":{"x":30294.134801020176,"y":33154.57222324627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"835d94b1-7b62-43bc-bbda-34184c5a5410","savedPayload":{"position":{"x":29451.262472325034,"y":33070.381351734206},"targetPosition":{"x":29872.476892943403,"y":33112.352507651274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"66c6c8dc-f8b2-4534-aeb1-5f7aea412564","savedPayload":{"position":{"x":29872.476892943403,"y":33112.352507651274},"targetPosition":{"x":30294.134801020176,"y":33154.57222324627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Down && NOT Side or Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Down\" && chart.at01hs.bollingerSubChannel.slope != \"Side\" && chart.at01hs.bollingerSubChannel.slope != \"Gentle\"","id":"4734e468-3fd1-4b7e-8361-66dea0f1d3c1","savedPayload":{"position":{"x":29608.402791503686,"y":32660.871196158085},"targetPosition":{"x":29951.00436379901,"y":32907.53037466467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b9f90ab7-e386-4fa3-a326-d99ce319edcd","savedPayload":{"position":{"x":29951.00436379901,"y":32907.53037466467},"targetPosition":{"x":30294.134801020176,"y":33154.57222324627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"26ef5972-8cc4-4b0d-92a4-b7da565b84b4","savedPayload":{"position":{"x":30294.134801020176,"y":33154.57222324627},"targetPosition":{"x":30681.667674684573,"y":32980.164487420945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"9be98459-d007-4f66-94ac-cc7b6c6ad81c","savedPayload":{"position":{"x":30681.667674684573,"y":32980.164487420945},"targetPosition":{"x":30998.534423684807,"y":32747.451613870147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"274cc7b8-9ab0-4f9a-9302-3357cfcac9da"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","code":"chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"c959c1b6-aec3-4db7-a572-477f1ea2c132","savedPayload":{"position":{"x":29433.709225515253,"y":32793.11947467331},"targetPosition":{"x":29820.425136437625,"y":32619.15623349406},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"31460537-bb42-499a-9645-fca83618f4a5","savedPayload":{"position":{"x":29820.425136437625,"y":32619.15623349406},"targetPosition":{"x":30207.276664433924,"y":32445.696257695414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"b3e36006-93f4-4852-a7a7-d612a7e7ec27","savedPayload":{"position":{"x":29423.284124799575,"y":32145.37524164802},"targetPosition":{"x":29812.2635139139,"y":32295.247107792475},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b8fe60bd-1dbd-458d-bdfd-1accfdab0b7c","savedPayload":{"position":{"x":29812.2635139139,"y":32295.247107792475},"targetPosition":{"x":30207.276664433924,"y":32445.696257695414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"6b79a9e3-796e-4db6-8a5c-0bc0bd875f45","savedPayload":{"position":{"x":29863.249250356712,"y":31674.039657913658},"targetPosition":{"x":30035.18086627339,"y":32059.80702167967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1d09d25e-54eb-4d39-bea6-44f8492a2d10","savedPayload":{"position":{"x":30035.18086627339,"y":32059.80702167967},"targetPosition":{"x":30207.276664433924,"y":32445.696257695414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f3ce7cba-7352-4634-a05d-07399ba679f2","savedPayload":{"position":{"x":30207.276664433924,"y":32445.696257695414},"targetPosition":{"x":30603.028520115917,"y":32596.356054088126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"23ebc628-449c-43d8-97a2-28c23bb4dda7","savedPayload":{"position":{"x":30603.028520115917,"y":32596.356054088126},"targetPosition":{"x":30998.534423684807,"y":32747.451613870147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"b1d129c5-5f5e-4b1a-a2d6-b79561d2a6ce"}}}],"announcements":[],"id":"0995a46a-7564-4e4a-bdf9-d1dd437c75c6","savedPayload":{"position":{"x":30998.534423684807,"y":32747.451613870147},"targetPosition":{"x":31410.280046457636,"y":32575.275710033362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"12d58077-9b90-44f6-9d1d-5247aad7b0a4","savedPayload":{"position":{"x":30550.04180271156,"y":33329.80692424424},"targetPosition":{"x":30593.773775288653,"y":32906.46681785033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"af3238a0-9671-4ef7-90d8-802f9255d298","savedPayload":{"position":{"x":34353.31566433633,"y":36371.478113298595},"targetPosition":{"x":34107.73400761102,"y":36065.577333894784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2191cdaf-d396-458b-80e3-d67c69976c29","savedPayload":{"position":{"x":34107.73400761102,"y":36065.577333894784},"targetPosition":{"x":33865.53761248559,"y":35764.117352789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"fa54d65e-9ed1-42f1-bcfe-c774607c7ae3","savedPayload":{"position":{"x":33781.1348043335,"y":36545.510360363085},"targetPosition":{"x":33823.36067956762,"y":36154.932202560594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"de06b55c-392c-4032-b8a9-b1810881be63","savedPayload":{"position":{"x":33823.36067956762,"y":36154.932202560594},"targetPosition":{"x":33865.53761248559,"y":35764.117352789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Up || Side, Gentle or Medium","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Up\" || chart.at01hs.bollingerSubChannel.slope === \"Side\" || chart.at01hs.bollingerSubChannel.slope === \"Gentle\" || chart.at01hs.bollingerSubChannel.slope === \"Medium\"","id":"4eca07e4-a6af-46c8-8099-fd4599755539","savedPayload":{"position":{"x":33253.70014218347,"y":36259.27754119686},"targetPosition":{"x":33559.59724286728,"y":36011.788615334415},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a6ee99c3-005b-4b96-be05-579230e6af8b","savedPayload":{"position":{"x":33559.59724286728,"y":36011.788615334415},"targetPosition":{"x":33865.53761248559,"y":35764.117352789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9fb58e58-feea-47c1-b7a6-0da4777ff32f","savedPayload":{"position":{"x":33865.53761248559,"y":35764.117352789},"targetPosition":{"x":33915.59035931588,"y":35356.68995455061},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"3ca96593-db50-40f0-a191-bfdffe79fdf8","savedPayload":{"position":{"x":30172.077781119075,"y":32863.606917906094},"targetPosition":{"x":30593.773775288653,"y":32906.46681785033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"b1d129c5-5f5e-4b1a-a2d6-b79561d2a6ce"}}}],"announcements":[],"id":"274cc7b8-9ab0-4f9a-9302-3357cfcac9da","savedPayload":{"position":{"x":30593.773775288653,"y":32906.46681785033},"targetPosition":{"x":30998.534423684807,"y":32747.451613870147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5969717f-fd1e-4579-a80b-5e66723412a9","savedPayload":{"position":{"x":31934.3203114876,"y":32573.628726629446},"targetPosition":{"x":32184.041014524384,"y":32230.18847885705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"ab76811a-5688-40bb-bcc9-dc754dea83c1","savedPayload":{"position":{"x":31829.79809078839,"y":32538.006502876146},"targetPosition":{"x":31767.25,"y":32140.22198731501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3add1401-37ae-4ab1-9bfd-bd2409be15ee","savedPayload":{"position":{"x":31765.00069416873,"y":32296.572495929217},"targetPosition":{"x":32184.041014524384,"y":32230.18847885705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"455d4f49-eb65-49f8-a6d5-2bdd44e8bbac","savedPayload":{"position":{"x":32184.041014524384,"y":32230.18847885705},"targetPosition":{"x":32433.371579576764,"y":31886.914337943625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"1805fb84-f9aa-4376-b68b-7d009c1f35ad","savedPayload":{"position":{"x":31614.787231440176,"y":31844.739900906556},"targetPosition":{"x":32030.194776844528,"y":31756.418543665284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"53916478-d8e6-4a30-8c30-7eb64eab5232","savedPayload":{"position":{"x":31726.14930563862,"y":32262.17728231012},"targetPosition":{"x":31945.401949358587,"y":31923.768514071446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ebcdfc8a-8348-4b1d-ad3a-630bb68bcf95","savedPayload":{"position":{"x":31673.637620746475,"y":31525.40620600377},"targetPosition":{"x":32030.194776844528,"y":31756.418543665284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0ab9c0ab-a710-4da3-adb1-9e2f837da5fc","savedPayload":{"position":{"x":32030.194776844528,"y":31756.418543665284},"targetPosition":{"x":32433.371579576764,"y":31886.914337943625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a1b63f90-0ec5-4eb4-a51e-88852cc95049","savedPayload":{"position":{"x":32433.371579576764,"y":31886.914337943625},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S4 - 8H Up","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"565db073-2544-4f1e-8ffd-450fb4e10feb","savedPayload":{"position":{"x":33016.108423138045,"y":30708.61650625706},"targetPosition":{"x":33001.605706827475,"y":31117.1437175863},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1f26cf4a-76fc-4186-9b3b-9010f9f3da7c","savedPayload":{"position":{"x":33001.605706827475,"y":31117.1437175863},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"f288ec4c-d242-4138-a291-4e97fcec4e8e","savedPayload":{"position":{"x":33294.14747935223,"y":30768.08538063477},"targetPosition":{"x":33140.33062460357,"y":31147.607021558273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"eb5bf914-8163-453a-afa5-95f22ba39ead","savedPayload":{"position":{"x":33140.33062460357,"y":31147.607021558273},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"0638ff08-302c-488f-8a8b-be0cd0454e49","savedPayload":{"position":{"x":33536.5418717862,"y":30918.780123840108},"targetPosition":{"x":33262.102839579675,"y":31222.758503492238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0c8e03c5-c1b2-4aaf-bddc-874c50cfbbba","savedPayload":{"position":{"x":33262.102839579675,"y":31222.758503492238},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"8H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at08hs.bollingerChannel.direction === \"Up\"","id":"77dbd8ad-81fc-4394-93d4-e84e931970f7","savedPayload":{"position":{"x":33711.37061669641,"y":31142.31816964065},"targetPosition":{"x":33349.696532391084,"y":31334.167601834975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"78fae417-cc69-4a59-8edf-5d2e7102b50f","savedPayload":{"position":{"x":33349.696532391084,"y":31334.167601834975},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"12H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at12hs.bollingerChannel.direction === \"Down\"","id":"f513cfb2-d7b3-442b-8d72-8bedb02e7ddf","savedPayload":{"position":{"x":33799.103478253135,"y":31412.55479282884},"targetPosition":{"x":33393.62871134569,"y":31469.252426709958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4ab49bb6-b9d3-44a1-8fa5-6d5f7b9d3b3f","savedPayload":{"position":{"x":33393.62871134569,"y":31469.252426709958},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"09bdc89a-fa30-46cc-9da0-aa16844e829b","savedPayload":{"position":{"x":33789.194999211526,"y":31696.0948743394},"targetPosition":{"x":33388.694866665915,"y":31611.066158039575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2aae14ee-14b3-4c94-9394-d64432517632","savedPayload":{"position":{"x":33388.694866665915,"y":31611.066158039575},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H NOT Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope != \"Extreme\"","id":"a2059ed1-a903-483c-a5b1-a44203fb670f","savedPayload":{"position":{"x":33682.80126272068,"y":31959.687980869192},"targetPosition":{"x":33335.44879159541,"y":31742.939959405492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2ca6efe4-43ac-45a1-ba84-5215d33f32a6","savedPayload":{"position":{"x":33335.44879159541,"y":31742.939959405492},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Deviation > 40","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerBand.deviation > 25","id":"3b0663ea-9168-4101-bd49-a4fa14473dc7","savedPayload":{"position":{"x":33492.81527571664,"y":32171.088329177917},"targetPosition":{"x":33240.16363723661,"y":31848.699229038637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6f3289e9-c257-4953-ae25-664416db52a7","savedPayload":{"position":{"x":33240.16363723661,"y":31848.699229038637},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"977e6e41-dca1-4b42-9e82-3e2eeae3c220","savedPayload":{"position":{"x":32987.75009839662,"y":31526.263027016277},"targetPosition":{"x":32607.26331447191,"y":31676.362232420466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"260de0f8-58ff-477f-aadb-f61a4043e3a8","savedPayload":{"position":{"x":32607.26331447191,"y":31676.362232420466},"targetPosition":{"x":32218.203346952138,"y":31802.987156123374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"a2b6bf13-42e1-428f-9691-42be919fa8c1","savedPayload":{"position":{"x":33677.75850723514,"y":32546.480820378853},"targetPosition":{"x":33313.07984357831,"y":32360.792558224523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"05892d30-611b-4f6e-93ae-3f484b208fe5","savedPayload":{"position":{"x":33313.07984357831,"y":32360.792558224523},"targetPosition":{"x":32948.32328257087,"y":32175.005781011547},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f6bb3530-fc04-47bb-b335-1f90463c6a04","savedPayload":{"position":{"x":32948.32328257087,"y":32175.005781011547},"targetPosition":{"x":32583.454684770324,"y":31989.358256691274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"3046ad00-d3de-4458-80db-287144ff86fa","savedPayload":{"position":{"x":32583.454684770324,"y":31989.358256691274},"targetPosition":{"x":32218.203346952138,"y":31802.987156123374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"3847310d-3d70-43f6-85a1-8a62eec1d4d3","savedPayload":{"position":{"x":33387.42539740356,"y":32116.794527589384},"targetPosition":{"x":33018.0279860199,"y":32292.436249824437},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"680fec1e-3d4c-4b3b-82a6-0f45a34f9776","savedPayload":{"position":{"x":33018.0279860199,"y":32292.436249824437},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"ffbb6568-c112-46de-8097-fbf993a8232f","savedPayload":{"position":{"x":33465.571106445495,"y":32425.43478155105},"targetPosition":{"x":33056.74325525523,"y":32446.256555772732},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f0830878-6dd9-4657-a0b5-906ff9296559","savedPayload":{"position":{"x":33056.74325525523,"y":32446.256555772732},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"d7a8fc7d-57a2-4340-bb12-627c667324e6","savedPayload":{"position":{"x":33419.45900626823,"y":32740.505273158957},"targetPosition":{"x":33033.752962097045,"y":32603.794747800173},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e841acd3-9785-49f5-be08-5aa63d3df039","savedPayload":{"position":{"x":33033.752962097045,"y":32603.794747800173},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"8H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at08hs.bollingerChannel.direction === \"Up\"","id":"60872ff6-a88d-4e3c-9069-4337d9e77653","savedPayload":{"position":{"x":33256.14231973845,"y":33014.56892092391},"targetPosition":{"x":32952.065637836226,"y":32740.884130165858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"969eebbc-1e68-4dc7-bb42-5fd1e92648b3","savedPayload":{"position":{"x":32952.065637836226,"y":32740.884130165858},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"12H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at12hs.bollingerChannel.direction === \"Down\"","id":"e1f6e5b8-70b1-44b9-b127-099a28b39e5f","savedPayload":{"position":{"x":33000.20306486545,"y":33205.3420591731},"targetPosition":{"x":32824.05870270297,"y":32836.33950328082},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1d87e62c-73ff-434b-ac60-e7afa7035b78","savedPayload":{"position":{"x":32824.05870270297,"y":32836.33950328082},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"4dbcbf0e-b029-40db-9b3e-422ccb1d1642","savedPayload":{"position":{"x":32690.53788200545,"y":33283.801184534575},"targetPosition":{"x":32669.20586962084,"y":32875.59460029089},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ed71b78d-b409-451d-9e23-72fde4c6ac59","savedPayload":{"position":{"x":32669.20586962084,"y":32875.59460029089},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Deviation > 40","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerBand.deviation > 25","id":"ca95ffdd-a14f-4985-84b7-2a482eb8091d","savedPayload":{"position":{"x":32374.860433575843,"y":33237.99653746514},"targetPosition":{"x":32511.293905353414,"y":32852.60908935485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"80a35c8a-7650-442f-82de-b9acb0c09988","savedPayload":{"position":{"x":32511.293905353414,"y":32852.60908935485},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"22a72082-528a-440b-8e3f-374d612c4d51","savedPayload":{"position":{"x":32647.89809256855,"y":32466.81884324842},"targetPosition":{"x":32343.994367056974,"y":32192.577730607023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"db4a7c92-b806-4329-9300-9b83a3ad036c","savedPayload":{"position":{"x":32267.555525066622,"y":32166.208616784148},"targetPosition":{"x":32092.25,"y":32360.22198731501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6bebda83-5fa6-40c6-8b9d-193636aa5ff8","savedPayload":{"position":{"x":32353.99815107377,"y":32397.54225711615},"targetPosition":{"x":32343.994367056974,"y":32192.577730607023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c9d98dc4-e354-4357-99c8-eaa829f874d7","savedPayload":{"position":{"x":32343.994367056974,"y":32192.577730607023},"targetPosition":{"x":32218.203346952138,"y":31802.987156123374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"0bf02e1f-d661-437b-85b0-b31e57707199","savedPayload":{"position":{"x":32218.203346952138,"y":31802.987156123374},"targetPosition":{"x":31854.611783869535,"y":31617.461964697784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"283c986f-f9e6-4db2-a7cf-31df9bc42e21","savedPayload":{"position":{"x":33262.348283073654,"y":33668.26110625135},"targetPosition":{"x":32996.16226727139,"y":33821.48103036987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"7e24efcb-8efd-4f21-846e-c1c9be5e4dc0","savedPayload":{"position":{"x":35661.5330621917,"y":32460.96477728643},"targetPosition":{"x":35395.80978722638,"y":32307.691972974666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"151ea590-9f96-4956-a7e8-1ae8ed2497b1","savedPayload":{"position":{"x":35395.80978722638,"y":32307.691972974666},"targetPosition":{"x":35129.93735813902,"y":32154.346004055602},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"af5a4bfb-1676-4497-ad6f-8da3ad1154a1","savedPayload":{"position":{"x":35129.93735813902,"y":32154.346004055602},"targetPosition":{"x":34864.21598400471,"y":32001.112915297275},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"0c8cf0e4-2be0-4010-b296-400c3413dbfe","savedPayload":{"position":{"x":34864.21598400471,"y":32001.112915297275},"targetPosition":{"x":32996.16226727139,"y":33821.48103036987},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"80a6f7ab-286d-4f4e-af25-ba3f60432087","savedPayload":{"position":{"x":32996.16226727139,"y":33821.48103036987},"targetPosition":{"x":32689.147179694144,"y":33821.48199786943},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6ccb7dd5-015c-4d99-855a-4c51c8d31c1a","savedPayload":{"position":{"x":32689.147179694144,"y":33821.48199786943},"targetPosition":{"x":32382.725700846328,"y":33821.60989461435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"cf1fe591-e95e-49b1-9917-696fd2b69ea4","savedPayload":{"position":{"x":33184.71999818604,"y":34214.11641349901},"targetPosition":{"x":32879.1540673357,"y":34182.00430123203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"ac6e1c39-95ac-485c-b9c8-dddefff2fe1c","savedPayload":{"position":{"x":33634.126653251245,"y":35099.63359407601},"targetPosition":{"x":33383.31078816607,"y":34919.700064680575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6d2069d0-7a7b-478c-b682-81e52abc066a","savedPayload":{"position":{"x":33382.25050178636,"y":34920.44290986782},"targetPosition":{"x":33132.43780807961,"y":34740.48684695961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"bde76cfe-6402-4245-883b-9f5b50db5c52","savedPayload":{"position":{"x":33082.77997596954,"y":35350.85551519918},"targetPosition":{"x":33103.89082700777,"y":35043.21827334428},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"697829a6-b00e-4b70-99a5-c109263e5ca3","savedPayload":{"position":{"x":33101.38914931789,"y":35045.366536668065},"targetPosition":{"x":33132.43780807961,"y":34740.48684695961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b43a31b0-a9ed-4e41-ae4c-427924f40c59","savedPayload":{"position":{"x":33129.1780223032,"y":34742.82310819165},"targetPosition":{"x":33004.26762261222,"y":34462.6015445682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"1c6e5b5b-6ac5-4693-94dd-45c76fdf2b96","savedPayload":{"position":{"x":33003.93138154689,"y":34462.70823485492},"targetPosition":{"x":32879.1540673357,"y":34182.00430123203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"0b1c973a-ce4a-47bd-90a1-d306b30d12aa","savedPayload":{"position":{"x":32878.67130061081,"y":34182.98753017021},"targetPosition":{"x":32630.566126111215,"y":34002.25393399775},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"04dc4bc7-dcaf-4b43-8418-e050d05c8952","savedPayload":{"position":{"x":32630.39594770166,"y":34002.13102715508},"targetPosition":{"x":32382.725700846328,"y":33821.60989461435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"eee941cf-f98c-4dd0-92fa-815fe2c10865","savedPayload":{"position":{"x":32571.120782001806,"y":34406.17252734529},"targetPosition":{"x":32476.87909012684,"y":34113.938241438496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ae433b8c-e6fd-4241-bbe3-2a2cd27ce009","savedPayload":{"position":{"x":32476.82545458858,"y":34113.76990798757},"targetPosition":{"x":32382.725700846328,"y":33821.60989461435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"117adca4-9252-45f2-84b6-6391fbfcb63b","savedPayload":{"position":{"x":32192.68544723151,"y":34405.61314236691},"targetPosition":{"x":32287.633187524032,"y":34113.59824941377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"67dd3e52-2d23-48a0-a7d0-56f7b60e6832","savedPayload":{"position":{"x":32287.559875555915,"y":34113.432909927375},"targetPosition":{"x":32382.725700846328,"y":33821.60989461435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7165c7fa-fb68-40ee-bfb7-2317a0defd40","savedPayload":{"position":{"x":32382.897645029716,"y":33821.819273275294},"targetPosition":{"x":31662.56404301089,"y":32829.66381673354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"b13321e7-009a-4c2e-bc8c-f1b0bdb4dd7b","savedPayload":{"position":{"x":31614.527267611713,"y":33132.96245280527},"targetPosition":{"x":31662.56404301089,"y":32829.66381673354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"9331e3ec-0b89-478a-9910-36fac6843934","savedPayload":{"position":{"x":31726.85084655184,"y":32860.50166756788},"targetPosition":{"x":31421.25,"y":32812.22198731501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5456a919-1f27-4bc1-80de-14aeb1dd2010","savedPayload":{"position":{"x":31414.04315714644,"y":33010.32122662356},"targetPosition":{"x":31662.56404301089,"y":32829.66381673354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2e4981ca-a802-4941-8ed8-563a3e6950ed","savedPayload":{"position":{"x":31662.56404301089,"y":32829.66381673354},"targetPosition":{"x":31854.611783869535,"y":31617.461964697784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Slow Run","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"53f5b5c3-ba67-453c-9c9f-4ce573a45cf7","savedPayload":{"position":{"x":30500.89247017438,"y":32459.578297266748},"targetPosition":{"x":30819.036958787143,"y":32201.72019233247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"9f500e15-05a0-49f2-acb6-22dc52e3a776","savedPayload":{"position":{"x":30819.036958787143,"y":32201.72019233247},"targetPosition":{"x":31150.975630250297,"y":31932.866520667907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"48f10387-f326-4021-ae7e-bf0c89f12f0e","savedPayload":{"position":{"x":31208.328337171784,"y":32013.008173556012},"targetPosition":{"x":31448.949834379793,"y":31681.57948129423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"d2f712ac-98dc-41dc-b29e-260334b7cd69","savedPayload":{"position":{"x":30514.18167577269,"y":31761.2170374418},"targetPosition":{"x":30661.02568754195,"y":31379.194283221575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"629a5ecb-7ade-4453-89bb-1d1c5d5f96d9","savedPayload":{"position":{"x":31452.62521613617,"y":35704.649175755076},"targetPosition":{"x":31306.38507672166,"y":35392.89905014682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c9b1b192-1698-44a7-a0f5-20d21088f280","savedPayload":{"position":{"x":31306.38507672166,"y":35392.89905014682},"targetPosition":{"x":31164.240833397416,"y":35074.037476121404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0402e263-ac5c-4546-be68-8f33fdbf8666","savedPayload":{"position":{"x":31164.240833397416,"y":35074.037476121404},"targetPosition":{"x":31021.438921316847,"y":34750.86973446636},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"1fc1bb7a-a52b-4ce2-b17b-95194de42c8a","savedPayload":{"position":{"x":30296.68637656971,"y":31322.79310193876},"targetPosition":{"x":30661.02568754195,"y":31379.194283221575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"a0b6604b-8744-468d-8eb8-37266a7790bb","savedPayload":{"position":{"x":30438.724191200963,"y":29978.473640966942},"targetPosition":{"x":30695.912811285634,"y":30296.608544153656},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f7a6659c-b0db-4966-875f-4f3c22448e5f","savedPayload":{"position":{"x":30695.912811285634,"y":30296.608544153656},"targetPosition":{"x":30953.245579650113,"y":30614.81281670587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"bba2d293-88c4-492f-94af-1b9619f740fd","savedPayload":{"position":{"x":30825.47049961038,"y":29806.19925833095},"targetPosition":{"x":30889.3671042988,"y":30210.385421398318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"20aebaee-eb59-4c3f-8c59-39349e032515","savedPayload":{"position":{"x":30889.3671042988,"y":30210.385421398318},"targetPosition":{"x":30953.245579650113,"y":30614.81281670587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"8419c8f8-b2b3-4d98-99e8-2506e40bdb02","savedPayload":{"position":{"x":31245.840967273478,"y":29850.337168761183},"targetPosition":{"x":31099.60147314376,"y":30232.46849471163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0d40d31a-b3d2-4213-9ec0-16dfad84800c","savedPayload":{"position":{"x":31099.60147314376,"y":30232.46849471163},"targetPosition":{"x":30953.245579650113,"y":30614.81281670587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"1f20f276-1067-413d-9855-d5a8c3bf4dd5","savedPayload":{"position":{"x":31588.106924305583,"y":30098.824371705417},"targetPosition":{"x":31270.79628296104,"y":30356.84452509362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5a699f92-494e-4078-b641-1c9c57ffc366","savedPayload":{"position":{"x":31270.79628296104,"y":30356.84452509362},"targetPosition":{"x":30953.245579650113,"y":30614.81281670587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"8522cf28-0d47-4049-a2d0-f859792cc083","savedPayload":{"position":{"x":31745.815505511848,"y":30486.82650760695},"targetPosition":{"x":31356.715958954213,"y":30550.219742514226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0c5c7d7b-590f-4902-b44d-8609741d2b0c","savedPayload":{"position":{"x":31356.715958954213,"y":30550.219742514226},"targetPosition":{"x":30953.245579650113,"y":30614.81281670587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"aa9bda47-780e-48ec-97bf-52f713be6d1c","savedPayload":{"position":{"x":30953.245579650113,"y":30614.81281670587},"targetPosition":{"x":30807.09852676496,"y":30997.07900762244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"0905efc2-d8c9-4b8b-b09f-de915fca26e4","savedPayload":{"position":{"x":30807.09852676496,"y":30997.07900762244},"targetPosition":{"x":30661.02568754195,"y":31379.194283221575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"dc4b92b2-3855-4cc7-84f5-20cc259c1634"}}}],"announcements":[],"id":"e6304ea5-e683-49c1-8e84-e2bc119565fa","savedPayload":{"position":{"x":30661.02568754195,"y":31379.194283221575},"targetPosition":{"x":31068.629399090474,"y":31535.33551862273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"73870f3c-4fc8-464c-be6a-f5e397ee044e","savedPayload":{"position":{"x":29901.249484375345,"y":31377.094167262778},"targetPosition":{"x":30274.70605518238,"y":31210.2377720679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bc212a30-b2e9-435c-84a8-e505019c0570","savedPayload":{"position":{"x":28893.406176646076,"y":31520.778332079593},"targetPosition":{"x":29212.07710550547,"y":31264.012686794093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"19c71956-4d1e-4355-826e-5bc25d09fdc3","savedPayload":{"position":{"x":29212.07710550547,"y":31264.012686794093},"targetPosition":{"x":29531.831887857006,"y":31006.50215332862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"31e8935e-497f-47eb-9466-900faced609c","savedPayload":{"position":{"x":28721.087664239905,"y":31134.011329246656},"targetPosition":{"x":29125.8628289353,"y":31070.501110683115},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"506df2ab-b891-4709-84e6-b773c8743abf","savedPayload":{"position":{"x":29125.8628289353,"y":31070.501110683115},"targetPosition":{"x":29531.831887857006,"y":31006.50215332862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"c1e44382-1537-453b-9f6c-52ef913228aa","savedPayload":{"position":{"x":28765.22117439923,"y":30713.57003149922},"targetPosition":{"x":29147.944257952,"y":30860.18192434744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"928db494-0024-4ed4-a407-84087efb0704","savedPayload":{"position":{"x":29147.944257952,"y":30860.18192434744},"targetPosition":{"x":29531.831887857006,"y":31006.50215332862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"8bae0609-ccff-480d-b382-b56f22ec8dc4","savedPayload":{"position":{"x":29013.97083829324,"y":30370.97096869017},"targetPosition":{"x":29272.351997056765,"y":30688.807256238648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"98ac2a8f-4541-46de-8e01-f9709d6b195f","savedPayload":{"position":{"x":29272.351997056765,"y":30688.807256238648},"targetPosition":{"x":29531.831887857006,"y":31006.50215332862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div previous ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"a5a3a569-6a05-4fd0-8c15-22d5e5d1b148","savedPayload":{"position":{"x":29400.59541225859,"y":30198.51224944108},"targetPosition":{"x":29465.694395008868,"y":30602.505107002034},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2adc3c50-f284-4fb1-9f79-b077a54b5046","savedPayload":{"position":{"x":29465.694395008868,"y":30602.505107002034},"targetPosition":{"x":29531.831887857006,"y":31006.50215332862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c91df057-7904-431b-b997-8fbb2afada1f","savedPayload":{"position":{"x":29531.831887857006,"y":31006.50215332862},"targetPosition":{"x":29915.35006651546,"y":31152.79468292573},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"8196d5fe-af67-4302-84d1-f95279fb2075","savedPayload":{"position":{"x":29915.35006651546,"y":31152.79468292573},"targetPosition":{"x":30274.70605518238,"y":31210.2377720679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"dc4b92b2-3855-4cc7-84f5-20cc259c1634"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"60d1211f-6279-4c80-abe5-e727a70aea22","savedPayload":{"position":{"x":34435.312104755925,"y":37604.797131887906},"targetPosition":{"x":34371.381595713305,"y":37200.520638670896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6659d86a-2e52-48b2-bcc4-5f5b43b3907e","savedPayload":{"position":{"x":34371.381595713305,"y":37200.520638670896},"targetPosition":{"x":34301.70161318501,"y":36759.80355610525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"5ce2e13e-4b4f-424b-b4ee-1741c013690b","savedPayload":{"position":{"x":33637.05690195842,"y":37298.380990103775},"targetPosition":{"x":33955.25921385612,"y":37040.548458870755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"38aa2600-90dc-4c6b-be17-a08ee9c829b3","savedPayload":{"position":{"x":33955.25921385612,"y":37040.548458870755},"targetPosition":{"x":34301.70161318501,"y":36759.80355610525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fd092801-0b6b-4f09-bbb3-b16fe1144ae3","savedPayload":{"position":{"x":29942.550949462675,"y":30461.549907287925},"targetPosition":{"x":30108.751431134442,"y":30835.89159387049},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"4b4f5de5-723c-4d6e-b26e-50ee87671f48","savedPayload":{"position":{"x":30108.751431134442,"y":30835.89159387049},"targetPosition":{"x":30274.70605518238,"y":31210.2377720679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"e6304ea5-e683-49c1-8e84-e2bc119565fa"}}}],"announcements":[],"id":"ad2a51aa-b179-457e-9704-5c9b1a8db72e","savedPayload":{"position":{"x":30274.70605518238,"y":31210.2377720679},"targetPosition":{"x":30661.02568754195,"y":31379.194283221575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"d29e9a58-79bb-445f-b51a-e5b86937aa8c","savedPayload":{"position":{"x":29569.89733993556,"y":31298.831477570733},"targetPosition":{"x":29887.28573602895,"y":31041.38429809122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"59efd870-0af2-4d5c-a78c-281b71f00497","savedPayload":{"position":{"x":35010.10130049439,"y":37933.36740804276},"targetPosition":{"x":34843.70421091391,"y":37559.42115267648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"31c9eb9e-6567-4866-b3de-cf7ac4fa0126","savedPayload":{"position":{"x":34843.70421091391,"y":37559.42115267648},"targetPosition":{"x":34677.20226770342,"y":37185.26541585529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"0dd58774-bae1-48f4-bb2a-ff3af03d885b","savedPayload":{"position":{"x":34196.30278110237,"y":37847.83226499006},"targetPosition":{"x":34436.72320963445,"y":37516.627594905825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f8894b26-93ec-450a-9cbf-2462e442a7bc","savedPayload":{"position":{"x":34436.72320963445,"y":37516.627594905825},"targetPosition":{"x":34677.20226770342,"y":37185.26541585529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a1141841-95d0-4c98-b77e-16eb893e6b19","savedPayload":{"position":{"x":34677.20226770342,"y":37185.26541585529},"targetPosition":{"x":34719.74774859792,"y":36777.73345672497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"5a854197-4f85-4f31-bf5e-c9acff5a60cc","savedPayload":{"position":{"x":29630.2706807204,"y":30722.685610075176},"targetPosition":{"x":29887.28573602895,"y":31041.38429809122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"e6304ea5-e683-49c1-8e84-e2bc119565fa"}}}],"announcements":[],"id":"dc4b92b2-3855-4cc7-84f5-20cc259c1634","savedPayload":{"position":{"x":29887.28573602895,"y":31041.38429809122},"targetPosition":{"x":30274.70605518238,"y":31210.2377720679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6b48bcff-79c4-4705-82ac-3666914c8628","savedPayload":{"position":{"x":31044.29603098015,"y":31745.267981535948},"targetPosition":{"x":31448.949834379793,"y":31681.57948129423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"103674cc-96ef-407d-8714-ea2e9a9d7e74","savedPayload":{"position":{"x":31378.79809078839,"y":31736.006502876146},"targetPosition":{"x":31316.25,"y":31338.22198731501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5270f90c-9a7c-4c48-a70d-b75316d43872","savedPayload":{"position":{"x":31117.861875558334,"y":31440.806546951313},"targetPosition":{"x":31448.949834379793,"y":31681.57948129423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"657399d3-c55b-46b6-8ef6-bf1ed183c48f","savedPayload":{"position":{"x":31448.949834379793,"y":31681.57948129423},"targetPosition":{"x":31854.611783869535,"y":31617.461964697784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"c3529923-8f7c-4ce4-8368-edca9f37fa52","savedPayload":{"position":{"x":31325.053472792577,"y":31030.065705487017},"targetPosition":{"x":31668.750919700407,"y":31253.281061179234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"1147f820-1445-48ab-8c68-0f9dfc653b99","savedPayload":{"position":{"x":31261.14930563862,"y":31481.17728231012},"targetPosition":{"x":31480.401949358587,"y":31142.768514071446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0b01a5c6-c37d-4738-9bfd-1931a7d2d3d5","savedPayload":{"position":{"x":31583.37792473191,"y":30852.18473839943},"targetPosition":{"x":31668.750919700407,"y":31253.281061179234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"62290446-8b87-4e5a-8ade-9a34b8dbb148","savedPayload":{"position":{"x":31668.750919700407,"y":31253.281061179234},"targetPosition":{"x":31854.611783869535,"y":31617.461964697784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b27aa9de-ced9-4e53-941c-499bab212f80","savedPayload":{"position":{"x":31854.611783869535,"y":31617.461964697784},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S6 - 2H Up","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"873a72fd-cc23-4965-ae29-5b2b70d85cb9","savedPayload":{"position":{"x":33010.897460448316,"y":31179.087705618313},"targetPosition":{"x":32743.530080996377,"y":31476.678900946034},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"087962b5-2546-4472-b71c-b161f0013b1c","savedPayload":{"position":{"x":32743.530080996377,"y":31476.678900946034},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"c72459a6-49d5-4021-b6e3-4a8c374b6b4b","savedPayload":{"position":{"x":33147.08185909988,"y":31338.07547366014},"targetPosition":{"x":32811.43571183378,"y":31556.272945529192},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"48333f2b-d8c7-4a92-bf5d-b8c9a8de4196","savedPayload":{"position":{"x":32811.43571183378,"y":31556.272945529192},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"8488937e-9b92-4562-b89c-a4d6c6dd8ee2","savedPayload":{"position":{"x":33237.13790341573,"y":31526.911203926844},"targetPosition":{"x":32856.01196197148,"y":31650.98625831615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ec9b3ba8-d6a4-4cb0-8679-a8daa868e549","savedPayload":{"position":{"x":32856.01196197148,"y":31650.98625831615},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"02H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Up\"","id":"ade6a251-d161-467d-8e94-45cfdadf536b","savedPayload":{"position":{"x":33275.56332572748,"y":31733.285246992767},"targetPosition":{"x":32875.524833571035,"y":31754.249385991152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7499f60b-762e-4b37-a66d-2872755620c4","savedPayload":{"position":{"x":32875.524833571035,"y":31754.249385991152},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"04H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Down\"","id":"3beea11e-ff4a-4e39-97d0-97563dacfb09","savedPayload":{"position":{"x":33259.28460932873,"y":31940.902502677036},"targetPosition":{"x":32867.80836627228,"y":31858.056490410654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9e0650fa-cd1b-4770-81b2-06d677c73510","savedPayload":{"position":{"x":32867.80836627228,"y":31858.056490410654},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"01H Med, Steep o Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"276b36c3-c0ca-45d6-a659-c40dac406f46","savedPayload":{"position":{"x":33189.54211479279,"y":32137.713665862248},"targetPosition":{"x":32833.07319674841,"y":31956.498147475777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"904385e8-8b04-4c0c-9961-98b10184e976","savedPayload":{"position":{"x":32833.07319674841,"y":31956.498147475777},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"a49fbb15-05db-4a21-b59b-662a6d84c999","savedPayload":{"position":{"x":33071.171384054614,"y":32309.90187202421},"targetPosition":{"x":32773.91856258477,"y":32042.64240847269},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"89591bf6-dabe-4ba6-b2d8-4580a2c75b0a","savedPayload":{"position":{"x":32773.91856258477,"y":32042.64240847269},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Side or Medium","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\" || chart.at02hs.bollingerSubChannel.slope === \"Medium\"","id":"bb0016e9-0b74-4595-b450-209487362f00","savedPayload":{"position":{"x":32912.24643585934,"y":32445.677135860693},"targetPosition":{"x":32694.434555061398,"y":32110.581831373445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ad9f8e37-16b5-4245-9492-0192ef168849","savedPayload":{"position":{"x":32694.434555061398,"y":32110.581831373445},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"1e3c7245-5582-4af5-9527-5dddf151b976","savedPayload":{"position":{"x":32723.598227552084,"y":32535.7334732403},"targetPosition":{"x":32600.0416875229,"y":32155.64929664765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"440d6ea0-2ee2-408a-a556-18d4c53dda17","savedPayload":{"position":{"x":32600.0416875229,"y":32155.64929664765},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 4: 02H Up && 02H Gentle && 3H Side","code":"chart.at02hs.percentageBandwidth.movingAverage > chart.at24hs.bollingerSubChannel.slope + chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Gentle\" && chart.at03hs.bollingerSubChannel.slope === \"Side\") {false} else {true}","id":"d4189ed6-4d0f-45ea-b1ae-dbdb8f2e0e2c","savedPayload":{"position":{"x":32518.077922250573,"y":32573.891283006145},"targetPosition":{"x":32497.144449475723,"y":32174.74285972898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"01875e5f-f718-4047-baa4-c91930dd6c86","savedPayload":{"position":{"x":32497.144449475723,"y":32174.74285972898},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H NOT Steep","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope != \"Steep\"","id":"350d4a04-700f-4f33-960e-d267e00cec51","savedPayload":{"position":{"x":32310.0762594611,"y":32557.365021417743},"targetPosition":{"x":32392.844211360745,"y":32166.404433653668},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bda747f3-188e-4ed0-82bf-b600a9a9c3f5","savedPayload":{"position":{"x":32392.844211360745,"y":32166.404433653668},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7ec2e400-1608-44b5-8ae4-ac4f815e76f5","savedPayload":{"position":{"x":32476.10497248283,"y":31774.247558718183},"targetPosition":{"x":32114.4975340574,"y":31604.990853046736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"0499e109-2786-4159-b79a-c6c24ebac150","savedPayload":{"position":{"x":32114.4975340574,"y":31604.990853046736},"targetPosition":{"x":31758.22011621457,"y":31424.574860926965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"3ed33d07-ff92-4ecc-81cd-8d9318f5a3a2","savedPayload":{"position":{"x":32252.16665434626,"y":32947.31660965903},"targetPosition":{"x":32128.776811132153,"y":32567.424743327494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"40eeff59-ef6d-456b-9662-2590ba1f90b8","savedPayload":{"position":{"x":32128.776811132153,"y":32567.424743327494},"targetPosition":{"x":32005.204151094837,"y":32186.883294667958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"208d89cb-60a9-461f-a8d2-a9d185ca3c5a","savedPayload":{"position":{"x":32005.204151094837,"y":32186.883294667958},"targetPosition":{"x":31881.43076718399,"y":31805.23997790666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"77ac2dcd-e4a4-4a8f-8c71-d8a30fa7a508","savedPayload":{"position":{"x":31881.43076718399,"y":31805.23997790666},"targetPosition":{"x":31758.22011621457,"y":31424.574860926965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"0c4f8301-8084-4276-a901-5e8137867ea0","savedPayload":{"position":{"x":31988.82332276822,"y":32672.19571834107},"targetPosition":{"x":31692.071482468677,"y":32404.721283246283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c407af9c-fe4a-4d5a-9446-25fc7284ee5c","savedPayload":{"position":{"x":31692.071482468677,"y":32404.721283246283},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"6f84e4e1-1174-4eea-b92a-fdb64cdded61","savedPayload":{"position":{"x":31830.031046317567,"y":32808.01597089322},"targetPosition":{"x":31612.54259799393,"y":32472.84689786787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"56b51e70-1cfd-403a-809d-ee19347ca315","savedPayload":{"position":{"x":31612.54259799393,"y":32472.84689786787},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"f3b540af-68c9-4345-9826-faf0d9e6e04c","savedPayload":{"position":{"x":31641.55767350311,"y":32897.9022710009},"targetPosition":{"x":31518.23455469705,"y":32517.86144086963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f4cdcc47-9a5d-4999-9c11-8fd1c19a5424","savedPayload":{"position":{"x":31518.23455469705,"y":32517.86144086963},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"02H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Up\"","id":"0f3ff1d1-ff82-42da-a526-aff486cbc0bb","savedPayload":{"position":{"x":31436.205013692565,"y":32935.90412023717},"targetPosition":{"x":31415.48977015678,"y":32536.89355815333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0835043e-d8e1-424e-a530-1def860228eb","savedPayload":{"position":{"x":31415.48977015678,"y":32536.89355815333},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"04H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Down\"","id":"54f8e8ae-578f-461d-9ed2-9f352395dd19","savedPayload":{"position":{"x":31228.54443615153,"y":32919.419915645696},"targetPosition":{"x":31311.585595466433,"y":32528.664179815376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"feb6ba85-a9c1-40af-9e6b-00bd4ef1480b","savedPayload":{"position":{"x":31311.585595466433,"y":32528.664179815376},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"01H Med, Steep o Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"949100cd-882b-4c11-b010-dbbfd5fff6f5","savedPayload":{"position":{"x":31031.643356321496,"y":32849.55793610308},"targetPosition":{"x":31213.072553776572,"y":32493.738191603945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d3f463af-4e6d-493b-bc8f-e4c66ffc8567","savedPayload":{"position":{"x":31213.072553776572,"y":32493.738191603945},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"b6856a8d-7a24-4a5f-a449-de2d32fe63be","savedPayload":{"position":{"x":30859.463550636483,"y":32731.085165783043},"targetPosition":{"x":31126.93780611842,"y":32434.498319116443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"37a6e660-f28f-4bd2-99ea-3c2f46d2a36c","savedPayload":{"position":{"x":31126.93780611842,"y":32434.498319116443},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Side or Medium","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\" || chart.at02hs.bollingerSubChannel.slope === \"Medium\"","id":"08d54285-d07e-4cec-8f13-a2f268a569a2","savedPayload":{"position":{"x":30723.724643081026,"y":32572.09916636515},"targetPosition":{"x":31059.056353841177,"y":32354.976107409486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e0208159-e2c5-4fa4-8658-714af9cc91bd","savedPayload":{"position":{"x":31059.056353841177,"y":32354.976107409486},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"36e3a366-1402-4953-8283-9a4131d304b2","savedPayload":{"position":{"x":30633.69548060391,"y":32383.464894864584},"targetPosition":{"x":31014.06490490233,"y":32260.590685797342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d4dc8ef4-ba98-4843-9ef5-16a649541da1","savedPayload":{"position":{"x":31014.06490490233,"y":32260.590685797342},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 4: 02H Up && 02H Gentle && 3H Side","code":"chart.at02hs.percentageBandwidth.movingAverage > chart.at24hs.bollingerSubChannel.slope + chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Gentle\" && chart.at03hs.bollingerSubChannel.slope === \"Side\") {false} else {true}","id":"f24fcdcf-8844-4f08-a9f2-3b56471a6dde","savedPayload":{"position":{"x":30595.571410680965,"y":32178.05371321225},"targetPosition":{"x":30995.052862976325,"y":32157.74965041339},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2f6a17d7-7a2e-4aa2-b120-d22cb0898194","savedPayload":{"position":{"x":30995.052862976325,"y":32157.74965041339},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H NOT Steep","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope != \"Steep\"","id":"5e74fc74-6684-4675-ba35-4ce3fee27b2a","savedPayload":{"position":{"x":30612.009771633493,"y":31970.454085425517},"targetPosition":{"x":31003.424923684455,"y":32053.515183920517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cc3b8326-99cd-431c-8b27-c85322f6413f","savedPayload":{"position":{"x":31003.424923684455,"y":32053.515183920517},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e5d2fd0e-f202-44e7-bf4c-32d3a203528e","savedPayload":{"position":{"x":31394.696965332292,"y":32137.06841264846},"targetPosition":{"x":31575.976545730267,"y":31780.03372773283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"08776dac-4836-413b-ad45-fdfa781b031c","savedPayload":{"position":{"x":31575.976545730267,"y":31780.03372773283},"targetPosition":{"x":31758.22011621457,"y":31424.574860926965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"5724bd17-a57c-4ec4-9389-170c4255a2d5","savedPayload":{"position":{"x":31758.22011621457,"y":31424.574860926965},"targetPosition":{"x":31633.219625647092,"y":31038.6715717692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"7ac87760-6585-45b0-8e6a-52393eba7893","savedPayload":{"position":{"x":30735.600805138325,"y":33507.99863549079},"targetPosition":{"x":30475.476039234916,"y":33357.5191308144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"e18e37c2-45e6-4c79-8ab5-0e5ca1d5106f","savedPayload":{"position":{"x":33617.84667711506,"y":33938.36138235442},"targetPosition":{"x":33617.80021414131,"y":33638.42804439987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"97289bf8-e16b-42a3-b467-58175c304390","savedPayload":{"position":{"x":33617.80021414131,"y":33638.42804439987},"targetPosition":{"x":33617.692701429136,"y":33338.295643587335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"77be179e-b8d7-42e1-8612-32b85af6352b","savedPayload":{"position":{"x":33617.67000115603,"y":33338.2983947205},"targetPosition":{"x":33617.553943954204,"y":33038.401141381386},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"21d88502-c3c4-4847-af18-a943a25e44f4","savedPayload":{"position":{"x":33617.553943954204,"y":33038.401141381386},"targetPosition":{"x":30475.395949616388,"y":33357.36740858946},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"5c93f074-54cb-4ef9-bcd5-b2ccef229271","savedPayload":{"position":{"x":30475.395949616388,"y":33357.36740858946},"targetPosition":{"x":30325.095919219108,"y":33097.442231856185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3c1bbf78-0fa6-429b-8dbf-d002f6a375b4","savedPayload":{"position":{"x":30325.095919219108,"y":33097.442231856185},"targetPosition":{"x":30174.932833579667,"y":32838.137954305625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"11d19fb0-32df-475f-a4b9-2832942954f3","savedPayload":{"position":{"x":30234.264038388534,"y":33709.59649631907},"targetPosition":{"x":30112.179889514613,"y":33434.84161439404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"547c7e11-9615-4493-8541-29323286596e","savedPayload":{"position":{"x":29697.381162992446,"y":34518.08926656646},"targetPosition":{"x":29728.562546731402,"y":34219.545692809836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"495e7972-41f7-474b-91b1-e434b599dcdc","savedPayload":{"position":{"x":29728.562546731402,"y":34219.545692809836},"targetPosition":{"x":29759.759570577848,"y":33920.72891942154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"eb8e1683-b144-470c-a376-2b091463a231","savedPayload":{"position":{"x":29211.7322965648,"y":34165.26538028993},"targetPosition":{"x":29485.6195128475,"y":34043.05074487052},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"867afb92-cc37-44ff-b2e9-b0f5cd2b3856","savedPayload":{"position":{"x":29485.6195128475,"y":34043.05074487052},"targetPosition":{"x":29759.759570577848,"y":33920.72891942154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"01b47fc7-1a64-44cb-bf9c-898cca8bed2b","savedPayload":{"position":{"x":29759.759570577848,"y":33920.72891942154},"targetPosition":{"x":29935.942617287852,"y":33677.80023794164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"cf8da514-59ee-4653-9cc1-69430acc9458","savedPayload":{"position":{"x":29935.942617287852,"y":33677.80023794164},"targetPosition":{"x":30112.179889514613,"y":33434.84161439404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"7f1cee55-5e8d-4ef6-bcf6-d93ebcd364dd","savedPayload":{"position":{"x":30112.081341129044,"y":33434.631552439794},"targetPosition":{"x":30143.474708288704,"y":33136.159475499015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7d4e2188-8c93-4994-8d1d-ac48e2d042ee","savedPayload":{"position":{"x":30143.474708288704,"y":33136.159475499015},"targetPosition":{"x":30174.932833579667,"y":32838.137954305625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"09f38b0e-fe77-4c18-94f7-ccf4065bd658","savedPayload":{"position":{"x":29772.844422223552,"y":33283.54921569672},"targetPosition":{"x":29973.88377786049,"y":33060.741059920125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3bf360bd-8eaf-4902-b171-228ee072b89f","savedPayload":{"position":{"x":29973.88377786049,"y":33060.741059920125},"targetPosition":{"x":30174.932833579667,"y":32838.137954305625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"220cd9e4-fafa-44dc-bded-294af6ccc6df","savedPayload":{"position":{"x":29588.164690634123,"y":32962.447589802534},"targetPosition":{"x":29881.55127058081,"y":32900.126240651916},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"58aae9b5-2a28-49dc-b8f6-b2f4a0ed6897","savedPayload":{"position":{"x":29881.55127058081,"y":32900.126240651916},"targetPosition":{"x":30174.932833579667,"y":32838.137954305625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"94e31b0c-1e6e-4a82-aaaf-62f1ceaea758","savedPayload":{"position":{"x":30174.932833579667,"y":32838.137954305625},"targetPosition":{"x":30662.455253128323,"y":31743.375196346577},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"20e99942-a476-436b-8a1c-a9347a048114","savedPayload":{"position":{"x":30363.938333749466,"y":31774.39366742148},"targetPosition":{"x":30662.455253128323,"y":31743.375196346577},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[],"id":"8f3d8a80-6472-48d8-a081-8de85b844295","savedPayload":{"position":{"x":30662.455253128323,"y":31743.375196346577},"targetPosition":{"x":31633.219625647092,"y":31038.6715717692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"New Manage Stage","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"a32cdd1e-19ce-4bcc-b7c9-52a9e9466dbf","savedPayload":{"position":{"x":30082.885861767205,"y":30674.271706394175},"targetPosition":{"x":30513.31088525428,"y":30719.649203626926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"291bbfda-c1d5-49f6-966b-3f7704ffbda8","savedPayload":{"position":{"x":30449.70849833978,"y":30712.79175326387},"targetPosition":{"x":30918.36861727118,"y":30762.229078092434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"bbb0aab4-c6e3-47f8-b737-9e6fcafcfba1","savedPayload":{"position":{"x":30909.98604740559,"y":30862.912765036395},"targetPosition":{"x":31305.47719822368,"y":30800.44309590927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"34d1cb14-5351-42d4-8827-b2b0aa013b99","savedPayload":{"position":{"x":30605.26333421754,"y":30205.78693761094},"targetPosition":{"x":30971.141125384296,"y":30043.93219128299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"6f6150fc-3a6a-4686-a350-ff141bc83623","savedPayload":{"position":{"x":30331.119285087545,"y":35572.907331899485},"targetPosition":{"x":30184.879145673036,"y":35261.15720629123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3ef9a345-0c46-428c-94f3-80decc872e23","savedPayload":{"position":{"x":30184.879145673036,"y":35261.15720629123},"targetPosition":{"x":30042.73490234879,"y":34942.295632265814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d34694ed-b6c6-4fca-ae8d-95e3f30a4888","savedPayload":{"position":{"x":30042.73490234879,"y":34942.295632265814},"targetPosition":{"x":29899.932990268222,"y":34619.12789061077},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"0be8dfdf-f4ff-4616-b788-c04b3c64eb1b","savedPayload":{"position":{"x":30735.67671147718,"y":29734.66378505733},"targetPosition":{"x":30971.141125384296,"y":30043.93219128299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"45b5b7a2-8cc1-47f8-99c5-8042c7925a89","savedPayload":{"position":{"x":31785.587628057838,"y":28921.80729278172},"targetPosition":{"x":31743.582103773908,"y":29319.674508790024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9bb86da8-d8fa-4b5c-b6a5-952327938371","savedPayload":{"position":{"x":31743.582103773908,"y":29319.674508790024},"targetPosition":{"x":31701.637548164443,"y":29717.658565468908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"05f551c5-32a7-4986-8753-5ac0bd0d4acc","savedPayload":{"position":{"x":32172.013825409394,"y":29069.989139590693},"targetPosition":{"x":31936.92706800949,"y":29393.78099313842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9ba9b517-a809-4b01-848f-5bb31ab1f92c","savedPayload":{"position":{"x":31936.92706800949,"y":29393.78099313842},"targetPosition":{"x":31701.637548164443,"y":29717.658565468908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"c7001aa3-f176-40e4-a6d7-2744966363cd","savedPayload":{"position":{"x":32432.555394753173,"y":29391.497494618434},"targetPosition":{"x":32067.232883950746,"y":29554.586947261843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"094200d6-3761-4dd0-8073-083d14bbeb71","savedPayload":{"position":{"x":32067.232883950746,"y":29554.586947261843},"targetPosition":{"x":31701.637548164443,"y":29717.658565468908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"aaee1ab9-d92b-4f01-afc1-654347d9511a","savedPayload":{"position":{"x":32497.38168861228,"y":29799.19204314747},"targetPosition":{"x":32099.598869002944,"y":29758.585748231508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9143d8e3-b435-49f2-907e-a874e794d32a","savedPayload":{"position":{"x":32099.598869002944,"y":29758.585748231508},"targetPosition":{"x":31701.637548164443,"y":29717.658565468908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"9e27b341-5396-4a81-b483-13c9e497f3c4","savedPayload":{"position":{"x":32342.498436465543,"y":30179.457799669777},"targetPosition":{"x":32025.30263324656,"y":29951.650215787853},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"77518efa-2184-4602-8f5a-f3e106c6845c","savedPayload":{"position":{"x":32025.30263324656,"y":29951.650215787853},"targetPosition":{"x":31701.637548164443,"y":29717.658565468908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9d8fbd63-29f2-41f9-85f1-92643ff12c6d","savedPayload":{"position":{"x":31701.637548164443,"y":29717.658565468908},"targetPosition":{"x":31336.23232758938,"y":29880.60125077836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"a92424e5-ab90-424c-85cc-b8697bcb6009","savedPayload":{"position":{"x":31336.23232758938,"y":29880.60125077836},"targetPosition":{"x":30971.141125384296,"y":30043.93219128299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"8aff2c3b-ecf9-4df8-84ea-ffd6ba9c9612"}}}],"announcements":[],"id":"58effb7e-0927-4c47-8745-58895dead2ea","savedPayload":{"position":{"x":30971.141125384296,"y":30043.93219128299},"targetPosition":{"x":31146.90148203014,"y":30438.426905457258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"49b3a850-8a9e-41c7-8b5f-e5f3a21ce83d","savedPayload":{"position":{"x":30452.45845106373,"y":29521.565879294885},"targetPosition":{"x":30826.360212497813,"y":29664.135819369385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"c6bc7845-b742-4bd0-a28e-f76bafd9ae16","savedPayload":{"position":{"x":29620.502448153133,"y":29009.482794068932},"targetPosition":{"x":30020.48723524759,"y":28999.95192930794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0dea846d-7054-4651-9c26-e34941dd4128","savedPayload":{"position":{"x":30020.48723524759,"y":28999.95192930794},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"9ef393ca-8c24-4089-a87e-8ce151f2b828","savedPayload":{"position":{"x":29673.23605654033,"y":28702.255596384566},"targetPosition":{"x":30046.812421762977,"y":28846.20864900197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6be2982e-d239-488c-aa26-68e9b2a7af09","savedPayload":{"position":{"x":30046.812421762977,"y":28846.20864900197},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"69018aba-59d9-4f07-a2d5-d93c75981c93","savedPayload":{"position":{"x":29839.877390688383,"y":28438.113330539305},"targetPosition":{"x":30130.17776697706,"y":28714.084841759402},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6ce688b0-0234-4ad1-8afa-540325306d5c","savedPayload":{"position":{"x":30130.17776697706,"y":28714.084841759402},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"b882f3e8-28e5-49f8-90a1-c27ac4723c90","savedPayload":{"position":{"x":30094.91632821422,"y":28257.6976118685},"targetPosition":{"x":30257.805692474005,"y":28623.700232213934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d21fc9d4-bec7-4df6-9083-203e877f30de","savedPayload":{"position":{"x":30257.805692474005,"y":28623.700232213934},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"2d8c394e-6772-4d45-a052-a5c04202637c","savedPayload":{"position":{"x":30399.135146391483,"y":28188.951611978144},"targetPosition":{"x":30409.894262867972,"y":28589.425905596338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"577a9703-74fb-4ea1-9e6d-1a6083c6ac29","savedPayload":{"position":{"x":30409.894262867972,"y":28589.425905596338},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14 > chart.at01hs.base7EMA.previous.previous.ema21 - chart.at01hs.base7EMA.previous.previous.ema14","id":"af2fed7e-8530-49cb-8d8c-818c0dfd3865","savedPayload":{"position":{"x":30705.807101415852,"y":28242.043260085895},"targetPosition":{"x":30563.534489641403,"y":28615.829252344352},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8b902eb1-aaaf-41e5-abab-95f7673e1ff5","savedPayload":{"position":{"x":30563.534489641403,"y":28615.829252344352},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2 previous ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7 > chart.at01hs.base7EMA.previous.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.previous.ema7","id":"2a5efff2-2a04-4585-813e-e3ac2ffb8b95","savedPayload":{"position":{"x":30970.307494097444,"y":28407.94708158223},"targetPosition":{"x":30695.559309238633,"y":28699.077640496787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"081cec88-c2c1-49f8-88c1-760fc50e7f91","savedPayload":{"position":{"x":30695.559309238633,"y":28699.077640496787},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7abbde01-e871-4b28-973e-51ca5f3f1c4d","savedPayload":{"position":{"x":30421.294627160216,"y":28990.627562965827},"targetPosition":{"x":30585.34029111149,"y":29357.81367658895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"276723b8-0d32-49d8-b9b3-bd29368160f7","savedPayload":{"position":{"x":30585.34029111149,"y":29357.81367658895},"targetPosition":{"x":30826.360212497813,"y":29664.135819369385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"8aff2c3b-ecf9-4df8-84ea-ffd6ba9c9612"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"16b5e57d-57f9-401a-9134-4dd112797d48","savedPayload":{"position":{"x":30789.66764429344,"y":28185.714818709304},"targetPosition":{"x":30951.533541835262,"y":28551.74444969474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f2bb1dbc-702a-413a-9421-9ac5309fe6f0","savedPayload":{"position":{"x":30951.533541835262,"y":28551.74444969474},"targetPosition":{"x":31113.728474558935,"y":28917.21393819002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"f73c271b-afa2-45ee-91d4-6aee3b3a8be9","savedPayload":{"position":{"x":31400.498422214296,"y":28170.05020162896},"targetPosition":{"x":31257.123145725003,"y":28543.607202208215},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"feaca6ce-0573-401a-909a-4e25687ce708","savedPayload":{"position":{"x":31257.123145725003,"y":28543.607202208215},"targetPosition":{"x":31113.728474558935,"y":28917.21393819002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2 prev.ema7 div 2 prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7 > chart.at01hs.base7EMA.previous.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.previous.ema7","id":"a9c93bde-d56d-42e9-a447-b29a02885149","savedPayload":{"position":{"x":31844.247105636758,"y":28591.21341930776},"targetPosition":{"x":31479.031034712203,"y":28754.272707956417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"72e2d105-feba-47a0-8eaf-6c83296a3863","savedPayload":{"position":{"x":31479.031034712203,"y":28754.272707956417},"targetPosition":{"x":31113.728474558935,"y":28917.21393819002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ab94fcaf-55b6-4be2-a44a-b399dda60644","savedPayload":{"position":{"x":31113.728474558935,"y":28917.21393819002},"targetPosition":{"x":30970.110994537692,"y":29290.905083627942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"07ca2734-a819-49f7-99f7-f19f58e5ffba","savedPayload":{"position":{"x":30970.110994537692,"y":29290.905083627942},"targetPosition":{"x":30826.360212497813,"y":29664.135819369385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"58effb7e-0927-4c47-8745-58895dead2ea"}}}],"announcements":[],"id":"e1d12230-902a-46bf-bb48-1fafbd162e1e","savedPayload":{"position":{"x":30826.360212497813,"y":29664.135819369385},"targetPosition":{"x":30971.141125384296,"y":30043.93219128299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"b53c2ea8-9341-416a-bef3-0b7fb86530d5","savedPayload":{"position":{"x":30285.58406428977,"y":29243.050178096328},"targetPosition":{"x":30683.146099147776,"y":29284.109186527035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"de39a349-8739-4e13-ba9d-91acedf7c835","savedPayload":{"position":{"x":33888.595369445764,"y":37801.62556418717},"targetPosition":{"x":33722.19827986528,"y":37427.67930882089},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b8a44bb5-4965-4d76-8a55-6f0274d84b0c","savedPayload":{"position":{"x":33722.19827986528,"y":37427.67930882089},"targetPosition":{"x":33555.69633665479,"y":37053.5235719997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"4529e123-22d2-40a3-a751-9069e69fa624","savedPayload":{"position":{"x":33074.796850053746,"y":37716.09042113447},"targetPosition":{"x":33315.21727858583,"y":37384.885751050235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c94daca3-f53c-42b6-970c-586d9b605b04","savedPayload":{"position":{"x":33315.21727858583,"y":37384.885751050235},"targetPosition":{"x":33555.69633665479,"y":37053.5235719997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0a283745-7a51-45ab-b781-538c6e1f6a8a","savedPayload":{"position":{"x":33555.69633665479,"y":37053.5235719997},"targetPosition":{"x":33598.24181754929,"y":36645.99161286938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"be4359e1-bbfa-404c-b1ab-e073d8b4b173","savedPayload":{"position":{"x":30725.365031712365,"y":28886.42343824879},"targetPosition":{"x":30683.146099147776,"y":29284.109186527035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"58effb7e-0927-4c47-8745-58895dead2ea"}}}],"announcements":[],"id":"8aff2c3b-ecf9-4df8-84ea-ffd6ba9c9612","savedPayload":{"position":{"x":30683.146099147776,"y":29284.109186527035},"targetPosition":{"x":30826.360212497813,"y":29664.135819369385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c97bbced-498a-49dd-847a-a52170294ea9","savedPayload":{"position":{"x":30981.651480104963,"y":30564.710684840276},"targetPosition":{"x":31305.47719822368,"y":30800.44309590927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"06a4b038-f8fb-477e-9c1b-4c40ae6262ab","savedPayload":{"position":{"x":31174.04809078839,"y":31458.634409852893},"targetPosition":{"x":31111.5,"y":31060.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2b7c8ed1-9fc0-48ee-9fa1-1a0de54f71e3","savedPayload":{"position":{"x":31243.032461114977,"y":30404.860924837452},"targetPosition":{"x":31305.47719822368,"y":30800.44309590927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f9453ecf-918d-4816-a43e-216a4af33d75","savedPayload":{"position":{"x":31305.47719822368,"y":30800.44309590927},"targetPosition":{"x":31633.219625647092,"y":31038.6715717692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"a003e0e0-4a5c-4b36-a50b-98e69073a310","savedPayload":{"position":{"x":31675.554585333728,"y":30258.903145976074},"targetPosition":{"x":31758.97925625366,"y":30650.411333418004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"4b1b8e1d-da67-439f-8a1b-dd82581ec9c9","savedPayload":{"position":{"x":31742.39930563862,"y":31180.805189286868},"targetPosition":{"x":31961.651949358587,"y":30842.396421048194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b4633c27-f49c-42b5-be24-a2ea7d5ee8f7","savedPayload":{"position":{"x":31977.08325902516,"y":30314.67393304803},"targetPosition":{"x":31758.97925625366,"y":30650.411333418004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1b84ef5d-8088-401c-a38f-5d9222a01ec3","savedPayload":{"position":{"x":31758.97925625366,"y":30650.411333418004},"targetPosition":{"x":31633.219625647092,"y":31038.6715717692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f1ca0dbb-65e8-4c60-84f0-89596e22e9be","savedPayload":{"position":{"x":31633.219625647092,"y":31038.6715717692},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S7 - 3H Down","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"b7ef7546-2729-499d-88db-7c958392fb0e","savedPayload":{"position":{"x":32756.711113974747,"y":31607.61024363443},"targetPosition":{"x":32358.625604152276,"y":31594.206592670653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"40201dbd-8fbe-41aa-acd3-c0cea3fff9de","savedPayload":{"position":{"x":32358.625604152276,"y":31594.206592670653},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"6dc11e45-63d6-4246-9a9a-294a45931b14","savedPayload":{"position":{"x":32699.286732443106,"y":31878.47863401902},"targetPosition":{"x":32329.570598085495,"y":31729.497664114646},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2dbb8f61-68b4-4835-a6f7-6d7c0c2248ee","savedPayload":{"position":{"x":32329.570598085495,"y":31729.497664114646},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"391ae861-6932-4481-bc4f-15a284dafe80","savedPayload":{"position":{"x":32552.09531778457,"y":32114.04753440217},"targetPosition":{"x":32255.859915100125,"y":31847.386259193245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"52613d30-4103-4272-b871-e3785881dcd8","savedPayload":{"position":{"x":32255.859915100125,"y":31847.386259193245},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerChannel.direction === \"Down\"","id":"7bf0cb68-72c5-4df6-891e-ee3b08bdc439","savedPayload":{"position":{"x":32334.114842423976,"y":32284.565342679653},"targetPosition":{"x":32147.15431300346,"y":31932.905356218682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5bab5664-c7aa-4e60-aecd-30db721958b0","savedPayload":{"position":{"x":32147.15431300346,"y":31932.905356218682},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"3d771526-7fc9-4c67-b4b4-50e2df038870","savedPayload":{"position":{"x":32070.924868337093,"y":32370.08100269519},"targetPosition":{"x":32015.591548265118,"y":31975.736423733935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1298f042-2f23-4fc7-8359-5bdd3f7e7da1","savedPayload":{"position":{"x":32015.591548265118,"y":31975.736423733935},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Side or Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerSubChannel.slope === \"Side\" || chart.at06hs.bollingerSubChannel.slope === \"Gentle\"","id":"9e520195-93e0-4d66-b312-eb2c90921b3c","savedPayload":{"position":{"x":31794.650807013048,"y":32360.45078170795},"targetPosition":{"x":31877.416410439342,"y":31970.941978356223},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"16707f87-40dc-44ae-a7f8-2df9dc07d53c","savedPayload":{"position":{"x":31877.416410439342,"y":31970.941978356223},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Side","code":"chart.at02hs.bollingerSubChannel.slope > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\"","id":"8143bcc8-af0f-45ef-bbde-1f67fa30b819","savedPayload":{"position":{"x":31537.944515588584,"y":32256.803208422127},"targetPosition":{"x":31748.99837175806,"y":31919.0842921405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0f2efdf7-69dc-4d15-9bf4-6f714894d100","savedPayload":{"position":{"x":31748.99837175806,"y":31919.0842921405},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"10f38b80-2f33-4ad0-b849-019b27b36921","savedPayload":{"position":{"x":31332.159441515407,"y":32071.60292915926},"targetPosition":{"x":31646.02399287895,"y":31826.300241802153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"080177f0-9708-4e76-b021-f4857ee42930","savedPayload":{"position":{"x":31646.02399287895,"y":31826.300241802153},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5dd3ebf8-bbcd-4978-8d28-0f4ecfe80ba4","savedPayload":{"position":{"x":31960.09358765132,"y":31580.130968973965},"targetPosition":{"x":31811.375456622718,"y":31210.024612755467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"b4791836-6c85-4279-b75c-ba308154012c","savedPayload":{"position":{"x":31811.375456622718,"y":31210.024612755467},"targetPosition":{"x":31687.76480518738,"y":30831.48557074782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"81a9ee22-bb7d-4a2b-b3ca-7df88b5cfcd1","savedPayload":{"position":{"x":30964.170002711508,"y":32252.191088803193},"targetPosition":{"x":31144.768944066076,"y":31897.42162298904},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"78d25152-3354-4e6c-8118-e621e2eab4e0","savedPayload":{"position":{"x":31144.768944066076,"y":31897.42162298904},"targetPosition":{"x":31325.724991307263,"y":31541.89217527304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1067e774-8e02-44c0-a86a-43c62a2e1a69","savedPayload":{"position":{"x":31325.724991307263,"y":31541.89217527304},"targetPosition":{"x":31506.68394076039,"y":31186.464463611115},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"26a5deff-364b-4f52-b2f2-24eb39f8a9aa","savedPayload":{"position":{"x":31506.68394076039,"y":31186.464463611115},"targetPosition":{"x":31687.76480518738,"y":30831.48557074782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"7ca3641e-2701-4ae6-aebf-419045fa3ef7","savedPayload":{"position":{"x":31415.350855782843,"y":31953.662040186926},"targetPosition":{"x":31228.774127711946,"y":31601.810661783034},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"50506cba-6ce7-47ee-a28f-50cae0a62f61","savedPayload":{"position":{"x":31228.774127711946,"y":31601.810661783034},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"b0bf87ab-9049-4c24-918b-b7bc805db2a8","savedPayload":{"position":{"x":31151.8983901484,"y":32039.378083013424},"targetPosition":{"x":31096.520470152915,"y":31644.940254589535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"56da2b2c-74c3-4328-b75c-4990aef44ca0","savedPayload":{"position":{"x":31096.520470152915,"y":31644.940254589535},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"0ed3b727-9493-4064-8404-d2d48e9213ad","savedPayload":{"position":{"x":30875.88748954805,"y":32029.398005509585},"targetPosition":{"x":30958.5310225033,"y":31640.03030162792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f6f8fad9-0588-4d7c-81a8-5738f0d6c7e6","savedPayload":{"position":{"x":30958.5310225033,"y":31640.03030162792},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerChannel.direction === \"Down\"","id":"5fe7a35e-a56c-4ad4-854d-5b13ca036669","savedPayload":{"position":{"x":30619.45917271261,"y":31925.61009127704},"targetPosition":{"x":30830.267658267254,"y":31588.123770907005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1b64fa95-a27a-4e68-9ae1-fa8358e23f41","savedPayload":{"position":{"x":30830.267658267254,"y":31588.123770907005},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"23e2569a-2867-4ebe-aa2b-21254ab0c096","savedPayload":{"position":{"x":30413.92809880018,"y":31740.258282032806},"targetPosition":{"x":30727.44993708856,"y":31495.42966547764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4f6a6ace-3508-4a78-953a-a9944f9b9077","savedPayload":{"position":{"x":30727.44993708856,"y":31495.42966547764},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Side or Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerSubChannel.slope === \"Side\" || chart.at06hs.bollingerSubChannel.slope === \"Gentle\"","id":"565a511b-5264-4cfd-ad94-c8b316f5e19c","savedPayload":{"position":{"x":30284.10436293634,"y":31495.651010108508},"targetPosition":{"x":30662.4945590601,"y":31373.11363325245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5e3a86fa-9e96-47ef-b87b-3324c9edf8a3","savedPayload":{"position":{"x":30662.4945590601,"y":31373.11363325245},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Side","code":"chart.at02hs.bollingerSubChannel.slope > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\"","id":"ef7ba943-87cb-4149-8ab2-a562a34fa524","savedPayload":{"position":{"x":30245.599644538674,"y":31221.709525819122},"targetPosition":{"x":30643.252589579934,"y":31236.12546813472},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e624d8a7-586a-4198-a528-b6ee474245dd","savedPayload":{"position":{"x":30643.252589579934,"y":31236.12546813472},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"9992327b-1059-4396-8766-514b6384a81b","savedPayload":{"position":{"x":30303.138677412127,"y":30950.697921181665},"targetPosition":{"x":30672.107581803288,"y":31100.54665498549},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0701df03-b97b-4d03-89a7-a9fb764d1d21","savedPayload":{"position":{"x":30672.107581803288,"y":31100.54665498549},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b72964a4-f423-4930-a40d-ced67854d28e","savedPayload":{"position":{"x":31041.820593356788,"y":31249.659564954316},"targetPosition":{"x":31308.726111061416,"y":30953.636053954928},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"0f375c4e-1181-48dc-a5c6-98808692de0b","savedPayload":{"position":{"x":31430.805525066622,"y":30518.836523760896},"targetPosition":{"x":31255.5,"y":30712.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b2fa6c84-789c-4629-834d-05326002e6af","savedPayload":{"position":{"x":31109.176798356515,"y":30963.27212808858},"targetPosition":{"x":31308.726111061416,"y":30953.636053954928},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"51e2b55b-66ca-45c9-9cfd-ec82ac5ce3d6","savedPayload":{"position":{"x":31308.726111061416,"y":30953.636053954928},"targetPosition":{"x":31687.76480518738,"y":30831.48557074782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"adc2c73c-702f-46ce-90ad-dbbc7f75ad3d","savedPayload":{"position":{"x":31687.76480518738,"y":30831.48557074782},"targetPosition":{"x":31869.68557793254,"y":30474.935931910186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"35334cbd-d4ce-49aa-aaf6-dd76ad2fc0e2","savedPayload":{"position":{"x":29872.650486479462,"y":31845.644615987683},"targetPosition":{"x":29722.94521058858,"y":31586.628418935463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"09357e03-4041-4836-8d0b-ff241d96d998","savedPayload":{"position":{"x":32805.75142358775,"y":32943.72579653},"targetPosition":{"x":33016.594443523325,"y":32732.39288563737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a39a586f-7f44-4599-81c9-26989d479b34","savedPayload":{"position":{"x":33140.34468073813,"y":32827.35630227829},"targetPosition":{"x":33289.50677656069,"y":32568.28724312379},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9fdd8bdf-bcd5-4318-9786-18d2e5e0cc65","savedPayload":{"position":{"x":33289.50677656069,"y":32568.28724312379},"targetPosition":{"x":33438.553943954204,"y":32309.40114138139},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"37c5e03a-b280-40d2-a2e8-e040f87303f8","savedPayload":{"position":{"x":33438.553943954204,"y":32309.40114138139},"targetPosition":{"x":29722.94521058858,"y":31586.628418935463},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"7f426eb4-a1d0-4bc1-90fc-a834c34b7c17","savedPayload":{"position":{"x":29722.94521058858,"y":31586.628418935463},"targetPosition":{"x":29722.725213705256,"y":31287.846173686503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7a4858da-e282-4158-bea4-53b72dbb1817","savedPayload":{"position":{"x":29722.725213705256,"y":31287.846173686503},"targetPosition":{"x":29722.457835209898,"y":30989.4429009283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"4d50fd19-7ed8-453e-82bc-532f4493a243","savedPayload":{"position":{"x":29343.437731382317,"y":31744.382995141423},"targetPosition":{"x":29371.152393632306,"y":31472.02590154781},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"af81c406-ab61-41fb-be2f-e442ffc2f8f0","savedPayload":{"position":{"x":28476.443476226017,"y":32218.25881730505},"targetPosition":{"x":28649.504473241068,"y":31955.95291544174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dde94435-60a3-4c47-94cf-3e8175ac1634","savedPayload":{"position":{"x":28649.504473241068,"y":31955.95291544174},"targetPosition":{"x":28825.08157382303,"y":31714.314372018624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"3d7be9e2-afe8-4d9c-be2c-09af6c358225","savedPayload":{"position":{"x":28236.8604574126,"y":31599.372993702822},"targetPosition":{"x":28528.02184771264,"y":31682.79587950174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fa5631d8-a1d0-4139-85ea-67590dd474cc","savedPayload":{"position":{"x":28528.02184771264,"y":31682.79587950174},"targetPosition":{"x":28825.08157382303,"y":31714.314372018624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1150cede-dcd1-49d1-84f7-ffe774dabf5b","savedPayload":{"position":{"x":28825.08157382303,"y":31714.314372018624},"targetPosition":{"x":29098.089018424576,"y":31593.125254821593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"23a3f497-117a-4975-a899-a4dbeb320a60","savedPayload":{"position":{"x":29098.089018424576,"y":31593.125254821593},"targetPosition":{"x":29371.152393632306,"y":31472.02590154781},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"73ab31c8-85c5-464a-8f79-1e368c01ae6a","savedPayload":{"position":{"x":29371.152393632306,"y":31472.02590154781},"targetPosition":{"x":29546.836137447066,"y":31230.632814358563},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"427a98f5-f0bc-4f3e-bd3e-290a2a61a0d8","savedPayload":{"position":{"x":29546.836137447066,"y":31230.632814358563},"targetPosition":{"x":29722.457835209898,"y":30989.4429009283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"5476a8e6-a075-466a-9942-13ce4962b132","savedPayload":{"position":{"x":29153.71032089733,"y":31172.81373022447},"targetPosition":{"x":29438.096980804145,"y":31081.090618860526},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7db9c851-0940-43fd-9366-641e540c24d8","savedPayload":{"position":{"x":29438.096980804145,"y":31081.090618860526},"targetPosition":{"x":29722.457835209898,"y":30989.4429009283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"065a3e90-45c2-45d6-846d-7dbbd61439db","savedPayload":{"position":{"x":29154.040974378873,"y":30803.964060964398},"targetPosition":{"x":29438.30180708951,"y":30896.630273574876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6e3ea9ca-8dfd-4706-8a44-bee210c3fa64","savedPayload":{"position":{"x":29438.30180708951,"y":30896.630273574876},"targetPosition":{"x":29722.457835209898,"y":30989.4429009283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"01200851-265b-4fd2-a819-e866a534dd69","savedPayload":{"position":{"x":29722.457835209898,"y":30989.4429009283},"targetPosition":{"x":30688.920593803676,"y":30287.74409384992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"cce2c890-b019-4232-804f-1a707f05bcb6","savedPayload":{"position":{"x":30393.584979815012,"y":30240.819745126442},"targetPosition":{"x":30688.920593803676,"y":30287.74409384992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"b23ca59f-d8bc-491c-9a8e-2b32a01b3106","savedPayload":{"position":{"x":31234.10084655184,"y":30186.12957454463},"targetPosition":{"x":30928.5,"y":30137.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a53e9a4d-005d-429d-8cea-80553c0eba26","savedPayload":{"position":{"x":30513.035580242144,"y":30045.471998217716},"targetPosition":{"x":30688.920593803676,"y":30287.74409384992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"bdd02df9-2a77-4665-808e-7172a0006e9c","savedPayload":{"position":{"x":30688.920593803676,"y":30287.74409384992},"targetPosition":{"x":31869.68557793254,"y":30474.935931910186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"New Manage Stage","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"cf80ef88-969d-40f5-bc36-ccee6f8518bf","savedPayload":{"position":{"x":31007.622745239525,"y":29170.029822350145},"targetPosition":{"x":31258.45994551566,"y":29479.940552493328},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"6fac6741-1d2a-4364-ba55-6d0082d4e33b","savedPayload":{"position":{"x":31258.45994551566,"y":29479.940552493328},"targetPosition":{"x":31530.039463965975,"y":29815.47282469586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"995255a7-571c-4219-bb24-a1dda890ba60","savedPayload":{"position":{"x":31484.467341186282,"y":29844.710284007848},"targetPosition":{"x":31807.16663599444,"y":30079.347663334862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"712dcccd-fca1-4d1b-bf00-497375a831ec","savedPayload":{"position":{"x":31732.539366836572,"y":29162.99263509157},"targetPosition":{"x":32104.571397491785,"y":29306.12811998022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"8facdd27-7830-4433-b373-c259545e9d3f","savedPayload":{"position":{"x":29882.867353640824,"y":35200.38777180643},"targetPosition":{"x":29736.627214226315,"y":34888.63764619818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f7b658c8-0903-46b3-867a-c01eaca10bb1","savedPayload":{"position":{"x":29736.627214226315,"y":34888.63764619818},"targetPosition":{"x":29594.48297090207,"y":34569.77607217276},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"97de140f-ae6e-435a-8be7-c4d87e38bd83","savedPayload":{"position":{"x":29594.48297090207,"y":34569.77607217276},"targetPosition":{"x":29451.6810588215,"y":34246.608330517716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"c137f50a-c8a7-4275-8ae4-80fa7fedd38c","savedPayload":{"position":{"x":32166.756910341126,"y":28889.69689332528},"targetPosition":{"x":32104.571397491785,"y":29306.12811998022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"908a2ee2-d913-46d1-80f5-e7109c803e65","savedPayload":{"position":{"x":28516.71817962912,"y":35192.29086492423},"targetPosition":{"x":28557.156363557613,"y":34808.409636499855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0a9ab42d-9b24-461f-95cd-39ab13a54bc3","savedPayload":{"position":{"x":28557.156363557613,"y":34808.409636499855},"targetPosition":{"x":28598.0289573759,"y":34417.78682031214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"d4179fb4-9949-4d82-ae45-8d8be2001ce8","savedPayload":{"position":{"x":28140.072131909215,"y":35047.30833994516},"targetPosition":{"x":28366.86690488685,"y":34735.352904831736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"efab2947-1540-4e8f-a1d9-50289a9b3c7f","savedPayload":{"position":{"x":28366.86690488685,"y":34735.352904831736},"targetPosition":{"x":28598.0289573759,"y":34417.78682031214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"8fbb58cd-53d0-4e19-8f50-590090df0f58","savedPayload":{"position":{"x":27878.964636068133,"y":34737.91437333604},"targetPosition":{"x":28231.258809765986,"y":34581.04278506479},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"adec7d7c-258f-4222-a6d6-734f6962d5d9","savedPayload":{"position":{"x":28231.258809765986,"y":34581.04278506479},"targetPosition":{"x":28598.0289573759,"y":34417.78682031214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"b6a70772-8397-41ac-9268-5ad1cd9b0b80","savedPayload":{"position":{"x":27821.86029713508,"y":34336.88651844418},"targetPosition":{"x":28205.040932522745,"y":34376.814161692535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e1ffbeec-66bc-4d38-984b-2aff6740101f","savedPayload":{"position":{"x":28205.040932522745,"y":34376.814161692535},"targetPosition":{"x":28598.0289573759,"y":34417.78682031214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"ff907f99-713a-41f7-8b23-721699b74966","savedPayload":{"position":{"x":27964.313268952294,"y":33958.435928563435},"targetPosition":{"x":28276.53876559214,"y":34184.71313975834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"65511340-ee54-484b-8cb6-f2d95dec9bdd","savedPayload":{"position":{"x":28276.53876559214,"y":34184.71313975834},"targetPosition":{"x":28598.0289573759,"y":34417.78682031214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"94b2fbbc-3d32-473c-8008-231664970f09","savedPayload":{"position":{"x":32849.28299676666,"y":29591.021162867517},"targetPosition":{"x":32476.86475119283,"y":29448.614791856868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"02434c11-1d6d-4f15-9577-237b5daba9ea","savedPayload":{"position":{"x":32476.86475119283,"y":29448.614791856868},"targetPosition":{"x":32104.571397491785,"y":29306.12811998022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"cac36b94-3568-446e-a2d2-9d860bd8ad0f"}}}],"announcements":[],"id":"74e77f0f-2945-48ac-ab1f-47a65feb84ec","savedPayload":{"position":{"x":32104.571397491785,"y":29306.12811998022},"targetPosition":{"x":31950.06586342185,"y":29709.082658113486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"db68ae8b-4414-43f9-b275-c97b3a6a80c6","savedPayload":{"position":{"x":32105.102125287416,"y":28580.59467680565},"targetPosition":{"x":32267.4143234272,"y":28944.957294860884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"2ccb9d00-d677-44b6-8b92-edbcaf349d29","savedPayload":{"position":{"x":33290.65093021714,"y":34555.75511226941},"targetPosition":{"x":33540.8213283894,"y":34865.279508582666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d5649c96-59d6-4f0e-a259-063e7355eb48","savedPayload":{"position":{"x":33540.8213283894,"y":34865.279508582666},"targetPosition":{"x":33791.47346791017,"y":35173.62066748123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"2689f28d-6ca9-4e82-8327-eae9956a751a","savedPayload":{"position":{"x":33676.94695072527,"y":34395.80631745438},"targetPosition":{"x":33738.340953101884,"y":34789.24855876006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b19aacc4-d892-41dc-a487-870ca6e13ce2","savedPayload":{"position":{"x":33738.340953101884,"y":34789.24855876006},"targetPosition":{"x":33791.47346791017,"y":35173.62066748123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"9e40ebf6-fd42-43da-b390-30926b085b8f","savedPayload":{"position":{"x":34079.123783303585,"y":34430.169852666026},"targetPosition":{"x":33935.38002039342,"y":34801.925115799015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2b8766b-b4da-40c7-8d88-76f3969065aa","savedPayload":{"position":{"x":33935.38002039342,"y":34801.925115799015},"targetPosition":{"x":33791.47346791017,"y":35173.62066748123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"cae32279-d999-4c13-8eb6-cad3063c74d4","savedPayload":{"position":{"x":34412.44222154852,"y":34672.67036466439},"targetPosition":{"x":34102.0921039295,"y":34923.20814374665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"04ac8528-0696-413b-a739-7825670c0234","savedPayload":{"position":{"x":34102.0921039295,"y":34923.20814374665},"targetPosition":{"x":33791.47346791017,"y":35173.62066748123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div previous ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"6a80e7f5-300b-417d-9f9d-49803b8f51f8","savedPayload":{"position":{"x":34579.99550348594,"y":35050.04227125973},"targetPosition":{"x":34185.89807327404,"y":35111.97251419154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8e23fa3d-13f0-45fe-990f-d268e58ff1cf","savedPayload":{"position":{"x":34185.89807327404,"y":35111.97251419154},"targetPosition":{"x":33791.47346791017,"y":35173.62066748123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"38fc838f-01a5-4a33-a35f-e185f52c295e","savedPayload":{"position":{"x":33790.73756529026,"y":35173.32453395331},"targetPosition":{"x":33648.14450005887,"y":35545.010999298036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"0c86ae11-a07f-4c31-a33c-05debf70c23c","savedPayload":{"position":{"x":33648.14450005887,"y":35545.010999298036},"targetPosition":{"x":32267.4143234272,"y":28944.957294860884},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"cac36b94-3568-446e-a2d2-9d860bd8ad0f"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"301720b6-e436-4134-be19-0bd0892f624d","savedPayload":{"position":{"x":32865.55424226058,"y":37100.53572793926},"targetPosition":{"x":32801.62373321796,"y":36696.25923472225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2e8c0fcc-d597-40f7-b07f-16214f744b0e","savedPayload":{"position":{"x":32801.62373321796,"y":36696.25923472225},"targetPosition":{"x":32731.943750689665,"y":36255.54215215661},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"b7683607-6589-414b-b6de-5aa132d6baef","savedPayload":{"position":{"x":32067.299039463076,"y":36794.11958615513},"targetPosition":{"x":32385.501351360777,"y":36536.28705492211},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e247b889-3abc-469b-b26d-fc11a08bf9c8","savedPayload":{"position":{"x":32385.501351360777,"y":36536.28705492211},"targetPosition":{"x":32731.943750689665,"y":36255.54215215661},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"605adda8-a968-4819-af76-2ee257f07e66","savedPayload":{"position":{"x":32996.142903277054,"y":28620.519213581738},"targetPosition":{"x":32631.78472413752,"y":28782.773153677914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"cc9492df-3289-4d6a-b152-bad2fc656730","savedPayload":{"position":{"x":32631.78472413752,"y":28782.773153677914},"targetPosition":{"x":32267.4143234272,"y":28944.957294860884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"74e77f0f-2945-48ac-ab1f-47a65feb84ec"}}}],"announcements":[],"id":"7fc97392-92a0-48cc-a5d3-799b1c2b8c35","savedPayload":{"position":{"x":32267.4143234272,"y":28944.957294860884},"targetPosition":{"x":32104.571397491785,"y":29306.12811998022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"895b6803-0996-41a6-9a13-93f488d7aee4","savedPayload":{"position":{"x":32159.626044730376,"y":28262.42213582802},"targetPosition":{"x":32410.183160417215,"y":28572.417370269148},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"df898928-7078-4e61-a616-169789552b36","savedPayload":{"position":{"x":33440.34343799904,"y":37429.106004094116},"targetPosition":{"x":33273.94634841856,"y":37055.159748727834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c02edb77-0d76-4656-8d2f-068eaddabff7","savedPayload":{"position":{"x":33273.94634841856,"y":37055.159748727834},"targetPosition":{"x":33107.44440520807,"y":36681.00401190665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"3bdea448-de7a-4188-b9ec-350dbf88470a","savedPayload":{"position":{"x":32626.544918607025,"y":37343.570861041415},"targetPosition":{"x":32866.96534713911,"y":37012.36619095718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fbc8a359-f853-44a6-831d-a2078edeebe6","savedPayload":{"position":{"x":32866.96534713911,"y":37012.36619095718},"targetPosition":{"x":33107.44440520807,"y":36681.00401190665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f4664806-47a1-41be-956e-079599c0df49","savedPayload":{"position":{"x":33107.44440520807,"y":36681.00401190665},"targetPosition":{"x":33149.98988610257,"y":36273.47205277633},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"b75aa4bc-9257-4444-98ca-afe6377b914a","savedPayload":{"position":{"x":32720.007440830715,"y":28321.18817261144},"targetPosition":{"x":32410.183160417215,"y":28572.417370269148},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"74e77f0f-2945-48ac-ab1f-47a65feb84ec"}}}],"announcements":[],"id":"cac36b94-3568-446e-a2d2-9d860bd8ad0f","savedPayload":{"position":{"x":32410.183160417215,"y":28572.417370269148},"targetPosition":{"x":32267.4143234272,"y":28944.957294860884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7ce8f923-1393-45ac-97d6-742e2cff6627","savedPayload":{"position":{"x":31745.02301611295,"y":29685.056363586977},"targetPosition":{"x":31807.16663599444,"y":30079.347663334862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"cce97d86-51a4-421b-ab3f-0378a33d0563","savedPayload":{"position":{"x":32244.805525066622,"y":29775.836523760896},"targetPosition":{"x":32069.5,"y":29969.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7f219f7a-b837-4ea3-a556-81bed47eae20","savedPayload":{"position":{"x":32041.585952575293,"y":29756.362553668645},"targetPosition":{"x":31807.16663599444,"y":30079.347663334862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0d03ff5b-3162-49a3-ae12-a0e5929de4dd","savedPayload":{"position":{"x":31807.16663599444,"y":30079.347663334862},"targetPosition":{"x":31869.68557793254,"y":30474.935931910186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"1c8d7c9c-e122-4839-a9df-db514ccfa466","savedPayload":{"position":{"x":32443.78411880295,"y":29957.94017527169},"targetPosition":{"x":32226.406850104606,"y":30292.86134791828},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"eabb6fbc-81b2-4eba-b222-062d7e7b219e","savedPayload":{"position":{"x":32075.39930563862,"y":30303.805189286868},"targetPosition":{"x":32294.651949358587,"y":29965.396421048194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6935a06b-c142-4601-8637-79d3eba3015e","savedPayload":{"position":{"x":32617.38344944207,"y":30209.38594008121},"targetPosition":{"x":32226.406850104606,"y":30292.86134791828},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"68777dc5-38aa-4508-8819-db12202b41c3","savedPayload":{"position":{"x":32226.406850104606,"y":30292.86134791828},"targetPosition":{"x":31869.68557793254,"y":30474.935931910186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"fc6676b7-944d-459c-bc06-592b3ae2fd1b","savedPayload":{"position":{"x":31869.68557793254,"y":30474.935931910186},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S2 - 6H Down","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"301d8e64-bde8-4eee-a0cf-b9c57bcb3050","savedPayload":{"position":{"x":32234.440324534728,"y":31685.198935221037},"targetPosition":{"x":31982.173246407383,"y":31389.646556791922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a869bb21-75b5-4621-9760-840cf4896844","savedPayload":{"position":{"x":31982.173246407383,"y":31389.646556791922},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"b3c4a94f-4986-4e55-ba28-f6456a67bd64","savedPayload":{"position":{"x":31969.70451636865,"y":31833.31869527966},"targetPosition":{"x":31849.590605542755,"y":31463.18464013037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7b405bfe-294d-48a8-b1ff-d0c4f4b328d1","savedPayload":{"position":{"x":31849.590605542755,"y":31463.18464013037},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"f4b66e81-3e26-4a04-9687-140ab33bd887","savedPayload":{"position":{"x":31668.20974582201,"y":31869.43108197012},"targetPosition":{"x":31698.734967129512,"y":31481.652370020198},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4d1c7a66-dd4a-45f9-956d-6cb68b64920b","savedPayload":{"position":{"x":31698.734967129512,"y":31481.652370020198},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"975153b0-b609-4975-b5d6-26f7bfe675e8","savedPayload":{"position":{"x":31376.60785778446,"y":31787.20304603462},"targetPosition":{"x":31552.95544610948,"y":31440.783608893744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ecc5139a-825f-4c91-8e92-f3719460c66b","savedPayload":{"position":{"x":31552.95544610948,"y":31440.783608893744},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Steep","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope === \"Steep\"","id":"a838971e-d8bd-4ded-a418-453b8981ff9e","savedPayload":{"position":{"x":31138.503489096856,"y":31599.473841373},"targetPosition":{"x":31433.865217987634,"y":31346.94829135217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3694b7de-4040-4f51-a025-3d482ad6c127","savedPayload":{"position":{"x":31433.865217987634,"y":31346.94829135217},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H NOT Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerSubChannel.slope != \"Side\"","id":"fc7ab7ee-a96c-4d9a-ae8e-618cd3ee0769","savedPayload":{"position":{"x":30990.256511828706,"y":31334.90783090023},"targetPosition":{"x":31359.7059535975,"y":31214.620571594114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7f681b33-bfa1-46b5-9483-545d3f62791b","savedPayload":{"position":{"x":31359.7059535975,"y":31214.620571594114},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"d6572b86-2aaa-4223-9e6a-0206d8890778","savedPayload":{"position":{"x":30954.425687026902,"y":31034.227478934878},"targetPosition":{"x":31341.868486193758,"y":31064.086948863045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"08da37fa-d3c5-49d9-8679-5b80bdff68dd","savedPayload":{"position":{"x":31341.868486193758,"y":31064.086948863045},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"680af7d1-9436-426c-b371-0c51ca813093","savedPayload":{"position":{"x":31729.810159666646,"y":31094.209708940154},"targetPosition":{"x":31876.728519165896,"y":30731.086536864696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"ab2764bc-e2c0-40d8-930f-bd3047f39596","savedPayload":{"position":{"x":31876.728519165896,"y":30731.086536864696},"targetPosition":{"x":32052.882822905718,"y":30384.748725123394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"29130ffe-4d84-411a-90d4-3ee5a6008c21","savedPayload":{"position":{"x":30573.967407399345,"y":30865.044767338284},"targetPosition":{"x":30943.50048121601,"y":30744.974402670025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e6a32c76-eda6-4982-8a3e-220c29218ba2","savedPayload":{"position":{"x":30943.50048121601,"y":30744.974402670025},"targetPosition":{"x":31313.21782034342,"y":30624.877802919116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b31b4647-b5e2-42e5-a1e9-fa0ffafeffc8","savedPayload":{"position":{"x":31313.21782034342,"y":30624.877802919116},"targetPosition":{"x":31682.6972231694,"y":30504.724136086927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"707c998d-da1c-45c1-84de-75ac9a0898b9","savedPayload":{"position":{"x":31682.6972231694,"y":30504.724136086927},"targetPosition":{"x":32052.882822905718,"y":30384.748725123394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"5840e471-a97e-4662-8938-5f1eb21091f0","savedPayload":{"position":{"x":31057.855020732903,"y":30959.629269467543},"targetPosition":{"x":31187.737955266624,"y":30593.52204463944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"447e0866-7372-4a42-b5b1-cd05e0efe728","savedPayload":{"position":{"x":31187.737955266624,"y":30593.52204463944},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"0a447725-e6ac-45ea-bb2c-5f3b968dfc06","savedPayload":{"position":{"x":30798.054534147086,"y":30804.816204348255},"targetPosition":{"x":31058.296133226202,"y":30516.178912692925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9540f515-0603-4cda-bbbd-84d7d104a8e1","savedPayload":{"position":{"x":31058.296133226202,"y":30516.178912692925},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"ad089114-2332-4b0b-b079-4070e1baa4c5","savedPayload":{"position":{"x":30616.980526490526,"y":30561.856583368746},"targetPosition":{"x":30967.726468712906,"y":30394.73857223334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7f2c2ddf-c19f-4f32-bda3-b4a3b7e7fb90","savedPayload":{"position":{"x":30967.726468712906,"y":30394.73857223334},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"48b35276-b129-486a-a517-ca3656ff9a53","savedPayload":{"position":{"x":30542.568712081516,"y":30268.072961601036},"targetPosition":{"x":30930.501586083756,"y":30247.795826218786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"179fce4e-890b-4a07-9289-57620f55da9e","savedPayload":{"position":{"x":30930.501586083756,"y":30247.795826218786},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Steep","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope === \"Steep\"","id":"45c706e6-6a7c-4b5a-b713-2b87ac0b6550","savedPayload":{"position":{"x":30586.303004546757,"y":29968.42600372806},"targetPosition":{"x":30952.34803604804,"y":30097.916134063787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ad485330-bf10-49e7-beaa-d57e0f8564b3","savedPayload":{"position":{"x":30952.34803604804,"y":30097.916134063787},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H NOT Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerSubChannel.slope != \"Side\"","id":"a360bbf1-b177-4298-80a8-06b6062dc779","savedPayload":{"position":{"x":30741.535335287797,"y":29707.74906833391},"targetPosition":{"x":31029.961639336052,"y":29967.557447555944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f8134986-b19a-4715-bb59-dd6bc7c774a8","savedPayload":{"position":{"x":31029.961639336052,"y":29967.557447555944},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"685b785a-4196-4b0a-84c1-0c7ed54e6162","savedPayload":{"position":{"x":30984.63248820747,"y":29526.15155137087},"targetPosition":{"x":31151.60230691471,"y":29876.76561310542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"747a6cc6-2122-4f62-ab40-bdcfbb8ae702","savedPayload":{"position":{"x":31151.60230691471,"y":29876.76561310542},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e9bc25c6-7eca-42cd-a2c2-dbc196d8929a","savedPayload":{"position":{"x":31318.795481358207,"y":30227.661807410743},"targetPosition":{"x":31706.775997487235,"y":30207.837568084273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"2968a063-b746-4430-944d-95d7db806279","savedPayload":{"position":{"x":32154.805525066622,"y":29905.836523760896},"targetPosition":{"x":31979.5,"y":30099.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5242fd04-b240-476a-89e2-c89ad6520c1b","savedPayload":{"position":{"x":31562.576354452234,"y":30077.0108733803},"targetPosition":{"x":31706.775997487235,"y":30207.837568084273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"88e734b7-e242-4b34-aeca-bb71905973ab","savedPayload":{"position":{"x":31706.775997487235,"y":30207.837568084273},"targetPosition":{"x":32052.882822905718,"y":30384.748725123394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"73a50844-7c64-4816-a04d-db5da604663b","savedPayload":{"position":{"x":32052.882822905718,"y":30384.748725123394},"targetPosition":{"x":32433.355355014213,"y":30261.473769260487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"64b77603-5226-4bb0-8b4f-30f6aeed68d9","savedPayload":{"position":{"x":30111.63955779835,"y":29829.545701782456},"targetPosition":{"x":30187.057117096716,"y":29547.845858548342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"c6c5ef8c-570d-4c27-80b3-521ff8c7dfd5","savedPayload":{"position":{"x":29060.669915290688,"y":29849.453861610516},"targetPosition":{"x":29342.200079118393,"y":29774.177461183208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"64166d63-e0f3-4271-b427-ea524d9d30a9","savedPayload":{"position":{"x":29342.200079118393,"y":29774.177461183208},"targetPosition":{"x":29623.921417779344,"y":29698.795938007857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9886efaf-3e04-48ed-8e2d-24efce78bcb1","savedPayload":{"position":{"x":29623.921417779344,"y":29698.795938007857},"targetPosition":{"x":29905.533851606528,"y":29623.3668189887},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"4787a1ba-b078-454d-9fa1-2742ae00ff26","savedPayload":{"position":{"x":29905.533851606528,"y":29623.3668189887},"targetPosition":{"x":30187.057117096716,"y":29547.845858548342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"d6880769-cf36-45b9-80ab-109068583690","savedPayload":{"position":{"x":30187.057117096716,"y":29547.845858548342},"targetPosition":{"x":30392.89365093651,"y":29341.779111862103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b2c096dd-56af-48cd-9013-3005c6dbb9c9","savedPayload":{"position":{"x":30392.89365093651,"y":29341.779111862103},"targetPosition":{"x":30598.40999046724,"y":29135.918860965496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"385a3d80-aaaa-429a-9635-20a5f56982bb","savedPayload":{"position":{"x":29796.35835555227,"y":29409.162670086862},"targetPosition":{"x":30023.09432844091,"y":29226.049390760072},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"4a116f7c-9835-46f9-a487-f3314b07fc27","savedPayload":{"position":{"x":28902.861148437896,"y":29107.54072997879},"targetPosition":{"x":29190.768185411805,"y":29062.21639661277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"31330f42-a7cd-4588-b037-0fb1f4012ebe","savedPayload":{"position":{"x":29190.768185411805,"y":29062.21639661277},"targetPosition":{"x":29478.85821017733,"y":29016.87886688429},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"e6f479d2-001f-4815-81fb-0104760a2131","savedPayload":{"position":{"x":29111.88702210781,"y":28563.579783555895},"targetPosition":{"x":29295.311079015475,"y":28790.15140430324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7da4d156-7295-46ca-84ef-b1b73b22ef68","savedPayload":{"position":{"x":29295.311079015475,"y":28790.15140430324},"targetPosition":{"x":29478.85821017733,"y":29016.87886688429},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8d74abf5-702e-4ff1-b555-1127ecdcc777","savedPayload":{"position":{"x":29478.85821017733,"y":29016.87886688429},"targetPosition":{"x":29750.977246609775,"y":29121.4307820616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"8f143346-1514-49e9-af84-0198743e268b","savedPayload":{"position":{"x":29750.977246609775,"y":29121.4307820616},"targetPosition":{"x":30023.09432844091,"y":29226.049390760072},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"c068b8fa-cf10-400c-8b35-40ee201f079d","savedPayload":{"position":{"x":30023.09432844091,"y":29226.049390760072},"targetPosition":{"x":30310.901554337408,"y":29180.93088235573},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3f5fcc98-1fb5-4de2-8850-17dcc4decfd6","savedPayload":{"position":{"x":30310.901554337408,"y":29180.93088235573},"targetPosition":{"x":30598.40999046724,"y":29135.918860965496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"4fefaca7-9699-4d62-b9f2-e3f5edd1fbcf","savedPayload":{"position":{"x":30079.49724709394,"y":28870.270508476067},"targetPosition":{"x":30339.023460706743,"y":29003.074060938226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2e5f14fd-5232-41bc-b038-e069f5410cdb","savedPayload":{"position":{"x":30339.023460706743,"y":29003.074060938226},"targetPosition":{"x":30598.40999046724,"y":29135.918860965496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"4662a32b-d9af-474f-8c91-51b290ac985d","savedPayload":{"position":{"x":30334.376337737165,"y":28615.96359780366},"targetPosition":{"x":30466.495623202332,"y":28875.921911960835},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b20df87d-b9e0-4eef-86dc-1a12efdc4c68","savedPayload":{"position":{"x":30466.495623202332,"y":28875.921911960835},"targetPosition":{"x":30598.40999046724,"y":29135.918860965496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f8cd9672-6874-43aa-83fc-fe6431796152","savedPayload":{"position":{"x":30598.40999046724,"y":29135.918860965496},"targetPosition":{"x":31748.504152987472,"y":29318.386237653525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"3f1d66d7-b522-4dca-98a6-f876ee31f323","savedPayload":{"position":{"x":31577.296726741315,"y":29082.332722543688},"targetPosition":{"x":31748.504152987472,"y":29318.386237653525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"20468ec8-2523-47b4-b3b0-ac41bb89887a","savedPayload":{"position":{"x":32355.10084655184,"y":29226.12957454463},"targetPosition":{"x":32049.5,"y":29177.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d934edd3-f12a-4343-aef8-27f2531ec7e4","savedPayload":{"position":{"x":31794.09366947838,"y":29030.01992901516},"targetPosition":{"x":31748.504152987472,"y":29318.386237653525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cbae35a1-6426-4cde-a74e-6e3c8f1ef488","savedPayload":{"position":{"x":31748.504152987472,"y":29318.386237653525},"targetPosition":{"x":32433.355355014213,"y":30261.473769260487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Custom","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"e9425ea8-46fc-4bbd-96af-107b45fcde20","savedPayload":{"position":{"x":32787.40037538293,"y":28748.9879485708},"targetPosition":{"x":32746.82006427679,"y":29135.63873563346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"787093b5-b60f-4002-ae4e-7dcf26bc651c","savedPayload":{"position":{"x":32746.82006427679,"y":29135.63873563346},"targetPosition":{"x":32702.26410829101,"y":29560.101810710996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a1a3ca90-96ad-4bc3-84f0-0ead961f4ab3","savedPayload":{"position":{"x":32608.85593964742,"y":29552.080114880126},"targetPosition":{"x":32669.459407712402,"y":29936.52520297799},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"af90c747-4790-43c5-afe1-37a605571cae","savedPayload":{"position":{"x":33248.28983387989,"y":29259.76512258894},"targetPosition":{"x":33405.78863403118,"y":29615.251251332513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"64b16855-36d6-49b4-afde-9bc43b6bdd53","savedPayload":{"position":{"x":30958.49273226702,"y":35978.357887355276},"targetPosition":{"x":30812.25259285251,"y":35666.60776174702},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a06e989b-e442-43e3-b915-7aa76348e064","savedPayload":{"position":{"x":30812.25259285251,"y":35666.60776174702},"targetPosition":{"x":30670.108349528266,"y":35347.746187721605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ac15c2d4-9d65-464a-b3e6-2d28edca7308","savedPayload":{"position":{"x":30670.108349528266,"y":35347.746187721605},"targetPosition":{"x":30527.306437447696,"y":35024.57844606656},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"c81de819-5717-459a-9b89-f046c6768803","savedPayload":{"position":{"x":33711.17883883612,"y":29379.644809738806},"targetPosition":{"x":33405.78863403118,"y":29615.251251332513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bff4cb02-f3ad-4c61-9f94-cc3e2b43121c","savedPayload":{"position":{"x":34495.96331431318,"y":30406.151173773185},"targetPosition":{"x":34109.22405666117,"y":30365.45769696535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a9f77d3c-1868-4535-8117-e56d388ba5ad","savedPayload":{"position":{"x":34109.22405666117,"y":30365.45769696535},"targetPosition":{"x":33722.68793079328,"y":30324.700735716688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"42345fb4-0626-4b42-90c1-bb9f214e17d4","savedPayload":{"position":{"x":34352.02451001019,"y":30781.553036646546},"targetPosition":{"x":34037.23547026468,"y":30553.306359700626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a4bfbfb1-543e-4db0-9f39-dd6631e660eb","savedPayload":{"position":{"x":34037.23547026468,"y":30553.306359700626},"targetPosition":{"x":33722.68793079328,"y":30324.700735716688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"67342cd6-6678-401c-94e1-e0b0eda2263e","savedPayload":{"position":{"x":34039.73033660556,"y":31034.651369948344},"targetPosition":{"x":33881.030676784874,"y":30679.892072710652},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6fcc3279-0e65-424f-81b5-0ed032a461ca","savedPayload":{"position":{"x":33881.030676784874,"y":30679.892072710652},"targetPosition":{"x":33722.68793079328,"y":30324.700735716688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"47ca70bc-782c-445f-834e-921f0840eb7e","savedPayload":{"position":{"x":33643.72639272173,"y":31097.640303634198},"targetPosition":{"x":33682.86854442032,"y":30711.32469247557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"13eaacfa-d129-401a-8648-93d7954f94ac","savedPayload":{"position":{"x":33682.86854442032,"y":30711.32469247557},"targetPosition":{"x":33722.68793079328,"y":30324.700735716688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"6674b07b-d9ed-4a96-88b2-6743cd6e0852","savedPayload":{"position":{"x":33276.322508362435,"y":30929.607895929035},"targetPosition":{"x":33495.33006605626,"y":30639.147260588717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9163a9de-74b0-42f7-8ee0-85b93dee00fc","savedPayload":{"position":{"x":33495.33006605626,"y":30639.147260588717},"targetPosition":{"x":33722.68793079328,"y":30324.700735716688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"46f92b3d-10dd-484d-895b-c0d547424c3a","savedPayload":{"position":{"x":33722.68793079328,"y":30324.700735716688},"targetPosition":{"x":33564.219043595695,"y":29969.898477587783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"571d2fea-5e0b-49f3-877a-5b9b41516bfe","savedPayload":{"position":{"x":33564.219043595695,"y":29969.898477587783},"targetPosition":{"x":33405.78863403118,"y":29615.251251332513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"5639cfff-e0f1-417b-8034-adb661ded0cd"}}}],"announcements":[],"id":"75e54a0b-1af9-49d2-ab9b-461d72a731fe","savedPayload":{"position":{"x":33405.78863403118,"y":29615.251251332513},"targetPosition":{"x":33016.39430671254,"y":29788.88391817735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"3f9df9ef-2267-4a33-b2b8-fddce1f7f4d7","savedPayload":{"position":{"x":33911.744860763334,"y":29112.95246822761},"targetPosition":{"x":33773.051073781535,"y":29476.27272549899},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bb9431b0-04e2-49ad-8a1e-8336a5a90ba6","savedPayload":{"position":{"x":34416.95322326507,"y":28296.16406245135},"targetPosition":{"x":34426.305881153865,"y":28684.915659615526},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fff74a7d-6205-4d97-b32a-c31c2879e228","savedPayload":{"position":{"x":34426.305881153865,"y":28684.915659615526},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"c2308750-4fa3-45bc-8ce3-b834db3e5a75","savedPayload":{"position":{"x":34715.444342528746,"y":28347.499556006016},"targetPosition":{"x":34575.68890177326,"y":28710.585139863535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"37f1894e-e911-46df-b97d-92ad8716bbb7","savedPayload":{"position":{"x":34575.68890177326,"y":28710.585139863535},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"c815953e-7501-4c0f-bf44-b2054f27204b","savedPayload":{"position":{"x":34972.058349418905,"y":28509.362884350343},"targetPosition":{"x":34704.06500386377,"y":28791.562960245974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0abbc8b9-69b3-4051-a077-8cae2eb456e5","savedPayload":{"position":{"x":34704.06500386377,"y":28791.562960245974},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"b1db73ae-ddb7-452c-bc67-aebce55c0071","savedPayload":{"position":{"x":35147.141150108626,"y":28756.980442477477},"targetPosition":{"x":34791.679182237465,"y":28915.415108629633},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1c0d7a06-b7f3-443d-9088-177134b13b83","savedPayload":{"position":{"x":34791.679182237465,"y":28915.415108629633},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"12d82500-383b-445d-995d-7b589c84635a","savedPayload":{"position":{"x":35214.19946698019,"y":29052.728441879615},"targetPosition":{"x":34825.204368153114,"y":29063.356815214163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ea51ecbf-d848-46a7-a88d-82ec88f8480a","savedPayload":{"position":{"x":34825.204368153114,"y":29063.356815214163},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14 > chart.at01hs.base7EMA.previous.previous.ema21 - chart.at01hs.base7EMA.previous.previous.ema14","id":"c48ea949-7b3e-4c17-bff5-19d6e459d626","savedPayload":{"position":{"x":35162.832804467325,"y":29350.654711690964},"targetPosition":{"x":34799.55776558362,"y":29212.503217535977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7d987b62-66de-4d68-be64-91c124266174","savedPayload":{"position":{"x":34799.55776558362,"y":29212.503217535977},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2 previous ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7 > chart.at01hs.base7EMA.previous.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.previous.ema7","id":"6e81b8d8-148d-4a5a-8307-40c1dbccabb2","savedPayload":{"position":{"x":35001.572988601365,"y":29607.454418412428},"targetPosition":{"x":34718.71420293217,"y":29340.778111080235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"229f0b94-9e9a-45b5-87fe-8bf1427c1cb6","savedPayload":{"position":{"x":34718.71420293217,"y":29340.778111080235},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0e734dca-7ea8-4eaf-9379-48ccf8dff51e","savedPayload":{"position":{"x":34435.516882385054,"y":29074.048555754413},"targetPosition":{"x":34080.098739883826,"y":29232.794420662998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"43f6f964-e44c-4b9e-9c6e-f5f10afb891d","savedPayload":{"position":{"x":34080.098739883826,"y":29232.794420662998},"targetPosition":{"x":33773.051073781535,"y":29476.27272549899},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"5639cfff-e0f1-417b-8034-adb661ded0cd"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"427ca47c-7233-4e51-8070-0dd82e493d47","savedPayload":{"position":{"x":35209.14142961346,"y":29440.444294230565},"targetPosition":{"x":34854.12791187051,"y":29597.78782464058},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8b99cc7a-c8fd-4e57-9f24-c2576f6bab18","savedPayload":{"position":{"x":34854.12791187051,"y":29597.78782464058},"targetPosition":{"x":34498.6289280011,"y":29755.41052699473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"2217cfc4-1cdd-43b0-86ef-9957ff84c8f1","savedPayload":{"position":{"x":35224.438994290365,"y":30033.767832692964},"targetPosition":{"x":34861.984945374395,"y":29894.603901010996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6918bca4-9fcd-44a4-9ad5-d4718158d064","savedPayload":{"position":{"x":34861.984945374395,"y":29894.603901010996},"targetPosition":{"x":34498.6289280011,"y":29755.41052699473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2 prev.ema7 div 2 prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7 > chart.at01hs.base7EMA.previous.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.previous.ema7","id":"9afbcaee-9dcd-4b18-89a9-9124eea8c900","savedPayload":{"position":{"x":34815.39456925559,"y":30464.907508235723},"targetPosition":{"x":34657.375468352,"y":30110.167880558845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"91b01ae0-97af-48c7-adf3-1bb767e27f36","savedPayload":{"position":{"x":34657.375468352,"y":30110.167880558845},"targetPosition":{"x":34498.6289280011,"y":29755.41052699473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8f15adc5-8719-4f96-8560-127f7eaa0a97","savedPayload":{"position":{"x":34498.6289280011,"y":29755.41052699473},"targetPosition":{"x":34135.87591926167,"y":29615.995190587262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"b15ba6fb-7ae0-4c8f-b8ac-b76c5945dcb5","savedPayload":{"position":{"x":34135.87591926167,"y":29615.995190587262},"targetPosition":{"x":33773.051073781535,"y":29476.27272549899},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"75e54a0b-1af9-49d2-ab9b-461d72a731fe"}}}],"announcements":[],"id":"eb74a012-ed21-4ce6-8f2e-8f2ebaea9188","savedPayload":{"position":{"x":33773.051073781535,"y":29476.27272549899},"targetPosition":{"x":33405.78863403118,"y":29615.251251332513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"25d46d39-ae12-4dd8-a136-48f75b7236c1","savedPayload":{"position":{"x":34179.5922378825,"y":28952.68449982191},"targetPosition":{"x":34139.99028944556,"y":29339.458559691633},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"f4da55cf-3df3-40ed-8d05-a914a6697fae","savedPayload":{"position":{"x":34515.96881662524,"y":38207.07611964296},"targetPosition":{"x":34349.57172704476,"y":37833.12986427668},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2c64d2c0-288c-45ae-a359-5d3f44bb4c5e","savedPayload":{"position":{"x":34349.57172704476,"y":37833.12986427668},"targetPosition":{"x":34183.06978383427,"y":37458.97412745549},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"b4571357-f64e-432a-8d80-37f1dfd89e82","savedPayload":{"position":{"x":33702.17029723322,"y":38121.54097659026},"targetPosition":{"x":33942.5907257653,"y":37790.336306506026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96c5c204-c93f-494c-8691-30566d39db06","savedPayload":{"position":{"x":33942.5907257653,"y":37790.336306506026},"targetPosition":{"x":34183.06978383427,"y":37458.97412745549},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2849e6ed-91c0-4e63-a4a3-2ba4d4517008","savedPayload":{"position":{"x":34183.06978383427,"y":37458.97412745549},"targetPosition":{"x":34225.61526472877,"y":37051.44216832517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"9c2aa1f4-5ba6-4dc8-9f99-db133558f0e8","savedPayload":{"position":{"x":34526.32051478548,"y":29380.144072111412},"targetPosition":{"x":34139.99028944556,"y":29339.458559691633},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"75e54a0b-1af9-49d2-ab9b-461d72a731fe"}}}],"announcements":[],"id":"5639cfff-e0f1-417b-8034-adb661ded0cd","savedPayload":{"position":{"x":34139.99028944556,"y":29339.458559691633},"targetPosition":{"x":33773.051073781535,"y":29476.27272549899},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6cb50b3d-6bf3-422f-8d2a-d0103ea02607","savedPayload":{"position":{"x":32898.51510152386,"y":29621.695973589216},"targetPosition":{"x":32669.459407712402,"y":29936.52520297799},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"bf593624-8f03-46b0-8bcd-377c7620f1a3","savedPayload":{"position":{"x":33049.04809078839,"y":30508.634409852893},"targetPosition":{"x":32986.5,"y":30110.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8debc3c5-6540-43c3-8fa3-a0ae97e288af","savedPayload":{"position":{"x":33053.853780132136,"y":29875.553003142984},"targetPosition":{"x":32669.459407712402,"y":29936.52520297799},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"42765ad5-284e-4966-a367-76593b53bcf7","savedPayload":{"position":{"x":32669.459407712402,"y":29936.52520297799},"targetPosition":{"x":32433.355355014213,"y":30261.473769260487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"6880a8b7-7259-4fb2-abd2-b9c37a735b0e","savedPayload":{"position":{"x":33195.15644454074,"y":30303.891451120202},"targetPosition":{"x":32814.28960967772,"y":30385.03530095667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"975fec0b-d0f0-40c1-baab-1efccd8ea879","savedPayload":{"position":{"x":33080.399305638624,"y":30985.805189286868},"targetPosition":{"x":33299.65194935859,"y":30647.396421048194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8c3e1433-a8fe-4b1e-8b6a-e1b8fbbf88a3","savedPayload":{"position":{"x":33141.08859610247,"y":30597.192002896467},"targetPosition":{"x":32814.28960967772,"y":30385.03530095667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c64f618d-4336-4ff2-9dcd-3293acb4cd2a","savedPayload":{"position":{"x":32814.28960967772,"y":30385.03530095667},"targetPosition":{"x":32433.355355014213,"y":30261.473769260487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2faf1715-7b6a-4188-ac5e-c67502e18fcc","savedPayload":{"position":{"x":32433.355355014213,"y":30261.473769260487},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S5 - 4H Up","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"1bb17736-cc12-4b60-9807-632aeb2d3636","savedPayload":{"position":{"x":31803.637082753048,"y":31399.359971188216},"targetPosition":{"x":31818.655546656042,"y":30978.35806096688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2e2487a-d30a-4d70-9d70-f188409059a9","savedPayload":{"position":{"x":31818.655546656042,"y":30978.35806096688},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"21123f61-dc48-4915-b609-c3eab53b8fec","savedPayload":{"position":{"x":31525.850017503104,"y":31317.667269780963},"targetPosition":{"x":31684.17449023727,"y":30926.586714463938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"daefe7ea-f409-406c-891a-28c3001ab5c0","savedPayload":{"position":{"x":31684.17449023727,"y":30926.586714463938},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"6897670f-f952-4d83-8a95-bc82ad1d07fa","savedPayload":{"position":{"x":31267.086794496026,"y":31183.122939986682},"targetPosition":{"x":31549.575445554154,"y":30869.705854556367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b6890e81-16b4-4cd2-b1ed-0c02d51dae4b","savedPayload":{"position":{"x":31549.575445554154,"y":30869.705854556367},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"c02c6beb-0de4-4a7c-a768-7332501d45b1","savedPayload":{"position":{"x":31087.19829214889,"y":30952.77737784711},"targetPosition":{"x":31459.640019499606,"y":30754.84508175051},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3e59df4d-42a2-41e9-93ff-6d85b65d9bc2","savedPayload":{"position":{"x":31459.640019499606,"y":30754.84508175051},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"02H Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\"","id":"3257e894-69d2-4f5f-93eb-13ba4d62c5e0","savedPayload":{"position":{"x":30996.834259943073,"y":30674.322016396036},"targetPosition":{"x":31414.44419194971,"y":30615.639370576555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bd3ee521-2846-411f-a740-de3480e90421","savedPayload":{"position":{"x":31414.44419194971,"y":30615.639370576555},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerSubChannel.slope === \"Gentle\"","id":"3cef9be4-e642-4af5-b845-d63592ea22e9","savedPayload":{"position":{"x":31007.075520478138,"y":30382.25756547327},"targetPosition":{"x":31419.584840032832,"y":30469.569394286285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a23ee119-f4f5-4fe6-9013-27055d634051","savedPayload":{"position":{"x":31419.584840032832,"y":30469.569394286285},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H NOT Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerSubChannel.slope != \"Side\"","id":"7fa69f52-edfe-42b6-bda3-40e9ad7af808","savedPayload":{"position":{"x":31116.712625722495,"y":30110.76594490264},"targetPosition":{"x":31474.4688041132,"y":30333.762234397087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"50495c21-1a7b-4c38-9c6c-4cec9fb5a0f1","savedPayload":{"position":{"x":31474.4688041132,"y":30333.762234397087},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"0770176a-5af8-479d-8a7e-7bafaf04cb05","savedPayload":{"position":{"x":31312.539242984873,"y":29893.174081317917},"targetPosition":{"x":31572.61684784771,"y":30224.87918255947},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0538f837-fbba-4e7c-b1db-8a574559d584","savedPayload":{"position":{"x":31572.61684784771,"y":30224.87918255947},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b2dd0458-53e0-4d8c-8f46-bb45946cdb65","savedPayload":{"position":{"x":31832.446754081677,"y":30557.303404222446},"targetPosition":{"x":32254.205048920863,"y":30381.34366988766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"642f8610-4b1d-4178-8bae-12abf00b7812","savedPayload":{"position":{"x":32254.205048920863,"y":30381.34366988766},"targetPosition":{"x":32655.355644345367,"y":30250.83828378207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"9d2e77ef-dc06-4357-8739-44065c83f8cb","savedPayload":{"position":{"x":31152.477915800475,"y":29485.148637629547},"targetPosition":{"x":31528.139844398356,"y":29676.425811184978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"65d4f331-e81f-44d4-834b-9e786d9d2a36","savedPayload":{"position":{"x":31528.139844398356,"y":29676.425811184978},"targetPosition":{"x":31903.821467182715,"y":29867.826371430037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9753c7d0-7d95-4464-8331-a7d4bac71a9b","savedPayload":{"position":{"x":31903.821467182715,"y":29867.826371430037},"targetPosition":{"x":32279.619316977198,"y":30058.961696217935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"99db5a57-b7b5-44d2-b046-c5784a51bffc","savedPayload":{"position":{"x":32279.619316977198,"y":30058.961696217935},"targetPosition":{"x":32655.355644345367,"y":30250.83828378207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"190f6e85-1f6e-4088-a156-a82e3b0e72cb","savedPayload":{"position":{"x":31467.337122690104,"y":29960.14749786813},"targetPosition":{"x":31839.670467427597,"y":29762.856324091823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"07da9742-43f4-4bfb-8720-3272474740d1","savedPayload":{"position":{"x":31839.670467427597,"y":29762.856324091823},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"56b61beb-3df4-4577-b39e-90c3c3fc7075","savedPayload":{"position":{"x":31377.480759506314,"y":29682.883283317376},"targetPosition":{"x":31795.183056971782,"y":29624.795860058675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"34460859-dffb-4fba-93b2-fe143c3a25de","savedPayload":{"position":{"x":31795.183056971782,"y":29624.795860058675},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"16a3f794-7209-437c-a272-c1f945374af2","savedPayload":{"position":{"x":31388.098788101044,"y":29391.140811100908},"targetPosition":{"x":31800.391690375553,"y":29478.963861724398},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"28a397a8-b5f1-44fd-afe2-3e366e7e938d","savedPayload":{"position":{"x":31800.391690375553,"y":29478.963861724398},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"e6fa32e6-37a4-40ae-a68d-8d046eed13b6","savedPayload":{"position":{"x":31497.861935999175,"y":29119.985100224807},"targetPosition":{"x":31855.294923134716,"y":29343.32643845144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ba113199-ed6c-4b10-8312-4d938c7e8c39","savedPayload":{"position":{"x":31855.294923134716,"y":29343.32643845144},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"02H Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\"","id":"b76599cd-7312-4aac-9dee-8e21dac4b1c6","savedPayload":{"position":{"x":31693.887694668956,"y":28902.656474209638},"targetPosition":{"x":31953.340689905217,"y":29234.595917062725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d274dddf-c518-4602-9e20-001b6b348fde","savedPayload":{"position":{"x":31953.340689905217,"y":29234.595917062725},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerSubChannel.slope === \"Gentle\"","id":"ef31d5cf-d980-494c-a6af-1970b0e5e172","savedPayload":{"position":{"x":31952.609151253357,"y":28765.393109525332},"targetPosition":{"x":32082.723348863343,"y":29165.905849972234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1e6adf92-f58a-4ebd-a125-f9b61d51ec59","savedPayload":{"position":{"x":32082.723348863343,"y":29165.905849972234},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H NOT Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerSubChannel.slope != \"Side\"","id":"d6005505-7c26-4f5c-b94e-3c2a9e812f5c","savedPayload":{"position":{"x":32242.21296721509,"y":28724.70054371358},"targetPosition":{"x":32227.550058824927,"y":29145.566309120117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dac090bd-5be4-4193-b40b-3ce250f62d91","savedPayload":{"position":{"x":32227.550058824927,"y":29145.566309120117},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"6198450f-adf9-4208-a125-e47b101f9b41","savedPayload":{"position":{"x":32528.89266902186,"y":28785.576656817986},"targetPosition":{"x":32370.9875785451,"y":29176.112998723962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b1f55195-9a70-49fa-8025-51cdf0acdbeb","savedPayload":{"position":{"x":32370.9875785451,"y":29176.112998723962},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"196d7981-9230-4a94-b8c2-39ff25a22bb9","savedPayload":{"position":{"x":32212.846706910997,"y":29567.026440768434},"targetPosition":{"x":32525.82609477754,"y":29849.549374255723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"1457056f-1f84-46e0-a144-f2113df411f7","savedPayload":{"position":{"x":32948.80552506662,"y":29504.836523760896},"targetPosition":{"x":32773.5,"y":29698.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4e4c322c-4604-431c-912c-6227d05d2e0b","savedPayload":{"position":{"x":32515.672915242736,"y":29638.436349027324},"targetPosition":{"x":32525.82609477754,"y":29849.549374255723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1c30f570-4f8e-47cf-95c1-dd1f4244a77a","savedPayload":{"position":{"x":32525.82609477754,"y":29849.549374255723},"targetPosition":{"x":32655.355644345367,"y":30250.83828378207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"999bf574-a88b-467f-a107-7e0770e6bd53","savedPayload":{"position":{"x":32655.355644345367,"y":30250.83828378207},"targetPosition":{"x":33029.75192573155,"y":30442.29103770232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"8b0471ee-2c41-4195-99fc-4025d65a390e","savedPayload":{"position":{"x":31579.929199715712,"y":28329.796759479224},"targetPosition":{"x":31853.910414355745,"y":28171.703838281486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"a4ad262a-5f92-497f-9411-56c338d9292b","savedPayload":{"position":{"x":30754.122545444774,"y":27540.973438886354},"targetPosition":{"x":31028.003443564146,"y":27698.876056028217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f953a499-ba93-476f-8af5-61e25f1f9657","savedPayload":{"position":{"x":31031.316375796425,"y":27697.923160732968},"targetPosition":{"x":31305.440043072456,"y":27855.852868035698},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"abf13b1e-7ce1-41d1-87b8-c2e1f25c2a6d","savedPayload":{"position":{"x":31305.45786506844,"y":27855.824594382415},"targetPosition":{"x":31579.688155962634,"y":28013.767656946442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"2a270aac-6cd2-4b25-b1a4-ff18d1ccaa4b","savedPayload":{"position":{"x":31579.700107722136,"y":28013.74550246922},"targetPosition":{"x":31853.910414355745,"y":28171.703838281486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"72aea6dd-85da-4291-b993-17b6ab9827b1","savedPayload":{"position":{"x":31853.910414355745,"y":28171.703838281486},"targetPosition":{"x":32170.01608559407,"y":28171.536416079904},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3a958f65-ab12-4404-8c2d-14a1b1d80c84","savedPayload":{"position":{"x":32170.01608559407,"y":28171.536416079904},"targetPosition":{"x":32485.715088985602,"y":28171.15713012959},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"407b0f9f-573e-4def-b3d1-a9eeabde83f7","savedPayload":{"position":{"x":31659.81139987375,"y":27766.388292401327},"targetPosition":{"x":31974.524291845133,"y":27799.41763208544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"881fe7f0-1527-499a-80f5-89bcce726dac","savedPayload":{"position":{"x":31879.089046140864,"y":26402.837294233297},"targetPosition":{"x":32077.218214079843,"y":26647.230374764797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b18879da-9fa8-4926-aa76-ad8b401c37d1","savedPayload":{"position":{"x":31457.151266858393,"y":27035.4549659169},"targetPosition":{"x":31714.090630726034,"y":27222.201315049584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"c5713c55-47b3-42a8-ab19-08cf2d749396","savedPayload":{"position":{"x":32505.5752595207,"y":26300.82685022934},"targetPosition":{"x":32391.551298605093,"y":26598.486857980544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dba5f292-de5e-490c-ad0f-350ba7a79ba6","savedPayload":{"position":{"x":31747.847047714342,"y":26907.48381747061},"targetPosition":{"x":31714.090630726034,"y":27222.201315049584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6feb04a3-4e72-4cb3-8e80-d924677fd866","savedPayload":{"position":{"x":31712.19231193666,"y":27225.216897539707},"targetPosition":{"x":31841.69595034157,"y":27513.601035817344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"21268798-061f-4dbd-b3ae-62ed06497e7b","savedPayload":{"position":{"x":31846.13723379902,"y":27510.332013678686},"targetPosition":{"x":31974.524291845133,"y":27799.41763208544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"331d8a1e-2395-419d-b119-6f81a8b29085","savedPayload":{"position":{"x":31974.551736945174,"y":27799.396454380087},"targetPosition":{"x":32229.944270623495,"y":27985.490598327917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"74cbbf23-af31-4a53-9e2d-1d2be04f1f00","savedPayload":{"position":{"x":32229.970512281805,"y":27985.475088728974},"targetPosition":{"x":32485.715088985602,"y":28171.15713012959},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"532a9467-6b89-4ac8-b4e0-d5015bf2dd36","savedPayload":{"position":{"x":32291.8645065362,"y":27569.273658194026},"targetPosition":{"x":32388.85888378356,"y":27870.231835006754},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"46530eb5-5bbf-4e1a-b635-ed22afe99dfb","savedPayload":{"position":{"x":32388.863816650617,"y":27870.223459811998},"targetPosition":{"x":32485.715088985602,"y":28171.15713012959},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"9f1b0754-b1f7-4e2b-9962-5555b951e026","savedPayload":{"position":{"x":32681.756599468277,"y":27569.863267139586},"targetPosition":{"x":32583.851836528476,"y":27870.62263043729},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fc1eda7f-ae0a-46cb-89cf-8ec3bb01ad94","savedPayload":{"position":{"x":32583.85638300542,"y":27870.61332054747},"targetPosition":{"x":32485.715088985602,"y":28171.15713012959},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6da69684-0123-401b-94e8-a3ca551665d1","savedPayload":{"position":{"x":32485.956593586066,"y":28171.143151808643},"targetPosition":{"x":33227.79337521052,"y":29193.269686449254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"599dc297-9684-46c2-a061-e5f0fe08b0cc","savedPayload":{"position":{"x":33277.42298551964,"y":28880.820143413617},"targetPosition":{"x":33227.79337521052,"y":29193.269686449254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"5de18ec0-2f00-4c77-92b9-955a5923d698","savedPayload":{"position":{"x":33909.10084655184,"y":29201.12957454463},"targetPosition":{"x":33603.5,"y":29152.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"82532147-3a82-4ae5-8758-8ac080add9c7","savedPayload":{"position":{"x":33483.99096742361,"y":29007.16578768379},"targetPosition":{"x":33227.79337521052,"y":29193.269686449254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2a5f2b55-f09e-4be9-92d8-3527a134dac3","savedPayload":{"position":{"x":33227.79337521052,"y":29193.269686449254},"targetPosition":{"x":33029.75192573155,"y":30442.29103770232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Controlled Run","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"928d3add-1690-4dfd-b2f8-455668fc742c","savedPayload":{"position":{"x":34446.54072965572,"y":29566.263118815612},"targetPosition":{"x":34118.74229678125,"y":29831.655797585274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"51924a8f-f6b0-41f0-9fb5-8cd97d8d6531","savedPayload":{"position":{"x":34118.74229678125,"y":29831.655797585274},"targetPosition":{"x":33774.18998850245,"y":30110.61435184037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6ba3063d-c882-44d2-a7c4-9915a220b17e","savedPayload":{"position":{"x":33694.781614397805,"y":30034.89501850924},"targetPosition":{"x":33446.54561839851,"y":30376.4041629772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"f0ba9068-9fd8-46c1-89c6-c51c2127fad3","savedPayload":{"position":{"x":34405.03823312209,"y":30291.840263281058},"targetPosition":{"x":34253.55735010361,"y":30685.388405891084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"3d7e602e-ca81-4d0f-808c-0b6987a224d4","savedPayload":{"position":{"x":35787.30615527667,"y":35398.810989911646},"targetPosition":{"x":35627.67545695055,"y":35040.81781656664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3cf490f8-fb04-4a14-aab8-1215009b40bd","savedPayload":{"position":{"x":35627.67545695055,"y":35040.81781656664},"targetPosition":{"x":35467.72999550737,"y":34682.783353016006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"399b9981-c283-4140-8600-904bd8fae636","savedPayload":{"position":{"x":35467.72999550737,"y":34682.783353016006},"targetPosition":{"x":35307.55009149936,"y":34324.66524598421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"19a0d710-315f-43b8-b1f0-8aca0f21d63e","savedPayload":{"position":{"x":35307.55009149936,"y":34324.66524598421},"targetPosition":{"x":34253.55735010361,"y":30685.388405891084},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"6407cb18-e862-47c7-8c3d-2ac857597595","savedPayload":{"position":{"x":34530.30464769007,"y":32086.76032216619},"targetPosition":{"x":34241.56519862483,"y":31779.736945370492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3218784f-7ac6-4f71-89ca-c13de6fb1e08","savedPayload":{"position":{"x":34241.56519862483,"y":31779.736945370492},"targetPosition":{"x":33952.40791518047,"y":31472.687567332738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"31096ee3-5cb2-437c-911c-b8dac600eeda","savedPayload":{"position":{"x":34206.86770563993,"y":32276.766339734662},"targetPosition":{"x":34079.78645287453,"y":31874.887902369603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4a59f893-ce98-40a8-a456-14758c0e3b72","savedPayload":{"position":{"x":34079.78645287453,"y":31874.887902369603},"targetPosition":{"x":33952.40791518047,"y":31472.687567332738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"39e213d0-6871-4fcc-8ba7-6485b15b8010","savedPayload":{"position":{"x":33833.90249584932,"y":32307.77576085133},"targetPosition":{"x":33893.183785079695,"y":31890.35694745995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a2c15f0e-3edb-4849-862a-dce24f143be6","savedPayload":{"position":{"x":33893.183785079695,"y":31890.35694745995},"targetPosition":{"x":33952.40791518047,"y":31472.687567332738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"5d4916ab-3a59-42cd-ad42-2c9be833bb36","savedPayload":{"position":{"x":33483.71175603528,"y":32173.510662283734},"targetPosition":{"x":33718.10598421068,"y":31823.189571328785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e90a9e18-c05e-4c34-8931-f934311d8be4","savedPayload":{"position":{"x":33718.10598421068,"y":31823.189571328785},"targetPosition":{"x":33952.40791518047,"y":31472.687567332738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"1578e195-a319-4748-8204-f90d816fc4ae","savedPayload":{"position":{"x":33226.90835172038,"y":31900.891944952567},"targetPosition":{"x":33589.60744328863,"y":31686.70649617647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b48541a5-46c2-4e7e-a072-07d94c1b2ac9","savedPayload":{"position":{"x":33589.60744328863,"y":31686.70649617647},"targetPosition":{"x":33952.40791518047,"y":31472.687567332738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Down && NOT Side","code":"chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Down\" && chart.at01hs.bollingerSubChannel.slope != \"Side\"","id":"fb1f280f-632e-4097-b5da-dfdbacd169c3","savedPayload":{"position":{"x":33113.8985015411,"y":31543.13031314437},"targetPosition":{"x":33533.18645691627,"y":31507.901950537547},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0000df02-7c31-423f-a377-ee7a54e745b1","savedPayload":{"position":{"x":33533.18645691627,"y":31507.901950537547},"targetPosition":{"x":33952.40791518047,"y":31472.687567332738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a9ea4174-771b-4b50-8376-05494437d912","savedPayload":{"position":{"x":33952.40791518047,"y":31472.687567332738},"targetPosition":{"x":34103.02164774582,"y":31078.959490898098},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"730610f1-2311-4486-8905-37c9c001d766","savedPayload":{"position":{"x":34103.02164774582,"y":31078.959490898098},"targetPosition":{"x":34253.55735010361,"y":30685.388405891084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"1a7c350c-eb3a-4d8a-af57-68aabda6fea7"}}}],"announcements":[],"id":"f631120e-4f0f-41f4-85b3-74778c8060c0","savedPayload":{"position":{"x":34253.55735010361,"y":30685.388405891084},"targetPosition":{"x":33839.85571089323,"y":30526.991004243064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"e0cee676-0034-4512-9ed3-b4f61df739bf","savedPayload":{"position":{"x":35032.298511827415,"y":30664.025220907624},"targetPosition":{"x":34647.207041214446,"y":30836.09669131313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"2cd48b45-e3f4-4a76-8bf7-19470c990e1e","savedPayload":{"position":{"x":36107.40410258614,"y":30517.225318510787},"targetPosition":{"x":35780.230573333596,"y":30782.31136999146},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"17193755-5b37-4ee7-82ca-a14db05dbd30","savedPayload":{"position":{"x":35780.230573333596,"y":30782.31136999146},"targetPosition":{"x":35452.761665177284,"y":31047.66467334929},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"b8cb24ca-a2ce-4ae6-b5d9-63471af0095f","savedPayload":{"position":{"x":36284.90515124963,"y":30915.913862933052},"targetPosition":{"x":35869.021951828036,"y":30981.751761376323},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4facbae1-8244-47d9-bf81-2ebf58477c34","savedPayload":{"position":{"x":35869.021951828036,"y":30981.751761376323},"targetPosition":{"x":35452.761665177284,"y":31047.66467334929},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"4e3f128a-a12a-444d-b706-c54a910da68b","savedPayload":{"position":{"x":36239.371881971114,"y":31349.282569362353},"targetPosition":{"x":35846.26069286043,"y":31198.494132839478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e2460f9b-c5ab-4502-9b39-38159b55534b","savedPayload":{"position":{"x":35846.26069286043,"y":31198.494132839478},"targetPosition":{"x":35452.761665177284,"y":31047.66467334929},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"2a370595-33f8-4cf8-af80-e7871edcf8fa","savedPayload":{"position":{"x":35983.1325692914,"y":31702.277925781378},"targetPosition":{"x":35718.094088328195,"y":31375.038293037353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"133e251e-2ac5-4ebd-8f4c-73eb8c8ba7e1","savedPayload":{"position":{"x":35718.094088328195,"y":31375.038293037353},"targetPosition":{"x":35452.761665177284,"y":31047.66467334929},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Down && NOT Side or Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Down\" && chart.at01hs.bollingerSubChannel.slope != \"Side\" && chart.at01hs.bollingerSubChannel.slope != \"Gentle\"","id":"55435ac8-859e-4665-842c-f6603923589e","savedPayload":{"position":{"x":35584.73289655696,"y":31879.94420607729},"targetPosition":{"x":35518.86240709847,"y":31463.838891768813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ee4dad2e-77dd-4f45-9847-c3c2e563d015","savedPayload":{"position":{"x":35518.86240709847,"y":31463.838891768813},"targetPosition":{"x":35452.761665177284,"y":31047.66467334929},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"42bd767a-7a9e-40dc-9973-ad6e2411e769","savedPayload":{"position":{"x":35452.761665177284,"y":31047.66467334929},"targetPosition":{"x":35058.85073610298,"y":30896.89534740672},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"f9f58805-ee92-40ac-be13-6d242a6a476f","savedPayload":{"position":{"x":35058.85073610298,"y":30896.89534740672},"targetPosition":{"x":34647.207041214446,"y":30836.09669131313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"1a7c350c-eb3a-4d8a-af57-68aabda6fea7"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","code":"chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"32c1fa99-99b6-4bdd-ad3d-fcb3858413fe","savedPayload":{"position":{"x":35776.79345269899,"y":31909.47813652903},"targetPosition":{"x":35383.44828063969,"y":31758.293786669023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8f146719-384b-4e16-a0b3-c7501eeca1dd","savedPayload":{"position":{"x":35383.44828063969,"y":31758.293786669023},"targetPosition":{"x":34989.99851802312,"y":31606.922286071378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"b1d2c06e-3c41-474c-b241-62639db26336","savedPayload":{"position":{"x":35332.887818885174,"y":32377.069703162415},"targetPosition":{"x":35161.53533828581,"y":31992.11486723846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"655cd860-35be-4db4-8786-758133ade2f8","savedPayload":{"position":{"x":35161.53533828581,"y":31992.11486723846},"targetPosition":{"x":34989.99851802312,"y":31606.922286071378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"7b14d5ba-d792-4d0e-9c33-aae6abc015dd","savedPayload":{"position":{"x":34688.90853441315,"y":32393.902044815673},"targetPosition":{"x":34839.54017120311,"y":32000.460775300373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"41486047-0d08-4227-8d03-3e844c75a3ea","savedPayload":{"position":{"x":34839.54017120311,"y":32000.460775300373},"targetPosition":{"x":34989.99851802312,"y":31606.922286071378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"78031caf-041a-4f69-aea1-f9666aef959d","savedPayload":{"position":{"x":34989.99851802312,"y":31606.922286071378},"targetPosition":{"x":34818.416667519436,"y":31221.49527777832},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"ad7504d5-49ec-4fed-bc74-44f5f398def7","savedPayload":{"position":{"x":34818.416667519436,"y":31221.49527777832},"targetPosition":{"x":34647.207041214446,"y":30836.09669131313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"f631120e-4f0f-41f4-85b3-74778c8060c0"}}}],"announcements":[],"id":"bee5a88b-489f-48ce-be58-4531f815462a","savedPayload":{"position":{"x":34647.207041214446,"y":30836.09669131313},"targetPosition":{"x":34253.55735010361,"y":30685.388405891084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.23 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.23} else {takeProfit}","id":"6e3648cc-0d59-428a-acc2-afcf2a6e86c4","savedPayload":{"position":{"x":35364.36754637443,"y":30743.79677885484},"targetPosition":{"x":35036.48540989503,"y":31009.357437908086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"d68720e4-049f-46b9-b412-f0378573a413","savedPayload":{"position":{"x":35025.93602050318,"y":36418.753466704875},"targetPosition":{"x":34780.354363777864,"y":36112.85268730106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"609ce0eb-a9ec-495a-9f99-cd5adeaa5824","savedPayload":{"position":{"x":34780.354363777864,"y":36112.85268730106},"targetPosition":{"x":34538.157968652435,"y":35811.39270619528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"49efa579-e07f-432e-ab03-458909afe80a","savedPayload":{"position":{"x":34453.75516050035,"y":36592.785713769365},"targetPosition":{"x":34495.98103573446,"y":36202.207555966874},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"70e024f2-8dc4-443b-b7d0-8d979bd7879a","savedPayload":{"position":{"x":34495.98103573446,"y":36202.207555966874},"targetPosition":{"x":34538.157968652435,"y":35811.39270619528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Up || Side, Gentle or Medium","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Up\" || chart.at01hs.bollingerSubChannel.slope === \"Side\" || chart.at01hs.bollingerSubChannel.slope === \"Gentle\" || chart.at01hs.bollingerSubChannel.slope === \"Medium\"","id":"199cc33c-0e13-4de9-910a-c9d356e9d0d6","savedPayload":{"position":{"x":33926.32049835032,"y":36306.55289460314},"targetPosition":{"x":34232.21759903413,"y":36059.063968740695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3621eed7-d3f5-4350-8e53-6eb76377b10a","savedPayload":{"position":{"x":34232.21759903413,"y":36059.063968740695},"targetPosition":{"x":34538.157968652435,"y":35811.39270619528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dede1ba7-70c6-417a-a54a-14177afbd413","savedPayload":{"position":{"x":34538.157968652435,"y":35811.39270619528},"targetPosition":{"x":34588.210715482724,"y":35403.96530795689},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"76a5126e-7d21-4160-b25a-08631b6d519a","savedPayload":{"position":{"x":35302.17787738192,"y":31337.322692776477},"targetPosition":{"x":35036.48540989503,"y":31009.357437908086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"f631120e-4f0f-41f4-85b3-74778c8060c0"}}}],"announcements":[],"id":"1a7c350c-eb3a-4d8a-af57-68aabda6fea7","savedPayload":{"position":{"x":35036.48540989503,"y":31009.357437908086},"targetPosition":{"x":34647.207041214446,"y":30836.09669131313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a3dd2636-1b11-4d0a-8a32-945e790a97e5","savedPayload":{"position":{"x":33863.77572993962,"y":30310.715804922856},"targetPosition":{"x":33446.54561839851,"y":30376.4041629772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"0204092d-3d12-43b7-95e3-f2146a2a0324","savedPayload":{"position":{"x":33695.04809078839,"y":31034.634409852893},"targetPosition":{"x":33632.5,"y":30636.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8096b40e-271b-407a-b75c-7de3136b04a5","savedPayload":{"position":{"x":33788.0138298563,"y":30624.219309845328},"targetPosition":{"x":33446.54561839851,"y":30376.4041629772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6af83cfb-a8f9-4313-8013-495ed37ee6f5","savedPayload":{"position":{"x":33446.54561839851,"y":30376.4041629772},"targetPosition":{"x":33029.75192573155,"y":30442.29103770232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"a0def27f-df31-4c8e-b5de-12cf8376aa64","savedPayload":{"position":{"x":33575.8445053462,"y":31047.439459383855},"targetPosition":{"x":33221.458597344295,"y":30817.50496330991},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"9a31cc2b-bfb0-43b9-8ad7-0d0135c2a593","savedPayload":{"position":{"x":33396.399305638624,"y":31144.805189286868},"targetPosition":{"x":33615.65194935859,"y":30806.396421048194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"952a1b99-cc01-414a-a583-69486a70cde8","savedPayload":{"position":{"x":33309.75440271151,"y":31230.662234131596},"targetPosition":{"x":33221.458597344295,"y":30817.50496330991},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e49340f8-ed08-46a6-b4f8-b1992e7780b4","savedPayload":{"position":{"x":33221.458597344295,"y":30817.50496330991},"targetPosition":{"x":33029.75192573155,"y":30442.29103770232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f1787887-41aa-41d4-80c5-34db452cd148","savedPayload":{"position":{"x":33029.75192573155,"y":30442.29103770232},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3313017d-fdce-481b-9679-fe8e4f67cd45","savedPayload":{"position":{"x":32433.356993272086,"y":31038.668778615298},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}]} \ No newline at end of file diff --git a/Includes/Workspaces/WHB-BBTB.json b/Includes/Workspaces/WHB-BBTB.json new file mode 100644 index 000000000..3a3ef2e7e --- /dev/null +++ b/Includes/Workspaces/WHB-BBTB.json @@ -0,0 +1 @@ +{"type":"Workspace","name":"Binance - WHB - BBTB","rootNodes":[{"type":"Network","name":"Superalgos","networkNodes":[{"type":"Network Node","name":"My Computer","code":"{ \n\"host\": \"localhost\", \n\"webPort\": \"34247\", \n\"webSocketsPort\": \"8080\"\n}","dataStorage":{"type":"Data Storage","name":"New Data Storage","dataMinesData":{"type":"Data Mines Data","name":"New Data Mines Data","exchangeDataProducts":[{"type":"Exchange Data Products","name":"Binance","marketDataProducts":[{"type":"Market Data Products","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"dd7c8795-bb24-4438-9d77-b37a9000ad7f","savedPayload":{"position":{"x":39655.39345377463,"y":28084.121285348076},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"98e6c917-f4b7-4b71-9215-de3ccaf3dc0c","savedPayload":{"position":{"x":39619.08803001109,"y":27971.34006849996},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"1d7dd537-5f6f-4eb2-8e56-ddba0aef720f","savedPayload":{"position":{"x":39594.11393185164,"y":27855.840877332517},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"221c8d22-8a7f-4014-a7ed-0bafc886b123","savedPayload":{"position":{"x":39580.59887306321,"y":27738.507421368748},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"6929ebe7-6486-4299-add5-ed0282500d91","savedPayload":{"position":{"x":39578.655464896365,"y":27620.63069875915},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"4a3ed8eb-a73e-4fb4-835a-681cf47d7373","savedPayload":{"position":{"x":39588.297198778826,"y":27502.946480135615},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"5ffc6a67-e33b-422b-8e36-f9711f93c723","savedPayload":{"position":{"x":39609.428887621216,"y":27386.77785099828},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"48f7953c-f62d-4292-b042-d1ac05f8f80f","savedPayload":{"position":{"x":39641.84608404141,"y":27273.24280350331},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"3b9a3c93-6d41-440e-89a2-2fd1b2dde603","savedPayload":{"position":{"x":39685.2360649887,"y":27163.433854438405},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"70401ea0-3fed-4e40-8bba-a1e5adce9b8c","savedPayload":{"position":{"x":39739.18066448831,"y":27058.407968059906},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"06ac8eb7-8b14-42b1-9e2e-466280ade032","savedPayload":{"position":{"x":39803.16019594351,"y":26959.1762369918},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"014bba70-64d4-4035-b06d-145ee9b4c54c","savedPayload":{"position":{"x":39876.55840037216,"y":26866.694054096202},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"768cc06c-6fdf-491a-a741-5e08f0e25e38","savedPayload":{"position":{"x":39958.66834477317,"y":26781.851861425766},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"40794460-b815-498f-a245-e677de0eed86","savedPayload":{"position":{"x":40048.69920292061,"y":26705.466552453436},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"7ccbd0c1-c804-47e3-9314-14cbb756c806","savedPayload":{"position":{"x":40145.78385240617,"y":26638.273605375165},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"728d6f08-086f-41ba-9126-30ec56a45ea5","savedPayload":{"position":{"x":40248.98721974834,"y":26580.920017944973},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"1510fd36-633e-40a7-adbe-680660d64bd0","savedPayload":{"position":{"x":40357.31529765827,"y":26533.95809992029},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"2404b1eb-c7c9-46e7-b22a-93cfcc3739f4","savedPayload":{"position":{"x":40469.72474382882,"y":26497.840166222424},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"d83476c3-2f0b-4d4a-abb2-0e47ed0a421d","savedPayload":{"position":{"x":40585.132955318084,"y":26472.914171771416},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"0428f20b-9620-480e-a531-dbb2e5f59ef4","savedPayload":{"position":{"x":40702.42850753783,"y":26459.42033593334},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"fcfec9fa-1a0d-4285-9fad-4a23409f88ed","savedPayload":{"position":{"x":40820.28557415008,"y":26457.488926076465},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"08f223a8-9707-4c45-b638-1fe0e4a2b053","savedPayload":{"position":{"x":40937.95845139182,"y":26467.13880986452},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"66f1a9be-fe96-48c3-91e4-500c6e246423","savedPayload":{"position":{"x":41054.120384899,"y":26488.277064496815},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"e432c706-cbcd-4af0-b23c-b18e5b29377a","savedPayload":{"position":{"x":41167.65178678811,"y":26520.700545782674},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"7f2dfd8e-de4a-4bd1-8d34-27581f1a3ed8","savedPayload":{"position":{"x":41277.4594798642,"y":26564.097566374792},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"595d148f-6cdf-48d3-ab8f-23fba0052631","savedPayload":{"position":{"x":41382.48641024106,"y":26618.051155654128},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"2045098a-e9b4-4409-9fd9-ee7285d9b7cf","savedPayload":{"position":{"x":41481.72199276818,"y":26682.043494609432},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"295bd09d-e868-4e8b-9944-39bf6e0d7951","savedPayload":{"position":{"x":41574.21247985582,"y":26755.461785010735},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"ba6f23d4-c2e7-41b4-88a0-e14ebb34e21c","savedPayload":{"position":{"x":41659.072595416554,"y":26837.602086697607},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}},{"type":"Data Product","name":"Resistances","id":"0669d924-aace-46d1-b126-ccced8fd33cf","savedPayload":{"position":{"x":41734.78246123321,"y":26926.742016325188},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Resistances","id":"7a734501-a0fb-4305-803e-7e95d477c513"}}},{"type":"Data Product","name":"Supports","id":"5e7a0e50-e6ed-4106-8025-8b35ad6c597c","savedPayload":{"position":{"x":41803.59685318991,"y":27026.194745818015},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Supports","id":"bc3c43de-6312-47d4-ae3d-0c95c1b039e0"}}}],"id":"cbdd3605-b905-453f-9ecb-e986cb2729f9","savedPayload":{"position":{"x":24207.999751769254,"y":28942.4248575682},"targetPosition":{"x":25074.611669244932,"y":29722.715919865514},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}}],"id":"7f87ecc6-8dd3-42e9-9217-1579b64aae75","savedPayload":{"position":{"x":25074.725705182926,"y":29722.361915324287},"targetPosition":{"x":25508.405506167062,"y":30112.915970947008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"bf04ccea-266d-4115-b50e-fefdf29b873a","savedPayload":{"position":{"x":25508.405506167062,"y":30112.915970947008},"targetPosition":{"x":25942.043094058594,"y":30503.50687445451},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"i"}}},"tradingMinesData":{"type":"Trading Mines Data","name":"New Trading Mines Data","exchangeTradingProducts":[{"type":"Exchange Trading Products","name":"Binance","sessionReferences":[{"type":"Session Reference","name":"Back WHB ","marketDataProducts":{"type":"Market Data Products","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"573fb46f-78d2-4bf3-ad11-e42d2531d53e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"39d7a06d-5aad-4b03-8778-e4df8dacc825","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"7af9d35c-7464-4ed5-9ee6-ccf7a9943894","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"82b46974-7a93-4066-a3b7-378b42710364","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"109e30d5-c839-4e20-8744-2e4dc002f3a8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"3792a579-2f2c-4c29-9cb1-05e2683db5da","savedPayload":{"position":{"x":25442.41940134145,"y":28898.292141318674},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Backtesting Session","name":"Back WHB","id":"f32f1cdc-425f-4193-a43b-be9312c74234"}}},{"type":"Session Reference","name":"Paper WHB ","marketDataProducts":{"type":"Market Data Products","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"63636068-307e-4cea-b31f-f47e106cea2c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"20848048-8efb-47b1-aaf0-789d2f6c5b1d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"87b74841-4f6a-4658-b01b-7feb254b5d2f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"5e28998c-b35f-4cc0-9fd6-8ee5f5714545","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"12cd1cb4-f163-4d1b-8955-cae6904831c7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"5f2e9d8a-f1df-4efd-8232-718818cab630","savedPayload":{"position":{"x":25645.811186643416,"y":28672.384434673422},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Paper Trading Session","name":"Paper WHB","id":"2198ec50-3d31-43b7-a57d-e386bef38a93"}}},{"type":"Session Reference","name":"Live Trading WHB ","marketDataProducts":{"type":"Market Data Products","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"af19e56c-eaf1-4b0b-93f9-74b9ac1843c2","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"30ac52a8-ee50-439c-83c8-df75ab49374a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"c35fa0be-6e51-4d14-9a52-6b0174cc1aab","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"6a059555-2555-4c7f-a722-2ab4ca0440c5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"863885a8-2351-4b29-9f2e-ae3aeda223fc","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"ee314903-8ee9-4068-8a90-9452c460b910","savedPayload":{"position":{"x":25914.176401881115,"y":28529.692846346756},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Live Trading Session","name":"Live Trading WHB","id":"5335fd67-ebdc-4cfd-936d-b76af957713e"}}},{"type":"Session Reference","name":"Fwd WHB ","marketDataProducts":{"type":"Market Data Products","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"5919a710-a950-4049-9605-3f127b7fac6b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"c7030a88-152f-421c-8b32-66f3c222286a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"f4b18249-5044-4b34-83f7-3cedbbe939c5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"25db80e6-c4cf-4568-98d3-0cba83625ece","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"9b6e94d5-442d-4882-beb6-6b616adb24a7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"3892574a-ebe9-4d4d-8e79-02e6f0900c44","savedPayload":{"position":{"x":26214.957290034235,"y":28487.39268280673},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Forward Testing Session","name":"Fwd WHB","id":"0e7edb98-38ff-4516-89a1-188030989ddc"}}},{"type":"Session Reference","name":"Back BBTB Binance BTC/USDT","marketDataProducts":{"type":"Market Data Products","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Simulation","id":"653622df-b35b-4c72-9b1d-cbbea2d45a93","savedPayload":{"position":{"x":26455.573591725715,"y":27743.761762864735},"targetPosition":{"x":26685.903141314688,"y":28119.50039190219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"bcd39fee-3584-4e3a-b524-05ecb62d4582","savedPayload":{"position":{"x":26718.02998233403,"y":27678.207255468882},"targetPosition":{"x":26685.903141314688,"y":28119.50039190219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"aa60feec-3e11-4509-ab4f-5eac17ea7d3b","savedPayload":{"position":{"x":26969.002379074984,"y":27779.578235462006},"targetPosition":{"x":26685.903141314688,"y":28119.50039190219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"d6a48300-ab24-4b7b-8fb1-b431e389c7d1","savedPayload":{"position":{"x":27112.390627347257,"y":28009.145745126465},"targetPosition":{"x":26685.903141314688,"y":28119.50039190219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"1a28b5a4-fd4e-4911-a195-3a27cac67cd9","savedPayload":{"position":{"x":26685.903141314688,"y":28119.50039190219},"targetPosition":{"x":26511.90768779935,"y":28550.735424728384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"894fe28c-55f0-4ce7-a61f-31b7a58036b0","savedPayload":{"position":{"x":26512.25277222365,"y":28550.5818725418},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Backtesting Session","name":"Back BBTB","id":"5d72321e-97e7-404f-8272-809dbbf4db35"}}},{"type":"Session Reference","name":"Paper BBTB Binance BTC/USDT","marketDataProducts":{"type":"Market Data Products","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Simulation","id":"2004d488-ba55-478c-afa4-c00a555bf34c","savedPayload":{"position":{"x":26971.216338450067,"y":27957.810135682634},"targetPosition":{"x":27062.315598951875,"y":28386.268950715483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"7859d024-817a-4059-8a17-86690194f9de","savedPayload":{"position":{"x":27240.2554163473,"y":27986.018658800323},"targetPosition":{"x":27062.315598951875,"y":28386.268950715483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"11af0867-3396-48d4-b794-9d133d2d2416","savedPayload":{"position":{"x":27441.353895746524,"y":28167.02459841552},"targetPosition":{"x":27062.315598951875,"y":28386.268950715483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"dd541e63-8071-4b0f-8eb8-5fd50ef3eb82","savedPayload":{"position":{"x":27497.330846318662,"y":28431.383320855293},"targetPosition":{"x":27062.315598951875,"y":28386.268950715483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"778e7f94-7cf1-43a2-8843-2faca50fd6b2","savedPayload":{"position":{"x":27062.315598951875,"y":28386.268950715483},"targetPosition":{"x":26769.67959034035,"y":28711.749779677113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"fdfa0714-e7cc-4833-8623-2366fc36e275","savedPayload":{"position":{"x":26770.006560596325,"y":28711.63882050236},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Paper Trading Session","name":"Paper BBTB","id":"a70b66f2-4d79-4ab0-8a84-cb47fd872b79"}}},{"type":"Session Reference","name":"Live Trading BBTB Binance BTC/USDT","marketDataProducts":{"type":"Market Data Products","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Simulation","id":"84c5619b-c379-4bed-bd1c-3dccfc840fa7","savedPayload":{"position":{"x":27403.685124941287,"y":28311.811214135712},"targetPosition":{"x":27342.982549435495,"y":28745.594465055852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"9cd0c0da-e0df-4b83-a7f5-7e503f050020","savedPayload":{"position":{"x":27646.983850070956,"y":28430.393602867665},"targetPosition":{"x":27342.982549435495,"y":28745.594465055852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"8681f8d9-c6fa-4966-aa76-e627000962cb","savedPayload":{"position":{"x":27773.915926630965,"y":28669.291142164537},"targetPosition":{"x":27342.982549435495,"y":28745.594465055852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"05aa1029-fde5-4240-b5ef-31636ed817ee","savedPayload":{"position":{"x":27735.959746783006,"y":28937.181489181425},"targetPosition":{"x":27342.982549435495,"y":28745.594465055852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"c966a877-9552-4b7c-9b12-f6cbf5e631d6","savedPayload":{"position":{"x":27342.982549435495,"y":28745.594465055852},"targetPosition":{"x":26956.711147228187,"y":28951.208113208817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"9576879e-2a52-4224-b082-6d8f0a25424f","savedPayload":{"position":{"x":26957.130045686332,"y":28951.141808070486},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Live Trading Session","name":"Live Trading BBTB","id":"ef82a64d-7c70-48d5-868a-09acf97e5289"}}},{"type":"Session Reference","name":"Fwd BBTB Binance BTC/USDT","marketDataProducts":{"type":"Market Data Products","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Simulation","id":"3713af17-7ed8-4d32-abbb-66be7ba3d95b","savedPayload":{"position":{"x":27689.20756476676,"y":28792.01762932115},"targetPosition":{"x":27483.76587740709,"y":29178.885493436097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"8206a3c4-7a92-4f52-aa29-d0b912511e94","savedPayload":{"position":{"x":27877.30263666776,"y":28986.652324934446},"targetPosition":{"x":27483.76587740709,"y":29178.885493436097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"35c51f59-d967-4fb9-bf3d-ebef155fe90a","savedPayload":{"position":{"x":27914.92862485214,"y":29254.298693059718},"targetPosition":{"x":27483.76587740709,"y":29178.885493436097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"82cb4b63-c7ed-4e1c-b558-5caf08e7840e","savedPayload":{"position":{"x":27787.524400010894,"y":29492.93889701325},"targetPosition":{"x":27483.76587740709,"y":29178.885493436097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"b07b8215-91b7-4cdf-b0c9-f6de319d98af","savedPayload":{"position":{"x":27483.76587740709,"y":29178.885493436097},"targetPosition":{"x":27050.43363927934,"y":29240.015942621932},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"f28418b1-30c9-4f12-9162-b483ed79adf9","savedPayload":{"position":{"x":27051.047858882026,"y":29240.240033953312},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Forward Testing Session","name":"Fwd BBTB","id":"7b91c25c-ac96-4c3c-9e79-17c262f17180"}}}],"id":"5b3343c9-3fab-46ec-92e3-9c074759a112","savedPayload":{"position":{"x":26184.524152752183,"y":29361.71743417283},"targetPosition":{"x":26063.272886633127,"y":29932.60782590063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"29ca14e5-dabe-470a-be64-ed7996bd1e55","savedPayload":{"position":{"x":26063.272886633127,"y":29932.60782590063},"targetPosition":{"x":25942.043094058594,"y":30503.50687445451},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0726a9e4-23b6-4d27-a8de-e91a9665a8ba","savedPayload":{"position":{"x":25941.91963837964,"y":30503.45190785726},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"d"}}},"dataMining":{"type":"Data Mining","name":"New Data Mining","exchangeTasks":[{"type":"Exchange Tasks","name":"Binance","taskManagers":[{"type":"Task Manager","name":"Masters BTC/USDT","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"b1a110d4-ac93-402d-8465-a35a835d0c22","savedPayload":{"position":{"x":26295.776593937757,"y":28781.36401676669},"targetPosition":{"x":26497.181368080222,"y":28993.314045627245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"fa3aae08-61b3-4a35-af20-c1242b9954c8","savedPayload":{"position":{"x":26497.181368080222,"y":28993.314045627245},"targetPosition":{"x":26698.745648170545,"y":29205.196033081145},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"e61db3ab-b80d-4575-8da1-5598e0b1b525","savedPayload":{"position":{"x":26698.745648170545,"y":29205.196033081145},"targetPosition":{"x":26900.64484115142,"y":29417.1103410173},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"160f8edd-29cf-40c2-bb21-5f569d97f9d1","savedPayload":{"position":{"x":26900.64484115142,"y":29417.1103410173},"targetPosition":{"x":27303.642788619873,"y":29839.997018774087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"22df3948-2a73-4ca6-a927-4b722dbb27dc","savedPayload":{"position":{"x":26644.79038090263,"y":28548.29577551908},"targetPosition":{"x":26816.76829379165,"y":28784.96123948801},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"5324b18d-e2b0-495e-94a0-cfc3f3473766","savedPayload":{"position":{"x":26816.76829379165,"y":28784.96123948801},"targetPosition":{"x":26988.793025211893,"y":29021.546670103362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"d7e0c235-4024-4888-86ba-32cf5c73b852","savedPayload":{"position":{"x":26896.951155637144,"y":28149.592406858952},"targetPosition":{"x":26942.81353308944,"y":28585.46723817298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"02adb2d3-1740-4f42-975e-e0365e308b97","savedPayload":{"position":{"x":26942.81353308944,"y":28585.46723817298},"targetPosition":{"x":26988.793025211893,"y":29021.546670103362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"ccf1813f-31d2-4359-88ce-8c8e6132f222","savedPayload":{"position":{"x":26988.793025211893,"y":29021.546670103362},"targetPosition":{"x":27093.923115202073,"y":29294.80421308715},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b55a2f7e-354e-47ce-8986-a4a0079efe2b","savedPayload":{"position":{"x":27093.923115202073,"y":29294.80421308715},"targetPosition":{"x":27303.642788619873,"y":29839.997018774087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"89bf947b-a245-4aad-a2fa-472ad6f8fd2e","savedPayload":{"position":{"x":27189.754505576493,"y":28394.19710240186},"targetPosition":{"x":27257.861597975232,"y":28678.7864774289},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"df74508f-a106-4190-83ae-8c43455cd889","savedPayload":{"position":{"x":27257.861597975232,"y":28678.7864774289},"targetPosition":{"x":27326.013193344465,"y":28963.273945892004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"441d958c-4ebf-4cc5-b49e-cdaf3802efc3","savedPayload":{"position":{"x":27574.559572441973,"y":28122.40215659922},"targetPosition":{"x":27450.305086678956,"y":28542.72094770502},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"daf27799-58cb-480a-832b-4e3404882961","savedPayload":{"position":{"x":27450.305086678956,"y":28542.72094770502},"targetPosition":{"x":27326.013193344465,"y":28963.273945892004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"b1b31e7e-12f8-45fd-9508-cb82030d7507","savedPayload":{"position":{"x":27326.013193344465,"y":28963.273945892004},"targetPosition":{"x":27318.591273474813,"y":29256.0297430117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"52b4b8db-0336-423c-9343-5353225b4bfb","savedPayload":{"position":{"x":27318.591273474813,"y":29256.0297430117},"targetPosition":{"x":27303.642788619873,"y":29839.997018774087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f7457cf6-bcdc-48e1-b6e2-b45de382bc37","savedPayload":{"position":{"x":27751.8331614713,"y":28460.835841190503},"targetPosition":{"x":27706.012054908566,"y":28749.870177439392},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"5a6b7843-090c-4b3b-9be4-ed8c8d1f6935","savedPayload":{"position":{"x":27706.012054908566,"y":28749.870177439392},"targetPosition":{"x":27660.23614278188,"y":29038.812455756783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"e78c5425-7d77-47c5-bb63-db88cad6e060","savedPayload":{"position":{"x":28211.83015890913,"y":28357.252260215242},"targetPosition":{"x":27936.11776415758,"y":28697.938136515048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"4c5ed30f-d600-44e2-ac14-33ce0528178e","savedPayload":{"position":{"x":27936.11776415758,"y":28697.938136515048},"targetPosition":{"x":27660.23614278188,"y":29038.812455756783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"b4fb4df9-2d6e-4c0a-8eb5-d1bd78232d0d","savedPayload":{"position":{"x":27660.23614278188,"y":29038.812455756783},"targetPosition":{"x":27541.161002138204,"y":29306.33835211767},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"aacffa8c-5a19-423f-b551-0f9a5c46a628","savedPayload":{"position":{"x":27541.161002138204,"y":29306.33835211767},"targetPosition":{"x":27303.642788619873,"y":29839.997018774087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"7af918d3-d9a4-4553-9b3d-12224b4ad938","savedPayload":{"position":{"x":28246.09248316529,"y":28737.939326780328},"targetPosition":{"x":28093.06415879192,"y":28987.2949110211},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"0d8ca3f1-31af-40e4-8f43-4dacc8950dff","savedPayload":{"position":{"x":28093.06415879192,"y":28987.2949110211},"targetPosition":{"x":27940.057991958874,"y":29236.559755396884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f11fe52f-ba3f-486d-93f2-a6b82fa67c2d","savedPayload":{"position":{"x":28710.63353519865,"y":28818.37666235774},"targetPosition":{"x":28325.531920669902,"y":29027.44452475342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"ba74160c-2b59-497a-b895-4ddade53f72e","savedPayload":{"position":{"x":28325.531920669902,"y":29027.44452475342},"targetPosition":{"x":27940.057991958874,"y":29236.559755396884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"3a93a6a1-0d2e-475b-874e-8784dc4b6c78","savedPayload":{"position":{"x":27940.057991958874,"y":29236.559755396884},"targetPosition":{"x":27727.493045084848,"y":29438.01514560189},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"9843b9dd-ff8e-4cef-b063-730b0317420d","savedPayload":{"position":{"x":27727.493045084848,"y":29438.01514560189},"targetPosition":{"x":27303.642788619873,"y":29839.997018774087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"da37aa9d-a68c-49eb-be66-5fcc1a13ab69","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"abae0d8d-c44c-4825-b6ad-aabad604ba2d","savedPayload":{"position":{"x":28396.037566708925,"y":29421.614584380517},"targetPosition":{"x":28122.746782236274,"y":29526.34159600593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"f33858b9-8561-4f70-ba70-d8d168786321","savedPayload":{"position":{"x":28122.746782236274,"y":29526.34159600593},"targetPosition":{"x":27849.20316575137,"y":29631.049785901763},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"64e8f70e-829c-47cd-b933-f4e4dd0c90fc","savedPayload":{"position":{"x":27849.20316575137,"y":29631.049785901763},"targetPosition":{"x":27303.642788619873,"y":29839.997018774087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Resistances & Supports","bot":{"type":"Indicator Bot Instance","name":"Resistances & Supports","code":" {\n \"repo\": \"\"\n }","processes":[{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"5e0f86e6-2a43-49c2-a347-7203f0867c2d","savedPayload":{"position":{"x":29032.650008520504,"y":29659.7209500006},"targetPosition":{"x":28606.58515022879,"y":29761.864642359356},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"f9f341a9-ba04-4c03-8f3b-249e72681562","savedPayload":{"position":{"x":28606.58515022879,"y":29761.864642359356},"targetPosition":{"x":28180.254520845563,"y":29864.051049529597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"5d9b2729-43fb-4e7e-aa4f-b8477c424e51"}}},{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"9974d57e-33ac-4fcf-ad75-35a8c4dc549e","savedPayload":{"position":{"x":28740.96463022337,"y":30030.055359108075},"targetPosition":{"x":28460.59045635442,"y":29947.10439692041},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"9c93e98f-e166-4c8d-a9d7-08ada9c68eeb","savedPayload":{"position":{"x":28460.59045635442,"y":29947.10439692041},"targetPosition":{"x":28180.254520845563,"y":29864.051049529597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"be19d91b-9337-4f84-96b3-f4e54ea12df5"}}}],"id":"88a4c3b6-e148-47e8-91b2-bf72bb167dc5","savedPayload":{"position":{"x":28180.254520845563,"y":29864.051049529597},"targetPosition":{"x":27887.623437774728,"y":29856.170560424096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6c9dc449-6a37-4f34-8984-13aafed439fc","savedPayload":{"position":{"x":27887.623437774728,"y":29856.170560424096},"targetPosition":{"x":27303.642788619873,"y":29839.997018774087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ea242bf3-f7e6-431a-ab41-e022cb3ac6df","savedPayload":{"position":{"x":27304.010447981243,"y":29838.838311026542},"targetPosition":{"x":27066.688812058077,"y":30372.37934047862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta BTC/USDT","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"08b275d2-c921-49d0-a88d-5669df5c17e0","savedPayload":{"position":{"x":28228.72521288214,"y":28715.602115489775},"targetPosition":{"x":28228.861792805477,"y":29007.980855807735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"a5449b25-a98e-4fa4-87eb-5f60b967770a","savedPayload":{"position":{"x":28228.861792805477,"y":29007.980855807735},"targetPosition":{"x":28228.923628084704,"y":29300.06686932012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"287d4ba4-1404-4256-bdbb-cf2c970e5269","savedPayload":{"position":{"x":29238.98710680755,"y":28716.3520201579},"targetPosition":{"x":28734.144403315004,"y":29007.919913068403},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"05fb2b7e-6704-4f05-b12b-b590101e5ca9","savedPayload":{"position":{"x":28734.144403315004,"y":29007.919913068403},"targetPosition":{"x":28228.923628084704,"y":29300.06686932012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"f6dc278d-5a5c-4cba-b513-f0660a9f492d","savedPayload":{"position":{"x":28228.923628084704,"y":29300.06686932012},"targetPosition":{"x":27937.314391482443,"y":29805.71391222206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a15b5f86-52c2-4a22-9dd9-311d981601ba","savedPayload":{"position":{"x":27937.314391482443,"y":29805.71391222206},"targetPosition":{"x":27645.47604026171,"y":30311.719439667875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f8ea11d8-7b32-4ed0-968d-a20df0b49d7f","savedPayload":{"position":{"x":29055.03074232478,"y":29364.155049541812},"targetPosition":{"x":28883.181776512578,"y":29600.02418722641},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"e32509df-e962-4760-991e-6533a398c58e","savedPayload":{"position":{"x":28883.181776512578,"y":29600.02418722641},"targetPosition":{"x":28711.92860225306,"y":29835.824880290023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"0d4140a1-5e1f-4e2e-b540-582474e41889","savedPayload":{"position":{"x":29873.1235953913,"y":29957.84157849362},"targetPosition":{"x":29292.744441948304,"y":29896.70128328085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"96466f5a-6dd9-4db9-b30c-1c4622076d8a","savedPayload":{"position":{"x":29292.744441948304,"y":29896.70128328085},"targetPosition":{"x":28711.92860225306,"y":29835.824880290023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"fffaf3df-a88c-4d45-bb52-d02b818502b5","savedPayload":{"position":{"x":28711.92860225306,"y":29835.824880290023},"targetPosition":{"x":28178.856365881307,"y":30073.59601068226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"53fd5de3-7d70-4eb7-8dd6-976d1e188d12","savedPayload":{"position":{"x":28178.856365881307,"y":30073.59601068226},"targetPosition":{"x":27645.47604026171,"y":30311.719439667875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"78a80ff6-f4f2-4680-9a7b-65225144dd94","savedPayload":{"position":{"x":29343.123990290904,"y":30372.959616137443},"targetPosition":{"x":29064.777283488427,"y":30463.487094555752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"301a8d2c-f659-4d4b-9906-40177bdc1256","savedPayload":{"position":{"x":29064.777283488427,"y":30463.487094555752},"targetPosition":{"x":28787.38048108401,"y":30553.17433174999},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"a9291a08-1ba1-436b-b491-e759cc8fb7d1","savedPayload":{"position":{"x":29655.246962702226,"y":31333.244849074097},"targetPosition":{"x":29221.491214867103,"y":30943.007309836925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"19fff031-07c3-4836-9bca-1570eb69a931","savedPayload":{"position":{"x":29221.491214867103,"y":30943.007309836925},"targetPosition":{"x":28787.38048108401,"y":30553.17433174999},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"a81bcaf4-6c99-4b6a-8291-5fa657ae2c17","savedPayload":{"position":{"x":28787.38048108401,"y":30553.17433174999},"targetPosition":{"x":28216.87537107575,"y":30432.41340723835},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8e2997a2-13ae-464c-b980-9ec46584db3b","savedPayload":{"position":{"x":28216.87537107575,"y":30432.41340723835},"targetPosition":{"x":27645.47604026171,"y":30311.719439667875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f6802028-335d-4e31-90a7-9d608199aafb","savedPayload":{"position":{"x":28980.915039741532,"y":31358.998224580246},"targetPosition":{"x":28703.237872801612,"y":31269.241992275245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"8540fa7a-f4b2-4e97-923c-e8acd00bbb9f","savedPayload":{"position":{"x":28703.237872801612,"y":31269.241992275245},"targetPosition":{"x":28425.94036742731,"y":31179.220069122053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"51d58c12-ad1f-450e-94fd-ea0f8ad08769","savedPayload":{"position":{"x":28668.892311218562,"y":32320.886124995297},"targetPosition":{"x":28548.162305811125,"y":31749.536588300653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"c655562c-3839-42e0-9ea6-982629405d33","savedPayload":{"position":{"x":28548.162305811125,"y":31749.536588300653},"targetPosition":{"x":28425.94036742731,"y":31179.220069122053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"f84cf5d6-034c-42db-b197-e95c0228efc9","savedPayload":{"position":{"x":28425.94036742731,"y":31179.220069122053},"targetPosition":{"x":28035.898569423418,"y":30746.03018721756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"385443d2-f17f-459c-b603-58f42e5c366f","savedPayload":{"position":{"x":28035.898569423418,"y":30746.03018721756},"targetPosition":{"x":27645.47604026171,"y":30311.719439667875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"2a5cc26f-cb88-4743-b412-c33acb6aa0fb","savedPayload":{"position":{"x":27647.34057579785,"y":30311.28771626068},"targetPosition":{"x":27066.688812058077,"y":30372.37934047862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}}],"id":"b1c93d10-5dd9-4b3f-9662-b9bf7850b81a","savedPayload":{"position":{"x":27066.688812058077,"y":30372.37934047862},"targetPosition":{"x":26594.619820380485,"y":30715.592352403844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"7449a608-32ca-4285-94d1-c96791e2817f","savedPayload":{"position":{"x":26594.619820380485,"y":30715.592352403844},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"testingEnvironment":{"type":"Testing Environment","name":"New Testing Environment","exchangeTasks":[{"type":"Exchange Tasks","name":"Binance","taskManagers":[{"type":"Task Manager","name":"Paper & Backtesting Sessions WHB","tasks":[{"type":"Task","name":"Paper Trading WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"34d3f232-9fb1-47e1-97be-9233ef34db93","savedPayload":{"position":{"x":29052.627701630136,"y":31135.06382724232},"targetPosition":{"x":29337.807252974846,"y":31198.220154739254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"969cd1c0-1d6d-4667-a810-d18369410d94","savedPayload":{"position":{"x":29209.24392819175,"y":30935.757548585058},"targetPosition":{"x":29337.807252974846,"y":31198.220154739254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"4af996da-6714-41ac-ad51-5706f41b40f0","savedPayload":{"position":{"x":29462.62850797251,"y":30933.918764789316},"targetPosition":{"x":29337.807252974846,"y":31198.220154739254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"963db77e-0405-4fc4-8780-1b7fa93f41a6","savedPayload":{"position":{"x":29622.24848898748,"y":31131.02036026933},"targetPosition":{"x":29337.807252974846,"y":31198.220154739254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"cd125f30-93e7-4786-b1e1-33274bd2877c","savedPayload":{"position":{"x":29567.738956875506,"y":31378.46391868767},"targetPosition":{"x":29337.807252974846,"y":31198.220154739254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"f8fcac2e-2a52-4189-a95d-77e83b5a6f98","savedPayload":{"position":{"x":29340.25169858352,"y":31490.1584281112},"targetPosition":{"x":29337.807252974846,"y":31198.220154739254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b5ba0c98-c052-4195-92c2-119652d91c32","savedPayload":{"position":{"x":29337.807252974846,"y":31198.220154739254},"targetPosition":{"x":29110.755902875182,"y":31381.988173338526},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2198ec50-3d31-43b7-a57d-e386bef38a93","savedPayload":{"position":{"x":29110.755902875182,"y":31381.988173338526},"targetPosition":{"x":28884.215438579347,"y":31565.56109200868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"h"},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"a239a374-497a-43f9-8382-5277410b1c2d"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"06c8bcea-4122-4a35-8db3-a1ddc7657e4b","savedPayload":{"position":{"x":29156.64234709289,"y":31670.346274690583},"targetPosition":{"x":28884.215438579347,"y":31565.56109200868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"731abb89-b672-41b1-b403-2932226d3df7","savedPayload":{"position":{"x":28884.215438579347,"y":31565.56109200868},"targetPosition":{"x":28596.020425087678,"y":31611.102134635385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"4f784203-664a-4791-9e3a-7565f0a11e79","savedPayload":{"position":{"x":28596.020425087678,"y":31611.102134635385},"targetPosition":{"x":28228.409970971898,"y":31669.380724593575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"e04e8948-849d-4161-af18-4644990d0b49","savedPayload":{"position":{"x":28224.19607449802,"y":31713.88183371696},"targetPosition":{"x":27647.422736912766,"y":31805.536210975744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Backtesting WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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.01\n}","id":"48e2c5e0-8f9e-40f0-8ab6-2ecc57aa3039","savedPayload":{"position":{"x":29098.920684638124,"y":31935.578436856456},"targetPosition":{"x":29314.165894324222,"y":32132.818618550857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{}","id":"e8703a6e-e6c0-485f-a27d-a9e60a57a0a6","savedPayload":{"position":{"x":29333.996681918772,"y":31841.270777412603},"targetPosition":{"x":29314.165894324222,"y":32132.818618550857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"initialDatetime\": \"2020-01-01\",\n\"finalDatetime\": \"2020-12-31\"\n}","id":"08815e4e-c066-4914-85b7-a4f7ce4748a5","savedPayload":{"position":{"x":29554.515259575393,"y":31966.470524199463},"targetPosition":{"x":29314.165894324222,"y":32132.818618550857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-hs\"\n}","id":"805c356b-4a05-424e-ba29-260e35c11943","savedPayload":{"position":{"x":29594.18829545019,"y":32216.776765839957},"targetPosition":{"x":29314.165894324222,"y":32132.818618550857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"bcccd1fd-188c-43e4-abfc-4bc89d6adecc","savedPayload":{"position":{"x":29423.14885926479,"y":32404.00013374877},"targetPosition":{"x":29314.165894324222,"y":32132.818618550857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"ae594b88-e40b-408b-8082-3ba92ffc2c8c","savedPayload":{"position":{"x":29170.49213662585,"y":32387.013069451525},"targetPosition":{"x":29314.165894324222,"y":32132.818618550857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c220646b-827b-43c8-ab7e-5ecd53b4070a","savedPayload":{"position":{"x":29314.165894324222,"y":32132.818618550857},"targetPosition":{"x":29025.65018120069,"y":32178.408356658765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f32f1cdc-425f-4193-a43b-be9312c74234","savedPayload":{"position":{"x":29025.65018120069,"y":32178.408356658765},"targetPosition":{"x":28737.522281443027,"y":32223.956854586642},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"a239a374-497a-43f9-8382-5277410b1c2d"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"02fe6309-40c0-4e31-9aed-fbf8f434bfa9","savedPayload":{"position":{"x":28921.09178706593,"y":32451.099870736933},"targetPosition":{"x":28737.522281443027,"y":32223.956854586642},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"dd22d90b-5a91-4723-9f65-17eb94fb4d9d","savedPayload":{"position":{"x":28737.522281443027,"y":32223.956854586642},"targetPosition":{"x":28465.174733106793,"y":32119.396663156193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"0942010b-12f0-4be9-979d-c3e1bbc4eb74","savedPayload":{"position":{"x":28465.174733106793,"y":32119.396663156193},"targetPosition":{"x":28192.49784197477,"y":32014.807646221823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a8ff6583-b710-44b1-8768-d8a70bdf22c9","savedPayload":{"position":{"x":28192.49784197477,"y":32014.807646221823},"targetPosition":{"x":27647.422736912766,"y":31805.536210975744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"caed4703-e134-4a48-9062-fe5277b7d95f","savedPayload":{"position":{"x":27647.422736912766,"y":31805.536210975744},"targetPosition":{"x":27066.792293943563,"y":31744.7588601507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task Manager","name":"Paper & Backtesting Sessions BBBT","tasks":[{"type":"Task","name":"Paper Trading BBTB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Paper Trading Session","name":"Paper BBTB","code":"{\n\"folderName\": \"Paper-BBTB\"\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"413c658b-ecb1-412a-ad17-dd21a6cf9edf","savedPayload":{"position":{"x":28577.218048119335,"y":33214.61443768653},"targetPosition":{"x":28664.621916946347,"y":33492.7824101105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"937d18df-32f8-4619-93a0-df66d785f502","savedPayload":{"position":{"x":28827.924173155072,"y":33250.64446694912},"targetPosition":{"x":28664.621916946347,"y":33492.7824101105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"8d7017e0-2478-4f6f-9a06-97e02f485e0d","savedPayload":{"position":{"x":28956.38557439978,"y":33469.35274323227},"targetPosition":{"x":28664.621916946347,"y":33492.7824101105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"fbd66c8d-fb89-41ef-a7d8-ddc1892ea0b7","savedPayload":{"position":{"x":28865.514880797462,"y":33705.92010145626},"targetPosition":{"x":28664.621916946347,"y":33492.7824101105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"71601678-f7fe-4093-81a7-2e7c4f15b36c","savedPayload":{"position":{"x":28624.08595142196,"y":33782.534352456336},"targetPosition":{"x":28664.621916946347,"y":33492.7824101105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"77080ae1-9bce-474f-b5b6-31c227d35298","savedPayload":{"position":{"x":28413.669360442556,"y":33641.26741331801},"targetPosition":{"x":28664.621916946347,"y":33492.7824101105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6681be32-37aa-4703-8cbe-3766844aba04","savedPayload":{"position":{"x":28664.621916946347,"y":33492.7824101105},"targetPosition":{"x":28392.16644759752,"y":33388.533157515434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a70b66f2-4d79-4ab0-8a84-cb47fd872b79","savedPayload":{"position":{"x":28392.16644759752,"y":33388.533157515434},"targetPosition":{"x":28119.251580442222,"y":33283.55066717411},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"h"},"referenceParent":{"type":"Trading System","name":"BB Top Bounce","id":"3313017d-fdce-481b-9679-fe8e4f67cd45"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"53fd90cb-3efc-47b2-90f5-0f8010fc6ef9","savedPayload":{"position":{"x":28165.35010691224,"y":33572.358526019954},"targetPosition":{"x":28119.251580442222,"y":33283.55066717411},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"b3dec672-be14-4dca-8be4-5b495373b662","savedPayload":{"position":{"x":28119.251580442222,"y":33283.55066717411},"targetPosition":{"x":27936.28432847417,"y":33057.697894745914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"4315bf06-ef80-490e-af6f-d00b72bfa20d","savedPayload":{"position":{"x":27936.28432847417,"y":33057.697894745914},"targetPosition":{"x":27671.52384061621,"y":32731.00626930576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"b55596f0-998c-4efa-ae49-4645b999dc38","savedPayload":{"position":{"x":27671.85700080378,"y":32731.681235873046},"targetPosition":{"x":27304.15951551628,"y":32278.029862814696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Backtesting BBTB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Backtesting Session","name":"Back BBTB","code":"{\n\"folderName\": \"Back-BBTB\"\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"Bitcoin","code":"{\n\"initialBalance\": 1,\n\"minimumBalance\": 0.01\n}","id":"11c310f7-a52f-467f-afbc-57c04639a979","savedPayload":{"position":{"x":27916.795420742106,"y":33600.00436517344},"targetPosition":{"x":27853.65754832969,"y":33885.04791890786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{}","id":"208693a0-838b-4992-9344-4b798acce6c2","savedPayload":{"position":{"x":28116.11268334511,"y":33756.61311225912},"targetPosition":{"x":27853.65754832969,"y":33885.04791890786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"initialDatetime\": \"2020-01-01\",\n\"finalDatetime\": \"2020-12-31\"\n}","id":"48fa15e9-aff6-4521-b5e3-a45e1a01d9b1","savedPayload":{"position":{"x":28117.991964072844,"y":34009.651469203156},"targetPosition":{"x":27853.701490435982,"y":33884.74875041444},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-hs\"\n}","id":"d3a5cba8-3272-43c9-89d7-a40de0f49045","savedPayload":{"position":{"x":27920.89482825893,"y":34169.2557125692},"targetPosition":{"x":27853.701490435982,"y":33884.74875041444},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"b764240b-aec9-4ddc-bac7-99bb34bc2163","savedPayload":{"position":{"x":27673.4448022947,"y":34114.733404021514},"targetPosition":{"x":27853.701490435982,"y":33884.74875041444},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"e233bb2d-080c-4f2e-9188-edba85ae74d9","savedPayload":{"position":{"x":27561.72368870078,"y":33887.24808410665},"targetPosition":{"x":27853.701490435982,"y":33884.74875041444},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e3473182-57b9-41f8-8d5a-1bb13c8b5441","savedPayload":{"position":{"x":27853.65754832969,"y":33885.04791890786},"targetPosition":{"x":27669.897099976068,"y":33657.98390960074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5d72321e-97e7-404f-8272-809dbbf4db35","savedPayload":{"position":{"x":27669.897099976068,"y":33657.98390960074},"targetPosition":{"x":27486.332477868265,"y":33431.30375709976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"BB Top Bounce","id":"3313017d-fdce-481b-9679-fe8e4f67cd45"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"eb149e85-7202-4f3f-832f-0b25c4d97b0b","savedPayload":{"position":{"x":27381.507069524552,"y":33703.86148817666},"targetPosition":{"x":27486.332477868265,"y":33431.30375709976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"919e2ba3-4089-4729-add5-0be715c27ceb","savedPayload":{"position":{"x":27486.332477868265,"y":33431.30375709976},"targetPosition":{"x":27440.84692165274,"y":33143.162574701586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"a1d698ca-cc6f-4ba2-8a19-c72a1fda3547","savedPayload":{"position":{"x":27440.84692165274,"y":33143.162574701586},"targetPosition":{"x":27395.265695962695,"y":32854.72302350608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"648b9d39-4e74-4c95-8ad6-8fd048e86a51","savedPayload":{"position":{"x":27395.265695962695,"y":32854.72302350608},"targetPosition":{"x":27304.15951551628,"y":32278.029862814696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"e5b805c8-a056-4356-894f-2dbc5af0e663","savedPayload":{"position":{"x":27304.15951551628,"y":32278.029862814696},"targetPosition":{"x":27066.792293943563,"y":31744.7588601507},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"f69b2c23-ccc5-47fb-9945-9b7badcea636","savedPayload":{"position":{"x":27066.792293943563,"y":31744.7588601507},"targetPosition":{"x":26594.621065894262,"y":31401.865452889477},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"2ae685a1-25c6-4bd5-b559-d83e373e8d45","savedPayload":{"position":{"x":26594.621065894262,"y":31401.865452889477},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"productionEnvironment":{"type":"Production Environment","name":"New Production Environment","exchangeTasks":[{"type":"Exchange Tasks","name":"Binance","taskManagers":[{"type":"Task Manager","name":"Fwd & Live Sessions WHB","tasks":[{"type":"Task","name":"Fwd Testing WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"079cdfaf-2d41-4fa3-a68d-9e2620de0cdd","savedPayload":{"position":{"x":26910.021545551564,"y":33878.20538019948},"targetPosition":{"x":26938.460095448998,"y":34169.41187072626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"5f5ec9f1-c4e2-4ca7-94c4-bad619511e5c","savedPayload":{"position":{"x":27148.01063503007,"y":33966.01103908403},"targetPosition":{"x":26938.460095448998,"y":34169.41187072626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"d5fda5e7-7571-41e7-b19a-a721d73fd8f5","savedPayload":{"position":{"x":27228.223941558408,"y":34206.05209392076},"targetPosition":{"x":26938.460095448998,"y":34169.41187072626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"f6ed8468-7fd1-4aac-848b-647973e41b04","savedPayload":{"position":{"x":27090.039351877273,"y":34419.33692857233},"targetPosition":{"x":26938.460095448998,"y":34169.41187072626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"da2d51df-7c40-4bf0-80ec-63a38992fcfe","savedPayload":{"position":{"x":26838.05746723943,"y":34444.00375753654},"targetPosition":{"x":26938.460095448998,"y":34169.41187072626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"4e1b48a9-df71-402e-9159-66c49cdc08b3","savedPayload":{"position":{"x":26661.978984189693,"y":34261.43705453156},"targetPosition":{"x":26938.460095448998,"y":34169.41187072626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b9e7a071-26dd-4796-8704-2314f6c2c603","savedPayload":{"position":{"x":26938.460095448998,"y":34169.41187072626},"targetPosition":{"x":26693.307245106695,"y":34009.68815888209},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0e7edb98-38ff-4516-89a1-188030989ddc","savedPayload":{"position":{"x":26693.307245106695,"y":34009.68815888209},"targetPosition":{"x":26449.279251038242,"y":33851.13016897596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"a239a374-497a-43f9-8382-5277410b1c2d"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","keyInstance":{"type":"Key Instance","name":"WHB","id":"8d9b39d4-b764-486d-a2f6-e84391bbd818","savedPayload":{"position":{"x":26419.029585690965,"y":34434.89440876462},"targetPosition":{"x":26433.64744618784,"y":34142.481013707016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"WHB","id":"88eab4e5-3be4-4982-93fa-e95bcb1ab559"}}},"id":"f122bd16-0c85-43d1-932a-57a710db8013","savedPayload":{"position":{"x":26433.64744618784,"y":34142.481013707016},"targetPosition":{"x":26449.279251038242,"y":33851.13016897596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"a034c52a-8924-4e60-9653-f6da1ea6f8b5","savedPayload":{"position":{"x":26449.279251038242,"y":33851.13016897596},"targetPosition":{"x":26316.92939841393,"y":33591.09577845997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"74f70f20-305b-4e90-aad6-1bcd2ff8ee1c","savedPayload":{"position":{"x":26316.92939841393,"y":33591.09577845997},"targetPosition":{"x":26148.05085911208,"y":33259.678571238874},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"749d6eaf-1548-47ca-901d-1cfc1a21b0a5","savedPayload":{"position":{"x":26148.185391939474,"y":33260.11678777981},"targetPosition":{"x":25882.89596847656,"y":32739.931714913597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Live Trading WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"166cdb09-90e0-49a1-9c38-b57364287620","savedPayload":{"position":{"x":26207.35698388794,"y":34160.59310055196},"targetPosition":{"x":26086.395085254208,"y":34426.258327115596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"5bf43efd-3dd2-44f2-b25e-f6c7a5fda17e","savedPayload":{"position":{"x":26369.75442684439,"y":34355.228249739725},"targetPosition":{"x":26086.395085254208,"y":34426.258327115596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"88d7104b-7925-408a-b490-bbbaaafd7a5f","savedPayload":{"position":{"x":26318.845062496304,"y":34603.25568669417},"targetPosition":{"x":26086.413368756203,"y":34426.08355791297},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"1c158006-c3c1-4157-8ad6-f08ee2b769d6","savedPayload":{"position":{"x":26092.874200360213,"y":34718.38625397416},"targetPosition":{"x":26086.413368756203,"y":34426.08355791297},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"01064db9-f153-4d30-a26c-d9d339e7a856","savedPayload":{"position":{"x":25862.167511619704,"y":34613.56876576114},"targetPosition":{"x":26086.413368756203,"y":34426.08355791297},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"06f7cc4e-6112-4ac8-9f20-610b357a58d2","savedPayload":{"position":{"x":25800.197082576826,"y":34368.03388719381},"targetPosition":{"x":26086.413368756203,"y":34426.08355791297},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b86ce81f-5084-48d1-8a45-8f45fbe97891","savedPayload":{"position":{"x":26086.395085254208,"y":34426.258327115596},"targetPosition":{"x":25953.92192633552,"y":34165.91590660676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5335fd67-ebdc-4cfd-936d-b76af957713e","savedPayload":{"position":{"x":25953.92192633552,"y":34165.91590660676},"targetPosition":{"x":25821.59695197759,"y":33905.994769795616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"a239a374-497a-43f9-8382-5277410b1c2d"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","keyInstance":{"type":"Key Instance","name":"WHB","id":"a0061ba6-2359-4c5c-822d-1e17aaf7c2fd","savedPayload":{"position":{"x":25503.085530263997,"y":34395.63059680166},"targetPosition":{"x":25662.278338953274,"y":34150.77458860244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"WHB","id":"88eab4e5-3be4-4982-93fa-e95bcb1ab559"}}},"id":"954b1896-121c-41e2-9608-5b46a70082fb","savedPayload":{"position":{"x":25662.278338953274,"y":34150.77458860244},"targetPosition":{"x":25821.59695197759,"y":33905.994769795616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"8cb4d9af-0f53-4b33-9174-330da87b166c","savedPayload":{"position":{"x":25821.59695197759,"y":33905.994769795616},"targetPosition":{"x":25836.93152920813,"y":33614.66299269097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"8b30643a-eb54-4d6f-958d-8393f9a1e5f4","savedPayload":{"position":{"x":25836.93152920813,"y":33614.66299269097},"targetPosition":{"x":25852.21849648567,"y":33323.002646616835},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"52ec5181-d057-42e3-a6e8-407d20d4e641","savedPayload":{"position":{"x":25852.21849648567,"y":33323.002646616835},"targetPosition":{"x":25882.89596847656,"y":32739.931714913597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1bbb36fe-edbf-49d8-9827-85a1345c0289","savedPayload":{"position":{"x":25882.89596847656,"y":32739.931714913597},"targetPosition":{"x":25761.56531839709,"y":32168.94660795601},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"l"}}},{"type":"Task Manager","name":"Fwd & Live Sessions BBTB","tasks":[{"type":"Task","name":"Fwd Testing BBTB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Forward Testing Session","name":"Fwd BBTB","code":"{\n\"folderName\": \"Fwd-BBTB\",\n\"balancePercentage\": 10\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"3a75a6ee-f188-4bd1-81ff-8018094d1eb0","savedPayload":{"position":{"x":24857.094321966553,"y":34017.30375601778},"targetPosition":{"x":24619.145851955524,"y":34187.288899821026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"b0d3da2f-f67f-473e-9f61-1296a9bfd952","savedPayload":{"position":{"x":24900.379262240484,"y":34266.88105509463},"targetPosition":{"x":24619.145851955524,"y":34187.288899821026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"6b4f8416-a9ec-47f5-ac7b-3c5005733328","savedPayload":{"position":{"x":24732.106855452465,"y":34456.57555177858},"targetPosition":{"x":24619.145851955524,"y":34187.288899821026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"ab1e8a12-e834-4062-b411-dbf174dcee6d","savedPayload":{"position":{"x":24479.061255754154,"y":34443.320476277215},"targetPosition":{"x":24619.145851955524,"y":34187.288899821026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"97669707-03fd-488c-bb1d-1ee4cafcf93a","savedPayload":{"position":{"x":24331.540268704146,"y":34237.15844285456},"targetPosition":{"x":24619.145851955524,"y":34187.288899821026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"e92c18cc-6c10-4231-bd61-ec3561875ff6","savedPayload":{"position":{"x":24400.852816728264,"y":33993.59591676479},"targetPosition":{"x":24619.145851955524,"y":34187.288899821026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"231917f8-cc46-4f5b-834c-0b0ff89dd932","savedPayload":{"position":{"x":24619.145851955524,"y":34187.288899821026},"targetPosition":{"x":24634.678502791634,"y":33895.04800320409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7b91c25c-ac96-4c3c-9e79-17c262f17180","savedPayload":{"position":{"x":24634.678502791634,"y":33895.04800320409},"targetPosition":{"x":24649.52986998621,"y":33604.070042960644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Trading System","name":"BB Top Bounce","id":"3313017d-fdce-481b-9679-fe8e4f67cd45"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","keyInstance":{"type":"Key Instance","name":"BBTB","id":"98b73dbc-52e7-4292-9051-d0cb41db5f72","savedPayload":{"position":{"x":24129.27847262082,"y":33869.54908085728},"targetPosition":{"x":24389.757289928526,"y":33736.110358887185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"BBTB","id":"bfea6ed0-673c-4245-9b5e-7837785a63c9"}}},"id":"ea2bb934-5c1f-4006-87af-865cf23f968c","savedPayload":{"position":{"x":24389.757289928526,"y":33736.110358887185},"targetPosition":{"x":24649.52986998621,"y":33604.070042960644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"c639e264-5ac1-41d3-8b56-c4c4cd46af16","savedPayload":{"position":{"x":24649.52986998621,"y":33604.070042960644},"targetPosition":{"x":24808.52711960168,"y":33359.15206815564},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"e6d0e073-c898-41ec-9f84-611faf9732fa","savedPayload":{"position":{"x":24808.52711960168,"y":33359.15206815564},"targetPosition":{"x":25009.92952810802,"y":33048.84834292683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"29dd451d-55ac-4d0c-9b16-7e0da9bcd453","savedPayload":{"position":{"x":25009.75646234641,"y":33049.28408775498},"targetPosition":{"x":25327.634223354067,"y":32559.44137188344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Live Trading BBTB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Live Trading Session","name":"Live Trading BBTB","code":"{\n\"folderName\": \"Live-WHB\"\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"d5a1b4b6-2bfc-4772-9c60-0c55f2abb0b1","savedPayload":{"position":{"x":24259.618474998526,"y":33550.38997018714},"targetPosition":{"x":23969.0203188401,"y":33578.33861522536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"7354aa3e-f4a4-47b2-a709-50cc86d27d9d","savedPayload":{"position":{"x":24172.273320977674,"y":33788.15697242058},"targetPosition":{"x":23969.0203188401,"y":33578.33861522536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"de6e1749-8ecd-4cae-8a14-c2e51040ee7c","savedPayload":{"position":{"x":23931.879926717836,"y":33868.123351707094},"targetPosition":{"x":23969.00251741101,"y":33578.19064801833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"a9e15ef3-5525-4394-b2df-27ca00c3d946","savedPayload":{"position":{"x":23719.184485084857,"y":33729.9822391363},"targetPosition":{"x":23969.00251741101,"y":33578.19064801833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"d4e3d01f-dd4f-4e1d-a19f-309b3e06b627","savedPayload":{"position":{"x":23694.586833148824,"y":33477.71470146798},"targetPosition":{"x":23969.11089015984,"y":33578.12266400162},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"9f20c206-6968-406a-b3ea-fe7279839093","savedPayload":{"position":{"x":23876.33579466623,"y":33301.39303329165},"targetPosition":{"x":23969.0203188401,"y":33578.33861522536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c1085d75-2c80-4b85-937c-fd9d0bda0569","savedPayload":{"position":{"x":23969.0203188401,"y":33578.33861522536},"targetPosition":{"x":24128.10352373198,"y":33333.40041182395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ef82a64d-7c70-48d5-868a-09acf97e5289","savedPayload":{"position":{"x":24128.10352373198,"y":33333.40041182395},"targetPosition":{"x":24286.96301172984,"y":33088.829925425365},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"BB Top Bounce","id":"3313017d-fdce-481b-9679-fe8e4f67cd45"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","keyInstance":{"type":"Key Instance","name":"BBTB","id":"93b6328f-bf96-4ee9-95de-ef6dcc2f0d16","savedPayload":{"position":{"x":23703.633646531925,"y":33057.8396326685},"targetPosition":{"x":23995.297705823767,"y":33073.261894847776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"BBTB","id":"bfea6ed0-673c-4245-9b5e-7837785a63c9"}}},"id":"e5be2d9b-1d10-4752-8dda-3bd86a1d2e87","savedPayload":{"position":{"x":23995.297705823767,"y":33073.261894847776},"targetPosition":{"x":24286.96301172984,"y":33088.829925425365},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"51e40ee6-299f-4916-b55b-2d5bb47f9c9d","savedPayload":{"position":{"x":24286.96301172984,"y":33088.829925425365},"targetPosition":{"x":24546.963182989177,"y":32956.62106530579},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"d5320e1e-a4eb-4900-a6fc-8de4467e4363","savedPayload":{"position":{"x":24546.963182989177,"y":32956.62106530579},"targetPosition":{"x":24807.252562921705,"y":32824.228407700946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e3796688-b650-45cd-a0c0-24fe3a2e0d74","savedPayload":{"position":{"x":24807.252562921705,"y":32824.228407700946},"targetPosition":{"x":25327.634223354067,"y":32559.44137188344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0357b28b-fc1c-47aa-9b37-1106936ea9b2","savedPayload":{"position":{"x":25327.634223354067,"y":32559.44137188344},"targetPosition":{"x":25761.56531839709,"y":32168.94660795601},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"l"}}}],"id":"fa859e89-960f-4fe1-8e68-1e41b0ea80ec","savedPayload":{"position":{"x":25761.56531839709,"y":32168.94660795601},"targetPosition":{"x":25941.939342791604,"y":31613.968640403935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"32656457-f603-416a-b805-546642094dc4","savedPayload":{"position":{"x":25941.939342791604,"y":31613.968640403935},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"u"}}},"id":"ce601334-52c5-4ffb-ab61-49ca1943a15a","savedPayload":{"position":{"x":26122.378344035824,"y":31058.919069244217},"targetPosition":{"x":24954.356993272086,"y":31057.918778615294},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"r"}}}],"id":"efbbc81b-93c8-4ce0-873e-675f39d333e8","savedPayload":{"position":{"x":24954.356993272086,"y":31057.918778615294},"targetPosition":{"x":24954.356993272086,"y":31057.918778615294},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"n"}}},{"type":"Crypto Ecosystem","name":"My Crypto Ecosystem","cryptoExchanges":[{"type":"Crypto Exchanges","name":"Tested","exchanges":[{"type":"Crypto Exchange","name":"Binance","code":"{\n \"codeName\": \"binance\",\n \"API\": [\n {\n \"method\": \"fetchTrades\",\n \"fetchType\": \"by Id\",\n \"fetchTradesMethod\": \"publicGetHistoricalTrades\",\n \"firstId\": \"f\"\n }\n ]\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"EUR\"} \n}","assets":[{"type":"Asset","name":"Bitcoin","code":"{ \n\"codeName\": \"BTC\"\n}","id":"b2814a75-fd57-45c4-a3cb-af276793e573","savedPayload":{"position":{"x":14195.09373519908,"y":30498.57953967648},"targetPosition":{"x":14305.025652484152,"y":30812.79046466984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Tether","code":"{ \n\"codeName\": \"USDT\"\n}","id":"04c5f172-6976-4557-b95f-38004b5201a6","savedPayload":{"position":{"x":14342.003487956641,"y":30482.411278035917},"targetPosition":{"x":14305.025652484152,"y":30812.79046466984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Ether","code":"{ \n\"codeName\": \"ETH\"\n}","id":"4175d47c-e12c-4902-b026-f4999a6d07a4","savedPayload":{"position":{"x":14481.605152989256,"y":30531.154856472},"targetPosition":{"x":14305.025652484152,"y":30812.79046466984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Monero","code":"{ \n\"codeName\": \"XMR\"\n}","id":"e3b61070-77b9-4dcf-9862-7f05ffa237f3","savedPayload":{"position":{"x":14586.128143352431,"y":30635.66020347477},"targetPosition":{"x":14305.025652484152,"y":30812.79046466984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Stellar","code":"{ \n\"codeName\": \"XLM\"\n}","id":"6dee1e7e-80f3-4597-a28a-881af206ec14","savedPayload":{"position":{"x":14635.380023465843,"y":30775.418809131024},"targetPosition":{"x":14305.025652484152,"y":30812.79046466984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Ethereum Classic","code":"{ \n\"codeName\": \"ETC\"\n}","id":"59378d33-4833-495a-89bb-f739710be7d9","savedPayload":{"position":{"x":14618.714156215316,"y":30922.740363095792},"targetPosition":{"x":14305.025652484152,"y":30812.79046466984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"f4451bbc-50ea-4558-9b3c-abd3e757a76e","savedPayload":{"position":{"x":14305.17360826227,"y":30812.68986934228},"targetPosition":{"x":14079.894884165275,"y":31038.166461562458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"E"}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"BTC/USDT","code":"{ \n\"codeName\": \"BTC/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"Bitcoin","id":"07b514a4-3ea2-4ab7-aeb0-07b48acb6f8d","savedPayload":{"position":{"x":15236.371832479537,"y":30780.053229243735},"targetPosition":{"x":15049.153562663865,"y":31038.131226693393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"b2814a75-fd57-45c4-a3cb-af276793e573"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"61e7d2b5-1672-4e11-8380-345a4fe4a991","savedPayload":{"position":{"x":15352.419771068837,"y":30939.69858316036},"targetPosition":{"x":15049.153562663865,"y":31038.131226693393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"04c5f172-6976-4557-b95f-38004b5201a6"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"a174a91f-0818-4fdc-88cd-20dbdf45c548","savedPayload":{"position":{"x":15352.36057193139,"y":31136.524172911017},"targetPosition":{"x":15049.153562663865,"y":31038.131226693393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"11beab3d-d894-4d20-9940-f864ba957f91","savedPayload":{"position":{"x":15236.806192935961,"y":31295.59566491682},"targetPosition":{"x":15049.153562663865,"y":31038.131226693393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"5489751f-5ce4-40d0-9854-5bcfdc810269","savedPayload":{"position":{"x":15049.153562663865,"y":31038.131226693393},"targetPosition":{"x":14716.990761953079,"y":31038.17830230591},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0e1257c5-49b1-4b52-8942-9bdef72854d2","savedPayload":{"position":{"x":14716.843959091762,"y":31038.024738221364},"targetPosition":{"x":14079.894884165275,"y":31038.166461562458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b","savedPayload":{"position":{"x":15045.552221144293,"y":31329.003976386983},"targetPosition":{"x":14837.69016883917,"y":31570.65978539939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"b2814a75-fd57-45c4-a3cb-af276793e573"}}},{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da","savedPayload":{"position":{"x":15129.925421763637,"y":31443.234588877498},"targetPosition":{"x":14837.69016883917,"y":31570.65978539939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"04c5f172-6976-4557-b95f-38004b5201a6"}}},{"type":"Exchange Account Asset","name":"Ether","id":"b3d0800f-f430-4549-86e9-68001c43fa1f","savedPayload":{"position":{"x":15156.324673396291,"y":31582.493916797535},"targetPosition":{"x":14837.69016883917,"y":31570.65978539939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ether","id":"4175d47c-e12c-4902-b026-f4999a6d07a4"}}},{"type":"Exchange Account Asset","name":"Monero","id":"ee25ff6a-8b3d-4f30-8acf-71ca4b186195","savedPayload":{"position":{"x":15119.60270103622,"y":31719.58562930427},"targetPosition":{"x":14837.69016883917,"y":31570.65978539939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Monero","id":"e3b61070-77b9-4dcf-9862-7f05ffa237f3"}}},{"type":"Exchange Account Asset","name":"Stellar","id":"5716ea79-1392-4f6d-a46e-dba38ab9b39e","savedPayload":{"position":{"x":15027.042577031634,"y":31827.16324834079},"targetPosition":{"x":14837.69016883917,"y":31570.65978539939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Stellar","id":"6dee1e7e-80f3-4597-a28a-881af206ec14"}}},{"type":"Exchange Account Asset","name":"Ethereum Classic","id":"d9d0d41c-67a9-42ea-8c64-067647ee53a4","savedPayload":{"position":{"x":14896.892806780692,"y":31883.891480137856},"targetPosition":{"x":14837.69016883917,"y":31570.65978539939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ethereum Classic","id":"59378d33-4833-495a-89bb-f739710be7d9"}}}],"id":"f7bbfcc0-2359-4de1-8ddc-5e117bde0c52","savedPayload":{"position":{"x":14837.69016883917,"y":31570.65978539939},"targetPosition":{"x":14529.97816888475,"y":31488.389186969194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"WHB","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"88eab4e5-3be4-4982-93fa-e95bcb1ab559","savedPayload":{"position":{"x":14771.379005546727,"y":32072.350747523094},"targetPosition":{"x":14612.113800977872,"y":31796.265546651335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Exchange Account Key","name":"BBTB","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"bfea6ed0-673c-4245-9b5e-7837785a63c9","savedPayload":{"position":{"x":14612.064462876144,"y":32115.0038323965},"targetPosition":{"x":14612.113800977872,"y":31796.265546651335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"cf3895fd-4f0c-4bd8-8afb-886a718cc891","savedPayload":{"position":{"x":14612.113800977872,"y":31796.265546651335},"targetPosition":{"x":14529.97816888475,"y":31488.389186969194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a718949a-e315-4bda-8523-b0b03e3ca507","savedPayload":{"position":{"x":14529.97816888475,"y":31488.389186969194},"targetPosition":{"x":14305.012345932206,"y":31263.313648257546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a913b30b-17d3-4b2b-9c39-9c7dc67f0000","savedPayload":{"position":{"x":14305.012345932206,"y":31263.313648257546},"targetPosition":{"x":14079.894884165275,"y":31038.166461562458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"22d2b36e-7a77-40a6-8948-b7d0fb744923","savedPayload":{"position":{"x":14079.894884165275,"y":31038.166461562458},"targetPosition":{"x":13442.879291220586,"y":31038.17362849701},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"c16f8dd4-05f5-45db-8a47-713eb1116f72","savedPayload":{"position":{"x":13442.879291220586,"y":31038.17362849701},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"signalsProviders":[],"superActions":{"type":"Super Actions","name":"New Super Actions","superActions":[{"type":"Super Action","name":"Install Market","id":"2cd8e9dd-02a8-40b5-8979-108491309697","savedPayload":{"position":{"x":13596.796537982185,"y":29900.600915146206},"targetPosition":{"x":13238.769838624787,"y":30494.890822183912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"d103d8f7-8b21-436a-a0cf-8244b3dcb756","savedPayload":{"position":{"x":13738.553946135695,"y":30013.646249280533},"targetPosition":{"x":13238.769838624787,"y":30494.890822183912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"c934df8f-d942-4723-ad44-f187e5df4351","savedPayload":{"position":{"x":12166.581869182457,"y":31038.25465749285},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9f4e7bfb-ea29-47cd-92bd-11f31d177ff8","savedPayload":{"position":{"x":12805.301618063546,"y":31038.2348844148},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"e"}}},{"type":"Charting Space","name":"New Charting Space","viewport":{"type":"Viewport","name":"New Viewport","code":"{\"zoom\":\"0.00\"}","id":"c3db9bcf-39ee-47d1-ab4f-14bd5de815da","savedPayload":{"position":{"x":13421.60994808922,"y":24983.353401471086},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"frame":{"position":{"x":-105.87179487179515,"y":64.6875}}}},"dashboards":[{"type":"Dashboard","name":"Super Action Generated","timeMachines":[{"type":"Time Machine","name":"WHB Binance BTC/USDT","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2020-05-18T06:17:05.470Z\",\n \"toDate\": \"2020-05-27T22:57:28.511Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"9368d644-21cd-4be9-bb36-df83b66c67d1","savedPayload":{"position":{"x":11611.720379074248,"y":26036.808408556513},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 8468.468050704952,\n \"maxValue\": 10604.90816010915,\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"7242faad-e2a0-4dd2-8016-bd4448a3b61c","savedPayload":{"position":{"x":11472.84821627644,"y":26143.60061063287},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"cddfbb92-c310-477a-9c66-b2a38ff8309f","savedPayload":{"position":{"x":11311.376506720255,"y":26210.551198106474},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timelineCharts":[{"type":"Timeline Chart","name":"Indicators","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":"Candles","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"09e91fb3-cdff-4c0c-b320-417aeb4f2538","savedPayload":{"position":{"x":45798.08358329995,"y":30783.47112133315},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"dd7c8795-bb24-4438-9d77-b37a9000ad7f"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"2b8f6dec-a712-4716-88d8-a33c01398956","savedPayload":{"position":{"x":45898.37673360377,"y":30788.25119234455},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"6929ebe7-6486-4299-add5-ed0282500d91"}}},{"type":"Layer","name":"Resistances","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"57d807c2-eeac-46a5-bd07-6f630a578562","savedPayload":{"position":{"x":45996.05938571397,"y":30809.588522972816},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Resistances","id":"0669d924-aace-46d1-b126-ccced8fd33cf"}}},{"type":"Layer","name":"Supports","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9a035c82-60cb-4ab4-b4f8-e40b0dde7c2c","savedPayload":{"position":{"x":46088.671022938994,"y":30846.72421469604},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Supports","id":"5e7a0e50-e6ed-4106-8025-8b35ad6c597c"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"25363a67-bcaf-4392-9ed8-2b6c99fb31c8","savedPayload":{"position":{"x":46173.797322491286,"y":30898.58369972401},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"1d7dd537-5f6f-4eb2-8e56-ddba0aef720f"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"63dbae3f-cebc-4587-9b9c-60ffe83e4143","savedPayload":{"position":{"x":46249.17664768098,"y":30963.730987652525},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"221c8d22-8a7f-4014-a7ed-0bafc886b123"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"2203bc66-a385-438b-8050-0b812b655d0a","savedPayload":{"position":{"x":46312.78393052083,"y":31040.384533238812},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"d83476c3-2f0b-4d4a-abb2-0e47ed0a421d"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ea4ce55e-855e-4a61-ad12-222a0077e51e","savedPayload":{"position":{"x":46362.900460538505,"y":31126.454059169817},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"5ffc6a67-e33b-422b-8e36-f9711f93c723"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"e9272caf-38f8-44de-a698-13f8b19b50c3","savedPayload":{"position":{"x":46398.167326095994,"y":31219.59432824167},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"0428f20b-9620-480e-a531-dbb2e5f59ef4"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"a9fcfaea-cd50-464e-aa65-1f2a3e98633d","savedPayload":{"position":{"x":46417.62588351845,"y":31317.267577006704},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"48f7953c-f62d-4292-b042-d1ac05f8f80f"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\"\n}","id":"8c1e005a-c340-4850-9de2-900a4cfc44bb","savedPayload":{"position":{"x":46420.70567572493,"y":31416.809466474464},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"3b9a3c93-6d41-440e-89a2-2fd1b2dde603"}}},{"type":"Layer","name":"Base5 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"6223f2d7-bdb4-474a-9e60-b54dc00680ea","savedPayload":{"position":{"x":46407.31337137963,"y":31515.483822428057},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"2404b1eb-c7c9-46e7-b22a-93cfcc3739f4"}}},{"type":"Layer","name":"Base6 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"a71c4fa6-d034-499c-9b30-7a46378cadc0","savedPayload":{"position":{"x":46377.87367543775,"y":31610.607629023725},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"1510fd36-633e-40a7-adbe-680660d64bd0"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"53c4ff8b-f3c5-4329-8fe4-6209c0ffb9f1","savedPayload":{"position":{"x":46333.185880681754,"y":31699.591341637817},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"70401ea0-3fed-4e40-8bba-a1e5adce9b8c"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"09cbb1f5-edad-4f9f-ab1c-7f9b0a0d8f7c","savedPayload":{"position":{"x":46274.467312818415,"y":31780.011584392756},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"06ac8eb7-8b14-42b1-9e2e-466280ade032"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"88466a0a-b385-417f-9efa-8c0139e05a5e","savedPayload":{"position":{"x":46203.31676678368,"y":31849.67669835976},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"014bba70-64d4-4035-b06d-145ee9b4c54c"}}},{"type":"Layer","name":"Base7 EMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6564d574-c6fd-4ee0-96ab-0e7c62e1cd7c","savedPayload":{"position":{"x":46121.67361107911,"y":31906.68977984249},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"768cc06c-6fdf-491a-a741-5e08f0e25e38"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"941fef87-83dd-457f-818c-71745fa1692a","savedPayload":{"position":{"x":46028.33674024209,"y":31950.48529383432},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"40794460-b815-498f-a245-e677de0eed86"}}}],"id":"1c96281c-523a-4597-b9b2-2db3d880ff49","savedPayload":{"position":{"x":45819.36840869368,"y":31385.419815840156},"targetPosition":{"x":45228.931388073186,"y":31502.74417203152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"ff535c6b-411f-4790-ab2b-c755c74de1b9","savedPayload":{"position":{"x":11138.25130732125,"y":26233.38907834376},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 2109149.343784579,\n \"maxValue\": 2118053.365048354,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"9ee722c6-095f-4f4a-b8b2-9cb9bca115aa","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,"arrangementStyle":0},"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":"c4041768-1a6e-4f5b-8d7b-b681a175f27a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"98e6c917-f4b7-4b71-9215-de3ccaf3dc0c"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"e9404a3f-2768-4b17-ac7a-8b11e1a1957c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"858fd2be-abef-4173-abef-dedf17f00d47","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"8411d061-e010-4d33-b35c-e71d743fd403","savedPayload":{"position":{"x":10965.194408624708,"y":26210.60036281255},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 25826.74987533423,\n \"maxValue\": 25961.190304401338,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"60aaeaeb-2247-4536-a1a2-cf7d731b6fc5","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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\": true\n}","id":"c230772e-ca08-45df-bad6-4b72be44d9a5","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"4a3ed8eb-a73e-4fb4-835a-681cf47d7373"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"f9435119-1d3f-4106-9c78-531f6ef4714f","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"728d6f08-086f-41ba-9126-30ec56a45ea5"}}}],"id":"acbd2ecb-2f75-44b8-8659-26482cb6fb0b","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"a7f9fef6-c3f9-4e17-b894-9a5e154ccbbe","savedPayload":{"position":{"x":10803.78018262477,"y":26143.752131657493},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 943.9334763368367,\n \"maxValue\": 947.9334763368367,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"1415a288-9d79-45c9-a55c-9991e8b6953b","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"33e885d3-27f0-4ff7-8715-bc2f945e698e","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"7ccbd0c1-c804-47e3-9314-14cbb756c806"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f3cd6f15-98f5-4165-b6c3-04b8796fb43d","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"08f223a8-9707-4c45-b638-1fe0e4a2b053"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"66440f58-8741-4b22-8146-00f772837545","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"66f1a9be-fe96-48c3-91e4-500c6e246423"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"3ba14173-bac8-4013-9a5c-b8aecd05e0ae","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"e432c706-cbcd-4af0-b23c-b18e5b29377a"}}}],"id":"ab7c3367-a36e-4a78-b43b-bfeea5fc5201","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0}}},"id":"156b9564-14a5-4148-8ca6-1e7b98d4189d","savedPayload":{"position":{"x":10665.17152728171,"y":26037.402405028162},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"4978dec9-1374-421a-865e-9e0d30682f65","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,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"on\",\n \"showPanels\": true\n}","id":"93d62cc0-6914-411e-bf9f-008271cd2965","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"573fb46f-78d2-4bf3-ad11-e42d2531d53e"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"on\"\n}","id":"cbb41381-e76d-44f5-8dd3-f9a8c0c0379f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"39d7a06d-5aad-4b03-8778-e4df8dacc825"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"on\"\n}","id":"88471305-9c12-4caf-856b-675fb2db2db3","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"82b46974-7a93-4066-a3b7-378b42710364"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"on\"\n}","id":"8cb92f6b-8ede-44ef-928a-36f4ec022af8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"7af9d35c-7464-4ed5-9ee6-ccf7a9943894"}}}],"id":"3ec4f352-fb06-4ade-8393-7a5a83765773","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":330,"radius":0}}},"id":"ac6929d9-238c-4689-b2ee-3cc001be578b","savedPayload":{"position":{"x":10558.81501585983,"y":25898.797450091883},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"d7c6c5e8-82d8-4f2a-a07e-66c3498d1fe5","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,"arrangementStyle":0},"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":"b978b005-7bc2-4246-b4d9-5fcfc463eacf","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"63636068-307e-4cea-b31f-f47e106cea2c"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"1ca55ee3-231b-41ad-9acd-24f043e8aa01","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"20848048-8efb-47b1-aaf0-789d2f6c5b1d"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"52850e27-6287-4005-ba6e-66f5b193e3ad","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"5e28998c-b35f-4cc0-9fd6-8ee5f5714545"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"46bd81b8-5b9f-4c5f-89bb-149e19bd0267","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"87b74841-4f6a-4658-b01b-7feb254b5d2f"}}}],"id":"0cf47550-1612-4cd7-8fdd-a68014bd52cc","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1620,"y":80},"width":150,"height":40,"radius":0}}},"id":"c285480b-3a39-4dd0-be1d-6470a97d22a7","savedPayload":{"position":{"x":10491.96325073248,"y":25737.373898896472},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"b10a1160-3d9b-44a5-97e9-dbfdc9f103b6","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,"arrangementStyle":0},"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":"b4fb2c12-42e4-496d-aea2-ccf8c90c2e6a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"5919a710-a950-4049-9605-3f127b7fac6b"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"fc3d15bc-ac9c-4150-9a26-4c8baef90266","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"c7030a88-152f-421c-8b32-66f3c222286a"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"c749facc-4350-43c1-b881-72c781475f56","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"25db80e6-c4cf-4568-98d3-0cba83625ece"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"30fa6c26-bdbb-4a70-a917-f42d99583938","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"f4b18249-5044-4b34-83f7-3cedbbe939c5"}}}],"id":"c689ea14-8d8b-4482-9cf3-c652904ebd27","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1470,"y":80},"width":150,"height":40,"radius":0}}},"id":"fabbc9b6-b752-4ba6-80a4-835eaa856948","savedPayload":{"position":{"x":10469.194131114753,"y":25564.28586691085},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"eb70203f-383c-4227-8b82-64458c8ceb62","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,"arrangementStyle":0},"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":"3a82f6d9-2063-4fd7-aa79-dedc4222c58c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"af19e56c-eaf1-4b0b-93f9-74b9ac1843c2"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"605b9ea8-5ed1-4750-8921-88bc481ffbc4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"30ac52a8-ee50-439c-83c8-df75ab49374a"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"3e97cb0b-80dd-4d12-8205-852c759a3f55","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"6a059555-2555-4c7f-a722-2ab4ca0440c5"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"76a918d5-1242-4b97-a252-550200546f5c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"c35fa0be-6e51-4d14-9a52-6b0174cc1aab"}}}],"id":"8658198e-ea8a-45ef-b05f-b2810aa3e015","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1320,"y":80},"width":150,"height":40,"radius":0}}},"id":"6616907b-5ec0-4c2d-b47b-885343226b81","savedPayload":{"position":{"x":10492.226838547804,"y":25390.75587290283},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a9786387-316d-4b02-a53a-60187e2e17ed","savedPayload":{"position":{"x":11138.236958169193,"y":25564.296880103568},"targetPosition":{"x":11472.267056451483,"y":24985.351675411093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":1135,"y":395},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"BBTB Binance BTC/USDT","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2020-05-20T06:57:25.096Z\",\n \"toDate\": \"2020-05-28T23:36:50.667Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"28d6f2c6-d921-4bc6-a262-f9d432e43a75","savedPayload":{"position":{"x":10492.140742264783,"y":24579.9362145769},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 8539.15569832808,\n \"maxValue\": 10398.820427646755,\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"305a3f31-2554-45f4-9a5a-063087eade65","savedPayload":{"position":{"x":10469.108817024662,"y":24406.41410216667},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"af0e57b5-269b-4d97-ac21-76195ede4cd6","savedPayload":{"position":{"x":10491.878304594275,"y":24233.318318413578},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timelineCharts":[{"type":"Timeline Chart","name":"Indicators","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":"Candles","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"8b7edeec-2998-4877-95d6-4bc85a91f199","savedPayload":{"position":{"x":46248.05137575185,"y":30539.981477083165},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"dd7c8795-bb24-4438-9d77-b37a9000ad7f"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"2360e8bf-a667-40b9-ad6e-84bca97a4c90","savedPayload":{"position":{"x":46348.34452605566,"y":30544.761548094564},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"6929ebe7-6486-4299-add5-ed0282500d91"}}},{"type":"Layer","name":"Resistances","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f2d657ea-cfc5-47d7-9a00-b1c1ebc61e3f","savedPayload":{"position":{"x":46446.02717816587,"y":30566.09887872283},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Resistances","id":"0669d924-aace-46d1-b126-ccced8fd33cf"}}},{"type":"Layer","name":"Supports","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"5f830182-98fa-4e85-b66b-f1e240d821c9","savedPayload":{"position":{"x":46538.63881539089,"y":30603.234570446057},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Supports","id":"5e7a0e50-e6ed-4106-8025-8b35ad6c597c"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ae39c816-1963-4071-af1d-22d6cf94041e","savedPayload":{"position":{"x":46623.76511494318,"y":30655.094055474026},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"1d7dd537-5f6f-4eb2-8e56-ddba0aef720f"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"84a553d0-1d85-4164-8a7e-f583326a807d","savedPayload":{"position":{"x":46699.14444013288,"y":30720.24134340254},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"221c8d22-8a7f-4014-a7ed-0bafc886b123"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"c2fde932-5320-4d26-a998-4a4f5bf4d847","savedPayload":{"position":{"x":46762.751722972724,"y":30796.894888988827},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"d83476c3-2f0b-4d4a-abb2-0e47ed0a421d"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"986d6828-d93c-4eba-9ac2-c2c94d90582e","savedPayload":{"position":{"x":46812.8682529904,"y":30882.964414919832},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"5ffc6a67-e33b-422b-8e36-f9711f93c723"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"90090b4c-f6bb-465f-8240-1ff1b829503d","savedPayload":{"position":{"x":46848.135118547885,"y":30976.104683991685},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"0428f20b-9620-480e-a531-dbb2e5f59ef4"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"3100c7a8-46ce-4713-bb6c-4a90bf09dcbc","savedPayload":{"position":{"x":46867.59367597035,"y":31073.77793275672},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"48f7953c-f62d-4292-b042-d1ac05f8f80f"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\"\n}","id":"534a2350-9486-4c2b-8e42-0988e56d4a6e","savedPayload":{"position":{"x":46870.67346817683,"y":31173.31982222448},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"3b9a3c93-6d41-440e-89a2-2fd1b2dde603"}}},{"type":"Layer","name":"Base5 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"948561ae-efea-46e1-9667-5c4817118eca","savedPayload":{"position":{"x":46857.28116383152,"y":31271.994178178073},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"2404b1eb-c7c9-46e7-b22a-93cfcc3739f4"}}},{"type":"Layer","name":"Base6 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"49e73773-8345-4e59-9fed-0cf16c82be08","savedPayload":{"position":{"x":46827.84146788965,"y":31367.11798477374},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"1510fd36-633e-40a7-adbe-680660d64bd0"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"0f88f124-bb93-4bac-918e-fd11496d1a76","savedPayload":{"position":{"x":46783.15367313365,"y":31456.101697387832},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"70401ea0-3fed-4e40-8bba-a1e5adce9b8c"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"5fcb4df6-3903-4e0a-b29d-4ca52ca10f40","savedPayload":{"position":{"x":46724.43510527031,"y":31536.52194014277},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"06ac8eb7-8b14-42b1-9e2e-466280ade032"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"b9c8e51c-82eb-4dc5-9b12-01a5c660e27d","savedPayload":{"position":{"x":46653.28455923557,"y":31606.187054109774},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"014bba70-64d4-4035-b06d-145ee9b4c54c"}}},{"type":"Layer","name":"Base7 EMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e101b9b9-54f7-4450-b658-41d428fe98b3","savedPayload":{"position":{"x":46571.641403531,"y":31663.200135592506},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"768cc06c-6fdf-491a-a741-5e08f0e25e38"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"7f4a8c67-cfb0-4370-a7d1-3dbb51a4200a","savedPayload":{"position":{"x":46478.30453269399,"y":31706.995649584336},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"40794460-b815-498f-a245-e677de0eed86"}}}],"id":"4ecd5f52-f81e-456c-9497-9c1d2fe4c659","savedPayload":{"position":{"x":46269.336201145576,"y":31141.93017159017},"targetPosition":{"x":45678.899180525084,"y":31259.254527781533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"6916ddb0-8156-49b5-a37b-16818ad780fd","savedPayload":{"position":{"x":10558.729861137988,"y":24071.895181337284},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 2042396.836815424,\n \"maxValue\": 2051300.858079199,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"fea71c82-c589-4e2b-9a23-a9f90a980a5c","savedPayload":{"position":{"x":44405.55033743636,"y":31261.51022477371},"targetPosition":{"x":44080.414675039254,"y":31287.13850027945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"0358d7fb-73e1-4099-bbad-672d80f35e8e","savedPayload":{"position":{"x":44612.89390157048,"y":31479.949969919875},"targetPosition":{"x":44401.28500610063,"y":31441.688531642707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"98e6c917-f4b7-4b71-9215-de3ccaf3dc0c"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"1647ec62-daa0-4985-ae3d-9ad7b3222397","savedPayload":{"position":{"x":44564.361174041755,"y":31581.712327942194},"targetPosition":{"x":44401.28500610063,"y":31441.688531642707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"111f471b-a72c-4330-97b0-3f2b310f3c55","savedPayload":{"position":{"x":44401.28500610063,"y":31441.688531642707},"targetPosition":{"x":44080.414675039254,"y":31287.13850027945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"237e33ff-32f9-4f45-bb51-b42e93d4f2e3","savedPayload":{"position":{"x":10665.086276963259,"y":23933.289816556313},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 24818.86417825609,\n \"maxValue\": 24953.3046073232,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"9294ac73-b348-4f8c-aa4b-a98e72b643ce","savedPayload":{"position":{"x":44361.21664273736,"y":31366.73167335227},"targetPosition":{"x":44060.4423815896,"y":31347.32101223103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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\": true\n}","id":"e8cef08c-fcbb-4430-8a2f-825d101f44e3","savedPayload":{"position":{"x":44529.19471727387,"y":31592.619948516272},"targetPosition":{"x":44324.99063603653,"y":31523.731134007154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"4a3ed8eb-a73e-4fb4-835a-681cf47d7373"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"ce432b11-fd42-4bbb-be67-be70436e1935","savedPayload":{"position":{"x":44467.06932232549,"y":31685.848244771263},"targetPosition":{"x":44324.99063603653,"y":31523.731134007154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"728d6f08-086f-41ba-9126-30ec56a45ea5"}}}],"id":"40c545c9-8f6e-4777-a5b7-6386c382d0ef","savedPayload":{"position":{"x":44324.99063603653,"y":31523.731134007154},"targetPosition":{"x":44060.4423815896,"y":31347.32101223103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"3b7bd98c-c062-412b-8efc-b6943b0c57c4","savedPayload":{"position":{"x":10803.694986500428,"y":23826.93951465946},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 913.9458988180226,\n \"maxValue\": 917.9458988180226,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"33fca6f7-ae02-4d47-987b-6d4cdd54d7dc","savedPayload":{"position":{"x":44290.58808276839,"y":31546.332726046596},"targetPosition":{"x":44008.67786449814,"y":31450.627230444796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"3f2dd6ab-cbb0-47d4-bcc0-4c65a6a26bbf","savedPayload":{"position":{"x":44413.860692334245,"y":31705.270868973323},"targetPosition":{"x":44217.224018592766,"y":31688.7983598539},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"7ccbd0c1-c804-47e3-9314-14cbb756c806"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6970ee87-56eb-42e1-a7f5-e8496ae7c14e","savedPayload":{"position":{"x":44370.6894603055,"y":31786.435037256044},"targetPosition":{"x":44217.224018592766,"y":31688.7983598539},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"08f223a8-9707-4c45-b638-1fe0e4a2b053"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"8467da0c-25b2-4471-8a51-d10e22c09575","savedPayload":{"position":{"x":44303.94190533702,"y":31846.937174734503},"targetPosition":{"x":44217.224018592766,"y":31688.7983598539},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"66f1a9be-fe96-48c3-91e4-500c6e246423"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"538dc51b-9d04-4064-8997-7c2cfd01def4","savedPayload":{"position":{"x":44207.172795775405,"y":31883.5736299024},"targetPosition":{"x":44217.224018592766,"y":31688.7983598539},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"e432c706-cbcd-4af0-b23c-b18e5b29377a"}}}],"id":"413ae363-1475-4fb5-918f-607c5ee50198","savedPayload":{"position":{"x":44217.224018592766,"y":31688.7983598539},"targetPosition":{"x":44008.67786449814,"y":31450.627230444796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0}}},"id":"6fbb972a-6cb6-479d-bbd8-20d96f997ec7","savedPayload":{"position":{"x":10965.11030574667,"y":23760.090535827057},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"c0059d35-5a9a-4569-9384-72e2e15f134d","savedPayload":{"position":{"x":27557.63582153647,"y":27912.736751977856},"targetPosition":{"x":27650.227157061017,"y":28257.50773383182},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"on\",\n \"showPanels\": true\n}","id":"1ab2b96f-e3d5-46a0-9be0-2f2b76209ea2","savedPayload":{"position":{"x":27665.65594917696,"y":27585.32604165042},"targetPosition":{"x":27743.053578769875,"y":27912.28127902672},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"653622df-b35b-4c72-9b1d-cbbea2d45a93"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"3d8a3ad2-2047-4906-b695-5336d5d7c98a","savedPayload":{"position":{"x":27773.681834722982,"y":27575.417965010536},"targetPosition":{"x":27743.053578769875,"y":27912.28127902672},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"bcd39fee-3584-4e3a-b524-05ecb62d4582"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"on\"\n}","id":"75f4bc8d-ba22-4a6e-a8c2-2c384ef2b98c","savedPayload":{"position":{"x":27879.136658694806,"y":27601.456940514337},"targetPosition":{"x":27743.053578769875,"y":27912.28127902672},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"d6a48300-ab24-4b7b-8fb1-b431e389c7d1"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"on\"\n}","id":"db1b234c-5cba-4b03-8572-755e2af13f73","savedPayload":{"position":{"x":27979.473145949694,"y":27672.59337035246},"targetPosition":{"x":27743.053578769875,"y":27912.28127902672},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"aa60feec-3e11-4509-ab4f-5eac17ea7d3b"}}}],"id":"ce11bc60-a642-46e6-ab04-99b6835f22d3","savedPayload":{"position":{"x":27743.053578769875,"y":27912.28127902672},"targetPosition":{"x":27650.227157061017,"y":28257.50773383182},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":330,"radius":0}}},"id":"d3f769da-9958-4549-b2d9-7eb8582f94c2","savedPayload":{"position":{"x":11138.157252601008,"y":23737.30184414623},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"4c7c5182-d380-459d-aaf3-27cf75fff424","savedPayload":{"position":{"x":28262.385658877018,"y":28130.53416813641},"targetPosition":{"x":28262.41822833366,"y":28486.384792584635},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"8c3a6cb3-9c1c-4a56-8e45-34da3b7211a5","savedPayload":{"position":{"x":28447.69443236196,"y":27841.456778292883},"targetPosition":{"x":28440.385696197893,"y":28177.98107529941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"2004d488-ba55-478c-afa4-c00a555bf34c"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"f6941192-1842-4fa5-9963-3d82963ccf8f","savedPayload":{"position":{"x":28557.462280733387,"y":27859.50803963232},"targetPosition":{"x":28440.385696197893,"y":28177.98107529941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"7859d024-817a-4059-8a17-86690194f9de"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"dbc9d245-aa65-4b6e-bed2-43a76dd4c5f6","savedPayload":{"position":{"x":28655.050318792713,"y":27915.11964276374},"targetPosition":{"x":28440.385696197893,"y":28177.98107529941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"dd541e63-8071-4b0f-8eb8-5fd50ef3eb82"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"d4c540d0-ef98-40c5-8b3b-401a36d97a35","savedPayload":{"position":{"x":28729.501541674534,"y":28006.267495681434},"targetPosition":{"x":28440.385696197893,"y":28177.98107529941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"11af0867-3396-48d4-b794-9d133d2d2416"}}}],"id":"848138ac-75f4-4f45-9d75-5f3efd1b1851","savedPayload":{"position":{"x":28440.385696197893,"y":28177.98107529941},"targetPosition":{"x":28262.41822833366,"y":28486.384792584635},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1620,"y":80},"width":150,"height":40,"radius":0}}},"id":"7e78029b-0e92-4aca-b46e-b0abd6a9efc1","savedPayload":{"position":{"x":11311.290953212665,"y":23760.139397561445},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"30f19a00-1682-4e5b-bbf1-038de1e095a0","savedPayload":{"position":{"x":28472.766660410845,"y":29349.031832198143},"targetPosition":{"x":28472.716345933826,"y":29707.546693237375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"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":"55f431d8-2f2b-4a23-8918-c7e648f501f4","savedPayload":{"position":{"x":28819.954200077675,"y":29131.835390461678},"targetPosition":{"x":28725.76222074944,"y":29454.779651892102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"3713af17-7ed8-4d32-abbb-66be7ba3d95b"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"352896a0-4682-4e04-b63a-8c449e290e3c","savedPayload":{"position":{"x":28923.00109202421,"y":29179.54612793986},"targetPosition":{"x":28725.76222074944,"y":29454.779651892102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"8206a3c4-7a92-4f52-aa29-d0b912511e94"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"ad636a90-0f4f-4851-8ac4-f1d8f62db35f","savedPayload":{"position":{"x":28999.37401037677,"y":29254.845401658935},"targetPosition":{"x":28725.76222074944,"y":29454.779651892102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"82cb4b63-c7ed-4e1c-b558-5caf08e7840e"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"46e22bd5-7a0a-4cf4-a07a-ffb56e480b13","savedPayload":{"position":{"x":29049.875305170575,"y":29364.278029383444},"targetPosition":{"x":28725.76222074944,"y":29454.779651892102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"35c51f59-d967-4fb9-bf3d-ebef155fe90a"}}}],"id":"b3fbff56-9599-4434-b850-ecde29200a93","savedPayload":{"position":{"x":28725.76222074944,"y":29454.779651892102},"targetPosition":{"x":28472.716345933826,"y":29707.546693237375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1470,"y":80},"width":150,"height":40,"radius":0}}},"id":"6a6e8794-41f5-43a6-afd2-7e46272b49f6","savedPayload":{"position":{"x":11472.759865802207,"y":23827.087856289705},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Live Trading","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-min\"}","id":"0e5d370a-9170-44e8-870a-20dcc784a793","savedPayload":{"position":{"x":28317.561321721798,"y":28460.143313868284},"targetPosition":{"x":28139.557768239833,"y":28769.97071387159},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"d4b2f167-9859-46d5-a98f-18ce9b8c2c37","savedPayload":{"position":{"x":28624.627247902066,"y":28305.973052222267},"targetPosition":{"x":28447.39063058376,"y":28591.244910585203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"84c5619b-c379-4bed-bd1c-3dccfc840fa7"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"303943c9-fa32-4510-abdb-59c743008a7a","savedPayload":{"position":{"x":28705.758217764087,"y":28373.020535680873},"targetPosition":{"x":28447.39063058376,"y":28591.244910585203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"9cd0c0da-e0df-4b83-a7f5-7e503f050020"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"09bd756c-955e-40c3-b093-f5bd16a47d94","savedPayload":{"position":{"x":28763.500035918594,"y":28466.28104399784},"targetPosition":{"x":28447.39063058376,"y":28591.244910585203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"05aa1029-fde5-4240-b5ef-31636ed817ee"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"7baed766-dcbe-4ca9-a45c-f09d5e1f0c0c","savedPayload":{"position":{"x":28784.40971720822,"y":28589.492110455},"targetPosition":{"x":28447.39063058376,"y":28591.244910585203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"8681f8d9-c6fa-4966-aa76-e627000962cb"}}}],"id":"73aed3a7-3c46-4847-85a8-1da38a836b75","savedPayload":{"position":{"x":28447.39063058376,"y":28591.244910585203},"targetPosition":{"x":28139.557768239833,"y":28769.97071387159},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1320,"y":80},"width":150,"height":40,"radius":0}}},"id":"0440d6cc-9623-40ab-b3fd-b6fc234d2550","savedPayload":{"position":{"x":11611.635854119537,"y":23933.882953163084},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f2065c00-1afb-40e3-937c-fa4046f388a2","savedPayload":{"position":{"x":11138.15835124918,"y":24406.41899509399},"targetPosition":{"x":11472.267056451483,"y":24985.351675411093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":725,"y":395},"width":240,"height":113.625,"radius":0}}}],"id":"64fa2a31-21ea-4b56-a625-dc4082876a89","savedPayload":{"position":{"x":11472.267056451483,"y":24985.351675411093},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":0,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"t"}}}],"id":"c53a4385-3fb3-49d5-b506-99bcaef2c141","savedPayload":{"position":{"x":12809.806237131383,"y":24985.35640053908},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":0,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"c"}}},{"type":"Trading System","name":"BB Top Bounce","code":"{ \n\"codeName\": \"\"\n}","strategies":[{"type":"Strategy","name":"S1 - 3H Down","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"99948a6e-e866-4339-86ba-eac367226312","savedPayload":{"position":{"x":31745.87792199155,"y":30844.340258645996},"targetPosition":{"x":32052.38122416619,"y":30583.023145060495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f0534c68-ab47-4370-b1fd-b3be4c1c262f","savedPayload":{"position":{"x":32052.38122416619,"y":30583.023145060495},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"d3bd1690-1f94-484b-ac3c-7be2c7be85ed","savedPayload":{"position":{"x":31605.618112221746,"y":30565.806770971594},"targetPosition":{"x":31989.318028702757,"y":30441.460815337527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e2d7334d-cf52-44d9-a20e-5be201ca6799","savedPayload":{"position":{"x":31989.318028702757,"y":30441.460815337527},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"d1fa707f-eb75-4b1c-8117-688b9b94e539","savedPayload":{"position":{"x":31554.61755893405,"y":30257.172197674274},"targetPosition":{"x":31956.687749228324,"y":30288.882416651897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fb71bcfb-2a40-4e8a-b8e8-b492128350a0","savedPayload":{"position":{"x":31956.687749228324,"y":30288.882416651897},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerChannel.direction === \"Down\"","id":"8c8c5128-b88b-44a5-8e36-d5c61127404f","savedPayload":{"position":{"x":31639.94576021355,"y":29954.803831254892},"targetPosition":{"x":31999.203547395213,"y":30137.794869043297},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"22246178-a8f9-4ec8-b55b-36cf7a24fbff","savedPayload":{"position":{"x":31999.203547395213,"y":30137.794869043297},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Medium, Steep or Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerSubChannel.slope === \"Medium\" || chart.at03hs.bollingerSubChannel.slope === \"Steep\" || chart.at03hs.bollingerSubChannel.slope === \"Extreme\" ","id":"bf8df41c-c62f-4cd6-840e-1dd538359c3b","savedPayload":{"position":{"x":31834.655620259655,"y":29707.873760246843},"targetPosition":{"x":32096.553555740164,"y":30014.31400704127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9dba774d-1afa-40dd-b5ec-8f4029824473","savedPayload":{"position":{"x":32096.553555740164,"y":30014.31400704127},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerSubChannel.slope === \"Gentle\"","id":"c4428437-7308-46f3-884e-22d2aac8d1a0","savedPayload":{"position":{"x":32109.03084733644,"y":29554.180048988066},"targetPosition":{"x":32233.790964800362,"y":29937.452098557496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7766453d-73ca-46f7-a39c-00f4f11af05e","savedPayload":{"position":{"x":32233.790964800362,"y":29937.452098557496},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"eac9b2d4-4364-4116-9d99-e92b8bbce5e7","savedPayload":{"position":{"x":32420.849012406088,"y":29517.112042973775},"targetPosition":{"x":32389.86788822145,"y":29918.98295933012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"40cb1853-f93e-4023-8d45-708376281bde","savedPayload":{"position":{"x":32389.86788822145,"y":29918.98295933012},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8d558598-60b5-4104-9a84-1773b125c509","savedPayload":{"position":{"x":32358.475513276375,"y":30321.19625417135},"targetPosition":{"x":32756.369395728692,"y":30473.2782041962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"3afd4ef5-2175-48fa-844f-e4e4ed775b26","savedPayload":{"position":{"x":32756.369395728692,"y":30473.2782041962},"targetPosition":{"x":33115.49575849726,"y":30655.993268223905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"0fb11814-5ba2-4c23-86b0-e6f8c01363e6","savedPayload":{"position":{"x":32617.29250092579,"y":29121.850815516915},"targetPosition":{"x":32741.838475650537,"y":29505.18938868129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"32415e55-51cb-44cf-a0d9-9de73b946da8","savedPayload":{"position":{"x":32741.838475650537,"y":29505.18938868129},"targetPosition":{"x":32866.375295950726,"y":29888.60205395678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"317dd29a-db32-4f10-bee0-325b7a7c816c","savedPayload":{"position":{"x":32866.375295950726,"y":29888.60205395678},"targetPosition":{"x":32991.015860687716,"y":30271.979726021065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"547d578f-4568-4b1f-965d-1d598b7b67bb","savedPayload":{"position":{"x":32991.015860687716,"y":30271.979726021065},"targetPosition":{"x":33115.49575849726,"y":30655.993268223905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"903651ac-50d3-44ea-aae2-0b6bbe43b989","savedPayload":{"position":{"x":32519.153930150867,"y":29623.888173680094},"targetPosition":{"x":32898.8713319454,"y":29758.68564157265},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4c4c6084-bebe-46ce-a12f-68924568c81d","savedPayload":{"position":{"x":32898.8713319454,"y":29758.68564157265},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"b16e3f56-5a3f-4af9-a9d1-ff3bbf9ca0b8","savedPayload":{"position":{"x":32679.72474976604,"y":29354.39087414772},"targetPosition":{"x":32979.10492621333,"y":29624.347968493967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c4e1f247-db57-4488-81e9-c7602562b8f3","savedPayload":{"position":{"x":32979.10492621333,"y":29624.347968493967},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"34452811-c161-4b33-8335-bc996a8638ad","savedPayload":{"position":{"x":32931.691553348195,"y":29166.564159994483},"targetPosition":{"x":33105.053842370166,"y":29530.40381131325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"db35b110-1991-4e3d-a1bd-04b0d1bad669","savedPayload":{"position":{"x":33105.053842370166,"y":29530.40381131325},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerChannel.direction === \"Down\"","id":"8fcf0aed-cd6b-4df9-8ec4-4511fcde66d8","savedPayload":{"position":{"x":33236.37478842459,"y":29089.384601838196},"targetPosition":{"x":33257.444177016405,"y":29491.79286529503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"48bd56ea-0d5a-404d-a887-061493bebbcf","savedPayload":{"position":{"x":33257.444177016405,"y":29491.79286529503},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Medium, Steep or Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerSubChannel.slope === \"Medium\" || chart.at03hs.bollingerSubChannel.slope === \"Steep\" || chart.at03hs.bollingerSubChannel.slope === \"Extreme\" ","id":"40b36ec9-ebf1-43fe-8003-f0d130b7cb36","savedPayload":{"position":{"x":33547.15819738872,"y":29134.731069626498},"targetPosition":{"x":33412.887765036874,"y":29514.443714403056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6c90a754-52bd-47cf-a3b5-95ad037bbb62","savedPayload":{"position":{"x":33412.887765036874,"y":29514.443714403056},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerSubChannel.slope === \"Gentle\"","id":"3f28257c-cc33-4c59-b40b-85bc88821f96","savedPayload":{"position":{"x":33817.50271555692,"y":29295.712530312267},"targetPosition":{"x":33548.076869473945,"y":29594.931818674166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fc2fb509-2854-4359-aa1e-b32a2174bd35","savedPayload":{"position":{"x":33548.076869473945,"y":29594.931818674166},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"5226a3d7-c8f8-41bd-9b45-f6238576628f","savedPayload":{"position":{"x":34005.82672873455,"y":29547.817722630363},"targetPosition":{"x":33642.2312063245,"y":29721.07059078792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0b38876e-bcad-4cec-90e2-c2e358723d29","savedPayload":{"position":{"x":33642.2312063245,"y":29721.07059078792},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"46e2ecf6-82ae-435d-a3a0-d5e2903404fd","savedPayload":{"position":{"x":33278.333917070595,"y":29894.451567060434},"targetPosition":{"x":33299.00147256256,"y":30297.01571488586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"c296b2ce-4039-48ec-b8bb-99c9d96853eb","savedPayload":{"position":{"x":33609.682057130776,"y":29953.38300829202},"targetPosition":{"x":33434.376532064154,"y":30147.396378822883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d0dbc486-d195-4db3-b895-385088b800ba","savedPayload":{"position":{"x":33434.475794635255,"y":30147.282072860846},"targetPosition":{"x":33299.00147256256,"y":30297.01571488586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"93418d2a-3047-4f80-aa59-0c6fdb35ad43","savedPayload":{"position":{"x":33299.00147256256,"y":30297.01571488586},"targetPosition":{"x":33115.49575849726,"y":30655.993268223905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"1055a2cc-e93a-4dd8-a992-f56553527ddd","savedPayload":{"position":{"x":33115.49575849726,"y":30655.993268223905},"targetPosition":{"x":33239.48474341851,"y":31038.643250235426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"853852d1-d2fa-4e32-a891-e98ca52a556e","savedPayload":{"position":{"x":33687.32525899127,"y":28630.28850235298},"targetPosition":{"x":33979.54395432601,"y":28708.55040929766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"3bdebe73-3546-43f3-b644-73ec62086c66","savedPayload":{"position":{"x":33666.51804208801,"y":27539.983917204023},"targetPosition":{"x":33744.69548060642,"y":27832.06710596675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"36615e86-2c8e-4182-ab3e-5c263c44fcb1","savedPayload":{"position":{"x":33744.70691352631,"y":27832.134330548877},"targetPosition":{"x":33822.954696502624,"y":28124.404333447008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6aae47da-70b4-4fd3-b2da-65a1d645b915","savedPayload":{"position":{"x":33822.86695788699,"y":28124.39717183063},"targetPosition":{"x":33901.15598726982,"y":28416.52491269287},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"18261801-3d1b-4dfe-872c-019fff59db4d","savedPayload":{"position":{"x":33901.15572942444,"y":28416.51381216433},"targetPosition":{"x":33979.54395432601,"y":28708.55040929766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"678cc7e5-c7cf-48e5-beee-37455617aa15","savedPayload":{"position":{"x":33979.616026972566,"y":28708.527885863212},"targetPosition":{"x":34193.31786858143,"y":28922.065415950765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a57d76af-2d34-41a0-b68b-a5dda59436b4","savedPayload":{"position":{"x":34193.31786858143,"y":28922.065415950765},"targetPosition":{"x":34406.84857131276,"y":29135.252280701574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"f191391f-f798-4819-b46b-8ae9538ff71f","savedPayload":{"position":{"x":34123.43694196574,"y":28303.266547138595},"targetPosition":{"x":34313.34298525399,"y":28538.488004355862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"65b73feb-09e0-491d-99fd-30f331acac97","savedPayload":{"position":{"x":34436.073537225195,"y":27376.24000730662},"targetPosition":{"x":34483.20864925244,"y":27674.87599559046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fa12e6f8-f9d6-4eb7-9e3b-1e0f17581548","savedPayload":{"position":{"x":34483.301676393894,"y":27675.108504545075},"targetPosition":{"x":34530.31165278271,"y":27973.96671756476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"2eff0ccd-bf54-4456-aff5-9f46cf1469ff","savedPayload":{"position":{"x":35000.38389861486,"y":27593.093039459363},"targetPosition":{"x":34765.46226665505,"y":27783.35172716299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a4af8e92-a505-48fd-8080-8a715cd856dc","savedPayload":{"position":{"x":34765.43852093076,"y":27783.562045970917},"targetPosition":{"x":34530.31165278271,"y":27973.96671756476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ef07d7e4-53c0-4746-a1a2-4b4856cba9df","savedPayload":{"position":{"x":34530.30099769694,"y":27973.974792996265},"targetPosition":{"x":34421.88845899308,"y":28256.249074095707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"2484f7be-38df-4139-94b4-d753e6d50eed","savedPayload":{"position":{"x":34421.82014227279,"y":28256.221955834993},"targetPosition":{"x":34313.34298525399,"y":28538.488004355862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"8ba924d4-3ac9-41de-ba03-02368b3bde5a","savedPayload":{"position":{"x":34313.4187637897,"y":28538.448023932728},"targetPosition":{"x":34360.1918698118,"y":28837.00124492984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8c2601bb-ff4c-4947-b514-96f43313e134","savedPayload":{"position":{"x":34360.1600707038,"y":28837.029615626387},"targetPosition":{"x":34406.84857131276,"y":29135.252280701574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"058068ed-ad77-4574-b61b-58e54f0db35b","savedPayload":{"position":{"x":34682.314020993916,"y":28597.031066228574},"targetPosition":{"x":34544.60399635092,"y":28866.212135868725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9ba67283-694d-42a9-995f-19e53d5519d0","savedPayload":{"position":{"x":34544.60399635092,"y":28866.212135868725},"targetPosition":{"x":34406.84857131276,"y":29135.252280701574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"bd3b401d-5b77-43ba-87e1-c4f9552bf56f","savedPayload":{"position":{"x":34946.04548109355,"y":28861.386648858126},"targetPosition":{"x":34676.46337129765,"y":28998.42894504949},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4938fc97-68bf-490e-85a0-66254b98bbac","savedPayload":{"position":{"x":34676.46337129765,"y":28998.42894504949},"targetPosition":{"x":34406.84857131276,"y":29135.252280701574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3f9517c2-52d1-4922-a838-1aacf268bcc7","savedPayload":{"position":{"x":34406.84857131276,"y":29135.252280701574},"targetPosition":{"x":34217.642980461096,"y":30328.208176155946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"97162469-0f8d-4710-81e1-1a1f3070a5ac","savedPayload":{"position":{"x":34462.41262967484,"y":30150.616620789337},"targetPosition":{"x":34217.642980461096,"y":30328.208176155946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"b23bab61-270d-4e0e-bcdc-f57457942e30","savedPayload":{"position":{"x":34822.17690991721,"y":30423.728911300397},"targetPosition":{"x":34516.57606336537,"y":30375.449231047525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a92fd7c1-db55-485b-bb59-7894f339959d","savedPayload":{"position":{"x":34516.582487985164,"y":30375.451352699893},"targetPosition":{"x":34217.642980461096,"y":30328.208176155946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e35699bc-1fe9-4cdc-b029-6361f0ce8592","savedPayload":{"position":{"x":34217.642980461096,"y":30328.208176155946},"targetPosition":{"x":33239.48474341851,"y":31038.643250235426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Standard Run","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"0e9e87f6-4636-4f1f-8091-d1c3090ee345","savedPayload":{"position":{"x":34864.4258519058,"y":31073.451873580834},"targetPosition":{"x":34461.11172798981,"y":31137.136196285086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"4a44eb01-4bb2-4b85-bd64-cab1b6a4678f","savedPayload":{"position":{"x":34461.11172798981,"y":31137.136196285086},"targetPosition":{"x":33939.89373966002,"y":31219.42301087441},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a9042fd2-0f05-4208-91b7-81e00b6493fb","savedPayload":{"position":{"x":33964.17199362247,"y":31212.629100310176},"targetPosition":{"x":33565.701923404486,"y":31275.6154406843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"aadae3ad-5cf1-4417-baad-c6e8b0ab8f31","savedPayload":{"position":{"x":34479.54862907233,"y":31441.47133565945},"targetPosition":{"x":34242.223416518915,"y":31767.17190193582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bfc7fa92-c54c-43e7-8a6d-f89572d1fee2","savedPayload":{"position":{"x":35534.17506364013,"y":32601.01834737772},"targetPosition":{"x":35227.57871058723,"y":32377.80094191258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5ea229bf-a68c-40f9-a6ac-8bae8171ecda","savedPayload":{"position":{"x":35227.57871058723,"y":32377.80094191258},"targetPosition":{"x":34900.77194830591,"y":32141.7292100267},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"585c2f06-93d7-403f-ab70-0aab9c936f72","savedPayload":{"position":{"x":34900.77194830591,"y":32141.7292100267},"targetPosition":{"x":34573.63535245736,"y":31912.267182708572},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"cddeb772-d0f7-4ba8-b303-b623746f3f6e","savedPayload":{"position":{"x":34573.63535245736,"y":31912.267182708572},"targetPosition":{"x":34242.223416518915,"y":31767.17190193582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"4862beb3-990c-43ba-a21b-93ce1227d060","savedPayload":{"position":{"x":34095.983992917565,"y":33156.25692616599},"targetPosition":{"x":33932.40423152793,"y":32787.97422544229},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dc6ade59-03df-4aa5-a892-5e225a38cb35","savedPayload":{"position":{"x":33932.40423152793,"y":32787.97422544229},"targetPosition":{"x":33768.76262490215,"y":32419.670081760734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"54428b89-eb5f-4844-9fec-b049f074b3c8","savedPayload":{"position":{"x":33684.54360513825,"y":33221.50127229437},"targetPosition":{"x":33726.58189119683,"y":32820.64500846274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"81b0626e-e4c7-40dc-ae8d-ec5603067461","savedPayload":{"position":{"x":33726.58189119683,"y":32820.64500846274},"targetPosition":{"x":33768.76262490215,"y":32419.670081760734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"05867691-257f-4795-b70f-180ef26713fd","savedPayload":{"position":{"x":33295.15009910802,"y":33072.03862949453},"targetPosition":{"x":33531.844828303714,"y":32745.9038412817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2d354bdf-7142-4921-aec4-60a295569584","savedPayload":{"position":{"x":33531.844828303714,"y":32745.9038412817},"targetPosition":{"x":33768.76262490215,"y":32419.670081760734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"74adc18a-fcb8-47ad-a447-1595f16cc7f6","savedPayload":{"position":{"x":33032.65657548499,"y":32747.964707298193},"targetPosition":{"x":33400.58073167286,"y":32583.817208006196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8c760094-3830-48d3-a97c-a9dee27f3c7e","savedPayload":{"position":{"x":33400.58073167286,"y":32583.817208006196},"targetPosition":{"x":33768.76262490215,"y":32419.670081760734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"45a3f428-25a5-4cf2-a13f-08bf3bbc4972","savedPayload":{"position":{"x":32967.43396894057,"y":32336.52703312829},"targetPosition":{"x":33367.984332677246,"y":32377.98795861293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6106746d-8995-425e-8dd9-009894a5dd07","savedPayload":{"position":{"x":33367.984332677246,"y":32377.98795861293},"targetPosition":{"x":33768.76262490215,"y":32419.670081760734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"61a873ab-dc8f-4023-93cd-a861bd965858","savedPayload":{"position":{"x":33768.76262490215,"y":32419.670081760734},"targetPosition":{"x":34005.569456507634,"y":32093.444793007522},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"aa98a93e-c928-4900-854a-97b3750182d2","savedPayload":{"position":{"x":34005.569456507634,"y":32093.444793007522},"targetPosition":{"x":34242.223416518915,"y":31767.17190193582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"83f85765-e13b-406a-bd56-7fd820eebc16"}}}],"announcements":[],"id":"e3b43a25-cbb0-4ebc-ac2f-148a56d7d934","savedPayload":{"position":{"x":34242.223416518915,"y":31767.17190193582},"targetPosition":{"x":33891.42358861794,"y":31512.39396500924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"e603a735-7a74-4654-b0bb-50bee2d1e307","savedPayload":{"position":{"x":34965.37684662937,"y":31962.859663977957},"targetPosition":{"x":34566.985205192934,"y":32026.856287734012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"12b3cadf-b8f9-4f43-8799-40c1509f8d07","savedPayload":{"position":{"x":35934.15152043711,"y":32273.569658836277},"targetPosition":{"x":35565.78497710967,"y":32437.163554507133},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d45aa91c-a153-4311-8403-8e4492ffcc95","savedPayload":{"position":{"x":35565.78497710967,"y":32437.163554507133},"targetPosition":{"x":35196.94350553596,"y":32600.98818807042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"47191a8e-485b-4f11-be05-c1b6253da95e","savedPayload":{"position":{"x":36019.79323488345,"y":32698.898330709257},"targetPosition":{"x":35618.76476118394,"y":32656.59127038628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0a6eff46-6a7b-4a29-81a4-93a751a056bf","savedPayload":{"position":{"x":35618.76476118394,"y":32656.59127038628},"targetPosition":{"x":35196.94350553596,"y":32600.98818807042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"e9cfe84c-e144-4e95-88ce-8bfdffd42f89","savedPayload":{"position":{"x":35850.04803078668,"y":33074.805375387914},"targetPosition":{"x":35523.743612251135,"y":32837.93392343165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9dfa9604-bc08-4df3-980d-2f8b06185031","savedPayload":{"position":{"x":35523.743612251135,"y":32837.93392343165},"targetPosition":{"x":35196.94350553596,"y":32600.98818807042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"8c332bfe-ab0c-4905-9440-86091b7040b1","savedPayload":{"position":{"x":35526.96283562273,"y":33337.71267605346},"targetPosition":{"x":35362.78202114205,"y":32969.172911299174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e358399e-001d-4d07-83e4-2bf9d65ed1bd","savedPayload":{"position":{"x":35362.78202114205,"y":32969.172911299174},"targetPosition":{"x":35196.94350553596,"y":32600.98818807042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div previous ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"51ec782d-f54f-46b5-b45a-9db5cf7a380e","savedPayload":{"position":{"x":35078.386460330876,"y":33413.44311371471},"targetPosition":{"x":35120.761185118834,"y":33012.25356399207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c64c6aff-2525-4e58-9e27-ac7a8b3dc8cb","savedPayload":{"position":{"x":35120.761185118834,"y":33012.25356399207},"targetPosition":{"x":35196.94350553596,"y":32600.98818807042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"08f82342-86ce-4222-b954-968397dd2d33","savedPayload":{"position":{"x":35196.94350553596,"y":32600.98818807042},"targetPosition":{"x":34870.15982787527,"y":32364.087714314013},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"170cad22-eef5-48c3-b5d9-fae484dab493","savedPayload":{"position":{"x":34870.15982787527,"y":32364.087714314013},"targetPosition":{"x":34566.985205192934,"y":32026.856287734012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"83f85765-e13b-406a-bd56-7fd820eebc16"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"0320d330-7d8e-4577-8ea3-debcdf5c4971","savedPayload":{"position":{"x":35201.0639175972,"y":33465.70824658257},"targetPosition":{"x":34945.200145626884,"y":33137.04979310342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6611a627-dfaf-4248-8aaa-e27fb7ac7141","savedPayload":{"position":{"x":34945.200145626884,"y":33137.04979310342},"targetPosition":{"x":34692.15922488175,"y":32823.47675811349},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"51f5f720-c0df-4209-a32f-80f67688004d","savedPayload":{"position":{"x":34403.59582771485,"y":33576.18639286568},"targetPosition":{"x":34547.81576381235,"y":33199.90475745102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"62ebc71f-7dab-4090-9f0e-c557cbbf5045","savedPayload":{"position":{"x":34547.81576381235,"y":33199.90475745102},"targetPosition":{"x":34692.15922488175,"y":32823.47675811349},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9cfa9122-1b64-4a37-877f-1c722493562a","savedPayload":{"position":{"x":34692.15922488175,"y":32823.47675811349},"targetPosition":{"x":34629.497980836786,"y":32425.186055399783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"73f3e391-cceb-4d27-932f-7b3c76d63b24","savedPayload":{"position":{"x":34629.497980836786,"y":32425.186055399783},"targetPosition":{"x":34566.985205192934,"y":32026.856287734012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"e3b43a25-cbb0-4ebc-ac2f-148a56d7d934"}}}],"announcements":[],"id":"913c2adb-a405-40e1-b661-300ec59c4ea0","savedPayload":{"position":{"x":34566.985205192934,"y":32026.856287734012},"targetPosition":{"x":34242.223416518915,"y":31767.17190193582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"be65b94d-3942-43c3-96aa-354447d5d591","savedPayload":{"position":{"x":35266.86864213329,"y":32080.796230194483},"targetPosition":{"x":34898.47957079251,"y":32244.880649959683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"fb87ce68-53e9-4553-a0d4-c996920c9b7a","savedPayload":{"position":{"x":35881.98510857697,"y":33453.83239370252},"targetPosition":{"x":35556.24500068716,"y":33217.03786906918},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1c9f9e96-a31d-42dc-a72f-ee8c25057426","savedPayload":{"position":{"x":35556.24500068716,"y":33217.03786906918},"targetPosition":{"x":35230.10643190333,"y":32980.148545011216},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"2d8cbbda-0c6c-4f48-ab1a-4f3ee6cb46d1","savedPayload":{"position":{"x":35144.11024531394,"y":33766.74632003621},"targetPosition":{"x":35186.14435295862,"y":33366.033340052745},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e4719fbb-2730-46bf-9593-75e9544d860c","savedPayload":{"position":{"x":35186.14435295862,"y":33366.033340052745},"targetPosition":{"x":35230.10643190333,"y":32980.148545011216},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"60819e62-c36a-4cf6-86ea-09aa1046f1b7","savedPayload":{"position":{"x":35230.10643190333,"y":32980.148545011216},"targetPosition":{"x":35061.15284169607,"y":32613.19638922832},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"297f0537-a281-46ab-89a4-9aab36495673","savedPayload":{"position":{"x":35061.15284169607,"y":32613.19638922832},"targetPosition":{"x":34898.47957079251,"y":32244.880649959683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"e3b43a25-cbb0-4ebc-ac2f-148a56d7d934"}}}],"announcements":[],"id":"83f85765-e13b-406a-bd56-7fd820eebc16","savedPayload":{"position":{"x":34898.47957079251,"y":32244.880649959683},"targetPosition":{"x":34566.985205192934,"y":32026.856287734012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cf907f3e-a01a-4ffb-9e3b-23ea0d8f34d1","savedPayload":{"position":{"x":33892.049283641114,"y":31512.87348125915},"targetPosition":{"x":33565.701923404486,"y":31275.6154406843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"fa95edc3-acc6-44c0-acb1-47583e1ff54a","savedPayload":{"position":{"x":33690.80820420145,"y":32071.297117691756},"targetPosition":{"x":33628.26011341306,"y":31673.51260213062},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"67446ae0-3e01-451b-8689-d9c7ea48a1f4","savedPayload":{"position":{"x":33629.00012297632,"y":31673.95650524724},"targetPosition":{"x":33565.701923404486,"y":31275.6154406843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3f7a5501-fa20-4b3b-b038-2297cb2fd04e","savedPayload":{"position":{"x":33565.701923404486,"y":31275.6154406843},"targetPosition":{"x":33239.48474341851,"y":31038.643250235426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"938021bb-3f71-4d07-961b-bdac0c208ec6","savedPayload":{"position":{"x":33385.03651416626,"y":31721.91869755804},"targetPosition":{"x":33115.24150182601,"y":31421.868407518647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"dc7931a1-ce6a-4a8b-bc84-65cbfc4ebbd0","savedPayload":{"position":{"x":32676.438509295866,"y":32098.960417908125},"targetPosition":{"x":32895.535995884864,"y":31760.66588131618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4f75b57a-e00c-4479-9cf0-7c87eef8254b","savedPayload":{"position":{"x":32895.5338274171,"y":31760.68558474898},"targetPosition":{"x":33115.24150182601,"y":31421.868407518647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2371e1b0-7d6e-47d8-92b3-8447bd933af5","savedPayload":{"position":{"x":33115.24150182601,"y":31421.868407518647},"targetPosition":{"x":33239.48474341851,"y":31038.643250235426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"77e56192-a0b0-4786-afdb-8e59ba757ccf","savedPayload":{"position":{"x":33239.48474341851,"y":31038.643250235426},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S3 - 2H Down","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"0c6d7b91-4bbf-4e27-850c-6348ffea4055","savedPayload":{"position":{"x":31634.350378426207,"y":30259.571095345415},"targetPosition":{"x":32263.43911849039,"y":30259.947220728467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9c8b0541-0125-4ed1-8bcb-2d8a539bcc85","savedPayload":{"position":{"x":32263.43911849039,"y":30259.947220728467},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"b09863b6-7ea3-4929-8b3c-f99409fb1bf1","savedPayload":{"position":{"x":31696.88500088226,"y":29870.632625415637},"targetPosition":{"x":32294.89171998345,"y":30065.140782336246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"26835b4a-83a2-4209-84a0-e38c74ff993a","savedPayload":{"position":{"x":32294.89171998345,"y":30065.140782336246},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"2fc1bc08-9def-4a37-abc3-dbac24a2c360","savedPayload":{"position":{"x":31875.884827815316,"y":29520.365687488113},"targetPosition":{"x":32384.487164002785,"y":29890.063455449697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1fa5642c-48f4-492b-81d3-5d752decd8af","savedPayload":{"position":{"x":32384.487164002785,"y":29890.063455449697},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Down","code":"chart.at02hs.bollingerBand.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Down\"","id":"07c23ae8-6440-4b6e-aabe-67afdba80c7c","savedPayload":{"position":{"x":32154.209372947636,"y":29242.349943028978},"targetPosition":{"x":32523.67032296668,"y":29751.085106238465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c14a9e3b-6d84-44c9-8273-1a37850087b4","savedPayload":{"position":{"x":32523.67032296668,"y":29751.085106238465},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Up","code":"chart.at02hs.bollingerBand.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Up\"","id":"57d558fd-ecfa-429a-9304-88f41b32b44c","savedPayload":{"position":{"x":32504.830345617527,"y":29063.85702318619},"targetPosition":{"x":32698.994485377014,"y":29661.828315918163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ab49ca45-333d-4ed9-99a1-a3ca632cbbb2","savedPayload":{"position":{"x":32698.994485377014,"y":29661.828315918163},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H NOT Side","code":"chart.at04hs.bollingerSubChannel.slope === \"Side\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope != \"Side\"","id":"261d9835-4d23-4b58-946d-b9324d920273","savedPayload":{"position":{"x":32893.22119985897,"y":29002.336709240757},"targetPosition":{"x":32893.22305153142,"y":29631.07615103375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4d450dc4-bfbb-4779-b070-cac385b809c7","savedPayload":{"position":{"x":32893.22305153142,"y":29631.07615103375},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H RSI > 60","code":"chart.at24hs.rsi14.value < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.rsi14.value > 60","id":"c0afd580-e4b8-4c7c-ac4c-7370e5a79a98","savedPayload":{"position":{"x":33281.4681278924,"y":29063.86071973356},"targetPosition":{"x":33087.3880414573,"y":29661.86609096789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"95207d90-4af8-4b5a-8321-0076e8b8929d","savedPayload":{"position":{"x":33087.3880414573,"y":29661.86609096789},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"92ef2b33-6bd1-4ab7-91a4-ddb3e035ed08","savedPayload":{"position":{"x":33632.012109517724,"y":29242.375556754567},"targetPosition":{"x":33262.687218260275,"y":29751.231513287654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3ac7ebe1-3f6f-4e35-a8a2-f39aa509c849","savedPayload":{"position":{"x":33262.687218260275,"y":29751.231513287654},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 3: 02H Down && 4H Side && 1H Medium, Steep or Extreme","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Down\" && chart.at12hs.bollingerChannel.direction === \"Down\" && chart.at04hs.bollingerSubChannel.slope === \"Side\" && (chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\")) {false} else {true}","id":"6ef3aec8-78cb-4942-bcfd-ff860b2b7971","savedPayload":{"position":{"x":33910.39444114047,"y":29520.60636592229},"targetPosition":{"x":33401.847358196974,"y":29890.34803965414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5af02e84-f067-45ee-8d7e-44966254e430","savedPayload":{"position":{"x":33401.847358196974,"y":29890.34803965414},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"20017afc-2e99-4596-9a1d-41b8b8ee7999","savedPayload":{"position":{"x":32893.236637209084,"y":30260.196412414953},"targetPosition":{"x":33087.874215175114,"y":30859.83394852712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"e6080867-291e-4dc7-b00f-582656e25e80","savedPayload":{"position":{"x":33087.874215175114,"y":30859.83394852712},"targetPosition":{"x":33217.802289890395,"y":31259.358809115663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"890f22bb-d291-4fdd-b444-5afbea478f13","savedPayload":{"position":{"x":33996.096905529594,"y":29767.64086654404},"targetPosition":{"x":33805.65783204276,"y":30141.695325277316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ef921c85-8bd3-49cc-aeaa-2556181fec27","savedPayload":{"position":{"x":33805.65783204276,"y":30141.695325277316},"targetPosition":{"x":33599.576454871414,"y":30510.782338093184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d4217f36-b6e4-45dc-979d-5ad1e74d0b85","savedPayload":{"position":{"x":33599.576454871414,"y":30510.782338093184},"targetPosition":{"x":33408.94602515501,"y":30885.02159265233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"92cd971f-1315-425e-883c-4adefb12883e","savedPayload":{"position":{"x":33408.94602515501,"y":30885.02159265233},"targetPosition":{"x":33217.802289890395,"y":31259.358809115663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"f5611889-2d66-4b5a-84ca-1bd444e56cb0","savedPayload":{"position":{"x":33395.423835013324,"y":29567.707236019025},"targetPosition":{"x":33709.38286226146,"y":30112.552280287062},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96fdbdfc-c7d9-4e54-972c-de01d3f58a76","savedPayload":{"position":{"x":33709.38286226146,"y":30112.552280287062},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"ccd315a6-ae1c-4fcf-b6d4-deac89aef390","savedPayload":{"position":{"x":33778.40641159468,"y":29431.615941930762},"targetPosition":{"x":33908.92112230485,"y":30046.80251988933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"382fb23e-b4bc-4792-a492-328fa6201f6c","savedPayload":{"position":{"x":33908.92112230485,"y":30046.80251988933},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"cbc7b7f8-b6f1-4752-9259-6372178089e4","savedPayload":{"position":{"x":34170.783725012014,"y":29411.253122777303},"targetPosition":{"x":34105.031023089345,"y":30036.658201403985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"74975af2-4802-47bc-8251-97981c77dc4a","savedPayload":{"position":{"x":34105.031023089345,"y":30036.658201403985},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Down","code":"chart.at02hs.bollingerBand.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Down\"","id":"b7bdf1ce-16a5-4fc0-a87b-f8815615ef99","savedPayload":{"position":{"x":34550.61749887825,"y":29513.125500171263},"targetPosition":{"x":34294.97437106376,"y":30087.594297581873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a1e09269-19e5-4dff-8aeb-66d8bf6bd96d","savedPayload":{"position":{"x":34294.97437106376,"y":30087.594297581873},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Up","code":"chart.at02hs.bollingerBand.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Up\"","id":"c516d181-ad48-49cd-a298-fddb6e91de94","savedPayload":{"position":{"x":34880.39014568893,"y":29727.362169392713},"targetPosition":{"x":34459.88109390561,"y":30194.77025937824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d57a06c7-d40b-4488-93fe-f7441dd299c6","savedPayload":{"position":{"x":34459.88109390561,"y":30194.77025937824},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H NOT Side","code":"chart.at04hs.bollingerSubChannel.slope === \"Side\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope != \"Side\"","id":"9fabe671-7d14-43b5-ba69-831f4f2a066f","savedPayload":{"position":{"x":35127.70499575345,"y":30032.837976998024},"targetPosition":{"x":34583.614143110055,"y":30347.712936148797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"177c777c-ff05-4dc0-8b6b-d663b7329938","savedPayload":{"position":{"x":34583.614143110055,"y":30347.712936148797},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H RSI > 60","code":"chart.at24hs.rsi14.value < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.rsi14.value > 60","id":"e48e0eea-8553-4baa-ab82-de8e822619b3","savedPayload":{"position":{"x":35232.973925329425,"y":30343.470555819193},"targetPosition":{"x":34654.06615516728,"y":30531.468555641797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ee231079-650d-4046-8e5b-ad3a82e09efa","savedPayload":{"position":{"x":34654.06615516728,"y":30531.468555641797},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"241ea7c4-ec8c-4f74-994f-27cdc3cc5084","savedPayload":{"position":{"x":35289.263598407466,"y":30849.634778970838},"targetPosition":{"x":34664.35817900187,"y":30727.80228253821},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b1bb2780-2f92-47da-9ea5-39d0397e7144","savedPayload":{"position":{"x":34664.35817900187,"y":30727.80228253821},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 3: 02H Down && 4H Side && 1H Medium, Steep or Extreme","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Down\" && chart.at12hs.bollingerChannel.direction === \"Down\" && chart.at04hs.bollingerSubChannel.slope === \"Side\" && (chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\")) {false} else {true}","id":"35f95b09-f037-43ba-96f9-fa9d7d677bea","savedPayload":{"position":{"x":35186.911624698034,"y":31174.495365223673},"targetPosition":{"x":34613.44451250334,"y":30917.967080169867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6d92e5f1-7164-4f38-9a56-07334aee23fd","savedPayload":{"position":{"x":34613.44451250334,"y":30917.967080169867},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2f0018b8-a386-4eb2-8cf8-b61c00af7639","savedPayload":{"position":{"x":34039.16510092277,"y":30662.160080407033},"targetPosition":{"x":33617.50526924846,"y":31130.04262069468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"ef95cbde-2d8b-4b1e-99a5-887e8ae2134c","savedPayload":{"position":{"x":34064.66251833871,"y":31147.655408084436},"targetPosition":{"x":33889.356993272086,"y":31341.668778615298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96060481-8324-4e13-808e-110537619ad7","savedPayload":{"position":{"x":33827.692335875254,"y":31119.423819500727},"targetPosition":{"x":33617.50526924846,"y":31130.04262069468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a937976d-4084-4184-a913-910b75ed6659","savedPayload":{"position":{"x":33617.50526924846,"y":31130.04262069468},"targetPosition":{"x":33217.802289890395,"y":31259.358809115663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"def5d0af-b5ee-43f9-9ea0-0b73cd37d82e","savedPayload":{"position":{"x":33217.802289890395,"y":31259.358809115663},"targetPosition":{"x":33027.197109693196,"y":31632.476242375036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"7e0c459e-9cc8-4d5a-bc57-fb82c79c09c5","savedPayload":{"position":{"x":35135.70214605619,"y":30167.516083927436},"targetPosition":{"x":35293.07724412037,"y":30440.26764173129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"e3edba7e-b9f0-4f02-8f66-ce5b9829d767","savedPayload":{"position":{"x":35922.91984041911,"y":29348.815450539747},"targetPosition":{"x":35765.484647432946,"y":29621.567567535756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"076b5c63-1619-410e-9ee5-1fa66f3d035f","savedPayload":{"position":{"x":35765.484647432946,"y":29621.567567535756},"targetPosition":{"x":35607.95729325596,"y":29894.457895979314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"094675d4-792f-4529-9f36-55540ba6c57d","savedPayload":{"position":{"x":35607.95729325596,"y":29894.457895979314},"targetPosition":{"x":35450.49478104098,"y":30167.39244502679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"7318274d-9569-419a-ba18-c3c1df7191f8","savedPayload":{"position":{"x":35450.49478104098,"y":30167.39244502679},"targetPosition":{"x":35293.07724412037,"y":30440.26764173129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"d4d2eb85-82c2-4c39-9f1f-9c865905dd5b","savedPayload":{"position":{"x":35293.07724412037,"y":30440.26764173129},"targetPosition":{"x":35288.817725527595,"y":30747.9133770426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"295179a4-3458-455d-b4de-549db3a926a8","savedPayload":{"position":{"x":35288.817725527595,"y":30747.9133770426},"targetPosition":{"x":35289.0497852532,"y":31090.402311553746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"3466c2e0-e14f-4e76-9735-651f84617051","savedPayload":{"position":{"x":35692.920333218164,"y":30268.646393535015},"targetPosition":{"x":35659.66370706001,"y":30581.829281582708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"0ecb1abe-ce06-4d16-a850-b180b6b66252","savedPayload":{"position":{"x":36605.838815369854,"y":29816.50777554093},"targetPosition":{"x":36420.67086759038,"y":30071.16215403728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"30e0b04a-1a96-4850-ae5c-f3e85da03da3","savedPayload":{"position":{"x":36420.67086759038,"y":30071.16215403728},"targetPosition":{"x":36235.36714817673,"y":30325.959128296938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"f6e4f3d5-a156-48d8-9c93-1109c5a5fca5","savedPayload":{"position":{"x":36861.988247619585,"y":30391.53865762637},"targetPosition":{"x":36548.78807948588,"y":30358.761659611344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a40f8de3-9ee1-47f7-9f91-71dd2240ab98","savedPayload":{"position":{"x":36548.78807948588,"y":30358.761659611344},"targetPosition":{"x":36235.36714817673,"y":30325.959128296938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"22980027-50ca-447a-a53c-fa84e87cfc4b","savedPayload":{"position":{"x":36235.36714817673,"y":30325.959128296938},"targetPosition":{"x":35947.5490253868,"y":30453.9215256811},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"ae0768db-6f1c-438d-af27-223b71c98b26","savedPayload":{"position":{"x":35947.5490253868,"y":30453.9215256811},"targetPosition":{"x":35659.66370706001,"y":30581.829281582708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"76c590b2-d1f8-497d-aadc-084d4500772c","savedPayload":{"position":{"x":35659.66370706001,"y":30581.829281582708},"targetPosition":{"x":35474.3107204167,"y":30836.26619004085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9fcc3e4a-8a02-4dbd-82b8-b0f10843f527","savedPayload":{"position":{"x":35474.3107204167,"y":30836.26619004085},"targetPosition":{"x":35289.0497852532,"y":31090.402311553746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"1f9b31ce-64a5-4606-ba43-cdab0eb3dece","savedPayload":{"position":{"x":35888.51870731133,"y":30897.094478356263},"targetPosition":{"x":35588.76478443183,"y":30993.81670423616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"811a932e-9ad1-454e-aa71-86c100807627","savedPayload":{"position":{"x":35588.76478443183,"y":30993.81670423616},"targetPosition":{"x":35289.0497852532,"y":31090.402311553746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"4c2c3a4f-8cca-4211-b3d1-180266f99704","savedPayload":{"position":{"x":35888.02932685479,"y":31285.56938726938},"targetPosition":{"x":35588.475187273674,"y":31188.07770374712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7da16723-66b0-44a8-80a2-32afbfc33eda","savedPayload":{"position":{"x":35588.475187273674,"y":31188.07770374712},"targetPosition":{"x":35289.0497852532,"y":31090.402311553746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"05204106-bf49-4b86-be1e-c04acfff70ff","savedPayload":{"position":{"x":35289.0497852532,"y":31090.402311553746},"targetPosition":{"x":34270.93031373407,"y":31829.561903674166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"b739c187-7a8d-4877-b35d-db44832293a9","savedPayload":{"position":{"x":34582.036710214496,"y":31878.912006201877},"targetPosition":{"x":34270.93031373407,"y":31829.561903674166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"79d58168-9a31-4fe8-9e7e-19212ea5b481","savedPayload":{"position":{"x":34611.957839823925,"y":32060.94845886817},"targetPosition":{"x":34306.356993272086,"y":32012.668778615298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4a32c55d-ae86-4918-b898-ad027b574e14","savedPayload":{"position":{"x":34456.25406941115,"y":32084.595626386963},"targetPosition":{"x":34270.93031373407,"y":31829.561903674166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"96a417b6-09d8-4b1e-9778-3bef281c7849","savedPayload":{"position":{"x":34270.93031373407,"y":31829.561903674166},"targetPosition":{"x":33027.197109693196,"y":31632.476242375036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Slow Run","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"c57b9aaa-edc1-4a24-a2f9-1eeb3eed3d5c","savedPayload":{"position":{"x":34130.26731414797,"y":32800.3400427803},"targetPosition":{"x":33790.66857191591,"y":32553.726624302923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"22d1ba82-cecd-4ebf-a9b0-c02a2dcc4385","savedPayload":{"position":{"x":33790.66857191591,"y":32553.726624302923},"targetPosition":{"x":33432.69324860659,"y":32293.801129954125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f41b282c-06b8-4a86-9c94-18173ce77526","savedPayload":{"position":{"x":33432.82333847737,"y":32294.4434055754},"targetPosition":{"x":33092.84480699051,"y":32047.383542560598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"214e21c2-bdab-4d05-91b2-02f327d177b8","savedPayload":{"position":{"x":33560.189047347376,"y":33061.25591731097},"targetPosition":{"x":33168.17755880856,"y":32910.85719093055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"401d2bc0-0193-42de-8a65-df43242eb516","savedPayload":{"position":{"x":31019.353328127647,"y":34771.29319333476},"targetPosition":{"x":30873.113188713138,"y":34459.5430677265},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b023b429-024c-46eb-86f8-6e4e23be3b3c","savedPayload":{"position":{"x":30873.113188713138,"y":34459.5430677265},"targetPosition":{"x":30730.968945388893,"y":34140.681493701086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ee7cd341-d632-47d6-9ddf-4462e6961461","savedPayload":{"position":{"x":30730.968945388893,"y":34140.681493701086},"targetPosition":{"x":30588.167033308324,"y":33817.51375204604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"5c96f85d-f36d-496f-8c82-68bdbde4456f","savedPayload":{"position":{"x":32841.61331690757,"y":33175.13217299862},"targetPosition":{"x":33168.17755880856,"y":32910.85719093055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"241d29a5-2372-4c0b-9dd1-9c74e98d8593","savedPayload":{"position":{"x":33168.17755880856,"y":32910.85719093055},"targetPosition":{"x":33099.11889863151,"y":32474.052057676712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"54a1a04f-b59d-40d9-91d6-9716c0198983","savedPayload":{"position":{"x":33573.69376797636,"y":33571.86718032515},"targetPosition":{"x":33233.80391345122,"y":33325.478360001805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"23d9abaa-63cc-4aef-abaf-7b493213cd29","savedPayload":{"position":{"x":32449.77558908902,"y":34154.4611915215},"targetPosition":{"x":32015.40384472738,"y":34108.56368300236},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"28be9fea-5e5c-4c99-b4a4-6c01a831d9ce","savedPayload":{"position":{"x":32015.40384472738,"y":34108.56368300236},"targetPosition":{"x":31568.575996973697,"y":34061.39642915175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"c59f1c98-a4e9-40c1-8690-6543baa7a966","savedPayload":{"position":{"x":32283.759517871575,"y":34582.810236984864},"targetPosition":{"x":31931.786549495515,"y":34326.11237323376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c24d0f99-6491-40b3-94d9-49f91d354f3c","savedPayload":{"position":{"x":31931.786549495515,"y":34326.11237323376},"targetPosition":{"x":31568.575996973697,"y":34061.39642915175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"d6b4d297-a5fa-4561-acb0-b8d3b891912e","savedPayload":{"position":{"x":31946.197478846712,"y":34889.8385827318},"targetPosition":{"x":31751.053079962017,"y":34472.602873182244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c3f66d39-dc88-4049-895a-378f492a7d35","savedPayload":{"position":{"x":31751.053079962017,"y":34472.602873182244},"targetPosition":{"x":31568.575996973697,"y":34061.39642915175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"e9ac7090-a4d5-409d-9432-0d422f60e6e1","savedPayload":{"position":{"x":31475.217579292843,"y":34943.29649864423},"targetPosition":{"x":31521.155688266826,"y":34508.526991908395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a05e64ed-4262-42f1-b9dc-cc14f8b27c2d","savedPayload":{"position":{"x":31521.155688266826,"y":34508.526991908395},"targetPosition":{"x":31568.575996973697,"y":34061.39642915175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div previous ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"cb158763-cb2f-494b-88ab-dafeb3825ca4","savedPayload":{"position":{"x":31046.924625195723,"y":34779.00271509945},"targetPosition":{"x":31304.05023460572,"y":34425.23837899979},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"386bbe6b-9082-47e7-b750-e0e9d16a7030","savedPayload":{"position":{"x":31304.05023460572,"y":34425.23837899979},"targetPosition":{"x":31568.575996973697,"y":34061.39642915175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"32813be2-a6cd-4e5d-9a58-87eae5b3b5e9","savedPayload":{"position":{"x":33456.2367626283,"y":34169.229931685244},"targetPosition":{"x":33390.31829204923,"y":33754.57207201343},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"264bdd5b-5246-4a3f-bd09-5c50baf57963","savedPayload":{"position":{"x":33390.31829204923,"y":33754.57207201343},"targetPosition":{"x":33233.80391345122,"y":33325.478360001805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"241d29a5-2372-4c0b-9dd1-9c74e98d8593"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"308d9cf6-beba-4d14-9b90-bb11409e3835","savedPayload":{"position":{"x":32678.163507437253,"y":36556.91105564189},"targetPosition":{"x":32834.64820004886,"y":36148.98136136614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a787ffbe-ea25-41cb-a719-de115285eead","savedPayload":{"position":{"x":32834.64820004886,"y":36148.98136136614},"targetPosition":{"x":32991.201109072026,"y":35740.89140224141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d4b41076-5b23-498d-bc3e-1ccf277a1a43","savedPayload":{"position":{"x":32739.83720167254,"y":34005.06095530531},"targetPosition":{"x":32986.689244005254,"y":33665.01100359143},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"7cb4214c-3e3e-4a70-ad14-6ae2a568f24c","savedPayload":{"position":{"x":32986.689244005254,"y":33665.01100359143},"targetPosition":{"x":33233.80391345122,"y":33325.478360001805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"241d29a5-2372-4c0b-9dd1-9c74e98d8593"}}}],"announcements":[],"id":"592ad0d7-d583-4827-8ae6-48f6ad25c1a3","savedPayload":{"position":{"x":33233.80391345122,"y":33325.478360001805},"targetPosition":{"x":33168.17755880856,"y":32910.85719093055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"580ecace-0d6d-4632-ad8d-e6dc86df51c8","savedPayload":{"position":{"x":33668.801065501335,"y":33887.456734513806},"targetPosition":{"x":33276.768273175025,"y":33736.54711405289},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bf6a5ecf-f5c8-4d13-a15c-1b567422bee0","savedPayload":{"position":{"x":34576.829412485866,"y":37000.01142562244},"targetPosition":{"x":34410.432322905384,"y":36626.06517025616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ca87de8b-af92-4d83-af59-7c71f17e1be4","savedPayload":{"position":{"x":34410.432322905384,"y":36626.06517025616},"targetPosition":{"x":34243.930379694895,"y":36251.90943343497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"d626af7e-c8bb-4e17-95e5-ba5abda158d8","savedPayload":{"position":{"x":33763.03089309385,"y":36914.47628256974},"targetPosition":{"x":34003.45132162593,"y":36583.27161248551},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"98a76d2a-1ec4-413c-85b2-59865c6e1187","savedPayload":{"position":{"x":34003.45132162593,"y":36583.27161248551},"targetPosition":{"x":34243.930379694895,"y":36251.90943343497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9406f175-4d00-436d-ab9e-27081d36611b","savedPayload":{"position":{"x":34243.930379694895,"y":36251.90943343497},"targetPosition":{"x":34286.475860589395,"y":35844.37747430465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"aef3e320-bbaf-42e5-8083-21157428bfaf","savedPayload":{"position":{"x":33126.35798120075,"y":34129.20434251816},"targetPosition":{"x":33276.768273175025,"y":33736.54711405289},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"241d29a5-2372-4c0b-9dd1-9c74e98d8593"}}}],"announcements":[],"id":"9b594083-3fb0-4dfa-ba4b-1b1ada8687fe","savedPayload":{"position":{"x":33276.768273175025,"y":33736.54711405289},"targetPosition":{"x":33233.80391345122,"y":33325.478360001805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"80d81cb5-6a3a-4eff-ad9f-5590450c7366","savedPayload":{"position":{"x":33158.365096722715,"y":32462.606975036346},"targetPosition":{"x":33092.84480699051,"y":32047.383542560598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"8d20508d-dc45-4488-8a09-814a24826d00","savedPayload":{"position":{"x":32806.905084060476,"y":32680.453294176434},"targetPosition":{"x":32744.356993272086,"y":32282.668778615298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c04c40be-cd86-4c0e-b802-681f5c47a7f7","savedPayload":{"position":{"x":32846.11743673657,"y":32387.282950915138},"targetPosition":{"x":33092.84480699051,"y":32047.383542560598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3ea826ac-fe6b-4b8c-a0dc-f830202e8306","savedPayload":{"position":{"x":33092.84480699051,"y":32047.383542560598},"targetPosition":{"x":33027.197109693196,"y":31632.476242375036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"0400f408-3b91-42fd-839b-c71d8212e22b","savedPayload":{"position":{"x":32424.640743292275,"y":32175.998602689077},"targetPosition":{"x":32653.493876842065,"y":31823.167177806845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"761d7668-7a62-4221-be67-5754f4b7b2f2","savedPayload":{"position":{"x":32352.256298910706,"y":32433.62407361041},"targetPosition":{"x":32571.508942630673,"y":32095.215305371734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"00e6ad00-1176-41ab-a1f3-52a59aa8f7cd","savedPayload":{"position":{"x":32242.00054662029,"y":31910.80310333033},"targetPosition":{"x":32653.493876842065,"y":31823.167177806845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f83a0cfd-237d-4b3f-b4f0-9fa0a71b00bb","savedPayload":{"position":{"x":32653.493876842065,"y":31823.167177806845},"targetPosition":{"x":33027.197109693196,"y":31632.476242375036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4af71378-a61f-4d1d-a1cd-6933897ef3bd","savedPayload":{"position":{"x":33027.197109693196,"y":31632.476242375036},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S8 - 4H Up","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"0b8368d3-b1b1-413b-bbeb-95641a85b80f","savedPayload":{"position":{"x":32583.02153148494,"y":30375.069170464114},"targetPosition":{"x":32890.507807742724,"y":30666.144907896156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6034fcd2-8d4d-48b8-a392-18535fa70a53","savedPayload":{"position":{"x":32890.507807742724,"y":30666.144907896156},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"5e94af5d-2be9-4ae9-ae44-2867f755a827","savedPayload":{"position":{"x":32771.60113409807,"y":30224.788572225458},"targetPosition":{"x":32985.067261121585,"y":30591.65661580369},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f811cfed-9f3e-4211-84da-066b038d0b33","savedPayload":{"position":{"x":32985.067261121585,"y":30591.65661580369},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"9d5052c6-8411-4f18-ace8-17f021dfd5e2","savedPayload":{"position":{"x":32997.279518098934,"y":30134.976526965966},"targetPosition":{"x":33098.83303822341,"y":30547.231787359233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d4f2d1aa-32fd-4345-8291-3da0a9bf3fc5","savedPayload":{"position":{"x":33098.83303822341,"y":30547.231787359233},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Up\"","id":"3347b5df-6552-43dd-8265-43bb7d87df98","savedPayload":{"position":{"x":33236.19812252272,"y":30108.997090796624},"targetPosition":{"x":33217.92836568535,"y":30533.18565473396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7a4b6d88-b433-435d-a683-6eb73780f27b","savedPayload":{"position":{"x":33217.92836568535,"y":30533.18565473396},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"3bf685d6-ac1f-4bab-a7f1-8450ee657948","savedPayload":{"position":{"x":33473.11688690986,"y":30153.501414040173},"targetPosition":{"x":33336.27708618797,"y":30555.259147958208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"22eebcad-ee09-4e3b-897e-9495bb82784d","savedPayload":{"position":{"x":33336.27708618797,"y":30555.259147958208},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Side or 1H Extreme or Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope === \"Side\" || (chart.at04hs.bollingerSubChannel.slope === \"Gentle\" && (chart.at01hs.bollingerSubChannel.slope === \"Extreme\" || chart.at01hs.bollingerSubChannel.slope === \"Side\"))","id":"d5a69ea3-5ae1-4e4b-b858-8844f20f6369","savedPayload":{"position":{"x":33688.10523565221,"y":30263.125417578416},"targetPosition":{"x":33443.773670688315,"y":30610.037447064653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"54ac9a91-76eb-4d28-9d75-bcad0008c481","savedPayload":{"position":{"x":33443.773670688315,"y":30610.037447064653},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"e84f9d0b-15fc-4656-a2ed-392304b44df3","savedPayload":{"position":{"x":33863.57761044307,"y":30428.90350360676},"targetPosition":{"x":33531.52386726751,"y":30692.94592730243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"658b7720-b18e-42d0-9cb3-7f5c71928409","savedPayload":{"position":{"x":33531.52386726751,"y":30692.94592730243},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 3: 02H Down && 4H Side && 1H Medium, Steep or Extreme","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Down\" && chart.at12hs.bollingerChannel.direction === \"Down\" && chart.at04hs.bollingerSubChannel.slope === \"Side\" && (chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\")) {false} else {true}","id":"84b0abb3-cf34-491e-9436-4fdb07ee4977","savedPayload":{"position":{"x":33985.280778200904,"y":30637.388456021126},"targetPosition":{"x":33592.38327848182,"y":30797.24063448982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f39b86b4-5a2a-470c-8503-0ee11eab51f6","savedPayload":{"position":{"x":33592.38327848182,"y":30797.24063448982},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 4: 02H Up && 02H Gentle && 3H Side","code":"chart.at02hs.percentageBandwidth.movingAverage > chart.at24hs.bollingerSubChannel.slope + chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Gentle\" && chart.at03hs.bollingerSubChannel.slope === \"Side\") {false} else {true}","id":"3bde8f4f-c2e3-413b-8df1-37aeb20a85f9","savedPayload":{"position":{"x":34043.32401464137,"y":30871.65436333817},"targetPosition":{"x":33621.38059220496,"y":30914.477414693258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"04fd8c8d-8074-4932-b3e1-56357c7829ea","savedPayload":{"position":{"x":33621.38059220496,"y":30914.477414693258},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 2: 02H, 03H, 04H, 06H, all Up && 2H Steep && 1H, 6H NOT Gentle","code":"chart.at24hs.bollingerChannel.direction + chart.at24hs.bollingerBand.slope > chart.at01hs.rsi14.value","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerSubChannel.direction === \"Up\" && chart.at03hs.bollingerSubChannel.direction === \"Up\" && chart.at04hs.bollingerSubChannel.direction === \"Up\" && chart.at06hs.bollingerSubChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Steep\" && chart.at01hs.bollingerSubChannel.slope != \"Gentle\" && chart.at06hs.bollingerSubChannel.slope != \"Gentle\") {false} else {true}","id":"cf1a034f-093e-422f-ba6f-ec4c3ce091d2","savedPayload":{"position":{"x":34030.35077514018,"y":31104.321423914676},"targetPosition":{"x":33616.07981062104,"y":31035.056200409377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"69c8d1ca-52b4-4eed-a65b-7a8a870bb46d","savedPayload":{"position":{"x":33616.07981062104,"y":31035.056200409377},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"64643171-239b-49ac-adc7-0124075eb96e","savedPayload":{"position":{"x":33198.90105550597,"y":30956.877809899306},"targetPosition":{"x":33028.14648636911,"y":31378.695917323454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"9c8b28ef-af88-416c-9262-20efbf357408","savedPayload":{"position":{"x":33028.14648636911,"y":31378.695917323454},"targetPosition":{"x":32835.90089509466,"y":31756.649802761232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"09286632-34ad-4ea0-9f01-32bd89b20900","savedPayload":{"position":{"x":34447.590158460414,"y":31232.025739290348},"targetPosition":{"x":34044.21217345816,"y":31363.108994682723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f75343e2-3c65-413b-85de-8e88a1f91e09","savedPayload":{"position":{"x":34044.21217345816,"y":31363.108994682723},"targetPosition":{"x":33640.74002460985,"y":31494.101999004426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"68074fb6-7ca9-43a7-a83c-abcd0c55148c","savedPayload":{"position":{"x":33640.74002460985,"y":31494.101999004426},"targetPosition":{"x":33239.78472574559,"y":31625.86269368105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"07f812fb-602f-4713-871d-648faa64a6ce","savedPayload":{"position":{"x":33239.78472574559,"y":31625.86269368105},"targetPosition":{"x":32835.90089509466,"y":31756.649802761232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"07c87bc6-f04b-4a08-88c3-82df8036a971","savedPayload":{"position":{"x":33850.367819499166,"y":31107.164291469344},"targetPosition":{"x":33751.92630459747,"y":31519.524189915035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9a120c5b-3fda-4ff3-89af-621d53b2e075","savedPayload":{"position":{"x":33751.92630459747,"y":31519.524189915035},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"d054b93f-3378-49e9-9e18-73373b1ec935","savedPayload":{"position":{"x":34061.47889360183,"y":31200.202061977026},"targetPosition":{"x":33848.155210901954,"y":31560.253992569105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cbc32f34-4189-4526-a323-9291e672495c","savedPayload":{"position":{"x":33848.155210901954,"y":31560.253992569105},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"562f3238-94f0-41af-8d61-f9984bc8bd0b","savedPayload":{"position":{"x":34248.89826260879,"y":31340.441558383638},"targetPosition":{"x":33943.065513621616,"y":31634.31513182773},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d5b4549d-92bd-4c3e-af81-884899aae8d9","savedPayload":{"position":{"x":33943.065513621616,"y":31634.31513182773},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Up\"","id":"ce7a4a64-743a-443d-a825-b02c25d4b55a","savedPayload":{"position":{"x":34389.59498945044,"y":31536.34634291851},"targetPosition":{"x":34013.448225311375,"y":31732.263679781754},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4b992367-9f3a-4ce3-b389-2fc84c8cca16","savedPayload":{"position":{"x":34013.448225311375,"y":31732.263679781754},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"a1c10e9c-19b9-4805-b441-ce3ec64b23a1","savedPayload":{"position":{"x":34469.42688721992,"y":31763.970288609766},"targetPosition":{"x":34053.391618664995,"y":31846.123357271776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f5f2b1bb-f847-4994-a1ab-5252c7c685c6","savedPayload":{"position":{"x":34053.391618664995,"y":31846.123357271776},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Side or 1H Extreme or Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope === \"Side\" || (chart.at04hs.bollingerSubChannel.slope === \"Gentle\" && (chart.at01hs.bollingerSubChannel.slope === \"Extreme\" || chart.at01hs.bollingerSubChannel.slope === \"Side\"))","id":"3d26867a-7ffc-4b17-a226-c2cf2d02a1ae","savedPayload":{"position":{"x":34481.870711502044,"y":32004.452875644973},"targetPosition":{"x":34059.63071301428,"y":31966.419472112397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a96f6aed-5ba0-458e-b073-a14a7030a4ce","savedPayload":{"position":{"x":34059.63071301428,"y":31966.419472112397},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"f674d92e-8b5b-4a88-9c97-c0499fea9f41","savedPayload":{"position":{"x":34425.87549450783,"y":32239.301956007203},"targetPosition":{"x":34031.64897146041,"y":32083.89092574789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b0663ef7-ad0e-44eb-8448-87c92b066de1","savedPayload":{"position":{"x":34031.64897146041,"y":32083.89092574789},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 3: 02H Down && 4H Side && 1H Medium, Steep or Extreme","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Down\" && chart.at12hs.bollingerChannel.direction === \"Down\" && chart.at04hs.bollingerSubChannel.slope === \"Side\" && (chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\")) {false} else {true}","id":"6337812b-5df1-428e-9d36-f7935dde3ca7","savedPayload":{"position":{"x":34305.98828960082,"y":32448.99884859954},"targetPosition":{"x":33971.70269044266,"y":32188.76251868252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cda16118-0ec1-4313-bb27-be56055bb89a","savedPayload":{"position":{"x":33971.70269044266,"y":32188.76251868252},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 4: 02H Up && 02H Gentle && 3H Side","code":"chart.at02hs.percentageBandwidth.movingAverage > chart.at24hs.bollingerSubChannel.slope + chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Gentle\" && chart.at03hs.bollingerSubChannel.slope === \"Side\") {false} else {true}","id":"d467380e-37f7-4d69-8384-c766fa7511ef","savedPayload":{"position":{"x":34131.9442575213,"y":32616.530009178252},"targetPosition":{"x":33884.62935458651,"y":32272.531065884734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"90afdd8d-1565-42b1-abbb-e88eb2e359db","savedPayload":{"position":{"x":33884.62935458651,"y":32272.531065884734},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 2: 02H, 03H, 04H, 06H, all Up && 2H Steep && 1H, 6H NOT Gentle","code":"chart.at24hs.bollingerChannel.direction + chart.at24hs.bollingerBand.slope > chart.at01hs.rsi14.value","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerSubChannel.direction === \"Up\" && chart.at03hs.bollingerSubChannel.direction === \"Up\" && chart.at04hs.bollingerSubChannel.direction === \"Up\" && chart.at06hs.bollingerSubChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Steep\" && chart.at01hs.bollingerSubChannel.slope != \"Gentle\" && chart.at06hs.bollingerSubChannel.slope != \"Gentle\") {false} else {true}","id":"051149b3-b815-4eb2-952c-88317a972764","savedPayload":{"position":{"x":33917.66926583683,"y":32728.305067164874},"targetPosition":{"x":33777.32415729678,"y":32328.419178658256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ac3a3676-3fc0-4eed-97c8-51fe93a65256","savedPayload":{"position":{"x":33777.32415729678,"y":32328.419178658256},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3583b309-fa26-4e63-bfb2-055d5bad14b7","savedPayload":{"position":{"x":33637.0339345046,"y":31928.112734113376},"targetPosition":{"x":33213.509077296134,"y":31949.716370342587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"1cca5dce-5617-4b2d-b103-68c7289c7912","savedPayload":{"position":{"x":33248.66251833871,"y":31922.655408084436},"targetPosition":{"x":33073.356993272086,"y":32116.668778615298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bdadf3d3-ff21-4ea1-a342-9c135a422a3b","savedPayload":{"position":{"x":33370.94219349302,"y":32092.35851956931},"targetPosition":{"x":33213.509077296134,"y":31949.716370342587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e86cdca6-99e9-487f-b824-af95cf635d1f","savedPayload":{"position":{"x":33213.509077296134,"y":31949.716370342587},"targetPosition":{"x":32835.90089509466,"y":31756.649802761232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"fa8dc2de-7299-4e00-82a7-deb31393b442","savedPayload":{"position":{"x":32835.90089509466,"y":31756.649802761232},"targetPosition":{"x":32433.371579576764,"y":31886.914337943625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"be4be272-6865-445f-81e9-320f8bfdc392","savedPayload":{"position":{"x":34967.124271760935,"y":32358.1785110076},"targetPosition":{"x":34884.7347766961,"y":32665.58211057604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"5bee76dc-6b48-47d0-92c1-be86008a0567","savedPayload":{"position":{"x":36114.12799068074,"y":32336.170693053667},"targetPosition":{"x":35806.871460174916,"y":32418.413004338316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"058c7bc3-1b46-415d-bcf6-b2b260049b34","savedPayload":{"position":{"x":35806.871460174916,"y":32418.413004338316},"targetPosition":{"x":35499.43380969467,"y":32500.74406598618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cba32e81-cca9-4056-bd59-82f986580893","savedPayload":{"position":{"x":35499.43380969467,"y":32500.74406598618},"targetPosition":{"x":35192.04380396341,"y":32583.121051172304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"72bf5a83-c129-4bcb-b196-7efbf38b3122","savedPayload":{"position":{"x":35192.04380396341,"y":32583.121051172304},"targetPosition":{"x":34884.7347766961,"y":32665.58211057604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"502b92e1-1e58-46a5-9ecf-8cc1636f0ff4","savedPayload":{"position":{"x":34884.7347766961,"y":32665.58211057604},"targetPosition":{"x":34660.02936631182,"y":32890.48337181073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"eb4ede91-3ccc-41f8-b54c-8295767f386c","savedPayload":{"position":{"x":34660.02936631182,"y":32890.48337181073},"targetPosition":{"x":34435.67151202602,"y":33115.14655163129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"39c79407-8af5-465e-af51-1c75aad45115","savedPayload":{"position":{"x":35311.11096720446,"y":32816.9272234083},"targetPosition":{"x":35063.64575113468,"y":33016.76264590724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"aa01ada7-95ad-41e6-96f7-5c31702a541e","savedPayload":{"position":{"x":36286.24106064014,"y":33145.81980834591},"targetPosition":{"x":35972.055489563856,"y":33195.34612138585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d717b269-b5ec-4198-b8c4-4191fbbc4b18","savedPayload":{"position":{"x":35972.055489563856,"y":33195.34612138585},"targetPosition":{"x":35657.673132234,"y":33244.878314280504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"5e2b89fd-d5f9-4c8a-98e1-44ff5c2844cd","savedPayload":{"position":{"x":36058.15655754124,"y":33739.29437123348},"targetPosition":{"x":35857.98050868123,"y":33492.17091282344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d715ce3c-8efb-4ff3-bac9-4339b5906a91","savedPayload":{"position":{"x":35857.98050868123,"y":33492.17091282344},"targetPosition":{"x":35657.673132234,"y":33244.878314280504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1133b940-15fd-4255-8099-8c83ebf9ab1d","savedPayload":{"position":{"x":35657.673132234,"y":33244.878314280504},"targetPosition":{"x":35360.66365230035,"y":33130.86179964265},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"e6a82789-515c-403d-a11d-9c16d7e1e2d0","savedPayload":{"position":{"x":35360.66365230035,"y":33130.86179964265},"targetPosition":{"x":35063.64575113468,"y":33016.76264590724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"2fbf4e78-500b-4e2a-876b-fec9950bfeb4","savedPayload":{"position":{"x":35063.64575113468,"y":33016.76264590724},"targetPosition":{"x":34749.50080339453,"y":33066.0137817785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7e699a39-d4bc-44d7-bb6c-7813d7d63aeb","savedPayload":{"position":{"x":34749.50080339453,"y":33066.0137817785},"targetPosition":{"x":34435.67151202602,"y":33115.14655163129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"3d73ecde-b6ca-4229-9536-fbc7f87e0d45","savedPayload":{"position":{"x":35001.972454730174,"y":33404.90881119627},"targetPosition":{"x":34718.751802473744,"y":33260.05696886418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c43b5b83-3c68-480e-b390-26c224b63bbf","savedPayload":{"position":{"x":34718.751802473744,"y":33260.05696886418},"targetPosition":{"x":34435.67151202602,"y":33115.14655163129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"1e208de6-1b0c-4754-9b10-41edc1653336","savedPayload":{"position":{"x":34723.83391273956,"y":33682.356075508505},"targetPosition":{"x":34579.63262505743,"y":33398.762441228064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2c575ff8-0704-4398-8792-34e0eeb4381f","savedPayload":{"position":{"x":34579.63262505743,"y":33398.762441228064},"targetPosition":{"x":34435.67151202602,"y":33115.14655163129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"05c05d0c-7815-464b-bbf2-f7d2820d0235","savedPayload":{"position":{"x":34435.67151202602,"y":33115.14655163129},"targetPosition":{"x":33180.75535106592,"y":32916.07101014247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"478b1483-d146-4141-b6e7-2e913d285da5","savedPayload":{"position":{"x":33367.5784322329,"y":33173.57800692712},"targetPosition":{"x":33180.75535106592,"y":32916.07101014247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"08bb3184-c06a-43b6-9463-fd922b64abbd","savedPayload":{"position":{"x":33158.957839823925,"y":33124.948458868166},"targetPosition":{"x":32853.356993272086,"y":33076.6687786153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c6b029d3-1de0-4dbf-80bd-e303ae27a2ba","savedPayload":{"position":{"x":33131.10438055651,"y":33230.608107064065},"targetPosition":{"x":33180.75535106592,"y":32916.07101014247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a4386996-dbe4-434c-818b-66ac926fc575","savedPayload":{"position":{"x":33180.75535106592,"y":32916.07101014247},"targetPosition":{"x":32433.371579576764,"y":31886.914337943625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Controlled Run","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"6938be43-dc74-4576-8b0a-8b18bd34792e","savedPayload":{"position":{"x":32052.655649535795,"y":33496.36457838122},"targetPosition":{"x":32096.65981549785,"y":33074.519171615095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"6cefcdbc-918c-4abe-99f9-5a99c391d79b","savedPayload":{"position":{"x":32096.65981549785,"y":33074.519171615095},"targetPosition":{"x":32140.64270658053,"y":32652.206682617852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"901eb16f-14dd-4fd2-81c1-b4713a1b34e0","savedPayload":{"position":{"x":32250.309062987384,"y":32649.586359950557},"targetPosition":{"x":32184.041014524384,"y":32230.18847885705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"0199babe-dfd7-4f18-b9d7-3b73ade997fd","savedPayload":{"position":{"x":31582.494012962958,"y":32962.937014157265},"targetPosition":{"x":31410.280046457636,"y":32575.275710033362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"89e97633-9b3e-42ba-9cf6-bf29d6383a72","savedPayload":{"position":{"x":35114.68579910982,"y":35351.53563650537},"targetPosition":{"x":34955.055100783706,"y":34993.54246316036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"971da4c6-325b-4c78-a025-95dbd138bbc4","savedPayload":{"position":{"x":34955.055100783706,"y":34993.54246316036},"targetPosition":{"x":34795.109639340524,"y":34635.50799960973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2af1c651-e988-4ae0-92a3-d0918b8a1cfe","savedPayload":{"position":{"x":34795.109639340524,"y":34635.50799960973},"targetPosition":{"x":34634.92973533252,"y":34277.38989257793},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"4e18019c-6173-4b68-b709-174bc220cd55","savedPayload":{"position":{"x":31120.854325706285,"y":32749.006422256185},"targetPosition":{"x":31410.280046457636,"y":32575.275710033362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"a8860a5a-66b5-41f0-8a6c-dac7bf971c9d","savedPayload":{"position":{"x":30218.098378964016,"y":31775.44357488877},"targetPosition":{"x":30641.420921935773,"y":31788.395864739927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"690aeb6d-75ec-45c9-b321-9d943d84df5f","savedPayload":{"position":{"x":30641.420921935773,"y":31788.395864739927},"targetPosition":{"x":31065.15767239706,"y":31801.060086999303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"d691ad30-4129-48d1-9b75-2b2337e409d2","savedPayload":{"position":{"x":30312.735304700313,"y":31410.31946547273},"targetPosition":{"x":30688.782681018638,"y":31605.692657427535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"30880b5e-f66a-4d5a-b112-14bcc8bb9ac9","savedPayload":{"position":{"x":30688.782681018638,"y":31605.692657427535},"targetPosition":{"x":31065.15767239706,"y":31801.060086999303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"8d66b5bd-521c-4d19-9fc0-baa4fb54ad84","savedPayload":{"position":{"x":30556.44880964036,"y":31122.5653875293},"targetPosition":{"x":30810.690604022504,"y":31461.749653777068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c4298d6d-c635-49fe-a517-0dc19531c919","savedPayload":{"position":{"x":30810.690604022504,"y":31461.749653777068},"targetPosition":{"x":31065.15767239706,"y":31801.060086999303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"67b51901-a5fe-4fad-aad4-fc4d756b09cc","savedPayload":{"position":{"x":30900.789650854644,"y":30969.119767215772},"targetPosition":{"x":30982.937053526082,"y":31385.017133242192},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b051770c-7c9c-4636-86c8-d3b419f9a8bd","savedPayload":{"position":{"x":30982.937053526082,"y":31385.017133242192},"targetPosition":{"x":31065.15767239706,"y":31801.060086999303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"8d54874e-6c21-434a-80fa-492bf2a9be2b","savedPayload":{"position":{"x":31276.64844988148,"y":30980.361588941225},"targetPosition":{"x":31171.060852877814,"y":31390.702278688343},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9aa25c88-a620-42f1-b1e8-403c5c8718b1","savedPayload":{"position":{"x":31171.060852877814,"y":31390.702278688343},"targetPosition":{"x":31065.15767239706,"y":31801.060086999303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Down && NOT Side","code":"chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Down\" && chart.at01hs.bollingerSubChannel.slope != \"Side\"","id":"e8c97495-8098-4209-a220-6c399baba0f3","savedPayload":{"position":{"x":31610.0599232527,"y":31161.58973768663},"targetPosition":{"x":31338.32832705977,"y":31477.72508842297},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f39ad55a-1988-4ac8-9d5c-99054f951179","savedPayload":{"position":{"x":31338.32832705977,"y":31477.72508842297},"targetPosition":{"x":31065.15767239706,"y":31801.060086999303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"abaf1d9b-b5f9-4f8f-9a59-10936c3ea7b1","savedPayload":{"position":{"x":31065.15767239706,"y":31801.060086999303},"targetPosition":{"x":31237.76485603842,"y":32188.236450221637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"f9636b68-93f0-4100-8046-1d62eed73501","savedPayload":{"position":{"x":31237.76485603842,"y":32188.236450221637},"targetPosition":{"x":31410.280046457636,"y":32575.275710033362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"274cc7b8-9ab0-4f9a-9302-3357cfcac9da"}}}],"announcements":[],"id":"b1d129c5-5f5e-4b1a-a2d6-b79561d2a6ce","savedPayload":{"position":{"x":31410.280046457636,"y":32575.275710033362},"targetPosition":{"x":31797.26417642712,"y":32402.646659011032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"640cd6a8-a447-43ca-84f9-7dc5e6c8c826","savedPayload":{"position":{"x":30847.41292297006,"y":33144.808922085795},"targetPosition":{"x":30998.534423684807,"y":32747.451613870147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"9502bdd5-310a-4048-81ca-1eb0afe3c99d","savedPayload":{"position":{"x":30205.803426783637,"y":34001.091193026725},"targetPosition":{"x":30249.917950331896,"y":33577.896743108766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cb42b9eb-16cb-4bb4-af70-570fc4d1cd29","savedPayload":{"position":{"x":30249.917950331896,"y":33577.896743108766},"targetPosition":{"x":30294.134801020176,"y":33154.57222324627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"da7a29f2-93be-4ce8-aeb0-f286b5710891","savedPayload":{"position":{"x":29796.111617502072,"y":33843.85742346663},"targetPosition":{"x":30044.979866313377,"y":33499.24970649383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b4748a9d-7f41-4ce0-92ea-267488fd2e02","savedPayload":{"position":{"x":30044.979866313377,"y":33499.24970649383},"targetPosition":{"x":30294.134801020176,"y":33154.57222324627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"792355fa-6601-4a41-b673-b814127b3524","savedPayload":{"position":{"x":29519.96605719332,"y":33502.923264063706},"targetPosition":{"x":29906.846942045566,"y":33328.73011607854},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4cd7afea-ce88-4111-b74e-dc48e34bcee5","savedPayload":{"position":{"x":29906.846942045566,"y":33328.73011607854},"targetPosition":{"x":30294.134801020176,"y":33154.57222324627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"835d94b1-7b62-43bc-bbda-34184c5a5410","savedPayload":{"position":{"x":29451.262472325034,"y":33070.381351734206},"targetPosition":{"x":29872.476892943403,"y":33112.352507651274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"66c6c8dc-f8b2-4534-aeb1-5f7aea412564","savedPayload":{"position":{"x":29872.476892943403,"y":33112.352507651274},"targetPosition":{"x":30294.134801020176,"y":33154.57222324627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Down && NOT Side or Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Down\" && chart.at01hs.bollingerSubChannel.slope != \"Side\" && chart.at01hs.bollingerSubChannel.slope != \"Gentle\"","id":"4734e468-3fd1-4b7e-8361-66dea0f1d3c1","savedPayload":{"position":{"x":29608.402791503686,"y":32660.871196158085},"targetPosition":{"x":29951.00436379901,"y":32907.53037466467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b9f90ab7-e386-4fa3-a326-d99ce319edcd","savedPayload":{"position":{"x":29951.00436379901,"y":32907.53037466467},"targetPosition":{"x":30294.134801020176,"y":33154.57222324627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"26ef5972-8cc4-4b0d-92a4-b7da565b84b4","savedPayload":{"position":{"x":30294.134801020176,"y":33154.57222324627},"targetPosition":{"x":30681.667674684573,"y":32980.164487420945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"9be98459-d007-4f66-94ac-cc7b6c6ad81c","savedPayload":{"position":{"x":30681.667674684573,"y":32980.164487420945},"targetPosition":{"x":30998.534423684807,"y":32747.451613870147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"274cc7b8-9ab0-4f9a-9302-3357cfcac9da"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","code":"chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"c959c1b6-aec3-4db7-a572-477f1ea2c132","savedPayload":{"position":{"x":29433.709225515253,"y":32793.11947467331},"targetPosition":{"x":29820.425136437625,"y":32619.15623349406},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"31460537-bb42-499a-9645-fca83618f4a5","savedPayload":{"position":{"x":29820.425136437625,"y":32619.15623349406},"targetPosition":{"x":30207.276664433924,"y":32445.696257695414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"b3e36006-93f4-4852-a7a7-d612a7e7ec27","savedPayload":{"position":{"x":29423.284124799575,"y":32145.37524164802},"targetPosition":{"x":29812.2635139139,"y":32295.247107792475},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b8fe60bd-1dbd-458d-bdfd-1accfdab0b7c","savedPayload":{"position":{"x":29812.2635139139,"y":32295.247107792475},"targetPosition":{"x":30207.276664433924,"y":32445.696257695414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"6b79a9e3-796e-4db6-8a5c-0bc0bd875f45","savedPayload":{"position":{"x":29863.249250356712,"y":31674.039657913658},"targetPosition":{"x":30035.18086627339,"y":32059.80702167967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1d09d25e-54eb-4d39-bea6-44f8492a2d10","savedPayload":{"position":{"x":30035.18086627339,"y":32059.80702167967},"targetPosition":{"x":30207.276664433924,"y":32445.696257695414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f3ce7cba-7352-4634-a05d-07399ba679f2","savedPayload":{"position":{"x":30207.276664433924,"y":32445.696257695414},"targetPosition":{"x":30603.028520115917,"y":32596.356054088126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"23ebc628-449c-43d8-97a2-28c23bb4dda7","savedPayload":{"position":{"x":30603.028520115917,"y":32596.356054088126},"targetPosition":{"x":30998.534423684807,"y":32747.451613870147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"b1d129c5-5f5e-4b1a-a2d6-b79561d2a6ce"}}}],"announcements":[],"id":"0995a46a-7564-4e4a-bdf9-d1dd437c75c6","savedPayload":{"position":{"x":30998.534423684807,"y":32747.451613870147},"targetPosition":{"x":31410.280046457636,"y":32575.275710033362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"12d58077-9b90-44f6-9d1d-5247aad7b0a4","savedPayload":{"position":{"x":30550.04180271156,"y":33329.80692424424},"targetPosition":{"x":30593.773775288653,"y":32906.46681785033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"af3238a0-9671-4ef7-90d8-802f9255d298","savedPayload":{"position":{"x":34353.31566433633,"y":36371.478113298595},"targetPosition":{"x":34107.73400761102,"y":36065.577333894784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2191cdaf-d396-458b-80e3-d67c69976c29","savedPayload":{"position":{"x":34107.73400761102,"y":36065.577333894784},"targetPosition":{"x":33865.53761248559,"y":35764.117352789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"fa54d65e-9ed1-42f1-bcfe-c774607c7ae3","savedPayload":{"position":{"x":33781.1348043335,"y":36545.510360363085},"targetPosition":{"x":33823.36067956762,"y":36154.932202560594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"de06b55c-392c-4032-b8a9-b1810881be63","savedPayload":{"position":{"x":33823.36067956762,"y":36154.932202560594},"targetPosition":{"x":33865.53761248559,"y":35764.117352789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Up || Side, Gentle or Medium","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Up\" || chart.at01hs.bollingerSubChannel.slope === \"Side\" || chart.at01hs.bollingerSubChannel.slope === \"Gentle\" || chart.at01hs.bollingerSubChannel.slope === \"Medium\"","id":"4eca07e4-a6af-46c8-8099-fd4599755539","savedPayload":{"position":{"x":33253.70014218347,"y":36259.27754119686},"targetPosition":{"x":33559.59724286728,"y":36011.788615334415},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a6ee99c3-005b-4b96-be05-579230e6af8b","savedPayload":{"position":{"x":33559.59724286728,"y":36011.788615334415},"targetPosition":{"x":33865.53761248559,"y":35764.117352789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9fb58e58-feea-47c1-b7a6-0da4777ff32f","savedPayload":{"position":{"x":33865.53761248559,"y":35764.117352789},"targetPosition":{"x":33915.59035931588,"y":35356.68995455061},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"3ca96593-db50-40f0-a191-bfdffe79fdf8","savedPayload":{"position":{"x":30172.077781119075,"y":32863.606917906094},"targetPosition":{"x":30593.773775288653,"y":32906.46681785033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"b1d129c5-5f5e-4b1a-a2d6-b79561d2a6ce"}}}],"announcements":[],"id":"274cc7b8-9ab0-4f9a-9302-3357cfcac9da","savedPayload":{"position":{"x":30593.773775288653,"y":32906.46681785033},"targetPosition":{"x":30998.534423684807,"y":32747.451613870147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5969717f-fd1e-4579-a80b-5e66723412a9","savedPayload":{"position":{"x":31934.3203114876,"y":32573.628726629446},"targetPosition":{"x":32184.041014524384,"y":32230.18847885705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"ab76811a-5688-40bb-bcc9-dc754dea83c1","savedPayload":{"position":{"x":31829.79809078839,"y":32538.006502876146},"targetPosition":{"x":31767.25,"y":32140.22198731501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3add1401-37ae-4ab1-9bfd-bd2409be15ee","savedPayload":{"position":{"x":31765.00069416873,"y":32296.572495929217},"targetPosition":{"x":32184.041014524384,"y":32230.18847885705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"455d4f49-eb65-49f8-a6d5-2bdd44e8bbac","savedPayload":{"position":{"x":32184.041014524384,"y":32230.18847885705},"targetPosition":{"x":32433.371579576764,"y":31886.914337943625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"1805fb84-f9aa-4376-b68b-7d009c1f35ad","savedPayload":{"position":{"x":31614.787231440176,"y":31844.739900906556},"targetPosition":{"x":32030.194776844528,"y":31756.418543665284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"53916478-d8e6-4a30-8c30-7eb64eab5232","savedPayload":{"position":{"x":31726.14930563862,"y":32262.17728231012},"targetPosition":{"x":31945.401949358587,"y":31923.768514071446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ebcdfc8a-8348-4b1d-ad3a-630bb68bcf95","savedPayload":{"position":{"x":31673.637620746475,"y":31525.40620600377},"targetPosition":{"x":32030.194776844528,"y":31756.418543665284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0ab9c0ab-a710-4da3-adb1-9e2f837da5fc","savedPayload":{"position":{"x":32030.194776844528,"y":31756.418543665284},"targetPosition":{"x":32433.371579576764,"y":31886.914337943625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a1b63f90-0ec5-4eb4-a51e-88852cc95049","savedPayload":{"position":{"x":32433.371579576764,"y":31886.914337943625},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S4 - 8H Up","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"565db073-2544-4f1e-8ffd-450fb4e10feb","savedPayload":{"position":{"x":33016.108423138045,"y":30708.61650625706},"targetPosition":{"x":33001.605706827475,"y":31117.1437175863},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1f26cf4a-76fc-4186-9b3b-9010f9f3da7c","savedPayload":{"position":{"x":33001.605706827475,"y":31117.1437175863},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"f288ec4c-d242-4138-a291-4e97fcec4e8e","savedPayload":{"position":{"x":33294.14747935223,"y":30768.08538063477},"targetPosition":{"x":33140.33062460357,"y":31147.607021558273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"eb5bf914-8163-453a-afa5-95f22ba39ead","savedPayload":{"position":{"x":33140.33062460357,"y":31147.607021558273},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"0638ff08-302c-488f-8a8b-be0cd0454e49","savedPayload":{"position":{"x":33536.5418717862,"y":30918.780123840108},"targetPosition":{"x":33262.102839579675,"y":31222.758503492238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0c8e03c5-c1b2-4aaf-bddc-874c50cfbbba","savedPayload":{"position":{"x":33262.102839579675,"y":31222.758503492238},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"8H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at08hs.bollingerChannel.direction === \"Up\"","id":"77dbd8ad-81fc-4394-93d4-e84e931970f7","savedPayload":{"position":{"x":33711.37061669641,"y":31142.31816964065},"targetPosition":{"x":33349.696532391084,"y":31334.167601834975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"78fae417-cc69-4a59-8edf-5d2e7102b50f","savedPayload":{"position":{"x":33349.696532391084,"y":31334.167601834975},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"12H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at12hs.bollingerChannel.direction === \"Down\"","id":"f513cfb2-d7b3-442b-8d72-8bedb02e7ddf","savedPayload":{"position":{"x":33799.103478253135,"y":31412.55479282884},"targetPosition":{"x":33393.62871134569,"y":31469.252426709958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4ab49bb6-b9d3-44a1-8fa5-6d5f7b9d3b3f","savedPayload":{"position":{"x":33393.62871134569,"y":31469.252426709958},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"09bdc89a-fa30-46cc-9da0-aa16844e829b","savedPayload":{"position":{"x":33789.194999211526,"y":31696.0948743394},"targetPosition":{"x":33388.694866665915,"y":31611.066158039575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2aae14ee-14b3-4c94-9394-d64432517632","savedPayload":{"position":{"x":33388.694866665915,"y":31611.066158039575},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H NOT Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope != \"Extreme\"","id":"a2059ed1-a903-483c-a5b1-a44203fb670f","savedPayload":{"position":{"x":33682.80126272068,"y":31959.687980869192},"targetPosition":{"x":33335.44879159541,"y":31742.939959405492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2ca6efe4-43ac-45a1-ba84-5215d33f32a6","savedPayload":{"position":{"x":33335.44879159541,"y":31742.939959405492},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Deviation > 40","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerBand.deviation > 25","id":"3b0663ea-9168-4101-bd49-a4fa14473dc7","savedPayload":{"position":{"x":33492.81527571664,"y":32171.088329177917},"targetPosition":{"x":33240.16363723661,"y":31848.699229038637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6f3289e9-c257-4953-ae25-664416db52a7","savedPayload":{"position":{"x":33240.16363723661,"y":31848.699229038637},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"977e6e41-dca1-4b42-9e82-3e2eeae3c220","savedPayload":{"position":{"x":32987.75009839662,"y":31526.263027016277},"targetPosition":{"x":32607.26331447191,"y":31676.362232420466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"260de0f8-58ff-477f-aadb-f61a4043e3a8","savedPayload":{"position":{"x":32607.26331447191,"y":31676.362232420466},"targetPosition":{"x":32218.203346952138,"y":31802.987156123374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"a2b6bf13-42e1-428f-9691-42be919fa8c1","savedPayload":{"position":{"x":33677.75850723514,"y":32546.480820378853},"targetPosition":{"x":33313.07984357831,"y":32360.792558224523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"05892d30-611b-4f6e-93ae-3f484b208fe5","savedPayload":{"position":{"x":33313.07984357831,"y":32360.792558224523},"targetPosition":{"x":32948.32328257087,"y":32175.005781011547},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f6bb3530-fc04-47bb-b335-1f90463c6a04","savedPayload":{"position":{"x":32948.32328257087,"y":32175.005781011547},"targetPosition":{"x":32583.454684770324,"y":31989.358256691274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"3046ad00-d3de-4458-80db-287144ff86fa","savedPayload":{"position":{"x":32583.454684770324,"y":31989.358256691274},"targetPosition":{"x":32218.203346952138,"y":31802.987156123374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"3847310d-3d70-43f6-85a1-8a62eec1d4d3","savedPayload":{"position":{"x":33387.42539740356,"y":32116.794527589384},"targetPosition":{"x":33018.0279860199,"y":32292.436249824437},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"680fec1e-3d4c-4b3b-82a6-0f45a34f9776","savedPayload":{"position":{"x":33018.0279860199,"y":32292.436249824437},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"ffbb6568-c112-46de-8097-fbf993a8232f","savedPayload":{"position":{"x":33465.571106445495,"y":32425.43478155105},"targetPosition":{"x":33056.74325525523,"y":32446.256555772732},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f0830878-6dd9-4657-a0b5-906ff9296559","savedPayload":{"position":{"x":33056.74325525523,"y":32446.256555772732},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"d7a8fc7d-57a2-4340-bb12-627c667324e6","savedPayload":{"position":{"x":33419.45900626823,"y":32740.505273158957},"targetPosition":{"x":33033.752962097045,"y":32603.794747800173},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e841acd3-9785-49f5-be08-5aa63d3df039","savedPayload":{"position":{"x":33033.752962097045,"y":32603.794747800173},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"8H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at08hs.bollingerChannel.direction === \"Up\"","id":"60872ff6-a88d-4e3c-9069-4337d9e77653","savedPayload":{"position":{"x":33256.14231973845,"y":33014.56892092391},"targetPosition":{"x":32952.065637836226,"y":32740.884130165858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"969eebbc-1e68-4dc7-bb42-5fd1e92648b3","savedPayload":{"position":{"x":32952.065637836226,"y":32740.884130165858},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"12H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at12hs.bollingerChannel.direction === \"Down\"","id":"e1f6e5b8-70b1-44b9-b127-099a28b39e5f","savedPayload":{"position":{"x":33000.20306486545,"y":33205.3420591731},"targetPosition":{"x":32824.05870270297,"y":32836.33950328082},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1d87e62c-73ff-434b-ac60-e7afa7035b78","savedPayload":{"position":{"x":32824.05870270297,"y":32836.33950328082},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"4dbcbf0e-b029-40db-9b3e-422ccb1d1642","savedPayload":{"position":{"x":32690.53788200545,"y":33283.801184534575},"targetPosition":{"x":32669.20586962084,"y":32875.59460029089},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ed71b78d-b409-451d-9e23-72fde4c6ac59","savedPayload":{"position":{"x":32669.20586962084,"y":32875.59460029089},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Deviation > 40","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerBand.deviation > 25","id":"ca95ffdd-a14f-4985-84b7-2a482eb8091d","savedPayload":{"position":{"x":32374.860433575843,"y":33237.99653746514},"targetPosition":{"x":32511.293905353414,"y":32852.60908935485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"80a35c8a-7650-442f-82de-b9acb0c09988","savedPayload":{"position":{"x":32511.293905353414,"y":32852.60908935485},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"22a72082-528a-440b-8e3f-374d612c4d51","savedPayload":{"position":{"x":32647.89809256855,"y":32466.81884324842},"targetPosition":{"x":32343.994367056974,"y":32192.577730607023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"db4a7c92-b806-4329-9300-9b83a3ad036c","savedPayload":{"position":{"x":32267.555525066622,"y":32166.208616784148},"targetPosition":{"x":32092.25,"y":32360.22198731501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6bebda83-5fa6-40c6-8b9d-193636aa5ff8","savedPayload":{"position":{"x":32353.99815107377,"y":32397.54225711615},"targetPosition":{"x":32343.994367056974,"y":32192.577730607023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c9d98dc4-e354-4357-99c8-eaa829f874d7","savedPayload":{"position":{"x":32343.994367056974,"y":32192.577730607023},"targetPosition":{"x":32218.203346952138,"y":31802.987156123374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"0bf02e1f-d661-437b-85b0-b31e57707199","savedPayload":{"position":{"x":32218.203346952138,"y":31802.987156123374},"targetPosition":{"x":31854.611783869535,"y":31617.461964697784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"283c986f-f9e6-4db2-a7cf-31df9bc42e21","savedPayload":{"position":{"x":33262.348283073654,"y":33668.26110625135},"targetPosition":{"x":32996.16226727139,"y":33821.48103036987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"7e24efcb-8efd-4f21-846e-c1c9be5e4dc0","savedPayload":{"position":{"x":35661.5330621917,"y":32460.96477728643},"targetPosition":{"x":35395.80978722638,"y":32307.691972974666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"151ea590-9f96-4956-a7e8-1ae8ed2497b1","savedPayload":{"position":{"x":35395.80978722638,"y":32307.691972974666},"targetPosition":{"x":35129.93735813902,"y":32154.346004055602},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"af5a4bfb-1676-4497-ad6f-8da3ad1154a1","savedPayload":{"position":{"x":35129.93735813902,"y":32154.346004055602},"targetPosition":{"x":34864.21598400471,"y":32001.112915297275},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"0c8cf0e4-2be0-4010-b296-400c3413dbfe","savedPayload":{"position":{"x":34864.21598400471,"y":32001.112915297275},"targetPosition":{"x":32996.16226727139,"y":33821.48103036987},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"80a6f7ab-286d-4f4e-af25-ba3f60432087","savedPayload":{"position":{"x":32996.16226727139,"y":33821.48103036987},"targetPosition":{"x":32689.147179694144,"y":33821.48199786943},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6ccb7dd5-015c-4d99-855a-4c51c8d31c1a","savedPayload":{"position":{"x":32689.147179694144,"y":33821.48199786943},"targetPosition":{"x":32382.725700846328,"y":33821.60989461435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"cf1fe591-e95e-49b1-9917-696fd2b69ea4","savedPayload":{"position":{"x":33184.71999818604,"y":34214.11641349901},"targetPosition":{"x":32879.1540673357,"y":34182.00430123203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"ac6e1c39-95ac-485c-b9c8-dddefff2fe1c","savedPayload":{"position":{"x":33634.126653251245,"y":35099.63359407601},"targetPosition":{"x":33383.31078816607,"y":34919.700064680575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6d2069d0-7a7b-478c-b682-81e52abc066a","savedPayload":{"position":{"x":33382.25050178636,"y":34920.44290986782},"targetPosition":{"x":33132.43780807961,"y":34740.48684695961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"bde76cfe-6402-4245-883b-9f5b50db5c52","savedPayload":{"position":{"x":33082.77997596954,"y":35350.85551519918},"targetPosition":{"x":33103.89082700777,"y":35043.21827334428},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"697829a6-b00e-4b70-99a5-c109263e5ca3","savedPayload":{"position":{"x":33101.38914931789,"y":35045.366536668065},"targetPosition":{"x":33132.43780807961,"y":34740.48684695961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b43a31b0-a9ed-4e41-ae4c-427924f40c59","savedPayload":{"position":{"x":33129.1780223032,"y":34742.82310819165},"targetPosition":{"x":33004.26762261222,"y":34462.6015445682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"1c6e5b5b-6ac5-4693-94dd-45c76fdf2b96","savedPayload":{"position":{"x":33003.93138154689,"y":34462.70823485492},"targetPosition":{"x":32879.1540673357,"y":34182.00430123203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"0b1c973a-ce4a-47bd-90a1-d306b30d12aa","savedPayload":{"position":{"x":32878.67130061081,"y":34182.98753017021},"targetPosition":{"x":32630.566126111215,"y":34002.25393399775},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"04dc4bc7-dcaf-4b43-8418-e050d05c8952","savedPayload":{"position":{"x":32630.39594770166,"y":34002.13102715508},"targetPosition":{"x":32382.725700846328,"y":33821.60989461435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"eee941cf-f98c-4dd0-92fa-815fe2c10865","savedPayload":{"position":{"x":32571.120782001806,"y":34406.17252734529},"targetPosition":{"x":32476.87909012684,"y":34113.938241438496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ae433b8c-e6fd-4241-bbe3-2a2cd27ce009","savedPayload":{"position":{"x":32476.82545458858,"y":34113.76990798757},"targetPosition":{"x":32382.725700846328,"y":33821.60989461435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"117adca4-9252-45f2-84b6-6391fbfcb63b","savedPayload":{"position":{"x":32192.68544723151,"y":34405.61314236691},"targetPosition":{"x":32287.633187524032,"y":34113.59824941377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"67dd3e52-2d23-48a0-a7d0-56f7b60e6832","savedPayload":{"position":{"x":32287.559875555915,"y":34113.432909927375},"targetPosition":{"x":32382.725700846328,"y":33821.60989461435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7165c7fa-fb68-40ee-bfb7-2317a0defd40","savedPayload":{"position":{"x":32382.897645029716,"y":33821.819273275294},"targetPosition":{"x":31662.56404301089,"y":32829.66381673354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"b13321e7-009a-4c2e-bc8c-f1b0bdb4dd7b","savedPayload":{"position":{"x":31614.527267611713,"y":33132.96245280527},"targetPosition":{"x":31662.56404301089,"y":32829.66381673354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"9331e3ec-0b89-478a-9910-36fac6843934","savedPayload":{"position":{"x":31726.85084655184,"y":32860.50166756788},"targetPosition":{"x":31421.25,"y":32812.22198731501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5456a919-1f27-4bc1-80de-14aeb1dd2010","savedPayload":{"position":{"x":31414.04315714644,"y":33010.32122662356},"targetPosition":{"x":31662.56404301089,"y":32829.66381673354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2e4981ca-a802-4941-8ed8-563a3e6950ed","savedPayload":{"position":{"x":31662.56404301089,"y":32829.66381673354},"targetPosition":{"x":31854.611783869535,"y":31617.461964697784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Slow Run","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"53f5b5c3-ba67-453c-9c9f-4ce573a45cf7","savedPayload":{"position":{"x":30500.89247017438,"y":32459.578297266748},"targetPosition":{"x":30819.036958787143,"y":32201.72019233247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"9f500e15-05a0-49f2-acb6-22dc52e3a776","savedPayload":{"position":{"x":30819.036958787143,"y":32201.72019233247},"targetPosition":{"x":31150.975630250297,"y":31932.866520667907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"48f10387-f326-4021-ae7e-bf0c89f12f0e","savedPayload":{"position":{"x":31208.328337171784,"y":32013.008173556012},"targetPosition":{"x":31448.949834379793,"y":31681.57948129423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"d2f712ac-98dc-41dc-b29e-260334b7cd69","savedPayload":{"position":{"x":30514.18167577269,"y":31761.2170374418},"targetPosition":{"x":30661.02568754195,"y":31379.194283221575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"629a5ecb-7ade-4453-89bb-1d1c5d5f96d9","savedPayload":{"position":{"x":31452.62521613617,"y":35704.649175755076},"targetPosition":{"x":31306.38507672166,"y":35392.89905014682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c9b1b192-1698-44a7-a0f5-20d21088f280","savedPayload":{"position":{"x":31306.38507672166,"y":35392.89905014682},"targetPosition":{"x":31164.240833397416,"y":35074.037476121404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0402e263-ac5c-4546-be68-8f33fdbf8666","savedPayload":{"position":{"x":31164.240833397416,"y":35074.037476121404},"targetPosition":{"x":31021.438921316847,"y":34750.86973446636},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"1fc1bb7a-a52b-4ce2-b17b-95194de42c8a","savedPayload":{"position":{"x":30296.68637656971,"y":31322.79310193876},"targetPosition":{"x":30661.02568754195,"y":31379.194283221575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"a0b6604b-8744-468d-8eb8-37266a7790bb","savedPayload":{"position":{"x":30438.724191200963,"y":29978.473640966942},"targetPosition":{"x":30695.912811285634,"y":30296.608544153656},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f7a6659c-b0db-4966-875f-4f3c22448e5f","savedPayload":{"position":{"x":30695.912811285634,"y":30296.608544153656},"targetPosition":{"x":30953.245579650113,"y":30614.81281670587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"bba2d293-88c4-492f-94af-1b9619f740fd","savedPayload":{"position":{"x":30825.47049961038,"y":29806.19925833095},"targetPosition":{"x":30889.3671042988,"y":30210.385421398318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"20aebaee-eb59-4c3f-8c59-39349e032515","savedPayload":{"position":{"x":30889.3671042988,"y":30210.385421398318},"targetPosition":{"x":30953.245579650113,"y":30614.81281670587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"8419c8f8-b2b3-4d98-99e8-2506e40bdb02","savedPayload":{"position":{"x":31245.840967273478,"y":29850.337168761183},"targetPosition":{"x":31099.60147314376,"y":30232.46849471163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0d40d31a-b3d2-4213-9ec0-16dfad84800c","savedPayload":{"position":{"x":31099.60147314376,"y":30232.46849471163},"targetPosition":{"x":30953.245579650113,"y":30614.81281670587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"1f20f276-1067-413d-9855-d5a8c3bf4dd5","savedPayload":{"position":{"x":31588.106924305583,"y":30098.824371705417},"targetPosition":{"x":31270.79628296104,"y":30356.84452509362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5a699f92-494e-4078-b641-1c9c57ffc366","savedPayload":{"position":{"x":31270.79628296104,"y":30356.84452509362},"targetPosition":{"x":30953.245579650113,"y":30614.81281670587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"8522cf28-0d47-4049-a2d0-f859792cc083","savedPayload":{"position":{"x":31745.815505511848,"y":30486.82650760695},"targetPosition":{"x":31356.715958954213,"y":30550.219742514226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0c5c7d7b-590f-4902-b44d-8609741d2b0c","savedPayload":{"position":{"x":31356.715958954213,"y":30550.219742514226},"targetPosition":{"x":30953.245579650113,"y":30614.81281670587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"aa9bda47-780e-48ec-97bf-52f713be6d1c","savedPayload":{"position":{"x":30953.245579650113,"y":30614.81281670587},"targetPosition":{"x":30807.09852676496,"y":30997.07900762244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"0905efc2-d8c9-4b8b-b09f-de915fca26e4","savedPayload":{"position":{"x":30807.09852676496,"y":30997.07900762244},"targetPosition":{"x":30661.02568754195,"y":31379.194283221575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"dc4b92b2-3855-4cc7-84f5-20cc259c1634"}}}],"announcements":[],"id":"e6304ea5-e683-49c1-8e84-e2bc119565fa","savedPayload":{"position":{"x":30661.02568754195,"y":31379.194283221575},"targetPosition":{"x":31068.629399090474,"y":31535.33551862273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"73870f3c-4fc8-464c-be6a-f5e397ee044e","savedPayload":{"position":{"x":29901.249484375345,"y":31377.094167262778},"targetPosition":{"x":30274.70605518238,"y":31210.2377720679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bc212a30-b2e9-435c-84a8-e505019c0570","savedPayload":{"position":{"x":28893.406176646076,"y":31520.778332079593},"targetPosition":{"x":29212.07710550547,"y":31264.012686794093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"19c71956-4d1e-4355-826e-5bc25d09fdc3","savedPayload":{"position":{"x":29212.07710550547,"y":31264.012686794093},"targetPosition":{"x":29531.831887857006,"y":31006.50215332862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"31e8935e-497f-47eb-9466-900faced609c","savedPayload":{"position":{"x":28721.087664239905,"y":31134.011329246656},"targetPosition":{"x":29125.8628289353,"y":31070.501110683115},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"506df2ab-b891-4709-84e6-b773c8743abf","savedPayload":{"position":{"x":29125.8628289353,"y":31070.501110683115},"targetPosition":{"x":29531.831887857006,"y":31006.50215332862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"c1e44382-1537-453b-9f6c-52ef913228aa","savedPayload":{"position":{"x":28765.22117439923,"y":30713.57003149922},"targetPosition":{"x":29147.944257952,"y":30860.18192434744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"928db494-0024-4ed4-a407-84087efb0704","savedPayload":{"position":{"x":29147.944257952,"y":30860.18192434744},"targetPosition":{"x":29531.831887857006,"y":31006.50215332862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"8bae0609-ccff-480d-b382-b56f22ec8dc4","savedPayload":{"position":{"x":29013.97083829324,"y":30370.97096869017},"targetPosition":{"x":29272.351997056765,"y":30688.807256238648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"98ac2a8f-4541-46de-8e01-f9709d6b195f","savedPayload":{"position":{"x":29272.351997056765,"y":30688.807256238648},"targetPosition":{"x":29531.831887857006,"y":31006.50215332862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div previous ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"a5a3a569-6a05-4fd0-8c15-22d5e5d1b148","savedPayload":{"position":{"x":29400.59541225859,"y":30198.51224944108},"targetPosition":{"x":29465.694395008868,"y":30602.505107002034},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2adc3c50-f284-4fb1-9f79-b077a54b5046","savedPayload":{"position":{"x":29465.694395008868,"y":30602.505107002034},"targetPosition":{"x":29531.831887857006,"y":31006.50215332862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c91df057-7904-431b-b997-8fbb2afada1f","savedPayload":{"position":{"x":29531.831887857006,"y":31006.50215332862},"targetPosition":{"x":29915.35006651546,"y":31152.79468292573},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"8196d5fe-af67-4302-84d1-f95279fb2075","savedPayload":{"position":{"x":29915.35006651546,"y":31152.79468292573},"targetPosition":{"x":30274.70605518238,"y":31210.2377720679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"dc4b92b2-3855-4cc7-84f5-20cc259c1634"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"60d1211f-6279-4c80-abe5-e727a70aea22","savedPayload":{"position":{"x":34435.312104755925,"y":37604.797131887906},"targetPosition":{"x":34371.381595713305,"y":37200.520638670896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6659d86a-2e52-48b2-bcc4-5f5b43b3907e","savedPayload":{"position":{"x":34371.381595713305,"y":37200.520638670896},"targetPosition":{"x":34301.70161318501,"y":36759.80355610525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"5ce2e13e-4b4f-424b-b4ee-1741c013690b","savedPayload":{"position":{"x":33637.05690195842,"y":37298.380990103775},"targetPosition":{"x":33955.25921385612,"y":37040.548458870755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"38aa2600-90dc-4c6b-be17-a08ee9c829b3","savedPayload":{"position":{"x":33955.25921385612,"y":37040.548458870755},"targetPosition":{"x":34301.70161318501,"y":36759.80355610525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fd092801-0b6b-4f09-bbb3-b16fe1144ae3","savedPayload":{"position":{"x":29942.550949462675,"y":30461.549907287925},"targetPosition":{"x":30108.751431134442,"y":30835.89159387049},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"4b4f5de5-723c-4d6e-b26e-50ee87671f48","savedPayload":{"position":{"x":30108.751431134442,"y":30835.89159387049},"targetPosition":{"x":30274.70605518238,"y":31210.2377720679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"e6304ea5-e683-49c1-8e84-e2bc119565fa"}}}],"announcements":[],"id":"ad2a51aa-b179-457e-9704-5c9b1a8db72e","savedPayload":{"position":{"x":30274.70605518238,"y":31210.2377720679},"targetPosition":{"x":30661.02568754195,"y":31379.194283221575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"d29e9a58-79bb-445f-b51a-e5b86937aa8c","savedPayload":{"position":{"x":29569.89733993556,"y":31298.831477570733},"targetPosition":{"x":29887.28573602895,"y":31041.38429809122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"59efd870-0af2-4d5c-a78c-281b71f00497","savedPayload":{"position":{"x":35010.10130049439,"y":37933.36740804276},"targetPosition":{"x":34843.70421091391,"y":37559.42115267648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"31c9eb9e-6567-4866-b3de-cf7ac4fa0126","savedPayload":{"position":{"x":34843.70421091391,"y":37559.42115267648},"targetPosition":{"x":34677.20226770342,"y":37185.26541585529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"0dd58774-bae1-48f4-bb2a-ff3af03d885b","savedPayload":{"position":{"x":34196.30278110237,"y":37847.83226499006},"targetPosition":{"x":34436.72320963445,"y":37516.627594905825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f8894b26-93ec-450a-9cbf-2462e442a7bc","savedPayload":{"position":{"x":34436.72320963445,"y":37516.627594905825},"targetPosition":{"x":34677.20226770342,"y":37185.26541585529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a1141841-95d0-4c98-b77e-16eb893e6b19","savedPayload":{"position":{"x":34677.20226770342,"y":37185.26541585529},"targetPosition":{"x":34719.74774859792,"y":36777.73345672497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"5a854197-4f85-4f31-bf5e-c9acff5a60cc","savedPayload":{"position":{"x":29630.2706807204,"y":30722.685610075176},"targetPosition":{"x":29887.28573602895,"y":31041.38429809122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"e6304ea5-e683-49c1-8e84-e2bc119565fa"}}}],"announcements":[],"id":"dc4b92b2-3855-4cc7-84f5-20cc259c1634","savedPayload":{"position":{"x":29887.28573602895,"y":31041.38429809122},"targetPosition":{"x":30274.70605518238,"y":31210.2377720679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6b48bcff-79c4-4705-82ac-3666914c8628","savedPayload":{"position":{"x":31044.29603098015,"y":31745.267981535948},"targetPosition":{"x":31448.949834379793,"y":31681.57948129423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"103674cc-96ef-407d-8714-ea2e9a9d7e74","savedPayload":{"position":{"x":31378.79809078839,"y":31736.006502876146},"targetPosition":{"x":31316.25,"y":31338.22198731501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5270f90c-9a7c-4c48-a70d-b75316d43872","savedPayload":{"position":{"x":31117.861875558334,"y":31440.806546951313},"targetPosition":{"x":31448.949834379793,"y":31681.57948129423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"657399d3-c55b-46b6-8ef6-bf1ed183c48f","savedPayload":{"position":{"x":31448.949834379793,"y":31681.57948129423},"targetPosition":{"x":31854.611783869535,"y":31617.461964697784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"c3529923-8f7c-4ce4-8368-edca9f37fa52","savedPayload":{"position":{"x":31325.053472792577,"y":31030.065705487017},"targetPosition":{"x":31668.750919700407,"y":31253.281061179234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"1147f820-1445-48ab-8c68-0f9dfc653b99","savedPayload":{"position":{"x":31261.14930563862,"y":31481.17728231012},"targetPosition":{"x":31480.401949358587,"y":31142.768514071446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0b01a5c6-c37d-4738-9bfd-1931a7d2d3d5","savedPayload":{"position":{"x":31583.37792473191,"y":30852.18473839943},"targetPosition":{"x":31668.750919700407,"y":31253.281061179234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"62290446-8b87-4e5a-8ade-9a34b8dbb148","savedPayload":{"position":{"x":31668.750919700407,"y":31253.281061179234},"targetPosition":{"x":31854.611783869535,"y":31617.461964697784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b27aa9de-ced9-4e53-941c-499bab212f80","savedPayload":{"position":{"x":31854.611783869535,"y":31617.461964697784},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S6 - 2H Up","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"873a72fd-cc23-4965-ae29-5b2b70d85cb9","savedPayload":{"position":{"x":33010.897460448316,"y":31179.087705618313},"targetPosition":{"x":32743.530080996377,"y":31476.678900946034},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"087962b5-2546-4472-b71c-b161f0013b1c","savedPayload":{"position":{"x":32743.530080996377,"y":31476.678900946034},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"c72459a6-49d5-4021-b6e3-4a8c374b6b4b","savedPayload":{"position":{"x":33147.08185909988,"y":31338.07547366014},"targetPosition":{"x":32811.43571183378,"y":31556.272945529192},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"48333f2b-d8c7-4a92-bf5d-b8c9a8de4196","savedPayload":{"position":{"x":32811.43571183378,"y":31556.272945529192},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"8488937e-9b92-4562-b89c-a4d6c6dd8ee2","savedPayload":{"position":{"x":33237.13790341573,"y":31526.911203926844},"targetPosition":{"x":32856.01196197148,"y":31650.98625831615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ec9b3ba8-d6a4-4cb0-8679-a8daa868e549","savedPayload":{"position":{"x":32856.01196197148,"y":31650.98625831615},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"02H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Up\"","id":"ade6a251-d161-467d-8e94-45cfdadf536b","savedPayload":{"position":{"x":33275.56332572748,"y":31733.285246992767},"targetPosition":{"x":32875.524833571035,"y":31754.249385991152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7499f60b-762e-4b37-a66d-2872755620c4","savedPayload":{"position":{"x":32875.524833571035,"y":31754.249385991152},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"04H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Down\"","id":"3beea11e-ff4a-4e39-97d0-97563dacfb09","savedPayload":{"position":{"x":33259.28460932873,"y":31940.902502677036},"targetPosition":{"x":32867.80836627228,"y":31858.056490410654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9e0650fa-cd1b-4770-81b2-06d677c73510","savedPayload":{"position":{"x":32867.80836627228,"y":31858.056490410654},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"01H Med, Steep o Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"276b36c3-c0ca-45d6-a659-c40dac406f46","savedPayload":{"position":{"x":33189.54211479279,"y":32137.713665862248},"targetPosition":{"x":32833.07319674841,"y":31956.498147475777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"904385e8-8b04-4c0c-9961-98b10184e976","savedPayload":{"position":{"x":32833.07319674841,"y":31956.498147475777},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"a49fbb15-05db-4a21-b59b-662a6d84c999","savedPayload":{"position":{"x":33071.171384054614,"y":32309.90187202421},"targetPosition":{"x":32773.91856258477,"y":32042.64240847269},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"89591bf6-dabe-4ba6-b2d8-4580a2c75b0a","savedPayload":{"position":{"x":32773.91856258477,"y":32042.64240847269},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Side or Medium","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\" || chart.at02hs.bollingerSubChannel.slope === \"Medium\"","id":"bb0016e9-0b74-4595-b450-209487362f00","savedPayload":{"position":{"x":32912.24643585934,"y":32445.677135860693},"targetPosition":{"x":32694.434555061398,"y":32110.581831373445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ad9f8e37-16b5-4245-9492-0192ef168849","savedPayload":{"position":{"x":32694.434555061398,"y":32110.581831373445},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"1e3c7245-5582-4af5-9527-5dddf151b976","savedPayload":{"position":{"x":32723.598227552084,"y":32535.7334732403},"targetPosition":{"x":32600.0416875229,"y":32155.64929664765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"440d6ea0-2ee2-408a-a556-18d4c53dda17","savedPayload":{"position":{"x":32600.0416875229,"y":32155.64929664765},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 4: 02H Up && 02H Gentle && 3H Side","code":"chart.at02hs.percentageBandwidth.movingAverage > chart.at24hs.bollingerSubChannel.slope + chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Gentle\" && chart.at03hs.bollingerSubChannel.slope === \"Side\") {false} else {true}","id":"d4189ed6-4d0f-45ea-b1ae-dbdb8f2e0e2c","savedPayload":{"position":{"x":32518.077922250573,"y":32573.891283006145},"targetPosition":{"x":32497.144449475723,"y":32174.74285972898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"01875e5f-f718-4047-baa4-c91930dd6c86","savedPayload":{"position":{"x":32497.144449475723,"y":32174.74285972898},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H NOT Steep","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope != \"Steep\"","id":"350d4a04-700f-4f33-960e-d267e00cec51","savedPayload":{"position":{"x":32310.0762594611,"y":32557.365021417743},"targetPosition":{"x":32392.844211360745,"y":32166.404433653668},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bda747f3-188e-4ed0-82bf-b600a9a9c3f5","savedPayload":{"position":{"x":32392.844211360745,"y":32166.404433653668},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7ec2e400-1608-44b5-8ae4-ac4f815e76f5","savedPayload":{"position":{"x":32476.10497248283,"y":31774.247558718183},"targetPosition":{"x":32114.4975340574,"y":31604.990853046736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"0499e109-2786-4159-b79a-c6c24ebac150","savedPayload":{"position":{"x":32114.4975340574,"y":31604.990853046736},"targetPosition":{"x":31758.22011621457,"y":31424.574860926965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"3ed33d07-ff92-4ecc-81cd-8d9318f5a3a2","savedPayload":{"position":{"x":32252.16665434626,"y":32947.31660965903},"targetPosition":{"x":32128.776811132153,"y":32567.424743327494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"40eeff59-ef6d-456b-9662-2590ba1f90b8","savedPayload":{"position":{"x":32128.776811132153,"y":32567.424743327494},"targetPosition":{"x":32005.204151094837,"y":32186.883294667958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"208d89cb-60a9-461f-a8d2-a9d185ca3c5a","savedPayload":{"position":{"x":32005.204151094837,"y":32186.883294667958},"targetPosition":{"x":31881.43076718399,"y":31805.23997790666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"77ac2dcd-e4a4-4a8f-8c71-d8a30fa7a508","savedPayload":{"position":{"x":31881.43076718399,"y":31805.23997790666},"targetPosition":{"x":31758.22011621457,"y":31424.574860926965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"0c4f8301-8084-4276-a901-5e8137867ea0","savedPayload":{"position":{"x":31988.82332276822,"y":32672.19571834107},"targetPosition":{"x":31692.071482468677,"y":32404.721283246283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c407af9c-fe4a-4d5a-9446-25fc7284ee5c","savedPayload":{"position":{"x":31692.071482468677,"y":32404.721283246283},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"6f84e4e1-1174-4eea-b92a-fdb64cdded61","savedPayload":{"position":{"x":31830.031046317567,"y":32808.01597089322},"targetPosition":{"x":31612.54259799393,"y":32472.84689786787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"56b51e70-1cfd-403a-809d-ee19347ca315","savedPayload":{"position":{"x":31612.54259799393,"y":32472.84689786787},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"f3b540af-68c9-4345-9826-faf0d9e6e04c","savedPayload":{"position":{"x":31641.55767350311,"y":32897.9022710009},"targetPosition":{"x":31518.23455469705,"y":32517.86144086963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f4cdcc47-9a5d-4999-9c11-8fd1c19a5424","savedPayload":{"position":{"x":31518.23455469705,"y":32517.86144086963},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"02H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Up\"","id":"0f3ff1d1-ff82-42da-a526-aff486cbc0bb","savedPayload":{"position":{"x":31436.205013692565,"y":32935.90412023717},"targetPosition":{"x":31415.48977015678,"y":32536.89355815333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0835043e-d8e1-424e-a530-1def860228eb","savedPayload":{"position":{"x":31415.48977015678,"y":32536.89355815333},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"04H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Down\"","id":"54f8e8ae-578f-461d-9ed2-9f352395dd19","savedPayload":{"position":{"x":31228.54443615153,"y":32919.419915645696},"targetPosition":{"x":31311.585595466433,"y":32528.664179815376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"feb6ba85-a9c1-40af-9e6b-00bd4ef1480b","savedPayload":{"position":{"x":31311.585595466433,"y":32528.664179815376},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"01H Med, Steep o Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"949100cd-882b-4c11-b010-dbbfd5fff6f5","savedPayload":{"position":{"x":31031.643356321496,"y":32849.55793610308},"targetPosition":{"x":31213.072553776572,"y":32493.738191603945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d3f463af-4e6d-493b-bc8f-e4c66ffc8567","savedPayload":{"position":{"x":31213.072553776572,"y":32493.738191603945},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"b6856a8d-7a24-4a5f-a449-de2d32fe63be","savedPayload":{"position":{"x":30859.463550636483,"y":32731.085165783043},"targetPosition":{"x":31126.93780611842,"y":32434.498319116443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"37a6e660-f28f-4bd2-99ea-3c2f46d2a36c","savedPayload":{"position":{"x":31126.93780611842,"y":32434.498319116443},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Side or Medium","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\" || chart.at02hs.bollingerSubChannel.slope === \"Medium\"","id":"08d54285-d07e-4cec-8f13-a2f268a569a2","savedPayload":{"position":{"x":30723.724643081026,"y":32572.09916636515},"targetPosition":{"x":31059.056353841177,"y":32354.976107409486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e0208159-e2c5-4fa4-8658-714af9cc91bd","savedPayload":{"position":{"x":31059.056353841177,"y":32354.976107409486},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"36e3a366-1402-4953-8283-9a4131d304b2","savedPayload":{"position":{"x":30633.69548060391,"y":32383.464894864584},"targetPosition":{"x":31014.06490490233,"y":32260.590685797342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d4dc8ef4-ba98-4843-9ef5-16a649541da1","savedPayload":{"position":{"x":31014.06490490233,"y":32260.590685797342},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 4: 02H Up && 02H Gentle && 3H Side","code":"chart.at02hs.percentageBandwidth.movingAverage > chart.at24hs.bollingerSubChannel.slope + chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Gentle\" && chart.at03hs.bollingerSubChannel.slope === \"Side\") {false} else {true}","id":"f24fcdcf-8844-4f08-a9f2-3b56471a6dde","savedPayload":{"position":{"x":30595.571410680965,"y":32178.05371321225},"targetPosition":{"x":30995.052862976325,"y":32157.74965041339},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2f6a17d7-7a2e-4aa2-b120-d22cb0898194","savedPayload":{"position":{"x":30995.052862976325,"y":32157.74965041339},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H NOT Steep","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope != \"Steep\"","id":"5e74fc74-6684-4675-ba35-4ce3fee27b2a","savedPayload":{"position":{"x":30612.009771633493,"y":31970.454085425517},"targetPosition":{"x":31003.424923684455,"y":32053.515183920517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cc3b8326-99cd-431c-8b27-c85322f6413f","savedPayload":{"position":{"x":31003.424923684455,"y":32053.515183920517},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e5d2fd0e-f202-44e7-bf4c-32d3a203528e","savedPayload":{"position":{"x":31394.696965332292,"y":32137.06841264846},"targetPosition":{"x":31575.976545730267,"y":31780.03372773283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"08776dac-4836-413b-ad45-fdfa781b031c","savedPayload":{"position":{"x":31575.976545730267,"y":31780.03372773283},"targetPosition":{"x":31758.22011621457,"y":31424.574860926965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"5724bd17-a57c-4ec4-9389-170c4255a2d5","savedPayload":{"position":{"x":31758.22011621457,"y":31424.574860926965},"targetPosition":{"x":31633.219625647092,"y":31038.6715717692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"7ac87760-6585-45b0-8e6a-52393eba7893","savedPayload":{"position":{"x":30735.600805138325,"y":33507.99863549079},"targetPosition":{"x":30475.476039234916,"y":33357.5191308144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"e18e37c2-45e6-4c79-8ab5-0e5ca1d5106f","savedPayload":{"position":{"x":33617.84667711506,"y":33938.36138235442},"targetPosition":{"x":33617.80021414131,"y":33638.42804439987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"97289bf8-e16b-42a3-b467-58175c304390","savedPayload":{"position":{"x":33617.80021414131,"y":33638.42804439987},"targetPosition":{"x":33617.692701429136,"y":33338.295643587335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"77be179e-b8d7-42e1-8612-32b85af6352b","savedPayload":{"position":{"x":33617.67000115603,"y":33338.2983947205},"targetPosition":{"x":33617.553943954204,"y":33038.401141381386},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"21d88502-c3c4-4847-af18-a943a25e44f4","savedPayload":{"position":{"x":33617.553943954204,"y":33038.401141381386},"targetPosition":{"x":30475.395949616388,"y":33357.36740858946},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"5c93f074-54cb-4ef9-bcd5-b2ccef229271","savedPayload":{"position":{"x":30475.395949616388,"y":33357.36740858946},"targetPosition":{"x":30325.095919219108,"y":33097.442231856185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3c1bbf78-0fa6-429b-8dbf-d002f6a375b4","savedPayload":{"position":{"x":30325.095919219108,"y":33097.442231856185},"targetPosition":{"x":30174.932833579667,"y":32838.137954305625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"11d19fb0-32df-475f-a4b9-2832942954f3","savedPayload":{"position":{"x":30234.264038388534,"y":33709.59649631907},"targetPosition":{"x":30112.179889514613,"y":33434.84161439404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"547c7e11-9615-4493-8541-29323286596e","savedPayload":{"position":{"x":29697.381162992446,"y":34518.08926656646},"targetPosition":{"x":29728.562546731402,"y":34219.545692809836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"495e7972-41f7-474b-91b1-e434b599dcdc","savedPayload":{"position":{"x":29728.562546731402,"y":34219.545692809836},"targetPosition":{"x":29759.759570577848,"y":33920.72891942154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"eb8e1683-b144-470c-a376-2b091463a231","savedPayload":{"position":{"x":29211.7322965648,"y":34165.26538028993},"targetPosition":{"x":29485.6195128475,"y":34043.05074487052},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"867afb92-cc37-44ff-b2e9-b0f5cd2b3856","savedPayload":{"position":{"x":29485.6195128475,"y":34043.05074487052},"targetPosition":{"x":29759.759570577848,"y":33920.72891942154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"01b47fc7-1a64-44cb-bf9c-898cca8bed2b","savedPayload":{"position":{"x":29759.759570577848,"y":33920.72891942154},"targetPosition":{"x":29935.942617287852,"y":33677.80023794164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"cf8da514-59ee-4653-9cc1-69430acc9458","savedPayload":{"position":{"x":29935.942617287852,"y":33677.80023794164},"targetPosition":{"x":30112.179889514613,"y":33434.84161439404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"7f1cee55-5e8d-4ef6-bcf6-d93ebcd364dd","savedPayload":{"position":{"x":30112.081341129044,"y":33434.631552439794},"targetPosition":{"x":30143.474708288704,"y":33136.159475499015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7d4e2188-8c93-4994-8d1d-ac48e2d042ee","savedPayload":{"position":{"x":30143.474708288704,"y":33136.159475499015},"targetPosition":{"x":30174.932833579667,"y":32838.137954305625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"09f38b0e-fe77-4c18-94f7-ccf4065bd658","savedPayload":{"position":{"x":29772.844422223552,"y":33283.54921569672},"targetPosition":{"x":29973.88377786049,"y":33060.741059920125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3bf360bd-8eaf-4902-b171-228ee072b89f","savedPayload":{"position":{"x":29973.88377786049,"y":33060.741059920125},"targetPosition":{"x":30174.932833579667,"y":32838.137954305625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"220cd9e4-fafa-44dc-bded-294af6ccc6df","savedPayload":{"position":{"x":29588.164690634123,"y":32962.447589802534},"targetPosition":{"x":29881.55127058081,"y":32900.126240651916},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"58aae9b5-2a28-49dc-b8f6-b2f4a0ed6897","savedPayload":{"position":{"x":29881.55127058081,"y":32900.126240651916},"targetPosition":{"x":30174.932833579667,"y":32838.137954305625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"94e31b0c-1e6e-4a82-aaaf-62f1ceaea758","savedPayload":{"position":{"x":30174.932833579667,"y":32838.137954305625},"targetPosition":{"x":30662.455253128323,"y":31743.375196346577},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"20e99942-a476-436b-8a1c-a9347a048114","savedPayload":{"position":{"x":30363.938333749466,"y":31774.39366742148},"targetPosition":{"x":30662.455253128323,"y":31743.375196346577},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[],"id":"8f3d8a80-6472-48d8-a081-8de85b844295","savedPayload":{"position":{"x":30662.455253128323,"y":31743.375196346577},"targetPosition":{"x":31633.219625647092,"y":31038.6715717692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"New Manage Stage","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"a32cdd1e-19ce-4bcc-b7c9-52a9e9466dbf","savedPayload":{"position":{"x":30082.885861767205,"y":30674.271706394175},"targetPosition":{"x":30513.31088525428,"y":30719.649203626926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"291bbfda-c1d5-49f6-966b-3f7704ffbda8","savedPayload":{"position":{"x":30449.70849833978,"y":30712.79175326387},"targetPosition":{"x":30918.36861727118,"y":30762.229078092434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"bbb0aab4-c6e3-47f8-b737-9e6fcafcfba1","savedPayload":{"position":{"x":30909.98604740559,"y":30862.912765036395},"targetPosition":{"x":31305.47719822368,"y":30800.44309590927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"34d1cb14-5351-42d4-8827-b2b0aa013b99","savedPayload":{"position":{"x":30605.26333421754,"y":30205.78693761094},"targetPosition":{"x":30971.141125384296,"y":30043.93219128299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"6f6150fc-3a6a-4686-a350-ff141bc83623","savedPayload":{"position":{"x":30331.119285087545,"y":35572.907331899485},"targetPosition":{"x":30184.879145673036,"y":35261.15720629123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3ef9a345-0c46-428c-94f3-80decc872e23","savedPayload":{"position":{"x":30184.879145673036,"y":35261.15720629123},"targetPosition":{"x":30042.73490234879,"y":34942.295632265814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d34694ed-b6c6-4fca-ae8d-95e3f30a4888","savedPayload":{"position":{"x":30042.73490234879,"y":34942.295632265814},"targetPosition":{"x":29899.932990268222,"y":34619.12789061077},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"0be8dfdf-f4ff-4616-b788-c04b3c64eb1b","savedPayload":{"position":{"x":30735.67671147718,"y":29734.66378505733},"targetPosition":{"x":30971.141125384296,"y":30043.93219128299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"45b5b7a2-8cc1-47f8-99c5-8042c7925a89","savedPayload":{"position":{"x":31785.587628057838,"y":28921.80729278172},"targetPosition":{"x":31743.582103773908,"y":29319.674508790024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9bb86da8-d8fa-4b5c-b6a5-952327938371","savedPayload":{"position":{"x":31743.582103773908,"y":29319.674508790024},"targetPosition":{"x":31701.637548164443,"y":29717.658565468908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"05f551c5-32a7-4986-8753-5ac0bd0d4acc","savedPayload":{"position":{"x":32172.013825409394,"y":29069.989139590693},"targetPosition":{"x":31936.92706800949,"y":29393.78099313842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9ba9b517-a809-4b01-848f-5bb31ab1f92c","savedPayload":{"position":{"x":31936.92706800949,"y":29393.78099313842},"targetPosition":{"x":31701.637548164443,"y":29717.658565468908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"c7001aa3-f176-40e4-a6d7-2744966363cd","savedPayload":{"position":{"x":32432.555394753173,"y":29391.497494618434},"targetPosition":{"x":32067.232883950746,"y":29554.586947261843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"094200d6-3761-4dd0-8073-083d14bbeb71","savedPayload":{"position":{"x":32067.232883950746,"y":29554.586947261843},"targetPosition":{"x":31701.637548164443,"y":29717.658565468908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"aaee1ab9-d92b-4f01-afc1-654347d9511a","savedPayload":{"position":{"x":32497.38168861228,"y":29799.19204314747},"targetPosition":{"x":32099.598869002944,"y":29758.585748231508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9143d8e3-b435-49f2-907e-a874e794d32a","savedPayload":{"position":{"x":32099.598869002944,"y":29758.585748231508},"targetPosition":{"x":31701.637548164443,"y":29717.658565468908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"9e27b341-5396-4a81-b483-13c9e497f3c4","savedPayload":{"position":{"x":32342.498436465543,"y":30179.457799669777},"targetPosition":{"x":32025.30263324656,"y":29951.650215787853},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"77518efa-2184-4602-8f5a-f3e106c6845c","savedPayload":{"position":{"x":32025.30263324656,"y":29951.650215787853},"targetPosition":{"x":31701.637548164443,"y":29717.658565468908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9d8fbd63-29f2-41f9-85f1-92643ff12c6d","savedPayload":{"position":{"x":31701.637548164443,"y":29717.658565468908},"targetPosition":{"x":31336.23232758938,"y":29880.60125077836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"a92424e5-ab90-424c-85cc-b8697bcb6009","savedPayload":{"position":{"x":31336.23232758938,"y":29880.60125077836},"targetPosition":{"x":30971.141125384296,"y":30043.93219128299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"8aff2c3b-ecf9-4df8-84ea-ffd6ba9c9612"}}}],"announcements":[],"id":"58effb7e-0927-4c47-8745-58895dead2ea","savedPayload":{"position":{"x":30971.141125384296,"y":30043.93219128299},"targetPosition":{"x":31146.90148203014,"y":30438.426905457258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"49b3a850-8a9e-41c7-8b5f-e5f3a21ce83d","savedPayload":{"position":{"x":30452.45845106373,"y":29521.565879294885},"targetPosition":{"x":30826.360212497813,"y":29664.135819369385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"c6bc7845-b742-4bd0-a28e-f76bafd9ae16","savedPayload":{"position":{"x":29620.502448153133,"y":29009.482794068932},"targetPosition":{"x":30020.48723524759,"y":28999.95192930794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0dea846d-7054-4651-9c26-e34941dd4128","savedPayload":{"position":{"x":30020.48723524759,"y":28999.95192930794},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"9ef393ca-8c24-4089-a87e-8ce151f2b828","savedPayload":{"position":{"x":29673.23605654033,"y":28702.255596384566},"targetPosition":{"x":30046.812421762977,"y":28846.20864900197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6be2982e-d239-488c-aa26-68e9b2a7af09","savedPayload":{"position":{"x":30046.812421762977,"y":28846.20864900197},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"69018aba-59d9-4f07-a2d5-d93c75981c93","savedPayload":{"position":{"x":29839.877390688383,"y":28438.113330539305},"targetPosition":{"x":30130.17776697706,"y":28714.084841759402},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6ce688b0-0234-4ad1-8afa-540325306d5c","savedPayload":{"position":{"x":30130.17776697706,"y":28714.084841759402},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"b882f3e8-28e5-49f8-90a1-c27ac4723c90","savedPayload":{"position":{"x":30094.91632821422,"y":28257.6976118685},"targetPosition":{"x":30257.805692474005,"y":28623.700232213934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d21fc9d4-bec7-4df6-9083-203e877f30de","savedPayload":{"position":{"x":30257.805692474005,"y":28623.700232213934},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"2d8c394e-6772-4d45-a052-a5c04202637c","savedPayload":{"position":{"x":30399.135146391483,"y":28188.951611978144},"targetPosition":{"x":30409.894262867972,"y":28589.425905596338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"577a9703-74fb-4ea1-9e6d-1a6083c6ac29","savedPayload":{"position":{"x":30409.894262867972,"y":28589.425905596338},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14 > chart.at01hs.base7EMA.previous.previous.ema21 - chart.at01hs.base7EMA.previous.previous.ema14","id":"af2fed7e-8530-49cb-8d8c-818c0dfd3865","savedPayload":{"position":{"x":30705.807101415852,"y":28242.043260085895},"targetPosition":{"x":30563.534489641403,"y":28615.829252344352},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8b902eb1-aaaf-41e5-abab-95f7673e1ff5","savedPayload":{"position":{"x":30563.534489641403,"y":28615.829252344352},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2 previous ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7 > chart.at01hs.base7EMA.previous.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.previous.ema7","id":"2a5efff2-2a04-4585-813e-e3ac2ffb8b95","savedPayload":{"position":{"x":30970.307494097444,"y":28407.94708158223},"targetPosition":{"x":30695.559309238633,"y":28699.077640496787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"081cec88-c2c1-49f8-88c1-760fc50e7f91","savedPayload":{"position":{"x":30695.559309238633,"y":28699.077640496787},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7abbde01-e871-4b28-973e-51ca5f3f1c4d","savedPayload":{"position":{"x":30421.294627160216,"y":28990.627562965827},"targetPosition":{"x":30585.34029111149,"y":29357.81367658895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"276723b8-0d32-49d8-b9b3-bd29368160f7","savedPayload":{"position":{"x":30585.34029111149,"y":29357.81367658895},"targetPosition":{"x":30826.360212497813,"y":29664.135819369385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"8aff2c3b-ecf9-4df8-84ea-ffd6ba9c9612"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"16b5e57d-57f9-401a-9134-4dd112797d48","savedPayload":{"position":{"x":30789.66764429344,"y":28185.714818709304},"targetPosition":{"x":30951.533541835262,"y":28551.74444969474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f2bb1dbc-702a-413a-9421-9ac5309fe6f0","savedPayload":{"position":{"x":30951.533541835262,"y":28551.74444969474},"targetPosition":{"x":31113.728474558935,"y":28917.21393819002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"f73c271b-afa2-45ee-91d4-6aee3b3a8be9","savedPayload":{"position":{"x":31400.498422214296,"y":28170.05020162896},"targetPosition":{"x":31257.123145725003,"y":28543.607202208215},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"feaca6ce-0573-401a-909a-4e25687ce708","savedPayload":{"position":{"x":31257.123145725003,"y":28543.607202208215},"targetPosition":{"x":31113.728474558935,"y":28917.21393819002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2 prev.ema7 div 2 prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7 > chart.at01hs.base7EMA.previous.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.previous.ema7","id":"a9c93bde-d56d-42e9-a447-b29a02885149","savedPayload":{"position":{"x":31844.247105636758,"y":28591.21341930776},"targetPosition":{"x":31479.031034712203,"y":28754.272707956417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"72e2d105-feba-47a0-8eaf-6c83296a3863","savedPayload":{"position":{"x":31479.031034712203,"y":28754.272707956417},"targetPosition":{"x":31113.728474558935,"y":28917.21393819002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ab94fcaf-55b6-4be2-a44a-b399dda60644","savedPayload":{"position":{"x":31113.728474558935,"y":28917.21393819002},"targetPosition":{"x":30970.110994537692,"y":29290.905083627942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"07ca2734-a819-49f7-99f7-f19f58e5ffba","savedPayload":{"position":{"x":30970.110994537692,"y":29290.905083627942},"targetPosition":{"x":30826.360212497813,"y":29664.135819369385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"58effb7e-0927-4c47-8745-58895dead2ea"}}}],"announcements":[],"id":"e1d12230-902a-46bf-bb48-1fafbd162e1e","savedPayload":{"position":{"x":30826.360212497813,"y":29664.135819369385},"targetPosition":{"x":30971.141125384296,"y":30043.93219128299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"b53c2ea8-9341-416a-bef3-0b7fb86530d5","savedPayload":{"position":{"x":30285.58406428977,"y":29243.050178096328},"targetPosition":{"x":30683.146099147776,"y":29284.109186527035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"de39a349-8739-4e13-ba9d-91acedf7c835","savedPayload":{"position":{"x":33888.595369445764,"y":37801.62556418717},"targetPosition":{"x":33722.19827986528,"y":37427.67930882089},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b8a44bb5-4965-4d76-8a55-6f0274d84b0c","savedPayload":{"position":{"x":33722.19827986528,"y":37427.67930882089},"targetPosition":{"x":33555.69633665479,"y":37053.5235719997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"4529e123-22d2-40a3-a751-9069e69fa624","savedPayload":{"position":{"x":33074.796850053746,"y":37716.09042113447},"targetPosition":{"x":33315.21727858583,"y":37384.885751050235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c94daca3-f53c-42b6-970c-586d9b605b04","savedPayload":{"position":{"x":33315.21727858583,"y":37384.885751050235},"targetPosition":{"x":33555.69633665479,"y":37053.5235719997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0a283745-7a51-45ab-b781-538c6e1f6a8a","savedPayload":{"position":{"x":33555.69633665479,"y":37053.5235719997},"targetPosition":{"x":33598.24181754929,"y":36645.99161286938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"be4359e1-bbfa-404c-b1ab-e073d8b4b173","savedPayload":{"position":{"x":30725.365031712365,"y":28886.42343824879},"targetPosition":{"x":30683.146099147776,"y":29284.109186527035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"58effb7e-0927-4c47-8745-58895dead2ea"}}}],"announcements":[],"id":"8aff2c3b-ecf9-4df8-84ea-ffd6ba9c9612","savedPayload":{"position":{"x":30683.146099147776,"y":29284.109186527035},"targetPosition":{"x":30826.360212497813,"y":29664.135819369385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c97bbced-498a-49dd-847a-a52170294ea9","savedPayload":{"position":{"x":30981.651480104963,"y":30564.710684840276},"targetPosition":{"x":31305.47719822368,"y":30800.44309590927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"06a4b038-f8fb-477e-9c1b-4c40ae6262ab","savedPayload":{"position":{"x":31174.04809078839,"y":31458.634409852893},"targetPosition":{"x":31111.5,"y":31060.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2b7c8ed1-9fc0-48ee-9fa1-1a0de54f71e3","savedPayload":{"position":{"x":31243.032461114977,"y":30404.860924837452},"targetPosition":{"x":31305.47719822368,"y":30800.44309590927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f9453ecf-918d-4816-a43e-216a4af33d75","savedPayload":{"position":{"x":31305.47719822368,"y":30800.44309590927},"targetPosition":{"x":31633.219625647092,"y":31038.6715717692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"a003e0e0-4a5c-4b36-a50b-98e69073a310","savedPayload":{"position":{"x":31675.554585333728,"y":30258.903145976074},"targetPosition":{"x":31758.97925625366,"y":30650.411333418004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"4b1b8e1d-da67-439f-8a1b-dd82581ec9c9","savedPayload":{"position":{"x":31742.39930563862,"y":31180.805189286868},"targetPosition":{"x":31961.651949358587,"y":30842.396421048194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b4633c27-f49c-42b5-be24-a2ea7d5ee8f7","savedPayload":{"position":{"x":31977.08325902516,"y":30314.67393304803},"targetPosition":{"x":31758.97925625366,"y":30650.411333418004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1b84ef5d-8088-401c-a38f-5d9222a01ec3","savedPayload":{"position":{"x":31758.97925625366,"y":30650.411333418004},"targetPosition":{"x":31633.219625647092,"y":31038.6715717692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f1ca0dbb-65e8-4c60-84f0-89596e22e9be","savedPayload":{"position":{"x":31633.219625647092,"y":31038.6715717692},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S7 - 3H Down","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"b7ef7546-2729-499d-88db-7c958392fb0e","savedPayload":{"position":{"x":32756.711113974747,"y":31607.61024363443},"targetPosition":{"x":32358.625604152276,"y":31594.206592670653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"40201dbd-8fbe-41aa-acd3-c0cea3fff9de","savedPayload":{"position":{"x":32358.625604152276,"y":31594.206592670653},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"6dc11e45-63d6-4246-9a9a-294a45931b14","savedPayload":{"position":{"x":32699.286732443106,"y":31878.47863401902},"targetPosition":{"x":32329.570598085495,"y":31729.497664114646},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2dbb8f61-68b4-4835-a6f7-6d7c0c2248ee","savedPayload":{"position":{"x":32329.570598085495,"y":31729.497664114646},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"391ae861-6932-4481-bc4f-15a284dafe80","savedPayload":{"position":{"x":32552.09531778457,"y":32114.04753440217},"targetPosition":{"x":32255.859915100125,"y":31847.386259193245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"52613d30-4103-4272-b871-e3785881dcd8","savedPayload":{"position":{"x":32255.859915100125,"y":31847.386259193245},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerChannel.direction === \"Down\"","id":"7bf0cb68-72c5-4df6-891e-ee3b08bdc439","savedPayload":{"position":{"x":32334.114842423976,"y":32284.565342679653},"targetPosition":{"x":32147.15431300346,"y":31932.905356218682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5bab5664-c7aa-4e60-aecd-30db721958b0","savedPayload":{"position":{"x":32147.15431300346,"y":31932.905356218682},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"3d771526-7fc9-4c67-b4b4-50e2df038870","savedPayload":{"position":{"x":32070.924868337093,"y":32370.08100269519},"targetPosition":{"x":32015.591548265118,"y":31975.736423733935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1298f042-2f23-4fc7-8359-5bdd3f7e7da1","savedPayload":{"position":{"x":32015.591548265118,"y":31975.736423733935},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Side or Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerSubChannel.slope === \"Side\" || chart.at06hs.bollingerSubChannel.slope === \"Gentle\"","id":"9e520195-93e0-4d66-b312-eb2c90921b3c","savedPayload":{"position":{"x":31794.650807013048,"y":32360.45078170795},"targetPosition":{"x":31877.416410439342,"y":31970.941978356223},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"16707f87-40dc-44ae-a7f8-2df9dc07d53c","savedPayload":{"position":{"x":31877.416410439342,"y":31970.941978356223},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Side","code":"chart.at02hs.bollingerSubChannel.slope > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\"","id":"8143bcc8-af0f-45ef-bbde-1f67fa30b819","savedPayload":{"position":{"x":31537.944515588584,"y":32256.803208422127},"targetPosition":{"x":31748.99837175806,"y":31919.0842921405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0f2efdf7-69dc-4d15-9bf4-6f714894d100","savedPayload":{"position":{"x":31748.99837175806,"y":31919.0842921405},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"10f38b80-2f33-4ad0-b849-019b27b36921","savedPayload":{"position":{"x":31332.159441515407,"y":32071.60292915926},"targetPosition":{"x":31646.02399287895,"y":31826.300241802153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"080177f0-9708-4e76-b021-f4857ee42930","savedPayload":{"position":{"x":31646.02399287895,"y":31826.300241802153},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5dd3ebf8-bbcd-4978-8d28-0f4ecfe80ba4","savedPayload":{"position":{"x":31960.09358765132,"y":31580.130968973965},"targetPosition":{"x":31811.375456622718,"y":31210.024612755467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"b4791836-6c85-4279-b75c-ba308154012c","savedPayload":{"position":{"x":31811.375456622718,"y":31210.024612755467},"targetPosition":{"x":31687.76480518738,"y":30831.48557074782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"81a9ee22-bb7d-4a2b-b3ca-7df88b5cfcd1","savedPayload":{"position":{"x":30964.170002711508,"y":32252.191088803193},"targetPosition":{"x":31144.768944066076,"y":31897.42162298904},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"78d25152-3354-4e6c-8118-e621e2eab4e0","savedPayload":{"position":{"x":31144.768944066076,"y":31897.42162298904},"targetPosition":{"x":31325.724991307263,"y":31541.89217527304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1067e774-8e02-44c0-a86a-43c62a2e1a69","savedPayload":{"position":{"x":31325.724991307263,"y":31541.89217527304},"targetPosition":{"x":31506.68394076039,"y":31186.464463611115},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"26a5deff-364b-4f52-b2f2-24eb39f8a9aa","savedPayload":{"position":{"x":31506.68394076039,"y":31186.464463611115},"targetPosition":{"x":31687.76480518738,"y":30831.48557074782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"7ca3641e-2701-4ae6-aebf-419045fa3ef7","savedPayload":{"position":{"x":31415.350855782843,"y":31953.662040186926},"targetPosition":{"x":31228.774127711946,"y":31601.810661783034},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"50506cba-6ce7-47ee-a28f-50cae0a62f61","savedPayload":{"position":{"x":31228.774127711946,"y":31601.810661783034},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"b0bf87ab-9049-4c24-918b-b7bc805db2a8","savedPayload":{"position":{"x":31151.8983901484,"y":32039.378083013424},"targetPosition":{"x":31096.520470152915,"y":31644.940254589535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"56da2b2c-74c3-4328-b75c-4990aef44ca0","savedPayload":{"position":{"x":31096.520470152915,"y":31644.940254589535},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"0ed3b727-9493-4064-8404-d2d48e9213ad","savedPayload":{"position":{"x":30875.88748954805,"y":32029.398005509585},"targetPosition":{"x":30958.5310225033,"y":31640.03030162792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f6f8fad9-0588-4d7c-81a8-5738f0d6c7e6","savedPayload":{"position":{"x":30958.5310225033,"y":31640.03030162792},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerChannel.direction === \"Down\"","id":"5fe7a35e-a56c-4ad4-854d-5b13ca036669","savedPayload":{"position":{"x":30619.45917271261,"y":31925.61009127704},"targetPosition":{"x":30830.267658267254,"y":31588.123770907005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1b64fa95-a27a-4e68-9ae1-fa8358e23f41","savedPayload":{"position":{"x":30830.267658267254,"y":31588.123770907005},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"23e2569a-2867-4ebe-aa2b-21254ab0c096","savedPayload":{"position":{"x":30413.92809880018,"y":31740.258282032806},"targetPosition":{"x":30727.44993708856,"y":31495.42966547764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4f6a6ace-3508-4a78-953a-a9944f9b9077","savedPayload":{"position":{"x":30727.44993708856,"y":31495.42966547764},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Side or Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerSubChannel.slope === \"Side\" || chart.at06hs.bollingerSubChannel.slope === \"Gentle\"","id":"565a511b-5264-4cfd-ad94-c8b316f5e19c","savedPayload":{"position":{"x":30284.10436293634,"y":31495.651010108508},"targetPosition":{"x":30662.4945590601,"y":31373.11363325245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5e3a86fa-9e96-47ef-b87b-3324c9edf8a3","savedPayload":{"position":{"x":30662.4945590601,"y":31373.11363325245},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Side","code":"chart.at02hs.bollingerSubChannel.slope > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\"","id":"ef7ba943-87cb-4149-8ab2-a562a34fa524","savedPayload":{"position":{"x":30245.599644538674,"y":31221.709525819122},"targetPosition":{"x":30643.252589579934,"y":31236.12546813472},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e624d8a7-586a-4198-a528-b6ee474245dd","savedPayload":{"position":{"x":30643.252589579934,"y":31236.12546813472},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"9992327b-1059-4396-8766-514b6384a81b","savedPayload":{"position":{"x":30303.138677412127,"y":30950.697921181665},"targetPosition":{"x":30672.107581803288,"y":31100.54665498549},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0701df03-b97b-4d03-89a7-a9fb764d1d21","savedPayload":{"position":{"x":30672.107581803288,"y":31100.54665498549},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b72964a4-f423-4930-a40d-ced67854d28e","savedPayload":{"position":{"x":31041.820593356788,"y":31249.659564954316},"targetPosition":{"x":31308.726111061416,"y":30953.636053954928},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"0f375c4e-1181-48dc-a5c6-98808692de0b","savedPayload":{"position":{"x":31430.805525066622,"y":30518.836523760896},"targetPosition":{"x":31255.5,"y":30712.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b2fa6c84-789c-4629-834d-05326002e6af","savedPayload":{"position":{"x":31109.176798356515,"y":30963.27212808858},"targetPosition":{"x":31308.726111061416,"y":30953.636053954928},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"51e2b55b-66ca-45c9-9cfd-ec82ac5ce3d6","savedPayload":{"position":{"x":31308.726111061416,"y":30953.636053954928},"targetPosition":{"x":31687.76480518738,"y":30831.48557074782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"adc2c73c-702f-46ce-90ad-dbbc7f75ad3d","savedPayload":{"position":{"x":31687.76480518738,"y":30831.48557074782},"targetPosition":{"x":31869.68557793254,"y":30474.935931910186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"35334cbd-d4ce-49aa-aaf6-dd76ad2fc0e2","savedPayload":{"position":{"x":29872.650486479462,"y":31845.644615987683},"targetPosition":{"x":29722.94521058858,"y":31586.628418935463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"09357e03-4041-4836-8d0b-ff241d96d998","savedPayload":{"position":{"x":32805.75142358775,"y":32943.72579653},"targetPosition":{"x":33016.594443523325,"y":32732.39288563737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a39a586f-7f44-4599-81c9-26989d479b34","savedPayload":{"position":{"x":33140.34468073813,"y":32827.35630227829},"targetPosition":{"x":33289.50677656069,"y":32568.28724312379},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9fdd8bdf-bcd5-4318-9786-18d2e5e0cc65","savedPayload":{"position":{"x":33289.50677656069,"y":32568.28724312379},"targetPosition":{"x":33438.553943954204,"y":32309.40114138139},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"37c5e03a-b280-40d2-a2e8-e040f87303f8","savedPayload":{"position":{"x":33438.553943954204,"y":32309.40114138139},"targetPosition":{"x":29722.94521058858,"y":31586.628418935463},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"7f426eb4-a1d0-4bc1-90fc-a834c34b7c17","savedPayload":{"position":{"x":29722.94521058858,"y":31586.628418935463},"targetPosition":{"x":29722.725213705256,"y":31287.846173686503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7a4858da-e282-4158-bea4-53b72dbb1817","savedPayload":{"position":{"x":29722.725213705256,"y":31287.846173686503},"targetPosition":{"x":29722.457835209898,"y":30989.4429009283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"4d50fd19-7ed8-453e-82bc-532f4493a243","savedPayload":{"position":{"x":29343.437731382317,"y":31744.382995141423},"targetPosition":{"x":29371.152393632306,"y":31472.02590154781},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"af81c406-ab61-41fb-be2f-e442ffc2f8f0","savedPayload":{"position":{"x":28476.443476226017,"y":32218.25881730505},"targetPosition":{"x":28649.504473241068,"y":31955.95291544174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dde94435-60a3-4c47-94cf-3e8175ac1634","savedPayload":{"position":{"x":28649.504473241068,"y":31955.95291544174},"targetPosition":{"x":28825.08157382303,"y":31714.314372018624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"3d7be9e2-afe8-4d9c-be2c-09af6c358225","savedPayload":{"position":{"x":28236.8604574126,"y":31599.372993702822},"targetPosition":{"x":28528.02184771264,"y":31682.79587950174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fa5631d8-a1d0-4139-85ea-67590dd474cc","savedPayload":{"position":{"x":28528.02184771264,"y":31682.79587950174},"targetPosition":{"x":28825.08157382303,"y":31714.314372018624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1150cede-dcd1-49d1-84f7-ffe774dabf5b","savedPayload":{"position":{"x":28825.08157382303,"y":31714.314372018624},"targetPosition":{"x":29098.089018424576,"y":31593.125254821593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"23a3f497-117a-4975-a899-a4dbeb320a60","savedPayload":{"position":{"x":29098.089018424576,"y":31593.125254821593},"targetPosition":{"x":29371.152393632306,"y":31472.02590154781},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"73ab31c8-85c5-464a-8f79-1e368c01ae6a","savedPayload":{"position":{"x":29371.152393632306,"y":31472.02590154781},"targetPosition":{"x":29546.836137447066,"y":31230.632814358563},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"427a98f5-f0bc-4f3e-bd3e-290a2a61a0d8","savedPayload":{"position":{"x":29546.836137447066,"y":31230.632814358563},"targetPosition":{"x":29722.457835209898,"y":30989.4429009283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"5476a8e6-a075-466a-9942-13ce4962b132","savedPayload":{"position":{"x":29153.71032089733,"y":31172.81373022447},"targetPosition":{"x":29438.096980804145,"y":31081.090618860526},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7db9c851-0940-43fd-9366-641e540c24d8","savedPayload":{"position":{"x":29438.096980804145,"y":31081.090618860526},"targetPosition":{"x":29722.457835209898,"y":30989.4429009283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"065a3e90-45c2-45d6-846d-7dbbd61439db","savedPayload":{"position":{"x":29154.040974378873,"y":30803.964060964398},"targetPosition":{"x":29438.30180708951,"y":30896.630273574876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6e3ea9ca-8dfd-4706-8a44-bee210c3fa64","savedPayload":{"position":{"x":29438.30180708951,"y":30896.630273574876},"targetPosition":{"x":29722.457835209898,"y":30989.4429009283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"01200851-265b-4fd2-a819-e866a534dd69","savedPayload":{"position":{"x":29722.457835209898,"y":30989.4429009283},"targetPosition":{"x":30688.920593803676,"y":30287.74409384992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"cce2c890-b019-4232-804f-1a707f05bcb6","savedPayload":{"position":{"x":30393.584979815012,"y":30240.819745126442},"targetPosition":{"x":30688.920593803676,"y":30287.74409384992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"b23ca59f-d8bc-491c-9a8e-2b32a01b3106","savedPayload":{"position":{"x":31234.10084655184,"y":30186.12957454463},"targetPosition":{"x":30928.5,"y":30137.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a53e9a4d-005d-429d-8cea-80553c0eba26","savedPayload":{"position":{"x":30513.035580242144,"y":30045.471998217716},"targetPosition":{"x":30688.920593803676,"y":30287.74409384992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"bdd02df9-2a77-4665-808e-7172a0006e9c","savedPayload":{"position":{"x":30688.920593803676,"y":30287.74409384992},"targetPosition":{"x":31869.68557793254,"y":30474.935931910186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"New Manage Stage","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"cf80ef88-969d-40f5-bc36-ccee6f8518bf","savedPayload":{"position":{"x":31007.622745239525,"y":29170.029822350145},"targetPosition":{"x":31258.45994551566,"y":29479.940552493328},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"6fac6741-1d2a-4364-ba55-6d0082d4e33b","savedPayload":{"position":{"x":31258.45994551566,"y":29479.940552493328},"targetPosition":{"x":31530.039463965975,"y":29815.47282469586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"995255a7-571c-4219-bb24-a1dda890ba60","savedPayload":{"position":{"x":31484.467341186282,"y":29844.710284007848},"targetPosition":{"x":31807.16663599444,"y":30079.347663334862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"712dcccd-fca1-4d1b-bf00-497375a831ec","savedPayload":{"position":{"x":31732.539366836572,"y":29162.99263509157},"targetPosition":{"x":32104.571397491785,"y":29306.12811998022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"8facdd27-7830-4433-b373-c259545e9d3f","savedPayload":{"position":{"x":29882.867353640824,"y":35200.38777180643},"targetPosition":{"x":29736.627214226315,"y":34888.63764619818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f7b658c8-0903-46b3-867a-c01eaca10bb1","savedPayload":{"position":{"x":29736.627214226315,"y":34888.63764619818},"targetPosition":{"x":29594.48297090207,"y":34569.77607217276},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"97de140f-ae6e-435a-8be7-c4d87e38bd83","savedPayload":{"position":{"x":29594.48297090207,"y":34569.77607217276},"targetPosition":{"x":29451.6810588215,"y":34246.608330517716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"c137f50a-c8a7-4275-8ae4-80fa7fedd38c","savedPayload":{"position":{"x":32166.756910341126,"y":28889.69689332528},"targetPosition":{"x":32104.571397491785,"y":29306.12811998022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"908a2ee2-d913-46d1-80f5-e7109c803e65","savedPayload":{"position":{"x":28516.71817962912,"y":35192.29086492423},"targetPosition":{"x":28557.156363557613,"y":34808.409636499855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0a9ab42d-9b24-461f-95cd-39ab13a54bc3","savedPayload":{"position":{"x":28557.156363557613,"y":34808.409636499855},"targetPosition":{"x":28598.0289573759,"y":34417.78682031214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"d4179fb4-9949-4d82-ae45-8d8be2001ce8","savedPayload":{"position":{"x":28140.072131909215,"y":35047.30833994516},"targetPosition":{"x":28366.86690488685,"y":34735.352904831736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"efab2947-1540-4e8f-a1d9-50289a9b3c7f","savedPayload":{"position":{"x":28366.86690488685,"y":34735.352904831736},"targetPosition":{"x":28598.0289573759,"y":34417.78682031214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"8fbb58cd-53d0-4e19-8f50-590090df0f58","savedPayload":{"position":{"x":27878.964636068133,"y":34737.91437333604},"targetPosition":{"x":28231.258809765986,"y":34581.04278506479},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"adec7d7c-258f-4222-a6d6-734f6962d5d9","savedPayload":{"position":{"x":28231.258809765986,"y":34581.04278506479},"targetPosition":{"x":28598.0289573759,"y":34417.78682031214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"b6a70772-8397-41ac-9268-5ad1cd9b0b80","savedPayload":{"position":{"x":27821.86029713508,"y":34336.88651844418},"targetPosition":{"x":28205.040932522745,"y":34376.814161692535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e1ffbeec-66bc-4d38-984b-2aff6740101f","savedPayload":{"position":{"x":28205.040932522745,"y":34376.814161692535},"targetPosition":{"x":28598.0289573759,"y":34417.78682031214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"ff907f99-713a-41f7-8b23-721699b74966","savedPayload":{"position":{"x":27964.313268952294,"y":33958.435928563435},"targetPosition":{"x":28276.53876559214,"y":34184.71313975834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"65511340-ee54-484b-8cb6-f2d95dec9bdd","savedPayload":{"position":{"x":28276.53876559214,"y":34184.71313975834},"targetPosition":{"x":28598.0289573759,"y":34417.78682031214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"94b2fbbc-3d32-473c-8008-231664970f09","savedPayload":{"position":{"x":32849.28299676666,"y":29591.021162867517},"targetPosition":{"x":32476.86475119283,"y":29448.614791856868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"02434c11-1d6d-4f15-9577-237b5daba9ea","savedPayload":{"position":{"x":32476.86475119283,"y":29448.614791856868},"targetPosition":{"x":32104.571397491785,"y":29306.12811998022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"cac36b94-3568-446e-a2d2-9d860bd8ad0f"}}}],"announcements":[],"id":"74e77f0f-2945-48ac-ab1f-47a65feb84ec","savedPayload":{"position":{"x":32104.571397491785,"y":29306.12811998022},"targetPosition":{"x":31950.06586342185,"y":29709.082658113486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"db68ae8b-4414-43f9-b275-c97b3a6a80c6","savedPayload":{"position":{"x":32105.102125287416,"y":28580.59467680565},"targetPosition":{"x":32267.4143234272,"y":28944.957294860884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"2ccb9d00-d677-44b6-8b92-edbcaf349d29","savedPayload":{"position":{"x":33290.65093021714,"y":34555.75511226941},"targetPosition":{"x":33540.8213283894,"y":34865.279508582666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d5649c96-59d6-4f0e-a259-063e7355eb48","savedPayload":{"position":{"x":33540.8213283894,"y":34865.279508582666},"targetPosition":{"x":33791.47346791017,"y":35173.62066748123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"2689f28d-6ca9-4e82-8327-eae9956a751a","savedPayload":{"position":{"x":33676.94695072527,"y":34395.80631745438},"targetPosition":{"x":33738.340953101884,"y":34789.24855876006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b19aacc4-d892-41dc-a487-870ca6e13ce2","savedPayload":{"position":{"x":33738.340953101884,"y":34789.24855876006},"targetPosition":{"x":33791.47346791017,"y":35173.62066748123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"9e40ebf6-fd42-43da-b390-30926b085b8f","savedPayload":{"position":{"x":34079.123783303585,"y":34430.169852666026},"targetPosition":{"x":33935.38002039342,"y":34801.925115799015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2b8766b-b4da-40c7-8d88-76f3969065aa","savedPayload":{"position":{"x":33935.38002039342,"y":34801.925115799015},"targetPosition":{"x":33791.47346791017,"y":35173.62066748123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"cae32279-d999-4c13-8eb6-cad3063c74d4","savedPayload":{"position":{"x":34412.44222154852,"y":34672.67036466439},"targetPosition":{"x":34102.0921039295,"y":34923.20814374665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"04ac8528-0696-413b-a739-7825670c0234","savedPayload":{"position":{"x":34102.0921039295,"y":34923.20814374665},"targetPosition":{"x":33791.47346791017,"y":35173.62066748123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div previous ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"6a80e7f5-300b-417d-9f9d-49803b8f51f8","savedPayload":{"position":{"x":34579.99550348594,"y":35050.04227125973},"targetPosition":{"x":34185.89807327404,"y":35111.97251419154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8e23fa3d-13f0-45fe-990f-d268e58ff1cf","savedPayload":{"position":{"x":34185.89807327404,"y":35111.97251419154},"targetPosition":{"x":33791.47346791017,"y":35173.62066748123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"38fc838f-01a5-4a33-a35f-e185f52c295e","savedPayload":{"position":{"x":33790.73756529026,"y":35173.32453395331},"targetPosition":{"x":33648.14450005887,"y":35545.010999298036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"0c86ae11-a07f-4c31-a33c-05debf70c23c","savedPayload":{"position":{"x":33648.14450005887,"y":35545.010999298036},"targetPosition":{"x":32267.4143234272,"y":28944.957294860884},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"cac36b94-3568-446e-a2d2-9d860bd8ad0f"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"301720b6-e436-4134-be19-0bd0892f624d","savedPayload":{"position":{"x":32865.55424226058,"y":37100.53572793926},"targetPosition":{"x":32801.62373321796,"y":36696.25923472225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2e8c0fcc-d597-40f7-b07f-16214f744b0e","savedPayload":{"position":{"x":32801.62373321796,"y":36696.25923472225},"targetPosition":{"x":32731.943750689665,"y":36255.54215215661},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"b7683607-6589-414b-b6de-5aa132d6baef","savedPayload":{"position":{"x":32067.299039463076,"y":36794.11958615513},"targetPosition":{"x":32385.501351360777,"y":36536.28705492211},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e247b889-3abc-469b-b26d-fc11a08bf9c8","savedPayload":{"position":{"x":32385.501351360777,"y":36536.28705492211},"targetPosition":{"x":32731.943750689665,"y":36255.54215215661},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"605adda8-a968-4819-af76-2ee257f07e66","savedPayload":{"position":{"x":32996.142903277054,"y":28620.519213581738},"targetPosition":{"x":32631.78472413752,"y":28782.773153677914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"cc9492df-3289-4d6a-b152-bad2fc656730","savedPayload":{"position":{"x":32631.78472413752,"y":28782.773153677914},"targetPosition":{"x":32267.4143234272,"y":28944.957294860884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"74e77f0f-2945-48ac-ab1f-47a65feb84ec"}}}],"announcements":[],"id":"7fc97392-92a0-48cc-a5d3-799b1c2b8c35","savedPayload":{"position":{"x":32267.4143234272,"y":28944.957294860884},"targetPosition":{"x":32104.571397491785,"y":29306.12811998022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"895b6803-0996-41a6-9a13-93f488d7aee4","savedPayload":{"position":{"x":32159.626044730376,"y":28262.42213582802},"targetPosition":{"x":32410.183160417215,"y":28572.417370269148},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"df898928-7078-4e61-a616-169789552b36","savedPayload":{"position":{"x":33440.34343799904,"y":37429.106004094116},"targetPosition":{"x":33273.94634841856,"y":37055.159748727834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c02edb77-0d76-4656-8d2f-068eaddabff7","savedPayload":{"position":{"x":33273.94634841856,"y":37055.159748727834},"targetPosition":{"x":33107.44440520807,"y":36681.00401190665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"3bdea448-de7a-4188-b9ec-350dbf88470a","savedPayload":{"position":{"x":32626.544918607025,"y":37343.570861041415},"targetPosition":{"x":32866.96534713911,"y":37012.36619095718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fbc8a359-f853-44a6-831d-a2078edeebe6","savedPayload":{"position":{"x":32866.96534713911,"y":37012.36619095718},"targetPosition":{"x":33107.44440520807,"y":36681.00401190665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f4664806-47a1-41be-956e-079599c0df49","savedPayload":{"position":{"x":33107.44440520807,"y":36681.00401190665},"targetPosition":{"x":33149.98988610257,"y":36273.47205277633},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"b75aa4bc-9257-4444-98ca-afe6377b914a","savedPayload":{"position":{"x":32720.007440830715,"y":28321.18817261144},"targetPosition":{"x":32410.183160417215,"y":28572.417370269148},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"74e77f0f-2945-48ac-ab1f-47a65feb84ec"}}}],"announcements":[],"id":"cac36b94-3568-446e-a2d2-9d860bd8ad0f","savedPayload":{"position":{"x":32410.183160417215,"y":28572.417370269148},"targetPosition":{"x":32267.4143234272,"y":28944.957294860884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7ce8f923-1393-45ac-97d6-742e2cff6627","savedPayload":{"position":{"x":31745.02301611295,"y":29685.056363586977},"targetPosition":{"x":31807.16663599444,"y":30079.347663334862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"cce97d86-51a4-421b-ab3f-0378a33d0563","savedPayload":{"position":{"x":32244.805525066622,"y":29775.836523760896},"targetPosition":{"x":32069.5,"y":29969.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7f219f7a-b837-4ea3-a556-81bed47eae20","savedPayload":{"position":{"x":32041.585952575293,"y":29756.362553668645},"targetPosition":{"x":31807.16663599444,"y":30079.347663334862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0d03ff5b-3162-49a3-ae12-a0e5929de4dd","savedPayload":{"position":{"x":31807.16663599444,"y":30079.347663334862},"targetPosition":{"x":31869.68557793254,"y":30474.935931910186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"1c8d7c9c-e122-4839-a9df-db514ccfa466","savedPayload":{"position":{"x":32443.78411880295,"y":29957.94017527169},"targetPosition":{"x":32226.406850104606,"y":30292.86134791828},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"eabb6fbc-81b2-4eba-b222-062d7e7b219e","savedPayload":{"position":{"x":32075.39930563862,"y":30303.805189286868},"targetPosition":{"x":32294.651949358587,"y":29965.396421048194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6935a06b-c142-4601-8637-79d3eba3015e","savedPayload":{"position":{"x":32617.38344944207,"y":30209.38594008121},"targetPosition":{"x":32226.406850104606,"y":30292.86134791828},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"68777dc5-38aa-4508-8819-db12202b41c3","savedPayload":{"position":{"x":32226.406850104606,"y":30292.86134791828},"targetPosition":{"x":31869.68557793254,"y":30474.935931910186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"fc6676b7-944d-459c-bc06-592b3ae2fd1b","savedPayload":{"position":{"x":31869.68557793254,"y":30474.935931910186},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S2 - 6H Down","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"301d8e64-bde8-4eee-a0cf-b9c57bcb3050","savedPayload":{"position":{"x":32234.440324534728,"y":31685.198935221037},"targetPosition":{"x":31982.173246407383,"y":31389.646556791922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a869bb21-75b5-4621-9760-840cf4896844","savedPayload":{"position":{"x":31982.173246407383,"y":31389.646556791922},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"b3c4a94f-4986-4e55-ba28-f6456a67bd64","savedPayload":{"position":{"x":31969.70451636865,"y":31833.31869527966},"targetPosition":{"x":31849.590605542755,"y":31463.18464013037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7b405bfe-294d-48a8-b1ff-d0c4f4b328d1","savedPayload":{"position":{"x":31849.590605542755,"y":31463.18464013037},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"f4b66e81-3e26-4a04-9687-140ab33bd887","savedPayload":{"position":{"x":31668.20974582201,"y":31869.43108197012},"targetPosition":{"x":31698.734967129512,"y":31481.652370020198},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4d1c7a66-dd4a-45f9-956d-6cb68b64920b","savedPayload":{"position":{"x":31698.734967129512,"y":31481.652370020198},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"975153b0-b609-4975-b5d6-26f7bfe675e8","savedPayload":{"position":{"x":31376.60785778446,"y":31787.20304603462},"targetPosition":{"x":31552.95544610948,"y":31440.783608893744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ecc5139a-825f-4c91-8e92-f3719460c66b","savedPayload":{"position":{"x":31552.95544610948,"y":31440.783608893744},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Steep","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope === \"Steep\"","id":"a838971e-d8bd-4ded-a418-453b8981ff9e","savedPayload":{"position":{"x":31138.503489096856,"y":31599.473841373},"targetPosition":{"x":31433.865217987634,"y":31346.94829135217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3694b7de-4040-4f51-a025-3d482ad6c127","savedPayload":{"position":{"x":31433.865217987634,"y":31346.94829135217},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H NOT Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerSubChannel.slope != \"Side\"","id":"fc7ab7ee-a96c-4d9a-ae8e-618cd3ee0769","savedPayload":{"position":{"x":30990.256511828706,"y":31334.90783090023},"targetPosition":{"x":31359.7059535975,"y":31214.620571594114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7f681b33-bfa1-46b5-9483-545d3f62791b","savedPayload":{"position":{"x":31359.7059535975,"y":31214.620571594114},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"d6572b86-2aaa-4223-9e6a-0206d8890778","savedPayload":{"position":{"x":30954.425687026902,"y":31034.227478934878},"targetPosition":{"x":31341.868486193758,"y":31064.086948863045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"08da37fa-d3c5-49d9-8679-5b80bdff68dd","savedPayload":{"position":{"x":31341.868486193758,"y":31064.086948863045},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"680af7d1-9436-426c-b371-0c51ca813093","savedPayload":{"position":{"x":31729.810159666646,"y":31094.209708940154},"targetPosition":{"x":31876.728519165896,"y":30731.086536864696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"ab2764bc-e2c0-40d8-930f-bd3047f39596","savedPayload":{"position":{"x":31876.728519165896,"y":30731.086536864696},"targetPosition":{"x":32052.882822905718,"y":30384.748725123394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"29130ffe-4d84-411a-90d4-3ee5a6008c21","savedPayload":{"position":{"x":30573.967407399345,"y":30865.044767338284},"targetPosition":{"x":30943.50048121601,"y":30744.974402670025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e6a32c76-eda6-4982-8a3e-220c29218ba2","savedPayload":{"position":{"x":30943.50048121601,"y":30744.974402670025},"targetPosition":{"x":31313.21782034342,"y":30624.877802919116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b31b4647-b5e2-42e5-a1e9-fa0ffafeffc8","savedPayload":{"position":{"x":31313.21782034342,"y":30624.877802919116},"targetPosition":{"x":31682.6972231694,"y":30504.724136086927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"707c998d-da1c-45c1-84de-75ac9a0898b9","savedPayload":{"position":{"x":31682.6972231694,"y":30504.724136086927},"targetPosition":{"x":32052.882822905718,"y":30384.748725123394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"5840e471-a97e-4662-8938-5f1eb21091f0","savedPayload":{"position":{"x":31057.855020732903,"y":30959.629269467543},"targetPosition":{"x":31187.737955266624,"y":30593.52204463944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"447e0866-7372-4a42-b5b1-cd05e0efe728","savedPayload":{"position":{"x":31187.737955266624,"y":30593.52204463944},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"0a447725-e6ac-45ea-bb2c-5f3b968dfc06","savedPayload":{"position":{"x":30798.054534147086,"y":30804.816204348255},"targetPosition":{"x":31058.296133226202,"y":30516.178912692925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9540f515-0603-4cda-bbbd-84d7d104a8e1","savedPayload":{"position":{"x":31058.296133226202,"y":30516.178912692925},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"ad089114-2332-4b0b-b079-4070e1baa4c5","savedPayload":{"position":{"x":30616.980526490526,"y":30561.856583368746},"targetPosition":{"x":30967.726468712906,"y":30394.73857223334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7f2c2ddf-c19f-4f32-bda3-b4a3b7e7fb90","savedPayload":{"position":{"x":30967.726468712906,"y":30394.73857223334},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"48b35276-b129-486a-a517-ca3656ff9a53","savedPayload":{"position":{"x":30542.568712081516,"y":30268.072961601036},"targetPosition":{"x":30930.501586083756,"y":30247.795826218786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"179fce4e-890b-4a07-9289-57620f55da9e","savedPayload":{"position":{"x":30930.501586083756,"y":30247.795826218786},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Steep","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope === \"Steep\"","id":"45c706e6-6a7c-4b5a-b713-2b87ac0b6550","savedPayload":{"position":{"x":30586.303004546757,"y":29968.42600372806},"targetPosition":{"x":30952.34803604804,"y":30097.916134063787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ad485330-bf10-49e7-beaa-d57e0f8564b3","savedPayload":{"position":{"x":30952.34803604804,"y":30097.916134063787},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H NOT Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerSubChannel.slope != \"Side\"","id":"a360bbf1-b177-4298-80a8-06b6062dc779","savedPayload":{"position":{"x":30741.535335287797,"y":29707.74906833391},"targetPosition":{"x":31029.961639336052,"y":29967.557447555944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f8134986-b19a-4715-bb59-dd6bc7c774a8","savedPayload":{"position":{"x":31029.961639336052,"y":29967.557447555944},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"685b785a-4196-4b0a-84c1-0c7ed54e6162","savedPayload":{"position":{"x":30984.63248820747,"y":29526.15155137087},"targetPosition":{"x":31151.60230691471,"y":29876.76561310542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"747a6cc6-2122-4f62-ab40-bdcfbb8ae702","savedPayload":{"position":{"x":31151.60230691471,"y":29876.76561310542},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e9bc25c6-7eca-42cd-a2c2-dbc196d8929a","savedPayload":{"position":{"x":31318.795481358207,"y":30227.661807410743},"targetPosition":{"x":31706.775997487235,"y":30207.837568084273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"2968a063-b746-4430-944d-95d7db806279","savedPayload":{"position":{"x":32154.805525066622,"y":29905.836523760896},"targetPosition":{"x":31979.5,"y":30099.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5242fd04-b240-476a-89e2-c89ad6520c1b","savedPayload":{"position":{"x":31562.576354452234,"y":30077.0108733803},"targetPosition":{"x":31706.775997487235,"y":30207.837568084273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"88e734b7-e242-4b34-aeca-bb71905973ab","savedPayload":{"position":{"x":31706.775997487235,"y":30207.837568084273},"targetPosition":{"x":32052.882822905718,"y":30384.748725123394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"73a50844-7c64-4816-a04d-db5da604663b","savedPayload":{"position":{"x":32052.882822905718,"y":30384.748725123394},"targetPosition":{"x":32433.355355014213,"y":30261.473769260487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"64b77603-5226-4bb0-8b4f-30f6aeed68d9","savedPayload":{"position":{"x":30111.63955779835,"y":29829.545701782456},"targetPosition":{"x":30187.057117096716,"y":29547.845858548342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"c6c5ef8c-570d-4c27-80b3-521ff8c7dfd5","savedPayload":{"position":{"x":29060.669915290688,"y":29849.453861610516},"targetPosition":{"x":29342.200079118393,"y":29774.177461183208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"64166d63-e0f3-4271-b427-ea524d9d30a9","savedPayload":{"position":{"x":29342.200079118393,"y":29774.177461183208},"targetPosition":{"x":29623.921417779344,"y":29698.795938007857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9886efaf-3e04-48ed-8e2d-24efce78bcb1","savedPayload":{"position":{"x":29623.921417779344,"y":29698.795938007857},"targetPosition":{"x":29905.533851606528,"y":29623.3668189887},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"4787a1ba-b078-454d-9fa1-2742ae00ff26","savedPayload":{"position":{"x":29905.533851606528,"y":29623.3668189887},"targetPosition":{"x":30187.057117096716,"y":29547.845858548342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"d6880769-cf36-45b9-80ab-109068583690","savedPayload":{"position":{"x":30187.057117096716,"y":29547.845858548342},"targetPosition":{"x":30392.89365093651,"y":29341.779111862103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b2c096dd-56af-48cd-9013-3005c6dbb9c9","savedPayload":{"position":{"x":30392.89365093651,"y":29341.779111862103},"targetPosition":{"x":30598.40999046724,"y":29135.918860965496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"385a3d80-aaaa-429a-9635-20a5f56982bb","savedPayload":{"position":{"x":29796.35835555227,"y":29409.162670086862},"targetPosition":{"x":30023.09432844091,"y":29226.049390760072},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"4a116f7c-9835-46f9-a487-f3314b07fc27","savedPayload":{"position":{"x":28902.861148437896,"y":29107.54072997879},"targetPosition":{"x":29190.768185411805,"y":29062.21639661277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"31330f42-a7cd-4588-b037-0fb1f4012ebe","savedPayload":{"position":{"x":29190.768185411805,"y":29062.21639661277},"targetPosition":{"x":29478.85821017733,"y":29016.87886688429},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"e6f479d2-001f-4815-81fb-0104760a2131","savedPayload":{"position":{"x":29111.88702210781,"y":28563.579783555895},"targetPosition":{"x":29295.311079015475,"y":28790.15140430324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7da4d156-7295-46ca-84ef-b1b73b22ef68","savedPayload":{"position":{"x":29295.311079015475,"y":28790.15140430324},"targetPosition":{"x":29478.85821017733,"y":29016.87886688429},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8d74abf5-702e-4ff1-b555-1127ecdcc777","savedPayload":{"position":{"x":29478.85821017733,"y":29016.87886688429},"targetPosition":{"x":29750.977246609775,"y":29121.4307820616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"8f143346-1514-49e9-af84-0198743e268b","savedPayload":{"position":{"x":29750.977246609775,"y":29121.4307820616},"targetPosition":{"x":30023.09432844091,"y":29226.049390760072},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"c068b8fa-cf10-400c-8b35-40ee201f079d","savedPayload":{"position":{"x":30023.09432844091,"y":29226.049390760072},"targetPosition":{"x":30310.901554337408,"y":29180.93088235573},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3f5fcc98-1fb5-4de2-8850-17dcc4decfd6","savedPayload":{"position":{"x":30310.901554337408,"y":29180.93088235573},"targetPosition":{"x":30598.40999046724,"y":29135.918860965496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"4fefaca7-9699-4d62-b9f2-e3f5edd1fbcf","savedPayload":{"position":{"x":30079.49724709394,"y":28870.270508476067},"targetPosition":{"x":30339.023460706743,"y":29003.074060938226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2e5f14fd-5232-41bc-b038-e069f5410cdb","savedPayload":{"position":{"x":30339.023460706743,"y":29003.074060938226},"targetPosition":{"x":30598.40999046724,"y":29135.918860965496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"4662a32b-d9af-474f-8c91-51b290ac985d","savedPayload":{"position":{"x":30334.376337737165,"y":28615.96359780366},"targetPosition":{"x":30466.495623202332,"y":28875.921911960835},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b20df87d-b9e0-4eef-86dc-1a12efdc4c68","savedPayload":{"position":{"x":30466.495623202332,"y":28875.921911960835},"targetPosition":{"x":30598.40999046724,"y":29135.918860965496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f8cd9672-6874-43aa-83fc-fe6431796152","savedPayload":{"position":{"x":30598.40999046724,"y":29135.918860965496},"targetPosition":{"x":31748.504152987472,"y":29318.386237653525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"3f1d66d7-b522-4dca-98a6-f876ee31f323","savedPayload":{"position":{"x":31577.296726741315,"y":29082.332722543688},"targetPosition":{"x":31748.504152987472,"y":29318.386237653525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"20468ec8-2523-47b4-b3b0-ac41bb89887a","savedPayload":{"position":{"x":32355.10084655184,"y":29226.12957454463},"targetPosition":{"x":32049.5,"y":29177.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d934edd3-f12a-4343-aef8-27f2531ec7e4","savedPayload":{"position":{"x":31794.09366947838,"y":29030.01992901516},"targetPosition":{"x":31748.504152987472,"y":29318.386237653525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cbae35a1-6426-4cde-a74e-6e3c8f1ef488","savedPayload":{"position":{"x":31748.504152987472,"y":29318.386237653525},"targetPosition":{"x":32433.355355014213,"y":30261.473769260487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Custom","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"e9425ea8-46fc-4bbd-96af-107b45fcde20","savedPayload":{"position":{"x":32787.40037538293,"y":28748.9879485708},"targetPosition":{"x":32746.82006427679,"y":29135.63873563346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"787093b5-b60f-4002-ae4e-7dcf26bc651c","savedPayload":{"position":{"x":32746.82006427679,"y":29135.63873563346},"targetPosition":{"x":32702.26410829101,"y":29560.101810710996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a1a3ca90-96ad-4bc3-84f0-0ead961f4ab3","savedPayload":{"position":{"x":32608.85593964742,"y":29552.080114880126},"targetPosition":{"x":32669.459407712402,"y":29936.52520297799},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"af90c747-4790-43c5-afe1-37a605571cae","savedPayload":{"position":{"x":33248.28983387989,"y":29259.76512258894},"targetPosition":{"x":33405.78863403118,"y":29615.251251332513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"64b16855-36d6-49b4-afde-9bc43b6bdd53","savedPayload":{"position":{"x":30958.49273226702,"y":35978.357887355276},"targetPosition":{"x":30812.25259285251,"y":35666.60776174702},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a06e989b-e442-43e3-b915-7aa76348e064","savedPayload":{"position":{"x":30812.25259285251,"y":35666.60776174702},"targetPosition":{"x":30670.108349528266,"y":35347.746187721605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ac15c2d4-9d65-464a-b3e6-2d28edca7308","savedPayload":{"position":{"x":30670.108349528266,"y":35347.746187721605},"targetPosition":{"x":30527.306437447696,"y":35024.57844606656},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"c81de819-5717-459a-9b89-f046c6768803","savedPayload":{"position":{"x":33711.17883883612,"y":29379.644809738806},"targetPosition":{"x":33405.78863403118,"y":29615.251251332513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bff4cb02-f3ad-4c61-9f94-cc3e2b43121c","savedPayload":{"position":{"x":34495.96331431318,"y":30406.151173773185},"targetPosition":{"x":34109.22405666117,"y":30365.45769696535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a9f77d3c-1868-4535-8117-e56d388ba5ad","savedPayload":{"position":{"x":34109.22405666117,"y":30365.45769696535},"targetPosition":{"x":33722.68793079328,"y":30324.700735716688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"42345fb4-0626-4b42-90c1-bb9f214e17d4","savedPayload":{"position":{"x":34352.02451001019,"y":30781.553036646546},"targetPosition":{"x":34037.23547026468,"y":30553.306359700626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a4bfbfb1-543e-4db0-9f39-dd6631e660eb","savedPayload":{"position":{"x":34037.23547026468,"y":30553.306359700626},"targetPosition":{"x":33722.68793079328,"y":30324.700735716688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"67342cd6-6678-401c-94e1-e0b0eda2263e","savedPayload":{"position":{"x":34039.73033660556,"y":31034.651369948344},"targetPosition":{"x":33881.030676784874,"y":30679.892072710652},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6fcc3279-0e65-424f-81b5-0ed032a461ca","savedPayload":{"position":{"x":33881.030676784874,"y":30679.892072710652},"targetPosition":{"x":33722.68793079328,"y":30324.700735716688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"47ca70bc-782c-445f-834e-921f0840eb7e","savedPayload":{"position":{"x":33643.72639272173,"y":31097.640303634198},"targetPosition":{"x":33682.86854442032,"y":30711.32469247557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"13eaacfa-d129-401a-8648-93d7954f94ac","savedPayload":{"position":{"x":33682.86854442032,"y":30711.32469247557},"targetPosition":{"x":33722.68793079328,"y":30324.700735716688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"6674b07b-d9ed-4a96-88b2-6743cd6e0852","savedPayload":{"position":{"x":33276.322508362435,"y":30929.607895929035},"targetPosition":{"x":33495.33006605626,"y":30639.147260588717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9163a9de-74b0-42f7-8ee0-85b93dee00fc","savedPayload":{"position":{"x":33495.33006605626,"y":30639.147260588717},"targetPosition":{"x":33722.68793079328,"y":30324.700735716688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"46f92b3d-10dd-484d-895b-c0d547424c3a","savedPayload":{"position":{"x":33722.68793079328,"y":30324.700735716688},"targetPosition":{"x":33564.219043595695,"y":29969.898477587783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"571d2fea-5e0b-49f3-877a-5b9b41516bfe","savedPayload":{"position":{"x":33564.219043595695,"y":29969.898477587783},"targetPosition":{"x":33405.78863403118,"y":29615.251251332513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"5639cfff-e0f1-417b-8034-adb661ded0cd"}}}],"announcements":[],"id":"75e54a0b-1af9-49d2-ab9b-461d72a731fe","savedPayload":{"position":{"x":33405.78863403118,"y":29615.251251332513},"targetPosition":{"x":33016.39430671254,"y":29788.88391817735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"3f9df9ef-2267-4a33-b2b8-fddce1f7f4d7","savedPayload":{"position":{"x":33911.744860763334,"y":29112.95246822761},"targetPosition":{"x":33773.051073781535,"y":29476.27272549899},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bb9431b0-04e2-49ad-8a1e-8336a5a90ba6","savedPayload":{"position":{"x":34416.95322326507,"y":28296.16406245135},"targetPosition":{"x":34426.305881153865,"y":28684.915659615526},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fff74a7d-6205-4d97-b32a-c31c2879e228","savedPayload":{"position":{"x":34426.305881153865,"y":28684.915659615526},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"c2308750-4fa3-45bc-8ce3-b834db3e5a75","savedPayload":{"position":{"x":34715.444342528746,"y":28347.499556006016},"targetPosition":{"x":34575.68890177326,"y":28710.585139863535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"37f1894e-e911-46df-b97d-92ad8716bbb7","savedPayload":{"position":{"x":34575.68890177326,"y":28710.585139863535},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"c815953e-7501-4c0f-bf44-b2054f27204b","savedPayload":{"position":{"x":34972.058349418905,"y":28509.362884350343},"targetPosition":{"x":34704.06500386377,"y":28791.562960245974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0abbc8b9-69b3-4051-a077-8cae2eb456e5","savedPayload":{"position":{"x":34704.06500386377,"y":28791.562960245974},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"b1db73ae-ddb7-452c-bc67-aebce55c0071","savedPayload":{"position":{"x":35147.141150108626,"y":28756.980442477477},"targetPosition":{"x":34791.679182237465,"y":28915.415108629633},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1c0d7a06-b7f3-443d-9088-177134b13b83","savedPayload":{"position":{"x":34791.679182237465,"y":28915.415108629633},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"12d82500-383b-445d-995d-7b589c84635a","savedPayload":{"position":{"x":35214.19946698019,"y":29052.728441879615},"targetPosition":{"x":34825.204368153114,"y":29063.356815214163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ea51ecbf-d848-46a7-a88d-82ec88f8480a","savedPayload":{"position":{"x":34825.204368153114,"y":29063.356815214163},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14 > chart.at01hs.base7EMA.previous.previous.ema21 - chart.at01hs.base7EMA.previous.previous.ema14","id":"c48ea949-7b3e-4c17-bff5-19d6e459d626","savedPayload":{"position":{"x":35162.832804467325,"y":29350.654711690964},"targetPosition":{"x":34799.55776558362,"y":29212.503217535977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7d987b62-66de-4d68-be64-91c124266174","savedPayload":{"position":{"x":34799.55776558362,"y":29212.503217535977},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2 previous ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7 > chart.at01hs.base7EMA.previous.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.previous.ema7","id":"6e81b8d8-148d-4a5a-8307-40c1dbccabb2","savedPayload":{"position":{"x":35001.572988601365,"y":29607.454418412428},"targetPosition":{"x":34718.71420293217,"y":29340.778111080235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"229f0b94-9e9a-45b5-87fe-8bf1427c1cb6","savedPayload":{"position":{"x":34718.71420293217,"y":29340.778111080235},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0e734dca-7ea8-4eaf-9379-48ccf8dff51e","savedPayload":{"position":{"x":34435.516882385054,"y":29074.048555754413},"targetPosition":{"x":34080.098739883826,"y":29232.794420662998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"43f6f964-e44c-4b9e-9c6e-f5f10afb891d","savedPayload":{"position":{"x":34080.098739883826,"y":29232.794420662998},"targetPosition":{"x":33773.051073781535,"y":29476.27272549899},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"5639cfff-e0f1-417b-8034-adb661ded0cd"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"427ca47c-7233-4e51-8070-0dd82e493d47","savedPayload":{"position":{"x":35209.14142961346,"y":29440.444294230565},"targetPosition":{"x":34854.12791187051,"y":29597.78782464058},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8b99cc7a-c8fd-4e57-9f24-c2576f6bab18","savedPayload":{"position":{"x":34854.12791187051,"y":29597.78782464058},"targetPosition":{"x":34498.6289280011,"y":29755.41052699473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"2217cfc4-1cdd-43b0-86ef-9957ff84c8f1","savedPayload":{"position":{"x":35224.438994290365,"y":30033.767832692964},"targetPosition":{"x":34861.984945374395,"y":29894.603901010996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6918bca4-9fcd-44a4-9ad5-d4718158d064","savedPayload":{"position":{"x":34861.984945374395,"y":29894.603901010996},"targetPosition":{"x":34498.6289280011,"y":29755.41052699473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2 prev.ema7 div 2 prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7 > chart.at01hs.base7EMA.previous.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.previous.ema7","id":"9afbcaee-9dcd-4b18-89a9-9124eea8c900","savedPayload":{"position":{"x":34815.39456925559,"y":30464.907508235723},"targetPosition":{"x":34657.375468352,"y":30110.167880558845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"91b01ae0-97af-48c7-adf3-1bb767e27f36","savedPayload":{"position":{"x":34657.375468352,"y":30110.167880558845},"targetPosition":{"x":34498.6289280011,"y":29755.41052699473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8f15adc5-8719-4f96-8560-127f7eaa0a97","savedPayload":{"position":{"x":34498.6289280011,"y":29755.41052699473},"targetPosition":{"x":34135.87591926167,"y":29615.995190587262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"b15ba6fb-7ae0-4c8f-b8ac-b76c5945dcb5","savedPayload":{"position":{"x":34135.87591926167,"y":29615.995190587262},"targetPosition":{"x":33773.051073781535,"y":29476.27272549899},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"75e54a0b-1af9-49d2-ab9b-461d72a731fe"}}}],"announcements":[],"id":"eb74a012-ed21-4ce6-8f2e-8f2ebaea9188","savedPayload":{"position":{"x":33773.051073781535,"y":29476.27272549899},"targetPosition":{"x":33405.78863403118,"y":29615.251251332513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"25d46d39-ae12-4dd8-a136-48f75b7236c1","savedPayload":{"position":{"x":34179.5922378825,"y":28952.68449982191},"targetPosition":{"x":34139.99028944556,"y":29339.458559691633},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"f4da55cf-3df3-40ed-8d05-a914a6697fae","savedPayload":{"position":{"x":34515.96881662524,"y":38207.07611964296},"targetPosition":{"x":34349.57172704476,"y":37833.12986427668},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2c64d2c0-288c-45ae-a359-5d3f44bb4c5e","savedPayload":{"position":{"x":34349.57172704476,"y":37833.12986427668},"targetPosition":{"x":34183.06978383427,"y":37458.97412745549},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"b4571357-f64e-432a-8d80-37f1dfd89e82","savedPayload":{"position":{"x":33702.17029723322,"y":38121.54097659026},"targetPosition":{"x":33942.5907257653,"y":37790.336306506026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96c5c204-c93f-494c-8691-30566d39db06","savedPayload":{"position":{"x":33942.5907257653,"y":37790.336306506026},"targetPosition":{"x":34183.06978383427,"y":37458.97412745549},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2849e6ed-91c0-4e63-a4a3-2ba4d4517008","savedPayload":{"position":{"x":34183.06978383427,"y":37458.97412745549},"targetPosition":{"x":34225.61526472877,"y":37051.44216832517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"9c2aa1f4-5ba6-4dc8-9f99-db133558f0e8","savedPayload":{"position":{"x":34526.32051478548,"y":29380.144072111412},"targetPosition":{"x":34139.99028944556,"y":29339.458559691633},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"75e54a0b-1af9-49d2-ab9b-461d72a731fe"}}}],"announcements":[],"id":"5639cfff-e0f1-417b-8034-adb661ded0cd","savedPayload":{"position":{"x":34139.99028944556,"y":29339.458559691633},"targetPosition":{"x":33773.051073781535,"y":29476.27272549899},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6cb50b3d-6bf3-422f-8d2a-d0103ea02607","savedPayload":{"position":{"x":32898.51510152386,"y":29621.695973589216},"targetPosition":{"x":32669.459407712402,"y":29936.52520297799},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"bf593624-8f03-46b0-8bcd-377c7620f1a3","savedPayload":{"position":{"x":33049.04809078839,"y":30508.634409852893},"targetPosition":{"x":32986.5,"y":30110.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8debc3c5-6540-43c3-8fa3-a0ae97e288af","savedPayload":{"position":{"x":33053.853780132136,"y":29875.553003142984},"targetPosition":{"x":32669.459407712402,"y":29936.52520297799},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"42765ad5-284e-4966-a367-76593b53bcf7","savedPayload":{"position":{"x":32669.459407712402,"y":29936.52520297799},"targetPosition":{"x":32433.355355014213,"y":30261.473769260487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"6880a8b7-7259-4fb2-abd2-b9c37a735b0e","savedPayload":{"position":{"x":33195.15644454074,"y":30303.891451120202},"targetPosition":{"x":32814.28960967772,"y":30385.03530095667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"975fec0b-d0f0-40c1-baab-1efccd8ea879","savedPayload":{"position":{"x":33080.399305638624,"y":30985.805189286868},"targetPosition":{"x":33299.65194935859,"y":30647.396421048194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8c3e1433-a8fe-4b1e-8b6a-e1b8fbbf88a3","savedPayload":{"position":{"x":33141.08859610247,"y":30597.192002896467},"targetPosition":{"x":32814.28960967772,"y":30385.03530095667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c64f618d-4336-4ff2-9dcd-3293acb4cd2a","savedPayload":{"position":{"x":32814.28960967772,"y":30385.03530095667},"targetPosition":{"x":32433.355355014213,"y":30261.473769260487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2faf1715-7b6a-4188-ac5e-c67502e18fcc","savedPayload":{"position":{"x":32433.355355014213,"y":30261.473769260487},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S5 - 4H Up","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"1bb17736-cc12-4b60-9807-632aeb2d3636","savedPayload":{"position":{"x":31803.637082753048,"y":31399.359971188216},"targetPosition":{"x":31818.655546656042,"y":30978.35806096688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2e2487a-d30a-4d70-9d70-f188409059a9","savedPayload":{"position":{"x":31818.655546656042,"y":30978.35806096688},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"21123f61-dc48-4915-b609-c3eab53b8fec","savedPayload":{"position":{"x":31525.850017503104,"y":31317.667269780963},"targetPosition":{"x":31684.17449023727,"y":30926.586714463938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"daefe7ea-f409-406c-891a-28c3001ab5c0","savedPayload":{"position":{"x":31684.17449023727,"y":30926.586714463938},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"6897670f-f952-4d83-8a95-bc82ad1d07fa","savedPayload":{"position":{"x":31267.086794496026,"y":31183.122939986682},"targetPosition":{"x":31549.575445554154,"y":30869.705854556367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b6890e81-16b4-4cd2-b1ed-0c02d51dae4b","savedPayload":{"position":{"x":31549.575445554154,"y":30869.705854556367},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"c02c6beb-0de4-4a7c-a768-7332501d45b1","savedPayload":{"position":{"x":31087.19829214889,"y":30952.77737784711},"targetPosition":{"x":31459.640019499606,"y":30754.84508175051},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3e59df4d-42a2-41e9-93ff-6d85b65d9bc2","savedPayload":{"position":{"x":31459.640019499606,"y":30754.84508175051},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"02H Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\"","id":"3257e894-69d2-4f5f-93eb-13ba4d62c5e0","savedPayload":{"position":{"x":30996.834259943073,"y":30674.322016396036},"targetPosition":{"x":31414.44419194971,"y":30615.639370576555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bd3ee521-2846-411f-a740-de3480e90421","savedPayload":{"position":{"x":31414.44419194971,"y":30615.639370576555},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerSubChannel.slope === \"Gentle\"","id":"3cef9be4-e642-4af5-b845-d63592ea22e9","savedPayload":{"position":{"x":31007.075520478138,"y":30382.25756547327},"targetPosition":{"x":31419.584840032832,"y":30469.569394286285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a23ee119-f4f5-4fe6-9013-27055d634051","savedPayload":{"position":{"x":31419.584840032832,"y":30469.569394286285},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H NOT Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerSubChannel.slope != \"Side\"","id":"7fa69f52-edfe-42b6-bda3-40e9ad7af808","savedPayload":{"position":{"x":31116.712625722495,"y":30110.76594490264},"targetPosition":{"x":31474.4688041132,"y":30333.762234397087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"50495c21-1a7b-4c38-9c6c-4cec9fb5a0f1","savedPayload":{"position":{"x":31474.4688041132,"y":30333.762234397087},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"0770176a-5af8-479d-8a7e-7bafaf04cb05","savedPayload":{"position":{"x":31312.539242984873,"y":29893.174081317917},"targetPosition":{"x":31572.61684784771,"y":30224.87918255947},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0538f837-fbba-4e7c-b1db-8a574559d584","savedPayload":{"position":{"x":31572.61684784771,"y":30224.87918255947},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b2dd0458-53e0-4d8c-8f46-bb45946cdb65","savedPayload":{"position":{"x":31832.446754081677,"y":30557.303404222446},"targetPosition":{"x":32254.205048920863,"y":30381.34366988766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"642f8610-4b1d-4178-8bae-12abf00b7812","savedPayload":{"position":{"x":32254.205048920863,"y":30381.34366988766},"targetPosition":{"x":32655.355644345367,"y":30250.83828378207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"9d2e77ef-dc06-4357-8739-44065c83f8cb","savedPayload":{"position":{"x":31152.477915800475,"y":29485.148637629547},"targetPosition":{"x":31528.139844398356,"y":29676.425811184978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"65d4f331-e81f-44d4-834b-9e786d9d2a36","savedPayload":{"position":{"x":31528.139844398356,"y":29676.425811184978},"targetPosition":{"x":31903.821467182715,"y":29867.826371430037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9753c7d0-7d95-4464-8331-a7d4bac71a9b","savedPayload":{"position":{"x":31903.821467182715,"y":29867.826371430037},"targetPosition":{"x":32279.619316977198,"y":30058.961696217935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"99db5a57-b7b5-44d2-b046-c5784a51bffc","savedPayload":{"position":{"x":32279.619316977198,"y":30058.961696217935},"targetPosition":{"x":32655.355644345367,"y":30250.83828378207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"190f6e85-1f6e-4088-a156-a82e3b0e72cb","savedPayload":{"position":{"x":31467.337122690104,"y":29960.14749786813},"targetPosition":{"x":31839.670467427597,"y":29762.856324091823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"07da9742-43f4-4bfb-8720-3272474740d1","savedPayload":{"position":{"x":31839.670467427597,"y":29762.856324091823},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"56b61beb-3df4-4577-b39e-90c3c3fc7075","savedPayload":{"position":{"x":31377.480759506314,"y":29682.883283317376},"targetPosition":{"x":31795.183056971782,"y":29624.795860058675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"34460859-dffb-4fba-93b2-fe143c3a25de","savedPayload":{"position":{"x":31795.183056971782,"y":29624.795860058675},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"16a3f794-7209-437c-a272-c1f945374af2","savedPayload":{"position":{"x":31388.098788101044,"y":29391.140811100908},"targetPosition":{"x":31800.391690375553,"y":29478.963861724398},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"28a397a8-b5f1-44fd-afe2-3e366e7e938d","savedPayload":{"position":{"x":31800.391690375553,"y":29478.963861724398},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"e6fa32e6-37a4-40ae-a68d-8d046eed13b6","savedPayload":{"position":{"x":31497.861935999175,"y":29119.985100224807},"targetPosition":{"x":31855.294923134716,"y":29343.32643845144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ba113199-ed6c-4b10-8312-4d938c7e8c39","savedPayload":{"position":{"x":31855.294923134716,"y":29343.32643845144},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"02H Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\"","id":"b76599cd-7312-4aac-9dee-8e21dac4b1c6","savedPayload":{"position":{"x":31693.887694668956,"y":28902.656474209638},"targetPosition":{"x":31953.340689905217,"y":29234.595917062725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d274dddf-c518-4602-9e20-001b6b348fde","savedPayload":{"position":{"x":31953.340689905217,"y":29234.595917062725},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerSubChannel.slope === \"Gentle\"","id":"ef31d5cf-d980-494c-a6af-1970b0e5e172","savedPayload":{"position":{"x":31952.609151253357,"y":28765.393109525332},"targetPosition":{"x":32082.723348863343,"y":29165.905849972234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1e6adf92-f58a-4ebd-a125-f9b61d51ec59","savedPayload":{"position":{"x":32082.723348863343,"y":29165.905849972234},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H NOT Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerSubChannel.slope != \"Side\"","id":"d6005505-7c26-4f5c-b94e-3c2a9e812f5c","savedPayload":{"position":{"x":32242.21296721509,"y":28724.70054371358},"targetPosition":{"x":32227.550058824927,"y":29145.566309120117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dac090bd-5be4-4193-b40b-3ce250f62d91","savedPayload":{"position":{"x":32227.550058824927,"y":29145.566309120117},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"6198450f-adf9-4208-a125-e47b101f9b41","savedPayload":{"position":{"x":32528.89266902186,"y":28785.576656817986},"targetPosition":{"x":32370.9875785451,"y":29176.112998723962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b1f55195-9a70-49fa-8025-51cdf0acdbeb","savedPayload":{"position":{"x":32370.9875785451,"y":29176.112998723962},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"196d7981-9230-4a94-b8c2-39ff25a22bb9","savedPayload":{"position":{"x":32212.846706910997,"y":29567.026440768434},"targetPosition":{"x":32525.82609477754,"y":29849.549374255723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"1457056f-1f84-46e0-a144-f2113df411f7","savedPayload":{"position":{"x":32948.80552506662,"y":29504.836523760896},"targetPosition":{"x":32773.5,"y":29698.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4e4c322c-4604-431c-912c-6227d05d2e0b","savedPayload":{"position":{"x":32515.672915242736,"y":29638.436349027324},"targetPosition":{"x":32525.82609477754,"y":29849.549374255723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1c30f570-4f8e-47cf-95c1-dd1f4244a77a","savedPayload":{"position":{"x":32525.82609477754,"y":29849.549374255723},"targetPosition":{"x":32655.355644345367,"y":30250.83828378207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"999bf574-a88b-467f-a107-7e0770e6bd53","savedPayload":{"position":{"x":32655.355644345367,"y":30250.83828378207},"targetPosition":{"x":33029.75192573155,"y":30442.29103770232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"8b0471ee-2c41-4195-99fc-4025d65a390e","savedPayload":{"position":{"x":31579.929199715712,"y":28329.796759479224},"targetPosition":{"x":31853.910414355745,"y":28171.703838281486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"a4ad262a-5f92-497f-9411-56c338d9292b","savedPayload":{"position":{"x":30754.122545444774,"y":27540.973438886354},"targetPosition":{"x":31028.003443564146,"y":27698.876056028217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f953a499-ba93-476f-8af5-61e25f1f9657","savedPayload":{"position":{"x":31031.316375796425,"y":27697.923160732968},"targetPosition":{"x":31305.440043072456,"y":27855.852868035698},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"abf13b1e-7ce1-41d1-87b8-c2e1f25c2a6d","savedPayload":{"position":{"x":31305.45786506844,"y":27855.824594382415},"targetPosition":{"x":31579.688155962634,"y":28013.767656946442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"2a270aac-6cd2-4b25-b1a4-ff18d1ccaa4b","savedPayload":{"position":{"x":31579.700107722136,"y":28013.74550246922},"targetPosition":{"x":31853.910414355745,"y":28171.703838281486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"72aea6dd-85da-4291-b993-17b6ab9827b1","savedPayload":{"position":{"x":31853.910414355745,"y":28171.703838281486},"targetPosition":{"x":32170.01608559407,"y":28171.536416079904},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3a958f65-ab12-4404-8c2d-14a1b1d80c84","savedPayload":{"position":{"x":32170.01608559407,"y":28171.536416079904},"targetPosition":{"x":32485.715088985602,"y":28171.15713012959},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"407b0f9f-573e-4def-b3d1-a9eeabde83f7","savedPayload":{"position":{"x":31659.81139987375,"y":27766.388292401327},"targetPosition":{"x":31974.524291845133,"y":27799.41763208544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"881fe7f0-1527-499a-80f5-89bcce726dac","savedPayload":{"position":{"x":31879.089046140864,"y":26402.837294233297},"targetPosition":{"x":32077.218214079843,"y":26647.230374764797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b18879da-9fa8-4926-aa76-ad8b401c37d1","savedPayload":{"position":{"x":31457.151266858393,"y":27035.4549659169},"targetPosition":{"x":31714.090630726034,"y":27222.201315049584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"c5713c55-47b3-42a8-ab19-08cf2d749396","savedPayload":{"position":{"x":32505.5752595207,"y":26300.82685022934},"targetPosition":{"x":32391.551298605093,"y":26598.486857980544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dba5f292-de5e-490c-ad0f-350ba7a79ba6","savedPayload":{"position":{"x":31747.847047714342,"y":26907.48381747061},"targetPosition":{"x":31714.090630726034,"y":27222.201315049584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6feb04a3-4e72-4cb3-8e80-d924677fd866","savedPayload":{"position":{"x":31712.19231193666,"y":27225.216897539707},"targetPosition":{"x":31841.69595034157,"y":27513.601035817344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"21268798-061f-4dbd-b3ae-62ed06497e7b","savedPayload":{"position":{"x":31846.13723379902,"y":27510.332013678686},"targetPosition":{"x":31974.524291845133,"y":27799.41763208544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"331d8a1e-2395-419d-b119-6f81a8b29085","savedPayload":{"position":{"x":31974.551736945174,"y":27799.396454380087},"targetPosition":{"x":32229.944270623495,"y":27985.490598327917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"74cbbf23-af31-4a53-9e2d-1d2be04f1f00","savedPayload":{"position":{"x":32229.970512281805,"y":27985.475088728974},"targetPosition":{"x":32485.715088985602,"y":28171.15713012959},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"532a9467-6b89-4ac8-b4e0-d5015bf2dd36","savedPayload":{"position":{"x":32291.8645065362,"y":27569.273658194026},"targetPosition":{"x":32388.85888378356,"y":27870.231835006754},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"46530eb5-5bbf-4e1a-b635-ed22afe99dfb","savedPayload":{"position":{"x":32388.863816650617,"y":27870.223459811998},"targetPosition":{"x":32485.715088985602,"y":28171.15713012959},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"9f1b0754-b1f7-4e2b-9962-5555b951e026","savedPayload":{"position":{"x":32681.756599468277,"y":27569.863267139586},"targetPosition":{"x":32583.851836528476,"y":27870.62263043729},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fc1eda7f-ae0a-46cb-89cf-8ec3bb01ad94","savedPayload":{"position":{"x":32583.85638300542,"y":27870.61332054747},"targetPosition":{"x":32485.715088985602,"y":28171.15713012959},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6da69684-0123-401b-94e8-a3ca551665d1","savedPayload":{"position":{"x":32485.956593586066,"y":28171.143151808643},"targetPosition":{"x":33227.79337521052,"y":29193.269686449254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"599dc297-9684-46c2-a061-e5f0fe08b0cc","savedPayload":{"position":{"x":33277.42298551964,"y":28880.820143413617},"targetPosition":{"x":33227.79337521052,"y":29193.269686449254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"5de18ec0-2f00-4c77-92b9-955a5923d698","savedPayload":{"position":{"x":33909.10084655184,"y":29201.12957454463},"targetPosition":{"x":33603.5,"y":29152.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"82532147-3a82-4ae5-8758-8ac080add9c7","savedPayload":{"position":{"x":33483.99096742361,"y":29007.16578768379},"targetPosition":{"x":33227.79337521052,"y":29193.269686449254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2a5f2b55-f09e-4be9-92d8-3527a134dac3","savedPayload":{"position":{"x":33227.79337521052,"y":29193.269686449254},"targetPosition":{"x":33029.75192573155,"y":30442.29103770232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Controlled Run","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"928d3add-1690-4dfd-b2f8-455668fc742c","savedPayload":{"position":{"x":34446.54072965572,"y":29566.263118815612},"targetPosition":{"x":34118.74229678125,"y":29831.655797585274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"51924a8f-f6b0-41f0-9fb5-8cd97d8d6531","savedPayload":{"position":{"x":34118.74229678125,"y":29831.655797585274},"targetPosition":{"x":33774.18998850245,"y":30110.61435184037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6ba3063d-c882-44d2-a7c4-9915a220b17e","savedPayload":{"position":{"x":33694.781614397805,"y":30034.89501850924},"targetPosition":{"x":33446.54561839851,"y":30376.4041629772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"f0ba9068-9fd8-46c1-89c6-c51c2127fad3","savedPayload":{"position":{"x":34405.03823312209,"y":30291.840263281058},"targetPosition":{"x":34253.55735010361,"y":30685.388405891084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"3d7e602e-ca81-4d0f-808c-0b6987a224d4","savedPayload":{"position":{"x":35787.30615527667,"y":35398.810989911646},"targetPosition":{"x":35627.67545695055,"y":35040.81781656664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3cf490f8-fb04-4a14-aab8-1215009b40bd","savedPayload":{"position":{"x":35627.67545695055,"y":35040.81781656664},"targetPosition":{"x":35467.72999550737,"y":34682.783353016006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"399b9981-c283-4140-8600-904bd8fae636","savedPayload":{"position":{"x":35467.72999550737,"y":34682.783353016006},"targetPosition":{"x":35307.55009149936,"y":34324.66524598421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"19a0d710-315f-43b8-b1f0-8aca0f21d63e","savedPayload":{"position":{"x":35307.55009149936,"y":34324.66524598421},"targetPosition":{"x":34253.55735010361,"y":30685.388405891084},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"6407cb18-e862-47c7-8c3d-2ac857597595","savedPayload":{"position":{"x":34530.30464769007,"y":32086.76032216619},"targetPosition":{"x":34241.56519862483,"y":31779.736945370492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3218784f-7ac6-4f71-89ca-c13de6fb1e08","savedPayload":{"position":{"x":34241.56519862483,"y":31779.736945370492},"targetPosition":{"x":33952.40791518047,"y":31472.687567332738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"31096ee3-5cb2-437c-911c-b8dac600eeda","savedPayload":{"position":{"x":34206.86770563993,"y":32276.766339734662},"targetPosition":{"x":34079.78645287453,"y":31874.887902369603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4a59f893-ce98-40a8-a456-14758c0e3b72","savedPayload":{"position":{"x":34079.78645287453,"y":31874.887902369603},"targetPosition":{"x":33952.40791518047,"y":31472.687567332738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"39e213d0-6871-4fcc-8ba7-6485b15b8010","savedPayload":{"position":{"x":33833.90249584932,"y":32307.77576085133},"targetPosition":{"x":33893.183785079695,"y":31890.35694745995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a2c15f0e-3edb-4849-862a-dce24f143be6","savedPayload":{"position":{"x":33893.183785079695,"y":31890.35694745995},"targetPosition":{"x":33952.40791518047,"y":31472.687567332738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"5d4916ab-3a59-42cd-ad42-2c9be833bb36","savedPayload":{"position":{"x":33483.71175603528,"y":32173.510662283734},"targetPosition":{"x":33718.10598421068,"y":31823.189571328785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e90a9e18-c05e-4c34-8931-f934311d8be4","savedPayload":{"position":{"x":33718.10598421068,"y":31823.189571328785},"targetPosition":{"x":33952.40791518047,"y":31472.687567332738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"1578e195-a319-4748-8204-f90d816fc4ae","savedPayload":{"position":{"x":33226.90835172038,"y":31900.891944952567},"targetPosition":{"x":33589.60744328863,"y":31686.70649617647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b48541a5-46c2-4e7e-a072-07d94c1b2ac9","savedPayload":{"position":{"x":33589.60744328863,"y":31686.70649617647},"targetPosition":{"x":33952.40791518047,"y":31472.687567332738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Down && NOT Side","code":"chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Down\" && chart.at01hs.bollingerSubChannel.slope != \"Side\"","id":"fb1f280f-632e-4097-b5da-dfdbacd169c3","savedPayload":{"position":{"x":33113.8985015411,"y":31543.13031314437},"targetPosition":{"x":33533.18645691627,"y":31507.901950537547},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0000df02-7c31-423f-a377-ee7a54e745b1","savedPayload":{"position":{"x":33533.18645691627,"y":31507.901950537547},"targetPosition":{"x":33952.40791518047,"y":31472.687567332738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a9ea4174-771b-4b50-8376-05494437d912","savedPayload":{"position":{"x":33952.40791518047,"y":31472.687567332738},"targetPosition":{"x":34103.02164774582,"y":31078.959490898098},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"730610f1-2311-4486-8905-37c9c001d766","savedPayload":{"position":{"x":34103.02164774582,"y":31078.959490898098},"targetPosition":{"x":34253.55735010361,"y":30685.388405891084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"1a7c350c-eb3a-4d8a-af57-68aabda6fea7"}}}],"announcements":[],"id":"f631120e-4f0f-41f4-85b3-74778c8060c0","savedPayload":{"position":{"x":34253.55735010361,"y":30685.388405891084},"targetPosition":{"x":33839.85571089323,"y":30526.991004243064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"e0cee676-0034-4512-9ed3-b4f61df739bf","savedPayload":{"position":{"x":35032.298511827415,"y":30664.025220907624},"targetPosition":{"x":34647.207041214446,"y":30836.09669131313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"2cd48b45-e3f4-4a76-8bf7-19470c990e1e","savedPayload":{"position":{"x":36107.40410258614,"y":30517.225318510787},"targetPosition":{"x":35780.230573333596,"y":30782.31136999146},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"17193755-5b37-4ee7-82ca-a14db05dbd30","savedPayload":{"position":{"x":35780.230573333596,"y":30782.31136999146},"targetPosition":{"x":35452.761665177284,"y":31047.66467334929},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"b8cb24ca-a2ce-4ae6-b5d9-63471af0095f","savedPayload":{"position":{"x":36284.90515124963,"y":30915.913862933052},"targetPosition":{"x":35869.021951828036,"y":30981.751761376323},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4facbae1-8244-47d9-bf81-2ebf58477c34","savedPayload":{"position":{"x":35869.021951828036,"y":30981.751761376323},"targetPosition":{"x":35452.761665177284,"y":31047.66467334929},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"4e3f128a-a12a-444d-b706-c54a910da68b","savedPayload":{"position":{"x":36239.371881971114,"y":31349.282569362353},"targetPosition":{"x":35846.26069286043,"y":31198.494132839478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e2460f9b-c5ab-4502-9b39-38159b55534b","savedPayload":{"position":{"x":35846.26069286043,"y":31198.494132839478},"targetPosition":{"x":35452.761665177284,"y":31047.66467334929},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"2a370595-33f8-4cf8-af80-e7871edcf8fa","savedPayload":{"position":{"x":35983.1325692914,"y":31702.277925781378},"targetPosition":{"x":35718.094088328195,"y":31375.038293037353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"133e251e-2ac5-4ebd-8f4c-73eb8c8ba7e1","savedPayload":{"position":{"x":35718.094088328195,"y":31375.038293037353},"targetPosition":{"x":35452.761665177284,"y":31047.66467334929},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Down && NOT Side or Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Down\" && chart.at01hs.bollingerSubChannel.slope != \"Side\" && chart.at01hs.bollingerSubChannel.slope != \"Gentle\"","id":"55435ac8-859e-4665-842c-f6603923589e","savedPayload":{"position":{"x":35584.73289655696,"y":31879.94420607729},"targetPosition":{"x":35518.86240709847,"y":31463.838891768813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ee4dad2e-77dd-4f45-9847-c3c2e563d015","savedPayload":{"position":{"x":35518.86240709847,"y":31463.838891768813},"targetPosition":{"x":35452.761665177284,"y":31047.66467334929},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"42bd767a-7a9e-40dc-9973-ad6e2411e769","savedPayload":{"position":{"x":35452.761665177284,"y":31047.66467334929},"targetPosition":{"x":35058.85073610298,"y":30896.89534740672},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"f9f58805-ee92-40ac-be13-6d242a6a476f","savedPayload":{"position":{"x":35058.85073610298,"y":30896.89534740672},"targetPosition":{"x":34647.207041214446,"y":30836.09669131313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"1a7c350c-eb3a-4d8a-af57-68aabda6fea7"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","code":"chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"32c1fa99-99b6-4bdd-ad3d-fcb3858413fe","savedPayload":{"position":{"x":35776.79345269899,"y":31909.47813652903},"targetPosition":{"x":35383.44828063969,"y":31758.293786669023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8f146719-384b-4e16-a0b3-c7501eeca1dd","savedPayload":{"position":{"x":35383.44828063969,"y":31758.293786669023},"targetPosition":{"x":34989.99851802312,"y":31606.922286071378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"b1d2c06e-3c41-474c-b241-62639db26336","savedPayload":{"position":{"x":35332.887818885174,"y":32377.069703162415},"targetPosition":{"x":35161.53533828581,"y":31992.11486723846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"655cd860-35be-4db4-8786-758133ade2f8","savedPayload":{"position":{"x":35161.53533828581,"y":31992.11486723846},"targetPosition":{"x":34989.99851802312,"y":31606.922286071378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"7b14d5ba-d792-4d0e-9c33-aae6abc015dd","savedPayload":{"position":{"x":34688.90853441315,"y":32393.902044815673},"targetPosition":{"x":34839.54017120311,"y":32000.460775300373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"41486047-0d08-4227-8d03-3e844c75a3ea","savedPayload":{"position":{"x":34839.54017120311,"y":32000.460775300373},"targetPosition":{"x":34989.99851802312,"y":31606.922286071378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"78031caf-041a-4f69-aea1-f9666aef959d","savedPayload":{"position":{"x":34989.99851802312,"y":31606.922286071378},"targetPosition":{"x":34818.416667519436,"y":31221.49527777832},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"ad7504d5-49ec-4fed-bc74-44f5f398def7","savedPayload":{"position":{"x":34818.416667519436,"y":31221.49527777832},"targetPosition":{"x":34647.207041214446,"y":30836.09669131313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"f631120e-4f0f-41f4-85b3-74778c8060c0"}}}],"announcements":[],"id":"bee5a88b-489f-48ce-be58-4531f815462a","savedPayload":{"position":{"x":34647.207041214446,"y":30836.09669131313},"targetPosition":{"x":34253.55735010361,"y":30685.388405891084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.23 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.23} else {takeProfit}","id":"6e3648cc-0d59-428a-acc2-afcf2a6e86c4","savedPayload":{"position":{"x":35364.36754637443,"y":30743.79677885484},"targetPosition":{"x":35036.48540989503,"y":31009.357437908086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"d68720e4-049f-46b9-b412-f0378573a413","savedPayload":{"position":{"x":35025.93602050318,"y":36418.753466704875},"targetPosition":{"x":34780.354363777864,"y":36112.85268730106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"609ce0eb-a9ec-495a-9f99-cd5adeaa5824","savedPayload":{"position":{"x":34780.354363777864,"y":36112.85268730106},"targetPosition":{"x":34538.157968652435,"y":35811.39270619528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"49efa579-e07f-432e-ab03-458909afe80a","savedPayload":{"position":{"x":34453.75516050035,"y":36592.785713769365},"targetPosition":{"x":34495.98103573446,"y":36202.207555966874},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"70e024f2-8dc4-443b-b7d0-8d979bd7879a","savedPayload":{"position":{"x":34495.98103573446,"y":36202.207555966874},"targetPosition":{"x":34538.157968652435,"y":35811.39270619528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Up || Side, Gentle or Medium","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Up\" || chart.at01hs.bollingerSubChannel.slope === \"Side\" || chart.at01hs.bollingerSubChannel.slope === \"Gentle\" || chart.at01hs.bollingerSubChannel.slope === \"Medium\"","id":"199cc33c-0e13-4de9-910a-c9d356e9d0d6","savedPayload":{"position":{"x":33926.32049835032,"y":36306.55289460314},"targetPosition":{"x":34232.21759903413,"y":36059.063968740695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3621eed7-d3f5-4350-8e53-6eb76377b10a","savedPayload":{"position":{"x":34232.21759903413,"y":36059.063968740695},"targetPosition":{"x":34538.157968652435,"y":35811.39270619528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dede1ba7-70c6-417a-a54a-14177afbd413","savedPayload":{"position":{"x":34538.157968652435,"y":35811.39270619528},"targetPosition":{"x":34588.210715482724,"y":35403.96530795689},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"76a5126e-7d21-4160-b25a-08631b6d519a","savedPayload":{"position":{"x":35302.17787738192,"y":31337.322692776477},"targetPosition":{"x":35036.48540989503,"y":31009.357437908086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"f631120e-4f0f-41f4-85b3-74778c8060c0"}}}],"announcements":[],"id":"1a7c350c-eb3a-4d8a-af57-68aabda6fea7","savedPayload":{"position":{"x":35036.48540989503,"y":31009.357437908086},"targetPosition":{"x":34647.207041214446,"y":30836.09669131313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a3dd2636-1b11-4d0a-8a32-945e790a97e5","savedPayload":{"position":{"x":33863.77572993962,"y":30310.715804922856},"targetPosition":{"x":33446.54561839851,"y":30376.4041629772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"0204092d-3d12-43b7-95e3-f2146a2a0324","savedPayload":{"position":{"x":33695.04809078839,"y":31034.634409852893},"targetPosition":{"x":33632.5,"y":30636.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8096b40e-271b-407a-b75c-7de3136b04a5","savedPayload":{"position":{"x":33788.0138298563,"y":30624.219309845328},"targetPosition":{"x":33446.54561839851,"y":30376.4041629772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6af83cfb-a8f9-4313-8013-495ed37ee6f5","savedPayload":{"position":{"x":33446.54561839851,"y":30376.4041629772},"targetPosition":{"x":33029.75192573155,"y":30442.29103770232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"a0def27f-df31-4c8e-b5de-12cf8376aa64","savedPayload":{"position":{"x":33575.8445053462,"y":31047.439459383855},"targetPosition":{"x":33221.458597344295,"y":30817.50496330991},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"9a31cc2b-bfb0-43b9-8ad7-0d0135c2a593","savedPayload":{"position":{"x":33396.399305638624,"y":31144.805189286868},"targetPosition":{"x":33615.65194935859,"y":30806.396421048194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"952a1b99-cc01-414a-a583-69486a70cde8","savedPayload":{"position":{"x":33309.75440271151,"y":31230.662234131596},"targetPosition":{"x":33221.458597344295,"y":30817.50496330991},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e49340f8-ed08-46a6-b4f8-b1992e7780b4","savedPayload":{"position":{"x":33221.458597344295,"y":30817.50496330991},"targetPosition":{"x":33029.75192573155,"y":30442.29103770232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f1787887-41aa-41d4-80c5-34db452cd148","savedPayload":{"position":{"x":33029.75192573155,"y":30442.29103770232},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3313017d-fdce-481b-9679-fe8e4f67cd45","savedPayload":{"position":{"x":32433.356993272086,"y":31038.668778615298},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}]} \ No newline at end of file diff --git a/Legacy-Code/Masters/bots/Bollinger-Bands-Indicator-Bot/Commons.js b/Legacy-Code/Masters/bots/Bollinger-Bands-Indicator-Bot/Commons.js new file mode 100644 index 000000000..f34bae6c7 --- /dev/null +++ b/Legacy-Code/Masters/bots/Bollinger-Bands-Indicator-Bot/Commons.js @@ -0,0 +1 @@ +// Nothing here to run \ No newline at end of file diff --git a/Legacy-Code/Masters/bots/Bollinger-Bands-Indicator-Bot/Multi-Period-Daily/User.Bot.js b/Legacy-Code/Masters/bots/Bollinger-Bands-Indicator-Bot/Multi-Period-Daily/User.Bot.js index 8c27945fd..64b32dfc0 100644 --- a/Legacy-Code/Masters/bots/Bollinger-Bands-Indicator-Bot/Multi-Period-Daily/User.Bot.js +++ b/Legacy-Code/Masters/bots/Bollinger-Bands-Indicator-Bot/Multi-Period-Daily/User.Bot.js @@ -88,7 +88,7 @@ /* We look first for Exchange Raw Data in order to get when the market starts. */ - reportKey = "Masters" + "-" + "Exchange-Raw-Data" + "-" + "Historic-OHLCVs" + "-" + "dataSet.V1"; + reportKey = "Masters" + "-" + "Exchange-Raw-Data" + "-" + "Historic-OHLCVs" if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> reportKey = " + reportKey); } statusReport = statusDependencies.statusReports.get(reportKey); @@ -124,7 +124,7 @@ /* Second, we get the report from Candles Volumes, to know when the marted ends. */ - reportKey = "Masters" + "-" + "Candles-Volumes" + "-" + "Multi-Period-Daily" + "-" + "dataSet.V1"; + reportKey = "Masters" + "-" + "Candles-Volumes" + "-" + "Multi-Period-Daily" if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> reportKey = " + reportKey); } statusReport = statusDependencies.statusReports.get(reportKey); @@ -159,7 +159,7 @@ /* Finally we get our own Status Report. */ - reportKey = "Masters" + "-" + "Bollinger-Bands" + "-" + "Multi-Period-Daily" + "-" + "dataSet.V1"; + reportKey = "Masters" + "-" + "Bollinger-Bands" + "-" + "Multi-Period-Daily" if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> reportKey = " + reportKey); } statusReport = statusDependencies.statusReports.get(reportKey); @@ -826,7 +826,7 @@ let dataRange = { begin: pBegin.valueOf(), - end: pEnd.valueOf() + end: pEnd.valueOf() + ONE_DAY_IN_MILISECONDS }; let fileContent = JSON.stringify(dataRange); @@ -868,7 +868,7 @@ try { - let reportKey = "Masters" + "-" + "Bollinger-Bands" + "-" + "Multi-Period-Daily" + "-" + "dataSet.V1"; + let reportKey = "Masters" + "-" + "Bollinger-Bands" + "-" + "Multi-Period-Daily" let thisReport = statusDependencies.statusReports.get(reportKey); thisReport.file.lastExecution = bot.processDatetime; diff --git a/Legacy-Code/Masters/bots/Bollinger-Bands-Indicator-Bot/Multi-Period-Market/User.Bot.js b/Legacy-Code/Masters/bots/Bollinger-Bands-Indicator-Bot/Multi-Period-Market/User.Bot.js index f5bd3cb5f..820424630 100644 --- a/Legacy-Code/Masters/bots/Bollinger-Bands-Indicator-Bot/Multi-Period-Market/User.Bot.js +++ b/Legacy-Code/Masters/bots/Bollinger-Bands-Indicator-Bot/Multi-Period-Market/User.Bot.js @@ -465,7 +465,7 @@ try { - let reportKey = "Masters" + "-" + "Bollinger-Bands" + "-" + "Multi-Period-Market" + "-" + "dataSet.V1"; + let reportKey = "Masters" + "-" + "Bollinger-Bands" + "-" + "Multi-Period-Market" let thisReport = statusDependencies.statusReports.get(reportKey); thisReport.file.lastExecution = bot.processDatetime; diff --git a/Legacy-Code/Masters/bots/Bollinger-Bands-Indicator-Bot/this.bot.config.json b/Legacy-Code/Masters/bots/Bollinger-Bands-Indicator-Bot/this.bot.config.json index 3b08b5895..547ac0a0e 100644 --- a/Legacy-Code/Masters/bots/Bollinger-Bands-Indicator-Bot/this.bot.config.json +++ b/Legacy-Code/Masters/bots/Bollinger-Bands-Indicator-Bot/this.bot.config.json @@ -9,7 +9,6 @@ }, "dataMine": "Masters", "profilePicture": "Bollinger Bands.png", - "dataSetVersion": "dataSet.V1", "processes": [ { "name": "Multi-Period-Market", @@ -52,22 +51,12 @@ { "dataMine": "Masters", "bot": "Bollinger-Bands", - "botVersion": { - "major": 1, - "minor": 0 - }, - "process": "Multi-Period-Market", - "dataSetVersion": "dataSet.V1" + "process": "Multi-Period-Market" }, { "dataMine": "Masters", "bot": "Candles-Volumes", - "botVersion": { - "major": 1, - "minor": 0 - }, "process": "Multi-Period-Market", - "dataSetVersion": "dataSet.V1", "waitUntilNextUpdate": true } ] @@ -113,33 +102,18 @@ { "dataMine": "Masters", "bot": "Exchange-Raw-Data", - "botVersion": { - "major": 1, - "minor": 0 - }, - "process": "Historic-Trades", - "dataSetVersion": "dataSet.V1" + "process": "Historic-Trades" }, { "dataMine": "Masters", "bot": "Candles-Volumes", - "botVersion": { - "major": 1, - "minor": 0 - }, "process": "Multi-Period-Daily", - "dataSetVersion": "dataSet.V1", "waitUntilNextUpdate": true }, { "dataMine": "Masters", "bot": "Bollinger-Bands", - "botVersion": { - "major": 1, - "minor": 0 - }, - "process": "Multi-Period-Daily", - "dataSetVersion": "dataSet.V1" + "process": "Multi-Period-Daily" } ] } diff --git a/Legacy-Code/Masters/bots/Candles-Volumes-Indicator-Bot/Commons.js b/Legacy-Code/Masters/bots/Candles-Volumes-Indicator-Bot/Commons.js new file mode 100644 index 000000000..f34bae6c7 --- /dev/null +++ b/Legacy-Code/Masters/bots/Candles-Volumes-Indicator-Bot/Commons.js @@ -0,0 +1 @@ +// Nothing here to run \ No newline at end of file diff --git a/Legacy-Code/Masters/bots/Candles-Volumes-Indicator-Bot/Multi-Period-Daily/User.Bot.js b/Legacy-Code/Masters/bots/Candles-Volumes-Indicator-Bot/Multi-Period-Daily/User.Bot.js index 7ddba27e8..3afe0c7ea 100644 --- a/Legacy-Code/Masters/bots/Candles-Volumes-Indicator-Bot/Multi-Period-Daily/User.Bot.js +++ b/Legacy-Code/Masters/bots/Candles-Volumes-Indicator-Bot/Multi-Period-Daily/User.Bot.js @@ -87,7 +87,7 @@ Read the candles and volumes from Exchange Raw Data and produce a file for each /* We look first for Exchange Raw Data in order to get when the market starts. */ - reportKey = "Masters" + "-" + "Exchange-Raw-Data" + "-" + "Historic-OHLCVs" + "-" + "dataSet.V1"; + reportKey = "Masters" + "-" + "Exchange-Raw-Data" + "-" + "Historic-OHLCVs" if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> reportKey = " + reportKey); } statusReport = statusDependencies.statusReports.get(reportKey); @@ -123,7 +123,7 @@ Read the candles and volumes from Exchange Raw Data and produce a file for each /* Second, we get the report from Exchange Raw Data, to know when the marted ends. */ - reportKey = "Masters" + "-" + "Exchange-Raw-Data" + "-" + "Historic-OHLCVs" + "-" + "dataSet.V1" + reportKey = "Masters" + "-" + "Exchange-Raw-Data" + "-" + "Historic-OHLCVs" if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> reportKey = " + reportKey); } statusReport = statusDependencies.statusReports.get(reportKey); @@ -158,7 +158,7 @@ Read the candles and volumes from Exchange Raw Data and produce a file for each /* Finally we get our own Status Report. */ - reportKey = "Masters" + "-" + "Candles-Volumes" + "-" + "Multi-Period-Daily" + "-" + "dataSet.V1"; + reportKey = "Masters" + "-" + "Candles-Volumes" + "-" + "Multi-Period-Daily" if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> reportKey = " + reportKey); } statusReport = statusDependencies.statusReports.get(reportKey); @@ -738,7 +738,7 @@ Read the candles and volumes from Exchange Raw Data and produce a file for each let dataRange = { begin: pBegin.valueOf(), - end:pEnd.valueOf() + end:pEnd.valueOf() + ONE_DAY_IN_MILISECONDS }; let fileContent = JSON.stringify(dataRange); @@ -786,7 +786,7 @@ Read the candles and volumes from Exchange Raw Data and produce a file for each try { - let reportKey = "Masters" + "-" + "Candles-Volumes" + "-" + "Multi-Period-Daily" + "-" + "dataSet.V1"; + let reportKey = "Masters" + "-" + "Candles-Volumes" + "-" + "Multi-Period-Daily" let thisReport = statusDependencies.statusReports.get(reportKey); thisReport.file.lastExecution = bot.processDatetime; diff --git a/Legacy-Code/Masters/bots/Candles-Volumes-Indicator-Bot/Multi-Period-Market/User.Bot.js b/Legacy-Code/Masters/bots/Candles-Volumes-Indicator-Bot/Multi-Period-Market/User.Bot.js index 2fb83a2fe..1b1055a6a 100644 --- a/Legacy-Code/Masters/bots/Candles-Volumes-Indicator-Bot/Multi-Period-Market/User.Bot.js +++ b/Legacy-Code/Masters/bots/Candles-Volumes-Indicator-Bot/Multi-Period-Market/User.Bot.js @@ -96,7 +96,7 @@ /* We look first for Exchange Raw Data in order to get when the market starts. */ - reportKey = "Masters" + "-" + "Exchange-Raw-Data" + "-" + "Historic-OHLCVs" + "-" + "dataSet.V1"; + reportKey = "Masters" + "-" + "Exchange-Raw-Data" + "-" + "Historic-OHLCVs" if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> reportKey = " + reportKey); } statusReport = statusDependencies.statusReports.get(reportKey); @@ -132,7 +132,7 @@ /* Second, we get the report from Exchange Raw Data, to know when the marted ends. */ - reportKey = "Masters" + "-" + "Exchange-Raw-Data" + "-" + "Historic-OHLCVs" + "-" + "dataSet.V1" + reportKey = "Masters" + "-" + "Exchange-Raw-Data" + "-" + "Historic-OHLCVs" if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> reportKey = " + reportKey); } statusReport = statusDependencies.statusReports.get(reportKey); @@ -167,7 +167,7 @@ /* Finally we get our own Status Report. */ - reportKey = "Masters" + "-" + "Candles-Volumes" + "-" + "Multi-Period-Market" + "-" + "dataSet.V1"; + reportKey = "Masters" + "-" + "Candles-Volumes" + "-" + "Multi-Period-Market" if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> reportKey = " + reportKey); } statusReport = statusDependencies.statusReports.get(reportKey); @@ -904,7 +904,7 @@ try { - let reportKey = "Masters" + "-" + "Candles-Volumes" + "-" + "Multi-Period-Market" + "-" + "dataSet.V1"; + let reportKey = "Masters" + "-" + "Candles-Volumes" + "-" + "Multi-Period-Market" let thisReport = statusDependencies.statusReports.get(reportKey); thisReport.file.lastExecution = bot.processDatetime; diff --git a/Legacy-Code/Masters/bots/Candles-Volumes-Indicator-Bot/this.bot.config.json b/Legacy-Code/Masters/bots/Candles-Volumes-Indicator-Bot/this.bot.config.json index b1cc979c9..aa1100164 100644 --- a/Legacy-Code/Masters/bots/Candles-Volumes-Indicator-Bot/this.bot.config.json +++ b/Legacy-Code/Masters/bots/Candles-Volumes-Indicator-Bot/this.bot.config.json @@ -2,14 +2,7 @@ "displayName": "Candles Volumes", "codeName": "Candles-Volumes", "type": "Indicator Bot", - "version": { - "major": 1, - "minor": 0, - "patch": 0 - }, "dataMine": "Masters", - "profilePicture": "Candles Volumes.png", - "dataSetVersion": "dataSet.V1", "processes": [ { "name": "Multi-Period-Market", @@ -52,34 +45,19 @@ { "dataMine": "Masters", "bot": "Exchange-Raw-Data", - "botVersion": { - "major": 1, - "minor": 0 - }, - "process": "Historic-OHLCVs", - "dataSetVersion": "dataSet.V1" + "process": "Historic-OHLCVs" }, { "dataMine": "Masters", "bot": "Exchange-Raw-Data", - "botVersion": { - "major": 1, - "minor": 0 - }, "process": "Historic-OHLCVs", - "dataSetVersion": "dataSet.V1", "dataSetSection": "Month", "waitUntilNextUpdate": true }, { "dataMine": "Masters", "bot": "Candles-Volumes", - "botVersion": { - "major": 1, - "minor": 0 - }, - "process": "Multi-Period-Market", - "dataSetVersion": "dataSet.V1" + "process": "Multi-Period-Market" } ] }, @@ -124,34 +102,19 @@ { "dataMine": "Masters", "bot": "Exchange-Raw-Data", - "botVersion": { - "major": 1, - "minor": 0 - }, - "process": "Historic-OHLCVs", - "dataSetVersion": "dataSet.V1" + "process": "Historic-OHLCVs" }, { "dataMine": "Masters", "bot": "Exchange-Raw-Data", - "botVersion": { - "major": 1, - "minor": 0 - }, "process": "Historic-OHLCVs", - "dataSetVersion": "dataSet.V1", "dataSetSection": "Month", "waitUntilNextUpdate": true }, { "dataMine": "Masters", "bot": "Candles-Volumes", - "botVersion": { - "major": 1, - "minor": 0 - }, - "process": "Multi-Period-Daily", - "dataSetVersion": "dataSet.V1" + "process": "Multi-Period-Daily" } ] } diff --git a/Legacy-Code/Masters/bots/Exchange-Raw-Data-Sensor-Bot/Historic-OHLCVs/User.Bot.js b/Legacy-Code/Masters/bots/Exchange-Raw-Data-Sensor-Bot/Historic-OHLCVs/User.Bot.js index 7f73303f2..75f332fca 100644 --- a/Legacy-Code/Masters/bots/Exchange-Raw-Data-Sensor-Bot/Historic-OHLCVs/User.Bot.js +++ b/Legacy-Code/Masters/bots/Exchange-Raw-Data-Sensor-Bot/Historic-OHLCVs/User.Bot.js @@ -57,35 +57,35 @@ exports.newUserBot = function newUserBot(bot, logger, COMMONS, UTILITIES, FILE_S exchangeId = bot.exchange.toLowerCase() /* Applying the parameters defined by the user at the Exchange Node Config */ - if (bot.exchangeNode.code.API !== undefined) { - for (let i = 0; i < bot.exchangeNode.code.API.length; i++) { - if (bot.exchangeNode.code.API[i].method === 'fetch_ohlcv') { - if (bot.exchangeNode.code.API[i].class !== undefined) { - exchangeId = bot.exchangeNode.code.API[i].class + if (bot.exchangeNode.config.API !== undefined) { + for (let i = 0; i < bot.exchangeNode.config.API.length; i++) { + if (bot.exchangeNode.config.API[i].method === 'fetch_ohlcv') { + if (bot.exchangeNode.config.API[i].class !== undefined) { + exchangeId = bot.exchangeNode.config.API[i].class } - if (bot.exchangeNode.code.API[i].fetchOHLCVsMethod !== undefined) { + if (bot.exchangeNode.config.API[i].fetchOHLCVsMethod !== undefined) { options = { - 'fetchOHLCVsMethod': bot.exchangeNode.code.API[i].fetchOHLCVsMethod + 'fetchOHLCVsMethod': bot.exchangeNode.config.API[i].fetchOHLCVsMethod } } - if (bot.exchangeNode.code.API[i].firstId !== undefined) { - firstId = bot.exchangeNode.code.API[i].firstId + if (bot.exchangeNode.config.API[i].firstId !== undefined) { + firstId = bot.exchangeNode.config.API[i].firstId } - if (bot.exchangeNode.code.API[i].rateLimit !== undefined) { - rateLimit = bot.exchangeNode.code.API[i].rateLimit + if (bot.exchangeNode.config.API[i].rateLimit !== undefined) { + rateLimit = bot.exchangeNode.config.API[i].rateLimit } - if (bot.exchangeNode.code.API[i].hostname !== undefined) { - hostname = bot.exchangeNode.code.API[i].hostname + if (bot.exchangeNode.config.API[i].hostname !== undefined) { + hostname = bot.exchangeNode.config.API[i].hostname } - if (bot.exchangeNode.code.API[i].fetchType !== undefined) { - fetchType = bot.exchangeNode.code.API[i].fetchType + if (bot.exchangeNode.config.API[i].fetchType !== undefined) { + fetchType = bot.exchangeNode.config.API[i].fetchType } } } } - if (bot.code.fetchLimit !== undefined) { - limit = bot.code.fetchLimit + if (bot.config.fetchLimit !== undefined) { + limit = bot.config.fetchLimit } let key = process.env.KEY @@ -151,7 +151,7 @@ exports.newUserBot = function newUserBot(bot, logger, COMMONS, UTILITIES, FILE_S try { let reportKey; - reportKey = "Masters" + "-" + "Exchange-Raw-Data" + "-" + "Historic-OHLCVs" + "-" + "dataSet.V1"; + reportKey = "Masters" + "-" + "Exchange-Raw-Data" + "-" + "Historic-OHLCVs" if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> reportKey = " + reportKey); } if (statusDependencies.statusReports.get(reportKey).status === "Status Report is corrupt.") { diff --git a/Legacy-Code/Masters/bots/Exchange-Raw-Data-Sensor-Bot/Historic-Trades/User.Bot.js b/Legacy-Code/Masters/bots/Exchange-Raw-Data-Sensor-Bot/Historic-Trades/User.Bot.js index 3b5ddff99..dfa816cf6 100644 --- a/Legacy-Code/Masters/bots/Exchange-Raw-Data-Sensor-Bot/Historic-Trades/User.Bot.js +++ b/Legacy-Code/Masters/bots/Exchange-Raw-Data-Sensor-Bot/Historic-Trades/User.Bot.js @@ -52,25 +52,25 @@ exports.newUserBot = function newUserBot(bot, logger, COMMONS, UTILITIES, FILE_S exchangeId = bot.exchange.toLowerCase() /* Applying the parameters defined by the user at the Exchange node */ - if (bot.exchangeNode.code.API !== undefined) { - for (let i = 0; i < bot.exchangeNode.code.API.length; i++) { - if (bot.exchangeNode.code.API[i].method === 'fetchTrades') { - if (bot.exchangeNode.code.API[i].class !== undefined) { - exchangeId = bot.exchangeNode.code.API[i].class + if (bot.exchangeNode.config.API !== undefined) { + for (let i = 0; i < bot.exchangeNode.config.API.length; i++) { + if (bot.exchangeNode.config.API[i].method === 'fetchTrades') { + if (bot.exchangeNode.config.API[i].class !== undefined) { + exchangeId = bot.exchangeNode.config.API[i].class } - if (bot.exchangeNode.code.API[i].fetchType !== undefined) { - fetchType = bot.exchangeNode.code.API[i].fetchType + if (bot.exchangeNode.config.API[i].fetchType !== undefined) { + fetchType = bot.exchangeNode.config.API[i].fetchType } - if (bot.exchangeNode.code.API[i].fetchTradesMethod !== undefined) { + if (bot.exchangeNode.config.API[i].fetchTradesMethod !== undefined) { options = { - 'fetchTradesMethod': bot.exchangeNode.code.API[i].fetchTradesMethod + 'fetchTradesMethod': bot.exchangeNode.config.API[i].fetchTradesMethod } } - if (bot.exchangeNode.code.API[i].firstId !== undefined) { - firstId = bot.exchangeNode.code.API[i].firstId + if (bot.exchangeNode.config.API[i].firstId !== undefined) { + firstId = bot.exchangeNode.config.API[i].firstId } - if (bot.exchangeNode.code.API[i].rateLimit !== undefined) { - rateLimit = bot.exchangeNode.code.API[i].rateLimit + if (bot.exchangeNode.config.API[i].rateLimit !== undefined) { + rateLimit = bot.exchangeNode.config.API[i].rateLimit } } } @@ -136,7 +136,7 @@ exports.newUserBot = function newUserBot(bot, logger, COMMONS, UTILITIES, FILE_S try { let reportKey; - reportKey = "Masters" + "-" + "Exchange-Raw-Data" + "-" + "Historic-Trades" + "-" + "dataSet.V1"; + reportKey = "Masters" + "-" + "Exchange-Raw-Data" + "-" + "Historic-Trades" if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> reportKey = " + reportKey); } if (statusDependencies.statusReports.get(reportKey).status === "Status Report is corrupt.") { diff --git a/Legacy-Code/Masters/bots/Exchange-Raw-Data-Sensor-Bot/this.bot.config.json b/Legacy-Code/Masters/bots/Exchange-Raw-Data-Sensor-Bot/this.bot.config.json index c2ca69340..fcfcc6eaa 100644 --- a/Legacy-Code/Masters/bots/Exchange-Raw-Data-Sensor-Bot/this.bot.config.json +++ b/Legacy-Code/Masters/bots/Exchange-Raw-Data-Sensor-Bot/this.bot.config.json @@ -2,14 +2,8 @@ "displayName": "Exchange Raw Data", "codeName": "Exchange-Raw-Data", "type": "Sensor Bot", - "version": { - "major": 1, - "minor": 0, - "patch": 0 - }, "dataMine": "Masters", "profilePicture": "Exchange Raw Data.png", - "dataSetVersion": "dataSet.V1", "processes": [ { "name": "Live-Trades", @@ -42,12 +36,7 @@ { "dataMine": "Masters", "bot": "Exchange-Raw-Data", - "botVersion": { - "major": 1, - "minor": 0 - }, - "process": "Live-Trades", - "dataSetVersion": "dataSet.V1" + "process": "Live-Trades" } ] }, @@ -82,22 +71,12 @@ { "dataMine": "Masters", "bot": "Exchange-Raw-Data", - "botVersion": { - "major": 1, - "minor": 0 - }, - "process": "Live-Trades", - "dataSetVersion": "dataSet.V1" + "process": "Live-Trades" }, { "dataMine": "Masters", "bot": "Exchange-Raw-Data", - "botVersion": { - "major": 1, - "minor": 0 - }, - "process": "Historic-Trades", - "dataSetVersion": "dataSet.V1" + "process": "Historic-Trades" } ] }, @@ -132,44 +111,24 @@ { "dataMine": "Masters", "bot": "Exchange-Raw-Data", - "botVersion": { - "major": 1, - "minor": 0 - }, "process": "Live-Trades", - "dataSetVersion": "dataSet.V1", "waitUntilNextUpdate": true }, { "dataMine": "Masters", "bot": "Exchange-Raw-Data", - "botVersion": { - "major": 1, - "minor": 0 - }, - "process": "Historic-Trades", - "dataSetVersion": "dataSet.V1" + "process": "Historic-Trades" }, { "dataMine": "Masters", "bot": "Exchange-Raw-Data", - "botVersion": { - "major": 1, - "minor": 0 - }, "process": "Hole-Fixing", - "dataSetVersion": "dataSet.V1", "dataSetSection": "Month" }, { "dataMine": "Masters", "bot": "Exchange-Raw-Data", - "botVersion": { - "major": 1, - "minor": 0 - }, - "process": "Hole-Fixing", - "dataSetVersion": "dataSet.V1" + "process": "Hole-Fixing" } ] } diff --git a/Legacy-Code/Masters/bots/Webhooks-Sensor-Bot/Check-Webhook/User.Bot.js b/Legacy-Code/Masters/bots/Webhooks-Sensor-Bot/Check-Webhook/User.Bot.js index f447c8b54..4037cb4ca 100644 --- a/Legacy-Code/Masters/bots/Webhooks-Sensor-Bot/Check-Webhook/User.Bot.js +++ b/Legacy-Code/Masters/bots/Webhooks-Sensor-Bot/Check-Webhook/User.Bot.js @@ -50,7 +50,7 @@ exports.newUserBot = function newUserBot(bot, logger, COMMONS, UTILITIES, FILE_S try { let reportKey; - reportKey = "Masters" + "-" + "Webhooks" + "-" + "Check-Webhook" + "-" + "dataSet.V1"; + reportKey = "Masters" + "-" + "Webhooks" + "-" + "Check-Webhook" if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> reportKey = " + reportKey); } diff --git a/Legacy-Code/Masters/bots/Webhooks-Sensor-Bot/this.bot.config.json b/Legacy-Code/Masters/bots/Webhooks-Sensor-Bot/this.bot.config.json index bf9b802bd..223ff23e8 100644 --- a/Legacy-Code/Masters/bots/Webhooks-Sensor-Bot/this.bot.config.json +++ b/Legacy-Code/Masters/bots/Webhooks-Sensor-Bot/this.bot.config.json @@ -8,7 +8,6 @@ "patch": 0 }, "dataMine": "Masters", - "dataSetVersion": "dataSet.V1", "processes": [ { "name": "Check-Webhook", @@ -41,12 +40,7 @@ { "dataMine": "Masters", "bot": "Webhooks", - "botVersion": { - "major": 1, - "minor": 0 - }, - "process": "Check-Webhook", - "dataSetVersion": "dataSet.V1" + "process": "Check-Webhook" } ] } diff --git a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/Conditions.js b/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/Conditions.js deleted file mode 100644 index a9eb8a1c8..000000000 --- a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/Conditions.js +++ /dev/null @@ -1,1131 +0,0 @@ -function newTradingEnginesPlottersTradingSimulationConditions() { - - const MODULE_NAME = "Conditions Plotter"; - const INFO_LOG = false; - const ERROR_LOG = true; - const INTENSIVE_LOG = false; - const logger = newWebDebugLog(); - logger.fileName = MODULE_NAME; - - let thisObject = { - - // Main functions and properties. - - initialize: initialize, - finalize: finalize, - container: undefined, - getContainer: getContainer, - setTimeFrame: setTimeFrame, - setDatetime: setDatetime, - draw: draw, - - /* Events declared outside the plotter. */ - - onDailyFileLoaded: onDailyFileLoaded, - - // Secondary functions and properties. - - currentRecord: undefined - }; - - /* this is part of the module template */ - - let container = newContainer(); // Do not touch this 3 lines, they are just needed. - container.initialize(); - thisObject.container = container; - - let coordinateSystem - - let timeFrame; // This will hold the current Time Frame the user is at. - let datetime; // This will hold the current Datetime the user is at. - - let marketFile; // This is the current Market File being plotted. - let fileCursor; // This is the current File Cursor being used to retrieve Daily Files. - - let marketFiles; // This object will provide the different Market Files at different Time Frames. - let dailyFiles; // This object will provide the different File Cursors at different Time Frames. - - /* these are module specific variables: */ - - let conditions = []; - let headers; - - let noDefinitionOnFocusErrorDisplayed = false - - let onMouseOverEventSuscriptionId - let zoomChangedEventSubscriptionId - let offsetChangedEventSubscriptionId - let dragFinishedEventSubscriptionId - let dimmensionsChangedEventSubscriptionId - let marketFilesUpdatedEventSubscriptionId - let dailyFilesUpdatedEventSubscriptionId - let scaleChangedEventSubscriptionId - - let userPositionDate - return thisObject; - - function finalize() { - try { - - if (INFO_LOG === true) { logger.write("[INFO] finalize -> Entering function."); } - - /* Stop listening to the necesary events. */ - - thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId) - canvas.chartingSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId); - canvas.chartingSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId); - canvas.eventHandler.stopListening(dragFinishedEventSubscriptionId); - thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId) - marketFiles.eventHandler.stopListening(marketFilesUpdatedEventSubscriptionId); - dailyFiles.eventHandler.stopListening(dailyFilesUpdatedEventSubscriptionId); - - /* Destroyd References */ - - marketFiles = undefined; - dailyFiles = undefined; - - datetime = undefined; - timeFrame = undefined; - - marketFile = undefined; - fileCursor = undefined; - - finalizeCoordinateSystem() - coordinateSystem = undefined - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] finalize -> err = " + err.stack); } - } - } - - function initialize(pStorage, pDatetime, pTimeFrame, pCoordinateSystem, callBackFunction) { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] initialize -> Entering function."); } - - /* Store the information received. */ - - marketFiles = pStorage.marketFiles[0]; - dailyFiles = pStorage.dailyFiles[0]; - - datetime = pDatetime; - timeFrame = pTimeFrame; - coordinateSystem = pCoordinateSystem - initializeCoordinateSystem() - - /* We need a Market File in order to calculate the Y scale, since this scale depends on actual data. */ - - marketFile = marketFiles.getFile(ONE_DAY_IN_MILISECONDS); // This file is the one processed faster. - - /* Now we set the right files according to current Period. */ - - marketFile = marketFiles.getFile(pTimeFrame); - fileCursor = dailyFiles.getFileCursor(pTimeFrame); - - /* Listen to the necesary events. */ - - zoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged); - offsetChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged); - dragFinishedEventSubscriptionId = canvas.eventHandler.listenToEvent("Drag Finished", onDragFinished); - marketFilesUpdatedEventSubscriptionId = marketFiles.eventHandler.listenToEvent("Files Updated", onMarketFilesUpdated); - dailyFilesUpdatedEventSubscriptionId = dailyFiles.eventHandler.listenToEvent("Files Updated", onDailyFilesUpdated); - onMouseOverEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) - - /* Get ready for plotting. */ - - recalculate(); - - /* Ready for when dimmension changes. */ - - dimmensionsChangedEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('Dimmensions Changed', function () { - recalculate(); - }) - - callBackFunction(); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] initialize -> err = " + err.stack); } - } - } - - function initializeCoordinateSystem() { - scaleChangedEventSubscriptionId = coordinateSystem.eventHandler.listenToEvent('Scale Changed', onScaleChanged) - } - - function finalizeCoordinateSystem() { - coordinateSystem.eventHandler.stopListening(scaleChangedEventSubscriptionId) - } - - function onScaleChanged() { - recalculate(); - } - - function onMouseOver(event) { - let userPosition = getDateFromPointAtBrowserCanvas(event, thisObject.container, coordinateSystem) - userPositionDate = userPosition.valueOf() - } - - function getContainer(point) { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] getContainer -> Entering function."); } - - let container; - - /* First we check if this point is inside this space. */ - - if (this.container.frame.isThisPointHere(point) === true) { - - return this.container; - - } else { - - /* This point does not belong to this space. */ - - return undefined; - } - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] getContainer -> err = " + err.stack); } - } - } - - function onMarketFilesUpdated() { - try { - let newMarketFile = marketFiles.getFile(timeFrame); - if (newMarketFile !== undefined) { - marketFile = newMarketFile; - recalculate(); - } - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] onMarketFilesUpdated -> err = " + err.stack); } - } - } - - function onDailyFilesUpdated() { - try { - let newFileCursor = dailyFiles.getFileCursor(timeFrame); - if (newFileCursor !== undefined) { - fileCursor = newFileCursor; - recalculate(); - } - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] onDailyFilesUpdated -> err = " + err.stack); } - } - } - - function setTimeFrame(pTimeFrame) { - - try { - - if (timeFrame !== pTimeFrame) { - - timeFrame = pTimeFrame; - - if (timeFrame >= _1_HOUR_IN_MILISECONDS) { - - marketFile = marketFiles.getFile(pTimeFrame); - - recalculate(); - - } else { - - let newFileCursor = dailyFiles.getFileCursor(pTimeFrame); - - fileCursor = newFileCursor; // In this case, we explicitly want that if there is no valid cursor, we invalidate the data and show nothing. - recalculate(); - - } - } - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] setTimeFrame -> err = " + err.stack); } - } - } - - function setDatetime(pDatetime) { - - if (INFO_LOG === true) { logger.write("[INFO] setDatetime -> Entering function."); } - - datetime = pDatetime; - - } - - function setCoordinateSystem(pCoordinateSystem) { - finalizeCoordinateSystem() - coordinateSystem = pCoordinateSystem - initializeCoordinateSystem() - } - - function onDailyFileLoaded(event) { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] onDailyFileLoaded -> Entering function."); } - - if (event.currentValue === event.totalValue) { - - /* This happens only when all of the files in the cursor have been loaded. */ - - recalculate(); - - } - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] onDailyFileLoaded -> err = " + err.stack); } - } - } - - function draw() { - - try { - - if (INTENSIVE_LOG === true) { logger.write("[INFO] draw -> Entering function."); } - - this.container.frame.draw(); - - plotChart(); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] draw -> err = " + err.stack); } - } - } - - function recalculate() { - - try { - - conditions = [] - - if (timeFrame >= _1_HOUR_IN_MILISECONDS) { - - recalculateUsingMarketFiles(); - - } else { - - recalculateUsingDailyFiles(); - - } - - thisObject.container.eventHandler.raiseEvent("Conditions Changed", conditions); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] recalculate -> err = " + err.stack); } - } - } - - function recalculateUsingDailyFiles() { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] recalculateUsingDailyFiles -> Entering function."); } - - if (fileCursor === undefined) { - conditions = []; - return; - } // We need to wait - - if (fileCursor.files.size === 0) { - conditions = []; - return; - } // We need to wait until there are files in the cursor - - let daysOnSides = getSideDays(timeFrame); - - let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem); - let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem); - - let dateDiff = rightDate.valueOf() - leftDate.valueOf(); - - let farLeftDate = new Date(leftDate.valueOf() - dateDiff * 1.5); - let farRightDate = new Date(rightDate.valueOf() + dateDiff * 1.5); - - let currentDate = new Date(farLeftDate.valueOf()); - - conditions = []; - - - - while (currentDate.valueOf() <= farRightDate.valueOf() + ONE_DAY_IN_MILISECONDS) { - - let stringDate = currentDate.getFullYear() + '-' + pad(currentDate.getMonth() + 1, 2) + '-' + pad(currentDate.getDate(), 2); - - let dailyFile = fileCursor.files.get(stringDate); - - if (dailyFile !== undefined) { - - headers = dailyFile[0]; - - for (let i = 0; i < dailyFile[1].length; i++) { - - let record = { - begin: undefined, - end: undefined, - conditions: undefined - }; - - record.begin = dailyFile[1][i][0]; - record.end = dailyFile[1][i][1]; - record.strategyNumber = dailyFile[1][i][2]; - record.strategyPhase = dailyFile[1][i][3]; - record.stopLossPhase = dailyFile[1][i][4]; - record.takeProfitPhase = dailyFile[1][i][5]; - record.conditions = dailyFile[1][i][6]; - record.formulaErrors = dailyFile[1][i][7]; - record.formulaValues = dailyFile[1][i][8]; - - if ( - (record.begin >= farLeftDate.valueOf() && record.end <= farRightDate.valueOf()) && - (record.begin >= coordinateSystem.min.x && record.end <= coordinateSystem.max.x) - ) { - - conditions.push(record); - - if (datetime.valueOf() >= record.begin && datetime.valueOf() <= record.end) { - - thisObject.currentRecord = record; - thisObject.container.eventHandler.raiseEvent("Current Condition Changed", thisObject.currentRecord); - - } - } - } - } - - currentDate = new Date(currentDate.valueOf() + ONE_DAY_IN_MILISECONDS); - } - - /* Lests check if all the visible screen is going to be covered by conditions. */ - - let lowerEnd = leftDate.valueOf(); - let upperEnd = rightDate.valueOf(); - - setTimeout(recalculate, 2000); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] recalculateUsingDailyFiles -> err = " + err.stack); } - } - } - - function recalculateUsingMarketFiles() { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] recalculateUsingMarketFiles -> Entering function."); } - - if (marketFile === undefined) { return; } // Initialization not complete yet. - - let daysOnSides = getSideDays(timeFrame); - - let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem); - let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem); - - let dateDiff = rightDate.valueOf() - leftDate.valueOf(); - - leftDate = new Date(leftDate.valueOf() - dateDiff * 1.5); - rightDate = new Date(rightDate.valueOf() + dateDiff * 1.5); - - conditions = []; - headers = marketFile[0]; - - for (let i = 0; i < marketFile[1].length; i++) { - - let record = { - begin: undefined, - end: undefined, - conditions: undefined - }; - - record.begin = marketFile[1][i][0]; - record.end = marketFile[1][i][1]; - record.strategyNumber = marketFile[1][i][2]; - record.strategyPhase = marketFile[1][i][3]; - record.stopLossPhase = marketFile[1][i][4]; - record.takeProfitPhase = marketFile[1][i][5]; - record.conditions = marketFile[1][i][6]; - record.formulaErrors = marketFile[1][i][7]; - record.formulaValues = marketFile[1][i][8]; - - if ( - (record.begin >= leftDate.valueOf() && record.end <= rightDate.valueOf()) && - (record.begin >= coordinateSystem.min.x && record.end <= coordinateSystem.max.x) - ) { - - conditions.push(record); - - if (datetime.valueOf() >= record.begin && datetime.valueOf() <= record.end) { - - thisObject.currentRecord = record; - thisObject.container.eventHandler.raiseEvent("Current Condition Changed", thisObject.currentRecord); - - } - } - } - - //console.log("Olivia > recalculateUsingMarketFiles > total conditions generated : " + conditions.length); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] recalculateUsingMarketFiles -> err = " + err.stack); } - } - } - - function plotChart() { - - try { - - thisObject.container.eventHandler.raiseEvent("Current Condition Record Changed", undefined); - - let conditionRecord; - - for (let i = 0; i < conditions.length; i++) { - - conditionRecord = conditions[i]; - - /* Send the current record to the panel */ - - if (userPositionDate >= conditionRecord.begin && userPositionDate <= conditionRecord.end) { - - let currentRecord = { - conditionsNames: headers, - strategyNumber: conditionRecord.strategyNumber, - strategyPhase: conditionRecord.strategyPhase, - stopLossPhase: conditionRecord.stopLossPhase, - takeProfitPhase: conditionRecord.takeProfitPhase, - conditionsValues: conditionRecord.conditions, - formulaErrors: conditionRecord.formulaErrors, - formulaValues: conditionRecord.formulaValues - }; - - sendRecordInfoToDesignerSpace(currentRecord) - } - } - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] plotChart -> err = " + err.stack); } - } - } - - function sendRecordInfoToDesignerSpace(currentRecord) { - - if (currentRecord === undefined) { return; } - if (currentRecord.conditionsNames === undefined) { return; } - if (canvas.designSpace.workspace === undefined) { return; } - - /* We will get now the designer trading system */ - let designerTradingSystem - let fileTradingSystem = currentRecord.conditionsNames; - - for (let i = 0; i < canvas.designSpace.workspace.workspaceNode.rootNodes.length; i++) { - let rootNode = canvas.designSpace.workspace.workspaceNode.rootNodes[i] - if (rootNode.type === 'Trading System') { - if (rootNode.id === fileTradingSystem.id) { - designerTradingSystem = rootNode - } - } - } - - if (designerTradingSystem === undefined) { return; } - - try { - - browserCanvasContext.beginPath(); - - - let conditionIndex = 0; - let formulaErrorsIndex = 0; - let formulaValuesIndex = 0; - - designerTradingSystem.payload.uiObject.setErrorMessage(fileTradingSystem.error) - - if (fileTradingSystem.parameters !== undefined) { - designerTradingSystem.parameters.payload.uiObject.setErrorMessage(fileTradingSystem.parameters.error) - if (fileTradingSystem.parameters.baseAsset !== undefined) { - designerTradingSystem.parameters.baseAsset.payload.uiObject.setErrorMessage(fileTradingSystem.parameters.baseAsset.error) - } - if (fileTradingSystem.parameters.timeRange !== undefined) { - designerTradingSystem.parameters.timeRange.payload.uiObject.setErrorMessage(fileTradingSystem.parameters.timeRange.error) - } - if (fileTradingSystem.parameters.slippage !== undefined) { - designerTradingSystem.parameters.slippage.payload.uiObject.setErrorMessage(fileTradingSystem.parameters.slippage.error) - } - if (fileTradingSystem.parameters.feeStructure !== undefined) { - designerTradingSystem.parameters.feeStructure.payload.uiObject.setErrorMessage(fileTradingSystem.parameters.feeStructure.error) - } - } - - for (let j = 0; j < fileTradingSystem.strategies.length; j++) { - - let strategy = fileTradingSystem.strategies[j]; - designerTradingSystem.strategies[j].payload.uiObject.setErrorMessage(strategy.error) - - if (currentRecord.strategyNumber === j) { - designerTradingSystem.strategies[j].payload.uiObject.isExecuting = true - } else { - designerTradingSystem.strategies[j].payload.uiObject.isExecuting = false - } - - let triggerStage = strategy.triggerStage - - if (triggerStage !== undefined) { - designerTradingSystem.strategies[j].triggerStage.payload.uiObject.setErrorMessage(triggerStage.error) - - if (triggerStage.triggerOn !== undefined) { - designerTradingSystem.strategies[j].triggerStage.triggerOn.payload.uiObject.setErrorMessage(triggerStage.triggerOn.error) - - for (let k = 0; k < triggerStage.triggerOn.situations.length; k++) { - - let situation = triggerStage.triggerOn.situations[k]; - designerTradingSystem.strategies[j].triggerStage.triggerOn.situations[k].payload.uiObject.setErrorMessage(triggerStage.triggerOn.situations[k].error) - processSituation(situation, designerTradingSystem.strategies[j].triggerStage.triggerOn.situations[k]); - } - - for (let k = 0; k < triggerStage.triggerOn.announcements.length; k++) { - - let announcement = triggerStage.triggerOn.announcements[k]; - designerTradingSystem.strategies[j].triggerStage.triggerOn.announcements[k].payload.uiObject.setErrorMessage(announcement.error) - if (announcement.formula !== undefined) { - designerTradingSystem.strategies[j].triggerStage.triggerOn.announcements[k].formula.payload.uiObject.setErrorMessage(announcement.formula.error) - } - } - } - - if (triggerStage.triggerOff !== undefined) { - - for (let k = 0; k < triggerStage.triggerOff.situations.length; k++) { - - let situation = triggerStage.triggerOff.situations[k]; - designerTradingSystem.strategies[j].triggerStage.triggerOff.situations[k].payload.uiObject.setErrorMessage(triggerStage.triggerOff.situations[k].error) - processSituation(situation, designerTradingSystem.strategies[j].triggerStage.triggerOff.situations[k]); - } - - for (let k = 0; k < triggerStage.triggerOff.announcements.length; k++) { - - let announcement = triggerStage.triggerOff.announcements[k]; - designerTradingSystem.strategies[j].triggerStage.triggerOff.announcements[k].payload.uiObject.setErrorMessage(announcement.error) - if (announcement.formula !== undefined) { - designerTradingSystem.strategies[j].triggerStage.triggerOff.announcements[k].formula.payload.uiObject.setErrorMessage(announcement.formula.error) - } - } - } - - if (triggerStage.takePosition !== undefined) { - - for (let k = 0; k < triggerStage.takePosition.situations.length; k++) { - - let situation = triggerStage.takePosition.situations[k]; - designerTradingSystem.strategies[j].triggerStage.takePosition.situations[k].payload.uiObject.setErrorMessage(triggerStage.takePosition.situations[k].error) - processSituation(situation, designerTradingSystem.strategies[j].triggerStage.takePosition.situations[k]); - } - - for (let k = 0; k < triggerStage.takePosition.announcements.length; k++) { - - let announcement = triggerStage.takePosition.announcements[k]; - designerTradingSystem.strategies[j].triggerStage.takePosition.announcements[k].payload.uiObject.setErrorMessage(announcement.error) - if (announcement.formula !== undefined) { - designerTradingSystem.strategies[j].triggerStage.takePosition.announcements[k].formula.payload.uiObject.setErrorMessage(announcement.formula.error) - } - } - } - } - - let openStage = strategy.openStage - - if (openStage !== undefined) { - designerTradingSystem.strategies[j].openStage.payload.uiObject.setErrorMessage(openStage.error) - - let initialDefinition = openStage.initialDefinition - - if (initialDefinition !== undefined) { - designerTradingSystem.strategies[j].openStage.initialDefinition.payload.uiObject.setErrorMessage(openStage.initialDefinition.error) - - if (initialDefinition.stopLoss !== undefined) { - designerTradingSystem.strategies[j].openStage.initialDefinition.stopLoss.payload.uiObject.setErrorMessage(openStage.initialDefinition.stopLoss.error) - - for (let p = 0; p < initialDefinition.stopLoss.phases.length; p++) { - - if (currentRecord.strategyNumber === j && currentRecord.stopLossPhase === p) { - designerTradingSystem.strategies[j].openStage.initialDefinition.stopLoss.phases[p].payload.uiObject.isExecuting = true - } else { - designerTradingSystem.strategies[j].openStage.initialDefinition.stopLoss.phases[p].payload.uiObject.isExecuting = false - } - - let phase = initialDefinition.stopLoss.phases[p]; - designerTradingSystem.strategies[j].openStage.initialDefinition.stopLoss.phases[p].payload.uiObject.setErrorMessage(openStage.initialDefinition.stopLoss.phases[p].error) - - if (phase.formula !== undefined) { - designerTradingSystem.strategies[j].openStage.initialDefinition.stopLoss.phases[p].formula.payload.uiObject.setErrorMessage(openStage.initialDefinition.stopLoss.phases[p].formula.error) - - if (currentRecord.formulaErrors[formulaErrorsIndex] !== "") { - if (currentRecord.strategyNumber === j && currentRecord.stopLossPhase === p) { - designerTradingSystem.strategies[j].openStage.initialDefinition.stopLoss.phases[p].formula.payload.uiObject.setErrorMessage(currentRecord.formulaErrors[formulaErrorsIndex]) - } - } - formulaErrorsIndex++ - - if (currentRecord.strategyNumber === j && currentRecord.stopLossPhase === p) { - designerTradingSystem.strategies[j].openStage.initialDefinition.stopLoss.phases[p].formula.payload.uiObject.setValue(currentRecord.formulaValues[formulaValuesIndex]) - } - formulaValuesIndex++ - } - - for (let k = 0; k < phase.announcements.length; k++) { - - let announcement = phase.announcements[k]; - designerTradingSystem.strategies[j].openStage.initialDefinition.stopLoss.phases[p].announcements[k].payload.uiObject.setErrorMessage(announcement.error) - if (announcement.formula !== undefined) { - designerTradingSystem.strategies[j].openStage.initialDefinition.stopLoss.phases[p].announcements[k].formula.payload.uiObject.setErrorMessage(announcement.formula.error) - } - } - - let nextPhaseEvent = phase.nextPhaseEvent; - if (nextPhaseEvent !== undefined) { - designerTradingSystem.strategies[j].openStage.initialDefinition.stopLoss.phases[p].nextPhaseEvent.payload.uiObject.setErrorMessage(openStage.initialDefinition.stopLoss.phases[p].nextPhaseEvent.error) - - for (let k = 0; k < nextPhaseEvent.situations.length; k++) { - - let situation = nextPhaseEvent.situations[k]; - - processSituation(situation, designerTradingSystem.strategies[j].openStage.initialDefinition.stopLoss.phases[p].nextPhaseEvent.situations[k]); - } - - for (let k = 0; k < nextPhaseEvent.announcements.length; k++) { - - let announcement = nextPhaseEvent.announcements[k]; - designerTradingSystem.strategies[j].openStage.initialDefinition.stopLoss.phases[p].nextPhaseEvent.announcements[k].payload.uiObject.setErrorMessage(announcement.error) - if (announcement.formula !== undefined) { - designerTradingSystem.strategies[j].openStage.initialDefinition.stopLoss.phases[p].nextPhaseEvent.announcements[k].formula.payload.uiObject.setErrorMessage(announcement.formula.error) - } - } - } - - for (let n = 0; n < phase.moveToPhaseEvents.length; n++) { - let moveToPhaseEvent = phase.moveToPhaseEvents[n]; - if (moveToPhaseEvent !== undefined) { - designerTradingSystem.strategies[j].openStage.initialDefinition.stopLoss.phases[p].moveToPhaseEvents[n].payload.uiObject.setErrorMessage(openStage.initialDefinition.stopLoss.phases[p].moveToPhaseEvents[n].error) - - for (let k = 0; k < moveToPhaseEvent.situations.length; k++) { - - let situation = moveToPhaseEvent.situations[k]; - - processSituation(situation, designerTradingSystem.strategies[j].openStage.initialDefinition.stopLoss.phases[p].moveToPhaseEvents[n].situations[k]); - } - - for (let k = 0; k < moveToPhaseEvent.announcements.length; k++) { - - let announcement = moveToPhaseEvent.announcements[k]; - designerTradingSystem.strategies[j].openStage.initialDefinition.stopLoss.phases[p].moveToPhaseEvents[n].announcements[k].payload.uiObject.setErrorMessage(announcement.error) - if (announcement.formula !== undefined) { - designerTradingSystem.strategies[j].openStage.initialDefinition.stopLoss.phases[p].moveToPhaseEvents[n].announcements[k].formula.payload.uiObject.setErrorMessage(announcement.formula.error) - } - } - } - } - } - } - - if (initialDefinition.takeProfit !== undefined) { - designerTradingSystem.strategies[j].openStage.initialDefinition.takeProfit.payload.uiObject.setErrorMessage(openStage.initialDefinition.takeProfit.error) - - for (let p = 0; p < initialDefinition.takeProfit.phases.length; p++) { - - if (currentRecord.strategyNumber === j && currentRecord.takeProfitPhase === p) { - designerTradingSystem.strategies[j].openStage.initialDefinition.takeProfit.phases[p].payload.uiObject.isExecuting = true - } else { - designerTradingSystem.strategies[j].openStage.initialDefinition.takeProfit.phases[p].payload.uiObject.isExecuting = false - } - - let phase = initialDefinition.takeProfit.phases[p]; - designerTradingSystem.strategies[j].openStage.initialDefinition.takeProfit.phases[p].payload.uiObject.setErrorMessage(openStage.initialDefinition.takeProfit.phases[p].error) - - if (phase.formula !== undefined) { - designerTradingSystem.strategies[j].openStage.initialDefinition.takeProfit.phases[p].formula.payload.uiObject.setErrorMessage(openStage.initialDefinition.takeProfit.phases[p].formula.error) - - if (currentRecord.formulaErrors[formulaErrorsIndex] !== "") { - if (currentRecord.strategyNumber === j && currentRecord.takeProfitPhase === p) { - designerTradingSystem.strategies[j].openStage.initialDefinition.takeProfit.phases[p].formula.payload.uiObject.setErrorMessage(currentRecord.formulaErrors[formulaErrorsIndex]) - } - } - formulaErrorsIndex++ - - if (currentRecord.strategyNumber === j && currentRecord.takeProfitPhase === p) { - designerTradingSystem.strategies[j].openStage.initialDefinition.takeProfit.phases[p].formula.payload.uiObject.setValue(currentRecord.formulaValues[formulaValuesIndex]) - } - formulaValuesIndex++ - } - - for (let k = 0; k < phase.announcements.length; k++) { - - let announcement = phase.announcements[k]; - designerTradingSystem.strategies[j].openStage.initialDefinition.takeProfit.phases[p].announcements[k].payload.uiObject.setErrorMessage(announcement.error) - if (announcement.formula !== undefined) { - designerTradingSystem.strategies[j].openStage.initialDefinition.takeProfit.phases[p].announcements[k].formula.payload.uiObject.setErrorMessage(announcement.formula.error) - } - } - - let nextPhaseEvent = phase.nextPhaseEvent; - if (nextPhaseEvent !== undefined) { - designerTradingSystem.strategies[j].openStage.initialDefinition.takeProfit.phases[p].nextPhaseEvent.payload.uiObject.setErrorMessage(openStage.initialDefinition.takeProfit.phases[p].nextPhaseEvent.error) - - for (let k = 0; k < nextPhaseEvent.situations.length; k++) { - - let situation = nextPhaseEvent.situations[k]; - - processSituation(situation, designerTradingSystem.strategies[j].openStage.initialDefinition.takeProfit.phases[p].nextPhaseEvent.situations[k]); - } - - for (let k = 0; k < nextPhaseEvent.announcements.length; k++) { - - let announcement = nextPhaseEvent.announcements[k]; - designerTradingSystem.strategies[j].openStage.initialDefinition.takeProfit.phases[p].nextPhaseEvent.announcements[k].payload.uiObject.setErrorMessage(announcement.error) - if (announcement.formula !== undefined) { - designerTradingSystem.strategies[j].openStage.initialDefinition.takeProfit.phases[p].nextPhaseEvent.announcements[k].formula.payload.uiObject.setErrorMessage(announcement.formula.error) - } - } - } - - for (let n = 0; n < phase.moveToPhaseEvents.length; n++) { - let moveToPhaseEvent = phase.moveToPhaseEvents[n]; - if (moveToPhaseEvent !== undefined) { - designerTradingSystem.strategies[j].openStage.initialDefinition.takeProfit.phases[p].moveToPhaseEvents[n].payload.uiObject.setErrorMessage(openStage.initialDefinition.takeProfit.phases[p].moveToPhaseEvent[n].error) - - for (let k = 0; k < moveToPhaseEvent.situations.length; k++) { - - let situation = moveToPhaseEvent.situations[k]; - - processSituation(situation, designerTradingSystem.strategies[j].openStage.initialDefinition.takeProfit.phases[p].moveToPhaseEvents[n].situations[k]); - } - - for (let k = 0; k < moveToPhaseEvent.announcements.length; k++) { - - let announcement = moveToPhaseEvent.announcements[k]; - designerTradingSystem.strategies[j].openStage.initialDefinition.takeProfit.phases[p].moveToPhaseEvents[n].announcements[k].payload.uiObject.setErrorMessage(announcement.error) - if (announcement.formula !== undefined) { - designerTradingSystem.strategies[j].openStage.initialDefinition.takeProfit.phases[p].moveToPhaseEvents[n].announcements[k].formula.payload.uiObject.setErrorMessage(announcement.formula.error) - } - } - } - } - } - } - } - - let openExecution = openStage.openExecution - - if (openExecution !== undefined) { - designerTradingSystem.strategies[j].openStage.openExecution.payload.uiObject.setErrorMessage(openStage.openExecution.error) - } - } - - let manageStage = strategy.manageStage - - if (manageStage !== undefined) { - designerTradingSystem.strategies[j].manageStage.payload.uiObject.setErrorMessage(manageStage.error) - - if (manageStage.stopLoss !== undefined) { - designerTradingSystem.strategies[j].manageStage.stopLoss.payload.uiObject.setErrorMessage(manageStage.stopLoss.error) - - for (let p = 0; p < manageStage.stopLoss.phases.length; p++) { - - if (currentRecord.strategyNumber === j && currentRecord.stopLossPhase - 1 === p) { - designerTradingSystem.strategies[j].manageStage.stopLoss.phases[p].payload.uiObject.isExecuting = true - } else { - designerTradingSystem.strategies[j].manageStage.stopLoss.phases[p].payload.uiObject.isExecuting = false - } - - let phase = manageStage.stopLoss.phases[p]; - designerTradingSystem.strategies[j].manageStage.stopLoss.phases[p].payload.uiObject.setErrorMessage(manageStage.stopLoss.phases[p].error) - - if (phase.formula !== undefined) { - designerTradingSystem.strategies[j].manageStage.stopLoss.phases[p].formula.payload.uiObject.setErrorMessage(manageStage.stopLoss.phases[p].formula.error) - - if (currentRecord.formulaErrors[formulaErrorsIndex] !== "") { - if (currentRecord.strategyNumber === j && currentRecord.stopLossPhase - 1 === p) { - designerTradingSystem.strategies[j].manageStage.stopLoss.phases[p].formula.payload.uiObject.setErrorMessage(currentRecord.formulaErrors[formulaErrorsIndex]) - } - } - formulaErrorsIndex++ - if (currentRecord.strategyNumber === j && currentRecord.stopLossPhase - 1 === p) { - designerTradingSystem.strategies[j].manageStage.stopLoss.phases[p].formula.payload.uiObject.setValue(currentRecord.formulaValues[formulaValuesIndex]) - } - formulaValuesIndex++ - } - - for (let k = 0; k < phase.announcements.length; k++) { - - let announcement = phase.announcements[k]; - designerTradingSystem.strategies[j].manageStage.stopLoss.phases[p].announcements[k].payload.uiObject.setErrorMessage(announcement.error) - if (announcement.formula !== undefined) { - designerTradingSystem.strategies[j].manageStage.stopLoss.phases[p].announcements[k].formula.payload.uiObject.setErrorMessage(announcement.formula.error) - } - } - - let nextPhaseEvent = phase.nextPhaseEvent; - if (nextPhaseEvent !== undefined) { - designerTradingSystem.strategies[j].manageStage.stopLoss.phases[p].nextPhaseEvent.payload.uiObject.setErrorMessage(manageStage.stopLoss.phases[p].nextPhaseEvent.error) - - for (let k = 0; k < nextPhaseEvent.situations.length; k++) { - - let situation = nextPhaseEvent.situations[k]; - - processSituation(situation, designerTradingSystem.strategies[j].manageStage.stopLoss.phases[p].nextPhaseEvent.situations[k]); - } - - for (let k = 0; k < nextPhaseEvent.announcements.length; k++) { - - let announcement = nextPhaseEvent.announcements[k]; - designerTradingSystem.strategies[j].manageStage.stopLoss.phases[p].nextPhaseEvent.announcements[k].payload.uiObject.setErrorMessage(announcement.error) - if (announcement.formula !== undefined) { - designerTradingSystem.strategies[j].manageStage.stopLoss.phases[p].nextPhaseEvent.announcements[k].formula.payload.uiObject.setErrorMessage(announcement.formula.error) - } - } - } - - for (let n = 0; n < phase.moveToPhaseEvents.length; n++) { - let moveToPhaseEvent = phase.moveToPhaseEvents[n]; - if (moveToPhaseEvent !== undefined) { - designerTradingSystem.strategies[j].manageStage.stopLoss.phases[p].moveToPhaseEvent[n].payload.uiObject.setErrorMessage(manageStage.stopLoss.phases[p].moveToPhaseEvent[n].error) - - for (let k = 0; k < moveToPhaseEvent.situations.length; k++) { - - let situation = moveToPhaseEvent.situations[k]; - - processSituation(situation, designerTradingSystem.strategies[j].manageStage.stopLoss.phases[p].moveToPhaseEvent[n].situations[k]); - } - - for (let k = 0; k < moveToPhaseEvent.announcements.length; k++) { - - let announcement = moveToPhaseEvent.announcements[k]; - designerTradingSystem.strategies[j].manageStage.stopLoss.phases[p].moveToPhaseEvent[n].announcements[k].payload.uiObject.setErrorMessage(announcement.error) - if (announcement.formula !== undefined) { - designerTradingSystem.strategies[j].manageStage.stopLoss.phases[p].moveToPhaseEvent[n].announcements[k].formula.payload.uiObject.setErrorMessage(announcement.formula.error) - } - } - } - } - } - } - - if (manageStage.takeProfit !== undefined) { - designerTradingSystem.strategies[j].manageStage.takeProfit.payload.uiObject.setErrorMessage(manageStage.takeProfit.error) - - for (let p = 0; p < manageStage.takeProfit.phases.length; p++) { - - if (currentRecord.strategyNumber === j && currentRecord.takeProfitPhase - 1 === p) { - designerTradingSystem.strategies[j].manageStage.takeProfit.phases[p].payload.uiObject.isExecuting = true - } else { - designerTradingSystem.strategies[j].manageStage.takeProfit.phases[p].payload.uiObject.isExecuting = false - } - - let phase = manageStage.takeProfit.phases[p]; - designerTradingSystem.strategies[j].manageStage.takeProfit.phases[p].payload.uiObject.setErrorMessage(manageStage.takeProfit.phases[p].error) - - if (phase.formula !== undefined) { - designerTradingSystem.strategies[j].manageStage.takeProfit.phases[p].formula.payload.uiObject.setErrorMessage(manageStage.takeProfit.phases[p].formula.error) - - if (currentRecord.formulaErrors[formulaErrorsIndex] !== "") { - if (currentRecord.strategyNumber === j && currentRecord.takeProfitPhase - 1 === p) { - designerTradingSystem.strategies[j].manageStage.takeProfit.phases[p].formula.payload.uiObject.setErrorMessage(currentRecord.formulaErrors[formulaErrorsIndex]) - } - } - formulaErrorsIndex++ - - if (currentRecord.strategyNumber === j && currentRecord.takeProfitPhase - 1 === p) { - designerTradingSystem.strategies[j].manageStage.takeProfit.phases[p].formula.payload.uiObject.setValue(currentRecord.formulaValues[formulaValuesIndex]) - } - formulaValuesIndex++ - } - - for (let k = 0; k < phase.announcements.length; k++) { - - let announcement = phase.announcements[k]; - designerTradingSystem.strategies[j].manageStage.takeProfit.phases[p].announcements[k].payload.uiObject.setErrorMessage(announcement.error) - if (announcement.formula !== undefined) { - designerTradingSystem.strategies[j].manageStage.takeProfit.phases[p].announcements[k].formula.payload.uiObject.setErrorMessage(announcement.formula.error) - } - } - - let nextPhaseEvent = phase.nextPhaseEvent; - if (nextPhaseEvent !== undefined) { - designerTradingSystem.strategies[j].manageStage.takeProfit.phases[p].nextPhaseEvent.payload.uiObject.setErrorMessage(manageStage.takeProfit.phases[p].nextPhaseEvent.error) - - for (let k = 0; k < nextPhaseEvent.situations.length; k++) { - - let situation = nextPhaseEvent.situations[k]; - - processSituation(situation, designerTradingSystem.strategies[j].manageStage.takeProfit.phases[p].nextPhaseEvent.situations[k]); - } - - for (let k = 0; k < nextPhaseEvent.announcements.length; k++) { - - let announcement = nextPhaseEvent.announcements[k]; - designerTradingSystem.strategies[j].manageStage.takeProfit.phases[p].nextPhaseEvent.announcements[k].payload.uiObject.setErrorMessage(announcement.error) - if (announcement.formula !== undefined) { - designerTradingSystem.strategies[j].manageStage.takeProfit.phases[p].nextPhaseEvent.announcements[k].formula.payload.uiObject.setErrorMessage(announcement.formula.error) - } - } - } - for (let n = 0; n < phase.moveToPhaseEvents.length; n++) { - let moveToPhaseEvent = phase.moveToPhaseEvents[n]; - if (moveToPhaseEvent !== undefined) { - designerTradingSystem.strategies[j].manageStage.takeProfit.phases[p].moveToPhaseEvents[n].payload.uiObject.setErrorMessage(manageStage.takeProfit.phases[p].moveToPhaseEvents[n].error) - - for (let k = 0; k < moveToPhaseEvent.situations.length; k++) { - - let situation = moveToPhaseEvent.situations[k]; - - processSituation(situation, designerTradingSystem.strategies[j].manageStage.takeProfit.phases[p].moveToPhaseEvents[n].situations[k]); - } - - for (let k = 0; k < moveToPhaseEvent.announcements.length; k++) { - - let announcement = moveToPhaseEvent.announcements[k]; - designerTradingSystem.strategies[j].manageStage.takeProfit.phases[p].moveToPhaseEvents[n].announcements[k].payload.uiObject.setErrorMessage(announcement.error) - if (announcement.formula !== undefined) { - designerTradingSystem.strategies[j].manageStage.takeProfit.phases[p].moveToPhaseEvents[n].announcements[k].formula.payload.uiObject.setErrorMessage(announcement.formula.error) - } - } - } - } - } - } - } - - - let closeStage = strategy.closeStage - - if (closeStage !== undefined) { - designerTradingSystem.strategies[j].closeStage.payload.uiObject.setErrorMessage(closeStage.error) - - let closeExecution = closeStage.closeExecution - - if (closeExecution !== undefined) { - designerTradingSystem.strategies[j].closeStage.closeExecution.payload.uiObject.setErrorMessage(closeStage.closeExecution.error) - } - } - } - - function processSituation(situation, node) { - - node.payload.uiObject.setErrorMessage(situation.error) - - let highlightSituation = true - - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = node.conditions[m] - if (condition !== undefined) { - condition.payload.uiObject.setErrorMessage(situation.conditions[m].error) - - if (situation.conditions[m].javascriptCode !== undefined) { - if (condition.javascriptCode !== undefined) { - condition.javascriptCode.payload.uiObject.setErrorMessage(situation.conditions[m].javascriptCode.error) - } - } - - if (currentRecord.conditionsValues[conditionIndex] === 1) { - condition.payload.uiObject.highlight() - } else { - highlightSituation = false - } - conditionIndex++; - } - } - - if (highlightSituation === true) { - node.payload.uiObject.highlight() - } - } - - - browserCanvasContext.closePath(); - browserCanvasContext.fill(); - - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] sendRecordInfoToDesignerSpace -> err = " + err.stack); } - } - } - - - - function onViewportZoomChanged(event) { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] onViewportZoomChanged -> Entering function."); } - - recalculate(); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] onViewportZoomChanged -> err = " + err.stack); } - } - } - - function onViewportPositionChanged(event) { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] onViewportPositionChanged -> Entering function."); } - - if (event !== undefined) { - if (event.recalculate === true) { - recalculate() - return - } - } - if (Math.random() * 100 > 95) { - recalculate() - }; - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] onViewportPositionChanged -> err = " + err.stack); } - } - } - - function onDragFinished() { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] onDragFinished -> Entering function."); } - - recalculate(); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] onDragFinished -> err = " + err.stack); } - } - } -} - - - - - - - - - - - - - - - - - - - - - - diff --git a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/FinalResults.js b/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/FinalResults.js deleted file mode 100644 index dcc9ce8d2..000000000 --- a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/FinalResults.js +++ /dev/null @@ -1,348 +0,0 @@ -function newAAMastersPlottersTradingSimulationFinalResults() { - - const MODULE_NAME = "Final Results Plotter"; - const ERROR_LOG = true; - const INTENSIVE_LOG = false; - const logger = newWebDebugLog(); - logger.fileName = MODULE_NAME; - - let thisObject = { - - // Main functions and properties. - - initialize: initialize, - finalize: finalize, - container: undefined, - getContainer: getContainer, - setTimePeriod: setTimePeriod, - setDatetime: setDatetime, - draw: draw, - recalculateScale: recalculateScale, - currentRecord: undefined - }; - - /* this is part of the module template */ - - let container = newContainer(); // Do not touch this 3 lines, they are just needed. - container.initialize(); - thisObject.container = container; - - let timeLineCoordinateSystem = newTimeLineCoordinateSystem(); // Needed to be able to plot on the timeline, otherwise not. - - let timePeriod; // This will hold the current Time Period the user is at. - let datetime; // This will hold the current Datetime the user is at. - - let dataFile; // This is the current Market File being plotted. - let fileCursor; // This is the current File Cursor being used to retrieve Daily Files. - - let singleFile; // This object will provide the different Market Files at different Time Periods. - - /* these are module specific variables: */ - - let records = []; // Here we keep the records to be ploted every time the Draw() function is called by the AAWebPlatform. - - let imageStopLossPhase; - let imageTakeProfitPhase; - let imageRecord; - - let zoomChangedEventSubscriptionId - let offsetChangedEventSubscriptionId - let filesUpdatedEventSubscriptionId - let dragFinishedEventSubscriptionId - let dimmensionsChangedEventSubscriptionId - - return thisObject; - - function finalize() { - try { - - /* Stop listening to the necesary events. */ - - viewPort.eventHandler.stopListening(zoomChangedEventSubscriptionId); - viewPort.eventHandler.stopListening(offsetChangedEventSubscriptionId); - singleFile.eventHandler.stopListening(filesUpdatedEventSubscriptionId); - canvas.eventHandler.stopListening(dragFinishedEventSubscriptionId); - thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId) - - /* icons */ - - imageStopLossPhase = undefined; - imageTakeProfitPhase = undefined; - imageRecord = undefined; - - /* Destroy References */ - - singleFile = undefined; - - datetime = undefined; - timePeriod = undefined; - - dataFile = undefined; - fileCursor = undefined; - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] finalize -> err = " + err.stack); } - } - } - - function initialize(pStorage, pExchange, pMarket, pDatetime, pTimePeriod, callBackFunction) { - - try { - - /* Store the information received. */ - - singleFile = pStorage.singleFile; - - datetime = pDatetime; - timePeriod = pTimePeriod; - - dataFile = singleFile.getFile(timePeriod); - - /* Listen to the necesary events. */ - - zoomChangedEventSubscriptionId = viewPort.eventHandler.listenToEvent("Zoom Changed", onZoomChanged); - offsetChangedEventSubscriptionId = viewPort.eventHandler.listenToEvent("Offset Changed", onOffsetChanged); - filesUpdatedEventSubscriptionId = singleFile.eventHandler.listenToEvent("Files Updated", onFilesUpdated); - dragFinishedEventSubscriptionId = canvas.eventHandler.listenToEvent("Drag Finished", onDragFinished); - - /* Get ready for plotting. */ - - recalculate(); - - /* Ready for when dimmension changes. */ - - dimmensionsChangedEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('Dimmensions Changed', function () { - recalculate(); - }) - - callBackFunction(); - - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] initialize -> err = " + err.stack); } - } - } - - function getContainer(point) { - let container; - /* First we check if this point is inside this space. */ - if (this.container.frame.isThisPointHere(point) === true) { - return this.container; - } else { - /* This point does not belong to this space. */ - return undefined; - } - } - - function onFilesUpdated() { - try { - dataFile = singleFile.getFile(timePeriod); - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] onFilesUpdated -> err = " + err.stack); } - } - } - - function setTimePeriod(pTimePeriod) { - try { - if (timePeriod !== pTimePeriod) { - timePeriod = pTimePeriod; - dataFile = singleFile.getFile(timePeriod); - recalculate(); - } - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] setTimePeriod -> err = " + err.stack); } - } - } - - function setDatetime(pDatetime) { - datetime = pDatetime; - } - - function draw() { - try { - // Nothing to draw for now - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] draw -> err = " + err.stack); } - } - } - - function recalculate() { - - try { - - records = [] - - if (timePeriod >= _1_HOUR_IN_MILISECONDS) { - - recalculateUsingMarketFiles(); - - } else { - - recalculateUsingDailyFiles(); - - } - - thisObject.container.eventHandler.raiseEvent("Records Changed", records); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] recalculate -> err = " + err.stack); } - } - } - - function recalculate() { - - try { - - if (dataFile === undefined) { return; } // Initialization not complete yet. - - records = []; - - for (let i = 0; i < dataFile.length; i++) { - - let record = {}; - - record.begin = dataFile[i][0]; - record.end = dataFile[i][1]; - record.type = dataFile[i][2]; - record.rate = dataFile[i][3]; - record.amount = dataFile[i][4]; - record.balanceA = dataFile[i][5]; - record.balanceB = dataFile[i][6]; - record.profit = dataFile[i][7]; - record.lastTradeProfitLoss = dataFile[i][8]; - record.stopLoss = dataFile[i][9]; - record.roundtrips = dataFile[i][10]; - record.hits = dataFile[i][11]; - record.fails = dataFile[i][12]; - record.hitRatio = dataFile[i][13]; - record.ROI = dataFile[i][14]; - record.periods = dataFile[i][15]; - record.days = dataFile[i][16]; - record.anualizedRateOfReturn = dataFile[i][17]; - record.sellRate = dataFile[i][18]; - record.lastTradeROI = dataFile[i][19]; - record.strategy = dataFile[i][20]; - record.strategyPhase = dataFile[i][21]; - record.takeProfit = dataFile[i][22]; - record.stopLossPhase = dataFile[i][23]; - record.takeProfitPhase = dataFile[i][24]; - record.positionSize = dataFile[i][26]; // 25 is the message for the executor - record.initialBalanceA = dataFile[i][27]; - record.minimunBalanceA = dataFile[i][28]; - record.maximunBalanceA = dataFile[i][29]; - record.initialBalanceB = dataFile[i][30]; - record.minimunBalanceB = dataFile[i][31]; - record.maximunBalanceB = dataFile[i][32]; - record.baseAsset = dataFile[i][33]; - record.positionPeriods = dataFile[i][34]; - record.positionDays = dataFile[i][35]; - - thisObject.currentRecord = record; - thisObject.container.eventHandler.raiseEvent("Current Record Changed", thisObject.currentRecord); - } - - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] recalculate -> err = " + err.stack); } - } - } - - function recalculateScale() { - try { - // No scale needed - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] recalculateScale -> err = " + err.stack); } - } - } - - function plotChart() { - try { - let userPosition = getUserPosition() - let userPositionDate = userPosition.point.x - - let record; - - /* Now we calculate and plot the records */ - for (let i = 0; i < records.length; i++) { // We do not start in 0 so as to be able to read the previous record i - 1 - - record = records[i]; - - /* Send the current record to the panel */ - - if (userPositionDate >= record.begin && userPositionDate <= record.end) { - - let eventRecords = { - currentRecord: record, - lastRecord: records[records.length - 1] - }; - thisObject.container.eventHandler.raiseEvent("Current Record Changed", eventRecords); - } - } - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] plotChart -> err = " + err.stack); } - } - } - - function onZoomChanged(event) { - try { - recalculate(); - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] onZoomChanged -> err = " + err.stack); } - } - } - - function onOffsetChanged() { - try { - if (Math.random() * 100 > 95) { - recalculate() - }; - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] onOffsetChanged -> err = " + err.stack); } - } - } - - function onDragFinished() { - try { - recalculate(); - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] onDragFinished -> err = " + err.stack); } - } - } -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/FinalResultsPanel.js b/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/FinalResultsPanel.js deleted file mode 100644 index 0907ae991..000000000 --- a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/FinalResultsPanel.js +++ /dev/null @@ -1,360 +0,0 @@ - -function newAAMastersPlottersTradingSimulationTradingSimulationFinalResultsPanel() { - - let thisObject = { - fitFunction: undefined, - onEventRaised: onEventRaised, - container: undefined, - draw: draw, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - }; - - let container = newContainer(); - container.initialize(); - thisObject.container = container; - - container.displacement.containerName = "Final Results"; - container.frame.containerName = "Final Results"; - - let currentRecord; - let lastRecord; - let panelTabButton - - - return thisObject; - - function initialize() { - - thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL * 2; - thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL * 2.5; - - thisObject.container.frame.position.x = viewPort.visibleArea.topLeft.x + thisObject.container.frame.width * 1; - thisObject.container.frame.position.y = viewPort.visibleArea.topRight.y; - - panelTabButton = newPanelTabButton() - panelTabButton.parentContainer = thisObject.container - panelTabButton.container.frame.parentFrame = thisObject.container.frame - panelTabButton.fitFunction = thisObject.fitFunction - panelTabButton.initialize() - - } - - function finalize() { - - } - - function getContainer(point) { - - let container; - - container = panelTabButton.getContainer(point) - if (container !== undefined) { return container } - - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - - let checkPoint = { - x: point.x, - y: point.y - } - - checkPoint = thisObject.fitFunction(checkPoint) - - if (point.x === checkPoint.x && point.y === checkPoint.y) { - return thisObject.container; - } - } - } - - - function onEventRaised(records) { - - currentRecord = records.currentRecord; - lastRecord = records.lastRecord - - } - - - function draw() { - - thisObject.container.frame.draw(false, false, true, thisObject.fitFunction); - - plotCurrentRecordInfo(); - - panelTabButton.draw() - } - - - function plotCurrentRecordInfo() { - - if (currentRecord === undefined) { return; } - if (lastRecord === undefined) { return; } - - const frameBodyHeight = thisObject.container.frame.getBodyHeight(); - const frameTitleHeight = thisObject.container.frame.height - frameBodyHeight; - - const X_AXIS = thisObject.container.frame.width / 2; - const Y_AXIS = frameTitleHeight + frameBodyHeight / 2; - - - /* put the labels with the records values */ - - browserCanvasContext.beginPath(); - - let y = 0; - let increment = 0.024; - - y = y + increment; - y = y + increment; - printLabel('Current Position', X_AXIS, frameTitleHeight + frameBodyHeight * y, '1', 14); - - y = y + increment; - printLabel('Size', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel(currentRecord.positionSize, X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('Rate', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel(currentRecord.sellRate, X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('Stop', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel(currentRecord.stopLoss, X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('Take Profit', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel(currentRecord.takeProfit, X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('Periods', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel((currentRecord.positionPeriods), X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('Days', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel((currentRecord.positionDays).toFixed(2), X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - y = y + increment; - printLabel('Latest Position', X_AXIS, frameTitleHeight + frameBodyHeight * y, '1', 14); - - y = y + increment; - printLabel('Profit / Loss', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel((currentRecord.lastTradeProfitLoss), X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('ROI', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel((currentRecord.lastTradeROI).toFixed(2) + ' % ', X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - - - let bifurcationLevel = y - y = y + increment; - y = y + increment; - printLabel('Partial Results', X_AXIS - thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1', 14); - - y = y + increment; - printLabel('Profit / Loss', X_AXIS - thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel(currentRecord.profit, X_AXIS - thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('Trades', X_AXIS - thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel(currentRecord.roundtrips, X_AXIS - thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('Hits', X_AXIS - thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel(currentRecord.hits, X_AXIS - thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('Fails', X_AXIS - thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel(currentRecord.fails, X_AXIS - thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('Hit Ratio', X_AXIS - thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel((currentRecord.hitRatio * 100).toFixed(2) + ' %', X_AXIS - thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('ROI', X_AXIS - thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel((currentRecord.ROI * 100).toFixed(2) + ' %', X_AXIS - thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('Periods', X_AXIS - thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel(currentRecord.periods, X_AXIS - thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('Days', X_AXIS - thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel(currentRecord.days, X_AXIS - thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('Anualized Rate of Return', X_AXIS - thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel((currentRecord.anualizedRateOfReturn * 100).toFixed(2) + ' %', X_AXIS - thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - - y = bifurcationLevel - - y = y + increment; - y = y + increment; - printLabel('Final Results', X_AXIS + thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1', 14); - - y = y + increment; - printLabel('Profit / Loss', X_AXIS + thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel(lastRecord.profit, X_AXIS + thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('Trades', X_AXIS + thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel(lastRecord.roundtrips, X_AXIS + thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('Hits', X_AXIS + thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel(lastRecord.hits, X_AXIS + thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('Fails', X_AXIS + thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel(lastRecord.fails, X_AXIS + thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('Hit Ratio', X_AXIS + thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel((lastRecord.hitRatio * 100).toFixed(2) + ' %', X_AXIS + thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('ROI', X_AXIS + thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel((lastRecord.ROI * 100).toFixed(2) + ' %', X_AXIS + thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('Periods', X_AXIS + thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel(lastRecord.periods, X_AXIS + thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('Days', X_AXIS + thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel(lastRecord.days, X_AXIS + thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - y = y + increment; - printLabel('Anualized Rate of Return', X_AXIS + thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '0.60'); - y = y + increment; - printLabel((lastRecord.anualizedRateOfReturn * 100).toFixed(2) + ' %', X_AXIS + thisObject.container.frame.width / 4, frameTitleHeight + frameBodyHeight * y, '1.00', 14); - - - - function printLabel(labelToPrint, x, y, opacity, fontSize) { - - let labelPoint; - if (fontSize === undefined) { fontSize = 10 }; - - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY; - - let label = '' + labelToPrint; - if (isNaN(label) === false) { - label = Number(label).toLocaleString(); - if ((label === "-0" || label === "0") && (labelToPrint !== 0) && (labelToPrint !== "0.00")) { - label = Number(labelToPrint).toFixed(6); - } - } - let xOffset = label.length / 2 * fontSize * FONT_ASPECT_RATIO; - - labelPoint = { - x: x - xOffset, - y: y - }; - - labelPoint = thisObject.container.frame.frameThisPoint(labelPoint); - labelPoint = thisObject.fitFunction(labelPoint) - - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.DARK + ', ' + opacity + ')'; - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y); - - } - - browserCanvasContext.closePath(); - browserCanvasContext.fill(); - - /* Parameters */ - let params - let paramsArray = [] - let positionTaken = false - - if (currentRecord.positionSize > 0) { - positionTaken = true - } - - params = {} - params.VALUE = currentRecord.balanceA; - params.INIT_VALUE = currentRecord.initialBalanceA - params.MIN_VALUE = currentRecord.minimunBalanceA - params.MAX_VALUE = currentRecord.maximunBalanceA - params.ASSET_LABEL = 'Asset A' - params.ASSET_NAME = DEFAULT_MARKET.assetB - params.LEFT_OFFSET = 100 - params.POSITION_TAKEN = positionTaken - params.BASE_ASSET = currentRecord.baseAsset - params.DECIMALS = 4 - - paramsArray.push(params) - - params = {} - params.VALUE = currentRecord.balanceB; - params.MIN_VALUE = currentRecord.minimunBalanceB - params.INIT_VALUE = currentRecord.initialBalanceB - params.MAX_VALUE = currentRecord.maximunBalanceB - params.ASSET_LABEL = 'Asset B' - params.ASSET_NAME = DEFAULT_MARKET.assetA - params.LEFT_OFFSET = 220 - params.POSITION_TAKEN = positionTaken - params.BASE_ASSET = currentRecord.baseAsset - params.DECIMALS = 2 - - paramsArray.push(params) - - canvas.cockpitSpace.assetBalances.setParamsArray(paramsArray) - } -} - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/SimulationExecution.js b/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/SimulationExecution.js deleted file mode 100644 index 9db58a633..000000000 --- a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/SimulationExecution.js +++ /dev/null @@ -1,799 +0,0 @@ -function newTradingEnginesPlottersTradingSimulationSimulationExecution() { - - const MODULE_NAME = "Simulation Execution Plotter"; - const INTENSIVE_LOG = false; - const ERROR_LOG = true; - const logger = newWebDebugLog(); - logger.fileName = MODULE_NAME; - - let thisObject = { - - // Main functions and properties. - - initialize: initialize, - finalize: finalize, - container: undefined, - fitFunction: undefined, - getContainer: getContainer, - setTimeFrame: setTimeFrame, - setDatetime: setDatetime, - setCoordinateSystem: setCoordinateSystem, - draw: draw - }; - - /* this is part of the module template */ - - let container = newContainer(); // Do not touch this 3 lines, they are just needed. - container.initialize(); - thisObject.container = container; - - let coordinateSystem - - let timeFrame; // This will hold the current Time Frame the user is at. - let datetime; // This will hold the current Datetime the user is at. - - /* these are module specific variables: */ - - let fileSequence; - let plotElements = []; // This is where the elements to be plotted are stored before plotting. - let plotLines = []; // Here we store the lines of open positions. - - let previousNotesSetKey; - - let onMouseOverEventSuscriptionId - let offsetChangedEventSubscriptionId - let filesUpdatedEventSubscriptionId - let dimmensionsChangedEventSubscriptionId - let scaleChangedEventSubscriptionId - - let userPositionDate - return thisObject; - - function finalize() { - try { - - /* Stop listening to the necesary events. */ - thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId) - canvas.chartingSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId); - fileSequence.eventHandler.stopListening(filesUpdatedEventSubscriptionId); - thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId) - - /* Destroyd References */ - - datetime = undefined; - timeFrame = undefined; - - fileSequence = undefined; - plotElements = undefined; - plotLines = undefined; - - thisObject.fitFunction = undefined - - finalizeCoordinateSystem() - coordinateSystem = undefined - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] ' + MODULE_NAME + ' -> finalize -> err = " + err.stack.stack); } - } - } - - function initialize(pStorage, pDatetime, pTimeFrame, pCoordinateSystem, callBackFunction) { - - try { - - datetime = pDatetime; - timeFrame = pTimeFrame; - coordinateSystem = pCoordinateSystem - initializeCoordinateSystem() - - fileSequence = pStorage.fileSequences[0]; - - recalculate(); - - filesUpdatedEventSubscriptionId = fileSequence.eventHandler.listenToEvent("Files Updated", onFilesUpdated); // Only the first sequence is supported right now. - offsetChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged); - onMouseOverEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) - - /* Ready for when dimmension changes. */ - - dimmensionsChangedEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('Dimmensions Changed', function () { - recalculate(); - }) - callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE); - - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] ' + MODULE_NAME + ' -> initialize -> err = " + err.stack); } - callBackFunction(GLOBAL.CUSTOM_FAIL_RESPONSE); - } - } - - function initializeCoordinateSystem() { - scaleChangedEventSubscriptionId = coordinateSystem.eventHandler.listenToEvent('Scale Changed', onScaleChanged) - } - - function finalizeCoordinateSystem() { - coordinateSystem.eventHandler.stopListening(scaleChangedEventSubscriptionId) - } - - function onScaleChanged() { - recalculate(); - } - - function onMouseOver(event) { - let userPosition = getDateFromPointAtBrowserCanvas(event, thisObject.container, coordinateSystem) - userPositionDate = userPosition.valueOf() - } - - function getContainer(point) { - try { - let container; - /* First we check if this point is inside this space. */ - if (this.container.frame.isThisPointHere(point) === true) { - return this.container; - } else { - /* This point does not belong to this space. */ - return undefined; - } - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] ' + MODULE_NAME + ' -> initialize -> err = " + err.stack); } - } - } - - function onFilesUpdated() { - recalculate(); - } - - function setTimeFrame(pTimeFrame) { - timeFrame = pTimeFrame; - recalculate(); - } - - function setDatetime(pDatetime) { - datetime = pDatetime; - } - - function setCoordinateSystem(pCoordinateSystem) { - finalizeCoordinateSystem() - coordinateSystem = pCoordinateSystem - initializeCoordinateSystem() - } - - function onViewportPositionChanged() { - if (Math.random() * 100 > 95) { - recalculate() - } - } - - function recalculate() { - try { - if (fileSequence === undefined) { return; } - /* - - We are going to filter the records depending on the Time Frame. We want that for a 1 min time peroid all the records appears on screen, - but for higher periods, we will filter out some records, so that they do not overlap ever. - - */ - plotElements = []; - plotLines = []; - - let lastSellRate; - let lastSellDate; - let sellExecRate; - - let lastBuyRate; - let lastBuyDate; - let buyExecRate; - - let maxSequence = fileSequence.getFilesLoaded(); - - for (let j = 0; j < maxSequence; j++) { - - let file = fileSequence.getFile(j); - - let history = []; - let lines = []; - - /* First the small balls */ - - const ONE_MIN_IN_MILISECONDS = 60 * 1000; - let step = timeFrame / ONE_MIN_IN_MILISECONDS; - step = 1; // For now we dont discard records depending on the zoom level. - - let i = 0; - let lastRecordPushed = 0; - - for (i = 0; i < file.length; i = i + step) { - - let newHistoryRecord = { - - date: Math.trunc(file[i][0] / 60000) * 60000 + 30000, - buyAvgRate: file[i][1], - sellAvgRate: file[i][2], - - lastSellRate: file[i][3], - sellExecRate: file[i][4], - lastBuyRate: file[i][5], - buyExecRate: file[i][6], - - marketRate: file[i][7], - newPositions: file[i][8], - newTrades: file[i][9], - movedPositions: file[i][10], - profitsAssetA: file[i][11], - profitsAssetB: file[i][12], - combinedProfitsA: file[i][13], - combinedProfitsB: file[i][14], - datetime: file[i][0] - }; - - /* Finally we add this History Record to the Array */ - - history.push(newHistoryRecord); - lastRecordPushed = i; - - /* Here we build the lines. */ - - //if (timeFrame <= 1 * 60 * 1000) { - - if (newHistoryRecord.lastSellRate > 0) { - lastSellRate = newHistoryRecord.lastSellRate; - lastSellDate = newHistoryRecord.date; - } - - if (newHistoryRecord.sellExecRate > 0) { - let newLine = { - type: "sell", - x1: lastSellDate, - y1: lastSellRate, - x2: newHistoryRecord.date, - y2: newHistoryRecord.sellExecRate - }; - lines.push(newLine); - } - - if (newHistoryRecord.lastBuyRate > 0) { - lastBuyRate = newHistoryRecord.lastBuyRate; - lastBuyDate = newHistoryRecord.date; - } - - if (newHistoryRecord.buyExecRate > 0) { - let newLine = { - type: "buy", - x1: lastBuyDate, - y1: lastBuyRate, - x2: newHistoryRecord.date, - y2: newHistoryRecord.buyExecRate - }; - lines.push(newLine); - } - //} - } - - /* We allways want to put the last record of the file on the filterd dataset, so as to allways show the latest advance of the bot. */ - - i = file.length - 1; - - if (lastRecordPushed !== i) { - - let newHistoryRecord = { - - date: Math.trunc(file[i][0] / 60000) * 60000 + 30000, - buyAvgRate: file[i][1], - sellAvgRate: file[i][2], - - lastSellRate: file[i][3], - sellExecRate: file[i][4], - lastBuyRate: file[i][5], - buyExecRate: file[i][6], - - marketRate: file[i][7], - newPositions: file[i][8], - newTrades: file[i][9], - movedPositions: file[i][10], - profitsAssetA: file[i][11], - profitsAssetB: file[i][12], - combinedProfitsA: file[i][13], - combinedProfitsB: file[i][14] - }; - - history.push(newHistoryRecord); - - } - - - for (let i = 0; i < file.length; i++) { - - let newHistoryRecord = { - - date: Math.trunc(file[i][0] / 60000) * 60000 + 30000, - buyAvgRate: file[i][1], - sellAvgRate: file[i][2], - - lastSellRate: file[i][3], - sellExecRate: file[i][4], - lastBuyRate: file[i][5], - buyExecRate: file[i][6], - - marketRate: file[i][7], - newPositions: file[i][8], - newTrades: file[i][9], - movedPositions: file[i][10], - profitsAssetA: file[i][11], - profitsAssetB: file[i][12], - combinedProfitsA: file[i][13], - combinedProfitsB: file[i][14] - }; - - } - plotElements.push(history); - plotLines.push(lines); - } - - thisObject.container.eventHandler.raiseEvent("History Changed", history); - - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] ' + MODULE_NAME + ' -> recalculate -> err = " + err.stack); } - } - } - - function draw() { - plotChart(); - } - - function plotChart() { - try { - - let currentRecord - - let point = { - x: 0, - y: 0 - }; - - let history; - - for (let j = 0; j < plotElements.length; j++) { - - let history = plotElements[j]; - - for (let i = 0; i < history.length; i++) { - - record = history[i]; - currentRecord = record - - let timestamp = record.date // Math.trunc(record.date / timeFrame) * timeFrame + timeFrame / 2; - - point = { - x: timestamp, - y: record.marketRate - }; - - point = coordinateSystem.transformThisPoint(point); - point = transformThisPoint(point, thisObject.container); - - if (point.x < canvas.chartingSpace.viewport.visibleArea.bottomLeft.x || point.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x) { continue; } - - point = canvas.chartingSpace.viewport.fitIntoVisibleArea(point); - point = thisObject.fitFunction(point); - - let isCurrentRecord = false; - - if (userPositionDate >= record.date - 30000 && userPositionDate <= record.date + 30000 - 1) { - isCurrentRecord = true; - } - - let opacity = '1'; - let currentRadius = 10 - - /* Draw a red inverted triangle on exec sell */ - if (record.sellExecRate > 0) { - - opacity = '1'; - - let normalSize = 5 - let extraSize = 0 - if (isCurrentRecord) { extraSize = 5 } - - let point1 = { - x: record.date, - y: record.sellExecRate - }; - - let point2 = { - x: record.date + timeFrame / 7 * (normalSize + extraSize), - y: record.sellExecRate - }; - - let point3 = { - x: record.date - timeFrame / 7 * (normalSize + extraSize), - y: record.sellExecRate - }; - - point1 = coordinateSystem.transformThisPoint(point1); - point1 = transformThisPoint(point1, thisObject.container); - point1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point1); - point1 = thisObject.fitFunction(point1); - - point2 = coordinateSystem.transformThisPoint(point2); - point2 = transformThisPoint(point2, thisObject.container); - point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2); - point2 = thisObject.fitFunction(point2); - - point3 = coordinateSystem.transformThisPoint(point3); - point3 = transformThisPoint(point3, thisObject.container); - point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3); - point3 = thisObject.fitFunction(point3); - - let diff = point2.x - point3.x; - point2.y = point2.y - diff; - point3.y = point3.y - diff; - - currentRecord.timeFrame = diff - - point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2); - point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3); - point2 = thisObject.fitFunction(point2); - point3 = thisObject.fitFunction(point3); - - browserCanvasContext.beginPath(); - - browserCanvasContext.moveTo(point1.x, point1.y); - browserCanvasContext.lineTo(point2.x, point2.y); - browserCanvasContext.lineTo(point3.x, point3.y); - browserCanvasContext.lineTo(point1.x, point1.y); - - browserCanvasContext.closePath(); - - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + opacity + ')'; - - if (isCurrentRecord === false) { - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RED + ', ' + opacity + ')'; - } else { - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + opacity + ')'; /* highlight the current record */ - } - - browserCanvasContext.fill(); - - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.lineWidth = 0.25; - browserCanvasContext.stroke(); - - } - - /* Draw a green triangle on exec buy */ - if (record.buyExecRate > 0) { - - opacity = '1'; - - let normalSize = 5 - let extraSize = 0 - if (isCurrentRecord) { extraSize = 5 } - - let point1 = { - x: record.date, - y: record.buyExecRate - }; - - let point2 = { - x: record.date + timeFrame / 7 * (normalSize + extraSize), - y: record.buyExecRate - }; - - let point3 = { - x: record.date - timeFrame / 7 * (normalSize + extraSize), - y: record.buyExecRate - }; - - point1 = coordinateSystem.transformThisPoint(point1); - point1 = transformThisPoint(point1, thisObject.container); - point1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point1); - point1 = thisObject.fitFunction(point1); - - point2 = coordinateSystem.transformThisPoint(point2); - point2 = transformThisPoint(point2, thisObject.container); - point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2); - point2 = thisObject.fitFunction(point2); - - point3 = coordinateSystem.transformThisPoint(point3); - point3 = transformThisPoint(point3, thisObject.container); - point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3); - point3 = thisObject.fitFunction(point3); - - let diff = point2.x - point3.x; - point2.y = point2.y + diff; - point3.y = point3.y + diff; - - currentRecord.timeFrame = diff - - point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2); - point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3); - point2 = thisObject.fitFunction(point2); - point3 = thisObject.fitFunction(point3); - - browserCanvasContext.beginPath(); - - browserCanvasContext.moveTo(point1.x, point1.y); - browserCanvasContext.lineTo(point2.x, point2.y); - browserCanvasContext.lineTo(point3.x, point3.y); - browserCanvasContext.lineTo(point1.x, point1.y); - - browserCanvasContext.closePath(); - - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.GREEN + ', ' + opacity + ')'; - - if (isCurrentRecord === false) { - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.PATINATED_TURQUOISE + ', ' + opacity + ')'; - } else { - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + opacity + ')'; /* highlight the current record */ - } - - browserCanvasContext.fill(); - - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.lineWidth = 0.25; - browserCanvasContext.stroke(); - } - - /* Draw a red inverted triangle on sell */ - if (record.lastSellRate > 0) { - opacity = '1'; - - let normalSize = 5 - let extraSize = 0 - if (isCurrentRecord) { extraSize = 5 } - - let point1 = { - x: record.date, - y: record.lastSellRate - }; - - let point2 = { - x: record.date + timeFrame / 7 * (normalSize + extraSize), - y: record.lastSellRate - }; - - let point3 = { - x: record.date - timeFrame / 7 * (normalSize + extraSize), - y: record.lastSellRate - }; - - point1 = coordinateSystem.transformThisPoint(point1); - point1 = transformThisPoint(point1, thisObject.container); - point1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point1); - point1 = thisObject.fitFunction(point1); - - point2 = coordinateSystem.transformThisPoint(point2); - point2 = transformThisPoint(point2, thisObject.container); - point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2); - point2 = thisObject.fitFunction(point2); - - point3 = coordinateSystem.transformThisPoint(point3); - point3 = transformThisPoint(point3, thisObject.container); - point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3); - point3 = thisObject.fitFunction(point3); - - let diff = point2.x - point3.x; - point2.y = point2.y - diff; - point3.y = point3.y - diff; - - currentRecord.timeFrame = diff - - point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2); - point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3); - point2 = thisObject.fitFunction(point2); - point3 = thisObject.fitFunction(point3); - - browserCanvasContext.beginPath(); - - browserCanvasContext.moveTo(point1.x, point1.y); - browserCanvasContext.lineTo(point2.x, point2.y); - browserCanvasContext.lineTo(point3.x, point3.y); - browserCanvasContext.lineTo(point1.x, point1.y); - - browserCanvasContext.closePath(); - - if (isCurrentRecord === false) { - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + opacity + ')'; - } else { - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + opacity + ')'; /* highlight the current record */ - } - - browserCanvasContext.fill(); - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RED + ', ' + opacity + ')'; - - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.lineWidth = 0.25; - browserCanvasContext.stroke(); - } - - /* Draw a green triangle on buy */ - if (record.lastBuyRate > 0) { - - opacity = '1'; - - let normalSize = 5 - let extraSize = 0 - if (isCurrentRecord) { extraSize = 5 } - - let point1 = { - x: record.date, - y: record.lastBuyRate - }; - - let point2 = { - x: record.date + timeFrame / 7 * (normalSize + extraSize), - y: record.lastBuyRate - }; - - let point3 = { - x: record.date - timeFrame / 7 * (normalSize + extraSize), - y: record.lastBuyRate - }; - - point1 = coordinateSystem.transformThisPoint(point1); - point1 = transformThisPoint(point1, thisObject.container); - point1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point1); - point1 = thisObject.fitFunction(point1); - - point2 = coordinateSystem.transformThisPoint(point2); - point2 = transformThisPoint(point2, thisObject.container); - point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2); - point2 = thisObject.fitFunction(point2); - - point3 = coordinateSystem.transformThisPoint(point3); - point3 = transformThisPoint(point3, thisObject.container); - point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3); - point3 = thisObject.fitFunction(point3); - - let diff = point2.x - point3.x; - point2.y = point2.y + diff; - point3.y = point3.y + diff; - - currentRecord.timeFrame = diff - - point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2); - point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3); - point2 = thisObject.fitFunction(point2); - point3 = thisObject.fitFunction(point3); - - browserCanvasContext.beginPath(); - - browserCanvasContext.moveTo(point1.x, point1.y); - browserCanvasContext.lineTo(point2.x, point2.y); - browserCanvasContext.lineTo(point3.x, point3.y); - browserCanvasContext.lineTo(point1.x, point1.y); - - browserCanvasContext.closePath(); - - if (isCurrentRecord === false) { - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + opacity + ')'; - } else { - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + opacity + ')'; /* highlight the current record */ - } - - browserCanvasContext.fill(); - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.PATINATED_TURQUOISE + ', ' + opacity + ')'; - - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.lineWidth = 0.25; - browserCanvasContext.stroke(); - } - - /* Send the current record to the panel */ - - if (userPositionDate >= record.date - 30000 && userPositionDate < record.date + 30000) { - thisObject.container.eventHandler.raiseEvent("Current Record Changed", currentRecord); - } - - /* Circles */ - - let radius = 2; - currentRadius = 10 - - /* Outer Circle */ - - if (isCurrentRecord === true) { - - browserCanvasContext.beginPath(); - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + opacity + ')'; - - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + opacity + ')'; /* highlight the current record */ - - browserCanvasContext.arc(point.x, point.y, currentRadius, 0, Math.PI * 2, true); - browserCanvasContext.closePath(); - - if (point.x < canvas.chartingSpace.viewport.visibleArea.topLeft.x + 50 || point.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x - 50) {/*we leave this history without fill. */ } else { - browserCanvasContext.fill(); - } - - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.lineWidth = 0.25; - browserCanvasContext.stroke(); - } - - /* Inner Circle */ - - browserCanvasContext.beginPath(); - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + opacity + ')'; - - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.GOLDEN_ORANGE + ', ' + opacity + ')'; - - browserCanvasContext.arc(point.x, point.y, radius, 0, Math.PI * 2, true); - browserCanvasContext.closePath(); - - if (point.x < canvas.chartingSpace.viewport.visibleArea.topLeft.x + 50 || point.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x - 50) {/*we leave this history without fill. */ } else { - browserCanvasContext.fill(); - } - - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.lineWidth = 0.25; - browserCanvasContext.stroke(); - - } - - /* Draw the lines connecting plot elements. */ - let lines = plotLines[j]; - - for (let i = 0; i < lines.length; i++) { - - let line = lines[i]; - - opacity = '1'; - - let point1 = { - x: line.x1, - y: line.y1 - }; - - let point2 = { - x: line.x2, - y: line.y2 - }; - - point1 = coordinateSystem.transformThisPoint(point1); - point1 = transformThisPoint(point1, thisObject.container); - point1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point1); - point1 = thisObject.fitFunction(point1); - - point2 = coordinateSystem.transformThisPoint(point2); - point2 = transformThisPoint(point2, thisObject.container); - point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2); - point2 = thisObject.fitFunction(point2); - - browserCanvasContext.beginPath(); - - browserCanvasContext.moveTo(point1.x, point1.y); - browserCanvasContext.lineTo(point2.x, point2.y); - - browserCanvasContext.closePath(); - - if (line.type === "sell") { - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RED + ', ' + opacity + ')'; - } else { - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.PATINATED_TURQUOISE + ', ' + opacity + ')'; - } - - browserCanvasContext.setLineDash([4, 1]) - browserCanvasContext.lineWidth = 0.25; - browserCanvasContext.stroke(); - } - - - } - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] ' + MODULE_NAME + ' -> plotChart -> err = " + err.stack); } - } - } -} - - - - - - - - - diff --git a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/SimulationExecutionPanel.js b/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/SimulationExecutionPanel.js deleted file mode 100644 index 48410e698..000000000 --- a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/SimulationExecutionPanel.js +++ /dev/null @@ -1,465 +0,0 @@ - -function newTradingEnginesPlottersTradingSimulationSimulationExecutionSimulationExecutionPanel() { - - - let thisObject = { - fitFunction: undefined, - container: undefined, - isVisible: true, - onRecordChange: onRecordChange, - draw: draw, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - }; - - let container = newContainer(); - container.initialize(); - thisObject.container = container; - - container.frame.containerName = "Trading Execution"; - - let currentRecord; - let upDownButton - - return thisObject; - - function finalize() { - thisObject.container.finalize() - thisObject.container = undefined - thisObject.fitFunction = undefined - thisObject.isVisible = undefined - - currentRecord = undefined - upDownButton.finalize() - upDownButton = undefined - } - - function initialize() { - - thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL; - thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL * 2.5; - - thisObject.container.frame.position.x = canvas.chartingSpace.viewport.visibleArea.topLeft.x + thisObject.container.frame.width * 4; - thisObject.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.topRight.y; - - upDownButton = newUpDownButton() - upDownButton.parentContainer = thisObject.container - upDownButton.container.frame.parentFrame = thisObject.container.frame - upDownButton.fitFunction = thisObject.fitFunction - upDownButton.initialize() - } - - function getContainer(point) { - if (thisObject.isVisible !== true) { return } - let container; - - container = upDownButton.getContainer(point) - if (container !== undefined) { return container } - - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - - let checkPoint = { - x: point.x, - y: point.y - } - - checkPoint = thisObject.fitFunction(checkPoint) - - if (point.x === checkPoint.x && point.y === checkPoint.y) { - return thisObject.container; - } - } - } - - - function onRecordChange(lastCurrentCandle) { - - currentRecord = lastCurrentCandle; - - } - - - function draw() { - if (thisObject.isVisible !== true) { return } - thisObject.container.frame.draw(false, false, true, thisObject.fitFunction); - - plot(); - - upDownButton.draw() - - } - - - function plot() { - - if (currentRecord === undefined) { return; } - - const frameBodyHeight = thisObject.container.frame.getBodyHeight(); - const frameTitleHeight = thisObject.container.frame.height - frameBodyHeight; - - const X_AXIS = thisObject.container.frame.width / 2; - const Y_AXIS = frameTitleHeight + frameBodyHeight / 2; - - record = currentRecord - - point = { - x: X_AXIS, - y: Y_AXIS - }; - - point = thisObject.container.frame.frameThisPoint(point); - point = thisObject.fitFunction(point); - - let isCurrentRecord = true; - - let radius = 2; - let currentRadius = 10 - let opacity = '1'; - - /* Draw a red inverted triangle on exec sell */ - if (record.sellExecRate > 0) { - - opacity = '1'; - - let point1 = { - x: X_AXIS, - y: Y_AXIS - }; - - let point2 = { - x: X_AXIS + record.timeFrame / 4, - y: Y_AXIS - }; - - let point3 = { - x: X_AXIS - record.timeFrame / 4, - y: Y_AXIS - }; - - point1 = thisObject.container.frame.frameThisPoint(point1); - point1 = thisObject.fitFunction(point1); - - point2 = thisObject.container.frame.frameThisPoint(point2); - point2 = thisObject.fitFunction(point2); - - point3 = thisObject.container.frame.frameThisPoint(point3); - point3 = thisObject.fitFunction(point3); - - let diff = point2.x - point3.x; - point2.y = point2.y - diff; - point3.y = point3.y - diff; - - point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2); - point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3); - - browserCanvasContext.beginPath(); - - browserCanvasContext.moveTo(point1.x, point1.y); - browserCanvasContext.lineTo(point2.x, point2.y); - browserCanvasContext.lineTo(point3.x, point3.y); - browserCanvasContext.lineTo(point1.x, point1.y); - - browserCanvasContext.closePath(); - - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + opacity + ')'; - - if (isCurrentRecord === false) { - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RED + ', ' + opacity + ')'; - } else { - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + opacity + ')'; /* highlight the current record */ - } - - browserCanvasContext.fill(); - - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.stroke(); - - } - - /* Draw a green triangle on exec buy */ - if (record.buyExecRate > 0) { - - opacity = '1'; - - let point1 = { - x: X_AXIS, - y: Y_AXIS - }; - - let point2 = { - x: X_AXIS + record.timeFrame / 4, - y: Y_AXIS - }; - - let point3 = { - x: X_AXIS - record.timeFrame / 4, - y: Y_AXIS - }; - - point1 = thisObject.container.frame.frameThisPoint(point1); - point1 = thisObject.fitFunction(point1); - - point2 = thisObject.container.frame.frameThisPoint(point2); - point2 = thisObject.fitFunction(point2); - - point3 = thisObject.container.frame.frameThisPoint(point3); - point3 = thisObject.fitFunction(point3); - - let diff = point2.x - point3.x; - point2.y = point2.y + diff; - point3.y = point3.y + diff; - - point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2); - point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3); - - browserCanvasContext.beginPath(); - - browserCanvasContext.moveTo(point1.x, point1.y); - browserCanvasContext.lineTo(point2.x, point2.y); - browserCanvasContext.lineTo(point3.x, point3.y); - browserCanvasContext.lineTo(point1.x, point1.y); - - browserCanvasContext.closePath(); - - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.GREEN + ', ' + opacity + ')'; - - if (isCurrentRecord === false) { - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.PATINATED_TURQUOISE + ', ' + opacity + ')'; - } else { - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + opacity + ')'; /* highlight the current record */ - } - - browserCanvasContext.fill(); - - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.stroke(); - } - - /* Draw a red inverted triangle on sell */ - if (record.lastSellRate > 0) { - opacity = '1'; - - let point1 = { - x: X_AXIS, - y: Y_AXIS - }; - - let point2 = { - x: X_AXIS + record.timeFrame / 4, - y: Y_AXIS - }; - - let point3 = { - x: X_AXIS - record.timeFrame / 4, - y: Y_AXIS - }; - - point1 = thisObject.container.frame.frameThisPoint(point1); - point1 = thisObject.fitFunction(point1); - - point2 = thisObject.container.frame.frameThisPoint(point2); - point2 = thisObject.fitFunction(point2); - - point3 = thisObject.container.frame.frameThisPoint(point3); - point3 = thisObject.fitFunction(point3); - - let diff = point2.x - point3.x; - point2.y = point2.y - diff; - point3.y = point3.y - diff; - - point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2); - point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3); - - browserCanvasContext.beginPath(); - - browserCanvasContext.moveTo(point1.x, point1.y); - browserCanvasContext.lineTo(point2.x, point2.y); - browserCanvasContext.lineTo(point3.x, point3.y); - browserCanvasContext.lineTo(point1.x, point1.y); - - browserCanvasContext.closePath(); - - if (isCurrentRecord === false) { - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + opacity + ')'; - } else { - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + opacity + ')'; /* highlight the current record */ - } - - browserCanvasContext.fill(); - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RED + ', ' + opacity + ')'; - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.stroke(); - } - - /* Draw a green triangle on buy */ - if (record.lastBuyRate > 0) { - - opacity = '1'; - - let point1 = { - x: X_AXIS, - y: Y_AXIS - }; - - let point2 = { - x: X_AXIS + record.timeFrame / 4, - y: Y_AXIS - }; - - let point3 = { - x: X_AXIS - record.timeFrame / 4, - y: Y_AXIS - }; - - point1 = thisObject.container.frame.frameThisPoint(point1); - point1 = thisObject.fitFunction(point1); - - point2 = thisObject.container.frame.frameThisPoint(point2); - point2 = thisObject.fitFunction(point2); - - point3 = thisObject.container.frame.frameThisPoint(point3); - point3 = thisObject.fitFunction(point3); - - let diff = point2.x - point3.x; - point2.y = point2.y + diff; - point3.y = point3.y + diff; - - point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2); - point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3); - - browserCanvasContext.beginPath(); - - browserCanvasContext.moveTo(point1.x, point1.y); - browserCanvasContext.lineTo(point2.x, point2.y); - browserCanvasContext.lineTo(point3.x, point3.y); - browserCanvasContext.lineTo(point1.x, point1.y); - - browserCanvasContext.closePath(); - - if (isCurrentRecord === false) { - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.WHITE + ', ' + opacity + ')'; - } else { - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + opacity + ')'; /* highlight the current record */ - } - - browserCanvasContext.fill(); - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.PATINATED_TURQUOISE + ', ' + opacity + ')'; - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.stroke(); - } - - browserCanvasContext.lineWidth = 0.25; - - /* Outer Circle */ - - if (isCurrentRecord === true) { - - browserCanvasContext.beginPath(); - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + opacity + ')'; - - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + opacity + ')'; /* highlight the current record */ - - browserCanvasContext.arc(point.x, point.y, currentRadius, 0, Math.PI * 2, true); - browserCanvasContext.closePath(); - - if (point.x < canvas.chartingSpace.viewport.visibleArea.topLeft.x + 50 || point.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x - 50) {/*we leave this history without fill. */ } else { - browserCanvasContext.fill(); - } - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.stroke(); - } - - /* Inner Circle */ - - browserCanvasContext.beginPath(); - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + opacity + ')'; - - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.GOLDEN_ORANGE + ', ' + opacity + ')'; - - browserCanvasContext.arc(point.x, point.y, radius, 0, Math.PI * 2, true); - browserCanvasContext.closePath(); - - if (point.x < canvas.chartingSpace.viewport.visibleArea.topLeft.x + 50 || point.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x - 50) {/*we leave this history without fill. */ } else { - browserCanvasContext.fill(); - } - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.stroke(); - - /* put the labels */ - - browserCanvasContext.beginPath(); - - let y; - let recordDate = new Date(currentRecord.datetime) - - printLabel('Market Rate', X_AXIS, frameTitleHeight + frameBodyHeight * 0.05 / 2, '1'); - printLabel(currentRecord.marketRate, X_AXIS, frameTitleHeight + frameBodyHeight * 0.10 / 2, '0.50'); - - printLabel('Sell Rate', X_AXIS, frameTitleHeight + frameBodyHeight * 0.15 / 2, '1'); - printLabel(currentRecord.lastSellRate, X_AXIS, frameTitleHeight + frameBodyHeight * 0.20 / 2, '0.50'); - - printLabel('Sell Executed Rate', X_AXIS, frameTitleHeight + frameBodyHeight * 0.25 / 2, '1'); - printLabel(currentRecord.sellExecRate, X_AXIS, frameTitleHeight + frameBodyHeight * 0.30 / 2, '0.50'); - - printLabel('Buy Rate', X_AXIS, frameTitleHeight + frameBodyHeight * 0.35 / 2, '1'); - printLabel(currentRecord.lastBuyRate, X_AXIS, frameTitleHeight + frameBodyHeight * 0.40 / 2, '0.40'); - - printLabel('Buy Executed Rate', X_AXIS, frameTitleHeight + frameBodyHeight * 0.45 / 2, '1'); - printLabel(currentRecord.buyExecRate, X_AXIS, frameTitleHeight + frameBodyHeight * 0.50 / 2, '0.50'); - - printLabel('ROI Asset A', X_AXIS, frameTitleHeight + frameBodyHeight * (1 - 0.25 / 2), '1'); - printLabel((currentRecord.combinedProfitsB).toFixed(2) + '%', X_AXIS, frameTitleHeight + frameBodyHeight * (1 - 0.30 / 2), '0.50'); - - printLabel('ROI Asset B', X_AXIS, frameTitleHeight + frameBodyHeight * (1 - 0.15 / 2), '1'); - printLabel((currentRecord.combinedProfitsA).toFixed(2) + '%', X_AXIS, frameTitleHeight + frameBodyHeight * (1 - 0.20 / 2), '0.50'); - - printLabel('Datetime', X_AXIS, frameTitleHeight + frameBodyHeight * (1 - 0.05 / 2), '1'); - printLabel(recordDate.toUTCString(), X_AXIS, frameTitleHeight + frameBodyHeight * (1 - 0.1 / 2), '0.50'); - - - function printLabel(labelToPrint, x, y, opacity) { - - let labelPoint; - let fontSize = 10; - - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.SECONDARY + ' Saira'; - - let label = '' + labelToPrint; - if (isNaN(label) === false) { - label = Number(label).toLocaleString(); - } - let xOffset = label.length / 2 * fontSize * FONT_ASPECT_RATIO; - - labelPoint = { - x: x - xOffset, - y: y - }; - - labelPoint = thisObject.container.frame.frameThisPoint(labelPoint); - labelPoint = thisObject.fitFunction(labelPoint) - - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.DARK + ', ' + opacity + ')'; - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y); - - } - - browserCanvasContext.closePath(); - browserCanvasContext.fill(); - - } - - -} - - - - - - - - diff --git a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/Strategies.js b/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/Strategies.js deleted file mode 100644 index 2e82c2267..000000000 --- a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/Strategies.js +++ /dev/null @@ -1,718 +0,0 @@ -function newTradingEnginesPlottersTradingSimulationStrategies() { - - const MODULE_NAME = "Strategies Plotter"; - const INFO_LOG = false; - const ERROR_LOG = true; - const INTENSIVE_LOG = false; - const logger = newWebDebugLog(); - logger.fileName = MODULE_NAME; - - let thisObject = { - - // Main functions and properties. - - initialize: initialize, - finalize: finalize, - container: undefined, - fitFunction: undefined, - getContainer: getContainer, - setTimeFrame: setTimeFrame, - setDatetime: setDatetime, - setCoordinateSystem: setCoordinateSystem, - draw: draw, - - /* Events declared outside the plotter. */ - - onDailyFileLoaded: onDailyFileLoaded, - - // Secondary functions and properties. - - currentRecord: undefined - }; - - /* this is part of the module template */ - - let container = newContainer(); // Do not touch this 3 lines, they are just needed. - container.initialize(); - thisObject.container = container; - - let coordinateSystem - - let timeFrame; // This will hold the current Time Frame the user is at. - let datetime; // This will hold the current Datetime the user is at. - - let marketFile; // This is the current Market File being plotted. - let fileCursor; // This is the current File Cursor being used to retrieve Daily Files. - - let marketFiles; // This object will provide the different Market Files at different Time Frames. - let dailyFiles; // This object will provide the different File Cursors at different Time Frames. - - /* these are module specific variables: */ - - let strategies = []; - let strategyImages = []; - - let onMouseOverEventSuscriptionId - let zoomChangedEventSubscriptionId - let offsetChangedEventSubscriptionId - let dragFinishedEventSubscriptionId - let dimmensionsChangedEventSubscriptionId - let marketFilesUpdatedEventSubscriptionId - let dailyFilesUpdatedEventSubscriptionId - let scaleChangedEventSubscriptionId - - let userPositionDate - return thisObject; - - function finalize() { - try { - - if (INFO_LOG === true) { logger.write("[INFO] finalize -> Entering function."); } - - /* Stop listening to the necesary events. */ - thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId) - canvas.chartingSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId); - canvas.chartingSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId); - canvas.eventHandler.stopListening(dragFinishedEventSubscriptionId); - thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId) - marketFiles.eventHandler.stopListening(marketFilesUpdatedEventSubscriptionId); - dailyFiles.eventHandler.stopListening(dailyFilesUpdatedEventSubscriptionId); - - /* Destroyd References */ - - marketFiles = undefined; - dailyFiles = undefined; - - datetime = undefined; - timeFrame = undefined; - - marketFile = undefined; - fileCursor = undefined; - - strategyImages = undefined; - - thisObject.fitFunction = undefined - - finalizeCoordinateSystem() - coordinateSystem = undefined - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] finalize -> err = " + err.stack); } - } - } - - function initialize(pStorage, pDatetime, pTimeFrame, pCoordinateSystem, callBackFunction) { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] initialize -> Entering function."); } - - /* Store the information received. */ - - marketFiles = pStorage.marketFiles[0]; - dailyFiles = pStorage.dailyFiles[0]; - - datetime = pDatetime; - timeFrame = pTimeFrame; - coordinateSystem = pCoordinateSystem - initializeCoordinateSystem() - - /* We need a Market File in order to calculate the Y scale, since this scale depends on actual data. */ - - marketFile = marketFiles.getFile(ONE_DAY_IN_MILISECONDS); // This file is the one processed faster. - - /* Now we set the right files according to current Period. */ - - marketFile = marketFiles.getFile(pTimeFrame); - fileCursor = dailyFiles.getFileCursor(pTimeFrame); - - /* Listen to the necesary events. */ - - zoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged); - offsetChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged); - dragFinishedEventSubscriptionId = canvas.eventHandler.listenToEvent("Drag Finished", onDragFinished); - marketFilesUpdatedEventSubscriptionId = marketFiles.eventHandler.listenToEvent("Files Updated", onMarketFilesUpdated); - dailyFilesUpdatedEventSubscriptionId = dailyFiles.eventHandler.listenToEvent("Files Updated", onDailyFilesUpdated); - onMouseOverEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) - - /* Get ready for plotting. */ - - recalculate(); - - /* Ready for when dimmension changes. */ - - dimmensionsChangedEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('Dimmensions Changed', function () { - recalculate(); - }) - - for (let i = 1; i < 15; i++) { - let strategyImage = canvas.designSpace.iconByUiObjectType.get('Strategy'); - strategyImages.push(strategyImage); - } - - callBackFunction(); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] initialize -> err = " + err.stack); } - } - } - - function initializeCoordinateSystem() { - scaleChangedEventSubscriptionId = coordinateSystem.eventHandler.listenToEvent('Scale Changed', onScaleChanged) - } - - function finalizeCoordinateSystem() { - coordinateSystem.eventHandler.stopListening(scaleChangedEventSubscriptionId) - } - - function onScaleChanged() { - recalculate(); - } - - function onMouseOver(event) { - let userPosition = getDateFromPointAtBrowserCanvas(event, thisObject.container, coordinateSystem) - userPositionDate = userPosition.valueOf() - } - - function getContainer(point) { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] getContainer -> Entering function."); } - - let container; - - /* First we check if this point is inside this space. */ - - if (this.container.frame.isThisPointHere(point) === true) { - - return this.container; - - } else { - - /* This point does not belong to this space. */ - - return undefined; - } - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] getContainer -> err = " + err.stack); } - } - } - - function onMarketFilesUpdated() { - try { - let newMarketFile = marketFiles.getFile(timeFrame); - if (newMarketFile !== undefined) { - marketFile = newMarketFile; - recalculate(); - } - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] onMarketFilesUpdated -> err = " + err.stack); } - } - } - - function onDailyFilesUpdated() { - try { - let newFileCursor = dailyFiles.getFileCursor(timeFrame); - if (newFileCursor !== undefined) { - fileCursor = newFileCursor; - recalculate(); - } - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] onDailyFilesUpdated -> err = " + err.stack); } - } - } - - function setTimeFrame(pTimeFrame) { - - try { - - if (timeFrame !== pTimeFrame) { - - timeFrame = pTimeFrame; - - if (timeFrame >= _1_HOUR_IN_MILISECONDS) { - - marketFile = marketFiles.getFile(pTimeFrame); - - recalculate(); - - } else { - - let newFileCursor = dailyFiles.getFileCursor(pTimeFrame); - - fileCursor = newFileCursor; // In this case, we explicitly want that if there is no valid cursor, we invalidate the data and show nothing. - recalculate(); - - } - } - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] setTimeFrame -> err = " + err.stack); } - } - } - - function setDatetime(pDatetime) { - datetime = pDatetime; - } - - function setCoordinateSystem(pCoordinateSystem) { - finalizeCoordinateSystem() - coordinateSystem = pCoordinateSystem - initializeCoordinateSystem() - } - - function onDailyFileLoaded(event) { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] onDailyFileLoaded -> Entering function."); } - - if (event.currentValue === event.totalValue) { - - /* This happens only when all of the files in the cursor have been loaded. */ - - recalculate(); - - } - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] onDailyFileLoaded -> err = " + err.stack); } - } - } - - function draw() { - - try { - - if (INTENSIVE_LOG === true) { logger.write("[INFO] draw -> Entering function."); } - - this.container.frame.draw(); - - plotChart(); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] draw -> err = " + err.stack); } - } - } - - function recalculate() { - - try { - - strategies = [] - - if (timeFrame >= _1_HOUR_IN_MILISECONDS) { - - recalculateUsingMarketFiles(); - - } else { - - recalculateUsingDailyFiles(); - - } - - thisObject.container.eventHandler.raiseEvent("Strategies Changed", strategies); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] recalculate -> err = " + err.stack); } - } - } - - function recalculateUsingDailyFiles() { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] recalculateUsingDailyFiles -> Entering function."); } - - if (fileCursor === undefined) { - strategies = []; - return; - } // We need to wait - - if (fileCursor.files.size === 0) { - strategies = []; - return; - } // We need to wait until there are files in the cursor - - let daysOnSides = getSideDays(timeFrame); - - let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem); - let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem); - - let dateDiff = rightDate.valueOf() - leftDate.valueOf(); - - let farLeftDate = new Date(leftDate.valueOf() - dateDiff * 1.5); - let farRightDate = new Date(rightDate.valueOf() + dateDiff * 1.5); - - let currentDate = new Date(farLeftDate.valueOf()); - - strategies = []; - - - - while (currentDate.valueOf() <= farRightDate.valueOf() + ONE_DAY_IN_MILISECONDS) { - - let stringDate = currentDate.getFullYear() + '-' + pad(currentDate.getMonth() + 1, 2) + '-' + pad(currentDate.getDate(), 2); - - let dailyFile = fileCursor.files.get(stringDate); - - if (dailyFile !== undefined) { - - for (let i = 0; i < dailyFile.length; i++) { - - let record = { - begin: undefined, - end: undefined, - status: undefined, - number: undefined, - beginRate: undefined, - endRate: undefined - }; - - record.begin = dailyFile[i][0]; - record.end = dailyFile[i][1]; - record.status = dailyFile[i][2]; - record.number = dailyFile[i][3]; - record.beginRate = dailyFile[i][4]; - record.endRate = dailyFile[i][5]; - record.triggerOnSituation = dailyFile[i][6]; - record.name = dailyFile[i][7]; - - if ( - (record.begin >= farLeftDate.valueOf() && record.end <= farRightDate.valueOf()) && - (record.begin >= coordinateSystem.min.x && record.end <= coordinateSystem.max.x) - ) { - - strategies.push(record); - - if (datetime.valueOf() >= record.begin && datetime.valueOf() <= record.end) { - - thisObject.currentRecord = record; - thisObject.container.eventHandler.raiseEvent("Current Strategy Changed", thisObject.currentRecord); - - } - } - } - } - - currentDate = new Date(currentDate.valueOf() + ONE_DAY_IN_MILISECONDS); - } - - /* Lests check if all the visible screen is going to be covered by strategies. */ - - let lowerEnd = leftDate.valueOf(); - let upperEnd = rightDate.valueOf(); - - setTimeout(recalculate, 2000); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] recalculateUsingDailyFiles -> err = " + err.stack); } - } - } - - function recalculateUsingMarketFiles() { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] recalculateUsingMarketFiles -> Entering function."); } - - if (marketFile === undefined) { return; } // Initialization not complete yet. - - let daysOnSides = getSideDays(timeFrame); - - let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem); - let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem); - - let dateDiff = rightDate.valueOf() - leftDate.valueOf(); - - leftDate = new Date(leftDate.valueOf() - dateDiff * 1.5); - rightDate = new Date(rightDate.valueOf() + dateDiff * 1.5); - - strategies = []; - - for (let i = 0; i < marketFile.length; i++) { - - let record = { - begin: undefined, - end: undefined, - status: undefined, - number: undefined, - beginRate: undefined, - endRate: undefined - }; - - record.begin = marketFile[i][0]; - record.end = marketFile[i][1]; - record.status = marketFile[i][2]; - record.number = marketFile[i][3]; - record.beginRate = marketFile[i][4]; - record.endRate = marketFile[i][5]; - record.triggerOnSituation = marketFile[i][6]; - record.name = marketFile[i][7]; - - if (record.begin >= leftDate.valueOf() && record.end <= rightDate.valueOf()) { - - strategies.push(record); - - if ( - (record.begin >= leftDate.valueOf() && record.end <= rightDate.valueOf()) && - (record.begin >= coordinateSystem.min.x && record.end <= coordinateSystem.max.x) - ) { - - thisObject.currentRecord = record; - thisObject.container.eventHandler.raiseEvent("Current Strategy Changed", thisObject.currentRecord); - - } - } - } - - //console.log("Olivia > recalculateUsingMarketFiles > total strategies generated : " + strategies.length); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] recalculateUsingMarketFiles -> err = " + err.stack); } - } - } - - function plotChart() { - - try { - - thisObject.container.eventHandler.raiseEvent("Current Strategy Record Changed", undefined); - - let record; - - for (let i = 0; i < strategies.length; i++) { - - record = strategies[i]; - - let recordPoint1 = { - x: record.begin, - y: record.beginRate - }; - - let recordPoint2 = { - x: record.end, - y: record.endRate - }; - - let recordPoint3 = { - x: record.begin, - y: record.beginRate - }; - - let recordPoint4 = { - x: record.end, - y: record.endRate - }; - - recordPoint1 = coordinateSystem.transformThisPoint(recordPoint1); - recordPoint2 = coordinateSystem.transformThisPoint(recordPoint2); - recordPoint3 = coordinateSystem.transformThisPoint(recordPoint3); - recordPoint4 = coordinateSystem.transformThisPoint(recordPoint4); - - recordPoint1 = transformThisPoint(recordPoint1, thisObject.container); - recordPoint2 = transformThisPoint(recordPoint2, thisObject.container); - recordPoint3 = transformThisPoint(recordPoint3, thisObject.container); - recordPoint4 = transformThisPoint(recordPoint4, thisObject.container); - - if (recordPoint2.x < canvas.chartingSpace.viewport.visibleArea.bottomLeft.x || recordPoint1.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x) { - continue; - } - - recordPoint3.y = recordPoint1.y + 2000; - recordPoint4.y = recordPoint1.y + 2000; - - recordPoint1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint1); - recordPoint2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint2); - recordPoint3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint3); - recordPoint4 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint4); - - recordPoint1 = thisObject.fitFunction(recordPoint1, undefined, 30); - recordPoint2 = thisObject.fitFunction(recordPoint2, undefined, 30); - recordPoint3 = thisObject.fitFunction(recordPoint3, undefined, 30); - recordPoint4 = thisObject.fitFunction(recordPoint4, undefined, 30); - - let imageSize = 20; - let imageToDraw = strategyImages[record.number]; - - - /* Draw the line that represents the duration of closed strategy */ - - browserCanvasContext.beginPath(); - - browserCanvasContext.moveTo(recordPoint3.x + imageSize / 2, recordPoint3.y); - browserCanvasContext.lineTo(recordPoint4.x - imageSize / 2, recordPoint4.y); - - browserCanvasContext.closePath(); - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.MANGANESE_PURPLE + ', 1)'; - browserCanvasContext.lineWidth = 1 - - if (record.status === 1) { - browserCanvasContext.setLineDash([0, 0]) - } else { - browserCanvasContext.setLineDash([2, 4]) - } - browserCanvasContext.stroke() - - /* Draw the Area */ - /* - browserCanvasContext.beginPath(); - - browserCanvasContext.moveTo(recordPoint1.x, recordPoint2.y); - browserCanvasContext.lineTo(recordPoint3.x, recordPoint3.y); - browserCanvasContext.lineTo(recordPoint4.x, recordPoint4.y); - browserCanvasContext.lineTo(recordPoint2.x, recordPoint2.y); - - browserCanvasContext.closePath(); - - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.LIGHT_GREY + ', ' + 0.5 + ')'; - browserCanvasContext.fill(); - */ - - /* Situation Name */ - let digit = record.begin.toFixed(0).substring(7,8) - let positionY = recordPoint3.y - (recordPoint3.y - recordPoint1.y) / 2 + (Number(digit) * 10 - 50) - - if (canvas.chartingSpace.viewport.zoomLevel >= ZOOM_OUT_THRESHOLD_FOR_HIDDING_CHARTS_LABELS) { - if (record.name !== "New Strategy") { - printLabel(record.name, recordPoint1.x + 5, positionY - 15, '1', 12); - } - if (record.triggerOnSituation !== "New Situation") { - printLabel(record.triggerOnSituation, recordPoint1.x + 5, positionY, '1', 12); - } - } - - /* Draw the Sticks */ - - drawStick(recordPoint1, recordPoint3); - drawStick(recordPoint2, recordPoint4); - - if (imageToDraw.canDrawIcon === true) { - browserCanvasContext.drawImage(imageToDraw, recordPoint3.x - imageSize / 2, recordPoint3.y - imageSize / 2, imageSize, imageSize); - if (record.status === 1) { - browserCanvasContext.drawImage(imageToDraw, recordPoint4.x - imageSize / 2, recordPoint4.y - imageSize / 2, imageSize, imageSize); - } - } - - /* Send the current record to the panel */ - - if (userPositionDate >= record.begin && userPositionDate <= record.end) { - - let currentRecord = { - }; - thisObject.container.eventHandler.raiseEvent("Current Strategy Record Changed", currentRecord); - } - - function drawStick(point1, point2) { - - browserCanvasContext.beginPath(); - - browserCanvasContext.moveTo(point1.x, point1.y); - browserCanvasContext.lineTo(point2.x, point2.y); - - browserCanvasContext.closePath(); - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.DARK + ', 0.25)'; - - if (userPositionDate >= record.begin && userPositionDate <= record.end) { - - /* highlight the current record */ - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', 1)'; // Current record accroding to time - } - - browserCanvasContext.setLineDash([4, 3]) - browserCanvasContext.lineWidth = 0.5 - browserCanvasContext.stroke() - browserCanvasContext.setLineDash([0, 0]) - - } - } - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] plotChart -> err = " + err.stack); } - } - } - - - function onViewportZoomChanged(event) { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] onViewportZoomChanged -> Entering function."); } - - recalculate(); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] onViewportZoomChanged -> err = " + err.stack); } - } - } - - function onViewportPositionChanged(event) { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] onViewportPositionChanged -> Entering function."); } - - if (event !== undefined) { - if (event.recalculate === true) { - recalculate() - return - } - } - if (Math.random() * 100 > 95) { - recalculate() - }; - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] onViewportPositionChanged -> err = " + err.stack); } - } - } - - function onDragFinished() { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] onDragFinished -> Entering function."); } - - recalculate(); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] onDragFinished -> err = " + err.stack); } - } - } -} - - - - - - - - - - - - - - - - - - - - diff --git a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/Trades.js b/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/Trades.js deleted file mode 100644 index 9da7b37b6..000000000 --- a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/Trades.js +++ /dev/null @@ -1,690 +0,0 @@ -function newTradingEnginesPlottersTradingSimulationTrades() { - - const MODULE_NAME = "Trades Plotter"; - const INFO_LOG = false; - const ERROR_LOG = true; - const INTENSIVE_LOG = false; - const logger = newWebDebugLog(); - logger.fileName = MODULE_NAME; - - let thisObject = { - - // Main functions and properties. - - initialize: initialize, - finalize: finalize, - container: undefined, - fitFunction: undefined, - getContainer: getContainer, - setTimeFrame: setTimeFrame, - setDatetime: setDatetime, - setCoordinateSystem: setCoordinateSystem, - draw: draw, - - /* Events declared outside the plotter. */ - - onDailyFileLoaded: onDailyFileLoaded, - - // Secondary functions and properties. - - currentRecord: undefined - }; - - /* this is part of the module template */ - - let container = newContainer(); // Do not touch this 3 lines, they are just needed. - container.initialize(); - thisObject.container = container; - - let coordinateSystem - - let timeFrame; // This will hold the current Time Frame the user is at. - let datetime; // This will hold the current Datetime the user is at. - - let marketFile; // This is the current Market File being plotted. - let fileCursor; // This is the current File Cursor being used to retrieve Daily Files. - - let marketFiles; // This object will provide the different Market Files at different Time Frames. - let dailyFiles; // This object will provide the different File Cursors at different Time Frames. - - /* these are module specific variables: */ - - let trades = []; - let headers; - - let onMouseOverEventSuscriptionId - let zoomChangedEventSubscriptionId - let offsetChangedEventSubscriptionId - let dragFinishedEventSubscriptionId - let dimmensionsChangedEventSubscriptionId - let marketFilesUpdatedEventSubscriptionId - let dailyFilesUpdatedEventSubscriptionId - let scaleChangedEventSubscriptionId - - let userPositionDate - return thisObject; - - function finalize() { - try { - - if (INFO_LOG === true) { logger.write("[INFO] finalize -> Entering function."); } - - /* Stop listening to the necesary events. */ - thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId) - canvas.chartingSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId); - canvas.chartingSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId); - canvas.eventHandler.stopListening(dragFinishedEventSubscriptionId); - thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId) - marketFiles.eventHandler.stopListening(marketFilesUpdatedEventSubscriptionId); - dailyFiles.eventHandler.stopListening(dailyFilesUpdatedEventSubscriptionId); - - /* Destroyd References */ - - marketFiles = undefined; - dailyFiles = undefined; - - datetime = undefined; - timeFrame = undefined; - - marketFile = undefined; - fileCursor = undefined; - - thisObject.fitFunction = undefined - - finalizeCoordinateSystem() - coordinateSystem = undefined - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] finalize -> err = " + err.stack); } - } - } - - function initialize(pStorage, pDatetime, pTimeFrame, pCoordinateSystem, callBackFunction) { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] initialize -> Entering function."); } - - /* Store the information received. */ - - marketFiles = pStorage.marketFiles[0]; - dailyFiles = pStorage.dailyFiles[0]; - - datetime = pDatetime; - timeFrame = pTimeFrame; - coordinateSystem = pCoordinateSystem - initializeCoordinateSystem() - - /* We need a Market File in order to calculate the Y scale, since this scale depends on actual data. */ - - marketFile = marketFiles.getFile(ONE_DAY_IN_MILISECONDS); // This file is the one processed faster. - - /* Now we set the right files according to current Period. */ - - marketFile = marketFiles.getFile(pTimeFrame); - fileCursor = dailyFiles.getFileCursor(pTimeFrame); - - /* Listen to the necesary events. */ - - zoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged); - offsetChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged); - dragFinishedEventSubscriptionId = canvas.eventHandler.listenToEvent("Drag Finished", onDragFinished); - marketFilesUpdatedEventSubscriptionId = marketFiles.eventHandler.listenToEvent("Files Updated", onMarketFilesUpdated); - dailyFilesUpdatedEventSubscriptionId = dailyFiles.eventHandler.listenToEvent("Files Updated", onDailyFilesUpdated); - onMouseOverEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) - - /* Get ready for plotting. */ - - recalculate(); - - /* Ready for when dimmension changes. */ - - dimmensionsChangedEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('Dimmensions Changed', function () { - recalculate(); - }) - - callBackFunction(); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] initialize -> err = " + err.stack); } - } - } - - function initializeCoordinateSystem() { - scaleChangedEventSubscriptionId = coordinateSystem.eventHandler.listenToEvent('Scale Changed', onScaleChanged) - } - - function finalizeCoordinateSystem() { - coordinateSystem.eventHandler.stopListening(scaleChangedEventSubscriptionId) - } - - function onScaleChanged() { - recalculate(); - } - - function onMouseOver(event) { - let userPosition = getDateFromPointAtBrowserCanvas(event, thisObject.container, coordinateSystem) - userPositionDate = userPosition.valueOf() - } - - function getContainer(point) { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] getContainer -> Entering function."); } - - let container; - - /* First we check if this point is inside this space. */ - - if (this.container.frame.isThisPointHere(point) === true) { - - return this.container; - - } else { - - /* This point does not belong to this space. */ - - return undefined; - } - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] getContainer -> err = " + err.stack); } - } - } - - function onMarketFilesUpdated() { - try { - let newMarketFile = marketFiles.getFile(timeFrame); - if (newMarketFile !== undefined) { - marketFile = newMarketFile; - recalculate(); - } - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] onMarketFilesUpdated -> err = " + err.stack); } - } - } - - function onDailyFilesUpdated() { - try { - let newFileCursor = dailyFiles.getFileCursor(timeFrame); - if (newFileCursor !== undefined) { - fileCursor = newFileCursor; - recalculate(); - } - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] onDailyFilesUpdated -> err = " + err.stack); } - } - } - - function setTimeFrame(pTimeFrame) { - - try { - - if (timeFrame !== pTimeFrame) { - - timeFrame = pTimeFrame; - - if (timeFrame >= _1_HOUR_IN_MILISECONDS) { - - marketFile = marketFiles.getFile(pTimeFrame); - - recalculate(); - - } else { - - let newFileCursor = dailyFiles.getFileCursor(pTimeFrame); - - fileCursor = newFileCursor; // In this case, we explicitly want that if there is no valid cursor, we invalidate the data and show nothing. - recalculate(); - - } - } - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] setTimeFrame -> err = " + err.stack); } - } - } - - function setDatetime(pDatetime) { - datetime = pDatetime; - } - - function setCoordinateSystem(pCoordinateSystem) { - finalizeCoordinateSystem() - coordinateSystem = pCoordinateSystem - initializeCoordinateSystem() - } - - function onDailyFileLoaded(event) { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] onDailyFileLoaded -> Entering function."); } - - if (event.currentValue === event.totalValue) { - - /* This happens only when all of the files in the cursor have been loaded. */ - - recalculate(); - - } - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] onDailyFileLoaded -> err = " + err.stack); } - } - } - - function draw() { - - try { - - if (INTENSIVE_LOG === true) { logger.write("[INFO] draw -> Entering function."); } - - this.container.frame.draw(); - - plotChart(); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] draw -> err = " + err.stack); } - } - } - - function recalculate() { - - try { - - trades = [] - - if (timeFrame >= _1_HOUR_IN_MILISECONDS) { - - recalculateUsingMarketFiles(); - - } else { - - recalculateUsingDailyFiles(); - - } - - thisObject.container.eventHandler.raiseEvent("Trades Changed", trades); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] recalculate -> err = " + err.stack); } - } - } - - function recalculateUsingDailyFiles() { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] recalculateUsingDailyFiles -> Entering function."); } - - if (fileCursor === undefined) { - trades = []; - return; - } // We need to wait - - if (fileCursor.files.size === 0) { - trades = []; - return; - } // We need to wait until there are files in the cursor - - let daysOnSides = getSideDays(timeFrame); - - let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem); - let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem); - - let dateDiff = rightDate.valueOf() - leftDate.valueOf(); - - let farLeftDate = new Date(leftDate.valueOf() - dateDiff * 1.5); - let farRightDate = new Date(rightDate.valueOf() + dateDiff * 1.5); - - let currentDate = new Date(farLeftDate.valueOf()); - - trades = []; - - - - while (currentDate.valueOf() <= farRightDate.valueOf() + ONE_DAY_IN_MILISECONDS) { - - let stringDate = currentDate.getFullYear() + '-' + pad(currentDate.getMonth() + 1, 2) + '-' + pad(currentDate.getDate(), 2); - - let dailyFile = fileCursor.files.get(stringDate); - - if (dailyFile !== undefined) { - - for (let i = 0; i < dailyFile.length; i++) { - - let record = {}; - - record.begin = dailyFile[i][0]; - record.end = dailyFile[i][1]; - record.status = dailyFile[i][2]; - record.lastTradeROI = dailyFile[i][3]; - record.beginRate = dailyFile[i][4]; - record.endRate = dailyFile[i][5]; - record.exitType = dailyFile[i][6]; - record.takePositionSituation = dailyFile[i][7]; - - if ( - (record.begin >= farLeftDate.valueOf() && record.end <= farRightDate.valueOf()) && - (record.begin >= coordinateSystem.min.x && record.end <= coordinateSystem.max.x) - ) { - - trades.push(record); - - if (datetime.valueOf() >= record.begin && datetime.valueOf() <= record.end) { - - thisObject.currentRecord = record; - thisObject.container.eventHandler.raiseEvent("Current Trade Changed", thisObject.currentRecord); - - } - } - } - } - - currentDate = new Date(currentDate.valueOf() + ONE_DAY_IN_MILISECONDS); - } - - /* Lests check if all the visible screen is going to be covered by trades. */ - - let lowerEnd = leftDate.valueOf(); - let upperEnd = rightDate.valueOf(); - - setTimeout(recalculate, 2000); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] recalculateUsingDailyFiles -> err = " + err.stack); } - } - } - - function recalculateUsingMarketFiles() { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] recalculateUsingMarketFiles -> Entering function."); } - - if (marketFile === undefined) { return; } // Initialization not complete yet. - - let daysOnSides = getSideDays(timeFrame); - - let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem); - let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem); - - let dateDiff = rightDate.valueOf() - leftDate.valueOf(); - - leftDate = new Date(leftDate.valueOf() - dateDiff * 1.5); - rightDate = new Date(rightDate.valueOf() + dateDiff * 1.5); - - trades = []; - - for (let i = 0; i < marketFile.length; i++) { - - let record = {}; - - record.begin = marketFile[i][0]; - record.end = marketFile[i][1]; - record.status = marketFile[i][2]; - record.lastTradeROI = marketFile[i][3]; - record.beginRate = marketFile[i][4]; - record.endRate = marketFile[i][5]; - record.exitType = marketFile[i][6]; - record.takePositionSituation = marketFile[i][7]; - - if ( - (record.begin >= leftDate.valueOf() && record.end <= rightDate.valueOf()) && - (record.begin >= coordinateSystem.min.x && record.end <= coordinateSystem.max.x) - ) { - - trades.push(record); - - if (datetime.valueOf() >= record.begin && datetime.valueOf() <= record.end) { - - thisObject.currentRecord = record; - thisObject.container.eventHandler.raiseEvent("Current Trade Changed", thisObject.currentRecord); - - } - } - } - - //console.log("Olivia > recalculateUsingMarketFiles > total trades generated : " + trades.length); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] recalculateUsingMarketFiles -> err = " + err.stack); } - } - } - - function plotChart() { - - try { - - thisObject.container.eventHandler.raiseEvent("Current Trade Record Changed", undefined); - - let record; - - for (let i = 0; i < trades.length; i++) { - - record = trades[i]; - - /* Send the current record to the panel */ - - if (userPositionDate >= record.begin && userPositionDate <= record.end) { - - let currentRecord = { - }; - thisObject.container.eventHandler.raiseEvent("Current Trade Record Changed", currentRecord); - } - - let recordPoint1 = { - x: record.begin, - y: record.beginRate - }; - - let recordPoint2 = { - x: record.end, - y: record.beginRate - }; - - let recordPoint3 = { - x: record.end, - y: record.endRate - }; - - recordPoint1 = coordinateSystem.transformThisPoint(recordPoint1); - recordPoint2 = coordinateSystem.transformThisPoint(recordPoint2); - recordPoint3 = coordinateSystem.transformThisPoint(recordPoint3); - - recordPoint1 = transformThisPoint(recordPoint1, thisObject.container); - recordPoint2 = transformThisPoint(recordPoint2, thisObject.container); - recordPoint3 = transformThisPoint(recordPoint3, thisObject.container); - - if (recordPoint2.x < canvas.chartingSpace.viewport.visibleArea.bottomLeft.x || recordPoint1.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x) { - continue; - } - - recordPoint1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint1); - recordPoint2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint2); - recordPoint3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint3); - - recordPoint1 = thisObject.fitFunction(recordPoint1); - recordPoint2 = thisObject.fitFunction(recordPoint2); - recordPoint3 = thisObject.fitFunction(recordPoint3); - - let line0 = record.takePositionSituation - let line1 = ''; - let line2 = ''; - - if (line0 === 'New Situation') { - line0 = '' - } - - if (record.status === 1) { - switch (record.exitType) { - case 1: { - line1 = 'Stop Loss'; - break; - } - case 2: { - line1 = 'Take Profit'; - break; - } - } - } else { - line1 = 'Open Position'; - } - - if (record.lastTradeROI < 0) { - line2 = 'ROI:' + (record.lastTradeROI).toFixed(2) + ' %'; - } else { - line2 = 'ROI:' + (record.lastTradeROI).toFixed(2) + ' %'; - } - - /* Draw the triangle that represents the trade. */ - - browserCanvasContext.beginPath(); - - browserCanvasContext.moveTo(recordPoint1.x, recordPoint1.y); - browserCanvasContext.lineTo(recordPoint2.x, recordPoint2.y); - browserCanvasContext.lineTo(recordPoint3.x, recordPoint3.y); - - browserCanvasContext.closePath(); - - let opacity = '0.25'; - - if (record.lastTradeROI > 0) { - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.PATINATED_TURQUOISE + ', ' + opacity + ')'; - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.GREEN + ', ' + opacity + ')'; - } else { - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RED + ', ' + opacity + ')'; - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + opacity + ')'; - } - - if (userPositionDate >= record.begin && userPositionDate <= record.end) { - browserCanvasContext.fillStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', ' + opacity + ')'; - } - - browserCanvasContext.fill(); - - browserCanvasContext.lineWidth = 1; - browserCanvasContext.setLineDash([0, 0]) - browserCanvasContext.stroke(); - - let point = {} - - if (record.beginRate > record.endRate) { - point.x = recordPoint3.x - point.y = recordPoint3.y + 100 - } else { - point.x = recordPoint3.x - point.y = recordPoint3.y - 100 - } - - point = canvas.chartingSpace.viewport.fitIntoVisibleArea(point); - point = thisObject.fitFunction(point, undefined, 50); - - if ( - recordPoint3.x < canvas.chartingSpace.viewport.visibleArea.topLeft.x + 250 - || - recordPoint3.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x - 250 - || - recordPoint3.y > canvas.chartingSpace.viewport.visibleArea.bottomRight.y - 150 - || - recordPoint3.y < canvas.chartingSpace.viewport.visibleArea.topLeft.y + 150 - ) { - // we do not write any text - } else { - - if (canvas.chartingSpace.viewport.zoomLevel >= ZOOM_OUT_THRESHOLD_FOR_HIDDING_CHARTS_LABELS) { - printLabel(line0, recordPoint2.x - (recordPoint2.x - recordPoint1.x) / 2 - line1.length * FONT_ASPECT_RATIO, point.y - 15, '1', 12); - printLabel(line1, recordPoint2.x - (recordPoint2.x - recordPoint1.x) / 2 - line1.length * FONT_ASPECT_RATIO, point.y, '1', 12); - printLabel(line2, recordPoint2.x - (recordPoint2.x - recordPoint1.x) / 2 - line2.length * FONT_ASPECT_RATIO, point.y + 15, '1', 12); - } - } - } - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] plotChart -> err = " + err.stack); } - } - } - - - function onViewportZoomChanged(event) { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] onViewportZoomChanged -> Entering function."); } - - recalculate(); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] onViewportZoomChanged -> err = " + err.stack); } - } - } - - function onViewportPositionChanged(event) { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] onViewportPositionChanged -> Entering function."); } - - if (event !== undefined) { - if (event.recalculate === true) { - recalculate() - return - } - } - if (Math.random() * 100 > 95) { - recalculate() - }; - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] onViewportPositionChanged -> err = " + err.stack); } - } - } - - function onDragFinished() { - - try { - - if (INFO_LOG === true) { logger.write("[INFO] onDragFinished -> Entering function."); } - - recalculate(); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] onDragFinished -> err = " + err.stack); } - } - } -} - - - - - - - - - - - - - - - - - - - - - diff --git a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/TradingSimulation.js b/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/TradingSimulation.js deleted file mode 100644 index f9b3b5787..000000000 --- a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/TradingSimulation.js +++ /dev/null @@ -1,873 +0,0 @@ -function newTradingEnginesPlottersTradingSimulationTradingSimulation() { - - const MODULE_NAME = "Simulation Plotter"; - const ERROR_LOG = true; - const INTENSIVE_LOG = false; - const logger = newWebDebugLog(); - logger.fileName = MODULE_NAME; - - let thisObject = { - - // Main functions and properties. - - initialize: initialize, - finalize: finalize, - container: undefined, - fitFunction: undefined, - getContainer: getContainer, - setTimeFrame: setTimeFrame, - setDatetime: setDatetime, - setCoordinateSystem: setCoordinateSystem, - draw: draw, - - /* Events declared outside the plotter. */ - - onDailyFileLoaded: onDailyFileLoaded, - - // Secondary functions and properties. - - currentRecord: undefined - }; - - /* this is part of the module template */ - - let container = newContainer(); // Do not touch this 3 lines, they are just needed. - container.initialize(); - thisObject.container = container; - - let coordinateSystem - - let timeFrame; // This will hold the current Time Frame the user is at. - let datetime; // This will hold the current Datetime the user is at. - - let marketFile; // This is the current Market File being plotted. - let fileCursor; // This is the current File Cursor being used to retrieve Daily Files. - - let marketFiles; // This object will provide the different Market Files at different Time Frames. - let dailyFiles; // This object will provide the different File Cursors at different Time Frames. - - /* these are module specific variables: */ - - let records = []; // Here we keep the records to be ploted every time the Draw() function is called by the AAWebPlatform. - - let imageStopLossPhase; - let imageTakeProfitPhase; - let imageRecord; - - let onMouseOverEventSuscriptionId - let zoomChangedEventSubscriptionId - let offsetChangedEventSubscriptionId - let dragFinishedEventSubscriptionId - let dimmensionsChangedEventSubscriptionId - let marketFilesUpdatedEventSubscriptionId - let dailyFilesUpdatedEventSubscriptionId - let scaleChangedEventSubscriptionId - - let userPositionDate - return thisObject; - - function finalize() { - try { - - /* Stop listening to the necesary events. */ - thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId) - canvas.chartingSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId); - canvas.chartingSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId); - canvas.eventHandler.stopListening(dragFinishedEventSubscriptionId); - thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId) - marketFiles.eventHandler.stopListening(marketFilesUpdatedEventSubscriptionId); - dailyFiles.eventHandler.stopListening(dailyFilesUpdatedEventSubscriptionId); - - /* icons */ - - imageStopLossPhase = undefined; - imageTakeProfitPhase = undefined; - imageRecord = undefined; - - /* Destroy References */ - - marketFiles = undefined; - dailyFiles = undefined; - - datetime = undefined; - timeFrame = undefined; - - marketFile = undefined; - fileCursor = undefined; - - thisObject.fitFunction = undefined - - finalizeCoordinateSystem() - coordinateSystem = undefined - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] finalize -> err = " + err.stack); } - } - } - - function initialize(pStorage, pDatetime, pTimeFrame, pCoordinateSystem, callBackFunction) { - - try { - - /* Store the information received. */ - - marketFiles = pStorage.marketFiles[0]; - dailyFiles = pStorage.dailyFiles[0]; - - datetime = pDatetime; - timeFrame = pTimeFrame; - coordinateSystem = pCoordinateSystem - initializeCoordinateSystem() - - /* We need a Market File in order to calculate the Y scale, since this scale depends on actual data. */ - - marketFile = marketFiles.getFile(ONE_DAY_IN_MILISECONDS); // This file is the one processed faster. - - /* Now we set the right files according to current Period. */ - - marketFile = marketFiles.getFile(pTimeFrame); - fileCursor = dailyFiles.getFileCursor(pTimeFrame); - - /* Listen to the necesary events. */ - - zoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged); - offsetChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged); - dragFinishedEventSubscriptionId = canvas.eventHandler.listenToEvent("Drag Finished", onDragFinished); - marketFilesUpdatedEventSubscriptionId = marketFiles.eventHandler.listenToEvent("Files Updated", onMarketFilesUpdated); - dailyFilesUpdatedEventSubscriptionId = dailyFiles.eventHandler.listenToEvent("Files Updated", onDailyFilesUpdated); - onMouseOverEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) - - /* Get ready for plotting. */ - - recalculate(); - - /* Ready for when dimmension changes. */ - - dimmensionsChangedEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('Dimmensions Changed', function () { - recalculate(); - }) - - /* Loading a few icons */ - - imageStopLossPhase = canvas.designSpace.iconByUiObjectType.get('Stop'); - imageTakeProfitPhase = canvas.designSpace.iconByUiObjectType.get('Phase'); - imageRecord = canvas.designSpace.iconByUiObjectType.get('Trading System'); - - callBackFunction(); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] initialize -> err = " + err.stack); } - } - } - - function initializeCoordinateSystem() { - scaleChangedEventSubscriptionId = coordinateSystem.eventHandler.listenToEvent('Scale Changed', onScaleChanged) - } - - function finalizeCoordinateSystem() { - coordinateSystem.eventHandler.stopListening(scaleChangedEventSubscriptionId) - } - - function onScaleChanged() { - recalculate(); - } - - function onMouseOver(event) { - let userPosition = getDateFromPointAtBrowserCanvas(event, thisObject.container, coordinateSystem) - userPositionDate = userPosition.valueOf() - } - - function getContainer(point) { - let container; - /* First we check if this point is inside this space. */ - if (this.container.frame.isThisPointHere(point) === true) { - return this.container; - } else { - /* This point does not belong to this space. */ - return undefined; - } - } - - function onMarketFilesUpdated() { - try { - let newMarketFile = marketFiles.getFile(timeFrame); - if (newMarketFile !== undefined) { - marketFile = newMarketFile; - recalculate(); - } - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] onMarketFilesUpdated -> err = " + err.stack); } - } - } - - function onDailyFilesUpdated() { - try { - let newFileCursor = dailyFiles.getFileCursor(timeFrame); - if (newFileCursor !== undefined) { - fileCursor = newFileCursor; - recalculate(); - } - } catch (err) { - if (ERROR_LOG === true) { logger.write("[ERROR] onDailyFilesUpdated -> err = " + err.stack); } - } - } - - function setTimeFrame(pTimeFrame) { - - try { - - if (timeFrame !== pTimeFrame) { - - timeFrame = pTimeFrame; - - if (timeFrame >= _1_HOUR_IN_MILISECONDS) { - - marketFile = marketFiles.getFile(pTimeFrame); - - recalculate(); - - } else { - - let newFileCursor = dailyFiles.getFileCursor(pTimeFrame); - - fileCursor = newFileCursor; // In this case, we explicitly want that if there is no valid cursor, we invalidate the data and show nothing. - recalculate(); - - } - } - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] setTimeFrame -> err = " + err.stack); } - } - } - - function setDatetime(pDatetime) { - datetime = pDatetime; - } - - function setCoordinateSystem(pCoordinateSystem) { - finalizeCoordinateSystem() - coordinateSystem = pCoordinateSystem - initializeCoordinateSystem() - } - - function onDailyFileLoaded(event) { - - try { - - if (event.currentValue === event.totalValue) { - - /* This happens only when all of the files in the cursor have been loaded. */ - - recalculate(); - - } - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] onDailyFileLoaded -> err = " + err.stack); } - } - } - - function draw() { - - try { - - if (INTENSIVE_LOG === true) { logger.write("[INFO] draw -> Entering function."); } - - this.container.frame.draw(); - - plotChart(); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] draw -> err = " + err.stack); } - } - } - - function recalculate() { - - try { - - records = [] - - if (timeFrame >= _1_HOUR_IN_MILISECONDS) { - - recalculateUsingMarketFiles(); - - } else { - - recalculateUsingDailyFiles(); - - } - - thisObject.container.eventHandler.raiseEvent("Records Changed", records); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] recalculate -> err = " + err.stack); } - } - } - - function recalculateUsingDailyFiles() { - - try { - - if (fileCursor === undefined) { - records = []; - return; - } // We need to wait - - if (fileCursor.files.size === 0) { - records = []; - return; - } // We need to wait until there are files in the cursor - - let daysOnSides = getSideDays(timeFrame); - - let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem); - let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem); - - let dateDiff = rightDate.valueOf() - leftDate.valueOf(); - - let farLeftDate = new Date(leftDate.valueOf() - dateDiff * 1.5); - let farRightDate = new Date(rightDate.valueOf() + dateDiff * 1.5); - - let currentDate = new Date(farLeftDate.valueOf()); - - records = []; - - while (currentDate.valueOf() <= farRightDate.valueOf() + ONE_DAY_IN_MILISECONDS) { - - let stringDate = currentDate.getFullYear() + '-' + pad(currentDate.getMonth() + 1, 2) + '-' + pad(currentDate.getDate(), 2); - - let dailyFile = fileCursor.files.get(stringDate); - - if (dailyFile !== undefined) { - - for (let i = 0; i < dailyFile.length; i++) { - - let record = {}; - - record.begin = dailyFile[i][0]; - record.end = dailyFile[i][1]; - record.type = dailyFile[i][2]; - record.rate = dailyFile[i][3]; - record.amount = dailyFile[i][4]; - record.balanceA = dailyFile[i][5]; - record.balanceB = dailyFile[i][6]; - record.profit = dailyFile[i][7]; - record.lastTradeProfitLoss = dailyFile[i][8]; - record.stopLoss = dailyFile[i][9]; - record.roundtrips = dailyFile[i][10]; - record.hits = dailyFile[i][11]; - record.fails = dailyFile[i][12]; - record.hitRatio = dailyFile[i][13]; - record.ROI = dailyFile[i][14]; - record.periods = dailyFile[i][15]; - record.days = dailyFile[i][16]; - record.anualizedRateOfReturn = dailyFile[i][17]; - record.sellRate = dailyFile[i][18]; - record.lastTradeROI = dailyFile[i][19]; - record.strategy = dailyFile[i][20]; - record.strategyPhase = dailyFile[i][21]; - record.takeProfit = dailyFile[i][22]; - record.stopLossPhase = dailyFile[i][23]; - record.takeProfitPhase = dailyFile[i][24]; - record.positionSize = dailyFile[i][26]; // 25 is the message for the executor - record.initialBalanceA = dailyFile[i][27]; - record.minimunBalanceA = dailyFile[i][28]; - record.maximunBalanceA = dailyFile[i][29]; - record.initialBalanceB = dailyFile[i][30]; - record.minimunBalanceB = dailyFile[i][31]; - record.maximunBalanceB = dailyFile[i][32]; - record.baseAsset = dailyFile[i][33]; - record.quotedAsset = dailyFile[i][34]; - record.marketBaseAsset = dailyFile[i][35]; - record.marketQuotedAsset = dailyFile[i][36]; - record.positionPeriods = dailyFile[i][37]; - record.positionDays = dailyFile[i][38]; - - if ( - (record.begin >= farLeftDate.valueOf() && record.end <= farRightDate.valueOf()) && - (record.begin >= coordinateSystem.min.x && record.end <= coordinateSystem.max.x) - ) { - - records.push(record); - - if (datetime.valueOf() >= record.begin && datetime.valueOf() <= record.end) { - - thisObject.currentRecord = record; - thisObject.container.eventHandler.raiseEvent("Current Record Changed", thisObject.currentRecord); - - } - } - } - } - - currentDate = new Date(currentDate.valueOf() + ONE_DAY_IN_MILISECONDS); - } - - /* Lests check if all the visible screen is going to be covered by records. */ - - let lowerEnd = leftDate.valueOf(); - let upperEnd = rightDate.valueOf(); - - setTimeout(recalculate, 2000); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] recalculateUsingDailyFiles -> err = " + err.stack); } - } - } - - function recalculateUsingMarketFiles() { - - try { - - if (marketFile === undefined) { return; } // Initialization not complete yet. - - let daysOnSides = getSideDays(timeFrame); - - let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem); - let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem); - - let dateDiff = rightDate.valueOf() - leftDate.valueOf(); - - leftDate = new Date(leftDate.valueOf() - dateDiff * 1.5); - rightDate = new Date(rightDate.valueOf() + dateDiff * 1.5); - - records = []; - - for (let i = 0; i < marketFile.length; i++) { - - let record = {}; - - record.begin = marketFile[i][0]; - record.end = marketFile[i][1]; - record.type = marketFile[i][2]; - record.rate = marketFile[i][3]; - record.amount = marketFile[i][4]; - record.balanceA = marketFile[i][5]; - record.balanceB = marketFile[i][6]; - record.profit = marketFile[i][7]; - record.lastTradeProfitLoss = marketFile[i][8]; - record.stopLoss = marketFile[i][9]; - record.roundtrips = marketFile[i][10]; - record.hits = marketFile[i][11]; - record.fails = marketFile[i][12]; - record.hitRatio = marketFile[i][13]; - record.ROI = marketFile[i][14]; - record.periods = marketFile[i][15]; - record.days = marketFile[i][16]; - record.anualizedRateOfReturn = marketFile[i][17]; - record.sellRate = marketFile[i][18]; - record.lastTradeROI = marketFile[i][19]; - record.strategy = marketFile[i][20]; - record.strategyPhase = marketFile[i][21]; - record.takeProfit = marketFile[i][22]; - record.stopLossPhase = marketFile[i][23]; - record.takeProfitPhase = marketFile[i][24]; - record.positionSize = marketFile[i][26]; // 25 is the message for the executor - record.initialBalanceA = marketFile[i][27]; - record.minimunBalanceA = marketFile[i][28]; - record.maximunBalanceA = marketFile[i][29]; - record.initialBalanceB = marketFile[i][30]; - record.minimunBalanceB = marketFile[i][31]; - record.maximunBalanceB = marketFile[i][32]; - record.baseAsset = marketFile[i][33]; - record.quotedAsset = marketFile[i][34]; - record.marketBaseAsset = marketFile[i][35]; - record.marketQuotedAsset = marketFile[i][36]; - record.positionPeriods = marketFile[i][37]; - record.positionDays = marketFile[i][38]; - - if ( - (record.begin >= leftDate.valueOf() && record.end <= rightDate.valueOf()) && - (record.begin >= coordinateSystem.min.x && record.end <= coordinateSystem.max.x) - ) { - - records.push(record); - - if (datetime.valueOf() >= record.begin && datetime.valueOf() <= record.end) { - - thisObject.currentRecord = record; - thisObject.container.eventHandler.raiseEvent("Current Record Changed", thisObject.currentRecord); - - } - } - } - - //console.log("Olivia > recalculateUsingMarketFiles > total records generated : " + records.length); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] recalculateUsingMarketFiles -> err = " + err.stack); } - } - } - - function plotChart() { - - try { - - let record; - - /* Now we calculate and plot the records */ - - for (let i = 0; i < records.length; i++) { // We do not start in 0 so as to be able to read the previous record i - 1 - - record = records[i]; - - /* Contributing to Auto-Scale*/ - if (record.stopLoss !== 0) { - coordinateSystem.reportYValue(record.stopLoss) - } - if (record.takeProfit !== 0) { - coordinateSystem.reportYValue(record.takeProfit) - } - - /* Send the current record to the panel */ - - if (userPositionDate >= record.begin && userPositionDate <= record.end) { - - let eventRecords = { - currentRecord: record - }; - thisObject.container.eventHandler.raiseEvent("Current Record Changed", eventRecords); - } - - let stopLossPhase = -1; - let takeProfitPhase = -1; - - if (i > 0) { - if (record.stopLossPhase !== records[i - 1].stopLossPhase) { - stopLossPhase = record.stopLossPhase; - } - - if (record.takeProfitPhase !== records[i - 1].takeProfitPhase) { - takeProfitPhase = record.takeProfitPhase; - } - } - - let recordPoint1 = { - x: record.begin + timeFrame / 7 * 1.5, - y: thisObject.container.frame.height - }; - - let recordPoint2 = { - x: record.end + timeFrame / 7 * 5.5, - y: thisObject.container.frame.height - }; - - let recordPoint3 = { - x: recordPoint1.x + (recordPoint2.x - recordPoint1.x) / 2, - y: 0 - }; - - let recordPoint4 = { - x: record.begin + timeFrame / 7 * 1.5, - y: thisObject.container.frame.height * 100 - }; - - let recordPoint5 = { - x: record.begin, - y: record.stopLoss - }; - - let recordPoint6 = { - x: record.end, - y: record.stopLoss - }; - - if (record.stopLoss === 0) { // Put these points out of range if stopLoss is zero. - - recordPoint5.x = 0; - recordPoint6.x = 0; - } - - let recordPoint7 = { - x: record.begin, - y: record.sellRate - }; - - let recordPoint8 = { - x: record.end, - y: record.sellRate - }; - - if (record.sellRate === 0) { // Put these points out of range if sellRate is zero. - - recordPoint7.x = 0; - recordPoint8.x = 0; - } - - let recordPoint9 = { - x: record.begin, - y: record.takeProfit - }; - - let recordPoint10 = { - x: record.end, - y: record.takeProfit - }; - - if (record.takeProfit === 0) { // Put these points out of range if takeProfit is zero. - - recordPoint9.x = 0; - recordPoint10.x = 0; - } - - recordPoint1 = coordinateSystem.transformThisPoint(recordPoint1); - recordPoint2 = coordinateSystem.transformThisPoint(recordPoint2); - recordPoint3 = coordinateSystem.transformThisPoint(recordPoint3); - recordPoint4 = coordinateSystem.transformThisPoint(recordPoint4); - recordPoint5 = coordinateSystem.transformThisPoint(recordPoint5); - recordPoint6 = coordinateSystem.transformThisPoint(recordPoint6); - recordPoint7 = coordinateSystem.transformThisPoint(recordPoint7); - recordPoint8 = coordinateSystem.transformThisPoint(recordPoint8); - recordPoint9 = coordinateSystem.transformThisPoint(recordPoint9); - recordPoint10 = coordinateSystem.transformThisPoint(recordPoint10); - - recordPoint1 = transformThisPoint(recordPoint1, thisObject.container); - recordPoint2 = transformThisPoint(recordPoint2, thisObject.container); - recordPoint3 = transformThisPoint(recordPoint3, thisObject.container); - recordPoint4 = transformThisPoint(recordPoint4, thisObject.container); - recordPoint5 = transformThisPoint(recordPoint5, thisObject.container); - recordPoint6 = transformThisPoint(recordPoint6, thisObject.container); - recordPoint7 = transformThisPoint(recordPoint7, thisObject.container); - recordPoint8 = transformThisPoint(recordPoint8, thisObject.container); - recordPoint9 = transformThisPoint(recordPoint9, thisObject.container); - recordPoint10 = transformThisPoint(recordPoint10, thisObject.container); - - recordPoint1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint1); - recordPoint2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint2); - recordPoint3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint3); - recordPoint4 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint4); - recordPoint5 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint5); - recordPoint6 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint6); - recordPoint7 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint7); - recordPoint8 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint8); - recordPoint9 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint9); - recordPoint10 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint10); - - recordPoint1 = thisObject.fitFunction(recordPoint1); - recordPoint2 = thisObject.fitFunction(recordPoint2); - recordPoint3 = thisObject.fitFunction(recordPoint3); - recordPoint4 = thisObject.fitFunction(recordPoint4); - recordPoint5 = thisObject.fitFunction(recordPoint5); - recordPoint6 = thisObject.fitFunction(recordPoint6); - recordPoint7 = thisObject.fitFunction(recordPoint7); - recordPoint8 = thisObject.fitFunction(recordPoint8); - recordPoint9 = thisObject.fitFunction(recordPoint9); - recordPoint10 = thisObject.fitFunction(recordPoint10); - - /* Image representing a Record */ - - let imageOffset = { - x: 0, - y: -30 - } - let imageSize = (recordPoint2.x - recordPoint1.x) / 2; - let recordLabel = record.periods.toLocaleString() - if (imageSize < 8) { - if (recordLabel[recordLabel.length - 1] !== '0' || imageSize < 4) - recordLabel = '' - } - let labelOffset = { - x: 0 - imageSize / 2 + 3 + imageOffset.x, - y: -2 - imageOffset.y - } - - let imagePosition = { - x: recordPoint4.x + imageOffset.x, - y: 0 - } - - imagePosition = canvas.chartingSpace.viewport.fitIntoVisibleArea(imagePosition) - imagePosition = thisObject.fitFunction(imagePosition, undefined, 0, 0, imageSize) - - if (imageRecord.canDrawIcon === true) { - browserCanvasContext.drawImage(imageRecord, imagePosition.x, imagePosition.y, imageSize, imageSize); - browserCanvasContext.save(); - browserCanvasContext.translate(recordPoint3.x + labelOffset.x, recordPoint3.y + labelOffset.y); - browserCanvasContext.rotate(-Math.PI / 2); - printLabel(recordLabel, 0, 0, '1', 8, undefined, undefined, undefined, undefined, true); - browserCanvasContext.restore(); - } - - if (recordPoint5.x < canvas.chartingSpace.viewport.visibleArea.bottomLeft.x || recordPoint5.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x) { - continue; - } - - /* Next we are drawing the position Rate */ - - browserCanvasContext.beginPath(); - - browserCanvasContext.moveTo(recordPoint7.x, recordPoint7.y); - browserCanvasContext.lineTo(recordPoint8.x, recordPoint8.y); - - browserCanvasContext.closePath(); - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.MANGANESE_PURPLE + ', 1)'; - browserCanvasContext.lineWidth = 1 - browserCanvasContext.setLineDash([1, 4]) - - if (userPositionDate >= record.begin && userPositionDate <= record.end) { - browserCanvasContext.lineWidth = 5 - browserCanvasContext.setLineDash([3, 4]) - - /* highlight the current record */ - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', 1)'; // Current record accroding to time - } - - browserCanvasContext.stroke() - browserCanvasContext.setLineDash([0, 0]) - - imageSize = 20; - let imageToDraw; - - /* Depending on what is on top, it is also the text and image of the take profit / stop loss */ - - let yOffset = 0 - if (record.takeProfit > record.stopLoss) { yOffset = imageSize * 2 } - - /* Next we are drawing the stopLoss floor / ceilling */ - - browserCanvasContext.beginPath(); - - - browserCanvasContext.moveTo(recordPoint5.x, recordPoint5.y); - browserCanvasContext.lineTo(recordPoint6.x, recordPoint6.y); - - - browserCanvasContext.closePath(); - - let opacity = 1 - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.RUSTED_RED + ', ' + opacity + ''; - - if (userPositionDate >= record.begin && userPositionDate <= record.end) { - - /* highlight the current record */ - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', 1)'; // Current record accroding to time - } - - browserCanvasContext.lineWidth = 1 - browserCanvasContext.stroke() - - imagePosition = { - x: recordPoint6.x - imageSize, - y: recordPoint6.y - imageSize * 1.25 + yOffset - } - - imagePosition = canvas.chartingSpace.viewport.fitIntoVisibleArea(imagePosition) - imagePosition = thisObject.fitFunction(imagePosition, undefined, 0, 0, imageSize) - - let labelPosition = { - x: recordPoint6.x - imageSize / 2 - 3, - y: recordPoint6.y - imageSize * 1.5 + yOffset * 2 - } - labelPosition = canvas.chartingSpace.viewport.fitIntoVisibleArea(labelPosition) - labelPosition = thisObject.fitFunction(labelPosition, undefined, 30) - - if (imageStopLossPhase.canDrawIcon === true && stopLossPhase > -1) { - browserCanvasContext.drawImage(imageStopLossPhase, imagePosition.x, imagePosition.y, imageSize, imageSize); - printLabel(stopLossPhase, labelPosition.x, labelPosition.y, '1', 9); - } - - /* Next we are drawing the Take Profit */ - - browserCanvasContext.beginPath(); - - browserCanvasContext.moveTo(recordPoint9.x, recordPoint9.y); - browserCanvasContext.lineTo(recordPoint10.x, recordPoint10.y); - - browserCanvasContext.closePath(); - - opacity = 1 - - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.GREEN + ', ' + opacity + ''; - - if (userPositionDate >= record.begin && userPositionDate <= record.end) { - - /* highlight the current record */ - browserCanvasContext.strokeStyle = 'rgba(' + UI_COLOR.TITANIUM_YELLOW + ', 1)'; // Current record accroding to time - } - - browserCanvasContext.lineWidth = 1 - browserCanvasContext.stroke() - - imagePosition = { - x: recordPoint10.x - imageSize * 2 / 3, - y: recordPoint10.y + imageSize / 4 - yOffset - } - imagePosition = canvas.chartingSpace.viewport.fitIntoVisibleArea(imagePosition) - imagePosition = thisObject.fitFunction(imagePosition, undefined, 0, 0, imageSize) - - labelPosition = { - x: recordPoint10.x - imageSize * 1 / 3, - y: recordPoint10.y + imageSize * 1.9 - yOffset * 2 - } - labelPosition = canvas.chartingSpace.viewport.fitIntoVisibleArea(labelPosition) - labelPosition = thisObject.fitFunction(labelPosition, undefined, 30) - - if (imageTakeProfitPhase.canDrawIcon === true && takeProfitPhase > -1) { - browserCanvasContext.drawImage(imageTakeProfitPhase, imagePosition.x, imagePosition.y, imageSize, imageSize); - printLabel(takeProfitPhase, labelPosition.x, labelPosition.y, '1', 9); - } - } - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] plotChart -> err = " + err.stack); } - } - } - - - function onViewportZoomChanged(event) { - - try { - - recalculate(); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] onViewportZoomChanged -> err = " + err.stack); } - } - } - - function onViewportPositionChanged(event) { - - try { - - if (event !== undefined) { - if (event.recalculate === true) { - recalculate() - return - } - } - if (Math.random() * 100 > 95) { - recalculate() - }; - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] onViewportPositionChanged -> err = " + err.stack); } - } - } - - function onDragFinished() { - - try { - - recalculate(); - - } catch (err) { - - if (ERROR_LOG === true) { logger.write("[ERROR] onDragFinished -> err = " + err.stack); } - } - } -} - diff --git a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/TradingSimulationAssetBalancesPanel.js b/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/TradingSimulationAssetBalancesPanel.js deleted file mode 100644 index 7272577da..000000000 --- a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/TradingSimulationAssetBalancesPanel.js +++ /dev/null @@ -1,219 +0,0 @@ - -function newTradingEnginesPlottersTradingSimulationTradingSimulationTradingSimulationAssetBalancesPanel() { - - let thisObject = { - fitFunction: undefined, - onRecordChange: onRecordChange, - container: undefined, - session: undefined, - isVisible: true, - draw: draw, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - }; - - let container = newContainer(); - container.initialize(); - thisObject.container = container; - - container.frame.containerName = "Simulation Asset Balances Panel"; - - let currentRecord; - let lastRecord; - let upDownButton - - const HEIGHT_FACTOR = 1.25 - - return thisObject; - - function initialize() { - - thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL * 1; - thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL * HEIGHT_FACTOR; - - thisObject.container.frame.position.x = canvas.chartingSpace.viewport.visibleArea.topRight.x - thisObject.container.frame.width * 1; - thisObject.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.topRight.y; - - upDownButton = newUpDownButton() - upDownButton.parentContainer = thisObject.container - upDownButton.container.frame.parentFrame = thisObject.container.frame - upDownButton.fitFunction = thisObject.fitFunction - upDownButton.initialize() - - thisObject.assetBalances = newAssetalances() - thisObject.assetBalances.container.connectToParent(thisObject.container, true, true) - thisObject.assetBalances.initialize() - - } - - function finalize() { - thisObject.session = undefined - - thisObject.container.finalize() - thisObject.container = undefined - thisObject.fitFunction = undefined - thisObject.onRecordChange = undefined - thisObject.isVisible = undefined - - currentRecord = undefined - lastRecord = undefined - upDownButton = undefined - - thisObject.assetBalances.finalize() - thisObject.assetBalances = undefined - } - - function getContainer(point) { - if (thisObject.isVisible !== true) { return } - let container; - - container = upDownButton.getContainer(point) - if (container !== undefined) { return container } - - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - - let checkPoint = { - x: point.x, - y: point.y - } - - checkPoint = thisObject.fitFunction(checkPoint) - - if (point.x === checkPoint.x && point.y === checkPoint.y) { - return thisObject.container; - } - } - } - - - function onRecordChange(records) { - - currentRecord = records.currentRecord; - lastRecord = records.lastRecord - - } - - - function draw() { - if (thisObject.isVisible !== true) { return } - thisObject.container.frame.draw(false, false, true, thisObject.fitFunction); - - plotCurrentRecordInfo(); - - upDownButton.draw() - - /* Define panel name */ - if (thisObject.session !== undefined) { - const MAX_LABEL_LENGTH = 25 - if (thisObject.session.name.length > MAX_LABEL_LENGTH) { - container.frame.containerName = thisObject.session.name.substring(0, MAX_LABEL_LENGTH) + '...' - } else { - container.frame.containerName = thisObject.session.name - } - } - } - - - function plotCurrentRecordInfo() { - - if (currentRecord === undefined) { return; } - - const frameBodyHeight = thisObject.container.frame.getBodyHeight(); - const frameTitleHeight = thisObject.container.frame.height - frameBodyHeight; - - const X_AXIS = thisObject.container.frame.width / 2; - const Y_AXIS = frameTitleHeight + frameBodyHeight / 2; - - /* put the labels with the records values */ - - let y = 0; - let increment = 0.024 / HEIGHT_FACTOR * 2.5; - - y = y + increment; - y = y + increment; - printLabel('Asset Balances', X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - /* Parameters */ - let params - let paramsArray = [] - let positionTaken = false - - if (currentRecord.positionSize > 0) { - positionTaken = true - } - - let testPoint = { - x: 0, - y: thisObject.container.frame.height - } - - testPoint = thisObject.container.frame.frameThisPoint(testPoint) - let fitPoint = thisObject.fitFunction(testPoint) - if (fitPoint.y !== testPoint.y) { - return - } - - if (currentRecord.baseAsset === currentRecord.marketBaseAsset) { - params = {} - params.VALUE = currentRecord.balanceA; - params.INIT_VALUE = currentRecord.initialBalanceA - params.MIN_VALUE = currentRecord.minimunBalanceA - params.MAX_VALUE = currentRecord.maximunBalanceA - params.ASSET_LABEL = 'Base' - params.ASSET_NAME = currentRecord.baseAsset - params.LEFT_OFFSET = X_AXIS - params.POSITION_TAKEN = positionTaken - params.BASE_ASSET = currentRecord.baseAsset - params.DECIMALS = 4 - - paramsArray.push(params) - - params = {} - params.VALUE = currentRecord.balanceB; - params.MIN_VALUE = currentRecord.minimunBalanceB - params.INIT_VALUE = currentRecord.initialBalanceB - params.MAX_VALUE = currentRecord.maximunBalanceB - params.ASSET_LABEL = 'Quoted' - params.ASSET_NAME = currentRecord.quotedAsset - params.LEFT_OFFSET = X_AXIS - params.POSITION_TAKEN = positionTaken - params.BASE_ASSET = currentRecord.baseAsset - params.DECIMALS = 2 - - paramsArray.push(params) - } else { - params = {} - params.VALUE = currentRecord.balanceB; - params.INIT_VALUE = currentRecord.initialBalanceB - params.MIN_VALUE = currentRecord.minimunBalanceB - params.MAX_VALUE = currentRecord.maximunBalanceB - params.ASSET_LABEL = 'Base' - params.ASSET_NAME = currentRecord.baseAsset - params.LEFT_OFFSET = X_AXIS - params.POSITION_TAKEN = positionTaken - params.BASE_ASSET = currentRecord.baseAsset - params.DECIMALS = 4 - - paramsArray.push(params) - - params = {} - params.VALUE = currentRecord.balanceA; - params.MIN_VALUE = currentRecord.minimunBalanceA - params.INIT_VALUE = currentRecord.initialBalanceA - params.MAX_VALUE = currentRecord.maximunBalanceA - params.ASSET_LABEL = 'Quoted' - params.ASSET_NAME = currentRecord.quotedAsset - params.LEFT_OFFSET = X_AXIS - params.POSITION_TAKEN = positionTaken - params.BASE_ASSET = currentRecord.baseAsset - params.DECIMALS = 2 - - paramsArray.push(params) - } - - - thisObject.assetBalances.setParamsArray(paramsArray) - thisObject.assetBalances.draw() - } -} diff --git a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/TradingSimulationCurrentPositionPanel.js b/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/TradingSimulationCurrentPositionPanel.js deleted file mode 100644 index 6fc1ab6f5..000000000 --- a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/TradingSimulationCurrentPositionPanel.js +++ /dev/null @@ -1,178 +0,0 @@ - - - -function newTradingEnginesPlottersTradingSimulationTradingSimulationTradingSimulationCurrentPositionPanel() { - - let thisObject = { - fitFunction: undefined, - onRecordChange: onRecordChange, - container: undefined, - session: undefined, - isVisible: true, - draw: draw, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - }; - - let container = newContainer(); - container.initialize(); - thisObject.container = container; - - container.frame.containerName = "Simulation Current Position Panel"; - - let currentRecord; - let lastRecord; - let upDownButton - - const HEIGHT_FACTOR = 1.25 - - return thisObject; - - function initialize() { - - thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL * 1; - thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL * HEIGHT_FACTOR; - - thisObject.container.frame.position.x = canvas.chartingSpace.viewport.visibleArea.topRight.x - thisObject.container.frame.width * 1; - thisObject.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.topRight.y; - - upDownButton = newUpDownButton() - upDownButton.parentContainer = thisObject.container - upDownButton.container.frame.parentFrame = thisObject.container.frame - upDownButton.fitFunction = thisObject.fitFunction - upDownButton.initialize() - - } - - function finalize() { - thisObject.session = undefined - - thisObject.container.finalize() - thisObject.container = undefined - thisObject.fitFunction = undefined - thisObject.onRecordChange = undefined - thisObject.isVisible = undefined - - currentRecord = undefined - lastRecord = undefined - upDownButton = undefined - } - - function getContainer(point) { - if (thisObject.isVisible !== true) { return } - let container; - - container = upDownButton.getContainer(point) - if (container !== undefined) { return container } - - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - - let checkPoint = { - x: point.x, - y: point.y - } - - checkPoint = thisObject.fitFunction(checkPoint) - - if (point.x === checkPoint.x && point.y === checkPoint.y) { - return thisObject.container; - } - } - } - - - function onRecordChange(records) { - - currentRecord = records.currentRecord; - lastRecord = records.lastRecord - - } - - - function draw() { - if (thisObject.isVisible !== true) { return } - thisObject.container.frame.draw(false, false, true, thisObject.fitFunction); - - plotCurrentRecordInfo(); - - upDownButton.draw() - - /* Define panel name */ - if (thisObject.session !== undefined) { - const MAX_LABEL_LENGTH = 25 - if (thisObject.session.name.length > MAX_LABEL_LENGTH) { - container.frame.containerName = thisObject.session.name.substring(0, MAX_LABEL_LENGTH) + '...' - } else { - container.frame.containerName = thisObject.session.name - } - } - } - - - function plotCurrentRecordInfo() { - - if (currentRecord === undefined) { return; } - - const frameBodyHeight = thisObject.container.frame.getBodyHeight(); - const frameTitleHeight = thisObject.container.frame.height - frameBodyHeight; - - const X_AXIS = thisObject.container.frame.width / 2; - const Y_AXIS = frameTitleHeight + frameBodyHeight / 2; - - - /* put the labels with the records values */ - - let y = 0; - let increment = 0.024 / HEIGHT_FACTOR * 2.5; - - y = y + increment; - y = y + increment; - printLabel('Current Position', X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - y = y + increment; - printLabel('Size', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60', undefined, undefined, true, thisObject.container, thisObject.fitFunction); - y = y + increment; - printLabel(currentRecord.positionSize, X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - y = y + increment; - printLabel('Rate', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60', undefined, undefined, true, thisObject.container, thisObject.fitFunction); - y = y + increment; - printLabel(currentRecord.sellRate, X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - y = y + increment; - printLabel('Stop', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60', undefined, undefined, true, thisObject.container, thisObject.fitFunction); - y = y + increment; - printLabel(currentRecord.stopLoss, X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - y = y + increment; - printLabel('Take Profit', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60', undefined, undefined, true, thisObject.container, thisObject.fitFunction); - y = y + increment; - printLabel(currentRecord.takeProfit, X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - y = y + increment; - printLabel('Periods', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60', undefined, undefined, true, thisObject.container, thisObject.fitFunction); - y = y + increment; - printLabel((currentRecord.positionPeriods), X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - y = y + increment; - printLabel('Days', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60', undefined, undefined, true, thisObject.container, thisObject.fitFunction); - y = y + increment; - printLabel((currentRecord.positionDays).toFixed(2), X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - y = y + increment; - y = y + increment; - printLabel('Latest Position', X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - y = y + increment; - printLabel('Profit / Loss', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60', undefined, undefined, true, thisObject.container, thisObject.fitFunction); - y = y + increment; - printLabel((currentRecord.lastTradeProfitLoss), X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - y = y + increment; - printLabel('ROI', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60', undefined, undefined, true, thisObject.container, thisObject.fitFunction); - y = y + increment; - printLabel((currentRecord.lastTradeROI).toFixed(2) + ' % ', X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - } -} diff --git a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/TradingSimulationPartialResultsPanel.js b/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/TradingSimulationPartialResultsPanel.js deleted file mode 100644 index bd07abf7d..000000000 --- a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/TradingSimulationPartialResultsPanel.js +++ /dev/null @@ -1,177 +0,0 @@ - -function newTradingEnginesPlottersTradingSimulationTradingSimulationTradingSimulationPartialResultsPanel() { - - let thisObject = { - fitFunction: undefined, - onRecordChange: onRecordChange, - container: undefined, - session: undefined, - isVisible: true, - draw: draw, - getContainer: getContainer, - initialize: initialize, - finalize: finalize - }; - - let container = newContainer(); - container.initialize(); - thisObject.container = container; - - container.frame.containerName = "Simulation Partial Results Panel"; - - let currentRecord; - let lastRecord; - let upDownButton - - const HEIGHT_FACTOR = 1.25 - - return thisObject; - - function initialize() { - - thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL * 1; - thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL * HEIGHT_FACTOR; - - thisObject.container.frame.position.x = canvas.chartingSpace.viewport.visibleArea.topRight.x - thisObject.container.frame.width * 1; - thisObject.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.topRight.y; - - upDownButton = newUpDownButton() - upDownButton.parentContainer = thisObject.container - upDownButton.container.frame.parentFrame = thisObject.container.frame - upDownButton.fitFunction = thisObject.fitFunction - upDownButton.initialize() - - } - - function finalize() { - thisObject.session = undefined - - thisObject.container.finalize() - thisObject.container = undefined - thisObject.fitFunction = undefined - thisObject.onRecordChange = undefined - thisObject.isVisible = undefined - - currentRecord = undefined - lastRecord = undefined - upDownButton = undefined - } - - function getContainer(point) { - if (thisObject.isVisible !== true) { return } - let container; - - container = upDownButton.getContainer(point) - if (container !== undefined) { return container } - - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - - let checkPoint = { - x: point.x, - y: point.y - } - - checkPoint = thisObject.fitFunction(checkPoint) - - if (point.x === checkPoint.x && point.y === checkPoint.y) { - return thisObject.container; - } - } - } - - - function onRecordChange(records) { - - currentRecord = records.currentRecord; - lastRecord = records.lastRecord - - } - - - function draw() { - if (thisObject.isVisible !== true) { return } - thisObject.container.frame.draw(false, false, true, thisObject.fitFunction); - - plotCurrentRecordInfo(); - - upDownButton.draw() - - /* Define panel name */ - if (thisObject.session !== undefined) { - const MAX_LABEL_LENGTH = 25 - if (thisObject.session.name.length > MAX_LABEL_LENGTH) { - container.frame.containerName = thisObject.session.name.substring(0, MAX_LABEL_LENGTH) + '...' - } else { - container.frame.containerName = thisObject.session.name - } - } - } - - - function plotCurrentRecordInfo() { - - if (currentRecord === undefined) { return; } - - const frameBodyHeight = thisObject.container.frame.getBodyHeight(); - const frameTitleHeight = thisObject.container.frame.height - frameBodyHeight; - - const X_AXIS = thisObject.container.frame.width / 2; - const Y_AXIS = frameTitleHeight + frameBodyHeight / 2; - - - /* put the labels with the records values */ - - let y = 0; - let increment = 0.024 / HEIGHT_FACTOR * 2.5; - - y = y + increment; - y = y + increment; - printLabel('Partial Results', X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - y = y + increment; - printLabel('Profit / Loss', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60', undefined, undefined, true, thisObject.container, thisObject.fitFunction); - y = y + increment; - printLabel(currentRecord.profit, X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - y = y + increment; - printLabel('Trades', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60', undefined, undefined, true, thisObject.container, thisObject.fitFunction); - y = y + increment; - printLabel(currentRecord.roundtrips, X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - y = y + increment; - printLabel('Hits', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60', undefined, undefined, true, thisObject.container, thisObject.fitFunction); - y = y + increment; - printLabel(currentRecord.hits, X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - y = y + increment; - printLabel('Fails', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60', undefined, undefined, true, thisObject.container, thisObject.fitFunction); - y = y + increment; - printLabel(currentRecord.fails, X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - y = y + increment; - printLabel('Hit Ratio', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60', undefined, undefined, true, thisObject.container, thisObject.fitFunction); - y = y + increment; - printLabel((currentRecord.hitRatio * 100).toFixed(2) + ' %', X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - y = y + increment; - printLabel('ROI', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60', undefined, undefined, true, thisObject.container, thisObject.fitFunction); - y = y + increment; - printLabel((currentRecord.ROI * 100).toFixed(2) + ' %', X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - y = y + increment; - printLabel('Periods', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60', undefined, undefined, true, thisObject.container, thisObject.fitFunction); - y = y + increment; - printLabel(currentRecord.periods, X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - y = y + increment; - printLabel('Days', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60', undefined, undefined, true, thisObject.container, thisObject.fitFunction); - y = y + increment; - printLabel(currentRecord.days, X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - y = y + increment; - printLabel('Anualized Rate of Return', X_AXIS, frameTitleHeight + frameBodyHeight * y, '0.60', undefined, undefined, true, thisObject.container, thisObject.fitFunction); - y = y + increment; - printLabel((currentRecord.anualizedRateOfReturn * 100).toFixed(2) + ' %', X_AXIS, frameTitleHeight + frameBodyHeight * y, '1.00', 14, undefined, true, thisObject.container, thisObject.fitFunction); - - } -} diff --git a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/this.plotter.config.json b/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/this.plotter.config.json deleted file mode 100644 index d5ff7028d..000000000 --- a/Legacy-Code/TradingEngines/plotters/Plotters-Trading-Simulation/this.plotter.config.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "displayName": "Plotters Trading Simulation", - "codeName": "PlottersTradingSimulation", - "dataMine": "Masters", - "modules": [ - { - "codeName": "TradingSimulation", - "moduleName": "TradingSimulation", - "description": "Plots Bollinger Records.", - "profilePicture": "TradingSimulation.png", - "panels": [ - { - "codeName": "TradingSimulationPanel", - "moduleName": "TradingSimulationPanel", - "event": "Current Record Changed" - } - ] - }, - { - "codeName": "Conditions", - "moduleName": "Conditions", - "description": "Plots Simulation Conditions.", - "profilePicture": "Conditions.png", - "panels": [] - }, - { - "codeName": "Strategies", - "moduleName": "Strategies", - "description": "Plots Strategies.", - "profilePicture": "Strategies.png", - "panels": [ - ] - }, - { - "codeName": "Trades", - "moduleName": "Trades", - "description": "Plots Trades.", - "profilePicture": "Trades.png", - "panels": [ - ] - }, - { - "codeName": "SimulationExecution", - "moduleName": "SimulationExecution", - "description": "Plots Simulation Execution.", - "profilePicture": "SimulationExecution.png", - "panels": [ - { - "codeName": "SimulationExecutionPanel", - "moduleName": "SimulationExecutionPanel", - "event": "Current Record Changed" - } - ] - } - ] -} \ No newline at end of file diff --git a/README.md b/README.md index 4ef969ee7..2a67cdb97 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ Touch base with the Community and talk to the admins in our [Community Telegram] # Superalgos -Superalgos provides a toolbox with several integrated tools to design, test, and deploy automated crypto trading strategies, as well as research crypto markets. You can use Superalgos to download market data from crypto exchanges, make arbitrary calculations (including indicators), plot the results of your calculations over the charts, design trading strategies in a visual scripting environment that does not require coding, while still empowering developers by allowing it, and more. +Superalgos provides a toolbox with several integrated tools to design, test, and deploy automated crypto trading strategies, as well as research crypto markets. You can use Superalgos to download market data from crypto exchanges, make arbitrary calculations (including indicators), plot the results of your calculations over the charts, design trading strategies in a visual scripting environment that does not require coding, while still empowering developers by allowing it, and more. -You may use individual features or the whole package, and reuse all information gathered and generated—standardized in multiple time frames, stored in text files sorted by exchange/market—as input for your own software/systems. +You may use individual features or the whole package, and reuse all information gathered and generated—standardized in multiple time frames, stored in text files sorted by exchange/market—as input for your own software/systems. Superalgos runs on your computer, it is free and open source. @@ -16,21 +16,9 @@ Superalgos runs on your computer, it is free and open source. Please refer to the [documentation site](https://docs.superalgos.org/). -## Codebase and Development Environment - -To build each release, Superalgos used to draw code from several repositories within the Superalgos Github organization, as well as from organizations belonging to different teams. This has changed. - -* The ```develop``` branch in the [Superalgos repository](https://github.com/Superalgos/Superalgos/) now features the latest codebase and development environment (Beta 6). - -* The ```master``` branch now features the latest stable version of Superalgos (Beta 5). - -The codebase is distributed with the release and constitutes a fully functional development environment right out of the package. The system runs uncompiled on the actual code (```node run``` from the root folder). - -It is highly recommended to follow the Getting Started guide in the [documentation](https://docs.superalgos.org/) as it not only gets you up and running but gives you a quick tour so that you may grasp the basics most efficiently. - ## Contributing -Your help may be essential to the project's success and we want you in! +Your help may be essential to the project's success and we want you in! [There is something you may do](https://docs.superalgos.org/contributing-to-superalgos.html) to help the project regardless of what your skillset may be. We appreciate all contributions! diff --git a/Simple Workspace.json b/Simple Workspace.json deleted file mode 100644 index 5fbcc71c4..000000000 --- a/Simple Workspace.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"Workspace","name":"Simple Workspace","rootNodes":[{"type":"Network","name":"Superalgos","networkNodes":[{"type":"Network Node","name":"My Computer","code":"{ \n\"host\": \"localhost\", \n\"webPort\": \"34247\", \n\"webSocketsPort\": \"8080\"\n}","dataStorage":{"type":"Data Storage","name":"New Data Storage","sessionIndependentData":{"type":"Session Independent Data","name":"New Session Independent Data","exchangeDataProducts":[{"type":"Exchange Data Products","name":"Binance","singleMarketData":[{"type":"Single Market Data","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"dd7c8795-bb24-4438-9d77-b37a9000ad7f","savedPayload":{"position":{"x":23371.06171982374,"y":29755.463402452675},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"98e6c917-f4b7-4b71-9215-de3ccaf3dc0c","savedPayload":{"position":{"x":23309.87200716484,"y":29688.22822148878},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"1d7dd537-5f6f-4eb2-8e56-ddba0aef720f","savedPayload":{"position":{"x":23255.334304082426,"y":29617.63717135938},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"221c8d22-8a7f-4014-a7ed-0bafc886b123","savedPayload":{"position":{"x":23206.887565649668,"y":29543.756335083526},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"6929ebe7-6486-4299-add5-ed0282500d91","savedPayload":{"position":{"x":23164.409635478434,"y":29466.781583461365},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"4a3ed8eb-a73e-4fb4-835a-681cf47d7373","savedPayload":{"position":{"x":23127.954272621846,"y":29387.01865408159},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"5ffc6a67-e33b-422b-8e36-f9711f93c723","savedPayload":{"position":{"x":23097.639192435097,"y":29304.845223939745},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"48f7953c-f62d-4292-b042-d1ac05f8f80f","savedPayload":{"position":{"x":23073.59312544535,"y":29220.684709168152},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"3b9a3c93-6d41-440e-89a2-2fd1b2dde603","savedPayload":{"position":{"x":23055.93092946497,"y":29134.989347999064},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"70401ea0-3fed-4e40-8bba-a1e5adce9b8c","savedPayload":{"position":{"x":23044.74149094714,"y":29048.229467347366},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"06ac8eb7-8b14-42b1-9e2e-466280ade032","savedPayload":{"position":{"x":23040.082038163353,"y":28960.886298345627},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"014bba70-64d4-4035-b06d-145ee9b4c54c","savedPayload":{"position":{"x":23042.003950887687,"y":28873.448853567796},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"768cc06c-6fdf-491a-a741-5e08f0e25e38","savedPayload":{"position":{"x":23050.466878168714,"y":28786.41214682909},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"40794460-b815-498f-a245-e677de0eed86","savedPayload":{"position":{"x":23065.417000807633,"y":28700.259480577417},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"7ccbd0c1-c804-47e3-9314-14cbb756c806","savedPayload":{"position":{"x":23086.77070450453,"y":28615.471649716354},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"728d6f08-086f-41ba-9126-30ec56a45ea5","savedPayload":{"position":{"x":23114.406609825463,"y":28532.522286741372},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"1510fd36-633e-40a7-adbe-680660d64bd0","savedPayload":{"position":{"x":23148.169366016973,"y":28451.87541760758},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"2404b1eb-c7c9-46e7-b22a-93cfcc3739f4","savedPayload":{"position":{"x":23187.86902671619,"y":28373.982218753026},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"d83476c3-2f0b-4d4a-abb2-0e47ed0a421d","savedPayload":{"position":{"x":23233.282704515826,"y":28299.27861555026},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"0428f20b-9620-480e-a531-dbb2e5f59ef4","savedPayload":{"position":{"x":23284.155499041935,"y":28228.182645022604},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"fcfec9fa-1a0d-4285-9fad-4a23409f88ed","savedPayload":{"position":{"x":23340.20207992671,"y":28161.092192953925},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"08f223a8-9707-4c45-b638-1fe0e4a2b053","savedPayload":{"position":{"x":23401.108168726983,"y":28098.382682167503},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"66f1a9be-fe96-48c3-91e4-500c6e246423","savedPayload":{"position":{"x":23466.532371137244,"y":28040.405039765592},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"e432c706-cbcd-4af0-b23c-b18e5b29377a","savedPayload":{"position":{"x":23536.108013736324,"y":27987.483666562868},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"7f2dfd8e-de4a-4bd1-8d34-27581f1a3ed8","savedPayload":{"position":{"x":23609.445247280004,"y":27939.914692361803},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"595d148f-6cdf-48d3-ab8f-23fba0052631","savedPayload":{"position":{"x":23686.133170127676,"y":27897.964247876364},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"2045098a-e9b4-4409-9fd9-ee7285d9b7cf","savedPayload":{"position":{"x":23765.742167285152,"y":27861.867050486988},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"295bd09d-e868-4e8b-9944-39bf6e0d7951","savedPayload":{"position":{"x":23847.826269301095,"y":27831.825012109308},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"ba6f23d4-c2e7-41b4-88a0-e14ebb34e21c","savedPayload":{"position":{"x":23931.925677158062,"y":27808.006188376137},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}},{"type":"Data Product","name":"Resistances","id":"0669d924-aace-46d1-b126-ccced8fd33cf","savedPayload":{"position":{"x":24017.569303661556,"y":27790.54375284746},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Resistances","id":"7a734501-a0fb-4305-803e-7e95d477c513"}}},{"type":"Data Product","name":"Supports","id":"5e7a0e50-e6ed-4106-8025-8b35ad6c597c","savedPayload":{"position":{"x":24104.277428229234,"y":27779.53533354118},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Supports","id":"bc3c43de-6312-47d4-ae3d-0c95c1b039e0"}}},{"type":"Data Product","name":"Basic Candles","id":"4e14ecf7-3eaa-48ce-91fb-c6e1c806fdf8","savedPayload":{"position":{"x":24191.564364245627,"y":27775.04237575126},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Basic Candles","id":"7519e3d8-b5ec-47eb-84c9-8c9262c9efc6"}}},{"type":"Data Product","name":"One-Candle Patterns","id":"e11730aa-5ffb-42bd-8bfb-56e7fa36cd68","savedPayload":{"position":{"x":24278.93933041822,"y":27777.116783791076},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"One-Candle Patterns","id":"f3c0863c-ac0c-4fc0-b9ee-5f0f2bd722ea"}}},{"type":"Data Product","name":"Two-Candles Patterns","id":"3d5a0163-c683-43d8-b344-ec1113c4726c","savedPayload":{"position":{"x":24365.90657030612,"y":27785.72214467975},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Two-Candles Patterns","id":"29283392-6a01-4acd-8f41-328e92281980"}}},{"type":"Data Product","name":"Three-Candles Patterns","id":"86ebf7ee-0102-4dc1-a597-0f0df3e07df8","savedPayload":{"position":{"x":24451.982717495048,"y":27800.80446571127},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Three-Candles Patterns","id":"1b6f79d8-d1ba-49e5-a808-42f71fba5657"}}},{"type":"Data Product","name":"ATR - RMA","id":"9a883744-bbec-4bf8-825a-a48a4f45cfc1","savedPayload":{"position":{"x":24536.68714517365,"y":27822.28069113179},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"ATR - RMA","id":"660570d1-36e0-4099-817c-6c8a29b32689"}}},{"type":"Data Product","name":"ATR - SMA","id":"b2693a25-7acc-447e-8df9-b02cf457f07b","savedPayload":{"position":{"x":24619.546468804238,"y":27850.029809260923},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"ATR - SMA","id":"d83ffb9c-d01c-49eb-991d-3dc31baac747"}}},{"type":"Data Product","name":"ROC 76","id":"bbe5aec6-3bd1-4cbe-8640-2044b0443110","savedPayload":{"position":{"x":24700.097142835675,"y":27883.896262395498},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"ROC 76","id":"9c2b6696-872f-44a4-b6b2-ab15a0c8541a"}}},{"type":"Data Product","name":"ROC 32","id":"020f3ef7-9b8e-4e2e-9b88-e57ca7ee8435","savedPayload":{"position":{"x":24777.88874575228,"y":27923.689541797},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"ROC 32","id":"ff5aacca-1783-4247-9702-ee5dd01fb3ff"}}},{"type":"Data Product","name":"ROC 9","id":"bf5e9f22-9be9-4d8d-8262-c6074b81e629","savedPayload":{"position":{"x":24852.487587166124,"y":27969.184242490734},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"ROC 9","id":"83bfd082-1c10-4c42-be63-379a2100cc0e"}}},{"type":"Data Product","name":"Stoch-14-3-3","id":"7861fc9f-43b9-4f7c-8083-4d0d0dc5848a","savedPayload":{"position":{"x":24936.427714219786,"y":28030.87648882813},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Stoch-14-3-3","id":"393dc97b-76ee-409a-9b8f-f264ed652b0b"}}}],"id":"cbdd3605-b905-453f-9ecb-e986cb2729f9","savedPayload":{"position":{"x":24208.266379798588,"y":28943.066572350555},"targetPosition":{"x":25075.03782491874,"y":29723.223627908737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}}],"id":"7f87ecc6-8dd3-42e9-9217-1579b64aae75","savedPayload":{"position":{"x":25074.634937019582,"y":29722.87687160602},"targetPosition":{"x":25508.31642796674,"y":30113.362100209542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"bf04ccea-266d-4115-b50e-fefdf29b873a","savedPayload":{"position":{"x":25508.31642796674,"y":30113.362100209542},"targetPosition":{"x":25941.94637075935,"y":30503.7760398818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"i"}}},"sessionBasedData":{"type":"Session Based Data","name":"New Session Based Data","exchangeSessions":[{"type":"Exchange Sessions","name":"Binance","sessionReferences":[{"type":"Session Reference","name":"Back WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"573fb46f-78d2-4bf3-ad11-e42d2531d53e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"39d7a06d-5aad-4b03-8778-e4df8dacc825","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"7af9d35c-7464-4ed5-9ee6-ccf7a9943894","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"82b46974-7a93-4066-a3b7-378b42710364","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"109e30d5-c839-4e20-8744-2e4dc002f3a8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"3792a579-2f2c-4c29-9cb1-05e2683db5da","savedPayload":{"position":{"x":25598.923749057652,"y":28711.764679557487},"targetPosition":{"x":26184.379330131018,"y":29362.007651139225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Backtesting Session","name":"Back WHB","id":"f32f1cdc-425f-4193-a43b-be9312c74234"}}},{"type":"Session Reference","name":"Paper WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"63636068-307e-4cea-b31f-f47e106cea2c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"20848048-8efb-47b1-aaf0-789d2f6c5b1d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"87b74841-4f6a-4658-b01b-7feb254b5d2f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"5e28998c-b35f-4cc0-9fd6-8ee5f5714545","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"12cd1cb4-f163-4d1b-8955-cae6904831c7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"5f2e9d8a-f1df-4efd-8232-718818cab630","savedPayload":{"position":{"x":26093.003519281363,"y":28491.783569682495},"targetPosition":{"x":26184.379330131018,"y":29362.007651139225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Paper Trading Session","name":"Paper WHB","id":"2198ec50-3d31-43b7-a57d-e386bef38a93"}}},{"type":"Session Reference","name":"Live Trading WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"af19e56c-eaf1-4b0b-93f9-74b9ac1843c2","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"30ac52a8-ee50-439c-83c8-df75ab49374a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"c35fa0be-6e51-4d14-9a52-6b0174cc1aab","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"6a059555-2555-4c7f-a722-2ab4ca0440c5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"863885a8-2351-4b29-9f2e-ae3aeda223fc","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"ee314903-8ee9-4068-8a90-9452c460b910","savedPayload":{"position":{"x":26621.815570035997,"y":28604.216203591706},"targetPosition":{"x":26184.379330131018,"y":29362.007651139225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Live Trading Session","name":"Live Trading WHB","id":"5335fd67-ebdc-4cfd-936d-b76af957713e"}}},{"type":"Session Reference","name":"Fwd WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"5919a710-a950-4049-9605-3f127b7fac6b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"c7030a88-152f-421c-8b32-66f3c222286a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"f4b18249-5044-4b34-83f7-3cedbbe939c5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"25db80e6-c4cf-4568-98d3-0cba83625ece","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"9b6e94d5-442d-4882-beb6-6b616adb24a7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"3892574a-ebe9-4d4d-8e79-02e6f0900c44","savedPayload":{"position":{"x":26983.70100916551,"y":29006.098744413946},"targetPosition":{"x":26184.379330131018,"y":29362.007651139225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Forward Testing Session","name":"Fwd WHB","id":"0e7edb98-38ff-4516-89a1-188030989ddc"}}}],"id":"5b3343c9-3fab-46ec-92e3-9c074759a112","savedPayload":{"position":{"x":26184.15550450161,"y":29362.11172068774},"targetPosition":{"x":26062.983193324853,"y":29932.998941588485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"29ca14e5-dabe-470a-be64-ed7996bd1e55","savedPayload":{"position":{"x":26062.983193324853,"y":29932.998941588485},"targetPosition":{"x":25941.94637075935,"y":30503.7760398818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0726a9e4-23b6-4d27-a8de-e91a9665a8ba","savedPayload":{"position":{"x":25942.051900287464,"y":30503.613795575635},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"d"}}},"dataMining":{"type":"Data Mining","name":"New Data Mining","exchangeTasks":[{"type":"Exchange Tasks","name":"Binance","taskManagers":[{"type":"Task Manager","name":"Masters BTC/USDT","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"b1a110d4-ac93-402d-8465-a35a835d0c22","savedPayload":{"position":{"x":25715.92656901148,"y":29232.66217900514},"targetPosition":{"x":25986.009041425557,"y":29344.30965590297},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"fa3aae08-61b3-4a35-af20-c1242b9954c8","savedPayload":{"position":{"x":25986.009041425557,"y":29344.30965590297},"targetPosition":{"x":26256.170548319333,"y":29455.86910148335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"e61db3ab-b80d-4575-8da1-5598e0b1b525","savedPayload":{"position":{"x":26256.170548319333,"y":29455.86910148335},"targetPosition":{"x":26526.552274142003,"y":29567.35699234963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"160f8edd-29cf-40c2-bb21-5f569d97f9d1","savedPayload":{"position":{"x":26526.552274142003,"y":29567.35699234963},"targetPosition":{"x":27066.46739171246,"y":29790.172964033307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"22df3948-2a73-4ca6-a927-4b722dbb27dc","savedPayload":{"position":{"x":25939.8267261243,"y":28878.57231820106},"targetPosition":{"x":26193.060472964273,"y":29024.67158867834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"5324b18d-e2b0-495e-94a0-cfc3f3473766","savedPayload":{"position":{"x":26193.060472964273,"y":29024.67158867834},"targetPosition":{"x":26446.300152725507,"y":29170.709057346518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"d7e0c235-4024-4888-86ba-32cf5c73b852","savedPayload":{"position":{"x":26007.879592203113,"y":28411.825910002688},"targetPosition":{"x":26227.026441256985,"y":28791.21963495391},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"02adb2d3-1740-4f42-975e-e0365e308b97","savedPayload":{"position":{"x":26227.026441256985,"y":28791.21963495391},"targetPosition":{"x":26446.300152725507,"y":29170.709057346518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"ccf1813f-31d2-4359-88ce-8c8e6132f222","savedPayload":{"position":{"x":26446.300152725507,"y":29170.709057346518},"targetPosition":{"x":26653.277258805567,"y":29377.383777322084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b55a2f7e-354e-47ce-8986-a4a0079efe2b","savedPayload":{"position":{"x":26653.277258805567,"y":29377.383777322084},"targetPosition":{"x":27066.46739171246,"y":29790.172964033307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"89bf947b-a245-4aad-a2fa-472ad6f8fd2e","savedPayload":{"position":{"x":26375.103316490437,"y":28516.404125977297},"targetPosition":{"x":26553.027670627976,"y":28748.411538508055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"df74508f-a106-4190-83ae-8c43455cd889","savedPayload":{"position":{"x":26553.027670627976,"y":28748.411538508055},"targetPosition":{"x":26730.949331437758,"y":28980.34563260746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"441d958c-4ebf-4cc5-b49e-cdaf3802efc3","savedPayload":{"position":{"x":26616.516683190002,"y":28111.310893797567},"targetPosition":{"x":26673.713618903057,"y":28545.749400012595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"daf27799-58cb-480a-832b-4e3404882961","savedPayload":{"position":{"x":26673.713618903057,"y":28545.749400012595},"targetPosition":{"x":26730.949331437758,"y":28980.34563260746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"b1b31e7e-12f8-45fd-9508-cb82030d7507","savedPayload":{"position":{"x":26730.949331437758,"y":28980.34563260746},"targetPosition":{"x":26842.90144004168,"y":29250.60040329165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"52b4b8db-0336-423c-9343-5353225b4bfb","savedPayload":{"position":{"x":26842.90144004168,"y":29250.60040329165},"targetPosition":{"x":27066.46739171246,"y":29790.172964033307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f7457cf6-bcdc-48e1-b6e2-b45de382bc37","savedPayload":{"position":{"x":26915.46586332855,"y":28348.60373638434},"targetPosition":{"x":26990.96951155539,"y":28631.086837511877},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"5a6b7843-090c-4b3b-9be4-ed8c8d1f6935","savedPayload":{"position":{"x":26990.96951155539,"y":28631.086837511877},"targetPosition":{"x":27066.46890113344,"y":28913.502877175913},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"e78c5425-7d77-47c5-bb63-db88cad6e060","savedPayload":{"position":{"x":27293.093598824988,"y":28066.777956822272},"targetPosition":{"x":27179.81185217895,"y":28490.0569352028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"4c5ed30f-d600-44e2-ac14-33ce0528178e","savedPayload":{"position":{"x":27179.81185217895,"y":28490.0569352028},"targetPosition":{"x":27066.46890113344,"y":28913.502877175913},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"b4fb4df9-2d6e-4c0a-8eb5-d1bd78232d0d","savedPayload":{"position":{"x":27066.46890113344,"y":28913.502877175913},"targetPosition":{"x":27066.462311651743,"y":29206.078091101994},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"aacffa8c-5a19-423f-b551-0f9a5c46a628","savedPayload":{"position":{"x":27066.462311651743,"y":29206.078091101994},"targetPosition":{"x":27066.46739171246,"y":29790.172964033307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"7af918d3-d9a4-4553-9b3d-12224b4ad938","savedPayload":{"position":{"x":27478.67274433146,"y":28400.610006268354},"targetPosition":{"x":27440.413831203023,"y":28690.47440012945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"0d8ca3f1-31af-40e4-8f43-4dacc8950dff","savedPayload":{"position":{"x":27440.413831203023,"y":28690.47440012945},"targetPosition":{"x":27402.136886386874,"y":28980.279149282884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f11fe52f-ba3f-486d-93f2-a6b82fa67c2d","savedPayload":{"position":{"x":27935.75343801085,"y":28284.99453574767},"targetPosition":{"x":27669.05890225842,"y":28632.568789376724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"ba74160c-2b59-497a-b895-4ddade53f72e","savedPayload":{"position":{"x":27669.05890225842,"y":28632.568789376724},"targetPosition":{"x":27402.136886386874,"y":28980.279149282884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"3a93a6a1-0d2e-475b-874e-8784dc4b6c78","savedPayload":{"position":{"x":27402.136886386874,"y":28980.279149282884},"targetPosition":{"x":27290.067866953665,"y":29250.553293598372},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"9843b9dd-ff8e-4cef-b063-730b0317420d","savedPayload":{"position":{"x":27290.067866953665,"y":29250.553293598372},"targetPosition":{"x":27066.46739171246,"y":29790.172964033307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"da37aa9d-a68c-49eb-be66-5fcc1a13ab69","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"abae0d8d-c44c-4825-b6ad-aabad604ba2d","savedPayload":{"position":{"x":27893.59155611729,"y":28963.795345898103},"targetPosition":{"x":27686.73138916544,"y":29170.499723843357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"f33858b9-8561-4f70-ba70-d8d168786321","savedPayload":{"position":{"x":27686.73138916544,"y":29170.499723843357},"targetPosition":{"x":27479.690816223054,"y":29377.275678085207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"64e8f70e-829c-47cd-b933-f4e4dd0c90fc","savedPayload":{"position":{"x":27479.690816223054,"y":29377.275678085207},"targetPosition":{"x":27066.46739171246,"y":29790.172964033307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Resistances & Supports","bot":{"type":"Indicator Bot Instance","name":"Resistances & Supports","code":" {\n \"repo\": \"\"\n }","processes":[{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"5e0f86e6-2a43-49c2-a347-7203f0867c2d","savedPayload":{"position":{"x":28572.216674568095,"y":28922.312740044177},"targetPosition":{"x":28224.628601696666,"y":29188.89751710679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"f9f341a9-ba04-4c03-8f3b-249e72681562","savedPayload":{"position":{"x":28224.628601696666,"y":29188.89751710679},"targetPosition":{"x":27876.861968732992,"y":29455.5810596484},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"5d9b2729-43fb-4e7e-aa4f-b8477c424e51"}}},{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"9974d57e-33ac-4fcf-ad75-35a8c4dc549e","savedPayload":{"position":{"x":28456.529313045008,"y":29379.68900459489},"targetPosition":{"x":28166.711551186167,"y":29417.66692604384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"9c93e98f-e166-4c8d-a9d7-08ada9c68eeb","savedPayload":{"position":{"x":28166.711551186167,"y":29417.66692604384},"targetPosition":{"x":27876.861968732992,"y":29455.5810596484},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"be19d91b-9337-4f84-96b3-f4e54ea12df5"}}}],"id":"88a4c3b6-e148-47e8-91b2-bf72bb167dc5","savedPayload":{"position":{"x":27876.861968732992,"y":29455.5810596484},"targetPosition":{"x":27606.45005893827,"y":29567.186659241605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6c9dc449-6a37-4f34-8984-13aafed439fc","savedPayload":{"position":{"x":27606.45005893827,"y":29567.186659241605},"targetPosition":{"x":27066.46739171246,"y":29790.172964033307},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ea242bf3-f7e6-431a-ab41-e022cb3ac6df","savedPayload":{"position":{"x":27066.654357089337,"y":29788.910814452942},"targetPosition":{"x":27066.72999045144,"y":30372.90511719708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta BTC/USDT","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"08b275d2-c921-49d0-a88d-5669df5c17e0","savedPayload":{"position":{"x":26213.962501375994,"y":28537.058246073513},"targetPosition":{"x":26466.91701226882,"y":28682.99448138759},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"a5449b25-a98e-4fa4-87eb-5f60b967770a","savedPayload":{"position":{"x":26466.91701226882,"y":28682.99448138759},"targetPosition":{"x":26719.783387497035,"y":28828.901037458687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"287d4ba4-1404-4256-bdbb-cf2c970e5269","savedPayload":{"position":{"x":26719.714861625995,"y":27662.051817775493},"targetPosition":{"x":26719.72671348929,"y":28245.397180744993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"05fb2b7e-6704-4f05-b12b-b590101e5ca9","savedPayload":{"position":{"x":26719.72671348929,"y":28245.397180744993},"targetPosition":{"x":26719.783387497035,"y":28828.901037458687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"f6dc278d-5a5c-4cba-b513-f0660a9f492d","savedPayload":{"position":{"x":26719.783387497035,"y":28828.901037458687},"targetPosition":{"x":27011.5618131025,"y":29334.173033993873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a15b5f86-52c2-4a22-9dd9-311d981601ba","savedPayload":{"position":{"x":27011.5618131025,"y":29334.173033993873},"targetPosition":{"x":27303.86744721087,"y":29839.931047973212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f8ea11d8-7b32-4ed0-968d-a20df0b49d7f","savedPayload":{"position":{"x":27188.533293867833,"y":28145.140769934947},"targetPosition":{"x":27307.108655529126,"y":28411.938907087995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"e32509df-e962-4760-991e-6533a398c58e","savedPayload":{"position":{"x":27307.108655529126,"y":28411.938907087995},"targetPosition":{"x":27425.637471040533,"y":28678.65983562112},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"0d4140a1-5e1f-4e2e-b540-582474e41889","savedPayload":{"position":{"x":28111.395691285285,"y":27734.52746778035},"targetPosition":{"x":27768.504144537997,"y":28206.515119114738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"96466f5a-6dd9-4db9-b30c-1c4622076d8a","savedPayload":{"position":{"x":27768.504144537997,"y":28206.515119114738},"targetPosition":{"x":27425.637471040533,"y":28678.65983562112},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"fffaf3df-a88c-4d45-bb52-d02b818502b5","savedPayload":{"position":{"x":27425.637471040533,"y":28678.65983562112},"targetPosition":{"x":27364.741127294605,"y":29258.98378457244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"53fd5de3-7d70-4eb7-8dd6-976d1e188d12","savedPayload":{"position":{"x":27364.741127294605,"y":29258.98378457244},"targetPosition":{"x":27303.86744721087,"y":29839.931047973212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"78a80ff6-f4f2-4680-9a7b-65225144dd94","savedPayload":{"position":{"x":28206.946024504796,"y":28401.281426077738},"targetPosition":{"x":28146.132073601777,"y":28686.88088416765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"301a8d2c-f659-4d4b-9906-40177bdc1256","savedPayload":{"position":{"x":28146.132073601777,"y":28686.88088416765},"targetPosition":{"x":28085.339559512995,"y":28972.38919793993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"a9291a08-1ba1-436b-b491-e759cc8fb7d1","savedPayload":{"position":{"x":29195.314377204453,"y":28611.823626843787},"targetPosition":{"x":28640.37318613151,"y":28792.055281743545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"19fff031-07c3-4836-9bca-1570eb69a931","savedPayload":{"position":{"x":28640.37318613151,"y":28792.055281743545},"targetPosition":{"x":28085.339559512995,"y":28972.38919793993},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"a81bcaf4-6c99-4b6a-8291-5fa657ae2c17","savedPayload":{"position":{"x":28085.339559512995,"y":28972.38919793993},"targetPosition":{"x":27694.817287178204,"y":29405.964458555027},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8e2997a2-13ae-464c-b980-9ec46584db3b","savedPayload":{"position":{"x":27694.817287178204,"y":29405.964458555027},"targetPosition":{"x":27303.86744721087,"y":29839.931047973212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f6802028-335d-4e31-90a7-9d608199aafb","savedPayload":{"position":{"x":28880.557622286065,"y":29207.511810348526},"targetPosition":{"x":28663.39901833756,"y":29402.70411124385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"8540fa7a-f4b2-4e97-923c-e8acd00bbb9f","savedPayload":{"position":{"x":28663.39901833756,"y":29402.70411124385},"targetPosition":{"x":28446.303948311404,"y":29597.783760649523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"51d58c12-ad1f-450e-94fd-ea0f8ad08769","savedPayload":{"position":{"x":29556.27049917393,"y":29958.226888406054},"targetPosition":{"x":29001.36039732282,"y":29778.043348052775},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"c655562c-3839-42e0-9ea6-982629405d33","savedPayload":{"position":{"x":29001.36039732282,"y":29778.043348052775},"targetPosition":{"x":28446.303948311404,"y":29597.783760649523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"f84cf5d6-034c-42db-b197-e95c0228efc9","savedPayload":{"position":{"x":28446.303948311404,"y":29597.783760649523},"targetPosition":{"x":27875.404433447202,"y":29718.770964172774},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"385443d2-f17f-459c-b603-58f42e5c366f","savedPayload":{"position":{"x":27875.404433447202,"y":29718.770964172774},"targetPosition":{"x":27303.86744721087,"y":29839.931047973212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"2a5cc26f-cb88-4743-b412-c33acb6aa0fb","savedPayload":{"position":{"x":27409.956613353545,"y":29900.42227051082},"targetPosition":{"x":27066.72999045144,"y":30372.90511719708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Buddha BTC/USDT","tasks":[{"type":"Task","name":"Candle Patterns","bot":{"type":"Indicator Bot Instance","name":"Candle Patterns","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Patterns Multi-Period-Market","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"db4b89d0-10af-4bde-9055-daa8ce7f16f4","savedPayload":{"position":{"x":29123.958593313102,"y":29399.640468958878},"targetPosition":{"x":28928.43024330293,"y":29616.564276093966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"6afbb9c2-b0f0-44b7-95e7-b7b5468cc1f4","savedPayload":{"position":{"x":28928.43024330293,"y":29616.564276093966},"targetPosition":{"x":28732.91665554003,"y":29833.368976928956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"3aaf9f93-0516-4b3d-9772-44be91615154"}}},{"type":"Indicator Process Instance","name":"Candle Patterns Multi-Period-Daily","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"96d74290-d474-49ec-9d92-eac2a3281231","savedPayload":{"position":{"x":29874.832796904408,"y":30075.950054173612},"targetPosition":{"x":29303.924558362356,"y":29954.684032762092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"743650af-a6cd-47fc-b0a1-41de65a6e632","savedPayload":{"position":{"x":29303.924558362356,"y":29954.684032762092},"targetPosition":{"x":28732.91665554003,"y":29833.368976928956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8a7ce3e2-20a1-496b-86bf-2d7842f88536"}}}],"id":"a9c80bea-5545-423f-b5d7-f2f65164d208","savedPayload":{"position":{"x":28732.91665554003,"y":29833.368976928956},"targetPosition":{"x":28177.67479449994,"y":30013.465030656134},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2c112f81-7eae-4382-8094-93c545119bb0","savedPayload":{"position":{"x":28177.67479449994,"y":30013.465030656134},"targetPosition":{"x":27622.052725021094,"y":30193.598527443806},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fea766d7-9514-415b-aa35-364742aea91d","savedPayload":{"position":{"x":27622.173127511764,"y":30192.51413189961},"targetPosition":{"x":27066.72999045144,"y":30372.90511719708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task Manager","name":"Alpha BTC/USDT","tasks":[{"type":"Task","name":"ATR","bot":{"type":"Indicator Bot Instance","name":"ATR","code":" {\n\"repo\": \"ATR-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"ATR Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"31a00dff-4a4e-461f-afc5-22e01f05debb","savedPayload":{"position":{"x":28980.8860607955,"y":29534.980752663985},"targetPosition":{"x":28821.64298682056,"y":29779.82417109748},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"b4fef0dd-491b-4c17-89e7-a7e6e3d91c1c","savedPayload":{"position":{"x":28821.64298682056,"y":29779.82417109748},"targetPosition":{"x":28662.41496747156,"y":30024.55313649711},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"83a07439-ad71-463a-9727-5f43ad0b03d2"}}},{"type":"Indicator Process Instance","name":"ATR Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"fdffb992-1afd-4cd7-b80d-412db04a5c75","savedPayload":{"position":{"x":29828.3602608753,"y":30085.4304414098},"targetPosition":{"x":29245.446108265784,"y":30054.996697251812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"13608070-4894-4ad0-8de9-dc518a580b06","savedPayload":{"position":{"x":29245.446108265784,"y":30054.996697251812},"targetPosition":{"x":28662.41496747156,"y":30024.55313649711},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"61dde091-7c09-4384-ab2d-1fec0dbef7c5"}}}],"id":"9eb6e7bc-568f-4eff-9b7c-0a70854610bd","savedPayload":{"position":{"x":28662.41496747156,"y":30024.55313649711},"targetPosition":{"x":28142.157498320856,"y":30289.350689464318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ca5575ce-51a1-4fe7-a1b5-9a1b0e4c7b6d","savedPayload":{"position":{"x":28142.157498320856,"y":30289.350689464318},"targetPosition":{"x":27621.614663189386,"y":30554.309280959973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"ROC","bot":{"type":"Indicator Bot Instance","name":"ROC","code":" {\n\"repo\": \"ROC-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"ROC Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"fa92ef3f-79d9-4d75-8d25-84ebc560726f","savedPayload":{"position":{"x":29303.712639832975,"y":30794.30992413088},"targetPosition":{"x":29017.984676737804,"y":30854.830443946496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"43b86883-7952-442b-8e4b-8bf55d331dfb","savedPayload":{"position":{"x":29017.984676737804,"y":30854.830443946496},"targetPosition":{"x":28732.318414200978,"y":30915.30527293223},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"a2a141ba-08ed-4f30-9c7d-f811c6a7c571"}}},{"type":"Indicator Process Instance","name":"ROC Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"542b6590-c4f5-4d69-9118-ec6ce4abdb4d","savedPayload":{"position":{"x":29513.513583344105,"y":31782.802364291005},"targetPosition":{"x":29122.954608270946,"y":31349.085675675033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"cfa417e6-c91a-4c7a-acab-0cce63e986e4","savedPayload":{"position":{"x":29122.954608270946,"y":31349.085675675033},"targetPosition":{"x":28732.318414200978,"y":30915.30527293223},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"eea3cb55-83e5-400f-acc4-b71f5631d351"}}}],"id":"26491b17-beb5-4280-af2f-01f152fd85a7","savedPayload":{"position":{"x":28732.318414200978,"y":30915.30527293223},"targetPosition":{"x":28177.141224013078,"y":30734.879990298956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a0bad8b6-2bfa-4962-a998-92b843824f38","savedPayload":{"position":{"x":28177.141224013078,"y":30734.879990298956},"targetPosition":{"x":27621.614663189386,"y":30554.309280959973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Stochastic","bot":{"type":"Indicator Bot Instance","name":"Stochastic","code":" {\n\"repo\": \"Stoch-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"Stochastic Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"def60232-d1e3-446e-bf02-8d5428557090","savedPayload":{"position":{"x":28641.23169576775,"y":31913.233326447007},"targetPosition":{"x":28396.352618178258,"y":31754.113754247704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"dedd972c-187c-407c-85ae-4dc404998a5e","savedPayload":{"position":{"x":28396.352618178258,"y":31754.113754247704},"targetPosition":{"x":28151.54790208964,"y":31595.007785141646},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"6a6a6533-21a9-4be9-b2f0-ace1adfe45b8"}}},{"type":"Indicator Process Instance","name":"Stochastic Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"46b618d4-ba5a-4fe7-b069-e8e024f1301e","savedPayload":{"position":{"x":28090.714951378057,"y":32760.846887562406},"targetPosition":{"x":28121.129909249797,"y":32177.97460963789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"d712f459-b79a-4307-a6fa-4ffb68c9991f","savedPayload":{"position":{"x":28121.129909249797,"y":32177.97460963789},"targetPosition":{"x":28151.54790208964,"y":31595.007785141646},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"6a39c43d-0ad2-4c98-ae06-6e40f55d1753"}}}],"id":"bf5b38e2-023a-4c14-b275-b1cd592529cc","savedPayload":{"position":{"x":28151.54790208964,"y":31595.007785141646},"targetPosition":{"x":27886.657745421246,"y":31074.845201013894},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ee95b9e3-be0f-4e3f-ab6c-6b230c0db05c","savedPayload":{"position":{"x":27886.657745421246,"y":31074.845201013894},"targetPosition":{"x":27621.614663189386,"y":30554.309280959973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9a76a7cf-298e-4fb2-b4bd-6ff5a0db061a","savedPayload":{"position":{"x":27622.088292029104,"y":30553.466055658446},"targetPosition":{"x":27066.72999045144,"y":30372.90511719708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}}],"id":"b1c93d10-5dd9-4b3f-9662-b9bf7850b81a","savedPayload":{"position":{"x":27066.72999045144,"y":30372.90511719708},"targetPosition":{"x":26594.593228569865,"y":30715.878612730186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"7449a608-32ca-4285-94d1-c96791e2817f","savedPayload":{"position":{"x":26594.7460728087,"y":30715.762096529805},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"testingEnvironment":{"type":"Testing Environment","name":"New Testing Environment","exchangeTasks":[{"type":"Exchange Tasks","name":"Binance","taskManagers":[{"type":"Task Manager","name":"Paper & Backtesting Sessions BTC/USDT","tasks":[{"type":"Task","name":"Paper Trading WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"34d3f232-9fb1-47e1-97be-9233ef34db93","savedPayload":{"position":{"x":29064.393244637387,"y":32246.70439914241},"targetPosition":{"x":29279.54118924854,"y":32443.944382994956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"969cd1c0-1d6d-4667-a810-d18369410d94","savedPayload":{"position":{"x":29299.46844670258,"y":32152.36958532117},"targetPosition":{"x":29279.54118924854,"y":32443.944382994956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"4af996da-6714-41ac-ad51-5706f41b40f0","savedPayload":{"position":{"x":29520.077958658403,"y":32277.632667932994},"targetPosition":{"x":29279.54118924854,"y":32443.944382994956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"963db77e-0405-4fc4-8780-1b7fa93f41a6","savedPayload":{"position":{"x":29559.768671541227,"y":32527.95233253213},"targetPosition":{"x":29279.54118924854,"y":32443.944382994956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"cd125f30-93e7-4786-b1e1-33274bd2877c","savedPayload":{"position":{"x":29388.662976726024,"y":32715.280877632933},"targetPosition":{"x":29279.54118924854,"y":32443.944382994956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"f8fcac2e-2a52-4189-a95d-77e83b5a6f98","savedPayload":{"position":{"x":29136.09535884985,"y":32698.32517200085},"targetPosition":{"x":29279.54118924854,"y":32443.944382994956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b5ba0c98-c052-4195-92c2-119652d91c32","savedPayload":{"position":{"x":29279.54118924854,"y":32443.944382994956},"targetPosition":{"x":28991.156025125947,"y":32489.43729500607},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2198ec50-3d31-43b7-a57d-e386bef38a93","savedPayload":{"position":{"x":28991.156025125947,"y":32489.43729500607},"targetPosition":{"x":28703.43428550334,"y":32534.931766037582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"h"},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"06c8bcea-4122-4a35-8db3-a1ddc7657e4b","savedPayload":{"position":{"x":28886.618773071255,"y":32762.168395792276},"targetPosition":{"x":28703.43428550334,"y":32534.931766037582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"731abb89-b672-41b1-b403-2932226d3df7","savedPayload":{"position":{"x":28703.43428550334,"y":32534.931766037582},"targetPosition":{"x":28431.211697225608,"y":32430.273741172245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"4f784203-664a-4791-9e3a-7565f0a11e79","savedPayload":{"position":{"x":28431.211697225608,"y":32430.273741172245},"targetPosition":{"x":28083.989128969773,"y":32297.060009772482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"e04e8948-849d-4161-af18-4644990d0b49","savedPayload":{"position":{"x":28084.335511066984,"y":32297.14487277129},"targetPosition":{"x":27539.096149351248,"y":32088.11257319606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Backtesting WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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}","id":"48e2c5e0-8f9e-40f0-8ab6-2ecc57aa3039","savedPayload":{"position":{"x":28780.794528452894,"y":32989.63786646263},"targetPosition":{"x":28868.17435618273,"y":33267.56181402368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{}","id":"e8703a6e-e6c0-485f-a27d-a9e60a57a0a6","savedPayload":{"position":{"x":29031.52566821606,"y":33025.600374044254},"targetPosition":{"x":28868.17435618273,"y":33267.56181402368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"initialDatetime\": \"2019-01-01\",\n\"finalDatetime\": \"2020-12-31\"\n}","id":"08815e4e-c066-4914-85b7-a4f7ce4748a5","savedPayload":{"position":{"x":29159.91185766012,"y":33244.276369373925},"targetPosition":{"x":28868.17435618273,"y":33267.56181402368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-hs\"\n}","id":"805c356b-4a05-424e-ba29-260e35c11943","savedPayload":{"position":{"x":29069.013759597186,"y":33480.85397173876},"targetPosition":{"x":28868.17435618273,"y":33267.56181402368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"bcccd1fd-188c-43e4-abfc-4bc89d6adecc","savedPayload":{"position":{"x":28827.458705392346,"y":33557.46997228553},"targetPosition":{"x":28868.17435618273,"y":33267.56181402368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"ae594b88-e40b-408b-8082-3ba92ffc2c8c","savedPayload":{"position":{"x":28616.95427483531,"y":33416.336631522194},"targetPosition":{"x":28868.17435618273,"y":33267.56181402368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c220646b-827b-43c8-ab7e-5ecd53b4070a","savedPayload":{"position":{"x":28868.17435618273,"y":33267.56181402368},"targetPosition":{"x":28595.956107797294,"y":33163.39071406859},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f32f1cdc-425f-4193-a43b-be9312c74234","savedPayload":{"position":{"x":28595.956107797294,"y":33163.39071406859},"targetPosition":{"x":28323.378934241053,"y":33058.46515871821},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"02fe6309-40c0-4e31-9aed-fbf8f434bfa9","savedPayload":{"position":{"x":28368.936897320553,"y":33347.43527925424},"targetPosition":{"x":28323.378934241053,"y":33058.46515871821},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"dd22d90b-5a91-4723-9f65-17eb94fb4d9d","savedPayload":{"position":{"x":28323.378934241053,"y":33058.46515871821},"targetPosition":{"x":28140.317136092515,"y":32832.0517468585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"0942010b-12f0-4be9-979d-c3e1bbc4eb74","savedPayload":{"position":{"x":28140.317136092515,"y":32832.0517468585},"targetPosition":{"x":27906.0796210282,"y":32542.54525263054},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a8ff6583-b710-44b1-8768-d8a70bdf22c9","savedPayload":{"position":{"x":27906.4055014211,"y":32542.04427722981},"targetPosition":{"x":27539.096149351248,"y":32088.11257319606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"caed4703-e134-4a48-9062-fe5277b7d95f","savedPayload":{"position":{"x":27539.096149351248,"y":32088.11257319606},"targetPosition":{"x":27066.839459776074,"y":31745.038620197905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"f69b2c23-ccc5-47fb-9945-9b7badcea636","savedPayload":{"position":{"x":27066.839459776074,"y":31745.038620197905},"targetPosition":{"x":26594.645445193884,"y":31402.0060792944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"2ae685a1-25c6-4bd5-b559-d83e373e8d45","savedPayload":{"position":{"x":26594.745599621772,"y":31402.07896309567},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"productionEnvironment":{"type":"Production Environment","name":"New Production Environment","exchangeTasks":[{"type":"Exchange Tasks","name":"Binance","taskManagers":[{"type":"Task Manager","name":"Fwd & Live Sessions BTC/USDT","tasks":[{"type":"Task","name":"Fwd Testing WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"079cdfaf-2d41-4fa3-a68d-9e2620de0cdd","savedPayload":{"position":{"x":25907.09813210276,"y":34143.13877561956},"targetPosition":{"x":25786.019071906194,"y":34408.90548695901},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"5f5ec9f1-c4e2-4ca7-94c4-bad619511e5c","savedPayload":{"position":{"x":26069.52411886694,"y":34337.82854319188},"targetPosition":{"x":25786.019071906194,"y":34408.90548695901},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"d5fda5e7-7571-41e7-b19a-a721d73fd8f5","savedPayload":{"position":{"x":26018.4871354068,"y":34586.07757644903},"targetPosition":{"x":25785.935443738745,"y":34408.945440877076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"f6ed8468-7fd1-4aac-848b-647973e41b04","savedPayload":{"position":{"x":25792.422263298406,"y":34701.26598795246},"targetPosition":{"x":25785.935443738745,"y":34408.945440877076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"da2d51df-7c40-4bf0-80ec-63a38992fcfe","savedPayload":{"position":{"x":25561.728940595825,"y":34596.381938557235},"targetPosition":{"x":25785.935443738745,"y":34408.945440877076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"4e1b48a9-df71-402e-9159-66c49cdc08b3","savedPayload":{"position":{"x":25499.71600530877,"y":34350.90489067788},"targetPosition":{"x":25785.933880313278,"y":34408.957878340036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b9e7a071-26dd-4796-8704-2314f6c2c603","savedPayload":{"position":{"x":25786.019071906194,"y":34408.90548695901},"targetPosition":{"x":25653.515815468658,"y":34148.76481661162},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0e7edb98-38ff-4516-89a1-188030989ddc","savedPayload":{"position":{"x":25653.515815468658,"y":34148.76481661162},"targetPosition":{"x":25521.231636088727,"y":33889.11750319502},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","keyInstance":{"type":"Key Instance","name":"New Exchange Account Key","id":"8d9b39d4-b764-486d-a2f6-e84391bbd818","savedPayload":{"position":{"x":25202.583094755602,"y":34378.37113427202},"targetPosition":{"x":25361.821001212014,"y":34133.68303277718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"New Exchange Account Key","id":"88eab4e5-3be4-4982-93fa-e95bcb1ab559"}}},"id":"f122bd16-0c85-43d1-932a-57a710db8013","savedPayload":{"position":{"x":25361.821001212014,"y":34133.68303277718},"targetPosition":{"x":25521.231636088727,"y":33889.11750319502},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"a034c52a-8924-4e60-9653-f6da1ea6f8b5","savedPayload":{"position":{"x":25521.231636088727,"y":33889.11750319502},"targetPosition":{"x":25536.537959197252,"y":33598.076783793644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"74f70f20-305b-4e90-aad6-1bcd2ff8ee1c","savedPayload":{"position":{"x":25536.537959197252,"y":33598.076783793644},"targetPosition":{"x":25551.664246604654,"y":33306.593168325715},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"749d6eaf-1548-47ca-901d-1cfc1a21b0a5","savedPayload":{"position":{"x":25551.664246604654,"y":33306.593168325715},"targetPosition":{"x":25581.765794713705,"y":32723.789120974685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Live Trading WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"166cdb09-90e0-49a1-9c38-b57364287620","savedPayload":{"position":{"x":25109.403090562835,"y":34182.82494345859},"targetPosition":{"x":24871.44407298634,"y":34352.81569267779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"5bf43efd-3dd2-44f2-b25e-f6c7a5fda17e","savedPayload":{"position":{"x":25152.70374824769,"y":34432.37709783826},"targetPosition":{"x":24871.44407298634,"y":34352.81569267779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"88d7104b-7925-408a-b490-bbbaaafd7a5f","savedPayload":{"position":{"x":24984.386057092983,"y":34622.13083241753},"targetPosition":{"x":24871.44407298634,"y":34352.81569267779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"1c158006-c3c1-4157-8ad6-f08ee2b769d6","savedPayload":{"position":{"x":24731.322324191053,"y":34608.83398610883},"targetPosition":{"x":24871.44407298634,"y":34352.81569267779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"01064db9-f153-4d30-a26c-d9d339e7a856","savedPayload":{"position":{"x":24583.70097256323,"y":34402.545126152516},"targetPosition":{"x":24871.44407298634,"y":34352.81569267779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"06f7cc4e-6112-4ac8-9f20-610b357a58d2","savedPayload":{"position":{"x":24652.882864423478,"y":34158.98471560196},"targetPosition":{"x":24871.44407298634,"y":34352.81569267779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b86ce81f-5084-48d1-8a45-8f45fbe97891","savedPayload":{"position":{"x":24871.44407298634,"y":34352.81569267779},"targetPosition":{"x":24886.92820703921,"y":34060.78806671803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5335fd67-ebdc-4cfd-936d-b76af957713e","savedPayload":{"position":{"x":24886.92820703921,"y":34060.78806671803},"targetPosition":{"x":24901.83488901802,"y":33770.080096507605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","keyInstance":{"type":"Key Instance","name":"New Exchange Account Key","id":"a0061ba6-2359-4c5c-822d-1e17aaf7c2fd","savedPayload":{"position":{"x":24381.103071237296,"y":34034.3846956502},"targetPosition":{"x":24641.69046361135,"y":33901.74001268537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"New Exchange Account Key","id":"88eab4e5-3be4-4982-93fa-e95bcb1ab559"}}},"id":"954b1896-121c-41e2-9608-5b46a70082fb","savedPayload":{"position":{"x":24641.69046361135,"y":33901.74001268537},"targetPosition":{"x":24901.83488901802,"y":33770.080096507605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"8cb4d9af-0f53-4b33-9174-330da87b166c","savedPayload":{"position":{"x":24901.83488901802,"y":33770.080096507605},"targetPosition":{"x":25060.95076051503,"y":33525.41746799385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"8b30643a-eb54-4d6f-958d-8393f9a1e5f4","savedPayload":{"position":{"x":25060.95076051503,"y":33525.41746799385},"targetPosition":{"x":25263.574609488252,"y":33213.651006905486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"52ec5181-d057-42e3-a6e8-407d20d4e641","savedPayload":{"position":{"x":25263.397660902152,"y":33213.09737290264},"targetPosition":{"x":25581.765794713705,"y":32723.789120974685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1bbb36fe-edbf-49d8-9827-85a1345c0289","savedPayload":{"position":{"x":25581.765794713705,"y":32723.789120974685},"targetPosition":{"x":25762.002028524377,"y":32168.8971802595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"l"}}}],"id":"fa859e89-960f-4fe1-8e68-1e41b0ea80ec","savedPayload":{"position":{"x":25762.002028524377,"y":32168.8971802595},"targetPosition":{"x":25942.202970722596,"y":31613.941757254855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"32656457-f603-416a-b805-546642094dc4","savedPayload":{"position":{"x":25942.051413495774,"y":31614.22799390328},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"u"}}},"id":"ce601334-52c5-4ffb-ab61-49ca1943a15a","savedPayload":{"position":{"x":26122.378344035824,"y":31058.919069244217},"targetPosition":{"x":24954.356993272086,"y":31057.918778615294},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"r"}}}],"id":"efbbc81b-93c8-4ce0-873e-675f39d333e8","savedPayload":{"position":{"x":24954.356993272086,"y":31057.918778615294},"targetPosition":{"x":24954.356993272086,"y":31057.918778615294},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"n"}}},{"type":"Crypto Ecosystem","name":"My Crypto Ecosystem","cryptoExchanges":[{"type":"Crypto Exchanges","name":"Tested","exchanges":[{"type":"Crypto Exchange","name":"Binance","code":"{\n \"codeName\": \"binance\",\n \"API\": [\n {\n \"method\": \"fetchTrades\",\n \"fetchType\": \"by Id\",\n \"fetchTradesMethod\": \"publicGetHistoricalTrades\",\n \"firstId\": \"f\"\n }\n ]\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"EUR\"} \n}","assets":[{"type":"Asset","name":"Bitcoin","code":"{ \n\"codeName\": \"BTC\"\n}","id":"b2814a75-fd57-45c4-a3cb-af276793e573","savedPayload":{"position":{"x":15969.409188252612,"y":29845.817716894748},"targetPosition":{"x":16207.902772226307,"y":30528.021327037124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Tether","code":"{ \n\"codeName\": \"USDT\"\n}","id":"04c5f172-6976-4557-b95f-38004b5201a6","savedPayload":{"position":{"x":16290.161760654086,"y":29810.703960375},"targetPosition":{"x":16207.902772226307,"y":30528.021327037124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Ether","code":"{ \n\"codeName\": \"ETH\"\n}","id":"4175d47c-e12c-4902-b026-f4999a6d07a4","savedPayload":{"position":{"x":16592.465405750565,"y":29917.96759504788},"targetPosition":{"x":16207.902772226307,"y":30528.021327037124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Monero","code":"{ \n\"codeName\": \"XMR\"\n}","id":"e3b61070-77b9-4dcf-9862-7f05ffa237f3","savedPayload":{"position":{"x":16819.180383166487,"y":30143.640867809212},"targetPosition":{"x":16207.902772226307,"y":30528.021327037124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Stellar","code":"{ \n\"codeName\": \"XLM\"\n}","id":"6dee1e7e-80f3-4597-a28a-881af206ec14","savedPayload":{"position":{"x":16926.31169668542,"y":30448.18598140934},"targetPosition":{"x":16207.902772226307,"y":30528.021327037124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Ethereum Classic","code":"{ \n\"codeName\": \"ETC\"\n}","id":"59378d33-4833-495a-89bb-f739710be7d9","savedPayload":{"position":{"x":16889.59285373928,"y":30767.563973671593},"targetPosition":{"x":16207.902772226307,"y":30528.021327037124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"f4451bbc-50ea-4558-9b3c-abd3e757a76e","savedPayload":{"position":{"x":16207.902772226307,"y":30528.021327037124},"targetPosition":{"x":15696.196311397269,"y":31039.87036508385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"E"}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"BTC/USDT","code":"{ \n\"codeName\": \"BTC/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"Bitcoin","id":"07b514a4-3ea2-4ab7-aeb0-07b48acb6f8d","savedPayload":{"position":{"x":18664.873609778617,"y":31599.215226895},"targetPosition":{"x":20017.2143547542,"y":31038.26398963208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"b2814a75-fd57-45c4-a3cb-af276793e573"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"61e7d2b5-1672-4e11-8380-345a4fe4a991","savedPayload":{"position":{"x":17931.429449453768,"y":31451.31727095168},"targetPosition":{"x":20017.2143547542,"y":31038.26398963208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"04c5f172-6976-4557-b95f-38004b5201a6"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"a174a91f-0818-4fdc-88cd-20dbdf45c548","savedPayload":{"position":{"x":19645.204662917928,"y":31037.494572390202},"targetPosition":{"x":20017.2143547542,"y":31038.26398963208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"11beab3d-d894-4d20-9940-f864ba957f91","savedPayload":{"position":{"x":19318.03315558542,"y":30898.895536096043},"targetPosition":{"x":20017.2143547542,"y":31038.26398963208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"5489751f-5ce4-40d0-9854-5bcfdc810269","savedPayload":{"position":{"x":20017.2143547542,"y":31038.26398963208},"targetPosition":{"x":18576.93272884972,"y":31038.257774206406},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0e1257c5-49b1-4b52-8942-9bdef72854d2","savedPayload":{"position":{"x":18580.599904169725,"y":31039.912219216294},"targetPosition":{"x":15696.196311397269,"y":31039.87036508385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b","savedPayload":{"position":{"x":17888.590678574627,"y":31698.933523477794},"targetPosition":{"x":17418.56829850042,"y":32247.185884745264},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"b2814a75-fd57-45c4-a3cb-af276793e573"}}},{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da","savedPayload":{"position":{"x":18080.31991364513,"y":31957.287868322837},"targetPosition":{"x":17418.56829850042,"y":32247.185884745264},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"04c5f172-6976-4557-b95f-38004b5201a6"}}},{"type":"Exchange Account Asset","name":"Ether","id":"b3d0800f-f430-4549-86e9-68001c43fa1f","savedPayload":{"position":{"x":18138.9221462897,"y":32273.568556476886},"targetPosition":{"x":17418.56829850042,"y":32247.185884745264},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ether","id":"4175d47c-e12c-4902-b026-f4999a6d07a4"}}},{"type":"Exchange Account Asset","name":"Monero","id":"ee25ff6a-8b3d-4f30-8acf-71ca4b186195","savedPayload":{"position":{"x":18055.847718500732,"y":32583.772328847732},"targetPosition":{"x":17418.56829850042,"y":32247.185884745264},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Monero","id":"e3b61070-77b9-4dcf-9862-7f05ffa237f3"}}},{"type":"Exchange Account Asset","name":"Stellar","id":"5716ea79-1392-4f6d-a46e-dba38ab9b39e","savedPayload":{"position":{"x":17847.772400569258,"y":32826.48620410357},"targetPosition":{"x":17418.56829850042,"y":32247.185884745264},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Stellar","id":"6dee1e7e-80f3-4597-a28a-881af206ec14"}}},{"type":"Exchange Account Asset","name":"Ethereum Classic","id":"d9d0d41c-67a9-42ea-8c64-067647ee53a4","savedPayload":{"position":{"x":17553.555942272775,"y":32957.06248557413},"targetPosition":{"x":17418.56829850042,"y":32247.185884745264},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ethereum Classic","id":"59378d33-4833-495a-89bb-f739710be7d9"}}}],"id":"f7bbfcc0-2359-4de1-8ddc-5e117bde0c52","savedPayload":{"position":{"x":17418.56829850042,"y":32247.185884745264},"targetPosition":{"x":16719.307115511798,"y":32060.04061222569},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"88eab4e5-3be4-4982-93fa-e95bcb1ab559","savedPayload":{"position":{"x":17095.372628722904,"y":33455.81216440229},"targetPosition":{"x":16907.300375970768,"y":32757.323535042135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"cf3895fd-4f0c-4bd8-8afb-886a718cc891","savedPayload":{"position":{"x":16907.300375970768,"y":32757.323535042135},"targetPosition":{"x":16719.307115511798,"y":32060.04061222569},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a718949a-e315-4bda-8523-b0b03e3ca507","savedPayload":{"position":{"x":16719.307115511798,"y":32060.04061222569},"targetPosition":{"x":16207.755644577279,"y":31550.04951127082},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a913b30b-17d3-4b2b-9c39-9c7dc67f0000","savedPayload":{"position":{"x":16207.755644577279,"y":31550.04951127082},"targetPosition":{"x":15696.196311397269,"y":31039.87036508385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"22d2b36e-7a77-40a6-8948-b7d0fb744923","savedPayload":{"position":{"x":15696.196311397269,"y":31039.87036508385},"targetPosition":{"x":14251.232225370944,"y":31038.26024839772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"c16f8dd4-05f5-45db-8a47-713eb1116f72","savedPayload":{"position":{"x":14251.232225370944,"y":31038.26024839772},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"signalsProviders":[],"superActions":{"type":"Super Actions","name":"New Super Actions","superActions":[{"type":"Super Action","name":"Install Market","id":"2cd8e9dd-02a8-40b5-8979-108491309697","savedPayload":{"position":{"x":13596.796537982185,"y":29900.600915146206},"targetPosition":{"x":13238.769838624787,"y":30494.890822183912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"d103d8f7-8b21-436a-a0cf-8244b3dcb756","savedPayload":{"position":{"x":13738.553946135695,"y":30013.646249280533},"targetPosition":{"x":13238.769838624787,"y":30494.890822183912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"c934df8f-d942-4723-ad44-f187e5df4351","savedPayload":{"position":{"x":12166.581869182457,"y":31038.25465749285},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9f4e7bfb-ea29-47cd-92bd-11f31d177ff8","savedPayload":{"position":{"x":12805.301618063546,"y":31038.2348844148},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"e"}}},{"type":"Charting Space","name":"New Charting Space","viewport":{"type":"Viewport","name":"New Viewport","code":"{\"zoom\":\"1.40\"}","id":"c3db9bcf-39ee-47d1-ab4f-14bd5de815da","savedPayload":{"position":{"x":13421.60994808922,"y":24983.353401471086},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"frame":{"position":{"x":-7465.5,"y":-4245.5}}}},"dashboards":[{"type":"Dashboard","name":"Super Action Generated","timeMachines":[{"type":"Time Machine","name":"Binance BTC/USDT","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2020-05-10T03:17:26.873Z\",\n \"toDate\": \"2020-08-23T05:40:48.689Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"9368d644-21cd-4be9-bb36-df83b66c67d1","savedPayload":{"position":{"x":10974.294649235413,"y":25799.392878813116},"targetPosition":{"x":11146.08192953662,"y":24985.36712570626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 8200,\n \"maxValue\": 10380,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"7242faad-e2a0-4dd2-8016-bd4448a3b61c","savedPayload":{"position":{"x":10808.223224203914,"y":25745.579152126287},"targetPosition":{"x":11146.08192953662,"y":24985.36712570626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"24-hs\"}","id":"cddfbb92-c310-477a-9c66-b2a38ff8309f","savedPayload":{"position":{"x":10657.408257836936,"y":25658.52113528765},"targetPosition":{"x":11146.08192953662,"y":24985.36712570626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timelineCharts":[{"type":"Timeline Chart","name":"Indicators","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":"Candles","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"09e91fb3-cdff-4c0c-b320-417aeb4f2538","savedPayload":{"position":{"x":10358.024029357628,"y":26798.41727877579},"targetPosition":{"x":9910.630574426781,"y":26097.738400457743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"dd7c8795-bb24-4438-9d77-b37a9000ad7f"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2b8f6dec-a712-4716-88d8-a33c01398956","savedPayload":{"position":{"x":10236.23830996621,"y":26862.69501294004},"targetPosition":{"x":9910.630574426781,"y":26097.738400457743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"6929ebe7-6486-4299-add5-ed0282500d91"}}},{"type":"Layer","name":"Resistances","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"57d807c2-eeac-46a5-bd07-6f630a578562","savedPayload":{"position":{"x":10105.790369525008,"y":26905.906851589516},"targetPosition":{"x":9910.630574426781,"y":26097.738400457743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Resistances","id":"0669d924-aace-46d1-b126-ccced8fd33cf"}}},{"type":"Layer","name":"Supports","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9a035c82-60cb-4ab4-b4f8-e40b0dde7c2c","savedPayload":{"position":{"x":9970.057402388917,"y":26927.03521006703},"targetPosition":{"x":9910.630574426781,"y":26097.738400457743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Supports","id":"5e7a0e50-e6ed-4106-8025-8b35ad6c597c"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"25363a67-bcaf-4392-9ed8-2b6c99fb31c8","savedPayload":{"position":{"x":9832.96604742131,"y":26925.52778450136},"targetPosition":{"x":9910.630574426781,"y":26097.738400457743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"1d7dd537-5f6f-4eb2-8e56-ddba0aef720f"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"63dbae3f-cebc-4587-9b9c-60ffe83e4143","savedPayload":{"position":{"x":9697.752361175779,"y":26901.43304174283},"targetPosition":{"x":9910.630574426781,"y":26097.738400457743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"221c8d22-8a7f-4014-a7ed-0bafc886b123"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2203bc66-a385-438b-8050-0b812b655d0a","savedPayload":{"position":{"x":9568.350622325737,"y":26855.4107312889},"targetPosition":{"x":9910.630574426781,"y":26097.738400457743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"d83476c3-2f0b-4d4a-abb2-0e47ed0a421d"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ea4ce55e-855e-4a61-ad12-222a0077e51e","savedPayload":{"position":{"x":9448.29021319506,"y":26788.717185940783},"targetPosition":{"x":9910.630574426781,"y":26097.738400457743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"5ffc6a67-e33b-422b-8e36-f9711f93c723"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e9272caf-38f8-44de-a698-13f8b19b50c3","savedPayload":{"position":{"x":9340.84536901929,"y":26703.172016919158},"targetPosition":{"x":9910.630574426781,"y":26097.738400457743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"0428f20b-9620-480e-a531-dbb2e5f59ef4"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"a9fcfaea-cd50-464e-aa65-1f2a3e98633d","savedPayload":{"position":{"x":9248.946489812784,"y":26601.108737101553},"targetPosition":{"x":9910.630574426781,"y":26097.738400457743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"48f7953c-f62d-4292-b042-d1ac05f8f80f"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\"\n}","id":"8c1e005a-c340-4850-9de2-900a4cfc44bb","savedPayload":{"position":{"x":9175.100153824218,"y":26485.311213093504},"targetPosition":{"x":9910.630574426781,"y":26097.738400457743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"3b9a3c93-6d41-440e-89a2-2fd1b2dde603"}}},{"type":"Layer","name":"Base5 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"6223f2d7-bdb4-474a-9e60-b54dc00680ea","savedPayload":{"position":{"x":9121.320749161809,"y":26358.93773043369},"targetPosition":{"x":9910.630574426781,"y":26097.738400457743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"2404b1eb-c7c9-46e7-b22a-93cfcc3739f4"}}},{"type":"Layer","name":"Base6 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"a71c4fa6-d034-499c-9b30-7a46378cadc0","savedPayload":{"position":{"x":9089.075636227895,"y":26225.434744181694},"targetPosition":{"x":9910.630574426781,"y":26097.738400457743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"1510fd36-633e-40a7-adbe-680660d64bd0"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"53c4ff8b-f3c5-4329-8fe4-6209c0ffb9f1","savedPayload":{"position":{"x":9079.245476854188,"y":26088.694513157305},"targetPosition":{"x":9910.630574426781,"y":26097.738400457743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"70401ea0-3fed-4e40-8bba-a1e5adce9b8c"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"09cbb1f5-edad-4f9f-ab1c-7f9b0a0d8f7c","savedPayload":{"position":{"x":9092.10155630097,"y":25951.94883551336},"targetPosition":{"x":9910.630574426781,"y":26097.738400457743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"06ac8eb7-8b14-42b1-9e2e-466280ade032"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"88466a0a-b385-417f-9efa-8c0139e05a5e","savedPayload":{"position":{"x":9127.299757040357,"y":25819.170023401857},"targetPosition":{"x":9910.630574426781,"y":26097.738400457743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"014bba70-64d4-4035-b06d-145ee9b4c54c"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"6564d574-c6fd-4ee0-96ab-0e7c62e1cd7c","savedPayload":{"position":{"x":9183.906483723564,"y":25693.95667244665},"targetPosition":{"x":9910.630574426781,"y":26097.738400457743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"768cc06c-6fdf-491a-a741-5e08f0e25e38"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"941fef87-83dd-457f-818c-71745fa1692a","savedPayload":{"position":{"x":9260.558140284043,"y":25579.55511551029},"targetPosition":{"x":9910.630574426781,"y":26097.738400457743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"40794460-b815-498f-a245-e677de0eed86"}}}],"id":"1c96281c-523a-4597-b9b2-2db3d880ff49","savedPayload":{"position":{"x":9910.630574426781,"y":26097.738400457743},"targetPosition":{"x":10527.98453117951,"y":25541.993499556153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"ff535c6b-411f-4790-ab2b-c755c74de1b9","savedPayload":{"position":{"x":10527.98453117951,"y":25541.993499556153},"targetPosition":{"x":11146.08192953662,"y":24985.36712570626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 60348.23168979837,\n \"maxValue\": 69252.25295357336,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"9ee722c6-095f-4f4a-b8b2-9cb9bca115aa","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,"arrangementStyle":0},"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":"c4041768-1a6e-4f5b-8d7b-b681a175f27a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"98e6c917-f4b7-4b71-9215-de3ccaf3dc0c"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"e9404a3f-2768-4b17-ac7a-8b11e1a1957c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"858fd2be-abef-4173-abef-dedf17f00d47","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"8411d061-e010-4d33-b35c-e71d743fd403","savedPayload":{"position":{"x":10425.596406588564,"y":25401.159084008916},"targetPosition":{"x":11146.08192953662,"y":24985.36712570626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 197.03955751130675,\n \"maxValue\": 292.06955751130675,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"60aaeaeb-2247-4536-a1a2-cf7d731b6fc5","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"c230772e-ca08-45df-bad6-4b72be44d9a5","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"4a3ed8eb-a73e-4fb4-835a-681cf47d7373"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f9435119-1d3f-4106-9c78-531f6ef4714f","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"728d6f08-086f-41ba-9126-30ec56a45ea5"}}}],"id":"acbd2ecb-2f75-44b8-8659-26482cb6fb0b","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"a7f9fef6-c3f9-4e17-b894-9a5e154ccbbe","savedPayload":{"position":{"x":10354.745862464035,"y":25242.2037609899},"targetPosition":{"x":11146.08192953662,"y":24985.36712570626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 23.53984680670618,\n \"maxValue\": 27.53984680670618,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"1415a288-9d79-45c9-a55c-9991e8b6953b","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"33e885d3-27f0-4ff7-8715-bc2f945e698e","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"7ccbd0c1-c804-47e3-9314-14cbb756c806"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f3cd6f15-98f5-4165-b6c3-04b8796fb43d","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"08f223a8-9707-4c45-b638-1fe0e4a2b053"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"66440f58-8741-4b22-8146-00f772837545","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"66f1a9be-fe96-48c3-91e4-500c6e246423"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"3ba14173-bac8-4013-9a5c-b8aecd05e0ae","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"e432c706-cbcd-4af0-b23c-b18e5b29377a"}}}],"id":"ab7c3367-a36e-4a78-b43b-bfeea5fc5201","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0}}},"id":"156b9564-14a5-4148-8ca6-1e7b98d4189d","savedPayload":{"position":{"x":10318.510320211475,"y":25072.015096316623},"targetPosition":{"x":11146.08192953662,"y":24985.36712570626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Candle Patterns","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":"Basic Candles","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"a1e1be1e-abd3-4f1a-8276-5e85faf96711","savedPayload":{"position":{"x":9630.672439223492,"y":24770.962463234522},"targetPosition":{"x":9978.889908074705,"y":24543.18993185048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Basic Candles","id":"4e14ecf7-3eaa-48ce-91fb-c6e1c806fdf8"}}},{"type":"Layer","name":"One-Candle Patterns","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"2f5c0f35-f7cf-47b0-b581-e316ec89ad4b","savedPayload":{"position":{"x":9563.258378007582,"y":24523.396511675113},"targetPosition":{"x":9978.889908074705,"y":24543.18993185048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"One-Candle Patterns","id":"e11730aa-5ffb-42bd-8bfb-56e7fa36cd68"}}},{"type":"Layer","name":"Two-Candles Patterns","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"cb8fc837-b9de-4170-97dd-475fced9586a","savedPayload":{"position":{"x":9654.461574619718,"y":24282.749455150373},"targetPosition":{"x":9978.889908074705,"y":24543.18993185048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Two-Candles Patterns","id":"3d5a0163-c683-43d8-b344-ec1113c4726c"}}},{"type":"Layer","name":"Three-Candles Patterns","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"0a2dcfc3-61d9-4a35-a1bf-749e1cb8d0fa","savedPayload":{"position":{"x":9869.781826298859,"y":24141.75602372913},"targetPosition":{"x":9978.889908074705,"y":24543.18993185048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Three-Candles Patterns","id":"86ebf7ee-0102-4dc1-a597-0f0df3e07df8"}}}],"id":"55075e98-d2e8-46dd-a004-8087bf764d2f","savedPayload":{"position":{"x":9978.889908074705,"y":24543.18993185048},"targetPosition":{"x":10368.041283532342,"y":24690.44993556238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":600,"y":80},"width":150,"height":40,"radius":0}}},"id":"45aca655-16bb-4cf5-9eea-07d6c140845c","savedPayload":{"position":{"x":10318.49025657199,"y":24898.342478781502},"targetPosition":{"x":11146.08192953662,"y":24985.36712570626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Average True Range","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"autoMinScale\": true,\n \"autoMaxScale\": true,\n \"minValue\": 243.76381188118808,\n \"maxValue\": 1120.783811881188\n}","id":"78dacbc0-e9cf-424f-88bd-3f447153cf50","savedPayload":{"position":{"x":9938.596601282974,"y":24706.936606374697},"targetPosition":{"x":10354.479100458746,"y":24728.463523766502},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"ATR - RMA","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"b86249d0-24e7-448d-a070-16bc08aa4e7c","savedPayload":{"position":{"x":9609.580351850185,"y":24373.366775770224},"targetPosition":{"x":10005.461252186891,"y":24501.699708707172},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"ATR - RMA","id":"9a883744-bbec-4bf8-825a-a48a4f45cfc1"}}},{"type":"Layer","name":"ATR - SMA","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"c4eb240c-2334-4e1e-9a44-b103e4a3a8b0","savedPayload":{"position":{"x":9727.296937241581,"y":24192.642177709735},"targetPosition":{"x":10005.461252186891,"y":24501.699708707172},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"ATR - SMA","id":"b2693a25-7acc-447e-8df9-b02cf457f07b"}}}],"id":"831456d8-0690-4e12-aaa6-c244560c4cc6","savedPayload":{"position":{"x":10005.461252186891,"y":24501.699708707172},"targetPosition":{"x":10354.479100458746,"y":24728.463523766502},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":750,"y":80},"width":150,"height":40,"radius":0}}},"id":"77c7c6d1-afd9-404e-84e2-3e3eb575500c","savedPayload":{"position":{"x":10354.672282394093,"y":24728.165099261132},"targetPosition":{"x":11146.08192953662,"y":24985.36712570626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"ROC & Stochastic","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"autoMinScale\": true,\n \"autoMaxScale\": true,\n \"minValue\": 6.995758360117975,\n \"maxValue\": 43.768246421030064\n}","id":"633b13b6-a4f5-454d-a4ac-bc16f776e842","savedPayload":{"position":{"x":10000.330579519128,"y":24536.173214136972},"targetPosition":{"x":10417.11426048743,"y":24535.47675369991},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"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":"ROC 76","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"671c73a7-3881-437d-b7a1-3f97a38d5794","savedPayload":{"position":{"x":9795.005734631457,"y":24131.41295805426},"targetPosition":{"x":10208.93815350596,"y":24174.927698078474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"ROC 76","id":"bbe5aec6-3bd1-4cbe-8640-2044b0443110"}}},{"type":"Layer","name":"ROC 32","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"9aaff024-195c-4516-8a1f-7c5726e4fbda","savedPayload":{"position":{"x":9899.595977333556,"y":23896.44227048477},"targetPosition":{"x":10208.93815350596,"y":24174.927698078474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"ROC 32","id":"020f3ef7-9b8e-4e2e-9b88-e57ca7ee8435"}}},{"type":"Layer","name":"ROC 9","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"b2662aae-e325-496b-bdea-580af9349033","savedPayload":{"position":{"x":10122.361452370533,"y":23767.790368029655},"targetPosition":{"x":10208.93815350596,"y":24174.927698078474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"ROC 9","id":"bf5e9f22-9be9-4d8d-8262-c6074b81e629"}}},{"type":"Layer","name":"Stoch-14-3-3","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"faf5b2f5-0bcf-40c8-9e74-37b41aa900be","savedPayload":{"position":{"x":10378.051886973675,"y":23794.646015633694},"targetPosition":{"x":10208.93815350596,"y":24174.927698078474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Stoch-14-3-3","id":"7861fc9f-43b9-4f7c-8083-4d0d0dc5848a"}}}],"id":"89b68dd5-3db5-4bd8-8597-a693aadd91f9","savedPayload":{"position":{"x":10208.93815350596,"y":24174.927698078474},"targetPosition":{"x":10417.11426048743,"y":24535.47675369991},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":900,"y":80},"width":150,"height":40,"radius":0}}},"id":"728ea75b-96c4-4e30-a01a-eb093de86a89","savedPayload":{"position":{"x":10425.458660895596,"y":24569.208918900367},"targetPosition":{"x":11146.08192953662,"y":24985.36712570626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"eb70203f-383c-4227-8b82-64458c8ceb62","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,"arrangementStyle":0},"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":"3a82f6d9-2063-4fd7-aa79-dedc4222c58c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"af19e56c-eaf1-4b0b-93f9-74b9ac1843c2"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"605b9ea8-5ed1-4750-8921-88bc481ffbc4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"30ac52a8-ee50-439c-83c8-df75ab49374a"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"3e97cb0b-80dd-4d12-8205-852c759a3f55","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"6a059555-2555-4c7f-a722-2ab4ca0440c5"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"76a918d5-1242-4b97-a252-550200546f5c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"c35fa0be-6e51-4d14-9a52-6b0174cc1aab"}}}],"id":"8658198e-ea8a-45ef-b05f-b2810aa3e015","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":40,"radius":0}}},"id":"6616907b-5ec0-4c2d-b47b-885343226b81","savedPayload":{"position":{"x":10527.770370346669,"y":24428.429186205663},"targetPosition":{"x":11146.08192953662,"y":24985.36712570626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"d7c6c5e8-82d8-4f2a-a07e-66c3498d1fe5","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,"arrangementStyle":0},"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":"b978b005-7bc2-4246-b4d9-5fcfc463eacf","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"63636068-307e-4cea-b31f-f47e106cea2c"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"1ca55ee3-231b-41ad-9acd-24f043e8aa01","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"20848048-8efb-47b1-aaf0-789d2f6c5b1d"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"52850e27-6287-4005-ba6e-66f5b193e3ad","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"5e28998c-b35f-4cc0-9fd6-8ee5f5714545"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"46bd81b8-5b9f-4c5f-89bb-149e19bd0267","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"87b74841-4f6a-4658-b01b-7feb254b5d2f"}}}],"id":"0cf47550-1612-4cd7-8fdd-a68014bd52cc","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1620,"y":80},"width":150,"height":40,"radius":0}}},"id":"c285480b-3a39-4dd0-be1d-6470a97d22a7","savedPayload":{"position":{"x":10657.151582068616,"y":24312.008919727767},"targetPosition":{"x":11146.08192953662,"y":24985.36712570626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"b10a1160-3d9b-44a5-97e9-dbfdc9f103b6","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,"arrangementStyle":0},"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":"b4fb2c12-42e4-496d-aea2-ccf8c90c2e6a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"5919a710-a950-4049-9605-3f127b7fac6b"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"fc3d15bc-ac9c-4150-9a26-4c8baef90266","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"c7030a88-152f-421c-8b32-66f3c222286a"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"c749facc-4350-43c1-b881-72c781475f56","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"25db80e6-c4cf-4568-98d3-0cba83625ece"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"30fa6c26-bdbb-4a70-a917-f42d99583938","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"f4b18249-5044-4b34-83f7-3cedbbe939c5"}}}],"id":"c689ea14-8d8b-4482-9cf3-c652904ebd27","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1470,"y":80},"width":150,"height":40,"radius":0}}},"id":"fabbc9b6-b752-4ba6-80a4-835eaa856948","savedPayload":{"position":{"x":10807.999949879655,"y":24225.000158734932},"targetPosition":{"x":11146.08192953662,"y":24985.36712570626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"4978dec9-1374-421a-865e-9e0d30682f65","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,"arrangementStyle":0},"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":"93d62cc0-6914-411e-bf9f-008271cd2965","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"573fb46f-78d2-4bf3-ad11-e42d2531d53e"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"cbb41381-e76d-44f5-8dd3-f9a8c0c0379f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"39d7a06d-5aad-4b03-8778-e4df8dacc825"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"88471305-9c12-4caf-856b-675fb2db2db3","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"82b46974-7a93-4066-a3b7-378b42710364"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"8cb92f6b-8ede-44ef-928a-36f4ec022af8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"7af9d35c-7464-4ed5-9ee6-ccf7a9943894"}}}],"id":"3ec4f352-fb06-4ade-8393-7a5a83765773","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1320,"y":80},"width":150,"height":40,"radius":0}}},"id":"ac6929d9-238c-4689-b2ee-3cc001be578b","savedPayload":{"position":{"x":10974.099486262108,"y":24171.229318846283},"targetPosition":{"x":11146.08192953662,"y":24985.36712570626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a9786387-316d-4b02-a53a-60187e2e17ed","savedPayload":{"position":{"x":11145.72174937916,"y":24985.41012152658},"targetPosition":{"x":11977.548614254114,"y":24985.413885429127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":933.1875,"y":529.375},"width":240,"height":126.25,"radius":0}}}],"id":"64fa2a31-21ea-4b56-a625-dc4082876a89","savedPayload":{"position":{"x":11977.548614254114,"y":24985.413885429127},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":0,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"t"}}}],"id":"c53a4385-3fb3-49d5-b506-99bcaef2c141","savedPayload":{"position":{"x":12809.806237131383,"y":24985.35640053908},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":0,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"c"}}},{"type":"Data Mine","name":"Buddha","code":"{ \n\"codeName\": \"Buddha\"\n}","sensorBots":[],"indicatorBots":[{"type":"Indicator Bot","name":"Candle Patterns","code":"{\n\"codeName\": \"Candle-Patterns\",\n\"repo\": \"Candle-Patterns-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates Candles Patterns for Time Frames of 01-hs and above.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Basic Candles","id":"3e933426-1c7b-45e1-845f-08a7d2684620","savedPayload":{"position":{"x":13013.679527195516,"y":11574.647742916512},"targetPosition":{"x":13213.4740995075,"y":11664.527233498671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"07be5b9b-e8fd-49fc-ab77-20f89fdea10f"}}},{"type":"Output Dataset","name":"Multi-Period-Market One-Candle Patterns","id":"201dc796-db42-49ce-8b9c-1b26c0f3a0ce","savedPayload":{"position":{"x":13053.773008970187,"y":11505.43035401585},"targetPosition":{"x":13213.4740995075,"y":11664.527233498671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"144d8665-1ff0-4db3-9340-a33fd7d0d098"}}},{"type":"Output Dataset","name":"Multi-Period-Market Two-Candles Patterns","id":"c20616cc-d93f-40fc-904a-025fc2799a75","savedPayload":{"position":{"x":13114.615218060771,"y":11461.962677650328},"targetPosition":{"x":13213.4740995075,"y":11664.527233498671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"8c35ce52-9dee-4d20-92e6-50ba7fd2882b"}}},{"type":"Output Dataset","name":"Multi-Period-Market Three-Candles Patterns","id":"c8074ffc-f5ff-4cb5-8e83-0adcecc82a0c","savedPayload":{"position":{"x":13211.46873119432,"y":11466.168099347926},"targetPosition":{"x":13213.4740995075,"y":11664.527233498671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"087fc67e-78f9-4204-ba5e-8b670566a716"}}}],"id":"0dc09316-0987-4d22-b600-bd3868942026","savedPayload":{"position":{"x":13213.4740995075,"y":11664.527233498671},"targetPosition":{"x":13427.670947273291,"y":11978.477228568285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candle Patterns Multi-Period-Market","code":"{\"mainUtility\": \"Self Reference\"}","id":"2d079388-93e4-4005-b392-c4a997904ccb","savedPayload":{"position":{"x":13236.229833924866,"y":11365.540590705074},"targetPosition":{"x":13393.866758309712,"y":11525.809343112047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"401fbf30-8faa-40e9-9707-fac2d35f6195"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","code":"{ \n\"mainUtility\": \"Market Starting Point\"\n}","id":"418e1725-b690-4a55-b5f7-a4a92465c162","savedPayload":{"position":{"x":13378.090018146784,"y":11311.418729308469},"targetPosition":{"x":13393.866758309712,"y":11525.809343112047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"85c548fd-9ef7-4936-a86d-2a206cf90039","savedPayload":{"position":{"x":13534.119041551294,"y":11363.003070936125},"targetPosition":{"x":13393.866758309712,"y":11525.809343112047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"id":"de8bf1ab-cf7b-41ab-b8cb-ae38b1e587ce","savedPayload":{"position":{"x":13393.866758309712,"y":11525.809343112047},"targetPosition":{"x":13427.670947273291,"y":11978.477228568285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"401fbf30-8faa-40e9-9707-fac2d35f6195","savedPayload":{"position":{"x":13603.179986581014,"y":11613.905042446066},"targetPosition":{"x":13427.670947273291,"y":11978.477228568285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"e100074c-7981-49e1-9d06-813104ee4c41","savedPayload":{"position":{"x":13762.503794823628,"y":11749.438334039018},"targetPosition":{"x":13427.670947273291,"y":11978.477228568285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"2a8f2e62-256b-4281-a470-3f640af21337","savedPayload":{"position":{"x":13838.07181053804,"y":11948.152768924294},"targetPosition":{"x":13427.670947273291,"y":11978.477228568285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3aaf9f93-0516-4b3d-9772-44be91615154","savedPayload":{"position":{"x":13950.370695500971,"y":11647.471718959365},"targetPosition":{"x":13606.59207657629,"y":12362.027718520723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Calculates Candles Patterns for Time Frames of 45-min and below.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily Basic Candles","id":"3fc6cd67-c356-41fc-89d9-5c1cdcdd7360","savedPayload":{"position":{"x":13814.82981676934,"y":11210.620425655228},"targetPosition":{"x":14023.609954390777,"y":11501.474680336007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"9e6d7f95-b2fe-466e-9a5d-175479cbf85d"}}},{"type":"Output Dataset","name":"Multi-Period-Daily One-Candle Patterns","id":"7b078979-c28c-4ba5-8305-d469c8d4ec84","savedPayload":{"position":{"x":13915.392401579804,"y":11160.138295803597},"targetPosition":{"x":14023.609954390777,"y":11501.474680336007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"f0a11771-dd69-4b9a-9347-7cb2d1f231ff"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Two-Candles Patterns","id":"5ab95923-5553-40a7-836e-14b96f8a4764","savedPayload":{"position":{"x":14026.050837456278,"y":11143.489245220206},"targetPosition":{"x":14023.609954390777,"y":11501.474680336007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"4f1260c8-6d74-454e-963a-fa3ff910329c"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Three-Candles Patterns","id":"cb6acbaf-bf43-4bf6-b8ca-7689130cc9cf","savedPayload":{"position":{"x":14137.001698365588,"y":11162.191028915156},"targetPosition":{"x":14023.609954390777,"y":11501.474680336007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"b60cb94f-79c5-410c-b166-abc97d0f2bc3"}}}],"id":"bcfa61bd-e1d0-4a60-9fd5-ab7dabe4fd39","savedPayload":{"position":{"x":14023.609954390777,"y":11501.474680336007},"targetPosition":{"x":14086.948199287108,"y":11924.601188793304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candles Patterns Multi-Period-Daily","code":"{\"mainUtility\": \"Self Reference\"}","id":"a7ea36fb-cc2e-4d55-b021-e67d8c5a7020","savedPayload":{"position":{"x":14155.912206707464,"y":10958.342657178391},"targetPosition":{"x":14348.13586069017,"y":11259.956647901501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"3a20d7e9-d551-4346-81c7-e3b0098bef99"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","code":"{\"mainUtility\": \"Market Starting Point\"}","id":"48b53dc5-015c-43f1-9485-047aaaffe0f7","savedPayload":{"position":{"x":14369.563493443755,"y":10902.913742173105},"targetPosition":{"x":14348.13586069017,"y":11259.956647901501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","code":"{ \n\"mainUtility\": \"Market Ending Point\"\n}","id":"49d2c9ad-bdde-427a-8590-801aa4422cca","savedPayload":{"position":{"x":14575.278621413228,"y":10983.731390945131},"targetPosition":{"x":14348.13586069017,"y":11259.956647901501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"19bf518a-1e20-4e3a-8f40-8e07324f634b","savedPayload":{"position":{"x":14694.258957517683,"y":11170.063669211186},"targetPosition":{"x":14348.13586069017,"y":11259.956647901501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"id":"2a7a3bf2-9044-4040-95a7-28c1a339a37f","savedPayload":{"position":{"x":14348.13586069017,"y":11259.956647901501},"targetPosition":{"x":14086.948199287108,"y":11924.601188793304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"3a20d7e9-d551-4346-81c7-e3b0098bef99","savedPayload":{"position":{"x":14645.560909474185,"y":11479.627921322592},"targetPosition":{"x":14086.948199287108,"y":11924.601188793304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"4d03c099-0d5e-4668-a347-c0de2f42f8bd","savedPayload":{"position":{"x":14515.901435945685,"y":11860.04841298157},"targetPosition":{"x":14086.948199287108,"y":11924.601188793304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"3ef2f54d-64c9-4264-a298-0c5a908458ab","savedPayload":{"position":{"x":14487.323542021102,"y":12081.165342539933},"targetPosition":{"x":14086.948199287108,"y":11924.601188793304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8a7ce3e2-20a1-496b-86bf-2d7842f88536","savedPayload":{"position":{"x":14226.6547585291,"y":11867.768625370629},"targetPosition":{"x":13606.59207657629,"y":12362.027718520723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Basic Candles","code":"{\n \"codeName\": \"Basic-Candles\",\n \"singularVariableName\": \"basicCandle\",\n \"pluralVariableName\": \"basicCandles\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"07be5b9b-e8fd-49fc-ab77-20f89fdea10f","savedPayload":{"position":{"x":14428.195169444913,"y":11854.812092996133},"targetPosition":{"x":14282.02559347152,"y":12197.197566354245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"9e6d7f95-b2fe-466e-9a5d-175479cbf85d","savedPayload":{"position":{"x":14601.514604868862,"y":12006.69816479026},"targetPosition":{"x":14282.02559347152,"y":12197.197566354245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"Basic Candles Variables","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"7d35e864-2f37-4d1c-912d-225952131ffd","savedPayload":{"position":{"x":15127.939028481416,"y":11816.525419765045},"targetPosition":{"x":15387.688231694168,"y":11918.989845926302},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"52215804-fb71-43ed-a232-3b29d843cb58","savedPayload":{"position":{"x":15387.688231694168,"y":11918.989845926302},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"bdeaed7f-2923-4fde-a7ea-257f00bb7ee9","savedPayload":{"position":{"x":15246.07240005028,"y":11608.820466242958},"targetPosition":{"x":15466.520322835773,"y":11780.561876712998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b8f2240b-03a9-4fd5-8e37-d43237554239","savedPayload":{"position":{"x":15466.520322835773,"y":11780.561876712998},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"name","code":"{\n \"codeName\": \"name\",\n \"isString\": true\n}","formula":{"type":"Formula","code":"variable.name","id":"5ac4a021-ae1b-45d7-80ea-09587174c038","savedPayload":{"position":{"x":15417.707055580626,"y":11443.434740736122},"targetPosition":{"x":15580.974897394168,"y":11670.19758162406},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8220f919-2232-47b2-8bcb-1d30a905c026","savedPayload":{"position":{"x":15580.974897394168,"y":11670.19758162406},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"size","code":"{ \n\"codeName\": \"size\",\n\"isString\": true\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.size","id":"8162dea0-df67-42b5-8223-7533f950af7a","savedPayload":{"position":{"x":15629.303554034559,"y":11332.716355251554},"targetPosition":{"x":15721.874082289012,"y":11596.528740357437},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2bff73a1-c5c2-4413-91ed-9d2aaf642d83","savedPayload":{"position":{"x":15721.874082289012,"y":11596.528740357437},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"direction","code":"{ \n\"codeName\": \"direction\",\n\"isString\": true\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.direction","id":"770f6a35-9069-49ba-9c12-99dc6e5ff54a","savedPayload":{"position":{"x":15863.297678003159,"y":11286.411919238653},"targetPosition":{"x":15877.835942969192,"y":11565.740790632775},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"871bc42d-f3f7-4896-b575-ca23f325e50f","savedPayload":{"position":{"x":15877.835942969192,"y":11565.740790632775},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"upperShadowPercent","code":"{ \n\"codeName\": \"upperShadowPercent\",\n\"isString\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.upperShadowPercent","id":"1645f231-45ab-48b5-9891-45f27e2b4d7e","savedPayload":{"position":{"x":16100.383887967386,"y":11307.775647761064},"targetPosition":{"x":16035.898908294184,"y":11579.830281086974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"dec83c16-8f66-4403-9dda-e536223e7577","savedPayload":{"position":{"x":16035.898908294184,"y":11579.830281086974},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bodyPercent","code":"{ \n\"codeName\": \"bodyPercent\",\n\"isString\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bodyPercent","id":"36408e7c-d9cc-4d63-9115-feffa763b85f","savedPayload":{"position":{"x":16322.022917705659,"y":11395.267266757755},"targetPosition":{"x":16183.698010961622,"y":11638.159796285936},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cba04177-1edd-444f-94a3-79784d84d70e","savedPayload":{"position":{"x":16183.698010961622,"y":11638.159796285936},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"lowerShadowPercent","code":"{ \n\"codeName\": \"lowerShadowPercent\",\n\"isString\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.lowerShadowPercent","id":"71464adc-3bd3-47b8-b018-cbacf897c119","savedPayload":{"position":{"x":16510.595118433743,"y":11541.805900307281},"targetPosition":{"x":16309.28417074969,"y":11735.742370968435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c2c5753a-2e74-4429-9b6a-aa016a753be2","savedPayload":{"position":{"x":16309.28417074969,"y":11735.742370968435},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"body","code":"{ \n\"codeName\": \"body\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.body","id":"1bc97398-5645-4452-9169-f62efc0a7fe1","savedPayload":{"position":{"x":16649.862514301047,"y":11735.225677070326},"targetPosition":{"x":16402.11751924421,"y":11864.671996317895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f0019951-d651-4fcf-888e-0a0cf1564c98","savedPayload":{"position":{"x":16402.11751924421,"y":11864.671996317895},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"upperShadow","code":"{ \n\"codeName\": \"upperShadow\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.upperShadow","id":"cf426ed9-53d3-411e-acf1-1694c5d45b89","savedPayload":{"position":{"x":16729.0764873906,"y":11960.582147915231},"targetPosition":{"x":16454.858369364494,"y":12014.768933801128},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2d3b26eb-15bc-4272-b296-9658ac24baa9","savedPayload":{"position":{"x":16454.858369364494,"y":12014.768933801128},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"lowerShadow","code":"{ \n\"codeName\": \"lowerShadow\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.lowerShadow","id":"a0909b34-9ad9-4290-aa93-5b1731b74a66","savedPayload":{"position":{"x":16742.01206754522,"y":12198.188052716076},"targetPosition":{"x":16463.403229052834,"y":12173.186128916357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2369782b-6afb-41e1-a93f-721c7442e5c3","savedPayload":{"position":{"x":16463.403229052834,"y":12173.186128916357},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"length","code":"{ \n\"codeName\": \"length\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.length","id":"3639b9ee-c558-4699-9b48-2ddfdc59fa33","savedPayload":{"position":{"x":16686.968822601964,"y":12430.21258429505},"targetPosition":{"x":16426.82231102211,"y":12327.932168126248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a6773db1-97fb-418d-b7cf-d4298054f376","savedPayload":{"position":{"x":16426.82231102211,"y":12327.932168126248},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"meanBody","code":"{ \n\"codeName\": \"meanBody\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.meanBody","id":"a45ab78a-fa03-469b-ab64-78fd184d9dd5","savedPayload":{"position":{"x":16568.563673527475,"y":12637.657602791887},"targetPosition":{"x":16347.943146200396,"y":12465.989970586961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c32b5645-7bbe-4f06-aaef-d9efc3a5c9da","savedPayload":{"position":{"x":16347.943146200396,"y":12465.989970586961},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"avgRef","code":"{ \n\"codeName\": \"avgRef\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.avgRef","id":"26313abc-cd03-4fb9-b54d-2a0d67a3c0da","savedPayload":{"position":{"x":16396.95716008808,"y":12803.215606722491},"targetPosition":{"x":16233.558031826937,"y":12576.405072409163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0bdc3b36-d092-421f-8741-a0ecfa8fcc41","savedPayload":{"position":{"x":16233.558031826937,"y":12576.405072409163},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Nbodies","code":"{ \n\"codeName\": \"Nbodies\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.Nbodies","id":"f5b650b4-497d-4eef-84f8-c53b5703dbed","savedPayload":{"position":{"x":16185.456446329934,"y":12913.579981425799},"targetPosition":{"x":16092.631933821867,"y":12649.946689224127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cf0a624b-44cb-4926-8e26-867ea485e3fe","savedPayload":{"position":{"x":16092.631933821867,"y":12649.946689224127},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"dojiFactor","code":"{ \n\"codeName\": \"dojiFactor\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.dojiFactor","id":"8e3696bf-dace-4ecb-a9e7-db654ba86ed8","savedPayload":{"position":{"x":15951.338423271372,"y":12960.07191237919},"targetPosition":{"x":15936.664027922136,"y":12680.941417585764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cda80e33-8ed9-4579-8c45-99da25652634","savedPayload":{"position":{"x":15936.664027922136,"y":12680.941417585764},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"sizeFactor","code":"{ \n\"codeName\": \"sizeFactor\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.sizeFactor","id":"08e5507c-e88f-410e-ac54-886d8ce157d2","savedPayload":{"position":{"x":15714.911759608227,"y":12938.753275437566},"targetPosition":{"x":15778.880197046594,"y":12666.480185362861},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"20fadb1a-1f55-4b10-ba45-cda61d8d0157","savedPayload":{"position":{"x":15778.880197046594,"y":12666.480185362861},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Nlengths","code":"{ \n\"codeName\": \"Nlengths\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.Nlengths","id":"addc3851-bbe2-47ac-8652-5b745e12918a","savedPayload":{"position":{"x":15481.703225238807,"y":12854.291052921695},"targetPosition":{"x":15630.890909021455,"y":12608.227366997262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0a736450-a2e1-41a0-8c29-cd2434296872","savedPayload":{"position":{"x":15630.890909021455,"y":12608.227366997262},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"sizeMethod","code":"{ \n\"codeName\": \"sizeMethod\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.sizeMethod","id":"e2109d1f-c4aa-46d6-a6b7-75d1ffd9c0ee","savedPayload":{"position":{"x":15304.563842686297,"y":12704.592493090222},"targetPosition":{"x":15505.452513022656,"y":12510.667579840174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"23853614-5c16-4e3e-b1ae-d3fda37d5884","savedPayload":{"position":{"x":15505.452513022656,"y":12510.667579840174},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"meanLength","code":"{ \n\"codeName\": \"meanLength\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.meanLength","id":"4731c75f-5e23-4972-ba37-10bd4363ee0d","savedPayload":{"position":{"x":15165.029513378944,"y":12510.925606284693},"targetPosition":{"x":15412.45005195976,"y":12381.611095625749},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fc7702c5-1b49-4ed6-b2b3-fde741557115","savedPayload":{"position":{"x":15412.45005195976,"y":12381.611095625749},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"min","code":"{ \n\"codeName\": \"min\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.candleMin","id":"016b76f2-2f06-408e-986f-e29cd5edc107","savedPayload":{"position":{"x":15085.888117137885,"y":12285.431442875508},"targetPosition":{"x":15359.625290852648,"y":12231.37526005558},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"31730ec0-eedf-404d-9a38-bd065bdc2064","savedPayload":{"position":{"x":15359.625290852648,"y":12231.37526005558},"targetPosition":{"x":15907.153147447421,"y":12123.258200863127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4d364dfd-44f1-4d8e-87fd-5aa54564e167","savedPayload":{"position":{"x":15907.153147447421,"y":12123.258200863127},"targetPosition":{"x":14282.02559347152,"y":12197.197566354245},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* ¡¡¡ VERY IMPORTANT !!!\n\"PLEASE READ BEFORE STARTING ALL DOCUMENTATION RELATED TO THIS INDICATOR ON THE SUPERALGOS WEBSITE\" */\n\n/* INTRODUCTION:\nThere are a lot of combinations in order to construct a candle. That's why we are going to define 4 families of candles based on their appearence.\n1) “CLASSIC CANDLES”: These candles have two shadows shorter than the body.\n2) “MARUBOZU CANDLES”: These candles have no at least one shadow. The shadow, if present, cannot be longer than the body. \n3) “SPINNING TOP CANDLES”: These candles have differents opening and closing prices and have at least one shadow. At the same time at least one shadow has to be longer than the body.\n4) “DOJI CANDLES”: These candles have no body. The open price is equal to the close price. */\n\n// ---------------------------------------------------------------------------------------------------------------------\n// From here the variables to be used will be defined\n// ---------------------------------------------------------------------------------------------------------------------\n\n/* The following variables could be modified by the user to adapt the indicator with his preferences\n(Please, read the documentation before) */\n\nlet sizeMethod = \"SMA\" // Choose \"SMA\" or \"EMA\" to calculate the average length of the last \"Nlengths\" candles\nlet Nlengths = 20 // Default value: 20 - \"Nlengths\" is the number of candles to calculate the average length value\nlet sizeFactor = 75 // Default value: 75% - \"sizeFactor\" is to define \"Long\" or \"Short\" size\nlet Nbodies = 10 // Default value: 10 - \"Nbodies\" is the number of bodies to calculate the average bodie value\nlet dojiFactor = 3 // Default value: 3% - \"dojiFactor\" is to define when a candle is \"doji\" or not\n\n /* In order to avoid errors, the initial condition of the name of the candle is defined */\nvariable.name = \"Unknown\" // To be used on the Plotter Panel and Conditions\n\n/* Candles as dependencies are defined */\nlet candle = record.current \n\n/* The height of the body */\nlet body = Math.abs (candle.close-candle.open)\n\n/* Array of N bodies is defined to verify if a candle has a Short Body or a Long Body */\nif (variable.lastNbodies.length > Nbodies) {\n variable.lastNbodies.shift() // Remove the first element of the array to keep it at a maximun of N elements\n}\nlet meanBody \nif (variable.lastNbodies.length < Nbodies) { // If \"lastNbodies\" array hasn't enough bodies, zero value is defined\n meanBody = 0 \n} else { \n let sum = 0 // Initialize sum variable \n for (let i = variable.lastNbodies.length-Nbodies; i < variable.lastNbodies.length; i++) { // Iterate through the last periods\n sum = sum + variable.lastNbodies[i]\n } \n meanBody = sum/Nbodies\n}\nvariable.lastNbodies.push(body) // Add the current body value to the \"lastNbodies\" array for next cycle\n\n /* Total length of the candle, equivalent to the sum of upper shadow, lower shadow and body */\nlet length = candle.max - candle.min \n\n/* Calculating average candles length \"EMA\" or \"SMA\" */\nif (sizeMethod === \"EMA\") {\n let k = 2 / (Nlengths + 1)\n variable.EMAlength = length * k + variable.previousEMAlength * (1-k)\n variable.previousEMAlength = variable.EMAlength\n variable.avgRef = variable.EMAlength * sizeFactor / 100\n variable.SMAlength = 0\n} \nif (sizeMethod === \"SMA\") {\n variable.EMAlength = 0\n if (variable.lastNlengths.length > Nlengths) {\n variable.lastNlengths.shift() // Remove the first element of the array to keep it at a maximun of N elements \n } \n if (variable.lastNlengths.length < Nlengths) { // If \"lastNlengths\" array hasn't enough candles length, zero value is defined\n variable.SMAlength = 0 \n variable.avgRef = 0 \n } else { \n let sum = 0 // Initialize sum variable \n for (let i = variable.lastNlengths.length-Nlengths; i < variable.lastNlengths.length; i++) { // Iterate through the last periods\n sum = sum + variable.lastNlengths[i]\n } \n variable.SMAlength = sum/Nlengths\n variable.avgRef = variable.SMAlength * sizeFactor / 100 // To be used in Shapes\n }\n variable.lastNlengths.push(length) // Add the current length value to the \"lastNlengths\" array for next cycle\n}\n\n/* Only one MA is calculated, the other is defined as 0. It is useful to integrate both variables into one for future operations */\nvariable.meanLength = variable.SMAlength + variable.EMAlength // To be used in Shapes and Conditions\n\n/* Defining if a candle is \"Long\" or \"Short\" */\nlet size\nif (length > variable.avgRef) {\n size = \"Long\"\n} else {\n size = \"Short\"\n} \n\n/* Green candles are \"Bullish\" and red candles are \"Bearish\" */\nlet direction \nif (candle.close > candle.open) {\n direction = \"Bullish\"\n} else {\n direction = \"Bearish\"\n}\n\n/* The value of the upper shadow */\nlet upperShadow \nif (direction === \"Bullish\") {\n upperShadow = candle.max-candle.close\n} else {\n upperShadow = candle.max-candle.open\n}\n\n/* The value of the lower shadow */\nlet lowerShadow \nif (direction === \"Bullish\") {\n lowerShadow = candle.open-candle.min\n} else {\n lowerShadow = candle.close-candle.min\n}\n\n/* Four possibilities of combinations of the shadows are defined: \"lower\", \"upper\", \"both\", \"none\" */\nlet shadow\nif (upperShadow > 0 && lowerShadow > 0) {\n shadow = \"Both\"\n}\nif (upperShadow === 0 && lowerShadow === 0) {\n shadow = \"None\"\n}\nif (upperShadow > 0 && lowerShadow === 0) {\n shadow = \"Upper\"\n}\nif (upperShadow === 0 && lowerShadow > 0) {\n shadow = \"Lower\"\n}\n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here the name of the candles will be defined\n// ----------------------------------------------------------------------------------------------------------------------------\n\nif (body > length*dojiFactor/100) { // From here all kind of candles that are NOT \"doji\" are defined\n\n/* \"CLASSIC CANDLES\" family:\nThese candles have the following characteristics in common:\n1) Both shadows are present.\n2) Each shadow is shorter than the body. \n3) The opening price differs from the closing price. */\n\nif (shadow === \"Both\" && upperShadow <= body && lowerShadow <= body) {\n\n/* \"SHORT GREEN CANDLE\" and \"SHORT RED CANDLE\" properties:\n1) Bullish or Bearish.\n2) Relative Size: Short. */\n\nif (direction === \"Bullish\" && size === \"Short\") {\n variable.name = \"Short Green Candle\"\n}\nif (direction === \"Bearish\" && size === \"Short\") {\n variable.name = \"Short Red Candle\"\n}\n\n/* \"GREEN CANDLE\" and \"RED CANDLE\" properties: \n1) Bullish or Bearish.\n2) Relative Size: Long . */\n\nif (direction === \"Bullish\" && size === \"Long\") {\n variable.name = \"Green Candle\"\n}\nif (direction === \"Bearish\" && size === \"Long\") {\n variable.name = \"Red Candle\"\n}\n\n/* \"LONG GREEN CANDLE\" and \"LONG RED CANDLE\" properties:\n1) Bullish or Bearish respectively.\n2) The body is at least three times higher than the mean body.\n4) Relative Size: Long. */\n\nif (direction === \"Bullish\" && size === \"Long\" && body >= meanBody*3) {\n variable.name = \"Long Green Candle\"\n}\nif (direction === \"Bearish\" && size === \"Long\" && body >= meanBody*3) {\n variable.name = \"Long Red Candle\"\n}\n\n} // Closing \"Classic Candles\" Family \n\n/* \"MARUBOZU CANDLES\" family:\nThese candles have the following characteristics in common:\n1) Lack at least one shadow.\n2) If it has one shadow, it must be shorter than the body.\n3) The opening price differs from the closing price.\n4) Relative Size: Short or Long. */\n\n/* \"GREEN MARUBOZU\" and \"RED MARUBOZU\" properties: \n1) Bullish or Barish.\n2) No shadows. */\n\nif (direction === \"Bullish\" && shadow === \"None\") {\n variable.name = \"Green Marubozu\"\n}\nif (direction === \"Bearish\" && shadow === \"None\") {\n variable.name = \"Red Marubozu\"\n}\n\n/* \"OPENING GREEN MARUBOZU\" properties: \n1) Bullish.\n2) No lower shadow. */\n\nif (direction === \"Bullish\" && shadow === \"Upper\" && upperShadow <= body) {\n variable.name = \"Opening Green Marubozu\"\n}\n\n/* \"CLOSING GREEN MARUBOZU\" properties:\n1) Bullish.\n2) No upper shadow. */\n\nif (direction === \"Bullish\" && shadow === \"Lower\" && lowerShadow <= body) {\n variable.name = \"Closing Green Marubozu\"\n}\n\n/* \"CLOSING RED MARUBOZU\" properties:\n1) Bearish.\n2) No lower shadow. */\n\nif (direction === \"Bearish\" && shadow === \"Upper\" && upperShadow <= body) {\n variable.name = \"Closing Red Marubozu\"\n}\n\n/* \"OPENING RED MARUBOZU\" properties: \n1) Bearish.\n2) No upper shadow. */\n\nif (direction === \"Bearish\" && shadow === \"Lower\" && lowerShadow <= body) {\n variable.name = \"Opening Red Marubozu\"\n}\n\n/* \"SPINNING TOP CANDLES\" family:\nThese candles have the following characteristics in common:\n1) Have at least one shadow.\n2) At least one shadow is greater than the body.\n3) The opening price differs from the closing price. */\n\n/* \"GREEN SPINNING TOP\" and \"RED SPINNING TOP\" properties:\n1) Bullish or Bearish.\n4) Relative Size: Short or Long. \n5) If it's relative size is Long, none of the shadows can exceed three times the body. */\n\nif (shadow !== \"None\") { \n if (upperShadow > body || lowerShadow > body) { \n if (size === \"Long\") {\n if (upperShadow > 3*body || lowerShadow > 3*body) {\n } else {\n if (direction === \"Bullish\") {\n variable.name = \"Green Spinning Top\"\n } else {\n variable.name = \"Red Spinning Top\"\n }\n } \n } else {\n if (direction === \"Bullish\") {\n variable.name = \"Green Spinning Top\"\n } else {\n variable.name = \"Red Spinning Top\"\n }\n }\n } \n} \n\n/* \"HIGH WAVE\" properties:\n1) Bullish or Bearish.\n2) Relative Size: Long.\n3) The length of at least one shadow is at least 3 times larger than the body.*/\n\nif (shadow !== \"None\" && size === \"Long\") {\n if (upperShadow > 3*body || lowerShadow > 3*body) { \n variable.name = \"High Wave\"\n } \n}\n\n} else { // Closing the initial \"dojiFactor\" if condition, from here \"Doji Candles\" family are defined \n\n/* \"DOJI CANDLES\" family:\nThese candles have the following characteristics in common:\n1) Have no body, or very small body if it is allowed. */\n\n/* \"FOUR-PRICE DOJI\" properties:\n1) No shadows.\n2) Relative Size: Short.*/\n\nif (shadow === \"None\" && size === \"Short\") {\n variable.name = \"Four-Price Doji\"\n}\n\n/* \"STAR DOJI\" properties:\n1) Body is located nearly mid-range (between 60% and 40% of total length).\n2) Relative Size: Short. */\n\nif (size === \"Short\" && upperShadow <= length * 0.6 && upperShadow >= length * (0.4 - dojiFactor/100)) {\n variable.name = \"Star Doji\"\n}\n\n/* \"LONG-LEGGED DOJI\" properties:\n1) Body is located nearly mid-range (between 60% and 40% of total length).\n2) Relative Size: Long. */\n\nif (size === \"Long\" && upperShadow <= length * 0.6 && upperShadow >= length * (0.4 - dojiFactor/100)) {\n variable.name = \"Long-Legged Doji\"\n}\n\n/* \"DRAGONFLY DOJI\" properties:\n1) Upper shadow shorter than 1% of total candle length.\n2) Relative Size: Long. */\n\nif (size === \"Long\" && upperShadow <= length * 0.01) {\n variable.name = \"Dragonfly Doji\"\n}\n\n/* \"GRAVESTONE DOJI\" properties:\n1) Lower shadow shorter than 1% of total candle length.\n2) Relative Size: Long.*/\n\nif (size === \"Long\" && lowerShadow <= length * 0.01) {\n variable.name = \"Gravestone Doji\"\n}\n\n/* \"GENERIC DOJI\" properties:\n1) None of the above five Doji. */\n\nif (variable.name === \"Unknown\") {\n variable.name = \"Generic Doji\"\n}\n\n} // Closing the \"dojiFactor\" else\n\n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here all the variables that will be written in the records are defined \n// ----------------------------------------------------------------------------------------------------------------------------\n\nvariable.size = size // To be used on the Plotter Panel and Conditions\nvariable.direction = direction // To be used on the Plotter Panel and Conditions\nif (length > 0) { // Condition to avoid dividing by 0\n variable.upperShadowPercent = upperShadow/length*100 // To be used on the Plotter Panel\n variable.bodyPercent = body/length*100 // To be used on the Plotter Panel\n variable.lowerShadowPercent = lowerShadow/length*100 // To be used on the Plotter Panel\n} else {\n variable.lowerShadowPercent = 0\n variable.bodyPercent = 0\n variable.upperShadowPercent = 0\n}\nvariable.Nbodies = Nbodies // To be used on the Plotter Panel\nvariable.sizeFactor = sizeFactor // To be used on the Plotter Panel\nvariable.dojiFactor = dojiFactor // To be used on the Plotter Panel\nvariable.Nlengths = Nlengths // To be used on the Plotter Panel\nvariable.sizeMethod = sizeMethod // To be used on the Plotter Panel\nvariable.candleMin = candle.min // To be used in Shapes\nvariable.length = length // To be used in Conditions\nvariable.upperShadow = upperShadow // To be used in Conditions\nvariable.lowerShadow = lowerShadow // To be used in Conditions\nvariable.body = body // To be used in Conditions\nvariable.meanBody = meanBody // To be used in Conditions\n","id":"119670a5-5f25-4a75-aaad-6939a18aebf0","savedPayload":{"position":{"x":15578.211960985802,"y":12826.18654284573},"targetPosition":{"x":15202.902576599441,"y":12756.938898857712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"shortcutKey":"f"}}},"id":"351fa6f0-1fbb-4e1b-9d95-3599476aed35","savedPayload":{"position":{"x":15202.902576599441,"y":12756.938898857712},"targetPosition":{"x":14839.5003498846,"y":12684.719289550252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"/* ¡¡¡ VERY IMPORTANT !!!\n\"PLEASE READ BEFORE STARTING ALL DOCUMENTATION RELATED TO THIS INDICATOR ON THE SUPERALGOS WEBSITE\" */\n\n/* It is necessary to define when a candle has a long or a short body. To do that, the bodies of the last N candles have to be averaged. */\nvariable.lastNbodies = [ ] // Define \"lastNbodies\" array to record the value of the last N bodies (SMA)\n\n/* It is necessary to define when a candle is \"Long\" or \"Short\". To do that, the length of the last N candles have to be averaged. */\nvariable.previousEMAlength = 0 // Initialize the variable previous enter to the main loop (EMA)\nvariable.lastNlengths = [ ] // Define \"lastNlengths\" array to record the value of the last N candles length (SMA)","id":"70e6788a-2518-48cf-8493-27f1e7e5ad61","savedPayload":{"position":{"x":15019.074641186478,"y":13213.234372073503},"targetPosition":{"x":14959.275402183777,"y":13036.739578043598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0b2207a1-b217-4c06-92bd-6985d621d035","savedPayload":{"position":{"x":14959.275402183777,"y":13036.739578043598},"targetPosition":{"x":14839.5003498846,"y":12684.719289550252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f2638b08-3f3b-4574-9e89-dc41f984273d","savedPayload":{"position":{"x":14839.5003498846,"y":12684.719289550252},"targetPosition":{"x":14282.02559347152,"y":12197.197566354245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7519e3d8-b5ec-47eb-84c9-8c9262c9efc6","savedPayload":{"position":{"x":14379.01609552293,"y":12186.037908738683},"targetPosition":{"x":13606.59207657629,"y":12362.027718520723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Basic Candles","id":"09e0a24c-ead1-40c6-9e43-72b46e4294c5"}}},{"type":"Product Definition","name":"One-Candle Patterns","code":"{\n \"codeName\": \"One-Candle-Patterns\",\n \"singularVariableName\": \"oneCandlePattern\",\n \"pluralVariableName\": \"oneCandlePatterns\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"144d8665-1ff0-4db3-9340-a33fd7d0d098","savedPayload":{"position":{"x":14677.265154103477,"y":12277.3426901297},"targetPosition":{"x":14378.665138402355,"y":12538.284209229136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"f0a11771-dd69-4b9a-9347-7cb2d1f231ff","savedPayload":{"position":{"x":14773.683154122755,"y":12503.125419865399},"targetPosition":{"x":14378.665138402355,"y":12538.284209229136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"One-Candle Patterns Records","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"6269672d-95af-44a9-8f10-52f7d4a6892b","savedPayload":{"position":{"x":14472.54823059946,"y":12281.003258438875},"targetPosition":{"x":14648.596929759962,"y":12635.807923321734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"023fd450-0cae-4b41-8cb2-c446ac69bf32","savedPayload":{"position":{"x":14648.596929759962,"y":12635.807923321734},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"6902c73f-da76-4ca0-b8c2-4ac0351c9a59","savedPayload":{"position":{"x":14924.885575338732,"y":12200.770706579715},"targetPosition":{"x":14880.854978772315,"y":12595.012553863566},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ebafaaab-38a0-4bed-a8ea-169f0e92b1cb","savedPayload":{"position":{"x":14880.854978772315,"y":12595.012553863566},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"name","code":"{ \n\"codeName\": \"name\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.name","id":"ae345ad9-8364-4e58-bd0a-8b44803b1d98","savedPayload":{"position":{"x":15346.72595261088,"y":12377.448931214922},"targetPosition":{"x":15097.20646207978,"y":12684.90038670266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b633fced-5335-4a72-b0cf-ebb6237e2a17","savedPayload":{"position":{"x":15097.20646207978,"y":12684.90038670266},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trend","code":"{ \n\"codeName\": \"trend\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trend","id":"5cd8361b-112f-4a4f-9fcd-42a2ff493e96","savedPayload":{"position":{"x":15607.183556794776,"y":12754.380222707294},"targetPosition":{"x":15229.831916782749,"y":12878.413753752653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"853f4eb3-8068-47d1-9726-22b0c7e835ad","savedPayload":{"position":{"x":15229.831916782749,"y":12878.413753752653},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"forecast","code":"{ \n\"codeName\": \"forecast\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.forecast","id":"3b9c18d5-c9e8-4fad-bb3c-1c46751b91a9","savedPayload":{"position":{"x":15621.141834871996,"y":13212.089066920023},"targetPosition":{"x":15238.309032589365,"y":13113.425547400535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1325daec-fb39-4cb8-acec-14adc2ee94e9","savedPayload":{"position":{"x":15238.309032589365,"y":13113.425547400535},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trendLine","code":"{ \n\"codeName\": \"trendLine\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trendLine","id":"d4a6b997-360b-442b-a08c-b75c331a6a84","savedPayload":{"position":{"x":15186.37140449328,"y":13388.867600409001},"targetPosition":{"x":15116.549027493877,"y":13313.983358004109},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"e1a74ac9-f660-4d09-89e9-f8eaebf137c4","savedPayload":{"position":{"x":15116.549027493877,"y":13313.983358004109},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bearishArrowHead","code":"{ \n\"codeName\": \"bearishArrowHead\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bearishArrowHead","id":"7ca628f3-61d6-4b1f-a4a8-610d07bd8bdb","savedPayload":{"position":{"x":14925.418293373801,"y":13518.504568889228},"targetPosition":{"x":14907.187961036754,"y":13418.154401005628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"d9837267-f999-420e-8906-169c546fc7f5","savedPayload":{"position":{"x":14907.187961036754,"y":13418.154401005628},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bullishArrowHead","code":"{ \n\"codeName\": \"bullishArrowHead\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bullishArrowHead","id":"9ddcf2bf-57b5-489e-a7a5-496afd9b7301","savedPayload":{"position":{"x":14641.248110481109,"y":13492.252549326506},"targetPosition":{"x":14679.765134827063,"y":13401.079156985605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"c474fa25-64ec-470c-ab04-4132e0f3f9a3","savedPayload":{"position":{"x":14679.765134827063,"y":13401.079156985605},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"period","code":"{ \n\"codeName\": \"period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.period","id":"4986b4c7-0753-4bab-bf62-906acab4c408","savedPayload":{"position":{"x":14327.714517012997,"y":13358.62652275823},"targetPosition":{"x":14491.85350947707,"y":13245.093105108044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"49eea75b-d5c8-44cd-afa7-8689127ac9ae","savedPayload":{"position":{"x":14491.85350947707,"y":13245.093105108044},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trendMethod","code":"{ \n\"codeName\": \"trendMethod\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trendMethod","id":"8fdf87c8-a467-49a9-9b6a-e70cd12a2b93","savedPayload":{"position":{"x":14219.183852429282,"y":13029.250470753317},"targetPosition":{"x":14418.47384199702,"y":13022.500443414949},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6337c29e-3df8-4e54-82ab-a2cdeb800a1b","savedPayload":{"position":{"x":14418.47384199702,"y":13022.500443414949},"targetPosition":{"x":14834.206906422474,"y":13008.82527232067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"02d96f47-c6f0-4423-a144-4799f4023c99","savedPayload":{"position":{"x":14834.206906422474,"y":13008.82527232067},"targetPosition":{"x":14378.665138402355,"y":12538.284209229136},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","name":"One-Candle Patterns Code","code":"// -----------------------------------------------------------------------------------------------------------------------------\n// From here the variables that will be used during the definition of the patterns will be defined\n// -----------------------------------------------------------------------------------------------------------------------------\n\n/* The following variables could be modified by the user to adapt the indicator with his preferences\n(Please, read the documentation before) */\nlet N = 10 // Default value: 10 periods - \"N\" is the period to calculate the Moving Average of the trend line (between 5 and 20) \nvariable.trendMethod = \"SMA\" // Choose \"SMA\" or \"EMA\" to calculate the Moving Average of the trend line\n\n /* In order to avoid errors, the initial condition of the output variables are defined */\nvariable.name = \"No Pattern\" // The name of the one-candle pattern\nvariable.forecast = \"None\" // The forecast of the pattern\n\n/* \"Candles\" and \"Basic Candles\" are dependencies */\nlet candle = record.current // Calling \"Candles\"\nlet basicCandle = getElement ('basicCandles', candle) // Calling \"Basic Candles\"\n\n/* To define if the trend is Up or Down , it is necessary to average the candle closes of the last N candles. */\nif (variable.trendMethod === \"SMA\") {\n variable.lastN.push(candle.close) // Add the current Candle Close value to the \"lastN\" array\n if (variable.lastN.length > N) {\n variable.lastN.shift() // Remove the first element of the array to keep it at a maximun of N elements\n }\n let smaN\n if (variable.lastN.length < N) { // If the array \"lastN\" has not enough Candle Closes, the value zero for the smaN is defined\n smaN = 0 \n } else { \n let sum = 0 // Initialize sum variable \n for (let i = variable.lastN.length-N; i < variable.lastN.length; i++) { // Iterate through the last periods\n sum = sum + variable.lastN[i]\n } \n smaN = sum/N\n variable.lastMA.push(smaN) // Add the current SMA value to the \"lastMA\" array\n if (variable.lastMA.length > 4) {\n variable.lastMA.shift() // Remove the first element of the array to keep it at a maximun of 4 SMA's\n }\n }\n}\n\nif (variable.trendMethod === \"EMA\") {\n let k = 2 / (N + 1)\n variable.ema = candle.close * k + variable.previousEMA * (1-k)\n variable.previousEMA = variable.ema\n if (variable.ema === undefined) {\n variable.lastMA.push(0)\n } else { \n variable.lastMA.push(variable.ema) // Add the current EMA value to the \"lastMA\" array\n } \n if (variable.lastMA.length > 4) {\n variable.lastMA.shift() // Remove the first element of the array to keep it at a maximun of 4 EMA's\n }\n} \n\n/* Calling the 3 last and current Moving Averages of the \"lastMA\" array */\nlet ma3Back = variable.lastMA [0] \nlet ma2Back = variable.lastMA [1]\nlet ma1Back = variable.lastMA [2]\nlet trendLine = variable.lastMA [3]\n\n/* Defining trend (Uptrend or Downtrend). It is important to avoid \"undefined\" candles or ma's */\nlet trend = \"None\"\nlet candle1Back = mainDependency.records[index - 1] // Calling previous candle\nlet candle2Back = mainDependency.records[index - 2] // Calling 2 previous candle\nlet candle3Back = mainDependency.records[index - 3] // Calling 3 previous candle\n\nif (candle1Back !== undefined && candle2Back !== undefined && candle3Back !== undefined) { \n if (ma1Back !== undefined && ma2Back !== undefined && ma3Back !== undefined) { \n if (candle1Back.close >= ma1Back && candle1Back.open >= ma1Back) {\n if (candle2Back.close >= ma2Back && candle2Back.open >= ma2Back) {\n if (candle3Back.close >= ma3Back && candle3Back.open >= ma3Back) {\n trend = \"Uptrend\"\n }\n }\n }\n if (candle1Back.close <= ma1Back && candle1Back.open <= ma1Back) {\n if (candle2Back.close <= ma2Back && candle2Back.open <= ma2Back) {\n if (candle3Back.close <= ma3Back && candle3Back.open <= ma3Back) {\n trend = \"Downtrend\"\n }\n }\n }\n }\n}\n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here patterns will be defined\n// ----------------------------------------------------------------------------------------------------------------------------\n\n/* Patterns will be grouped as follows:\n1) Bearish continuation --> These patterns indicates that the current downtrend could continue.\n2) Bearish Reversal --> These patterns indicates that the current uptrend could turn to downtrend.\n3) Bullish Continuation --> These patterns indicates that the current uptrend could continue.\n4) Bullish Reversal --> These patterns indicates that the current downtrend could turn to uptrend. */\n\n/* \"BEARISH CONTINUATION\" group:\nThese patterns should appear during a downtrend to be valid*/\nif (trend === \"Downtrend\") {\n\n/* \"BEARISH STRONG LINE\" properties:\n1) Basic Candle can be \"Long Red Candle\", \"Red Marubozu\", \"Opening Red Marubozu\" or \"Closing Red Marubozu\".\n2) Average size: Long.\n3) The body has to be three times higher than the mean body.\n4) The body is placed below the trend line. */\n\nif (basicCandle.name === \"Long Red Candle\" || basicCandle.name === \"Red Marubozu\" || basicCandle.name === \"Opening Red Marubozu\" || basicCandle.name === \"Closing Red Marubozu\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.body >= basicCandle.meanBody*3) {\n if (candle.open <= trendLine) {\n variable.name = \"Bearish Strong Line\"\n variable.forecast = \"Bearish Continuation\"\n }\n }\n }\n}\n\n} // Closing \"Bearish Continuation\" group\n\n//-------------------------------------------------------\n\n/* \"BEARISH REVERSAL\" group:\nThese patterns should appear during an uptrend to be valid */\nif (trend === \"Uptrend\") {\n\n/* \"BEARISH BELT HOLD\" properties:\n1) Basic Candle is \"Opening Red Marubozu\". \n2) Average size: Long.\n3) Short lower shadow. (20 percent of the candle is defined, user can change it). */\n\nif (basicCandle.name === \"Opening Red Marubozu\") {\n if (basicCandle.size === \"Long\") {\n if(basicCandle.lowerShadow <= basicCandle.length*0.2) {\n variable.name = \"Bearish Belt Hold\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n}\n\n/* \"HANGING MAN\" properties:\n1) Basic Candle can be \"Green Spinning Top\", \" Red Spinning Top\" or \"High Wave\".\n2) Average size: Long.\n3) The upper shadow shorter than the body.\n4) Long lower shadow that is at least twice the size as the body.\n5) The body above the trend line. */\n\nif (basicCandle.name === \"Green Spinning Top\" || basicCandle.name === \"Red Spinning Top\" || basicCandle.name === \"High Wave\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.upperShadow <= basicCandle.body) {\n if (basicCandle.lowerShadow >= basicCandle.body*2) {\n if (candle.close >= trendLine && candle.open >= trendLine) {\n variable.name = \"Hanging Man\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n } \n}\n\n/* \"SHOOTING STAR\" properties:\n1) Basic Candle can be \"Green Spinning Top\", \" Red Spinning Top\" or \"High Wave\".\n2) Average size: Long.\n3) The lower shadow shorter than the body.\n4) Upper shadow that is at least two times longer than the body.\n5) The body above the trend line. */\n\nif (basicCandle.name === \"Green Spinning Top\" || basicCandle.name === \"Red Spinning Top\" || basicCandle.name === \"High Wave\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.lowerShadow <= basicCandle.body) {\n if (basicCandle.upperShadow >= basicCandle.body*2) {\n if (candle.close >= trendLine && candle.open >= trendLine) {\n variable.name = \"Shooting Star\"\n variable.forecast = \"Bearish Reversal\"\n } \n }\n }\n } \n}\n\n/* \"BEARISH STRONG LINE\" properties:\n1) Basic Candle can be \"Long Red Candle\", \"Red Marubozu\", \"Opening Red Marubozu\" or \"Closing Red Marubozu\". \n2) Average size: Long.\n3) The body has to be three times higher than the mean body.\n4) The opening price is above the trendline (Remember, if the body is below the trendline, belongs to bearish continuation). */\n\nif (basicCandle.name === \"Long Red Candle\" || basicCandle.name === \"Red Marubozu\" || basicCandle.name === \"Opening Red Marubozu\" || basicCandle.name === \"Closing Red Marubozu\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.body >= basicCandle.meanBody*3) {\n if (candle.open >= trendLine) {\n variable.name = \"Bearish Strong Line\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n} // Closing \"Bearish Reversal\" group\n\n//-------------------------------------------------------\n\n/* \"BULLISH CONTINUATION\" group:\nThese patterns should appear during an uptrend to be valid */\nif (trend === \"Uptrend\") {\n\n/* \"BULLISH STRONG LINE\" properties:\n1) Basic Candle can be \"Long Green Candle\", \"Green Marubozu\", \"Opening Green Marubozu\" or \"Closing Green Marubozu\".\n2) Average size: Long.\n3) The body has to be three times higher than the mean body.\n4) The body is placed above the trendline. */\n\nif (basicCandle.name === \"Long Green Candle\" || basicCandle.name === \"Green Marubozu\" || basicCandle.name === \"Opening Green Marubozu\" || basicCandle.name === \"Closing Green Marubozu\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.body >= basicCandle.meanBody*3) {\n if (candle.open >= trendLine) {\n variable.name = \"Bullish Strong Line\"\n variable.forecast = \"Bullish Continuation\"\n }\n }\n }\n}\n\n} // Closing \"Bullish Continuation\" group\n\n//-------------------------------------------------------\n\n/* \"BULLISH REVERSAL\" group:\nThese patterns should appear during a downtrend*/\nif (trend === \"Downtrend\") {\n\n/* \"BULLISH BELT HOLD\" properties:\n1) Basic Candle is \"Opening Green Marubozu\".\n2) Average size: Long.\n3) Short upper shadow. 20 percent of the candle length, user can change it value. */\n\nif (basicCandle.name === \"Opening Green Marubozu\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.upperShadow <= basicCandle.length*0.2) {\n variable.name = \"Bullish Belt Hold\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n}\n\n/* \"HAMMER\" properties:\n1) Basic Candle can be \"Green Spinning Top\", \" Red Spinning Top\" or \"High Wave\".\n2) Average size: Long.\n3) The upper shadow shorter than the body.\n4) Lower shadow at least two times longer than the body. \n5) The body has to be below the trend line. */\n\nif (basicCandle.name === \"Green Spinning Top\" || basicCandle.name === \"Red Spinning Top\" || basicCandle.name === \"High Wave\" ) {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.upperShadow <= basicCandle.body) {\n if (basicCandle.lowerShadow >= basicCandle.body*2) {\n if (candle.close <= trendLine && candle.open <= trendLine) {\n variable.name = \"Hammer\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n }\n } \n}\n \n/* \"BULLISH STRONG LINE\" properties:\n1) Basic Candle can be \"Long Green Candle\", \"Green Marubozu\", \"Opening Green Marubozu\" or \"Closing Green Marubozu\". \n2) Average size: Long.\n3) The body three times higher than the mean body.\n4) The opening price is below the trendline (Remember, if the body is placed above the trendline, belongs to bulliish continuation). */\n\nif (basicCandle.name === \"Long Green Candle\" || basicCandle.name === \"Green Marubozu\" || basicCandle.name === \"Opening Green Marubozu\" || basicCandle.name === \"Closing Green Marubozu\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.body >= basicCandle.meanBody*3) {\n if (candle.open <= trendLine) {\n variable.name = \"Bullish Strong Line\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n }\n}\n\n} // Closing \"Bullish Reversal\" group\n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here all the variables that will be written in the records are defined \n// ----------------------------------------------------------------------------------------------------------------------------\n\nvariable.trend = trend\nvariable.trendLine = trendLine\nvariable.period = N // This record will be for pattern visualization on the chart\nvariable.bearishArrowHead = candle.max*1.02 // This record will be for pattern visualization on the chart\nvariable.bullishArrowHead = candle.min*0.98 // This record will be for pattern visualization on the chart","id":"08e03d17-e3d4-4a60-9e76-8b0c246f6eab","savedPayload":{"position":{"x":15163.941629588513,"y":13620.474031577334},"targetPosition":{"x":15005.415792414886,"y":13501.65956874262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"45f3274c-5f6c-4730-83cc-3a4a80be5f11","savedPayload":{"position":{"x":15005.415792414886,"y":13501.65956874262},"targetPosition":{"x":14688.792295499397,"y":13264.350228985411},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"/* It is necessary to define Moving Average of N Periods to define the trend of the market. */\nvariable.lastN = [ ] // Define lastN array to record the value of the last N candle closes (SMA)\nvariable.previousEMA = 0 // Initialize the variable previous enter to the main loop (EMA)\nvariable.lastMA = [0, 0, 0, 0] // Define lastMA array to record the value of the last 3 and current Moving Averages of N Periods","id":"dcdb9df8-32b5-4c90-b392-8eb147d91a1e","savedPayload":{"position":{"x":14618.114317192514,"y":13854.698431242783},"targetPosition":{"x":14641.632386752723,"y":13657.80964036004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0571fcc4-4f29-4c5b-8de0-54da0ee0dd44","savedPayload":{"position":{"x":14641.632386752723,"y":13657.80964036004},"targetPosition":{"x":14688.792295499397,"y":13264.350228985411},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"61de6419-4760-4b57-a184-d5aac5114be8","savedPayload":{"position":{"x":14688.792295499397,"y":13264.350228985411},"targetPosition":{"x":14378.665138402355,"y":12538.284209229136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f3c0863c-ac0c-4fc0-b9ee-5f0f2bd722ea","savedPayload":{"position":{"x":14378.930041764983,"y":12538.276395026636},"targetPosition":{"x":13606.59207657629,"y":12362.027718520723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"One-Candle Patterns","id":"14f83391-e4a6-470c-90c0-19763f83429b"}}},{"type":"Product Definition","name":"Two-Candles Patterns","code":"{\n \"codeName\": \"Two-Candles-Patterns\",\n \"singularVariableName\": \"twoCandlePattern\",\n \"pluralVariableName\": \"twoCandlePatterns\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"8c35ce52-9dee-4d20-92e6-50ba7fd2882b","savedPayload":{"position":{"x":13990.38004900581,"y":12517.500992411471},"targetPosition":{"x":13577.071414529011,"y":12631.776049507755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"4f1260c8-6d74-454e-963a-fa3ff910329c","savedPayload":{"position":{"x":13978.133662362168,"y":12782.121569423156},"targetPosition":{"x":13577.071414529011,"y":12631.776049507755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"Two-Candles Patterns Records","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"61a74369-9fad-4af6-99d8-c6e4821d4750","savedPayload":{"position":{"x":14396.144605236186,"y":12930.93228274267},"targetPosition":{"x":14397.27005487563,"y":13039.477642927437},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d0948117-06a2-44e6-a9c6-eed01b943780","savedPayload":{"position":{"x":14397.27005487563,"y":13039.477642927437},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"73933242-2824-4a63-bb50-d6043c1796a0","savedPayload":{"position":{"x":14572.020070613304,"y":12979.84020445404},"targetPosition":{"x":14514.209088586304,"y":13072.050847780967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d5bcbb61-ab9d-4908-91c4-0bbbdade33c0","savedPayload":{"position":{"x":14514.209088586304,"y":13072.050847780967},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"name","code":"{ \n\"codeName\": \"name\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.name","id":"34cec9a0-7a4d-430c-a69e-b67150a8701d","savedPayload":{"position":{"x":14687.551547782925,"y":13119.168264882514},"targetPosition":{"x":14594.23084078616,"y":13162.999720041678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"c8a5978b-4038-4493-9c79-697d6508604f","savedPayload":{"position":{"x":14594.23084078616,"y":13162.999720041678},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trend","code":"{ \n\"codeName\": \"trend\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trend","id":"d5af582e-67e7-4bd4-80c8-561fb4b28f0b","savedPayload":{"position":{"x":14715.235926855486,"y":13295.608928345133},"targetPosition":{"x":14612.929085298943,"y":13282.255150744186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"ceed7f12-8a54-43bf-9bd0-c9297493d6a1","savedPayload":{"position":{"x":14612.929085298943,"y":13282.255150744186},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"forecast","code":"{ \n\"codeName\": \"forecast\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.forecast","id":"ce5d5a36-b9dd-404d-90c1-a6556cc15145","savedPayload":{"position":{"x":14642.841053098498,"y":13459.441183598585},"targetPosition":{"x":14564.04222961525,"y":13392.884859371936},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"0e22e091-4ace-44ab-b1c9-aa386e928299","savedPayload":{"position":{"x":14564.04222961525,"y":13392.884859371936},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bullishArrowHead","code":"{ \n\"codeName\": \"bullishArrowHead\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bullishArrowHead","id":"7095f60c-5b45-4f3c-b026-97c89a480135","savedPayload":{"position":{"x":14493.388098710042,"y":13558.13390390614},"targetPosition":{"x":14463.11708574021,"y":13459.528264028497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"228d8125-2609-45c6-9cc7-e644c017ee0e","savedPayload":{"position":{"x":14463.11708574021,"y":13459.528264028497},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bearishArrowHead","code":"{ \n\"codeName\": \"bearishArrowHead\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bearishArrowHead","id":"409212af-d4f2-4371-9cc2-4402e16c1889","savedPayload":{"position":{"x":14314.86052199146,"y":13560.351320346243},"targetPosition":{"x":14342.44913435762,"y":13461.021547511327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"fa50b0e1-d8df-4a16-91c9-361541808fbf","savedPayload":{"position":{"x":14342.44913435762,"y":13461.021547511327},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trendLine","code":"{ \n\"codeName\": \"trendLine\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trendLine","id":"7302e487-d514-4964-bdc3-9901ba318dea","savedPayload":{"position":{"x":14163.143697250125,"y":13465.386801343191},"targetPosition":{"x":14239.957236947837,"y":13396.86594323422},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"64444857-2818-42de-a4c1-69c4d2804ebf","savedPayload":{"position":{"x":14239.957236947837,"y":13396.86594323422},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"period","code":"{ \n\"codeName\": \"period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.period","id":"dfdef370-336e-4650-a441-4b65f7304047","savedPayload":{"position":{"x":14080.61005028047,"y":13304.371564081312},"targetPosition":{"x":14187.830358506526,"y":13287.532682305162},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6dafe978-a5df-4f5b-a7ae-d496b83bcc94","savedPayload":{"position":{"x":14187.830358506526,"y":13287.532682305162},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trendMethod","code":"{ \n\"codeName\": \"trendMethod\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trendMethod","id":"aea83576-35e1-4190-b284-faf3f696436b","savedPayload":{"position":{"x":14105.043167805037,"y":13123.373354539315},"targetPosition":{"x":14203.984680208447,"y":13167.178249831239},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"552e82f9-e5e6-4802-9cf2-d9a7bbbc5a22","savedPayload":{"position":{"x":14203.984680208447,"y":13167.178249831239},"targetPosition":{"x":14400.128677128949,"y":13254.391891487401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"17ec2118-b9df-415f-b5f3-120fb3b3155a","savedPayload":{"position":{"x":14400.128677128949,"y":13254.391891487401},"targetPosition":{"x":13577.071414529011,"y":12631.776049507755},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","name":"Two-Candles Patterns Code","code":"// -----------------------------------------------------------------------------------------------------------------------------\n// From here the variables that will be used during the definition of the patterns will be defined\n// -----------------------------------------------------------------------------------------------------------------------------\n\n /* In order to avoid errors, the initial condition of the output variables are defined */\nvariable.name = \"No Pattern\" // The name of the two-candle pattern, for panel visualization\nvariable.forecast = \"None\" // The forecast of the two-candle pattern, for panel visualization\nvariable.trend = \"None\" // The trend of the current pattern, for panel visualization\nvariable.trendLine = 1 // This record will be for pattern shapes visualization on the chart\nvariable.bearishArrowHead = 1 // This record will be for pattern shapes visualization on the chart\nvariable.bullishArrowHead = 1 // This record will be for pattern shapes visualization on the chart\nvariable.period = 0 // The period of the trend MA, for panel visualization\n \n/* \"Candles\", \"Basic Candles\" and \"One-Candle Patterns\" are dependencies */\nlet candle = record.current // Calling \"Candles\"\nlet basicCandle = getElement ('basicCandles', candle) // Calling \"Basic Candles\" product\nlet oneCandlePattern = getElement ('oneCandlePatterns', candle) // Calling \"One-Candle Patterns\" product\n\n/* Some properties of the previous candle are needed (max, min, open and close) */\nlet candle1Back = mainDependency.records[index - 1] \n\n/* In order to avoid \"undefined\" elements during calculations */\nif (basicCandle !== undefined && oneCandlePattern !== undefined && candle1Back !== undefined) { \n\n/*Another properties of the previous candle are needed (trend, span, name and direction)*/\nvariable.records1Back.push(oneCandlePattern.trend, basicCandle.size, basicCandle.name, basicCandle.direction)\nlet trend1Back = \"None\"\nlet size1Back = \"None\"\nlet name1Back = \"None\"\nlet direction1Back = \"None\"\nif (variable.records1Back[0] !== undefined) {\n trend1Back = variable.records1Back[0] // Taking first element of the array (index 0)\n}\nif (variable.records1Back[1] !== undefined) {\n size1Back = variable.records1Back[1] // Taking second element of the array (index 1)\n}\nif (variable.records1Back[2] !== undefined) {\n name1Back = variable.records1Back[2] // Taking third element of the array (index 2)\n}\nif (variable.records1Back[3] !== undefined) {\n direction1Back = variable.records1Back[3] // Taking fourth element of the array (index 3)\n}\nif (variable.records1Back.length === 8) { // Array with 8 elements, 4 currents and 4 from previous\n variable.records1Back.splice(0, 4) // Remove the first 4 elements of the array\n} \n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here patterns will be defined\n// ----------------------------------------------------------------------------------------------------------------------------\n\n/* Patterns will be grouped as follows:\n1) Bearish continuation --> These patterns indicates that the current downtrend could continue.\n2) Bearish Reversal --> These patterns indicates that the current uptrend could turn to downtrend.\n3) Bullish Continuation --> These patterns indicates that the current uptrend could continue.\n4) Bullish Reversal --> These patterns indicates that the current downtrend could turn to uptrend. */\n\n/* \"BEARISH CONTINUATION\" group:\nThese patterns should appear during a downtrend to be valid*/\nif (trend1Back === \"Downtrend\") {\n\n/* \"LAST ENGULFING BOTTOM\" properties:\nIt is important to know that this pattern has a \"Bearish Continuation\" or \"Bullish Reversal\" forecast, depending on the context.\n--First candle\n1) Can be any green basic candle, excluding Four-Price Doji.\n--Second candle\n1) Can be the following red basic candles: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Candle's body engulfs the prior candle's body.\n3) Average size: long. */\n\nif (direction1Back === \"Bullish\" && name1Back !== \"Four-Price Doji\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.name === \"Red Candle\" || basicCandle.name === \"Long Red Candle\" || basicCandle.name === \"Red Marubozu\" || basicCandle.name === \"Opening Red Marubozu\" || basicCandle.name === \"Closing Red Marubozu\") {\n if (candle1Back.close <= candle.open && candle1Back.open > candle.close) {\n variable.name = \"Last Engulfing Bottom\"\n variable.forecast = \"Depends On The Context\"\n }\n }\n }\n}\n\n} // Closing \"Bearish Continuation\" group\n\n//-------------------------------------------------------\n\n/* \"BEARISH REVERSAL\" group:\nThese patterns should appear during an uptrend to be valid */\nif (trend1Back === \"Uptrend\") {\n\n/* \"BEARISH ENGULFING\" properties:\n--First candle\n1) Can be any green basic candle, excluding Four-Price Doji.\n--Second candle\n1) Can be the following red basic candles: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Candle's body engulfs the prior candle's body.\n3) Average size: long. */\n\nif (direction1Back === \"Bullish\" && name1Back !== \"Four-Price Doji\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.name === \"Red Candle\" || basicCandle.name === \"Long Red Candle\" || basicCandle.name === \"Red Marubozu\" || basicCandle.name === \"Opening Red Marubozu\" || basicCandle.name === \"Closing Red Marubozu\") {\n if (candle1Back.close <= candle.open && candle1Back.open > candle.close) {\n variable.name = \"Bearish Engulfing\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n/* \"BEARISH HARAMI\" properties:\n--First candle\n1) Can be the following green basic candles: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Average size: Long.\n--Second candle\n1) Can be any red basic candle, excluding Four-Price Doji.\n2) Candle's body engulfed by the previous candle's body. */\n\nif (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Green Marubozu\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\") {\n if (size1Back === \"Long\") {\n if (basicCandle.direction === \"Bearish\" && basicCandle.name !== \"Four-Price Doji\") {\n if (candle1Back.close >= candle.open && candle1Back.open < candle.close) {\n variable.name = \"Bearish Harami\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n/* \"BEARISH HARAMI CROSS\" properties:\n--First candle\n1) Can be the following green basic candles: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Average size: Long.\n--Second candle\n1) Should be a Classic Doji.\n2) Candle's body (including shadows) engulfed by the prior candle's body. */\n\nif (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Green Marubozu\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\") {\n if (size1Back === \"Long\") {\n if (basicCandle.name === \"Classic Doji\") {\n if (candle1Back.close >= candle.max && candle1Back.open <= candle.min) {\n variable.name = \"Bearish Harami Cross\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n/* \"BEARISH TASUKI LINE\" properties:\n--First candle\n1) Bullish candle.\n2) Average size: Long.\n--Second candle\n1) Bearish candle.\n2) Opening price below or equal to the previous closing price.\n3) Closing price below the previous opening price.\n4) Average size: Long. */\n\nif (direction1Back === \"Bullish\" && size1Back === \"Long\") {\n if (basicCandle.direction === \"Bearish\" && basicCandle.size === \"Long\") {\n if (candle.open <= candle1Back.close && candle.close < candle1Back.open) {\n variable.name = \"Bearish Tasuki Line\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n}\n\n/* \"DESCENDING HAWK\" properties:\n--First candle\n1) Can be the following green basic candles: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Average size: Long.\n--Second candle\n1) Can be the following green basic candles: Short Green Candle, Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Candle's body engulfed by the prior candle's body. */\n\nif (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Green Marubozu\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\") {\n if (size1Back === \"Long\") {\n if (basicCandle.name === \"Short Green Candle\" || basicCandle.name === \"Green Candle\" || basicCandle.name === \"Long Green Candle\" || basicCandle.name === \"Green Marubozu\" || basicCandle.name === \"Opening Green Marubozu\" || basicCandle.name === \"Closing Green Marubozu\") {\n if (candle1Back.close >= candle.close && candle1Back.open < candle.open) {\n variable.name = \"Descending Hawk\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n/* \"TWEEZERS TOP\" properties:\n--First candle\n1) Any candle except the Four-Price Doji.\n2) Could be \"Bullish\" or \"Bearish\" candle.\n--Second candle\n1) Any candle except the Four-Price Doji.\n2) Could be \"Bullish\" or \"Bearish\" candle.\n3) High price equal to the previous high price. */\n\nif (candle1Back.name !== \"Four-Price Doji\" && basicCandle.name !== \"Four-Price Doji\" && candle.max === candle1Back.max) {\n variable.name = \"Tweezers Top\"\n variable.forecast = \"Bearish Reversal\"\n}\n\n/* \"TWO-CANDLE SHOOTING STAR\" properties:\n--First candle\n1) Can be the following green basic candles: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Average size: Long.\n--Second candle\n1) Can be the following basic candles: Red Spinning Top, Green Spinning Top, High Wave. \n2) No lower shadow or the shadow cannot be longer than then body.\n3) Upper shadow at least 2.5 times longer than the body.\n4) The open above or at the level of the previous candle’s close. */\n\nif (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Green Marubozu\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\") {\n if (size1Back === \"Long\") {\n if (basicCandle.name === \"Red Spinning Top\" || basicCandle.name === \"Green Spinning Top\" || basicCandle.name === \"High Wave\") {\n if (basicCandle.lowerShadow <= basicCandle.body && basicCandle.upperShadow >= basicCandle.body*2.5 && candle.open >= candle1Back.close) {\n variable.name = \"Two-Candle Shooting Star\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n} // Closing \"Bearish Reversal\" group\n\n//-------------------------------------------------------\n\n/* \"BULLISH CONTINUATION\" group:\nThese patterns should appear during an uptrend to be valid */\nif (trend1Back === \"Uptrend\") {\n\n/* \"LAST ENGULFING TOP\" properties:\nIt is important to know that this pattern has a \"Bearish Continuation\" or \"Bullish Reversal\" forecast, depending on the context.\n--First candle\n1) Bearish candle, excluding \"Four-Price Doji\".\n--Second candle\n1) Can be the following green basic candles: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Candle's body engulfs the prior candle's body. \n3) Average size: Long. */\n\nif (direction1Back === \"Bearish\" && name1Back !== \"Four-Price Doji\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.name === \"Green Candle\" || basicCandle.name === \"Long Green Candle\" || basicCandle.name === \"Green Marubozu\" || basicCandle.name === \"Opening Green Marubozu\" || basicCandle.name === \"Closing Green Marubozu\") {\n if (candle1Back.close >= candle.open && candle1Back.open < candle.close) { \n variable.name = \"Last Engulfing Top\"\n variable.forecast = \"Depends On The Context\"\n }\n }\n }\n}\n\n} // Closing \"Bullish Continuation\" group\n \n//-------------------------------------------------------\n\n/* \"BULLISH REVERSAL\" group:\nThese patterns should appear during a downtrend*/\nif (trend1Back === \"Downtrend\") {\n\n/* \"BULLISH ENGULFING\" properties:\n--First candle\n1) Bearish candle, excluding \"Four-Price Doji\".\n--Second candle\n1) Can be the following green basic candles: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Candle's body engulfs the prior candle's body. \n3) Average size: Long. */\n\nif (direction1Back === \"Bearish\" && name1Back !== \"Four-Price Doji\") {\n if (basicCandle.size === \"Long\") {\n if (basicCandle.name === \"Green Candle\" || basicCandle.name === \"Long Green Candle\" || basicCandle.name === \"Green Marubozu\" || basicCandle.name === \"Opening Green Marubozu\" || basicCandle.name === \"Closing Green Marubozu\") {\n if (candle1Back.close >= candle.open && candle1Back.open < candle.close) { \n variable.name = \"Bullish Engulfing\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n }\n}\n\n/* \"BULLISH HARAMI\" properties:\n--First candle\n1) Can be the following red basic candles: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Average size: Long.\n--Second candle\n1) Can be any green basic candle, excluding Four-Price Doji.\n2) Candle's body engulfed by the prior candle's body. */\n\nif (name1Back === \"Red Candle\" || name1Back === \"Long Red Candle\" || name1Back === \"Red Marubozu\" || name1Back === \"Opening Red Marubozu\" || name1Back === \"Closing Red Marubozu\") {\n if (size1Back === \"Long\") {\n if (basicCandle.direction === \"Bullish\" && basicCandle.name !== \"Four-Price Doji\") {\n if (candle1Back.close <= candle.open && candle1Back.open > candle.close) {\n variable.name = \"Bullish Harami\"\n variable.forecast = \"Bulliish Reversal\"\n }\n }\n }\n}\n\n/* \"BULLISH HARAMI CROSS\" properties:\n--First candle\n1) Can be the following red basic candles: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Average size: Long.\n--Second candle\n1) Should be a Classic Doji.\n2) Candle's body (including shadows) engulfed by the prior candle's body. */\n\nif (name1Back === \"Red Candle\" || name1Back === \"Long Red Candle\" || name1Back === \"Red Marubozu\" || name1Back === \"Opening Red Marubozu\" || name1Back === \"Closing Red Marubozu\") {\n if (size1Back === \"Long\") {\n if (basicCandle.name === \"Classic Doji\") {\n if (candle1Back.open >= candle.max && candle1Back.close <= candle.min) {\n variable.name = \"Bullish Harami Cross\"\n variable.forecast = \"Bulliish Reversal\"\n }\n }\n }\n}\n\n/* \"BULLISH TASUKI LINE\" properties:\n--First candle\n1) Bearish candle.\n2) Average size: Long.\n--Second candle\n1) Bullish candle.\n2) Opening price above or equal to the previous closing price\n3) Closing price above the previous opening price\n4) Average size: Long. */\n\nif (direction1Back === \"Bearish\" && size1Back === \"Long\") {\n if (basicCandle.direction === \"Bullish\" && basicCandle.size === \"Long\") {\n if (candle.open >= candle1Back.close && candle.close > candle1Back.open) {\n variable.name = \"Bullish Tasuki Line\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n}\n\n/* \"TWEEZERS BOTTOM\" properties:\n--First candle\n1) Any candle except the Four-Price Doji.\n2) Could be \"Bullish\" or \"Bearish\" candle.\n--Second candle\n1) Any candle except the Four-Price Doji.\n2) Could be \"Bullish\" or \"Bearish\" candle.\n3) Low price equal to the previous low price. */\n\nif (candle1Back.name !== \"Four-Price Doji\" && basicCandle.name !== \"Four-Price Doji\" && candle.min === candle1Back.min) {\n variable.name = \"Tweezers Bottom\"\n variable.forecast = \"Bullish Reversal\"\n}\n\n} // Closing \"Bullish Reversal\" group\n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here all the variables that will be written in the records are defined \n// ----------------------------------------------------------------------------------------------------------------------------\n\nvariable.trend = trend1Back\nvariable.trendLine = oneCandlePattern.trendLine\nvariable.period = oneCandlePattern.period\nvariable.trendMethod = oneCandlePattern.trendMethod\nvariable.bearishArrowHead = candle.max*1.02 \nvariable.bullishArrowHead = candle.min*0.98\n\n} // Closing initial \"undefined\" avoid\n","id":"0df41d0a-e490-427e-a355-9043e81eb3c1","savedPayload":{"position":{"x":13754.224188597855,"y":13439.902895441395},"targetPosition":{"x":13656.103319071339,"y":13249.373117972671},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"36593fb7-a9ab-4e3f-95ff-9c291e0f96f6","savedPayload":{"position":{"x":13656.103319071339,"y":13249.373117972671},"targetPosition":{"x":13557.80099157917,"y":13059.155699348652},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"/* Because this pattern has two candles, the properties of the previous candle are needed. */\nvariable.records1Back = [ ] // The properties will be record in this array","id":"36e0e453-9058-45de-bcff-bc1e17fe7aa8","savedPayload":{"position":{"x":13326.665381411352,"y":13420.6780298007},"targetPosition":{"x":13442.245658748729,"y":13239.81874221474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a939b7f6-400d-483f-9017-676c53451613","savedPayload":{"position":{"x":13442.245658748729,"y":13239.81874221474},"targetPosition":{"x":13557.80099157917,"y":13059.155699348652},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"896e9b4a-04e0-497d-be61-af2c96bb9d86","savedPayload":{"position":{"x":13557.80099157917,"y":13059.155699348652},"targetPosition":{"x":13577.071414529011,"y":12631.776049507755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"29283392-6a01-4acd-8f41-328e92281980","savedPayload":{"position":{"x":14225.911226592276,"y":12855.945034777027},"targetPosition":{"x":13606.59207657629,"y":12362.027718520723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Two-Candles Patterns","id":"3bf46641-3478-41fd-8407-0af20e72f30b"}}},{"type":"Product Definition","name":"Three-Candles Patterns","code":"{\n \"codeName\": \"Three-Candles-Patterns\",\n \"singularVariableName\": \"threeCandlePattern\",\n \"pluralVariableName\": \"threeCandlePatterns\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"087fc67e-78f9-4204-ba5e-8b670566a716","savedPayload":{"position":{"x":13849.871604695945,"y":12827.293777411433},"targetPosition":{"x":13427.889262586501,"y":12750.836137278113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"b60cb94f-79c5-410c-b166-abc97d0f2bc3","savedPayload":{"position":{"x":13724.11718972927,"y":13060.811076982278},"targetPosition":{"x":13427.889262586501,"y":12750.836137278113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"Three-Candles Patterns Records","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.begin","id":"1c316dcb-6d17-4108-ac41-f2d059685e5e","savedPayload":{"position":{"x":13711.238306530115,"y":12920.658171649195},"targetPosition":{"x":13644.948543022758,"y":13068.723520078449},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8328e683-8704-4b65-a774-63da0346e252","savedPayload":{"position":{"x":13644.948543022758,"y":13068.723520078449},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"db0992c2-3fd6-4eb9-bbe9-40dad5ae53f6","savedPayload":{"position":{"x":13948.582537330978,"y":13116.174731794308},"targetPosition":{"x":13813.151539554317,"y":13201.972933230269},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fbef0b72-edde-4678-aca5-f405068271b3","savedPayload":{"position":{"x":13813.151539554317,"y":13201.972933230269},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"name","code":"{ \n\"codeName\": \"name\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.name","id":"c397cffb-3ba1-435b-af0b-e920b319b23b","savedPayload":{"position":{"x":13966.973813754968,"y":13393.072203548825},"targetPosition":{"x":13864.707294117426,"y":13392.478752055717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"2f7591d7-6877-4fde-aafb-1b9580f6ad60","savedPayload":{"position":{"x":13864.707294117426,"y":13392.478752055717},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trend","code":"{ \n\"codeName\": \"trend\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trend","id":"ea48eb6b-63a3-444c-abd2-166097bb50c5","savedPayload":{"position":{"x":13891.677257473519,"y":13636.710911863762},"targetPosition":{"x":13806.927759912025,"y":13581.451438251337},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"162b594a-c0a4-45c0-a52c-45682978d00a","savedPayload":{"position":{"x":13806.927759912025,"y":13581.451438251337},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"forecast","code":"{ \n\"codeName\": \"forecast\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.forecast","id":"fd07c697-966a-4a3c-a123-61198f194538","savedPayload":{"position":{"x":13698.461434968936,"y":13800.839962044862},"targetPosition":{"x":13656.986895067497,"y":13708.263944451232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"c1afb085-e6cd-4c27-af62-6765cb270c1d","savedPayload":{"position":{"x":13656.986895067497,"y":13708.263944451232},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bullishArrowHead","code":"{ \n\"codeName\": \"bullishArrowHead\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bullishArrowHead","id":"dd019f19-f96a-4e88-a2e1-0159ba87fbe3","savedPayload":{"position":{"x":13444.092360755101,"y":13835.639457658825},"targetPosition":{"x":13460.938946120285,"y":13734.520497296007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"7059a7a5-021b-4277-80b9-8ef4c5387736","savedPayload":{"position":{"x":13460.938946120285,"y":13734.520497296007},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"bearishArrowHead","code":"{ \n\"codeName\": \"bearishArrowHead\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.bearishArrowHead","id":"bc455c93-3c64-4cf4-ab94-0116da22c404","savedPayload":{"position":{"x":13215.851726337816,"y":13726.980994488415},"targetPosition":{"x":13281.961445417463,"y":13650.232814784054},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"ec8749b1-4f5f-4163-b079-3dd9bec6eefa","savedPayload":{"position":{"x":13281.961445417463,"y":13650.232814784054},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trendLine","code":"{ \n\"codeName\": \"trendLine\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trendLine","id":"54625f1a-aa6f-44a6-bf2e-bcf1f5210674","savedPayload":{"position":{"x":13080.373564613936,"y":13512.507791593513},"targetPosition":{"x":13177.690028495439,"y":13484.984819448468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"id":"7a781a34-4af5-4eb1-b237-1746ea2e69d0","savedPayload":{"position":{"x":13177.690028495439,"y":13484.984819448468},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"period","code":"{ \n\"codeName\": \"period\",\n\"isString\": false,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.period","id":"fd68bb74-c7f3-48ff-941c-121031aaf6a1","savedPayload":{"position":{"x":13033.546225688598,"y":13233.68488038103},"targetPosition":{"x":13187.023177611489,"y":13282.410877240069},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b738ac34-a6eb-41c3-9871-0fc1732be676","savedPayload":{"position":{"x":13187.023177611489,"y":13282.410877240069},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"trendMethod","code":"{ \n\"codeName\": \"trendMethod\",\n\"isString\": true,\n\"isCalculated\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.trendMethod","id":"65ed19cf-524e-4ccd-94df-c60c9b41c40a","savedPayload":{"position":{"x":13179.147447450905,"y":13000.271711780137},"targetPosition":{"x":13285.105306373436,"y":13122.105896094334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"32ff1b3e-acb0-4961-82b9-1dd37a795c41","savedPayload":{"position":{"x":13285.105306373436,"y":13122.105896094334},"targetPosition":{"x":13514.21321900549,"y":13388.128596454624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8a01e390-aea9-494b-a002-9c7498f23189","savedPayload":{"position":{"x":13514.160444418765,"y":13388.07052073227},"targetPosition":{"x":13427.889262586501,"y":12750.836137278113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","name":"Three-Candles Patterns Code","code":"// -----------------------------------------------------------------------------------------------------------------------------\n// From here the variables that will be used during the definition of the patterns will be defined\n// -----------------------------------------------------------------------------------------------------------------------------\n\n /* In order to avoid errors, the initial condition of the output variables are defined */\nvariable.name = \"No Pattern\" // The name of the pattern, for panel visualization\nvariable.forecast = \"None\" // The forecast of the pattern, for panel visualization\nvariable.trend = \"None\" // The trend of the current pattern, for panel visualization\nvariable.trendLine = 1 // This record will be for pattern shapes visualization on the chart\nvariable.bearishArrowHead = 1 // This record will be for pattern shapes visualization on the chart\nvariable.bullishArrowHead = 1 // This record will be for pattern shapes visualization on the chart\nvariable.period = 0 // The period of the trend MA, for panel visualization\n\n/* \"Candles\", \"Basic Candles\" and \"One-Candle Patterns\" are dependencies */\nlet candle = record.current // Calling \"Candles\" records\nlet basicCandle = getElement ('basicCandles', candle) // Calling \"Basic Candles\" records\nlet oneCandlePattern = getElement ('oneCandlePatterns', candle) // Calling \"One-Candle Patterns\" records\n\n/* Some properties of the previous 2 candles are needed (max, min, open and close) */\nlet candle1Back = mainDependency.records[index - 1] \nlet candle2Back = mainDependency.records[index - 2] \n\n/* To avoid \"undefined\" elements during calculations, the following if() condition will include all the entire code */\nif (basicCandle !== undefined && oneCandlePattern !== undefined && candle1Back !== undefined && candle2Back !== undefined) { \n\n/*To define patterns, another properties of the 2 previous candles are needed (trend, size, name and direction)*/\nvariable.recordsBack.push(oneCandlePattern.trend, basicCandle.size, basicCandle.name, basicCandle.direction)\nlet trend1Back = \"None\"\nlet size1Back = \"None\"\nlet name1Back = \"None\"\nlet direction1Back = \"None\"\nlet trend2Back = \"None\"\nlet size2Back = \"None\"\nlet name2Back = \"None\"\nlet direction2Back = \"None\"\n\nif (variable.recordsBack[0] !== undefined) {\n trend2Back = variable.recordsBack[0] // Taking first element of the array (index 0)\n}\nif (variable.recordsBack[1] !== undefined) {\n size2Back = variable.recordsBack[1] // Taking second element of the array (index 1)\n}\nif (variable.recordsBack[2] !== undefined) {\n name2Back = variable.recordsBack[2] // Taking third element of the array (index 2)\n}\nif (variable.recordsBack[3] !== undefined) {\n direction2Back = variable.recordsBack[3] // Taking fourth element of the array (index 3)\n}\nif (variable.recordsBack[0] !== undefined) {\n trend1Back = variable.recordsBack[4] // Taking fifth element of the array (index 4)\n}\nif (variable.recordsBack[1] !== undefined) {\n size1Back = variable.recordsBack[5] // Taking sixth element of the array (index 5)\n}\nif (variable.recordsBack[2] !== undefined) {\n name1Back = variable.recordsBack[6] // Taking seventh element of the array (index 6)\n}\nif (variable.recordsBack[3] !== undefined) {\n direction1Back = variable.recordsBack[7] // Taking eigthth element of the array (index 7)\n}\nif (variable.recordsBack.length === 12) { // Array with 12 elements, 4 currents, 4 from 1 previous and 4 from 2 previous \n variable.recordsBack.splice(0, 4) // Remove the first 4 elements of the array\n} \n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here patterns will be defined\n// ----------------------------------------------------------------------------------------------------------------------------\n\n/* Patterns will be grouped as follows:\n1) Bearish continuation --> These patterns indicates that the current downtrend could continue.\n2) Bearish Reversal --> These patterns indicates that the current uptrend could turn to downtrend.\n3) Bullish Continuation --> These patterns indicates that the current uptrend could continue.\n4) Bullish Reversal --> These patterns indicates that the current downtrend could turn to uptrend. */\n\n/* \"BEARISH CONTINUATION\" group:\nThese patterns should appear during a downtrend to be valid*/\nif (trend2Back === \"Downtrend\") {\n\n} // Closing \"Bearish Continuation\" group\n\n//-------------------------------------------------------\n\n/* \"BEARISH REVERSAL\" group:\nThese patterns should appear during an uptrend to be valid */\nif (trend2Back === \"Uptrend\") {\n\n/* \"ADVANCE BLOCK\" properties:\n--First candle\n1) Any following bullish basic candle: Green Candle, Long Green Candle, Opening Green Marubozu, Closing Green Marubozu or Green Marubozu.\n2) Average size: Long.\n--Second candle\n1) Bullish.\n2) Body shortet than the previous candle.\n3) Shadows longer than the first candle.\n--Third Candle \n1) Bullish.\n2) Body shortet than the previous candle.\n3) Shadows longer than the first candle. */\n\nif (name2Back === \"Green Candle\" || name2Back === \"Long Green Candle\" || name2Back === \"Opening Green Marubozu\" || name2Back === \"Closing Green Marubozu\" || name2Back === \"Green Marubozu\") {\n if (size2Back === \"Long\") {\n if (direction1Back === \"Bullish\" && (candle1Back.close - candle1Back.open) < (candle2Back.close - candle2Back.open) ) {\n if (basicCandle.direction === \"Bullish\" && (candle.close-candle.open) < (candle1Back.close - candle1Back.open) ) {\n variable.name = \"Advance Block\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n/* \"DELIBERATION\" properties:\n--First candle\n1) Any following bullish basic candle: Green Candle, Long Green Candle, Opening Green Marubozu, Closing Green Marubozu or Green Marubozu.\n--Second candle\n1) Any following bullish basic candle: Green Candle, Long Green Candle, Opening Green Marubozu, Closing Green Marubozu or Green Marubozu.\n2) Opening price is above the previous opening price.\n3) Closing price is above the previous closing price.\n--Third Candle \n1) Any following bullish basic candle: Short Green Candle or Green Spinning Top.\n2) Opening price is slightly lower or higher than the previous closing price.\n3) Closing price is above the previous closing price.\n4) Average size: Short. */\n\nif (name2Back === \"Green Candle\" || name2Back === \"Long Green Candle\" || name2Back === \"Opening Green Marubozu\" || name2Back === \"Closing Green Marubozu\" || name2Back === \"Green Marubozu\") {\n if (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\" || name1Back === \"Green Marubozu\") {\n if (candle1Back.open > candle2Back.open && candle1Back.close > candle2Back.close) {\n if (basicCandle.name === \"Short Green Candle\" || basicCandle.name === \"Green Spinning Top\") { \n if (basicCandle.size === \"Short\" && candle.close > candle1Back.close) {\n variable.name = \"Deliberation\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n }\n}\n\n/* \"IDENTICAL THREE CROWS\" properties:\n--First candle\n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Average size: Long.\n--Second candle\n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Average size: Long. \n3) Opening price at or near the prior close.\n--Third Candle\n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Average size: Long. \n3) Opening price at or near the prior close.*/\n\nif (name2Back === \"Red Candle\" || name2Back === \"Long Red Candle\" || name2Back === \"Red Marubozu\" || name2Back === \"Opening Red Marubozu\" || name2Back === \"Closing Red Marubozu\") {\n if (name1Back === \"Red Candle\" || name1Back === \"Long Red Candle\" || name1Back === \"Red Marubozu\" || name1Back === \"Opening Red Marubozu\" || name1Back === \"Closing Red Marubozu\") {\n if (basicCandle.name === \"Red Candle\" || basicCandle.name === \"Long Red Candle\" || basicCandle.name === \"Red Marubozu\" || basicCandle.name === \"Opening Red Marubozu\" || basicCandle.name === \"Closing Red Marubozu\") {\n if (size2Back === \"Long\" && size1Back === \"Long\" && basicCandle.size === \"Long\") {\n variable.name = \"Identical Three Crows\"\n variable.forecast = \"Bulliish Reversal\"\n }\n }\n }\n}\n\n/* \"THREE INSIDE DOWN\" properties:\n1) Any following bullish basic candle: Green Candle, Long Green Candle, Opening Green Marubozu, Closing Green Marubozu or Green Marubozu.\n2) Average size: Long.\n--Second candle\n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu or Red Spinning Top.\n2) Candle body is engulfed by the prior candle body.\n--Third Candle \n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu or Red Spinning Top.\n2) Closing price is below the previous closing price. */\n\nif (name2Back === \"Green Candle\" || name2Back === \"Long Green Candle\" || name2Back === \"Opening Green Marubozu\" || name2Back === \"Closing Green Marubozu\" || name2Back === \"Green Marubozu\") {\n if (size2Back === \"Long\") {\n if (name1Back === \"Red Candle\" || name1Back === \"Long Red Candle\" || name1Back === \"Red Marubozu\" || name1Back === \"Opening Red Marubozu\" || name1Back === \"Closing Red Marubozu\" || name1Back === \"Red Spinning Top\") {\n if (candle1Back.close > candle2Back.open) {\n if (basicCandle.name === \"Red Candle\" || basicCandle.name === \"Long Red Candle\" || basicCandle.name === \"Red Marubozu\" || basicCandle.name === \"Opening Red Marubozu\" || basicCandle.name === \"Closing Red Marubozu\" || basicCandle.name === \"Red Spinning Top\") {\n variable.name = \"Three Inside Down\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n }\n}\n\n/* \"THREE OUTSIDE DOWN\" properties:\n1) Any bullish basic candle except \"Four-Price Doji\".\n--Second candle\n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Candle's body engulfs the prior candle's body. \n3) Average size: Long.\n--Third Candle \n1) Any bearish basic candle except \"Four-Price Doji\".\n2) Closing price is below the previous closing price. */ \n\nif (direction2Back === \"Bullish\" && name2Back !== \"Four-Price Doji\") {\n if (name1Back === \"Red Candle\" || name1Back === \"Long Red Candle\" || name1Back === \"Red Marubozu\" || name1Back === \"Opening Red Marubozu\" || name1Back === \"Closing Red Marubozu\") {\n if (candle1Back.close < candle2Back.open && size1Back === \"Long\") {\n if (basicCandle.direction === \"Bearish\" && basicCandle.name !== \"Four-Price Doji\") {\n variable.name = \"Three Outside Down\"\n variable.forecast = \"Bearish Reversal\"\n }\n }\n }\n}\n\n} // Closing \"Bearish Reversal\" group\n\n//-------------------------------------------------------\n\n/* \"BULLISH CONTINUATION\" group:\nThese patterns should appear during an uptrend to be valid */\nif (trend2Back === \"Uptrend\") {\n\n\n\n} // Closing \"Bullish Continuation\" group\n \n//-------------------------------------------------------\n\n/* \"BULLISH REVERSAL\" group:\nThese patterns should appear during a downtrend*/\nif (trend2Back === \"Downtrend\") {\n\n/* \"THREE INSIDE UP\" properties:\n1) Any following bearish basic candle: Red Candle, Long Red Candle, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu.\n2) Average size: Long.\n--Second candle\n1) Any following bullish basic candle: Green Candle, Long Green Candle, Opening Green Marubozu, Closing Green Marubozu, Green Marubozu or Green Spinning Top.\n2) Candle body is engulfed by the prior candle body.\n--Third Candle \n1) Any following bullish basic candle: Green Candle, Long Green Candle, Opening Green Marubozu, Closing Green Marubozu, Green Marubozu or Green Spinning Top.\n2) Closing price is above the previous closing price. */\n\nif (name2Back === \"Red Candle\" || name2Back === \"Long Red Candle\" || name2Back === \"Opening Red Marubozu\" || name2Back === \"Closing Red Marubozu\" || name2Back === \"Red Marubozu\") {\n if (size2Back === \"Long\") {\n if (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Green Marubozu\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\" || name1Back === \"Green Spinning Top\") {\n if (candle1Back.close < candle2Back.open) {\n if (basicCandle.name === \"Green Candle\" || basicCandle.name === \"Long Green Candle\" || basicCandle.name === \"Green Marubozu\" || basicCandle.name === \"Opening Green Marubozu\" || basicCandle.name === \"Closing Green Marubozu\" || basicCandle.name === \"Green Spinning Top\") {\n variable.name = \"Three Inside Up\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n }\n }\n}\n\n/* \"THREE OUTSIDE UP\" properties:\n1) Any bearish basic candle except \"Four-Price Doji\".\n--Second candle\n1) Any following bearish basic candle: Green Candle, Long Green Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu.\n2) Candle's body engulfs the prior candle's body. \n3) Average size: Long.\n--Third Candle \n1) Any bullish basic candle except \"Four-Price Doji\".\n2) Closing price is above the previous closing price. */ \n\nif (direction2Back === \"Bearish\" && name2Back !== \"Four-Price Doji\") {\n if (name1Back === \"Green Candle\" || name1Back === \"Long Green Candle\" || name1Back === \"Green Marubozu\" || name1Back === \"Opening Green Marubozu\" || name1Back === \"Closing Green Marubozu\") {\n if (candle1Back.close > candle2Back.open && size1Back === \"Long\") {\n if (basicCandle.direction === \"Bullish\" && basicCandle.name !== \"Four-Price Doji\") {\n variable.name = \"Three Outside Up\"\n variable.forecast = \"Bullish Reversal\"\n }\n }\n }\n}\n\n} // Closing \"Bullish Reversal\" group\n\n// ----------------------------------------------------------------------------------------------------------------------------\n// From here all the variables that will be written in the records are defined \n// ----------------------------------------------------------------------------------------------------------------------------\n\nvariable.trend = trend2Back\nvariable.trendLine = oneCandlePattern.trendLine\nvariable.period = oneCandlePattern.period\nvariable.trendMethod = oneCandlePattern.trendMethod\nvariable.bearishArrowHead = candle.max*1.02\nvariable.bullishArrowHead = candle.min*0.98 \n\n} // Closing initial \"undefined\" avoid","id":"e4b8fa10-e9de-48b2-871b-fd5bc2be8544","savedPayload":{"position":{"x":13142.912800841958,"y":13958.22738315719},"targetPosition":{"x":13133.406897710382,"y":13636.959376914901},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a3ca00b1-8cb7-40f0-9d46-e86bcae26607","savedPayload":{"position":{"x":13133.406897710382,"y":13636.959376914901},"targetPosition":{"x":13123.908174017677,"y":13315.777079336249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"/* Because of these patterns have three candles, the properties of the previous 2 candles are needed. */\nvariable.recordsBack = [ ] // The properties will be recorded in this array","id":"69da8b87-1e7f-45f4-bd47-9a9b0a2057e0","savedPayload":{"position":{"x":12577.05122235381,"y":13653.728456911864},"targetPosition":{"x":12850.45315023664,"y":13484.773677918183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"20684141-89f4-4049-8130-5219f9934b94","savedPayload":{"position":{"x":12850.45315023664,"y":13484.773677918183},"targetPosition":{"x":13123.908174017677,"y":13315.777079336249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1193e656-0fce-4d39-8f46-316d51a8bb95","savedPayload":{"position":{"x":13123.908174017677,"y":13315.777079336249},"targetPosition":{"x":13427.889262586501,"y":12750.836137278113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1b6f79d8-d1ba-49e5-a808-42f71fba5657","savedPayload":{"position":{"x":13950.1700806815,"y":13075.792399298009},"targetPosition":{"x":13606.59207657629,"y":12362.027718520723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Three-Candles Patterns","id":"acdb9c43-0859-42be-87b0-1a600cf513d4"}}}],"id":"254b4e7d-0ede-4208-8f0a-a486dd1a0faf","savedPayload":{"position":{"x":13606.59207657629,"y":12362.027718520723},"targetPosition":{"x":12813.422748313864,"y":12362.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"tradingBots":[],"plotters":[{"type":"Plotter","name":"Candle Patterns","code":"{\n\"codeName\": \"Candle-Patterns\"\n}","modules":[{"type":"Plotter Module","name":"Basic Candles","code":"{ \n\"codeName\": \"Basic-Candles\"\n}","shapes":{"type":"Shapes","name":"Basic Candles","chartPoints":[{"type":"Chart Points","name":"Candle Min","points":[{"type":"Point","name":"Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)/2\ny = record.previous.min","id":"da43ce7b-c3af-49b7-a95c-025494c40a6e","savedPayload":{"position":{"x":13108.977936557767,"y":12188.383729155756},"targetPosition":{"x":12992.912224357988,"y":12465.951795130548},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"84c72ff6-fc9c-4869-bd8e-ea8404df0a0f","savedPayload":{"position":{"x":12992.912224357988,"y":12465.951795130548},"targetPosition":{"x":12874.382023295504,"y":12749.007888679644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.min","id":"ee2ef08b-7253-46c1-a087-49feaeae0bd9","savedPayload":{"position":{"x":13359.207789242111,"y":12380.215962023818},"targetPosition":{"x":13119.485580714008,"y":12562.33832997655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b077cf02-7c54-4023-9182-4de81327ff35","savedPayload":{"position":{"x":13119.485580714008,"y":12562.33832997655},"targetPosition":{"x":12874.382023295504,"y":12749.007888679644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2fe07cd8-53ed-4533-a747-05b3906b4755","savedPayload":{"position":{"x":12902.05239713271,"y":12933.635229601114},"targetPosition":{"x":12636.947299989895,"y":13276.879874685575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Mean Length","points":[{"type":"Point","name":"Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)/2\ny = record.previous.min + record.previous.meanLength","id":"c8b8a404-7746-458c-91a4-61d13114c824","savedPayload":{"position":{"x":13673.67750381596,"y":12508.224804263064},"targetPosition":{"x":13349.1040677911,"y":12795.400192005116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2b2ed3d9-a095-403e-8ed8-62f7e73e9f1c","savedPayload":{"position":{"x":13349.1040677911,"y":12795.400192005116},"targetPosition":{"x":13024.73065709388,"y":13082.971349162055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.min + record.meanLength","id":"372fd8b2-9346-4c0a-8465-cb4e2ece90bc","savedPayload":{"position":{"x":13874.48022293734,"y":12909.507347296605},"targetPosition":{"x":13449.660696018584,"y":12996.332616362892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"628ac9f1-445b-4638-8fd5-aa62f6fd859c","savedPayload":{"position":{"x":13449.660696018584,"y":12996.332616362892},"targetPosition":{"x":13024.73065709388,"y":13082.971349162055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"86515391-e909-4183-a0bb-2f6b6d452087","savedPayload":{"position":{"x":13025.021918291819,"y":13082.660247868029},"targetPosition":{"x":12636.947299989895,"y":13276.879874685575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"avgRef","points":[{"type":"Point","name":"Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)/2\ny = record.previous.min + record.previous.avgRef","id":"a231e15f-f884-4326-983c-001a812d2e08","savedPayload":{"position":{"x":13578.803437753708,"y":12816.49484688219},"targetPosition":{"x":13289.589120403027,"y":12897.623893279399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"41fec509-9af9-4ef7-b947-90382ad5ee5d","savedPayload":{"position":{"x":13289.589120403027,"y":12897.623893279399},"targetPosition":{"x":12990.869619180365,"y":12982.381124986036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.min + record.avgRef","id":"69d5c95c-ec98-4656-9057-54ab9fc64a1e","savedPayload":{"position":{"x":13588.803821069829,"y":13118.492608097265},"targetPosition":{"x":13289.456404283654,"y":13057.80208764004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9703549c-8ca6-4293-b4ec-83a4f899c806","savedPayload":{"position":{"x":13289.456404283654,"y":13057.80208764004},"targetPosition":{"x":12990.869619180365,"y":12982.381124986036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3fe2df6a-c2fe-4f66-8529-c959ba7dd010","savedPayload":{"position":{"x":13070.913458756182,"y":13270.299786173973},"targetPosition":{"x":12636.947299989895,"y":13276.879874685575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Candle Min","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 0.4,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"e19cb185-a1ae-4595-b22f-825aabca3f15","savedPayload":{"position":{"x":13898.021347587734,"y":13494.579614494232},"targetPosition":{"x":13464.696463105538,"y":13476.688840008886},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"0c47d43f-28d6-4e22-bcab-ce1a5ba86b13","savedPayload":{"position":{"x":13464.696463105538,"y":13476.688840008886},"targetPosition":{"x":13031.145557927823,"y":13459.07687683122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin","id":"aeb3daf8-939c-472d-a653-bb053b201626","savedPayload":{"position":{"x":13424.961913957333,"y":13641.327996042652},"targetPosition":{"x":13031.145557927823,"y":13459.07687683122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin","id":"84c72ff6-fc9c-4869-bd8e-ea8404df0a0f"}}},{"type":"Polygon Vertex","name":"End","id":"cf9cdbd9-6a4d-4958-906f-555616617a31","savedPayload":{"position":{"x":13340.7104577407,"y":13755.603986751803},"targetPosition":{"x":13031.145557927823,"y":13459.07687683122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End","id":"b077cf02-7c54-4023-9182-4de81327ff35"}}}],"id":"0e718fe1-b457-49b9-a1cd-118bd9f111f4","savedPayload":{"position":{"x":13031.145557927823,"y":13459.07687683122},"targetPosition":{"x":12636.947299989895,"y":13276.879874685575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Mean Length","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 0.4,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"51351071-cd12-48d6-aa76-8755bd6322b4","savedPayload":{"position":{"x":13665.695313969807,"y":14042.575803215057},"targetPosition":{"x":13283.077530411732,"y":13838.513756463306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"8487ed2a-b56a-4d41-895c-569bf127fedc","savedPayload":{"position":{"x":13283.077530411732,"y":13838.513756463306},"targetPosition":{"x":12915.71562588088,"y":13611.66361370111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin","id":"4db28f87-f9dd-4420-87bc-d210699f8a01","savedPayload":{"position":{"x":13191.347301384953,"y":13946.99420050665},"targetPosition":{"x":12915.71562588088,"y":13611.66361370111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin","id":"2b2ed3d9-a095-403e-8ed8-62f7e73e9f1c"}}},{"type":"Polygon Vertex","name":"End","id":"a4fa988d-7488-4bf4-90f9-2ee6fd939475","savedPayload":{"position":{"x":13064.240731414515,"y":14016.02494944438},"targetPosition":{"x":12915.71562588088,"y":13611.66361370111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End","id":"628ac9f1-445b-4638-8fd5-aa62f6fd859c"}}}],"id":"32840d7a-c3be-4c5c-8604-ddec41903a8e","savedPayload":{"position":{"x":12915.71562588088,"y":13611.66361370111},"targetPosition":{"x":12636.947299989895,"y":13276.879874685575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"avgRef","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 0.4,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n }\n}","id":"dc036a39-a0d7-43f5-ae0a-f49f80566f35","savedPayload":{"position":{"x":13229.33091362232,"y":14410.229144070205},"targetPosition":{"x":12973.163921033449,"y":14060.158090951238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"332c16f9-b95f-4a5d-a0a7-825adec7b190","savedPayload":{"position":{"x":12973.163921033449,"y":14060.158090951238},"targetPosition":{"x":12739.274799254119,"y":13699.009204216736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin","id":"6df63fd0-62c4-49d9-aa62-43e4ebb9e2a3","savedPayload":{"position":{"x":12841.775246025314,"y":14120.818786566584},"targetPosition":{"x":12739.274799254119,"y":13699.009204216736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin","id":"41fec509-9af9-4ef7-b947-90382ad5ee5d"}}},{"type":"Polygon Vertex","name":"End","id":"66870fcb-caf4-4e03-9db2-4f7fc0f8cae2","savedPayload":{"position":{"x":12673.03883864232,"y":14128.100137931784},"targetPosition":{"x":12739.274799254119,"y":13699.009204216736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End","id":"9703549c-8ca6-4293-b4ec-83a4f899c806"}}}],"id":"b504d259-c93f-4dfa-af0f-ffc23b3e616d","savedPayload":{"position":{"x":12739.274799254119,"y":13699.009204216736},"targetPosition":{"x":12636.947299989895,"y":13276.879874685575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dc146044-78b9-46c7-8e91-47619c333444","savedPayload":{"position":{"x":12636.947299989895,"y":13276.879874685575},"targetPosition":{"x":12212.72884485266,"y":13187.077894379872},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Basic Candles","code":"{ \n\"codeName\": \"Basic-Candles\"\n}","panelData":[{"type":"Panel Data","name":"Name","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.name","id":"b94b9d37-1552-4a01-b14b-4897feedd52f","savedPayload":{"position":{"x":12949.630260119242,"y":13182.414450702889},"targetPosition":{"x":12530.612237229694,"y":13296.48962114836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6c416dd7-5075-49cc-b404-52fcca7a314c","savedPayload":{"position":{"x":12530.612237229694,"y":13296.48962114836},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Size","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.size","id":"7ab67e86-30c4-4d4c-9048-156de658edaa","savedPayload":{"position":{"x":12816.817350046273,"y":13632.297181375847},"targetPosition":{"x":12409.260001385079,"y":13500.956335236164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"84776c6f-6b89-4889-a119-f407ad30a39b","savedPayload":{"position":{"x":12409.260001385079,"y":13500.956335236164},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Upper Shadow %","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.upperShadowPercent","id":"1515c038-a83d-4a33-803d-93f19df9d44f","savedPayload":{"position":{"x":12550.381326036735,"y":14037.469816083092},"targetPosition":{"x":12273.262806955621,"y":13704.12039771927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5bfcb212-425e-481c-93ee-4ddfe0365d04","savedPayload":{"position":{"x":12273.262806955621,"y":13704.12039771927},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Body %","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.bodyPercent","id":"13fb74c6-4320-4755-b896-e3c15b507a8c","savedPayload":{"position":{"x":12102.300757918912,"y":14231.879548647366},"targetPosition":{"x":12049.07457118533,"y":13801.358948162142},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4787fdfa-a1b4-4252-be30-1c394ae28d23","savedPayload":{"position":{"x":12049.07457118533,"y":13801.358948162142},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Lower Shadow %","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.lowerShadowPercent","id":"621a0736-7286-407f-be3c-7f9237c1c4e6","savedPayload":{"position":{"x":11620.425246523768,"y":14152.966743446337},"targetPosition":{"x":11808.091895536174,"y":13761.905791832762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"10570ba3-e68c-4aa0-83b9-daed46a61cee","savedPayload":{"position":{"x":11808.091895536174,"y":13761.905791832762},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Parameter: \"Nbodies\"","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.Nbodies","id":"1ae2288d-9479-410d-9243-21430691060b","savedPayload":{"position":{"x":11257.070102854932,"y":13825.7521669367},"targetPosition":{"x":11626.384453779205,"y":13598.27016763233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"34f62235-4353-4f23-8630-841fbee8665b","savedPayload":{"position":{"x":11626.384453779205,"y":13598.27016763233},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Parameter: \"dojiFactor\" %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.dojiFactor","id":"165f2a72-3eac-4740-8445-c9aa133e0ae4","savedPayload":{"position":{"x":11128.212021323285,"y":13354.727980753762},"targetPosition":{"x":11561.962833022772,"y":13362.694365750584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8fe17343-1ae4-4ba8-990a-bfe78872d998","savedPayload":{"position":{"x":11561.962833022772,"y":13362.694365750584},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Parameter: \"sizeFactor\" %","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeFactor","id":"6d9b3c35-1b25-46fb-8b16-ad551cf53493","savedPayload":{"position":{"x":11329.926819301452,"y":12915.28549485325},"targetPosition":{"x":11635.3026294884,"y":13129.436859171616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6c2bd7cb-ea2a-48fe-9328-6e7cf397abe5","savedPayload":{"position":{"x":11635.3026294884,"y":13129.436859171616},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Parameter: \"Nlengths\"","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.Nlengths","id":"42a0f840-7b6f-4e38-ac13-442a40767d70","savedPayload":{"position":{"x":11650.230180812932,"y":12575.088276018505},"targetPosition":{"x":11823.069688597921,"y":12972.80360620623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"26d5e8b8-22fc-40fc-bb28-c3d5272845d0","savedPayload":{"position":{"x":11823.069688597921,"y":12972.80360620623},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Average Size Method","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.sizeMethod","id":"867e57e7-6fc8-4e52-834d-f20f077f37fd","savedPayload":{"position":{"x":12100.695122814745,"y":12456.860795743183},"targetPosition":{"x":12031.325086366693,"y":12885.561054720325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"87d0bb1d-c8e2-47a6-85cc-4e747082305f","savedPayload":{"position":{"x":12031.325086366693,"y":12885.561054720325},"targetPosition":{"x":11995.91387719581,"y":13370.64016764527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7e6dc8b6-bdeb-4f1a-bf39-a239fa100200","savedPayload":{"position":{"x":11995.91387719581,"y":13370.64016764527},"targetPosition":{"x":12212.72884485266,"y":13187.077894379872},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"09e0a24c-ead1-40c6-9e43-72b46e4294c5","savedPayload":{"position":{"x":12212.801118375293,"y":13187.56026971265},"targetPosition":{"x":11944.774819498161,"y":12362.05365917036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"One-Candle Patterns","code":"{ \n\"codeName\": \"One-Candle-Patterns\"\n}","shapes":{"type":"Shapes","name":"One-Candle Pattern","chartPoints":[{"type":"Chart Points","name":"Bearish Arrow","points":[{"type":"Point","name":"-1-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)\ny = record.bearishArrowHead*1.01","id":"e175ab11-cdad-4cfa-bc0e-e9d68fd56419","savedPayload":{"position":{"x":12965.483055921071,"y":12868.64329873116},"targetPosition":{"x":12751.830573939056,"y":13103.9914215748},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f0e4b32d-4c67-44a9-b215-46dd2de99095","savedPayload":{"position":{"x":12751.830573939056,"y":13103.9914215748},"targetPosition":{"x":12325.132217733979,"y":13574.414781135878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-2-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bearishArrowHead*1.01","id":"ad0cc3d5-6a7a-45ac-b7db-41438836230c","savedPayload":{"position":{"x":13187.394324262874,"y":13167.773151426483},"targetPosition":{"x":12899.596747782605,"y":13303.156224936247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"23dc1c78-a55d-482c-be5b-f6893e5294c7","savedPayload":{"position":{"x":12899.596747782605,"y":13303.156224936247},"targetPosition":{"x":12325.132217733979,"y":13574.414781135878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-3-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bearishArrowHead*1.03","id":"16686f17-868b-406b-a3ab-f4e9dbc8a002","savedPayload":{"position":{"x":13278.11981347048,"y":13528.503138391638},"targetPosition":{"x":12960.259486967265,"y":13543.678389079925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2c9565a9-49d5-4f04-91ad-a073ff669a46","savedPayload":{"position":{"x":12960.259486967265,"y":13543.678389079925},"targetPosition":{"x":12325.132217733979,"y":13574.414781135878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-4-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bearishArrowHead*1.03","id":"1c6a13b5-d22c-4c2f-b692-a387651394ab","savedPayload":{"position":{"x":13222.739691656414,"y":13896.057843602894},"targetPosition":{"x":12923.159535456434,"y":13788.691205248766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fe68b37d-0bf8-4347-9e38-4013fa120bc8","savedPayload":{"position":{"x":12923.159535456434,"y":13788.691205248766},"targetPosition":{"x":12325.132217733979,"y":13574.414781135878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-5-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bearishArrowHead*1.01","id":"7de429ac-d43c-4d1f-970a-69cfdcbc1fcc","savedPayload":{"position":{"x":13031.388885189543,"y":14215.395793400503},"targetPosition":{"x":12795.742097139453,"y":14001.402450098667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a4e0461d-4d13-4a01-9332-3fd94aa6647a","savedPayload":{"position":{"x":12795.742097139453,"y":14001.402450098667},"targetPosition":{"x":12325.132217733979,"y":13574.414781135878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-6-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end+(record.end-record.begin)\ny = record.bearishArrowHead*1.01","id":"e156a730-1cf6-40a2-8272-8ba1ff8534a7","savedPayload":{"position":{"x":12732.143036938007,"y":14436.801488517705},"targetPosition":{"x":12596.296975152018,"y":14149.137635633617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7b205c46-8dc6-4e0b-bca6-258a84c652c5","savedPayload":{"position":{"x":12596.296975152018,"y":14149.137635633617},"targetPosition":{"x":12325.132217733979,"y":13574.414781135878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-7-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.bearishArrowHead","id":"459bad82-6540-43d3-8c3c-73b119d4dfed","savedPayload":{"position":{"x":12370.78210048176,"y":14527.175870211293},"targetPosition":{"x":12355.689024391071,"y":14209.156277807786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"71bbdced-dc17-4019-a104-c37bd0ecdc98","savedPayload":{"position":{"x":12355.689024391071,"y":14209.156277807786},"targetPosition":{"x":12325.132217733979,"y":13574.414781135878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fccdf048-5edb-4377-9f0e-27a4c21e21f1","savedPayload":{"position":{"x":12353.367503585854,"y":13505.45441654266},"targetPosition":{"x":11788.958007882462,"y":13302.96903920655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Trend Line","points":[{"type":"Point","name":"Trend Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.trendLine\n","id":"1b000a16-4143-4eb2-8b9c-9661ddad10ed","savedPayload":{"position":{"x":12563.190535024169,"y":13756.297769489316},"targetPosition":{"x":12256.577146985215,"y":13671.542095945184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0a20e46e-5535-4cb4-b34a-36faec96f4da","savedPayload":{"position":{"x":12256.577146985215,"y":13671.542095945184},"targetPosition":{"x":11950.136160700109,"y":13586.56103909256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Trend Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.trendLine","id":"f159d45c-483e-4c46-b6ef-b1cd92d00cb7","savedPayload":{"position":{"x":12110.20290112685,"y":14202.628591547256},"targetPosition":{"x":12030.272260088852,"y":13894.498807566852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"58992b77-271b-4362-b130-251d65d8be55","savedPayload":{"position":{"x":12030.272260088852,"y":13894.498807566852},"targetPosition":{"x":11950.136160700109,"y":13586.56103909256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"edfd4367-c042-4fa0-8f77-31c218fc8d78","savedPayload":{"position":{"x":12004.857202186486,"y":13522.3871105841},"targetPosition":{"x":11788.958007882462,"y":13302.96903920655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Bullish Arrow","points":[{"type":"Point","name":"-1-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)\ny = record.bullishArrowHead*0.99","id":"fba54222-55a5-437d-92aa-756f08eecdb5","savedPayload":{"position":{"x":12884.050693370733,"y":14021.323169752775},"targetPosition":{"x":12566.608309237596,"y":14001.316971556336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e8aef2aa-6d0c-42f5-82a4-7c37a157c8de","savedPayload":{"position":{"x":12566.608309237596,"y":14001.316971556336},"targetPosition":{"x":11932.50874538122,"y":13961.039115376421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-2-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bullishArrowHead*0.99","id":"187b028b-4696-4003-90a1-b5beb8ea2ba3","savedPayload":{"position":{"x":12788.595239524107,"y":14381.163669077672},"targetPosition":{"x":12502.841142236866,"y":14240.837003499404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b834103f-86be-4106-ac3c-47b326cd97b4","savedPayload":{"position":{"x":12502.841142236866,"y":14240.837003499404},"targetPosition":{"x":11932.50874538122,"y":13961.039115376421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-3-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bullishArrowHead*0.97","id":"e51d81db-649a-4b1b-8aad-ed2f24a9affa","savedPayload":{"position":{"x":12562.577984845044,"y":14676.818415156464},"targetPosition":{"x":12352.355755387507,"y":14437.89708951016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"54a1db25-bb24-4ef9-bcbd-1432848214fd","savedPayload":{"position":{"x":12352.355755387507,"y":14437.89708951016},"targetPosition":{"x":11932.50874538122,"y":13961.039115376421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-4-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bullishArrowHead*0.97","id":"bb33e4b3-dea3-40d4-89d6-4621df7a0ae0","savedPayload":{"position":{"x":12240.629646714464,"y":14863.711297217418},"targetPosition":{"x":12137.941308197125,"y":14562.57552425211},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"800f7290-42e1-4970-a00c-f4a5cd30312b","savedPayload":{"position":{"x":12137.941308197125,"y":14562.57552425211},"targetPosition":{"x":11932.50874538122,"y":13961.039115376421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-5-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bullishArrowHead*0.99","id":"a09fda1a-0f15-45d2-92ae-e780435c819e","savedPayload":{"position":{"x":11872.148343880908,"y":14913.172845339974},"targetPosition":{"x":11892.179029474377,"y":14595.373171973026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"4a83e816-d5a4-47f0-a30e-3f5e5320147e","savedPayload":{"position":{"x":11892.179029474377,"y":14595.373171973026},"targetPosition":{"x":11932.50874538122,"y":13961.039115376421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-6-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end+(record.end-record.begin)\ny = record.bullishArrowHead*0.99","id":"1b3b0d03-bef2-4f05-9460-19227819c39b","savedPayload":{"position":{"x":11512.246000757412,"y":14817.147676223887},"targetPosition":{"x":11652.489877668344,"y":14531.57038171824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c6806791-bd74-413b-b86c-61383118cba6","savedPayload":{"position":{"x":11652.489877668344,"y":14531.57038171824},"targetPosition":{"x":11932.50874538122,"y":13961.039115376421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-7-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.bullishArrowHead","id":"931a9f64-7ec8-44a9-8555-6d03477940f2","savedPayload":{"position":{"x":11216.643926630622,"y":14590.919195459615},"targetPosition":{"x":11455.577456180035,"y":14380.865419957876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2f37b7be-5805-419d-a0a8-3e2fc5eb9e3b","savedPayload":{"position":{"x":11455.577456180035,"y":14380.865419957876},"targetPosition":{"x":11932.50874538122,"y":13961.039115376421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2591fc95-5f9b-409c-8816-11a3dd6d8581","savedPayload":{"position":{"x":11982.730643990966,"y":13870.65896417198},"targetPosition":{"x":11788.958007882462,"y":13302.96903920655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Bearish Arrow","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.forecast === \"Bearish Reversal\" || record.forecast === \"Bearish Continuation\" ","id":"c92a8076-d1cf-4879-88e2-16f89c878649","savedPayload":{"position":{"x":12235.615205815931,"y":14242.043383584158},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n\"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.5,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"921dec12-c29d-4656-8ea5-6e5fc7c92469","savedPayload":{"position":{"x":12386.543247211037,"y":14599.372943005143},"targetPosition":{"x":12141.383879811041,"y":14396.716873901229},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"d7ca8665-bd27-421a-be79-e5b48c4ffd3f","savedPayload":{"position":{"x":12141.383879811041,"y":14396.716873901229},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n }\n}","id":"2360af46-2b53-4cea-a26b-019107a4e4dc","savedPayload":{"position":{"x":12185.23587033499,"y":14782.072668870904},"targetPosition":{"x":12007.154540660602,"y":14518.332468126262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"1beaa578-f91e-4eb9-bcc9-4c979bc9a87c","savedPayload":{"position":{"x":12007.154540660602,"y":14518.332468126262},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"-1-","id":"6c20d736-5211-4bb1-836f-3ee460ba4f75","savedPayload":{"position":{"x":11716.852909625657,"y":14624.232075949345},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-1-","id":"f0e4b32d-4c67-44a9-b215-46dd2de99095"}}},{"type":"Polygon Vertex","name":"-2-","id":"7870b61d-7540-4f9e-9d57-bc8b54dab81d","savedPayload":{"position":{"x":11623.59231302339,"y":14627.66878102049},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-2-","id":"23dc1c78-a55d-482c-be5b-f6893e5294c7"}}},{"type":"Polygon Vertex","name":"-3-","id":"666d3979-14ea-4753-8d79-36a17ace6f3b","savedPayload":{"position":{"x":11531.977950824123,"y":14617.239015482895},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-3-","id":"2c9565a9-49d5-4f04-91ad-a073ff669a46"}}},{"type":"Polygon Vertex","name":"-4-","id":"58596c8a-eab1-4926-a006-4c287afd7096","savedPayload":{"position":{"x":11443.396226776775,"y":14593.729412979172},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-4-","id":"fe68b37d-0bf8-4347-9e38-4013fa120bc8"}}},{"type":"Polygon Vertex","name":"-5-","id":"e6073465-7636-48b1-8344-5e82a314ac1d","savedPayload":{"position":{"x":11359.384708955913,"y":14557.807998817012},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-5-","id":"a4e0461d-4d13-4a01-9332-3fd94aa6647a"}}},{"type":"Polygon Vertex","name":"-6-","id":"87a3f44c-5361-4e65-a9f3-1c5a461600b0","savedPayload":{"position":{"x":11281.510600734495,"y":14510.28688448735},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-6-","id":"7b205c46-8dc6-4e0b-bca6-258a84c652c5"}}},{"type":"Polygon Vertex","name":"-7-","id":"dcd75a74-5275-4181-8801-8bb625ab2545","savedPayload":{"position":{"x":11204.2163719251,"y":14444.367521032163},"targetPosition":{"x":11651.510516632672,"y":13991.706520612408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-7-","id":"71bbdced-dc17-4019-a104-c37bd0ecdc98"}}}],"id":"d503108f-9b4f-4aae-9e99-b92e1aedb6c8","savedPayload":{"position":{"x":11717.295634801481,"y":13899.316787849044},"targetPosition":{"x":11788.958007882462,"y":13302.96903920655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Trend Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"8b777f5a-b79e-45c5-ae85-3693d946b577","savedPayload":{"position":{"x":11754.491297468012,"y":14221.928059725631},"targetPosition":{"x":11690.670498529573,"y":13928.733372537468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"9ec3107b-2173-46b2-b831-7144910bd2ed","savedPayload":{"position":{"x":11690.670498529573,"y":13928.733372537468},"targetPosition":{"x":11640.674066617728,"y":13577.428401494675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Trend Line End","id":"66cee7f2-7951-4c23-84d9-8af01e017f34","savedPayload":{"position":{"x":11446.52123541505,"y":13881.528809602585},"targetPosition":{"x":11640.674066617728,"y":13577.428401494675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Trend Line End","id":"58992b77-271b-4362-b130-251d65d8be55"}}},{"type":"Polygon Vertex","name":"Trend Line Begin","id":"968f315d-33e1-4866-b061-42fb61964ad6","savedPayload":{"position":{"x":11291.487886964725,"y":13665.409189827207},"targetPosition":{"x":11640.674066617728,"y":13577.428401494675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Trend Line Begin","id":"0a20e46e-5535-4cb4-b34a-36faec96f4da"}}}],"id":"2e0fe089-4dae-4895-b46b-4f5e07ac9926","savedPayload":{"position":{"x":11623.025853596115,"y":13562.808922097776},"targetPosition":{"x":11788.958007882462,"y":13302.96903920655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Bullish Arrow","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.forecast === \"Bullish Reversal\" || record.forecast === \"Bullish Continuation\" ","id":"e32f5ba5-7e4e-4b48-9255-985134b35bf6","savedPayload":{"position":{"x":11356.333851880048,"y":14309.19499572535},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n\"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.5,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"dc4c1077-65c7-4b76-8420-ea719c497798","savedPayload":{"position":{"x":11171.794743914175,"y":14650.734757758717},"targetPosition":{"x":11175.745440661813,"y":14330.932431226403},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"8f42597b-9b13-46a3-b926-bf79570f27eb","savedPayload":{"position":{"x":11175.745440661813,"y":14330.932431226403},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n }\n}","id":"97b28c5b-f7c8-41d4-82a7-2db8fe1bd533","savedPayload":{"position":{"x":10900.571835786326,"y":14607.936193660593},"targetPosition":{"x":10995.921202414036,"y":14303.32115943792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"fc855e6f-bb88-485d-8079-99653a800a36","savedPayload":{"position":{"x":10995.921202414036,"y":14303.32115943792},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"-1-","id":"6f1e0d8e-a1a7-4fc7-ab01-d2e4d5cb0807","savedPayload":{"position":{"x":10730.677169859624,"y":14140.232690672607},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-1-","id":"e8aef2aa-6d0c-42f5-82a4-7c37a157c8de"}}},{"type":"Polygon Vertex","name":"-2-","id":"7bff821f-bb70-4a9f-89b9-74bd1dcde01f","savedPayload":{"position":{"x":10669.455225389724,"y":14069.029034667272},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-2-","id":"b834103f-86be-4106-ac3c-47b326cd97b4"}}},{"type":"Polygon Vertex","name":"-3-","id":"e14aa3b8-ed10-4358-87db-81d0f2fd580c","savedPayload":{"position":{"x":10619.03190035281,"y":13991.292631787524},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-3-","id":"54a1db25-bb24-4ef9-bcbd-1432848214fd"}}},{"type":"Polygon Vertex","name":"-4-","id":"fa285436-8897-49fa-81bf-bcf727e368de","savedPayload":{"position":{"x":10580.696718259642,"y":13907.589130141916},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-4-","id":"800f7290-42e1-4970-a00c-f4a5cd30312b"}}},{"type":"Polygon Vertex","name":"-5-","id":"cb9d9c29-9b41-42ba-bb6b-3e63dcbd253e","savedPayload":{"position":{"x":10556.368939645708,"y":13819.304483172136},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-5-","id":"4a83e816-d5a4-47f0-a30e-3f5e5320147e"}}},{"type":"Polygon Vertex","name":"-6-","id":"56ccabba-f502-416d-92ff-da20ee90ddf3","savedPayload":{"position":{"x":10547.376439499101,"y":13728.662757496488},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-6-","id":"c6806791-bd74-413b-b86c-61383118cba6"}}},{"type":"Polygon Vertex","name":"-7-","id":"688ebb45-45d7-4e2a-bfbc-f0bb799b2360","savedPayload":{"position":{"x":10551.83122632822,"y":13627.127452074243},"targetPosition":{"x":11185.66041236107,"y":13695.172255559371},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-7-","id":"2f37b7be-5805-419d-a0a8-3e2fc5eb9e3b"}}}],"id":"2cd7982f-ecc8-41ce-8b27-ede1d1ad7d8c","savedPayload":{"position":{"x":11278.026117322934,"y":13618.688201219642},"targetPosition":{"x":11788.958007882462,"y":13302.96903920655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0a02f148-0036-4d1c-aac5-a4e4ee5c25e7","savedPayload":{"position":{"x":11788.985336730206,"y":13303.148965975284},"targetPosition":{"x":11726.454631962377,"y":12706.323293734202},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"One-Candle Patterns","code":"{ \n\"codeName\": \"One-Candle-Patterns\"\n}","panelData":[{"type":"Panel Data","name":"Pattern Name","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.name","id":"664bc7e8-5c76-4dea-82ad-acef43eaa2da","savedPayload":{"position":{"x":11501.93740317275,"y":13176.94603730852},"targetPosition":{"x":11426.363737763586,"y":12886.064548854436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"119aa231-cf07-40a8-98ee-679e8d4e99ce","savedPayload":{"position":{"x":11426.363737763586,"y":12886.064548854436},"targetPosition":{"x":11404.41259716337,"y":12563.288189030278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Direction","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trend","id":"d4102f27-72a7-412c-b9b4-244e3ef5100d","savedPayload":{"position":{"x":11043.95740825339,"y":13044.183060725472},"targetPosition":{"x":11223.967414000515,"y":12803.702728176195},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2409211c-7992-4b1a-8273-25ce7e284b72","savedPayload":{"position":{"x":11223.967414000515,"y":12803.702728176195},"targetPosition":{"x":11404.41259716337,"y":12563.288189030278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Forecast","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.forecast","id":"19821933-d558-452e-9dc0-5df90116fcc1","savedPayload":{"position":{"x":10803.749528281682,"y":12581.122148207885},"targetPosition":{"x":11103.854307668524,"y":12572.148609337759},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e240fe07-156c-4766-8fe0-f123781842ef","savedPayload":{"position":{"x":11103.854307668524,"y":12572.148609337759},"targetPosition":{"x":11404.41259716337,"y":12563.288189030278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Method","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trendMethod","id":"7541dc87-d801-48bc-b2d8-391e605c0c5e","savedPayload":{"position":{"x":11015.814020906739,"y":12105.124543641734},"targetPosition":{"x":11209.89927891457,"y":12334.131330156766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e0c328ed-84b7-43a2-bfb2-274d1b1d3bae","savedPayload":{"position":{"x":11209.89927891457,"y":12334.131330156766},"targetPosition":{"x":11404.41259716337,"y":12563.288189030278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Period","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"6b66e742-6d13-43d6-a00f-a6ed9d070249","savedPayload":{"position":{"x":11519.191959073312,"y":11973.773593496275},"targetPosition":{"x":11461.907216338393,"y":12268.52539343757},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e457e54c-7cbb-4866-9b67-3bb71332e2c5","savedPayload":{"position":{"x":11461.907216338393,"y":12268.52539343757},"targetPosition":{"x":11404.41259716337,"y":12563.288189030278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Value","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trendLine","id":"e33fff96-c3f5-4376-8d90-4feafc0df08b","savedPayload":{"position":{"x":11924.983441013894,"y":12225.374211815923},"targetPosition":{"x":11658.458671376004,"y":12362.787527456234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"42d2f0eb-65fa-4358-af25-484517433307","savedPayload":{"position":{"x":11658.458671376004,"y":12362.787527456234},"targetPosition":{"x":11404.41259716337,"y":12563.288189030278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d2af80dc-8d17-42f3-b88a-af1726c59859","savedPayload":{"position":{"x":11404.41259716337,"y":12563.288189030278},"targetPosition":{"x":11726.454631962377,"y":12706.323293734202},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"14f83391-e4a6-470c-90c0-19763f83429b","savedPayload":{"position":{"x":11242.580100163783,"y":12872.161390267005},"targetPosition":{"x":11944.774819498161,"y":12362.05365917036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Two-Candles Patterns","code":"{ \n\"codeName\": \"Two-Candles Patterns\"\n}","shapes":{"type":"Shapes","name":"Two-Candles Patterns","chartPoints":[{"type":"Chart Points","name":"Bearish Arrow","points":[{"type":"Point","name":"-1-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)\ny = record.bearishArrowHead*1.01","id":"7dc394b3-ca00-4738-a554-420b393aa4f8","savedPayload":{"position":{"x":12080.364766906878,"y":13220.782956633711},"targetPosition":{"x":11790.248866809208,"y":13090.111787601752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7291f0d5-78e1-4d7c-a73d-2068e491344b","savedPayload":{"position":{"x":11790.248866809208,"y":13090.111787601752},"targetPosition":{"x":11210.883601978836,"y":12829.416928291432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-2-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bearishArrowHead*1.01","id":"cfdc25f2-f236-4fd0-a09c-11759c6a4e07","savedPayload":{"position":{"x":11864.254631850083,"y":13523.767719263178},"targetPosition":{"x":11646.060247337566,"y":13291.842840506357},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"87745033-dc64-4d86-8579-29cf35124f9a","savedPayload":{"position":{"x":11646.060247337566,"y":13291.842840506357},"targetPosition":{"x":11210.883601978836,"y":12829.416928291432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-3-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bearishArrowHead*1.04","id":"f30d7904-2195-4bab-93d4-d5083000fe6b","savedPayload":{"position":{"x":11548.872612758332,"y":13721.322106848394},"targetPosition":{"x":11436.15829430936,"y":13423.781375380397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"87fc7e3a-455f-49bb-ab44-fc06ba845f00","savedPayload":{"position":{"x":11436.15829430936,"y":13423.781375380397},"targetPosition":{"x":11210.883601978836,"y":12829.416928291432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-4-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bearishArrowHead*1.04","id":"f29b34a0-8604-4cde-b52c-237a422ccb31","savedPayload":{"position":{"x":11182.440371853707,"y":13782.892125833674},"targetPosition":{"x":11191.895398924,"y":13464.716740789758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2bab7192-a08c-4461-b36e-f369491dfd42","savedPayload":{"position":{"x":11191.895398924,"y":13464.716740789758},"targetPosition":{"x":11210.883601978836,"y":12829.416928291432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-5-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bearishArrowHead*1.01","id":"20df1362-6e33-45c3-bf48-c4a76035b428","savedPayload":{"position":{"x":10819.670867042692,"y":13699.328603873406},"targetPosition":{"x":10950.196779102633,"y":13409.036213563837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3c9d80e6-ad20-4b47-a8f5-1bf19a0b80e2","savedPayload":{"position":{"x":10950.196779102633,"y":13409.036213563837},"targetPosition":{"x":11210.883601978836,"y":12829.416928291432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-6-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end+(record.end-record.begin)\ny = record.bearishArrowHead*1.01","id":"64a8c860-86c4-40da-9ca0-d5e424ade757","savedPayload":{"position":{"x":10516.426943651764,"y":13483.271111995491},"targetPosition":{"x":10748.207670935357,"y":13265.113689035281},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c6a0d716-6534-453b-9d0f-a8c6faa502f0","savedPayload":{"position":{"x":10748.207670935357,"y":13265.113689035281},"targetPosition":{"x":11210.883601978836,"y":12829.416928291432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-7-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.bearishArrowHead","id":"62fc84a0-55e5-452c-b72d-4c91174ea85a","savedPayload":{"position":{"x":10319.068694124551,"y":13167.497391595014},"targetPosition":{"x":10616.657668901848,"y":13054.714065527793},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fef9ea3b-84c5-43cd-9602-96f8170065bd","savedPayload":{"position":{"x":10616.657668901848,"y":13054.714065527793},"targetPosition":{"x":11210.883601978836,"y":12829.416928291432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9020cd21-a011-4b59-aec4-56469a5ce79f","savedPayload":{"position":{"x":11212.08238612305,"y":12793.886426050642},"targetPosition":{"x":11230.088306354333,"y":12194.214105362249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Trend Line","points":[{"type":"Point","name":"Trend Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.trendLine\n","id":"aed6b5b4-e6e5-4e5c-a13b-1d707c93c15a","savedPayload":{"position":{"x":11112.203423838924,"y":13135.049712488144},"targetPosition":{"x":11098.154486588639,"y":12816.675111736882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"691a374a-ab65-4dc5-b788-979162f87185","savedPayload":{"position":{"x":11098.154486588639,"y":12816.675111736882},"targetPosition":{"x":11083.52637072901,"y":12476.574737981895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Trend Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.trendLine","id":"9b3acde4-3360-4869-8685-c08922111bd5","savedPayload":{"position":{"x":10528.328676106998,"y":12831.586770785856},"targetPosition":{"x":10796.587520809484,"y":12660.256912026685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1e2e8a50-8a93-4696-9ed7-f8ea1da75c5e","savedPayload":{"position":{"x":10796.587520809484,"y":12660.256912026685},"targetPosition":{"x":11083.52637072901,"y":12476.574737981895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7af63af8-4b52-4c71-b427-906a0eaa37d2","savedPayload":{"position":{"x":11091.612510483377,"y":12460.869122431828},"targetPosition":{"x":11230.088306354333,"y":12194.214105362249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Bullish Arrow","points":[{"type":"Point","name":"-1-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)\ny = record.bullishArrowHead*0.99","id":"7cd5ae63-7c34-4ce3-84f9-8de0b14fbafa","savedPayload":{"position":{"x":10957.995336187574,"y":13499.347586436937},"targetPosition":{"x":10879.208138403894,"y":13191.010310464353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"38b0018b-d162-492e-90b3-604efc79c16e","savedPayload":{"position":{"x":10879.208138403894,"y":13191.010310464353},"targetPosition":{"x":10721.704601814654,"y":12575.369642451864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-2-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bullishArrowHead*0.99","id":"3221cc5c-76c7-4335-bc1c-a781c1c7a6f4","savedPayload":{"position":{"x":10586.804919038863,"y":13519.5759173753},"targetPosition":{"x":10631.795073687696,"y":13204.472858274814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"66a65473-db28-42bf-8491-3497a35cc42b","savedPayload":{"position":{"x":10631.795073687696,"y":13204.472858274814},"targetPosition":{"x":10721.704601814654,"y":12575.369642451864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-3-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bullishArrowHead*0.96","id":"5dbc1498-0b47-48cd-a37c-1a4f19f6c788","savedPayload":{"position":{"x":10235.638110508145,"y":13395.963856067829},"targetPosition":{"x":10397.830607018597,"y":13122.11928578089},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"cb37189b-fdb7-4cd7-aa78-1dfd71c8e614","savedPayload":{"position":{"x":10397.830607018597,"y":13122.11928578089},"targetPosition":{"x":10721.704601814654,"y":12575.369642451864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-4-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bullishArrowHead*0.96","id":"1bcf2a18-15b8-4a2c-b7b6-1167c00ff5e9","savedPayload":{"position":{"x":9958.51463690534,"y":13147.352166790564},"targetPosition":{"x":10213.201596397783,"y":12956.49560590405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"aae0a6cc-e05b-402f-800c-807df07b1f37","savedPayload":{"position":{"x":10213.201596397783,"y":12956.49560590405},"targetPosition":{"x":10721.704601814654,"y":12575.369642451864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-5-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bullishArrowHead*0.99","id":"8011dcdd-1c27-4bcb-8ea6-3344573aa905","savedPayload":{"position":{"x":9797.608411032441,"y":12811.642008035207},"targetPosition":{"x":10106.006106977726,"y":12732.832615058134},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a5f609bd-7162-4155-8778-d085b000ef04","savedPayload":{"position":{"x":10106.006106977726,"y":12732.832615058134},"targetPosition":{"x":10721.704601814654,"y":12575.369642451864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-6-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end+(record.end-record.begin)\ny = record.bullishArrowHead*0.99","id":"37fa781c-1480-47fd-a862-39894108dc46","savedPayload":{"position":{"x":9777.434768608586,"y":12440.483473176917},"targetPosition":{"x":10092.560564373696,"y":12485.454399858972},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6edd83d4-739a-4651-9204-2a0f617e1256","savedPayload":{"position":{"x":10092.560564373696,"y":12485.454399858972},"targetPosition":{"x":10721.704601814654,"y":12575.369642451864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-7-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.bullishArrowHead","id":"65f9907e-ab3a-4ef4-a902-b8204afc49d7","savedPayload":{"position":{"x":9901.123266502633,"y":12089.222366557253},"targetPosition":{"x":10174.944718196417,"y":12251.419740461577},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b98d1777-f3a2-4bcc-8312-6d89d1c6662e","savedPayload":{"position":{"x":10174.944718196417,"y":12251.419740461577},"targetPosition":{"x":10721.704601814654,"y":12575.369642451864},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"20da6d05-3166-4ba2-bd3c-b21770ae1958","savedPayload":{"position":{"x":10750.266363912004,"y":12553.875282572766},"targetPosition":{"x":11230.088306354333,"y":12194.214105362249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Bearish Arrow","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.forecast === \"Bearish Reversal\" || record.forecast === \"Bearish Continuation\" ","id":"bebcd91f-d028-4d8c-bc25-317d19f1b955","savedPayload":{"position":{"x":10545.921551362917,"y":12950.461440057985},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n\"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.5,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"8d874a62-2e9c-43e9-9632-e93a7e25d8c3","savedPayload":{"position":{"x":10254.470661709795,"y":13203.968708192891},"targetPosition":{"x":10370.531202082246,"y":12907.47369966236},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6e948385-96a4-40ba-b8db-eb11d079aad1","savedPayload":{"position":{"x":10370.531202082246,"y":12907.47369966236},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 3,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n }\n}","id":"65302767-1fb6-4a56-b981-4ca898e3fc1f","savedPayload":{"position":{"x":10019.354758517326,"y":13068.057848255628},"targetPosition":{"x":10214.217089568454,"y":12817.719639137931},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6365634c-c753-4be1-9f4e-d81a88690b96","savedPayload":{"position":{"x":10214.217089568454,"y":12817.719639137931},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"-1-","id":"952bb578-3cc3-4576-b7dd-a043f2b4d719","savedPayload":{"position":{"x":10022.184079381099,"y":12573.955392658285},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-1-","id":"7291f0d5-78e1-4d7c-a73d-2068e491344b"}}},{"type":"Polygon Vertex","name":"-2-","id":"bc4ee454-7c2b-4808-a99c-002afae05d39","savedPayload":{"position":{"x":9990.314472494567,"y":12485.992965465333},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-2-","id":"87745033-dc64-4d86-8579-29cf35124f9a"}}},{"type":"Polygon Vertex","name":"-3-","id":"6ad8a90c-4d6e-47ed-a4be-ae3a5684b26d","savedPayload":{"position":{"x":9971.59872853725,"y":12395.55272137446},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-3-","id":"87fc7e3a-455f-49bb-ab44-fc06ba845f00"}}},{"type":"Polygon Vertex","name":"-4-","id":"a49d5c98-f797-45ec-832a-c89de61c5030","savedPayload":{"position":{"x":9966.45605918407,"y":12303.952338163099},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-4-","id":"2bab7192-a08c-4461-b36e-f369491dfd42"}}},{"type":"Polygon Vertex","name":"-5-","id":"5ee4c947-de43-4212-adf9-28d28820da8e","savedPayload":{"position":{"x":9974.562593159011,"y":12212.881430747817},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-5-","id":"3c9d80e6-ad20-4b47-a8f5-1bf19a0b80e2"}}},{"type":"Polygon Vertex","name":"-6-","id":"c6e490ea-bdfd-4738-84e7-dcd8e1078605","savedPayload":{"position":{"x":9996.735865147144,"y":12124.449288633105},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-6-","id":"c6a0d716-6534-453b-9d0f-a8c6faa502f0"}}},{"type":"Polygon Vertex","name":"-7-","id":"2aaa39e8-be04-491e-862e-b1bb03c8d29d","savedPayload":{"position":{"x":10035.594561056812,"y":12030.551045346489},"targetPosition":{"x":10604.569933994353,"y":12316.386913442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-7-","id":"fef9ea3b-84c5-43cd-9602-96f8170065bd"}}}],"id":"49566c3d-5038-4737-a68a-4f1f99a53296","savedPayload":{"position":{"x":10640.963579422994,"y":12310.144397142643},"targetPosition":{"x":11230.088306354333,"y":12194.214105362249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Trend Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"5d90400c-c680-452a-b5d6-dd01f3483a67","savedPayload":{"position":{"x":10336.04431049231,"y":12450.530040797157},"targetPosition":{"x":10610.378394632273,"y":12289.861961035038},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6ab5c6b9-d4e4-4b61-a135-17bb3a0204cb","savedPayload":{"position":{"x":10610.378394632273,"y":12289.861961035038},"targetPosition":{"x":10921.79645213607,"y":12114.128738025604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Trend Line End","id":"d99e5489-5977-4ca7-9d11-a65feaeb3e1e","savedPayload":{"position":{"x":10568.411398546887,"y":12022.163589007218},"targetPosition":{"x":10921.79645213607,"y":12114.128738025604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Trend Line End","id":"1e2e8a50-8a93-4696-9ed7-f8ea1da75c5e"}}},{"type":"Polygon Vertex","name":"Trend Line Begin","id":"0f83b930-9073-41a5-a3e6-59ea6b3ebafd","savedPayload":{"position":{"x":10727.167582598435,"y":11850.56892593657},"targetPosition":{"x":10921.79645213607,"y":12114.128738025604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Trend Line Begin","id":"691a374a-ab65-4dc5-b788-979162f87185"}}}],"id":"f826e8bf-cc5c-4b7f-9d15-1fc6a45d7ced","savedPayload":{"position":{"x":10939.089469477603,"y":12118.64120094056},"targetPosition":{"x":11230.088306354333,"y":12194.214105362249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Bullish Arrow","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.forecast === \"Bullish Reversal\" || record.forecast === \"Bullish Continuation\" ","id":"edbfaf8f-8507-4d7b-9057-353f9571e615","savedPayload":{"position":{"x":10213.778124897002,"y":12132.269517906983},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n\"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.5,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"010c4131-393a-474e-98af-444ebfbb7a8d","savedPayload":{"position":{"x":9832.110411093618,"y":12061.536130343056},"targetPosition":{"x":10136.738383878033,"y":11968.48508335417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"5f6e62fc-4d25-4af4-86df-ca18bdd1e897","savedPayload":{"position":{"x":10136.738383878033,"y":11968.48508335417},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 3,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n }\n}","id":"51545ef3-4202-4f31-8746-908b4d04e273","savedPayload":{"position":{"x":9790.998444728728,"y":11792.777718410327},"targetPosition":{"x":10109.09160879138,"y":11789.752637665544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"504af6cf-5682-4ec9-90f1-3b5ac174cb67","savedPayload":{"position":{"x":10109.09160879138,"y":11789.752637665544},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"-1-","id":"e9090bdf-ffe5-4031-89d1-3de33dec1105","savedPayload":{"position":{"x":10180.91832187618,"y":11489.022185253545},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-1-","id":"38b0018b-d162-492e-90b3-604efc79c16e"}}},{"type":"Polygon Vertex","name":"-2-","id":"4a190301-2d52-49ae-a061-9bb553ea1c0f","savedPayload":{"position":{"x":10229.487357706232,"y":11409.369514204043},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-2-","id":"66a65473-db28-42bf-8491-3497a35cc42b"}}},{"type":"Polygon Vertex","name":"-3-","id":"f5a0eaa5-7837-4d60-8040-37f4353e3b27","savedPayload":{"position":{"x":10288.806371235347,"y":11338.81796836232},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-3-","id":"cb37189b-fdb7-4cd7-aa78-1dfd71c8e614"}}},{"type":"Polygon Vertex","name":"-4-","id":"13577516-ccb2-469f-9d59-f5bc71c16e77","savedPayload":{"position":{"x":10356.915208917773,"y":11277.45963608795},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-4-","id":"aae0a6cc-e05b-402f-800c-807df07b1f37"}}},{"type":"Polygon Vertex","name":"-5-","id":"9884c89e-fbb3-4101-b19f-0522b933175c","savedPayload":{"position":{"x":10433.13499988092,"y":11227.026027209664},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-5-","id":"a5f609bd-7162-4155-8778-d085b000ef04"}}},{"type":"Polygon Vertex","name":"-6-","id":"a089c901-705c-4b1a-bf29-fca8669ad902","savedPayload":{"position":{"x":10515.800630207897,"y":11188.449222250814},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-6-","id":"6edd83d4-739a-4651-9204-2a0f617e1256"}}},{"type":"Polygon Vertex","name":"-7-","id":"6a3d330f-6852-4cb0-80fe-72c3bf02aa31","savedPayload":{"position":{"x":10613.300853575201,"y":11160.109996005818},"targetPosition":{"x":10744.80357975978,"y":11782.900088054459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-7-","id":"b98d1777-f3a2-4bcc-8312-6d89d1c6662e"}}}],"id":"ba0bcada-77c5-450e-a1fc-7708bcaca60b","savedPayload":{"position":{"x":10772.02987586426,"y":11806.085959361126},"targetPosition":{"x":11230.088306354333,"y":12194.214105362249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e0c63725-4cfb-4d1e-9b70-80343de2e9b3","savedPayload":{"position":{"x":11230.088306354333,"y":12194.214105362249},"targetPosition":{"x":11726.311308429293,"y":12000.002156669318},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Two-Candles Patterns","code":"{ \n\"codeName\": \"Two-Candles Patterns\"\n}","panelData":[{"type":"Panel Data","name":"Pattern Name","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.name","id":"6d2625d7-82c7-4186-95a7-8bfe0892446a","savedPayload":{"position":{"x":11282.2990000533,"y":11726.161646922197},"targetPosition":{"x":11535.512418924576,"y":11564.887805754493},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f5538abe-a9aa-42ad-9c30-798dc41ddb80","savedPayload":{"position":{"x":11535.512418924576,"y":11564.887805754493},"targetPosition":{"x":11788.733371624632,"y":11403.513224859445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Direction","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trend","id":"7f273725-f758-4f3e-bc3a-d7d47f919c7a","savedPayload":{"position":{"x":11220.037908516686,"y":11209.153715114357},"targetPosition":{"x":11504.352857782778,"y":11306.304335360548},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2e819599-22c9-4acd-ac77-92f18b20cb61","savedPayload":{"position":{"x":11504.352857782778,"y":11306.304335360548},"targetPosition":{"x":11788.733371624632,"y":11403.513224859445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Forecast","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.forecast","id":"43090bdd-e415-48e8-ba75-4b80d4f0aeee","savedPayload":{"position":{"x":11586.129481188585,"y":10837.61793014342},"targetPosition":{"x":11687.410807177355,"y":11120.507471023042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"39649444-cba8-41d2-bb32-064f43cf8df4","savedPayload":{"position":{"x":11687.410807177355,"y":11120.507471023042},"targetPosition":{"x":11788.733371624632,"y":11403.513224859445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Method","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trendMethod","id":"f7a45eca-7fe0-4837-b719-92e81fa0774d","savedPayload":{"position":{"x":12104.279119313203,"y":10892.061094636183},"targetPosition":{"x":11946.510748979814,"y":11147.737856386202},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6cb4eef6-735b-409a-92c4-fe2b2e1e82be","savedPayload":{"position":{"x":11946.510748979814,"y":11147.737856386202},"targetPosition":{"x":11788.733371624632,"y":11403.513224859445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Period","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"75c3e3bd-c749-463d-bae4-296abf83f078","savedPayload":{"position":{"x":12385.01152304191,"y":11331.348876381158},"targetPosition":{"x":12086.880994256426,"y":11367.456255990743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4c31ec17-bf6c-4dfc-8f42-1e7fe7e77297","savedPayload":{"position":{"x":12086.880994256426,"y":11367.456255990743},"targetPosition":{"x":11788.733371624632,"y":11403.513224859445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Value","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trendLine","id":"d9e33fbf-8990-4363-b674-f1ec7f71bfcd","savedPayload":{"position":{"x":12215.748183200936,"y":11824.340368643023},"targetPosition":{"x":12002.46074564505,"y":11613.906972541092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d4f75b19-1a90-48d8-b6fe-9f064505ae93","savedPayload":{"position":{"x":12002.46074564505,"y":11613.906972541092},"targetPosition":{"x":11788.733371624632,"y":11403.513224859445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6426039f-b3dc-443b-bf6a-faa1dd1e3f2c","savedPayload":{"position":{"x":11788.733371624632,"y":11403.513224859445},"targetPosition":{"x":11726.311308429293,"y":12000.002156669318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3bf46641-3478-41fd-8407-0af20e72f30b","savedPayload":{"position":{"x":11242.579324512362,"y":11851.939369699156},"targetPosition":{"x":11944.774819498161,"y":12362.05365917036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter Module","name":"Three-Candles Patterns","code":"{ \n\"codeName\": \"Three-Candles Patterns\"\n}","shapes":{"type":"Shapes","name":"Three-Candles Patterns","chartPoints":[{"type":"Chart Points","name":"Bearish Arrow","points":[{"type":"Point","name":"-1-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)\ny = record.bearishArrowHead*1.01","id":"050fd307-0763-423f-b0a7-488f1e22b2f0","savedPayload":{"position":{"x":11323.22312544964,"y":12398.77290242567},"targetPosition":{"x":11355.846289853453,"y":12100.317423764762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b20f834d-a9d0-419e-87ce-c9d56cdfe948","savedPayload":{"position":{"x":11355.846289853453,"y":12100.317423764762},"targetPosition":{"x":11420.877930333358,"y":11503.982415719443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-2-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bearishArrowHead*1.01","id":"ea09a04d-33f3-430d-9210-b60a0d93accf","savedPayload":{"position":{"x":10988.173987892253,"y":12293.359470804624},"targetPosition":{"x":11132.623775381358,"y":12029.93345933905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d119f364-4c32-4605-afcb-025e62d32f20","savedPayload":{"position":{"x":11132.623775381358,"y":12029.93345933905},"targetPosition":{"x":11420.877930333358,"y":11503.982415719443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-3-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bearishArrowHead*1.05","id":"c472d80d-ff4c-4bdf-af76-b8fb1c9dd3f5","savedPayload":{"position":{"x":10718.975254856272,"y":12067.705534662236},"targetPosition":{"x":10953.244304894615,"y":11879.595091179535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"0e94de71-51dc-4d00-81fc-db6a47af48e9","savedPayload":{"position":{"x":10953.244304894615,"y":11879.595091179535},"targetPosition":{"x":11420.877930333358,"y":11503.982415719443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-4-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bearishArrowHead*1.05","id":"c851f754-5148-4d6c-abef-446f4dcbf95c","savedPayload":{"position":{"x":10556.586322739728,"y":11756.177469363914},"targetPosition":{"x":10845.051173261003,"y":11672.051259630229},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"54f3f9d8-a0fd-489b-a280-5791c92afe4a","savedPayload":{"position":{"x":10845.051173261003,"y":11672.051259630229},"targetPosition":{"x":11420.877930333358,"y":11503.982415719443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-5-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bearishArrowHead*1.01","id":"305bea41-e179-499b-bff8-687f861b575a","savedPayload":{"position":{"x":10525.745074217419,"y":11406.81436868035},"targetPosition":{"x":10824.50657379665,"y":11439.198329378869},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"75712c99-427f-4995-ad28-116f514f1b1d","savedPayload":{"position":{"x":10824.50657379665,"y":11439.198329378869},"targetPosition":{"x":11420.877930333358,"y":11503.982415719443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-6-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end+(record.end-record.begin)\ny = record.bearishArrowHead*1.01","id":"3fd2696f-e7e8-41f5-ae74-e757cb72b755","savedPayload":{"position":{"x":10631.124209494767,"y":11071.749322646681},"targetPosition":{"x":10894.737895024446,"y":11215.962561313583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"32a9e24a-ecbb-4272-868f-8a2c1131d780","savedPayload":{"position":{"x":10894.737895024446,"y":11215.962561313583},"targetPosition":{"x":11420.877930333358,"y":11503.982415719443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-7-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.bearishArrowHead","id":"b02696af-5430-4311-a2b8-b7a69d5f085b","savedPayload":{"position":{"x":10867.949211062165,"y":10813.470283355004},"targetPosition":{"x":11044.961393591799,"y":11036.833646122217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"da13c2e7-5b21-44b3-98ef-e101a208cd82","savedPayload":{"position":{"x":11044.961393591799,"y":11036.833646122217},"targetPosition":{"x":11420.877930333358,"y":11503.982415719443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ed6c9b38-f0d8-49d8-b6e6-831ba4391e67","savedPayload":{"position":{"x":11420.37969691572,"y":11503.86735025911},"targetPosition":{"x":11996.288685770072,"y":11335.876531559219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Trend Line","points":[{"type":"Point","name":"Trend Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.trendLine\n","id":"8df901ad-9507-4c1b-aa66-e80e52142e64","savedPayload":{"position":{"x":11016.722031728412,"y":11454.378828646537},"targetPosition":{"x":11316.130511374482,"y":11343.228840785512},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f05e403b-b940-4007-be9d-517cd5f5b761","savedPayload":{"position":{"x":11316.130511374482,"y":11343.228840785512},"targetPosition":{"x":11634.746916819295,"y":11224.7967380953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Trend Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.trendLine","id":"c790f239-fe7c-488c-a22c-ea82c2ea43f3","savedPayload":{"position":{"x":11123.976317395478,"y":10806.782956392311},"targetPosition":{"x":11370.717363619271,"y":11009.24532402787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e185278f-a45c-43e3-8691-6252e48809cc","savedPayload":{"position":{"x":11370.717363619271,"y":11009.24532402787},"targetPosition":{"x":11634.746916819295,"y":11224.7967380953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"30170318-2cab-4bb6-ad3b-362b5a25d245","savedPayload":{"position":{"x":11699.858996619034,"y":11286.736822449375},"targetPosition":{"x":11996.288685770072,"y":11335.876531559219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Chart Points","name":"Bullish Arrow","points":[{"type":"Point","name":"-1-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin-(record.end-record.begin)\ny = record.bullishArrowHead*0.99","id":"91cd5c4e-6dc9-41f4-abba-e66c6d9c7c3e","savedPayload":{"position":{"x":10622.722060799468,"y":11421.307241331033},"targetPosition":{"x":10891.625071432056,"y":11250.994753964025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a9852c0f-8ac8-4b9d-ac29-e8d8f29da720","savedPayload":{"position":{"x":10891.625071432056,"y":11250.994753964025},"targetPosition":{"x":11428.37470788099,"y":10910.903506853843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-2-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bullishArrowHead*0.99","id":"99075b18-7979-4f15-915a-272a4debd949","savedPayload":{"position":{"x":10488.598236123893,"y":11073.923504266513},"targetPosition":{"x":10802.297353325306,"y":11019.557174673808},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"bb29fdb8-abfe-4377-9063-6790f2eb8d8f","savedPayload":{"position":{"x":10802.297353325306,"y":11019.557174673808},"targetPosition":{"x":11428.37470788099,"y":10910.903506853843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-3-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.bullishArrowHead*0.94","id":"9ab43674-72c8-4525-8697-49cbf37785e0","savedPayload":{"position":{"x":10497.727053251536,"y":10702.345373796044},"targetPosition":{"x":10808.36473501717,"y":10771.960855075955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a46f8fdb-d00f-46f6-8ec9-3ef0166107ef","savedPayload":{"position":{"x":10808.36473501717,"y":10771.960855075955},"targetPosition":{"x":11428.37470788099,"y":10910.903506853843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-4-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bullishArrowHead*0.94","id":"cb153aae-7f46-4fbc-aa01-26f7193e8eaf","savedPayload":{"position":{"x":10648.465081528218,"y":10361.987151463314},"targetPosition":{"x":10908.81157590773,"y":10545.175423604298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2e60f4be-e8cc-4489-81f6-27fa3f61921b","savedPayload":{"position":{"x":10908.81157590773,"y":10545.175423604298},"targetPosition":{"x":11428.37470788099,"y":10910.903506853843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-5-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.bullishArrowHead*0.99","id":"0b2f59a6-9de6-4ccd-81bc-28288491d705","savedPayload":{"position":{"x":10917.982222647839,"y":10105.243364118034},"targetPosition":{"x":11088.280310237424,"y":10374.161971966498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"1740e52b-986e-49cf-bb3f-c373200c4449","savedPayload":{"position":{"x":11088.280310237424,"y":10374.161971966498},"targetPosition":{"x":11428.37470788099,"y":10910.903506853843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-6-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end+(record.end-record.begin)\ny = record.bullishArrowHead*0.99","id":"ee129388-9aec-4709-bf79-3a3b83fe769e","savedPayload":{"position":{"x":11265.239362694574,"y":9971.125616480742},"targetPosition":{"x":11319.681104897198,"y":10284.73143550902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c8b169eb-6d38-41ab-bc48-e5a08c6f9f45","savedPayload":{"position":{"x":11319.681104897198,"y":10284.73143550902},"targetPosition":{"x":11428.37470788099,"y":10910.903506853843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"-7-","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end-(record.end-record.begin)/2\ny = record.bullishArrowHead","id":"c58904a7-8615-4a27-bd74-1966b35e8924","savedPayload":{"position":{"x":11637.053653088271,"y":9980.249492741956},"targetPosition":{"x":11567.473909210032,"y":10290.876282666291},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f5cee1fe-b34d-47e5-8d4a-26061487b242","savedPayload":{"position":{"x":11567.473909210032,"y":10290.876282666291},"targetPosition":{"x":11428.37470788099,"y":10910.903506853843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b8b4b3de-a98c-4d32-a385-61a186871641","savedPayload":{"position":{"x":11505.611569683755,"y":10990.706000633125},"targetPosition":{"x":11996.288685770072,"y":11335.876531559219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Bearish Arrow","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.forecast === \"Bearish Reversal\" || record.forecast === \"Bearish Continuation\" ","id":"4db8acef-2d4b-4e56-b319-d32b145c4fc1","savedPayload":{"position":{"x":11119.128095792617,"y":10944.30589967562},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n\"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.5,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"da54ef22-f928-44a9-ba54-ddc157d6e2fd","savedPayload":{"position":{"x":10805.569639139107,"y":10755.57900249862},"targetPosition":{"x":11105.440095096237,"y":10774.203022515425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"bd6aeeb9-f9ce-4289-84ee-b89e5bce37ed","savedPayload":{"position":{"x":11105.440095096237,"y":10774.203022515425},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n }\n}","id":"e73e98ac-0abf-488c-88c7-5f218487754a","savedPayload":{"position":{"x":10857.94135517372,"y":10504.319824510389},"targetPosition":{"x":11140.326425888801,"y":10606.83889254854},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"871328e3-7832-4dc2-8758-72612387f556","savedPayload":{"position":{"x":11140.326425888801,"y":10606.83889254854},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"-1-","id":"bc05844f-b3a3-4f25-8688-b555ff25cd31","savedPayload":{"position":{"x":11301.050977821582,"y":10366.359233076688},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-1-","id":"b20f834d-a9d0-419e-87ce-c9d56cdfe948"}}},{"type":"Polygon Vertex","name":"-2-","id":"a7f33d57-8a91-4bf6-a755-2f9572b02d0b","savedPayload":{"position":{"x":11371.1722624145,"y":10310.524995235808},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-2-","id":"d119f364-4c32-4605-afcb-025e62d32f20"}}},{"type":"Polygon Vertex","name":"-3-","id":"4f2d69c6-4919-44a1-b4f4-b11c4d07a8d5","savedPayload":{"position":{"x":11447.492241286429,"y":10267.014695489712},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-3-","id":"0e94de71-51dc-4d00-81fc-db6a47af48e9"}}},{"type":"Polygon Vertex","name":"-4-","id":"cae92b34-1055-4413-8521-b00838b6b3a1","savedPayload":{"position":{"x":11528.553759990715,"y":10235.52821971701},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-4-","id":"54f3f9d8-a0fd-489b-a280-5791c92afe4a"}}},{"type":"Polygon Vertex","name":"-5-","id":"26a5fbf5-1e3c-49a3-a80e-89a38760a6ce","savedPayload":{"position":{"x":11612.88523066173,"y":10216.204955748748},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-5-","id":"75712c99-427f-4995-ad28-116f514f1b1d"}}},{"type":"Polygon Vertex","name":"-6-","id":"85dd4fe1-e267-4e2c-8249-e5a4ad8ac57b","savedPayload":{"position":{"x":11698.894659071782,"y":10209.23251766486},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-6-","id":"32a9e24a-ecbb-4272-868f-8a2c1131d780"}}},{"type":"Polygon Vertex","name":"-7-","id":"0b35f295-6655-45ea-8050-3ea4d565b0a8","savedPayload":{"position":{"x":11799.939994389679,"y":10218.071780310376},"targetPosition":{"x":11704.157873009914,"y":10811.585371354007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-7-","id":"da13c2e7-5b21-44b3-98ef-e101a208cd82"}}}],"id":"d6bca38f-dad2-4bad-b869-718840793911","savedPayload":{"position":{"x":11703.84184652783,"y":10811.247330102198},"targetPosition":{"x":11996.288685770072,"y":11335.876531559219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Trend Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"735def02-7235-4d8d-b742-2606e271785c","savedPayload":{"position":{"x":11434.031783580725,"y":10494.076725758625},"targetPosition":{"x":11671.890060263624,"y":10704.93803143185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"1cb25c02-7f14-4290-a1dd-cdecfa3d41f1","savedPayload":{"position":{"x":11671.890060263624,"y":10704.93803143185},"targetPosition":{"x":11928.444303103635,"y":10958.74838780957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Trend Line End","id":"ca4b7aaa-e204-477b-917d-5b0d73dcd9ae","savedPayload":{"position":{"x":11906.522706605705,"y":10594.53477284026},"targetPosition":{"x":11928.444303103635,"y":10958.74838780957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Trend Line End","id":"e185278f-a45c-43e3-8691-6252e48809cc"}}},{"type":"Polygon Vertex","name":"Trend Line Begin","id":"1e9cb0f5-9153-4ebf-bea2-e4cdff34e27d","savedPayload":{"position":{"x":12145.984798752914,"y":10662.181312939032},"targetPosition":{"x":11928.444303103635,"y":10958.74838780957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Trend Line Begin","id":"f05e403b-b940-4007-be9d-517cd5f5b761"}}}],"id":"954cc880-be0c-444b-b810-ddf42e1d6d03","savedPayload":{"position":{"x":11978.403649318927,"y":11035.96342506963},"targetPosition":{"x":11996.288685770072,"y":11335.876531559219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Bullish Arrow","polygonCondition":{"type":"Polygon Condition","name":"New Polygon Condition","code":"record.forecast === \"Bullish Reversal\" || record.forecast === \"Bullish Continuation\" ","id":"71c1088c-78e4-4b13-a432-48488e81f5a9","savedPayload":{"position":{"x":11692.554917196347,"y":10291.090417710408},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n\"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.5,\n \"paletteColor\": \"UI_COLOR.TITANIUM_YELLOW\"\n }\n}","id":"26a20027-9ab4-483f-8e8b-54c5feae8eb7","savedPayload":{"position":{"x":11642.115561638522,"y":9906.477084346494},"targetPosition":{"x":11824.629310498469,"y":10167.22023430977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"784e3863-e27c-439a-b219-d2257040f9a8","savedPayload":{"position":{"x":11824.629310498469,"y":10167.22023430977},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n }\n}","id":"c87d6249-dfd9-4bfc-b6d5-1033dc34ab93","savedPayload":{"position":{"x":11884.802002959816,"y":9783.86423191742},"targetPosition":{"x":11986.280508726017,"y":10085.56687123808},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"c307cae0-1d47-4fbd-b17e-c71ed0b460a2","savedPayload":{"position":{"x":11986.280508726017,"y":10085.56687123808},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"-1-","id":"01f59ec4-922f-4f32-89ff-271b4a1715ff","savedPayload":{"position":{"x":12294.252799338366,"y":10060.7280535677},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-1-","id":"a9852c0f-8ac8-4b9d-ac29-e8d8f29da720"}}},{"type":"Polygon Vertex","name":"-2-","id":"63a0a7cf-0e25-4c76-a647-7bce1cf8349d","savedPayload":{"position":{"x":12385.026289073689,"y":10082.266763057805},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-2-","id":"bb29fdb8-abfe-4377-9063-6790f2eb8d8f"}}},{"type":"Polygon Vertex","name":"-3-","id":"34336858-138b-4d29-8e19-963f987eeb7a","savedPayload":{"position":{"x":12470.562647038838,"y":10116.664251173223},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-3-","id":"a46f8fdb-d00f-46f6-8ec9-3ef0166107ef"}}},{"type":"Polygon Vertex","name":"-4-","id":"41b893b7-8450-497e-a10e-378e2aad4f86","savedPayload":{"position":{"x":12549.705420679315,"y":10162.871690624499},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-4-","id":"2e60f4be-e8cc-4489-81f6-27fa3f61921b"}}},{"type":"Polygon Vertex","name":"-5-","id":"b298e992-97da-4b07-b1b5-2419ef56b05a","savedPayload":{"position":{"x":12621.14538227319,"y":10219.833486475736},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-5-","id":"1740e52b-986e-49cf-bb3f-c373200c4449"}}},{"type":"Polygon Vertex","name":"-6-","id":"c38d5012-bbf9-4b31-916a-e98a2557f2c3","savedPayload":{"position":{"x":12683.579723535302,"y":10286.353118900364},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-6-","id":"c8b169eb-6d38-41ab-bc48-e5a08c6f9f45"}}},{"type":"Polygon Vertex","name":"-7-","id":"fd3144a6-1558-42b5-82d8-54975ee48863","savedPayload":{"position":{"x":12740.522915933889,"y":10370.39277722574},"targetPosition":{"x":12189.008309004239,"y":10687.867530849851},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"-7-","id":"f5cee1fe-b34d-47e5-8d4a-26061487b242"}}}],"id":"f8d58d58-6d2e-454f-ae56-4f57ab357a85","savedPayload":{"position":{"x":12223.891295761274,"y":10780.059084585857},"targetPosition":{"x":11996.288685770072,"y":11335.876531559219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"01e600b6-8d17-4ea5-bb31-30308e68433e","savedPayload":{"position":{"x":11996.288685770072,"y":11335.876531559219},"targetPosition":{"x":12397.657402922323,"y":11781.568320022714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Three-Candles Patterns","code":"{ \n\"codeName\": \"Three-Candles Patterns\"\n}","panelData":[{"type":"Panel Data","name":"Pattern Name","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.name","id":"5a0d3dea-2329-4eb2-8c13-a112d1f03368","savedPayload":{"position":{"x":12520.225192568534,"y":11274.495236933637},"targetPosition":{"x":12752.031876878431,"y":11465.487959759146},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8b719d3b-612d-4978-bde8-a748068d4366","savedPayload":{"position":{"x":12752.031876878431,"y":11465.487959759146},"targetPosition":{"x":12984.005202484354,"y":11656.548224762046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Direction","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trend","id":"9d7f27b8-56b3-4b97-a3b4-1687a546f367","savedPayload":{"position":{"x":12992.798571351457,"y":11055.225497182697},"targetPosition":{"x":12988.381012769514,"y":11355.809115148824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bdf5aa9a-a121-4275-969e-5eed6ebd878d","savedPayload":{"position":{"x":12988.381012769514,"y":11355.809115148824},"targetPosition":{"x":12984.005202484354,"y":11656.548224762046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Forecast","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.forecast","id":"04bc641a-62a0-4441-b4d5-58fa30fe413e","savedPayload":{"position":{"x":13459.347048368,"y":11288.32697847158},"targetPosition":{"x":13221.660400327579,"y":11472.36407937657},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6ddacd18-8603-4112-bd00-80fe0cb03dcb","savedPayload":{"position":{"x":13221.660400327579,"y":11472.36407937657},"targetPosition":{"x":12984.005202484354,"y":11656.548224762046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Method","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trendMethod","id":"3b43a0f7-d76f-4b8a-8228-9b0282826022","savedPayload":{"position":{"x":13568.094005273182,"y":11796.631855760772},"targetPosition":{"x":13275.698912066033,"y":11726.80305203203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"950a394b-df06-4b90-88fc-b59cb3cc1cb5","savedPayload":{"position":{"x":13275.698912066033,"y":11726.80305203203},"targetPosition":{"x":12984.005202484354,"y":11656.548224762046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Period","code":"{\n \"valueDecimals\": 0\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.period","id":"2b0825d5-9e69-4b0a-861a-c88870b859c4","savedPayload":{"position":{"x":13235.632770919176,"y":12200.615384520046},"targetPosition":{"x":13109.834091389432,"y":11928.5188774151},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"63fbe7e3-b323-40ea-bfdc-0aac0df03c0f","savedPayload":{"position":{"x":13109.834091389432,"y":11928.5188774151},"targetPosition":{"x":12984.005202484354,"y":11656.548224762046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Trend Line Value","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.trendLine","id":"e838b1bb-2079-479e-b85a-38019fca078d","savedPayload":{"position":{"x":12714.895621827774,"y":12192.691719649098},"targetPosition":{"x":12849.570038510854,"y":11924.688453015544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f36e0123-4262-45d3-8e18-699407c0bb78","savedPayload":{"position":{"x":12849.570038510854,"y":11924.688453015544},"targetPosition":{"x":12984.005202484354,"y":11656.548224762046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1f14d068-2fc4-42b5-8edf-7d552f50d1ed","savedPayload":{"position":{"x":12984.005202484354,"y":11656.548224762046},"targetPosition":{"x":12397.657402922323,"y":11781.568320022714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"acdb9c43-0859-42be-87b0-1a600cf513d4","savedPayload":{"position":{"x":12212.794578909132,"y":11536.541369818186},"targetPosition":{"x":11944.774819498161,"y":12362.05365917036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e10e4374-b30c-4974-b2ff-bd789f50fde2","savedPayload":{"position":{"x":11944.774819498161,"y":12362.05365917036},"targetPosition":{"x":12813.422748313864,"y":12362.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"38d04c99-51a6-4c1c-853e-ba67e216854b","savedPayload":{"position":{"x":12813.422748313864,"y":12362.02928226611},"targetPosition":{"x":12813.422748313864,"y":12362.02928226611},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Data Mine","name":"Alpha","code":"{ \n\"codeName\": \"Alpha\"\n}","sensorBots":[],"indicatorBots":[{"type":"Indicator Bot","name":"ATR","code":"{\n\"codeName\": \"ATR\",\n\"repo\": \"ATR-Indicator-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates RSI.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market ATR - SMA","id":"5cdfa018-5ade-469b-90bf-cc523ef0a46e","savedPayload":{"position":{"x":19540.694557315,"y":11294.614350985486},"targetPosition":{"x":19767.55515705632,"y":11574.605365486632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2570d2c7-72e3-4131-97dc-a9f97f493e93"}}},{"type":"Output Dataset","name":"Multi-Period-Market ATR - RMA","id":"e7e58e02-fef8-4400-9928-f29805a96f98","savedPayload":{"position":{"x":19711.43986668846,"y":11218.750183637469},"targetPosition":{"x":19767.55515705632,"y":11574.605365486632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"67695466-be2d-43b4-9824-83baa7a08412"}}}],"id":"b345304f-fbb3-4889-934a-8f9b4941ed29","savedPayload":{"position":{"x":19743.791948943348,"y":11520.962494010673},"targetPosition":{"x":19899.170067374667,"y":11869.702220371704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","code":"{\"mainUtility\": \"Market Ending Point\"}","id":"eb499527-0f18-45f9-99ab-a7bc7fabb3aa","savedPayload":{"position":{"x":19722.063526028713,"y":11287.520897281545},"targetPosition":{"x":19933.092888333613,"y":11548.255554352378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}},{"type":"Status Dependency","name":"ATR Multi-Period-Market","code":"{\"mainUtility\": \"Self Reference\"}","id":"025a6f70-c187-4b4d-aa62-6f4ebfc116ba","savedPayload":{"position":{"x":19968.02248758303,"y":11214.645272662077},"targetPosition":{"x":19933.092888333613,"y":11548.255554352378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"8a6c8b1e-950d-4819-88a9-9c45272a0799"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"f25ba171-3c78-4e4f-acb8-66446be1ce0a","savedPayload":{"position":{"x":20196.459273429817,"y":11334.729584276689},"targetPosition":{"x":19933.092888333613,"y":11548.255554352378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"id":"bf337039-bd28-4f50-89d1-5115e631e6cf","savedPayload":{"position":{"x":19939.98761825652,"y":11481.493241239446},"targetPosition":{"x":19899.170067374667,"y":11869.702220371704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"8a6c8b1e-950d-4819-88a9-9c45272a0799","savedPayload":{"position":{"x":20121.664490215106,"y":11563.398333005694},"targetPosition":{"x":19899.170067374667,"y":11869.702220371704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"d150911d-47e9-4046-b365-ac817667cf32","savedPayload":{"position":{"x":20244.88001750722,"y":11715.79418806677},"targetPosition":{"x":19899.170067374667,"y":11869.702220371704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"faac5fcf-e7b2-4883-84bd-427aa74bc3c1","savedPayload":{"position":{"x":20281.873987192484,"y":11909.783936376038},"targetPosition":{"x":19899.170067374667,"y":11869.702220371704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"83a07439-ad71-463a-9727-5f43ad0b03d2","savedPayload":{"position":{"x":20021.68884411221,"y":11807.923474517225},"targetPosition":{"x":19597.443779645095,"y":12392.131380058767},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Calculates RSI\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily ATR - SMA","id":"570c8470-a4ae-40a8-b647-d3859887c148","savedPayload":{"position":{"x":20181.68768373927,"y":11520.451838702782},"targetPosition":{"x":20200.639269300027,"y":11876.703044676911},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"93eb665f-d903-4825-9fb1-2783e917ac89"}}},{"type":"Output Dataset","name":"Multi-Period-Daily ATR - RMA","id":"60d2cf94-0cf3-4cdf-a2ec-69c012f74019","savedPayload":{"position":{"x":20362.80625647802,"y":11558.362450692179},"targetPosition":{"x":20200.639269300027,"y":11876.703044676911},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"e3d0bccf-5f97-4902-92df-4ac8fe8c41a8"}}}],"id":"d6545bbe-389f-4dbe-b31e-de9d7ad95e4b","savedPayload":{"position":{"x":20213.205314276413,"y":11819.497389057586},"targetPosition":{"x":20133.88691209768,"y":12192.761682979399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"ATR Multi-Period-Daily","code":"{\"mainUtility\": \"Self Reference\"}","id":"89b9660c-6005-4381-a692-e320b9422268","savedPayload":{"position":{"x":20280.38282592733,"y":11624.321457904096},"targetPosition":{"x":20349.84908759221,"y":11952.503730452483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"619713bc-8cf4-4152-b36d-d470361f8a3b"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","code":"{\"mainUtility\": \"Market Ending Point\"}","id":"6aba1eb8-b5b6-4749-a323-16016a453194","savedPayload":{"position":{"x":20486.233737141953,"y":11646.294417090689},"targetPosition":{"x":20349.84908759221,"y":11952.503730452483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","code":"{\"mainUtility\": \"Market Starting Point\"}","id":"77cb48bb-f6ca-4eba-ab3d-2b5583f7285a","savedPayload":{"position":{"x":20640.295517426694,"y":11784.868077802708},"targetPosition":{"x":20349.84908759221,"y":11952.503730452483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"b7383dbe-549f-4ffe-8764-9ea324d5025d","savedPayload":{"position":{"x":20683.437384151795,"y":11987.42358880939},"targetPosition":{"x":20349.84908759221,"y":11952.503730452483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"id":"e1b3e953-5756-4810-abcb-67535b51f3ca","savedPayload":{"position":{"x":20394.19384366787,"y":11904.124044843873},"targetPosition":{"x":20133.88691209768,"y":12192.761682979399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"619713bc-8cf4-4152-b36d-d470361f8a3b","savedPayload":{"position":{"x":20503.255190715267,"y":12072.901607728283},"targetPosition":{"x":20133.88691209768,"y":12192.761682979399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"54a8ad94-41a9-4b8d-83f7-c40056140ef4","savedPayload":{"position":{"x":20508.47049133572,"y":12272.400899063243},"targetPosition":{"x":20133.88691209768,"y":12192.761682979399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"0b02390a-fc39-4f1a-a53c-8bae1492e292","savedPayload":{"position":{"x":20418.14077313909,"y":12448.873838161331},"targetPosition":{"x":20133.88691209768,"y":12192.761682979399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"61dde091-7c09-4384-ab2d-1fec0dbef7c5","savedPayload":{"position":{"x":20284.172253765544,"y":12169.14376310339},"targetPosition":{"x":19597.443779645095,"y":12392.131380058767},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"ATR - RMA","code":"{\n \"codeName\": \"ATR-RMA\",\n \"singularVariableName\": \"atrRMA\",\n \"pluralVariableName\": \"atrRMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"67695466-be2d-43b4-9824-83baa7a08412","savedPayload":{"position":{"x":20055.791165376304,"y":12377.91970341903},"targetPosition":{"x":19828.05646049493,"y":12543.487906318767},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"e3d0bccf-5f97-4902-92df-4ac8fe8c41a8","savedPayload":{"position":{"x":20109.17942322549,"y":12543.872848415047},"targetPosition":{"x":19828.05646049493,"y":12543.487906318767},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"Begin","code":"record.current.begin","id":"a0cb3931-383f-4c9d-8f01-fe812c22181e","savedPayload":{"position":{"x":21132.709705337376,"y":12758.513508192202},"targetPosition":{"x":20985.004363543023,"y":12824.312388858858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e538eb1e-f296-4e00-bdbb-8a904c5b897a","savedPayload":{"position":{"x":20985.004363543023,"y":12824.312388858858},"targetPosition":{"x":20655.84795256234,"y":12971.025469649563},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"566fa39a-58b3-439a-a666-9c0d6927dfcc","savedPayload":{"position":{"x":21180.443745457265,"y":13025.852027049064},"targetPosition":{"x":21019.11544881625,"y":13009.0524064553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3a3dfa55-78be-4e15-90ae-b64d7db87d29","savedPayload":{"position":{"x":21019.11544881625,"y":13009.0524064553},"targetPosition":{"x":20655.84795256234,"y":12971.025469649563},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ATR2","code":"{\n \"codeName\": \"atr2\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.atr2","id":"fc05c629-916b-40a9-a62d-06b309420ee6","savedPayload":{"position":{"x":21078.46228080796,"y":13277.997509204379},"targetPosition":{"x":20947.47507234246,"y":13182.84698867347},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b4e9fd6c-b742-4378-851f-ec6a84183727","savedPayload":{"position":{"x":20947.47507234246,"y":13182.84698867347},"targetPosition":{"x":20655.84795256234,"y":12971.025469649563},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ATR3","code":"{\n \"codeName\": \"atr3\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.atr3","id":"2521d41c-60fa-421e-ba7d-8d9b6ff19477","savedPayload":{"position":{"x":20868.14134445537,"y":13448.147133127213},"targetPosition":{"x":20802.35315180968,"y":13300.26175026998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"039f8d7d-2ea5-44b1-b758-4f86a4445a63","savedPayload":{"position":{"x":20802.35315180968,"y":13300.26175026998},"targetPosition":{"x":20655.84795256234,"y":12971.025469649563},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ATR14","code":"{\n \"codeName\": \"atr14\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.atr14","id":"65b7d85e-1da0-4a77-b96f-eaa5d3b24036","savedPayload":{"position":{"x":20600.753404483705,"y":13495.20331029825},"targetPosition":{"x":20617.610606994192,"y":13334.284817681237},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c6b1bb6e-17b8-45ff-8a25-b1ae575dde04","savedPayload":{"position":{"x":20617.610606994192,"y":13334.284817681237},"targetPosition":{"x":20655.84795256234,"y":12971.025469649563},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2838dfa4-22e5-4583-9b08-fed43081af24","savedPayload":{"position":{"x":20224.331900501333,"y":12831.215086101498},"targetPosition":{"x":19828.05646049493,"y":12543.487906318767},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current // get current candle data\nlet tr = calculateTR() // get true range value\n\nvariable.atr2 = calculateATR(tr, 2, variable.previousATR2)\nvariable.atr3 = calculateATR(tr, 3, variable.previousATR3)\nvariable.atr14 = calculateATR(tr, 14, variable.previousATR14)\n\nvariable.prevClose = candle.close\nvariable.previousATR2 = variable.atr2\nvariable.previousATR3 = variable.atr3\nvariable.previousATR14 = variable.atr14\n\n/* Helper Functions */\n\n/* Calculate True Range */\nfunction calculateTR() {\n let hl = candle.max - candle.min\n \n if (variable.prevClose === 0) { return hl } // Return High-Low when previous Close is 0\n \n let hcp = Math.abs(candle.max - variable.prevClose)\n let lcp = Math.abs(candle.min - variable.prevClose)\n \n return Math.max(hl, hcp, lcp)\n}\n\n/* Calculate Average True Range - Smoothing Function RMA*/\nfunction calculateATR(source, length, previousATR) {\n return (source + (length - 1) * previousATR) / length\n}","id":"0814b5ad-81ed-4d17-ba6c-2ecad55f5f31","savedPayload":{"position":{"x":20291.237818182275,"y":13178.747843053263},"targetPosition":{"x":20109.127963387094,"y":13014.203918520374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"752cd82a-205d-43f5-b6ee-06f5c0a82f33","savedPayload":{"position":{"x":20109.127963387094,"y":13014.203918520374},"targetPosition":{"x":19927.656754821688,"y":12850.643468638344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.prevClose = 0\n\nvariable.previousATR2 = 0\nvariable.previousATR3 = 0\nvariable.previousATR14 = 0","id":"b1ee7e9d-a89a-4c18-beaf-9b1ebdc25dd1","savedPayload":{"position":{"x":19826.141427210616,"y":13329.891774186166},"targetPosition":{"x":19876.72056559559,"y":13089.677877123988},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c1dbc0e9-06b0-426a-9e7b-731bd1c2305f","savedPayload":{"position":{"x":19876.72056559559,"y":13089.677877123988},"targetPosition":{"x":19927.656754821688,"y":12850.643468638344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7779fc37-e563-4515-8c11-7732793ebfe0","savedPayload":{"position":{"x":19927.656754821688,"y":12850.643468638344},"targetPosition":{"x":19828.05646049493,"y":12543.487906318767},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"660570d1-36e0-4099-817c-6c8a29b32689","savedPayload":{"position":{"x":20283.75315274229,"y":12614.991949125668},"targetPosition":{"x":19597.443779645095,"y":12392.131380058767},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"ATR - RMA","id":"99088549-f1c0-4157-ba7e-ffd6dfd0d140"}}},{"type":"Product Definition","name":"ATR - SMA","code":"{\n \"codeName\": \"ATR-SMA\",\n \"singularVariableName\": \"atrSMA\",\n \"pluralVariableName\": \"atrSMAs\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"2570d2c7-72e3-4131-97dc-a9f97f493e93","savedPayload":{"position":{"x":19930.727826926264,"y":12787.448606863272},"targetPosition":{"x":19650.32550166926,"y":12787.724181498377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"93eb665f-d903-4825-9fb1-2783e917ac89","savedPayload":{"position":{"x":19876.97209366482,"y":12952.848271054223},"targetPosition":{"x":19650.32550166926,"y":12787.724181498377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"Begin","code":"record.current.begin","id":"8b1f8ca7-d741-489f-a1f9-3851920e6d59","savedPayload":{"position":{"x":20280.21713047124,"y":13353.464992661211},"targetPosition":{"x":20160.33888414868,"y":13328.157162833893},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7c4a6317-bc3a-45d8-9dcc-4c42fa6a653b","savedPayload":{"position":{"x":20160.33888414868,"y":13328.157162833893},"targetPosition":{"x":19801.81461090384,"y":13252.963222267617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"42ca9eb2-da3a-4972-8be8-756fa50a5585","savedPayload":{"position":{"x":20165.012627175838,"y":13579.725818990739},"targetPosition":{"x":20073.825186212325,"y":13497.89486164518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d4ccc9d1-616c-44e1-8019-f5dfbbac5d4c","savedPayload":{"position":{"x":20073.825186212325,"y":13497.89486164518},"targetPosition":{"x":19801.81461090384,"y":13252.963222267617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ATR2","code":"{\n \"codeName\": \"atr2\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.atr2","id":"fa760872-a812-4bc6-8fe4-8669ec91bbe0","savedPayload":{"position":{"x":19952.67783507161,"y":13718.715742933011},"targetPosition":{"x":19914.767382502672,"y":13600.625581917458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"02df8c90-68ec-44ef-8abf-fb7d255815d2","savedPayload":{"position":{"x":19914.767382502672,"y":13600.625581917458},"targetPosition":{"x":19801.81461090384,"y":13252.963222267617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ATR3","code":"{\n \"codeName\": \"atr3\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.atr3","id":"ee78802d-f297-45d6-8fa7-df7800ebf295","savedPayload":{"position":{"x":19699.652649231364,"y":13731.676247774276},"targetPosition":{"x":19725.905831999684,"y":13611.112153460686},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3e3dd4c6-8f81-4e2b-bcba-34d1ca11abf0","savedPayload":{"position":{"x":19725.905831999684,"y":13611.112153460686},"targetPosition":{"x":19801.81461090384,"y":13252.963222267617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"ATR14","code":"{\n \"codeName\": \"atr14\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.atr14","id":"fdcc52bb-2dd9-4597-8399-eba8f2e36639","savedPayload":{"position":{"x":19474.12248922578,"y":13616.027151533355},"targetPosition":{"x":19556.2958074621,"y":13525.253093214493},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"93cc0b1e-9414-406b-bbf7-7708bf303a9a","savedPayload":{"position":{"x":19556.2958074621,"y":13525.253093214493},"targetPosition":{"x":19801.81461090384,"y":13252.963222267617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"de04ae72-affd-4bea-aab2-d7e4b1e8345d","savedPayload":{"position":{"x":19801.702776923143,"y":13253.413949959593},"targetPosition":{"x":19650.32550166926,"y":12787.724181498377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current // get current candle data\nvariable.last14TR.push(calculateTR()) // Add the current true range value to last 14 array\n\nif (variable.last14TR.length > 14) {\n variable.last14TR.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 14 elements\n}\n\nvariable.atr2 = calculateATR(2)\nvariable.atr3 = calculateATR(3)\nvariable.atr14 = calculateATR(14)\nvariable.prevClose = candle.close\n\n/* Helper Functions */\n\n/* Calculate True Range */\nfunction calculateTR() {\n let hl = candle.max - candle.min\n \n if (variable.prevClose === 0) { return hl } // Return High-Low when previous Close is 0\n \n let hcp = Math.abs(candle.max - variable.prevClose)\n let lcp = Math.abs(candle.min - variable.prevClose)\n \n return Math.max(hl, hcp, lcp)\n}\n\n/* Calculate Average True Range - Smoothing Function SMA */\nfunction calculateATR(length) {\n /* We check we have enough values to make the calculation */\n if (variable.last14TR.length < length) { return 0 } // If we dont, we define the value is zero.\n\n let sum = 0 // Initialize sum variable. \n for (let i = variable.last14TR.length - length; i < variable.last14TR.length; i++) { // Iterate through the last periods\n sum = sum + variable.last14TR[i]\n }\n \n let atr = sum / length\n return atr\n}","id":"de821ecb-f4c2-4645-abe3-f2ec25c5b50f","savedPayload":{"position":{"x":19652.34479189979,"y":13572.027481120225},"targetPosition":{"x":19601.64854607521,"y":13332.209242000214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"81ad9ba0-f387-4884-8b7d-32ee9d44d73e","savedPayload":{"position":{"x":19601.64854607521,"y":13332.209242000214},"targetPosition":{"x":19551.389352931154,"y":13091.878082467412},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.last14TR = []\nvariable.prevClose = 0","id":"d388972a-f1b2-4b99-8406-35d07a7a5ab0","savedPayload":{"position":{"x":19284.31898897455,"y":13503.575009320777},"targetPosition":{"x":19417.729956523344,"y":13297.990583431465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ad6cc9e7-46c3-4500-924b-7523e5c9fa7f","savedPayload":{"position":{"x":19417.729956523344,"y":13297.990583431465},"targetPosition":{"x":19551.389352931154,"y":13091.878082467412},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4a310776-ce28-4e79-97fb-90fb350614c2","savedPayload":{"position":{"x":19551.389352931154,"y":13091.878082467412},"targetPosition":{"x":19650.32550166926,"y":12787.724181498377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d83ffb9c-d01c-49eb-991d-3dc31baac747","savedPayload":{"position":{"x":20025.225401736654,"y":12975.439545735604},"targetPosition":{"x":19597.443779645095,"y":12392.131380058767},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"ATR - SMA","id":"a6a3f5a6-8c33-482d-a922-5719afc35325"}}}],"id":"3f716c19-6b29-4a9e-aef4-e4a867838e57","savedPayload":{"position":{"x":19597.443779645095,"y":12392.131380058767},"targetPosition":{"x":18881.571706269082,"y":12398.127167364633},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Indicator Bot","name":"ROC","code":"{\n\"codeName\": \"ROC\",\n\"repo\": \"ROC-Indicator-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates RSI.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market ROC 32","id":"6687ee94-004b-4834-a145-867151c4e37c","savedPayload":{"position":{"x":19725.160753858156,"y":12763.496775473888},"targetPosition":{"x":19655.046898379842,"y":13025.759033860024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"41a488be-c66c-458d-99fc-490b9e8172ef"}}},{"type":"Output Dataset","name":"Multi-Period-Market ROC 76","id":"a27232dd-4d69-46b8-8d8e-67499c9ddc30","savedPayload":{"position":{"x":19890.305210792983,"y":12890.111637942933},"targetPosition":{"x":19655.046898379842,"y":13025.759033860024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"40268fec-e5e8-4b05-9f27-c4072ebda94a"}}},{"type":"Output Dataset","name":"Multi-Period-Market ROC 9","id":"bbeb8cb6-5465-45be-80a9-2cbb46e3f5fa","savedPayload":{"position":{"x":19917.55844991258,"y":13096.203434438241},"targetPosition":{"x":19655.046898379842,"y":13025.759033860024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"9c6b7d85-01f5-449c-a5be-9a357b6588bc"}}}],"id":"b6c54494-092a-4220-b0e9-1db9da7fd411","savedPayload":{"position":{"x":19655.046898379842,"y":13025.759033860024},"targetPosition":{"x":19343.558669255242,"y":13205.798680059266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","code":"{\"mainUtility\": \"Market Ending Point\"}","id":"5f954d97-d843-483e-919b-d94dd8329497","savedPayload":{"position":{"x":19550.68145663124,"y":11596.520335531219},"targetPosition":{"x":19761.71081893614,"y":11857.254992602051},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}},{"type":"Status Dependency","name":"ATR Multi-Period-Market","code":"{\"mainUtility\": \"Self Reference\"}","id":"7820dbef-88ab-4682-b542-88f6d2ae9f59","savedPayload":{"position":{"x":19796.640418185558,"y":11523.64471091175},"targetPosition":{"x":19761.71081893614,"y":11857.254992602051},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"87a0c5e3-20b4-48f7-a9db-4a9280ecb4b3"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"805d6b40-cc28-470f-8f39-67b2b48f155a","savedPayload":{"position":{"x":20025.077204032343,"y":11643.729022526362},"targetPosition":{"x":19761.71081893614,"y":11857.254992602051},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"id":"aa85fa69-abb3-4423-8d78-8bf1dd6c42d5","savedPayload":{"position":{"x":19710.90924213804,"y":13206.08578235407},"targetPosition":{"x":19343.558669255242,"y":13205.798680059266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"87a0c5e3-20b4-48f7-a9db-4a9280ecb4b3","savedPayload":{"position":{"x":19662.91163355698,"y":13390.121732296087},"targetPosition":{"x":19343.558669255242,"y":13205.798680059266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"3a6b674a-eb56-4f63-866b-f4e41dde72bb","savedPayload":{"position":{"x":19527.861812183583,"y":13524.428086648231},"targetPosition":{"x":19343.558669255242,"y":13205.798680059266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"c97508ab-c7eb-4047-911a-3ee3265c352b","savedPayload":{"position":{"x":19344.154675490336,"y":13579.836126026754},"targetPosition":{"x":19343.558669255242,"y":13205.798680059266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a2a141ba-08ed-4f30-9c7d-f811c6a7c571","savedPayload":{"position":{"x":19911.287443180714,"y":12982.768289600275},"targetPosition":{"x":19214.580430141195,"y":12982.842289535909},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Calculates RSI\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily ROC 32","id":"3c5e8fe8-cf8d-4a96-967a-2d4d534bbd71","savedPayload":{"position":{"x":19694.813162454055,"y":13213.10993483118},"targetPosition":{"x":19502.83201321254,"y":13405.16127075762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"30276899-0d68-40e3-9c35-a28442485b55"}}},{"type":"Output Dataset","name":"Multi-Period-Daily ROC 76","id":"daf0c646-8592-4fd2-9f7d-bab86663faaf","savedPayload":{"position":{"x":19774.266244533144,"y":13405.245790438114},"targetPosition":{"x":19502.83201321254,"y":13405.16127075762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"cb60d68b-b11d-4317-8830-65c212a8c728"}}},{"type":"Output Dataset","name":"Multi-Period-Daily ROC 9","id":"0dbd1ffd-047b-4bf7-a74a-9df95d5b534c","savedPayload":{"position":{"x":19694.519172519438,"y":13597.606600046518},"targetPosition":{"x":19502.83201321254,"y":13405.16127075762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"66f59b6d-9d4b-4cef-9ffd-aed019219809"}}}],"id":"09d69ba1-345f-4d96-b3e4-a98f1f778a70","savedPayload":{"position":{"x":19502.83201321254,"y":13405.16127075762},"targetPosition":{"x":19144.473641766526,"y":13404.929854800845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"ATR Multi-Period-Daily","code":"{\"mainUtility\": \"Self Reference\"}","id":"b1e59db1-0480-4533-940c-e6ede212b124","savedPayload":{"position":{"x":20109.000756529855,"y":11933.32089615377},"targetPosition":{"x":20178.467018194737,"y":12261.503168702156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"af0bcf3a-4021-4861-870a-a06f5aad8761"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","code":"{\"mainUtility\": \"Market Ending Point\"}","id":"67e616b0-72f4-4e9c-b144-e6f6bde5777b","savedPayload":{"position":{"x":20314.85166774448,"y":11955.293855340362},"targetPosition":{"x":20178.467018194737,"y":12261.503168702156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","code":"{\"mainUtility\": \"Market Starting Point\"}","id":"c4cbf20f-ff4e-4611-8e4a-4340231bc3c5","savedPayload":{"position":{"x":20468.91344802922,"y":12093.867516052382},"targetPosition":{"x":20178.467018194737,"y":12261.503168702156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"b95527eb-2205-43ef-a1e6-7d3a08219e27","savedPayload":{"position":{"x":20512.05531475432,"y":12296.423027059063},"targetPosition":{"x":20178.467018194737,"y":12261.503168702156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"id":"d1a1f76c-a070-4958-8821-b3abcac7b176","savedPayload":{"position":{"x":19460.305812197555,"y":13588.159955000754},"targetPosition":{"x":19144.473641766526,"y":13404.929854800845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"af0bcf3a-4021-4861-870a-a06f5aad8761","savedPayload":{"position":{"x":19327.281336688797,"y":13722.281023561742},"targetPosition":{"x":19144.473641766526,"y":13404.929854800845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"f75ad3de-ba1f-4c68-a869-1bdad8587c71","savedPayload":{"position":{"x":19144.473031513786,"y":13771.418547165526},"targetPosition":{"x":19144.473641766526,"y":13404.929854800845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"bd45fa4a-4611-4126-b746-e9d56b9991bd","savedPayload":{"position":{"x":18961.68898631771,"y":13721.550762992889},"targetPosition":{"x":19144.473641766526,"y":13404.929854800845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"eea3cb55-83e5-400f-acc4-b71f5631d351","savedPayload":{"position":{"x":19817.866893800958,"y":13331.247956544341},"targetPosition":{"x":19214.580430141195,"y":12982.842289535909},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"ROC 76","code":"{\n \"codeName\": \"ROC-76\",\n \"singularVariableName\": \"roc76\",\n \"pluralVariableName\": \"roc76s\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"40268fec-e5e8-4b05-9f27-c4072ebda94a","savedPayload":{"position":{"x":19030.34864503042,"y":13676.272325245165},"targetPosition":{"x":18788.664181471726,"y":13501.098621328412},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"cb60d68b-b11d-4317-8830-65c212a8c728","savedPayload":{"position":{"x":18880.85070624581,"y":13784.631820089697},"targetPosition":{"x":18788.664181471726,"y":13501.098621328412},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"Begin","code":"record.current.begin","id":"f3985849-3dba-4ab4-be09-45855ceb32a5","savedPayload":{"position":{"x":18806.584797696058,"y":14381.1597679653},"targetPosition":{"x":18744.664041849763,"y":14259.471367709006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ca08ef1e-44f8-4b51-8412-ab5ea4cd4383","savedPayload":{"position":{"x":18744.664041849763,"y":14259.471367709006},"targetPosition":{"x":18621.26792215029,"y":14017.383139707124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"f84ebdb9-1371-4a1b-a55a-ec0fff505e8d","savedPayload":{"position":{"x":18495.490713696177,"y":14405.917613749385},"targetPosition":{"x":18537.519386086544,"y":14275.924852427552},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"9b6434b8-6a14-4b15-9071-560f91991c1e","savedPayload":{"position":{"x":18537.519386086544,"y":14275.924852427552},"targetPosition":{"x":18621.26792215029,"y":14017.383139707124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Value","code":"{\n \"codeName\": \"value\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.value","id":"4b4cc4ab-233d-4366-bb1c-c6cf4945e87e","savedPayload":{"position":{"x":18257.78880729653,"y":14203.268572209845},"targetPosition":{"x":18379.25567592913,"y":14140.841723979383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a3ee4969-b28a-4d7c-9ceb-eba3ba2c8a21","savedPayload":{"position":{"x":18379.25567592913,"y":14140.841723979383},"targetPosition":{"x":18621.26792215029,"y":14017.383139707124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8b1a0793-6111-4773-b83f-4fdc596aebfc","savedPayload":{"position":{"x":18621.26792215029,"y":14017.383139707124},"targetPosition":{"x":18788.664181471726,"y":13501.098621328412},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current // get current candle data\n\n/* Calculate Rate of Change */\nvariable.value = calculateROC(candle.close, variable.length)\n\nvariable.lastCloses.push(candle.close) // Add the current close value to the last closes array.\n\nif (variable.lastCloses.length > variable.length) {\n variable.lastCloses.splice(0, 1) // Remove the first element of the array to keep it at a maximun of n elements.\n}\n\n/* Helper Functions */\n\n/* Calculate Rate of Change */\nfunction calculateROC(source, length) {\n /* Check if we have enough values to make the calculation */\n if (variable.lastCloses.length < length) { return 0 }\n \n /* Check if n-last candle close is zero, avoid division by zero */\n if (variable.lastCloses[0] === 0) { return 0 }\n \n return 100 * (source - variable.lastCloses[0]) / variable.lastCloses[0]\n}","id":"37483919-8084-4d28-8763-02cfd1bdc45d","savedPayload":{"position":{"x":18193.28849745237,"y":14107.620384145323},"targetPosition":{"x":18363.95140747102,"y":13897.017564812866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5eb39756-772a-4cc2-b0f2-4b7eab6abf57","savedPayload":{"position":{"x":18363.95140747102,"y":13897.017564812866},"targetPosition":{"x":18534.99498874619,"y":13685.698297930125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.length = 76\nvariable.lastCloses = []","id":"3157aaee-5248-4767-b339-45835c0cffa7","savedPayload":{"position":{"x":18027.6202237777,"y":13880.398163680065},"targetPosition":{"x":18280.99985798409,"y":13783.313018223416},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1392b12a-4221-4e2a-b692-cb7a07b40f84","savedPayload":{"position":{"x":18280.99985798409,"y":13783.313018223416},"targetPosition":{"x":18534.99498874619,"y":13685.698297930125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"bd3ccec7-4ec5-40e8-81f2-1402651648b7","savedPayload":{"position":{"x":18534.99498874619,"y":13685.698297930125},"targetPosition":{"x":18788.664181471726,"y":13501.098621328412},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9c2b6696-872f-44a4-b6b2-ab15a0c8541a","savedPayload":{"position":{"x":19562.586576845755,"y":13585.885528940908},"targetPosition":{"x":19214.580430141195,"y":12982.842289535909},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"ROC 76","id":"a21bb3ba-b24d-4163-b7d0-ea60220fc368"}}},{"type":"Product Definition","name":"ROC 32","code":"{\n \"codeName\": \"ROC-32\",\n \"singularVariableName\": \"roc32\",\n \"pluralVariableName\": \"roc32s\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"41a488be-c66c-458d-99fc-490b9e8172ef","savedPayload":{"position":{"x":18434.845747068022,"y":13551.884572025636},"targetPosition":{"x":18434.718192758995,"y":13253.645967184615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"30276899-0d68-40e3-9c35-a28442485b55","savedPayload":{"position":{"x":18259.372731956348,"y":13494.611076404206},"targetPosition":{"x":18434.718192758995,"y":13253.645967184615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"Begin","code":"record.current.begin","id":"905bb06a-9b7f-4484-8031-22b0bdf76c79","savedPayload":{"position":{"x":17705.388049012345,"y":13839.629580005729},"targetPosition":{"x":17767.027384334884,"y":13719.104690733999},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"23ba960b-4a3f-410d-8d95-d7fb8419557e","savedPayload":{"position":{"x":17767.027384334884,"y":13719.104690733999},"targetPosition":{"x":17919.08470382006,"y":13420.870770425301},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"8b6f20e9-ffae-470f-9da0-0fc12d2bbd6d","savedPayload":{"position":{"x":17471.46249061923,"y":13566.571356509074},"targetPosition":{"x":17600.535439084742,"y":13524.253838239687},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"40737f74-0e6d-4ea4-9e77-023af6343601","savedPayload":{"position":{"x":17600.535439084742,"y":13524.253838239687},"targetPosition":{"x":17919.08470382006,"y":13420.870770425301},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Value","code":"{\n \"codeName\": \"value\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.value","id":"11ce21e7-ebc3-401d-b550-7b129f3f86b5","savedPayload":{"position":{"x":17499.349361137687,"y":13207.351890017804},"targetPosition":{"x":17619.98063030556,"y":13268.348143873096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"4bae0e4f-fa97-4b6e-99de-a61bd75014b1","savedPayload":{"position":{"x":17619.98063030556,"y":13268.348143873096},"targetPosition":{"x":17919.08470382006,"y":13420.870770425301},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"048e2c90-bb92-4b32-a847-f337d3953392","savedPayload":{"position":{"x":17918.418054325055,"y":13421.461990610305},"targetPosition":{"x":18434.718192758995,"y":13253.645967184615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current // get current candle data\n\n/* Calculate Rate of Change */\nvariable.value = calculateROC(candle.close, variable.length)\n\nvariable.lastCloses.push(candle.close) // Add the current close value to the last closes array.\n\nif (variable.lastCloses.length > variable.length) {\n variable.lastCloses.splice(0, 1) // Remove the first element of the array to keep it at a maximun of n elements.\n}\n\n/* Helper Functions */\n\n/* Calculate Rate of Change */\nfunction calculateROC(source, length) {\n /* Check if we have enough values to make the calculation */\n if (variable.lastCloses.length < length) { return 0 }\n \n /* Check if n-last candle close is zero, avoid division by zero */\n if (variable.lastCloses[0] === 0) { return 0 }\n \n return 100 * (source - variable.lastCloses[0]) / variable.lastCloses[0]\n}","id":"f84b95ea-bfa6-4c2b-bf49-ff4810a11b97","savedPayload":{"position":{"x":17604.716773083586,"y":13268.805112718524},"targetPosition":{"x":17870.525348366566,"y":13212.570432003648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7848d1ed-fedd-4d0e-8ea6-1212b2d614e5","savedPayload":{"position":{"x":17870.525348366566,"y":13212.570432003648},"targetPosition":{"x":18136.194263637983,"y":13156.609439584587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.length = 32\nvariable.lastCloses = []","id":"858ab5d5-0fdc-406a-bbf8-18b648879abe","savedPayload":{"position":{"x":17680.4988119144,"y":12860.885344220427},"targetPosition":{"x":17908.369836097936,"y":13008.717656173774},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"428a7ff5-a19a-448d-92d9-d11815613c67","savedPayload":{"position":{"x":17908.369836097936,"y":13008.717656173774},"targetPosition":{"x":18136.194263637983,"y":13156.609439584587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"37ee9d85-7676-4ae0-956a-7c13706f4311","savedPayload":{"position":{"x":18136.194263637983,"y":13156.609439584587},"targetPosition":{"x":18434.718192758995,"y":13253.645967184615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ff5aacca-1783-4247-9702-ee5dd01fb3ff","savedPayload":{"position":{"x":19214.58990051731,"y":13679.092973229148},"targetPosition":{"x":19214.580430141195,"y":12982.842289535909},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"ROC 32","id":"7812b3a3-8375-4f0d-9671-acc05b256d74"}}},{"type":"Product Definition","name":"ROC 9","code":"{\n \"codeName\": \"ROC-9\",\n \"singularVariableName\": \"roc9\",\n \"pluralVariableName\": \"roc9s\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"9c6b7d85-01f5-449c-a5be-9a357b6588bc","savedPayload":{"position":{"x":18372.832467967546,"y":13505.244700265328},"targetPosition":{"x":18403.92996196783,"y":13205.853879295644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"66f59b6d-9d4b-4cef-9ffd-aed019219809","savedPayload":{"position":{"x":18202.57716165063,"y":13428.91941282875},"targetPosition":{"x":18403.92996196783,"y":13205.853879295644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"Begin","code":"record.current.begin","id":"d0c1361d-9b94-4eaf-9b94-b7fe36e11779","savedPayload":{"position":{"x":17617.622245002676,"y":13713.409210012951},"targetPosition":{"x":17691.114459685297,"y":13600.07142098532},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"805c77d6-442d-408a-b767-f0bc03b78d68","savedPayload":{"position":{"x":17691.114459685297,"y":13600.07142098532},"targetPosition":{"x":17873.618399216826,"y":13318.741878149442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"b9a17c63-21ea-4295-af8e-e6a3329c2b99","savedPayload":{"position":{"x":17413.200998338638,"y":13416.123821325793},"targetPosition":{"x":17546.466127855365,"y":13388.540595118517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fc34bcb4-0c85-4aa6-a08a-a78120167ed0","savedPayload":{"position":{"x":17546.466127855365,"y":13388.540595118517},"targetPosition":{"x":17873.618399216826,"y":13318.741878149442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Value","code":"{\n \"codeName\": \"value\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.value","id":"d035de65-da5d-4c9f-bf6f-390de346f264","savedPayload":{"position":{"x":17478.971988383786,"y":13063.179106553058},"targetPosition":{"x":17591.582518939143,"y":13135.915688587891},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2dda380a-bda1-4bc5-9132-86956e080f01","savedPayload":{"position":{"x":17591.582518939143,"y":13135.915688587891},"targetPosition":{"x":17873.618399216826,"y":13318.741878149442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"31966558-4e25-4512-bc6a-1a83d05affac","savedPayload":{"position":{"x":17872.826813857013,"y":13318.867978122576},"targetPosition":{"x":18403.92996196783,"y":13205.853879295644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current // get current candle data\n\n/* Calculate Rate of Change */\nvariable.value = calculateROC(candle.close, variable.length)\n\nvariable.lastCloses.push(candle.close) // Add the current close value to the last closes array.\n\nif (variable.lastCloses.length > variable.length) {\n variable.lastCloses.splice(0, 1) // Remove the first element of the array to keep it at a maximun of n elements.\n}\n\n/* Helper Functions */\n\n/* Calculate Rate of Change */\nfunction calculateROC(source, length) {\n /* Check if we have enough values to make the calculation */\n if (variable.lastCloses.length < length) { return 0 }\n \n /* Check if n-last candle close is zero, avoid division by zero */\n if (variable.lastCloses[0] === 0) { return 0 }\n \n return 100 * (source - variable.lastCloses[0]) / variable.lastCloses[0]\n}","id":"9073d856-36e6-4fbb-86a8-b0244be2ff2a","savedPayload":{"position":{"x":17571.381930060892,"y":13131.918281164266},"targetPosition":{"x":17842.11670601526,"y":13103.94488153992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8bb88eaa-9d57-470b-8bb4-b443917ce585","savedPayload":{"position":{"x":17842.11670601526,"y":13103.94488153992},"targetPosition":{"x":18111.528487440275,"y":13075.699067689091},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.length = 9\nvariable.lastCloses = []","id":"d8f4eb7f-979c-423f-96b4-519046ede40b","savedPayload":{"position":{"x":17689.403620045257,"y":12734.164811446211},"targetPosition":{"x":17901.068975006656,"y":12905.170392402359},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ed52861e-b8e3-40fa-88e8-2d7a1fde01d4","savedPayload":{"position":{"x":17901.068975006656,"y":12905.170392402359},"targetPosition":{"x":18111.528487440275,"y":13075.699067689091},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a77a13e5-83be-4f7d-803b-6a18e202ae7e","savedPayload":{"position":{"x":18111.528487440275,"y":13075.699067689091},"targetPosition":{"x":18403.92996196783,"y":13205.853879295644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"83bfd082-1c10-4c42-be63-379a2100cc0e","savedPayload":{"position":{"x":18867.234395096526,"y":13585.421618244005},"targetPosition":{"x":19214.580430141195,"y":12982.842289535909},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"ROC 9","id":"5ecd7465-9f89-4e20-bea9-2216863e2990"}}}],"id":"aa47dd1b-60cc-4ab1-8cd1-d5f54005e54c","savedPayload":{"position":{"x":19214.580430141195,"y":12982.842289535909},"targetPosition":{"x":18881.571706269082,"y":12398.127167364633},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Indicator Bot","name":"Stochastic","code":"{\n\"codeName\": \"Stochastic\",\n\"repo\": \"Stoch-Indicator-Bot\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates RSI.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market STOCH-14-3","id":"2c380e74-2851-45ff-975d-32344bb1ac34","savedPayload":{"position":{"x":18855.77622171023,"y":13812.610767381037},"targetPosition":{"x":18621.22933022813,"y":13622.585682439098},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"88b1ff0e-ad99-474c-8833-7b76a5a57ebd"}}}],"id":"40b215c0-0e30-4315-b501-1335125297ce","savedPayload":{"position":{"x":18621.22933022813,"y":13622.585682439098},"targetPosition":{"x":18331.585761296315,"y":13388.392453276338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","code":"{\"mainUtility\": \"Market Ending Point\"}","id":"5f810842-42b7-47cf-b1c8-cafff231ca57","savedPayload":{"position":{"x":19075.678242974358,"y":11365.699993101245},"targetPosition":{"x":19286.707605279258,"y":11626.434650172077},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}},{"type":"Status Dependency","name":"ATR Multi-Period-Market","code":"{\"mainUtility\": \"Self Reference\"}","id":"c8f7ce8f-1aee-4433-8395-e4b6c2e24ba7","savedPayload":{"position":{"x":19321.637204528677,"y":11292.824368481777},"targetPosition":{"x":19286.707605279258,"y":11626.434650172077},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"94b42891-942c-4026-aeff-60fd555096f4"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"7d9dc95c-39e1-45a4-b982-3d5bb0994db5","savedPayload":{"position":{"x":19550.073990375462,"y":11412.908680096389},"targetPosition":{"x":19286.707605279258,"y":11626.434650172077},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"id":"1262c170-5760-4cb8-8fbc-d8c002bf3a66","savedPayload":{"position":{"x":18466.729167877376,"y":13741.886449991094},"targetPosition":{"x":18331.585761296315,"y":13388.392453276338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"94b42891-942c-4026-aeff-60fd555096f4","savedPayload":{"position":{"x":18272.527899012082,"y":13761.420856638879},"targetPosition":{"x":18331.585761296315,"y":13388.392453276338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"8e13aff4-da04-49bb-81d2-322fd6d0b412","savedPayload":{"position":{"x":18093.60758947748,"y":13682.409352554403},"targetPosition":{"x":18331.585761296315,"y":13388.392453276338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"1824fa00-dd30-4cdc-acc0-01c2f29056c5"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"962fd00f-ab4c-4f0d-af74-a39c6c5a9c38","savedPayload":{"position":{"x":17978.52682557947,"y":13523.901083905244},"targetPosition":{"x":18331.585761296315,"y":13388.392453276338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6a6a6533-21a9-4be9-b2f0-ace1adfe45b8","savedPayload":{"position":{"x":18711.286978656062,"y":13672.14007568085},"targetPosition":{"x":18528.615740103796,"y":12989.70205259333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Process Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"description\": \"Calculates RSI\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Daily\",\n \"startDate\": {\n \"takeItFromStatusDependency\": 0\n },\n \"endDate\": {\n \"takeItFromStatusDependency\": 1\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Daily STOCH-14-3","id":"d834ef3b-b891-43d0-b5ba-ab072e0fc98b","savedPayload":{"position":{"x":18009.10901313675,"y":13816.473761881274},"targetPosition":{"x":17977.664712543876,"y":13516.785881431431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"4b941e0d-8b0a-41e2-bc20-54e0bc0d936a"}}}],"id":"3068bb07-0fec-4c91-bfc1-8060bfed5f51","savedPayload":{"position":{"x":17977.664712543876,"y":13516.785881431431},"targetPosition":{"x":17938.943929901136,"y":13147.767284143436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"ATR Multi-Period-Daily","code":"{\"mainUtility\": \"Self Reference\"}","id":"1cafc2e1-ea17-4b18-bd08-9ce02fd49de3","savedPayload":{"position":{"x":19633.997542872974,"y":11702.500553723796},"targetPosition":{"x":19703.463804537856,"y":12030.682826272183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"494234e3-13b6-4f90-a529-77b23ee55bc8"}}},{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Daily","code":"{\"mainUtility\": \"Market Ending Point\"}","id":"31a36ff7-480e-4472-8286-ab91f424d2f2","savedPayload":{"position":{"x":19839.848454087598,"y":11724.473512910388},"targetPosition":{"x":19703.463804537856,"y":12030.682826272183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"2a021da8-9feb-475e-90ab-1586968c17c7"}}},{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","code":"{\"mainUtility\": \"Market Starting Point\"}","id":"bf8a555b-95d9-4a79-8889-4b9e3fe0bc06","savedPayload":{"position":{"x":19993.91023437234,"y":11863.047173622408},"targetPosition":{"x":19703.463804537856,"y":12030.682826272183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Daily","id":"a38119ba-cc6a-4cc8-8138-c9fe971073c0","savedPayload":{"position":{"x":20037.05210109744,"y":12065.60268462909},"targetPosition":{"x":19703.463804537856,"y":12030.682826272183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"678a567c-f08d-49b9-813b-4e54fd6afadb"}}}],"id":"c9030a10-5dbe-4438-9b47-e3c2e21e9c45","savedPayload":{"position":{"x":17785.71876906697,"y":13491.090859295526},"targetPosition":{"x":17938.943929901136,"y":13147.767284143436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"494234e3-13b6-4f90-a529-77b23ee55bc8","savedPayload":{"position":{"x":17634.06428468486,"y":13369.286192643853},"targetPosition":{"x":17938.943929901136,"y":13147.767284143436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Daily","id":"0141c05e-dd7a-4466-b87c-6f5ff6248096","savedPayload":{"position":{"x":17564.808444021728,"y":13187.317365461593},"targetPosition":{"x":17938.943929901136,"y":13147.767284143436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"f29d08f9-e7c8-490c-8fca-14851a0d3dc3"}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","id":"e8651790-aada-42d6-85c7-b98b6bd2f7d6","savedPayload":{"position":{"x":17591.287609722538,"y":13013.233328832925},"targetPosition":{"x":17938.943929901136,"y":13147.767284143436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"6a39c43d-0ad2-4c98-ae06-6e40f55d1753","savedPayload":{"position":{"x":18175.353495551313,"y":13601.467129904027},"targetPosition":{"x":18528.615740103796,"y":12989.70205259333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Stoch-14-3-3","code":"{\n \"codeName\": \"Stoch-14-3-3\",\n \"singularVariableName\": \"stoch1433\",\n \"pluralVariableName\": \"stoch1433s\"\n}","datasets":[{"type":"Dataset Definition","name":"Multi-Period-Market","code":"{\n \"codeName\": \"Multi-Period-Market\",\n \"type\": \"Market Files\",\n \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\",\n \"fileName\": \"Data.json\"\n }","id":"88b1ff0e-ad99-474c-8833-7b76a5a57ebd","savedPayload":{"position":{"x":17720.29498236808,"y":13502.156568493436},"targetPosition":{"x":17846.797753736497,"y":13172.222914156924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Dataset Definition","name":"Multi-Period-Daily","code":"{\n \"codeName\": \"Multi-Period-Daily\",\n \"type\": \"Daily Files\",\n \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }","id":"4b941e0d-8b0a-41e2-bc20-54e0bc0d936a","savedPayload":{"position":{"x":17550.331875021802,"y":13364.479074073472},"targetPosition":{"x":17846.797753736497,"y":13172.222914156924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"record":{"type":"Record Definition","name":"New Record Definition","properties":[{"type":"Record Property","name":"Begin","code":"{\n \"codeName\": \"begin\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"Begin","code":"record.current.begin","id":"f75f0660-8a0c-44cb-bf93-db351ab8d05c","savedPayload":{"position":{"x":16838.59281151076,"y":13547.068233970831},"targetPosition":{"x":16947.26193566163,"y":13412.762097919227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8c35b00f-6b83-47b6-8f23-ecef14656d97","savedPayload":{"position":{"x":16947.26193566163,"y":13412.762097919227},"targetPosition":{"x":17174.349660746233,"y":13132.026891695554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"End","code":"{\n \"codeName\": \"end\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"record.current.end","id":"c7303daa-523a-4153-ae52-a8cac30aa567","savedPayload":{"position":{"x":16658.955405392953,"y":13270.053465326806},"targetPosition":{"x":16825.59460782842,"y":13225.459677461678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"db80f524-af49-4d39-b4b4-d70d87e47745","savedPayload":{"position":{"x":16825.59460782842,"y":13225.459677461678},"targetPosition":{"x":17174.349660746233,"y":13132.026891695554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Fast Line","code":"{\n \"codeName\": \"fastLine\",\n \"isString\": false\n}","formula":{"type":"Formula","code":"variable.fastLine","id":"430718f7-482d-4a44-96ce-a85dd76680b1","savedPayload":{"position":{"x":16669.509972233398,"y":12938.631635627757},"targetPosition":{"x":16831.36441426541,"y":13000.578770073775},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a2b00adf-0b72-44cf-82a0-bcd6b95ff7c1","savedPayload":{"position":{"x":16831.36441426541,"y":13000.578770073775},"targetPosition":{"x":17174.349660746233,"y":13132.026891695554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Record Property","name":"Line","code":"{\n \"codeName\": \"slowLine\",\n \"isString\": false\n}","formula":{"type":"Formula","name":"New Formula","code":"variable.slowLine","id":"9ad4bcac-98b9-4880-93fe-a6319635384a","savedPayload":{"position":{"x":16865.47447802427,"y":12679.510858294429},"targetPosition":{"x":16977.93833628434,"y":12834.418208094547},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c7620ef0-d47f-4eba-ae08-386c7cae1491","savedPayload":{"position":{"x":16977.93833628434,"y":12834.418208094547},"targetPosition":{"x":17174.349660746233,"y":13132.026891695554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"77ed625d-dbbc-4dc0-a707-de3ca5066341","savedPayload":{"position":{"x":17141.266296672264,"y":13135.431821794456},"targetPosition":{"x":17846.797753736497,"y":13172.222914156924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"dataBuilding":{"type":"Data Building Procedure","name":"New Data Building Procedure","loop":{"type":"Procedure Loop","name":"New Procedure Loop","javascriptCode":{"type":"Javascript Code","code":"/* Loop Code */\n\nlet candle = record.current // get current candle data\nvariable.lastHighs.push(candle.max) // Add the current high value to the last highs array.\nvariable.lastLows.push(candle.min) // Add the current low value to the last lows array.\n\n/* Remove the first element of the array to keep it at a maximun of n elements */\nif (variable.lastHighs.length > variable.length) {\n variable.lastHighs.splice(0, 1)\n variable.lastLows.splice(0, 1)\n}\n\n/* Calculate Stoch - Signal */\nvariable.signal = calculateStoch(candle.close, variable.length)\n\n\nvariable.lastSignals.push(variable.signal)\n\n/* Remove the first element of the array to keep it at a maximun of n elements */\nif (variable.lastSignals.length > variable.smaFast) {\n variable.lastSignals.splice(0, 1)\n}\n\n/* Calculate Stoch - Fast Line */\nvariable.fastLine = calculateSMA(variable.lastSignals, variable.smaFast)\n\n\nvariable.lastSMAFast.push(variable.fastLine)\n\n/* Remove the first element of the array to keep it at a maximun of n elements */\nif (variable.lastSMAFast.length > variable.smaSlow) {\n variable.lastSMAFast.splice(0, 1)\n}\n\n/* Calculate Stoch - Slow Line */\nvariable.slowLine = calculateSMA(variable.lastSMAFast, variable.smaSlow)\n\n\n/* Helper Functions */\n\n/* Calculate Sochastic Signal */\nfunction calculateStoch(source, length) {\n /* Check if we have enough values to make the calculation */\n if (variable.lastHighs.length < length) { return 0 }\n \n /* Get highest high and lowest low of n-last elements */\n let high = Math.max(...variable.lastHighs)\n let low = Math.min(...variable.lastLows)\n\n /* Check on division by Zero */\n if(high === low) { return 0 }\n \n return 100 * (source - low) / (high - low)\n}\n\n/* Calculate Simple Moving Average */\nfunction calculateSMA(values, length) {\n /* We check we have enough values to make the calculation */\n if (values.length < length) { return 0 } // If we dont, we define the value is zero.\n\n let sum = 0 // Initialize sum variable. \n for (let i = values.length - length; i < values.length; i++) { // Iterate through the last periods\n sum = sum + values[i]\n }\n \n return sum / length\n}","id":"cb01047f-16aa-4507-8e97-a96d7a8bbb75","savedPayload":{"position":{"x":16875.25284495155,"y":12839.69715601294},"targetPosition":{"x":17224.039587747528,"y":12894.878820533304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2e7b0c32-92cc-4e9e-a130-ae33bc248b40","savedPayload":{"position":{"x":17224.039587747528,"y":12894.878820533304},"targetPosition":{"x":17572.564712519354,"y":12950.138124512776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"initialization":{"type":"Procedure Initialization","name":"New Procedure Initialization","javascriptCode":{"type":"Javascript Code","code":"/* Initialization Code*/\n\nvariable.length = 14\nvariable.smaFast = 3\nvariable.smaSlow = 3\n\nvariable.signal = 0\nvariable.lastSignals = []\nvariable.lastSMAFast = []\nvariable.lastHighs = []\nvariable.lastLows = []","id":"18cf20b6-0b7b-4520-9cf4-89ee085ab8b9","savedPayload":{"position":{"x":17157.417041952383,"y":12378.73636013669},"targetPosition":{"x":17364.952032741065,"y":12664.351554238166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bc5124f7-650e-476b-b997-1257e4f89c2f","savedPayload":{"position":{"x":17364.952032741065,"y":12664.351554238166},"targetPosition":{"x":17572.564712519354,"y":12950.138124512776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"169e9a70-4b42-426c-8d9a-b60c41ab7f17","savedPayload":{"position":{"x":17572.564712519354,"y":12950.138124512776},"targetPosition":{"x":17846.797753736497,"y":13172.222914156924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"393dc97b-76ee-409a-9b8f-f264ed652b0b","savedPayload":{"position":{"x":17846.60963961575,"y":13172.30333397981},"targetPosition":{"x":18528.615740103796,"y":12989.70205259333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Plotter Module","name":"Stoch 14-3-3","id":"6a85fbb1-5a99-4ccc-93e8-092f5dbf6c4a"}}}],"id":"87754aba-6878-4841-9688-352e8c565d16","savedPayload":{"position":{"x":18528.615740103796,"y":12989.70205259333},"targetPosition":{"x":18881.571706269082,"y":12398.127167364633},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"tradingBots":[],"plotters":[{"type":"Plotter","name":"ATR","code":"{\n\"codeName\": \"Plotter-ATR\"\n}","modules":[{"type":"Plotter Module","name":"ATR - RMA","code":"{\n\t\"codeName\": \"Module-ATR-RMA\",\n\t\"banner\": \"Oscillator\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"Grid","points":[{"type":"Point","name":"Begin 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"a7d2fc22-a7d8-4e61-ab21-f9a39f1d8c60","savedPayload":{"position":{"x":18055.685132929917,"y":13828.793110006838},"targetPosition":{"x":17997.23097095575,"y":14164.787795027485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2b15da18-c6ba-45b4-9c1d-35c84f50ec2c","savedPayload":{"position":{"x":17997.23097095575,"y":14164.787795027485},"targetPosition":{"x":17938.547246906925,"y":14500.788452522258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"95e093d9-e212-4ee4-abc0-6b5deffc8db6","savedPayload":{"position":{"x":18461.68188711102,"y":14063.319242537256},"targetPosition":{"x":18200.16284494789,"y":14281.854712606962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8c0ff77b-ba09-41be-9ff5-cb6d8bae710d","savedPayload":{"position":{"x":18200.16284494789,"y":14281.854712606962},"targetPosition":{"x":17938.547246906925,"y":14500.788452522258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-2 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.atr2","id":"75a4f710-e619-4578-ad51-a01b965800db","savedPayload":{"position":{"x":18621.647139150467,"y":14500.960830110685},"targetPosition":{"x":18280.08071661044,"y":14500.862323776284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a5d5cdc1-5731-4ec5-b8cd-001e4e62ef54","savedPayload":{"position":{"x":18280.08071661044,"y":14500.862323776284},"targetPosition":{"x":17938.547246906925,"y":14500.788452522258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-2 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.atr2","id":"fcb4421d-ee8a-4a27-8bd2-100cdb0cdbf9","savedPayload":{"position":{"x":18460.709727620877,"y":14939.832800649703},"targetPosition":{"x":18199.5214301649,"y":14720.219239982789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d548a98e-d369-45da-abaf-2e5a758e5379","savedPayload":{"position":{"x":18199.5214301649,"y":14720.219239982789},"targetPosition":{"x":17938.547246906925,"y":14500.788452522258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-3 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.atr3","id":"fb2683a4-a28c-4f2b-9345-93937db60072","savedPayload":{"position":{"x":18056.094182680783,"y":15172.597116587302},"targetPosition":{"x":17997.50861088432,"y":14837.377377012648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"08c720e8-2c9a-435d-baf4-06e38a7c7ce0","savedPayload":{"position":{"x":17997.50861088432,"y":14837.377377012648},"targetPosition":{"x":17938.547246906925,"y":14500.788452522258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-3 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.atr3","id":"bdb5b37c-6890-4186-9877-84c01b1672af","savedPayload":{"position":{"x":17596.58409039155,"y":15091.478813523077},"targetPosition":{"x":17767.61337253497,"y":14796.083045486579},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a25effcc-2adc-4fc1-939c-45630c3ccd75","savedPayload":{"position":{"x":17767.61337253497,"y":14796.083045486579},"targetPosition":{"x":17938.547246906925,"y":14500.788452522258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-14 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.atr14","id":"df8f75d2-2e35-4567-a43a-6ef38a1d9b6e","savedPayload":{"position":{"x":17296.83055069907,"y":14734.521369838003},"targetPosition":{"x":17617.321859538122,"y":14617.282598057069},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"87985d52-78d7-4796-9918-81c7a534035d","savedPayload":{"position":{"x":17617.321859538122,"y":14617.282598057069},"targetPosition":{"x":17938.547246906925,"y":14500.788452522258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-14 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.atr14","id":"9f5379b7-8632-4873-8534-a13505a8cd92","savedPayload":{"position":{"x":17296.91907332396,"y":14267.546323186858},"targetPosition":{"x":17617.738304080776,"y":14384.016485109469},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"48292688-3718-49fe-9580-97d9ac87fcd4","savedPayload":{"position":{"x":17617.738304080776,"y":14384.016485109469},"targetPosition":{"x":17938.547246906925,"y":14500.788452522258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a1cc0e5a-f1dd-4723-a632-51abeb3f696c","savedPayload":{"position":{"x":17938.547246906925,"y":14500.788452522258},"targetPosition":{"x":17258.66015426277,"y":13322.977126011327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Line 0","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.15,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"4f411d32-d31c-4f70-880d-14400f3f8e20","savedPayload":{"position":{"x":18174.134756197596,"y":13835.028030664007},"targetPosition":{"x":18023.061181611145,"y":13671.326917836559},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"18c69ccb-7152-4204-b34e-0d1d92840067","savedPayload":{"position":{"x":18023.061181611145,"y":13671.326917836559},"targetPosition":{"x":17808.703592583926,"y":13456.924920674637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"End 0","id":"e1973335-e34b-410f-8c60-6e4f77e4f7fc","savedPayload":{"position":{"x":17808.703656048856,"y":13759.916634358415},"targetPosition":{"x":17808.703592583926,"y":13456.924920674637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 0","id":"8c0ff77b-ba09-41be-9ff5-cb6d8bae710d"}}},{"type":"Polygon Vertex","name":"Begin 0","id":"5cf3f400-725e-4f2f-8fbb-f9d9d75210a9","savedPayload":{"position":{"x":17592.12879785055,"y":13673.689480015011},"targetPosition":{"x":17808.703592583926,"y":13456.924920674637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 0","id":"2b15da18-c6ba-45b4-9c1d-35c84f50ec2c"}}}],"id":"b24d41f5-7cc8-4b4b-a0a9-b31b5799c74c","savedPayload":{"position":{"x":17259.025358413637,"y":14004.974826754355},"targetPosition":{"x":17258.66015426277,"y":13322.977126011327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"ATR-14 Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"97f64b46-e6ae-4a56-89fe-808c11a09ec4","savedPayload":{"position":{"x":17720.637245691636,"y":13909.873136814102},"targetPosition":{"x":17662.511877513418,"y":13692.376354103842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"fab23f0e-9455-47a4-ba56-17c3ae1f0c7f","savedPayload":{"position":{"x":17662.511877513418,"y":13692.376354103842},"targetPosition":{"x":17583.396967239554,"y":13396.497021350437},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"ATR-14 End","id":"872ffd8b-6c72-42dc-90b4-2c8c73d89173","savedPayload":{"position":{"x":17430.2239149934,"y":13661.735451212251},"targetPosition":{"x":17583.396967239554,"y":13396.497021350437},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-14 End","id":"48292688-3718-49fe-9580-97d9ac87fcd4"}}},{"type":"Polygon Vertex","name":"ATR-14 Begin","id":"76fc0dd8-8e4c-4392-93a7-25c0906e6d90","savedPayload":{"position":{"x":17287.428772137977,"y":13475.78104434188},"targetPosition":{"x":17583.396967239554,"y":13396.497021350437},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-14 Begin","id":"87985d52-78d7-4796-9918-81c7a534035d"}}}],"id":"ecec9e37-265d-4f9e-8e82-68f6333fbbea","savedPayload":{"position":{"x":16917.22360652077,"y":13913.865694612798},"targetPosition":{"x":17258.66015426277,"y":13322.977126011327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"ATR-3 Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"0bf6c9ec-c077-4ec0-aee5-461ca992952f","savedPayload":{"position":{"x":16489.709862077732,"y":14322.40850387067},"targetPosition":{"x":16578.386811608343,"y":13993.225608699067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"e2ed8b31-4016-421b-b4a5-be4a1efe7dce","savedPayload":{"position":{"x":16578.386811608343,"y":13993.225608699067},"targetPosition":{"x":16667.32595063482,"y":13663.884399782282},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"ATR-3 Begin","id":"1f566a4a-a727-4315-bf57-98f6bda4f9f9","savedPayload":{"position":{"x":16371.352946229428,"y":13834.690364406119},"targetPosition":{"x":16667.32595063482,"y":13663.884399782282},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-3 Begin","id":"08c720e8-2c9a-435d-baf4-06e38a7c7ce0"}}},{"type":"Polygon Vertex","name":"ATR-3 End","id":"e2ebb5ae-1776-4084-b22d-f8bb1f0f9ce2","savedPayload":{"position":{"x":16337.972031723017,"y":13575.549451791101},"targetPosition":{"x":16667.32595063482,"y":13663.884399782282},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-3 End","id":"a25effcc-2adc-4fc1-939c-45630c3ccd75"}}}],"id":"faed1922-2c6f-404f-aa89-bd0279d4a7f6","savedPayload":{"position":{"x":16667.32595063482,"y":13663.884399782282},"targetPosition":{"x":17258.66015426277,"y":13322.977126011327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"ATR-2 Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"5cf73947-8357-482f-b35f-8e9b53437b6a","savedPayload":{"position":{"x":16985.113197148738,"y":13380.391825575309},"targetPosition":{"x":17144.385587085086,"y":13221.080172431155},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"4caa937b-ddf0-4ca2-af43-2d464ccad98d","savedPayload":{"position":{"x":17144.385587085086,"y":13221.080172431155},"targetPosition":{"x":17358.56148440116,"y":13006.871901606997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"ATR-2 Begin","id":"c163eb42-687b-4fba-9db6-0084e18e52ce","savedPayload":{"position":{"x":17055.58953690885,"y":13006.904479120069},"targetPosition":{"x":17358.56148440116,"y":13006.871901606997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-2 Begin","id":"a5d5cdc1-5731-4ec5-b8cd-001e4e62ef54"}}},{"type":"Polygon Vertex","name":"ATR-2 End","id":"a44429f7-6721-4619-9419-d14c0a30de19","savedPayload":{"position":{"x":17143.165353327367,"y":12791.480978173551},"targetPosition":{"x":17358.56148440116,"y":13006.871901606997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-2 End","id":"d548a98e-d369-45da-abaf-2e5a758e5379"}}}],"id":"2a6fc3b7-2f9f-4a82-8a96-c05208c308b6","savedPayload":{"position":{"x":16576.234093786657,"y":13322.591735920934},"targetPosition":{"x":17258.66015426277,"y":13322.977126011327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b5cf58d5-da89-4fff-83cc-000ac1095b32","savedPayload":{"position":{"x":17258.66015426277,"y":13322.977126011327},"targetPosition":{"x":17599.386970563453,"y":12733.068134251285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"ATR - RMA","code":"{ \n\"codeName\": \"Panel-ATR-RMA\"\n}","panelData":[{"type":"Panel Data","name":"ATR-2","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.atr2","id":"437acbb9-8126-4866-9a59-5624ab0212fa","savedPayload":{"position":{"x":16435.662175460406,"y":13214.400396110794},"targetPosition":{"x":16677.158656842,"y":12973.843464061061},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"08c2e812-c653-45fa-8350-f79c9be57419","savedPayload":{"position":{"x":16677.158656842,"y":12973.843464061061},"targetPosition":{"x":16917.9161495728,"y":12733.026121630275},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"ATR-3","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.atr3","id":"d1bb96e2-10c5-41c8-9599-b1220ca00fae","savedPayload":{"position":{"x":16235.732401570574,"y":12732.95632544197},"targetPosition":{"x":16576.651769773118,"y":12732.963294654257},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e940e706-b774-413a-9b2f-24d4f2d3403d","savedPayload":{"position":{"x":16576.651769773118,"y":12732.963294654257},"targetPosition":{"x":16917.9161495728,"y":12733.026121630275},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"ATR-14","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.atr14","id":"9d2b2ba5-4b4c-4323-b66f-25d703cd7522","savedPayload":{"position":{"x":16435.203338571147,"y":12250.799022970525},"targetPosition":{"x":16676.260182122198,"y":12491.534464262015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c4283089-0809-4a02-bb24-fb061af3430a","savedPayload":{"position":{"x":16676.260182122198,"y":12491.534464262015},"targetPosition":{"x":16917.9161495728,"y":12733.026121630275},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ea919b0e-a30e-44d7-8d5b-cd83f2c0c3e5","savedPayload":{"position":{"x":16917.9161495728,"y":12733.026121630275},"targetPosition":{"x":17599.386970563453,"y":12733.068134251285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"99088549-f1c0-4157-ba7e-ffd6dfd0d140","savedPayload":{"position":{"x":17599.386970563453,"y":12733.068134251285},"targetPosition":{"x":18190.45672762178,"y":12392.13186070438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Plotter Module","name":"ATR - SMA","code":"{\n\t\"codeName\": \"Module-ATR-SMA\",\n\t\"banner\": \"Oscillator\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"Grid","points":[{"type":"Point","name":"Begin 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"24c4ad6e-7531-4c02-a4d1-a92fa0c2d0bd","savedPayload":{"position":{"x":17687.347358901297,"y":12659.087231920039},"targetPosition":{"x":17475.997048549536,"y":12735.836462976924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8e1b746f-f708-49a5-9717-eebf4bb6c91a","savedPayload":{"position":{"x":17475.997048549536,"y":12735.836462976924},"targetPosition":{"x":17198.00521360073,"y":12836.901301106032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"96531747-4036-4cf3-91ce-53a592c111db","savedPayload":{"position":{"x":17687.31464066376,"y":13014.963732050945},"targetPosition":{"x":17475.693764670435,"y":12938.02727070709},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"51c6cdeb-f974-49f5-a8d6-4a3e4c57539e","savedPayload":{"position":{"x":17475.693764670435,"y":12938.02727070709},"targetPosition":{"x":17198.00521360073,"y":12836.901301106032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-2 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.atr2","id":"a0a91f69-8665-4c10-97ed-b344d46e24e9","savedPayload":{"position":{"x":17458.40593918341,"y":13287.882306913527},"targetPosition":{"x":17345.649465132883,"y":13092.86344385076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"84bd5028-9dd1-4128-b903-2e8e27afee2c","savedPayload":{"position":{"x":17345.649465132883,"y":13092.86344385076},"targetPosition":{"x":17198.00521360073,"y":12836.901301106032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-2 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.atr2","id":"b79ea353-e9af-486d-bd59-f647c1d34121","savedPayload":{"position":{"x":17107.54348471855,"y":13349.655011206967},"targetPosition":{"x":17146.69833124,"y":13127.912755996103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ebcf383a-71f7-4caf-8c4b-1334e60dfb49","savedPayload":{"position":{"x":17146.69833124,"y":13127.912755996103},"targetPosition":{"x":17198.00521360073,"y":12836.901301106032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-3 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.atr3","id":"5e321a40-2362-4534-b465-2a9989aecdf8","savedPayload":{"position":{"x":16799.075142384703,"y":13171.616586518163},"targetPosition":{"x":16971.693019986687,"y":13026.822262331472},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"806649c5-aef9-4da4-8c8a-e041bc9e71e2","savedPayload":{"position":{"x":16971.693019986687,"y":13026.822262331472},"targetPosition":{"x":17198.00521360073,"y":12836.901301106032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-3 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.atr3","id":"210cdd54-6060-47ff-be8a-06d80daf1438","savedPayload":{"position":{"x":16647.26758167611,"y":12836.908250234846},"targetPosition":{"x":16877.427742078205,"y":12836.900042933874},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e5945b52-ef11-4a12-9503-8c8accbefcc5","savedPayload":{"position":{"x":16877.427742078205,"y":12836.900042933874},"targetPosition":{"x":17198.00521360073,"y":12836.901301106032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-14 Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.atr14","id":"37501854-7854-49b5-8ab0-d36febe18a65","savedPayload":{"position":{"x":16798.770867507974,"y":12502.391902331092},"targetPosition":{"x":16971.44533439535,"y":12647.04104216763},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"57b4f263-265b-4a4f-9470-6c1503961d61","savedPayload":{"position":{"x":16971.44533439535,"y":12647.04104216763},"targetPosition":{"x":17198.00521360073,"y":12836.901301106032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"ATR-14 End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.atr14","id":"8395b74a-3ceb-49b7-a2e5-f7b00866bd7b","savedPayload":{"position":{"x":17105.507774231693,"y":12320.22751447448},"targetPosition":{"x":17146.218276745887,"y":12543.23097364016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"79026076-fe40-4641-a1c7-903c20ecff2d","savedPayload":{"position":{"x":17146.218276745887,"y":12543.23097364016},"targetPosition":{"x":17198.00521360073,"y":12836.901301106032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"bfab9870-bf09-49c5-86cd-975ee33e64ca","savedPayload":{"position":{"x":17134.106465526525,"y":12945.212943171133},"targetPosition":{"x":17583.438845349985,"y":12166.968102049017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Line 0","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.15,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"2f3896e2-233c-4413-b989-bb111636a6f1","savedPayload":{"position":{"x":17034.391677906846,"y":12936.195978565798},"targetPosition":{"x":17105.82544606901,"y":12720.26417673597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"9e5ef462-76d3-417a-8e33-9481761ba313","savedPayload":{"position":{"x":17105.82544606901,"y":12720.26417673597},"targetPosition":{"x":17193.72847434822,"y":12392.160047949566},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"End 0","id":"510f0f9c-b8c3-405f-93fa-150f2ba98b44","savedPayload":{"position":{"x":16901.054426152426,"y":12561.02867252085},"targetPosition":{"x":17193.72847434822,"y":12392.160047949566},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 0","id":"51c6cdeb-f974-49f5-a8d6-4a3e4c57539e"}}},{"type":"Polygon Vertex","name":"Begin 0","id":"aac1fbbe-4728-4c97-92ea-7ab4ab1e976a","savedPayload":{"position":{"x":16862.394582387762,"y":12303.55610303666},"targetPosition":{"x":17193.72847434822,"y":12392.160047949566},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 0","id":"8e1b746f-f708-49a5-9717-eebf4bb6c91a"}}}],"id":"dae87eed-2840-45ec-b8fd-97868408e748","savedPayload":{"position":{"x":17193.525000625013,"y":12392.116741822398},"targetPosition":{"x":17583.438845349985,"y":12166.968102049017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"ATR-14 Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.GOLDEN_ORANGE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"7026f16e-1ad8-4eaa-bbab-ce47b2ad820d","savedPayload":{"position":{"x":16757.474935054142,"y":12542.758950277164},"targetPosition":{"x":16916.66375456743,"y":12383.660362622877},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"f8abfda8-11a5-4159-8b25-70b123bb3da8","savedPayload":{"position":{"x":16916.66375456743,"y":12383.660362622877},"targetPosition":{"x":17133.42299761647,"y":12166.986979524985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"ATR-14 End","id":"aa7480fd-e24a-43db-b0b9-96fbbf6a8190","savedPayload":{"position":{"x":16827.008406839977,"y":12166.991427767647},"targetPosition":{"x":17133.42299761647,"y":12166.986979524985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-14 End","id":"79026076-fe40-4641-a1c7-903c20ecff2d"}}},{"type":"Polygon Vertex","name":"ATR-14 Begin","id":"a0c299f5-5134-4d5f-9f32-1589e26f8e94","savedPayload":{"position":{"x":16916.653429910566,"y":11950.465781920406},"targetPosition":{"x":17133.42299761647,"y":12166.986979524985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-14 Begin","id":"57b4f263-265b-4a4f-9470-6c1503961d61"}}}],"id":"60444df5-1f4a-4553-92bb-5af88cc3b422","savedPayload":{"position":{"x":17133.127134276827,"y":12166.963220842968},"targetPosition":{"x":17583.438845349985,"y":12166.968102049017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"ATR-3 Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"0fdd9432-2ce4-4f80-987e-6683bee9b731","savedPayload":{"position":{"x":16676.96022243059,"y":12080.094809646615},"targetPosition":{"x":16894.674283148684,"y":12021.891138291772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"89eab967-e7d1-4bf5-b4d0-3919f59392bb","savedPayload":{"position":{"x":16894.674283148684,"y":12021.891138291772},"targetPosition":{"x":17193.71455006541,"y":11941.928100809966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"ATR-3 Begin","id":"74dc9232-405c-4361-a9c1-52b0cb48a8ab","savedPayload":{"position":{"x":16926.94444775602,"y":11787.900248014204},"targetPosition":{"x":17193.71455006541,"y":11941.928100809966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-3 Begin","id":"806649c5-aef9-4da4-8c8a-e041bc9e71e2"}}},{"type":"Polygon Vertex","name":"ATR-3 End","id":"f5142bc0-0a8a-4b51-bb55-37d55d2b07b2","savedPayload":{"position":{"x":17113.590820417645,"y":11642.838666767519},"targetPosition":{"x":17193.71455006541,"y":11941.928100809966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-3 End","id":"e5945b52-ef11-4a12-9503-8c8accbefcc5"}}}],"id":"61c9a80d-5f39-438c-9c90-9ebb93e3ebf1","savedPayload":{"position":{"x":17193.47612085658,"y":11941.844787234544},"targetPosition":{"x":17583.438845349985,"y":12166.968102049017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"ATR-2 Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"3cd2a5a6-65a3-4459-9b82-9df07a560744","savedPayload":{"position":{"x":16846.91544366638,"y":11640.022527786441},"targetPosition":{"x":17064.385851869756,"y":11698.255545298909},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"7e31615a-3abe-4749-be9c-9d4e7d0e8290","savedPayload":{"position":{"x":17064.385851869756,"y":11698.255545298909},"targetPosition":{"x":17358.642104168863,"y":11777.117294754915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"ATR-2 Begin","id":"05f68187-ffcb-4e54-9ff2-c46dc076fded","savedPayload":{"position":{"x":17206.32813329217,"y":11513.201502033393},"targetPosition":{"x":17358.642104168863,"y":11777.117294754915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-2 Begin","id":"84bd5028-9dd1-4128-b903-2e8e27afee2c"}}},{"type":"Polygon Vertex","name":"ATR-2 End","id":"fde40884-dc75-4eb5-b93d-b8ec1d19d93a","savedPayload":{"position":{"x":17437.424154256605,"y":11482.781807725782},"targetPosition":{"x":17358.642104168863,"y":11777.117294754915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"ATR-2 End","id":"ebcf383a-71f7-4caf-8c4b-1334e60dfb49"}}}],"id":"ae2cd4db-eebd-4bda-813a-9d9a788f8838","savedPayload":{"position":{"x":17358.409309874267,"y":11776.975724931752},"targetPosition":{"x":17583.438845349985,"y":12166.968102049017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9a053fa4-ca14-432c-8927-15ef216b2faf","savedPayload":{"position":{"x":17091.237490237247,"y":12081.023327245777},"targetPosition":{"x":17712.237480038297,"y":12081.024666381356},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"ATR - SMA","code":"{ \n\"codeName\": \"Panel-ATR-SMA\"\n}","panelData":[{"type":"Panel Data","name":"ATR-2","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.atr2","id":"71d72170-f480-46e5-9fb7-3f79eef990d6","savedPayload":{"position":{"x":16800.990791924494,"y":11382.527353204117},"targetPosition":{"x":17101.430249446214,"y":11462.966101248006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"00581f1e-843d-436b-8625-71b0814676f7","savedPayload":{"position":{"x":17101.430249446214,"y":11462.966101248006},"targetPosition":{"x":17401.87861408248,"y":11543.331090115795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"ATR-3","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.atr3","id":"ac407a65-ed19-4863-b039-0e53dcf6744d","savedPayload":{"position":{"x":17090.93885658292,"y":11004.545349160739},"targetPosition":{"x":17246.414687805292,"y":11273.94772729892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bded503d-8475-4b34-886e-ec67a698a06d","savedPayload":{"position":{"x":17246.414687805292,"y":11273.94772729892},"targetPosition":{"x":17401.87861408248,"y":11543.331090115795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"ATR-14","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.atr14","id":"07af6d07-5ef8-4c38-a1c4-5f07355e9274","savedPayload":{"position":{"x":17562.605665234852,"y":10942.479093170925},"targetPosition":{"x":17482.282785115403,"y":11242.918728183697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0eda57d2-0c10-4511-b3ab-7c6f1c5b953a","savedPayload":{"position":{"x":17482.282785115403,"y":11242.918728183697},"targetPosition":{"x":17401.87861408248,"y":11543.331090115795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d841e272-ce7b-4f3d-9774-545f69e8fc79","savedPayload":{"position":{"x":17401.87861408248,"y":11543.331090115795},"targetPosition":{"x":17712.237480038297,"y":12081.024666381356},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a6a3f5a6-8c33-482d-a922-5719afc35325","savedPayload":{"position":{"x":17598.81906481845,"y":12051.025215165184},"targetPosition":{"x":18190.45672762178,"y":12392.13186070438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"17f8f37a-bf30-4c1d-82f2-f587830576a0","savedPayload":{"position":{"x":18190.45672762178,"y":12392.13186070438},"targetPosition":{"x":18881.571706269082,"y":12398.127167364633},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"ROC","code":"{\n\"codeName\": \"Plotter-ROC\"\n}","modules":[{"type":"Plotter Module","name":"ROC 76","code":"{\n\t\"codeName\": \"Module-ROC-76\",\n\t\"banner\": \"Oscillator\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"Grid","points":[{"type":"Point","name":"Begin 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"5b9a08e3-0df5-4f24-9e46-cfd57c00dbda","savedPayload":{"position":{"x":17406.992814366535,"y":11851.159633584284},"targetPosition":{"x":17261.792684387776,"y":11627.348899554001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a39c9f60-84e3-4e05-8ef0-24539ac40325","savedPayload":{"position":{"x":17261.792684387776,"y":11627.348899554001},"targetPosition":{"x":17116.240941824464,"y":11403.311285063905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"7860512f-766c-4e66-be5f-7702f9c9f047","savedPayload":{"position":{"x":16779.593354617133,"y":11818.52577535549},"targetPosition":{"x":16947.913077389625,"y":11610.87355408107},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0fc534f6-3e3f-408a-b25b-f5c973ec0f63","savedPayload":{"position":{"x":16947.913077389625,"y":11610.87355408107},"targetPosition":{"x":17116.240941824464,"y":11403.311285063905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Value Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.value","id":"721530f2-7ad7-411e-b73a-69d45c002577","savedPayload":{"position":{"x":16617.550601998315,"y":11211.875801217466},"targetPosition":{"x":16866.946654805935,"y":11307.507001132817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3b4f240c-66f5-4a3f-9527-47ea197ccf47","savedPayload":{"position":{"x":16866.946654805935,"y":11307.507001132817},"targetPosition":{"x":17116.240941824464,"y":11403.311285063905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Value End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.value","id":"9eee04a2-4bc6-4277-9716-4db129bc6a03","savedPayload":{"position":{"x":17143.529661080633,"y":10869.67500959588},"targetPosition":{"x":17129.93204301985,"y":11136.375490185326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f1de1d87-6d4a-4aea-bf10-74d64ddfb4ed","savedPayload":{"position":{"x":17129.93204301985,"y":11136.375490185326},"targetPosition":{"x":17116.240941824464,"y":11403.311285063905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e60e3722-01e4-421e-a06f-371bcb71aac4","savedPayload":{"position":{"x":17116.240941824464,"y":11403.311285063905},"targetPosition":{"x":18144.532015858164,"y":11128.032988711795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Line 0","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.15,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"cc082fda-c47e-438f-8157-f2d870c218ac","savedPayload":{"position":{"x":17868.52381806802,"y":14185.489400617525},"targetPosition":{"x":17717.45024348157,"y":14021.788287790077},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"cc2ec800-b3ff-4031-8bdd-688d475b2d5e","savedPayload":{"position":{"x":17717.45024348157,"y":14021.788287790077},"targetPosition":{"x":17503.09265445435,"y":13807.386290628156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"End 0","id":"511d620d-335d-4b07-b181-ae732630d137","savedPayload":{"position":{"x":17503.09271791928,"y":14110.378004311933},"targetPosition":{"x":17503.09265445435,"y":13807.386290628156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 0","id":"0fc534f6-3e3f-408a-b25b-f5c973ec0f63"}}},{"type":"Polygon Vertex","name":"Begin 0","id":"ea7d0d25-e182-41a9-9451-99402984c131","savedPayload":{"position":{"x":17286.517859720974,"y":14024.15084996853},"targetPosition":{"x":17503.09265445435,"y":13807.386290628156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 0","id":"a39c9f60-84e3-4e05-8ef0-24539ac40325"}}}],"id":"526bbff1-0ab2-4b5f-ad73-6886c6ef295c","savedPayload":{"position":{"x":17682.045184041315,"y":10861.004171231216},"targetPosition":{"x":18144.532015858164,"y":11128.032988711795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Value","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"d0fdbc54-377b-4862-b50f-b4a4c97eac09","savedPayload":{"position":{"x":17635.833928131044,"y":10230.06468275755},"targetPosition":{"x":17843.18906864696,"y":10397.877924024182},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"d829f8bb-3737-4cef-ab7a-e92700ca7a6a","savedPayload":{"position":{"x":17843.18906864696,"y":10397.877924024182},"targetPosition":{"x":18088.372817145773,"y":10596.543808849678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Value Begin","id":"29d5faa8-13a8-45a0-ba94-f43c2c200222","savedPayload":{"position":{"x":18055.37542705741,"y":10283.267311272573},"targetPosition":{"x":18088.372817145773,"y":10596.543808849678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Value Begin","id":"3b4f240c-66f5-4a3f-9527-47ea197ccf47"}}},{"type":"Polygon Vertex","name":"Value End","id":"adf14091-c476-40aa-a560-fe8d90b8b8f3","savedPayload":{"position":{"x":18300.255024761238,"y":10334.631975618682},"targetPosition":{"x":18088.372817145773,"y":10596.543808849678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Value End","id":"f1de1d87-6d4a-4aea-bf10-74d64ddfb4ed"}}}],"id":"2e3e77ee-7057-47ca-b0fb-01f483c00949","savedPayload":{"position":{"x":18006.402911573205,"y":10612.07088209979},"targetPosition":{"x":18144.532015858164,"y":11128.032988711795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ae6b4dd4-c45f-4398-91cf-50cb16a36b42","savedPayload":{"position":{"x":18144.212029293973,"y":11128.08423212688},"targetPosition":{"x":18606.32433403636,"y":11394.731246452335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"ROC 76","code":"{ \n\"codeName\": \"Panel-ROC-76\"\n}","panelData":[{"type":"Panel Data","name":"Value","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.value","id":"f9921989-1157-49ad-894e-9f4e9d197d46","savedPayload":{"position":{"x":18606.32112368616,"y":10327.58791064278},"targetPosition":{"x":18606.326025237984,"y":10594.493665212141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fcffae02-a826-4058-930a-f1eba1c3c0dc","savedPayload":{"position":{"x":18606.326025237984,"y":10594.493665212141},"targetPosition":{"x":18606.32521470872,"y":10861.37799109762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b44763a3-2604-4204-9275-1c822bf7b85f","savedPayload":{"position":{"x":18606.32521470872,"y":10861.37799109762},"targetPosition":{"x":18606.32433403636,"y":11394.731246452335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a21bb3ba-b24d-4163-b7d0-ea60220fc368","savedPayload":{"position":{"x":18014.262491044592,"y":11732.177969060123},"targetPosition":{"x":18580.308926874874,"y":11884.11169474596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Plotter Module","name":"ROC 32","code":"{\n\t\"codeName\": \"Module-ROC-32\",\n\t\"banner\": \"Oscillator\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"Grid","points":[{"type":"Point","name":"Begin 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"360c9616-373e-4b79-8623-507a4e126b2d","savedPayload":{"position":{"x":17604.98237441362,"y":11118.384461437403},"targetPosition":{"x":17591.229574654408,"y":10851.64979348565},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3830e3a4-e15c-4f83-9530-9d24a940d5a6","savedPayload":{"position":{"x":17591.229574654408,"y":10851.64979348565},"targetPosition":{"x":17577.42729105981,"y":10584.919127966248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"251012cf-5083-4a10-932c-d6ffe369acc2","savedPayload":{"position":{"x":17078.440537628405,"y":10776.182614160492},"targetPosition":{"x":17327.92714659012,"y":10680.547923936325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"050405b7-8bd9-413b-b1cf-3ea9259b6e20","savedPayload":{"position":{"x":17327.92714659012,"y":10680.547923936325},"targetPosition":{"x":17577.42729105981,"y":10584.919127966248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Value Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.value","id":"f5e02d75-2c37-431b-91d2-e4ee89f6b4ca","savedPayload":{"position":{"x":17241.123353207342,"y":10169.618772219912},"targetPosition":{"x":17409.265977614832,"y":10377.264582030723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f277e303-3eb8-49f8-a70f-36e5fa6acb05","savedPayload":{"position":{"x":17409.265977614832,"y":10377.264582030723},"targetPosition":{"x":17577.42729105981,"y":10584.919127966248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Value End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.value","id":"a551a375-2f95-469d-9748-f5ffa94cb8a2","savedPayload":{"position":{"x":17868.191964464655,"y":10136.732573433423},"targetPosition":{"x":17722.817954721435,"y":10360.845317077976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"010b0145-7fa3-41bd-8d4c-ad221abe3f75","savedPayload":{"position":{"x":17722.817954721435,"y":10360.845317077976},"targetPosition":{"x":17577.42729105981,"y":10584.919127966248},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c45748d1-cb04-4a9f-8564-d6489e1ca532","savedPayload":{"position":{"x":17577.42729105981,"y":10584.919127966248},"targetPosition":{"x":18606.698400817477,"y":10860.652818248462},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Line 0","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.15,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"4f8b88e5-1ef4-4094-be2a-c62f3aace8a0","savedPayload":{"position":{"x":16728.78073977727,"y":13286.657348519317},"targetPosition":{"x":16800.214507939436,"y":13070.725546689488},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"5ecae3ca-c6ff-4de7-91c8-186c9d242586","savedPayload":{"position":{"x":16800.214507939436,"y":13070.725546689488},"targetPosition":{"x":16888.117536218644,"y":12742.621417903085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"End 0","id":"4d8a5169-ff68-4d76-bdda-70533b12857d","savedPayload":{"position":{"x":16595.44348802285,"y":12911.490042474368},"targetPosition":{"x":16888.117536218644,"y":12742.621417903085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 0","id":"050405b7-8bd9-413b-b1cf-3ea9259b6e20"}}},{"type":"Polygon Vertex","name":"Begin 0","id":"7562f064-db9f-48d1-b085-6b0378a9e230","savedPayload":{"position":{"x":16556.783644258187,"y":12654.01747299018},"targetPosition":{"x":16888.117536218644,"y":12742.621417903085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 0","id":"3830e3a4-e15c-4f83-9530-9d24a940d5a6"}}}],"id":"aadad370-9c78-49cd-8360-c290b42eb47c","savedPayload":{"position":{"x":18339.67022968422,"y":10397.976278044123},"targetPosition":{"x":18606.698400817477,"y":10860.652818248462},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Value Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"54dc15cf-f4b0-4575-92b5-32047ac32fef","savedPayload":{"position":{"x":19669.168863382667,"y":9941.703731163503},"targetPosition":{"x":19625.931158657007,"y":10206.996436563304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"7b8cb64d-2d91-4aea-9e7d-9d0541095294","savedPayload":{"position":{"x":19625.931158657007,"y":10206.996436563304},"targetPosition":{"x":19573.059732869016,"y":10546.911986658197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Value Begin","id":"e4131510-0ce7-4fcb-82f9-03582a5c861c","savedPayload":{"position":{"x":19852.424836159218,"y":10343.585150164916},"targetPosition":{"x":19573.059732869016,"y":10546.911986658197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Value Begin","id":"f277e303-3eb8-49f8-a70f-36e5fa6acb05"}}},{"type":"Polygon Vertex","name":"Value End","id":"8a780be1-a258-4af4-8450-e57384ff7bf0","savedPayload":{"position":{"x":19913.935523079446,"y":10599.503490989595},"targetPosition":{"x":19573.059732869016,"y":10546.911986658197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Value End","id":"010b0145-7fa3-41bd-8d4c-ad221abe3f75"}}}],"id":"2b87e0ff-d5a1-4b9b-b713-743f46573249","savedPayload":{"position":{"x":18744.87776797306,"y":10344.561854066611},"targetPosition":{"x":18606.698400817477,"y":10860.652818248462},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"66c3abab-2df5-4d90-a119-1a18c24536a5","savedPayload":{"position":{"x":18606.698400817477,"y":10860.652818248462},"targetPosition":{"x":18873.572201042774,"y":11322.987341033584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"ROC 32","code":"{ \n\"codeName\": \"Panel-ROC-32\"\n}","panelData":[{"type":"Panel Data","name":"Value","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.value","id":"a7d719e2-be07-47cc-a91c-ebdab4dbc814","savedPayload":{"position":{"x":19407.50689559955,"y":10397.832303380117},"targetPosition":{"x":19273.949907345563,"y":10629.241463686973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0aa50f71-8801-4d7c-b04e-136adbb3592a","savedPayload":{"position":{"x":19273.949907345563,"y":10629.241463686973},"targetPosition":{"x":19140.410899217204,"y":10860.65012411809},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4d4fdc48-dca1-47e8-8f2e-e595adf26c0e","savedPayload":{"position":{"x":19140.410899217204,"y":10860.65012411809},"targetPosition":{"x":18873.572201042774,"y":11322.987341033584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7812b3a3-8375-4f0d-9671-acc05b256d74","savedPayload":{"position":{"x":18286.891257449784,"y":11375.997477121864},"targetPosition":{"x":18580.308926874874,"y":11884.11169474596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Plotter Module","name":"ROC 9","code":"{\n\t\"codeName\": \"Module-ROC-9\",\n\t\"banner\": \"Oscillator\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"Grid","points":[{"type":"Point","name":"Begin 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"d30a2a69-8977-4528-aac6-abebe3aad8b1","savedPayload":{"position":{"x":17447.17456632643,"y":10740.670950426786},"targetPosition":{"x":17508.111731948607,"y":10454.074230884708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"44d4ab03-4306-43f7-8c94-08976c57625a","savedPayload":{"position":{"x":17508.111731948607,"y":10454.074230884708},"targetPosition":{"x":17569.154601464066,"y":10167.202998318786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"c9bcf00d-9a15-4444-94f3-bf493cacdc4e","savedPayload":{"position":{"x":16986.717943960997,"y":10227.551307176065},"targetPosition":{"x":17277.862928034552,"y":10197.30820792797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5a0efe28-4669-4f77-af30-322b9c8fad72","savedPayload":{"position":{"x":17277.862928034552,"y":10197.30820792797},"targetPosition":{"x":17569.154601464066,"y":10167.202998318786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Value Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.value","id":"388b4734-3b11-4b4c-9fca-0ea51581be66","savedPayload":{"position":{"x":17331.43603867606,"y":9631.037838784561},"targetPosition":{"x":17450.502865915176,"y":9899.177698508822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"473c0f5f-22eb-4212-bd6f-3e7b4b81e563","savedPayload":{"position":{"x":17450.502865915176,"y":9899.177698508822},"targetPosition":{"x":17569.154601464066,"y":10167.202998318786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Value End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.value","id":"bc667db2-4e37-427b-a581-e3f29086f305","savedPayload":{"position":{"x":18004.824135193758,"y":9775.312087546185},"targetPosition":{"x":17787.406756461423,"y":9971.135603302126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"79ce261d-2055-4a8a-9604-41b37653759a","savedPayload":{"position":{"x":17787.406756461423,"y":9971.135603302126},"targetPosition":{"x":17569.154601464066,"y":10167.202998318786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cc49ad50-0be2-43c9-8f4a-ccccea8dc087","savedPayload":{"position":{"x":17569.154601464066,"y":10167.202998318786},"targetPosition":{"x":18581.05913329368,"y":10751.503062184735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Line 0","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.15,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"28729ed0-43c3-4adb-8dd6-a708dda9d798","savedPayload":{"position":{"x":17342.771190300744,"y":15876.885321529824},"targetPosition":{"x":17191.697615714293,"y":15713.184208702376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"7c568a67-a0af-49ed-bae4-71e9fb835dcc","savedPayload":{"position":{"x":17191.697615714293,"y":15713.184208702376},"targetPosition":{"x":16977.340026687074,"y":15498.782211540454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"End 0","id":"f13ef470-67b1-4ea9-b5f9-d1323b9e5921","savedPayload":{"position":{"x":16977.340090152004,"y":15801.773925224232},"targetPosition":{"x":16977.340026687074,"y":15498.782211540454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 0","id":"5a0efe28-4669-4f77-af30-322b9c8fad72"}}},{"type":"Polygon Vertex","name":"Begin 0","id":"382b90b0-c454-438c-8342-f625c475b183","savedPayload":{"position":{"x":16760.765231953697,"y":15715.546770880828},"targetPosition":{"x":16977.340026687074,"y":15498.782211540454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 0","id":"44d4ab03-4306-43f7-8c94-08976c57625a"}}}],"id":"79c02166-9fb5-41f8-9a93-c86f198d046d","savedPayload":{"position":{"x":18430.057434409067,"y":10184.901169760014},"targetPosition":{"x":18581.05913329368,"y":10751.503062184735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Value","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.35,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"6475bd9e-d457-4fa6-a0e2-6bab43c1b900","savedPayload":{"position":{"x":17110.081300363767,"y":11921.460603669848},"targetPosition":{"x":17317.436440879683,"y":12089.27384493648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"3dbc0e73-14ef-4ffc-8284-f16c461778f3","savedPayload":{"position":{"x":17317.436440879683,"y":12089.27384493648},"targetPosition":{"x":17562.620189378496,"y":12287.939729761976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Value Begin","id":"a2794b60-36b4-4896-899b-20f60c519042","savedPayload":{"position":{"x":17529.622799290133,"y":11974.663232184872},"targetPosition":{"x":17562.620189378496,"y":12287.939729761976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Value Begin","id":"473c0f5f-22eb-4212-bd6f-3e7b4b81e563"}}},{"type":"Polygon Vertex","name":"Value End","id":"759aba24-d4ed-4266-a9c4-9ea04a19f8f7","savedPayload":{"position":{"x":17774.50239699396,"y":12026.02789653098},"targetPosition":{"x":17562.620189378496,"y":12287.939729761976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Value End","id":"79ce261d-2055-4a8a-9604-41b37653759a"}}}],"id":"5ee0dccd-325b-410f-b069-f0f3e3881447","savedPayload":{"position":{"x":18873.97149366684,"y":10243.920156481752},"targetPosition":{"x":18581.05913329368,"y":10751.503062184735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"05a0cab0-cf12-4ee7-92a8-76fe96e42805","savedPayload":{"position":{"x":18581.05913329368,"y":10751.503062184735},"targetPosition":{"x":18732.439069766187,"y":11317.392773767933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"ROC 9","code":"{ \n\"codeName\": \"Panel-ROC-9\"\n}","panelData":[{"type":"Panel Data","name":"Value","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.value","id":"488e613d-484a-4750-8b22-a20f0434d1ea","savedPayload":{"position":{"x":19561.48216773702,"y":10488.482774120012},"targetPosition":{"x":19353.957340224057,"y":10695.572363287261},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"521fa5b1-2419-4550-b8fb-ef2dcc284693","savedPayload":{"position":{"x":19353.957340224057,"y":10695.572363287261},"targetPosition":{"x":19146.854885436394,"y":10903.244604801974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a1be3230-a9a3-4d36-95d0-f6ba0ddcd5e5","savedPayload":{"position":{"x":19146.854885436394,"y":10903.244604801974},"targetPosition":{"x":18732.439069766187,"y":11317.392773767933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5ecd7465-9f89-4e20-bea9-2216863e2990","savedPayload":{"position":{"x":18732.439069766187,"y":11317.392773767933},"targetPosition":{"x":18580.308926874874,"y":11884.11169474596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"85e9a7d0-c411-4fac-9297-95d71a9ae363","savedPayload":{"position":{"x":18580.308926874874,"y":11884.11169474596},"targetPosition":{"x":18881.571706269082,"y":12398.127167364633},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Plotter","name":"Stochastic","code":"{\n\"codeName\": \"Plotter-Stoch\"\n}","modules":[{"type":"Plotter Module","name":"Stoch 14-3-3","code":"{\n\t\"codeName\": \"Module-Stoch-14-3-3\",\n \"icon\": \"Oscillator\"\n}","shapes":{"type":"Shapes","name":"New Shapes","chartPoints":[{"type":"Chart Points","name":"New Chart Points","points":[{"type":"Point","name":"Slow Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.slowLine","id":"55d7707a-30e2-4879-8be5-ca7ecd2f3873","savedPayload":{"position":{"x":19216.639913271727,"y":10858.134870989543},"targetPosition":{"x":19075.22663716291,"y":11019.744984048306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"bc0a51ed-fc21-4517-80a9-742f8a28ede7","savedPayload":{"position":{"x":19075.22663716291,"y":11019.744984048306},"targetPosition":{"x":18789.899175435286,"y":11341.515324222466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Slow Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.slowLine","id":"bacc0912-cfd8-4cf1-91b7-9754df472dae","savedPayload":{"position":{"x":19350.564430449147,"y":11022.064720873015},"targetPosition":{"x":19162.882521457745,"y":11129.59038432186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d97911db-336c-414a-b163-69cb135de17b","savedPayload":{"position":{"x":19162.882521457745,"y":11129.59038432186},"targetPosition":{"x":18789.899175435286,"y":11341.515324222466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Fast Line Begin","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = record.previous.fastLine","id":"17a984a0-223a-4e41-87b5-1cbe8ff2e51d","savedPayload":{"position":{"x":19425.53269847469,"y":11222.761117424672},"targetPosition":{"x":19213.610419224595,"y":11262.1597065429},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"97e0ce46-a22d-49ce-bf5c-bb50ec060d86","savedPayload":{"position":{"x":19213.610419224595,"y":11262.1597065429},"targetPosition":{"x":18789.899175435286,"y":11341.515324222466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Fast Line End","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = record.fastLine","id":"013e38de-657d-461b-8b9b-beee034d1a28","savedPayload":{"position":{"x":19405.883207563053,"y":11474.179129406873},"targetPosition":{"x":19214.81351887101,"y":11403.12747836159},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"5b1e120b-33fa-434a-9913-135f3f94edad","savedPayload":{"position":{"x":19214.81351887101,"y":11403.12747836159},"targetPosition":{"x":18789.899175435286,"y":11341.515324222466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 0","id":"a6b82c72-273b-4bb0-a20f-672e868a8bc4","savedPayload":{"position":{"x":19364.309223442924,"y":11636.255266890994},"targetPosition":{"x":19173.007339082294,"y":11538.607582730649},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e894f129-e11d-4ec6-8d76-50d39dab5dd5","savedPayload":{"position":{"x":19173.007339082294,"y":11538.607582730649},"targetPosition":{"x":18789.899175435286,"y":11341.515324222466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 0","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 0","id":"ed878528-be4d-4b54-b05c-14be099d2e0a","savedPayload":{"position":{"x":19242.68791119211,"y":11798.711734499688},"targetPosition":{"x":19087.863786753587,"y":11651.477231354624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"93278c60-4529-454e-989f-771ce3beb3c1","savedPayload":{"position":{"x":19087.863786753587,"y":11651.477231354624},"targetPosition":{"x":18789.899175435286,"y":11341.515324222466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 20","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 20","id":"4c062900-b756-40f7-8538-dabb9ae12c16","savedPayload":{"position":{"x":19061.465621055555,"y":11925.54058759217},"targetPosition":{"x":18970.736759965162,"y":11730.587449677485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"59d32253-47b9-4227-bc5b-e2f1d5416844","savedPayload":{"position":{"x":18970.736759965162,"y":11730.587449677485},"targetPosition":{"x":18789.899175435286,"y":11341.515324222466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 20","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 20","id":"3a560a43-44d0-4d9e-b897-465c472fa9ea","savedPayload":{"position":{"x":18856.685456845596,"y":11985.350429499973},"targetPosition":{"x":18834.972681973843,"y":11770.138367101783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ce6a0861-712e-4cf4-81e9-92ab6c8a5f4d","savedPayload":{"position":{"x":18834.972681973843,"y":11770.138367101783},"targetPosition":{"x":18789.899175435286,"y":11341.515324222466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 30","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 30","id":"a492b3aa-e876-4762-a297-e3fd36964bb8","savedPayload":{"position":{"x":18647.426536222993,"y":11972.37965688267},"targetPosition":{"x":18693.98387516834,"y":11759.307521677176},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3ea0b783-3d43-47d1-90aa-99366cd09a7d","savedPayload":{"position":{"x":18693.98387516834,"y":11759.307521677176},"targetPosition":{"x":18789.899175435286,"y":11341.515324222466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 30","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 30","id":"45566c80-77fd-4246-8fc3-50692ff479a2","savedPayload":{"position":{"x":18448.827154532515,"y":11888.212921180064},"targetPosition":{"x":18562.145516472207,"y":11706.133378473645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"4e7322f7-3bfa-41cc-b9a0-c5dcbe16e83e","savedPayload":{"position":{"x":18562.145516472207,"y":11706.133378473645},"targetPosition":{"x":18789.899175435286,"y":11341.515324222466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 70","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 70","id":"c982c6b7-9b74-4b02-a2b8-8c6fb6df231e","savedPayload":{"position":{"x":18287.96780306595,"y":11747.105361747404},"targetPosition":{"x":18455.25196842602,"y":11612.803827784173},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"4f226496-b6a0-436d-97c5-d6e61dd00c23","savedPayload":{"position":{"x":18455.25196842602,"y":11612.803827784173},"targetPosition":{"x":18789.899175435286,"y":11341.515324222466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 70","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 70","id":"a66f14af-1cd6-4b48-979c-13bd4171828c","savedPayload":{"position":{"x":18182.894300433574,"y":11563.782327098268},"targetPosition":{"x":18386.84809788928,"y":11488.910898751088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"22287519-c930-4dfb-bb4a-298da4e32cdf","savedPayload":{"position":{"x":18386.84809788928,"y":11488.910898751088},"targetPosition":{"x":18789.899175435286,"y":11341.515324222466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 80","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 80","id":"742160f2-7cd8-4565-9536-5c0dca39a3e9","savedPayload":{"position":{"x":18144.475378095765,"y":11352.863660428942},"targetPosition":{"x":18359.12577517848,"y":11348.855628384785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"fb48eeab-d538-4fc5-81fe-dd916f749477","savedPayload":{"position":{"x":18359.12577517848,"y":11348.855628384785},"targetPosition":{"x":18789.899175435286,"y":11341.515324222466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 80","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 80","id":"9057daf5-069d-4489-aaf5-dd803f642a86","savedPayload":{"position":{"x":18174.29565544598,"y":11146.779564077075},"targetPosition":{"x":18379.53683231518,"y":11211.474089723413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"9a3c052a-a6b6-4392-b2fd-54151febb8f5","savedPayload":{"position":{"x":18379.53683231518,"y":11211.474089723413},"targetPosition":{"x":18789.899175435286,"y":11341.515324222466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 100","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 100","id":"2e17f6ae-23e6-4411-a0a5-69be7d7d3232","savedPayload":{"position":{"x":18271.624767739617,"y":10955.000944091671},"targetPosition":{"x":18443.52711995642,"y":11085.009408447548},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f3e69d47-f137-412e-a515-7dc262af7f8b","savedPayload":{"position":{"x":18443.52711995642,"y":11085.009408447548},"targetPosition":{"x":18789.899175435286,"y":11341.515324222466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 100","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 100","id":"a7a616cf-f882-4088-b1d0-eb4fdb4ffd11","savedPayload":{"position":{"x":18425.124660259837,"y":10805.972803434972},"targetPosition":{"x":18547.217770206313,"y":10985.1806758085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"29103f63-7cd6-4005-bec7-a385cf373eaf","savedPayload":{"position":{"x":18547.217770206313,"y":10985.1806758085},"targetPosition":{"x":18789.899175435286,"y":11341.515324222466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"Begin 50","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.begin\ny = 50","id":"8b212cf0-fab5-45dd-b645-0f4e79656653","savedPayload":{"position":{"x":18618.57131124668,"y":10717.955062589735},"targetPosition":{"x":18675.721870816593,"y":10926.34778506918},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"99b1d6a8-0904-43ff-b209-c7c6868181b5","savedPayload":{"position":{"x":18675.721870816593,"y":10926.34778506918},"targetPosition":{"x":18789.899175435286,"y":11341.515324222466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Point","name":"End 50","pointFormula":{"type":"Point Formula","name":"New Point Formula","code":"x = record.end\ny = 50","id":"864cc94d-3947-45bd-8a85-a19d06609b9a","savedPayload":{"position":{"x":18829.29697705002,"y":10695.116435940454},"targetPosition":{"x":18816.966916959303,"y":10911.13843332141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"84db0a13-44f1-4953-ab27-d7425ab1ee6b","savedPayload":{"position":{"x":18816.966916959303,"y":10911.13843332141},"targetPosition":{"x":18789.899175435286,"y":11341.515324222466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8ac3440e-1b64-4a12-8c31-38783846da01","savedPayload":{"position":{"x":18789.899175435286,"y":11341.515324222466},"targetPosition":{"x":19455.789672910934,"y":10810.57690559178},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"polygons":[{"type":"Polygon","name":"Slow Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"d89f9f7e-12c9-4883-a753-41cf0e061dde","savedPayload":{"position":{"x":19598.11001107716,"y":9599.675783833067},"targetPosition":{"x":19621.149204085068,"y":9893.740870742344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"7ef54320-7e6d-4e77-9345-9f4e5742a18e","savedPayload":{"position":{"x":19621.149204085068,"y":9893.740870742344},"targetPosition":{"x":19646.761614336032,"y":10217.574401259495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Line End","id":"f093f915-dc4b-4ba3-bc51-57e593a3025a","savedPayload":{"position":{"x":19746.965839534663,"y":9909.005827836792},"targetPosition":{"x":19646.761614336032,"y":10217.574401259495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Slow Line End","id":"d97911db-336c-414a-b163-69cb135de17b"}}},{"type":"Polygon Vertex","name":"Line Begin","id":"a2116df6-c3ec-4017-a51d-ae12cc47e021","savedPayload":{"position":{"x":19858.590703073205,"y":9969.756648042327},"targetPosition":{"x":19646.761614336032,"y":10217.574401259495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Slow Line Begin","id":"bc0a51ed-fc21-4517-80a9-742f8a28ede7"}}}],"id":"c28b1cfd-4cf5-4382-8bce-45930b5e8a15","savedPayload":{"position":{"x":18924.86687635903,"y":10591.784021918742},"targetPosition":{"x":19455.789672910934,"y":10810.57690559178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Fast Line","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.5,\n \"lineWidth\": 0.5,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.75,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}","id":"a5147142-56f2-4fd8-a06e-449cfb1a997d","savedPayload":{"position":{"x":18341.609067625104,"y":10332.200695677868},"targetPosition":{"x":18631.416109579717,"y":10390.904075926639},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"b7bec76c-a5d6-4b78-a0f5-8315ca1c0dba","savedPayload":{"position":{"x":18631.416109579717,"y":10390.904075926639},"targetPosition":{"x":18956.368088567324,"y":10455.608659125231},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Fast Line End","id":"88ffc758-994a-4385-a9d6-c28361403f5a","savedPayload":{"position":{"x":18681.102414555917,"y":10271.5477417007},"targetPosition":{"x":18956.368088567324,"y":10455.608659125231},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Fast Line End","id":"5b1e120b-33fa-434a-9913-135f3f94edad"}}},{"type":"Polygon Vertex","name":"Fast Line Begin","id":"3a43f15c-ff64-4415-bee8-f458601a3e96","savedPayload":{"position":{"x":18773.010019332658,"y":10179.892222141676},"targetPosition":{"x":18956.368088567324,"y":10455.608659125231},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Fast Line Begin","id":"97e0ce46-a22d-49ce-bf5c-bb50ec060d86"}}}],"id":"53d89dd3-df4f-4001-a9cc-a9fa5c7808d4","savedPayload":{"position":{"x":18978.099178319437,"y":10491.752770216073},"targetPosition":{"x":19455.789672910934,"y":10810.57690559178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 0","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"258f1f9e-4410-4a64-9cd6-e445d4444ba7","savedPayload":{"position":{"x":18418.973180199515,"y":10016.090745009813},"targetPosition":{"x":18685.586872206153,"y":10143.237001911184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"805ec3ae-e0ec-42ba-ba1c-617d5fe24e09","savedPayload":{"position":{"x":18685.586872206153,"y":10143.237001911184},"targetPosition":{"x":19005.86585844732,"y":10295.792784063122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 0","id":"379a9e22-27fa-4f50-900a-0730cbe0b3d3","savedPayload":{"position":{"x":18768.558853441475,"y":10032.164756246331},"targetPosition":{"x":19005.86585844732,"y":10295.792784063122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 0","id":"e894f129-e11d-4ec6-8d76-50d39dab5dd5"}}},{"type":"Polygon Vertex","name":"End 0","id":"0ff4fba2-0167-41df-99e5-542a673adf30","savedPayload":{"position":{"x":18887.623462674157,"y":9961.442957631449},"targetPosition":{"x":19005.86585844732,"y":10295.792784063122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 0","id":"93278c60-4529-454e-989f-771ce3beb3c1"}}}],"id":"e8f5af9d-ba4b-4482-aca7-295b92f60f17","savedPayload":{"position":{"x":19049.59818459447,"y":10404.519860204673},"targetPosition":{"x":19455.789672910934,"y":10810.57690559178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 20","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"1172daa1-fe47-4069-818e-50a800f539ef","savedPayload":{"position":{"x":18609.288568851018,"y":9941.114730070243},"targetPosition":{"x":18855.258274299747,"y":10105.468129494198},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"1efe1989-3881-41f4-af21-bf32d3fdc64a","savedPayload":{"position":{"x":18855.258274299747,"y":10105.468129494198},"targetPosition":{"x":19130.982246062908,"y":10289.431315943686},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 20","id":"0617cdf2-2290-4f79-b132-ce46e33f3eb8","savedPayload":{"position":{"x":18946.68975645976,"y":10013.501070012324},"targetPosition":{"x":19130.982246062908,"y":10289.431315943686},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 20","id":"59d32253-47b9-4227-bc5b-e2f1d5416844"}}},{"type":"Polygon Vertex","name":"End 20","id":"cbc04d73-2faf-4808-b1ef-43aa2d1cf509","savedPayload":{"position":{"x":19066.560808828744,"y":9964.082621177206},"targetPosition":{"x":19130.982246062908,"y":10289.431315943686},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 20","id":"ce6a0861-712e-4cf4-81e9-92ab6c8a5f4d"}}}],"id":"3d7a22fa-7a63-4cea-8ce7-d3358bd79ac8","savedPayload":{"position":{"x":19136.67920155821,"y":10332.996054604579},"targetPosition":{"x":19455.789672910934,"y":10810.57690559178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 30","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.15,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"c10e1ba8-3255-4eab-8d43-83315dca23e1","savedPayload":{"position":{"x":18796.18147060884,"y":9789.087757840132},"targetPosition":{"x":19005.56074734484,"y":9998.477778487608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"c4dbb4e0-6e92-4304-bba1-76013eb739d4","savedPayload":{"position":{"x":19005.56074734484,"y":9998.477778487608},"targetPosition":{"x":19238.601187359258,"y":10231.259703391685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 30","id":"1bb29f63-48b2-405c-8b76-5b42be6c1e3f","savedPayload":{"position":{"x":19110.557236280863,"y":9921.692193115989},"targetPosition":{"x":19238.601187359258,"y":10231.259703391685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 30","id":"3ea0b783-3d43-47d1-90aa-99366cd09a7d"}}},{"type":"Polygon Vertex","name":"End 30","id":"86cc6fd9-ca44-42ff-817c-c33d9a4a4558","savedPayload":{"position":{"x":19238.635631620044,"y":9899.72419619564},"targetPosition":{"x":19238.601187359258,"y":10231.259703391685},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 30","id":"4e7322f7-3bfa-41cc-b9a0-c5dcbe16e83e"}}}],"id":"49ef61a8-1381-45f0-b7d4-0a95ed9d7e60","savedPayload":{"position":{"x":19236.03470762912,"y":10279.876723655949},"targetPosition":{"x":19455.789672910934,"y":10810.57690559178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 50","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"f18a4f3f-1b4a-4816-9c76-9b6171a6c886","savedPayload":{"position":{"x":19040.915085897803,"y":9670.896870148215},"targetPosition":{"x":19182.755185833805,"y":9932.291207960734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"bdcda8bd-a2a3-4dae-8774-7fe7a1bd8df9","savedPayload":{"position":{"x":19182.755185833805,"y":9932.291207960734},"targetPosition":{"x":19337.30187493284,"y":10217.05880771474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 50","id":"155ecca7-3c3a-40b0-98e0-c4cc97021ba2","savedPayload":{"position":{"x":19302.687759436758,"y":9891.900549152173},"targetPosition":{"x":19337.30187493284,"y":10217.05880771474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 50","id":"99b1d6a8-0904-43ff-b209-c7c6868181b5"}}},{"type":"Polygon Vertex","name":"End 50","id":"3f22cf14-5acc-4f4d-b19a-108f02fa2e53","savedPayload":{"position":{"x":19429.081003817933,"y":9902.839794868303},"targetPosition":{"x":19337.30187493284,"y":10217.05880771474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 50","id":"84db0a13-44f1-4953-ab27-d7425ab1ee6b"}}}],"id":"eb850831-fe4c-4fda-9294-df765f377e3e","savedPayload":{"position":{"x":19343.819926092237,"y":10247.147891234601},"targetPosition":{"x":19455.789672910934,"y":10810.57690559178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 70","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.15,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"871bf7be-3e85-43f3-9537-fae86fe3f821","savedPayload":{"position":{"x":19228.620105606136,"y":9610.042785048558},"targetPosition":{"x":19341.61467844527,"y":9882.998466546063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"692686f4-d4a0-4fd3-b9ac-32ced49b8633","savedPayload":{"position":{"x":19341.61467844527,"y":9882.998466546063},"targetPosition":{"x":19467.419521032207,"y":10186.402302964583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 70","id":"4742a27b-2eb2-4a18-835e-6fbefb47bdcd","savedPayload":{"position":{"x":19467.42145376644,"y":9856.282661382107},"targetPosition":{"x":19467.419521032207,"y":10186.402302964583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 70","id":"4f226496-b6a0-436d-97c5-d6e61dd00c23"}}},{"type":"Polygon Vertex","name":"End 70","id":"57aca36d-e53c-428f-a961-00f95c636a8c","savedPayload":{"position":{"x":19593.84945834332,"y":9881.47457985397},"targetPosition":{"x":19467.419521032207,"y":10186.402302964583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 70","id":"22287519-c930-4dfb-bb4a-298da4e32cdf"}}}],"id":"cd93957c-2562-4f27-b3c3-4278231b1241","savedPayload":{"position":{"x":19455.79304943531,"y":10236.103636541251},"targetPosition":{"x":19455.789672910934,"y":10810.57690559178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 80","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"0a960c41-faa4-4456-8d7c-91215785612f","savedPayload":{"position":{"x":19364.63016164861,"y":9658.756134731633},"targetPosition":{"x":19498.427745983794,"y":9921.70609927639},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"d4446b75-1844-4114-9faf-ae3b5641e43d","savedPayload":{"position":{"x":19498.427745983794,"y":9921.70609927639},"targetPosition":{"x":19648.689119053535,"y":10217.37836884482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 80","id":"7b104c6b-0b09-4efe-9af7-21e18088158a","savedPayload":{"position":{"x":19751.576732928545,"y":9900.601922674641},"targetPosition":{"x":19648.689119053535,"y":10217.37836884482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 80","id":"fb48eeab-d538-4fc5-81fe-dd916f749477"}}},{"type":"Polygon Vertex","name":"End 80","id":"4bf87284-559e-4154-93f5-988ea7755e80","savedPayload":{"position":{"x":19944.05844204344,"y":10066.676599623237},"targetPosition":{"x":19648.689119053535,"y":10217.37836884482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 80","id":"9a3c052a-a6b6-4392-b2fd-54151febb8f5"}}}],"id":"a25d52fa-a178-4454-8ebc-500572b38d04","savedPayload":{"position":{"x":19567.720797018916,"y":10247.136375120564},"targetPosition":{"x":19455.789672910934,"y":10810.57690559178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Line 100","polygonBorder":{"type":"Polygon Border","name":"New Polygon Border","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [3,3],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.MANGANESE_PURPLE\"\n }\n}","id":"a169ba02-78c5-49d9-b212-236fb5e48bad","savedPayload":{"position":{"x":20391.011395300317,"y":10152.945926007289},"targetPosition":{"x":20226.45921520871,"y":10398.989456090903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"b71ce594-e5f7-48f0-94a3-8f44ac26c01c","savedPayload":{"position":{"x":20226.45921520871,"y":10398.989456090903},"targetPosition":{"x":20045.05803605664,"y":10669.902947897246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 100","id":"6b947ced-abe6-41e4-8e11-a8777d52a977","savedPayload":{"position":{"x":20366.93962684802,"y":10606.09596063189},"targetPosition":{"x":20045.05803605664,"y":10669.902947897246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 100","id":"f3e69d47-f137-412e-a515-7dc262af7f8b"}}},{"type":"Polygon Vertex","name":"End 100","id":"9ff21949-3190-45a4-8b36-e6d8f291ea7f","savedPayload":{"position":{"x":20317.939375119055,"y":10852.143755336132},"targetPosition":{"x":20045.05803605664,"y":10669.902947897246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 100","id":"29103f63-7cd6-4005-bec7-a385cf373eaf"}}}],"id":"a4dacfad-5901-4ba9-a728-132f0d452680","savedPayload":{"position":{"x":19675.506343477173,"y":10279.841909973109},"targetPosition":{"x":19455.789672910934,"y":10810.57690559178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Box 0-20","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.25,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.35,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"e740b91d-1364-49ea-9878-df9cddbfc805","savedPayload":{"position":{"x":19518.222532167067,"y":9731.40536041631},"targetPosition":{"x":19648.323659651225,"y":9995.861082967765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6c079371-854a-41cb-82cb-3066463c51c5","savedPayload":{"position":{"x":19648.323659651225,"y":9995.861082967765},"targetPosition":{"x":19791.66661928203,"y":10287.777332747755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 0","id":"fbfe5ddc-2890-4be2-9c46-446bbb49cde0","savedPayload":{"position":{"x":19813.10205713175,"y":9963.453546909719},"targetPosition":{"x":19791.66661928203,"y":10287.777332747755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 0","id":"e894f129-e11d-4ec6-8d76-50d39dab5dd5"}}},{"type":"Polygon Vertex","name":"End 0","id":"007fe5a0-0fac-4958-8c95-aba6e504e4d5","savedPayload":{"position":{"x":19972.2875904969,"y":10017.553401120027},"targetPosition":{"x":19791.66661928203,"y":10287.777332747755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 0","id":"93278c60-4529-454e-989f-771ce3beb3c1"}}},{"type":"Polygon Vertex","name":"End 20","id":"3d285cd7-11f6-4e20-969b-eec492cab81e","savedPayload":{"position":{"x":20083.25002181657,"y":10144.053046371871},"targetPosition":{"x":19791.66661928203,"y":10287.777332747755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 20","id":"ce6a0861-712e-4cf4-81e9-92ab6c8a5f4d"}}},{"type":"Polygon Vertex","name":"Begin 20","id":"779ba063-a7c9-4fa8-bb93-a64917dacbd4","savedPayload":{"position":{"x":20117.94512960221,"y":10308.912316460204},"targetPosition":{"x":19791.66661928203,"y":10287.777332747755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 20","id":"59d32253-47b9-4227-bc5b-e2f1d5416844"}}}],"id":"518be834-5410-4eee-afc5-369ec833199c","savedPayload":{"position":{"x":19774.850575953256,"y":10332.927361421187},"targetPosition":{"x":19455.789672910934,"y":10810.57690559178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Box 20-30","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.15,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"42dcb813-82a7-439d-96db-e1838746a098","savedPayload":{"position":{"x":19760.42823393383,"y":9905.338920048867},"targetPosition":{"x":19798.405170492842,"y":10048.519459409485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"057fa196-0288-45ff-ba35-62465f6ea603","savedPayload":{"position":{"x":19798.405170492842,"y":10048.519459409485},"targetPosition":{"x":19881.94551963728,"y":10362.365445563868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 20","id":"1f65bf18-a749-4221-880b-dc1e2e573ed7","savedPayload":{"position":{"x":19966.572648710124,"y":10047.291674436297},"targetPosition":{"x":19881.94551963728,"y":10362.365445563868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 20","id":"59d32253-47b9-4227-bc5b-e2f1d5416844"}}},{"type":"Polygon Vertex","name":"End 20","id":"4a723692-de81-4fa5-9292-88573a34b816","savedPayload":{"position":{"x":20111.56567883134,"y":10132.843666168439},"targetPosition":{"x":19881.94551963728,"y":10362.365445563868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 20","id":"ce6a0861-712e-4cf4-81e9-92ab6c8a5f4d"}}},{"type":"Polygon Vertex","name":"End 30","id":"ada9ee7e-b823-452e-aab3-2bbb4bf10cc3","savedPayload":{"position":{"x":20197.318337138444,"y":10277.84419239403},"targetPosition":{"x":19881.94551963728,"y":10362.365445563868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 30","id":"4e7322f7-3bfa-41cc-b9a0-c5dcbe16e83e"}}},{"type":"Polygon Vertex","name":"Begin 30","id":"5d96b5d5-7e34-4a43-891b-273fb9bbf4b6","savedPayload":{"position":{"x":20195.541241064795,"y":10445.98064766584},"targetPosition":{"x":19881.94551963728,"y":10362.365445563868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 30","id":"3ea0b783-3d43-47d1-90aa-99366cd09a7d"}}}],"id":"bd729215-749b-4893-b21e-fe8add8e3199","savedPayload":{"position":{"x":19861.917967246703,"y":10404.401532885191},"targetPosition":{"x":19455.789672910934,"y":10810.57690559178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Box 30-70","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.05,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.1,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"48f54b6c-7cd5-4089-b6e2-1f39e2361be7","savedPayload":{"position":{"x":19913.606582813627,"y":9828.816091232315},"targetPosition":{"x":19932.58660925468,"y":10123.626591331044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"20728a48-6ba3-4bf8-b51e-bb57303594f2","savedPayload":{"position":{"x":19932.58660925468,"y":10123.626591331044},"targetPosition":{"x":19953.273367799105,"y":10447.433100239263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 30","id":"058eb800-ac91-44dd-8b28-6a740f6470ee","savedPayload":{"position":{"x":20097.047103601202,"y":10156.492392401606},"targetPosition":{"x":19953.273367799105,"y":10447.433100239263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 30","id":"3ea0b783-3d43-47d1-90aa-99366cd09a7d"}}},{"type":"Polygon Vertex","name":"End 30","id":"d01decaf-72ca-41e6-aa58-d6dbe505fe29","savedPayload":{"position":{"x":20223.79011165938,"y":10266.998270322607},"targetPosition":{"x":19953.273367799105,"y":10447.433100239263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 30","id":"4e7322f7-3bfa-41cc-b9a0-c5dcbe16e83e"}}},{"type":"Polygon Vertex","name":"End 70","id":"f87349bc-dc97-46fd-a88f-a28ba9678a43","savedPayload":{"position":{"x":20277.927172037704,"y":10426.127614371257},"targetPosition":{"x":19953.273367799105,"y":10447.433100239263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 70","id":"22287519-c930-4dfb-bb4a-298da4e32cdf"}}},{"type":"Polygon Vertex","name":"Begin 70","id":"fa0278c8-e861-4c72-8795-32186c329c89","savedPayload":{"position":{"x":20246.190880017177,"y":10591.899841795781},"targetPosition":{"x":19953.273367799105,"y":10447.433100239263},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 70","id":"4f226496-b6a0-436d-97c5-d6e61dd00c23"}}}],"id":"f95afd47-9495-44f4-bf5a-8577bd0750c5","savedPayload":{"position":{"x":19933.35750244505,"y":10491.502552167494},"targetPosition":{"x":19455.789672910934,"y":10810.57690559178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Box 70-80","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.15,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"191e1de4-e807-46e0-9cac-5b0eb4df5b7d","savedPayload":{"position":{"x":20381.709570627972,"y":10055.532696443846},"targetPosition":{"x":20201.619593700863,"y":10290.089258804152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"baa9237a-41ad-49a1-b78d-664bcb893f79","savedPayload":{"position":{"x":20201.619593700863,"y":10290.089258804152},"targetPosition":{"x":20009.647594414688,"y":10553.226158840967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 70","id":"bdd3f8c1-1194-4472-a681-96a6ee1eedc0","savedPayload":{"position":{"x":20267.63521879908,"y":10350.799185336493},"targetPosition":{"x":20009.647594414688,"y":10553.226158840967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 70","id":"4f226496-b6a0-436d-97c5-d6e61dd00c23"}}},{"type":"Polygon Vertex","name":"End 70","id":"5c4b0947-4269-4fc3-ae1f-c6707c0488d2","savedPayload":{"position":{"x":20312.595429504694,"y":10426.145327630038},"targetPosition":{"x":20009.647594414688,"y":10553.226158840967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 70","id":"22287519-c930-4dfb-bb4a-298da4e32cdf"}}},{"type":"Polygon Vertex","name":"End 80","id":"c2c40046-c4c9-42de-887d-892ed868bc4e","savedPayload":{"position":{"x":20335.714289041825,"y":10509.174943597487},"targetPosition":{"x":20009.647594414688,"y":10553.226158840967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 80","id":"9a3c052a-a6b6-4392-b2fd-54151febb8f5"}}},{"type":"Polygon Vertex","name":"Begin 80","id":"e5d1db7f-bceb-4548-a136-bac0f2d23d33","savedPayload":{"position":{"x":20333.138218194686,"y":10612.22046650936},"targetPosition":{"x":20009.647594414688,"y":10553.226158840967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 80","id":"fb48eeab-d538-4fc5-81fe-dd916f749477"}}}],"id":"b75a1367-e45d-4561-9cf9-b537eba7e103","savedPayload":{"position":{"x":19986.435139367088,"y":10590.949980935111},"targetPosition":{"x":19455.789672910934,"y":10810.57690559178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Polygon","name":"Box 80-100","polygonBody":{"type":"Polygon Body","name":"New Polygon Body","style":{"type":"Style","name":"New Style","code":"{\n \"default\": {\n \"opacity\": 0.25,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.35,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}","id":"da7f5472-50e7-4083-86e9-5a24dede1557","savedPayload":{"position":{"x":20394.553933489373,"y":10347.585867129501},"targetPosition":{"x":20282.802695840954,"y":10445.344571997504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"styleConditions":[],"id":"6ef84309-4ee8-44c5-a4a9-d5dd9634d09f","savedPayload":{"position":{"x":20282.802695840954,"y":10445.344571997504},"targetPosition":{"x":20043.356359903668,"y":10665.914379155207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"polygonVertexes":[{"type":"Polygon Vertex","name":"Begin 80","id":"fef200a2-c609-4684-9d4d-a84d720f1ee1","savedPayload":{"position":{"x":20335.888543904755,"y":10517.624578899597},"targetPosition":{"x":20043.356359903668,"y":10665.914379155207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 80","id":"fb48eeab-d538-4fc5-81fe-dd916f749477"}}},{"type":"Polygon Vertex","name":"End 80","id":"dd767960-3de1-49ec-914a-f0b3d54e7786","savedPayload":{"position":{"x":20365.38268730262,"y":10600.27017521108},"targetPosition":{"x":20043.356359903668,"y":10665.914379155207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 80","id":"9a3c052a-a6b6-4392-b2fd-54151febb8f5"}}},{"type":"Polygon Vertex","name":"End 100","id":"6fbf425e-e7e4-481a-a14b-762d2879b614","savedPayload":{"position":{"x":20371.471627918956,"y":10686.334328948036},"targetPosition":{"x":20043.356359903668,"y":10665.914379155207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"End 100","id":"29103f63-7cd6-4005-bec7-a385cf373eaf"}}},{"type":"Polygon Vertex","name":"Begin 100","id":"41244682-e765-41f6-940a-3cced032f765","savedPayload":{"position":{"x":20348.759757520165,"y":10786.79740623872},"targetPosition":{"x":20043.356359903668,"y":10665.914379155207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Point","name":"Begin 100","id":"f3e69d47-f137-412e-a515-7dc262af7f8b"}}}],"id":"e9077695-93a9-4ef5-ae32-3da768e946b1","savedPayload":{"position":{"x":20019.080201117118,"y":10699.371201943239},"targetPosition":{"x":19455.789672910934,"y":10810.57690559178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b824fc17-2864-430d-93f2-00d42d159b5a","savedPayload":{"position":{"x":19455.789672910934,"y":10810.57690559178},"targetPosition":{"x":19455.835654567913,"y":11383.5783425511},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"panels":[{"type":"Plotter Panel","name":"Stoch 14-3-3","code":"{ \n\"codeName\": \"Panel-Stoch-14-3-3\"\n}","panelData":[{"type":"Panel Data","name":"Slow Line","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.slowLine","id":"158086f9-9654-4e33-8292-6a9b7041526a","savedPayload":{"position":{"x":20358.810955478148,"y":10691.638509284905},"targetPosition":{"x":20155.51281433459,"y":10894.610495442164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c332ec98-c6fb-4eeb-a13a-2bda02958a9d","savedPayload":{"position":{"x":20155.51281433459,"y":10894.610495442164},"targetPosition":{"x":19952.31526228936,"y":11097.413080355063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Panel Data","name":"Fast Line","code":"{\n \"valueDecimals\": 2\n}","dataFormula":{"type":"Data Formula","name":"New Data Formula","code":"record.fastLine","id":"474d9024-e7ff-46d2-a46f-830c5e55ec30","savedPayload":{"position":{"x":20507.364953035714,"y":10949.377032756152},"targetPosition":{"x":20229.87473213047,"y":11023.528733393885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8249ea87-9d41-431a-b827-c3153fcddd0b","savedPayload":{"position":{"x":20229.87473213047,"y":11023.528733393885},"targetPosition":{"x":19952.31526228936,"y":11097.413080355063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"af6182b0-9814-4ebe-bbe7-7a455d8a6a0e","savedPayload":{"position":{"x":19952.31526228936,"y":11097.413080355063},"targetPosition":{"x":19455.835654567913,"y":11383.5783425511},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6a85fbb1-5a99-4ccc-93e8-092f5dbf6c4a","savedPayload":{"position":{"x":19455.835654567913,"y":11383.5783425511},"targetPosition":{"x":19168.98804935644,"y":11880.39931270703},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3fcd7ef7-fe1a-42f4-9339-a3bda6859248","savedPayload":{"position":{"x":19168.98804935644,"y":11880.39931270703},"targetPosition":{"x":18881.571706269082,"y":12398.127167364633},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"511bef1e-62d8-4ff9-8d87-15bd0d3d630c","savedPayload":{"position":{"x":18881.571706269082,"y":12398.127167364633},"targetPosition":{"x":18881.571706269082,"y":12398.127167364633},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}]} \ No newline at end of file diff --git a/Super-Scripts/Masters.json b/Super-Scripts/Masters.json deleted file mode 100644 index 68d89e41b..000000000 --- a/Super-Scripts/Masters.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"Super Scripts","name":"Masters","code":"{ \n\"codeName\": \"Masters\"\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":39655.39345377463,"y":28084.121285348076},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":39619.08803001109,"y":27971.34006849996},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"90ee9733-ab7e-41a0-ac78-4a7661a27017","savedPayload":{"position":{"x":39594.11393185164,"y":27855.840877332517},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"9ade8e93-9071-422b-8cce-7a50d6dad739","savedPayload":{"position":{"x":39580.59887306321,"y":27738.507421368748},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"b5ef2cf7-3d35-45ec-848c-31970b59c04e","savedPayload":{"position":{"x":39578.655464896365,"y":27620.63069875915},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":39588.297198778826,"y":27502.946480135615},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":39609.428887621216,"y":27386.77785099828},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":39641.84608404141,"y":27273.24280350331},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":39685.2360649887,"y":27163.433854438405},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":39739.18066448831,"y":27058.407968059906},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":39803.16019594351,"y":26959.1762369918},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":39876.55840037216,"y":26866.694054096202},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":39958.66834477317,"y":26781.851861425766},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":40048.69920292061,"y":26705.466552453436},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":40145.78385240617,"y":26638.273605375165},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":40248.98721974834,"y":26580.920017944973},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":40357.31529765827,"y":26533.95809992029},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":40469.72474382882,"y":26497.840166222424},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"b4847c45-613e-4862-98d3-34b28fa70fd7","savedPayload":{"position":{"x":40585.132955318084,"y":26472.914171771416},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"05766faf-47e0-493a-9459-a470a6691138","savedPayload":{"position":{"x":40702.42850753783,"y":26459.42033593334},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"c5d7a5f6-2924-46a6-8d04-1100a5088da9","savedPayload":{"position":{"x":40820.28557415008,"y":26457.488926076465},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"db37547e-f473-4dca-9bae-60fb37c724a5","savedPayload":{"position":{"x":40937.95845139182,"y":26467.13880986452},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"0ec41f8a-6170-439b-9513-7c4b2a835c6d","savedPayload":{"position":{"x":41054.120384899,"y":26488.277064496815},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"03d654c7-5641-4408-bf15-54ee7203d80b","savedPayload":{"position":{"x":41167.65178678811,"y":26520.700545782674},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"7b7c2f35-514c-4ad4-bdc5-7cb462020ac1","savedPayload":{"position":{"x":41277.4594798642,"y":26564.097566374792},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"4b1fcdaf-3bf1-4bdb-973d-42facd0b7104","savedPayload":{"position":{"x":41382.48641024106,"y":26618.051155654128},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"6f3bbf18-00d5-4f5a-9c48-a7e5e73e72e2","savedPayload":{"position":{"x":41481.72199276818,"y":26682.043494609432},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"bbe5af35-1f9e-4a31-9b5a-47ee5999e97c","savedPayload":{"position":{"x":41574.21247985582,"y":26755.461785010735},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"4e208ac6-227a-4c6d-b548-df9a06a96f2a","savedPayload":{"position":{"x":41659.072595416554,"y":26837.602086697607},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}},{"type":"Data Product","name":"Resistances","id":"cb998af9-8b76-4163-ba59-a354e85e625b","savedPayload":{"position":{"x":41734.78246123321,"y":26926.742016325188},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Resistances","id":"7a734501-a0fb-4305-803e-7e95d477c513"}}},{"type":"Data Product","name":"Supports","id":"935f01dc-bbe2-4931-a0d9-19f820cf04c1","savedPayload":{"position":{"x":41803.59685318991,"y":27026.194745818015},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Supports","id":"bc3c43de-6312-47d4-ae3d-0c95c1b039e0"}}}],"id":"3c9e658e-9350-4b43-b95c-1dc9fbb7de7b","savedPayload":{"position":{"x":40780.522571395006,"y":27659.757222847853},"targetPosition":{"x":41312.42037870206,"y":28738.475444229476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"922126c5-3b95-4c76-90ce-c85435c49624","savedPayload":{"position":{"x":41312.452880728124,"y":28738.45103113137},"targetPosition":{"x":41578.71473951283,"y":29277.75973906997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"79c82a1e-4c4e-4622-b762-4ccbfdac46b7","savedPayload":{"position":{"x":41423.01737185227,"y":28696.77991254939},"targetPosition":{"x":41578.71473951283,"y":29277.75973906997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"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":41539.572203582546,"y":28677.555510830884},"targetPosition":{"x":41578.71473951283,"y":29277.75973906997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"4dd2897c-d7e2-4fa2-a92f-4d0cf49a6370","savedPayload":{"position":{"x":41578.71473951283,"y":29277.75973906997},"targetPosition":{"x":41890.14038179374,"y":30439.527507516414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"726cd3f8-cfce-4e06-8e13-f4b2523e6e57","savedPayload":{"position":{"x":41772.65093280171,"y":28646.807955048214},"targetPosition":{"x":41890.128901652744,"y":29236.71585692822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"d5bc03d5-baeb-4ab0-91a6-cc61d0122474","savedPayload":{"position":{"x":41890.12930892233,"y":28635.18613310936},"targetPosition":{"x":41890.128901652744,"y":29236.71585692822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"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":42007.53909316859,"y":28646.791845625325},"targetPosition":{"x":41890.128901652744,"y":29236.71585692822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"caa968ef-9a38-4fb4-998f-cb7e27a3eedd","savedPayload":{"position":{"x":41890.128901652744,"y":29236.71585692822},"targetPosition":{"x":41890.14038179374,"y":30439.527507516414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f7b51fbd-c90d-4b5a-9242-9de2a40f4733","savedPayload":{"position":{"x":42240.40982433613,"y":28677.441521776378},"targetPosition":{"x":42201.34918584835,"y":29277.69269398605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"b7adb316-4430-4933-80ef-c8e239a947fc","savedPayload":{"position":{"x":42356.951494870984,"y":28696.641898991125},"targetPosition":{"x":42201.34918584835,"y":29277.69269398605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"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":42467.48260549182,"y":28738.277097634553},"targetPosition":{"x":42201.34918584835,"y":29277.69269398605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ce8531c2-42df-4c54-b4ea-48d7ca9861e5","savedPayload":{"position":{"x":42201.34918584835,"y":29277.69269398605},"targetPosition":{"x":41890.14038179374,"y":30439.527507516414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9df1f12f-0030-4c41-98e2-d07482ff8d22","savedPayload":{"position":{"x":42684.61234689323,"y":28828.20083898273},"targetPosition":{"x":42491.49072073263,"y":29397.8621330702},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"b5554d40-5014-45ec-b996-e74e05c5e872","savedPayload":{"position":{"x":42792.21171122186,"y":28876.91139330717},"targetPosition":{"x":42491.49072073263,"y":29397.8621330702},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"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":42888.19927444742,"y":28945.736615872695},"targetPosition":{"x":42491.49072073263,"y":29397.8621330702},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3e9a2343-49bb-43d5-adda-0072b01313f1","savedPayload":{"position":{"x":42491.49072073263,"y":29397.8621330702},"targetPosition":{"x":41890.14038179374,"y":30439.527507516414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f6114149-90fb-45a7-a42a-6ab052a9980a","savedPayload":{"position":{"x":43074.64510700322,"y":29088.795420231665},"targetPosition":{"x":42740.63494825482,"y":29589.031414236302},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"315b67c6-84cf-4370-a4fd-a8209c2532c9","savedPayload":{"position":{"x":43165.96984719894,"y":29163.695538605894},"targetPosition":{"x":42740.63494825482,"y":29589.031414236302},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"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":43240.87263989456,"y":29255.01973980808},"targetPosition":{"x":42740.63494825482,"y":29589.031414236302},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"3bb7924d-49b4-4748-83f5-5067dd8f3ef5","savedPayload":{"position":{"x":42740.63494825482,"y":29589.031414236302},"targetPosition":{"x":41890.14038179374,"y":30439.527507516414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"7d2a4605-5be7-4b12-9761-0087ce656080","savedPayload":{"position":{"x":43314.347355679805,"y":27886.180495266573},"targetPosition":{"x":43579.28928007096,"y":27702.1138119903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"quotedAsset":{"type":"Quoted Asset","name":"","code":"{\n\"initialBalance\": 0\n}","id":"46c16e25-d21d-4ca8-a528-ae7bf85e9d3f","savedPayload":{"position":{"x":43270.11105487198,"y":27610.06167977048},"targetPosition":{"x":43579.28928007096,"y":27702.1138119903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"e645ba22-2ba3-4c87-9d62-748477e055dc","savedPayload":{"position":{"x":43458.610110666305,"y":27403.132156057905},"targetPosition":{"x":43579.28928007096,"y":27702.1138119903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"9b0e2fa1-fb9e-4854-9657-7157843a0a56","savedPayload":{"position":{"x":43737.762993615695,"y":27421.44478260165},"targetPosition":{"x":43579.28928007096,"y":27702.1138119903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"072fc7e2-ca96-4c0a-963c-d8697f26a12c","savedPayload":{"position":{"x":43897.65037204082,"y":27651.219207475497},"targetPosition":{"x":43579.28928007096,"y":27702.1138119903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"28139c87-d8fb-49e6-92ce-f826f0ef32d3","savedPayload":{"position":{"x":43817.740726622455,"y":27919.157103391895},"targetPosition":{"x":43579.28928007096,"y":27702.1138119903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0e80ef27-72f6-42e9-98bd-2266ad8d0902","savedPayload":{"position":{"x":43579.28928007096,"y":27702.1138119903},"targetPosition":{"x":43558.15104818431,"y":28023.96596801331},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"43096f38-2d07-4536-a8de-c1d6dc52e5af","savedPayload":{"position":{"x":43558.15104818431,"y":28023.96596801331},"targetPosition":{"x":43537.2392391117,"y":28345.180697797186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"h"},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"a239a374-497a-43f9-8382-5277410b1c2d"}}},"marketReference":{"type":"Market Reference","name":"","id":"c169326d-c842-452b-a9b7-e8658e31dcd4","savedPayload":{"position":{"x":43826.45361245783,"y":28203.054822784812},"targetPosition":{"x":43537.2392391117,"y":28345.180697797186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"67daf900-abb9-4d94-b86b-85ec5820c311","savedPayload":{"position":{"x":43537.2392391117,"y":28345.180697797186},"targetPosition":{"x":43358.19739378843,"y":28612.949684445317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"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":43358.19739378843,"y":28612.949684445317},"targetPosition":{"x":43148.07377003864,"y":28927.454634128168},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"10914881-2af7-4326-9a48-eb50a5b83b21","savedPayload":{"position":{"x":43148.247239305325,"y":28927.248338917063},"targetPosition":{"x":42790.1695410171,"y":29463.444388464814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"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":"","code":"{\n\"initialBalance\": 1,\n\"minimumBalance\": 0.5\n}","id":"58289171-cb5f-482c-b5f6-445eb6dd33bf","savedPayload":{"position":{"x":44036.02698339722,"y":28363.366059104726},"targetPosition":{"x":44357.202378679365,"y":28336.579675132554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"quotedAsset":{"type":"Quoted Asset","name":"","code":"{}","id":"59fd49b3-e491-4029-9dae-12cf0a0e48e5","savedPayload":{"position":{"x":44135.88796016322,"y":28102.124337260877},"targetPosition":{"x":44357.202378679365,"y":28336.579675132554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"initialDatetime\": \"2019-01-01\",\n\"finalDatetime\": \"2020-12-31\"\n}","id":"7bd10192-7a52-4995-98aa-e16129827ca8","savedPayload":{"position":{"x":44402.36557610739,"y":28017.15274644697},"targetPosition":{"x":44357.202378679365,"y":28336.579675132554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-hs\"\n}","id":"59764b94-aa9f-462a-be17-5b110e18609a","savedPayload":{"position":{"x":44635.11601984425,"y":28172.691104702066},"targetPosition":{"x":44357.202378679365,"y":28336.579675132554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"f72c1a53-9e2e-49d5-a07d-90d7ab53c6cf","savedPayload":{"position":{"x":44658.68970970164,"y":28451.428632796116},"targetPosition":{"x":44357.202378679365,"y":28336.579675132554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"3f249546-8932-42c0-a779-b4142cb03d17","savedPayload":{"position":{"x":44455.41819917701,"y":28643.69425984277},"targetPosition":{"x":44357.202378679365,"y":28336.579675132554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2c70a07e-67d1-4157-8524-448842327782","savedPayload":{"position":{"x":44357.202378679365,"y":28336.579675132554},"targetPosition":{"x":44178.11719301108,"y":28604.57168539026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"58ad6731-33c6-4a8f-8bfd-fbd40d7aa8d0","savedPayload":{"position":{"x":44178.11719301108,"y":28604.57168539026},"targetPosition":{"x":43999.15712266918,"y":28872.29629503109},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"a239a374-497a-43f9-8382-5277410b1c2d"}}},"marketReference":{"type":"Market Reference","name":"","id":"3a49b8dd-94b8-4b8f-9c0d-a140ba4526a8","savedPayload":{"position":{"x":44320.91170982664,"y":28893.613213044515},"targetPosition":{"x":43999.15712266918,"y":28872.29629503109},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"649950c4-79f9-4d35-ba72-a96d67fb9278","savedPayload":{"position":{"x":43999.15712266918,"y":28872.29629503109},"targetPosition":{"x":43710.28876756263,"y":29014.513498728833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"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":43710.28876756263,"y":29014.513498728833},"targetPosition":{"x":43370.93380625043,"y":29181.70054572794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"13ceeef0-8a9f-4da9-a4ce-43bc32323c47","savedPayload":{"position":{"x":43368.53019880899,"y":29178.408421637265},"targetPosition":{"x":42790.1695410171,"y":29463.444388464814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"e4b004e5-d078-435b-896e-bcbec6684a4c","savedPayload":{"position":{"x":42623.940516318515,"y":29608.370805879204},"targetPosition":{"x":42301.51227538709,"y":29890.981539114837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"d1632ba7-4823-4174-9caf-8979360c7399","savedPayload":{"position":{"x":43383.9329297536,"y":29441.46216514682},"targetPosition":{"x":42931.807057773796,"y":29838.171591076367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"cce4bcd5-fa0e-4dda-82a7-28cbf76432a4","savedPayload":{"position":{"x":43452.759505915485,"y":29537.44718063196},"targetPosition":{"x":42931.807057773796,"y":29838.171591076367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"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":43501.47288880676,"y":29645.046577239078},"targetPosition":{"x":42931.807057773796,"y":29838.171591076367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"414cdf9f-dc5b-4c23-ac5c-0e7a098b2143","savedPayload":{"position":{"x":42931.807057773796,"y":29838.171591076367},"targetPosition":{"x":41890.14038179374,"y":30439.527507516414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"19a13131-9554-43ef-860b-d994b9804a0e","savedPayload":{"position":{"x":43949.02209402912,"y":28514.744495850893},"targetPosition":{"x":44252.09762841825,"y":28406.000583471792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"quotedAsset":{"type":"Quoted Asset","name":"","code":"{\n\"initialBalance\": 0\n}","id":"00ee3b70-7e94-4b71-aa64-05f6a699b080","savedPayload":{"position":{"x":43977.81112139866,"y":28236.59236923798},"targetPosition":{"x":44252.09762841825,"y":28406.000583471792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"8d94c05a-b82d-4fd9-8552-dcf19fb01ba1","savedPayload":{"position":{"x":44213.44333414086,"y":28085.505562610808},"targetPosition":{"x":44252.09762841825,"y":28406.000583471792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"e6e657e8-1049-40e7-aeec-b57429e34a59","savedPayload":{"position":{"x":44478.339217712455,"y":28175.492208004023},"targetPosition":{"x":44252.09762841825,"y":28406.000583471792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"57de0f1c-8cef-462a-bb88-764cfec67516","savedPayload":{"position":{"x":44573.309327218114,"y":28438.61215850976},"targetPosition":{"x":44252.09762841825,"y":28406.000583471792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"70c32855-5085-4e45-be3c-cfdb212ef266","savedPayload":{"position":{"x":44426.715336862566,"y":28676.91519870268},"targetPosition":{"x":44252.09762841825,"y":28406.000583471792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c5989e16-cde7-414d-9296-e28d805e216a","savedPayload":{"position":{"x":44252.09762841825,"y":28406.000583471792},"targetPosition":{"x":44148.7422061206,"y":28711.062917859083},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"47651cad-aee5-405e-9d40-b4787c49d09e","savedPayload":{"position":{"x":44148.7422061206,"y":28711.062917859083},"targetPosition":{"x":44045.11308194365,"y":29016.158202849896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Trading System","name":"WHB v.2 (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":44677.4538514425,"y":28891.11030273736},"targetPosition":{"x":44361.54848844125,"y":28953.513309627917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ac49275e-4fe1-480f-be02-37665547a777","savedPayload":{"position":{"x":44361.54848844125,"y":28953.513309627917},"targetPosition":{"x":44045.11308194365,"y":29016.158202849896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"57deee32-22b7-4eec-8c9a-9b971d1aeb1a","savedPayload":{"position":{"x":44045.11308194365,"y":29016.158202849896},"targetPosition":{"x":43803.03273271357,"y":29228.27863694877},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"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":43803.03273271357,"y":29228.27863694877},"targetPosition":{"x":43518.575577642056,"y":29477.69782587427},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"70fd8717-56d5-4ad8-b6ed-3050decedf19","savedPayload":{"position":{"x":43511.58765394764,"y":29481.161545691997},"targetPosition":{"x":43028.08397698985,"y":29905.30941876938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"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.01,\n\"minimumBalance\": 0.005\n}","id":"1c0d2a17-cfd5-4eb4-8322-388ad7472fea","savedPayload":{"position":{"x":44511.69115776187,"y":29163.28766291385},"targetPosition":{"x":44827.797086714076,"y":29220.397958400925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"quotedAsset":{"type":"Quoted Asset","name":"","code":"{\n\"initialBalance\": 0\n}","id":"43d84134-6e65-4ba9-93fb-0d8cb705e90a","savedPayload":{"position":{"x":44675.41944631209,"y":28937.14672767146},"targetPosition":{"x":44827.797086714076,"y":29220.397958400925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"16b7de55-dd83-4d7b-a1f8-45f28200a6f6","savedPayload":{"position":{"x":44954.1838102591,"y":28924.144732198314},"targetPosition":{"x":44827.797086714076,"y":29220.397958400925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"8c2d281c-7cd7-4f3e-8411-777eaec18ed5","savedPayload":{"position":{"x":45138.344553177376,"y":29134.142576562248},"targetPosition":{"x":44827.797086714076,"y":29220.397958400925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"dc21103a-37a9-4c67-a456-a3d35c14e9ad","savedPayload":{"position":{"x":45089.04722701449,"y":29408.829825358807},"targetPosition":{"x":44827.797086714076,"y":29220.397958400925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"c0a305e0-3a8b-428e-b005-117bd35270dc","savedPayload":{"position":{"x":44843.50938494748,"y":29541.60389632369},"targetPosition":{"x":44827.797086714076,"y":29220.397958400925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"325c8283-9e06-4711-9791-49994e1eb24f","savedPayload":{"position":{"x":44827.797086714076,"y":29220.397958400925},"targetPosition":{"x":44586.3641707821,"y":29432.324069027018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e70a2d0f-329a-410e-b3ed-fbf1968cac32","savedPayload":{"position":{"x":44586.3641707821,"y":29432.324069027018},"targetPosition":{"x":44344.60660428931,"y":29644.1656163963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"WHB v.2 (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":44953.33353749047,"y":29851.30281583057},"targetPosition":{"x":44649.290571908976,"y":29747.76088866544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"Key 1","id":"d2893836-c3d5-449f-a132-971542ef0c0d"}}},"id":"a6c24af9-77fd-4179-bb83-22928acce259","savedPayload":{"position":{"x":44649.290571908976,"y":29747.76088866544},"targetPosition":{"x":44344.60660428931,"y":29644.1656163963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6053e090-2c8e-4c1b-8eb4-eb3032f5cb9d","savedPayload":{"position":{"x":44344.60660428931,"y":29644.1656163963},"targetPosition":{"x":44029.65068525114,"y":29706.589257726668},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"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":44029.65068525114,"y":29706.589257726668},"targetPosition":{"x":43658.77696384793,"y":29780.18960006669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8b8401d2-fbd3-4514-9a24-6236941f8572","savedPayload":{"position":{"x":43658.94710506227,"y":29780.009588673463},"targetPosition":{"x":43028.08397698985,"y":29905.30941876938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"122a1f16-06c2-4e63-9c9b-0b1b6532ef6e","savedPayload":{"position":{"x":42836.228026148114,"y":30000.0708266346},"targetPosition":{"x":42451.60692532848,"y":30189.593514413704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"l"}}},"id":"7154ffab-e458-47a9-98ab-716d7db899c2","savedPayload":{"position":{"x":43591.39888865664,"y":29862.167594940413},"targetPosition":{"x":43051.97981248752,"y":30128.30519050224},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"efbaa91d-f097-4fda-b373-8b9394dae215","savedPayload":{"position":{"x":43633.03656791882,"y":29972.696256647498},"targetPosition":{"x":43051.97981248752,"y":30128.30519050224},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"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.marketReference.keyInstance !== undefined) {\n process.marketReference.keyInstance.payload.referenceParent = key\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":43652.240225669295,"y":30089.23818002004},"targetPosition":{"x":43051.97981248752,"y":30128.30519050224},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"aaef47a3-030f-4bba-a297-72973f84a6a7","savedPayload":{"position":{"x":43051.97981248752,"y":30128.30519050224},"targetPosition":{"x":41890.14038179374,"y":30439.527507516414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"","id":"fa969ad9-f967-4c42-9a7b-e3ca5c53a2a4","savedPayload":{"position":{"x":44563.752766473845,"y":28726.51204419318},"targetPosition":{"x":44505.18351145028,"y":29022.185768977342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"7321618d-f188-4909-ae51-bff16e83e85c","savedPayload":{"position":{"x":44505.18351145028,"y":29022.185768977342},"targetPosition":{"x":44446.73000839822,"y":29317.919871736813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"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":44446.73000839822,"y":29317.919871736813},"targetPosition":{"x":44388.44322497823,"y":29613.907569482504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"02b2b5ef-8fbb-4234-847b-9e9381e39e40","savedPayload":{"position":{"x":44388.44322497823,"y":29613.907569482504},"targetPosition":{"x":44272.00779942372,"y":30204.946262238485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"","id":"65a2cdb9-af06-458b-ae81-52a922d32874","savedPayload":{"position":{"x":44967.25960209239,"y":28881.73820503715},"targetPosition":{"x":44870.441375474875,"y":29167.311094532386},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"fe3e9758-12d8-46da-a7e9-968a340f0ae5","savedPayload":{"position":{"x":44870.441375474875,"y":29167.311094532386},"targetPosition":{"x":44773.69751260277,"y":29452.87114374833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"","id":"5ba98b0e-e71d-4c91-a3b2-ca98f7bf3e1b","savedPayload":{"position":{"x":45453.09059939077,"y":28856.68518068597},"targetPosition":{"x":45113.42999916721,"y":29154.70174934311},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"e3fe5518-65d4-4413-9d1f-624025766f97","savedPayload":{"position":{"x":45113.42999916721,"y":29154.70174934311},"targetPosition":{"x":44773.69751260277,"y":29452.87114374833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"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":44773.69751260277,"y":29452.87114374833},"targetPosition":{"x":44606.29852269913,"y":29703.881918996256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a2a8253d-ea54-431a-a623-627a9d80c96d","savedPayload":{"position":{"x":44606.29852269913,"y":29703.881918996256},"targetPosition":{"x":44272.00779942372,"y":30204.946262238485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"cb0330ef-a176-4e88-b09e-17c5c0ed8893","savedPayload":{"position":{"x":45421.3393568106,"y":29249.255430321416},"targetPosition":{"x":45222.451918474486,"y":29475.929696456333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"606c5e74-aa46-47d9-82c9-e1ff4a627ebe","savedPayload":{"position":{"x":45222.451918474486,"y":29475.929696456333},"targetPosition":{"x":45023.650296285596,"y":29702.579362584125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"de1108b1-a773-4d54-b32b-b2931011f115","savedPayload":{"position":{"x":45879.664842377,"y":29411.96516858365},"targetPosition":{"x":45451.73624737675,"y":29557.237066035806},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"6c0075a2-e741-45b7-8b6c-66d2faf95ad8","savedPayload":{"position":{"x":45451.73624737675,"y":29557.237066035806},"targetPosition":{"x":45023.650296285596,"y":29702.579362584125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"d29785c9-1789-45f5-88a1-17fa13a383bb","savedPayload":{"position":{"x":45023.650296285596,"y":29702.579362584125},"targetPosition":{"x":44772.77564042518,"y":29870.23031124894},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"34ef19e0-5e75-4108-86e5-276f213deea5","savedPayload":{"position":{"x":44772.77564042518,"y":29870.23031124894},"targetPosition":{"x":44272.00779942372,"y":30204.946262238485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"","id":"936109e1-9d5f-4738-9eee-26e98c6675a9","savedPayload":{"position":{"x":45699.89387085827,"y":29762.487102244177},"targetPosition":{"x":45429.335053302355,"y":29895.69561846699},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"69c2cfe4-3a79-45d0-8742-ff3f368431f6","savedPayload":{"position":{"x":45429.335053302355,"y":29895.69561846699},"targetPosition":{"x":45158.858744477104,"y":30028.883442023704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"","id":"75d8a16d-5ff3-4771-b32a-bf5ea071e7fc","savedPayload":{"position":{"x":46061.00454182307,"y":30087.712394580292},"targetPosition":{"x":45610.02425587317,"y":30058.313770154724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"c437054a-3447-486b-ab42-b267b800f96a","savedPayload":{"position":{"x":45610.02425587317,"y":30058.313770154724},"targetPosition":{"x":45158.858744477104,"y":30028.883442023704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"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":45158.858744477104,"y":30028.883442023704},"targetPosition":{"x":44862.83944658449,"y":30087.58329134732},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ed9d924d-7a8b-46da-a4e9-eb121329fe49","savedPayload":{"position":{"x":44862.83944658449,"y":30087.58329134732},"targetPosition":{"x":44272.00779942372,"y":30204.946262238485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"","id":"6e4bd29a-ffe6-4bbd-a114-62a0efe82a12","savedPayload":{"position":{"x":45760.6488820697,"y":30342.828489267125},"targetPosition":{"x":45459.70100509999,"y":30362.234023108005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"b3c5ca8e-cc9d-4662-96cb-82d7c5801f67","savedPayload":{"position":{"x":45459.70100509999,"y":30362.234023108005},"targetPosition":{"x":45158.82769546795,"y":30381.603232805704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"","id":"d6995a0d-dffd-4213-b159-1919fa35f1b8","savedPayload":{"position":{"x":45969.52778588621,"y":30781.448959775782},"targetPosition":{"x":45564.269191446634,"y":30581.63665626878},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"d640b042-3b50-4f02-961a-9f4e9aab1015","savedPayload":{"position":{"x":45564.269191446634,"y":30581.63665626878},"targetPosition":{"x":45158.82769546795,"y":30381.603232805704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"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":45158.82769546795,"y":30381.603232805704},"targetPosition":{"x":44862.82546003235,"y":30322.600699455408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"10972cbd-be85-4344-bf34-8aab4dc3a23b","savedPayload":{"position":{"x":44862.82546003235,"y":30322.600699455408},"targetPosition":{"x":44272.00779942372,"y":30204.946262238485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"2ef284e2-813b-422b-91b1-fd9f4a3289dc","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"4b5cf18d-cd45-4a96-9117-8d5d7781b0ab","savedPayload":{"position":{"x":45274.248143438956,"y":30875.483495476296},"targetPosition":{"x":45023.527910627956,"y":30707.83217071608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"79548414-ae13-4e0f-99b6-fff96171bbaf","savedPayload":{"position":{"x":45023.527910627956,"y":30707.83217071608},"targetPosition":{"x":44772.69288254182,"y":30539.965434132333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5aa3a8bc-9fda-4e11-a56d-5655b148bfa7","savedPayload":{"position":{"x":44772.69288254182,"y":30539.965434132333},"targetPosition":{"x":44272.00779942372,"y":30204.946262238485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Resistances & Supports","bot":{"type":"Indicator Bot Instance","name":"Resistances & Supports","code":" {\n \"repo\": \"\"\n }","processes":[{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"","id":"e28673ef-1555-4468-83f6-9011026ef257","savedPayload":{"position":{"x":45452.66805723561,"y":31553.156804953058},"targetPosition":{"x":45113.06001290915,"y":31255.234887033326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1d60f7c3-f431-43f0-aaf3-6b25c092a7d3","savedPayload":{"position":{"x":45113.06001290915,"y":31255.234887033326},"targetPosition":{"x":44773.34200526984,"y":30957.178797188724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"5d9b2729-43fb-4e7e-aa4f-b8477c424e51"}}},{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"","id":"5c8850db-00c6-4607-b153-469534df6f68","savedPayload":{"position":{"x":44966.73206008909,"y":31528.118995498546},"targetPosition":{"x":44870.00048688255,"y":31242.66032093637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f38aa087-739d-4c9c-ac81-c5eaf4750f6e","savedPayload":{"position":{"x":44870.00048688255,"y":31242.66032093637},"targetPosition":{"x":44773.34200526984,"y":30957.178797188724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"be19d91b-9337-4f84-96b3-f4e54ea12df5"}}}],"id":"12391346-c72a-44d7-8574-17fd5ed22657","savedPayload":{"position":{"x":44773.34200526984,"y":30957.178797188724},"targetPosition":{"x":44606.10518045995,"y":30706.220760937824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"39e297c4-fc60-4df1-a76d-c59f45b6a090","savedPayload":{"position":{"x":44606.10518045995,"y":30706.220760937824},"targetPosition":{"x":44272.00779942372,"y":30204.946262238485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8e0023df-5beb-4187-a53b-908c363861f9","savedPayload":{"position":{"x":44273.186396693905,"y":30204.885859141745},"targetPosition":{"x":43682.65778612944,"y":30322.206497874296},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},"id":"930ad389-2e02-405d-a608-628df967e702","savedPayload":{"position":{"x":43682.89779132531,"y":30322.114446203646},"targetPosition":{"x":43092.9570586135,"y":30439.530985154168},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"216101a4-697c-41c6-989c-a5f8f181c624","savedPayload":{"position":{"x":43694.50778488079,"y":30439.5301984526},"targetPosition":{"x":43092.9570586135,"y":30439.530985154168},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"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":43682.8911800849,"y":30556.999036454978},"targetPosition":{"x":43092.9570586135,"y":30439.530985154168},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ddd80520-a052-464b-a7b8-23b72387086f","savedPayload":{"position":{"x":43092.9570586135,"y":30439.530985154168},"targetPosition":{"x":41890.14038179374,"y":30439.527507516414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"SMA 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":44071.61797125626,"y":29269.179122287296},"targetPosition":{"x":44017.22604407985,"y":29586.166432086655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"4829d508-b32b-402c-8d27-4493549196b5","savedPayload":{"position":{"x":44017.22604407985,"y":29586.166432086655},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA 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":45168.8488344655,"y":29458.147255078686},"targetPosition":{"x":44565.86589926591,"y":29680.585441818144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"5f34959e-a63c-4298-8323-a16f75e23431","savedPayload":{"position":{"x":44565.86589926591,"y":29680.585441818144},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"6db29c31-152b-472a-852e-0e4a36bec524","savedPayload":{"position":{"x":43962.84190684965,"y":29903.09502706654},"targetPosition":{"x":43551.90647643782,"y":30397.266512500442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"20c34f88-6b58-474b-b69d-02712765c0db","savedPayload":{"position":{"x":43551.90647643782,"y":30397.266512500442},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA 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":44848.06740265459,"y":30126.954299288456},"targetPosition":{"x":44617.64305938516,"y":30351.280902615003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"31761ef4-c98b-4657-a37f-652eff5340ea","savedPayload":{"position":{"x":44617.64305938516,"y":30351.280902615003},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA 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":45624.60027321795,"y":30924.208529781736},"targetPosition":{"x":45005.977709353945,"y":30749.876937252106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"c4d61b48-9c23-47f1-937b-1729767a26f6","savedPayload":{"position":{"x":45005.977709353945,"y":30749.876937252106},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"34656b7b-826e-4ebd-943a-407d8c91ea24","savedPayload":{"position":{"x":44387.27143213535,"y":30575.564915785017},"targetPosition":{"x":43764.266809147426,"y":30733.667438768847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"28be18c7-c387-435e-ae7d-dfeca201bce5","savedPayload":{"position":{"x":43764.266809147426,"y":30733.667438768847},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"MACD 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":44971.81020849867,"y":31276.620146946167},"targetPosition":{"x":44653.49004123155,"y":31322.55467880252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"9cc4175f-28ad-4307-a8d6-0df303a02be1","savedPayload":{"position":{"x":44653.49004123155,"y":31322.55467880252},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD 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":45131.12724051729,"y":32377.93040356555},"targetPosition":{"x":44733.22183307022,"y":31873.22574960204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"a585a9e1-e18d-40b6-b364-75f01e840a4b","savedPayload":{"position":{"x":44733.22183307022,"y":31873.22574960204},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"525c3ef8-145e-4919-bf2d-983db99a5cdb","savedPayload":{"position":{"x":44335.23861007668,"y":31368.479242651025},"targetPosition":{"x":43738.24708451567,"y":31130.308446359704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b652ba10-fb7a-4a93-bd24-9500bb7d25ec","savedPayload":{"position":{"x":43738.24708451567,"y":31130.308446359704},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI 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":44395.607564219106,"y":32279.346270225502},"targetPosition":{"x":44111.06304717549,"y":32129.543698932317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"16a0815f-b793-4ca8-aa09-78f9f447f110","savedPayload":{"position":{"x":44111.06304717549,"y":32129.543698932317},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI 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":43876.85035087776,"y":33264.29116567567},"targetPosition":{"x":43851.71485258066,"y":32622.075786304355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"123f248b-aa95-4d1c-a6c2-9fc70fc2b816","savedPayload":{"position":{"x":43851.71485258066,"y":32622.075786304355},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":43826.594538981204,"y":31979.768305805377},"targetPosition":{"x":43483.775300077,"y":31436.11470464454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"da1cddfc-5d56-46e7-b14a-0b21127cf6e3","savedPayload":{"position":{"x":43483.775300077,"y":31436.11470464454},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"6907a34a-7247-4717-8be3-154ebc2cacfc","savedPayload":{"position":{"x":42927.695684739876,"y":30878.09191280621},"targetPosition":{"x":42499.798120847416,"y":30850.102649976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},"id":"ac392204-2e14-4744-a636-063c2bf461ae","savedPayload":{"position":{"x":43652.185746548756,"y":30789.964498250916},"targetPosition":{"x":43051.954111996405,"y":30750.842818950958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"4d93f230-422c-4a10-8e6d-50381aa60aba","savedPayload":{"position":{"x":43632.969464539834,"y":30906.514370388715},"targetPosition":{"x":43051.954111996405,"y":30750.842818950958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"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":43591.30937899207,"y":31017.075000840647},"targetPosition":{"x":43051.954111996405,"y":30750.842818950958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"83556c43-8483-48e3-be7e-36f9dbb70f08","savedPayload":{"position":{"x":43051.954111996405,"y":30750.842818950958},"targetPosition":{"x":41890.14038179374,"y":30439.527507516414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":44972.262947294315,"y":31118.718470440148},"targetPosition":{"x":44638.22490151728,"y":31620.194666293457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":45091.17064358791,"y":31222.70534719221},"targetPosition":{"x":44638.22490151728,"y":31620.194666293457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"24-hs\"}","id":"7890a24e-5bf5-450f-bb35-f23b3eb495f6","savedPayload":{"position":{"x":45178.77949805262,"y":31353.610402114664},"targetPosition":{"x":44638.22490151728,"y":31620.194666293457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"38e64db1-376d-45de-a92c-a6fb25282507","savedPayload":{"position":{"x":45798.08358329995,"y":30783.47112133315},"targetPosition":{"x":45818.52076736195,"y":31385.59859580079},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"884a5d08-b607-4b2b-8e7a-8adeb7e8dd4a"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9ad6d912-ff9c-45c8-bfce-bcd0d86e3977","savedPayload":{"position":{"x":45898.37673360377,"y":30788.25119234455},"targetPosition":{"x":45818.52076736195,"y":31385.59859580079},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"68df01d8-d9a8-400c-aa76-8da44c5dc040"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6c5e7c7f-a010-4d59-8299-d8d4534aa7f8","savedPayload":{"position":{"x":45996.05938571397,"y":30809.588522972816},"targetPosition":{"x":45818.52076736195,"y":31385.59859580079},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"632f0f98-eb2c-4820-9943-662a4903be81"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"41db7192-ec70-4f95-85dd-343bfa05258e","savedPayload":{"position":{"x":46088.671022938994,"y":30846.72421469604},"targetPosition":{"x":45818.52076736195,"y":31385.59859580079},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"88a1ca81-b317-4ab2-b651-c8fa566e8e28"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"13c5c367-3758-4f8f-883c-ba6f1ee3bef2","savedPayload":{"position":{"x":46173.797322491286,"y":30898.58369972401},"targetPosition":{"x":45818.52076736195,"y":31385.59859580079},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candle-Stairs","id":"5979844b-35e7-4c04-938f-18e6156352a0"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"0fac6cd3-3172-4854-9ce2-f2827023f503","savedPayload":{"position":{"x":46249.17664768098,"y":30963.730987652525},"targetPosition":{"x":45818.52076736195,"y":31385.59859580079},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"5bce195f-7d08-4281-bb9d-ca1e9417068e"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"88c7874f-9372-4dc5-9bb1-491ca58ceded","savedPayload":{"position":{"x":46312.78393052083,"y":31040.384533238812},"targetPosition":{"x":45818.52076736195,"y":31385.59859580079},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"b9145946-1899-4fac-b531-47ed600873be"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6570c568-8d96-427f-9dbe-822d0fe9f900","savedPayload":{"position":{"x":46362.900460538505,"y":31126.454059169817},"targetPosition":{"x":45818.52076736195,"y":31385.59859580079},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"c9daf265-f452-4372-a8a9-6ed9c0d7a0ed"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"a133263e-3eca-4d4a-b04e-8f40e5ec78ba","savedPayload":{"position":{"x":46398.167326095994,"y":31219.59432824167},"targetPosition":{"x":45818.52076736195,"y":31385.59859580079},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"fba1f18e-dd5b-48e6-82b1-ff04a624f090"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"32fcaa2a-af1d-4aa6-adf0-36dd24759ca4","savedPayload":{"position":{"x":46417.62588351845,"y":31317.267577006704},"targetPosition":{"x":45818.52076736195,"y":31385.59859580079},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"64f059bf-66e2-463c-aed1-800b5fa195ab"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"3d5d19b9-481d-4542-b279-06303aa9edef","savedPayload":{"position":{"x":46420.70567572493,"y":31416.809466474464},"targetPosition":{"x":45818.52076736195,"y":31385.59859580079},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":46407.31337137963,"y":31515.483822428057},"targetPosition":{"x":45818.52076736195,"y":31385.59859580079},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Layer","name":"","code":"{ \n\"status\": \"off\"\n}","id":"10e19911-11b2-4b8d-86fa-b7a5de9f93e4","savedPayload":{"position":{"x":46377.87367543775,"y":31610.607629023725},"targetPosition":{"x":45818.52076736195,"y":31385.59859580079},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Layer","name":"","code":"{ \n\"status\": \"off\"\n}","id":"5666253c-62f6-46f2-91fa-c19b44a5932a","savedPayload":{"position":{"x":46333.185880681754,"y":31699.591341637817},"targetPosition":{"x":45818.52076736195,"y":31385.59859580079},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Layer","name":"","code":"{ \n\"status\": \"off\"\n}","id":"aae1b1f8-35b5-4c41-b5c9-64d80a97cc38","savedPayload":{"position":{"x":46274.467312818415,"y":31780.011584392756},"targetPosition":{"x":45818.52076736195,"y":31385.59859580079},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Layer","name":"","code":"{ \n\"status\": \"off\"\n}","id":"434c3396-d53e-434b-aa8b-c27a170c9ed9","savedPayload":{"position":{"x":46203.31676678368,"y":31849.67669835976},"targetPosition":{"x":45818.52076736195,"y":31385.59859580079},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Layer","name":"","code":"{ \n\"status\": \"off\"\n}","id":"9e784e59-be45-4895-9174-75d3dabfd45b","savedPayload":{"position":{"x":46121.67361107911,"y":31906.68977984249},"targetPosition":{"x":45818.52076736195,"y":31385.59859580079},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Layer","name":"","code":"{ \n\"status\": \"off\"\n}","id":"3ad3e53b-53d4-4c61-a80d-e3f5a679b2cd","savedPayload":{"position":{"x":46028.33674024209,"y":31950.48529383432},"targetPosition":{"x":45818.52076736195,"y":31385.59859580079},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5bfa0541-b9bb-4dc6-a5a0-5684278c2a16","savedPayload":{"position":{"x":45819.36840869368,"y":31385.419815840156},"targetPosition":{"x":45228.931388073186,"y":31502.74417203152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":190,"radius":0}}},"id":"63c36d69-c222-4687-a535-c147abcfb9a9","savedPayload":{"position":{"x":45229.38672237636,"y":31502.662848045977},"targetPosition":{"x":44638.22490151728,"y":31620.194666293457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"6f781018-392b-4ba2-b00f-68d4c5498f2b","savedPayload":{"position":{"x":45239.67954677261,"y":31659.506072974258},"targetPosition":{"x":44638.22490151728,"y":31620.194666293457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"5074db98-f742-4771-a68e-a001b9c45182","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"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":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"71351f63-10b4-4f89-ac9f-a8380bb0b75e"}}}],"id":"2f754398-30ac-4afa-8c12-c37013b8a4da","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"805c6659-38e2-4959-86d0-cbabc87a8184","savedPayload":{"position":{"x":45208.98090305957,"y":31813.870110660417},"targetPosition":{"x":44638.22490151728,"y":31620.194666293457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"53e5ea3b-83b8-4460-ac02-c68e2f17c85f","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"775d50c1-df4b-4d02-9da4-de31dd5fc006","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43702.617792383055,"y":31853.05810689925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"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":"06f133c7-2bf0-4352-89e7-bd43dc74c3e7","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43702.617792383055,"y":31853.05810689925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"71351f63-10b4-4f89-ac9f-a8380bb0b75e"}}},{"type":"Layer","name":"","code":"{ \n\"status\": \"off\"\n}","id":"ae91005d-2615-4b4e-bcd4-3fb25ef7f510","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43702.617792383055,"y":31853.05810689925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Layer","name":"","code":"{ \n\"status\": \"off\"\n}","id":"1939dd65-d12b-436d-8c76-609fc1f776f4","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43702.617792383055,"y":31853.05810689925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"68537c49-d84e-4843-9ee2-9aae3f9abef1","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"35419f31-46aa-455e-b9bc-1f87a04e7903","savedPayload":{"position":{"x":45139.353748382324,"y":31955.03611259359},"targetPosition":{"x":44638.22490151728,"y":31620.194666293457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":40,"radius":0}}},"id":"02c55b2b-cb65-4131-aa82-de04ce1ca1c6","savedPayload":{"position":{"x":45035.54820924473,"y":32073.374045997527},"targetPosition":{"x":44638.22490151728,"y":31620.194666293457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1620,"y":80},"width":150,"height":40,"radius":0}}},"id":"de6ca021-6112-41ab-8a4e-5b24682c397e","savedPayload":{"position":{"x":44904.62701626791,"y":32160.8029978036},"targetPosition":{"x":44638.22490151728,"y":31620.194666293457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1470,"y":80},"width":150,"height":40,"radius":0}}},"id":"d5405af5-9184-4017-805d-a7f9f9256524","savedPayload":{"position":{"x":44755.4514495045,"y":32211.35287786325},"targetPosition":{"x":44638.22490151728,"y":31620.194666293457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1320,"y":80},"width":150,"height":40,"radius":0}}},"id":"cfda3689-ce58-460a-81c3-4b99377e7184","savedPayload":{"position":{"x":44598.07907263305,"y":32221.458401450443},"targetPosition":{"x":44638.22490151728,"y":31620.194666293457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a4a8b171-8b07-4895-8c25-cedd8fa9c957","savedPayload":{"position":{"x":44638.52989266892,"y":31620.261680135452},"targetPosition":{"x":44068.49117132832,"y":31426.826447713953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"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":44068.869578561484,"y":31427.048075342944},"targetPosition":{"x":42931.70615561109,"y":31041.063169142482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"c01a6962-8b0e-4b06-8705-8751660aabbf","savedPayload":{"position":{"x":43452.64880473069,"y":31341.65552813608},"targetPosition":{"x":42931.70615561109,"y":31041.063169142482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"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":43383.721289869136,"y":31437.822140544642},"targetPosition":{"x":42931.70615561109,"y":31041.063169142482},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"41c01e94-6c5c-4b71-9c70-8d962c86fec0","savedPayload":{"position":{"x":42931.70615561109,"y":31041.063169142482},"targetPosition":{"x":41890.14038179374,"y":30439.527507516414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 to have a child Exchange Accounts.')\n return\n }\n if (superAction.payload.parentNode.payload.parentNode.payload.parentNode.exchangeAccounts.userAccounts.length === 0) {\n superAction.payload.uiObject.setErrorMessage('Exchange Accounts to needs have a child User Account.')\n return\n }\n if (superAction.payload.parentNode.payload.parentNode.payload.parentNode.exchangeAccounts.userAccounts[0].userKeys === undefined) {\n superAction.payload.uiObject.setErrorMessage('User Account needs to have a child User Keys.')\n return\n }\n if (superAction.payload.parentNode.payload.parentNode.payload.parentNode.exchangeAccounts.userAccounts[0].userKeys.keys.length === 0) {\n superAction.payload.uiObject.setErrorMessage('User Keys needs to have a child Exchange Account Key.')\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 key = exchange.exchangeAccounts.userAccounts[0].userKeys.keys[0]\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, 'Resistances')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 3: {\n let dataProduct = findDataProduct(singleMarketData, 'Supports')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 4: {\n let dataProduct = findDataProduct(singleMarketData, 'Candles Channels')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 5: {\n let dataProduct = findDataProduct(singleMarketData, 'Candles Channels Objects')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 6: {\n let dataProduct = findDataProduct(singleMarketData, 'Bollinger Channels')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 7: {\n let dataProduct = findDataProduct(singleMarketData, 'Bollinger Channels Objects')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 8: {\n let dataProduct = findDataProduct(singleMarketData, 'Bollinger Sub-Channels')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 9: {\n let dataProduct = findDataProduct(singleMarketData, 'Bollinger Sub-Channels Objects')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 10: {\n let dataProduct = findDataProduct(singleMarketData, 'Popular SMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 11: {\n let dataProduct = findDataProduct(singleMarketData, 'Base5 SMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 12: {\n let dataProduct = findDataProduct(singleMarketData, 'Base6 SMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 13: {\n let dataProduct = findDataProduct(singleMarketData, 'Base7 SMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 14: {\n let dataProduct = findDataProduct(singleMarketData, 'Base11 SMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 15: {\n let dataProduct = findDataProduct(singleMarketData, 'Popular EMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 16: {\n let dataProduct = findDataProduct(singleMarketData, 'Base7 EMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 17: {\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 'MACD': {\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, 'MACD 122609')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 1: {\n let dataProduct = findDataProduct(singleMarketData, 'MACD 031016')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 2: {\n let dataProduct = findDataProduct(singleMarketData, 'MACD 081709')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 3: {\n let dataProduct = findDataProduct(singleMarketData, 'MACD 245209')\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":42315.379156118935,"y":30864.883508780593},"targetPosition":{"x":41890.14038179374,"y":30439.527507516414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"95b24e48-3b10-47cb-b149-8667571f4a83","savedPayload":{"position":{"x":41890.236139228655,"y":30439.426551049364},"targetPosition":{"x":40847.785430914875,"y":31041.241941751345},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":41729.477786552314,"y":31046.11236071952},"targetPosition":{"x":41582.54274899229,"y":31205.193628384397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"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":41785.524618173,"y":31129.822745374793},"targetPosition":{"x":41582.54274899229,"y":31205.193628384397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"12eb790b-7f24-48bf-a4f0-34159f3d1863","savedPayload":{"position":{"x":41582.54274899229,"y":31205.193628384397},"targetPosition":{"x":41242.73749253987,"y":31466.604853288718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"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":41853.66308982842,"y":31264.801386694602},"targetPosition":{"x":41656.82837164478,"y":31355.520360853872},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"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":41873.37022951505,"y":31363.719899709926},"targetPosition":{"x":41656.82837164478,"y":31355.520360853872},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"29b330a4-d4f6-45ac-8b41-090740dc418f","savedPayload":{"position":{"x":41656.82837164478,"y":31355.520360853872},"targetPosition":{"x":41242.73749253987,"y":31466.604853288718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"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":41884.48440596237,"y":31513.967037417144},"targetPosition":{"x":41667.84415563366,"y":31522.410064016763},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"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":41864.71847634008,"y":31612.922947914863},"targetPosition":{"x":41667.84415563366,"y":31522.410064016763},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e8e96f57-041e-4c0d-a2bf-5a8e444636b1","savedPayload":{"position":{"x":41667.84415563366,"y":31522.410064016763},"targetPosition":{"x":41242.73749253987,"y":31466.604853288718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"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.05356628126,"y":31755.042846552373},"targetPosition":{"x":41614.02097354356,"y":31680.97605960732},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"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 if (timelineChart.layersManager !== undefined) {\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 }\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":41760.499195398515,"y":31841.017373526123},"targetPosition":{"x":41614.02097354356,"y":31680.97605960732},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c78e76fc-311b-4ac7-942f-af9629ea8b76","savedPayload":{"position":{"x":41614.02097354356,"y":31680.97605960732},"targetPosition":{"x":41242.73749253987,"y":31466.604853288718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"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.60051045396,"y":31954.075050489493},"targetPosition":{"x":41503.55623477179,"y":31806.85723421229},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"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":41578.48746317018,"y":32010.157336419907},"targetPosition":{"x":41503.55623477179,"y":31806.85723421229},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f23edd8e-b0f9-4531-9550-69cdb0616bcc","savedPayload":{"position":{"x":41503.55623477179,"y":31806.85723421229},"targetPosition":{"x":41242.73749253987,"y":31466.604853288718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"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":41443.711470549744,"y":32077.739391028543},"targetPosition":{"x":41353.18735100165,"y":31880.891142726974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"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":41344.40711731363,"y":32097.37996261368},"targetPosition":{"x":41353.18735100165,"y":31880.891142726974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f8ffadd5-8eda-4c4e-be1c-c49b98045b42","savedPayload":{"position":{"x":41353.18735100165,"y":31880.891142726974},"targetPosition":{"x":41242.73749253987,"y":31466.604853288718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"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":41186.32467320293,"y":31891.49809390885},"targetPosition":{"x":41242.73749253987,"y":31466.604853288718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"c25d0331-8ac0-4834-aa77-743487455d45","savedPayload":{"position":{"x":41890.23583929248,"y":31643.061431023485},"targetPosition":{"x":40847.785430914875,"y":31041.241941751345},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1dd2a75d-7d97-4994-8c95-b392d933b1c1","savedPayload":{"position":{"x":40847.785430914875,"y":31041.241941751345},"targetPosition":{"x":39643.041459281856,"y":31041.13836154292},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"S"}}},"id":"17b5ea06-62d8-4a79-b0ba-f9d3b997c17f","savedPayload":{"position":{"x":39643.041459281856,"y":31041.13836154292},"targetPosition":{"x":39643.041459281856,"y":31041.13836154292},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}} \ No newline at end of file diff --git a/TaskServer/.env b/TaskServer/.env index 4df3b114e..1e532c64c 100644 --- a/TaskServer/.env +++ b/TaskServer/.env @@ -8,6 +8,6 @@ WRITE_LOGS_TO_FILES=true BOTS_PATH=../Legacy-Code LOG_PATH=../Log-Files -WEB_SOCKETS_SERVER_PORT=8080 -WEB_SERVER_PORT=34247 +WEB_SOCKETS_SERVER_PORT=8081 +WEB_SERVER_PORT=34248 WEB_SERVER_URL=localhost diff --git a/TaskServer/Assistant.js b/TaskServer/Assistant.js deleted file mode 100644 index 9a98b1cbd..000000000 --- a/TaskServer/Assistant.js +++ /dev/null @@ -1,1127 +0,0 @@ -exports.newAssistant = function newAssistant(BOT, logger, UTILITIES) { - - /* - This module allows trading bots to execute actions on the exchange. - */ - - const MODULE_NAME = "Assistant"; - - let bot = BOT; - - let thisObject = { - dataDependencies: undefined, - initialize: initialize, - createOrder: createOrder, - getPositions: getPositions, - getBalance: getBalance, - getAvailableBalance: getAvailableBalance, - getInitialBalance: getInitialBalance, - getProfits: getProfits, - getCombinedProfits: getCombinedProfits, - getROI: getROI, - getMarketRate: getMarketRate, - getTicker: getTicker, - sendMessage: sendMessage, - rememberThis: rememberThis, - remindMeOf: remindMeOf, - truncDecimals: truncDecimals, - sendEmail: sendEmail, - addExtraData: addExtraData - }; - - let utilities = UTILITIES.newCloudUtilities(logger); - - let openOrders = []; // These are the open positions at the exchange at the account the bot is authorized to use. - let openPositions = []; // These are the open positions the bot knows it made by itself. - - let context; - let exchangeAPI; - - let marketRate; - let ticker; - - return thisObject; - - function initialize(pContext, pExchangeAPI, pDataDependencies, callBackFunction) { - - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Entering function."); } - - /* Save local values. */ - - context = pContext; - exchangeAPI = pExchangeAPI; - thisObject.dataDependencies = pDataDependencies; - - switch (bot.startMode) { - - case 'Live': { - getMarketRateFromExchange(); - break; - } - - case 'Backtest': { - validateExchangeSyncronicity(); - break; - } - - default: { - logger.write(MODULE_NAME, "[ERROR] initialize -> Unexpected bot.startMode."); - logger.write(MODULE_NAME, "[ERROR] initialize -> bot.startMode = " + bot.startMode); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - function getMarketRateFromExchange() { - - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> getMarketRateFromExchange -> Entering function."); } - - exchangeAPI.getTicker(bot.market, onTicker); - - return; - - function onTicker(err, pTicker) { - - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> getMarketRateFromExchange -> onTicker -> Entering function."); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> getMarketRateFromExchange -> onTicker -> We could not get the Market Price now."); } - - callBackFunction(global.DEFAULT_RETRY_RESPONSE); - return; - } - - ticker = pTicker; - marketRate = pTicker.last; - - context.newHistoryRecord.marketRate = marketRate; - - validateExchangeSyncronicity(); - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> getMarketRateFromExchange -> onTicker -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> getMarketRateFromExchange -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function validateExchangeSyncronicity() { - - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> validateExchangeSyncronicity -> Entering function."); } - - /* Procedure to validate we are in sync with the exchange. */ - - getPositionsAtExchange(onDone); - - function onDone(err) { - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> validateExchangeSyncronicity -> onDone -> Entering function."); } - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> validateExchangeSyncronicity -> onDone -> Execution finished well."); } - calculateProfits(); - return; - } - break; - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[ERROR] initialize -> validateExchangeSyncronicity -> onDone -> Retry Later. Requesting Execution Retry."); - callBackFunction(err); - return; - } - break; - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - logger.write(MODULE_NAME, "[ERROR] initialize -> validateExchangeSyncronicity -> onDone -> Operation Failed. Aborting the process."); - callBackFunction(err); - return; - } - break; - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> validateExchangeSyncronicity -> onDone -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> onDone -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function calculateProfits() { - - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> calculateProfits -> Entering function."); } - - /* Calculate Profits */ - - if (context.executionContext.initialBalance.baseAsset > 0) { - - context.executionContext.profits.baseAsset = (thisObject.truncDecimals(context.executionContext.balance.baseAsset) - thisObject.truncDecimals(context.executionContext.initialBalance.baseAsset)) / thisObject.truncDecimals(context.executionContext.initialBalance.baseAsset); - context.executionContext.profits.baseAsset = thisObject.truncDecimals(context.executionContext.profits.baseAsset); - } - - if (context.executionContext.initialBalance.quotedAsset > 0) { - - context.executionContext.profits.quotedAsset = (thisObject.truncDecimals(context.executionContext.balance.quotedAsset) - thisObject.truncDecimals(context.executionContext.initialBalance.quotedAsset)) / thisObject.truncDecimals(context.executionContext.initialBalance.quotedAsset); - context.executionContext.profits.quotedAsset = thisObject.truncDecimals(context.executionContext.profits.quotedAsset); - } - - context.newHistoryRecord.profitsBaseAsset = context.executionContext.profits.baseAsset; - context.newHistoryRecord.profitsQuotedAsset = context.executionContext.profits.quotedAsset; - - /* Calculate Combined Profits */ - - if (context.executionContext.initialBalance.baseAsset > 0) { - - let convertedAssetsB = (thisObject.truncDecimals(context.executionContext.balance.quotedAsset) - thisObject.truncDecimals(context.executionContext.initialBalance.quotedAsset)) * marketRate; - convertedAssetsB = thisObject.truncDecimals(convertedAssetsB); - - context.executionContext.combinedProfits.baseAsset = (thisObject.truncDecimals(context.executionContext.balance.baseAsset) + convertedAssetsB - thisObject.truncDecimals(context.executionContext.initialBalance.baseAsset)) / thisObject.truncDecimals(context.executionContext.initialBalance.baseAsset) * 100; - context.executionContext.combinedProfits.baseAsset = thisObject.truncDecimals(context.executionContext.combinedProfits.baseAsset); - } - - if (context.executionContext.initialBalance.quotedAsset > 0) { - - let convertedAssetsA = (thisObject.truncDecimals(context.executionContext.balance.baseAsset) - thisObject.truncDecimals(context.executionContext.initialBalance.baseAsset)) / marketRate; - convertedAssetsA = thisObject.truncDecimals(convertedAssetsA); - - context.executionContext.combinedProfits.quotedAsset = (thisObject.truncDecimals(context.executionContext.balance.quotedAsset) + convertedAssetsA - thisObject.truncDecimals(context.executionContext.initialBalance.quotedAsset)) / thisObject.truncDecimals(context.executionContext.initialBalance.quotedAsset) * 100; - context.executionContext.combinedProfits.quotedAsset = thisObject.truncDecimals(context.executionContext.combinedProfits.quotedAsset); - } - - context.newHistoryRecord.combinedProfitsA = context.executionContext.combinedProfits.baseAsset; - context.newHistoryRecord.combinedProfitsB = context.executionContext.combinedProfits.quotedAsset; - - callBackFunction(global.DEFAULT_OK_RESPONSE); - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> calculateProfits -> err = " + err.stack); - callBack(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function getPositionsAtExchange(callBack) { - - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getPositionsAtExchange -> Entering function."); } - - /* - - Here we grab all the positions at the exchange for the account we are using for trading. We will not asume all the positions - were made by this bot, but we need them all to later check if all the ones made by the bot are still there, were executed or - manually cancelled by the exchange account owner. - - */ - - switch (bot.startMode) { - - case "Live": { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getPositionsAtExchange -> Live Mode Detected."); } - exchangeAPI.getOpenOrders(bot.market, onResponse); - break; - } - - case "Backtest": { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getPositionsAtExchange -> Backtest Mode Detected."); } - let openOrders = []; // We simulate all positions were executed. - onResponse(global.DEFAULT_OK_RESPONSE, openOrders); - break; - } - - default: { - logger.write(MODULE_NAME, "[ERROR] getPositionsAtExchange -> Unexpected bot.startMode."); - logger.write(MODULE_NAME, "[ERROR] getPositionsAtExchange -> bot.startMode = " + bot.startMode); - callBack(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - function onResponse(err, pOpenOrders) { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getPositionsAtExchange -> onResponse -> Entering function."); } - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getPositionsAtExchange -> onResponse -> pOpenOrders = " + JSON.stringify(pOpenOrders)); } - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { // Everything went well, we have the information requested. - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getPositionsAtExchange -> onResponse -> Execution finished well."); } - openOrders = pOpenOrders; - ordersExecutionCheck(callBack); - return; - } - break; - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[ERROR] getPositionsAtExchange -> onResponse -> Retry Later. Requesting Execution Retry."); - callBack(err); - return; - } - break; - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - logger.write(MODULE_NAME, "[ERROR] getPositionsAtExchange -> onResponse -> Operation Failed. Aborting the process."); - callBack(err); - return; - } - break; - } - } - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] getPositionsAtExchange -> err = " + err.stack); - callBack(global.DEFAULT_FAIL_RESPONSE); - } - } - - function ordersExecutionCheck(callBack) { - - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> Entering function."); } - - /* - - Here we check that all the positions we know are still valid at the exchange. If they are not, we will try to take appropiate - actions. Reasons why the positions might not be there are: - - 1. The user / account owner closed the positions manually. - 2. The exchange for some reason closed the positions. In some exchanges positions have an expiration time. - 3. The orders were executed. - - Situations 1 and 2 are similar unexpected and we will stop the bot execution when we detect them. Number 3 is an - expected behaviour and we will take appropiate action. - - Also, the position might still be there but it might have been partially executed. To detect that we need to compare the - position amounts we have on file to the one we are receiving from the exchange. - - Before we begin, we have to remove all the orders that have been already closed at the last execution of the bot. - - */ - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> JSON.stringify(context.executionContext.positions) = " + JSON.stringify(context.executionContext.positions)); } - - let openPositions = []; - - for (let a = 0; a < context.executionContext.positions.length; a++) { - - if (context.executionContext.positions[a].status === "open") { - - openPositions.push(context.executionContext.positions[a]); - - } - } - - /* - - This removes all orders leaving only the not executed position. Consider that we do want executed positions to be recored on the file so as to - have a record of their execution. But at next execution these records must be deleted before the new Execution Context file is created and - this is what we do here. - - */ - - context.executionContext.positions = openPositions; - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> Removing executed positions."); } - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> JSON.stringify(context.executionContext.positions) = " + JSON.stringify(context.executionContext.positions)); } - - /* Now we can start checking what happened at the exchange. */ - - let i = 0; - - controlLoop(); - - function loopBody() { - - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> Entering function."); } - - let position = context.executionContext.positions[i]; - let exchangePosition; - - for (let j = 0; j < openOrders.length; j++) { - - if (position.id === openOrders[j].id) { - - exchangePosition = openOrders[j]; - positionFound(); - return; - } - } - - positionNotFound(); - return; - - function positionFound() { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> positionFound -> Entering function."); } - - /* - We update the final amountA based on what we got from the exchange. - This is needed since the values could be different from what we calculate. - */ - position.amountA = exchangePosition.amountA; - - /* - We need to know if the order was partially executed. To know that, we compare the amounts on file with the ones - received from the exchange. If they are the same, then the order is intact. Otherwise, to confirm a partial execution, - we will request the associated trades from the exchange. - */ - - if (position.amountB === exchangePosition.amountB) { - - /* Position is still there, untouched. Nothing to do here. */ - - next(); - return; - - } else { - - getPositionTradesAtExchange(position.id, confirmOrderWasPartiallyExecuted); - return; - - } - } - - function positionNotFound() { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> positionNotFound -> Entering function."); } - - /* Position not found: we need to know if the order was executed. */ - - getPositionTradesAtExchange(position.id, confirmOrderWasExecuted); - - } - - function getPositionTradesAtExchange(pOrderId, innerCallBack) { - - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> getPositionTradesAtExchange -> Entering function."); } - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> getPositionTradesAtExchange -> pOrderId = " + pOrderId); } - - /* - - Given one position, we request all the associated trades to it. - - */ - - switch (bot.startMode) { - - case "Live": { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> getPositionTradesAtExchange -> Live Mode Detected."); } - exchangeAPI.getOrder(pOrderId, bot.market, onResponse); - return; - - } - - case "Backtest": { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> getPositionTradesAtExchange -> Backtest Mode Detected."); } - - let trades = []; - - /* We look for the position at the executionContext */ - - for (let i = 0; i < context.executionContext.positions.length; i++) { - - let thisOrder = context.executionContext.positions[i]; - - if (thisOrder.id === pOrderId) { - - let feeRate = 0.002; // Default backtesting fee simulation - - let trade = { - id: Math.trunc(Math.random(1) * 1000000), - type: thisOrder.type, - rate: thisOrder.rate.toString(), - amountA: thisObject.truncDecimals(thisOrder.amountA).toString(), - amountB: thisObject.truncDecimals(thisOrder.amountB).toString(), - fee: thisObject.truncDecimals(feeRate).toString(), - date: (new Date()).valueOf() - } - - trades.push(trade); - - let order = { - trades: trades - } - onResponse(global.DEFAULT_OK_RESPONSE, order); - - return; - } - } - - logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> getPositionTradesAtExchange -> Position not found at Executioin Context."); - callBack(global.DEFAULT_FAIL_RESPONSE); - return; - } - - default: { - logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> getPositionTradesAtExchange -> Unexpected bot.startMode."); - logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> getPositionTradesAtExchange -> bot.startMode = " + bot.startMode); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - function onResponse(err, order) { - - try { - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> getPositionTradesAtExchange -> onResponse -> Entering function."); } - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { // Everything went well, we have the information requested. - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> getPositionTradesAtExchange -> onResponse -> Execution finished well."); } - innerCallBack(order); - } - break; - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> getPositionTradesAtExchange -> onResponse -> Retry Later. Requesting Execution Retry."); - callBack(global.DEFAULT_RETRY_RESPONSE); - return; - } - break; - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> getPositionTradesAtExchange -> onResponse -> Operation Failed. Aborting the process."); - callBack(global.DEFAULT_FAIL_RESPONSE); - return; - } - break; - } - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> getPositionTradesAtExchange -> onResponse -> err = " + err.stack); - callBack(global.DEFAULT_FAIL_RESPONSE); - } - } - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> getPositionTradesAtExchange -> err = " + err.stack); - callBack(global.DEFAULT_FAIL_RESPONSE); - } - } - - function confirmOrderWasExecuted(order) { - - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> confirmOrderWasExecuted -> Entering function."); } - if (global.LOG_CONTROL[MODULE_NAME].logContent === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> confirmOrderWasExecuted -> trades = " + JSON.stringify(trades)); } - - let trades = order.trades - /* - - To confirm everything is ok, we will add all the amounts on trades asociated to the order and - they must be equal to the one on file. Otherwise something very strange could have happened, - in which case we will halt the bot execution. - - */ - - let sumBaseAsset = 0; - let sumQuotedAsset = 0; - let sumRate = 0; - - for (let k = 0; k < trades.length; k++) { - let trade = trades[k]; - sumBaseAsset = sumBaseAsset + thisObject.truncDecimals(trade.amountA); - sumQuotedAsset = sumQuotedAsset + thisObject.truncDecimals(trade.amountB); - sumRate = sumRate + thisObject.truncDecimals(trade.rate); - } - - sumBaseAsset = thisObject.truncDecimals(sumBaseAsset); - sumQuotedAsset = thisObject.truncDecimals(sumQuotedAsset); - - if (position.amountB !== sumQuotedAsset) { - logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> position.amountB = " + position.amountB); - logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> sumQuotedAsset = " + sumQuotedAsset); - - logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> confirmOrderWasExecuted -> Cannot be confirmed that the order was executed. It must be manually cancelled by the user or cancelled by the exchange itself."); - logger.write(MODULE_NAME, "[HINT] ordersExecutionCheck -> loopBody -> confirmOrderWasExecuted -> If the process was abruptally cancelled and then restarted, it is possible that now is not sincronized with the exchange."); - logger.write(MODULE_NAME, "[HINT] ordersExecutionCheck -> loopBody -> confirmOrderWasExecuted -> In any case, to continue, you must manually delete the orders at the exchange."); - callBack(global.DEFAULT_FAIL_RESPONSE); - return; - } - - /* - - Confirmed that order was executed. Next thing to do is to remember the trades and change its status. - - */ - - position.status = "executed"; - - if (position.type === "sell") { - context.newHistoryRecord.sellExecRate = sumRate / trades.length; - } else { - context.newHistoryRecord.buyExecRate = sumRate / trades.length; - } - - applyTradesToContext(trades); - - let newTransaction = { - type: position.type + " executed", - position: position - }; - - context.executionContext.transactions.push(newTransaction); - - /* All done. */ - - next(); - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> confirmOrderWasExecuted -> err = " + err.stack); - callBack(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - function confirmOrderWasPartiallyExecuted(trades) { - - try { - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> confirmOrderWasPartiallyExecuted -> Entering function."); } - - let trades = order.trades - - /* - - To confirm everything is ok, we will add all the amounts on trades plus the remaining amounts - at the order at the exchange and they must be equal to the one on file. Otherwise an inconsistent - state has been detected, in which case we will halt the bot execution. - - */ - - let sumBaseAsset = 0; - let sumQuotedAsset = 0; - - for (let k = 0; k < trades.length; k++) { - let trade = trades[k]; - sumBaseAsset = sumBaseAsset + thisObject.truncDecimals(trade.amountA); - sumQuotedAsset = sumQuotedAsset + thisObject.truncDecimals(trade.amountB); - } - - /* To this we add the current position amounts. */ - - sumBaseAsset = sumBaseAsset + thisObject.truncDecimals(exchangePosition.amountA); - sumQuotedAsset = sumQuotedAsset + thisObject.truncDecimals(exchangePosition.amountB); - - sumBaseAsset = thisObject.truncDecimals(sumBaseAsset); - sumQuotedAsset = thisObject.truncDecimals(sumQuotedAsset); - - /* - * Next let's get the max decimal positions for the pair being trade returned by the exchange and validate that at least - * one decimal position less than the max matches. The reason for this is because there could be some - * rounding on the exchange when there are partial executed orders that will interfiere with the exact validation. - * - * IE: For Poloniex USDT/BTC the max returned decimal positions is 8, it means we will validate that the diference is less than 0.0000001 - */ - - let exchangeParam = exchangeAPI.getMaxDecimalPositions(); - let minValue = '0.' + (1).toPrecision(exchangeParam - 1).split('.').reverse().join(''); - let exchangePrecision = parseFloat(parseFloat(minValue).toFixed(exchangeParam)); - - if (Math.abs(position.amountA - sumBaseAsset) > exchangePrecision || Math.abs(position.amountB - sumQuotedAsset) > exchangePrecision) { - - logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> confirmOrderWasPartiallyExecuted -> position.amountA = " + position.amountA); - logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> confirmOrderWasPartiallyExecuted -> sumBaseAsset = " + sumBaseAsset); - logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> confirmOrderWasPartiallyExecuted -> position.amountB = " + position.amountB); - logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> confirmOrderWasPartiallyExecuted -> sumQuotedAsset = " + sumQuotedAsset); - - logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> confirmOrderWasPartiallyExecuted -> Cannot confirm that a partial execution was done well."); - - /* There are diferences on the responses between the getPosition and getTrades that causes some issues, let's retry. */ - callBack(global.DEFAULT_RETRY_RESPONSE); - return; - } - - /* - - Confirmed that order was partially executed. Next thing to do is to remember the trades and the new position. - - */ - - position.amountA = exchangePosition.amountA; - position.amountB = exchangePosition.amountB; - position.date = (new Date(exchangePosition.date)).valueOf(); - - applyTradesToContext(trades); - - let newTransaction = { - type: position.type + " partially executed", - position: position - }; - - context.executionContext.transactions.push(newTransaction); - - /* All done. */ - - next(); - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> confirmOrderWasPartiallyExecuted -> err = " + err.stack); - callBack(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - function applyTradesToContext(trades) { - - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> applyTradesToContext -> Entering function."); } - - /* Here we apply the trades that already happened at the exchange to the balance and available balance of the bot. We also calculate its profits. */ - - for (k = 0; k < trades.length; k++) { - - let trade = trades[k]; - - position.trades.push(trade); - - context.newHistoryRecord.newTrades++; - - /* Calculate Balances */ - - let baseAsset = 0; - let quotedAsset = 0; - - if (trade.type === 'buy') { - - /* - - The fee received at each trade is the factor by which if we multiply asset B, we get the amount of Asset B extracted as fees by the exchange. - This happens with each individual trade. Remeber that one order can potentially be executed with 1 to many trades. - - */ - - let feeAmount = thisObject.truncDecimals(Number(trade.fee) * Number(trade.amountB)); - - baseAsset = Number(trade.amountA); - quotedAsset = Number(trade.amountB) - feeAmount; - - context.executionContext.balance.baseAsset = thisObject.truncDecimals(context.executionContext.balance.baseAsset - baseAsset); - context.executionContext.balance.quotedAsset = thisObject.truncDecimals(context.executionContext.balance.quotedAsset + quotedAsset); - - context.executionContext.availableBalance.quotedAsset = thisObject.truncDecimals(context.executionContext.availableBalance.quotedAsset + quotedAsset); - - /* Not the available balance for asset A is not affected since it was already reduced when the order was placed. */ - - } - - if (trade.type === 'sell') { - - /* - - The fee received at each trade is the factor by which if we multiply asset A, we get the amount of Asset A extracted as fees by the exchange. - This happens with each individual trade. Remeber that one order can potentially be executed with 1 to many trades. - - */ - - let feeAmount = thisObject.truncDecimals(Number(trade.fee) * Number(trade.amountA)); - - baseAsset = Number(trade.amountA) - feeAmount; - quotedAsset = Number(trade.amountB); - - context.executionContext.balance.baseAsset = thisObject.truncDecimals(context.executionContext.balance.baseAsset + baseAsset); - context.executionContext.balance.quotedAsset = thisObject.truncDecimals(context.executionContext.balance.quotedAsset - quotedAsset); - - context.executionContext.availableBalance.baseAsset = thisObject.truncDecimals(context.executionContext.availableBalance.baseAsset + baseAsset); - - /* Not the available balance for asset B is not affected since it was already reduced when the order was placed. */ - - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> applyTradesToContext -> err = " + err.stack); - callBack(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> err = " + err.stack); - callBack(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - function next() { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> next -> Entering function."); } - - i++; - controlLoop(); - - } - - function controlLoop() { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> controlLoop -> Entering function."); } - - if (i < context.executionContext.positions.length) { - - loopBody(); - - } else { - - final(); - - } - } - - function final() { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> final -> Entering function."); } - - callBack(global.DEFAULT_OK_RESPONSE); - - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> err = " + err.stack); - callBack(global.DEFAULT_FAIL_RESPONSE); - } - } - - function createOrder(pType, pRate, pAmountA, pAmountB, callBackFunction) { - - try { - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] createOrder -> Entering function."); } - - /* Removing extra decimals. */ - - pRate = thisObject.truncDecimals(pRate); - pAmountA = thisObject.truncDecimals(pAmountA); - pAmountB = thisObject.truncDecimals(pAmountB); - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] createOrder -> pType = " + pType); } - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] createOrder -> pRate = " + pRate); } - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] createOrder -> pAmountA = " + pAmountA); } - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] createOrder -> pAmountB = " + pAmountB); } - - /* Validations that the limits are not surpassed. */ - - if (pType === 'buy') { - - if (pAmountA > thisObject.truncDecimals(context.executionContext.availableBalance.baseAsset)) { - - logger.write(MODULE_NAME, "[ERROR] createOrder -> Input Validations -> pAmountA is grater than the Available Balance."); - logger.write(MODULE_NAME, "[ERROR] createOrder -> Input Validations -> pAmountA = " + pAmountA); - logger.write(MODULE_NAME, "[ERROR] createOrder -> Input Validations -> Available Balance = " + thisObject.truncDecimals(context.executionContext.availableBalance.baseAsset)); - - let err = { - result: global.DEFAULT_FAIL_RESPONSE.result, - message: 'Not Enough Available Balance to Buy.' - }; - - callBackFunction(err); - return; - } - } - - if (pType === 'sell') { - - if (pAmountB > thisObject.truncDecimals(context.executionContext.availableBalance.quotedAsset)) { - - logger.write(MODULE_NAME, "[ERROR] createOrder -> Input Validations -> pAmountB is grater than the Available Balance."); - logger.write(MODULE_NAME, "[ERROR] createOrder -> Input Validations -> pAmountB = " + pAmountB); - logger.write(MODULE_NAME, "[ERROR] createOrder -> Input Validations -> Available Balance = " + thisObject.truncDecimals(context.executionContext.availableBalance.quotedAsset)); - - let err = { - result: global.DEFAULT_FAIL_RESPONSE.result, - message: 'Not Enough Available Balance to Sell.' - }; - - callBackFunction(err); - return; - } - } - - /* All validations passed, we proceed. */ - - switch (bot.startMode) { - - case "Live": { - - exchangeAPI.createOrder(bot.market, pType, pRate, pAmountA, pAmountB, onResponse); - return; - } - - case "Backtest": { - - if (pRate !== marketRate) { - - logger.write(MODULE_NAME, "[WARNING] createOrder -> Input Validations -> createOrder Rate can is different to marketRate while in Backtesting Mode. "); - //onResponse(global.DEFAULT_FAIL_RESPONSE, positionId); - } - - let positionId = Math.trunc(Math.random(1) * 1000000); - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] createOrder -> Simulating Exchange Response -> orderId = " + positionId); } - onResponse(global.DEFAULT_OK_RESPONSE, positionId); - return; - } - - default: { - logger.write(MODULE_NAME, "[ERROR] createOrder -> Unexpected bot.startMode."); - logger.write(MODULE_NAME, "[ERROR] createOrder -> bot.startMode = " + bot.startMode); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - function onResponse(err, order) { - - try { - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] createOrder -> onResponse -> Entering function."); } - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] createOrder -> onResponse -> order.id = " + order.id); } - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { // Everything went well, we have the information requested. - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] createOrder -> onResponse -> Execution finished well."); } - - let position = { - id: order.id, - type: pType, - rate: pRate, - amountA: pAmountA, - amountB: pAmountB, - date: (bot.processDatetime.valueOf()), - status: "open", - trades: [] - }; - - context.executionContext.positions.push(position); - - let newTransaction = { - type: "newPosition", - position: position - }; - - context.executionContext.transactions.push(newTransaction); - - context.newHistoryRecord.newPositions++; - - recalculateRateAverages(); - - /* Recalculate Available Balances */ - - if (position.type === 'buy') { - - context.executionContext.availableBalance.baseAsset = thisObject.truncDecimals(context.executionContext.availableBalance.baseAsset - pAmountA); - context.newHistoryRecord.lastBuyRate = pRate; - } - - if (position.type === 'sell') { - - context.executionContext.availableBalance.quotedAsset = thisObject.truncDecimals(context.executionContext.availableBalance.quotedAsset - pAmountB); - context.newHistoryRecord.lastSellRate = pRate; - } - - callBackFunction(global.DEFAULT_OK_RESPONSE, position); - return; - } - break; - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[ERROR] createOrder -> onResponse -> Retry Later. Requesting Execution Retry."); - callBackFunction(global.DEFAULT_RETRY_RESPONSE); - return; - } - break; - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - logger.write(MODULE_NAME, "[ERROR] createOrder -> onResponse -> Operation Failed. Aborting the process."); - callBackFunction(err); - return; - } - break; - } - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] createOrder -> onResponse -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] createOrder -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function getPublicTradeHistory(baseAsset, quotedAsset, startTime, endTime, callback) { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getTradeHistory -> Entering function."); } - - exchangeAPI.getPublicTradeHistory(baseAsset, quotedAsset, startTime, endTime, callback); - } - - function recalculateRateAverages() { - - /* This function calculates the weighted rates of buy and sell positions. This is a way to summarize with only one rate, where the positions are. */ - - let sumBuyWeightedRates = 0; - let sumSellWeightedRates = 0; - - let sumBuyWeights = 0; - let sumSellWeights = 0; - - for (let i = 0; i < context.executionContext.positions.length; i++) { - - let position = context.executionContext.positions[i]; - - if (position.type === 'buy') { - - sumBuyWeightedRates = sumBuyWeightedRates + position.rate * position.amountB - sumBuyWeights = sumBuyWeights + position.amountB; - - } - - if (position.type === 'sell') { - - sumSellWeightedRates = sumSellWeightedRates + position.rate * position.amountB - sumSellWeights = sumSellWeights + position.amountB; - - } - - } - - context.newHistoryRecord.buyAvgRate = (sumBuyWeightedRates / sumBuyWeights || 0); - context.newHistoryRecord.sellAvgRate = (sumSellWeightedRates / sumSellWeights || 0); - } - - function getPositions() { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getPositions -> Entering function."); } - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getPositions -> JSON.stringify(context.executionContext.positions) = " + JSON.stringify(context.executionContext.positions)); } - - return JSON.parse(JSON.stringify(context.executionContext.positions)); - } - - function getBalance() { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getBalance -> Entering function."); } - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getBalance -> JSON.stringify(context.executionContext.balance) = " + JSON.stringify(context.executionContext.balance)); } - - return JSON.parse(JSON.stringify(context.executionContext.balance)); - } - - function getAvailableBalance() { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getAvailableBalance -> Entering function."); } - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getAvailableBalance -> JSON.stringify(context.executionContext.availableBalance) = " + JSON.stringify(context.executionContext.availableBalance)); } - - return JSON.parse(JSON.stringify(context.executionContext.availableBalance)); - } - - function getInitialBalance() { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getInitialBalance -> Entering function."); } - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getInitialBalance -> JSON.stringify(context.executionContext.initialBalance) = " + JSON.stringify(context.executionContext.initialBalance)); } - - return JSON.parse(JSON.stringify(context.executionContext.initialBalance)); - } - - function getProfits() { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getProfits -> Entering function."); } - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getProfits -> JSON.stringify(context.executionContext.profits) = " + JSON.stringify(context.executionContext.profits)); } - - return JSON.parse(JSON.stringify(context.executionContext.profits)); - } - - function getCombinedProfits() { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getCombinedProfits -> Entering function."); } - - let combinedProfits = { - baseAsset: context.newHistoryRecord.combinedProfitsA, - quotedAsset: context.newHistoryRecord.combinedProfitsB - } - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getCombinedProfits -> JSON.stringify(combinedProfits) = " + JSON.stringify(combinedProfits)); } - - return JSON.parse(JSON.stringify(combinedProfits)); - } - - function getROI() { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getROI -> Entering function."); } - - let ROI = { - baseAsset: (context.executionContext.balance.baseAsset - context.executionContext.initialBalance.baseAsset) / context.executionContext.initialBalance.baseAsset * 100, - quotedAsset: (context.executionContext.balance.quotedAsset - context.executionContext.initialBalance.quotedAsset) / context.executionContext.initialBalance.quotedAsset * 100 - } - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getROI -> JSON.stringify(ROI) = " + JSON.stringify(ROI)); } - - return JSON.parse(JSON.stringify(ROI)); - } - - function getMarketRate() { - return marketRate; - } - - function getTicker() { - return ticker; - } - - function sendMessage(pRelevance, pTitle, pBody) { - let runIndex = context.statusReport.runs.length - 1; - - context.newHistoryRecord.messageRelevance = pRelevance; - context.newHistoryRecord.messageTitle = bot.startMode + "." + runIndex + ": " + pTitle; - context.newHistoryRecord.messageBody = pBody; - } - - function rememberThis(pKey, pValue) { - if (context.executionContext.remember === undefined) { - context.executionContext.remember = {}; - } - context.executionContext.remember[pKey] = pValue; - } - - function remindMeOf(pKey) { - if (context.executionContext.remember === undefined) { - context.executionContext.remember = {}; - } - return context.executionContext.remember[pKey]; - } - - function sendEmail(pTitle, pBody, pTo) { - logger.write(MODULE_NAME, "[WARN] sendEmail -> Send emails is currently disabled."); - return; - } - - function addExtraData(pExtraDataArray) { - context.extraData.push(pExtraDataArray); - } - - function truncDecimals(pFloatValue, pDecimals) { - if (!pDecimals) pDecimals = 8; // Default value - return parseFloat(parseFloat(pFloatValue).toFixed(pDecimals)); - } -}; diff --git a/TaskServer/Commons.js b/TaskServer/Commons.js index fcc9ded0b..050791f24 100644 --- a/TaskServer/Commons.js +++ b/TaskServer/Commons.js @@ -2,8 +2,6 @@ const FULL_LOG = true; const LOG_FILE_CONTENT = false; - const ONE_DAY_IN_MILISECONDS = 24 * 60 * 60 * 1000; - const ONE_MIN_IN_MILISECONDS = 60 * 1000; const MODULE_NAME = "Commons"; @@ -12,7 +10,7 @@ validateOutputDatasets: validateOutputDatasets, inflateDatafiles: inflateDatafiles, dataBuildingProcedure: dataBuildingProcedure, - calculationsProcedure: calculationsProcedure, + calculationsProcedure: calculationsProcedure, generateFileContent: generateFileContent, writeFile: writeFile }; @@ -25,15 +23,15 @@ function validateDataDependencies(dataDependencies, callBackFunction) { for (let i = 0; i < dataDependencies.length; i++) { - let dataDependencyNode = dataDependencies[i] + let dataDependencyNode = dataDependencies[i] /* Basic validations to see if we have everything we need. */ - if (dataDependencyNode.referenceParent.parentNode.code.singularVariableName === undefined) { + if (dataDependencyNode.referenceParent.parentNode.config.singularVariableName === undefined) { logger.write(MODULE_NAME, "[ERROR] start -> Product Definition without a Single Variable Name defined. Product Definition = " + JSON.stringify(dataDependencyNode.referenceParent.parentNode)); callBackFunction(global.DEFAULT_FAIL_RESPONSE); return } - if (dataDependencyNode.referenceParent.parentNode.code.pluralVariableName === undefined) { + if (dataDependencyNode.referenceParent.parentNode.config.pluralVariableName === undefined) { logger.write(MODULE_NAME, "[ERROR] start -> Product Definition without a Plural Variable Name defined. Product Definition = " + JSON.stringify(dataDependencyNode.referenceParent.parentNode)); callBackFunction(global.DEFAULT_FAIL_RESPONSE); return @@ -61,12 +59,12 @@ callBackFunction(global.DEFAULT_FAIL_RESPONSE); return } - if (outputDatasetNode.referenceParent.parentNode.code.singularVariableName === undefined) { + if (outputDatasetNode.referenceParent.parentNode.config.singularVariableName === undefined) { logger.write(MODULE_NAME, "[ERROR] start -> Product Definition without a Single Variable Name defined. Product Definition = " + JSON.stringify(outputDatasetNode.referenceParent.parentNode)); callBackFunction(global.DEFAULT_FAIL_RESPONSE); return } - if (outputDatasetNode.referenceParent.parentNode.code.pluralVariableName === undefined) { + if (outputDatasetNode.referenceParent.parentNode.config.pluralVariableName === undefined) { logger.write(MODULE_NAME, "[ERROR] start -> Product Definition without a Plural Variable Name defined. Product Definition = " + JSON.stringify(outputDatasetNode.referenceParent.parentNode)); callBackFunction(global.DEFAULT_FAIL_RESPONSE); return @@ -77,9 +75,9 @@ return } if (outputDatasetNode.referenceParent.parentNode.dataBuilding === undefined) { - logger.write(MODULE_NAME, "[WARN] start -> Product Definition " + outputDatasetNode.referenceParent.parentNode.name + " without a Data Building Procedure. Product Definition = " + JSON.stringify(outputDatasetNode.referenceParent.parentNode)); + logger.write(MODULE_NAME, "[WARN] start -> Product Definition " + outputDatasetNode.referenceParent.parentNode.name + " without a Data Building Procedure. Product Definition Name = " + outputDatasetNode.referenceParent.parentNode.name); } - if (outputDatasetNode.referenceParent.code.codeName === undefined) { + if (outputDatasetNode.referenceParent.config.codeName === undefined) { logger.write(MODULE_NAME, "[ERROR] start -> Dataset witn no codeName defined. Product Dataset = " + JSON.stringify(outputDatasetNode.referenceParent)); callBackFunction(global.DEFAULT_FAIL_RESPONSE); return @@ -91,35 +89,49 @@ return } - if (outputDatasetNode.referenceParent.parentNode.code.codeName === undefined) { + if (outputDatasetNode.referenceParent.parentNode.config.codeName === undefined) { logger.write(MODULE_NAME, "[ERROR] start -> Product Definition witn no codeName defined. Product Definition = " + JSON.stringify(outputDatasetNode.referenceParent.parentNode)); callBackFunction(global.DEFAULT_FAIL_RESPONSE); return } - if (outputDatasetNode.referenceParent.parentNode.parentNode === undefined) { - logger.write(MODULE_NAME, "[ERROR] start -> Product Definition not attached to a Bot. Product Definition = " + JSON.stringify(outputDatasetNode.referenceParent.parentNode)); + let botNode = global.FIND_NODE_IN_NODE_MESH(outputDatasetNode, 'Indicator Bot') + if (botNode === undefined) { + botNode = global.FIND_NODE_IN_NODE_MESH(outputDatasetNode, 'Trading Bot') + } + if (botNode === undefined) { + logger.write(MODULE_NAME, "[ERROR] start -> Product Definition not attached to a Bot. Product Definition = "); callBackFunction(global.DEFAULT_FAIL_RESPONSE); return } - if (outputDatasetNode.referenceParent.parentNode.parentNode.code.codeName === undefined) { - logger.write(MODULE_NAME, "[ERROR] start -> Bot witn no codeName defined. Bot = " + JSON.stringify(outputDatasetNode.referenceParent.parentNode.parentNode)); + if (botNode.config.codeName === undefined) { + logger.write(MODULE_NAME, "[ERROR] start -> Bot witn no codeName defined."); callBackFunction(global.DEFAULT_FAIL_RESPONSE); return } - if (outputDatasetNode.referenceParent.parentNode.parentNode.parentNode === undefined) { - logger.write(MODULE_NAME, "[ERROR] start -> Bot not attached to a Data Mine. Bot = " + JSON.stringify(outputDatasetNode.referenceParent.parentNode.parentNode)); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return - } - - if (outputDatasetNode.referenceParent.parentNode.parentNode.parentNode.code.codeName === undefined) { - logger.write(MODULE_NAME, "[ERROR] start -> Data Mine witn no codeName defined. Data Mine = " + JSON.stringify(outputDatasetNode.referenceParent.parentNode.parentNode.parentNode)); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return - } + let dataMineNode = global.FIND_NODE_IN_NODE_MESH(outputDatasetNode, 'Data Mine') + if (dataMineNode === undefined) { + let tradingMineNode = global.FIND_NODE_IN_NODE_MESH(outputDatasetNode, 'Trading Mine') + if (tradingMineNode === undefined) { + logger.write(MODULE_NAME, "[ERROR] start -> Bot not attached to a Data Mine or a Trading Mine."); + callBackFunction(global.DEFAULT_FAIL_RESPONSE); + return + } else { + if (tradingMineNode.config.codeName === undefined) { + logger.write(MODULE_NAME, "[ERROR] start -> Trading Mine witn no codeName defined."); + callBackFunction(global.DEFAULT_FAIL_RESPONSE); + return + } + } + } else { + if (dataMineNode.config.codeName === undefined) { + logger.write(MODULE_NAME, "[ERROR] start -> Data Mine witn no codeName defined."); + callBackFunction(global.DEFAULT_FAIL_RESPONSE); + return + } + } } return true } @@ -132,19 +144,19 @@ */ for (let i = 0; i < dataDependencies.length; i++) { - let dataFile + let dataFile let jsonData // Datafile converted into Json objects let inputData // Includes calculated properties let singularVariableName // name of the variable for this product let recordDefinition - let dataDependencyNode = dataDependencies[i] + let dataDependencyNode = dataDependencies[i] dataFile = dataFiles.get(dataDependencyNode.id) if (dataFile === undefined) { continue } // When a datafile is not found it might be because we are processing market or daily and at the dependency array there are both types mixed up. recordDefinition = dataDependencyNode.referenceParent.parentNode.record - singularVariableName = dataDependencyNode.referenceParent.parentNode.code.singularVariableName + singularVariableName = dataDependencyNode.referenceParent.parentNode.config.singularVariableName /* Transform the raw data into JSON objects */ jsonData = jsonifyDataFile(dataFile, recordDefinition) /* Add the calculated properties */ @@ -153,7 +165,7 @@ } else { inputData = jsonData } - products[dataDependencyNode.referenceParent.parentNode.code.pluralVariableName] = inputData + products[dataDependencyNode.referenceParent.parentNode.config.pluralVariableName] = inputData /* The main dependency is defined as the first dependency processed. */ if (mainDependency.records === undefined) { @@ -177,8 +189,8 @@ let record = {} for (let j = 0; j < recordDefinition.properties.length; j++) { let property = recordDefinition.properties[j] - if (property.code.isCalculated !== true) { - record[property.code.codeName] = dataFile[i][j] + if (property.config.isCalculated !== true) { + record[property.config.codeName] = dataFile[i][j] } } @@ -199,7 +211,7 @@ let system = { // These are the available system variables to be used in User Code and Formulas timeFrame: timeFrame, - ONE_DAY_IN_MILISECONDS: ONE_DAY_IN_MILISECONDS + ONE_DAY_IN_MILISECONDS: global.ONE_DAY_IN_MILISECONDS } let variable = {} // This is the structure where the user will define its own variables that will be shared across different code blocks and formulas. let results = [] @@ -238,13 +250,13 @@ /* For each calculated property we apply its formula*/ for (let j = 0; j < recordDefinition.properties.length; j++) { let property = recordDefinition.properties[j] - if (property.code.isCalculated === true) { + if (property.config.isCalculated === true) { if (property.formula !== undefined) { if (property.formula.code !== undefined) { try { let newValue = eval(property.formula.code) let currentRecord = product[variableName] - currentRecord[property.code.codeName] = newValue + currentRecord[property.config.codeName] = newValue } catch (err) { logger.write(MODULE_NAME, "[ERROR] calculationsProcedure -> loop -> formula -> Error executing User Code. Error = " + err.stack) logger.write(MODULE_NAME, "[ERROR] calculationsProcedure -> loop -> formula -> Error executing User Code. product = " + JSON.stringify(product)) @@ -277,7 +289,7 @@ interExecutionMemory, processingDailyFiles, currentDay - ) { + ) { /* This function has as an input the products object, with all the information @@ -286,12 +298,12 @@ a new set of information. */ - let lastInstantOfTheDay + let lastInstantOfTheDay let yesterday = {} let system = { // These are the available system variables to be used in User Code and Formulas timeFrame: timeFrame, - ONE_DAY_IN_MILISECONDS: ONE_DAY_IN_MILISECONDS, - ONE_MIN_IN_MILISECONDS: ONE_MIN_IN_MILISECONDS + ONE_DAY_IN_MILISECONDS: global.ONE_DAY_IN_MILISECONDS, + ONE_MIN_IN_MILISECONDS: global.ONE_MIN_IN_MILISECONDS } let variable = {} // This is the structure where the user will define its own variables that will be shared across different code blocks and formulas. let results = [] @@ -313,7 +325,7 @@ let dataDependencyMap = new Map() for (let j = 0; j < dataDependecyArray.length; j++) { let record = dataDependecyArray[j] - let key = record.begin.toString() + '-' + record.end.toString() + let key = record.begin.toString() + '-' + record.end.toString() dataDependencyMap.set(key, record) } dataDependencies[dataDependencyName] = dataDependencyMap @@ -321,7 +333,7 @@ } function getElement(dependencyName, currentRecordPrimaryDataDependency) { - let key = currentRecordPrimaryDataDependency.begin.toString() + '-' + currentRecordPrimaryDataDependency.end.toString() + let key = currentRecordPrimaryDataDependency.begin.toString() + '-' + currentRecordPrimaryDataDependency.end.toString() return dataDependencies[dependencyName].get(key) } @@ -340,7 +352,7 @@ if (processingDailyFiles) { /* Initialization of Last Instance */ - lastInstantOfTheDay = currentDay.valueOf() + ONE_DAY_IN_MILISECONDS - 1; + lastInstantOfTheDay = currentDay.valueOf() + global.ONE_DAY_IN_MILISECONDS - 1; if (interExecutionMemory[productName] === undefined) { /* The first time the intialization variables goes to the Inter Execution Memory. */ @@ -349,7 +361,7 @@ } else { /* We override the initialization, since the valid stuff is already at the Inter Execution Memory */ - variable = JSON.parse(JSON.stringify(interExecutionMemory[productName].variable)) + variable = JSON.parse(JSON.stringify(interExecutionMemory[productName].variable)) } } @@ -387,13 +399,13 @@ /* For each non-calculated property we apply its formula*/ for (let j = 0; j < recordDefinition.properties.length; j++) { let property = recordDefinition.properties[j] - if (property.code.isCalculated !== true) { + if (property.config.isCalculated !== true) { if (property.formula !== undefined) { if (property.formula.code !== undefined) { try { let newValue = eval(property.formula.code) let currentRecord = product[variableName] - currentRecord[property.code.codeName] = newValue + currentRecord[property.config.codeName] = newValue } catch (err) { logger.write(MODULE_NAME, "[ERROR] dataBuildingProcedure -> loop -> formula -> Error executing User Code. Error = " + err.stack) logger.write(MODULE_NAME, "[ERROR] dataBuildingProcedure -> loop -> formula -> Error executing User Code. product = " + JSON.stringify(product)) @@ -411,7 +423,7 @@ results.push(product[variableName]); } - /* While we are positioned at Yesterday, we keey updating this data structure. */ + /* While we are positioned at Yesterday, we keep updating this data structure. */ if (processingDailyFiles) { if (positionedAtYesterday) { yesterday.variable = JSON.parse(JSON.stringify(variable)) @@ -457,7 +469,7 @@ at the next day, in whole, even if it starts in the previous day. */ - let lastInstantOdDay = currentDay.valueOf() + ONE_DAY_IN_MILISECONDS - 1; + let lastInstantOdDay = currentDay.valueOf() + global.ONE_DAY_IN_MILISECONDS - 1; if (record.end < currentDay.valueOf() - 1) { continue; } if (record.end === lastInstantOdDay) { continue; } @@ -474,13 +486,13 @@ let propertySeparator = "" for (let j = 0; j < recordDefinition.properties.length; j++) { let property = recordDefinition.properties[j] - if (property.code.isCalculated !== true) { + if (property.config.isCalculated !== true) { fileContent = fileContent + propertySeparator - if (property.code.isString === true) { + if (property.config.isString === true) { fileContent = fileContent + '"' } - fileContent = fileContent + record[property.code.codeName] - if (property.code.isString === true) { + fileContent = fileContent + record[property.config.codeName] + if (property.config.isString === true) { fileContent = fileContent + '"' } if (propertySeparator === "") { propertySeparator = ","; } diff --git a/TaskServer/Context.js b/TaskServer/Context.js deleted file mode 100644 index bc347977b..000000000 --- a/TaskServer/Context.js +++ /dev/null @@ -1,551 +0,0 @@ -exports.newContext = function newContext(BOT, logger, UTILITIES) { - - let bot = BOT; - - const MODULE_NAME = "Context"; - - /* - - This module deals with keeping the context between different executions of the bot. Conceptually this context is divided in 3 main parts: - - I. The non-business information which helps the mechanisms of giving continuety to the bots execution over time. This information goes in a file - called the Status Report, and there is a module, child of this one called Status Report that deals with loading and saving the contents of that file. - - II. The business information around the bot execution, including its balance, positions at exchanges, trades executed and many other things. These - are platform data mantained on behalf of the executing bot. All these is kept in one file per execution called the Execution Context. The collection - of all these files can later reconstruct the vital business information the bot had at each moment in time. - - II. Execution of any bot cannot be guaranteed that will be on fixed interval of times. We need an index of all executions that points to the detailed files - with all the business informatino the bot had each time it executed. We call this index the Execution History and there is one file to store it. - - */ - - let thisObject = { - statusReport: undefined, // Here is the information that defines which was the last sucessfull execution and some other details. - executionHistory: [], // This is the record of bot execution. - executionContext: undefined, // Here is the business information of the last execution of this bot process. - newHistoryRecord : { - date: undefined, - buyAvgRate: 0, - sellAvgRate: 0, - lastSellRate: 0, - sellExecRate: 0, - lastBuyRate: 0, - buyExecRate: 0, - marketRate: 0, - newPositions: 0, - newTrades: 0, - movedPositions: 0, - profitsBaseAsset: 0, - profitsQuotedAsset: 0, - combinedProfitsA: 0, - combinedProfitsB: 0, - messageRelevance: 0, - messageTitle: "", - messageBody: "" - }, - initialize: initialize, - saveThemAll: saveThemAll, - extraData: [] - }; - - /* - - During the process we will create a new History Record. This will go to the Context History file which essentially mantains an - index of all the bots executions. This file will later be plotted by the bot s plotter on the timeline, allowing end users to - know where there is information related to the actions taken by the bot. - - */ - - let statusReportModule; - - /* Utilities needed. */ - - let utilities = UTILITIES.newCloudUtilities(logger); - - /* Storage account to be used here. */ - - const FILE_STORAGE = require('./FileStorage.js'); - let fileStorage = FILE_STORAGE.newFileStorage(logger); - - let statusDependencies; - - let runIndex; // This is the index for this run and depends on the startMode. - let sessionPath = '' - - return thisObject; - - function initialize(pStatusDependencies, callBackFunction) { - - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Entering function."); } - - statusDependencies = pStatusDependencies; - - if (bot.SESSION !== undefined) { - sessionPath = bot.SESSION.folderName + "/" - } - - /* - Here we get the positions the bot did and that are recorded at the bot storage account. We will use them through out the rest - of the process. - */ - thisObject.newHistoryRecord.date = bot.processDatetime; - - getStatusReport(onDone); - - function onDone(err) { - try { - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> onDone -> Execution finished well."); } - - callBackFunction(global.DEFAULT_OK_RESPONSE); - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[ERROR] initialize -> onDone -> Retry Later. Requesting Execution Retry."); - callBackFunction(err); - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - logger.write(MODULE_NAME, "[ERROR] initialize -> onDone -> Operation Failed. Aborting the process."); - callBackFunction(err); - return; - } - default: { - logger.write(MODULE_NAME, "[ERROR] initialize -> onDone -> Operation Failed with custom response."); - logger.write(MODULE_NAME, "[ERROR] initialize -> onDone -> err = " + JSON.stringify(err)); - callBackFunction(err); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> onDone -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function getStatusReport(callBack) { - - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> getStatusReport -> Entering function."); } - - let key = bot.dataMine + "-" + bot.codeName + "-" + "Context" + "-" + bot.dataSetVersion; - - statusReportModule = statusDependencies.statusReports.get(key); - thisObject.statusReport = statusReportModule.file; - - /* The context is created in 2 situations: 1) when at the bot config is set not to continue using the same context after a new execution. 2) when the status report does not exist. */ - - if (bot.hasTheBotJustStarted === true || thisObject.statusReport.runs === undefined) { - - createConext(callBack); - - } else { - - runIndex = thisObject.statusReport.runs.length - 1; - - getExecutionHistory(callBack); - - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> getStatusReport -> err = "+ err.stack); - callBack(global.DEFAULT_FAIL_RESPONSE); - } - } - - function getExecutionHistory(callBack) { - - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> getExecutionHistory -> Entering function."); } - - let fileName = "Execution.History." + bot.startMode + "." + runIndex + ".json"; - let filePath = bot.filePathRoot + "/Output/" + sessionPath + "Trading-Process/" + fileName; - - fileStorage.getTextFile(filePath, onFileReceived); - - function onFileReceived(err, text) { - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - logger.write(MODULE_NAME, "[ERROR] initialize -> getExecutionHistory -> onFileReceived -> err = "+ JSON.stringify(err)); - callBack(err); - return; - } - - if (global.LOG_CONTROL[MODULE_NAME].logContent === true) { - logger.write(MODULE_NAME, "[INFO] initialize -> getExecutionHistory -> onFileReceived -> Content received = " + text); - } - - try { - - thisObject.executionHistory = JSON.parse(text); - - /* Move some values to the new record, in case there are no transactions that re-calculate them. */ - - thisObject.newHistoryRecord.buyAvgRate = thisObject.executionHistory[thisObject.executionHistory.length-1][1]; - thisObject.newHistoryRecord.sellAvgRate = thisObject.executionHistory[thisObject.executionHistory.length - 1][2]; - - getExecutionContext(callBack); - - } catch (err) { - - /* - - It might happen that the file content is corrupt or it does not exist. The bot can not run without an Execution Hitory, - since it is risky to ignore its own history unless it is its first execution in this mode ever. - - */ - - logger.write(MODULE_NAME, "[ERROR] initialize -> getExecutionHistory -> onFileReceived -> Bot cannot execute without the Execution History. -> Err = " + err.message); - callBack(global.DEFAULT_FAIL_RESPONSE); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> getExecutionHistory -> err = "+ err.stack); - callBack(global.DEFAULT_FAIL_RESPONSE); - } - } - - function getExecutionContext(callBack) { - - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> getExecutionContext -> Entering function."); } - - let date; - - date = new Date(thisObject.statusReport.runs[runIndex].lastExecution); - thisObject.statusReport.runs[runIndex].lastExecution = bot.processDatetime; - thisObject.statusReport.runs[runIndex].endDatetime = bot.processDatetime; - - let fileName = "/Execution.Context." + bot.startMode + "." + runIndex + ".json"; - let dateForPath = date.getUTCFullYear() + '/' + utilities.pad(date.getUTCMonth() + 1, 2) + '/' + utilities.pad(date.getUTCDate(), 2) + '/' + utilities.pad(date.getUTCHours(), 2) + '/' + utilities.pad(date.getUTCMinutes(), 2); - let filePath = bot.filePathRoot + "/Output/" + sessionPath + "Trading-Process/" + dateForPath + fileName; - - fileStorage.getTextFile(filePath, onFileReceived); - - function onFileReceived(err, text) { - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - logger.write(MODULE_NAME, "[ERROR] initialize -> getExecutionContext -> onFileReceived -> err = "+ err.stack); - callBack(err); - return; - } - - if (global.LOG_CONTROL[MODULE_NAME].logContent === true) { - logger.write(MODULE_NAME, "[INFO] initialize -> getExecutionContext -> onFileReceived -> Content received = " + text); - } - - try { - - thisObject.executionContext = JSON.parse(text); - thisObject.executionContext.transactions = []; // We record here the transactions that happened duting this execution. - - /* Update the new History Record, in case there are no trades during this execution that updates it. */ - - thisObject.newHistoryRecord.profitsBaseAsset = thisObject.executionContext.profits.baseAsset; - thisObject.newHistoryRecord.profitsQuotedAsset = thisObject.executionContext.profits.quotedAsset; - - thisObject.newHistoryRecord.combinedProfitsA = thisObject.executionContext.combinedProfits.baseAsset; - thisObject.newHistoryRecord.combinedProfitsB = thisObject.executionContext.combinedProfits.quotedAsset; - - callBack(global.DEFAULT_OK_RESPONSE); - - } catch (err) { - - /* - - It might happen that the file content is corrupt or it does not exist. The bot can not run without a Status Report, - since it is risky to ignore its own execution history. Except when the bot is running for the fist time in this mode, - an execution context file with the right format is needed. - - */ - - logger.write(MODULE_NAME, "[ERROR] initialize -> getExecutionContext -> onFileReceived -> Response from storage. -> Text = " + text); - logger.write(MODULE_NAME, "[ERROR] initialize -> getExecutionContext -> onFileReceived -> Bot cannot execute without the Execution Context. -> Err = " + err.message); - callBack(global.DEFAULT_FAIL_RESPONSE); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> getExecutionContext -> err = "+ err.stack); - callBack(global.DEFAULT_FAIL_RESPONSE); - } - } - - function createConext(callBack) { - - try { - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> createConext -> Entering function."); } - /* - - When the bot is executed for the very first time, there are a few files that do not exist and need to be created, and that - content is what we are going to set up now. - - */ - - if (thisObject.statusReport.runs === undefined) { // This means that the Status Report does not exist. - - thisObject.statusReport.runs = []; - } - - let runContent = { - beginDatetime: bot.processDatetime, - endDatetime: bot.processDatetime, - lastExecution: bot.processDatetime - }; - - thisObject.statusReport.runs.push(runContent); - runIndex = thisObject.statusReport.runs.length - 1; - - thisObject.executionHistory = []; - - if (bot.VALUES_TO_USE.initialBalanceA === undefined || bot.VALUES_TO_USE.initialBalanceB === undefined) { throw new Error("Global Variables INITIAL_BALANCE_A and INITIAL_BALANCE_B cannot be undefined.") } - - const INITIAL_BALANCE_A = Number(bot.VALUES_TO_USE.initialBalanceB); // NOTE THAT THIS IS INVERTED BECAUSE OF POLONIEX THAT IS THE ONLY EXCHANGE SUPPORTED RIGHT NOW - const INITIAL_BALANCE_B = Number(bot.VALUES_TO_USE.initialBalanceA); - - - thisObject.executionContext = { - initialBalance: { // This is used to calculate profits. - baseAsset: INITIAL_BALANCE_A, - quotedAsset: INITIAL_BALANCE_B - }, - balance: { // This is the total balance that includes positions at the order book + funds available to be traded. - baseAsset: INITIAL_BALANCE_A, - quotedAsset: INITIAL_BALANCE_B // It starts with the initial initialBalance. - }, - availableBalance: { // This is the balance the bot has at any moment in time available to be traded (not in positions at the order book). - baseAsset: INITIAL_BALANCE_A, - quotedAsset: INITIAL_BALANCE_B // It starts with the initial initialBalance. - }, - profits: { - baseAsset: 0, - quotedAsset: 0 - }, - combinedProfits: { - baseAsset: 0, - quotedAsset: 0 - }, - positions: [], - transactions: [] - }; - - callBack(global.DEFAULT_OK_RESPONSE); - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> createConext -> err = "+ err.stack); - callBack(global.DEFAULT_FAIL_RESPONSE); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function saveThemAll(callBackFunction) { - - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] saveThemAll -> Entering function."); } - - writeExecutionContext(onDone); - - function onDone(err) { - try { - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] saveThemAll -> onDone -> Execution finished well."); } - - bot.hasTheBotJustStarted = false; - - callBackFunction(global.DEFAULT_OK_RESPONSE); - return; - } - break; - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[ERROR] saveThemAll -> onDone -> Retry Later. Requesting Execution Retry."); - callBackFunction(err); - return; - } - break; - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - logger.write(MODULE_NAME, "[ERROR] saveThemAll -> onDone -> Operation Failed. Aborting the process."); - callBackFunction(err); - return; - } - break; - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] saveThemAll -> onDone -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function writeExecutionContext(callBack) { - - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] saveThemAll -> writeExecutionContext -> Entering function."); } - - let fileName = "/Execution.Context." + bot.startMode + "." + runIndex +".json"; - let dateForPath = bot.processDatetime.getUTCFullYear() + '/' + utilities.pad(bot.processDatetime.getUTCMonth() + 1, 2) + '/' + utilities.pad(bot.processDatetime.getUTCDate(), 2) + '/' + utilities.pad(bot.processDatetime.getUTCHours(), 2) + '/' + utilities.pad(bot.processDatetime.getUTCMinutes(), 2); - let filePath = bot.filePathRoot + "/Output/" + sessionPath + "Trading-Process/" + dateForPath + fileName; - let fileContent = JSON.stringify(thisObject.executionContext); - - if(fileContent === undefined){ - logger.write(MODULE_NAME, "[ERROR] saveThemAll -> writeExecutionContext -> executionContext is undefined."); - callBackFunction(global.DEFAULT_ERROR_RESPONSE); - } - - if (global.LOG_CONTROL[MODULE_NAME].logContent === true) { logger.write(MODULE_NAME, "[INFO] saveThemAll -> writeExecutionContext -> fileContent = " + fileContent); } - - fileStorage.createTextFile(filePath, fileContent + '\n', onFileCreated); - - function onFileCreated(err) { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] saveThemAll -> writeExecutionContext -> onFileCreated -> Entering function."); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - logger.write(MODULE_NAME, "[ERROR] saveThemAll -> writeExecutionContext -> onFileCreated -> err = "+ err.stack); - callBack(err); - return; - } - - writeExucutionHistory(callBack); - return; - } - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] saveThemAll -> writeExecutionContext -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function writeExucutionHistory(callBack) { - - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] saveThemAll -> writeExucutionHistory -> Entering function."); } - - let fileName = "Execution.History." + bot.startMode + "." + runIndex + ".json"; - let filePath = bot.filePathRoot + "/Output/" + sessionPath + "Trading-Process/" + fileName; - - let newRecord = [ - thisObject.newHistoryRecord.date.valueOf(), - thisObject.newHistoryRecord.buyAvgRate, - thisObject.newHistoryRecord.sellAvgRate, - - thisObject.newHistoryRecord.lastSellRate, - thisObject.newHistoryRecord.sellExecRate, - thisObject.newHistoryRecord.lastBuyRate, - thisObject.newHistoryRecord.buyExecRate, - - thisObject.newHistoryRecord.marketRate, - thisObject.newHistoryRecord.newPositions, - thisObject.newHistoryRecord.newTrades, - thisObject.newHistoryRecord.movedPositions, - thisObject.newHistoryRecord.profitsBaseAsset, - thisObject.newHistoryRecord.profitsQuotedAsset, - thisObject.newHistoryRecord.combinedProfitsA, - thisObject.newHistoryRecord.combinedProfitsB, - - thisObject.newHistoryRecord.messageRelevance, - thisObject.newHistoryRecord.messageTitle, - thisObject.newHistoryRecord.messageBody, - thisObject.extraData - ]; - - thisObject.executionHistory.push(newRecord); - - let fileContent = JSON.stringify(thisObject.executionHistory); - - fileStorage.createTextFile(filePath, fileContent + '\n', onFileCreated); - - function onFileCreated(err) { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] saveThemAll -> writeExucutionHistory -> onFileCreated -> Entering function."); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - logger.write(MODULE_NAME, "[ERROR] saveThemAll -> writeExucutionHistory -> onFileCreated -> err = "+ err.stack); - callBack(err); - return; - } - - if (global.LOG_CONTROL[MODULE_NAME].logContent === true) { - logger.write(MODULE_NAME, "[INFO] saveThemAll -> writeExucutionHistory -> onFileCreated -> Content written = " + fileContent); - } - - /* Here we will write the file containing the max sequence number. */ - - fileContent = runIndex; - fileName = "Execution.History." + bot.startMode + "." + "Sequence" + ".json"; - filePath = bot.filePathRoot + "/Output/" + sessionPath + "Trading-Process/" + fileName; - - fileStorage.createTextFile(filePath, fileContent + '\n', onSequenceFileCreated); - - function onSequenceFileCreated(err) { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] saveThemAll -> writeExucutionHistory -> onFileCreated -> onSequenceFileCreated -> Entering function."); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - logger.write(MODULE_NAME, "[ERROR] saveThemAll -> writeExucutionHistory -> onFileCreated -> onSequenceFileCreated -> err = "+ err.stack); - callBack(err); - return; - } - - writeStatusReport(callBack); - return; - } - } - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] saveThemAll -> writeExucutionHistory -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function writeStatusReport(callBack) { - - try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] saveThemAll -> writeStatusReport -> Entering function."); } - - statusReportModule.file = thisObject.statusReport; - statusReportModule.save(callBack); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] saveThemAll -> writeStatusReport -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] saveThemAll -> Error = " + err.message); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function truncDecimals(pFloatValue, pDecimals) { - - if (!pDecimals) pDecimals = 8; // Default value - - return parseFloat(parseFloat(pFloatValue).toFixed(pDecimals)); - - } - -}; diff --git a/TaskServer/DataDependencies.js b/TaskServer/DataDependencies.js index 918def0bf..54eb5916d 100644 --- a/TaskServer/DataDependencies.js +++ b/TaskServer/DataDependencies.js @@ -4,12 +4,12 @@ const LOG_FILE_CONTENT = false; const MODULE_NAME = "Data Dependencies"; - let bot = BOT + let bot = BOT let thisObject = { nodeArray: undefined, dataSetsModulesArray: [], - isItADepenency: isItADepenency, + isItADepenency: isItADepenency, initialize: initialize, finalize: finalize }; @@ -19,20 +19,22 @@ return thisObject; function initialize(callBackFunction) { - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Entering function."); } - /* Basic Valdidations */ if (bot.processNode.referenceParent.processDependencies !== undefined) { - if (bot.processNode.referenceParent.processDependencies.dataDependencies !== undefined) { - thisObject.nodeArray = bot.processNode.referenceParent.processDependencies.dataDependencies - } else { + thisObject.nodeArray = global.NODE_BRANCH_TO_ARRAY(bot.processNode.referenceParent.processDependencies, 'Data Dependency') + if (thisObject.nodeArray.length === 0) { logger.write(MODULE_NAME, "[ERROR] initialize -> onInitilized -> It is not possible to not have data dependencies at all."); callBackFunction(global.DEFAULT_OK_RESPONSE) return } + /* + We will filter ourt declared dependencies that are not present in the workspace. + This will allow the user to have less Data Mines loaded at the workspace + that the ones that a Trading Mine depends on. + */ + thisObject.nodeArray = global.FILTER_OUT_NODES_WITHOUT_REFERENCE_PARENT_FROM_NODE_ARRAY(thisObject.nodeArray) + } else { logger.write(MODULE_NAME, "[ERROR] initialize -> onInitilized -> It is not possible to not have process dependencies, which means not data dependencies."); callBackFunction(global.DEFAULT_OK_RESPONSE) @@ -51,46 +53,62 @@ if (bot.DEPENDENCY_FILTER !== undefined) { for (let i = 0; i < bot.DEPENDENCY_FILTER.length; i++) { let key = bot.DEPENDENCY_FILTER[i] - filter.set(key, true) + filter.set(key, true) } } /* For each dependency declared at the nodeArray, we will initialize a DataSet as part of this initialization process. */ - let alreadyCalledBack = false; - let addCount = 0; + let alreadyCalledBack = false + let addCount = 0 + let skipCount = 0 + + /* + The current nodeArray that we have includes all the dependencies daclared in the Data Mine / Trading Mine + process dependencies, minus the ones without reference parent, meaning that references Data Mines that are + not present at the workspace. From all the remaining dependencies there will be others that we need to + filter out, and they are the ones which the user does not have a data product anywhere on the network where + this task is running, that is storing the data associated to this dependency. The way we use to filter this + out is by analizyng the response of the initialization call to the DataSet module. If it did not fail but + it was not initialized, then we will assume this happened because the data could not be located and we will + assume the user did this on purpose and we will filter out this dependency by not putting it on this new array. + */ + let newNodeArray = [] for (let i = 0; i < thisObject.nodeArray.length; i++) { - let dataSetModule = DATA_SET.newDataSet(BOT, logger); - dataSetModule.initialize(thisObject.nodeArray[i], onInitilized); - function onInitilized(err) { + function onInitilized(err, wasInitialized) { if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - logger.write(MODULE_NAME, "[ERROR] initialize -> onInitilized -> err = "+ JSON.stringify(err)); + logger.write(MODULE_NAME, "[ERROR] initialize -> onInitilized -> err = " + JSON.stringify(err)); alreadyCalledBack = true; callBackFunction(err); return; } - addDataSet(); + if (wasInitialized === true) { + addCount++; + newNodeArray.push(thisObject.nodeArray[i]) + addDataSet() + } else { + skipCount++ + } + checkIfWeAreDone() } - function addDataSet() { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] initialize -> addDataSet -> Entering function."); } - - addCount++; - + function addDataSet() { thisObject.dataSetsModulesArray.push(dataSetModule); + } - if (addCount === thisObject.nodeArray.length) { + function checkIfWeAreDone() { + if (addCount + skipCount === thisObject.nodeArray.length) { if (alreadyCalledBack === false) { alreadyCalledBack = true + thisObject.nodeArray = newNodeArray callBackFunction(global.DEFAULT_OK_RESPONSE); return; } @@ -99,14 +117,14 @@ } } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> err = "+ err.stack); + logger.write(MODULE_NAME, "[ERROR] initialize -> err = " + err.stack); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } function finalize() { for (let i = 0; i < thisObject.dataSetsModulesArray.length; i++) { - let dataSetModule = thisObject.dataSetsModulesArray[i] + let dataSetModule = thisObject.dataSetsModulesArray[i] dataSetModule.finalize() } thisObject.dataSetsModulesArray = undefined @@ -115,7 +133,7 @@ } function isItADepenency(timeFrame, product) { - let key = timeFrame + '-' + product + let key = timeFrame + '-' + product return filter.get(key) } diff --git a/TaskServer/DataSet.js b/TaskServer/DataSet.js index aa0c6bb1c..5b43b7bbf 100644 --- a/TaskServer/DataSet.js +++ b/TaskServer/DataSet.js @@ -16,16 +16,13 @@ exports.newDataSet = function newDataSet(BOT, logger) { /* Storage account to be used here. */ const FILE_STORAGE = require('./FileStorage.js'); - let fileStorage + let fileStorage return thisObject; function initialize(dataDependency, callBackFunction) { try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Entering function."); } - thisObject.node = dataDependency.referenceParent; logger.fileName = MODULE_NAME + "." + thisObject.node.type + "." + thisObject.node.name + "." + thisObject.node.id; @@ -36,7 +33,7 @@ exports.newDataSet = function newDataSet(BOT, logger) { return } - if (thisObject.node.code.codeName === undefined) { + if (thisObject.node.config.codeName === undefined) { logger.write(MODULE_NAME, "[ERROR] initialize -> Dataset witn no codeName defined -> Product Dataset = " + JSON.stringify(thisObject.node)); callBackFunction(global.DEFAULT_FAIL_RESPONSE); return @@ -48,7 +45,7 @@ exports.newDataSet = function newDataSet(BOT, logger) { return } - if (thisObject.node.parentNode.code.codeName === undefined) { + if (thisObject.node.parentNode.config.codeName === undefined) { logger.write(MODULE_NAME, "[ERROR] initialize -> Product Definition witn no codeName defined -> Product Definition = " + JSON.stringify(thisObject.node.parentNode)); callBackFunction(global.DEFAULT_FAIL_RESPONSE); return @@ -60,102 +57,47 @@ exports.newDataSet = function newDataSet(BOT, logger) { return } - if (thisObject.node.parentNode.parentNode.code.codeName === undefined) { + if (thisObject.node.parentNode.parentNode.config.codeName === undefined) { logger.write(MODULE_NAME, "[ERROR] initialize -> Bot witn no codeName defined. Bot = " + JSON.stringify(thisObject.node.parentNode.parentNode)); callBackFunction(global.DEFAULT_FAIL_RESPONSE); return } if (thisObject.node.parentNode.parentNode.parentNode === undefined) { - logger.write(MODULE_NAME, "[ERROR] initialize -> Bot not attached to a Data Mine. Bot = " + JSON.stringify(thisObject.node.parentNode.parentNode)); + logger.write(MODULE_NAME, "[ERROR] initialize -> Bot not attached to a Data Mine or Trading Mine. Bot = " + JSON.stringify(thisObject.node.parentNode.parentNode)); callBackFunction(global.DEFAULT_FAIL_RESPONSE); return } - if (thisObject.node.parentNode.parentNode.parentNode.code.codeName === undefined) { + if (thisObject.node.parentNode.parentNode.parentNode.config.codeName === undefined) { logger.write(MODULE_NAME, "[ERROR] initialize -> Data Mine witn no codeName defined. Data Mine = " + JSON.stringify(thisObject.node.parentNode.parentNode.parentNode)); callBackFunction(global.DEFAULT_FAIL_RESPONSE); return } /* Now we will see where do we need to fetch this data from. */ - let network = global.TASK_NETWORK + let network = global.TASK_NETWORK let datasetProductDefinition = thisObject.node.parentNode - for (let i = 0; i < network.networkNodes.length; i++) { - let networkNode = network.networkNodes[i] - if (networkNode.dataStorage !== undefined) { - if (networkNode.dataStorage.sessionIndependentData !== undefined) { - for (let j = 0; j < networkNode.dataStorage.sessionIndependentData.exchangeDataProducts.length; j++) { - let exchangeDataProduct = networkNode.dataStorage.sessionIndependentData.exchangeDataProducts[j] - for (let k = 0; k < exchangeDataProduct.singleMarketData.length; k++) { - let singleMarketData = exchangeDataProduct.singleMarketData[k] - if (singleMarketData.referenceParent !== undefined) { - let market = singleMarketData.referenceParent - let currentProcessMarket = bot.processNode.marketReference.referenceParent + let nodeArray = global.NODE_MESH_TO_PATH_ARRAY(network, datasetProductDefinition.id) + let networkNode = global.FIND_NODE_IN_NODE_ARRAY(nodeArray, 'Network Node') - if (currentProcessMarket.id === market.id) { - for (let m = 0; m < singleMarketData.dataProducts.length; m++) { - let dataProduct = singleMarketData.dataProducts[m] - if (dataProduct.referenceParent !== undefined) { - let productDefinition = dataProduct.referenceParent - if (datasetProductDefinition.id === productDefinition.id) { - - /* We found where the data is located on the network. */ - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Retrieving data from " + networkNode.name + " -> host = " + networkNode.code.host + ' -> port = ' + networkNode.code.webPort + '.'); } - - fileStorage = FILE_STORAGE.newFileStorage(logger, networkNode.code.host, networkNode.code.webPort); - callBackFunction(global.DEFAULT_OK_RESPONSE); - return - } - } - } - } - } - } - } - } - if (networkNode.dataStorage.sessionBasedData !== undefined) { - for (let j = 0; j < networkNode.dataStorage.sessionBasedData.exchangeDataProducts.length; j++) { - let exchangeDataProduct = networkNode.dataStorage.sessionBasedData.exchangeDataProducts[j] - for (let s = 0; s < exchangeDataProduct.sessionReferences.length; s++) { - let sessionReference = exchangeDataProduct.sessionReferences[s] - let singleMarketData = sessionReference.singleMarketData - if (singleMarketData.referenceParent !== undefined) { - let market = singleMarketData.referenceParent - let currentProcessMarket = bot.processNode.marketReference.referenceParent - - if (currentProcessMarket.id === market.id) { - for (let m = 0; m < singleMarketData.dataProducts.length; m++) { - let dataProduct = singleMarketData.dataProducts[m] - if (dataProduct.referenceParent !== undefined) { - let productDefinition = dataProduct.referenceParent - if (datasetProductDefinition.id === productDefinition.id) { - - /* We found where the data is located on the network. */ - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Retrieving data from " + networkNode.name + " -> host = " + networkNode.code.host + ' -> port = ' + networkNode.code.webPort + '.'); } - - fileStorage = FILE_STORAGE.newFileStorage(logger, networkNode.code.host, networkNode.code.webPort); - callBackFunction(global.DEFAULT_OK_RESPONSE); - return - } - } - } - } - } - } - } - } - } + if (networkNode === undefined) { + logger.write(MODULE_NAME, "[WARN] initialize -> Network Node not found.") + logger.write(MODULE_NAME, "[WARN] initialize -> Initialization Failed because we could not find where the data of this dataset is located within the network. Check the logs for more info."); + logger.write(MODULE_NAME, "[WARN] initialize -> Could not find where " + datasetProductDefinition.name + " for " + bot.exchange + " " + bot.market.baseAsset + "/" + bot.market.quotedAsset + " is stored within the network."); + callBackFunction(global.DEFAULT_OK_RESPONSE, false); + return } - logger.write(MODULE_NAME, "[ERROR] initialize -> Initialization Failed because we could not find where the data of this dataset is located within the network. Check the logs for more info."); - logger.write(MODULE_NAME, "[ERROR] initialize -> Could not find where " + datasetProductDefinition.name + " for " + bot.exchange + " " + bot.market.baseAsset + "/" + bot.market.quotedAsset + " is stored within the network."); + /* We found where the data is located on the network. */ + if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Retrieving data from " + networkNode.name + " -> host = " + networkNode.config.host + ' -> port = ' + networkNode.config.webPort + '.'); } - callBackFunction(global.DEFAULT_FAIL_RESPONSE); + fileStorage = FILE_STORAGE.newFileStorage(logger, networkNode.config.host, networkNode.config.webPort); + callBackFunction(global.DEFAULT_OK_RESPONSE, true); } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> err = "+ err.stack); + logger.write(MODULE_NAME, "[ERROR] initialize -> err = " + err.stack); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } @@ -173,8 +115,8 @@ exports.newDataSet = function newDataSet(BOT, logger) { if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getTextFile -> Entering function."); } - let dataMineCodeName = thisObject.node.parentNode.parentNode.parentNode.code.codeName - let botCodeName = thisObject.node.parentNode.parentNode.code.codeName + let dataMineCodeName = thisObject.node.parentNode.parentNode.parentNode.config.codeName + let botCodeName = thisObject.node.parentNode.parentNode.config.codeName let filePathRoot = bot.exchange + "/" + bot.market.baseAsset + "-" + bot.market.quotedAsset + "/" + dataMineCodeName + "/" + botCodeName; let filePath = filePathRoot + "/Output/" + pFolderPath; @@ -191,7 +133,7 @@ exports.newDataSet = function newDataSet(BOT, logger) { } } catch (err) { - logger.write(MODULE_NAME, "[ERROR] 'getTextFile' -> err = "+ err.stack); + logger.write(MODULE_NAME, "[ERROR] 'getTextFile' -> err = " + err.stack); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } @@ -204,8 +146,8 @@ exports.newDataSet = function newDataSet(BOT, logger) { if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] createTextFile -> pFolderPath = " + pFolderPath); } if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] createTextFile -> pFileName = " + pFileName); } - let ownerId = thisObject.node.dataMine + "-" + thisObject.node.bot + "-" + thisObject.node.botVersion.major + "-" + thisObject.node.botVersion.minor + "-" + thisObject.node.dataSetVersion; - let botId = bot.dataMine + "-" + bot.codeName + "-" + bot.version.major + "-" + bot.version.minor + "-" + bot.dataSetVersion; + let ownerId = thisObject.node.dataMine + "-" + thisObject.node.bot + let botId = bot.dataMine + "-" + bot.codeName if (ownerId !== botId) { @@ -232,7 +174,7 @@ exports.newDataSet = function newDataSet(BOT, logger) { } } catch (err) { - logger.write(MODULE_NAME, "[ERROR] 'createTextFile' -> err = "+ err.stack); + logger.write(MODULE_NAME, "[ERROR] 'createTextFile' -> err = " + err.stack); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } diff --git a/TaskServer/DebugLog.js b/TaskServer/DebugLog.js index bcaf567a3..a1ef69a37 100644 --- a/TaskServer/DebugLog.js +++ b/TaskServer/DebugLog.js @@ -1,6 +1,5 @@ exports.newDebugLog = function newDebugLog() { - const ROOT_DIR = './'; const MODULE_NAME = "DebugLog"; let executionDatetime = "D." + global.EXECUTION_DATETIME.getUTCFullYear() + @@ -34,7 +33,7 @@ exports.newDebugLog = function newDebugLog() { disableLogging = pdisableLogging } catch (err) { - console.log("[ERROR] Debug Log -> initialize -> err = "+ err.stack); + console.log("[ERROR] Debug Log -> initialize -> err = " + err.stack); } } @@ -53,12 +52,12 @@ exports.newDebugLog = function newDebugLog() { date = date.getUTCFullYear() + '-' + strPad(date.getUTCMonth() + 1, 2, "0") + '-' + strPad(date.getUTCDate(), 2, "0"); console.log(new Date().toISOString() + " " + strPad(thisObject.bot.exchange, 20) + " " + strPad(thisObject.bot.market.baseAsset + '/' + thisObject.bot.market.quotedAsset, 10) + " " + strPad(pBot, 30) + " " + strPad(pProcess, 30) - + " Internal Loop # " + strPad(internalLoopCounter + 1, 8) + " " + strPad(date, 30) + " " + strPad(percentage, 10)) + + " Internal Loop # " + strPad(internalLoopCounter + 1, 8) + " " + strPad(date, 30) + " " + strPad(percentage, 10)) persist(); function strPad(str, max, fill) { - if (fill === undefined) {fill = " "} + if (fill === undefined) { fill = " " } str = str.toString(); return str.length < max ? strPad(fill + str, max) : str; } @@ -69,7 +68,7 @@ exports.newDebugLog = function newDebugLog() { /* Here we actually write the content of the in-memory log to a file */ try { - if (accumulatedLog === "[") {return} // nothing to persist at the moment. + if (accumulatedLog === "[") { return } // nothing to persist at the moment. internalLoopCounter++; @@ -82,7 +81,7 @@ exports.newDebugLog = function newDebugLog() { let filePath = thisObject.bot.filePathRoot + "/Logs/" + thisObject.bot.process + "/" if (thisObject.bot.SESSION !== undefined) { - filePath = filePath + thisObject.bot.SESSION.folderName + "/" + executionDatetime; + filePath = filePath + thisObject.bot.SESSION.folderName + "/" + executionDatetime; } else { filePath = filePath + executionDatetime; } @@ -102,32 +101,32 @@ exports.newDebugLog = function newDebugLog() { writeLog(); /* This is the implementation of the mechanism to auto-mantain logs. */ - if (contentToPersist.indexOf('[ERROR]') < 0) { + if (contentToPersist.indexOf('[ERROR]') < 0 && contentToPersist.indexOf('[PERSIST]') < 0 && contentToPersist.indexOf('[IMPORTANT]') < 0) { thisObject.bot.LOGS_TO_DELETE_QUEUE.push(filePath + '/' + fileName) } if (thisObject.bot.LOGS_TO_DELETE_QUEUE.length > thisObject.bot.DELETE_QUEUE_SIZE) { let fileToDelete = thisObject.bot.LOGS_TO_DELETE_QUEUE[0] thisObject.bot.LOGS_TO_DELETE_QUEUE.splice(0, 1) /* Will delete this file only if it does not contains ERROR inside. */ - let fileContent = fileStorage.getTextFile(fileToDelete, onGetFile, true) + let fileContent = fileStorage.getTextFile(fileToDelete, onGetFile, true) function onGetFile(err, fileContent) { if (err.result === global.DEFAULT_OK_RESPONSE.result) { if (fileContent.indexOf("ERROR") < 0) { /* Logs will only be deleted when they contain no ERROR in them. */ fileStorage.deleteTextFile(fileToDelete); - } + } } else { fileStorage.deleteTextFile(fileToDelete); } } } - + function writeLog() { - fileStorage.createTextFile(filePath + '/' + fileName, contentToPersist + '\r\n' + "]", onFileCreated); + fileStorage.createTextFile(filePath + '/' + fileName, contentToPersist + '\r\n' + "]", onFileCreated, undefined, true); function onFileCreated(err) { if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - console.log("[ERROR] DebugLog -> persist -> onInizialized -> onFileCreated -> err = "+ err.message); + console.log("[ERROR] DebugLog -> persist -> onInizialized -> onFileCreated -> err = " + err.message); setTimeout(writeLog, 10000); // Lets retry until we make it. return; } @@ -135,16 +134,14 @@ exports.newDebugLog = function newDebugLog() { } } } catch (err) { - console.log("[ERROR] DebugLog -> persist -> err = "+ err.stack); + console.log("[ERROR] DebugLog -> persist -> err = " + err.stack); console.log("[ERROR] DebugLog -> persist -> onInizialized -> contentToPersist = " + contentToPersist); } } function write(pModule, pMessage) { - try { - if (disableLogging === true) { return; } if (thisObject.bot === undefined) { return; } @@ -174,7 +171,7 @@ exports.newDebugLog = function newDebugLog() { accumulatedLog = accumulatedLog + logLine; } catch (err) { - console.log("[ERROR] DebugLog -> write -> err = "+ err.stack); + console.log("[ERROR] DebugLog -> write -> err = " + err.stack); } } diff --git a/TaskServer/ExchangeAPI.js b/TaskServer/ExchangeAPI.js deleted file mode 100644 index 54c3c52e7..000000000 --- a/TaskServer/ExchangeAPI.js +++ /dev/null @@ -1,160 +0,0 @@ -exports.newExchangeAPI = function newExchangeAPI(logger, BOT) { - - let MODULE_NAME = "Exchange API"; - let LOG_INFO = true; - let apiClient; - let bot = BOT - - let thisObject = { - initialize: initialize, - getTicker: getTicker, - getOpenOrders: getOpenOrders, - getOrder: getOrder, - createOrder: createOrder, - getMaxDecimalPositions: getMaxDecimalPositions - }; - - let exchangeId - let options = {} - let exchange - - const ccxt = require('ccxt') - - return thisObject; - - function initialize(callBackFunction) { - try { - exchangeId = bot.exchange.toLowerCase() - - let key = process.env.KEY - let secret = process.env.SECRET - - if (key === "undefined") { key = undefined } - if (secret === "undefined") { secret = undefined } - - const exchangeClass = ccxt[exchangeId] - const exchangeConstructorParams = { - 'apiKey': key, - 'secret': secret, - 'timeout': 30000, - 'enableRateLimit': true, - verbose: false, - options: options - } - - exchange = new exchangeClass(exchangeConstructorParams) - - callBackFunction(global.DEFAULT_OK_RESPONSE) - } catch (err) { - logError("initialize -> err = " + err.message); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function getMaxDecimalPositions() { - return 8 - } - - async function getTicker(market, callBackFunction) { - try { - logInfo("getTicker -> Entering function."); - const symbol = bot.market.baseAsset + '/' + bot.market.quotedAsset - let ticker - - if (exchange.has['fetchTicker']) { - ticker = await (exchange.fetchTicker(symbol)) - callBackFunction(global.DEFAULT_OK_RESPONSE, ticker) - } else { - logError("getTicker -> Exchange does not support fetchTicker command."); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - - } catch (err) { - logError("getTicker -> err = " + err.message); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - async function getOpenOrders(market, callBackFunction) { - try { - logInfo("getOpenOrders -> Entering function. market = " + JSON.stringify(market)); - - const symbol = bot.market.baseAsset + '/' + bot.market.quotedAsset - let openOrders - - if (exchange.has['fetchOpenOrders']) { - openOrders = await(exchange.fetchOpenOrders (symbol)) - callBackFunction(global.DEFAULT_OK_RESPONSE, openOrders) - } else { - logError("getOpenOrders -> Exchange does not support fetchOpenOrders command."); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - - } catch (err) { - logError("getOpenOrders -> Error = " + err.message); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - async function getOrder(orderId, market, callBackFunction) { - try { - logInfo("getOrder -> Entering function. orderId = " + orderId); - - const symbol = bot.market.baseAsset + '/' + bot.market.quotedAsset - let order - - if (exchange.has['fetchOrder']) { - order = await (exchange.fetchOrder(orderId, symbol)) - callBackFunction(global.DEFAULT_OK_RESPONSE, order) - } else { - logError("getOrder -> Exchange does not support fetchOrder command."); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } catch (err) { - logError("getOrder -> Error = " + err.message); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - async function createOrder(market, side, price, cost, amount, callBackFunction) { - try { - logInfo("createOrder -> Entering function."); - - const symbol = bot.market.baseAsset + '/' + bot.market.quotedAsset - - logInfo("createOrder -> market = " + market.assetA + "_" + market.assetB); - logInfo("createOrder -> side = " + side); - logInfo("createOrder -> cost = " + cost); - logInfo("createOrder -> amount = " + amount); - logInfo("createOrder -> price = " + price); - - if (side !== "buy" && side !== "sell") { - logError("createOrder -> side must be either 'buy' or 'sell'."); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - - let type = 'market' - let order - - if (exchange.has['createOrder']) { - order = await(exchange.createOrder(symbol, type, side, amount)) - callBackFunction(global.DEFAULT_OK_RESPONSE, order) - } else { - logError("createOrder -> Exchange does not support createOrder command."); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - - } catch (err) { - logError("createOrder -> err = " + JSON.stringify(err.stack) || err.message); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function logInfo(message) { - if (LOG_INFO === true) { logger.write(MODULE_NAME, '[INFO] ' + message) } - } - - function logError(message) { - logger.write(MODULE_NAME, '[ERROR] ' + message) - } -}; diff --git a/TaskServer/FileStorage.js b/TaskServer/FileStorage.js index 22966c706..8cc7baac9 100644 --- a/TaskServer/FileStorage.js +++ b/TaskServer/FileStorage.js @@ -4,7 +4,7 @@ const path = require('path') exports.newFileStorage = function newFileStorage(logger, host, port) { const MODULE_NAME = 'FileStorage' - const MAX_RETRY = 30 + const MAX_RETRY = 10 const FAST_RETRY_TIME_IN_MILISECONDS = 500 const SLOW_RETRY_TIME_IN_MILISECONDS = 2000 @@ -17,23 +17,57 @@ exports.newFileStorage = function newFileStorage(logger, host, port) { } let thisObject = { + asyncGetTextFile: asyncGetTextFile, + asyncCreateTextFile: asyncCreateTextFile, getTextFile: getTextFile, createTextFile: createTextFile, deleteTextFile: deleteTextFile } - return thisObject + return thisObject + + async function asyncGetTextFile(filePath, noRetry, canUsePrevious) { + /* This function allows its caller to work with async / await instead of callbacks */ + let promise = new Promise((resolve, reject) => { + + getTextFile(filePath, onFileRead, noRetry, canUsePrevious) + function onFileRead(err, text) { + + let response = { + err: err, + text: text + } + resolve(response) + } + }) + + return promise + } + + async function asyncCreateTextFile(filePath, fileContent, keepPrevious, noTemp) { + /* This function allows its caller to work with async / await instead of callbacks */ + let promise = new Promise((resolve, reject) => { + + createTextFile(filePath, fileContent, onFileWriten, keepPrevious, noTemp) + function onFileWriten(err) { + + let response = { + err: err + } + resolve(response) + } + }) + + return promise + } function getTextFile(filePath, callBackFunction, noRetry, canUsePrevious) { - let currentRetryGetTextFile = 0 + let currentRetryGetTextFile = 0 recursiveGetTextFile(filePath, callBackFunction, noRetry, canUsePrevious) function recursiveGetTextFile(filePath, callBackFunction, noRetry, canUsePrevious) { - - logger.write(MODULE_NAME, '[INFO] FileStorage -> getTextFile -> Entering Function.') - let fileDoesNotExist = false /* Choose path for either bots or data */ @@ -77,7 +111,7 @@ exports.newFileStorage = function newFileStorage(logger, host, port) { } callBackFunction(customResponse) return - } + } fileDoesNotExist = true logger.write(MODULE_NAME, '[WARN] FileStorage -> getTextFile -> onFileRead -> File does not exist. Retrying. ') @@ -106,7 +140,7 @@ exports.newFileStorage = function newFileStorage(logger, host, port) { if (mustBeJason === false) { /* In this case there is nothing else to check. */ callBackFunction(global.DEFAULT_OK_RESPONSE, text.toString()) - return + return } /* @@ -117,7 +151,7 @@ exports.newFileStorage = function newFileStorage(logger, host, port) { /* The file was correctly read and could be parsed. */ callBackFunction(global.DEFAULT_OK_RESPONSE, text.toString()) - return + return } catch (err) { @@ -140,11 +174,11 @@ exports.newFileStorage = function newFileStorage(logger, host, port) { logger.write(MODULE_NAME, '[WARN] FileStorage -> getTextFile -> onFileRead -> canUsePrevious -> err = ' + err.stack) callBackFunction(global.DEFAULT_FAIL_RESPONSE) return - } + } /* Returning the previous file */ callBackFunction(global.DEFAULT_OK_RESPONSE, text.toString()) - return + return } } else { logger.write(MODULE_NAME, '[WARN] FileStorage -> getTextFile -> onFileRead -> Could read the file, but could not parse it as it is not a valid JSON.') @@ -153,17 +187,17 @@ exports.newFileStorage = function newFileStorage(logger, host, port) { setTimeout(retry, retryTimeToUse) return } - } + } } } catch (err) { - logger.write(MODULE_NAME, '[WARN] FileStorage -> getTextFile -> Error writing file -> file = ' + fileLocation) - logger.write(MODULE_NAME, '[WARN] FileStorage -> getTextFile -> Error writing file -> err = ' + err.stack) + logger.write(MODULE_NAME, '[WARN] FileStorage -> getTextFile -> Error reading file -> file = ' + fileLocation) + logger.write(MODULE_NAME, '[WARN] FileStorage -> getTextFile -> Error reading file -> err = ' + err.stack) retry() } function retry() { - //console.log(new Date(), ' Retry #: ' + currentRetryGetTextFile, fileLocation ) + console.log(new Date(), '[WARN] Read File Retry #: ' + currentRetryGetTextFile, fileLocation) if (currentRetryGetTextFile < MAX_RETRY) { currentRetryGetTextFile++ logger.write(MODULE_NAME, '[WARN] FileStorage -> getTextFile -> retry -> Will try to read the file again -> Retry #: ' + currentRetryGetTextFile) @@ -191,16 +225,13 @@ exports.newFileStorage = function newFileStorage(logger, host, port) { } } - function createTextFile(filePath, fileContent, callBackFunction, keepPrevious) { + function createTextFile(filePath, fileContent, callBackFunction, keepPrevious, noTemp) { let currentRetryWriteTextFile = 0 - recursiveCreateTextFile(filePath, fileContent, callBackFunction, keepPrevious) - - function recursiveCreateTextFile(filePath, fileContent, callBackFunction, keepPrevious) { - - logger.write(MODULE_NAME, '[INFO] FileStorage -> createTextFile -> Entering Function.') + recursiveCreateTextFile(filePath, fileContent, callBackFunction, keepPrevious, noTemp) + function recursiveCreateTextFile(filePath, fileContent, callBackFunction, keepPrevious, noTemp) { /* Choose path for either logs or data */ let fileLocation if (filePath.indexOf("/Logs/") > 0) { @@ -210,7 +241,6 @@ exports.newFileStorage = function newFileStorage(logger, host, port) { } try { - logger.write(MODULE_NAME, '[INFO] FileStorage -> createTextFile -> fileLocation: ' + fileLocation) /* If necesary a folder or folders are created before writing the file to disk. */ @@ -222,9 +252,13 @@ exports.newFileStorage = function newFileStorage(logger, host, port) { Then we delete the original file, if exists, and finally we rename the temporary into the original name. */ const fs = require('fs') - fs.writeFile(fileLocation + '.tmp', fileContent, onFileWritenn) + if (noTemp === true) { + fs.writeFile(fileLocation, fileContent, onFileWriten) + } else { + fs.writeFile(fileLocation + '.tmp', fileContent, onFileWriten) + } - function onFileWritenn(err) { + function onFileWriten(err) { let retryTimeToUse = FAST_RETRY_TIME_IN_MILISECONDS if (currentRetryWriteTextFile > MAX_RETRY - 2) { retryTimeToUse = SLOW_RETRY_TIME_IN_MILISECONDS @@ -235,6 +269,10 @@ exports.newFileStorage = function newFileStorage(logger, host, port) { setTimeout(retry, retryTimeToUse) } else { + if (noTemp === true) { + callBackFunction(global.DEFAULT_OK_RESPONSE) + return + } if (keepPrevious === true) { /* In some cases, we are going to keep a copy of the previous version of the file being written. This will be usefull to recover from crashes @@ -252,7 +290,7 @@ exports.newFileStorage = function newFileStorage(logger, host, port) { logger.write(MODULE_NAME, '[WARN] FileStorage -> createTextFile -> onFileWriten -> onUnlinked -> Error deleting file -> err = ' + err.stack) setTimeout(retry, retryTimeToUse) return - } + } /* Rename de Original into Previous */ fs.rename(fileLocation, fileLocation + '.Previous.json', onOriginalRenamed) @@ -266,7 +304,7 @@ exports.newFileStorage = function newFileStorage(logger, host, port) { logger.write(MODULE_NAME, '[WARN] FileStorage -> createTextFile -> onFileWriten -> onUnlinked -> onOriginalRenamed -> Error renaming original file -> file = ' + fileLocation) logger.write(MODULE_NAME, '[WARN] FileStorage -> createTextFile -> onFileWriten -> onUnlinked -> onOriginalRenamed -> Error renaming original file -> err = ' + err.stack) setTimeout(retry, retryTimeToUse) - return + return } /* Rename de Temp into Original */ @@ -282,13 +320,13 @@ exports.newFileStorage = function newFileStorage(logger, host, port) { callBackFunction(global.DEFAULT_OK_RESPONSE) } - } + } } } } else { /* In this case, there is no need to keep a copy of the file being replaced, so we just delete and that's it. */ - fs.unlink(fileLocation , onUnlinked) + fs.unlink(fileLocation, onUnlinked) function onUnlinked(err) { let code = '' @@ -296,11 +334,11 @@ exports.newFileStorage = function newFileStorage(logger, host, port) { code = err.code } if (code !== '' && code !== 'ENOENT') { - logger.write(MODULE_NAME, '[WARN] FileStorage -> createTextFile -> onFileWriten -> onUnlinked -> Error deleting file -> file = ' + fileLocation ) + logger.write(MODULE_NAME, '[WARN] FileStorage -> createTextFile -> onFileWriten -> onUnlinked -> Error deleting file -> file = ' + fileLocation) logger.write(MODULE_NAME, '[WARN] FileStorage -> createTextFile -> onFileWriten -> onUnlinked -> Error deleting file -> err = ' + err.stack) setTimeout(retry, retryTimeToUse) return - } + } /* Rename de Temp into Original */ fs.rename(fileLocation + '.tmp', fileLocation, onTempRenamed) @@ -406,33 +444,33 @@ exports.newFileStorage = function newFileStorage(logger, host, port) { /* Function to create folders of missing folders at any path. */ function mkDirByPathSync(targetDir, { isRelativeToScript = false } = {}) { - const sep = '/'; - const initDir = path.isAbsolute(targetDir) ? sep : ''; - const baseDir = isRelativeToScript ? __dirname : '.'; + const sep = '/'; + const initDir = path.isAbsolute(targetDir) ? sep : ''; + const baseDir = isRelativeToScript ? __dirname : '.'; - return targetDir.split(sep).reduce((parentDir, childDir) => { - const curDir = path.resolve(baseDir, parentDir, childDir); - try { - const fs = require('fs') - fs.mkdirSync(curDir); - } catch (err) { - if (err.code === 'EEXIST') { // curDir already exists! - return curDir; - } + return targetDir.split(sep).reduce((parentDir, childDir) => { + const curDir = path.resolve(baseDir, parentDir, childDir); + try { + const fs = require('fs') + fs.mkdirSync(curDir); + } catch (err) { + if (err.code === 'EEXIST') { // curDir already exists! + return curDir; + } - // To avoid `EISDIR` error on Mac and `EACCES`-->`ENOENT` and `EPERM` on Windows. - if (err.code === 'ENOENT') { // Throw the original parentDir error on curDir `ENOENT` failure. - throw new Error(`EACCES: permission denied, mkdir '${parentDir}'`); - } + // To avoid `EISDIR` error on Mac and `EACCES`-->`ENOENT` and `EPERM` on Windows. + if (err.code === 'ENOENT') { // Throw the original parentDir error on curDir `ENOENT` failure. + throw new Error(`EACCES: permission denied, mkdir '${parentDir}'`); + } - const caughtErr = ['EACCES', 'EPERM', 'EISDIR'].indexOf(err.code) > -1; - if (!caughtErr || caughtErr && curDir === path.resolve(targetDir)) { - throw err; // Throw if it's just the last created dir. - } - } + const caughtErr = ['EACCES', 'EPERM', 'EISDIR'].indexOf(err.code) > -1; + if (!caughtErr || caughtErr && curDir === path.resolve(targetDir)) { + throw err; // Throw if it's just the last created dir. + } + } - return curDir; - }, initDir); + return curDir; + }, initDir); } function getFileViaHTTP(filePath, callback, callBackFunction) { @@ -455,7 +493,7 @@ exports.newFileStorage = function newFileStorage(logger, host, port) { logger.write(MODULE_NAME, "[ERROR] getFileViaHTTP -> onError -> err = " + err.stack); logger.write(MODULE_NAME, "[ERROR] getFileViaHTTP -> onError -> Failed to fetch file via HTTP. Will retry later. "); callBackFunction(global.DEFAULT_RETRY_RESPONSE); - }) + }) function onResponse(response) { diff --git a/TaskServer/IndicatorBot.js b/TaskServer/IndicatorBot.js index 004ed077f..cd513dee4 100644 --- a/TaskServer/IndicatorBot.js +++ b/TaskServer/IndicatorBot.js @@ -1,167 +1,785 @@ -exports.newIndicatorBot = function newIndicatorBot(bot, logger, UTILITIES, FILE_STORAGE) { - - const FULL_LOG = true; - const LOG_FILE_CONTENT = false; - const ONE_DAY_IN_MILISECONDS = 24 * 60 * 60 * 1000; +exports.newIndicatorBot = function newIndicatorBot(bot, parentLogger) { const MODULE_NAME = "Indicator Bot"; + const FULL_LOG = true; + + let USER_BOT_MODULE; + let COMMONS_MODULE; + + const MULTI_PERIOD_MARKET = require(global.ROOT_DIR + 'MultiPeriodMarket'); + const MULTI_PERIOD_DAILY = require(global.ROOT_DIR + 'MultiPeriodDaily'); + const FILE_STORAGE = require('./FileStorage.js'); + let fileStorage = FILE_STORAGE.newFileStorage(parentLogger); + + const DEBUG_MODULE = require(global.ROOT_DIR + 'DebugLog'); + let logger; // We need this here in order for the loopHealth function to work and be able to rescue the loop when it gets in trouble. + + let nextLoopTimeoutHandle; let thisObject = { initialize: initialize, - finalize: finalize, - start: start + run: run }; - let utilities = UTILITIES.newCloudUtilities(logger); - let fileStorage = FILE_STORAGE.newFileStorage(logger); - - const COMMONS = require('./Commons.js'); - let commons = COMMONS.newCommons(bot, logger, UTILITIES, FILE_STORAGE); + let processConfig; return thisObject; - function finalize() { - thisObject = undefined - utilities = undefined - fileStorage = undefined - commons = undefined - } - - function initialize(callBackFunction) { - + function initialize(pProcessConfig, callBackFunction) { try { + processConfig = pProcessConfig; - logger.fileName = MODULE_NAME; - logger.initialize(); + if (bot.definedByUI === true) { + /* The code of the bot is defined at the UI. No need to load a file with the code. */ + callBackFunction(global.DEFAULT_OK_RESPONSE); + return + } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Entering function."); } + /* This bot is not ready for taking its code from the UI, then we need to load it from its repo. */ + let filePath = bot.dataMine + "/" + "bots" + "/" + bot.processNode.referenceParent.parentNode.config.repo + "/" + pProcessConfig.codeName + filePath += "/User.Bot.js" - callBackFunction(global.DEFAULT_OK_RESPONSE); + fileStorage.getTextFile(filePath, onBotDownloaded); + function onBotDownloaded(err, text) { + + if (err.result !== global.DEFAULT_OK_RESPONSE.result) { + + parentLogger.write(MODULE_NAME, "[ERROR] initialize -> onInizialized -> onBotDownloaded -> err = " + err.message); + parentLogger.write(MODULE_NAME, "[ERROR] initialize -> onInizialized -> onBotDownloaded -> filePath = " + filePath); + callBackFunction(global.DEFAULT_FAIL_RESPONSE); + return; + } + + USER_BOT_MODULE = {} + USER_BOT_MODULE.newUserBot = eval(text); // TODO This needs to be changed function + + filePath = bot.dataMine + "/" + "bots" + "/" + bot.processNode.referenceParent.parentNode.config.repo + filePath += "/Commons.js" + + fileStorage.getTextFile(filePath, onCommonsDownloaded); + + function onCommonsDownloaded(err, text) { + if (err.result !== global.DEFAULT_OK_RESPONSE.result) { + parentLogger.write(MODULE_NAME, "[WARN] initialize -> onBotDownloaded -> onCommonsDownloaded -> Commons not found: " + err.code || err.message); + callBackFunction(global.DEFAULT_OK_RESPONSE); + return; + } + COMMONS_MODULE = {} + COMMONS_MODULE.newCommons = eval(text); // TODO This needs to be changed function + + callBackFunction(global.DEFAULT_OK_RESPONSE); + } + } } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> err = " + err.stack); + parentLogger.write(MODULE_NAME, "[ERROR] initialize -> err = " + err.stack); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } - function start(dataFiles, timeFrame, timeFrameLabel, currentDay, interExecutionMemory, callBackFunction) { - + function run(callBackFunction) { try { + let fixedTimeLoopIntervalHandle; - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> Entering function."); } + /* Heartbeats sent to the UI */ + bot.processHeartBeat = processHeartBeat - let products = {} - let mainDependency = {} - let processingDailyFiles - - if (currentDay !== undefined) { - processingDailyFiles = true + if (bot.runAtFixedInterval === true) { + fixedTimeLoopIntervalHandle = setInterval(loop, bot.fixedInterval); } else { - processingDailyFiles = false + loop(); } - /* The first phase here is about checking that we have everything we need at the definition level. */ - let dataDependencies = bot.processNode.referenceParent.processDependencies.dataDependencies - if (commons.validateDataDependencies(dataDependencies, callBackFunction) !== true) { return } - - let outputDatasets = bot.processNode.referenceParent.processOutput.outputDatasets - if (commons.validateOutputDatasets(outputDatasets, callBackFunction) !== true) { return } - - /* The second phase is about transforming the inputs into a format that can be used to apply the user defined code. */ - commons.inflateDatafiles(dataFiles, dataDependencies, products, mainDependency, timeFrame) - - /* During the third phase, we need to generate the data of the different products this process produces an output */ - for (let i = 0; i < outputDatasets.length; i++) { - - let outputDatasetNode = outputDatasets[i] - let jsonData // Just build data as Json objects - let outputData // Data built as a result of applying user defined code and formulas at the Data Building Procedure - let singularVariableName // Name of the variable for this product - let recordDefinition // Record as defined by the user at the UI - let fileContent // Here we store the contents of the new data built just before writing it to a file. - let resultsWithIrregularPeriods // A product will have irregular periods when the User Code inserts new result records at will, in contrast with normal procedure where the platform insert one record per loop execution. - - /* - For each outputDatasetNode in our process output, we will build the information based on our input products. - */ - - recordDefinition = outputDatasetNode.referenceParent.parentNode.record - singularVariableName = outputDatasetNode.referenceParent.parentNode.code.singularVariableName - - /* Check Irregular Periods */ - - if (outputDatasetNode.referenceParent.parentNode.dataBuilding.loop.javascriptCode !== undefined) { - if (outputDatasetNode.referenceParent.parentNode.dataBuilding.loop.javascriptCode.code.indexOf('results.push') >= 0) { - resultsWithIrregularPeriods = true + function loop() { + try { + function pad(str, max) { + str = str.toString(); + return str.length < max ? pad(" " + str, max) : str; } + + /* For each loop we want to create a new log file. */ + if (logger !== undefined) { + logger.finalize() + } + logger = DEBUG_MODULE.newDebugLog(); + global.LOGGER_MAP.set(MODULE_NAME, logger) + logger.bot = bot; + logger.initialize(); + + bot.loopCounter++; + bot.loopStartTime = new Date().valueOf(); + + /* We tell the UI that we are running. */ + processHeartBeat() + + /* We define here all the modules that the rest of the infraestructure, including the bots themselves can consume. */ + const UTILITIES = require(global.ROOT_DIR + 'CloudUtilities'); + const STATUS_REPORT = require(global.ROOT_DIR + 'StatusReport'); + const STATUS_DEPENDENCIES = require(global.ROOT_DIR + 'StatusDependencies'); + const DATA_DEPENDENCIES = require(global.ROOT_DIR + 'DataDependencies'); + const DATA_SET = require(global.ROOT_DIR + 'DataSet'); + const PROCESS_EXECUTION_EVENTS = require(global.ROOT_DIR + 'ProcessExecutionEvents'); + const PROCESS_OUTPUT = require(global.ROOT_DIR + 'ProcessOutput'); + + /* We define the datetime for the process that we are running now. This will be the official processing time for both the infraestructure and the bot. */ + bot.processDatetime = new Date(); // This will be considered the process date and time, so as to have it consistenly all over the execution. + + /* High level log entry */ + console.log(new Date().toISOString() + " " + pad(bot.exchange, 20) + " " + pad(bot.market.baseAsset + '/' + bot.market.quotedAsset, 10) + " " + pad(bot.codeName, 30) + " " + pad(bot.process, 30) + + " Main Loop # " + pad(Number(bot.loopCounter), 8)) + + /* We will prepare first the infraestructure needed for the bot to run. There are 3 modules we need to sucessfullly initialize first. */ + let processExecutionEvents + let userBot; + let processFramework; + let statusDependencies; + let dataDependencies; + + let nextWaitTime; + + initializeProcessExecutionEvents(); + + function initializeProcessExecutionEvents() { + try { + processExecutionEvents = PROCESS_EXECUTION_EVENTS.newProcessExecutionEvents(bot, logger) + processExecutionEvents.initialize(processConfig, onInizialized); + + function onInizialized(err) { + try { + switch (err.result) { + case global.DEFAULT_OK_RESPONSE.result: { + logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Execution finished well."); + startProcessExecutionEvents() + return; + } + case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. + logger.write(MODULE_NAME, "[WARN] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Retry Later. Requesting Execution Retry."); + nextWaitTime = 'Retry'; + loopControl(nextWaitTime); + return; + } + case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Operation Failed. Aborting the process."); + global.unexpectedError = err.message + processStopped() + return + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Unhandled err.result received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + + function startProcessExecutionEvents() { + try { + processExecutionEvents.start(onStarted); + + function onStarted(err) { + try { + switch (err.result) { + case global.DEFAULT_OK_RESPONSE.result: { + logger.write(MODULE_NAME, "[INFO] run -> loop -> startProcessExecutionEvents -> onStarted -> Execution finished well."); + + if (global.STOP_TASK_GRACEFULLY === true) { + loopControl() + return + } + + initializeStatusDependencies(); + return; + } + case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. + logger.write(MODULE_NAME, "[WARN] run -> loop -> startProcessExecutionEvents -> onStarted -> Retry Later. Requesting Execution Retry."); + nextWaitTime = 'Retry'; + loopControl(nextWaitTime); + return; + } + case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> Operation Failed. Aborting the process."); + global.unexpectedError = err.message + processStopped() + return + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> Unhandled err.result received. -> err.result = " + err.result); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> Unhandled err.result received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + + function initializeStatusDependencies() { + try { + statusDependencies = STATUS_DEPENDENCIES.newStatusDependencies(bot, logger, STATUS_REPORT, UTILITIES, PROCESS_OUTPUT); + statusDependencies.initialize(onInizialized); + + function onInizialized(err) { + try { + switch (err.result) { + case global.DEFAULT_OK_RESPONSE.result: { + logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeStatusDependencies -> onInizialized -> Execution finished well."); + initializeDataDependencies(); + return; + } + case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. + logger.write(MODULE_NAME, "[WARN] run -> loop -> initializeStatusDependencies -> onInizialized -> Retry Later. Requesting Execution Retry."); + nextWaitTime = 'Retry'; + loopControl(nextWaitTime); + return; + } + case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> Operation Failed. Aborting the process."); + global.unexpectedError = err.message + processStopped() + return + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> Unhandled err.result received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + + function initializeDataDependencies() { + try { + dataDependencies = DATA_DEPENDENCIES.newDataDependencies(bot, logger, DATA_SET); + dataDependencies.initialize(onInizialized); + + function onInizialized(err) { + try { + switch (err.result) { + case global.DEFAULT_OK_RESPONSE.result: { + /* If the process is configured to run inside a framework, we continue there, otherwise we run the bot directly. */ + if (processConfig.framework === undefined) { + initializeUserBot(); + return; + } + + switch (processConfig.framework.name) { + case 'Multi-Period-Market': { + processFramework = MULTI_PERIOD_MARKET.newMultiPeriodMarket(bot, logger, UTILITIES, FILE_STORAGE); + intitializeProcessFramework(); + break; + } + case 'Multi-Period-Daily': { + processFramework = MULTI_PERIOD_DAILY.newMultiPeriodDaily(bot, logger, UTILITIES, FILE_STORAGE); + intitializeProcessFramework(); + break; + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> Process Framework not Supported."); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> Process Framework Name = " + processConfig.framework.name); + global.unexpectedError = err.message + processStopped() + return + } + } + return; + } + case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. + logger.write(MODULE_NAME, "[WARN] run -> loop -> initializeDataDependencies -> onInizialized -> Retry Later. Requesting Execution Retry."); + nextWaitTime = 'Retry'; + loopControl(nextWaitTime); + return; + } + case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. + processStopped() + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> Operation Failed. Aborting the process."); + global.unexpectedError = err.message + processStopped() + return + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> Unhandled err.result received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + + function initializeUserBot() { + try { + usertBot = USER_BOT_MODULE.newUserBot(bot, logger, COMMONS_MODULE, UTILITIES, FILE_STORAGE); + usertBot.initialize(statusDependencies, onInizialized); + + function onInizialized(err) { + try { + switch (err.result) { + case global.DEFAULT_OK_RESPONSE.result: { + logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeUserBot -> onInizialized -> Execution finished well."); + startUserBot(); + return; + } + case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. + logger.write(MODULE_NAME, "[WARN] run -> loop -> initializeUserBot -> onInizialized -> Retry Later. Requesting Execution Retry."); + nextWaitTime = 'Retry'; + loopControl(nextWaitTime); + return; + } + case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> onInizialized -> Operation Failed. Aborting the process."); + global.unexpectedError = err.message + processStopped() + return + } + case global.CUSTOM_OK_RESPONSE.result: { + + switch (err.message) { + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> onInizialized > Unhandled custom response received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> onInizialized -> Unhandled err.result received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> onInizialized -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + + function startUserBot() { + try { + usertBot.start(onFinished); + + function onFinished(err) { + try { + switch (err.result) { + case global.DEFAULT_OK_RESPONSE.result: { + logger.write(MODULE_NAME, "[INFO] run -> loop -> startUserBot -> onFinished -> Execution finished well."); + finishProcessExecutionEvents() + return; + } + case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. + logger.write(MODULE_NAME, "[WARN] run -> loop -> startUserBot -> onFinished -> Retry Later. Requesting Execution Retry."); + nextWaitTime = 'Retry'; + loopControl(nextWaitTime); + return; + } + case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> onFinished -> Operation Failed. Aborting the process."); + global.unexpectedError = err.message + processStopped() + return + } + case global.CUSTOM_OK_RESPONSE.result: { + + switch (err.message) { + case "Dependency does not exist.": { + logger.write(MODULE_NAME, "[WARN] run -> loop -> startUserBot -> onFinished -> Dependency does not exist. This Loop will go to sleep."); + nextWaitTime = 'Sleep'; + loopControl(nextWaitTime); + return; + } + case "Dependency not ready.": { + logger.write(MODULE_NAME, "[WARN] run -> loop -> startUserBot -> onFinished -> Dependency not ready. Will Retry Later."); + nextWaitTime = 'Retry'; + loopControl(nextWaitTime); + return; + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> onFinished -> Unhandled custom response received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> onFinished -> Unhandled err.result received. -> err.result = " + err.result); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> onFinished -> Unhandled err.result received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> onFinished -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + + function intitializeProcessFramework() { + try { + processFramework.initialize(processConfig, statusDependencies, dataDependencies, onInizialized); + + function onInizialized(err) { + try { + switch (err.result) { + case global.DEFAULT_OK_RESPONSE.result: { + logger.write(MODULE_NAME, "[INFO] run -> loop -> intitializeProcessFramework -> onInizialized -> Execution finished well."); + startProcessFramework(); + return; + } + case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. + logger.write(MODULE_NAME, "[WARN] run -> loop -> intitializeProcessFramework -> onInizialized -> Retry Later. Requesting Execution Retry."); + nextWaitTime = 'Retry'; + loopControl(nextWaitTime); + return; + } + case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. + logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized -> Operation Failed. Aborting the process."); + global.unexpectedError = err.message + processStopped() + return + } + case global.CUSTOM_OK_RESPONSE.result: { + + switch (err.message) { + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized > Unhandled custom response received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized -> Unhandled err.result received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + + function startProcessFramework() { + try { + processFramework.start(onFinished); + + function onFinished(err) { + try { + processFramework.finalize() + processFramework = undefined + dataDependencies.finalize() + dataDependencies = undefined + statusDependencies.finalize() + statusDependencies = undefined + + switch (err.result) { + case global.DEFAULT_OK_RESPONSE.result: { + logger.write(MODULE_NAME, "[INFO] run -> loop -> startProcessFramework -> onFinished -> Execution finished well."); + finishProcessExecutionEvents() + return; + } + case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. + logger.write(MODULE_NAME, "[WARN] run -> loop -> startProcessFramework -> onFinished -> Retry Later. Requesting Execution Retry."); + nextWaitTime = 'Retry'; + loopControl(nextWaitTime); + return; + } + case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> Operation Failed. Aborting the process."); + global.unexpectedError = err.message + processStopped() + return + } + case global.CUSTOM_OK_RESPONSE.result: { + + switch (err.message) { + case "Dependency does not exist.": { + logger.write(MODULE_NAME, "[WARN] run -> loop -> startProcessFramework -> onFinished -> Dependency does not exist. This Loop will go to sleep."); + nextWaitTime = 'Sleep'; + loopControl(nextWaitTime); + return; + } + case "Dependency not ready.": { + logger.write(MODULE_NAME, "[WARN] run -> loop -> startProcessFramework -> onFinished -> Dependency not ready. This Loop will go to sleep."); + nextWaitTime = 'Sleep'; + loopControl(nextWaitTime); + return; + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> Unhandled custom response received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> Unhandled err.result received. -> err.result = " + err.result); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> Unhandled err.result received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + + function finishProcessExecutionEvents() { + try { + processExecutionEvents.finish(onFinished); + + function onFinished(err) { + try { + processExecutionEvents.finalize() + processExecutionEvents = undefined + + switch (err.result) { + case global.DEFAULT_OK_RESPONSE.result: { + logger.write(MODULE_NAME, "[INFO] run -> loop -> finishProcessExecutionEvents -> onFinished -> Execution finished well."); + nextWaitTime = 'Normal'; + loopControl(nextWaitTime); + return; + } + case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. + logger.write(MODULE_NAME, "[WARN] run -> loop -> finishProcessExecutionEvents -> onFinished -> Retry Later. Requesting Execution Retry."); + nextWaitTime = 'Retry'; + loopControl(nextWaitTime); + return; + } + case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. + logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> Operation Failed. Aborting the process."); + global.unexpectedError = err.message + processStopped() + return + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> Unhandled err.result received. -> err.result = " + err.result); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> Unhandled err.result received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + + function loopControl(nextWaitTime) { + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> nextWaitTime = " + nextWaitTime); } + + /* We show we reached the end of the loop. */ + processHeartBeat() + + /* Here we check if we must stop the loop gracefully. */ + shallWeStop(onStop, onContinue); + + function onStop() { + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> onStop -> Stopping the Loop Gracefully. See you next time!"); } + processStopped() + return; + } + + function onContinue() { + /* Indicator bots are going to be executed after a configured period of time after the last execution ended. This is to avoid overlapping executions. */ + switch (nextWaitTime) { + case 'Normal': { + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (processConfig.normalWaitTime / 1000) + " seconds."); } + nextLoopTimeoutHandle = setTimeout(loop, processConfig.normalWaitTime); + processHeartBeat(undefined, undefined, "Waiting " + processConfig.normalWaitTime / 1000 + " seconds for next execution.") + if (global.WRITE_LOGS_TO_FILES === 'true') { + logger.persist(); + } + } + break; + case 'Retry': { + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (processConfig.retryWaitTime / 1000) + " seconds."); } + nextLoopTimeoutHandle = setTimeout(loop, processConfig.retryWaitTime); + processHeartBeat(undefined, undefined, "Trying to recover from some problem. Waiting " + processConfig.retryWaitTime / 1000 + " seconds for next execution.") + logger.persist(); + } + break; + case 'Sleep': { + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (processConfig.sleepWaitTime / 60000) + " minutes."); } + nextLoopTimeoutHandle = setTimeout(loop, processConfig.sleepWaitTime); + processHeartBeat(undefined, undefined, "Waiting " + processConfig.sleepWaitTime / 60000 + " minutes for next execution.") + logger.persist(); + } + break; + case 'Coma': { + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (processConfig.comaWaitTime / 3600000) + " hours."); } + nextLoopTimeoutHandle = setTimeout(loop, processConfig.comaWaitTime); + processHeartBeat(undefined, undefined, "Waiting " + processConfig.comaWaitTime / 3600000 + " hours for next execution.") + logger.persist(); + } + break; + } + } + } + + function shallWeStop(stopCallBack, continueCallBack) { + try { + /* IMPORTANT: This function is exactly the same on the 3 modules. */ + if (!global.STOP_TASK_GRACEFULLY) { + continueCallBack(); + } else { + stopCallBack(); + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> shallWeStop -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + parentLogger.write(MODULE_NAME, "[ERROR] run -> loop -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return } + } - /* Build the data */ - jsonData = commons.dataBuildingProcedure( - products, - mainDependency, - recordDefinition, - outputDatasetNode.referenceParent.parentNode.dataBuilding, - singularVariableName, - outputDatasetNode.referenceParent.parentNode.code.codeName, - timeFrame, - timeFrameLabel, - resultsWithIrregularPeriods, - interExecutionMemory, - processingDailyFiles, - currentDay - ) + function processHeartBeat(processingDate, percentage, status) { + let event = { + seconds: (new Date()).getSeconds(), + processingDate: processingDate, + percentage: percentage, + status: status + } + global.EVENT_SERVER_CLIENT.raiseEvent(bot.processKey, 'Heartbeat', event) + } - /* Add the calculated properties */ - if (outputDatasetNode.referenceParent.parentNode.calculations !== undefined) { - outputData = commons.calculationsProcedure(jsonData, recordDefinition, outputDatasetNode.referenceParent.parentNode.calculations, singularVariableName, timeFrame) + function processStopped() { + if (global.unexpectedError !== undefined) { + global.PROCESS_ERROR(bot.processKey, undefined, "An unexpected error caused the Process to stop.") } else { - outputData = jsonData + global.EVENT_SERVER_CLIENT.raiseEvent(bot.processKey, 'Stopped') } - products[outputDatasetNode.referenceParent.parentNode.code.pluralVariableName] = outputData - } - - /*At the fourth and last phase, we will save the new information generated into files corresponding to each output outputDatasetNode.*/ - let totalFilesWritten = 0 - for (let i = 0; i < outputDatasets.length; i++) { - let outputDatasetNode = outputDatasets[i] - let outputData = products[outputDatasetNode.referenceParent.parentNode.code.pluralVariableName] - let resultsWithIrregularPeriods // A product will have irregular periods when the User Code inserts new result records at will, in contrast with normal procedure where the platform insert one record per loop execution. - let contextSummary = {} - - /* Check Irregular Periods */ - if (outputDatasetNode.referenceParent.parentNode.dataBuilding.loop.javascriptCode.code.indexOf('results.push') >= 0) { - resultsWithIrregularPeriods = true - } - - /* Simplifying the access to basic info */ - - contextSummary.dataset = outputDatasetNode.referenceParent.code.codeName - contextSummary.product = outputDatasetNode.referenceParent.parentNode.code.codeName - contextSummary.bot = outputDatasetNode.referenceParent.parentNode.parentNode.code.codeName - contextSummary.dataMine = outputDatasetNode.referenceParent.parentNode.parentNode.parentNode.code.codeName - - /* This stuff is still hardcoded and unresolved. */ - contextSummary.botVersion = { - "major": 1, - "minor": 0 - } - contextSummary.dataSetVersion = "dataSet.V1" - - let fileContent = commons.generateFileContent(outputData, outputDatasetNode.referenceParent.parentNode.record, resultsWithIrregularPeriods, processingDailyFiles, currentDay, callBackFunction) - commons.writeFile(contextSummary, fileContent, anotherFileWritten, processingDailyFiles, timeFrameLabel, currentDay, callBackFunction) - } - - - function anotherFileWritten() { - totalFilesWritten++ - if (totalFilesWritten === outputDatasets.length) { - callBackFunction(global.DEFAULT_OK_RESPONSE); + logger.persist(); + clearInterval(fixedTimeLoopIntervalHandle); + clearTimeout(nextLoopTimeoutHandle); + if (global.unexpectedError !== undefined) { + callBackFunction(global.DEFAULT_FAIL_RESPONSE) + } else { + callBackFunction(global.DEFAULT_OK_RESPONSE) } } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> err = " + err.stack); + + } catch (err) { + parentLogger.write(MODULE_NAME, "[ERROR] run -> err = " + err.stack); + clearInterval(fixedTimeLoopIntervalHandle); + clearTimeout(nextLoopTimeoutHandle); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } diff --git a/TaskServer/IndicatorBotProcessMainLoop.js b/TaskServer/IndicatorBotProcessMainLoop.js deleted file mode 100644 index 90892dd72..000000000 --- a/TaskServer/IndicatorBotProcessMainLoop.js +++ /dev/null @@ -1,1121 +0,0 @@ -exports.newIndicatorBotProcessMainLoop = function newIndicatorBotProcessMainLoop(bot, parentLogger) { - - const ROOT_DIR = './'; - - const MODULE_NAME = "Indicator Process Main Loop"; - const FULL_LOG = true; - - let USER_BOT_MODULE; - let COMMONS_MODULE; - - const MULTI_PERIOD_MARKET = require(ROOT_DIR + 'MultiPeriodMarket'); - const MULTI_PERIOD_DAILY = require(ROOT_DIR + 'MultiPeriodDaily'); - const FILE_STORAGE = require('./FileStorage.js'); - let fileStorage = FILE_STORAGE.newFileStorage(parentLogger); - - const DEBUG_MODULE = require(ROOT_DIR + 'DebugLog'); - let logger; // We need this here in order for the loopHealth function to work and be able to rescue the loop when it gets in trouble. - - let nextLoopTimeoutHandle; - let checkLoopHealthHandle; - - let thisObject = { - initialize: initialize, - run: run - }; - - let processConfig; - - return thisObject; - - function initialize(pProcessConfig, callBackFunction) { - - try { - if (FULL_LOG === true) { parentLogger.write(MODULE_NAME, "[INFO] initialize -> Entering function."); } - - processConfig = pProcessConfig; - - if (bot.definedByUI === true) { - /* The code of the bot is defined at the UI. No need to load a file with the code. */ - callBackFunction(global.DEFAULT_OK_RESPONSE); - return - } - - /* This bot is not ready for taking its code from the UI, then we need to load it from its repo. */ - - let filePath = bot.dataMine + "/" + "bots" + "/" + bot.repo + "/" + pProcessConfig.codeName - filePath += "/User.Bot.js" - - fileStorage.getTextFile(filePath, onBotDownloaded); - - function onBotDownloaded(err, text) { - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - parentLogger.write(MODULE_NAME, "[ERROR] initialize -> onInizialized -> onBotDownloaded -> err = " + err.message); - parentLogger.write(MODULE_NAME, "[ERROR] initialize -> onInizialized -> onBotDownloaded -> filePath = " + filePath); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - - USER_BOT_MODULE = {} - USER_BOT_MODULE.newUserBot = eval(text); // TODO This needs to be changed function - - filePath = bot.dataMine + "/" + "bots" + "/" + bot.repo; - filePath += "/Commons.js" - - fileStorage.getTextFile(filePath, onCommonsDownloaded); - - function onCommonsDownloaded(err, text) { - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - parentLogger.write(MODULE_NAME, "[WARN] initialize -> onBotDownloaded -> onCommonsDownloaded -> Commons not found: " + err.code || err.message); - callBackFunction(global.DEFAULT_OK_RESPONSE); - return; - } - COMMONS_MODULE = {} - COMMONS_MODULE.newCommons = eval(text); // TODO This needs to be changed function - - callBackFunction(global.DEFAULT_OK_RESPONSE); - } - } - } catch (err) { - parentLogger.write(MODULE_NAME, "[ERROR] initialize -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function run(callBackFunction) { - - try { - - if (FULL_LOG === true) { parentLogger.write(MODULE_NAME, "[INFO] run -> Entering function."); } - - bot.enableCheckLoopHealth = true; - - let fixedTimeLoopIntervalHandle; - - if (bot.runAtFixedInterval === true) { - - fixedTimeLoopIntervalHandle = setInterval(loop, bot.fixedInterval); - - } else { - - loop(); - - } - - function loop() { - - try { - - function pad(str, max) { - str = str.toString(); - return str.length < max ? pad(" " + str, max) : str; - } - - /* For each loop we want to create a new log file. */ - - if (logger !== undefined) { - logger.finalize() - } - logger = DEBUG_MODULE.newDebugLog(); - global.LOGGER_MAP.set(MODULE_NAME, logger) - logger.bot = bot; - logger.initialize(); - - bot.loopCounter++; - bot.loopStartTime = new Date().valueOf(); - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> Entering function."); } - - /* Loop Heartbeat sent to the UI */ - bot.processHeartBeat = processHeartBeat - processHeartBeat() - - /* We define here all the modules that the rest of the infraestructure, including the bots themselves can consume. */ - - const UTILITIES = require(ROOT_DIR + 'CloudUtilities'); - const STATUS_REPORT = require(ROOT_DIR + 'StatusReport'); - const STATUS_DEPENDENCIES = require(ROOT_DIR + 'StatusDependencies'); - const DATA_DEPENDENCIES = require(ROOT_DIR + 'DataDependencies'); - const DATA_SET = require(ROOT_DIR + 'DataSet'); - const PROCESS_EXECUTION_EVENTS = require(ROOT_DIR + 'ProcessExecutionEvents'); - const PROCESS_OUTPUT = require(ROOT_DIR + 'ProcessOutput'); - - /* We define the datetime for the process that we are running now. This will be the official processing time for both the infraestructure and the bot. */ - - bot.processDatetime = new Date(); // This will be considered the process date and time, so as to have it consistenly all over the execution. - - /* High level log entry */ - - console.log(new Date().toISOString() + " " + pad(bot.exchange, 20) + " " + pad(bot.market.baseAsset + '/' + bot.market.quotedAsset, 10) + " " + pad(bot.codeName, 30) + " " + pad(bot.process, 30) - + " Main Loop # " + pad(Number(bot.loopCounter), 8)) - - /* We will prepare first the infraestructure needed for the bot to run. There are 3 modules we need to sucessfullly initialize first. */ - - let processExecutionEvents - let userBot; - let processFramework; - let statusDependencies; - let dataDependencies; - - let nextWaitTime; - - initializeProcessExecutionEvents(); - - function initializeProcessExecutionEvents() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeProcessExecutionEvents -> Entering function."); } - - processExecutionEvents = PROCESS_EXECUTION_EVENTS.newProcessExecutionEvents(bot, logger) - - processExecutionEvents.initialize(onInizialized); - - function onInizialized(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Entering function."); } - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Execution finished well."); - startProcessExecutionEvents() - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[WARN] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Retry Later. Requesting Execution Retry."); - nextWaitTime = 'Retry'; - loopControl(nextWaitTime); - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - processStopped() - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - function startProcessExecutionEvents() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> startProcessExecutionEvents -> Entering function."); } - - processExecutionEvents.start(onStarted); - - function onStarted(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> startProcessExecutionEvents -> onStarted -> Entering function."); } - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - logger.write(MODULE_NAME, "[INFO] run -> loop -> startProcessExecutionEvents -> onStarted -> Execution finished well."); - - if (global.STOP_TASK_GRACEFULLY === true) { - loopControl() - return - } - - initializeStatusDependencies(); - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[WARN] run -> loop -> startProcessExecutionEvents -> onStarted -> Retry Later. Requesting Execution Retry."); - nextWaitTime = 'Retry'; - loopControl(nextWaitTime); - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - processStopped() - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> Unhandled err.result received. -> err.result = " + err.result); - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - function initializeStatusDependencies() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeStatusDependencies -> Entering function."); } - - statusDependencies = STATUS_DEPENDENCIES.newStatusDependencies(bot, logger, STATUS_REPORT, UTILITIES, PROCESS_OUTPUT); - - statusDependencies.initialize(onInizialized); - - function onInizialized(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeStatusDependencies -> onInizialized -> Entering function."); } - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeStatusDependencies -> onInizialized -> Execution finished well."); - initializeDataDependencies(); - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[WARN] run -> loop -> initializeStatusDependencies -> onInizialized -> Retry Later. Requesting Execution Retry."); - nextWaitTime = 'Retry'; - loopControl(nextWaitTime); - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - processStopped() - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - function initializeDataDependencies() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeDataDependencies -> Entering function."); } - - dataDependencies = DATA_DEPENDENCIES.newDataDependencies(bot, logger, DATA_SET); - - dataDependencies.initialize(onInizialized); - - function onInizialized(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeDataDependencies -> onInizialized -> Entering function."); } - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeDataDependencies -> onInizialized -> Execution finished well."); } - - /* If the process is configured to run inside a framework, we continue there, otherwise we run the bot directly. */ - if (processConfig.framework === undefined) { - initializeUserBot(); - return; - } - - switch (processConfig.framework.name) { - case 'Multi-Period-Market': { - processFramework = MULTI_PERIOD_MARKET.newMultiPeriodMarket(bot, logger, UTILITIES, FILE_STORAGE); - intitializeProcessFramework(); - break; - } - case 'Multi-Period-Daily': { - processFramework = MULTI_PERIOD_DAILY.newMultiPeriodDaily(bot, logger, UTILITIES, FILE_STORAGE); - intitializeProcessFramework(); - break; - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> Process Framework not Supported."); - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> Process Framework Name = " + processConfig.framework.name); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - } - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[WARN] run -> loop -> initializeDataDependencies -> onInizialized -> Retry Later. Requesting Execution Retry."); - nextWaitTime = 'Retry'; - loopControl(nextWaitTime); - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - processStopped() - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - function initializeUserBot() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeUserBot -> Entering function."); } - - usertBot = USER_BOT_MODULE.newUserBot(bot, logger, COMMONS_MODULE, UTILITIES, FILE_STORAGE); - - usertBot.initialize(statusDependencies, onInizialized); - - function onInizialized(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeUserBot -> onInizialized -> Entering function."); } - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeUserBot -> onInizialized -> Execution finished well."); - startUserBot(); - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[WARN] run -> loop -> initializeUserBot -> onInizialized -> Retry Later. Requesting Execution Retry."); - nextWaitTime = 'Retry'; - loopControl(nextWaitTime); - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - processStopped() - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> onInizialized -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - case global.CUSTOM_OK_RESPONSE.result: { - - switch (err.message) { - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> onInizialized > Unhandled custom response received. -> err = " + err.message); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - } - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> onInizialized -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> onInizialized -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - function startUserBot() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> startUserBot -> Entering function."); } - - usertBot.start(onFinished); - - function onFinished(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> startUserBot -> onFinished -> Entering function."); } - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - logger.write(MODULE_NAME, "[INFO] run -> loop -> startUserBot -> onFinished -> Execution finished well."); - finishProcessExecutionEvents() - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[WARN] run -> loop -> startUserBot -> onFinished -> Retry Later. Requesting Execution Retry."); - nextWaitTime = 'Retry'; - loopControl(nextWaitTime); - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - processStopped() - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> onFinished -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - case global.CUSTOM_OK_RESPONSE.result: { - - switch (err.message) { - case "Dependency does not exist.": { - logger.write(MODULE_NAME, "[WARN] run -> loop -> startUserBot -> onFinished -> Dependency does not exist. This Loop will go to sleep."); - nextWaitTime = 'Sleep'; - loopControl(nextWaitTime); - return; - } - case "Dependency not ready.": { - logger.write(MODULE_NAME, "[WARN] run -> loop -> startUserBot -> onFinished -> Dependency not ready. Will Retry Later."); - nextWaitTime = 'Retry'; - loopControl(nextWaitTime); - return; - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> onFinished -> Unhandled custom response received. -> err = " + err.message); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - } - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> onFinished -> Unhandled err.result received. -> err.result = " + err.result); - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> onFinished -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> onFinished -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - function intitializeProcessFramework() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> intitializeProcessFramework -> Entering function."); } - - processFramework.initialize(processConfig, statusDependencies, dataDependencies, onInizialized); - - function onInizialized(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> intitializeProcessFramework -> onInizialized -> Entering function."); } - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - logger.write(MODULE_NAME, "[INFO] run -> loop -> intitializeProcessFramework -> onInizialized -> Execution finished well."); - startProcessFramework(); - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[WARN] run -> loop -> intitializeProcessFramework -> onInizialized -> Retry Later. Requesting Execution Retry."); - nextWaitTime = 'Retry'; - loopControl(nextWaitTime); - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - processStopped() - logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - case global.CUSTOM_OK_RESPONSE.result: { - - switch (err.message) { - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized > Unhandled custom response received. -> err = " + err.message); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - } - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); - logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - function startProcessFramework() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> startProcessFramework -> Entering function."); } - - processFramework.start(onFinished); - - function onFinished(err) { - - try { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> startProcessFramework -> onFinished -> Entering function."); } - processFramework.finalize() - processFramework = undefined - dataDependencies.finalize() - dataDependencies = undefined - statusDependencies.finalize() - statusDependencies = undefined - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - logger.write(MODULE_NAME, "[INFO] run -> loop -> startProcessFramework -> onFinished -> Execution finished well."); - finishProcessExecutionEvents() - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[WARN] run -> loop -> startProcessFramework -> onFinished -> Retry Later. Requesting Execution Retry."); - nextWaitTime = 'Retry'; - loopControl(nextWaitTime); - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - processStopped() - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - case global.CUSTOM_OK_RESPONSE.result: { - - switch (err.message) { - case "Dependency does not exist.": { - logger.write(MODULE_NAME, "[WARN] run -> loop -> startProcessFramework -> onFinished -> Dependency does not exist. This Loop will go to sleep."); - nextWaitTime = 'Sleep'; - loopControl(nextWaitTime); - return; - } - case "Dependency not ready.": { - logger.write(MODULE_NAME, "[WARN] run -> loop -> startProcessFramework -> onFinished -> Dependency not ready. This Loop will go to sleep."); - nextWaitTime = 'Sleep'; - loopControl(nextWaitTime); - return; - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> Unhandled custom response received. -> err = " + err.message); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - } - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> Unhandled err.result received. -> err.result = " + err.result); - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - function finishProcessExecutionEvents() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> finishProcessExecutionEvents -> Entering function."); } - - processExecutionEvents.finish(onFinished); - - function onFinished(err) { - try { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> finishProcessExecutionEvents -> onFinished -> Entering function."); } - - processExecutionEvents.finalize() - processExecutionEvents = undefined - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - logger.write(MODULE_NAME, "[INFO] run -> loop -> finishProcessExecutionEvents -> onFinished -> Execution finished well."); - nextWaitTime = 'Normal'; - loopControl(nextWaitTime); - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[WARN] run -> loop -> finishProcessExecutionEvents -> onFinished -> Retry Later. Requesting Execution Retry."); - nextWaitTime = 'Retry'; - loopControl(nextWaitTime); - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - processStopped() - logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> Unhandled err.result received. -> err.result = " + err.result); - logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - function loopControl(nextWaitTime) { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Entering function."); } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> nextWaitTime = " + nextWaitTime); } - - /* We show we reached the end of the loop. */ - - processHeartBeat() - - /* Here we check if we must stop the loop gracefully. */ - - shallWeStop(onStop, onContinue); - - function onStop() { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> onStop -> Entering function."); } - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> onStop -> Stopping the Loop Gracefully. See you next time!"); } - - if(global.WRITE_LOGS_TO_FILES === 'true'){ - logger.persist(); - } - - processStopped() - callBackFunction(global.DEFAULT_OK_RESPONSE); - return; - - } - - function onContinue() { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> onContinue -> Entering function."); } - - /* Indicator bots are going to be executed after a configured period of time after the last execution ended. This is to avoid overlapping executions. */ - - switch (nextWaitTime) { - case 'Normal': { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (processConfig.normalWaitTime / 1000) + " seconds."); } - if (processConfig.deadWaitTime > 0) { - checkLoopHealthHandle = setTimeout(checkLoopHealth, processConfig.deadWaitTime, bot.loopCounter); - } - nextLoopTimeoutHandle = setTimeout(loop, processConfig.normalWaitTime); - processHeartBeat(undefined, undefined, "Waiting " + processConfig.normalWaitTime / 1000 + " seconds for next execution.") - if(global.WRITE_LOGS_TO_FILES === 'true'){ - logger.persist(); - } - } - break; - case 'Retry': { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (processConfig.retryWaitTime / 1000) + " seconds."); } - if (processConfig.deadWaitTime > 0) { - checkLoopHealthHandle = setTimeout(checkLoopHealth, processConfig.deadWaitTime, bot.loopCounter); - } - nextLoopTimeoutHandle = setTimeout(loop, processConfig.retryWaitTime); - processHeartBeat(undefined, undefined, "Trying to recover from some problem. Waiting " + processConfig.retryWaitTime / 1000 + " seconds for next execution.") - logger.persist(); - } - break; - case 'Sleep': { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (processConfig.sleepWaitTime / 60000) + " minutes."); } - nextLoopTimeoutHandle = setTimeout(loop, processConfig.sleepWaitTime); - processHeartBeat(undefined, undefined, "Waiting " + processConfig.sleepWaitTime / 60000 + " minutes for next execution.") - logger.persist(); - } - break; - case 'Coma': { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (processConfig.comaWaitTime / 3600000) + " hours."); } - nextLoopTimeoutHandle = setTimeout(loop, processConfig.comaWaitTime); - processHeartBeat(undefined, undefined, "Waiting " + processConfig.comaWaitTime / 3600000 + " hours for next execution.") - logger.persist(); - } - break; - } - } - } - - function checkLoopHealth(pLastLoop) { - - if (bot.enableCheckLoopHealth === false || global.STOP_TASK_GRACEFULLY === true) { - - logger.write(MODULE_NAME, "[WARN] run -> loop -> checkLoopHealth -> bot.enableCheckLoopHealth = " + bot.enableCheckLoopHealth); - - return; - } // This gets disabled anytime the Main Loop is shut down by any condition. - - if (bot.loopCounter <= pLastLoop + 1) { // This means that the next loop started but also stopped executing abruptally. - - let now = new Date().valueOf(); - - if (now - bot.loopStartTime > processConfig.deadWaitTime) { - - logger.write(MODULE_NAME, "[ERROR] run -> loop -> checkLoopHealth -> Dead loop found -> pLastLoop = " + pLastLoop); - console.log((new Date().toISOString() + " [ERROR] run -> loop -> checkLoopHealth -> " + pad(bot.codeName,20) + " " + pad(bot.process,30) + " Loop # " + pad(Number(bot.loopCounter),5) + " found dead. Resurrecting it now.")); - - logger.persist(); // We persist the logs of the failed execution. - clearTimeout(nextLoopTimeoutHandle); // We cancel the timeout in case the original loop was still running and schedulled to reexecute. - loop(); // We restart the loop so that the processing can continue. - - } else { - - console.log((new Date().toISOString() + " [WARN] run -> loop -> checkLoopHealth -> " + pad(bot.codeName,20) + " " + pad(bot.process,30) + " Loop # " + pad(Number(bot.loopCounter),5) + " found delayed but still alive. No action taken.")); - - } - } - } - - function shallWeStop(stopCallBack, continueCallBack) { - - try { - - /* IMPORTANT: This function is exactly the same on the 3 modules. */ - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> shallWeStop -> Entering function. "); } - - if (!global.STOP_TASK_GRACEFULLY) { - continueCallBack(); - } else { - stopCallBack(); - } - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> shallWeStop -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - } catch (err) { - parentLogger.write(MODULE_NAME, "[ERROR] run -> loop -> err = "+ err.stack); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - function processHeartBeat(processingDate, percentage, status) { - let event = { - seconds: (new Date()).getSeconds(), - processingDate: processingDate, - percentage: percentage, - status: status - } - global.EVENT_SERVER_CLIENT.raiseEvent(bot.processKey, 'Heartbeat', event) - } - - function processStopped() { - global.EVENT_SERVER_CLIENT.raiseEvent(bot.processKey, 'Stopped') - } - - } catch (err) { - parentLogger.write(MODULE_NAME, "[ERROR] run -> err = "+ err.stack); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } -}; diff --git a/TaskServer/IndicatorOutput.js b/TaskServer/IndicatorOutput.js new file mode 100644 index 000000000..d7f258b6b --- /dev/null +++ b/TaskServer/IndicatorOutput.js @@ -0,0 +1,157 @@ +exports.newIndicatorOutput = function newIndicatorOutput(bot, logger, UTILITIES, FILE_STORAGE) { + const FULL_LOG = true; + const MODULE_NAME = "Indicator Bot"; + + let thisObject = { + initialize: initialize, + finalize: finalize, + start: start + }; + + let utilities = UTILITIES.newCloudUtilities(logger); + let fileStorage = FILE_STORAGE.newFileStorage(logger); + + const COMMONS = require('./Commons.js'); + let commons = COMMONS.newCommons(bot, logger, UTILITIES, FILE_STORAGE); + + return thisObject; + + function finalize() { + thisObject = undefined + utilities = undefined + fileStorage = undefined + commons = undefined + } + + function initialize(callBackFunction) { + try { + logger.fileName = MODULE_NAME; + logger.initialize(); + + callBackFunction(global.DEFAULT_OK_RESPONSE); + + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] initialize -> err = " + err.stack); + callBackFunction(global.DEFAULT_FAIL_RESPONSE); + } + } + + function start(dataFiles, timeFrame, timeFrameLabel, currentDay, interExecutionMemory, callBackFunction) { + + try { + + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> Entering function."); } + + let products = {} + let mainDependency = {} + let processingDailyFiles + + if (currentDay !== undefined) { + processingDailyFiles = true + } else { + processingDailyFiles = false + } + + /* The first phase here is about checking that we have everything we need at the definition level. */ + let dataDependencies = global.NODE_BRANCH_TO_ARRAY(bot.processNode.referenceParent.processDependencies, 'Data Dependency') + + if (commons.validateDataDependencies(dataDependencies, callBackFunction) !== true) { return } + + let outputDatasets = global.NODE_BRANCH_TO_ARRAY (bot.processNode.referenceParent.processOutput, 'Output Dataset') + if (commons.validateOutputDatasets(outputDatasets, callBackFunction) !== true) { return } + + /* The second phase is about transforming the inputs into a format that can be used to apply the user defined code. */ + commons.inflateDatafiles(dataFiles, dataDependencies, products, mainDependency, timeFrame) + + /* During the third phase, we need to generate the data of the different products this process produces an output */ + for (let i = 0; i < outputDatasets.length; i++) { + + let outputDatasetNode = outputDatasets[i] + let jsonData // Just build data as Json objects + let outputData // Data built as a result of applying user defined code and formulas at the Data Building Procedure + let singularVariableName // Name of the variable for this product + let recordDefinition // Record as defined by the user at the UI + let fileContent // Here we store the contents of the new data built just before writing it to a file. + let resultsWithIrregularPeriods // A product will have irregular periods when the User Code inserts new result records at will, in contrast with normal procedure where the platform insert one record per loop execution. + + /* + For each outputDatasetNode in our process output, we will build the information based on our input products. + */ + + recordDefinition = outputDatasetNode.referenceParent.parentNode.record + singularVariableName = outputDatasetNode.referenceParent.parentNode.config.singularVariableName + + /* Check Irregular Periods */ + + if (outputDatasetNode.referenceParent.parentNode.dataBuilding.loop.javascriptCode !== undefined) { + if (outputDatasetNode.referenceParent.parentNode.dataBuilding.loop.javascriptCode.code.indexOf('results.push') >= 0) { + resultsWithIrregularPeriods = true + } + } + + /* Build the data */ + jsonData = commons.dataBuildingProcedure( + products, + mainDependency, + recordDefinition, + outputDatasetNode.referenceParent.parentNode.dataBuilding, + singularVariableName, + outputDatasetNode.referenceParent.parentNode.config.codeName, + timeFrame, + timeFrameLabel, + resultsWithIrregularPeriods, + interExecutionMemory, + processingDailyFiles, + currentDay + ) + + /* Add the calculated properties */ + if (outputDatasetNode.referenceParent.parentNode.calculations !== undefined) { + outputData = commons.calculationsProcedure(jsonData, recordDefinition, outputDatasetNode.referenceParent.parentNode.calculations, singularVariableName, timeFrame) + } else { + outputData = jsonData + } + products[outputDatasetNode.referenceParent.parentNode.config.pluralVariableName] = outputData + } + + /*At the fourth and last phase, we will save the new information generated into files corresponding to each output outputDatasetNode.*/ + let totalFilesWritten = 0 + for (let i = 0; i < outputDatasets.length; i++) { + let outputDatasetNode = outputDatasets[i] + let outputData = products[outputDatasetNode.referenceParent.parentNode.config.pluralVariableName] + let resultsWithIrregularPeriods // A product will have irregular periods when the User Code inserts new result records at will, in contrast with normal procedure where the platform insert one record per loop execution. + let contextSummary = {} + + /* Check Irregular Periods */ + if (outputDatasetNode.referenceParent.parentNode.dataBuilding.loop.javascriptCode.code.indexOf('results.push') >= 0) { + resultsWithIrregularPeriods = true + } + + /* Simplifying the access to basic info */ + + contextSummary.dataset = outputDatasetNode.referenceParent.config.codeName + contextSummary.product = outputDatasetNode.referenceParent.parentNode.config.codeName + + let botNode = global.FIND_NODE_IN_NODE_MESH(outputDatasetNode, 'Indicator Bot') + contextSummary.bot = botNode.config.codeName + let dataMineNode = global.FIND_NODE_IN_NODE_MESH(outputDatasetNode, 'Data Mine') + contextSummary.dataMine = dataMineNode.config.codeName + + let fileContent = commons.generateFileContent(outputData, outputDatasetNode.referenceParent.parentNode.record, resultsWithIrregularPeriods, processingDailyFiles, currentDay, callBackFunction) + commons.writeFile(contextSummary, fileContent, anotherFileWritten, processingDailyFiles, timeFrameLabel, currentDay, callBackFunction) + } + + + function anotherFileWritten() { + totalFilesWritten++ + if (totalFilesWritten === outputDatasets.length) { + callBackFunction(global.DEFAULT_OK_RESPONSE); + } + } + } + catch (err) { + logger.write(MODULE_NAME, "[ERROR] start -> err = " + err.stack); + callBackFunction(global.DEFAULT_FAIL_RESPONSE); + } + } +}; diff --git a/TaskServer/LowFrequencyTrading/Announcements.js b/TaskServer/LowFrequencyTrading/Announcements.js new file mode 100644 index 000000000..2c63c88d1 --- /dev/null +++ b/TaskServer/LowFrequencyTrading/Announcements.js @@ -0,0 +1,57 @@ +exports.newAnnouncements = function newAnnouncements(bot, logger) { + + const MODULE_NAME = 'Announcements' + + let thisObject = { + makeAnnoucements: makeAnnoucements, + initialize: initialize, + finalize: finalize + } + + let tradingSystem + let tradingEngine + + return thisObject + + function initialize() { + tradingSystem = bot.simulationState.tradingSystem + tradingEngine = bot.simulationState.tradingEngine + } + + function finalize() { + tradingSystem = undefined + tradingEngine = undefined + bot.SESSION.messagesSent = undefined + } + + function makeAnnoucements(node) { + if (node.announcements !== undefined) { + for (let i = 0; i < node.announcements.length; i++) { + let announcement = node.announcements[i] + let canAnnounce = true + if (announcement.announcementCondition !== undefined) { + let conditionValue + try { + conditionValue = eval(announcement.announcementCondition.code) + } catch (err) { + tradingSystem.errors.push([announcement.announcementCondition.id, err.message]) + } + if (conditionValue !== true) { canAnnounce = false } + } + if (canAnnounce === true) { + let text = announcement.config.text + if (announcement.formula !== undefined) { + text = tradingSystem.formulas.get(announcement.formula.id) + } + + if (bot.SESSION.socialBots !== undefined) { + bot.SESSION.socialBots.announce(text) + tradingSystem.announcements.push([announcement.id, text]) + } else { + tradingSystem.errors.push([announcement.id, 'Could not announce because session does not have Social Bots.']) + } + } + } + } + } +} \ No newline at end of file diff --git a/TaskServer/LowFrequencyTrading/ExchangeAPI.js b/TaskServer/LowFrequencyTrading/ExchangeAPI.js new file mode 100644 index 000000000..a6d314c43 --- /dev/null +++ b/TaskServer/LowFrequencyTrading/ExchangeAPI.js @@ -0,0 +1,169 @@ +exports.newExchangeAPI = function newExchangeAPI(bot, logger) { + + let MODULE_NAME = "Exchange API"; + + let thisObject = { + getOrder: getOrder, + createOrder: createOrder, + cancelOrder: cancelOrder, + initialize: initialize, + finalize: finalize + }; + + let tradingSystem + + let exchangeId + let options = {} + let exchange + + const ccxt = require('ccxt') + + return thisObject; + + function initialize() { + tradingSystem = bot.simulationState.tradingSystem + + exchangeId = bot.exchange.toLowerCase() + + let key = bot.KEY + let secret = bot.SECRET + + const exchangeClass = ccxt[exchangeId] + const exchangeConstructorParams = { + 'apiKey': key, + 'secret': secret, + 'timeout': 30000, + 'enableRateLimit': true, + verbose: false, + 'adjustForTimeDifference': true, + options: options + } + exchange = new exchangeClass(exchangeConstructorParams) + } + + function finalize() { + tradingSystem = undefined + exchangeId = undefined + options = undefined + exchange = undefined + } + + async function getOrder(tradingSystemOrder, tradingEngineOrder) { + + let orderId = tradingEngineOrder.exchangeId.value + const symbol = bot.market.baseAsset + '/' + bot.market.quotedAsset + + /* Basic Logging */ + logInfo("getOrder -> orderId = " + orderId) + logInfo("getOrder -> symbol = " + symbol) + + /* Basic Validations */ + if (exchange.has['fetchOrder'] === false) { + logError("getOrder -> Exchange does not support fetchOrder command."); + return + } + + try { + let order = await exchange.fetchOrder(orderId, symbol) + + logInfo("getOrder -> Response from the Exchange: " + JSON.stringify(order)); + return order + } catch (err) { + tradingSystem.errors.push([tradingSystemOrder.id, "getOrder -> Error = " + err.message]) + logError("getOrder -> Error = " + err.message); + } + } + + async function createOrder(tradingSystemOrder, tradingEngineOrder) { + + let price = tradingEngineOrder.rate.value // CCXT: how much quote currency you are willing to pay for a trade lot of base currency (for limit orders only) + let type // CCXT: a string literal type of order, ccxt currently unifies market and limit orders only + let side // CCXT: a string literal for the direction of your order, buy or sell + let symbol = bot.market.baseAsset + '/' + bot.market.quotedAsset // CCXT: a string literal symbol of the market you wish to trade on, like BTC/USD, ZEC/ETH, DOGE/DASH, etc + let amount = tradingEngineOrder.orderBaseAsset.size.value // CCXT: how much of currency you want to trade, in Base Asset. + + switch (tradingSystemOrder.type) { + case 'Market Buy Order': { + type = 'market' + side = 'buy' + break + } + case 'Market Sell Order': { + type = 'market' + side = 'sell' + break + } + case 'Limit Buy Order': { + type = 'limit' + side = 'buy' + break + } + case 'Limit Sell Order': { + type = 'limit' + side = 'sell' + break + } + } + + /* Basic Logging */ + logInfo("createOrder -> symbol = " + symbol); + logInfo("createOrder -> side = " + side); + logInfo("createOrder -> type = " + type); + logInfo("createOrder -> amount = " + amount); + logInfo("createOrder -> price = " + price); + + /* Basic Validations */ + if (side !== "buy" && side !== "sell") { + logError("createOrder -> side must be either 'buy' or 'sell'."); + return + } + if (exchange.has['createOrder'] === false) { + logError("createOrder -> Exchange does not support createOrder command."); + return + } + + try { + let order = await (exchange.createOrder(symbol, type, side, amount, price)) + + logInfo("createOrder -> Response from the Exchange: " + JSON.stringify(order)); + return order.id + } catch (err) { + tradingSystem.errors.push([tradingSystemOrder.id, "createOrder -> Error = " + err.message]) + logError("createOrder -> Error = " + err.message); + } + } + + async function cancelOrder(tradingSystemOrder, tradingEngineOrder) { + + let orderId = tradingEngineOrder.exchangeId.value + + /* Basic Logging */ + logInfo("cancelOrder -> Entering function. orderId = " + orderId); + + const symbol = bot.market.baseAsset + '/' + bot.market.quotedAsset + + /* Basic Validations */ + if (exchange.has['fetchOrder'] === false) { + logError("cancelOrder -> Exchange does not support fetchOrder command."); + return + } + + try { + let order = await exchange.cancelOrder(orderId, symbol) + + logInfo("cancelOrder -> Response from the Exchange: " + JSON.stringify(order)); + return true + } catch (err) { + tradingSystem.errors.push([tradingSystemOrder.id, "cancelOrder -> Error = " + err.message]) + logError("cancelOrder -> Error = " + err.message); + } + } + + function logInfo(message) { + logger.write(MODULE_NAME, '[INFO] ' + message) + } + + function logError(message) { + logger.write(MODULE_NAME, '[ERROR] ' + message) + } +}; diff --git a/TaskServer/LowFrequencyTrading/Snapshots.js b/TaskServer/LowFrequencyTrading/Snapshots.js new file mode 100644 index 000000000..6f1b02c5a --- /dev/null +++ b/TaskServer/LowFrequencyTrading/Snapshots.js @@ -0,0 +1,342 @@ +exports.newSnapshots = function newSnapshots(bot, logger) { + /* + This module encapsulates the snapshots functionality. + */ + const MODULE_NAME = 'Snapshots' + + let thisObject = { + updateChart: updateChart, + strategyEntry: strategyEntry, + strategyExit: strategyExit, + positionEntry: positionEntry, + positionExit: positionExit, + addCodeToSnapshot: addCodeToSnapshot, + initialize: initialize, + finalize: finalize + } + + let tradingEngine + let tradingSystem + let sessionParameters + + const SNAPSHOTS_FOLDER_NAME = 'Snapshots' + + /* Snapshots of Strategies and Positions */ + let snapshots = { + headers: [], + strategies: [], + positions: [] + } + + let positionKeys = new Map() // This is to prevent adding the same indicator / variable to the output collection. + let strategyKeys = new Map() + let createHeaders = true // This is going to be true only once + let createCloseHeaders = true // This is going to be true only once + let closeValues + let strategyValues + let addToStrategyValues + let positionValues + let addToPositionValues + + let chart + + return thisObject + + function initialize() { + tradingEngine = bot.simulationState.tradingEngine + tradingSystem = bot.simulationState.tradingSystem + sessionParameters = bot.SESSION.parameters + } + + function finalize() { + writeSnapshotFiles() + tradingEngine = undefined + tradingSystem = undefined + sessionParameters = undefined + + positionKeys = undefined + strategyKeys = undefined + + chart = undefined + } + + function updateChart(pChart) { + chart = pChart + } + + function strategyEntry() { + /* + We will record here a snapshot of all values used in conditions and formulas within the Trading System. + If the strategy exists with a trade, this information will be added to the snapshots file. + */ + + strategyKeys = new Map() + strategyValues = [] + addToStrategyValues = true + + evalNode(tradingSystem) + + /* Turn off this */ + createHeaders = false + addToStrategyValues = false + } + + function strategyExit() { + getResults(tradingEngine.current.strategy.begin.value, tradingEngine.current.strategy.end.value) + let valuesArray = closeValues.concat(strategyValues) + snapshots.strategies.push(valuesArray) + } + + function positionEntry() { + + positionKeys = new Map() + positionValues = [] + addToPositionValues = true + + evalNode(tradingSystem) + + /* Turn off this */ + createHeaders = false + addToPositionValues = false + } + + function positionExit() { + getResults(tradingEngine.current.position.begin.value, tradingEngine.current.position.end.value) + let valuesArray = closeValues.concat(positionValues) + snapshots.positions.push(valuesArray) + } + + function evalNode(node) { + if (node === undefined) { return } + + /* Here we check if there is a codition to be evaluated */ + if (node.type === 'Condition') { + /* We will eval this condition */ + evalCondition(node) + } + + /* Here we check if there is a formula to be evaluated */ + if (node.type === 'Formula') { + if (node.code !== undefined) { + /* We will eval this formula */ + evalFormula(node) + } + } + + /* Now we go down through all this node children */ + let nodeDefinition = global.APP_SCHEMA_MAP.get(node.type) + if (nodeDefinition === undefined) { return } + + if (nodeDefinition.properties !== undefined) { + let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.type) { + case 'node': { + if (property.name !== previousPropertyName) { + if (node[property.name] !== undefined) { + evalNode(node[property.name]) + } + previousPropertyName = property.name + } + break + } + case 'array': { + if (node[property.name] !== undefined) { + let nodePropertyArray = node[property.name] + for (let m = 0; m < nodePropertyArray.length; m++) { + evalNode(nodePropertyArray[m]) + } + } + break + } + } + } + } + } + + function evalCondition(node) { + + /* + The code can be at the condition node if it was done with the Conditions Editor, or it can also be + at a Javascript Code node. If there is a Javascript object we will give it preference and take the code + from there. Otherwise we will take the code from the Condition node. + */ + + let nodeWithCode = node + if (node.javascriptCode !== undefined) { + if (node.javascriptCode.code !== undefined) { + nodeWithCode = node.javascriptCode + } + } + addCodeToSnapshot(nodeWithCode) + } + + function evalFormula(node) { + let nodeWithCode = node + addCodeToSnapshot(nodeWithCode) + } + + function addCodeToSnapshot(nodeWithCode) { + if (nodeWithCode === undefined) { return } + if (nodeWithCode.code === undefined) { return } + + try { + let instructionsArray = nodeWithCode.code.split(' ') + for (let i = 0; i < instructionsArray.length; i++) { + let instruction = instructionsArray[i] + instruction = instruction.replace('(', '') + instruction = instruction.replace(')', '') + instruction = instruction.replace(//g, '') + instruction = instruction.replace(/<=/g, '') + instruction = instruction.replace(/>=/g, '') + instruction = instruction.replace(/!=/g, '') + instruction = instruction.replace(/!==/g, '') + instruction = instruction.replace(/==/g, '') + instruction = instruction.replace(/===/g, '') + instruction = instruction.replace(/{/g, '') + instruction = instruction.replace(/}/g, '') + if (instruction.indexOf('chart') >= 0) { + let parts = instruction.split('.') + let timeFrame = parts[1] + let product = parts[2] + let property + checkPrevious(3) + function checkPrevious(index) { + property = parts[index] + if (property === 'previous') { + product = product + '.previous' + checkPrevious(index + 1) + } + } + + // Example: chart.at01hs.popularSMA.sma200 - chart.at01hs.popularSMA.sma100 < 10 + if (timeFrame !== 'atAnyTimeFrame') { + timeFrame = timeFrame.substring(2, 4) + '-' + timeFrame.substring(4, 7) + } + let key = timeFrame + '-' + product + '-' + property + let existingKey + + if (addToStrategyValues === true) { + addValues(strategyKeys, strategyValues) + } + + if (addToPositionValues === true) { + addValues(positionKeys, positionValues) + } + + function addValues(keys, values) { + existingKey = keys.get(key) + + if (existingKey === undefined) { // means that at the current loop this property of this product was not used before. + keys.set(key, key) + if (createHeaders === true) { + snapshots.headers.push(key) + } + + try { + let value = eval(instruction) + values.push(value) + } catch (err) { + tradingSystem.errors.push([nodeWithCode.id, 'Instruction ' + instruction + ' evalueates with error ' + err.message]) + values.push(0) + } + } + } + } + } + } catch (err) { + tradingSystem.errors.push([nodeWithCode.id, err.message]) + logger.write(MODULE_NAME, '[ERROR] runSimulation -> addCodeToSnapshot -> nodeWithCode.code = ' + nodeWithCode.code) + logger.write(MODULE_NAME, '[ERROR] runSimulation -> addCodeToSnapshot -> err = ' + err.stack) + } + } + + function getResults(openDatetime, closeDatetime) { + + let closeHeaders = ['Trade Number', 'Open Datetime', 'Close Datetime', 'Strategy Name', 'Trigger On Situation', 'Take Position Situation', 'Result In Base Asset', 'Result In Quoted Asset', 'ROI in Base Asset', 'ROI in Quoted Asset', 'Exit Type'] + closeValues = [ + tradingEngine.current.episode.episodeCounters.positions.value, // Position Number + (new Date(openDatetime)).toISOString(), // Open Datetime + (new Date(closeDatetime)).toISOString(), // Open Datetime + tradingEngine.current.strategy.strategyName.value, // Strategy Name + tradingEngine.current.strategy.situationName.value, // Trigger On Situation + tradingEngine.current.position.situationName.value, // Take Position Situation + tradingEngine.current.position.positionBaseAsset.hitFail.value, // Result in Base Asset + tradingEngine.current.position.positionQuotedAsset.hitFail.value, // Result in Base Asset + tradingEngine.current.position.positionBaseAsset.ROI.value, // ROI in Base Asseet + tradingEngine.current.position.positionQuotedAsset.ROI.value, // ROI in Quoted Asset + tradingEngine.current.position.exitType.value // Exit Type + ] + + if (createCloseHeaders === true) { + snapshots.headers = closeHeaders.concat(JSON.parse(JSON.stringify(snapshots.headers))) + createCloseHeaders = false + } + } + + function writeSnapshotFiles() { + + if (sessionParameters.snapshots !== undefined) { + if (sessionParameters.snapshots.config.strategy === true) { + writeSnapshotFile(snapshots.strategies, 'Strategies') + } + } + + if (sessionParameters.snapshots !== undefined) { + if (sessionParameters.snapshots.config.strategy === true) { + writeSnapshotFile(snapshots.positions, 'Positions') + } + } + } + + function writeSnapshotFile(snapshotArray, pFileName) { + try { + const FILE_STORAGE = require('../FileStorage.js'); + let fileStorage = FILE_STORAGE.newFileStorage(logger); + + let fileContent = ""; + let separator = "\r\n"; + + parseRecord(snapshots.headers) + + for (let i = 0; i < snapshotArray.length; i++) { + let record = snapshotArray[i]; + parseRecord(record) + } + + function parseRecord(record) { + for (let j = 0; j < record.length; j++) { + let property = record[j] + + fileContent = fileContent + '' + property + if (j !== record.length - 1) { + fileContent = fileContent + "," + } + } + fileContent = fileContent + separator + } + + fileContent = "" + fileContent + ""; + + let fileName = pFileName + '.csv'; + let filePath = bot.filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + SNAPSHOTS_FOLDER_NAME; + filePath += '/' + fileName + + fileStorage.createTextFile(filePath, fileContent + '\n', onFileCreated); + + function onFileCreated(err) { + if (err.result !== global.DEFAULT_OK_RESPONSE.result) { + logger.write(MODULE_NAME, "[ERROR] writeSnapshotFile -> onFileCreated -> err = " + err.stack); + logger.write(MODULE_NAME, "[ERROR] writeSnapshotFile -> onFileCreated -> filePath = " + filePath); + logger.write(MODULE_NAME, "[ERROR] writeSnapshotFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); + } + } + } + catch (err) { + logger.write(MODULE_NAME, "[ERROR] writeSnapshotFile -> err = " + err.stack); + } + } +} \ No newline at end of file diff --git a/TaskServer/LowFrequencyTrading/TradingEngine.js b/TaskServer/LowFrequencyTrading/TradingEngine.js new file mode 100644 index 000000000..b9dc6f889 --- /dev/null +++ b/TaskServer/LowFrequencyTrading/TradingEngine.js @@ -0,0 +1,216 @@ +exports.newTradingEngine = function newTradingEngine(bot, logger) { + /* + We call the Trading Engine to the data structure that is needed in order to exevute the + trading protocol with the specific rules defined at the Trading System. + */ + const MODULE_NAME = 'Trading Engine' + let thisObject = { + mantain: mantain, + reset: reset, + getNodeById: getNodeById, + cloneValues: cloneValues, + setCurrentCandle: setCurrentCandle, + setCurrentCycle: setCurrentCycle, + initializeNode: initializeNode, + initialize: initialize, + finalize: finalize + } + + let tradingEngine + let sessionParameters + let nodesMap = new Map() + + return thisObject + + function initialize() { + + tradingEngine = bot.simulationState.tradingEngine + sessionParameters = bot.SESSION.parameters + + initializeNodeMap(tradingEngine) + + if (bot.FIRST_EXECUTION === true) { + /* + Here we will go through all the nodes in the Trading Engine hiriarchy and + apply the initial value to the value property when needed + */ + initializeNode(tradingEngine) + } + } + + function finalize() { + tradingEngine = undefined + sessionParameters = undefined + nodesMap = undefined + } + + function mantain() { + } + + function reset() { + + } + + function getNodeById(NodeId) { + return nodesMap.get(NodeId) + } + + function setCurrentCandle(candle) { + tradingEngine.current.episode.candle.begin.value = candle.begin + tradingEngine.current.episode.candle.end.value = candle.end + tradingEngine.current.episode.candle.open.value = candle.open + tradingEngine.current.episode.candle.close.value = candle.close + tradingEngine.current.episode.candle.min.value = candle.min + tradingEngine.current.episode.candle.max.value = candle.max + } + + function setCurrentCycle(cycle) { + tradingEngine.current.episode.cycle.value = cycle + switch (cycle) { + case 'First': { + tradingEngine.current.episode.cycle.begin.value = + tradingEngine.current.episode.candle.begin.value + + sessionParameters.timeFrame.config.value + tradingEngine.current.episode.cycle.end.value = + tradingEngine.current.episode.candle.begin.value + + sessionParameters.timeFrame.config.value + + sessionParameters.timeFrame.config.value / 2 - 1 + break + } + case 'Second': { + tradingEngine.current.episode.cycle.begin.value = + tradingEngine.current.episode.candle.begin.value + + sessionParameters.timeFrame.config.value + + sessionParameters.timeFrame.config.value / 2 + tradingEngine.current.episode.cycle.end.value = + tradingEngine.current.episode.candle.begin.value + + sessionParameters.timeFrame.config.value + + sessionParameters.timeFrame.config.value * 4 / 4 - 1 + break + } + } + } + + function cloneValues(originNode, destinationNode) { + if (originNode === undefined) { return } + if (destinationNode === undefined) { return } + + /* Here copy the node value */ + destinationNode.value = originNode.value + + /* Now we go down through all the children of the origin node, assuming the destination node has the same children structure*/ + let nodeDefinition = global.APP_SCHEMA_MAP.get(originNode.type) + if (nodeDefinition === undefined) { return } + + if (nodeDefinition.properties !== undefined) { + let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.type) { + case 'node': { + if (property.name !== previousPropertyName) { + if (originNode[property.name] !== undefined && destinationNode[property.name] !== undefined) { + cloneValues(originNode[property.name], destinationNode[property.name]) + } + previousPropertyName = property.name + } + break + } + case 'array': { + if (originNode[property.name] !== undefined && destinationNode[property.name] !== undefined) { + let originNodePropertyArray = originNode[property.name] + let destinationNodePropertyArray = destinationNode[property.name] + for (let m = 0; m < originNodePropertyArray.length; m++) { + cloneValues(originNodePropertyArray[m], destinationNodePropertyArray[m]) + } + } + break + } + } + } + } + } + + function initializeNodeMap(node) { + if (node === undefined) { return } + /* Add to Node Map */ + nodesMap.set(node.id, node) + + /* Now we go down through all this node children */ + let nodeDefinition = global.APP_SCHEMA_MAP.get(node.type) + if (nodeDefinition === undefined) { return } + + if (nodeDefinition.properties !== undefined) { + let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.type) { + case 'node': { + if (property.name !== previousPropertyName) { + if (node[property.name] !== undefined) { + initializeNodeMap(node[property.name]) + } + previousPropertyName = property.name + } + break + } + case 'array': { + if (node[property.name] !== undefined) { + let nodePropertyArray = node[property.name] + for (let m = 0; m < nodePropertyArray.length; m++) { + initializeNodeMap(nodePropertyArray[m]) + } + } + break + } + } + } + } + } + + function initializeNode(node) { + if (node === undefined) { return } + + /* Here we initialize the node value */ + if (node.config !== undefined) { + if (node.config.initialValue !== undefined) { + node.value = node.config.initialValue + } + } + + /* Now we go down through all this node children */ + let nodeDefinition = global.APP_SCHEMA_MAP.get(node.type) + if (nodeDefinition === undefined) { return } + + if (nodeDefinition.properties !== undefined) { + let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.type) { + case 'node': { + if (property.name !== previousPropertyName) { + if (node[property.name] !== undefined) { + initializeNode(node[property.name]) + } + previousPropertyName = property.name + } + break + } + case 'array': { + if (node[property.name] !== undefined) { + let nodePropertyArray = node[property.name] + for (let m = 0; m < nodePropertyArray.length; m++) { + initializeNode(nodePropertyArray[m]) + } + } + break + } + } + } + } + } +} + diff --git a/TaskServer/LowFrequencyTrading/TradingEpisode.js b/TaskServer/LowFrequencyTrading/TradingEpisode.js new file mode 100644 index 000000000..76bb7a8d3 --- /dev/null +++ b/TaskServer/LowFrequencyTrading/TradingEpisode.js @@ -0,0 +1,317 @@ +exports.newTradingEpisode = function newTradingEpisode(bot, logger, tradingEngineModule) { + /* + This module packages all functions related to Episodes. + */ + const MODULE_NAME = 'Trading Episode' + let thisObject = { + mantain: mantain, + reset: reset, + openEpisode: openEpisode, + updateExitType: updateExitType, + closeEpisode: closeEpisode, + cycleBasedStatistics: cycleBasedStatistics, + initialize: initialize, + finalize: finalize + } + + let tradingEngine + let tradingSystem + let sessionParameters + + return thisObject + + function initialize() { + tradingSystem = bot.simulationState.tradingSystem + tradingEngine = bot.simulationState.tradingEngine + sessionParameters = bot.SESSION.parameters + } + + function finalize() { + tradingEngine = undefined + tradingSystem = undefined + sessionParameters = undefined + } + + function mantain() { + updateCounters() + updateStatistics() + updateEnds() + updateDistanceToEventsCounters() + } + + function reset() { + resetTradingEngineDataStructure() + } + + function openEpisode() { + /* + This function is called each time the simulation starts. That does not mean the Episode + must be opened there, since it might happen that it is looping at the end of the market + or the task / session was restarted. + */ + if (bot.FIRST_EXECUTION === true) { + /* Getting the begin Balance from the session configuration */ + tradingEngine.current.episode.episodeBaseAsset.beginBalance.value = sessionParameters.sessionBaseAsset.config.initialBalance + tradingEngine.current.episode.episodeQuotedAsset.beginBalance.value = sessionParameters.sessionQuotedAsset.config.initialBalance + + /* The current balance is also the begin balance, that is how this starts. */ + tradingEngine.current.episode.episodeBaseAsset.balance.value = sessionParameters.sessionBaseAsset.config.initialBalance + tradingEngine.current.episode.episodeQuotedAsset.balance.value = sessionParameters.sessionQuotedAsset.config.initialBalance + + /* Recording the opening at the Trading Engine Data Structure */ + tradingEngine.current.episode.status.value = 'Open' + tradingEngine.current.episode.serialNumber.value = 1 + tradingEngine.current.episode.identifier.value = global.UNIQUE_ID() + tradingEngine.current.episode.begin.value = tradingEngine.current.episode.candle.begin.value + tradingEngine.current.episode.beginRate.value = tradingEngine.current.episode.candle.close.value + } + } + + function updateExitType(exitType) { + tradingEngine.current.episode.exitType.value = exitType + } + + function closeEpisode() { + tradingEngine.current.episode.status.value = 'Closed' + tradingEngine.current.episode.end.value = tradingEngine.current.episode.candle.end.value + tradingEngine.current.episode.endRate.value = tradingEngine.current.episode.candle.close.value + tradingEngine.current.episode.episodeBaseAsset.endBalance.value = tradingEngine.current.episode.episodeBaseAsset.balance.value + tradingEngine.current.episode.episodeQuotedAsset.endBalance.value = tradingEngine.current.episode.episodeQuotedAsset.balance.value + } + + function resetEpisode() { + tradingEngineModule.initializeNode(tradingEngine.current.episode) + } + + function updateEnds() { + if (tradingEngine.current.episode.status.value === 'Open') { + tradingEngine.current.episode.end.value = tradingEngine.current.episode.candle.end.value + tradingEngine.current.episode.endRate.value = tradingEngine.current.episode.candle.close.value + tradingEngine.current.episode.episodeBaseAsset.endBalance.value = tradingEngine.current.episode.episodeBaseAsset.balance.value + tradingEngine.current.episode.episodeQuotedAsset.endBalance.value = tradingEngine.current.episode.episodeQuotedAsset.balance.value + } + } + + function resetTradingEngineDataStructure() { + if (tradingEngine.current.episode.status.value === 'Closed') { + resetEpisode() + } + } + + function updateCounters() { + if (tradingEngine.current.episode.status.value === 'Open') { + tradingEngine.current.episode.episodeCounters.periods.value++ + } + } + + function updateStatistics() { + + /* Daus Calculation */ + tradingEngine.current.episode.episodeStatistics.days.value = + tradingEngine.current.episode.episodeCounters.periods.value * + sessionParameters.timeFrame.config.value / + global.ONE_DAY_IN_MILISECONDS + } + + function cycleBasedStatistics() { + + calculateAssetsStatistics() + calculateEpisodeStatistics() + + function calculateAssetsStatistics() { + /* Updating Profit Loss */ + tradingEngine.current.episode.episodeBaseAsset.profitLoss.value = + tradingEngine.current.episode.episodeBaseAsset.balance.value - + sessionParameters.sessionBaseAsset.config.initialBalance + + tradingEngine.current.episode.episodeQuotedAsset.profitLoss.value = + tradingEngine.current.episode.episodeQuotedAsset.balance.value - + sessionParameters.sessionQuotedAsset.config.initialBalance + + tradingEngine.current.episode.episodeBaseAsset.profitLoss.value = global.PRECISE(tradingEngine.current.episode.episodeBaseAsset.profitLoss.value, 10) + tradingEngine.current.episode.episodeQuotedAsset.profitLoss.value = global.PRECISE(tradingEngine.current.episode.episodeQuotedAsset.profitLoss.value, 10) + + /* + Updating ROI + + https://www.investopedia.com/articles/basics/10/guide-to-calculating-roi.asp + */ + tradingEngine.current.episode.episodeBaseAsset.ROI.value = + tradingEngine.current.episode.episodeBaseAsset.profitLoss.value / + tradingEngine.current.episode.episodeBaseAsset.beginBalance.value * 100 + + tradingEngine.current.episode.episodeQuotedAsset.ROI.value = + tradingEngine.current.episode.episodeQuotedAsset.profitLoss.value / + tradingEngine.current.episode.episodeQuotedAsset.beginBalance.value * 100 + + tradingEngine.current.episode.episodeBaseAsset.ROI.value = global.PRECISE(tradingEngine.current.episode.episodeBaseAsset.ROI.value, 10) + tradingEngine.current.episode.episodeQuotedAsset.ROI.value = global.PRECISE(tradingEngine.current.episode.episodeQuotedAsset.ROI.value, 10) + + /* Updating Hit Ratio */ + if (tradingEngine.current.episode.episodeCounters.positions.value > 0) { + tradingEngine.current.episode.episodeBaseAsset.hitRatio.value = + tradingEngine.current.episode.episodeBaseAsset.hits.value / + tradingEngine.current.episode.episodeCounters.positions.value + + tradingEngine.current.episode.episodeQuotedAsset.hitRatio.value = + tradingEngine.current.episode.episodeQuotedAsset.hits.value / + tradingEngine.current.episode.episodeCounters.positions.value + + tradingEngine.current.episode.episodeBaseAsset.hitRatio.value = global.PRECISE(tradingEngine.current.episode.episodeBaseAsset.hitRatio.value, 10) + tradingEngine.current.episode.episodeQuotedAsset.hitRatio.value = global.PRECISE(tradingEngine.current.episode.episodeQuotedAsset.hitRatio.value, 10) + } + + /* + Updating Annualized Rate Of Return + + https://www.investopedia.com/terms/a/annualized-rate.asp + */ + tradingEngine.current.episode.episodeBaseAsset.annualizedRateOfReturn.value = + Math.pow( + ( + tradingEngine.current.episode.episodeBaseAsset.beginBalance.value + + tradingEngine.current.episode.episodeBaseAsset.profitLoss.value + ) / tradingEngine.current.episode.episodeBaseAsset.beginBalance.value + , + (365 / tradingEngine.current.episode.episodeStatistics.days.value) + ) - 1 + + tradingEngine.current.episode.episodeQuotedAsset.annualizedRateOfReturn.value = + Math.pow( + ( + tradingEngine.current.episode.episodeQuotedAsset.beginBalance.value + + tradingEngine.current.episode.episodeQuotedAsset.profitLoss.value + ) / tradingEngine.current.episode.episodeQuotedAsset.beginBalance.value + , + (365 / tradingEngine.current.episode.episodeStatistics.days.value) + ) - 1 + + tradingEngine.current.episode.episodeBaseAsset.annualizedRateOfReturn.value = global.PRECISE(tradingEngine.current.episode.episodeBaseAsset.annualizedRateOfReturn.value, 10) + tradingEngine.current.episode.episodeQuotedAsset.annualizedRateOfReturn.value = global.PRECISE(tradingEngine.current.episode.episodeQuotedAsset.annualizedRateOfReturn.value, 10) + + /* Updating Hit or Fail */ + if (tradingEngine.current.episode.episodeBaseAsset.profitLoss.value > 0) { + tradingEngine.current.episode.episodeBaseAsset.hitFail.value = 'Hit' + } else { + tradingEngine.current.episode.episodeBaseAsset.hitFail.value = 'Fail' + } + if (tradingEngine.current.episode.episodeQuotedAsset.profitLoss.value > 0) { + tradingEngine.current.episode.episodeQuotedAsset.hitFail.value = 'Hit' + } else { + tradingEngine.current.episode.episodeQuotedAsset.hitFail.value = 'Fail' + } + } + + function calculateEpisodeStatistics() { + /* Updating Profit Loss */ + tradingEngine.current.episode.episodeStatistics.profitLoss.value = + tradingEngine.current.episode.episodeBaseAsset.profitLoss.value * tradingEngine.current.episode.candle.close.value + + tradingEngine.current.episode.episodeQuotedAsset.profitLoss.value + + tradingEngine.current.episode.episodeStatistics.profitLoss.value = global.PRECISE(tradingEngine.current.episode.episodeStatistics.profitLoss.value, 10) + + /* + Updating ROI + + https://www.investopedia.com/articles/basics/10/guide-to-calculating-roi.asp + */ + tradingEngine.current.episode.episodeStatistics.ROI.value = + ( + tradingEngine.current.episode.episodeBaseAsset.profitLoss.value * tradingEngine.current.episode.endRate.value + + tradingEngine.current.episode.episodeQuotedAsset.profitLoss.value + ) / ( + tradingEngine.current.episode.episodeBaseAsset.beginBalance.value * tradingEngine.current.episode.beginRate.value + + tradingEngine.current.episode.episodeQuotedAsset.beginBalance.value + ) * 100 + + tradingEngine.current.episode.episodeStatistics.ROI.value = global.PRECISE(tradingEngine.current.episode.episodeStatistics.ROI.value, 10) + + /* + Updating Annualized Rate Of Return + + https://www.investopedia.com/terms/a/annualized-rate.asp + */ + tradingEngine.current.episode.episodeStatistics.annualizedRateOfReturn.value = + Math.pow( + ( + tradingEngine.current.episode.episodeBaseAsset.beginBalance.value * tradingEngine.current.episode.beginRate.value + + tradingEngine.current.episode.episodeQuotedAsset.beginBalance.value + + tradingEngine.current.episode.episodeBaseAsset.profitLoss.value + + tradingEngine.current.episode.episodeQuotedAsset.profitLoss.value + ) / + ( + tradingEngine.current.episode.episodeBaseAsset.beginBalance.value * tradingEngine.current.episode.beginRate.value + + tradingEngine.current.episode.episodeQuotedAsset.beginBalance.value + ) + , + (365 / tradingEngine.current.episode.episodeStatistics.days.value) + ) - 1 + + tradingEngine.current.episode.episodeStatistics.annualizedRateOfReturn.value = global.PRECISE(tradingEngine.current.episode.episodeStatistics.annualizedRateOfReturn.value, 10) + + /* Updating Hit or Fail */ + if (tradingEngine.current.episode.episodeStatistics.profitLoss.value > 0) { + tradingEngine.current.episode.episodeStatistics.hitFail.value = 'Hit' + } else { + tradingEngine.current.episode.episodeStatistics.hitFail.value = 'Fail' + } + } + } + + function updateDistanceToEventsCounters() { + /* Keeping Distance Counters Up-to-date while avoinding counting before the first event happens. */ + if ( + tradingEngine.current.episode.distanceToEvent.triggerOn.value > 0 + ) { + tradingEngine.current.episode.distanceToEvent.triggerOn.value++ + } + + if ( + tradingEngine.current.episode.distanceToEvent.triggerOff.value > 0 + ) { + tradingEngine.current.episode.distanceToEvent.triggerOff.value++ + } + + if ( + tradingEngine.current.episode.distanceToEvent.takePosition.value > 0 + ) { + tradingEngine.current.episode.distanceToEvent.takePosition.value++ + } + + if ( + tradingEngine.current.episode.distanceToEvent.closePosition.value > 0 + ) { + tradingEngine.current.episode.distanceToEvent.closePosition.value++ + } + + if ( + tradingEngine.current.episode.distanceToEvent.nextPhase.value > 0 + ) { + tradingEngine.current.episode.distanceToEvent.nextPhase.value++ + } + + if ( + tradingEngine.current.episode.distanceToEvent.moveToPhase.value > 0 + ) { + tradingEngine.current.episode.distanceToEvent.moveToPhase.value++ + } + + if ( + tradingEngine.current.episode.distanceToEvent.createOrder.value > 0 + ) { + tradingEngine.current.episode.distanceToEvent.createOrder.value++ + } + + if ( + tradingEngine.current.episode.distanceToEvent.cancelOrder.value > 0 + ) { + tradingEngine.current.episode.distanceToEvent.cancelOrder.value++ + } + + if ( + tradingEngine.current.episode.distanceToEvent.closeOrder.value > 0 + ) { + tradingEngine.current.episode.distanceToEvent.closeOrder.value++ + } + } +} \ No newline at end of file diff --git a/TaskServer/LowFrequencyTrading/TradingExecution.js b/TaskServer/LowFrequencyTrading/TradingExecution.js new file mode 100644 index 000000000..7e6619ec3 --- /dev/null +++ b/TaskServer/LowFrequencyTrading/TradingExecution.js @@ -0,0 +1,103 @@ +exports.newTradingExecution = function newTradingExecution(bot, logger, tradingEngineModule) { + /* + The Trading Execution modules manages the execution nodes and execution algoritms. + */ + const MODULE_NAME = 'Trading Execution' + + let thisObject = { + mantain: mantain, + reset: reset, + runExecution: runExecution, + initialize: initialize, + finalize: finalize + } + + let tradingEngine + let tradingSystem + let sessionParameters + + const TRADING_ORDERS_MODULE = require('./TradingOrders.js') + let tradingOrdersModule = TRADING_ORDERS_MODULE.newTradingOrders(bot, logger, tradingEngineModule) + + return thisObject + + function initialize() { + tradingSystem = bot.simulationState.tradingSystem + tradingEngine = bot.simulationState.tradingEngine + sessionParameters = bot.SESSION.parameters + + tradingOrdersModule.initialize() + } + + function finalize() { + tradingSystem = undefined + tradingEngine = undefined + sessionParameters = undefined + + tradingOrdersModule.finalize() + tradingOrdersModule = undefined + } + + function mantain() { + tradingOrdersModule.mantain() + } + + function reset() { + tradingOrdersModule.reset() + } + + async function runExecution( + executionNode, + tradingEngineStage + ) { + try { + /* Trading Engine Stage Validations */ + if (tradingEngineStage.stageBaseAsset === undefined) { badDefinitionUnhandledException(undefined, 'stageBaseAsset === undefined', tradingEngineStage) } + if (tradingEngineStage.stageBaseAsset.targetSize === undefined) { badDefinitionUnhandledException(undefined, 'stageBaseAsset.targetSize === undefined', tradingEngineStage) } + if (tradingEngineStage.stageBaseAsset.sizePlaced === undefined) { badDefinitionUnhandledException(undefined, 'stageBaseAsset.sizePlaced === undefined', tradingEngineStage) } + if (tradingEngineStage.stageBaseAsset.sizeFilled === undefined) { badDefinitionUnhandledException(undefined, 'stageBaseAsset.sizeFilled === undefined', tradingEngineStage) } + if (tradingEngineStage.stageBaseAsset.feesPaid === undefined) { badDefinitionUnhandledException(undefined, 'stageBaseAsset.feesPaid === undefined', tradingEngineStage) } + if (tradingEngineStage.stageQuotedAsset === undefined) { badDefinitionUnhandledException(undefined, 'stageQuotedAsset === undefined', tradingEngineStage) } + if (tradingEngineStage.stageQuotedAsset.targetSize === undefined) { badDefinitionUnhandledException(undefined, 'stageQuotedAsset.targetSize === undefined', tradingEngineStage) } + if (tradingEngineStage.stageQuotedAsset.sizePlaced === undefined) { badDefinitionUnhandledException(undefined, 'stageQuotedAsset.sizePlaced === undefined', tradingEngineStage) } + if (tradingEngineStage.stageQuotedAsset.sizeFilled === undefined) { badDefinitionUnhandledException(undefined, 'stageQuotedAsset.sizeFilled === undefined', tradingEngineStage) } + if (tradingEngineStage.stageQuotedAsset.feesPaid === undefined) { badDefinitionUnhandledException(undefined, 'stageQuotedAsset.feesPaid === undefined', tradingEngineStage) } + + await checkExecutionAlgorithms(executionNode) + + async function checkExecutionAlgorithms(executionNode) { + for (let i = 0; i < executionNode.executionAlgorithms.length; i++) { + let executionAlgorithm = executionNode.executionAlgorithms[i] + await tradingOrdersModule.checkOrders(tradingEngineStage, executionAlgorithm.marketBuyOrders, executionAlgorithm, executionNode) + await tradingOrdersModule.checkOrders(tradingEngineStage, executionAlgorithm.marketSellOrders, executionAlgorithm, executionNode) + await tradingOrdersModule.checkOrders(tradingEngineStage, executionAlgorithm.limitBuyOrders, executionAlgorithm, executionNode) + await tradingOrdersModule.checkOrders(tradingEngineStage, executionAlgorithm.limitSellOrders, executionAlgorithm, executionNode) + } + } + + } catch (err) { + tradingSystem.errors.push([executionNode.id, err.message]) + + if (typeof err === 'string' || err instanceof String) { + logger.write(MODULE_NAME, '[ERROR] runExecution -> err = ' + err) + } + if (err.stack !== undefined) { + logger.write(MODULE_NAME, '[ERROR] runExecution -> err = ' + err.stack) + } + } + } + + function badDefinitionUnhandledException(err, message, node) { + tradingSystem.errors.push([node.id, message]) + + logger.write(MODULE_NAME, "[ERROR] -> " + message); + logger.write(MODULE_NAME, "[ERROR] -> node.name = " + node.name); + logger.write(MODULE_NAME, "[ERROR] -> node.type = " + node.type); + logger.write(MODULE_NAME, "[ERROR] -> node.config = " + JSON.stringify(node.config)); + if (err !== undefined) { + logger.write(MODULE_NAME, "[ERROR] -> err.stack = " + err.stack); + } + throw 'Please fix the problem and try again.' + } +} + diff --git a/TaskServer/LowFrequencyTrading/TradingOrders.js b/TaskServer/LowFrequencyTrading/TradingOrders.js new file mode 100644 index 000000000..76d1cabe0 --- /dev/null +++ b/TaskServer/LowFrequencyTrading/TradingOrders.js @@ -0,0 +1,1292 @@ +exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineModule) { + /* + The Trading Orders modules manages the execution of orders against the exchanges. + */ + const MODULE_NAME = 'Trading Orders' + + let thisObject = { + mantain: mantain, + reset: reset, + checkOrders: checkOrders, + initialize: initialize, + finalize: finalize + } + + let tradingEngine + let tradingSystem + let sessionParameters + + const EXCHANGE_API_MODULE = require('./ExchangeAPI.js') + let exchangeAPIModule = EXCHANGE_API_MODULE.newExchangeAPI(bot, logger) + + const ANNOUNCEMENTS_MODULE = require('./Announcements.js') + let announcementsModule = ANNOUNCEMENTS_MODULE.newAnnouncements(bot, logger) + + return thisObject + + function initialize() { + tradingSystem = bot.simulationState.tradingSystem + tradingEngine = bot.simulationState.tradingEngine + sessionParameters = bot.SESSION.parameters + + exchangeAPIModule.initialize() + announcementsModule.initialize() + } + + function finalize() { + tradingSystem = undefined + tradingEngine = undefined + sessionParameters = undefined + + exchangeAPIModule.finalize() + exchangeAPIModule = undefined + + announcementsModule.finalize() + announcementsModule = undefined + } + + function mantain() { + mantainReset(true, false) + } + + function reset() { + mantainReset(false, true) + } + + function mantainReset(mantain, reset) { + + if (tradingEngine.current.strategy.index.value === tradingEngine.current.strategy.index.config.initialValue) { return } + + let stageNode + let executionNode + + stageNode = tradingSystem.tradingStrategies[tradingEngine.current.strategy.index.value].openStage + executionNode = stageNode.openExecution + processExecutionNode(executionNode, tradingEngine.current.strategyOpenStage.status.value) + + stageNode = tradingSystem.tradingStrategies[tradingEngine.current.strategy.index.value].closeStage + executionNode = stageNode.closeExecution + processExecutionNode(executionNode, tradingEngine.current.strategyCloseStage.status.value) + + function processExecutionNode(executionNode, stageStatus) { + + preocessExecutionAlgorithms(executionNode) + + function preocessExecutionAlgorithms(executionNode) { + for (let i = 0; i < executionNode.executionAlgorithms.length; i++) { + let executionAlgorithm = executionNode.executionAlgorithms[i] + processOrders(executionAlgorithm.marketBuyOrders) + processOrders(executionAlgorithm.marketSellOrders) + processOrders(executionAlgorithm.limitBuyOrders) + processOrders(executionAlgorithm.limitSellOrders) + } + } + + function processOrders(orders) { + for (let i = 0; i < orders.length; i++) { + let tradingSystemOrder = orders[i] + if (tradingSystemOrder.referenceParent === undefined) { + badDefinitionUnhandledException(undefined, 'tradingSystemOrder.referenceParent === undefined', tradingSystemOrder) + } + let tradingEngineOrder = tradingEngineModule.getNodeById(tradingSystemOrder.referenceParent.id) + + if (tradingEngineOrder.status === undefined) { + badDefinitionUnhandledException(undefined, 'tradingEngineOrder.status === undefined', tradingEngineOrder) + } + + if (mantain === true) { + updateCounters(tradingEngineOrder) + updateEnds(tradingEngineOrder) + updateStatistics(tradingEngineOrder) + } + if (reset === true) { + resetTradingEngineDataStructure(tradingEngineOrder, tradingSystemOrder, stageStatus) + } + } + } + } + } + + async function checkOrders(tradingEngineStage, orders, executionAlgorithm, executionNode) { + for (let i = 0; i < orders.length; i++) { + + let tradingSystemOrder = orders[i] + tradingSystemValidations(tradingSystemOrder) + let tradingEngineOrder = tradingEngineModule.getNodeById(tradingSystemOrder.referenceParent.id) + tradingEngineValidations(tradingEngineOrder) + + switch (tradingEngineOrder.status.value) { + case 'Not Open': { + { + /* During the First cycle we can not create new orders. That is reserved for the Second cycle. */ + if (tradingEngine.current.episode.cycle.value === 'First') { continue } + /* When the stage is closing we can not create new orders */ + if (tradingEngineStage.status.value === 'Closing') { continue } + /* + Check if we can create an order based on the config value for spawnMultipleOrders. + Trading System Orders that cannot spawn more than one Trading Engine Order needs to check if + at the Trading Engine Order the lock is Open or Closed. + */ + if (tradingSystemOrder.config.spawnMultipleOrders !== true) { + if (tradingEngineOrder.lock.value === 'Closed') { + tradingSystem.infos.push(['Order ' + tradingSystemOrder.name + ' skipped because lock was closed.']) + continue + } + } + /* Check if we need to Create this Order */ + let situationName = await checkOrderEvent(tradingSystemOrder.createOrderEvent, tradingSystemOrder, executionAlgorithm, executionNode) + if (situationName !== undefined) { + + /* Open a new order */ + await tryToOpenOrder(tradingEngineStage, executionAlgorithm, tradingSystemOrder, tradingEngineOrder, situationName) + } + } + break + } + case 'Open': { + /* During the Second cycle we can not cancel orders. That is reserved for the First cycle. */ + if (tradingEngine.current.episode.cycle.value === 'Second') { continue } + + /* Simulate Events that happens at the Exchange, if needed. */ + simulateExchangeEvents(tradingEngineStage, tradingSystemOrder, tradingEngineOrder) + + /* Check Events that happens at the Exchange, if needed. */ + let allGood = await checkExchangeEvents(tradingEngineStage, tradingSystemOrder, tradingEngineOrder) + + if (allGood !== true) { + /* + For some reason we could not check the order at the exchange, so we will not even check if we + need to cancel it, since we could end up with inconsisten information at the accounting level. + */ + if (tradingSystemOrder.cancelOrderEvent !== undefined) { + tradingSystem.warnings.push([tradingSystemOrder.cancelOrderEvent.id, 'Skipping Cancel Event Checking because cheking the order at the exchange failed.']) + } + return + } + + /* Check if we need to cancel the order */ + await checkCancelOrderEvent(tradingEngineStage, executionAlgorithm, executionNode, tradingEngineOrder, tradingSystemOrder) + /* + If by this time the order is closed, we need to clone it and get the close + to the Last node at the Trading Engine data structure. + */ + if (tradingEngineOrder.status.value === 'Closed') { + switch (tradingEngineOrder.type) { + case 'Market Order': { + tradingEngineModule.cloneValues(tradingEngineOrder, tradingEngine.last.marketOrders) + break + } + case 'Limit Order': { + tradingEngineModule.cloneValues(tradingEngineOrder, tradingEngine.last.limitOrders) + break + } + } + } + } + } + } + } + + async function checkCancelOrderEvent(tradingEngineStage, executionAlgorithm, executionNode, tradingEngineOrder, tradingSystemOrder) { + /* + In the previous steps, we might have discovered that the order was cancelled + at the exchange, or filled, so the order might still not be Open. + If the stage is closing or the order is not Open, we wont be cancelling orders + based on defined events. + */ + if (tradingEngineStage.status.value !== 'Closing' && tradingEngineOrder.status.value === 'Open') { + + /* Check if we need to Cancel this Order */ + let situationName = await checkOrderEvent(tradingSystemOrder.cancelOrderEvent, tradingSystemOrder, executionAlgorithm, executionNode) + if (situationName !== undefined) { + + /* Simulate Order Cancelation, if needed. */ + simulateCancelOrder(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, 'Cancel Event') + + /* Cancel the order at the Exchange, if needed. */ + await exchangeCancelOrder(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, 'Cancel Event') + + await updateEndsWithCycle(tradingEngineOrder) + } + } + } + + function tradingSystemValidations(tradingSystemOrder) { + /* Trading System Validations */ + if (tradingSystemOrder.config.percentageOfAlgorithmSize === undefined) { badDefinitionUnhandledException(undefined, 'tradingSystemOrder.config.percentageOfAlgorithmSize === undefined', tradingSystemOrder) } + if (tradingSystemOrder.referenceParent === undefined) { badDefinitionUnhandledException(undefined, 'tradingSystemOrder.referenceParent === undefined', tradingSystemOrder) } + } + + function tradingEngineValidations(tradingEngineOrder) { + /* Trading Engine Order Validations */ + if (tradingEngineOrder.serialNumber === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.serialNumber === undefined', tradingEngineOrder) } + if (tradingEngineOrder.identifier === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.identifier === undefined', tradingEngineOrder) } + if (tradingEngineOrder.exchangeId === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.exchangeId === undefined', tradingEngineOrder) } + if (tradingEngineOrder.begin === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.begin === undefined', tradingEngineOrder) } + if (tradingEngineOrder.end === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.end === undefined', tradingEngineOrder) } + if (tradingEngineOrder.rate === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.rate === undefined', tradingEngineOrder) } + if (tradingEngineOrder.status === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.status === undefined', tradingEngineOrder) } + if (tradingEngineOrder.algorithmName === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.algorithmName === undefined', tradingEngineOrder) } + if (tradingEngineOrder.orderCounters === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.orderCounters === undefined', tradingEngineOrder) } + if (tradingEngineOrder.orderCounters.periods === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.orderCounters.periods === undefined', tradingEngineOrder) } + if (tradingEngineOrder.orderStatistics.days === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.orderStatistics.days === undefined', tradingEngineOrder) } + if (tradingEngineOrder.orderStatistics.percentageFilled === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.orderStatistics.percentageFilled === undefined', tradingEngineOrder) } + if (tradingEngineOrder.orderStatistics.actualRate === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.orderStatistics.actualRate === undefined', tradingEngineOrder) } + + if (tradingEngineOrder.orderBaseAsset.size === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.orderBaseAsset.size === undefined', tradingEngineOrder) } + if (tradingEngineOrder.orderBaseAsset.sizeFilled === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.orderBaseAsset.sizeFilled === undefined', tradingEngineOrder) } + if (tradingEngineOrder.orderBaseAsset.feesPaid === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.orderBaseAsset.feesPaid === undefined', tradingEngineOrder) } + + if (tradingEngineOrder.orderQuotedAsset.size === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.orderQuotedAsset.size === undefined', tradingEngineOrder) } + if (tradingEngineOrder.orderQuotedAsset.sizeFilled === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.orderQuotedAsset.sizeFilled === undefined', tradingEngineOrder) } + if (tradingEngineOrder.orderQuotedAsset.feesPaid === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.orderQuotedAsset.feesPaid === undefined', tradingEngineOrder) } + } + + async function tryToOpenOrder(tradingEngineStage, executionAlgorithm, tradingSystemOrder, tradingEngineOrder, situationName) { + + await calculateOrderRate() + await calculateOrderSize() + + /* Check Size: We are not going to create Orders which size is equal or less to zero. */ + if (tradingEngineOrder.orderBaseAsset.size.value <= 0 || tradingEngineOrder.orderQuotedAsset.size.value <= 0) { + tradingSystem.warnings.push([tradingSystemOrder.id, 'Could not open this order because its size would be zero.']) + return + } + + /* Place Order at the Exchange, if needed. */ + let result = await createOrderAtExchange(tradingSystemOrder, tradingEngineOrder) + if (result !== true) { + tradingSystem.warnings.push([tradingSystemOrder.id, 'Could not open this order because something failed placing the order at the Exchange.']) + return + } + + /* Update Stage Placed Size */ + tradingEngineStage.stageBaseAsset.sizePlaced.value = tradingEngineStage.stageBaseAsset.sizePlaced.value + tradingEngineOrder.orderBaseAsset.size.value + tradingEngineStage.stageBaseAsset.sizePlaced.value = global.PRECISE(tradingEngineStage.stageBaseAsset.sizePlaced.value, 10) + tradingEngineStage.stageQuotedAsset.sizePlaced.value = tradingEngineStage.stageQuotedAsset.sizePlaced.value + tradingEngineOrder.orderQuotedAsset.size.value + tradingEngineStage.stageQuotedAsset.sizePlaced.value = global.PRECISE(tradingEngineStage.stageQuotedAsset.sizePlaced.value, 10) + + /* Updating Episode Counters */ + tradingEngine.current.episode.episodeCounters.orders.value++ + + /* Initialize this */ + tradingEngine.current.episode.distanceToEvent.createOrder.value = 1 + + /* Create Order Procedure */ + tradingEngineOrder.status.value = 'Open' + tradingEngineOrder.identifier.value = global.UNIQUE_ID() + tradingEngineOrder.begin.value = tradingEngine.current.episode.cycle.begin.value + tradingEngineOrder.end.value = tradingEngine.current.episode.cycle.end.value + tradingEngineOrder.serialNumber.value = tradingEngine.current.episode.episodeCounters.orders.value + tradingEngineOrder.orderName.value = tradingSystemOrder.name + tradingEngineOrder.algorithmName.value = executionAlgorithm.name + tradingEngineOrder.situationName.value = situationName + + async function calculateOrderRate() { + + /* Optional Rate Definition */ + if (tradingSystemOrder.type === 'Limit Buy Order' || tradingSystemOrder.type === 'Limit Sell Order') { + if (tradingSystemOrder.orderRate === undefined) { badDefinitionUnhandledException(undefined, 'tradingSystemOrder.orderRate === undefined', tradingSystemOrder) } + if (tradingSystemOrder.orderRate.formula === undefined) { badDefinitionUnhandledException(undefined, 'tradingSystemOrder.orderRate.formula === undefined', tradingSystemOrder) } + + /* Extract the rate value from the user-defined formula */ + tradingEngineOrder.rate.value = tradingSystem.formulas.get(tradingSystemOrder.orderRate.formula.id) + + /* Final rate validations */ + if (tradingEngineOrder.rate.value === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.rate.value === undefined', tradingSystemOrder) } + if (isNaN(tradingEngineOrder.rate.value) === true) { badDefinitionUnhandledException(undefined, 'isNaN(tradingEngineOrder.rate.value) === true', tradingSystemOrder) } + if (tradingEngineOrder.rate.value <= 0) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.rate.value <= 0', tradingSystemOrder) } + + tradingEngineOrder.rate.value = global.PRECISE(tradingEngineOrder.rate.value, 10) + } else { + /* + For Market Orders, the rate is irrelevant, since it is not sent to the Exchange. + We store at this field the last know price as a reference. + */ + tradingEngineOrder.rate.value = tradingEngine.current.episode.candle.close.value + } + } + + async function calculateOrderSize() { + /* Validate that this config exists */ + if (executionAlgorithm.config.percentageOfStageTargetSize === undefined) { badDefinitionUnhandledException(undefined, 'executionAlgorithm.config.percentageOfStageTargetSize === undefined', executionAlgorithm) } + if (isNaN(executionAlgorithm.config.percentageOfStageTargetSize) === true) { badDefinitionUnhandledException(undefined, 'isNaN(executionAlgorithm.config.percentageOfStageTargetSize) === true', executionAlgorithm) } + + let algorithmSizeInBaseAsset = tradingEngineStage.stageBaseAsset.targetSize.value * executionAlgorithm.config.percentageOfStageTargetSize / 100 + let algorithmSizeInQuotedAsset = tradingEngineStage.stageQuotedAsset.targetSize.value * executionAlgorithm.config.percentageOfStageTargetSize / 100 + + /* Validate that this config exists */ + if (tradingSystemOrder.config.percentageOfAlgorithmSize === undefined) { badDefinitionUnhandledException(undefined, 'tradingSystemOrder.config.percentageOfAlgorithmSize === undefined', tradingSystemOrder) } + if (isNaN(tradingSystemOrder.config.percentageOfAlgorithmSize) === true) { badDefinitionUnhandledException(undefined, 'isNaN(tradingSystemOrder.config.percentageOfAlgorithmSize) === true', tradingSystemOrder) } + + /* + The Size calculation depends on how the user defined the size of the position. + The user could have defined the size of the position in Base Asset or Quoted Asset. + */ + switch (tradingEngineStage.stageDefinedIn.value) { + case 'Base Asset': { + /* Size in Base Asset */ + tradingEngineOrder.orderBaseAsset.size.value = algorithmSizeInBaseAsset * tradingSystemOrder.config.percentageOfAlgorithmSize / 100 + + /* Check that the Size calculated would not surpass Stage Target Size */ + if ( + tradingEngineOrder.orderBaseAsset.size.value + tradingEngineStage.stageBaseAsset.sizePlaced.value > + tradingEngineStage.stageBaseAsset.targetSize.value + ) { + tradingEngineOrder.orderBaseAsset.size.value = tradingEngineStage.stageBaseAsset.targetSize.value - tradingEngineStage.stageBaseAsset.sizePlaced.value + } + + /* Size in Quoted Asset */ + tradingEngineOrder.orderQuotedAsset.size.value = tradingEngineOrder.orderBaseAsset.size.value * tradingEngineOrder.rate.value + break + } + case 'Quoted Asset': { + /* Size in Quoted Asset */ + tradingEngineOrder.orderQuotedAsset.size.value = algorithmSizeInQuotedAsset * tradingSystemOrder.config.percentageOfAlgorithmSize / 100 + + /* Check that the Size calculated would not surpass Stage Target Size */ + if ( + tradingEngineOrder.orderQuotedAsset.size.value + tradingEngineStage.stageQuotedAsset.sizePlaced.value > + tradingEngineStage.stageQuotedAsset.targetSize.value + ) { + tradingEngineOrder.orderQuotedAsset.size.value = tradingEngineStage.stageQuotedAsset.targetSize.value - tradingEngineStage.stageQuotedAsset.sizePlaced.value + } + + /* Size in Base Asset */ + tradingEngineOrder.orderBaseAsset.size.value = tradingEngineOrder.orderQuotedAsset.size.value / tradingEngineOrder.rate.value + break + } + } + + tradingEngineOrder.orderBaseAsset.size.value = global.PRECISE(tradingEngineOrder.orderBaseAsset.size.value, 10) + tradingEngineOrder.orderQuotedAsset.size.value = global.PRECISE(tradingEngineOrder.orderQuotedAsset.size.value, 10) + } + + async function createOrderAtExchange(tradingSystemOrder, tradingEngineOrder) { + + /* Filter by Session Type */ + switch (bot.SESSION.type) { + case 'Backtesting Session': { + return true + } + case 'Live Trading Session': { + break + } + case 'Fordward Testing Session': { + break + } + case 'Paper Trading Session': { + return true + } + } + + let orderId = await exchangeAPIModule.createOrder(tradingSystemOrder, tradingEngineOrder) + + if (orderId !== undefined) { + tradingEngineOrder.exchangeId.value = orderId + return true + } + } + } + + function simulateExchangeEvents(tradingEngineStage, tradingSystemOrder, tradingEngineOrder) { + + /* Filter by Session Type */ + switch (bot.SESSION.type) { + case 'Backtesting Session': { + break + } + case 'Live Trading Session': { + return + } + case 'Fordward Testing Session': { + return + } + case 'Paper Trading Session': { + break + } + } + + let previousQuotedAssetSize = tradingEngineOrder.orderQuotedAsset.size.value + let previousBaseAssetSizeFilled = tradingEngineOrder.orderBaseAsset.sizeFilled.value + let previousQuotedAssetSizeFilled = tradingEngineOrder.orderQuotedAsset.sizeFilled.value + let previousBaseAssetFeesPaid = tradingEngineOrder.orderBaseAsset.feesPaid.value + let previousQuotedAssetFeesPaid = tradingEngineOrder.orderQuotedAsset.feesPaid.value + + actualRateSimulation() + percentageFilledSimulation() + feesPaidSimulation() + sizeFilledSimulation() + + doTheAccounting( + tradingEngineStage, + tradingSystemOrder, + tradingEngineOrder, + previousBaseAssetSizeFilled, + previousQuotedAssetSizeFilled, + previousBaseAssetFeesPaid, + previousQuotedAssetFeesPaid + ) + + /* If the Stage is Closing and this order is still open, we need to cancel it now */ + if (tradingEngineStage.status.value === 'Closing' && tradingEngineOrder.status.value !== 'Closed') { + simulateCancelOrder(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, 'Closing Stage') + } + + function actualRateSimulation() { + /* Actual Rate Simulation */ + let calculatedBasedOnTradingSystem = false + + basedOnTradingSystem() + basedOnSessionParameters() + considerBestMatchWithOrderBook() + recalculateQuotedAsset() + recalculateSizePlaced() + + function basedOnTradingSystem() { + /* Based on the Trading System Definition */ + if (tradingSystemOrder.simulatedExchangeEvents !== undefined) { + if (tradingSystemOrder.simulatedExchangeEvents.simulatedActualRate !== undefined) { + if (tradingSystemOrder.simulatedExchangeEvents.simulatedActualRate.formula !== undefined) { + /* Calculate this only once for this order */ + if (tradingEngineOrder.orderStatistics.actualRate.value === tradingEngineOrder.orderStatistics.actualRate.config.initialValue) { + tradingEngineOrder.orderStatistics.actualRate.value = tradingSystem.formulas.get(tradingSystemOrder.simulatedExchangeEvents.simulatedActualRate.formula.id) + if (tradingEngineOrder.orderStatistics.actualRate.value !== undefined) { + calculatedBasedOnTradingSystem = true + } + } + } + } + } + } + + function basedOnSessionParameters() { + /* Based on the Session Parameters Definition */ + if (calculatedBasedOnTradingSystem === false) { + switch (tradingEngineOrder.type) { + case 'Market Order': { + /* Actual Rate is simulated based on the Session Paremeters */ + let slippageAmount = tradingEngineOrder.rate.value * sessionParameters.slippage.config.positionRate / 100 + switch (tradingSystemOrder.type) { + case 'Market Sell Order': { + tradingEngineOrder.orderStatistics.actualRate.value = tradingEngineOrder.rate.value - slippageAmount + break + } + case 'Market Buy Order': { + tradingEngineOrder.orderStatistics.actualRate.value = tradingEngineOrder.rate.value + slippageAmount + break + } + } + break + } + case 'Limit Order': { + /* In Limit Orders the actual rate is the rate of the order, there is no slippage */ + tradingEngineOrder.orderStatistics.actualRate.value = tradingEngineOrder.rate.value + break + } + } + } + } + + function considerBestMatchWithOrderBook() { + /* + Until here we have got the rate based on the formula definition or based on session parameters slippage. + THe last check is about watching what happened in the market. Let's remember that the exchange will + fill the order with the best possible matches at it's order book. That means that if the rate + we set for the order was too low (for a sale order) or too hight (for a buy order), the actual rate + should be better than expected. + */ + switch (true) { + case tradingSystemOrder.type === 'Market Buy Order' || tradingSystemOrder.type === 'Limit Buy Order': { + if (tradingEngineOrder.orderStatistics.actualRate.value > tradingEngine.current.episode.candle.max.value) { + tradingEngineOrder.orderStatistics.actualRate.value = tradingEngine.current.episode.candle.max.value + } + break + } + case tradingSystemOrder.type === 'Market Sell Order' || tradingSystemOrder.type === 'Limit Sell Order': { + if (tradingEngineOrder.orderStatistics.actualRate.value < tradingEngine.current.episode.candle.min.value) { + tradingEngineOrder.orderStatistics.actualRate.value = tradingEngine.current.episode.candle.min.value + } + break + } + } + tradingEngineOrder.orderStatistics.actualRate.value = global.PRECISE(tradingEngineOrder.orderStatistics.actualRate.value, 10) + } + + function recalculateQuotedAsset() { + /* + Recalculate the Quouted Asset Size based on the newly calculated Actual Rate. + */ + tradingEngineOrder.orderQuotedAsset.size.value = tradingEngineOrder.orderBaseAsset.size.value * tradingEngineOrder.orderStatistics.actualRate.value + tradingEngineOrder.orderQuotedAsset.size.value = global.PRECISE(tradingEngineOrder.orderQuotedAsset.size.value, 10) + } + + function recalculateSizePlaced() { + /* + Recaulculate the Size Placed Based on the newly calculated Quoted Asset Size. + */ + tradingEngineStage.stageQuotedAsset.sizePlaced.value = + tradingEngineStage.stageQuotedAsset.sizePlaced.value - + previousQuotedAssetSize + + tradingEngineStage.stageQuotedAsset.sizePlaced.value = + tradingEngineStage.stageQuotedAsset.sizePlaced.value + + tradingEngineOrder.orderQuotedAsset.size.value + + tradingEngineStage.stageQuotedAsset.sizePlaced.value = global.PRECISE(tradingEngineStage.stageQuotedAsset.sizePlaced.value, 10) + } + } + + function percentageFilledSimulation() { + /* + Order Filling Simulation: the way we are going to handle this is the following. + For buy orders we are going to check if the price was below the order rate, and + for sell orders we are going to check if the price was above the order rate. + + If we have a partial filling defined we are going to use it to estimate how much + of the order we will consider filled. + */ + let orderWasHit + switch (tradingSystemOrder.type) { + case 'Limit Buy Order': { + if (tradingEngine.current.episode.candle.min.value <= tradingEngineOrder.rate.value) { + orderWasHit = true + } + break + } + case 'Limit Sell Order': { + if (tradingEngine.current.episode.candle.max.value >= tradingEngineOrder.rate.value) { + orderWasHit = true + } + break + } + case 'Market Buy Order': { + orderWasHit = true + break + } + case 'Market Sell Order': { + orderWasHit = true + break + } + } + if (orderWasHit === true) { + let calculatedBasedOnTradingSystem = false + + /* Based on the Trading System Definition */ + if (tradingSystemOrder.simulatedExchangeEvents !== undefined) { + if (tradingSystemOrder.simulatedExchangeEvents.simulatedPartialFill !== undefined) { + if (tradingSystemOrder.simulatedExchangeEvents.simulatedPartialFill.config.fillProbability !== undefined) { + + /* Percentage Filled */ + let percentageFilled = tradingSystemOrder.simulatedExchangeEvents.simulatedPartialFill.config.fillProbability * 100 + if (tradingEngineOrder.orderStatistics.percentageFilled.value + percentageFilled > 100) { + percentageFilled = 100 - tradingEngineOrder.orderStatistics.percentageFilled.value + } + tradingEngineOrder.orderStatistics.percentageFilled.value = tradingEngineOrder.orderStatistics.percentageFilled.value + percentageFilled + tradingEngineOrder.orderStatistics.percentageFilled.value = global.PRECISE(tradingEngineOrder.orderStatistics.percentageFilled.value, 10) + calculatedBasedOnTradingSystem = true + } + } + } + /* + If there is no definition for this at the trading system we will assume orders + are 100% filled every single time. + */ + if (calculatedBasedOnTradingSystem === false) { + /* We will assume that 100% of the order was filled */ + tradingEngineOrder.orderStatistics.percentageFilled.value = 100 + } + /* Check if we need to close the order */ + if (tradingEngineOrder.orderStatistics.percentageFilled.value === 100) { + + /* Close this Order */ + tradingEngineOrder.status.value = 'Closed' + tradingEngineOrder.exitType.value = 'Filled' + + /* Initialize this */ + tradingEngine.current.episode.distanceToEvent.closeOrder.value = 1 + + updateEndsWithCycle(tradingEngineOrder) + tradingSystem.infos.push([tradingSystemOrder.id, 'percentageFilledSimulation -> Closing Order with Exit Type ' + tradingEngineOrder.exitType.value]) + } + } + } + + function feesPaidSimulation() { + /* + The way the Fess Paid are calculated is as follows: From the order size we apply the % of fee, + that would give us the total fees for that order. To that we apply the % filled of the orders, + that give use the final result of the fees paid for the current % filled. + + But before that, we will see if there is an specific definition on how to simulate the fees for + this order, or if there is not, we use the fees session parameters definitions. + */ + + /* Based on the Trading System Definition */ + if (tradingSystemOrder.simulatedExchangeEvents !== undefined) { + if (tradingSystemOrder.simulatedExchangeEvents.simulatedFeesPaid !== undefined) { + if (tradingSystemOrder.simulatedExchangeEvents.simulatedFeesPaid.config.percentage !== undefined) { + applyFeePercentage(tradingEngineOrder, tradingSystemOrder, tradingSystemOrder.simulatedExchangeEvents.simulatedFeesPaid.config.percentage) + return + } + } + } + + /* + Another way to simulate the Fees Paid is by using the Session Paremeters configuration for Fees. + */ + switch (tradingEngineOrder.type) { + case 'Market Order': { + applyFeePercentage(tradingEngineOrder, tradingSystemOrder, sessionParameters.feeStructure.config.taker) + break + } + case 'Limit Order': { + applyFeePercentage(tradingEngineOrder, tradingSystemOrder, sessionParameters.feeStructure.config.maker) + break + } + } + } + + function sizeFilledSimulation() { + /* Size Filled */ + tradingEngineOrder.orderBaseAsset.sizeFilled.value = + tradingEngineOrder.orderBaseAsset.size.value * + tradingEngineOrder.orderStatistics.percentageFilled.value / 100 + + tradingEngineOrder.orderQuotedAsset.sizeFilled.value = + tradingEngineOrder.orderQuotedAsset.size.value * + tradingEngineOrder.orderStatistics.percentageFilled.value / 100 + + tradingEngineOrder.orderBaseAsset.sizeFilled.value = global.PRECISE(tradingEngineOrder.orderBaseAsset.sizeFilled.value, 10) + tradingEngineOrder.orderQuotedAsset.sizeFilled.value = global.PRECISE(tradingEngineOrder.orderQuotedAsset.sizeFilled.value, 10) + } + } + + async function checkExchangeEvents(tradingEngineStage, tradingSystemOrder, tradingEngineOrder) { + + /* Filter by Session Type */ + switch (bot.SESSION.type) { + case 'Backtesting Session': { + return true + } + case 'Live Trading Session': { + break + } + case 'Fordward Testing Session': { + break + } + case 'Paper Trading Session': { + return true + } + } + + let order = await exchangeAPIModule.getOrder(tradingSystemOrder, tradingEngineOrder) + + if (order === undefined) { + tradingSystem.warnings.push([tradingSystemOrder.id, 'Could not verify the status of this order at the exchange.']) + return false + } + + const AT_EXCHANGE_STATUS = { + OPEN: 'open', + CLOSED: 'closed', + CANCELLED: 'canceled' + } + + /* Status Checks */ + if (order.remaining === 0 && order.status === AT_EXCHANGE_STATUS.CLOSED) { + /* Close this Order */ + tradingEngineOrder.status.value = 'Closed' + tradingEngineOrder.exitType.value = 'Filled' + + /* Initialize this */ + tradingEngine.current.episode.distanceToEvent.closeOrder.value = 1 + + await updateEndsWithCycle(tradingEngineOrder) + tradingSystem.infos.push([tradingSystemOrder.id, 'checkExchangeEvents -> Closing Order with Exit Type ' + tradingEngineOrder.exitType.value]) + + await syncWithExchange(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, order) + return + } + + if (order.remaining > 0 && order.status === AT_EXCHANGE_STATUS.CLOSED) { + /* Close this Order */ + tradingEngineOrder.status.value = 'Closed' + tradingEngineOrder.exitType.value = 'Closed at the Exchange' + /* Initialize this */ + tradingEngine.current.episode.distanceToEvent.closeOrder.value = 1 + + await updateEndsWithCycle(tradingEngineOrder) + tradingSystem.infos.push([tradingSystemOrder.id, 'checkExchangeEvents -> Closing Order with Exit Type ' + tradingEngineOrder.exitType.value]) + + await syncWithExchange(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, order) + await recalculateStageSize(tradingEngineStage, tradingEngineOrder) + return + } + + if (order.status === AT_EXCHANGE_STATUS.CANCELLED) { + /* Close this Order */ + tradingEngineOrder.status.value = 'Closed' + /* + We must be carefull here not to overide an already defined exitType. It can happen + for instance that the order was cancellerd from the bot, but veryfing the cancellation + was not possible because of a connection to the exchange problem. In that case + the exit type was defined but the order was kept open until the verification could be done. + */ + if (tradingEngineOrder.exitType.value === tradingEngineOrder.exitType.config.initialValue) { + tradingEngineOrder.exitType.value = 'Cancelled at the Exchange' + } + /* Initialize this */ + tradingEngine.current.episode.distanceToEvent.closeOrder.value = 1 + + await updateEndsWithCycle(tradingEngineOrder) + tradingSystem.infos.push([tradingSystemOrder.id, 'checkExchangeEvents -> Closing Order with Exit Type ' + tradingEngineOrder.exitType.value]) + + await syncWithExchange(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, order) + await recalculateStageSize(tradingEngineStage, tradingEngineOrder) + return + } + + /* + If the order happens to be at least partially filled, there is a syncronization work + we need to do, that includes discovering which is the Actual Rate the order is being filled, + the Fees Paid and many other thing we need to account for. + */ + if (order.filled > 0) { + await syncWithExchange(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, order) + } + + /* + Forced Cancellation Check: Here we check if we need to cancel this order because the + stage is closing. + */ + if (tradingEngineStage.status.value === 'Closing' && tradingEngineOrder.status.value !== 'Closed') { + await exchangeCancelOrder(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, 'Closing Stage') + } + + return true + } + + async function syncWithExchange(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, order) { + + let previousBaseAssetSize = tradingEngineOrder.orderBaseAsset.size.value + let previousQuotedAssetSize = tradingEngineOrder.orderQuotedAsset.size.value + let previousBaseAssetSizeFilled = tradingEngineOrder.orderBaseAsset.sizeFilled.value + let previousQuotedAssetSizeFilled = tradingEngineOrder.orderQuotedAsset.sizeFilled.value + let previousBaseAssetFeesPaid = tradingEngineOrder.orderBaseAsset.feesPaid.value + let previousQuotedAssetFeesPaid = tradingEngineOrder.orderQuotedAsset.feesPaid.value + + await actualSizeCalculation() + await actualRateCalculation() + await percentageFilledCalculation() + await feesPaidCalculation() + await sizeFilledCalculation() + + await doTheAccounting( + tradingEngineStage, + tradingSystemOrder, + tradingEngineOrder, + previousBaseAssetSizeFilled, + previousQuotedAssetSizeFilled, + previousBaseAssetFeesPaid, + previousQuotedAssetFeesPaid + ) + + return + + async function actualSizeCalculation() { + /* + When we submit the order to the exchange, we do it specifying the order size + in Base Asset. The exchange might take that size or might change it a little + bit if for example, if it does not accept as many decimals as we are sending. + If we identify the situation in which the size accepted is different than the + size we have accounted for, we need to make several adjustments so that the + accounting syncronizes with reality. + */ + if (tradingEngineOrder.orderBaseAsset.size.value === order.amount) { return } + /* + We will sync the Base Asset size, and recalculate the Quoted Asset size too. + */ + tradingEngineOrder.orderBaseAsset.size.value = order.amount + tradingEngineOrder.orderQuotedAsset.size.value = tradingEngineOrder.orderBaseAsset.size.value * tradingEngineOrder.rate.value + + tradingEngineOrder.orderBaseAsset.size.value = global.PRECISE(tradingEngineOrder.orderBaseAsset.size.value, 10) + tradingEngineOrder.orderQuotedAsset.size.value = global.PRECISE(tradingEngineOrder.orderQuotedAsset.size.value, 10) + /* + Finaly we need to unaccount the previous size placed and correctly account + for the the new sizes we now have. + */ + tradingEngineStage.stageBaseAsset.sizePlaced.value = + tradingEngineStage.stageBaseAsset.sizePlaced.value - + previousBaseAssetSize + + tradingEngineStage.stageBaseAsset.sizePlaced.value = + tradingEngineStage.stageBaseAsset.sizePlaced.value + + tradingEngineOrder.orderBaseAsset.size.value + + tradingEngineStage.stageQuotedAsset.sizePlaced.value = + tradingEngineStage.stageQuotedAsset.sizePlaced.value - + previousQuotedAssetSize + + tradingEngineStage.stageQuotedAsset.sizePlaced.value = + tradingEngineStage.stageQuotedAsset.sizePlaced.value + + tradingEngineOrder.orderQuotedAsset.size.value + + tradingEngineStage.stageBaseAsset.sizePlaced.value = global.PRECISE(tradingEngineStage.stageBaseAsset.sizePlaced.value, 10) + tradingEngineStage.stageQuotedAsset.sizePlaced.value = global.PRECISE(tradingEngineStage.stageQuotedAsset.sizePlaced.value, 10) + + previousBaseAssetSize = tradingEngineOrder.orderBaseAsset.size.value + previousQuotedAssetSize = tradingEngineOrder.orderQuotedAsset.size.value + } + + async function actualRateCalculation() { + /* + Actual Rate Calculation: Let's remember that the exchange may not take the rate + we send it with the order (in Limit orders) and for any reason change it a little bit. + For example we might have sent a rate with too many decimals and the exchange truncate + them. Another thing that might happen is that we send a rate that is matching orders already + at the order book. In this case we would get an actual rate not only different than the one + we sent, but also, better since the trading engine inside the exchange would match out orders + with the first orders best by price. + + In the case of Market Orders we don't even send a rate. For all those reason + we get and store the Actual Rate at which the order was filled. + */ + if (order.average !== undefined) { + /* + We will use the average whenever is available. + */ + tradingEngineOrder.orderStatistics.actualRate.value = order.average + } else { + /* + Otherwise we use the order.price. + */ + tradingEngineOrder.orderStatistics.actualRate.value = order.price + } + + tradingEngineOrder.orderStatistics.actualRate.value = global.PRECISE(tradingEngineOrder.orderStatistics.actualRate.value, 10) + + if (tradingEngineOrder.orderStatistics.actualRate.value === tradingEngineOrder.rate.value) { return } + /* + Now we know the Actual Rate at which the order was filled. Since the actual rate + is not the same as the Rate we defined for the order, we need to syncronize + the Order Size for Quoted Asset since it was calculated with the Order Size that we + now know it is not the once really used at the exchange. We will recalculate the + Order Size in Quoted Asset and not in Base Asset, since the Order Size in Base Asset + is the one we sent to the exchange, so that is fixed, regardless of how we initially + got the Order Size in Base Asset, eigher from direct imput from the user or calculated + from the Order Size in Quoted Asset input it by the user. So here we go. + */ + tradingEngineOrder.orderQuotedAsset.size.value = tradingEngineOrder.orderBaseAsset.size.value * tradingEngineOrder.orderStatistics.actualRate.value + tradingEngineOrder.orderQuotedAsset.size.value = global.PRECISE(tradingEngineOrder.orderQuotedAsset.size.value, 10) + /* + Great, this up-to-date order size in Base Asset and the Actual Rate can now be used for example to calculate + the orders fees in Quoted Assets, and it is perfectly accurate. The next problem + we need to fix is that the sizePlaced for Quoted Asset that we already have calculated + was based on the Order Rate, not the Actual Rate, so we need to fix that by anuncounting + the previous size and accounting the new one, all this only for Quoted Asset. + */ + tradingEngineStage.stageQuotedAsset.sizePlaced.value = + tradingEngineStage.stageQuotedAsset.sizePlaced.value - + previousQuotedAssetSize + + tradingEngineStage.stageQuotedAsset.sizePlaced.value = + tradingEngineStage.stageQuotedAsset.sizePlaced.value + + tradingEngineOrder.orderQuotedAsset.size.value + + tradingEngineStage.stageQuotedAsset.sizePlaced.value = global.PRECISE(tradingEngineStage.stageQuotedAsset.sizePlaced.value, 10) + } + + async function percentageFilledCalculation() { + /* Percentage Filled Calculation */ + tradingEngineOrder.orderStatistics.percentageFilled.value = order.filled * 100 / (order.filled + order.remaining) + tradingEngineOrder.orderStatistics.percentageFilled.value = global.PRECISE(tradingEngineOrder.orderStatistics.percentageFilled.value, 10) + } + + async function feesPaidCalculation() { + /* + The exchange fees are taken from the Base Asset or the Quoted Asset depending if we + are buying or selling. Within the order information received we can not see the fees paid so we need to + calculate them by ourselves. To do this it is needed to be used the Session Fees Parameters. + */ + switch (tradingEngineOrder.type) { + case 'Market Order': { + await applyFeePercentage(tradingEngineOrder, tradingSystemOrder, sessionParameters.feeStructure.config.taker) + break + } + case 'Limit Order': { + await applyFeePercentage(tradingEngineOrder, tradingSystemOrder, sessionParameters.feeStructure.config.maker) + break + } + } + } + + async function sizeFilledCalculation() { + /* + CCXT returns order.filled with an amount denominated in Base Asset. We will + take it from there for our Order Base Asset. The amount in order.filled does + not account for the fees, which is exactly what we need in this case. + */ + tradingEngineOrder.orderBaseAsset.sizeFilled.value = order.filled + tradingEngineOrder.orderBaseAsset.sizeFilled.value = global.PRECISE(tradingEngineOrder.orderBaseAsset.sizeFilled.value, 10) + /* + For Quoted Asset, CCXT does not return any field with the size filled, so we + need to calculate that by ourselves. Since we know the Size in Quoted Asset thet + is already adjusted with the Actual Rate and the Percentage Filled, we will use all + this in this formula to get the Size Filled in Quoted Asset. + */ + tradingEngineOrder.orderQuotedAsset.sizeFilled.value = + tradingEngineOrder.orderQuotedAsset.size.value * tradingEngineOrder.orderStatistics.percentageFilled.value / 100 + + tradingEngineOrder.orderQuotedAsset.sizeFilled.value = global.PRECISE(tradingEngineOrder.orderQuotedAsset.sizeFilled.value, 10) + } + } + + async function doTheAccounting( + tradingEngineStage, + tradingSystemOrder, + tradingEngineOrder, + previousBaseAssetSizeFilled, + previousQuotedAssetSizeFilled, + previousBaseAssetFeesPaid, + previousQuotedAssetFeesPaid + ) { + + await updateStageAssets() + await updateBalances() + + async function updateStageAssets() { + /* Stage Base Asset: Undo the previous accounting */ + tradingEngineStage.stageBaseAsset.sizeFilled.value = + tradingEngineStage.stageBaseAsset.sizeFilled.value - + previousBaseAssetSizeFilled + + tradingEngineStage.stageBaseAsset.feesPaid.value = + tradingEngineStage.stageBaseAsset.feesPaid.value - + previousBaseAssetFeesPaid + + /* Stage Base Asset: Account the current filling and fees */ + tradingEngineStage.stageBaseAsset.sizeFilled.value = + tradingEngineStage.stageBaseAsset.sizeFilled.value + + tradingEngineOrder.orderBaseAsset.sizeFilled.value + + tradingEngineStage.stageBaseAsset.feesPaid.value = + tradingEngineStage.stageBaseAsset.feesPaid.value + + tradingEngineOrder.orderBaseAsset.feesPaid.value + + /* Stage Quote Asset: Undo the previous accounting */ + tradingEngineStage.stageQuotedAsset.sizeFilled.value = + tradingEngineStage.stageQuotedAsset.sizeFilled.value - + previousQuotedAssetSizeFilled + + tradingEngineStage.stageQuotedAsset.feesPaid.value = + tradingEngineStage.stageQuotedAsset.feesPaid.value - + previousQuotedAssetFeesPaid + + /* Stage Quote Asset: Account the current filling and fees */ + tradingEngineStage.stageQuotedAsset.sizeFilled.value = + tradingEngineStage.stageQuotedAsset.sizeFilled.value + + tradingEngineOrder.orderQuotedAsset.sizeFilled.value + + tradingEngineStage.stageQuotedAsset.feesPaid.value = + tradingEngineStage.stageQuotedAsset.feesPaid.value + + tradingEngineOrder.orderQuotedAsset.feesPaid.value + + tradingEngineStage.stageBaseAsset.sizeFilled.value = global.PRECISE(tradingEngineStage.stageBaseAsset.sizeFilled.value, 10) + tradingEngineStage.stageBaseAsset.feesPaid.value = global.PRECISE(tradingEngineStage.stageBaseAsset.feesPaid.value, 10) + + tradingEngineStage.stageQuotedAsset.sizeFilled.value = global.PRECISE(tradingEngineStage.stageQuotedAsset.sizeFilled.value, 10) + tradingEngineStage.stageQuotedAsset.feesPaid.value = global.PRECISE(tradingEngineStage.stageQuotedAsset.feesPaid.value, 10) + } + + async function updateBalances() { + /* Balances Update */ + switch (true) { + /* + Let's remember that for Buy orders, the fees are paid in Base Asset. So we + actually don't receive the whole Size Filled in Base Asset, but the Size + Filled minus the Fees Paid. For the case of Quoted Asset, we actually + need to susbstract the whole Size Filled from the balance. + */ + case tradingSystemOrder.type === 'Market Buy Order' || tradingSystemOrder.type === 'Limit Buy Order': { + + /* Balance Base Asset: Undo the previous accounting */ + tradingEngine.current.episode.episodeBaseAsset.balance.value = + tradingEngine.current.episode.episodeBaseAsset.balance.value - + previousBaseAssetSizeFilled + + previousBaseAssetFeesPaid + + /* Balance Base Asset: Account the current filling and fees */ + tradingEngine.current.episode.episodeBaseAsset.balance.value = + tradingEngine.current.episode.episodeBaseAsset.balance.value + + tradingEngineOrder.orderBaseAsset.sizeFilled.value - + tradingEngineOrder.orderBaseAsset.feesPaid.value + + /* Balance Quoted Asset: Undo the previous accounting */ + tradingEngine.current.episode.episodeQuotedAsset.balance.value = + tradingEngine.current.episode.episodeQuotedAsset.balance.value + + previousQuotedAssetSizeFilled + + /* Balance Quoted Asset: Account the current filling and fees */ + tradingEngine.current.episode.episodeQuotedAsset.balance.value = + tradingEngine.current.episode.episodeQuotedAsset.balance.value - + tradingEngineOrder.orderQuotedAsset.sizeFilled.value + break + } + /* + For Sell orders, the fees are being paid in Quote Asset, so we never + acutally receive the whole Filled Size in Quote Asset, but the Filled + Size minus the Fees Paid. But we do expend the whole Filled Size in + Base Asset. + */ + case tradingSystemOrder.type === 'Market Sell Order' || tradingSystemOrder.type === 'Limit Sell Order': { + + /* Balance Base Asset: Undo the previous accounting */ + tradingEngine.current.episode.episodeBaseAsset.balance.value = + tradingEngine.current.episode.episodeBaseAsset.balance.value + + previousBaseAssetSizeFilled + + /* Balance Base Asset: Account the current filling and fees */ + tradingEngine.current.episode.episodeBaseAsset.balance.value = + tradingEngine.current.episode.episodeBaseAsset.balance.value - + tradingEngineOrder.orderBaseAsset.sizeFilled.value + + /* Balance Quoted Asset: Undo the previous accounting */ + tradingEngine.current.episode.episodeQuotedAsset.balance.value = + tradingEngine.current.episode.episodeQuotedAsset.balance.value - + previousQuotedAssetSizeFilled + + previousQuotedAssetFeesPaid + + /* Balance Quoted Asset: Account the current filling and fees */ + tradingEngine.current.episode.episodeQuotedAsset.balance.value = + tradingEngine.current.episode.episodeQuotedAsset.balance.value + + tradingEngineOrder.orderQuotedAsset.sizeFilled.value - + tradingEngineOrder.orderQuotedAsset.feesPaid.value + break + } + } + tradingEngine.current.episode.episodeBaseAsset.balance.value = global.PRECISE(tradingEngine.current.episode.episodeBaseAsset.balance.value, 10) + tradingEngine.current.episode.episodeQuotedAsset.balance.value = global.PRECISE(tradingEngine.current.episode.episodeQuotedAsset.balance.value, 10) + } + } + + function simulateCancelOrder(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, exitType) { + + /* Filter by Session Type */ + switch (bot.SESSION.type) { + case 'Backtesting Session': { + break + } + case 'Live Trading Session': { + return + } + case 'Fordward Testing Session': { + return + } + case 'Paper Trading Session': { + break + } + } + + /* Close this Order */ + tradingEngineOrder.status.value = 'Closed' + tradingEngineOrder.exitType.value = exitType + + /* Initialize this */ + tradingEngine.current.episode.distanceToEvent.closeOrder.value = 1 + + updateEndsWithCycle(tradingEngineOrder) + tradingSystem.infos.push([tradingSystemOrder.id, 'simulateCancelOrder -> Closing Order with Exit Type ' + tradingEngineOrder.exitType.value]) + + recalculateStageSize(tradingEngineStage, tradingEngineOrder) + } + + async function exchangeCancelOrder(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, exitType) { + + /* Filter by Session Type */ + switch (bot.SESSION.type) { + case 'Backtesting Session': { + return + } + case 'Live Trading Session': { + break + } + case 'Fordward Testing Session': { + break + } + case 'Paper Trading Session': { + return + } + } + + /* Check if we can cancel the order at the Exchange. */ + let result = await exchangeAPIModule.cancelOrder(tradingSystemOrder, tradingEngineOrder) + if (result === true) { + + /* At this point we know which is the exit type for this order */ + tradingEngineOrder.exitType.value = exitType + + /* + Perhaps the order was filled a bit more between the last time we checked and when it was cancelled. + To sync our accounting, we need to check the order one last time and if it changed, fix it. + */ + + let order = await exchangeAPIModule.getOrder(tradingSystemOrder, tradingEngineOrder) + + if (order === undefined) { + tradingSystem.warnings.push([tradingSystemOrder.id, 'Could not verify the status of this order at the exchange, and syncronize the accounting.']) + return false + } + + /* + Close this Order. Note that we are not closing the order until we have the exchange + response with the order details that we can use to syncronize with our accoounting. + Otherwise if the connection to the exchange fails, we would have a closed order not + accounted in any way. + */ + tradingEngineOrder.status.value = 'Closed' + + /* Initialize this */ + tradingEngine.current.episode.distanceToEvent.closeOrder.value = 1 + + await updateEndsWithCycle(tradingEngineOrder) + tradingSystem.infos.push([tradingSystemOrder.id, 'exchangeCancelOrder -> Closing Order with Exit Type ' + tradingEngineOrder.exitType.value]) + + await syncWithExchange(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, order) + + await recalculateStageSize(tradingEngineStage, tradingEngineOrder) + } + } + + async function recalculateStageSize(tradingEngineStage, tradingEngineOrder) { + /* + Since the order is Cancelled, we need to adjust the stage sizePlaced. Remember that the Stage + Size Placed accumulates for each asset, the order size placed at the exchange. A cancelation means that + only the part filled can be considered placed, so we need to substract from the stage size + the remainder. To achieve this with the information we currently have, we are going first + to unaccount the order size, and the account only the sizeFilled + the feesPaid. + */ + tradingEngineStage.stageBaseAsset.sizePlaced.value = + tradingEngineStage.stageBaseAsset.sizePlaced.value - + tradingEngineOrder.orderBaseAsset.size.value + + tradingEngineStage.stageQuotedAsset.sizePlaced.value = + tradingEngineStage.stageQuotedAsset.sizePlaced.value - + tradingEngineOrder.orderQuotedAsset.size.value + + tradingEngineStage.stageBaseAsset.sizePlaced.value = + tradingEngineStage.stageBaseAsset.sizePlaced.value + + tradingEngineOrder.orderBaseAsset.sizeFilled.value + + tradingEngineStage.stageQuotedAsset.sizePlaced.value = + tradingEngineStage.stageQuotedAsset.sizePlaced.value + + tradingEngineOrder.orderQuotedAsset.sizeFilled.value + + tradingEngineStage.stageBaseAsset.sizePlaced.value = global.PRECISE(tradingEngineStage.stageBaseAsset.sizePlaced.value, 10) + tradingEngineStage.stageQuotedAsset.sizePlaced.value = global.PRECISE(tradingEngineStage.stageQuotedAsset.sizePlaced.value, 10) + } + + async function applyFeePercentage(tradingEngineOrder, tradingSystemOrder, feePercentage) { + switch (true) { + case tradingSystemOrder.type === 'Market Buy Order' || tradingSystemOrder.type === 'Limit Buy Order': { + /* + In this case the fees are taken from the Base Asset you receive. + */ + tradingEngineOrder.orderBaseAsset.feesPaid.value = + tradingEngineOrder.orderBaseAsset.size.value * + feePercentage / 100 * + tradingEngineOrder.orderStatistics.percentageFilled.value / 100 + break + } + case tradingSystemOrder.type === 'Market Sell Order' || tradingSystemOrder.type === 'Limit Sell Order': { + /* + In this case the fees are taken from the Quoted Asset you receive. + */ + tradingEngineOrder.orderQuotedAsset.feesPaid.value = + tradingEngineOrder.orderQuotedAsset.size.value * + feePercentage / 100 * + tradingEngineOrder.orderStatistics.percentageFilled.value / 100 + break + } + } + + tradingEngineOrder.orderBaseAsset.feesPaid.value = global.PRECISE(tradingEngineOrder.orderBaseAsset.feesPaid.value, 10) + tradingEngineOrder.orderQuotedAsset.feesPaid.value = global.PRECISE(tradingEngineOrder.orderQuotedAsset.feesPaid.value, 10) + } + + async function checkOrderEvent(event, order, executionAlgorithm, executionNode) { + if (event !== undefined) { + for (let k = 0; k < event.situations.length; k++) { + let situation = event.situations[k] + let passed + if (situation.conditions.length > 0) { + passed = true + } + + passed = tradingSystem.checkConditions(situation, passed) + + tradingSystem.values.push([situation.id, passed]) + if (passed) { + tradingSystem.highlights.push(situation.id) + tradingSystem.highlights.push(event.id) + tradingSystem.highlights.push(order.id) + tradingSystem.highlights.push(executionAlgorithm.id) + tradingSystem.highlights.push(executionNode.id) + + announcementsModule.makeAnnoucements(event) + return situation.name // if the event is triggered, we return the name of the situation that passed + } + } + } + } + + function updateEnds(tradingEngineOrder) { + if (tradingEngineOrder.status.value === 'Open') { + tradingEngineOrder.end.value = tradingEngine.current.episode.candle.end.value + } + } + + async function updateEndsWithCycle(tradingEngineOrder) { + tradingEngineOrder.end.value = tradingEngine.current.episode.cycle.end.value + } + + function updateCounters(tradingEngineOrder) { + if (tradingEngineOrder.status.value === 'Open') { + tradingEngineOrder.orderCounters.periods.value++ + } + } + + function updateStatistics(tradingEngineOrder) { + tradingEngineOrder.orderStatistics.days.value = tradingEngineOrder.orderCounters.periods.value * sessionParameters.timeFrame.config.value / global.ONE_DAY_IN_MILISECONDS + tradingEngineOrder.orderStatistics.days.value = global.PRECISE(tradingEngineOrder.orderStatistics.days.value, 10) + } + + function resetTradingEngineDataStructure(tradingEngineOrder, tradingSystemOrder, stageStatus) { + if (tradingEngineOrder.status.value === 'Closed') { + /* We reset the order data structure inside the Trading Engine to its initial value */ + tradingEngineModule.initializeNode(tradingEngineOrder) + if (tradingSystemOrder.config.spawnMultipleOrders !== true) { + /* + We close the lock so as to prevent this data structure to be used again during this same stage execution. + */ + if (stageStatus === 'Open') { + tradingEngineOrder.lock.value = 'Closed' + } + } + } + } + + function badDefinitionUnhandledException(err, message, node) { + tradingSystem.errors.push([node.id, message]) + + logger.write(MODULE_NAME, "[ERROR] -> " + message); + logger.write(MODULE_NAME, "[ERROR] -> node.name = " + node.name); + logger.write(MODULE_NAME, "[ERROR] -> node.type = " + node.type); + logger.write(MODULE_NAME, "[ERROR] -> node.config = " + JSON.stringify(node.config)); + if (err !== undefined) { + logger.write(MODULE_NAME, "[ERROR] -> err.stack = " + err.stack); + } + throw 'Please fix the problem and try again.' + } +} + diff --git a/TaskServer/LowFrequencyTrading/TradingOutput.js b/TaskServer/LowFrequencyTrading/TradingOutput.js new file mode 100644 index 000000000..1f582d090 --- /dev/null +++ b/TaskServer/LowFrequencyTrading/TradingOutput.js @@ -0,0 +1,233 @@ +exports.newTradingOutput = function newTradingOutput(bot, logger, tradingEngineModule, UTILITIES, FILE_STORAGE) { + /* + This module will load if necesary all the data outputs so that they can be appended with new + records if needed. After running the simulation, it will save all the data outputs. + */ + const MODULE_NAME = 'Trading Bot' + + let thisObject = { + initialize: initialize, + finalize: finalize, + start: start + } + + let utilities = UTILITIES.newCloudUtilities(logger) + let fileStorage = FILE_STORAGE.newFileStorage(logger) + + return thisObject + + function finalize() { + thisObject = undefined + utilities = undefined + fileStorage = undefined + commons = undefined + } + + function initialize() { + + } + + async function start(chart, timeFrame, timeFrameLabel, tradingProcessDate) { + try { + + if (timeFrame > global.dailyFilePeriods[0][0]) { + bot.processingDailyFiles = false + } else { + bot.processingDailyFiles = true + } + + /* Preparing everything for the Simulation */ + const TRADING_SIMULATION = require('./TradingSimulation.js') + let tradingSimulation = TRADING_SIMULATION.newTradingSimulation(bot, logger, tradingEngineModule, UTILITIES) + + let outputDatasets = global.NODE_BRANCH_TO_ARRAY(bot.processNode.referenceParent.processOutput, 'Output Dataset') + let outputDatasetsMap = new Map() + + if (bot.processingDailyFiles === true) { + /* + For Daily Files, we are going to initialize the outputs at the first execution + if we are not resuming, but also at every following execution except when + we are at the head of the market, because at the head of the market we need to + append more data to the same output files that already exists. + */ + if (bot.FIRST_EXECUTION === true && bot.RESUME === false) { + await initializeOutputs() + } else { + if (bot.simulationState.tradingEngine.current.episode.headOfTheMarket.value === true) { + await readFiles() + } else { + await initializeOutputs() + } + } + } else { + /* + Form Market Files, we are only going to initialize the outputs at the first run + and if we are not resuming execution. Subsequent runs means that we are at the + head of the market. Remember that backtests finishes the session once the reach + the final datetime. + */ + if (bot.FIRST_EXECUTION === true && bot.RESUME === false) { + await initializeOutputs() + } else { + await readFiles() + } + } + + await tradingSimulation.runSimulation( + chart, + outputDatasetsMap, + writeFiles + ) + + tradingSimulation.finalize() + return + + async function initializeOutputs() { + if (bot.processingDailyFiles) { + await initializeDailyFiles() + } else { + await initializeMarketFiles() + } + } + + async function initializeDailyFiles() { + for (let i = 0; i < outputDatasets.length; i++) { + let outputDatasetNode = outputDatasets[i] + let dataset = outputDatasetNode.referenceParent + + if (dataset.config.type === 'Daily Files') { + outputDatasetsMap.set(dataset.parentNode.config.codeName, []) + } + } + } + + async function initializeMarketFiles() { + for (let i = 0; i < outputDatasets.length; i++) { + let outputDatasetNode = outputDatasets[i] + let dataset = outputDatasetNode.referenceParent + + if (dataset.config.type === 'Market Files') { + outputDatasetsMap.set(dataset.parentNode.config.codeName, []) + } + } + } + + async function readFiles() { + /* + This bot have an output of files that it generates. At every call to the bot, it needs to read the previously generated + files in order to later append more information after the execution is over. Here in this function we are going to + read those output files and get them ready for appending content during the simulation. + */ + if (bot.processingDailyFiles) { + await readDailyFiles() + } else { + await readMarketFiles() + } + } + + async function readMarketFiles() { + for (let i = 0; i < outputDatasets.length; i++) { + let outputDatasetNode = outputDatasets[i] + let dataset = outputDatasetNode.referenceParent + + if (dataset.config.type === 'Market Files') { + + let fileName = 'Data.json' + let filePath = bot.filePathRoot + '/Output/' + bot.SESSION.folderName + '/' + dataset.parentNode.config.codeName + '/' + dataset.config.codeName + '/' + timeFrameLabel + + await readOutputFile(fileName, filePath, dataset.parentNode.config.codeName) + } + } + } + + async function readDailyFiles() { + for (let i = 0; i < outputDatasets.length; i++) { + let outputDatasetNode = outputDatasets[i] + let dataset = outputDatasetNode.referenceParent + + if (dataset.config.type === 'Daily Files') { + + let dateForPath = tradingProcessDate.getUTCFullYear() + '/' + utilities.pad(tradingProcessDate.getUTCMonth() + 1, 2) + '/' + utilities.pad(tradingProcessDate.getUTCDate(), 2); + let fileName = 'Data.json' + let filePath = bot.filePathRoot + '/Output/' + bot.SESSION.folderName + '/' + dataset.parentNode.config.codeName + '/' + dataset.config.codeName + '/' + timeFrameLabel + "/" + dateForPath + + await readOutputFile(fileName, filePath, dataset.parentNode.config.codeName) + } + } + } + + async function readOutputFile(fileName, filePath, productName) { + filePath += '/' + fileName + + let response = await fileStorage.asyncGetTextFile(filePath, true) + + if (response.err.message === 'File does not exist.') { + outputDatasetsMap.set(productName, []) + return + } + if (response.err.result !== global.DEFAULT_OK_RESPONSE.result) { + throw(response.err) + } + outputDatasetsMap.set(productName, JSON.parse(response.text)) + } + + async function writeFiles() { + /* + The output of files which were appended with information during the simulation execution, now needs to be saved. + */ + if (bot.processingDailyFiles) { + await writeDailyFiles() + } else { + await writeMarketFiles() + } + } + + async function writeMarketFiles() { + for (let i = 0; i < outputDatasets.length; i++) { + let outputDatasetNode = outputDatasets[i] + let dataset = outputDatasetNode.referenceParent + + if (dataset.config.type === 'Market Files') { + + let fileName = 'Data.json' + let filePath = bot.filePathRoot + '/Output/' + bot.SESSION.folderName + '/' + dataset.parentNode.config.codeName + '/' + dataset.config.codeName + '/' + timeFrameLabel + + await writeOutputFile(fileName, filePath, dataset.parentNode.config.codeName) + } + } + } + + async function writeDailyFiles() { + for (let i = 0; i < outputDatasets.length; i++) { + let outputDatasetNode = outputDatasets[i] + let dataset = outputDatasetNode.referenceParent + + if (dataset.config.type === 'Daily Files') { + + let dateForPath = tradingProcessDate.getUTCFullYear() + '/' + utilities.pad(tradingProcessDate.getUTCMonth() + 1, 2) + '/' + utilities.pad(tradingProcessDate.getUTCDate(), 2); + let fileName = 'Data.json' + let filePath = bot.filePathRoot + '/Output/' + bot.SESSION.folderName + '/' + dataset.parentNode.config.codeName + '/' + dataset.config.codeName + '/' + timeFrameLabel + "/" + dateForPath + + await writeOutputFile(fileName, filePath, dataset.parentNode.config.codeName) + } + } + } + + async function writeOutputFile(fileName, filePath, productName) { + filePath += '/' + fileName + let fileContent = JSON.stringify(outputDatasetsMap.get(productName)) + + let response = await fileStorage.asyncCreateTextFile(filePath, fileContent) + + if (response.err.result !== global.DEFAULT_OK_RESPONSE.result) { + throw(response.err) + } + } + + } catch (err) { + logger.write(MODULE_NAME, '[ERROR] start -> err = ' + err.stack) + throw(global.DEFAULT_FAIL_RESPONSE) + } + } +} + diff --git a/TaskServer/LowFrequencyTrading/TradingPosition.js b/TaskServer/LowFrequencyTrading/TradingPosition.js new file mode 100644 index 000000000..8476a4685 --- /dev/null +++ b/TaskServer/LowFrequencyTrading/TradingPosition.js @@ -0,0 +1,380 @@ +exports.newTradingPosition = function newTradingPosition(bot, logger, tradingEngineModule) { + /* + This module packages all functions related to Positions. + */ + const MODULE_NAME = 'Trading Position' + let thisObject = { + mantain: mantain, + reset: reset, + cycleBasedStatistics: cycleBasedStatistics, + openPosition: openPosition, + closingPosition: closingPosition, + closePosition: closePosition, + applyStopLossFormula: applyStopLossFormula, + applyTakeProfitFormula: applyTakeProfitFormula, + updateStopLoss: updateStopLoss, + updateTakeProfit: updateTakeProfit, + initialTargets: initialTargets, + updateEnds: updateEnds, + resetTradingEngineDataStructure: resetTradingEngineDataStructure, + updateCounters: updateCounters, + initialize: initialize, + finalize: finalize + } + + let tradingEngine + let tradingSystem + let sessionParameters + + return thisObject + + function initialize() { + tradingSystem = bot.simulationState.tradingSystem + tradingEngine = bot.simulationState.tradingEngine + sessionParameters = bot.SESSION.parameters + } + + function finalize() { + tradingEngine = undefined + tradingSystem = undefined + sessionParameters = undefined + } + + function mantain() { + updateCounters() + updateEnds() + } + + function reset() { + resetTradingEngineDataStructure() + } + + function openPosition(situationName) { + + /* Recording the opening at the Trading Engine Data Structure */ + tradingEngine.current.position.status.value = 'Open' + tradingEngine.current.position.serialNumber.value = tradingEngine.current.episode.episodeCounters.positions.value + 1 + tradingEngine.current.position.identifier.value = global.UNIQUE_ID() + tradingEngine.current.position.begin.value = tradingEngine.current.episode.candle.end.value + tradingEngine.current.position.beginRate.value = tradingEngine.current.episode.candle.close.value + tradingEngine.current.position.positionBaseAsset.beginBalance.value = tradingEngine.current.episode.episodeBaseAsset.balance.value + tradingEngine.current.position.positionQuotedAsset.beginBalance.value = tradingEngine.current.episode.episodeQuotedAsset.balance.value + tradingEngine.current.position.situationName.value = situationName + + /* Initializing Stop and Take Phase */ + tradingEngine.current.position.stopLoss.stopLossPhase.value = 1 + tradingEngine.current.position.takeProfit.takeProfitPhase.value = 1 + + /* Updating Episode Counters */ + tradingEngine.current.episode.episodeCounters.positions.value++ + + /* Inicializing this counter */ + tradingEngine.current.episode.distanceToEvent.takePosition.value = 1 + + /* Remember the balance we had before taking the position to later calculate profit or loss */ + tradingEngine.current.position.positionBaseAsset.beginBalance = tradingEngine.current.episode.episodeBaseAsset.balance.value + tradingEngine.current.position.positionQuotedAsset.beginBalance = tradingEngine.current.episode.episodeQuotedAsset.balance.value + } + + function closingPosition(exitType) { + tradingEngine.current.position.status.value = 'Closing' + tradingEngine.current.position.exitType.value = exitType + } + + function closePosition() { + tradingEngine.current.position.status.value = 'Closed' + tradingEngine.current.position.end.value = tradingEngine.current.episode.candle.end.value + tradingEngine.current.position.endRate.value = tradingEngine.current.episode.candle.close.value + tradingEngine.current.position.positionBaseAsset.endBalance.value = tradingEngine.current.episode.episodeBaseAsset.balance.value + tradingEngine.current.position.positionQuotedAsset.endBalance.value = tradingEngine.current.episode.episodeQuotedAsset.balance.value + + /* + Now that the position is closed, it is the right time to move this position from current to last at the Trading Engine data structure. + */ + tradingEngineModule.cloneValues(tradingEngine.current.position, tradingEngine.last.position) + + cycleBasedStatistics() + + /* Updating Hits & Fails */ + if (tradingEngine.current.position.positionBaseAsset.profitLoss.value > 0) { + tradingEngine.current.episode.episodeBaseAsset.hits.value++ + } + if (tradingEngine.current.position.positionBaseAsset.profitLoss.value < 0) { + tradingEngine.current.episode.episodeBaseAsset.fails.value++ + } + if (tradingEngine.current.position.positionQuotedAsset.profitLoss.value > 0) { + tradingEngine.current.episode.episodeQuotedAsset.hits.value++ + } + if (tradingEngine.current.position.positionQuotedAsset.profitLoss.value < 0) { + tradingEngine.current.episode.episodeQuotedAsset.fails.value++ + } + } + + function applyStopLossFormula(formulas, formulaId) { + tradingEngine.current.position.stopLoss.value = formulas.get(formulaId) + } + + function applyTakeProfitFormula(formulas, formulaId) { + tradingEngine.current.position.takeProfit.value = formulas.get(formulaId) + } + + function updateStopLoss(phase) { + tradingEngine.current.position.stopLoss.stopLossPhase.value = phase + } + + function updateTakeProfit(phase) { + tradingEngine.current.position.takeProfit.takeProfitPhase.value = phase + } + + function initialTargets(tradingSystemStageNode, tradingEngineStageNode) { + + if (tradingSystemStageNode.initialTargets === undefined) { + const message = 'Stage without Initial Targets node. Add one please.' + badDefinitionUnhandledException(undefined, message, tradingSystemStageNode) + } + + setTargetRate() + setTargetSize() + + function setTargetRate() { + if (tradingSystemStageNode.initialTargets.targetRate === undefined) { + const message = 'Target Rate Node not Found. Fix this please.' + badDefinitionUnhandledException(undefined, message, tradingSystemStageNode.initialTargets) + } + if (tradingSystemStageNode.initialTargets.targetRate.formula === undefined) { + const message = 'Formula of Target Rate Node not Found. Fix this please.' + badDefinitionUnhandledException(undefined, message, tradingSystemStageNode.initialTargets.targetRate) + } + + let value = tradingSystem.formulas.get(tradingSystemStageNode.initialTargets.targetRate.formula.id) + if (value === undefined) { + const message = 'Target Rate can not be undefined. Fix this please.' + badDefinitionUnhandledException(undefined, message, tradingSystemStageNode.initialTargets.targetRate.formula) + } + if (isNaN(value)) { + const message = 'Target Rate must be a number. Fix this please.' + badDefinitionUnhandledException(undefined, message, tradingSystemStageNode.initialTargets.targetRate.formula) + } + + switch (tradingSystemStageNode.type) { + case 'Open Stage': { + tradingEngine.current.position.entryTargetRate.value = global.PRECISE(value, 10) + break + } + case 'Close Stage': { + tradingEngine.current.position.exitTargetRate.value = global.PRECISE(value, 10) + break + } + } + } + + function setTargetSize() { + /* Basic Validation */ + if ( + tradingSystemStageNode.initialTargets.targetSizeInBaseAsset !== undefined && + tradingSystemStageNode.initialTargets.targetSizeInQuotedAsset !== undefined + ) { + const message = 'Only Target Size In Base Asset or Target Size In Quoted Asset is allowed. Remove one of them please.' + badDefinitionUnhandledException(undefined, message, tradingSystemStageNode) + } + + /* Position In Base Asset */ + if (tradingSystemStageNode.initialTargets.targetSizeInBaseAsset !== undefined) { + if (tradingSystemStageNode.initialTargets.targetSizeInBaseAsset.formula !== undefined) { + let value = tradingSystem.formulas.get(tradingSystemStageNode.initialTargets.targetSizeInBaseAsset.formula.id) + if (value === undefined) { + const message = 'Target Size In Base Asset cannot be undefined. Fix this please.' + badDefinitionUnhandledException(undefined, message, tradingSystemStageNode.initialTargets.targetSizeInBaseAsset.formula) + } + if (value === undefined) { + const message = 'Target Size In Base Asset cannot be zero. Fix this please.' + badDefinitionUnhandledException(undefined, message, tradingSystemStageNode.initialTargets.targetSizeInBaseAsset.formula) + } + + switch (tradingSystemStageNode.type) { + case 'Open Stage': { + tradingEngine.current.position.positionBaseAsset.entryTargetSize.value = global.PRECISE(value, 10) + tradingEngine.current.position.positionQuotedAsset.entryTargetSize.value = + global.PRECISE(value * tradingEngine.current.position.entryTargetRate.value, 10) + break + } + case 'Close Stage': { + tradingEngine.current.position.positionBaseAsset.exitTargetSize.value = global.PRECISE(value, 10) + tradingEngine.current.position.positionQuotedAsset.exitTargetSize.value = + global.PRECISE(value * tradingEngine.current.position.exitTargetRate.value, 10) + break + } + } + + /* Remember how the end user defined this stage. */ + tradingEngineStageNode.stageDefinedIn.value = 'Base Asset' + } else { + const message = 'You need to specify a Formula for this.' + badDefinitionUnhandledException(undefined, message, tradingSystemStageNode.initialTargets.targetSizeInBaseAsset) + } + } + + /* Position In Quoted Asset */ + if (tradingSystemStageNode.initialTargets.targetSizeInQuotedAsset !== undefined) { + if (tradingSystemStageNode.initialTargets.targetSizeInQuotedAsset.formula !== undefined) { + let value = tradingSystem.formulas.get(tradingSystemStageNode.initialTargets.targetSizeInQuotedAsset.formula.id) + if (value === undefined) { + const message = 'Target Size In Quoted Asset cannot be undefined. Fix this please.' + badDefinitionUnhandledException(undefined, message, tradingSystemStageNode.initialTargets.targetSizeInQuotedAsset.formula) + } + if (value === undefined) { + const message = 'Target Size In Quoted Asset cannot be zero. Fix this please.' + badDefinitionUnhandledException(undefined, message, tradingSystemStageNode.initialTargets.targetSizeInQuotedAsset.formula) + } + switch (tradingSystemStageNode.type) { + case 'Open Stage': { + tradingEngine.current.position.positionQuotedAsset.entryTargetSize.value = global.PRECISE(value, 10) + tradingEngine.current.position.positionBaseAsset.entryTargetSize.value = + global.PRECISE(value / tradingEngine.current.position.entryTargetRate.value, 10) + break + } + case 'Close Stage': { + tradingEngine.current.position.positionQuotedAsset.exitTargetSize.value = global.PRECISE(value, 10) + tradingEngine.current.position.positionBaseAsset.exitTargetSize.value = + global.PRECISE(value / tradingEngine.current.position.exitTargetRate.value, 10) + break + } + } + + /* Remember how the end user defined this stage. */ + tradingEngineStageNode.stageDefinedIn.value = 'Quoted Asset' + } else { + const errorText = 'You need to specify a Formula for this.' + badDefinitionUnhandledException(undefined, message, tradingSystemStageNode.initialTargets.targetSizeInQuotedAsset.formula) + } + } + } + } + + function updateEnds() { + if (tradingEngine.current.position.status.value === 'Open') { + tradingEngine.current.position.end.value = tradingEngine.current.episode.candle.end.value + tradingEngine.current.position.endRate.value = tradingEngine.current.episode.candle.close.value + tradingEngine.current.position.positionBaseAsset.endBalance.value = tradingEngine.current.episode.episodeBaseAsset.balance.value + tradingEngine.current.position.positionQuotedAsset.endBalance.value = tradingEngine.current.episode.episodeQuotedAsset.balance.value + } + } + + function resetTradingEngineDataStructure() { + if (tradingEngine.current.position.status.value === 'Closed') { + tradingEngineModule.initializeNode(tradingEngine.current.position) + } + } + + function updateCounters() { + if (tradingEngine.current.position.status.value === 'Open') { + tradingEngine.current.position.positionCounters.periods.value++ + } + } + + function cycleBasedStatistics() { + + calculateAssetsStatistics() + calculatePositionStatistics() + + function calculateAssetsStatistics() { + /* Profit Loss Calculation */ + tradingEngine.current.position.positionBaseAsset.profitLoss.value = + tradingEngine.current.episode.episodeBaseAsset.balance.value - + tradingEngine.current.position.positionBaseAsset.beginBalance + + tradingEngine.current.position.positionQuotedAsset.profitLoss.value = + tradingEngine.current.episode.episodeQuotedAsset.balance.value - + tradingEngine.current.position.positionQuotedAsset.beginBalance + + tradingEngine.current.position.positionBaseAsset.profitLoss.value = global.PRECISE(tradingEngine.current.position.positionBaseAsset.profitLoss.value, 10) + tradingEngine.current.position.positionQuotedAsset.profitLoss.value = global.PRECISE(tradingEngine.current.position.positionQuotedAsset.profitLoss.value, 10) + + /* ROI Calculation */ + tradingEngine.current.position.positionBaseAsset.ROI.value = + tradingEngine.current.position.positionBaseAsset.profitLoss.value * 100 / + tradingEngine.current.strategyOpenStage.stageBaseAsset.targetSize.value + + tradingEngine.current.position.positionQuotedAsset.ROI.value = + tradingEngine.current.position.positionQuotedAsset.profitLoss.value * 100 / + tradingEngine.current.strategyOpenStage.stageQuotedAsset.targetSize.value + + tradingEngine.current.position.positionBaseAsset.ROI.value = global.PRECISE(tradingEngine.current.position.positionBaseAsset.ROI.value, 10) + tradingEngine.current.position.positionQuotedAsset.ROI.value = global.PRECISE(tradingEngine.current.position.positionQuotedAsset.ROI.value, 10) + + /* Hit Fail Calculation */ + if (tradingEngine.current.position.positionBaseAsset.ROI.value > 0) { + tradingEngine.current.position.positionBaseAsset.hitFail.value = 'Hit' + } + if (tradingEngine.current.position.positionBaseAsset.ROI.value < 0) { + tradingEngine.current.position.positionBaseAsset.hitFail.value = 'Fail' + } + if (tradingEngine.current.position.positionBaseAsset.ROI.value === 0) { + tradingEngine.current.position.positionBaseAsset.hitFail.value = 'Even' + } + if (tradingEngine.current.position.positionQuotedAsset.ROI.value > 0) { + tradingEngine.current.position.positionQuotedAsset.hitFail.value = 'Hit' + } + if (tradingEngine.current.position.positionQuotedAsset.ROI.value < 0) { + tradingEngine.current.position.positionQuotedAsset.hitFail.value = 'Fail' + } + if (tradingEngine.current.position.positionQuotedAsset.ROI.value === 0) { + tradingEngine.current.position.positionQuotedAsset.hitFail.value = 'Even' + } + } + + function calculatePositionStatistics() { + /* Profit Loss Calculation */ + tradingEngine.current.position.positionStatistics.profitLoss.value = + ( + tradingEngine.current.episode.episodeBaseAsset.profitLoss.value * tradingEngine.current.position.endRate.value + + tradingEngine.current.episode.episodeQuotedAsset.profitLoss.value + ) + + tradingEngine.current.position.positionStatistics.profitLoss.value = global.PRECISE(tradingEngine.current.position.positionStatistics.profitLoss.value, 10) + + /* ROI Calculation */ + tradingEngine.current.position.positionStatistics.ROI.value = + ( + tradingEngine.current.position.positionStatistics.profitLoss.value + ) + * 100 / + ( + tradingEngine.current.position.positionBaseAsset.beginBalance * tradingEngine.current.position.beginRate.value + + tradingEngine.current.position.positionQuotedAsset.beginBalance + ) + tradingEngine.current.position.positionStatistics.ROI.value = global.PRECISE(tradingEngine.current.position.positionStatistics.ROI.value, 10) + + /* Hit Fail Calculation */ + if (tradingEngine.current.position.positionStatistics.ROI.value > 0) { + tradingEngine.current.position.positionStatistics.hitFail.value = 'Hit' + } + if (tradingEngine.current.position.positionStatistics.ROI.value < 0) { + tradingEngine.current.position.positionStatistics.hitFail.value = 'Fail' + } + if (tradingEngine.current.position.positionStatistics.ROI.value === 0) { + tradingEngine.current.position.positionStatistics.hitFail.value = 'Even' + } + + /* Days Calculation */ + tradingEngine.current.position.positionStatistics.days.value = + tradingEngine.current.position.positionCounters.periods.value * + sessionParameters.timeFrame.config.value / global.ONE_DAY_IN_MILISECONDS + + tradingEngine.current.position.positionStatistics.days.value = global.PRECISE(tradingEngine.current.position.positionStatistics.days.value, 10) + } + } + + function badDefinitionUnhandledException(err, message, node) { + tradingSystem.errors.push([node.id, message]) + + logger.write(MODULE_NAME, "[ERROR] -> " + message); + logger.write(MODULE_NAME, "[ERROR] -> node.name = " + node.name); + logger.write(MODULE_NAME, "[ERROR] -> node.type = " + node.type); + logger.write(MODULE_NAME, "[ERROR] -> node.config = " + JSON.stringify(node.config)); + if (err !== undefined) { + logger.write(MODULE_NAME, "[ERROR] -> err.stack = " + err.stack); + } + throw 'Please fix the problem and try again.' + } +} \ No newline at end of file diff --git a/TaskServer/LowFrequencyTrading/TradingProcess.js b/TaskServer/LowFrequencyTrading/TradingProcess.js new file mode 100644 index 000000000..bddb9883a --- /dev/null +++ b/TaskServer/LowFrequencyTrading/TradingProcess.js @@ -0,0 +1,786 @@ +exports.newTradingProcess = function newTradingProcess(bot, logger, UTILITIES) { + /* + This Module will load all the process data dependencies from files and send them downstream. + After execution, will save the time range and status report of the process. + */ + const FULL_LOG = true; + const MODULE_NAME = "Trading Process"; + const GMT_SECONDS = ':00.000 GMT+0000'; + + thisObject = { + initialize: initialize, + finalize: finalize, + start: start + }; + + let utilities = UTILITIES.newCloudUtilities(logger); + + let statusDependencies; + let dataDependenciesModule; + let dataFiles = new Map(); + let multiPeriodDataFiles = new Map(); + + const FILE_STORAGE = require('../FileStorage.js'); + let fileStorage = FILE_STORAGE.newFileStorage(logger); + + const TRADING_ENGINE_MODULE = require('./TradingEngine.js') + let tradingEngineModule = TRADING_ENGINE_MODULE.newTradingEngine(bot, logger) + + let TRADING_OUTPUT_MODULE = require("./TradingOutput") + let tradingOutputModule = TRADING_OUTPUT_MODULE.newTradingOutput(bot, logger, tradingEngineModule, UTILITIES, FILE_STORAGE) + + let processConfig; + + return thisObject; + + function initialize(pProcessConfig, pStatusDependencies, pDataDependencies, callBackFunction) { + try { + logger.fileName = MODULE_NAME + logger.initialize() + + statusDependencies = pStatusDependencies + dataDependenciesModule = pDataDependencies + processConfig = pProcessConfig + + tradingOutputModule.initialize() + + callBackFunction(global.DEFAULT_OK_RESPONSE) + + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] initialize -> err = " + err.stack); + callBackFunction(global.DEFAULT_FAIL_RESPONSE); + } + } + + function finalize() { + + tradingEngineModule.finalize() + tradingEngineModule = undefined + + tradingOutputModule.finalize() + tradingOutputModule = undefined + + dataFiles = undefined + multiPeriodDataFiles = undefined + statusDependencies = undefined + dataDependenciesModule = undefined + fileStorage = undefined + processConfig = undefined + thisObject = undefined + } + + async function start(callBackFunction) { + try { + let currentTimeFrame + let currentTimeFrameLabel + + /* Context Variables */ + let contextVariables = { + lastFile: undefined, // Datetime of the last file files sucessfully produced by this process. + dateBeginOfMarket: undefined, // Datetime of the first trade file in the whole market history. + dateEndOfMarket: undefined // Datetime of the last file available to be used as an input of this process. + }; + + getContextVariables() + + if (bot.FIRST_EXECUTION === true && bot.RESUME === false) { + /* + Here is where the Trading Engine and Trading Systems received are moved to the simulation state. + */ + bot.simulationState.tradingEngine = bot.TRADING_ENGINE + bot.simulationState.tradingSystem = bot.TRADING_SYSTEM + } + + /* We set up the Trading Engine Module. */ + tradingEngineModule.initialize() + + /* Initializing the Trading Process Date */ + if (bot.FIRST_EXECUTION === true && bot.RESUME === false) { + /* + This funcion is going to be called many times by the Trading Bot Loop. + Only during the first execution and when the User is not resuming the execution + of a stopped session / task; we are going to initialize the Process Date Time. + This variable tell us which day we are standing at, specially while working + with Daily Files. From this Date is that we are going to load the Daily Files. + */ + bot.simulationState.tradingEngine.current.episode.processDate.value = global.REMOVE_TIME(bot.SESSION.parameters.timeRange.config.initialDatetime).valueOf() + } + + /* + This is the Date that is going to be used across the execution of this Trading Process. + We need this because it has a different life cycle than the processData stored at the + Trading Engine data structure. This date has to remain the same during the whole execution + of the Trading Process until the end, inclusind the writting of Data Ranges and Status Reports. + The processDate of the Trading Engine data structure on the other hand can be changed during + the simulation loop, once we discover that all candles from a certain date have benn processed. + Here is the point where we sync one and the other. + */ + let tradingProcessDate = global.REMOVE_TIME(bot.simulationState.tradingEngine.current.episode.processDate.value) + await processSingleFiles() + + if (await processMarketFiles() === false) { + bot.sessionHeartBeat(undefined, undefined, 'Waiting for Data Mining to be run') + callBackFunction(global.DEFAULT_RETRY_RESPONSE) + return + } + /* + This is the Data Structure used at the Simulation with all indicator data. + We start creating it right here. + */ + let chart = {} + /* + Here we check if we need to get Daily Files or not. As an optimization, when + we are running on a Time Frame of 1hs or above, we are not going to load + dependencies on Daily Files. The way we recognize that is by checking if + we alreaady set a value to currentTimeFrame. We are also not going to loop + through days if we are processing market files. + */ + if (currentTimeFrame) { + /* We are processing Market Files */ + /* + With all the indicators data files loaded, we will build the chart object + data structure that will be used in user-defied conditions and formulas. + */ + bot.sessionHeartBeat(undefined, undefined, 'Waking up') + buildCharts(chart) + + if (checkThereAreCandles(chart) === true) { + bot.sessionHeartBeat(undefined, undefined, 'Running') + await generateOutput(chart) + bot.sessionHeartBeat(undefined, undefined, 'Saving') + await writeProcessFiles() + bot.sessionHeartBeat(undefined, undefined, 'Sleeping') + } else { + bot.sessionHeartBeat(undefined, undefined, 'Waiting for Data Mining to be up to date') + callBackFunction(global.DEFAULT_RETRY_RESPONSE) + return + } + + } else { + /* We are processing Daily Files */ + do { + global.EMIT_SESSION_STATUS(bot.SESSION_STATUS, bot.sessionKey) + /* + We update the Trading Process Date with the date calculated at the simulation. + We will use this date to load indicator and output files. After that we will + use it to save Output Files and later the Data Ranges. This is the point where + the date calculated by the Simulation is applied at the Trading Process Level. + */ + tradingProcessDate = global.REMOVE_TIME(bot.simulationState.tradingEngine.current.episode.processDate.value) + + if (checkStopTaskGracefully() === false) { break } + if (checkStopProcessing() === false) { break } + + bot.sessionHeartBeat(undefined, undefined, 'Waking up') + if (await processDailyFiles() === false) { + bot.sessionHeartBeat(undefined, undefined, 'Waiting for Data Mining to be run') + callBackFunction(global.DEFAULT_RETRY_RESPONSE) + return + } + /* + With all the indicators data files loaded, we will build the chart object + data structure that will be used in user-defied conditions and formulas. + */ + buildCharts(chart) + /* + The process of generating the output includes the trading simulation. + */ + if (checkThereAreCandles(chart) === true) { + bot.sessionHeartBeat(undefined, undefined, 'Running') + await generateOutput(chart) + bot.sessionHeartBeat(undefined, undefined, 'Saving') + await writeProcessFiles() + bot.sessionHeartBeat(undefined, undefined, 'Sleeping') + } else { + bot.sessionHeartBeat(undefined, undefined, 'Waiting for Data Mining to be up to date') + callBackFunction(global.DEFAULT_RETRY_RESPONSE) + return + } + /* + If for any reason the session was stopped, we will break this loop and exit the process. + */ + if (bot.STOP_SESSION === true) { break } + /* + When we get to the end of the market, we need to break this process loop in order + to let time pass, new information be collected from the exchange, new data built + into indicators, and eventually a new execution of this process. + */ + if (checkStopHeadOfTheMarket() === false) { break } + + } + while (true) + } + + checkIfSessionMustStop() + /* + Everything worked as expected. We return an OK code and wait for + the Bot Loop to call us again later. + */ + callBackFunction(global.DEFAULT_OK_RESPONSE) + + function checkThereAreCandles(chart) { + let sessionParameters = bot.SESSION.parameters + let propertyName = 'at' + sessionParameters.timeFrame.config.label.replace('-', '') + let candles = chart[propertyName].candles + + if (candles.length === 0) { + return false + } else { + return true + } + } + + function getContextVariables() { + try { + let thisReport; + let statusReport; + + /* We are going to use the start date as beging of market date. */ + contextVariables.dateBeginOfMarket = global.REMOVE_TIME(bot.SESSION.parameters.timeRange.config.initialDatetime) + /* + Here we get the status report from the bot who knows which is the end of the market. + */ + statusReport = statusDependencies.reportsByMainUtility.get("Market Ending Point") + + if (statusReport === undefined) { // This means the status report does not exist, that could happen for instance at the begining of a month. + logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> Status Report does not exist. Retrying Later. "); + callBackFunction(global.DEFAULT_RETRY_RESPONSE); + return + } + + if (statusReport.status === "Status Report is corrupt.") { + logger.write(MODULE_NAME, "[ERROR] start -> getContextVariables -> Can not continue because dependecy Status Report is corrupt. "); + callBackFunction(global.DEFAULT_RETRY_RESPONSE); + return + } + + thisReport = statusReport.file; + + if (thisReport.lastFile === undefined) { + logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> Undefined Last File. -> thisReport = " + JSON.stringify(thisReport)); + + let customOK = { + result: global.CUSTOM_OK_RESPONSE.result, + message: "Dependency not ready." + } + logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> customOK = " + customOK.message); + callBackFunction(customOK); + return + } + + contextVariables.dateEndOfMarket = new Date(thisReport.lastFile.valueOf()); + + /* Finally we get our own Status Report. */ + statusReport = statusDependencies.reportsByMainUtility.get("Self Reference") + + if (statusReport === undefined) { // This means the status report does not exist, that could happen for instance at the begining of a month. + logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> Status Report does not exist. Retrying Later. "); + callBackFunction(global.DEFAULT_RETRY_RESPONSE); + return + } + + if (statusReport.status === "Status Report is corrupt.") { + logger.write(MODULE_NAME, "[ERROR] start -> getContextVariables -> Can not continue because self dependecy Status Report is corrupt. Aborting Process."); + callBackFunction(global.DEFAULT_FAIL_RESPONSE); + return + } + + thisReport = statusReport.file; + bot.simulationState = thisReport.simulationState; + if (bot.simulationState === undefined) { bot.simulationState = {} } // This should happen only when there is no status report + + if (thisReport.lastFile !== undefined) { + if (bot.RESUME !== true) { + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Starting from the begining because bot has just started and resume execution was true."); } + startFromBegining(); + return + } + contextVariables.lastFile = new Date(thisReport.lastFile); + return + + } else { + /* + We are here becuse either: + 1. There is no status report + 2. There is no Last File (this happens on Market Files) + */ + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Starting from the begining of the market because own status report not found or lastFile was undefined."); } + startFromBegining(); + return + } + + function startFromBegining() { + contextVariables.lastFile = new Date(contextVariables.dateBeginOfMarket.getUTCFullYear() + "-" + (contextVariables.dateBeginOfMarket.getUTCMonth() + 1) + "-" + contextVariables.dateBeginOfMarket.getUTCDate() + " " + "00:00" + GMT_SECONDS); + + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> startFromBegining -> contextVariables.lastFile = " + contextVariables.lastFile); } + } + + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] start -> getContextVariables -> err = " + err.stack); + if (err.message === "Cannot read property 'file' of undefined") { + logger.write(MODULE_NAME, "[HINT] start -> getContextVariables -> Check the bot configuration to see if all of its statusDependencies declarations are correct. "); + logger.write(MODULE_NAME, "[HINT] start -> getContextVariables -> Dependencies loaded -> keys = " + JSON.stringify(statusDependencies.keys)); + } + callBackFunction(global.DEFAULT_FAIL_RESPONSE); + } + } + + async function processSingleFiles() { + dataFiles = new Map(); + + for (let dependencyIndex = 0; dependencyIndex < dataDependenciesModule.nodeArray.length; dependencyIndex++) { + let dependency = dataDependenciesModule.nodeArray[dependencyIndex]; + let datasetModule = dataDependenciesModule.dataSetsModulesArray[dependencyIndex]; + + if (datasetModule.node.config.codeName !== "Single-File") { + continue + } + + if (dataDependenciesModule.isItADepenency('atAnyTimeFrame', datasetModule.node.parentNode.config.singularVariableName) !== true) { + continue + } + + let fileName = "Data.json"; + let filePath = datasetModule.node.parentNode.config.codeName + '/' + datasetModule.node.config.codeName; + + /* We cut the async calls via callBacks at this point, so as to have a clearer code upstream */ + let response = await asyncGetDatasetFile(datasetModule, filePath, fileName) + + if (response.err.result !== global.DEFAULT_OK_RESPONSE.result) { + throw (response.err) + } + + let dataFile = JSON.parse(response.text); + dataFiles.set(dependency.id, dataFile); + } + + let mapKey = "Single Files" + multiPeriodDataFiles.set(mapKey, dataFiles) + } + + async function processMarketFiles() { + /* + We do market files first since if the simulation is run on daily files, there will + be a loop to get each of those files and we do not need that loop to reload market files. + + We will iterate through all posible timeFrames. + */ + for (let n = 0; n < global.marketFilesPeriods.length; n++) { + const timeFrame = global.marketFilesPeriods[n][0]; + const timeFrameLabel = global.marketFilesPeriods[n][1]; + + dataFiles = new Map(); + + if (bot.SESSION.parameters.timeFrame.config.label === timeFrameLabel) { + currentTimeFrame = global.marketFilesPeriods[n][0]; + currentTimeFrameLabel = global.marketFilesPeriods[n][1]; + } + for (let dependencyIndex = 0; dependencyIndex < dataDependenciesModule.nodeArray.length; dependencyIndex++) { + let dependency = dataDependenciesModule.nodeArray[dependencyIndex]; + let datasetModule = dataDependenciesModule.dataSetsModulesArray[dependencyIndex]; + + if (dependency.referenceParent.config.codeName !== "Multi-Period-Market") { + continue + } + + if (dataDependenciesModule.isItADepenency(timeFrameLabel, datasetModule.node.parentNode.config.singularVariableName) !== true) { + if (!(bot.SESSION.parameters.timeFrame.config.label === timeFrameLabel && datasetModule.node.parentNode.config.pluralVariableName === 'candles')) { + continue + } + } + + let fileName = "Data.json"; + let filePath = dependency.referenceParent.parentNode.config.codeName + '/' + dependency.referenceParent.config.codeName + "/" + timeFrameLabel; + + /* We cut the async calls via callBacks at this point, so as to have a clearer code upstream */ + let response = await asyncGetDatasetFile(datasetModule, filePath, fileName) + + if (response.err.message === 'File does not exist.') { + return false + } + + if (response.err.result !== global.DEFAULT_OK_RESPONSE.result) { + throw (response.err) + } + + let dataFile = JSON.parse(response.text); + let trimmedDataFile = trimDataFile(dataFile, datasetModule.node.parentNode.record) + dataFiles.set(dependency.id, trimmedDataFile); + + function trimDataFile(dataFile, recordDefinition) { + /* + Here we will discard all the records in a file that are outside of the current time range. + We will include the las element previous to the begining of the time range. This is needed + because during the simulation, the current period is not the open one, but the previous to + the open, and if we do not include the previous to the initial datetime there will be no + current objects at the begining of the simulation for many time frames. + */ + let beginIndex + let endIndex + let result = [] + for (let i = 0; i < recordDefinition.properties.length; i++) { + let property = recordDefinition.properties[i] + if (property.config.codeName === 'begin') { + beginIndex = i + } + if (property.config.codeName === 'end') { + endIndex = i + } + } + for (let i = 0; i < dataFile.length; i++) { + let dataRecord = dataFile[i] + let begin = dataRecord[beginIndex] + let end = dataRecord[endIndex] + if (end + timeFrame < bot.SESSION.parameters.timeRange.config.initialDatetime - 1) { continue } // /1 because we need the previous closed element + if (begin > bot.SESSION.parameters.timeRange.config.finalDatetime) { continue } + result.push(dataRecord) + } + return result + } + } + + let mapKey = global.marketFilesPeriods[n][1]; + multiPeriodDataFiles.set(mapKey, dataFiles) + } + return true + } + + async function processDailyFiles() { + /* Telling the world we are alive and doing well and which date we are processing right now. */ + let processingDateString = tradingProcessDate.getUTCFullYear() + '-' + utilities.pad(tradingProcessDate.getUTCMonth() + 1, 2) + '-' + utilities.pad(tradingProcessDate.getUTCDate(), 2); + bot.processHeartBeat(processingDateString, undefined, "Running...") + + /* + We will iterate through all posible timeFrames. + */ + for (let n = 0; n < global.dailyFilePeriods.length; n++) { + const timeFrame = global.dailyFilePeriods[n][0]; + const timeFrameLabel = global.dailyFilePeriods[n][1]; + + if (processConfig.framework.validtimeFrames !== undefined) { + let validPeriod = false; + for (let i = 0; i < processConfig.framework.validtimeFrames.length; i++) { + let period = processConfig.framework.validtimeFrames[i]; + if (period === timeFrameLabel) { validPeriod = true } + } + if (validPeriod === false) { + continue + } + } + + if (bot.SESSION.parameters.timeFrame.config.label === timeFrameLabel) { + currentTimeFrame = global.dailyFilePeriods[n][0]; + currentTimeFrameLabel = global.dailyFilePeriods[n][1]; + } + + dataFiles = new Map(); + + /* + We will iterate through all dependencies, in order to load the + files that later will end up at the chart data structure. + */ + for (let dependencyIndex = 0; dependencyIndex < dataDependenciesModule.nodeArray.length; dependencyIndex++) { + let dependency = dataDependenciesModule.nodeArray[dependencyIndex]; + let datasetModule = dataDependenciesModule.dataSetsModulesArray[dependencyIndex]; + + if (dependency.referenceParent.config.codeName !== "Multi-Period-Daily") { + continue + } + + if (dataDependenciesModule.isItADepenency(timeFrameLabel, datasetModule.node.parentNode.config.singularVariableName) !== true) { + if (!(bot.SESSION.parameters.timeFrame.config.label === timeFrameLabel && datasetModule.node.parentNode.config.pluralVariableName === 'candles')) { + continue + } + } + + let dateForPath = tradingProcessDate.getUTCFullYear() + '/' + utilities.pad(tradingProcessDate.getUTCMonth() + 1, 2) + '/' + utilities.pad(tradingProcessDate.getUTCDate(), 2); + let filePath + if (dependency.referenceParent.config.codeName === "Multi-Period-Daily") { + filePath = dependency.referenceParent.parentNode.config.codeName + '/' + dependency.referenceParent.config.codeName + "/" + timeFrameLabel + "/" + dateForPath; + } else { + filePath = dependency.referenceParent.parentNode.config.codeName + '/' + dependency.referenceParent.config.codeName + "/" + dateForPath; + } + let fileName = "Data.json"; + + /* We cut the async calls via callBacks at this point, so as to have a clearer code upstream */ + let response = await asyncGetDatasetFile(datasetModule, filePath, fileName) + + if (response.err.message === 'File does not exist.') { + return false + } + if (response.err.result !== global.DEFAULT_OK_RESPONSE.result) { + throw (response.err) + } + + let dataFile = JSON.parse(response.text); + dataFiles.set(dependency.id, dataFile); + } + + let mapKey = global.dailyFilePeriods[n][1]; + multiPeriodDataFiles.set(mapKey, dataFiles) + } + return true + } + + function checkStopHeadOfTheMarket() { + /* + We need to check if we have reached the head of the market in order to know + when to break the Daily Files Process loop and give time for a new candles / + indicators to be built and continue the processing once this process is called + again. + */ + if (bot.simulationState.tradingEngine.current.episode.headOfTheMarket.value === true) { + return false + } + } + + function checkStopTaskGracefully() { + /* Validation that we dont need to stop. */ + if (global.STOP_TASK_GRACEFULLY === true) { + return false + } + } + + function checkStopProcessing() { + /* Validation that we dont need to stop. */ + if (bot.STOP_SESSION === true) { + return false + } + } + + function buildCharts(chart) { + const COMMONS = require('../Commons.js') + let commons = COMMONS.newCommons(bot, logger, UTILITIES, FILE_STORAGE) + + let mainDependency = {} + + /* The first phase here is about checking that we have everything we need at the definition level. */ + let dataDependencies = global.NODE_BRANCH_TO_ARRAY(bot.processNode.referenceParent.processDependencies, 'Data Dependency') + /* + We will filter ourt declared dependencies that are not present in the workspace. + This will allow the user to have less Data Mines loaded at the workspace + that the ones that a Trading Mine depends on. + */ + dataDependencies = global.FILTER_OUT_NODES_WITHOUT_REFERENCE_PARENT_FROM_NODE_ARRAY(dataDependencies) + + if (commons.validateDataDependencies(dataDependencies, callBackFunction) !== true) { return } + + let outputDatasets = global.NODE_BRANCH_TO_ARRAY(bot.processNode.referenceParent.processOutput, 'Output Dataset') + if (commons.validateOutputDatasets(outputDatasets, callBackFunction) !== true) { return } + + /* The second phase is about transforming the inputs into a format that can be used to apply the user defined code. */ + for (let j = 0; j < global.marketFilesPeriods.length; j++) { + let timeFrameLabel = marketFilesPeriods[j][1] + let dataFiles = multiPeriodDataFiles.get(timeFrameLabel) + let products = {} + + if (dataFiles !== undefined) { + commons.inflateDatafiles(dataFiles, dataDependencies, products, mainDependency, currentTimeFrame) + + let propertyName = 'at' + timeFrameLabel.replace('-', '') + chart[propertyName] = products + } + } + + for (let j = 0; j < global.dailyFilePeriods.length; j++) { + let timeFrameLabel = global.dailyFilePeriods[j][1] + let dataFiles = multiPeriodDataFiles.get(timeFrameLabel) + let products = {} + + if (dataFiles !== undefined) { + commons.inflateDatafiles(dataFiles, dataDependencies, products, mainDependency, currentTimeFrame) + + let propertyName = 'at' + timeFrameLabel.replace('-', '') + chart[propertyName] = products + } + } + + /* Single Files */ + let dataFiles = multiPeriodDataFiles.get('Single Files') + let products = {} + + if (dataFiles !== undefined) { + commons.inflateDatafiles(dataFiles, dataDependencies, products, mainDependency, currentTimeFrame) + + let propertyName = 'atAnyTimeFrame' + chart[propertyName] = products + } + } + + async function generateOutput(chart) { + await tradingOutputModule.start( + chart, + currentTimeFrame, + currentTimeFrameLabel, + tradingProcessDate + ) + + /* + From here on, all other loops executions wont be the first execution and also + we will consider that it is not resuming a previous execution as well. + */ + bot.FIRST_EXECUTION = false + bot.RESUME = false + } + + async function writeProcessFiles() { + let outputDatasets = global.NODE_BRANCH_TO_ARRAY(bot.processNode.referenceParent.processOutput, 'Output Dataset') + + await writeTimeFramesFiles(currentTimeFrame, currentTimeFrameLabel) + await writeDataRanges() + + if (currentTimeFrame > global.dailyFilePeriods[0][0]) { + await writeMarketStatusReport(currentTimeFrameLabel) + } else { + await writeDailyStatusReport(currentTimeFrameLabel) + } + + async function writeDataRanges() { + for ( + let outputDatasetIndex = 0; + outputDatasetIndex < outputDatasets.length; + outputDatasetIndex++ + ) { + let productCodeName = outputDatasets[outputDatasetIndex].referenceParent.parentNode.config.codeName; + await writeDataRange(productCodeName); + } + + async function writeDataRange(productCodeName) { + let dataRange = { + begin: contextVariables.dateBeginOfMarket.valueOf(), + end: tradingProcessDate.valueOf() + global.ONE_DAY_IN_MILISECONDS + } + + let fileContent = JSON.stringify(dataRange); + let fileName = '/Data.Range.json'; + let filePath = bot.filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + productCodeName + "/" + 'Multi-Period-Daily' + fileName; + + let response = await fileStorage.asyncCreateTextFile(filePath, fileContent + '\n') + + if (response.err.result !== global.DEFAULT_OK_RESPONSE.result) { + throw (response.err) + } + + /* + Raise the event that the Data Range was Updated. + */ + let key = bot.dataMine + "-" + bot.codeName + "-" + productCodeName + "-" + bot.exchange + "-" + bot.market.baseAsset + '/' + bot.market.quotedAsset + let event = { + dateRange: dataRange + } + + global.EVENT_SERVER_CLIENT.raiseEvent(key, 'Data Range Updated', event) + } + } + + async function writeTimeFramesFiles(currentTimeFrame, currentTimeFrameLabel) { + + for ( + let outputDatasetIndex = 0; + outputDatasetIndex < outputDatasets.length; + outputDatasetIndex++ + ) { + let productCodeName = outputDatasets[outputDatasetIndex].referenceParent.parentNode.config.codeName; + await writeTimeFramesFile(currentTimeFrameLabel, productCodeName, 'Multi-Period-Daily') + await writeTimeFramesFile(currentTimeFrameLabel, productCodeName, 'Multi-Period-Market') + + async function writeTimeFramesFile(currentTimeFrameLabel, productCodeName, processType) { + + let timeFramesArray = [] + timeFramesArray.push(currentTimeFrameLabel) + + let fileContent = JSON.stringify(timeFramesArray) + let fileName = '/Time.Frames.json'; + + let filePath = bot.filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + productCodeName + "/" + processType + fileName; + + let response = await fileStorage.asyncCreateTextFile(filePath, fileContent + '\n') + if (response.err.result !== global.DEFAULT_OK_RESPONSE.result) { + throw (response.err) + } + } + } + } + + async function writeDailyStatusReport(currentTimeFrameLabel) { + let reportKey = bot.dataMine + "-" + bot.codeName + "-" + bot.processNode.referenceParent.config.codeName + let thisReport = statusDependencies.statusReports.get(reportKey) + + thisReport.file.lastExecution = bot.currentDaytime + thisReport.file.lastFile = tradingProcessDate + thisReport.file.simulationState = bot.simulationState + thisReport.file.timeFrames = currentTimeFrameLabel + await thisReport.asyncSave() + } + + async function writeMarketStatusReport(currentTimeFrameLabel) { + let reportKey = bot.dataMine + "-" + bot.codeName + "-" + bot.processNode.referenceParent.config.codeName + let thisReport = statusDependencies.statusReports.get(reportKey); + + thisReport.file.lastExecution = bot.processDatetime + thisReport.file.simulationState = bot.simulationState + thisReport.file.timeFrames = currentTimeFrameLabel + + logger.newInternalLoop(bot.codeName, bot.process, tradingProcessDate) + await thisReport.asyncSave() + } + } + + function checkIfSessionMustStop() { + + if (bot.SESSION.type === 'Backtesting Session') { + /* + Backtests needs only one execution of this process to complete. + */ + if (FULL_LOG === true) { logger.write(MODULE_NAME, '[IMPORTANT] checkIfSessionMustStop -> Backtesting Session Finished. Stopping the Session now. ') } + bot.SESSION.stop('Backtesting Session Finished.') + } + } + } + catch (err) { + /* An unhandled exception occured. in this case we return Fail and log the stack. */ + if (err.stack) { + logger.write(MODULE_NAME, "[ERROR] start -> Unhandled Exception. Will Abort this process. err = " + err.stack); + callBackFunction(global.DEFAULT_FAIL_RESPONSE); + return + } + + /* Some expected file was not found. We will return a RETRY code and move on. */ + if ((err.result === "Fail Because" && err.message === "File does not exist.") || err.code === 'The specified key does not exist.') { + logger.write(MODULE_NAME, "[ERROR] File not Found. Will Retry the Process Loop.") + callBackFunction(global.DEFAULT_RETRY_RESPONSE); + return + } + + /* Some other handled exception occured. We return Fail and move on. */ + if (err.result !== global.DEFAULT_OK_RESPONSE.result) { + logger.write(MODULE_NAME, "[ERROR] start -> Handled Exception. Will Abort this process. err = " + err.message); + callBackFunction(global.DEFAULT_FAIL_RESPONSE); + return + } + } + } + + function pad(str, max) { + str = str.toString(); + return str.length < max ? pad(" " + str, max) : str; + } + + async function asyncGetDatasetFile(datasetModule, filePath, fileName) { + + let promise = new Promise((resolve, reject) => { + + datasetModule.getTextFile(filePath, fileName, onFileReceived); + function onFileReceived(err, text) { + + let response = { + err: err, + text: text + } + resolve(response) + } + }); + + return promise + } +} diff --git a/TaskServer/LowFrequencyTrading/TradingRecords.js b/TaskServer/LowFrequencyTrading/TradingRecords.js new file mode 100644 index 000000000..f3de8553c --- /dev/null +++ b/TaskServer/LowFrequencyTrading/TradingRecords.js @@ -0,0 +1,393 @@ +exports.newTradingRecords = function newTradingRecords(bot, logger) { + /* + This module facilitates the appending of records to the output of the process. + */ + const MODULE_NAME = 'Trading Records' + + let thisObject = { + appendRecords: appendRecords, + initialize: initialize, + finalize: finalize + } + + let tradingEngine + let tradingSystem + let sessionParameters + let outputDatasetsMap + + return thisObject + + function initialize(pOutputDatasetsMap) { + tradingEngine = bot.simulationState.tradingEngine + tradingSystem = bot.simulationState.tradingSystem + sessionParameters = bot.SESSION.parameters + outputDatasetsMap = pOutputDatasetsMap // These are the files turned into arrays, stored in a Map by Product codeName. + } + + function finalize() { + tradingEngine = undefined + tradingSystem = undefined + sessionParameters = undefined + outputDatasetsMap = undefined + } + + function appendRecords() { + /* + Here we add records to the output files. At the product config property nodePath + we have a pointer to the node that have the information we need to extract. + Later, based on the product record definition we will extract each individual value. + */ + let outputDatasets = global.NODE_BRANCH_TO_ARRAY(bot.processNode.referenceParent.processOutput, 'Output Dataset') + + for (let i = 0; i < outputDatasets.length; i++) { + let outputDatasetNode = outputDatasets[i] + let dataset = outputDatasetNode.referenceParent + let product = dataset.parentNode + let outputDatasetArray = outputDatasetsMap.get(product.config.codeName) + + if (bot.processingDailyFiles === true && dataset.config.type === 'Daily Files') { + persistRecords() + } + + if (bot.processingDailyFiles === false && dataset.config.type === 'Market Files') { + persistRecords() + } + + function persistRecords() { + /* + There are a few products configured to be saved only at an specific cycle. + */ + if (product.config.saveAtCycle !== undefined) { + if (tradingEngine.current.episode.cycle.value !== product.config.saveAtCycle) { + return + } + } + + /* Clean the file from information of previous executions */ + //pruneOutputFile(product, outputDatasetArray, tradingEngine.current.episode.candle.end.value) + + /* Clean Open Records */ + if (product.config.saveAsObjects === true) { + for (let j = 0; j < product.record.properties.length; j++) { + let recordProperty = product.record.properties[j] + if (recordProperty.config.codeName === product.config.propertyNameThatDefinesObject) { + /* Remove Open Records */ + spliceOpenRecords(j, product, outputDatasetArray) + break + } + } + } + + /* + The product root can be a node or a node property of type array. + */ + let productRoot + try { + productRoot = eval(product.config.nodePath) + } catch (err) { + badDefinitionUnhandledException(err, 'Cannot get productRoot -> nodePath = ' + product.config.nodePath, product, undefined) + } + + if (product.config.nodePathType === 'array') { + /* + This means that the configured nodePath is not pointing to a node, but to a node property that is an array. + For that reason we will assume that each element of the array is a record to be outputed + */ + for (let index = 0; index < productRoot.length; index++) { + /* + The Product Root Node is the root of the node hiriarchy from where we are going to extract the record values. + */ + let productRootNode = productRoot[index] + let record = scanRecordDefinition(product, productRootNode, index) + if (record !== undefined) { + /* + We will add the index value to the record itself, so that the plotter can know to which + brach of the trading engine data structure it belongs. + */ + record.push(index) + persistIndividualRecord(record, product, outputDatasetArray) + } + } + } else { + /* + This means that the configured nodePath points to a single node, which is the one whose children constitutes + the record to be saved at the output file. + */ + /* + The Product Root Node is the root of the node hiriarchy from where we are going to extract the record values. + */ + let productRootNode = productRoot + let record = scanRecordDefinition(product, productRootNode) + if (record !== undefined) { + persistIndividualRecord(record, product, outputDatasetArray) + } + } + } + } + + function scanRecordDefinition(product, productRootNode, index) { + + let record = [] + for (let j = 0; j < product.record.properties.length; j++) { + let recordProperty = product.record.properties[j] + /* + The Property Root Node is the Root of the Hiriarchy branch we must find in order + to get the node where we are going to extract the value. Initially + we point it to the Product Root Node, because that is the default in case + a property does not have at its configuration a different nodePath configured + pointing to an specific Root for the property. + */ + let propertyRootNode = productRootNode + /* + If we find at the configuration a nodePath, then we take this path to find + the Root Node specifically for this property only. + */ + if (recordProperty.config.nodePath !== undefined) { + try { + propertyRootNode = eval(recordProperty.config.nodePath) + } catch (err) { + badDefinitionUnhandledException(err, 'Error Evaluation Record Property nodePath -> nodePath = ' + recordProperty.config.nodePath, product, recordProperty) + } + } + /* + The Target Node is the node from where we are going to exctract the value. + We will use the codeName of the Record Property to match it with + the any of the properties of the Root Node to get the Target Node. + */ + let targetNode + try { + targetNode = propertyRootNode[recordProperty.config.codeName] + } catch (err) { + badDefinitionUnhandledException(err, 'Error setting Target Node.', product, recordProperty) + } + /* + If the codeName of the Record Property can not match the name of the property at + the target node, the user can explicitly specify the property name at the configuration, + and in those cases we need to use that. This happens when there are many Record Properties + pointing to the same property at the Target Node. + */ + if (recordProperty.config.childProperty !== undefined) { + targetNode = propertyRootNode[recordProperty.config.childProperty] + } + /* + It can happen that intead of having a Node in targetNode what we have is an + array of nodes. We need to pick one of the elements of the array and for that + we use the Index value we find at the configuration of the Record Property. + */ + if (recordProperty.config.index !== undefined) { + try { + targetNode = targetNode[recordProperty.config.index] + } catch (err) { + badDefinitionUnhandledException(err, 'Error setting Target Node.', product, recordProperty) + } + } + /* + By Default the value is extracted from the value property of the Target Node. + But it might happen the the Target Node does not exist for example when there is an Array + of Nodes defined in the Record Properties but not all of them exist at the Root Node. + We filter out those cases by not extracting the value from the value property. + */ + let value = 0 // This is a default value, since we do not want null in files because it breakes JSON format. + if (targetNode !== undefined) { + if (targetNode.type !== undefined) { + /* + In this case the Target Node is really a node (since it has a type), so we extract the value + from its value property. + */ + value = targetNode.value + + if (recordProperty.config.decimals !== undefined) { + try { + value = Number(value.toFixed(recordProperty.config.decimals)) + } catch (err) { + badDefinitionUnhandledException(err, 'Error applying configured decimals.', product, recordProperty) + } + } + } else { + /* + In this case the Target Node is not really node, but the value itself. Se we return this as the + value of the Record Property. + */ + value = targetNode + } + } + + /* We are not going to add records where the begin or end are missing */ + if ( + recordProperty.config.codeName === 'begin' && value === 0 || + recordProperty.config.codeName === 'end' && value === 0 + ) { return } + + if (recordProperty.config.isString !== true && Array.isArray(value) !== true) { + value = safeNumericValue(value) + } + if (recordProperty.config.isString === true && Array.isArray(value) !== true) { + value = safeStringValue(value) + } + record.push(value) + } + return record + } + + function persistIndividualRecord(record, product, outputDatasetArray) { + + if (product.config.saveAsObjects === true) { + /* For saving objects we need to take care of a different set of rules. */ + for (let j = 0; j < product.record.properties.length; j++) { + let recordProperty = product.record.properties[j] + if (recordProperty.config.codeName === product.config.propertyNameThatDefinesObject) { + let propertyValue = record[j] + + if (bot.processingDailyFiles) { + if (product.config.doNotCutObjectInDays !== true) { + /* + By default we will cut objects in days. + */ + if (propertyValue !== product.config.propertyValueThatPreventsSavingObject) { + outputDatasetArray.push(record) + } + } else { + /* + When dealing with Daily Files, we need to avoid to write an open object at the last 'candle' of the day, + since the object will be duplicated on the next day. How do we know we are positioned at the last candle + of the day? Easy: the end of the candle must be 1 millisecod before the next day. That happens at any + time frame. + */ + let currentDay = new Date(tradingEngine.current.episode.candle.end.value) + let nextDay = new Date(tradingEngine.current.episode.candle.end.value + 1) + if (currentDay.getUTCDate() !== nextDay.getUTCDate()) { + /* + We will save the object only if it is closed, becasuse we are at the last candle of the day. + */ + if (propertyValue === product.config.propertyValueThatClosesObject) { + outputDatasetArray.push(record) + } + } else { + /* + When we are not at the end of the day, we will save the object normally, like in market files. + */ + if (propertyValue !== product.config.propertyValueThatPreventsSavingObject) { + outputDatasetArray.push(record) + } + } + } + } + else { + /* + For Market Files we will add a record everytime that proeprty value does not match this + */ + if (propertyValue !== product.config.propertyValueThatPreventsSavingObject) { + outputDatasetArray.push(record) + } + } + break + } + } + } else { + /* When we are not dealing with objects, we add every record to the existing file. */ + outputDatasetArray.push(record) + } + } + + function safeNumericValue(value) { + /* + The purpose of this function is to check that value variable does not have a value that + will later break the JSON format of files where this is going to be stored at. + */ + if (value === Infinity) { + value = Number.MAX_SAFE_INTEGER + } + if (value === undefined) { + value = 0 + } + if (value === null) { + value = 0 + } + if (isNaN(value)) { + value = 0 + } + return value + } + + function safeStringValue(value) { + /* + The purpose of this function is to check that value variable does not have a value that + will later break the JSON format of files where this is going to be stored at. + */ + if (value === undefined) { + value = '' + } + if (value === null) { + value = '' + } + return value + } + + function pruneOutputFile(product, outputFile, currentEnd) { + if (outputFile.isPrunned === true) { return } + /* + When a session is resumed, we will be potentially reading output files belonging to a previous session execution. + For that reason we need to prune all the records that are beyond the current candle. We do not delete everything + because we might be resuming a stopped session, which is fine. + */ + for (let i = 0; i < outputFile.length; i++) { + let record = outputFile[i] + + for (let j = 0; j < product.record.properties.length; j++) { + let recordProperty = product.record.properties[j] + if (recordProperty.config.codeName === 'end') { + let end = record[j] + if (end >= currentEnd) { + outputFile.splice(i, 1) + /* + This will execute the next prune call in the next iteration of the NodeJs event loop + allowing for other callbacks to be executed. It also prevents the error + 'Maximum call stack size exceeded', since the call is not placed at the call stack. + */ + setImmediate(pruneOutputFile, product, outputFile, currentEnd) + return + } + } + } + } + outputFile.isPrunned = true + } + + function spliceOpenRecords(j, product, outputDatasetArray) { + /* + Before adding records to the output file, we need to remove all open records, + because we will be adding the same records later with potentially + new or updated information. + */ + + for (let i = 0; i < outputDatasetArray.length; i++) { + let dataRecord = outputDatasetArray[i] + if (dataRecord !== undefined) { + let dataRecordValue = dataRecord[j] + if (dataRecordValue !== product.config.propertyValueThatClosesObject) { + outputDatasetArray.splice(i, 1) + spliceOpenRecords(j, product, outputDatasetArray) + return + } + } + } + } + } + + function badDefinitionUnhandledException(err, message, product, recordProperty) { + logger.write(MODULE_NAME, "[ERROR] appendRecords -> " + message); + logger.write(MODULE_NAME, "[ERROR] appendRecords -> product.name = " + product.name); + logger.write(MODULE_NAME, "[ERROR] appendRecords -> product.config = " + JSON.stringify(product.config)); + + if (recordProperty) { + logger.write(MODULE_NAME, "[ERROR] appendRecords -> recordProperty.name = " + recordProperty.name); + logger.write(MODULE_NAME, "[ERROR] appendRecords -> recordProperty.config.codeName = " + recordProperty.config.codeName); + logger.write(MODULE_NAME, "[ERROR] appendRecords -> recordProperty.config = " + JSON.stringify(recordProperty.config)); + } + + if (err) { + logger.write(MODULE_NAME, "[ERROR] appendRecords -> err.stack = " + err.stack); + } + throw 'Can not continue with a Definition Error like this.' + } +} \ No newline at end of file diff --git a/TaskServer/LowFrequencyTrading/TradingSimulation.js b/TaskServer/LowFrequencyTrading/TradingSimulation.js new file mode 100644 index 000000000..186f2872e --- /dev/null +++ b/TaskServer/LowFrequencyTrading/TradingSimulation.js @@ -0,0 +1,541 @@ +exports.newTradingSimulation = function newTradingSimulation(bot, logger, tradingEngineModule, UTILITIES) { + /* + This Module represents the trading simulacion. Escentially a loop through a set of candles and + the execution at each loop cycle of the Trading System Protocol. + */ + const FULL_LOG = true + const MODULE_NAME = 'Trading Simulation -> ' + bot.SESSION.name + + let thisObject = { + finalize: finalize, + runSimulation: runSimulation + } + + let utilities = UTILITIES.newCloudUtilities(bot, logger) + + return thisObject + + function finalize() { + thisObject = undefined + } + + async function runSimulation( + chart, + outputDatasetsMap, + writeFiles, + ) { + try { + + let tradingSystem = bot.simulationState.tradingSystem + let tradingEngine = bot.simulationState.tradingEngine + let sessionParameters = bot.SESSION.parameters + + if (FULL_LOG === true) { logger.write(MODULE_NAME, '[INFO] runSimulation -> initialDatetime = ' + sessionParameters.timeRange.config.initialDatetime) } + if (FULL_LOG === true) { logger.write(MODULE_NAME, '[INFO] runSimulation -> finalDatetime = ' + sessionParameters.timeRange.config.finalDatetime) } + + /* These are the Modules we will need to run the Simulation */ + const TRADING_RECORDS_MODULE = require('./TradingRecords.js') + let tradingRecordsModule = TRADING_RECORDS_MODULE.newTradingRecords(bot, logger) + tradingRecordsModule.initialize(outputDatasetsMap) + + const TRADING_SYSTEM_MODULE = require('./TradingSystem.js') + let tradingSystemModule = TRADING_SYSTEM_MODULE.newTradingSystem(bot, logger, tradingEngineModule) + tradingSystemModule.initialize() + + const TRADING_EPISODE_MODULE = require('./TradingEpisode.js') + let tradingEpisodeModule = TRADING_EPISODE_MODULE.newTradingEpisode(bot, logger, tradingEngineModule) + tradingEpisodeModule.initialize() + + /* Setting up the candles array: The whole simulation is based on the array of candles at the time-frame defined at the session parameters. */ + let propertyName = 'at' + sessionParameters.timeFrame.config.label.replace('-', '') + let candles = chart[propertyName].candles + + /* Variables needed for heartbeat functionality */ + let heartBeatDate + let previousHeartBeatDate + let firstLoopExecution = true + /* + Estimation of the Initial Candle to Process in this Run. + */ + let initialCandle + if (bot.FIRST_EXECUTION === true && bot.RESUME === false) { + /* Estimate Initial Candle based on the timeRage configured for the session. */ + let firstEnd = candles[0].end + let targetEnd = sessionParameters.timeRange.config.initialDatetime + let diff = targetEnd - firstEnd + let amount = diff / sessionParameters.timeFrame.config.value + + initialCandle = Math.trunc(amount) + if (initialCandle < 0) { initialCandle = 0 } + if (initialCandle > candles.length - 1) { + /* + This will happen when the sessionParameters.timeRange.config.initialDatetime is beyond the last candle available, + meaning that the dataSet needs to be updated with more up-to-date data. + */ + bot.SESSION.stop('Data is not up-to-date enough. Please start the Masters Data Mining Operation.') + if (FULL_LOG === true) { logger.write(MODULE_NAME, '[IMPORTANT] runSimulation -> Data is not up-to-date enough. Stopping the Session now. ' ) } + return + } + } else { + + /* + In this case we already have at the last candle index the next candle to be + processed. We will just continue with this candle. + */ + initialCandle = tradingEngine.current.episode.candle.index.value + } + /* + Main Simulation Loop + */ + /* We are going to use this to exit the loop if needed. */ + let breakLoop = false + + /* + We will assume that we are at the head of the market here. We do this + because the loop could be empty and no validation is going to run. If the + loop is not empty, then the lascCandle() check will override this value + depending on if we really are at the head of the market or not. + */ + tradingEngine.current.episode.headOfTheMarket.value = true + /* + This is the main simulation loop. It will go through the initial candle + until one less than the last candle available. We will never process the last + candle available since it is not considered a closed candle, but a candle + that still can change. So effectively will be processing all closed candles. + */ + for (let i = initialCandle; i < candles.length - 1; i++) { + tradingEngine.current.episode.candle.index.value = i + + /* This is the current candle the Simulation is working at. */ + let candle = candles[tradingEngine.current.episode.candle.index.value] + + if (FULL_LOG === true) { logger.write(MODULE_NAME, '[INFO] runSimulation -> loop -> Candle Begin @ ' + (new Date(candle.begin)).toLocaleString()) } + if (FULL_LOG === true) { logger.write(MODULE_NAME, '[INFO] runSimulation -> loop -> Candle End @ ' + (new Date(candle.end)).toLocaleString()) } + + tradingEngineModule.setCurrentCandle(candle) // We move the current candle we are standing at, to the trading engine data structure to make it available to anyone, including conditions and formulas. + + /* We emit a heart beat so that the UI can now where we are at the overal process.*/ + heartBeat() + + if (firstLoopExecution === true) { + tradingEpisodeModule.openEpisode() + firstLoopExecution = false + } + + if (checkInitialDatetime() === false) { + if (FULL_LOG === true) { logger.write(MODULE_NAME, '[INFO] runSimulation -> loop -> Candle Before the Initia Date Time @ ' + (new Date(candle.begin)).toLocaleString()) } + continue + } + + positionChartAtCurrentCandle() + + /* The chart was recalculated based on the current candle. */ + tradingSystemModule.updateChart(chart) + + /* + Do the stuff needed previous to the run like + Episode Counters and Statistics update. Mantaince is done + once per simulation candle. + */ + tradingSystemModule.mantain() + tradingEpisodeModule.mantain() + tradingEngineModule.mantain() + + /* + Run the first cycle of the Trading System. In this first cycle we + give some room so that orders can be canceled or filled and we can + write those records into the output memory. During this cycle new + orders can not be created, since otherwise the could be cancelled at + the second cycle without spending real time at the order book. + */ + tradingEngineModule.setCurrentCycle('First') + await runCycle() + + /* + We check if we need to stop before appending the records so that the stop + reason is also propery recorded. Note also that we check this after the first + cycle, where orders have not been submitted to the exchange yet, but we + had the chance to check for the status of placed orders or even cancel + the ones that needed cancellation. + */ + checkIfWeNeedToStopBetweenCycles() + + /* Add new records to the process output */ + tradingRecordsModule.appendRecords() + + if (breakLoop === true) { break } + /* + Run the second cycle of the Trading System. During this second run + some new orders might be created at slots freed up during the first + run. This allows for example for a Limit Order to be cancelled during the + first run, and the same Limit Order definition to spawn a new order + without the need to wait until the next candle. Orders can not be cancelled + during the second cycle. + */ + tradingEngineModule.setCurrentCycle('Second') + await runCycle() + + checkIfWeNeedToStopAfterBothCycles() + + /* Add new records to the process output */ + tradingRecordsModule.appendRecords() + + if (breakLoop === true) { break } + + async function runCycle() { + /* Reset Data Structures */ + tradingSystemModule.reset() + tradingEpisodeModule.reset() + tradingEngineModule.reset() + + let infoMessage = 'Processing candle # ' + tradingEngine.current.episode.candle.index.value + ' @ the ' + tradingEngine.current.episode.cycle.value + ' cycle.' + if (FULL_LOG === true) { logger.write(MODULE_NAME, '[INFO] runSimulation -> loop -> ' + infoMessage) } + tradingSystem.infos.push([tradingSystem.id, infoMessage]) + + await tradingSystemModule.run() + } + + function checkIfWeNeedToStopBetweenCycles() { + if (bot.STOP_SESSION === true) { + if (FULL_LOG === true) { logger.write(MODULE_NAME, '[INFO] runSimulation -> controlLoop -> We are going to stop here bacause we were requested to stop processing this session.') } + updateEpisode('Session Stopped') + breakLoop = true + return + } + + if (global.STOP_TASK_GRACEFULLY === true) { + if (FULL_LOG === true) { logger.write(MODULE_NAME, '[INFO] runSimulation -> controlLoop -> We are going to stop here bacause we were requested to stop processing this task.') } + updateEpisode('Task Stopped') + breakLoop = true + return + } + + if (checkFinalDatetime() === false) { + closeEpisode('Final Datetime Reached') + breakLoop = true + bot.SESSION.stop('Final Datetime Reached') + if (FULL_LOG === true) { logger.write(MODULE_NAME, '[IMPORTANT] runSimulation -> Final Datetime Reached. Stopping the Session now. ' ) } + return + } + + if (checkMinimunAndMaximunBalance() === false) { + closeEpisode('Min or Max Balance Reached') + breakLoop = true + bot.SESSION.stop('Min or Max Balance Reached') + if (FULL_LOG === true) { logger.write(MODULE_NAME, '[IMPORTANT] runSimulation -> Min or Max Balance Reached. Stopping the Session now. ' ) } + return + } + } + + function checkIfWeNeedToStopAfterBothCycles() { + if (checkNextCandle() === false) { + updateEpisode('All Candles Processed') + breakLoop = true + return + } + } + } + + tradingSystemModule.finalize() + tradingRecordsModule.finalize() + tradingEpisodeModule.finalize() + + tradingSystemModule = undefined + tradingRecordsModule = undefined + tradingEpisodeModule = undefined + + await writeFiles() + + function closeEpisode(exitType) { + tradingEpisodeModule.updateExitType(exitType) + tradingEpisodeModule.closeEpisode() + } + + function updateEpisode(exitType) { + tradingEpisodeModule.updateExitType(exitType) + } + + function heartBeat() { + let hartbeatText = '' + if (sessionParameters.heartbeats !== undefined) { + if (sessionParameters.heartbeats.config.date === true || sessionParameters.heartbeats.config.candleIndex === true) { + /* We will produce a simulation level heartbeat in order to inform the user this is running. */ + + heartBeatDate = new Date(Math.trunc(tradingEngine.current.episode.candle.begin.value / global.ONE_DAY_IN_MILISECONDS) * global.ONE_DAY_IN_MILISECONDS) + + let fromDate = new Date(sessionParameters.timeRange.config.initialDatetime) + let lastDate = new Date(sessionParameters.timeRange.config.finalDatetime) + + let currentDateString = heartBeatDate.getUTCFullYear() + '-' + utilities.pad(heartBeatDate.getUTCMonth() + 1, 2) + '-' + utilities.pad(heartBeatDate.getUTCDate(), 2) + let currentDate = new Date(heartBeatDate) + let percentage = global.getPercentage(fromDate, currentDate, lastDate) + + /* + Theere are a few tasks that we need to do only when the date changes, + otherwise it would be suboptimal. + */ + if (heartBeatDate.valueOf() !== previousHeartBeatDate) { + previousHeartBeatDate = heartBeatDate.valueOf() + + let processingDate = heartBeatDate.getUTCFullYear() + '-' + utilities.pad(heartBeatDate.getUTCMonth() + 1, 2) + '-' + utilities.pad(heartBeatDate.getUTCDate(), 2) + + if (FULL_LOG === true) { logger.write(MODULE_NAME, '[INFO] runSimulation -> loop -> Simulation ' + bot.sessionKey + ' Loop # ' + tradingEngine.current.episode.candle.index.value + ' @ ' + processingDate) } + + /* Logging to console and disk */ + if (global.areEqualDates(currentDate, new Date()) === false) { + logger.newInternalLoop(bot.codeName, bot.process, currentDate, percentage) + } + + /* Date only hearbeat */ + if (sessionParameters.heartbeats.config.date === true && sessionParameters.heartbeats.config.candleIndex === false) { + hartbeatText = hartbeatText + currentDateString + bot.processHeartBeat(hartbeatText, percentage) + return + } + } + + /* + When the Candle Index nees to be shown, then we can not send the hearbet + only when the dates changes, we have to send it for every candle. + It might also contain the date information. + */ + if (sessionParameters.heartbeats.config.candleIndex === true ) { + if (sessionParameters.heartbeats.config.date === true ) { + hartbeatText = hartbeatText + currentDateString + } + hartbeatText = hartbeatText + ' Candle # ' + tradingEngine.current.episode.candle.index.value + bot.processHeartBeat(hartbeatText, percentage) + } + } + } + } + + function positionChartAtCurrentCandle() { + /* + In conditions and Formulas, we want users to have an easy sintax to refer to indicators. In order to achieve that, we need the user to have + easy access to the current candle for instance, or the current bollinger band, meaning the one the Simulation is currently standing at. + For that reason we do the following processing, to have at the chart data structure the current objects of each indicator / time frame. + */ + let dataDependencies = global.NODE_BRANCH_TO_ARRAY(bot.processNode.referenceParent.processDependencies, 'Data Dependency') + dataDependencies = global.FILTER_OUT_NODES_WITHOUT_REFERENCE_PARENT_FROM_NODE_ARRAY(dataDependencies) + + /* Finding the Current Element on Market Files */ + if (bot.processingDailyFiles) { + for (let j = 0; j < global.dailyFilePeriods.length; j++) { + let mapKey = dailyFilePeriods[j][1] + let propertyName = 'at' + mapKey.replace('-', '') + let thisChart = chart[propertyName] + + for (let k = 0; k < dataDependencies.length; k++) { + let dataDependencyNode = dataDependencies[k] + if (dataDependencyNode.referenceParent.config.codeName !== 'Multi-Period-Daily') { continue } + let singularVariableName = dataDependencyNode.referenceParent.parentNode.config.singularVariableName + let pluralVariableName = dataDependencyNode.referenceParent.parentNode.config.pluralVariableName + if (thisChart[pluralVariableName] !== undefined) { + let currentElement = getElement(thisChart[pluralVariableName], 'Daily' + '-' + mapKey + '-' + pluralVariableName) + if (currentElement !== undefined) { + thisChart[singularVariableName] = currentElement + } + } + } + } + } + + /* Finding the Current Element on Market Files */ + for (let j = 0; j < global.marketFilesPeriods.length; j++) { + let mapKey = marketFilesPeriods[j][1] + let propertyName = 'at' + mapKey.replace('-', '') + let thisChart = chart[propertyName] + + for (let k = 0; k < dataDependencies.length; k++) { + let dataDependencyNode = dataDependencies[k] + if (dataDependencyNode.referenceParent.config.codeName !== 'Multi-Period-Market') { continue } + let singularVariableName = dataDependencyNode.referenceParent.parentNode.config.singularVariableName + let pluralVariableName = dataDependencyNode.referenceParent.parentNode.config.pluralVariableName + if (thisChart[pluralVariableName] !== undefined) { + let currentElement = getElement(thisChart[pluralVariableName], 'Market' + '-' + mapKey + '-' + pluralVariableName) + if (currentElement !== undefined) { + thisChart[singularVariableName] = currentElement + } + } + } + } + + /* Finding the Current Element At Single Files*/ + let propertyName = 'atAnyTimeFrame' + let thisChart = chart[propertyName] + + for (let k = 0; k < dataDependencies.length; k++) { + let dataDependencyNode = dataDependencies[k] + if (dataDependencyNode.referenceParent.config.codeName !== 'Single-File') { continue } + let singularVariableName = dataDependencyNode.referenceParent.parentNode.config.singularVariableName + let pluralVariableName = dataDependencyNode.referenceParent.parentNode.config.pluralVariableName + let elementArray = thisChart[pluralVariableName] + let currentElement + if (elementArray !== undefined) { + currentElement = elementArray[elementArray.length - 1] + } + thisChart[singularVariableName] = currentElement + } + } + + function getElement(pArray, datasetName) { + if (pArray === undefined) { return } + try { + let element + for (let i = 0; i < pArray.length; i++) { + element = pArray[i] + + if (tradingEngine.current.episode.candle.end.value === element.end) { // when there is an exact match at the end we take that element + return element + } else { + if ( + i > 0 && + element.end > tradingEngine.current.episode.candle.end.value + ) { + let previousElement = pArray[i - 1] + if (previousElement.end < tradingEngine.current.episode.candle.end.value) { + return previousElement // If one elements goes into the future of currentCandle, then we stop and take the previous element. + } else { + return + } + } + } + } + return + } catch (err) { + logger.write(MODULE_NAME, '[ERROR] runSimulation -> getElement -> datasetName = ' + datasetName) + logger.write(MODULE_NAME, '[ERROR] runSimulation -> getElement -> err = ' + err.stack) + throw (global.DEFAULT_FAIL_RESPONSE) + } + } + + function checkNextCandle() { + /* + We need to check that the candle we have just processed it is not the last candle. + The candle at the head of the market is already skipped from the loop because it has not closed yet. + Note: for Daily Files, this means that the last candle of each day will never be processed. + + The first +1 is because array indexes are based on 0. + The second +1 is because we need to compare the next candle (remember that the loops allways avoid the + last candle of the dataset available.) + */ + if (tradingEngine.current.episode.candle.index.value + 1 + 1 === candles.length ) { + /* + When processing daily files, we need a mechanism to turn from one day to the next one. + That mechanism is the one implemented here. If we detect that the next candle is the last candle of + the day, we will advance current process day one day. By doing so, during the next execution, the + simulation will receive the candles and indicators files of the next day. + */ + let candlesPerDay = global.ONE_DAY_IN_MILISECONDS / sessionParameters.timeFrame.config.value + if ( + bot.processingDailyFiles && + tradingEngine.current.episode.candle.index.value + 1 + 1 === candlesPerDay + ) { + /* + Here we found that the next candle of the dataset is the last candle of the day. + It is time to move to the next day so as to receive at the next execution, the indicator files from + the next day. At the same time we will reset the index to be pointing to + the first candle of the new dataset we shall receive. The first candle of the next day starts + at index 0, so we will position the index now at zero. + */ + tradingEngine.current.episode.candle.index.value = 0 + tradingEngine.current.episode.processDate.value = + tradingEngine.current.episode.processDate.value + global.ONE_DAY_IN_MILISECONDS + return false + } + + /* + We reached the head of the market but we are not at the last candle of a day during + Daily Files processing. We will advance to the next candle index anyways because in the + next execution it will likely have more candles at the dataset. And if it does not, + it will just wait there until it does. + */ + tradingEngine.current.episode.headOfTheMarket.value = true + tradingEngine.current.episode.candle.index.value++ + return false + } else { + + /* Wd did not reach the head of the market */ + tradingEngine.current.episode.headOfTheMarket.value = false + tradingEngine.current.episode.candle.index.value++ + return true + } + } + + function checkInitialDatetime() { + /* Here we check that the current candle is not before the initial datetime defined at the session parameters.*/ + if (tradingEngine.current.episode.candle.end.value < sessionParameters.timeRange.config.initialDatetime) { + if (FULL_LOG === true) { logger.write(MODULE_NAME, '[INFO] runSimulation -> checkInitialAndFinalDatetime -> Skipping Candle before the sessionParameters.timeRange.config.initialDatetime.') } + return false + } + return true + } + + function checkFinalDatetime() { + /* Here we check that the next candle is not after of the user-defined final datetime at the session parameters.*/ + if (tradingEngine.current.episode.candle.begin.value + sessionParameters.timeFrame.config.value > sessionParameters.timeRange.config.finalDatetime) { + if (FULL_LOG === true) { logger.write(MODULE_NAME, '[INFO] runSimulation -> checkInitialAndFinalDatetime -> Skipping Candle after the sessionParameters.timeRange.config.finalDatetime.') } + return false + } + return true + } + + function checkMinimunAndMaximunBalance() { + /* Checks for Minimun and Maximun Balance. We do the check while not inside any strategy only. */ + if ( + tradingEngine.current.strategy.index.value === tradingEngine.current.strategy.index.config.initialValue + ) { + /* + We will perform this check only when we are not inside a position, + because there the balances have shifted from their resting position. + */ + + let stopRunningDate = (new Date(tradingEngine.current.episode.candle.begin.value)).toLocaleString() + + if (sessionParameters.sessionBaseAsset.config.minimumBalance !== undefined) { + if (tradingEngine.current.episode.episodeBaseAsset.balance.value <= sessionParameters.sessionBaseAsset.config.minimumBalance) { + const errorMessage = 'Min Balance reached @ ' + stopRunningDate + tradingSystem.errors.push([tradingSystem.id, errorMessage]) + if (FULL_LOG === true) { logger.write(MODULE_NAME, '[WARN] runSimulation -> checkMinimunAndMaximunBalance -> ' + errorMessage) } + return false + } + } + + if (sessionParameters.sessionBaseAsset.config.maximumBalance !== undefined) { + if (tradingEngine.current.episode.episodeBaseAsset.balance.value >= sessionParameters.sessionBaseAsset.config.maximumBalance) { + const errorMessage = 'Max Balance reached @ ' + stopRunningDate + tradingSystem.errors.push([tradingSystem.id, errorMessage]) + if (FULL_LOG === true) { logger.write(MODULE_NAME, '[WARN] runSimulation -> checkMinimunAndMaximunBalance -> ' + errorMessage) } + return false + } + } + + if (sessionParameters.sessionQuotedAsset.config.minimumBalance !== undefined) { + if (tradingEngine.current.episode.episodeQuotedAsset.balance.value <= sessionParameters.sessionQuotedAsset.config.minimumBalance) { + const errorMessage = 'Min Balance reached @ ' + stopRunningDate + tradingSystem.errors.push([tradingSystem.id, errorMessage]) + if (FULL_LOG === true) { logger.write(MODULE_NAME, '[WARN] runSimulation -> checkMinimunAndMaximunBalance -> ' + errorMessage) } + return false + } + } + + if (sessionParameters.sessionQuotedAsset.config.maximumBalance !== undefined) { + if (tradingEngine.current.episode.episodeQuotedAsset.balance.value >= sessionParameters.sessionQuotedAsset.config.maximumBalance) { + const errorMessage = 'Max Balance reached @ ' + stopRunningDate + tradingSystem.errors.push([tradingSystem.id, errorMessage]) + if (FULL_LOG === true) { logger.write(MODULE_NAME, '[WARN] runSimulation -> checkMinimunAndMaximunBalance -> ' + errorMessage) } + return false + } + } + + } + return true + } + } catch (err) { + logger.write(MODULE_NAME, '[ERROR] runSimulation -> err = ' + err.stack) + throw (global.DEFAULT_FAIL_RESPONSE) + } + } +} + diff --git a/TaskServer/LowFrequencyTrading/TradingStages.js b/TaskServer/LowFrequencyTrading/TradingStages.js new file mode 100644 index 000000000..b3465bf18 --- /dev/null +++ b/TaskServer/LowFrequencyTrading/TradingStages.js @@ -0,0 +1,1055 @@ +exports.newTradingStages = function newTradingStages(bot, logger, tradingEngineModule) { + /* + This module packages all functions related to Stages. + */ + const MODULE_NAME = 'Trading Stages' + let thisObject = { + updateChart: updateChart, + mantain: mantain, + reset: reset, + cycleBasedStatistics: cycleBasedStatistics, + runTriggerStage: runTriggerStage, + runOpenStage: runOpenStage, + runManageStage: runManageStage, + runCloseStage: runCloseStage, + updateEnds: updateEnds, + resetTradingEngineDataStructure: resetTradingEngineDataStructure, + updateCounters: updateCounters, + updateStatistics: updateStatistics, + initialize: initialize, + finalize: finalize + } + + const TRADING_STRATEGY_MODULE = require('./TradingStrategy.js') + let tradingStrategyModule = TRADING_STRATEGY_MODULE.newTradingStrategy(bot, logger, tradingEngineModule) + + const TRADING_POSITION_MODULE = require('./TradingPosition.js') + let tradingPositionModule = TRADING_POSITION_MODULE.newTradingPosition(bot, logger, tradingEngineModule) + + const TRADING_ENGINE_EXECUTION = require('./TradingExecution.js') + let tradingExecutionModule = TRADING_ENGINE_EXECUTION.newTradingExecution(bot, logger, tradingEngineModule) + + const ANNOUNCEMENTS_MODULE = require('./Announcements.js') + let announcementsModule = ANNOUNCEMENTS_MODULE.newAnnouncements(bot, logger) + + const SNAPSHOTS_MODULE = require('./Snapshots.js') + let snapshotsModule = SNAPSHOTS_MODULE.newSnapshots(bot, logger) + + const TRADING_EPISODE_MODULE = require('./TradingEpisode.js') + let tradingEpisodeModule = TRADING_EPISODE_MODULE.newTradingEpisode(bot, logger) + + let tradingEngine + let tradingSystem + let sessionParameters + + return thisObject + + function initialize() { + tradingSystem = bot.simulationState.tradingSystem + tradingEngine = bot.simulationState.tradingEngine + sessionParameters = bot.SESSION.parameters + + tradingStrategyModule.initialize() + tradingPositionModule.initialize() + announcementsModule.initialize() + snapshotsModule.initialize() + tradingExecutionModule.initialize() + tradingEpisodeModule.initialize() + } + + function finalize() { + tradingEngine = undefined + tradingSystem = undefined + sessionParameters = undefined + + tradingStrategyModule.finalize() + tradingStrategyModule = undefined + + tradingPositionModule.finalize() + tradingPositionModule = undefined + + announcementsModule.finalize() + announcementsModule = undefined + + snapshotsModule.finalize() + snapshotsModule = undefined + + tradingExecutionModule.finalize() + tradingExecutionModule = undefined + + tradingEpisodeModule.finalize() + tradingEpisodeModule = undefined + } + + function updateChart(pChart) { + snapshotsModule.updateChart(pChart) + } + + function mantain() { + tradingPositionModule.mantain() + tradingStrategyModule.mantain() + tradingExecutionModule.mantain() + + updateCounters() + updateEnds() + } + + function reset() { + tradingPositionModule.reset() + tradingStrategyModule.reset() + tradingExecutionModule.reset() + + resetTradingEngineDataStructure() + } + + function cycleBasedStatistics() { + tradingEpisodeModule.cycleBasedStatistics() + tradingPositionModule.cycleBasedStatistics() + } + + function runTriggerStage() { + /* + We check if we will be triggering on, off or taking position. + */ + checkTriggerOn() + checkTriggerOff() + checkTakePosition() + + function checkTriggerOn() { + if ( + tradingEngine.current.strategy.index.value === tradingEngine.current.strategy.index.config.initialValue + ) { + /* + To pick a new strategy we will check that any of the situations of the trigger on is true. + Once we enter into one strategy, we will ignore market conditions for others. However there is also + a strategy trigger off which can be hit before taking a position. If hit, we would + be outside a strategy again and looking for the conditions to enter all over again. + */ + tradingSystem.evalConditions(tradingSystem, 'Trigger On Event') + + for (let j = 0; j < tradingSystem.tradingStrategies.length; j++) { + if ( // If a strategy was already picked during the loop, we exit the loop + tradingEngine.current.strategy.index.value !== tradingEngine.current.strategy.index.config.initialValue + ) { continue } + + let strategy = tradingSystem.tradingStrategies[j] + let triggerStage = strategy.triggerStage + + if (triggerStage !== undefined) { + if (triggerStage.triggerOn !== undefined) { + for (let k = 0; k < triggerStage.triggerOn.situations.length; k++) { + let situation = triggerStage.triggerOn.situations[k] + let passed + if (situation.conditions.length > 0) { + passed = true + } + + passed = tradingSystem.checkConditions(situation, passed) + + tradingSystem.values.push([situation.id, passed]) + if (passed) { + tradingSystem.highlights.push(situation.id) + tradingSystem.highlights.push(triggerStage.triggerOn.id) + tradingSystem.highlights.push(triggerStage.id) + + tradingStrategyModule.openStrategy(j, situation.name, strategy.name) + + /* Initialize this */ + tradingEngine.current.episode.distanceToEvent.triggerOn.value = 1 + + announcementsModule.makeAnnoucements(triggerStage.triggerOn) + announcementsModule.makeAnnoucements(triggerStage) + + if (bot.SESSION.type === 'Backtesting Session') { + if (sessionParameters.snapshots !== undefined) { + if (sessionParameters.snapshots.config.strategy === true) { + snapshotsModule.strategyEntry() + } + } + } + + changeStageStatus('Trigger Stage', 'Open') + } + } + } + } + } + } + } + + function checkTriggerOff() { + if (tradingEngine.current.strategyTriggerStage.status.value === 'Open') { + + let strategy = tradingSystem.tradingStrategies[tradingEngine.current.strategy.index.value] + let triggerStage = strategy.triggerStage + + tradingSystem.evalConditions(strategy, 'Trigger Off Event') + + if (triggerStage !== undefined) { + if (triggerStage.triggerOff !== undefined) { + for (let k = 0; k < triggerStage.triggerOff.situations.length; k++) { + let situation = triggerStage.triggerOff.situations[k] + let passed + if (situation.conditions.length > 0) { + passed = true + } + + passed = tradingSystem.checkConditions(situation, passed) + + tradingSystem.values.push([situation.id, passed]) + if (passed) { + tradingSystem.highlights.push(situation.id) + tradingSystem.highlights.push(triggerStage.triggerOff.id) + tradingSystem.highlights.push(triggerStage.id) + + tradingEngine.current.episode.distanceToEvent.triggerOff.value = 1 + announcementsModule.makeAnnoucements(triggerStage.triggerOff) + changeStageStatus('Trigger Stage', 'Closed') + tradingStrategyModule.closeStrategy('Trigger Off') + } + } + } + } + } + } + + function checkTakePosition() { + if ( + tradingEngine.current.strategyTriggerStage.status.value === 'Open' + ) { + let strategy = tradingSystem.tradingStrategies[tradingEngine.current.strategy.index.value] + let triggerStage = strategy.triggerStage + + tradingSystem.evalConditions(strategy, 'Take Position Event') + tradingSystem.evalFormulas(strategy, 'Take Position Event') + + if (triggerStage !== undefined) { + if (triggerStage.takePosition !== undefined) { + for (let k = 0; k < triggerStage.takePosition.situations.length; k++) { + let situation = triggerStage.takePosition.situations[k] + let passed + if (situation.conditions.length > 0) { + passed = true + } + + passed = tradingSystem.checkConditions(situation, passed) + + tradingSystem.values.push([situation.id, passed]) + if (passed) { + tradingSystem.highlights.push(situation.id) + tradingSystem.highlights.push(triggerStage.takePosition.id) + tradingSystem.highlights.push(triggerStage.id) + + tradingPositionModule.openPosition(situation.name) + + announcementsModule.makeAnnoucements(triggerStage.takePosition) + announcementsModule.makeAnnoucements(strategy.openStage) + + if (bot.SESSION.type === 'Backtesting Session') { + if (sessionParameters.snapshots !== undefined) { + if (sessionParameters.snapshots.config.position === true) { + snapshotsModule.positionEntry() + } + } + } + + changeStageStatus('Trigger Stage', 'Closed') + changeStageStatus('Open Stage', 'Opening') + changeStageStatus('Manage Stage', 'Opening') + } + } + } + } + } + } + } + + async function runOpenStage() { + + checkIfWeNeedToAbortTheStage() + runWhenStatusIsOpening() + await runWhenStatusIsOpen() + await runWhenStatusIsClosing() + + function checkIfWeNeedToAbortTheStage() { + /* Abort Open Stage Check */ + if (tradingEngine.current.strategyOpenStage.status.value === 'Open' && tradingEngine.current.strategyCloseStage.status.value === 'Open') { + /* + if the Close stage is opened while the open stage is still open that means that + we need to stop placing orders, check what happened to the orders already placed, + and cancel all unfilled limit orders. We call this the Closing status of the Open Stage. + */ + changeStageStatus('Open Stage', 'Closing') + } + } + + function runWhenStatusIsOpening() { + /* Opening Status Procedure */ + if (tradingEngine.current.strategyOpenStage.status.value === 'Opening') { + + /* This procedure is intended to run only once */ + let tradingSystemStage = tradingSystem.tradingStrategies[tradingEngine.current.strategy.index.value].openStage + let tradingEngineStage = tradingEngine.current.strategyOpenStage + + /* Reset the Exchange Orders data structure to its initial value */ + tradingEngineModule.initializeNode(tradingEngine.exchangeOrders) + + /* Entry Position size and rate */ + tradingSystem.evalFormulas(tradingSystemStage, 'Initial Targets') + tradingPositionModule.initialTargets(tradingSystemStage, tradingEngineStage) + initializeStageTargetSize() + + /* From here on, the stage is officialy Open */ + changeStageStatus('Open Stage', 'Open') + } + } + + async function runWhenStatusIsOpen() { + /* Open Status Procedure */ + if (tradingEngine.current.strategyOpenStage.status.value === 'Open') { + /* + While the Open Stage is Open, we do our regular stuff: place orders and check + what happened to the orders already placed. + */ + let tradingSystemStage = tradingSystem.tradingStrategies[tradingEngine.current.strategy.index.value].openStage + let tradingEngineStage = tradingEngine.current.strategyOpenStage + let executionNode = tradingSystemStage.openExecution + + /* Evaluate conditions and formulas so they are ready during the execution run */ + tradingSystem.evalConditions(executionNode, 'Open Execution') + tradingSystem.evalFormulas(executionNode, 'Open Execution') + + await tradingExecutionModule.runExecution( + executionNode, + tradingEngineStage + ) + checkIfStageNeedsToBeClosed(tradingEngineStage, tradingSystemStage, 'Open Stage') + } + } + + async function runWhenStatusIsClosing() { + /* Closing Status Procedure */ + if (tradingEngine.current.strategyOpenStage.status.value === 'Closing') { + /* + During the closing stage status, we do not place new orders, just check + if the ones placed were filled, and cancel the ones not filled. + */ + let tradingSystemStage = tradingSystem.tradingStrategies[tradingEngine.current.strategy.index.value].openStage + let executionNode = tradingSystemStage.openExecution + + /* + Check if there are unfilled orders, we will check if they were executed, + and cancel the ones that were not. + */ + tradingSystem.evalConditions(tradingSystemStage, 'Open Execution') + tradingSystem.evalFormulas(tradingSystemStage, 'Open Execution') + + await tradingExecutionModule.runExecution( + executionNode, + tradingEngine.current.strategyOpenStage + ) + + /* + The Closing is finished when the sizeFilled + feesPaid reaches the sizePlaced. + This can happens either because we update the sizeFilled value when we see + at the exchange that orders were filled, or we reduce the sizePlaced when + we cancel not yet filled orders. Here it does not matter the targetSize since + this status represent a force closure of this stage. + */ + switch (tradingEngine.current.strategyOpenStage.stageDefinedIn.value) { + case 'Base Asset': { + if ( + tradingEngine.current.strategyOpenStage.stageBaseAsset.sizeFilled.value >= + tradingEngine.current.strategyOpenStage.stageBaseAsset.sizePlaced.value + ) { + changeStageStatus('Open Stage', 'Closed') + } + break + } + case 'Quoted Asset': { + if ( + tradingEngine.current.strategyOpenStage.stageQuotedAsset.sizeFilled.value >= + tradingEngine.current.strategyOpenStage.stageQuotedAsset.sizePlaced.value + ) { + changeStageStatus('Open Stage', 'Closed') + } + break + } + } + } + } + + function initializeStageTargetSize() { + /* + Here we will transform the position size into targets for each asset of the stage. + */ + tradingEngine.current.strategyOpenStage.stageBaseAsset.targetSize.value = tradingEngine.current.position.positionBaseAsset.entryTargetSize.value + tradingEngine.current.strategyOpenStage.stageQuotedAsset.targetSize.value = tradingEngine.current.position.positionQuotedAsset.entryTargetSize.value + + tradingEngine.current.strategyOpenStage.stageBaseAsset.targetSize.value = global.PRECISE(tradingEngine.current.strategyOpenStage.stageBaseAsset.targetSize.value, 10) + tradingEngine.current.strategyOpenStage.stageQuotedAsset.targetSize.value = global.PRECISE(tradingEngine.current.strategyOpenStage.stageQuotedAsset.targetSize.value, 10) + } + } + + function runManageStage() { + + runWhenStatusIsOpening() + runWhenStatusIsOpen() + + function runWhenStatusIsOpening() { + /* Opening Status Procedure */ + if (tradingEngine.current.strategyManageStage.status.value === 'Opening') { + + /* Now we switch to the Open status. */ + changeStageStatus('Manage Stage', 'Open') + } + } + + function runWhenStatusIsOpen() { + /* Open Status Procedure */ + if (tradingEngine.current.strategyManageStage.status.value === 'Open') { + let strategy = tradingSystem.tradingStrategies[tradingEngine.current.strategy.index.value] + let manageStage = strategy.manageStage + + /* Evaluate all the stage conditions and formulas to have them ready */ + tradingSystem.evalConditions(manageStage, 'Manage Stage') + tradingSystem.evalFormulas(manageStage, 'Manage Stage') + + /* Stop Loss Management */ + checkStopPhasesEvents() + calculateStopLoss() + calculateStopLossPosition() + + /* Take Profit Management */ + checkTakeProfitPhaseEvents() + calculateTakeProfit() + calculateTakeProfitPosition() + + /* Checking if Stop or Take Profit were hit */ + checkStopLossOrTakeProfitWasHit() + } + } + + function calculateStopLoss() { + let strategy = tradingSystem.tradingStrategies[tradingEngine.current.strategy.index.value] + let manageStage = strategy.manageStage + let phase + + if (manageStage !== undefined) { + if (manageStage.managedStopLoss !== undefined) { + phase = manageStage.managedStopLoss.phases[tradingEngine.current.position.stopLoss.stopLossPhase.value - 1] + } + } + + if (phase !== undefined) { + if (phase.formula !== undefined) { + let previousValue = tradingEngine.current.position.stopLoss.value + tradingPositionModule.applyStopLossFormula(tradingSystem.formulas, phase.formula.id) + + if (tradingEngine.current.position.stopLoss.value !== previousValue) { + announcementsModule.makeAnnoucements(phase) + } + } + } + } + + function calculateTakeProfit() { + let strategy = tradingSystem.tradingStrategies[tradingEngine.current.strategy.index.value] + let manageStage = strategy.manageStage + let phase + + if (manageStage !== undefined) { + if (manageStage.managedTakeProfit !== undefined) { + phase = manageStage.managedTakeProfit.phases[tradingEngine.current.position.takeProfit.takeProfitPhase.value - 1] + } + } + + if (phase !== undefined) { + if (phase.formula !== undefined) { + let previousValue = tradingEngine.current.position.takeProfit.value + tradingPositionModule.applyTakeProfitFormula(tradingSystem.formulas, phase.formula.id) + + if (tradingEngine.current.position.takeProfit.value !== previousValue) { + announcementsModule.makeAnnoucements(phase) + } + } + } + } + + function calculateStopLossPosition() { + /* + The position of the Stop Loss (above or below the price) is needed in order to know + later if the price hit the Stop Loss or not at every Simulation candle. When we get + the first values of the simulation of the Stop Loss we check if it is above or below + the Position Rate, and we assign the values Above or Below to it. + */ + if (tradingEngine.current.position.stopLoss.stopLossPosition.value === tradingEngine.current.position.stopLoss.stopLossPosition.config.initialValue) { + if (tradingEngine.current.position.stopLoss.value > tradingEngine.current.position.entryTargetRate.value) { + tradingEngine.current.position.stopLoss.stopLossPosition.value = 'Above' + } else { + tradingEngine.current.position.stopLoss.stopLossPosition.value = 'Below' + } + } + } + + function calculateTakeProfitPosition() { + /* + The position of the Take Profit (above or below the price) is needed in order to know + later if the price hit the Take Profit or not at every Simulation candle. When we get + the first values of the simulation of the Take Profits we check if it is above or below + the Position Rates, and we assign the values Above or Below to it. + */ + if (tradingEngine.current.position.takeProfit.takeProfitPosition.value === tradingEngine.current.position.takeProfit.takeProfitPosition.config.initialValue) { + if (tradingEngine.current.position.takeProfit.value > tradingEngine.current.position.entryTargetRate.value) { + tradingEngine.current.position.takeProfit.takeProfitPosition.value = 'Above' + } else { + tradingEngine.current.position.takeProfit.takeProfitPosition.value = 'Below' + } + } + } + + function checkStopPhasesEvents() { + let strategy = tradingSystem.tradingStrategies[tradingEngine.current.strategy.index.value] + let manageStage = strategy.manageStage + let parentNode + let phaseIndex + let phase + let stopLoss + + if (manageStage !== undefined) { + if (manageStage.managedStopLoss !== undefined) { + parentNode = manageStage + phaseIndex = tradingEngine.current.position.stopLoss.stopLossPhase.value - 1 + stopLoss = manageStage.managedStopLoss + phase = stopLoss.phases[phaseIndex] + } + } + + if (parentNode !== undefined) { + if (phase === undefined) { return } // trying to jump to a phase that does not exists. + + /* Check the next Phase Event. */ + let nextPhaseEvent = phase.nextPhaseEvent + if (nextPhaseEvent !== undefined) { + for (let k = 0; k < nextPhaseEvent.situations.length; k++) { + let situation = nextPhaseEvent.situations[k] + let passed + if (situation.conditions.length > 0) { + passed = true + } + + passed = tradingSystem.checkConditions(situation, passed) + + tradingSystem.values.push([situation.id, passed]) + if (passed) { + tradingSystem.highlights.push(situation.id) + tradingSystem.highlights.push(nextPhaseEvent.id) + tradingSystem.highlights.push(phase.id) + tradingSystem.highlights.push(stopLoss.id) + tradingSystem.highlights.push(parentNode.id) + tradingSystem.highlights.push(manageStage.id) + + tradingPositionModule.updateStopLoss(tradingEngine.current.position.stopLoss.stopLossPhase.value + 1) + + announcementsModule.makeAnnoucements(nextPhaseEvent) + + /* Reset this counter */ + tradingEngine.current.episode.distanceToEvent.nextPhase.value = 1 + return // only one event can pass at the time + } + } + } + + /* Check the Move to Phase Events. */ + for (let n = 0; n < phase.moveToPhaseEvents.length; n++) { + let moveToPhaseEvent = phase.moveToPhaseEvents[n] + if (moveToPhaseEvent !== undefined) { + for (let k = 0; k < moveToPhaseEvent.situations.length; k++) { + let situation = moveToPhaseEvent.situations[k] + let passed + if (situation.conditions.length > 0) { + passed = true + } + + passed = tradingSystem.checkConditions(situation, passed) + + tradingSystem.values.push([situation.id, passed]) + if (passed) { + tradingSystem.highlights.push(situation.id) + tradingSystem.highlights.push(moveToPhaseEvent.id) + tradingSystem.highlights.push(phase.id) + tradingSystem.highlights.push(stopLoss.id) + tradingSystem.highlights.push(parentNode.id) + tradingSystem.highlights.push(manageStage.id) + + let moveToPhase = moveToPhaseEvent.referenceParent + if (moveToPhase !== undefined) { + for (let q = 0; q < stopLoss.phases.length; q++) { + if (stopLoss.phases[q].id === moveToPhase.id) { + tradingPositionModule.updateStopLoss(q + 1) + } + } + } else { + tradingSystem.errors.push([moveToPhaseEvent.id, 'This Node needs to reference a Phase.']) + continue + } + + announcementsModule.makeAnnoucements(moveToPhaseEvent) + + /* Reset this counter */ + tradingEngine.current.episode.distanceToEvent.moveToPhase.value = 1 + return // only one event can pass at the time + } + } + } + } + } + } + + function checkTakeProfitPhaseEvents() { + let strategy = tradingSystem.tradingStrategies[tradingEngine.current.strategy.index.value] + let openStage = strategy.openStage + let manageStage = strategy.manageStage + let parentNode + let phaseIndex + let phase + let takeProfit + + if (manageStage !== undefined) { + if (manageStage.managedTakeProfit !== undefined) { + parentNode = manageStage + phaseIndex = tradingEngine.current.position.takeProfit.takeProfitPhase.value - 1 + takeProfit = manageStage.managedTakeProfit + phase = takeProfit.phases[phaseIndex] + } + } + + if (parentNode !== undefined) { + if (phase === undefined) { return } // trying to jump to a phase that does not exists. + + /* Check the next Phase Event. */ + let nextPhaseEvent = phase.nextPhaseEvent + if (nextPhaseEvent !== undefined) { + for (let k = 0; k < nextPhaseEvent.situations.length; k++) { + let situation = nextPhaseEvent.situations[k] + let passed + if (situation.conditions.length > 0) { + passed = true + } + + passed = tradingSystem.checkConditions(situation, passed) + + tradingSystem.values.push([situation.id, passed]) + if (passed) { + tradingSystem.highlights.push(situation.id) + tradingSystem.highlights.push(nextPhaseEvent.id) + tradingSystem.highlights.push(phase.id) + tradingSystem.highlights.push(takeProfit.id) + tradingSystem.highlights.push(parentNode.id) + tradingSystem.highlights.push(manageStage.id) + + tradingPositionModule.updateTakeProfit(tradingEngine.current.position.takeProfit.takeProfitPhase.value + 1) + + announcementsModule.makeAnnoucements(nextPhaseEvent) + + /* Reset this counter */ + tradingEngine.current.episode.distanceToEvent.nextPhase.value = 1 + return // only one event can pass at the time + } + } + } + + /* Check the Move to Phase Events. */ + for (let n = 0; n < phase.moveToPhaseEvents.length; n++) { + let moveToPhaseEvent = phase.moveToPhaseEvents[n] + if (moveToPhaseEvent !== undefined) { + for (let k = 0; k < moveToPhaseEvent.situations.length; k++) { + let situation = moveToPhaseEvent.situations[k] + let passed + if (situation.conditions.length > 0) { + passed = true + } + + passed = tradingSystem.checkConditions(situation, passed) + + tradingSystem.values.push([situation.id, passed]) + if (passed) { + tradingSystem.highlights.push(situation.id) + tradingSystem.highlights.push(moveToPhaseEvent.id) + tradingSystem.highlights.push(phase.id) + tradingSystem.highlights.push(takeProfit.id) + tradingSystem.highlights.push(parentNode.id) + tradingSystem.highlights.push(manageStage.id) + + let moveToPhase = moveToPhaseEvent.referenceParent + if (moveToPhase !== undefined) { + for (let q = 0; q < takeProfit.phases.length; q++) { + if (takeProfit.phases[q].id === moveToPhase.id) { + tradingPositionModule.updateTakeProfit(q + 1) + } + } + } else { + tradingSystem.errors.push([moveToPhaseEvent.id, 'This Node needs to reference a Phase.']) + continue + } + + announcementsModule.makeAnnoucements(moveToPhaseEvent) + + /* Reset this counter */ + tradingEngine.current.episode.distanceToEvent.moveToPhase.value = 1 + return // only one event can pass at the time + } + } + } + } + } + } + + function checkStopLossOrTakeProfitWasHit() { + { + let strategy = tradingSystem.tradingStrategies[tradingEngine.current.strategy.index.value] + /* + Checking what happened since the last execution. We need to know if the Stop Loss + or our Take Profit were hit. + */ + + /* Stop Loss condition: Here we verify if the Stop Loss was hitted or not. */ + if ( + ( + tradingEngine.current.position.stopLoss.stopLossPosition.value === 'Above' && + tradingEngine.current.episode.candle.max.value >= tradingEngine.current.position.stopLoss.value + ) || + ( + tradingEngine.current.position.stopLoss.stopLossPosition.value === 'Below' && + tradingEngine.current.episode.candle.min.value <= tradingEngine.current.position.stopLoss.value + ) + ) { + logger.write(MODULE_NAME, '[INFO] checkStopLossOrTakeProfitWasHit -> Stop Loss was hit.') + + tradingPositionModule.closingPosition('Stop Loss') + changeStageStatus('Close Stage', 'Opening') + changeStageStatus('Manage Stage', 'Closed') + announcementsModule.makeAnnoucements(strategy.closeStage) + return + } + + /* Take Profit condition: Here we verify if the Take Profit was hit or not. */ + if ( + ( + tradingEngine.current.position.takeProfit.takeProfitPosition.value === 'Below' && + tradingEngine.current.episode.candle.min.value <= tradingEngine.current.position.takeProfit.value + ) || + ( + tradingEngine.current.position.takeProfit.takeProfitPosition.value === 'Above' && + tradingEngine.current.episode.candle.max.value >= tradingEngine.current.position.takeProfit.value + ) + ) { + logger.write(MODULE_NAME, '[INFO] checkStopLossOrTakeProfitWasHit -> Take Profit was hit.') + + tradingPositionModule.closingPosition('Take Profit') + changeStageStatus('Close Stage', 'Opening') + changeStageStatus('Manage Stage', 'Closed') + announcementsModule.makeAnnoucements(strategy.closeStage) + return + } + return + } + } + } + + async function runCloseStage() { + + runWhenStatusIsOpening() + await runWhenStatusIsOpen() + + function runWhenStatusIsOpening() { + /* Opening Status Procedure */ + if (tradingEngine.current.strategyCloseStage.status.value === 'Opening') { + /* + This will happen only once, as soon as the Take Profit or Stop was hit. + */ + let tradingSystemStage = tradingSystem.tradingStrategies[tradingEngine.current.strategy.index.value].closeStage + + /* Exit Position size and rate */ + tradingSystem.evalFormulas(tradingSystemStage, 'Initial Targets') + tradingPositionModule.initialTargets(tradingSystemStage, tradingEngine.current.strategyCloseStage) + + initializeStageTargetSize() + changeStageStatus('Close Stage', 'Open') + } + } + + async function runWhenStatusIsOpen() { + /* + The following code will run only when the Open Stage is closed. + The reason for that is that we need the final filled size of the Open Stage + to be known before we start placing orders at the Close Stage. + */ + if ( + tradingEngine.current.strategyCloseStage.status.value === 'Open' && + ( + tradingEngine.current.strategyOpenStage.status.value === 'Closed' || + tradingEngine.current.strategyOpenStage.status.value == tradingEngine.current.strategyOpenStage.status.config.initialValue + ) + ) { + /* + This will happen as long as the Close Stage is Open. + */ + let tradingSystemStage = tradingSystem.tradingStrategies[tradingEngine.current.strategy.index.value].closeStage + let tradingEngineStage = tradingEngine.current.strategyCloseStage + let executionNode = tradingSystemStage.closeExecution + + tradingSystem.evalConditions(tradingSystemStage, 'Close Execution') + tradingSystem.evalFormulas(tradingSystemStage, 'Close Execution') + + await tradingExecutionModule.runExecution( + executionNode, + tradingEngine.current.strategyCloseStage + ) + + checkIfStageNeedsToBeClosed(tradingEngineStage, tradingSystemStage, 'Close Stage') + } + + /* + Exit Position Validation: we need al the previous stages to be either closed + or at their initial default value. The last is becasue after Closed objects are + initialized to their defualts. + */ + if ( + ( + tradingEngine.current.strategyTriggerStage.status.value === 'Closed' || + tradingEngine.current.strategyTriggerStage.status.value === tradingEngine.current.strategyTriggerStage.status.config.initialValue + ) + && + ( + tradingEngine.current.strategyOpenStage.status.value === 'Closed' || + tradingEngine.current.strategyOpenStage.status.value === tradingEngine.current.strategyOpenStage.status.config.initialValue + ) + && + ( + tradingEngine.current.strategyManageStage.status.value === 'Closed' || + tradingEngine.current.strategyManageStage.status.value === tradingEngine.current.strategyManageStage.status.config.initialValue + ) + && + ( + tradingEngine.current.strategyCloseStage.status.value === 'Closed' + ) + ) { + + /* Closing Everything now. */ + closePositionAndStrategy() + } + } + + function initializeStageTargetSize() { + /* + Here we will transform the position size into targets for each asset of the stage. + */ + tradingEngine.current.strategyCloseStage.stageBaseAsset.targetSize.value = tradingEngine.current.position.positionBaseAsset.exitTargetSize.value + tradingEngine.current.strategyCloseStage.stageQuotedAsset.targetSize.value = tradingEngine.current.position.positionQuotedAsset.exitTargetSize.value + + tradingEngine.current.strategyCloseStage.stageBaseAsset.targetSize.value = global.PRECISE(tradingEngine.current.strategyCloseStage.stageBaseAsset.targetSize.value, 10) + tradingEngine.current.strategyCloseStage.stageQuotedAsset.targetSize.value = global.PRECISE(tradingEngine.current.strategyCloseStage.stageQuotedAsset.targetSize.value, 10) + } + + function closePositionAndStrategy() { + /* Taking Position Snapshot */ + if (bot.SESSION.type === 'Backtesting Session') { + if (sessionParameters.snapshots !== undefined) { + if (sessionParameters.snapshots.config.position === true) { + snapshotsModule.positionExit() + } + } + } + + /* Taking Strategy Snapshot */ + if (bot.SESSION.type === 'Backtesting Session') { + if (sessionParameters.snapshots !== undefined) { + if (sessionParameters.snapshots.config.strategy === true) { + snapshotsModule.strategyExit() + } + } + } + + /* Close the Position */ + tradingPositionModule.closePosition() + + /* Close the Strategy */ + tradingStrategyModule.closeStrategy('Position Closed') + + /* Distance to Events Updates */ + tradingEngine.current.episode.distanceToEvent.closePosition.value = 1 + tradingEngine.current.episode.distanceToEvent.triggerOff.value = 1 + + } + } + + function checkIfStageNeedsToBeClosed(tradingEngineStage, tradingSystemStage, stageName) { + /* + The Stage is closed when the placedSize reaches the targetSize, and the fillSize + + feesPaid reaches the placedSize. This depends on how the user defined the stage: + either on Base Asset or Quoted Asset. + This can happens at any time when we update the sizeFilled and the feesPaid values + when we see at the exchange that orders were filled. + Note that the comparison is made with a Rounding Factor in order to avoid rounding problems. + */ + const ROUNDING_ERROR_CORRECTION_FACTOR = 1.001 + + switch (tradingEngineStage.stageDefinedIn.value) { + case 'Base Asset': { + if ( + tradingEngineStage.stageBaseAsset.sizeFilled.value * ROUNDING_ERROR_CORRECTION_FACTOR + >= + tradingEngineStage.stageBaseAsset.targetSize.value + ) { + positionFilled() + } else { + checkCloseStageEvent(tradingSystemStage) + } + break + } + case 'Quoted Asset': { + if ( + tradingEngineStage.stageQuotedAsset.sizeFilled.value * ROUNDING_ERROR_CORRECTION_FACTOR + >= + tradingEngineStage.stageQuotedAsset.targetSize.value + ) { + positionFilled() + } else { + checkCloseStageEvent(tradingSystemStage) + } + break + } + } + function positionFilled() { + changeStageStatus(stageName, 'Closed', 'Position Size Filled') + } + function checkCloseStageEvent(tradingSystemStage) { + /* Check the Close Stage Event */ + tradingSystem.evalConditions(tradingSystemStage, 'Close Stage Event') + if (checkStopStageEvent(tradingSystemStage) === true) { + changeStageStatus(stageName, 'Closing', 'Close Stage Event') + } + } + } + + function checkStopStageEvent(stage) { + /* Check the Close Stage Event. */ + let stopStageEvent = stage.stopStageEvent + if (stopStageEvent !== undefined) { + for (let k = 0; k < stopStageEvent.situations.length; k++) { + let situation = stopStageEvent.situations[k] + let passed + if (situation.conditions.length > 0) { + passed = true + } + + passed = tradingSystem.checkConditions(situation, passed) + + tradingSystem.values.push([situation.id, passed]) + if (passed) { + tradingSystem.highlights.push(situation.id) + tradingSystem.highlights.push(stopStageEvent.id) + tradingSystem.highlights.push(stage.id) + + announcementsModule.makeAnnoucements(stopStageEvent) + return true + } + } + } + } + + function changeStageStatus(stageName, newStatus, exitType) { + let stage + switch (stageName) { + case 'Trigger Stage': { + stage = tradingEngine.current.strategyTriggerStage + break + } + case 'Open Stage': { + stage = tradingEngine.current.strategyOpenStage + break + } + case 'Manage Stage': { + stage = tradingEngine.current.strategyManageStage + break + } + case 'Close Stage': { + stage = tradingEngine.current.strategyCloseStage + break + } + } + stage.status.value = newStatus + if (exitType !== undefined) { + stage.exitType.value = exitType + } + if (stage.status.value === 'Open') { + openStage(stage) + } + if (stage.status.value === 'Closed') { + closeStage(stage) + } + + function openStage(stage) { + /* Recording the opening at the Trading Engine Data Structure */ + stage.begin.value = tradingEngine.current.episode.cycle.begin.value + stage.beginRate.value = tradingEngine.current.episode.candle.close.value + stage.end.value = tradingEngine.current.episode.cycle.end.value + } + + function closeStage(stage) { + /* Recording the closing at the Trading Engine Data Structure */ + stage.end.value = tradingEngine.current.episode.cycle.end.value + stage.endRate.value = tradingEngine.current.episode.candle.close.value + } + } + + function updateEnds() { + if (tradingEngine.current.strategyTriggerStage.status.value === 'Open') { + tradingEngine.current.strategyTriggerStage.end.value = tradingEngine.current.episode.cycle.end.value + tradingEngine.current.strategyTriggerStage.endRate.value = tradingEngine.current.episode.candle.close.value + } + if (tradingEngine.current.strategyOpenStage.status.value === 'Open') { + tradingEngine.current.strategyOpenStage.end.value = tradingEngine.current.episode.cycle.end.value + tradingEngine.current.strategyOpenStage.endRate.value = tradingEngine.current.episode.candle.close.value + } + if (tradingEngine.current.strategyManageStage.status.value === 'Open') { + tradingEngine.current.strategyManageStage.end.value = tradingEngine.current.episode.cycle.end.value + tradingEngine.current.strategyManageStage.endRate.value = tradingEngine.current.episode.candle.close.value + } + if (tradingEngine.current.strategyCloseStage.status.value === 'Open') { + tradingEngine.current.strategyCloseStage.end.value = tradingEngine.current.episode.cycle.end.value + tradingEngine.current.strategyCloseStage.endRate.value = tradingEngine.current.episode.candle.close.value + } + } + + function resetTradingEngineDataStructure() { + if (tradingEngine.current.strategyTriggerStage.status.value === 'Closed') { + resetStage(tradingEngine.current.strategyTriggerStage.status) + } + if (tradingEngine.current.strategyOpenStage.status.value === 'Closed') { + resetStage(tradingEngine.current.strategyOpenStage.status) + } + if (tradingEngine.current.strategyManageStage.status.value === 'Closed') { + resetStage(tradingEngine.current.strategyManageStage.status) + } + if (tradingEngine.current.strategyCloseStage.status.value === 'Closed') { + resetStage(tradingEngine.current.strategyTriggerStage) + resetStage(tradingEngine.current.strategyOpenStage) + resetStage(tradingEngine.current.strategyManageStage) + resetStage(tradingEngine.current.strategyCloseStage) + } + + function resetStage(stage) { + tradingEngineModule.initializeNode(stage) + } + } + + function updateCounters() { + + } + + function updateStatistics() { + + } +} \ No newline at end of file diff --git a/TaskServer/LowFrequencyTrading/TradingStrategy.js b/TaskServer/LowFrequencyTrading/TradingStrategy.js new file mode 100644 index 000000000..5225f705d --- /dev/null +++ b/TaskServer/LowFrequencyTrading/TradingStrategy.js @@ -0,0 +1,81 @@ +exports.newTradingStrategy = function newTradingStrategy(bot, logger, tradingEngineModule) { + /* + This module packages all functions related to Strategies. + */ + const MODULE_NAME = 'Trading Strategy' + let thisObject = { + mantain: mantain, + reset: reset, + openStrategy: openStrategy, + closeStrategy: closeStrategy, + initialize: initialize, + finalize: finalize + } + + let tradingEngine + + return thisObject + + function initialize() { + tradingEngine = bot.simulationState.tradingEngine + } + + function finalize() { + tradingEngine = undefined + } + + function mantain() { + updateCounters() + updateEnds() + } + + function reset() { + resetTradingEngineDataStructure() + } + + function openStrategy(index, situationName, strategyName) { + tradingEngine.current.strategy.status.value = 'Open' + tradingEngine.current.strategy.serialNumber.value = tradingEngine.current.episode.episodeCounters.strategies.value + tradingEngine.current.strategy.identifier.value = global.UNIQUE_ID() + tradingEngine.current.strategy.begin.value = tradingEngine.current.episode.candle.end.value + tradingEngine.current.strategy.end.value = tradingEngine.current.episode.candle.end.value + tradingEngine.current.strategy.beginRate.value = tradingEngine.current.episode.candle.min.value + + tradingEngine.current.strategy.index.value = index + tradingEngine.current.strategy.situationName.value = situationName + tradingEngine.current.strategy.strategyName.value = strategyName + + /* Updating Episode Counters */ + tradingEngine.current.episode.episodeCounters.strategies.value++ + } + + function closeStrategy(exitType) { + tradingEngine.current.strategy.status.value = 'Closed' + tradingEngine.current.strategy.exitType.value = exitType + tradingEngine.current.strategy.end.value = tradingEngine.current.episode.candle.end.value + tradingEngine.current.strategy.endRate.value = tradingEngine.current.episode.candle.min.value + /* + Now that the strategy is closed, it is the right time to move this strategy from current to last at the Trading Engine data structure. + */ + tradingEngineModule.cloneValues(tradingEngine.current.strategy, tradingEngine.last.strategy) + } + + function updateEnds() { + if (tradingEngine.current.strategy.status.value === 'Open') { + tradingEngine.current.strategy.end.value = tradingEngine.current.episode.candle.end.value + tradingEngine.current.strategy.endRate.value = tradingEngine.current.episode.candle.close.value + } + } + + function resetTradingEngineDataStructure() { + if (tradingEngine.current.strategy.status.value === 'Closed') { + tradingEngineModule.initializeNode(tradingEngine.current.strategy) + } + } + + function updateCounters() { + if (tradingEngine.current.strategy.status.value === 'Open') { + tradingEngine.current.strategy.strategyCounters.periods.value++ + } + } +} \ No newline at end of file diff --git a/TaskServer/LowFrequencyTrading/TradingSystem.js b/TaskServer/LowFrequencyTrading/TradingSystem.js new file mode 100644 index 000000000..d90c558ae --- /dev/null +++ b/TaskServer/LowFrequencyTrading/TradingSystem.js @@ -0,0 +1,329 @@ +exports.newTradingSystem = function newTradingSystem(bot, logger, tradingEngineModule) { + /* + The Trading System is the user defined set of rules compliant with the Trading Protocol that + defines the trading logic to be applied during each cycle of the Simulation. + */ + const MODULE_NAME = 'Trading System' + let thisObject = { + mantain: mantain, + reset: reset, + run: run, + updateChart: updateChart, + initialize: initialize, + finalize: finalize + } + + let chart + let tradingSystem + let tradingEngine + let sessionParameters + let dynamicIndicators + + const TRADING_STAGES_MODULE = require('./TradingStages.js') + let tradingStagesModule = TRADING_STAGES_MODULE.newTradingStages(bot, logger, tradingEngineModule) + + + return thisObject + + function initialize() { + tradingSystem = bot.simulationState.tradingSystem + tradingEngine = bot.simulationState.tradingEngine + sessionParameters = bot.SESSION.parameters + + tradingSystem.conditions = new Map() + tradingSystem.formulas = new Map() + + tradingStagesModule.initialize() + + /* Adding Functions used elsewhere to Trading System Definition */ + tradingSystem.checkConditions = function (situation, passed) { + /* Given a Situation, we check if all children conditions are true or not */ + for (let m = 0; m < situation.conditions.length; m++) { + + let condition = situation.conditions[m] + let value = false + if (tradingSystem.conditions.get(condition.id) !== undefined) { + value = tradingSystem.conditions.get(condition.id) + } + if (value === true) { + tradingSystem.highlights.push(condition.id) + } + else { + passed = false + } + tradingSystem.values.push([condition.id, value]) + } + return passed + } + + tradingSystem.evalConditions = function (startingNode, descendentOfNodeType) { + evalNode(startingNode, 'Conditions', descendentOfNodeType) + } + + tradingSystem.evalFormulas = function (startingNode, descendentOfNodeType) { + evalNode(startingNode, 'Formulas', descendentOfNodeType) + } + + function isItInside(elementWithTimestamp, elementWithBeginEnd) { + /* + The function is to allow in Conditions and Formulas to easily know when an element with timestamp (like the ones of single files) are inside the time range + of an element with a time range, like a candle. + */ + if (elementWithTimestamp.timestamp >= elementWithBeginEnd.begin && elementWithTimestamp.timestamp <= elementWithBeginEnd.end) { + return true + } else { + return false + } + } + } + + function finalize() { + tradingStagesModule.finalize() + tradingStagesModule = undefined + + chart = undefined + + tradingSystem.conditions = undefined + tradingSystem.formulas = undefined + + tradingSystem.highlights = undefined + tradingSystem.errors = undefined + tradingSystem.warnings = undefined + tradingSystem.infos = undefined + tradingSystem.values = undefined + tradingSystem.status = undefined + tradingSystem.progress = undefined + tradingSystem.running = undefined + + tradingSystem = undefined + tradingEngine = undefined + sessionParameters = undefined + } + + function mantain() { + tradingStagesModule.mantain() + } + + function reset() { + tradingStagesModule.reset() + + tradingSystem.highlights = [] + tradingSystem.errors = [] + tradingSystem.warnings = [] + tradingSystem.infos = [] + tradingSystem.values = [] + tradingSystem.status = [] + tradingSystem.progress = [] + tradingSystem.running = [] + tradingSystem.announcements = [] + } + + function updateChart(pChart) { + chart = pChart // We need chat to be a local object accessible from conditions and formulas. + tradingStagesModule.updateChart(pChart) + } + + function buildDynamicIndicators() { + if (tradingSystem.dynamicIndicators !== undefined) { + dynamicIndicators = {} + /* Eval Dynamic Indicators */ + tradingSystem.evalFormulas(tradingSystem.dynamicIndicators, 'Indicator Function') + + for (let i = 0; i < tradingSystem.dynamicIndicators.indicatorFunctions.length; i++) { + let indicatorFunction = tradingSystem.dynamicIndicators.indicatorFunctions[i] + if (indicatorFunction.formula === undefined) { return} + if (indicatorFunction.config.codeName === undefined) { return} + dynamicIndicators[indicatorFunction.config.codeName] = tradingSystem.formulas.get(indicatorFunction.formula.id) + } + } + } + + async function run() { + try { + /* Dynamic Indicators */ + buildDynamicIndicators() + + /* Run the Trigger Stage */ + tradingStagesModule.runTriggerStage() + + /* Run the Open Stage */ + await tradingStagesModule.runOpenStage() + + /* Run the Manage Stage */ + tradingStagesModule.runManageStage() + + /* Run the Close Stage */ + await tradingStagesModule.runCloseStage() + + tradingStagesModule.cycleBasedStatistics() + + } catch (err) { + /* + If an error ocurred during execution, it was alreeady logged and + included at the errors array. That means we need to do nothing here, + just prevent the execution to be halted for not handling exceptions. + */ + if (typeof err === 'string' || err instanceof String) { + logger.write(MODULE_NAME, '[ERROR] runExecution -> err = ' + err) + } + if (err.stack !== undefined) { + logger.write(MODULE_NAME, '[ERROR] runExecution -> err = ' + err.stack) + } + } + } + + function evalNode(node, evaluating, descendentOfNodeType, isDescendent) { + if (node === undefined) { return } + + /* Verify if this node is decendent of the specified node type */ + if (isDescendent !== true) { + if (node.type === descendentOfNodeType) { + isDescendent = true + } + } + + /* Here we check if there is a codition to be evaluated */ + if (node.type === 'Condition' && evaluating === 'Conditions') { + /* We will eval this condition */ + if (isDescendent === true) { + evalCondition(node) + } + } + + /* Here we check if there is a formula to be evaluated */ + if ((node.type === 'Formula' || node.type === 'Announcement Formula') && evaluating === 'Formulas') { + if (node.code !== undefined) { + /* We will eval this formula */ + if (isDescendent === true) { + evalFormula(node) + } + } + } + + /* Now we go down through all this node children */ + let nodeDefinition = global.APP_SCHEMA_MAP.get(node.type) + if (nodeDefinition === undefined) { return } + + if (nodeDefinition.properties !== undefined) { + let previousPropertyName // Since there are cases where there are many properties with the same name,because they can hold nodes of different types but only one at the time, we have to avoind counting each property of those as individual children. + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.type) { + case 'node': { + if (property.name !== previousPropertyName) { + if (node[property.name] !== undefined) { + evalNode(node[property.name], evaluating, descendentOfNodeType, isDescendent) + } + previousPropertyName = property.name + } + break + } + case 'array': { + if (node[property.name] !== undefined) { + let nodePropertyArray = node[property.name] + for (let m = 0; m < nodePropertyArray.length; m++) { + evalNode(nodePropertyArray[m], evaluating, descendentOfNodeType, isDescendent) + } + } + break + } + } + } + } + } + + function evalCondition(node) { + let value + let error + /* + The code can be at the condition node if it was done with the Conditions Editor, or it can also be + at a Javascript Code node. If there is a Javascript object we will give it preference and take the code + from there. Otherwise we will take the code from the Condition node. + */ + let code = node.code + if (node.javascriptCode !== undefined) { + if (node.javascriptCode.code !== undefined) { + code = node.javascriptCode.code + } + } + + try { + logger.write(MODULE_NAME, '[INFO] evalCondition -> ' + node.name + ' -> code = ' + code) + value = eval(code) + } catch (err) { + /* + One possible error is that the conditions references a .previous that is undefined. This + will not be considered an error. + */ + value = false + + if (code.indexOf('previous') > -1 && err.message.indexOf('of undefined') > -1 + ) { + /* + We are not going to set an error for the casess we are using previous and the error is that the indicator is undefined. + */ + } else { + error = err.message + } + } + + tradingSystem.conditions.set(node.id, value) + + if (value === true) { + tradingSystem.highlights.push(node.id) + } + if (error !== undefined) { + tradingSystem.errors.push([node.id, error]) + } + if (value !== undefined) { + tradingSystem.values.push([node.id, value]) + } + + logger.write(MODULE_NAME, '[INFO] evalCondition -> value = ' + value) + logger.write(MODULE_NAME, '[INFO] evalCondition -> error = ' + error) + } + + function evalFormula(node) { + let value + let error + + try { + logger.write(MODULE_NAME, '[INFO] evalFormula -> ' + node.name + ' -> code = ' + node.code) + value = eval(node.code) + } catch (err) { + /* + One possible error is that the formula references a .previous that is undefined. This + will not be considered an error. + */ + value = 0 + + if (node.code.indexOf('previous') > -1 && err.message.indexOf('of undefined') > -1 + ) { + /* + We are not going to set an error for the casess we are using previous and the error is that the indicator is undefined. + */ + } else { + error = err.message + } + } + + if (error !== undefined) { + tradingSystem.errors.push([node.id, error]) + return + } + if (value !== undefined) { + if (node.type === 'Formula' && isNaN(value)) { + tradingSystem.errors.push([node.id, 'Formula needs to return a number.']) + return + } + + tradingSystem.values.push([node.id, value]) + tradingSystem.formulas.set(node.id, value) + } + + logger.write(MODULE_NAME, '[INFO] evalFormula -> value = ' + value) + logger.write(MODULE_NAME, '[INFO] evalFormula -> error = ' + error) + } +} + diff --git a/TaskServer/MultiPeriod.js b/TaskServer/MultiPeriod.js deleted file mode 100644 index 217e49077..000000000 --- a/TaskServer/MultiPeriod.js +++ /dev/null @@ -1,1182 +0,0 @@ -exports.newMultiPeriod = function newMultiPeriod(bot, logger, UTILITIES, USER_BOT_MODULE, USER_BOT_COMMONS) { - - const FULL_LOG = true; - const LOG_FILE_CONTENT = false; - const MODULE_NAME = "Multi Period"; - const GMT_SECONDS = ':00.000 GMT+0000'; - const ONE_DAY_IN_MILISECONDS = 24 * 60 * 60 * 1000; - - thisObject = { - initialize: initialize, - finalize: finalize, - start: start - }; - - let utilities = UTILITIES.newCloudUtilities(logger); - - let statusDependencies; - let dataDependenciesModule; - let dataFiles = new Map(); - let multiPeriodDataFiles = new Map(); - - let botInstance; - - const FILE_STORAGE = require('./FileStorage.js'); - let fileStorage = FILE_STORAGE.newFileStorage(logger); - - let processConfig; - - return thisObject; - - function initialize(pProcessConfig, pStatusDependencies, pDataDependencies, exchangeAPI, callBackFunction) { - - try { - - logger.fileName = MODULE_NAME; - logger.initialize(); - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Entering function."); } - - statusDependencies = pStatusDependencies; - dataDependenciesModule = pDataDependencies; - processConfig = pProcessConfig; - - let USER_BOT_MODULE = require("./TradingBot") - - botInstance = USER_BOT_MODULE.newTradingBot(bot, logger, UTILITIES, FILE_STORAGE); - botInstance.initialize(exchangeAPI, callBackFunction); - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function finalize() { - dataFiles = undefined - multiPeriodDataFiles = undefined - statusDependencies = undefined - dataDependenciesModule = undefined - botInstance.finalize() - botInstance = undefined - fileStorage = undefined - processConfig = undefined - thisObject = undefined - } - - function start(callBackFunction) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> Entering function."); } - - let currentTimeFrame - let currentTimeFrameLabel - - let market = bot.market; - let botNeverRan = true; - - /* Context Variables */ - - let contextVariables = { - lastFile: undefined, // Datetime of the last file files sucessfully produced by this process. - dateBeginOfMarket: undefined, // Datetime of the first trade file in the whole market history. - dateEndOfMarket: undefined // Datetime of the last file available to be used as an input of this process. - }; - - let previousDay; // Holds the date of the previous day relative to the processing date. - - let interExecutionMemoryArray = []; - - getContextVariables(); - - function getContextVariables() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Entering function."); } - - let thisReport; - let reportKey; - let statusReport; - - /* We are going to use the start date as beging of market date. */ - contextVariables.dateBeginOfMarket = bot.VALUES_TO_USE.timeRange.initialDatetime - - /* - Here we get the status report from the bot who knows which is the end of the market. - */ - - statusReport = statusDependencies.reportsByMainUtility.get("Market Ending Point") - - if (statusReport === undefined) { // This means the status report does not exist, that could happen for instance at the begining of a month. - logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> Status Report does not exist. Retrying Later. "); - callBackFunction(global.DEFAULT_RETRY_RESPONSE); - return; - } - - if (statusReport.status === "Status Report is corrupt.") { - logger.write(MODULE_NAME, "[ERROR] start -> getContextVariables -> Can not continue because dependecy Status Report is corrupt. "); - callBackFunction(global.DEFAULT_RETRY_RESPONSE); - return; - } - - thisReport = statusReport.file; - - if (thisReport.lastFile === undefined) { - logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> Undefined Last File. -> thisReport = " + JSON.stringify(thisReport)); - - let customOK = { - result: global.CUSTOM_OK_RESPONSE.result, - message: "Dependency not ready." - } - logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> customOK = " + customOK.message); - callBackFunction(customOK); - return; - } - - contextVariables.dateEndOfMarket = new Date(thisReport.lastFile.valueOf()); - - /* Validation that the data is not up-to-date. */ - - if (bot.multiPeriodProcessDatetime.valueOf() - ONE_DAY_IN_MILISECONDS > contextVariables.dateEndOfMarket.valueOf() && bot.SESSION.type !== "Backtesting Session") { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> " + "Head of the market is @ " + contextVariables.dateEndOfMarket); } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[ERROR] start -> getContextVariables -> You need to UPDATE your datasets in order to run a " + bot.SESSION.type) } - - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - - } - - /* Finally we get our own Status Report. */ - - statusReport = statusDependencies.reportsByMainUtility.get("Self Reference") - - if (statusReport === undefined) { // This means the status report does not exist, that could happen for instance at the begining of a month. - logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> Status Report does not exist. Retrying Later. "); - callBackFunction(global.DEFAULT_RETRY_RESPONSE); - return; - } - - if (statusReport.status === "Status Report is corrupt.") { - logger.write(MODULE_NAME, "[ERROR] start -> getContextVariables -> Can not continue because self dependecy Status Report is corrupt. Aborting Process."); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - - thisReport = statusReport.file; - - if (thisReport.lastFile !== undefined) { - - if (bot.hasTheBotJustStarted === true && bot.resumeExecution === false) { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Starting from the begining because bot has just started and resume execution was true."); } - startFromBegining(); - return; - } - - contextVariables.lastFile = new Date(thisReport.lastFile); - interExecutionMemoryArray = thisReport.interExecutionMemoryArray; - - processSingleFiles(); - return; - - } else { - - /* - In the case when there is no status report, we assume like the last processed file is the one on the date of Begining of Market. - */ - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Starting from the begining of the market because own status report not found or lastFile was undefined."); } - startFromBegining(); - return; - } - - function startFromBegining() { - - contextVariables.lastFile = new Date(contextVariables.dateBeginOfMarket.getUTCFullYear() + "-" + (contextVariables.dateBeginOfMarket.getUTCMonth() + 1) + "-" + contextVariables.dateBeginOfMarket.getUTCDate() + " " + "00:00" + GMT_SECONDS); - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> startFromBegining -> contextVariables.lastFile = " + contextVariables.lastFile); } - - /* - The first time the process is running is the right time to create the data structure that is going to be shared across different executions. - This data structure has one object per each timeFrame. - */ - - interExecutionMemoryArray = []; - - for (let i = 0; i < global.dailyFilePeriods.length; i++) { - let emptyObject = {}; - interExecutionMemoryArray.push(emptyObject); - } - - processSingleFiles(); - - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> getContextVariables -> err = " + err.stack); - if (err.message === "Cannot read property 'file' of undefined") { - logger.write(MODULE_NAME, "[HINT] start -> getContextVariables -> Check the bot configuration to see if all of its statusDependencies declarations are correct. "); - logger.write(MODULE_NAME, "[HINT] start -> getContextVariables -> Dependencies loaded -> keys = " + JSON.stringify(statusDependencies.keys)); - } - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function processSingleFiles() { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processSingleFiles -> Entering function."); } - - try { - let dependencyIndex = 0; - dataFiles = new Map(); - - dependencyLoopBody(); - - function dependencyLoopBody() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processSingleFiles -> dependencyLoopBody -> Entering function."); } - - let dependency = dataDependenciesModule.nodeArray[dependencyIndex]; - let datasetModule = dataDependenciesModule.dataSetsModulesArray[dependencyIndex]; - - getFile(); - - function getFile() { - try { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processSingleFiles -> dependencyLoopBody -> getFile -> Entering function."); } - - if (datasetModule.node.code.codeName !== "Single-File") { - dependencyControlLoop(); - return - } - - if (dataDependenciesModule.isItADepenency('atAnyTimeFrame', datasetModule.node.parentNode.code.singularVariableName) !== true) { - dependencyControlLoop(); - return - } - - let fileName = "Data.json"; - let filePath = datasetModule.node.parentNode.code.codeName + '/' + datasetModule.node.code.codeName; - datasetModule.getTextFile(filePath, fileName, onFileReceived); - - function onFileReceived(err, text) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processSingleFiles -> dependencyLoopBody -> getFile -> onFileReceived -> Entering function."); } - if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, "[INFO] start -> processSingleFiles -> dependencyLoopBody -> getFile -> onFileReceived -> text = " + text); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - if (err.message === 'File does not exist.') { - logger.write(MODULE_NAME, "[ERROR] The file " + filePath + '/' + fileName + ' does not exist and it is required to continue. This process will retry to read it in a while. In the meantime make yourself sure that the process that generates it has ran properly.'); - callBackFunction(global.DEFAULT_RETRY_RESPONSE); - } else { - logger.write(MODULE_NAME, "[ERROR] start -> processSingleFiles -> dependencyLoopBody -> getFile -> onFileReceived -> err = " + err.message); - callBackFunction(err); - } - return; - } - - let dataFile = JSON.parse(text); - dataFiles.set(dependency.id, dataFile); - - dependencyControlLoop(); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processSingleFiles -> dependencyLoopBody -> getFile -> onFileReceived -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processSingleFiles -> dependencyLoopBody -> getFile -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processSingleFiles -> timeFramesLoop -> dependencyLoopBody -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function dependencyControlLoop() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processSingleFiles -> dependencyControlLoop -> Entering function."); } - - dependencyIndex++; - - if (dependencyIndex < dataDependenciesModule.nodeArray.length) { - - dependencyLoopBody(); - - } else { - - let mapKey = "Single Files" - multiPeriodDataFiles.set(mapKey, dataFiles) - - processMarketFiles(); - - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processSingleFiles -> dependencyControlLoop -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processSingleFiles -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function processMarketFiles() { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processMarketFiles -> Entering function."); } - - try { - - let n; - - timeFramesLoop(); - - function timeFramesLoop() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processMarketFiles -> timeFramesLoop -> Entering function."); } - - /* - We will iterate through all posible timeFrames. - */ - - n = 0 // loop Variable representing each possible period as defined at the timeFrames array. - - timeFramesLoopBody(); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processMarketFiles -> timeFramesLoop -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function timeFramesLoopBody() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processMarketFiles -> timeFramesLoopBody -> Entering function."); } - - const timeFrame = global.marketFilesPeriods[n][0]; - const timeFrameLabel = global.marketFilesPeriods[n][1]; - - let dependencyIndex = 0; - dataFiles = new Map(); - - if (bot.VALUES_TO_USE.timeFrame === timeFrameLabel) { - currentTimeFrame = global.marketFilesPeriods[n][0]; - currentTimeFrameLabel = global.marketFilesPeriods[n][1]; - } - dependencyLoopBody(); - - function dependencyLoopBody() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processMarketFiles -> timeFramesLoopBody -> dependencyLoopBody -> Entering function."); } - - let dependency = dataDependenciesModule.nodeArray[dependencyIndex]; - let datasetModule = dataDependenciesModule.dataSetsModulesArray[dependencyIndex]; - - getFile(); - - function getFile() { - try { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processMarketFiles -> timeFramesLoopBody -> dependencyLoopBody -> getFile -> Entering function."); } - - if (dependency.referenceParent.code.codeName !== "Multi-Period-Market") { - dependencyControlLoop(); - return - } - - if (dataDependenciesModule.isItADepenency(timeFrameLabel, datasetModule.node.parentNode.code.singularVariableName) !== true) { - if (!(bot.VALUES_TO_USE.timeFrame === timeFrameLabel && datasetModule.node.parentNode.code.pluralVariableName === 'candles')) { - dependencyControlLoop(); - return - } - } - - let fileName = "Data.json"; - let filePath = dependency.referenceParent.parentNode.code.codeName + '/' + dependency.referenceParent.code.codeName + "/" + timeFrameLabel; - datasetModule.getTextFile(filePath, fileName, onFileReceived); - - function onFileReceived(err, text) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processMarketFiles -> timeFramesLoopBody -> dependencyLoopBody -> getFile -> onFileReceived -> Entering function."); } - if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, "[INFO] start -> processMarketFiles -> timeFramesLoopBody -> dependencyLoopBody -> getFile -> onFileReceived -> text = " + text); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - if (err.message === 'File does not exist.') { - logger.write(MODULE_NAME, "[ERROR] The file " + filePath + '/' + fileName + ' does not exist and it is required to continue. This process will retry to read it in a while. In the meantime make yourself sure that the process that generates it has ran properly.'); - callBackFunction(global.DEFAULT_RETRY_RESPONSE); - } else { - logger.write(MODULE_NAME, "[ERROR] start -> processMarketFiles -> timeFramesLoopBody -> dependencyLoopBody -> getFile -> onFileReceived -> err = " + err.message); - callBackFunction(err); - } - return; - } - - let dataFile = JSON.parse(text); - dataFiles.set(dependency.id, dataFile); - - dependencyControlLoop(); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processMarketFiles -> timeFramesLoopBody -> dependencyLoopBody -> getFile -> onFileReceived -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processMarketFiles -> timeFramesLoopBody -> dependencyLoopBody -> getFile -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processMarketFiles -> timeFramesLoop -> dependencyLoopBody -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function dependencyControlLoop() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processMarketFiles -> dependencyControlLoop -> Entering function."); } - - dependencyIndex++; - - if (dependencyIndex < dataDependenciesModule.nodeArray.length) { - - dependencyLoopBody(); - - } else { - - let mapKey = global.marketFilesPeriods[n][1]; - multiPeriodDataFiles.set(mapKey, dataFiles) - - timeFramesControlLoop(); - - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processMarketFiles -> dependencyControlLoop -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processMarketFiles -> timeFramesLoopBody -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function timeFramesControlLoop() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processMarketFiles -> timeFramesControlLoop -> Entering function."); } - - n++; - - if (n < global.marketFilesPeriods.length) { - - timeFramesLoopBody(); - - } else { - - processDailyFiles(); - - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processMarketFiles -> timeFramesControlLoop -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processMarketFiles -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function processDailyFiles() { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> Entering function."); } - - try { - - let n = 0; - - if (currentTimeFrame) { - callTheBot() - return - } - - bot.multiPeriodProcessDatetime = new Date(contextVariables.lastFile.valueOf() - ONE_DAY_IN_MILISECONDS); // Go back one day to start well when we advance time at the begining of the loop. - - advanceTime(); - - function advanceTime() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> advanceTime -> Entering function."); } - - bot.multiPeriodProcessDatetime = new Date(bot.multiPeriodProcessDatetime.valueOf() + ONE_DAY_IN_MILISECONDS); - previousDay = new Date(bot.multiPeriodProcessDatetime.valueOf() - ONE_DAY_IN_MILISECONDS); - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> advanceTime -> bot.multiPeriodProcessDatetime = " + bot.multiPeriodProcessDatetime); } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> advanceTime -> previousDay = " + previousDay); } - - /* Validation that we are not going past the user defined end date. */ - - if (bot.multiPeriodProcessDatetime.valueOf() >= bot.VALUES_TO_USE.timeRange.finalDatetime.valueOf()) { - - const logText = "User Defined End Datetime reached @ " + previousDay.getUTCFullYear() + "/" + (previousDay.getUTCMonth() + 1) + "/" + previousDay.getUTCDate() + "."; - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> advanceTime -> " + logText); } - - bot.STOP_SESSION = true - callBackFunction(global.DEFAULT_OK_RESPONSE); - return; - - } - - /* Validation that we are not going past the head of the market. */ - - if (bot.multiPeriodProcessDatetime.valueOf() > contextVariables.dateEndOfMarket.valueOf() + ONE_DAY_IN_MILISECONDS - 1) { - - const logText = "Head of the market found @ " + previousDay.getUTCFullYear() + "/" + (previousDay.getUTCMonth() + 1) + "/" + previousDay.getUTCDate() + "."; - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> advanceTime -> " + logText); } - - callBackFunction(global.DEFAULT_OK_RESPONSE); - return; - - } - - checkStopTaskGracefully(); - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> advanceTime -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function checkStopTaskGracefully() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> checkStopTaskGracefully -> Entering function."); } - - /* Validation that we dont need to stop. */ - - if (global.STOP_TASK_GRACEFULLY === true) { - - callBackFunction(global.DEFAULT_OK_RESPONSE); - return; - - } - - checkStopProcessing(); - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> checkStopTaskGracefully -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function checkStopProcessing() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> checkStopProcessing -> Entering function."); } - - /* Validation that we dont need to stop. */ - - if (bot.STOP_SESSION === true) { - - callBackFunction(global.DEFAULT_OK_RESPONSE); - return; - - } - - timeFramesLoop(); - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> checkStopProcessing -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function timeFramesLoop() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> timeFramesLoop -> Entering function."); } - - /* Telling the world we are alive and doing well */ - let processingDate = bot.multiPeriodProcessDatetime.getUTCFullYear() + '-' + utilities.pad(bot.multiPeriodProcessDatetime.getUTCMonth() + 1, 2) + '-' + utilities.pad(bot.multiPeriodProcessDatetime.getUTCDate(), 2); - bot.processHeartBeat(processingDate) - - /* - - We will iterate through all posible timeFrames. - - */ - - n = 0 // loop Variable representing each possible period as defined at the timeFrames array. - - timeFramesLoopBody(); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> timeFramesLoop -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function timeFramesLoopBody() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> timeFramesLoopBody -> Entering function."); } - - const timeFrame = global.dailyFilePeriods[n][0]; - const timeFrameLabel = global.dailyFilePeriods[n][1]; - - if (processConfig.framework.validtimeFrames !== undefined) { - let validPeriod = false; - for (let i = 0; i < processConfig.framework.validtimeFrames.length; i++) { - let period = processConfig.framework.validtimeFrames[i]; - if (period === timeFrameLabel) { validPeriod = true } - } - if (validPeriod === false) { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> timeFramesLoopBody -> Discarding period for not being listed as a valid period. -> timeFrameLabel = " + timeFrameLabel); } - timeFramesControlLoop(); - return; - } - } - - if (bot.VALUES_TO_USE.timeFrame === timeFrameLabel) { - currentTimeFrame = global.dailyFilePeriods[n][0]; - currentTimeFrameLabel = global.dailyFilePeriods[n][1]; - } - - let dependencyIndex = 0; - dataFiles = new Map(); - dependencyLoopBody(); - - function dependencyLoopBody() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> timeFramesLoopBody -> dependencyLoopBody -> Entering function."); } - - let dependency = dataDependenciesModule.nodeArray[dependencyIndex]; - let datasetModule = dataDependenciesModule.dataSetsModulesArray[dependencyIndex]; - - let previousFile; - let currentFile; - - if (bot.multiPeriodProcessDatetime.valueOf() > contextVariables.dateBeginOfMarket.valueOf()) { - getPreviousFile(); - } else { - previousFile = []; - getCurrentFile() - } - - function getPreviousFile() { - try { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> timeFramesLoopBody -> dependencyLoopBody -> getPreviousFile -> Entering function."); } - - if (dependency.referenceParent.code.codeName !== "Multi-Period-Daily") { - dependencyControlLoop(); - return - } - - if (dataDependenciesModule.isItADepenency(timeFrameLabel, datasetModule.node.parentNode.code.singularVariableName) !== true) { - if (!(bot.VALUES_TO_USE.timeFrame === timeFrameLabel && datasetModule.node.parentNode.code.pluralVariableName === 'candles')) { - dependencyControlLoop(); - return - } - } - - let dateForPath = previousDay.getUTCFullYear() + '/' + utilities.pad(previousDay.getUTCMonth() + 1, 2) + '/' + utilities.pad(previousDay.getUTCDate(), 2); - let filePath - - if (dependency.referenceParent.code.codeName === "Multi-Period-Daily") { - filePath = dependency.referenceParent.parentNode.code.codeName + '/' + dependency.referenceParent.code.codeName + "/" + timeFrameLabel + "/" + dateForPath; - } else { - filePath = dependency.referenceParent.parentNode.code.codeName + '/' + dependency.referenceParent.code.codeName + "/" + dateForPath; - } - let fileName = "Data.json"; - - datasetModule.getTextFile(filePath, fileName, onFileReceived); - - function onFileReceived(err, text) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> timeFramesLoopBody -> dependencyLoopBody -> getPreviousFile -> onFileReceived -> Entering function."); } - if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> timeFramesLoopBody -> dependencyLoopBody -> getPreviousFile -> onFileReceived -> text = " + text); } - - if ((err.message === "File does not exist." && botNeverRan === true) || err.code === 'The specified key does not exist.') { - - /* - Sometimes one of the dependencies of an indicator for some reasons are not calculated from the begining of the market. - When that happens we can not find those files. What we do in this situation is to move the time fordward until we can find - all the dependencies and the first run of the bot is successful. - - After that, we will not accept more missing files on any of the dependencies, and if any is missing we will abort the processing. - */ - logger.write(MODULE_NAME, "[WARN] start -> processDailyFiles -> timeFramesLoopBody -> dependencyLoopBody -> getPreviousFile -> onFileReceived -> Skipping day because file " + filePath + "/" + fileName + " was not found."); - - advanceTime(); - return; - } - - if ((err.result === "Fail Because" && err.message === "File does not exist.") || err.code === 'The specified key does not exist.') { - - logger.write(MODULE_NAME, "[ERROR] The file " + filePath + '/' + fileName + ' does not exist and it is required to continue. This process will retry to read it in a while. In the meantime make yourself sure that the process that generates it has ran properly.'); - callBackFunction(global.DEFAULT_RETRY_RESPONSE); - return; - } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> timeFramesLoopBody -> dependencyLoopBody -> getPreviousFile -> onFileReceived -> err = " + err.stack); - callBackFunction(err); - return; - } - - previousFile = JSON.parse(text); - - getCurrentFile(); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> timeFramesLoopBody -> dependencyLoopBody -> getPreviousFile -> onFileReceived -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> timeFramesLoopBody -> dependencyLoopBody -> getPreviousFile -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function getCurrentFile() { - try { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> timeFramesLoopBody -> dependencyLoopBody -> getCurrentFile -> Entering function."); } - - if (dependency.referenceParent.code.codeName !== "Multi-Period-Daily") { - dependencyControlLoop(); - return - } - - if (dataDependenciesModule.isItADepenency(timeFrameLabel, datasetModule.node.parentNode.code.singularVariableName) !== true) { - if (!(bot.VALUES_TO_USE.timeFrame === timeFrameLabel && datasetModule.node.parentNode.code.pluralVariableName === 'candles')) { - dependencyControlLoop(); - return - } - } - - let dateForPath = bot.multiPeriodProcessDatetime.getUTCFullYear() + '/' + utilities.pad(bot.multiPeriodProcessDatetime.getUTCMonth() + 1, 2) + '/' + utilities.pad(bot.multiPeriodProcessDatetime.getUTCDate(), 2); - let filePath - if (dependency.referenceParent.code.codeName === "Multi-Period-Daily") { - filePath = dependency.referenceParent.parentNode.code.codeName + '/' + dependency.referenceParent.code.codeName + "/" + timeFrameLabel + "/" + dateForPath; - } else { - filePath = dependency.referenceParent.parentNode.code.codeName + '/' + dependency.referenceParent.code.codeName + "/" + dateForPath; - } - let fileName = "Data.json"; - - datasetModule.getTextFile(filePath, fileName, onFileReceived); - - function onFileReceived(err, text) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> timeFramesLoopBody -> dependencyLoopBody -> getCurrentFile -> onFileReceived -> Entering function."); } - if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> timeFramesLoopBody -> dependencyLoopBody -> getCurrentFile -> onFileReceived -> text = " + text); } - - if ((err.result === "Fail Because" && err.message === "File does not exist.") || err.code === 'The specified key does not exist.') { - - logger.write(MODULE_NAME, "[ERROR] The file " + filePath + '/' + fileName + ' does not exist and it is required to continue. This process will retry to read it in a while. In the meantime make yourself sure that the process that generates it has ran properly.'); - callBackFunction(global.DEFAULT_RETRY_RESPONSE); - return; - } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> timeFramesLoopBody -> dependencyLoopBody -> getCurrentFile -> onFileReceived -> Not Ok -> err = " + err.code); - callBackFunction(err); - return; - } - - currentFile = JSON.parse(text); - - let dataFile = previousFile.concat(currentFile); - - dataFiles.set(dependency.id, dataFile); - - dependencyControlLoop(); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> timeFramesLoopBody -> dependencyLoopBody -> getCurrentFile -> onFileReceived -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> timeFramesLoopBody -> dependencyLoopBody -> getCurrentFile -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> timeFramesLoop -> dependencyLoopBody -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function dependencyControlLoop() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> dependencyControlLoop -> Entering function."); } - - dependencyIndex++; - - if (dependencyIndex < dataDependenciesModule.nodeArray.length) { - - dependencyLoopBody(); - - } else { - - let mapKey = global.dailyFilePeriods[n][1]; - multiPeriodDataFiles.set(mapKey, dataFiles) - - timeFramesControlLoop(); - - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> dependencyControlLoop -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> timeFramesLoopBody -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function timeFramesControlLoop() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> timeFramesControlLoop -> Entering function."); } - - n++; - - if (n < global.dailyFilePeriods.length) { - - timeFramesLoopBody(); - - } else { - - n = 0; - - if (currentTimeFrame !== undefined) { - callTheBot(); - } else { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> timeFramesControlLoop -> Time Frame not Recognized. Can not continue." ); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> timeFramesControlLoop -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function callTheBot() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> callTheBot -> Entering function."); } - - botInstance.start( - multiPeriodDataFiles, - currentTimeFrame, - currentTimeFrameLabel, - bot.multiPeriodProcessDatetime, - interExecutionMemoryArray[n], - onBotFinished); - - function onBotFinished(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> callTheBot -> onBotFinished -> Entering function."); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - callBackFunction(err); - return; - } - - botNeverRan = false; - - if (currentTimeFrame > global.dailyFilePeriods[0][0]) { - writeMarketStatusReport(onMarketStatusReport) - - } else { - writeDataRanges(currentTimeFrameLabel, onWritten); - } - - function onWritten(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> callTheBot -> onBotFinished -> onWritten -> Entering function."); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> callTheBot -> onBotFinished -> onWritten -> err = " + err.stack); - callBackFunction(err); - return; - } - - writeDailyStatusReport(bot.multiPeriodProcessDatetime, onDailyStatusReport); - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> callTheBot -> onBotFinished -> onWritten -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - - function onDailyStatusReport() { - try { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> callTheBot -> onBotFinished -> onDailyStatusReport -> Entering function."); } - - /* The next run we need the process to continue at the date it finished. */ - processConfig.framework.startDate.resumeExecution = true; - - advanceTime(); - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> callTheBot -> onBotFinished -> onDailyStatusReport -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function onMarketStatusReport() { - try { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> callTheBot -> onBotFinished -> onMarketStatusReport -> Entering function."); } - - /* This is where we check if we need reached the user defined end datetime. */ - - const now = new Date() - if (now.valueOf() >= bot.VALUES_TO_USE.timeRange.finalDatetime.valueOf()) { - - const logText = "User Defined End Datetime reached @ " + now.getUTCFullYear() + "/" + (now.getUTCMonth() + 1) + "/" + now.getUTCDate() + "."; - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processDailyFiles -> callTheBot -> onBotFinished -> onMarketStatusReport -> " + logText); } - - bot.STOP_SESSION = true - callBackFunction(global.DEFAULT_OK_RESPONSE); - return; - - } - - callBackFunction(global.DEFAULT_OK_RESPONSE); - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> callTheBot -> onBotFinished -> onMarketStatusReport -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> callTheBot -> onBotFinished -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> callTheBot -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processDailyFiles -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function writeDataRanges(currentTimeFrameLabel, callBack) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDataRanges -> Entering function."); } - - let outputDatasetIndex = -1; - controlLoop(); - - function productLoopBody() { - let productCodeName = bot.processNode.referenceParent.processOutput.outputDatasets[outputDatasetIndex].referenceParent.parentNode.code.codeName; - writeDataRange(contextVariables.dateBeginOfMarket, bot.multiPeriodProcessDatetime, productCodeName, currentTimeFrameLabel, controlLoop); - } - - function controlLoop() { - - outputDatasetIndex++; - - if (outputDatasetIndex < bot.processNode.referenceParent.processOutput.outputDatasets.length) { - productLoopBody(); - } else { - callBack(global.DEFAULT_OK_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeDataRanges -> err = " + err.stack); - callBack(global.DEFAULT_FAIL_RESPONSE); - } - - } - - function writeDataRange(pBegin, pEnd, productCodeName, currentTimeFrameLabel, callBack) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDataRange -> Entering function."); } - - let dataRange = { - begin: pBegin.valueOf(), - end: pEnd.valueOf() + ONE_DAY_IN_MILISECONDS - }; - - let fileContent = JSON.stringify(dataRange); - - let fileName = '/Data.Range.json'; - let filePath = bot.filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + productCodeName + "/" + 'Multi-Period-Daily' + fileName; - - fileStorage.createTextFile(filePath, fileContent + '\n', onFileCreated); - - function onFileCreated(err) { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDataRange -> onFileCreated -> Entering function."); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - logger.write(MODULE_NAME, "[ERROR] start -> writeDataRange -> onFileCreated -> err = " + err.stack); - callBack(err); - return; - } - - if (LOG_FILE_CONTENT === true) { - logger.write(MODULE_NAME, "[INFO] start -> writeDataRange -> onFileCreated -> Content written = " + fileContent); - } - - let key = bot.dataMine + "-" + bot.codeName + "-" + productCodeName + "-" + bot.exchange + "-" + bot.market.baseAsset + '/' + bot.market.quotedAsset - let event = { - dateRange: dataRange - } - - global.EVENT_SERVER_CLIENT.raiseEvent(key, 'Data Range Updated', event) - - callBack(global.DEFAULT_OK_RESPONSE); - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeDataRange -> err = " + err.stack); - callBack(global.DEFAULT_FAIL_RESPONSE); - } - } - - function writeDailyStatusReport(lastFileDate, callBack) { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDailyStatusReport -> Entering function."); } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDailyStatusReport -> lastFileDate = " + lastFileDate); } - - try { - - let reportKey = bot.dataMine + "-" + bot.codeName + "-" + "Multi-Period" + "-" + "dataSet.V1"; - let thisReport = statusDependencies.statusReports.get(reportKey); - - thisReport.file.lastExecution = bot.currentDaytime; - thisReport.file.lastFile = lastFileDate; - thisReport.file.interExecutionMemoryArray = interExecutionMemoryArray; - thisReport.save(callBack); - - bot.hasTheBotJustStarted = false; - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyStatusReport -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function writeMarketStatusReport(callBack) { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeMarketStatusReport -> Entering function."); } - - try { - - let reportKey = bot.dataMine + "-" + bot.codeName + "-" + "Multi-Period" + "-" + "dataSet.V1"; - let thisReport = statusDependencies.statusReports.get(reportKey); - - thisReport.file.lastExecution = bot.processDatetime; - thisReport.save(callBack); - - logger.newInternalLoop(bot.codeName, bot.process, bot.multiPeriodProcessDatetime); - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketStatusReport -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - } - - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function pad(str, max) { - str = str.toString(); - return str.length < max ? pad(" " + str, max) : str; - } -}; diff --git a/TaskServer/MultiPeriodDaily.js b/TaskServer/MultiPeriodDaily.js index 4e384081d..cdc4a892b 100644 --- a/TaskServer/MultiPeriodDaily.js +++ b/TaskServer/MultiPeriodDaily.js @@ -1,10 +1,7 @@ exports.newMultiPeriodDaily = function newMultiPeriodDaily(bot, logger, UTILITIES, FILE_STORAGE) { - const FULL_LOG = true; - const LOG_FILE_CONTENT = false; const MODULE_NAME = "Multi Period Daily"; const GMT_SECONDS = ':00.000 GMT+0000'; - const ONE_DAY_IN_MILISECONDS = 24 * 60 * 60 * 1000; thisObject = { initialize: initialize, @@ -12,17 +9,15 @@ start: start }; - let utilities = UTILITIES.newCloudUtilities(logger); + let utilities = UTILITIES.newCloudUtilities(logger) + let fileStorage = FILE_STORAGE.newFileStorage(logger) let statusDependencies; let dataDependenciesModule; let dataFiles = new Map; + let indicatorOutputModule; - let botInstance; - - let fileStorage = FILE_STORAGE.newFileStorage(logger); - - let bootstrappingTheProcess = false + let bootstrappingTheProcess = false let processConfig; let beginingOfMarket @@ -30,49 +25,34 @@ return thisObject; function initialize(pProcessConfig, pStatusDependencies, pDataDependencies, callBackFunction) { + logger.fileName = MODULE_NAME; + logger.initialize() - try { + statusDependencies = pStatusDependencies; + dataDependenciesModule = pDataDependencies; + processConfig = pProcessConfig; - logger.fileName = MODULE_NAME; - logger.initialize(); + let INDICATOR_OUTPUT_MODULE = require("./IndicatorOutput") - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Entering function."); } - - statusDependencies = pStatusDependencies; - dataDependenciesModule = pDataDependencies; - processConfig = pProcessConfig; - - let USER_BOT_MODULE = require("./IndicatorBot") - - botInstance = USER_BOT_MODULE.newIndicatorBot(bot, logger, UTILITIES, FILE_STORAGE); - botInstance.initialize(callBackFunction); - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } + indicatorOutputModule = INDICATOR_OUTPUT_MODULE.newIndicatorOutput(bot, logger, UTILITIES, FILE_STORAGE) + indicatorOutputModule.initialize(callBackFunction) } function finalize() { dataFiles = undefined statusDependencies = undefined dataDependenciesModule = undefined - botInstance = undefined + indicatorOutputModule = undefined fileStorage = undefined processConfig = undefined thisObject = undefined } function start(callBackFunction) { - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> Entering function."); } - let market = bot.market; /* Context Variables */ - let contextVariables = { lastFile: undefined, // Datetime of the last file files sucessfully produced by this process. dateBeginOfMarket: undefined, // Datetime of the first trade file in the whole market history. @@ -80,726 +60,512 @@ }; let previousDay; // Holds the date of the previous day relative to the processing date. - let interExecutionMemoryArray; - getContextVariables(); + getContextVariables() function getContextVariables() { - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Entering function."); } - let thisReport; let reportKey; let statusReport; - /* - We look first for the bot who knows the begining of the market in order to get when the market starts. + We look first for the bot who knows the begining of the market in order to get when the market starts. */ - statusReport = statusDependencies.reportsByMainUtility.get("Market Starting Point") if (statusReport === undefined) { // This means the status report does not exist, that could happen for instance at the begining of a month. - logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> Market Starting Point -> Status Report does not exist or Market Starting Point not defined. Retrying Later. "); - callBackFunction(global.DEFAULT_RETRY_RESPONSE); - return; + logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> Market Starting Point -> Status Report does not exist or Market Starting Point not defined. Retrying Later. ") + callBackFunction(global.DEFAULT_RETRY_RESPONSE) + return } if (statusReport.status === "Status Report is corrupt.") { - logger.write(MODULE_NAME, "[ERROR] start -> getContextVariables -> Can not continue because dependecy Status Report is corrupt. "); - callBackFunction(global.DEFAULT_RETRY_RESPONSE); - return; + logger.write(MODULE_NAME, "[ERROR] start -> getContextVariables -> Can not continue because dependecy Status Report is corrupt. ") + callBackFunction(global.DEFAULT_RETRY_RESPONSE) + return } thisReport = statusReport.file; if (thisReport.beginingOfMarket === undefined) { - logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> Undefined Last File. -> reportKey = " + reportKey); - logger.write(MODULE_NAME, "[HINT] start -> getContextVariables -> It is too early too run this process since the trade history of the market is not there yet."); + logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> Undefined Last File. -> reportKey = " + reportKey) + logger.write(MODULE_NAME, "[HINT] start -> getContextVariables -> It is too early too run this process since the trade history of the market is not there yet.") let customOK = { result: global.CUSTOM_OK_RESPONSE.result, message: "Dependency does not exist." } - logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> customOK = " + customOK.message); - callBackFunction(customOK); - return; + logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> customOK = " + customOK.message) + callBackFunction(customOK) + return } - contextVariables.dateBeginOfMarket = new Date(thisReport.beginingOfMarket.year + "-" + thisReport.beginingOfMarket.month + "-" + thisReport.beginingOfMarket.days + " " + thisReport.beginingOfMarket.hours + ":" + thisReport.beginingOfMarket.minutes + GMT_SECONDS); - + contextVariables.dateBeginOfMarket = new Date(thisReport.beginingOfMarket.year + "-" + thisReport.beginingOfMarket.month + "-" + thisReport.beginingOfMarket.days + " " + thisReport.beginingOfMarket.hours + ":" + thisReport.beginingOfMarket.minutes + GMT_SECONDS) /* - Here we get the status report from the bot who knows which is the end of the market. + Here we get the status report from the bot who knows which is the end of the market. */ - statusReport = statusDependencies.reportsByMainUtility.get("Market Ending Point") if (statusReport === undefined) { // This means the status report does not exist, that could happen for instance at the begining of a month. - logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> Market Ending Point -> Status Report does not exist or Market Ending Point not defined. Retrying Later. "); - callBackFunction(global.DEFAULT_RETRY_RESPONSE); - return; + logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> Market Ending Point -> Status Report does not exist or Market Ending Point not defined. Retrying Later. ") + callBackFunction(global.DEFAULT_RETRY_RESPONSE) + return } if (statusReport.status === "Status Report is corrupt.") { - logger.write(MODULE_NAME, "[ERROR] start -> getContextVariables -> Can not continue because dependecy Status Report is corrupt. "); - callBackFunction(global.DEFAULT_RETRY_RESPONSE); - return; + logger.write(MODULE_NAME, "[ERROR] start -> getContextVariables -> Can not continue because dependecy Status Report is corrupt. ") + callBackFunction(global.DEFAULT_RETRY_RESPONSE) + return } thisReport = statusReport.file; if (thisReport.lastFile === undefined) { - logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> Undefined Last File. -> reportKey = " + reportKey); + logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> Undefined Last File. -> reportKey = " + reportKey) let customOK = { result: global.CUSTOM_OK_RESPONSE.result, message: "Dependency not ready." } - logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> customOK = " + customOK.message); - callBackFunction(customOK); - return; + logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> customOK = " + customOK.message) + callBackFunction(customOK) + return } - contextVariables.dateEndOfMarket = new Date(thisReport.lastFile.valueOf()); + contextVariables.dateEndOfMarket = new Date(thisReport.lastFile.valueOf()) /* Finally we get our own Status Report. */ - statusReport = statusDependencies.reportsByMainUtility.get("Self Reference") if (statusReport === undefined) { // This means the status report does not exist, that could happen for instance at the begining of a month. - logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> Self Reference -> Status Report does not exist or Self Reference not defined. Retrying Later. "); - callBackFunction(global.DEFAULT_RETRY_RESPONSE); - return; + logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> Self Reference -> Status Report does not exist or Self Reference not defined. Retrying Later. ") + callBackFunction(global.DEFAULT_RETRY_RESPONSE) + return } if (statusReport.status === "Status Report is corrupt.") { - logger.write(MODULE_NAME, "[ERROR] start -> getContextVariables -> Can not continue because self dependecy Status Report is corrupt. Aborting Process."); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; + logger.write(MODULE_NAME, "[ERROR] start -> getContextVariables -> Can not continue because self dependecy Status Report is corrupt. Aborting Process.") + callBackFunction(global.DEFAULT_FAIL_RESPONSE) + return } thisReport = statusReport.file; if (thisReport.lastFile !== undefined) { - beginingOfMarket = new Date(thisReport.beginingOfMarket); + beginingOfMarket = new Date(thisReport.beginingOfMarket) if (beginingOfMarket.valueOf() !== contextVariables.dateBeginOfMarket.valueOf()) { // Reset Mechanism for Begining of the Market - logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Reset Mechanism for Begining of the Market Activated. -> reportKey = " + reportKey); + logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Reset Mechanism for Begining of the Market Activated. -> reportKey = " + reportKey) - beginingOfMarket = new Date(contextVariables.dateBeginOfMarket.valueOf()); - startFromBegining(); - return; + beginingOfMarket = new Date(contextVariables.dateBeginOfMarket.valueOf()) + startFromBegining() + return } if (bot.hasTheBotJustStarted === true && processConfig.framework.startDate !== undefined && processConfig.framework.startDate.resumeExecution === false) { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Starting from the begining because bot has just started and resume execution was true."); } - startFromBegining(); - return; + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Starting from the begining because bot has just started and resume execution was true.") } + startFromBegining() + return } - contextVariables.lastFile = new Date(thisReport.lastFile); + contextVariables.lastFile = new Date(thisReport.lastFile) interExecutionMemoryArray = thisReport.interExecutionMemoryArray; - processTimeFrames(); - return; - + processTimeFrames() } else { /* In the case when there is no status report, we assume like the last processed file is the one on the date of Begining of Market. */ - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Starting from the begining of the market because own status report not found or lastFile was undefined."); } - beginingOfMarket = new Date(contextVariables.dateBeginOfMarket.valueOf()); - startFromBegining(); - return; + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Starting from the begining of the market because own status report not found or lastFile was undefined.") } + beginingOfMarket = new Date(contextVariables.dateBeginOfMarket.valueOf()) + startFromBegining() } function startFromBegining() { + contextVariables.lastFile = new Date(contextVariables.dateBeginOfMarket.getUTCFullYear() + "-" + (contextVariables.dateBeginOfMarket.getUTCMonth() + 1) + "-" + contextVariables.dateBeginOfMarket.getUTCDate() + " " + "00:00" + GMT_SECONDS) - contextVariables.lastFile = new Date(contextVariables.dateBeginOfMarket.getUTCFullYear() + "-" + (contextVariables.dateBeginOfMarket.getUTCMonth() + 1) + "-" + contextVariables.dateBeginOfMarket.getUTCDate() + " " + "00:00" + GMT_SECONDS); - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> startFromBegining -> contextVariables.lastFile = " + contextVariables.lastFile); } - + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> startFromBegining -> contextVariables.lastFile = " + contextVariables.lastFile) } /* The first time the process is running is the right time to create the data structure that is going to be shared across different executions. This data structure has one object per each timeFrame. */ - - interExecutionMemoryArray = []; + interExecutionMemoryArray = [] /* Also, we will remember that we are bootstrapping the process, this will allow us, to advanceTime if necesary. It can happen that a process depends on data from another process that does not produce a file during the first day, or even more days, in that situation we want the process not to just wait for that data that will never arrive, but to advance time until it finds valid data. */ - bootstrappingTheProcess = true for (let i = 0; i < global.dailyFilePeriods.length; i++) { let emptyObject = {}; - interExecutionMemoryArray.push(emptyObject); + interExecutionMemoryArray.push(emptyObject) } - processTimeFrames(); - + processTimeFrames() } } catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> getContextVariables -> err = "+ err.stack); + logger.write(MODULE_NAME, "[ERROR] start -> getContextVariables -> err = " + err.stack) if (err.message === "Cannot read property 'file' of undefined") { - logger.write(MODULE_NAME, "[HINT] start -> getContextVariables -> Check the bot configuration to see if all of its statusDependencies declarations are correct. "); - logger.write(MODULE_NAME, "[HINT] start -> getContextVariables -> Dependencies loaded -> keys = " + JSON.stringify(statusDependencies.keys)); + logger.write(MODULE_NAME, "[HINT] start -> getContextVariables -> Check the bot configuration to see if all of its statusDependencies declarations are correct. ") + logger.write(MODULE_NAME, "[HINT] start -> getContextVariables -> Dependencies loaded -> keys = " + JSON.stringify(statusDependencies.keys)) } - callBackFunction(global.DEFAULT_FAIL_RESPONSE); + callBackFunction(global.DEFAULT_FAIL_RESPONSE) } } function processTimeFrames() { + let n; + let botNeverRan = true; - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> Entering function."); } + bot.multiPeriodDailyProcessDatetime = new Date(contextVariables.lastFile.valueOf() - ONE_DAY_IN_MILISECONDS) // Go back one day to start well when we advance time at the begining of the loop. + let fromDate = new Date(bot.multiPeriodDailyProcessDatetime.valueOf()) + let lastDate = new Date() - try { + advanceTime() - let n; - let botNeverRan = true; + function advanceTime() { + bot.multiPeriodDailyProcessDatetime = new Date(bot.multiPeriodDailyProcessDatetime.valueOf() + ONE_DAY_IN_MILISECONDS) + previousDay = new Date(bot.multiPeriodDailyProcessDatetime.valueOf() - ONE_DAY_IN_MILISECONDS) - bot.multiPeriodDailyProcessDatetime = new Date(contextVariables.lastFile.valueOf() - ONE_DAY_IN_MILISECONDS); // Go back one day to start well when we advance time at the begining of the loop. - let fromDate = new Date(bot.multiPeriodDailyProcessDatetime.valueOf()) - let lastDate = new Date() + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> advanceTime -> bot.multiPeriodDailyProcessDatetime = " + bot.multiPeriodDailyProcessDatetime) } + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> advanceTime -> previousDay = " + previousDay) } - advanceTime(); + /* Validation that we are not going past the head of the market. */ + if (bot.multiPeriodDailyProcessDatetime.valueOf() > contextVariables.dateEndOfMarket.valueOf()) { - function advanceTime() { + const logText = "Head of the market found @ " + previousDay.getUTCFullYear() + "/" + (previousDay.getUTCMonth() + 1) + "/" + previousDay.getUTCDate() + "."; + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> advanceTime -> " + logText) } - try { + callBackFunction(global.DEFAULT_OK_RESPONSE) + return - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> advanceTime -> Entering function."); } - - bot.multiPeriodDailyProcessDatetime = new Date(bot.multiPeriodDailyProcessDatetime.valueOf() + ONE_DAY_IN_MILISECONDS); - previousDay = new Date(bot.multiPeriodDailyProcessDatetime.valueOf() - ONE_DAY_IN_MILISECONDS); - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> advanceTime -> bot.multiPeriodDailyProcessDatetime = " + bot.multiPeriodDailyProcessDatetime); } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> advanceTime -> previousDay = " + previousDay); } - - /* Validation that we are not going past the head of the market. */ - - if (bot.multiPeriodDailyProcessDatetime.valueOf() > contextVariables.dateEndOfMarket.valueOf()) { - - const logText = "Head of the market found @ " + previousDay.getUTCFullYear() + "/" + (previousDay.getUTCMonth() + 1) + "/" + previousDay.getUTCDate() + "."; - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> advanceTime -> " + logText); } - - callBackFunction(global.DEFAULT_OK_RESPONSE); - return; - - } - - /* Telling the world we are alive and doing well */ - let currentDateString = bot.multiPeriodDailyProcessDatetime.getUTCFullYear() + '-' + utilities.pad(bot.multiPeriodDailyProcessDatetime.getUTCMonth() + 1, 2) + '-' + utilities.pad(bot.multiPeriodDailyProcessDatetime.getUTCDate(), 2); - let currentDate = new Date(bot.multiPeriodDailyProcessDatetime) - let percentage = global.getPercentage(fromDate, currentDate, lastDate) - bot.processHeartBeat(currentDateString, percentage) - - if (global.areEqualDates(currentDate, new Date()) === false) { - logger.newInternalLoop(bot.codeName, bot.process, currentDate, percentage); - } - - checkStopTaskGracefully(); - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> advanceTime -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } } - function checkStopTaskGracefully() { + /* Telling the world we are alive and doing well */ + let currentDateString = bot.multiPeriodDailyProcessDatetime.getUTCFullYear() + '-' + utilities.pad(bot.multiPeriodDailyProcessDatetime.getUTCMonth() + 1, 2) + '-' + utilities.pad(bot.multiPeriodDailyProcessDatetime.getUTCDate(), 2) + let currentDate = new Date(bot.multiPeriodDailyProcessDatetime) + let percentage = global.getPercentage(fromDate, currentDate, lastDate) + bot.processHeartBeat(currentDateString, percentage) - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFramesDailyFiles -> checkStopTaskGracefully -> Entering function."); } - - /* Validation that we dont need to stop. */ - - if (global.STOP_TASK_GRACEFULLY === true) { - - callBackFunction(global.DEFAULT_OK_RESPONSE); - return; - - } - - periodsLoop(); - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFramesDailyFiles -> checkStopTaskGracefully -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } + if (global.areEqualDates(currentDate, new Date()) === false) { + logger.newInternalLoop(bot.codeName, bot.process, currentDate, percentage) } - - function periodsLoop() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoop -> Entering function."); } - - /* - - We will iterate through all posible periods. - - */ - - n = 0 // loop Variable representing each possible period as defined at the periods array. - - periodsLoopBody(); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoop -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function periodsLoopBody() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoopBody -> Entering function."); } - - const timeFrame = global.dailyFilePeriods[n][0]; - const timeFrameLabel = global.dailyFilePeriods[n][1]; - - if (processConfig.framework.validPeriods !== undefined) { - let validPeriod = false; - for (let i = 0; i < processConfig.framework.validPeriods.length; i++) { - let period = processConfig.framework.validPeriods[i]; - if (period === timeFrameLabel) { validPeriod = true } - } - if (validPeriod === false) { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoopBody -> Discarding period for not being listed as a valid period. -> timeFrameLabel = " + timeFrameLabel); } - periodsControlLoop(); - return; - } - } - - let dependencyIndex = 0; - dataFiles = new Map(); - - dependencyLoopBody(); - - function dependencyLoopBody() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> Entering function."); } - - let dependency = dataDependenciesModule.nodeArray[dependencyIndex]; - - if (dependency === undefined ) { - - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> You need to add at least one Data Dependency to the process Multi Period Daily. Aborting process." ); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - - let datasetModule = dataDependenciesModule.dataSetsModulesArray[dependencyIndex]; - - let previousFile; - let currentFile; - - if (bot.multiPeriodDailyProcessDatetime.valueOf() > contextVariables.dateBeginOfMarket.valueOf()) { - getPreviousFile(); - } else { - previousFile = []; - getCurrentFile() - } - - function getPreviousFile() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getPreviousFile -> Entering function."); } - - let dateForPath = previousDay.getUTCFullYear() + '/' + utilities.pad(previousDay.getUTCMonth() + 1, 2) + '/' + utilities.pad(previousDay.getUTCDate(), 2); - let filePath - if (dependency.referenceParent.code.codeName === "Multi-Period-Daily") { - filePath = dependency.referenceParent.parentNode.code.codeName + '/' + dependency.referenceParent.code.codeName + "/" + timeFrameLabel + "/" + dateForPath; - } else { - filePath = dependency.referenceParent.parentNode.code.codeName + '/' + dependency.referenceParent.code.codeName + "/" + dateForPath; - } - let fileName = "Data.json"; - - datasetModule.getTextFile(filePath, fileName, onFileReceived); - - function onFileReceived(err, text) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getPreviousFile -> onFileReceived -> Entering function."); } - if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getPreviousFile -> onFileReceived -> text = " + text); } - - if ((err.message === "File does not exist." && botNeverRan === true) || err.code === 'The specified key does not exist.') { - - /* - Sometimes one of the dependencies of an indicator for some reasons are not calculated from the begining of the market. - When that happens we can not find those files. What we do in this situation is to move the time fordward until we can find - all the dependencies and the first run of the bot is successful. - - After that, we will not accept more missing files on any of the dependencies, and if any is missing we will abort the processing. - */ - logger.write(MODULE_NAME, "[WARN] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getPreviousFile -> onFileReceived -> Skipping day because file " + filePath + "/" + fileName + " was not found."); - - advanceTime(); - return; - } - - if ((err.result === "Fail Because" && err.message === "File does not exist.") || err.code === 'The specified key does not exist.') { - - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getPreviousFile -> onFileReceived -> err = "+ err.stack); - callBackFunction(global.DEFAULT_RETRY_RESPONSE); - return; - } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getPreviousFile -> onFileReceived -> err = "+ err.stack); - callBackFunction(err); - return; - } - - previousFile = JSON.parse(text); - - getCurrentFile(); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getPreviousFile -> onFileReceived -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getPreviousFile -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function getCurrentFile() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getCurrentFile -> Entering function."); } - - let dateForPath = bot.multiPeriodDailyProcessDatetime.getUTCFullYear() + '/' + utilities.pad(bot.multiPeriodDailyProcessDatetime.getUTCMonth() + 1, 2) + '/' + utilities.pad(bot.multiPeriodDailyProcessDatetime.getUTCDate(), 2); - let filePath - if (dependency.referenceParent.code.codeName === "Multi-Period-Daily") { - filePath = dependency.referenceParent.parentNode.code.codeName + '/' + dependency.referenceParent.code.codeName + "/" + timeFrameLabel + "/" + dateForPath; - } else { - filePath = dependency.referenceParent.parentNode.code.codeName + '/' + dependency.referenceParent.code.codeName + "/" + dateForPath; - } - let fileName = "Data.json"; - - datasetModule.getTextFile(filePath, fileName, onFileReceived); - - function onFileReceived(err, text) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getCurrentFile -> onFileReceived -> Entering function."); } - if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getCurrentFile -> onFileReceived -> text = " + text); } - - if ((err.result === "Fail Because" && err.message === "File does not exist.") || err.code === 'The specified key does not exist.') { - - if (bootstrappingTheProcess === true) { - /* - In the special situation where we are running this process for the first time (no status report found), - we will consider the possibility that a depanant process does not produce a file during the first day of the market, - or even more than one day. That is why we are going to advance time here. - */ - advanceTime() - return - } - - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getCurrentFile -> onFileReceived -> err = " + err.code); - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getCurrentFile -> onFileReceived -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getCurrentFile -> onFileReceived -> fileName = " + fileName); - callBackFunction(global.DEFAULT_RETRY_RESPONSE); - return; - } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getCurrentFile -> Not OK -> onFileReceived -> err = " + err.code); - callBackFunction(err); - return; - } - - currentFile = JSON.parse(text); - - let dataFile = previousFile.concat(currentFile); - - dataFiles.set(dependency.id, dataFile); - dependencyControlLoop(); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getCurrentFile -> Catch Error -> onFileReceived -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getCurrentFile -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoop -> dependencyLoopBody -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function dependencyControlLoop() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> dependencyControlLoop -> Entering function."); } - - dependencyIndex++; - - if (dependencyIndex < dataDependenciesModule.nodeArray.length) { - - dependencyLoopBody(); - - } else { - - callTheBot(); - - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> dependencyControlLoop -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function callTheBot() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoopBody -> callTheBot -> Entering function."); } - - const timeFrame = global.dailyFilePeriods[n][0]; - const timeFrameLabel = global.dailyFilePeriods[n][1]; - - botInstance.start( - dataFiles, - timeFrame, - timeFrameLabel, - bot.multiPeriodDailyProcessDatetime, - interExecutionMemoryArray[n], - onBotFinished); - - function onBotFinished(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoopBody -> callTheBot -> onBotFinished -> Entering function."); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - callBackFunction(err); - return; - } - - botNeverRan = false; - periodsControlLoop(); - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> callTheBot -> onBotFinished -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> callTheBot -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function periodsControlLoop() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsControlLoop -> Entering function."); } - - n++; - - if (n < global.dailyFilePeriods.length) { - - periodsLoopBody(); - - } else { - - n = 0; - - writeDataRanges(onWritten); - - function onWritten(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> controlLoop -> onWritten -> Entering function."); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> controlLoop -> onWritten -> err = "+ err.stack); - callBackFunction(err); - return; - } - - writeStatusReport(bot.multiPeriodDailyProcessDatetime, advanceTime); - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> controlLoop -> onWritten -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsControlLoop -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - + checkStopTaskGracefully() } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); + function checkStopTaskGracefully() { + /* Validation that we dont need to stop. */ + if (global.STOP_TASK_GRACEFULLY === true) { + callBackFunction(global.DEFAULT_OK_RESPONSE) + return + } + timeFramesLoop() + } + + function timeFramesLoop() { + /* + We will iterate through all posible timeFrames. + */ + n = 0 // loop Variable representing each possible period as defined at the timeFrames array. + timeFramesLoopBody() + } + + function timeFramesLoopBody() { + + const timeFrame = global.dailyFilePeriods[n][0] + const timeFrameLabel = global.dailyFilePeriods[n][1] + + /* Check Time Frames Filter */ + if (bot.dailyTimeFrames !== undefined) { + if (bot.dailyTimeFrames.includes(timeFrameLabel) === false) { + /* We are not going to process this Time Frame */ + timeFramesControlLoop() + return + } + } + + if (processConfig.framework.validPeriods !== undefined) { + let validPeriod = false; + for (let i = 0; i < processConfig.framework.validPeriods.length; i++) { + let period = processConfig.framework.validPeriods[i] + if (period === timeFrameLabel) { validPeriod = true } + } + if (validPeriod === false) { + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> timeFramesLoopBody -> Discarding period for not being listed as a valid period. -> timeFrameLabel = " + timeFrameLabel) } + timeFramesControlLoop() + return + } + } + let dependencyIndex = 0 + dataFiles = new Map() + + dependencyLoopBody() + + function dependencyLoopBody() { + let dependency = dataDependenciesModule.nodeArray[dependencyIndex] + if (dependency === undefined) { + + logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> timeFramesLoopBody -> dependencyLoopBody -> You need to add at least one Data Dependency to the process Multi Period Daily. Aborting process.") + callBackFunction(global.DEFAULT_FAIL_RESPONSE) + return + } + + let datasetModule = dataDependenciesModule.dataSetsModulesArray[dependencyIndex] + let previousFile + let currentFile + + if (bot.multiPeriodDailyProcessDatetime.valueOf() > contextVariables.dateBeginOfMarket.valueOf()) { + getPreviousFile() + } else { + previousFile = [] + getCurrentFile() + } + + function getPreviousFile() { + let dateForPath = previousDay.getUTCFullYear() + '/' + utilities.pad(previousDay.getUTCMonth() + 1, 2) + '/' + utilities.pad(previousDay.getUTCDate(), 2) + let filePath + if (dependency.referenceParent.config.codeName === "Multi-Period-Daily") { + filePath = dependency.referenceParent.parentNode.config.codeName + '/' + dependency.referenceParent.config.codeName + "/" + timeFrameLabel + "/" + dateForPath; + } else { + filePath = dependency.referenceParent.parentNode.config.codeName + '/' + dependency.referenceParent.config.codeName + "/" + dateForPath; + } + let fileName = "Data.json" + + datasetModule.getTextFile(filePath, fileName, onFileReceived) + + function onFileReceived(err, text) { + if ((err.message === "File does not exist." && botNeverRan === true) || err.code === 'The specified key does not exist.') { + /* + Sometimes one of the dependencies of an indicator for some reasons are not calculated from the begining of the market. + When that happens we can not find those files. What we do in this situation is to move the time fordward until we can find + all the dependencies and the first run of the bot is successful. + + After that, we will not accept more missing files on any of the dependencies, and if any is missing we will abort the processing. + */ + logger.write(MODULE_NAME, "[WARN] start -> processTimeFrames -> timeFramesLoopBody -> dependencyLoopBody -> getPreviousFile -> onFileReceived -> Skipping day because file " + filePath + "/" + fileName + " was not found.") + + advanceTime() + return + } + + if ((err.result === "Fail Because" && err.message === "File does not exist.") || err.code === 'The specified key does not exist.') { + + logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> timeFramesLoopBody -> dependencyLoopBody -> getPreviousFile -> onFileReceived -> err = " + err.stack) + callBackFunction(global.DEFAULT_RETRY_RESPONSE) + return + } + + if (err.result !== global.DEFAULT_OK_RESPONSE.result) { + + logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> timeFramesLoopBody -> dependencyLoopBody -> getPreviousFile -> onFileReceived -> err = " + err.stack) + callBackFunction(err) + return + } + + previousFile = JSON.parse(text) + getCurrentFile() + } + + } + + function getCurrentFile() { + let dateForPath = bot.multiPeriodDailyProcessDatetime.getUTCFullYear() + '/' + utilities.pad(bot.multiPeriodDailyProcessDatetime.getUTCMonth() + 1, 2) + '/' + utilities.pad(bot.multiPeriodDailyProcessDatetime.getUTCDate(), 2) + let filePath + if (dependency.referenceParent.config.codeName === "Multi-Period-Daily") { + filePath = dependency.referenceParent.parentNode.config.codeName + '/' + dependency.referenceParent.config.codeName + "/" + timeFrameLabel + "/" + dateForPath; + } else { + filePath = dependency.referenceParent.parentNode.config.codeName + '/' + dependency.referenceParent.config.codeName + "/" + dateForPath; + } + let fileName = "Data.json"; + + datasetModule.getTextFile(filePath, fileName, onFileReceived) + + function onFileReceived(err, text) { + if ((err.result === "Fail Because" && err.message === "File does not exist.") || err.code === 'The specified key does not exist.') { + if (bootstrappingTheProcess === true) { + /* + In the special situation where we are running this process for the first time (no status report found), + we will consider the possibility that a depanant process does not produce a file during the first day of the market, + or even more than one day. That is why we are going to advance time here. + */ + advanceTime() + return + } + + logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> timeFramesLoopBody -> dependencyLoopBody -> getCurrentFile -> onFileReceived -> err = " + err.code) + logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> timeFramesLoopBody -> dependencyLoopBody -> getCurrentFile -> onFileReceived -> filePath = " + filePath) + logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> timeFramesLoopBody -> dependencyLoopBody -> getCurrentFile -> onFileReceived -> fileName = " + fileName) + callBackFunction(global.DEFAULT_RETRY_RESPONSE) + return + } + + if (err.result !== global.DEFAULT_OK_RESPONSE.result) { + logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> timeFramesLoopBody -> dependencyLoopBody -> getCurrentFile -> Not OK -> onFileReceived -> err = " + err.code) + callBackFunction(err) + return + } + + currentFile = JSON.parse(text) + let dataFile = previousFile.concat(currentFile) + dataFiles.set(dependency.id, dataFile) + dependencyControlLoop() + } + } + } + + function dependencyControlLoop() { + dependencyIndex++; + if (dependencyIndex < dataDependenciesModule.nodeArray.length) { + dependencyLoopBody() + } else { + generateOutput() + } + + function generateOutput() { + + indicatorOutputModule.start( + dataFiles, + timeFrame, + timeFrameLabel, + bot.multiPeriodDailyProcessDatetime, + interExecutionMemoryArray[n], + onOutputGenerated) + + function onOutputGenerated(err) { + if (err.result !== global.DEFAULT_OK_RESPONSE.result) { + callBackFunction(err) + return + } + botNeverRan = false; + timeFramesControlLoop() + } + } + } + } + + function timeFramesControlLoop() { + n++ + if (n < global.dailyFilePeriods.length) { + timeFramesLoopBody() + } else { + n = 0; + writeDataRanges(onWritten) + + function onWritten(err) { + if (err.result !== global.DEFAULT_OK_RESPONSE.result) { + logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> controlLoop -> onWritten -> err = " + err.stack) + callBackFunction(err) + return + } + writeStatusReport(bot.multiPeriodDailyProcessDatetime, advanceTime) + } + } } } function writeDataRanges(callBack) { + let outputDatasets = global.NODE_BRANCH_TO_ARRAY (bot.processNode.referenceParent.processOutput, 'Output Dataset') + let outputDatasetIndex = -1; + controlLoop() - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDataRanges -> Entering function."); } - - let outputDatasetIndex = -1; - controlLoop(); - - function productLoopBody() { - let productCodeName = bot.processNode.referenceParent.processOutput.outputDatasets[outputDatasetIndex].referenceParent.parentNode.code.codeName; - writeDataRange(contextVariables.dateBeginOfMarket, bot.multiPeriodDailyProcessDatetime, productCodeName, controlLoop); - } - - function controlLoop() { - - outputDatasetIndex++; - - if (outputDatasetIndex < bot.processNode.referenceParent.processOutput.outputDatasets.length) { - productLoopBody(); - } else { - callBack(global.DEFAULT_OK_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeDataRanges -> err = "+ err.stack); - callBack(global.DEFAULT_FAIL_RESPONSE); + function productLoopBody() { + let productCodeName = outputDatasets[outputDatasetIndex].referenceParent.parentNode.config.codeName; + writeDataRange(contextVariables.dateBeginOfMarket, bot.multiPeriodDailyProcessDatetime, productCodeName, controlLoop) } + function controlLoop() { + outputDatasetIndex++ + if (outputDatasetIndex < outputDatasets.length) { + productLoopBody() + } else { + callBack(global.DEFAULT_OK_RESPONSE) + } + } } function writeDataRange(pBegin, pEnd, productCodeName, callBack) { + let dataRange = { + begin: pBegin.valueOf(), + end: pEnd.valueOf() + ONE_DAY_IN_MILISECONDS + }; + let fileContent = JSON.stringify(dataRange) + let fileName = '/Data.Range.json'; + let filePath = bot.filePathRoot + "/Output/" + productCodeName + "/" + bot.process + fileName; - try { + fileStorage.createTextFile(filePath, fileContent + '\n', onFileCreated) - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDataRange -> Entering function."); } + function onFileCreated(err) { + if (err.result !== global.DEFAULT_OK_RESPONSE.result) { + logger.write(MODULE_NAME, "[ERROR] start -> writeDataRange -> onFileCreated -> err = " + err.stack) + callBack(err) + return + } + let key = bot.dataMine + "-" + bot.codeName + "-" + productCodeName + "-" + bot.exchange + "-" + bot.market.baseAsset + '/' + bot.market.quotedAsset + let event = { + dateRange: dataRange + } - let dataRange = { - begin: pBegin.valueOf(), - end: pEnd.valueOf() - }; + global.EVENT_SERVER_CLIENT.raiseEvent(key, 'Data Range Updated', event) + writeTimeFramesFile(productCodeName, callBack) + } + } - let fileContent = JSON.stringify(dataRange); + function writeTimeFramesFile(productCodeName, callBack) { - let fileName = '/Data.Range.json'; - let filePath = bot.filePathRoot + "/Output/" + productCodeName + "/" + bot.process + fileName; + let timeFramesArray = [] + for (let n = 0; n < global.dailyFilePeriods.length; n++) { + let timeFrameLabel = global.dailyFilePeriods[n][1] - fileStorage.createTextFile(filePath, fileContent + '\n', onFileCreated); - - function onFileCreated(err) { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDataRange -> onFileCreated -> Entering function."); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - logger.write(MODULE_NAME, "[ERROR] start -> writeDataRange -> onFileCreated -> err = "+ err.stack); - callBack(err); - return; + /* Check Time Frames Filter */ + if (bot.dailyTimeFrames !== undefined) { + if (bot.dailyTimeFrames.includes(timeFrameLabel) === true) { + timeFramesArray.push(timeFrameLabel) } - - if (LOG_FILE_CONTENT === true) { - logger.write(MODULE_NAME, "[INFO] start -> writeDataRange -> onFileCreated -> Content written = " + fileContent); - } - - let key = bot.dataMine + "-" + bot.codeName + "-" + productCodeName + "-" + bot.exchange + "-" + bot.market.baseAsset + '/' + bot.market.quotedAsset - let event = { - dateRange: dataRange - } - - global.EVENT_SERVER_CLIENT.raiseEvent(key, 'Data Range Updated', event) - - callBack(global.DEFAULT_OK_RESPONSE); + } else { + timeFramesArray.push(timeFrameLabel) } } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeDataRange -> err = "+ err.stack); - callBack(global.DEFAULT_FAIL_RESPONSE); + + let fileContent = JSON.stringify(timeFramesArray) + let fileName = '/Time.Frames.json'; + let filePath = bot.filePathRoot + "/Output/" + productCodeName + "/" + bot.process + fileName; + + fileStorage.createTextFile(filePath, fileContent + '\n', onFileCreated) + + function onFileCreated(err) { + if (err.result !== global.DEFAULT_OK_RESPONSE.result) { + logger.write(MODULE_NAME, "[ERROR] start -> writeTimeFramesFiles -> onFileCreated -> err = " + err.stack) + callBack(err) + return + } + callBack(global.DEFAULT_OK_RESPONSE) } } function writeStatusReport(lastFileDate, callBack) { + let reportKey = bot.dataMine + "-" + bot.codeName + "-" + "Multi-Period-Daily" + let thisReport = statusDependencies.statusReports.get(reportKey) - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeStatusReport -> Entering function."); } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeStatusReport -> lastFileDate = " + lastFileDate); } - - try { - - let reportKey = bot.dataMine + "-" + bot.codeName + "-" + "Multi-Period-Daily" + "-" + "dataSet.V1"; - let thisReport = statusDependencies.statusReports.get(reportKey); - - thisReport.file.lastExecution = bot.currentDaytime; - thisReport.file.lastFile = lastFileDate; - thisReport.file.interExecutionMemoryArray = interExecutionMemoryArray; - thisReport.file.beginingOfMarket = beginingOfMarket.toUTCString() - thisReport.save(callBack); - - bot.hasTheBotJustStarted = false; - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeStatusReport -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); + thisReport.file.lastExecution = bot.currentDaytime; + thisReport.file.lastFile = lastFileDate; + thisReport.file.interExecutionMemoryArray = interExecutionMemoryArray; + thisReport.file.beginingOfMarket = beginingOfMarket.toUTCString() + if (bot.dailyTimeFrames !== undefined) { + thisReport.file.timeFrames = bot.dailyTimeFrames } + thisReport.save(callBack) + + bot.hasTheBotJustStarted = false; } } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); + logger.write(MODULE_NAME, "[ERROR] start -> err = " + err.stack) + callBackFunction(global.DEFAULT_FAIL_RESPONSE) } } - - function pad(str, max) { - str = str.toString(); - return str.length < max ? pad(" " + str, max) : str; - } }; diff --git a/TaskServer/MultiPeriodMarket.js b/TaskServer/MultiPeriodMarket.js index 3c8b10f07..76ba55b28 100644 --- a/TaskServer/MultiPeriodMarket.js +++ b/TaskServer/MultiPeriodMarket.js @@ -1,327 +1,221 @@ exports.newMultiPeriodMarket = function newMultiPeriodMarket(bot, logger, UTILITIES, FILE_STORAGE) { - - const FULL_LOG = true; - const LOG_FILE_CONTENT = false; const MODULE_NAME = "Multi Period Market"; - thisObject = { initialize: initialize, finalize: finalize, start: start }; - let utilities = UTILITIES.newCloudUtilities(logger); + let utilities = UTILITIES.newCloudUtilities(logger) + let fileStorage = FILE_STORAGE.newFileStorage(logger) let statusDependencies; let dataDependenciesModule; - let dataFiles = new Map(); - - let botInstance; - + let dataFiles = new Map() + let indicatorOutputModule; let processConfig; return thisObject; function initialize(pProcessConfig, pStatusDependencies, pDataDependencies, callBackFunction) { + logger.fileName = MODULE_NAME; + logger.initialize() - try { + statusDependencies = pStatusDependencies; + dataDependenciesModule = pDataDependencies; + processConfig = pProcessConfig; - logger.fileName = MODULE_NAME; - logger.initialize(); + let INDICATOR_OUTPUT_MODULE = require("./IndicatorOutput") - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Entering function."); } - - statusDependencies = pStatusDependencies; - dataDependenciesModule = pDataDependencies; - processConfig = pProcessConfig; - - let USER_BOT_MODULE = require("./IndicatorBot") - - botInstance = USER_BOT_MODULE.newIndicatorBot(bot, logger, UTILITIES, FILE_STORAGE); - botInstance.initialize(callBackFunction); - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } + indicatorOutputModule = INDICATOR_OUTPUT_MODULE.newIndicatorOutput(bot, logger, UTILITIES, FILE_STORAGE) + indicatorOutputModule.initialize(callBackFunction) } function finalize() { + fileStorage = undefined dataFiles = undefined statusDependencies = undefined dataDependenciesModule = undefined - botInstance = undefined + indicatorOutputModule = undefined processConfig = undefined thisObject = undefined } function start(callBackFunction) { - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> Entering function."); } - - let market = bot.market; - - /* Context Variables */ - - let contextVariables = { - dateBeginOfMarket: undefined, // Datetime of the first trade file in the whole market history. - dateEndOfMarket: undefined // Datetime of the last file available to be used as an input of this process. - }; - - processTimeFrames(); + processTimeFrames() function processTimeFrames() { + let n; + timeFramesLoop() - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> Entering function."); } - - try { - - let n; - - periodsLoop(); - - function periodsLoop() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoop -> Entering function."); } - - /* - - We will iterate through all posible periods. - - */ - - n = 0 // loop Variable representing each possible period as defined at the periods array. - - periodsLoopBody(); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoop -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function periodsLoopBody() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoopBody -> Entering function."); } - - const timeFrame = global.marketFilesPeriods[n][0]; - const timeFrameLabel = global.marketFilesPeriods[n][1]; - - let dependencyIndex = 0; - dataFiles = new Map; - - dependencyLoopBody(); - - function dependencyLoopBody() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> Entering function."); } - - let dependency = dataDependenciesModule.nodeArray[dependencyIndex]; - let datasetModule = dataDependenciesModule.dataSetsModulesArray[dependencyIndex]; - - getFile(); - - function getFile() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getFile -> Entering function."); } - - let dateForPath = bot.processDatetime.getUTCFullYear() + '/' + utilities.pad(bot.processDatetime.getUTCMonth() + 1, 2) + '/' + utilities.pad(bot.processDatetime.getUTCDate(), 2); - let fileName = "Data.json"; - - let filePath - if (dependency.referenceParent.code.codeName === "Multi-Period-Market") { - filePath = dependency.referenceParent.parentNode.code.codeName + '/' + dependency.referenceParent.code.codeName + "/" + timeFrameLabel; - } else { - filePath = dependency.referenceParent.parentNode.code.codeName + '/' + dependency.referenceParent.code.codeName + "/" + dateForPath; - } - datasetModule.getTextFile(filePath, fileName, onFileReceived); - - function onFileReceived(err, text) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getFile -> onFileReceived -> Entering function."); } - if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getFile -> onFileReceived -> text = " + text); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getFile -> onFileReceived -> err = "+ err.stack); - callBackFunction(err); - return; - } - - let dataFile = JSON.parse(text); - dataFiles.set(dependency.id, dataFile); - - dependencyControlLoop(); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getFile -> onFileReceived -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getFile -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoop -> dependencyLoopBody -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function dependencyControlLoop() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> dependencyControlLoop -> Entering function."); } - - dependencyIndex++; - - if (dependencyIndex < dataDependenciesModule.nodeArray.length) { - - dependencyLoopBody(); - - } else { - - callTheBot(); - - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> dependencyControlLoop -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function callTheBot() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoopBody -> callTheBot -> Entering function."); } - - const timeFrame = global.marketFilesPeriods[n][0]; - const timeFrameLabel = global.marketFilesPeriods[n][1]; - - botInstance.start( - dataFiles, - timeFrame, - timeFrameLabel, - undefined, - undefined, - onBotFinished); - - function onBotFinished(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoopBody -> callTheBot -> onBotFinished -> Entering function."); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - callBackFunction(err); - return; - } - - periodsControlLoop(); - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> callTheBot -> onBotFinished -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch(err){ - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> callTheBot -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsLoopBody -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function periodsControlLoop() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsControlLoop -> Entering function."); } - - n++; - - if (n < global.marketFilesPeriods.length) { - - periodsLoopBody(); - - } else { - - writeStatusReport(callBackFunction); - - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> periodsControlLoop -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - + function timeFramesLoop() { + /* We will iterate through all posible timeFrames.*/ + n = 0 // loop Variable representing each possible period as defined at the timeFrames array. + timeFramesLoopBody() } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); + + function timeFramesLoopBody() { + const timeFrame = global.marketFilesPeriods[n][0] + const timeFrameLabel = global.marketFilesPeriods[n][1] + + /* Check Time Frames Filter */ + if (bot.marketTimeFrames !== undefined) { + if (bot.marketTimeFrames.includes(timeFrameLabel) === false) { + /* We are not going to process this Time Frame */ + timeFramesControlLoop() + return + } + } + + let dependencyIndex = 0; + dataFiles = new Map; + + dependencyLoopBody() + + function dependencyLoopBody() { + let dependency = dataDependenciesModule.nodeArray[dependencyIndex] + let datasetModule = dataDependenciesModule.dataSetsModulesArray[dependencyIndex] + + getFile() + + function getFile() { + let fileName = "Data.json"; + let filePath = dependency.referenceParent.parentNode.config.codeName + '/' + dependency.referenceParent.config.codeName + "/" + timeFrameLabel; + datasetModule.getTextFile(filePath, fileName, onFileReceived) + + function onFileReceived(err, text) { + if (err.result !== global.DEFAULT_OK_RESPONSE.result) { + logger.write(MODULE_NAME, "[ERROR] start -> processTimeFrames -> timeFramesLoopBody -> dependencyLoopBody -> getFile -> onFileReceived -> err = " + err.stack) + callBackFunction(err) + return; + } + + let dataFile = JSON.parse(text) + dataFiles.set(dependency.id, dataFile) + + dependencyControlLoop() + } + } + } + + function dependencyControlLoop() { + dependencyIndex++; + if (dependencyIndex < dataDependenciesModule.nodeArray.length) { + dependencyLoopBody() + } else { + generateOutput() + } + + function generateOutput() { + indicatorOutputModule.start( + dataFiles, + timeFrame, + timeFrameLabel, + undefined, + undefined, + onOutputGenerated) + + function onOutputGenerated(err) { + if (err.result !== global.DEFAULT_OK_RESPONSE.result) { + callBackFunction(err) + return; + } + timeFramesControlLoop() + } + } + } + } + + function timeFramesControlLoop() { + n++; + if (n < global.marketFilesPeriods.length) { + timeFramesLoopBody() + } else { + writeTimeFramesFiles(onTimeFrameFilesWritten) + function onTimeFrameFilesWritten() { + writeStatusReport(callBackFunction) + } + } + } + } + + function writeTimeFramesFiles(callBack) { + let outputDatasets = global.NODE_BRANCH_TO_ARRAY (bot.processNode.referenceParent.processOutput, 'Output Dataset') + let outputDatasetIndex = -1; + controlLoop() + + function productLoopBody() { + let productCodeName = outputDatasets[outputDatasetIndex].referenceParent.parentNode.config.codeName; + writeTimeFramesFile(productCodeName, controlLoop) + } + + function controlLoop() { + outputDatasetIndex++ + if (outputDatasetIndex < outputDatasets.length) { + productLoopBody() + } else { + callBack() + } + } + } + + function writeTimeFramesFile(productCodeName, callBack) { + + let timeFramesArray = [] + for (let n = 0; n < global.marketFilesPeriods.length; n++) { + let timeFrameLabel = global.marketFilesPeriods[n][1] + + /* Check Time Frames Filter */ + if (bot.marketTimeFrames !== undefined) { + if (bot.marketTimeFrames.includes(timeFrameLabel) === true) { + timeFramesArray.push(timeFrameLabel) + } + } else { + timeFramesArray.push(timeFrameLabel) + } + } + + let fileContent = JSON.stringify(timeFramesArray) + let fileName = '/Time.Frames.json'; + let filePath = bot.filePathRoot + "/Output/" + productCodeName + "/" + bot.process + fileName; + + fileStorage.createTextFile(filePath, fileContent + '\n', onFileCreated) + + function onFileCreated(err) { + if (err.result !== global.DEFAULT_OK_RESPONSE.result) { + logger.write(MODULE_NAME, "[ERROR] start -> writeTimeFramesFile -> onFileCreated -> err = " + err.stack) + callBack(err) + return + } + callBack() } } function writeStatusReport(callBack) { + let reportKey = bot.dataMine + "-" + bot.codeName + "-" + "Multi-Period-Market" + let thisReport = statusDependencies.statusReports.get(reportKey) - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeStatusReport -> Entering function."); } - - try { - - let reportKey = bot.dataMine + "-" + bot.codeName + "-" + "Multi-Period-Market" + "-" + "dataSet.V1"; - let thisReport = statusDependencies.statusReports.get(reportKey); - - thisReport.file.lastExecution = bot.processDatetime; - thisReport.save(callBack); - - if (global.areEqualDates(bot.processDatetime, new Date()) === false) { - logger.newInternalLoop(bot.codeName, bot.process, bot.processDatetime); - } - - /* Telling the world we are alive and doing well */ - let currentDateString = bot.processDatetime.getUTCFullYear() + '-' + utilities.pad(bot.processDatetime.getUTCMonth() + 1, 2) + '-' + utilities.pad(bot.processDatetime.getUTCDate(), 2); - let currentDate = new Date(bot.processDatetime) - let lastDate = new Date() - bot.processHeartBeat(currentDateString, global.getPercentage(currentDate, currentDate, lastDate)) + thisReport.file.lastExecution = bot.processDatetime; + if (bot.marketTimeFrames !== undefined) { + thisReport.file.timeFrames = bot.marketTimeFrames } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeStatusReport -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); + thisReport.save(callBack) + + if (global.areEqualDates(bot.processDatetime, new Date()) === false) { + logger.newInternalLoop(bot.codeName, bot.process, bot.processDatetime) } + + /* Telling the world we are alive and doing well */ + let currentDateString = bot.processDatetime.getUTCFullYear() + '-' + utilities.pad(bot.processDatetime.getUTCMonth() + 1, 2) + '-' + utilities.pad(bot.processDatetime.getUTCDate(), 2) + let currentDate = new Date(bot.processDatetime) + let lastDate = new Date() + bot.processHeartBeat(currentDateString, global.getPercentage(currentDate, currentDate, lastDate)) } } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); + logger.write(MODULE_NAME, "[ERROR] start -> err = " + err.stack) + callBackFunction(global.DEFAULT_FAIL_RESPONSE) } } -}; +} diff --git a/TaskServer/ProcessExecutionEvents.js b/TaskServer/ProcessExecutionEvents.js index 8731bf55a..9b94c0365 100644 --- a/TaskServer/ProcessExecutionEvents.js +++ b/TaskServer/ProcessExecutionEvents.js @@ -1,14 +1,11 @@ exports.newProcessExecutionEvents = function newProcessExecutionEvents(BOT, logger) { - /* - - Here we manage the process execution events. This allow us to emit events when the process starts and finishes. Also to wait for a dependent event + Here we manage the process execution events. This allow us to emit events + when the process starts and finishes. Also to wait for a dependent event of another process. - */ - const MODULE_NAME = "Process Execution Events"; - logger.fileName = MODULE_NAME + logger.fileName = MODULE_NAME let bot = BOT; @@ -28,12 +25,8 @@ return thisObject; - function initialize(callBackFunction) { - + function initialize(processConfig, callBackFunction) { try { - - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Entering function."); } - let name = 'Not Depends on any Process' logger.fileName = MODULE_NAME + "." + name; @@ -43,66 +36,111 @@ return } - let market = bot.market.baseAsset + '/' + bot.market.quotedAsset + let market = bot.market.baseAsset + '/' + bot.market.quotedAsset currentProcessKey = bot.processNode.referenceParent.name + "-" + bot.processNode.referenceParent.type + "-" + bot.processNode.referenceParent.id + "-" + bot.exchange + "-" + market + /* + A process can depend for its own execution on another process to finish, and + this can be achieved in two different ways. The first one is by referencing + the Execution Started Event node from a Process Definition node to a Execution + Ended Event node of another Process Definition. The second way is when there is + a Execution Started Event node at a Process Instance. This allows the user to + override the definition created by the Data Mine for an specific task. + */ + + /* + Here we check if we can find this relationship at the Data Mine level. + */ if (bot.processNode.referenceParent.executionStartedEvent !== undefined) { if (bot.processNode.referenceParent.executionStartedEvent.referenceParent !== undefined) { if (bot.processNode.referenceParent.executionStartedEvent.referenceParent.parentNode !== undefined) { processThisDependsOn = bot.processNode.referenceParent.executionStartedEvent.referenceParent.parentNode name = processThisDependsOn.name - if (processThisDependsOn.code.monthlyInstances === true) { - logger.fileName = MODULE_NAME + "." + name; - } - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> " + currentProcessKey + " depends on " + name); } + if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> " + currentProcessKey + " based on the Data Mine depends on " + name); } + } + } + } + + /* + Here we check if at the task level if there is an overriding configuration. + */ + if (bot.processNode.executionStartedEvent !== undefined) { + if (bot.processNode.executionStartedEvent.referenceParent !== undefined) { + if (bot.processNode.executionStartedEvent.referenceParent.parentNode !== undefined) { + processThisDependsOn = bot.processNode.executionStartedEvent.referenceParent.parentNode + + name = processThisDependsOn.name + if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> " + currentProcessKey + " based on the User's Task depends on " + name); } } } } if (processThisDependsOn !== undefined) { + /* We need to remember that this process waits for another process in order to start. */ + processConfig.waitsForExecutionFinishedEvent = true + /* We need to find at which network node is running the process that we need to hear from when it finished. */ let network = global.TASK_NETWORK + /* + Notice that the first task that matches the dependency is going to be considered. + This means that if the same task, with the same process, pointing to the same + process definition in the same data mine, with the same exchange and market + configured, is at two different network nodes at the same time, the current task + is going to depend on the first one found, not necesarily the one running at the + same network node. If you need to control witch task specifically to depend on + and need to exactly the same task to exist, you should split the network in two + different networks, each one with unique tasks so as to avoid confussion. + */ for (let i = 0; i < network.networkNodes.length; i++) { let networkNode = network.networkNodes[i] if (networkNode.dataMining !== undefined) { - for (let j = 0; j < networkNode.dataMining.exchangeTasks.length; j++) { - let exchangeTasks = networkNode.dataMining.exchangeTasks[j] - for (let k = 0; k < exchangeTasks.taskManagers.length; k++) { - let taskManager = exchangeTasks.taskManagers[k] - for (let m = 0; m < taskManager.tasks.length; m++) { - let task = taskManager.tasks[m] - if (task.bot !== undefined) { - for (let n = 0; n < task.bot.processes.length; n++) { - let process = task.bot.processes[n] - if (process.marketReference !== undefined) { - if (process.marketReference.referenceParent !== undefined) { - let market = process.marketReference.referenceParent - let currentProcessMarket = bot.processNode.marketReference.referenceParent + for (let j = 0; j < networkNode.dataMining.exchangeDataTasks.length; j++) { + let exchangeTasks = networkNode.dataMining.exchangeDataTasks[j] + for (let p = 0; p < exchangeTasks.marketDataTasks.length; p++) { + let marketTasks = exchangeTasks.marketDataTasks[p] + if (marketTasks.referenceParent === undefined) { continue } + if (marketTasks.referenceParent.id !== global.MARKET_NODE.id) { continue } + for (let q = 0; q < marketTasks.dataMineTasks.length; q++) { + let mineTasks = marketTasks.dataMineTasks[q] + for (let k = 0; k < mineTasks.taskManagers.length; k++) { + let taskManager = mineTasks.taskManagers[k] + for (let m = 0; m < taskManager.tasks.length; m++) { + let task = taskManager.tasks[m] + if (task.bot !== undefined) { + for (let n = 0; n < task.bot.processes.length; n++) { + let process = task.bot.processes[n] + if (process.referenceParent !== undefined) { + let processDefinition = process.referenceParent + if (processThisDependsOn.id === processDefinition.id) { + /* + We found where the task that runs the process definition + we are waiting for is located on the network. + */ + thisObject.networkNode = networkNode + if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { + logger.write(MODULE_NAME, + "[INFO] initialize -> Connecting to Websockets Server " + networkNode.name + + " -> host = " + networkNode.config.host + + ' -> port = ' + networkNode.config.webSocketsPort + '.'); + } - if (currentProcessMarket.id === market.id) { - if (process.referenceParent !== undefined) { - let processDefinition = process.referenceParent - if (processThisDependsOn.id === processDefinition.id) { + eventServerClient = EVENT_SERVER_CLIENT.newEventsServerClient(networkNode.config.host, networkNode.config.webSocketsPort) + eventServerClient.initialize(onConnected) - /* We found where the task that runs the process definition we are waiting for is located on the network. */ - - thisObject.networkNode = networkNode - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Connecting to Websockets Server " + networkNode.name + " -> host = " + networkNode.code.host + ' -> port = ' + networkNode.code.webSocketsPort + '.'); } - - eventServerClient = EVENT_SERVER_CLIENT.newEventsServerClient(networkNode.code.host, networkNode.code.webSocketsPort) - eventServerClient.initialize(onConnected) - - function onConnected() { - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Connected to Websockets Server " + networkNode.name + " -> host = " + networkNode.code.host + ' -> port = ' + networkNode.code.webSocketsPort + '.'); } - - callBackFunction(global.DEFAULT_OK_RESPONSE); - return + function onConnected() { + if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { + logger.write(MODULE_NAME, "[INFO] initialize -> Connected to Websockets Server " + networkNode.name + + " -> host = " + networkNode.config.host + + ' -> port = ' + networkNode.config.webSocketsPort + '.'); } + + callBackFunction(global.DEFAULT_OK_RESPONSE); return } + return } } } @@ -119,7 +157,7 @@ return } callBackFunction(global.DEFAULT_OK_RESPONSE); - + } catch (err) { logger.write(MODULE_NAME, "[ERROR] initialize -> err = " + err.stack); callBackFunction(global.DEFAULT_FAIL_RESPONSE); @@ -151,7 +189,7 @@ let extraCallerId = '-' + Math.trunc(Math.random() * 10000) + '-' - let market = bot.market.baseAsset + '/' + bot.market.quotedAsset + let market = bot.market.baseAsset + '/' + bot.market.quotedAsset let key = processThisDependsOn.name + "-" + processThisDependsOn.type + "-" + processThisDependsOn.id + "-" + bot.exchange + "-" + market let callerId = bot.dataMine + "-" + bot.codeName + "-" + bot.process + extraCallerId @@ -163,7 +201,7 @@ eventServerClient.listenToEvent(key, 'Process Execution Finished', undefined, callerId, responseCallBack, eventsCallBack) - bot.processHeartBeat(undefined, undefined, "Waiting for " + thisObject.networkNode.name + "->" + processThisDependsOn.parentNode.parentNode.name + "->" + processThisDependsOn.parentNode.code.codeName + "->" + processThisDependsOn.code.codeName) + bot.processHeartBeat(undefined, undefined, "Waiting for " + thisObject.networkNode.name + "->" + processThisDependsOn.parentNode.parentNode.name + "->" + processThisDependsOn.parentNode.config.codeName + "->" + processThisDependsOn.config.codeName) function responseCallBack(message) { if (message.result !== global.DEFAULT_OK_RESPONSE.result) { @@ -192,9 +230,9 @@ global.EVENT_SERVER_CLIENT.createEventHandler(currentProcessKey, 'Process Execution Started') global.EVENT_SERVER_CLIENT.raiseEvent(currentProcessKey, 'Process Execution Started', event) - bot.processHeartBeat(undefined, undefined,"Running...") + bot.processHeartBeat(undefined, undefined, "Running...") - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] start -> eventsCallBack -> " + currentProcessKey + " Process Execution Started because " + key + " Finished."); } + if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] start -> eventsCallBack -> " + currentProcessKey + " Process Execution Started because " + key + " Finished."); } } callBackFunction(message.event.err); @@ -208,7 +246,7 @@ global.EVENT_SERVER_CLIENT.createEventHandler(currentProcessKey, 'Process Execution Started') global.EVENT_SERVER_CLIENT.raiseEvent(currentProcessKey, 'Process Execution Started', event) - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] start -> " + currentProcessKey + " Process Execution Started " ); } + if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] start -> " + currentProcessKey + " Process Execution Started "); } callBackFunction(global.DEFAULT_OK_RESPONSE); } @@ -232,7 +270,7 @@ global.EVENT_SERVER_CLIENT.createEventHandler(currentProcessKey, 'Process Execution Finished') global.EVENT_SERVER_CLIENT.raiseEvent(currentProcessKey, 'Process Execution Finished', event) - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] finish -> " + currentProcessKey + " Process Execution Finished " ); } + if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] finish -> " + currentProcessKey + " Process Execution Finished "); } callBackFunction(global.DEFAULT_OK_RESPONSE); diff --git a/TaskServer/ProcessOutput.js b/TaskServer/ProcessOutput.js index 7bbdfff10..9f6f0ee71 100644 --- a/TaskServer/ProcessOutput.js +++ b/TaskServer/ProcessOutput.js @@ -9,86 +9,90 @@ let bot = BOT; let thisObject = { - raiseEvents, raiseEvents + raiseEvents: raiseEvents, + asyncRaiseEvents: asyncRaiseEvents }; return thisObject; - function raiseEvents(lastFile, callBackFunction) { - + function raiseEvents(lastFile, timeFrames, callBackFunction) { try { - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] raiseEvents -> Entering function."); } - /* We will reaise the events for the datasets impacted by the process that just finished. */ if (bot.processNode.referenceParent.processOutput !== undefined) { - if (bot.processNode.referenceParent.processOutput.outputDatasets !== undefined) { - let outputDatasets = bot.processNode.referenceParent.processOutput.outputDatasets + let outputDatasets = global.NODE_BRANCH_TO_ARRAY(bot.processNode.referenceParent.processOutput, 'Output Dataset') - for (let j = 0; j < outputDatasets.length; j++) { - let outputDataset = outputDatasets[j] + for (let j = 0; j < outputDatasets.length; j++) { + let outputDataset = outputDatasets[j] - /* Some validations to verify that everything is in place. */ - if (outputDataset.referenceParent !== undefined) { - if (outputDataset.referenceParent.code.codeName === undefined) { - logger.write(MODULE_NAME, "[ERROR] raiseEvents -> codeName at Dataset Definition not defined. Dataset Definition = " + JSON.stringify(outputDataset.referenceParent)); + let botNode = global.FIND_NODE_IN_NODE_MESH(outputDataset, 'Indicator Bot') + if (botNode === undefined) { + botNode = global.FIND_NODE_IN_NODE_MESH(outputDataset, 'Trading Bot') + } + if (botNode === undefined) { + botNode = global.FIND_NODE_IN_NODE_MESH(outputDataset, 'Sensor Bot') + } + + /* Some validations to verify that everything is in place. */ + if (outputDataset.referenceParent !== undefined) { + if (outputDataset.referenceParent.config.codeName === undefined) { + logger.write(MODULE_NAME, "[ERROR] raiseEvents -> codeName at Dataset Definition not defined. Dataset Definition = " + JSON.stringify(outputDataset.referenceParent)); + callBackFunction(global.DEFAULT_FAIL_RESPONSE); + return + } + if (outputDataset.referenceParent.parentNode !== undefined) { + if (outputDataset.referenceParent.parentNode.config.codeName === undefined) { + logger.write(MODULE_NAME, "[ERROR] raiseEvents -> codeName at Product not defined. Product = " + JSON.stringify(outputDataset.referenceParent.parentNode)); callBackFunction(global.DEFAULT_FAIL_RESPONSE); return - } - if (outputDataset.referenceParent.parentNode !== undefined) { - if (outputDataset.referenceParent.parentNode.code.codeName === undefined) { - logger.write(MODULE_NAME, "[ERROR] raiseEvents -> codeName at Product not defined. Product = " + JSON.stringify(outputDataset.referenceParent.parentNode)); + } + if (botNode !== undefined) { + if (botNode.config.codeName === undefined) { + logger.write(MODULE_NAME, "[ERROR] raiseEvents -> codeName at Bot not defined. Bot = " + JSON.stringify(botNode)); callBackFunction(global.DEFAULT_FAIL_RESPONSE); return - } - if (outputDataset.referenceParent.parentNode.parentNode !== undefined) { - if (outputDataset.referenceParent.parentNode.parentNode.code.codeName === undefined) { - logger.write(MODULE_NAME, "[ERROR] raiseEvents -> codeName at Bot not defined. Bot = " + JSON.stringify(outputDataset.referenceParent.parentNode.parentNode)); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return - } - if (outputDataset.referenceParent.parentNode.parentNode.parentNode !== undefined) { - if (outputDataset.referenceParent.parentNode.parentNode.parentNode.code.codeName === undefined) { - logger.write(MODULE_NAME, "[ERROR] raiseEvents -> codeName at Data Mine not defined. Data Mine = " + JSON.stringify(outputDataset.referenceParent.parentNode.parentNode.parentNode)); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return - } - } else { - logger.write(MODULE_NAME, "[ERROR] raiseEvents -> Bot not attached to a Data Mine. Bot = " + JSON.stringify(outputDataset.referenceParent.parentNode.parentNode)); + } + if (botNode.parentNode !== undefined) { + if (botNode.parentNode.config.codeName === undefined) { + logger.write(MODULE_NAME, "[ERROR] raiseEvents -> codeName at Data Mine not defined. Data Mine = " + JSON.stringify(botNode.parentNode)); callBackFunction(global.DEFAULT_FAIL_RESPONSE); return } } else { - logger.write(MODULE_NAME, "[ERROR] raiseEvents -> Product not attached to a Bot. Product = " + JSON.stringify(outputDataset.referenceParent.parentNode)); + logger.write(MODULE_NAME, "[ERROR] raiseEvents -> Bot not attached to a Data Mine or Trading Mine. Bot = " + JSON.stringify(botNode)); callBackFunction(global.DEFAULT_FAIL_RESPONSE); return } } else { - logger.write(MODULE_NAME, "[ERROR] raiseEvents -> Dataset Definition not attached to a Product. Dataset Definition = " + JSON.stringify(outputDataset.referenceParent)); + logger.write(MODULE_NAME, "[ERROR] raiseEvents -> Product not attached to a Bot. Product = " + JSON.stringify(outputDataset.referenceParent.parentNode)); callBackFunction(global.DEFAULT_FAIL_RESPONSE); return } } else { - logger.write(MODULE_NAME, "[ERROR] raiseEvents -> Output Dataset with no reference to a Dataset Definition. Output Dataset = " + JSON.stringify(outputDataset)); + logger.write(MODULE_NAME, "[ERROR] raiseEvents -> Dataset Definition not attached to a Product. Dataset Definition = " + JSON.stringify(outputDataset.referenceParent)); callBackFunction(global.DEFAULT_FAIL_RESPONSE); return } - - /* All good, lets emit the event. */ - - let dataMine = outputDataset.referenceParent.parentNode.parentNode.parentNode.code.codeName - let botName = outputDataset.referenceParent.parentNode.parentNode.code.codeName - let product = outputDataset.referenceParent.parentNode.code.codeName - let dataset = outputDataset.referenceParent.code.codeName - - key = dataMine + "-" + botName + "-" + product + "-" + dataset + "-" + bot.exchange + "-" + bot.market.baseAsset + '/' + bot.market.quotedAsset - let event = { - lastFile: lastFile - } - global.EVENT_SERVER_CLIENT.createEventHandler(key, 'Dataset Updated') - global.EVENT_SERVER_CLIENT.raiseEvent(key, 'Dataset Updated', event) - + } else { + logger.write(MODULE_NAME, "[ERROR] raiseEvents -> Output Dataset with no reference to a Dataset Definition. Output Dataset = " + JSON.stringify(outputDataset)); + callBackFunction(global.DEFAULT_FAIL_RESPONSE); + return } + + /* All good, lets emit the event. */ + + let dataMine = botNode.parentNode.config.codeName + let botName = botNode.config.codeName + let product = outputDataset.referenceParent.parentNode.config.codeName + let dataset = outputDataset.referenceParent.config.codeName + + key = dataMine + "-" + botName + "-" + product + "-" + dataset + "-" + bot.exchange + "-" + bot.market.baseAsset + '/' + bot.market.quotedAsset + let event = { + lastFile: lastFile, + timeFrames: timeFrames + } + global.EVENT_SERVER_CLIENT.createEventHandler(key, 'Dataset Updated') + global.EVENT_SERVER_CLIENT.raiseEvent(key, 'Dataset Updated', event) } } @@ -99,4 +103,76 @@ callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } + + function asyncRaiseEvents(lastFile, timeFrames) { + + if (bot.processNode.referenceParent.processOutput !== undefined) { + let outputDatasets = global.NODE_BRANCH_TO_ARRAY(bot.processNode.referenceParent.processOutput, 'Output Dataset') + + for (let j = 0; j < outputDatasets.length; j++) { + let outputDataset = outputDatasets[j] + + let botNode = global.FIND_NODE_IN_NODE_MESH(outputDataset, 'Indicator Bot') + if (botNode === undefined) { + botNode = global.FIND_NODE_IN_NODE_MESH(outputDataset, 'Trading Bot') + } + if (botNode === undefined) { + botNode = global.FIND_NODE_IN_NODE_MESH(outputDataset, 'Sensor Bot') + } + + /* Some validations to verify that everything is in place. */ + if (outputDataset.referenceParent !== undefined) { + if (outputDataset.referenceParent.config.codeName === undefined) { + logger.write(MODULE_NAME, "[ERROR] raiseEvents -> codeName at Dataset Definition not defined. Dataset Definition = " + JSON.stringify(outputDataset.referenceParent)); + throw (global.DEFAULT_FAIL_RESPONSE); + } + if (outputDataset.referenceParent.parentNode !== undefined) { + if (outputDataset.referenceParent.parentNode.config.codeName === undefined) { + logger.write(MODULE_NAME, "[ERROR] raiseEvents -> codeName at Product not defined. Product = " + JSON.stringify(outputDataset.referenceParent.parentNode)); + throw (global.DEFAULT_FAIL_RESPONSE); + } + if (botNode !== undefined) { + if (botNode.config.codeName === undefined) { + logger.write(MODULE_NAME, "[ERROR] raiseEvents -> codeName at Bot not defined. Bot = " + JSON.stringify(botNode)); + throw (global.DEFAULT_FAIL_RESPONSE); + } + if (botNode.parentNode !== undefined) { + if (botNode.parentNode.config.codeName === undefined) { + logger.write(MODULE_NAME, "[ERROR] raiseEvents -> codeName at Data Mine not defined. Data Mine = " + JSON.stringify(botNode.parentNode)); + throw (global.DEFAULT_FAIL_RESPONSE); + } + } else { + logger.write(MODULE_NAME, "[ERROR] raiseEvents -> Bot not attached to a Data Mine or Trading Mine. Bot = " + JSON.stringify(botNode)); + throw (global.DEFAULT_FAIL_RESPONSE); + } + } else { + logger.write(MODULE_NAME, "[ERROR] raiseEvents -> Product not attached to a Bot. Product = " + JSON.stringify(outputDataset.referenceParent.parentNode)); + throw (global.DEFAULT_FAIL_RESPONSE); + } + } else { + logger.write(MODULE_NAME, "[ERROR] raiseEvents -> Dataset Definition not attached to a Product. Dataset Definition = " + JSON.stringify(outputDataset.referenceParent)); + throw (global.DEFAULT_FAIL_RESPONSE); + } + } else { + logger.write(MODULE_NAME, "[ERROR] raiseEvents -> Output Dataset with no reference to a Dataset Definition. Output Dataset = " + JSON.stringify(outputDataset)); + throw (global.DEFAULT_FAIL_RESPONSE); + } + + /* All good, lets emit the event. */ + + let dataMine = botNode.parentNode.config.codeName + let botName = botNode.config.codeName + let product = outputDataset.referenceParent.parentNode.config.codeName + let dataset = outputDataset.referenceParent.config.codeName + + key = dataMine + "-" + botName + "-" + product + "-" + dataset + "-" + bot.exchange + "-" + bot.market.baseAsset + '/' + bot.market.quotedAsset + let event = { + lastFile: lastFile, + timeFrames: timeFrames + } + global.EVENT_SERVER_CLIENT.createEventHandler(key, 'Dataset Updated') + global.EVENT_SERVER_CLIENT.raiseEvent(key, 'Dataset Updated', event) + } + } + } }; diff --git a/TaskServer/Root.js b/TaskServer/Root.js index 3a0dec4cd..10ac254d5 100644 --- a/TaskServer/Root.js +++ b/TaskServer/Root.js @@ -35,7 +35,6 @@ global.dailyFilePeriods = JSON.parse(global.dailyFilePeriods); - const ROOT_DIR = './'; const MODULE_NAME = "Root"; const WAIT_TIME_FOR_ALL_PROCESS_INSTANCES_TO_START = 10000 // This avoid a race condition that could happen if one process finished before all the other even started. @@ -57,50 +56,29 @@ /* Global control of logging. */ global.LOG_CONTROL = { - "Assistant": { - logInfo: true, - logWarnings: false, - logErrors: true, - logContent: false, - intensiveLogging: false - }, - "Exchange API": { - logInfo: true, - logWarnings: false, - logErrors: true, - logContent: false, - intensiveLogging: false - }, "Status Report": { - logInfo: true, + logInfo: false, logWarnings: false, logErrors: true, logContent: false, intensiveLogging: false }, "Dataset": { - logInfo: true, - logWarnings: false, - logErrors: true, - logContent: false, - intensiveLogging: false - }, - "Context": { - logInfo: true, + logInfo: false, logWarnings: false, logErrors: true, logContent: false, intensiveLogging: false }, "Process Execution Events": { - logInfo: true, + logInfo: false, logWarnings: false, logErrors: true, logContent: false, intensiveLogging: false }, "Process Output": { - logInfo: true, + logInfo: false, logWarnings: false, logErrors: true, logContent: false, @@ -112,7 +90,7 @@ } catch (err) { - console.log(logDisplace + "Root : [ERROR] initialize -> err = " + err.stack); + console.log(logDisplace + "Root : [ERROR] initialize -> err = " + err.stack); return; } } @@ -132,28 +110,28 @@ /* Process Loops Declarations. */ - const INDICATOR_BOT_MAIN_LOOP_MODULE = require('./IndicatorBotProcessMainLoop'); - const SENSOR_BOT_MAIN_LOOP_MODULE = require('./SensorBotProcessMainLoop'); - const TRADING_ENGINE_MAIN_LOOP_MODULE = require('./TradingBotProcessMainLoop'); + const INDICATOR_BOT_MODULE = require('./IndicatorBot'); + const SENSOR_BOT = require('./SensorBot'); + const TRADING_BOT_MODULE = require('./TradingBot'); let botConfig; let processInstance = global.TASK_NODE.bot.processes[processIndex] /* Here we will check if we need to load the configuration and code of the bot from a file or we will take that from the UI. */ if ( - processInstance.referenceParent.code.framework !== undefined && - ( processInstance.referenceParent.code.framework.name === 'Multi-Period-Market' || - processInstance.referenceParent.code.framework.name === 'Multi-Period-Daily' || - processInstance.referenceParent.code.framework.name === 'Multi-Period') - ) { - botConfig = processInstance.referenceParent.parentNode.code + processInstance.referenceParent.config.framework !== undefined && + (processInstance.referenceParent.config.framework.name === 'Multi-Period-Market' || + processInstance.referenceParent.config.framework.name === 'Multi-Period-Daily' || + processInstance.referenceParent.config.framework.name === 'Low-Frequency-Trading-Process') + ) { + botConfig = processInstance.referenceParent.parentNode.config botConfig.definedByUI = true bootingBot(processIndex) return } else { getBotConfigFromFile(); return - } + } function getBotConfigFromFile() { @@ -162,7 +140,7 @@ const FILE_STORAGE = require('./FileStorage.js'); let fileStorage = FILE_STORAGE.newFileStorage(); - let filePath = global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.parentNode.code.codeName + '/bots/' + global.TASK_NODE.bot.code.repo + '/this.bot.config.json'; + let filePath = global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.parentNode.config.codeName + '/bots/' + processInstance.referenceParent.parentNode.config.repo + '/this.bot.config.json'; fileStorage.getTextFile(filePath, onFileReceived); @@ -171,16 +149,16 @@ if (err.result !== global.DEFAULT_OK_RESPONSE.result) { console.log(logDisplace + "Root : [ERROR] start -> getBotConfigFromFile -> onInizialized -> onFileReceived -> err = " + JSON.stringify(err)); console.log(logDisplace + "Root : [ERROR] start -> getBotConfigFromFile -> onInizialized -> onFileReceived -> filePath = " + filePath); - console.log(logDisplace + "Root : [ERROR] start -> getBotConfigFromFile -> onInizialized -> onFileReceived -> dataMine = " + global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.parentNode.code.codeName); + console.log(logDisplace + "Root : [ERROR] start -> getBotConfigFromFile -> onInizialized -> onFileReceived -> dataMine = " + global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.parentNode.config.codeName); return; } try { botConfig = JSON.parse(text); - botConfig.repo = global.TASK_NODE.bot.code.repo; + botConfig.repo = global.TASK_NODE.bot.config.repo; bootingBot(processIndex); } catch (err) { - console.log(logDisplace + "Root : [ERROR] start -> getBotConfigFromFile -> onInizialized -> onFileReceived -> err = " + JSON.stringify(err)); + console.log(logDisplace + "Root : [ERROR] start -> getBotConfigFromFile -> onInizialized -> onFileReceived -> err = " + err.stack); return; } } @@ -195,7 +173,7 @@ try { - botConfig.process = global.TASK_NODE.bot.processes[processIndex].referenceParent.code.codeName + botConfig.process = global.TASK_NODE.bot.processes[processIndex].referenceParent.config.codeName botConfig.debug = {}; botConfig.processNode = global.TASK_NODE.bot.processes[processIndex] @@ -204,28 +182,21 @@ botConfig.DELETE_QUEUE_SIZE = 10 // This number represents how many log files can be at the queue at any point in time, which means how many logs are not still deleted. /* Simplifying the access to basic info */ - botConfig.dataMine = global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.parentNode.code.codeName - botConfig.exchange = global.TASK_NODE.bot.processes[processIndex].marketReference.referenceParent.parentNode.parentNode.name - botConfig.exchangeNode = global.TASK_NODE.bot.processes[processIndex].marketReference.referenceParent.parentNode.parentNode + botConfig.dataMine = global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.parentNode.config.codeName + botConfig.exchange = global.TASK_NODE.parentNode.parentNode.parentNode.referenceParent.parentNode.parentNode.name + botConfig.exchangeNode = global.TASK_NODE.parentNode.parentNode.parentNode.referenceParent.parentNode.parentNode botConfig.market = { - baseAsset: global.TASK_NODE.bot.processes[processIndex].marketReference.referenceParent.baseAsset.referenceParent.code.codeName, - quotedAsset: global.TASK_NODE.bot.processes[processIndex].marketReference.referenceParent.quotedAsset.referenceParent.code.codeName + baseAsset: global.TASK_NODE.parentNode.parentNode.parentNode.referenceParent.baseAsset.referenceParent.config.codeName, + quotedAsset: global.TASK_NODE.parentNode.parentNode.parentNode.referenceParent.quotedAsset.referenceParent.config.codeName } - botConfig.uiStartDate = global.TASK_NODE.bot.code.startDate - botConfig.code = global.TASK_NODE.bot.code - - /* This stuff is still hardcoded and unresolved. */ - botConfig.version = { - "major": 1, - "minor": 0 - } - botConfig.dataSetVersion = "dataSet.V1" + botConfig.uiStartDate = global.TASK_NODE.bot.config.startDate + botConfig.config = global.TASK_NODE.bot.config /* Loop Counter */ - botConfig.loopCounter = 0; + botConfig.loopCounter = 0; /* File Path Root */ - botConfig.filePathRoot = botConfig.exchange + "/" + botConfig.market.baseAsset + "-" + botConfig.market.quotedAsset + "/" + botConfig.dataMine + "/" + botConfig.codeName ; + botConfig.filePathRoot = botConfig.exchange + "/" + botConfig.market.baseAsset + "-" + botConfig.market.quotedAsset + "/" + botConfig.dataMine + "/" + botConfig.codeName; /* Process Key */ botConfig.processKey = global.TASK_NODE.bot.processes[processIndex].name + '-' + global.TASK_NODE.bot.processes[processIndex].type + '-' + global.TASK_NODE.bot.processes[processIndex].id @@ -233,27 +204,25 @@ /* Bot Type */ botConfig.type = global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.type - /* Setting the Key to use */ - process.env.KEY = undefined - process.env.SECRET = undefined + /* Time Frame Filter */ + if (global.TASK_NODE.bot.timeFramesFilter !== undefined) { + botConfig.dailyTimeFrames = global.TASK_NODE.bot.timeFramesFilter.config.dailyTimeFrames + botConfig.marketTimeFrames = global.TASK_NODE.bot.timeFramesFilter.config.marketTimeFrames + } - if (botConfig.processNode) { - if (botConfig.processNode.marketReference) { - if (botConfig.processNode.marketReference.keyInstance !== undefined) { - if (botConfig.processNode.marketReference.keyInstance.referenceParent !== undefined) { - let key = botConfig.processNode.marketReference.keyInstance.referenceParent + if (global.TASK_NODE.keyReference !== undefined) { + if (global.TASK_NODE.keyReference.referenceParent !== undefined) { + let key = global.TASK_NODE.keyReference.referenceParent - process.env.KEY = key.code.codeName - process.env.SECRET = key.code.secret - } - } + botConfig.KEY = key.config.codeName + botConfig.SECRET = key.config.secret } } - let processConfig = global.TASK_NODE.bot.processes[processIndex].referenceParent.code + let processConfig = global.TASK_NODE.bot.processes[processIndex].referenceParent.config if (processConfig.framework !== undefined) { - if (processConfig.framework.name === "Multi-Period-Daily" || processConfig.framework.name === "Multi-Period-Market" || processConfig.framework.name === "Multi-Period") { + if (processConfig.framework.name === "Multi-Period-Daily" || processConfig.framework.name === "Multi-Period-Market" || processConfig.framework.name === "Low-Frequency-Trading-Process") { if (processConfig.framework.startDate !== undefined) { processConfig.framework.startDate.resumeExecution = true; if (processConfig.startMode.noTime !== undefined) { @@ -283,7 +252,7 @@ if (processConfig.startMode === undefined) { // Default botConfig.hasTheBotJustStarted = true; - + switch (botConfig.type) { case 'Sensor Bot': { runSensorBot(botConfig, processConfig); @@ -387,7 +356,7 @@ try { global.TOTAL_PROCESS_INSTANCES_CREATED++ - const DEBUG_MODULE = require(ROOT_DIR + 'DebugLog'); + const DEBUG_MODULE = require(global.ROOT_DIR + 'DebugLog'); let logger; logger = DEBUG_MODULE.newDebugLog(); @@ -396,14 +365,14 @@ if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> bootingBot -> runSensorBot -> Entering function."); } - let extractionBotMainLoop = SENSOR_BOT_MAIN_LOOP_MODULE.newSensorBotProcessMainLoop(pBotConfig, logger); - extractionBotMainLoop.initialize(pProcessConfig, onInitializeReady); + let sensorBot = SENSOR_BOT.newSensorBot(pBotConfig, logger); + sensorBot.initialize(pProcessConfig, onInitializeReady); function onInitializeReady(err) { if (err.result === global.DEFAULT_OK_RESPONSE.result) { - extractionBotMainLoop.run(whenRunFinishes); + sensorBot.run(whenRunFinishes); function whenRunFinishes(err) { @@ -412,14 +381,11 @@ let botId = pBotConfig.dataMine + "." + pBotConfig.codeName + "." + pBotConfig.process; if (err.result === global.DEFAULT_OK_RESPONSE.result) { - logger.write(MODULE_NAME, "[INFO] start -> bootingBot -> runSensorBot -> onInitializeReady -> whenStartFinishes -> Bot execution finished sucessfully."); logger.write(MODULE_NAME, "[INFO] start -> bootingBot -> runSensorBot -> onInitializeReady -> whenStartFinishes -> Bot Id = " + botId); logger.persist(); - } else { - logger.write(MODULE_NAME, "[ERROR] start -> bootingBot -> runSensorBot -> onInitializeReady -> whenStartFinishes -> err = " + err.message); logger.write(MODULE_NAME, "[ERROR] start -> bootingBot -> runSensorBot -> onInitializeReady -> whenStartFinishes -> Execution will be stopped. "); logger.write(MODULE_NAME, "[ERROR] start -> bootingBot -> runSensorBot -> onInitializeReady -> whenStartFinishes -> Bye."); @@ -452,7 +418,7 @@ try { global.TOTAL_PROCESS_INSTANCES_CREATED++ - const DEBUG_MODULE = require(ROOT_DIR + 'DebugLog'); + const DEBUG_MODULE = require(global.ROOT_DIR + 'DebugLog'); let logger; logger = DEBUG_MODULE.newDebugLog(); @@ -461,21 +427,21 @@ if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> bootingBot -> runIndicatorBot -> Entering function."); } - let indicatorBotMainLoop = INDICATOR_BOT_MAIN_LOOP_MODULE.newIndicatorBotProcessMainLoop(pBotConfig, logger); - indicatorBotMainLoop.initialize(pProcessConfig, onInitializeReady); + let indicatorBot = INDICATOR_BOT_MODULE.newIndicatorBot(pBotConfig, logger); + indicatorBot.initialize(pProcessConfig, onInitializeReady); function onInitializeReady(err) { if (err.result === global.DEFAULT_OK_RESPONSE.result) { - indicatorBotMainLoop.run(whenRunFinishes); + indicatorBot.run(whenRunFinishes); function whenRunFinishes(err) { pBotConfig.loopCounter = 0; let botId = pBotConfig.dataMine + "." + pBotConfig.codeName + "." + pBotConfig.process; - + if (err.result === global.DEFAULT_OK_RESPONSE.result) { logger.write(MODULE_NAME, "[INFO] start -> bootingBot -> runIndicatorBot -> onInitializeReady -> whenStartFinishes -> Bot execution finished sucessfully."); @@ -515,7 +481,7 @@ global.TOTAL_PROCESS_INSTANCES_CREATED++ try { - const DEBUG_MODULE = require(ROOT_DIR + 'DebugLog'); + const DEBUG_MODULE = require(global.ROOT_DIR + 'DebugLog'); let logger; logger = DEBUG_MODULE.newDebugLog(); @@ -524,14 +490,14 @@ if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> bootingBot -> runTradingBot -> Entering function."); } - let tradingBotMainLoop = TRADING_ENGINE_MAIN_LOOP_MODULE.newTradingBotProcessMainLoop(pBotConfig, logger); - tradingBotMainLoop.initialize(pProcessConfig, onInitializeReady); + let tradingBot = TRADING_BOT_MODULE.newTradingBot(pBotConfig, logger); + tradingBot.initialize(pProcessConfig, onInitializeReady); function onInitializeReady(err) { if (err.result === global.DEFAULT_OK_RESPONSE.result) { - tradingBotMainLoop.run(whenRunFinishes); + tradingBot.run(whenRunFinishes); function whenRunFinishes(err) { diff --git a/TaskServer/SensorBotProcessMainLoop.js b/TaskServer/SensorBot.js similarity index 59% rename from TaskServer/SensorBotProcessMainLoop.js rename to TaskServer/SensorBot.js index 558d9ffa4..13e5c251d 100644 --- a/TaskServer/SensorBotProcessMainLoop.js +++ b/TaskServer/SensorBot.js @@ -1,8 +1,6 @@ -exports.newSensorBotProcessMainLoop = function newSensorBotProcessMainLoop(bot, parentLogger) { +exports.newSensorBot = function newSensorBot(bot, parentLogger) { - const ROOT_DIR = './'; - - const MODULE_NAME = "Sensor Process Main Loop"; + const MODULE_NAME = "Sensor Bot"; const FULL_LOG = true; let USER_BOT_MODULE; @@ -11,11 +9,10 @@ const FILE_STORAGE = require('./FileStorage.js'); let fileStorage = FILE_STORAGE.newFileStorage(parentLogger); - const DEBUG_MODULE = require(ROOT_DIR + 'DebugLog'); + const DEBUG_MODULE = require(global.ROOT_DIR + 'DebugLog'); let logger; // We need this here in order for the loopHealth function to work and be able to rescue the loop when it gets in trouble. let nextLoopTimeoutHandle; - let checkLoopHealthHandle; let thisObject = { initialize: initialize, @@ -27,12 +24,8 @@ return thisObject; function initialize(pProcessConfig, callBackFunction) { - /* This function is exactly the same in the 3 modules representing the 2 different bot types loops. */ - try { - if (FULL_LOG === true) { parentLogger.write(MODULE_NAME, "[INFO] initialize -> Entering function."); } - processConfig = pProcessConfig; if (bot.definedByUI === true) { @@ -41,13 +34,12 @@ return } - let filePath = bot.dataMine + "/" + "bots" + "/" + bot.repo + "/" + pProcessConfig.codeName + let filePath = bot.dataMine + "/" + "bots" + "/" + bot.processNode.referenceParent.parentNode.config.repo + "/" + pProcessConfig.codeName filePath += "/User.Bot.js" fileStorage.getTextFile(filePath, onBotDownloaded); function onBotDownloaded(err, text) { - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { parentLogger.write(MODULE_NAME, "[ERROR] initialize -> onInizialized -> onBotDownloaded -> err = " + err.message); @@ -64,13 +56,12 @@ callBackFunction(global.DEFAULT_FAIL_RESPONSE); } - filePath = bot.dataMine + "/" + "bots" + "/" + bot.repo; + filePath = bot.dataMine + "/" + "bots" + "/" + bot.processNode.referenceParent.parentNode.config.repo; filePath += "/Commons.js" fileStorage.getTextFile(filePath, onCommonsDownloaded); function onCommonsDownloaded(err, text) { - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { parentLogger.write(MODULE_NAME, "[WARN] initialize -> onBotDownloaded -> onCommonsDownloaded -> Commons not found: " + err.code || err.message); callBackFunction(global.DEFAULT_OK_RESPONSE); @@ -85,42 +76,34 @@ } } catch (err) { - parentLogger.write(MODULE_NAME, "[ERROR] initialize -> err = "+ err.stack); + parentLogger.write(MODULE_NAME, "[ERROR] initialize -> err = " + err.stack); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } function run(callBackFunction) { - try { - if (FULL_LOG === true) { parentLogger.write(MODULE_NAME, "[INFO] run -> Entering function."); } - - bot.enableCheckLoopHealth = true; - let fixedTimeLoopIntervalHandle; - if (bot.runAtFixedInterval === true) { + /* Heartbeats sent to the UI */ + bot.processHeartBeat = processHeartBeat + if (bot.runAtFixedInterval === true) { fixedTimeLoopIntervalHandle = setInterval(loop, bot.fixedInterval); loop(); // First run. - } else { - loop(); - } function loop() { - try { - processHeartBeat(undefined, undefined, "Running...") + processHeartBeat(undefined, undefined, "Running...") function pad(str, max) { str = str.toString(); return str.length < max ? pad(" " + str, max) : str; } /* For each loop we want to create a new log file. */ - if (logger !== undefined) { logger.finalize() } @@ -132,31 +115,24 @@ bot.loopCounter++; bot.loopStartTime = new Date().valueOf(); - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> Entering function."); } - - /* Loop Heartbeat sent to the UI */ - bot.processHeartBeat = processHeartBeat - processHeartBeat() + /* We tell the UI that we are running. */ + processHeartBeat() /* We define here all the modules that the rest of the infraestructure, including the bots themselves can consume. */ - - const UTILITIES = require(ROOT_DIR + 'CloudUtilities'); - const STATUS_REPORT = require(ROOT_DIR + 'StatusReport'); - const STATUS_DEPENDENCIES = require(ROOT_DIR + 'StatusDependencies'); - const PROCESS_EXECUTION_EVENTS = require(ROOT_DIR + 'ProcessExecutionEvents'); - const PROCESS_OUTPUT = require(ROOT_DIR + 'ProcessOutput'); + const UTILITIES = require(global.ROOT_DIR + 'CloudUtilities'); + const STATUS_REPORT = require(global.ROOT_DIR + 'StatusReport'); + const STATUS_DEPENDENCIES = require(global.ROOT_DIR + 'StatusDependencies'); + const PROCESS_EXECUTION_EVENTS = require(global.ROOT_DIR + 'ProcessExecutionEvents'); + const PROCESS_OUTPUT = require(global.ROOT_DIR + 'ProcessOutput'); /* We define the datetime for the process that we are running now. This will be the official processing time for both the infraestructure and the bot. */ - bot.processDatetime = new Date(); // This will be considered the process date and time, so as to have it consistenly all over the execution. - /* High level log entry */ - - console.log(new Date().toISOString() + " " + pad(bot.exchange, 20) + " " + pad(bot.market.baseAsset + '/' + bot.market.quotedAsset, 10) + " " + pad(bot.codeName, 30) + " " + pad(bot.process, 30) - + " Main Loop # " + pad(Number(bot.loopCounter), 8) ) + /* High level log entry */ + console.log(new Date().toISOString() + " " + pad(bot.exchange, 20) + " " + pad(bot.market.baseAsset + '/' + bot.market.quotedAsset, 10) + " " + pad(bot.codeName, 30) + " " + pad(bot.process, 30) + + " Main Loop # " + pad(Number(bot.loopCounter), 8)) /* We will prepare first the infraestructure needed for the bot to run. There are 4 modules we need to sucessfullly initialize first. */ - let processExecutionEvents let userBot; let statusDependencies; @@ -167,21 +143,12 @@ initializeProcessExecutionEvents(); function initializeProcessExecutionEvents() { - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeProcessExecutionEvents -> Entering function."); } - processExecutionEvents = PROCESS_EXECUTION_EVENTS.newProcessExecutionEvents(bot, logger) - - processExecutionEvents.initialize(onInizialized); + processExecutionEvents.initialize(processConfig, onInizialized); function onInizialized(err) { - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Entering function."); } - switch (err.result) { case global.DEFAULT_OK_RESPONSE.result: { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Execution finished well."); @@ -195,66 +162,41 @@ return; } case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - processStopped() logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; + global.unexpectedError = err.message + processStopped() + return } default: { logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; + global.unexpectedError = err.message + processStopped() + return } } - } catch (err) { logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); + global.unexpectedError = err.message + processStopped() + return } } } catch (err) { logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); + global.unexpectedError = err.message + processStopped() + return } } function startProcessExecutionEvents() { - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> startProcessExecutionEvents -> Entering function."); } - processExecutionEvents.start(onStarted); function onStarted(err) { - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> startProcessExecutionEvents -> onStarted -> Entering function."); } - switch (err.result) { case global.DEFAULT_OK_RESPONSE.result: { logger.write(MODULE_NAME, "[INFO] run -> loop -> startProcessExecutionEvents -> onStarted -> Execution finished well."); @@ -274,68 +216,41 @@ return; } case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - processStopped() logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; + global.unexpectedError = err.message + processStopped() + return } default: { logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> Unhandled err.result received. -> err.result = " + err.result); logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; + global.unexpectedError = err.message + processStopped() + return } } - } catch (err) { logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); + global.unexpectedError = err.message + processStopped() + return } } - } catch (err) { logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); + global.unexpectedError = err.message + processStopped() + return } } function initializeStatusDependencies() { - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeStatusDependencies -> Entering function."); } - statusDependencies = STATUS_DEPENDENCIES.newStatusDependencies(bot, logger, STATUS_REPORT, UTILITIES, PROCESS_OUTPUT); - statusDependencies.initialize(onInizialized); function onInizialized(err) { - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeStatusDependencies -> onInizialized -> Entering function."); } - switch (err.result) { case global.DEFAULT_OK_RESPONSE.result: { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeStatusDependencies -> onInizialized -> Execution finished well."); @@ -349,68 +264,41 @@ return; } case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - processStopped() logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; + global.unexpectedError = err.message + processStopped() + return } default: { logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; + global.unexpectedError = err.message + processStopped() + return } } - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return } } - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return } } function initializeUserBot() { - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeUserBot -> Entering function."); } - usertBot = USER_BOT_MODULE.newUserBot(bot, logger, COMMONS_MODULE, UTILITIES, FILE_STORAGE, STATUS_REPORT, exchangeAPI); - usertBot.initialize(statusDependencies, onInizialized); function onInizialized(err) { - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeUserBot -> onInizialized -> Entering function."); } - switch (err.result) { case global.DEFAULT_OK_RESPONSE.result: { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeUserBot -> onInizialized > Execution finished well."); @@ -424,81 +312,51 @@ return; } case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - processStopped() logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> onInizialized > Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; + global.unexpectedError = err.message + processStopped() + return } case global.CUSTOM_OK_RESPONSE.result: { switch (err.message) { default: { logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> onInizialized > Unhandled custom response received. -> err = " + err.message); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; + global.unexpectedError = err.message + processStopped() + return } } } default: { logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> onInizialized > Unhandled err.result received. -> err.result = " + err.result); logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> onInizialized > Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; + global.unexpectedError = err.message + processStopped() + return } } - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> onInizialized -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> onInizialized -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return } } - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeUserBot -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return } } function startUserBot() { - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> startUserBot -> Entering function."); } - usertBot.start(onFinished); function onFinished(err) { - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> startUserBot -> onFinished -> Entering function."); } - switch (err.result) { case global.DEFAULT_OK_RESPONSE.result: { logger.write(MODULE_NAME, "[INFO] run -> loop -> startUserBot -> onFinished > Execution finished well."); @@ -512,15 +370,10 @@ return; } case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - processStopped() logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> onFinished > Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; + global.unexpectedError = err.message + processStopped() + return } case global.CUSTOM_OK_RESPONSE.result: { @@ -539,66 +392,43 @@ } default: { logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> onFinished > Unhandled custom response received. -> err = " + err.message); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; + global.unexpectedError = err.message + processStopped() + return } } } default: { logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> onFinished > Unhandled err.result received. -> err.result = " + err.result); logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> onFinished > Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; + global.unexpectedError = err.message + processStopped() + return } } - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> onFinished -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> onFinished -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return } } - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startUserBot -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return } } function finishProcessExecutionEvents() { - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> finishProcessExecutionEvents -> Entering function."); } - processExecutionEvents.finish(onFinished); function onFinished(err) { try { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> finishProcessExecutionEvents -> onFinished -> Entering function."); } - processExecutionEvents.finalize() - processExecutionEvents = undefined + processExecutionEvents = undefined switch (err.result) { case global.DEFAULT_OK_RESPONSE.result: { @@ -614,108 +444,63 @@ return; } case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - processStopped() logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; + global.unexpectedError = err.message + processStopped() + return } default: { logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> Unhandled err.result received. -> err.result = " + err.result); logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; + global.unexpectedError = err.message + processStopped() + return } } - } catch (err) { logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); + global.unexpectedError = err.message + processStopped() + return } } - } catch (err) { logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); + global.unexpectedError = err.message + processStopped() + return } } function loopControl(nextWaitTime) { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Entering function."); } if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> nextWaitTime = " + nextWaitTime); } /* We show we reached the end of the loop. */ /* Here we check if we must stop the loop gracefully. */ - shallWeStop(onStop, onContinue); function onStop() { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> onStop -> Entering function."); } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> onStop -> Stopping the Loop Gracefully. See you next time!"); } - - if(global.WRITE_LOGS_TO_FILES === 'true'){ - logger.persist(); - } - - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; processStopped() - callBackFunction(global.DEFAULT_OK_RESPONSE); return; - } function onContinue() { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> onContinue -> Entering function."); } - /* Sensor bots are going to be executed after a configured period of time after the last execution ended. This is to avoid overlapping executions. */ - switch (nextWaitTime) { case 'Normal': { if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (processConfig.normalWaitTime / 1000) + " seconds."); } - if (processConfig.deadWaitTime > 0) { - checkLoopHealthHandle = setTimeout(checkLoopHealth, processConfig.deadWaitTime, bot.loopCounter); - } nextLoopTimeoutHandle = setTimeout(loop, processConfig.normalWaitTime); - processHeartBeat(undefined, undefined, "Waiting " + processConfig.normalWaitTime / 1000 + " seconds for next execution.") - if(global.WRITE_LOGS_TO_FILES === 'true'){ + processHeartBeat(undefined, undefined, "Waiting " + processConfig.normalWaitTime / 1000 + " seconds for next execution.") + if (global.WRITE_LOGS_TO_FILES === 'true') { logger.persist(); } } break; case 'Retry': { if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (processConfig.retryWaitTime / 1000) + " seconds."); } - if (processConfig.deadWaitTime > 0) { - checkLoopHealthHandle = setTimeout(checkLoopHealth, processConfig.retryWaitTime * 5, bot.loopCounter); - } nextLoopTimeoutHandle = setTimeout(loop, processConfig.retryWaitTime); - processHeartBeat(undefined, undefined, "Trying to recover from some problem. Waiting " + processConfig.retryWaitTime / 1000 + " seconds for next execution.") + processHeartBeat(undefined, undefined, "Trying to recover from some problem. Waiting " + processConfig.retryWaitTime / 1000 + " seconds for next execution.") logger.persist(); } break; @@ -727,7 +512,7 @@ } else { if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (processConfig.sleepWaitTime / 60000) + " minutes."); } nextLoopTimeoutHandle = setTimeout(loop, processConfig.sleepWaitTime); - processHeartBeat(undefined, undefined, "Waiting " + processConfig.sleepWaitTime / 60000 + " minutes for next execution.") + processHeartBeat(undefined, undefined, "Waiting " + processConfig.sleepWaitTime / 60000 + " minutes for next execution.") logger.persist(); } } @@ -740,7 +525,7 @@ } else { if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (processConfig.comaWaitTime / 3600000) + " hours."); } nextLoopTimeoutHandle = setTimeout(loop, processConfig.comaWaitTime); - processHeartBeat(undefined, undefined, "Waiting " + processConfig.comaWaitTime / 3600000 + " hours for next execution.") + processHeartBeat(undefined, undefined, "Waiting " + processConfig.comaWaitTime / 3600000 + " hours for next execution.") logger.persist(); } } @@ -749,44 +534,9 @@ } } - function checkLoopHealth(pLastLoop) { - - if (bot.enableCheckLoopHealth === false || global.STOP_TASK_GRACEFULLY === true) { - - logger.write(MODULE_NAME, "[WARN] run -> loop -> checkLoopHealth -> bot.enableCheckLoopHealth = " + bot.enableCheckLoopHealth); - - return; - } // This gets disabled anytime the Main Loop is shut down by any condition. - - if (bot.loopCounter <= pLastLoop + 1) { // This means that the next loop started but also stopped executing abruptally. - - let now = new Date().valueOf(); - - if (now - bot.loopStartTime > processConfig.deadWaitTime) { - - logger.write(MODULE_NAME, "[ERROR] run -> loop -> checkLoopHealth -> Dead loop found -> pLastLoop = " + pLastLoop); - console.log((new Date().toISOString() + " [ERROR] run -> loop -> checkLoopHealth -> " + pad(bot.codeName, 20) + " " + pad(bot.process, 30) + " Loop # " + pad(Number(bot.loopCounter), 5) + " found dead. Resurrecting it now.")); - - logger.persist(); // We persist the logs of the failed execution. - clearTimeout(nextLoopTimeoutHandle); // We cancel the timeout in case the original loop was still running and schedulled to reexecute. - loop(); // We restart the loop so that the processing can continue. - - } else { - - console.log((new Date().toISOString() + " [WARN] run -> loop -> checkLoopHealth -> " + pad(bot.codeName, 20) + " " + pad(bot.process, 30) + " Loop # " + pad(Number(bot.loopCounter), 5) + " found delayed but still alive. No action taken.")); - - } - } - } - function shallWeStop(stopCallBack, continueCallBack) { - try { - /* IMPORTANT: This function is exactly the same on the 3 modules. */ - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> shallWeStop -> Entering function. "); } - if (!global.STOP_TASK_GRACEFULLY) { continueCallBack(); } else { @@ -794,23 +544,17 @@ } } catch (err) { logger.write(MODULE_NAME, "[ERROR] run -> loop -> shallWeStop -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; + global.unexpectedError = err.message + processStopped() + return } } } catch (err) { - parentLogger.write(MODULE_NAME, "[ERROR] run -> loop -> err = "+ err.stack); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); + parentLogger.write(MODULE_NAME, "[ERROR] run -> loop -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return } } @@ -825,16 +569,26 @@ } function processStopped() { - global.EVENT_SERVER_CLIENT.raiseEvent(bot.processKey, 'Stopped') + if (global.unexpectedError !== undefined) { + global.PROCESS_ERROR(bot.processKey, undefined, "An unexpected error caused the Process to stop.") + } else { + global.EVENT_SERVER_CLIENT.raiseEvent(bot.processKey, 'Stopped') + } + logger.persist(); + clearInterval(fixedTimeLoopIntervalHandle); + clearTimeout(nextLoopTimeoutHandle); + if (global.unexpectedError !== undefined) { + callBackFunction(global.DEFAULT_FAIL_RESPONSE) + } else { + callBackFunction(global.DEFAULT_OK_RESPONSE) + } } } catch (err) { - parentLogger.write(MODULE_NAME, "[ERROR] run -> err = "+ err.stack); + parentLogger.write(MODULE_NAME, "[ERROR] run -> err = " + err.stack); clearInterval(fixedTimeLoopIntervalHandle); clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } diff --git a/TaskServer/Session.js b/TaskServer/Session.js index 0045054a8..9b8c82b67 100644 --- a/TaskServer/Session.js +++ b/TaskServer/Session.js @@ -2,32 +2,29 @@ const MODULE_NAME = "Session" const FULL_LOG = true; - const ONE_YEAR_IN_MILISECONDS = 365 * 24 * 60 * 60 * 1000 let thisObject = { initialize: initialize } + const SOCIAL_BOTS_MODULE = require('./SocialBots.js') + let socialBotsModule = SOCIAL_BOTS_MODULE.newSocialBots(bot, parentLogger) + return thisObject; function initialize(pProcessConfig, callBackFunction) { try { - if (FULL_LOG === true) { parentLogger.write(MODULE_NAME, "[INFO] initialize -> Entering function."); } - - let telegramAPI - /* Initialize this info so that everything is logged propeerly */ - bot.SESSION = { name: bot.processNode.session.name, id: bot.processNode.session.id } /* Set the folderName for early logging */ - if (bot.processNode.session.code.folderName === undefined) { - bot.SESSION.folderName = bot.SESSION.id + if (bot.processNode.session.config.folderName === undefined) { + bot.SESSION.folderName = bot.processNode.session.type.replace(' ', '-').replace(' ', '-') + '-' + bot.SESSION.id } else { - bot.SESSION.folderName = bot.processNode.session.code.folderName + "-" + bot.SESSION.id + bot.SESSION.folderName = bot.processNode.session.type.replace(' ', '-').replace(' ', '-') + '-' + bot.processNode.session.config.folderName } /* Check if there is a session */ @@ -41,38 +38,59 @@ bot.sessionKey = bot.processNode.session.name + '-' + bot.processNode.session.type + '-' + bot.processNode.session.id global.SESSION_MAP.set(bot.sessionKey, bot.sessionKey) - global.EVENT_SERVER_CLIENT.listenToEvent(bot.sessionKey, 'Run Session', undefined, bot.sessionKey, undefined, runSession) - global.EVENT_SERVER_CLIENT.listenToEvent(bot.sessionKey, 'Stop Session', undefined, bot.sessionKey, undefined, stopSession) + global.EVENT_SERVER_CLIENT.listenToEvent(bot.sessionKey, 'Session Status', undefined, bot.sessionKey, undefined, onSessionStatus) + global.EVENT_SERVER_CLIENT.listenToEvent(bot.sessionKey, 'Run Session', undefined, bot.sessionKey, undefined, onSessionRun) + global.EVENT_SERVER_CLIENT.listenToEvent(bot.sessionKey, 'Stop Session', undefined, bot.sessionKey, undefined, onSessionStop) + global.EVENT_SERVER_CLIENT.listenToEvent(bot.sessionKey, 'Resume Session', undefined, bot.sessionKey, undefined, onSessionResume) + + /* Connect this here so that it is accesible from other places */ + bot.sessionError = sessionError + bot.sessionWarning = sessionWarning + bot.sessionInfo = sessionInfo + + /* Heartbeats sent to the UI */ + bot.sessionHeartBeat = sessionHeartBeat callBackFunction(global.DEFAULT_OK_RESPONSE) return - function runSession(message) { + function onSessionStatus() { + if (bot.SESSION_STATUS === 'Running') { + let event = { + status: 'Session Runnning' + } + global.EVENT_SERVER_CLIENT.raiseEvent(bot.sessionKey, 'Status Response', event) + } else { + let event = { + status: 'Not Session Runnning' + } + global.EVENT_SERVER_CLIENT.raiseEvent(bot.sessionKey, 'Status Response', event) + } + } + function onSessionRun(message) { try { - if (bot.SESSION_STATUS === 'Idle' || bot.SESSION_STATUS === 'Running') { return } // This happens when the UI is reloaded, the session was running and tries to run it again. + /* This happens when the UI is reloaded, the session was running and tries to run it again. */ + if (bot.SESSION_STATUS === 'Idle' || bot.SESSION_STATUS === 'Running') { + parentLogger.write(MODULE_NAME, "[WARN] onSessionRun -> Event received to run the Session while it was already running. ") + return + } /* We are going to run the Definition comming at the event. */ bot.TRADING_SYSTEM = JSON.parse(message.event.tradingSystem) + bot.TRADING_ENGINE = JSON.parse(message.event.tradingEngine) bot.SESSION = JSON.parse(message.event.session) bot.DEPENDENCY_FILTER = JSON.parse(message.event.dependencyFilter) + bot.RESUME = false + bot.FIRST_EXECUTION = true + bot.SESSION.stop = stopSession // stop function - /* Set the folderName for logging, reports, context and data output */ - let code - if (bot.SESSION.code !== undefined) { - code = bot.SESSION.code - if (code.folderName === undefined) { - bot.SESSION.folderName = bot.SESSION.id - } else { - bot.SESSION.folderName = code.folderName + "-" + bot.SESSION.id - } - } + setUpSessionFolderName() - /* Extract values from different sources and consolidate them under one structure that is going to be used later on. */ - setValuesToUse(message) + /* We validate all parameters received and complete some that might be missing if needed. */ + if (checkParemeters() === false) { return } - /* Set up Social Bots */ - initializeSocialBots() + socialBotsModule.initialize() let allGood switch (bot.SESSION.type) { @@ -98,106 +116,294 @@ bot.STOP_SESSION = false } else { bot.STOP_SESSION = true + if (FULL_LOG === true) { parentLogger.write(MODULE_NAME, '[IMPORTANT] onSessionRun -> Stopping the Session now. ') } } + + socialBotsModule.sendMessage(bot.SESSION.type + " '" + bot.SESSION.name + "' is starting.") } catch (err) { - parentLogger.write(MODULE_NAME, "[ERROR] initialize -> runSession -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); + parentLogger.write(MODULE_NAME, "[ERROR] initialize -> onSessionRun -> err = " + err.stack); } } - function stopSession(message) { + function onSessionStop() { + stopSession('Session Stopped From the User Interface.') + } + + function onSessionResume(message) { try { - bot.STOP_SESSION = true - finalizeSocialBots() + if (bot.SESSION.stop === undefined) { + parentLogger.write(MODULE_NAME, "[WARN] onSessionResume -> Event received to resume the Session that have never be ran before. ") + return + } + + /* This happens when the UI is reloaded, the session was running and tries to run it again. */ + if (bot.SESSION_STATUS === 'Idle' || bot.SESSION_STATUS === 'Running') { + parentLogger.write(MODULE_NAME, "[WARN] onSessionResume -> Event received to resume the Session while it was already running. ") + return + } + + bot.RESUME = true + bot.STOP_SESSION = false + + socialBotsModule.sendMessage(bot.SESSION.type + " '" + bot.SESSION.name + "' is resuming.") } catch (err) { - parentLogger.write(MODULE_NAME, "[ERROR] initialize -> stopSession -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); + parentLogger.write(MODULE_NAME, "[ERROR] initialize -> onSessionResume -> err = " + err.stack); } } - function checkDatetimes() { - if (bot.VALUES_TO_USE.timeRange.initialDatetime.valueOf() < (new Date()).valueOf()) { - if (FULL_LOG === true) { parentLogger.write(MODULE_NAME, "[WARN] initialize -> checkDatetimes -> Overriding initialDatetime with present datetime because " + bot.VALUES_TO_USE.timeRange.initialDatetime + " is in the past."); } - bot.VALUES_TO_USE.timeRange.initialDatetime = new Date() + function stopSession(commandOrigin) { + + socialBotsModule.sendMessage(bot.SESSION.type + " '" + bot.SESSION.name + "' is stopping " + commandOrigin) + socialBotsModule.finalize() + bot.STOP_SESSION = true + if (FULL_LOG === true) { parentLogger.write(MODULE_NAME, '[IMPORTANT] stopSession -> Stopping the Session now. ') } + sessionInfo(bot.SESSION, commandOrigin) + } + + function setUpSessionFolderName() { + /* + The session object is overwritten when the session is run. For that reason we + need to setup again the folder name at the Session level. + Set the folderName for logging, reports, context and data output + */ + let config + if (bot.SESSION.config !== undefined) { + config = bot.SESSION.config + if (config.folderName === undefined) { + bot.SESSION.folderName = bot.processNode.session.type.replace(' ', '-').replace(' ', '-') + '-' + bot.SESSION.id + } else { + bot.SESSION.folderName = bot.processNode.session.type.replace(' ', '-').replace(' ', '-') + '-' + bot.processNode.session.config.folderName + } } - if (bot.VALUES_TO_USE.timeRange.finalDatetime.valueOf() < (new Date()).valueOf()) { - if (FULL_LOG === true) { parentLogger.write(MODULE_NAME, "[WARN] initialize -> checkDatetimes -> Overriding finalDatetime with present datetime plus one year because " + bot.VALUES_TO_USE.timeRange.finalDatetime + " is in the past."); } - bot.VALUES_TO_USE.timeRange.finalDatetime = new Date() + ONE_YEAR_IN_MILISECONDS + } + + function checkParemeters() { + /* + Here we check all the Session Parameters received. If something critical is missing we abort returning false. If something + non critical is missing, we complete it with a default value. + */ + + if (bot.SESSION.parameters === undefined) { + let errorMessage = "Session Node with no Parameters." + parentLogger.write(MODULE_NAME, "[ERROR] initialize -> checkParemeters -> " + errorMessage) + bot.sessionError(bot.SESSION, errorMessage) + return false } + + /* Time Range */ + if (bot.SESSION.parameters.timeRange === undefined) { // if the Time Range is missing we create a default one. + bot.SESSION.parameters.timeRange = { + name: 'Missing Time Range', + type: 'Time Range', + config: { + initialDatetime: (new Date()).valueOf(), + finalDatetime: (new Date()).valueOf() + global.ONE_YEAR_IN_MILISECONDS + } + } + } else { + /* Check that we received valid dates */ + if (bot.SESSION.type === 'Backtesting Session') { + if (isNaN(new Date(bot.SESSION.parameters.timeRange.config.initialDatetime)).valueOf()) { + let errorMessage = "sessionParameters.timeRange.config.initialDatetime is not a valid date." + parentLogger.write(MODULE_NAME, "[ERROR] initialize -> checkParemeters -> " + errorMessage) + bot.sessionError(bot.SESSION.parameters, errorMessage) + return false + } + } + if (isNaN(new Date(bot.SESSION.parameters.timeRange.config.finalDatetime)).valueOf()) { + let errorMessage = "sessionParameters.timeRange.config.initialDatetime is not a valid date." + parentLogger.write(MODULE_NAME, "[ERROR] initialize -> checkParemeters -> " + errorMessage) + bot.sessionError(bot.SESSION.parameters, errorMessage) + return false + } + } + + /* Session Type Forced Values */ + let today = (new Date()).valueOf() + let aYearAgo = today - global.ONE_YEAR_IN_MILISECONDS + let aYearFromNow = today + global.ONE_YEAR_IN_MILISECONDS + switch (bot.SESSION.type) { + case 'Backtesting Session': { + useDefaultDatetimes(aYearAgo, today) + break + } + case 'Live Trading Session': { + useDefaultDatetimes(today, aYearFromNow) + break + } + case 'Fordward Testing Session': { + useDefaultDatetimes(today, aYearFromNow) + break + } + case 'Paper Trading Session': { + useDefaultDatetimes(today, aYearFromNow) + break + } + } + + function useDefaultDatetimes(initialDefault, finalDefault) { + /* + Note that inside the system, we are going to deal with these + dates in their numeric value representation. + */ + + /* Initial Datetime */ + if (bot.SESSION.type === 'Backtesting Session') { + if (bot.SESSION.parameters.timeRange.config.initialDatetime === undefined) { + bot.SESSION.parameters.timeRange.config.initialDatetime = initialDefault + } else { + bot.SESSION.parameters.timeRange.config.initialDatetime = (new Date(bot.SESSION.parameters.timeRange.config.initialDatetime)).valueOf() + } + } else { + /* Non backtest session can start from the past only if explicitly configured that way */ + if (bot.SESSION.parameters.timeRange.config.initialDatetime === undefined || bot.SESSION.parameters.timeRange.config.allowStartingFromThePast !== true) { + bot.SESSION.parameters.timeRange.config.initialDatetime = initialDefault + } else { + bot.SESSION.parameters.timeRange.config.initialDatetime = (new Date(bot.SESSION.parameters.timeRange.config.initialDatetime)).valueOf() + } + } + + /* Final Datetime */ + if (bot.SESSION.parameters.timeRange.config.finalDatetime === undefined) { + bot.SESSION.parameters.timeRange.config.finalDatetime = finalDefault + } else { + bot.SESSION.parameters.timeRange.config.finalDatetime = (new Date(bot.SESSION.parameters.timeRange.config.finalDatetime)).valueOf() + } + } + + /* Time Frame */ + if (bot.SESSION.parameters.timeFrame === undefined) { + let errorMessage = "Session Parameters Node with no Time Frame." + parentLogger.write(MODULE_NAME, "[ERROR] initialize -> checkParemeters -> " + errorMessage) + bot.sessionError(bot.SESSION.parameters, errorMessage) + return false + } + if (bot.SESSION.parameters.timeFrame.config.label === undefined) { + let errorMessage = "Session Parameters Node with no Time Frame Label configuration." + parentLogger.write(MODULE_NAME, "[ERROR] initialize -> checkParemeters -> " + errorMessage) + bot.sessionError(bot.SESSION.parameters.timeFrame, errorMessage) + return false + } + bot.SESSION.parameters.timeFrame.config.value = getTimeFrameFromLabel(bot.SESSION.parameters.timeFrame.config.label) + if (bot.SESSION.parameters.timeFrame.config.value === undefined) { + let errorMessage = "Config error: label value not recognized. Try 01-min or 01-hs for example." + parentLogger.write(MODULE_NAME, "[ERROR] initialize -> checkParemeters -> " + errorMessage) + bot.sessionError(bot.SESSION.parameters.timeFrame, errorMessage) + return false + } + + /* Session Base Asset */ + if (bot.SESSION.parameters.sessionBaseAsset === undefined) { + let errorMessage = "Session Parameters Node with no Session Base Asset." + parentLogger.write(MODULE_NAME, "[ERROR] initialize -> checkParemeters -> " + errorMessage) + bot.sessionError(bot.SESSION.parameters, errorMessage) + return false + } + if (bot.SESSION.parameters.sessionBaseAsset.config.initialBalance === undefined) { + let errorMessage = "Session Parameters Session Base Asset with no initialBalance configuration." + parentLogger.write(MODULE_NAME, "[ERROR] initialize -> checkParemeters -> " + errorMessage) + bot.sessionError(bot.SESSION.parameters.sessionBaseAsset, errorMessage) + return false + } + + /* Session Quoted Asset */ + if (bot.SESSION.parameters.sessionQuotedAsset === undefined) { + let errorMessage = "Session Parameters Node with no Session Quoted Asset." + parentLogger.write(MODULE_NAME, "[ERROR] initialize -> checkParemeters -> " + errorMessage) + bot.sessionError(bot.SESSION.parameters, errorMessage) + return false + } + if (bot.SESSION.parameters.sessionQuotedAsset.config.initialBalance === undefined) { + let errorMessage = "Session Parameters Session Quoted Asset with no initialBalance configuration." + parentLogger.write(MODULE_NAME, "[ERROR] initialize -> checkParemeters -> " + errorMessage) + bot.sessionError(bot.SESSION.parameters.sessionQuotedAsset, errorMessage) + return false + } + + /* Slippage */ + if (bot.SESSION.parameters.slippage === undefined) { // if the Slippage is missing we create a default one. + bot.SESSION.parameters.timeRange = { + name: 'Missing Slippage', + type: 'Slippage', + config: { + positionRate: 0, + stopLoss: 0, + takeProfit: 0 + } + } + } + if (bot.SESSION.parameters.slippage.config.positionRate === undefined) { // if the positionRate is missing we create a default one. + bot.SESSION.parameters.slippage.config.positionRate = 0 + } + if (bot.SESSION.parameters.slippage.config.stopLoss === undefined) { // if the stopLoss is missing we create a default one. + bot.SESSION.parameters.slippage.config.stopLoss = 0 + } + if (bot.SESSION.parameters.slippage.config.takeProfit === undefined) { // if the takeProfit is missing we create a default one. + bot.SESSION.parameters.slippage.config.takeProfit = 0 + } + + /* Fee Structure */ + if (bot.SESSION.parameters.feeStructure === undefined) { // if the Fee Structure is missing we create a default one. + bot.SESSION.parameters.feeStructure = { + name: 'Missing Fee Structure', + type: 'Fee Structure', + config: { + maker: 0, + taker: 0 + } + } + } + if (bot.SESSION.parameters.feeStructure.config.maker === undefined) { // if the maker is missing we create a default one. + bot.SESSION.parameters.feeStructure.config.maker = 0 + } + if (bot.SESSION.parameters.feeStructure.config.taker === undefined) { // if the taker is missing we create a default one. + bot.SESSION.parameters.feeStructure.config.taker = 0 + } + + return true } function startBackTesting(message) { - bot.startMode = "Backtest" - if (bot.VALUES_TO_USE.timeRange.finalDatetime.valueOf() > (new Date()).valueOf()) { - bot.VALUES_TO_USE.timeRange.finalDatetime = new Date() - } - bot.resumeExecution = false; - bot.hasTheBotJustStarted = true - bot.multiPeriodProcessDatetime = new Date(bot.VALUES_TO_USE.timeRange.initialDatetime.valueOf()) return true } function startLiveTrading(message) { - - if (process.env.KEY === undefined || process.env.SECRET === undefined) { - if (FULL_LOG === true) { parentLogger.write(MODULE_NAME, "[WARN] initialize -> startLiveTrading -> Key name or Secret not provided, not possible to run the process in Live mode."); } - console.log("Key 'codeName' or 'secret' not provided. Plese check that and try again.") - return + if (bot.KEY === undefined || bot.SECRET === undefined) { + if (FULL_LOG === true) { parentLogger.write(MODULE_NAME, "[ERROR] initialize -> startLiveTrading -> Key 'codeName' or 'secret' not provided. Plese check that and try again."); } + return false } - - bot.startMode = "Live" - checkDatetimes() - bot.resumeExecution = false; - bot.multiPeriodProcessDatetime = new Date(bot.VALUES_TO_USE.timeRange.initialDatetime.valueOf()) - bot.hasTheBotJustStarted = true - pProcessConfig.liveWaitTime = getTimeFrameFromLabel(bot.VALUES_TO_USE.timeFrame) return true } function startFordwardTesting(message) { - - if (process.env.KEY === undefined || process.env.SECRET === undefined) { + if (bot.KEY === undefined || bot.SECRET === undefined) { if (FULL_LOG === true) { parentLogger.write(MODULE_NAME, "[WARN] initialize -> startFordwardTesting -> Key name or Secret not provided, not possible to run the process in Forward Testing mode."); } console.log("Key 'codeName' or 'secret' not provided. Plese check that and try again.") - return + return false } - bot.startMode = "Live" - checkDatetimes() - bot.resumeExecution = false; - bot.multiPeriodProcessDatetime = new Date(bot.VALUES_TO_USE.timeRange.initialDatetime.valueOf()) - bot.hasTheBotJustStarted = true - /* Reduce the balance */ - let balancePercentage = 1 // This is the default value - if (bot.SESSION.code.balancePercentage !== undefined) { - balancePercentage = bot.SESSION.code.balancePercentage + if (bot.SESSION.config.balancePercentage !== undefined) { + balancePercentage = bot.SESSION.config.balancePercentage } - bot.VALUES_TO_USE.initialBalanceA = bot.VALUES_TO_USE.initialBalanceA * balancePercentage / 100 - bot.VALUES_TO_USE.initialBalanceB = bot.VALUES_TO_USE.initialBalanceB * balancePercentage / 100 + bot.SESSION.parameters.sessionBaseAsset.config.initialBalance = bot.SESSION.parameters.sessionBaseAsset.config.initialBalance * balancePercentage / 100 + bot.SESSION.parameters.sessionQuotedAsset.config.initialBalance = bot.SESSION.parameters.sessionQuotedAsset.config.initialBalance * balancePercentage / 100 - bot.VALUES_TO_USE.minimumBalanceA = bot.VALUES_TO_USE.minimumBalanceA * balancePercentage / 100 - bot.VALUES_TO_USE.minimumBalanceB = bot.VALUES_TO_USE.minimumBalanceB * balancePercentage / 100 + bot.SESSION.parameters.sessionBaseAsset.config.minimumBalance = bot.SESSION.parameters.sessionBaseAsset.config.minimumBalance * balancePercentage / 100 + bot.SESSION.parameters.sessionQuotedAsset.config.minimumBalance = bot.SESSION.parameters.sessionQuotedAsset.config.minimumBalance * balancePercentage / 100 - bot.VALUES_TO_USE.maximumBalanceA = bot.VALUES_TO_USE.maximumBalanceA * balancePercentage / 100 - bot.VALUES_TO_USE.maximumBalanceB = bot.VALUES_TO_USE.maximumBalanceB * balancePercentage / 100 + bot.SESSION.parameters.sessionBaseAsset.config.maximumBalance = bot.SESSION.parameters.sessionBaseAsset.config.maximumBalance * balancePercentage / 100 + bot.SESSION.parameters.sessionQuotedAsset.config.maximumBalance = bot.SESSION.parameters.sessionQuotedAsset.config.maximumBalance * balancePercentage / 100 - pProcessConfig.normalWaitTime = getTimeFrameFromLabel(bot.VALUES_TO_USE.timeFrame) + pProcessConfig.normalWaitTime = bot.SESSION.parameters.timeFrame.config.value return true } function startPaperTrading(message) { - bot.startMode = "Paper" - - checkDatetimes() - bot.resumeExecution = false; - bot.hasTheBotJustStarted = true - bot.multiPeriodProcessDatetime = new Date(bot.VALUES_TO_USE.timeRange.initialDatetime.valueOf()) - pProcessConfig.normalWaitTime = getTimeFrameFromLabel(bot.VALUES_TO_USE.timeFrame) return true } @@ -222,290 +428,85 @@ } } - function setValuesToUse(message) { - /* - Base on the information received we will determined which values ultimatelly are going to be used, - and once we do, they will become constants across the multiple loops executions. - */ - - /* Set all default values */ - bot.VALUES_TO_USE = { - slippage: { - positionRate: 0, - stopLoss: 0, - takeProfit: 0 - }, - feeStructure: { - maker: 0, - taker: 0 - }, - timeRange: { - initialDatetime: new Date(), - finalDatetime: new Date() - } + function sessionHeartBeat(processingDate, percentage, status) { + let event = { + seconds: (new Date()).getSeconds(), + processingDate: processingDate, + percentage: percentage, + status: status } + global.EVENT_SERVER_CLIENT.raiseEvent(bot.sessionKey, 'Heartbeat', event) - /* Session Type Dependant Default Values */ - - switch (bot.SESSION.type) { - case 'Backtesting Session': { - bot.VALUES_TO_USE.timeRange.initialDatetime = new Date((new Date()).valueOf() - ONE_YEAR_IN_MILISECONDS) - bot.VALUES_TO_USE.timeRange.finalDatetime = new Date() - break - } - case 'Live Trading Session': { - bot.VALUES_TO_USE.timeRange.initialDatetime = new Date() - bot.VALUES_TO_USE.timeRange.finalDatetime = new Date((new Date()).valueOf() + ONE_YEAR_IN_MILISECONDS) - break - } - case 'Fordward Testing Session': { - bot.VALUES_TO_USE.timeRange.initialDatetime = new Date() - bot.VALUES_TO_USE.timeRange.finalDatetime = new Date((new Date()).valueOf() + ONE_YEAR_IN_MILISECONDS) - break - } - case 'Paper Trading Session': { - bot.VALUES_TO_USE.timeRange.initialDatetime = new Date() - bot.VALUES_TO_USE.timeRange.finalDatetime = new Date((new Date()).valueOf() + ONE_YEAR_IN_MILISECONDS) - break - } - } - - let tradingSystem = bot.TRADING_SYSTEM - - if (tradingSystem !== undefined) { - - /* Applying Session Level Parameters */ - if (bot.SESSION !== undefined) { - if (bot.SESSION.parameters !== undefined) { - - /* Base Asset and Initial Balances. */ - { - if (bot.SESSION.parameters.baseAsset !== undefined) { - if (bot.SESSION.parameters.baseAsset.referenceParent !== undefined) { - if (bot.SESSION.parameters.baseAsset.referenceParent.referenceParent !== undefined) { - - let code = bot.SESSION.parameters.baseAsset.referenceParent.referenceParent.code - - if (code.codeName !== undefined) { - bot.VALUES_TO_USE.baseAsset = code.codeName; - } - - code = bot.SESSION.parameters.baseAsset.code - - if (bot.VALUES_TO_USE.baseAsset === bot.market.baseAsset) { - if (code.initialBalance !== undefined) { - bot.VALUES_TO_USE.initialBalanceA = code.initialBalance; - bot.VALUES_TO_USE.initialBalanceB = 0 - } - if (code.minimumBalance !== undefined) { - bot.VALUES_TO_USE.minimumBalanceA = code.minimumBalance; - bot.VALUES_TO_USE.minimumBalanceB = 0 - } - if (code.maximumBalance !== undefined) { - bot.VALUES_TO_USE.maximumBalanceA = code.maximumBalance; - bot.VALUES_TO_USE.maximumBalanceB = 0 - } - } else { - if (code.initialBalance !== undefined) { - bot.VALUES_TO_USE.initialBalanceB = code.initialBalance; - bot.VALUES_TO_USE.initialBalanceA = 0 - } - if (code.minimumBalance !== undefined) { - bot.VALUES_TO_USE.minimumBalanceB = code.minimumBalance; - bot.VALUES_TO_USE.minimumBalanceA = 0 - } - if (code.maximumBalance !== undefined) { - bot.VALUES_TO_USE.maximumBalanceB = code.maximumBalance; - bot.VALUES_TO_USE.maximumBalanceA = 0 - } - } - - /* Solve when values are missing. */ - if (bot.VALUES_TO_USE.minimumBalanceA === undefined) { - bot.VALUES_TO_USE.minimumBalanceA = 0 - } - - if (bot.VALUES_TO_USE.minimumBalanceB === undefined) { - bot.VALUES_TO_USE.minimumBalanceB = 0 - } - - if (bot.VALUES_TO_USE.maximumBalanceA === undefined) { - bot.VALUES_TO_USE.maximumBalanceA = 10000000000000000 - } - - if (bot.VALUES_TO_USE.maximumBalanceB === undefined) { - bot.VALUES_TO_USE.maximumBalanceB = 10000000000000000 - } - } - } - } - } - - /* Quoted Asset. */ - { - if (bot.SESSION.parameters.quotedAsset !== undefined) { - if (bot.SESSION.parameters.quotedAsset.referenceParent !== undefined) { - if (bot.SESSION.parameters.quotedAsset.referenceParent.referenceParent !== undefined) { - - let code = bot.SESSION.parameters.quotedAsset.referenceParent.referenceParent.code - - if (code.codeName !== undefined) { - bot.VALUES_TO_USE.quotedAsset = code.codeName; - } - } - } - } - } - - /* Time Frame */ - if (bot.SESSION.parameters.timeFrame !== undefined) { - bot.VALUES_TO_USE.timeFrame = bot.SESSION.parameters.timeFrame.code.value - } - - /* Slippage */ - if (bot.SESSION.parameters.slippage !== undefined) { - if (bot.SESSION.parameters.slippage.code !== undefined) { - - let code = bot.SESSION.parameters.slippage.code - - if (code.positionRate !== undefined) { - bot.VALUES_TO_USE.slippage.positionRate = code.positionRate - } - if (code.stopLoss !== undefined) { - bot.VALUES_TO_USE.slippage.stopLoss = code.stopLoss - } - if (code.takeProfit !== undefined) { - bot.VALUES_TO_USE.slippage.takeProfit = code.takeProfit - } - } - } - - /* Fee Structure */ - if (bot.SESSION.parameters.feeStructure !== undefined) { - if (bot.SESSION.parameters.feeStructure.code !== undefined) { - - let code = bot.SESSION.parameters.feeStructure.code - - if (code.maker !== undefined) { - bot.VALUES_TO_USE.feeStructure.maker = code.maker - } - if (code.taker !== undefined) { - bot.VALUES_TO_USE.feeStructure.taker = code.taker - } - } - } - - /* Time Range */ - if (bot.SESSION.parameters.timeRange !== undefined) { - if (bot.SESSION.parameters.timeRange.code !== undefined) { - - let code = bot.SESSION.parameters.timeRange.code - if (code.initialDatetime !== undefined) { - if (isNaN(Date.parse(code.initialDatetime)) === true) { - parentLogger.write(MODULE_NAME, "[WARN] initialize -> runSession -> setValuesToUse -> Cannot use initialDatatime provided at Session Parameters because it is not a valid Date."); - } else { - bot.VALUES_TO_USE.timeRange.initialDatetime = new Date(code.initialDatetime) - } - } - if (code.finalDatetime !== undefined) { - if (isNaN(Date.parse(code.finalDatetime)) === true) { - parentLogger.write(MODULE_NAME, "[WARN] initialize -> runSession -> setValuesToUse -> Cannot use finalDatetime provided at Session Parameters because it is not a valid Date."); - } else { - bot.VALUES_TO_USE.timeRange.finalDatetime = new Date(code.finalDatetime) - } - } - } - } - } - } + if (global.STOP_TASK_GRACEFULLY === true) { + bot.STOP_SESSION = true + if (FULL_LOG === true) { parentLogger.write(MODULE_NAME, '[IMPORTANT] sessionHeartBeat -> Stopping the Session now. ') } } } - function initializeSocialBots() { - - if (bot.SESSION.socialBots !== undefined) { - if (bot.SESSION.socialBots.bots !== undefined) { - for (let i = 0; i < bot.SESSION.socialBots.bots.length; i++) { - let socialBot = bot.SESSION.socialBots.bots[i] - if (socialBot.type === "Telegram Bot") { - let code = socialBot.code - socialBot.botInstance = initializeTelegramBot(code.botToken, code.chatId) - } - } + function sessionError(node, errorMessage) { + let event + if (node !== undefined) { + event = { + nodeName: node.name, + nodeType: node.type, + nodeId: node.id, + errorMessage: errorMessage } - - function announce(announcement) { - if (bot.SESSION.socialBots.bots !== undefined) { - for (let i = 0; i < bot.SESSION.socialBots.bots.length; i++) { - let socialBot = bot.SESSION.socialBots.bots[i] - try { - let code = announcement.code - - if (socialBot.type === "Telegram Bot") { - if (announcement.formulaValue !== undefined) { - socialBot.botInstance.telegramAPI.sendMessage(socialBot.botInstance.chatId, announcement.formulaValue).catch(err => parentLogger.write(MODULE_NAME, "[WARN] initialize -> initializeSocialBots -> announce -> Telegram API error -> err = " + err)) - } else { - socialBot.botInstance.telegramAPI.sendMessage(socialBot.botInstance.chatId, code.text).catch(err => parentLogger.write(MODULE_NAME, "[WARN] initialize -> initializeSocialBots -> announce -> Telegram API error -> err = " + err)) - } - } - - } catch (err) { - parentLogger.write(MODULE_NAME, "[WARN] initialize -> initializeSocialBots -> announce -> err = " + err.stack); - } - } - } + } else { + event = { + errorMessage: errorMessage } + } + global.EVENT_SERVER_CLIENT.raiseEvent(bot.sessionKey, 'Error', event) - bot.SESSION.socialBots.announce = announce + if (global.STOP_TASK_GRACEFULLY === true) { + bot.STOP_SESSION = true + if (FULL_LOG === true) { parentLogger.write(MODULE_NAME, '[IMPORTANT] sessionError -> Stopping the Session now. ') } } } - function finalizeSocialBots() { - if (bot.SESSION.socialBots === undefined) { return } - if (bot.SESSION.socialBots.bots !== undefined) { - for (let i = 0; i < bot.SESSION.socialBots.bots.length; i++) { - let socialBot = bot.SESSION.socialBots.bots[i] - if (socialBot.type === "Telegram Bot") { - let code = socialBot.code - socialBot.botInstance = finalizeTelegramBot(code.chatId) - } + function sessionWarning(node, warningMessage) { + let event + if (node !== undefined) { + event = { + nodeName: node.name, + nodeType: node.type, + nodeId: node.id, + warningMessage: warningMessage } + } else { + event = { + warningMessage: warningMessage + } + } + global.EVENT_SERVER_CLIENT.raiseEvent(bot.sessionKey, 'Warning', event) + + if (global.STOP_TASK_GRACEFULLY === true) { + bot.STOP_SESSION = true + if (FULL_LOG === true) { parentLogger.write(MODULE_NAME, '[IMPORTANT] sessionWarning -> Stopping the Session now. ') } } } - function initializeTelegramBot(botToken, chatId) { - /* Telegram Bot Initialization */ - try { - const Telegraf = require('telegraf') - let telegramBot - telegramBot = new Telegraf(botToken) - telegramBot.start((ctx) => ctx.reply('Hi! I am the Telegram Bot that will tell you what happens with your trading session.')) - telegramBot.help((ctx) => ctx.reply('I can stop the session if you say STOP.')) - telegramBot.hears('STOP', (ctx) => stopSession()) - telegramBot.launch() - - const Telegram = require('telegraf/telegram') - - telegramAPI = new Telegram(botToken) - - const messge = bot.SESSION.type + " '" + bot.SESSION.name + "' was started with an initial balance of " + " " + bot.VALUES_TO_USE.initialBalanceA + " " + bot.VALUES_TO_USE.baseAsset + "." - telegramAPI.sendMessage(chatId, messge).catch(err => parentLogger.write(MODULE_NAME, "[WARN] initialize -> initializeTelegramBot -> Telegram API error -> err = " + err)) - - let botInstance = { - telegramBot: telegramBot, - telegramAPI: telegramAPI, - chatId: chatId + function sessionInfo(node, infoMessage) { + let event + if (node !== undefined) { + event = { + nodeName: node.name, + nodeType: node.type, + nodeId: node.id, + infoMessage: infoMessage + } + } else { + event = { + infoMessage: infoMessage } - return botInstance - } catch (err) { - parentLogger.write(MODULE_NAME, "[WARN] initialize -> initializeTelegramBot -> err = " + err.stack); } + global.EVENT_SERVER_CLIENT.raiseEvent(bot.sessionKey, 'Info', event) - } - - function finalizeTelegramBot(chatId) { - const messge = bot.SESSION.type + " '" + bot.SESSION.name + "' was stopped." - telegramAPI.sendMessage(chatId, messge).catch(err => parentLogger.write(MODULE_NAME, "[WARN] initialize -> initializeTelegramBot -> Telegram API error -> err = " + err)) + if (global.STOP_TASK_GRACEFULLY === true) { + bot.STOP_SESSION = true + if (FULL_LOG === true) { parentLogger.write(MODULE_NAME, '[IMPORTANT] sessionInfo -> Stopping the Session now. ') } + } } } catch (err) { diff --git a/TaskServer/SocialBots.js b/TaskServer/SocialBots.js new file mode 100644 index 000000000..9ae190727 --- /dev/null +++ b/TaskServer/SocialBots.js @@ -0,0 +1,71 @@ +exports.newSocialBots = function newSocialBots(bot, logger) { + + const MODULE_NAME = 'Social Bots' + + let thisObject = { + sendMessage: sendMessage, + initialize: initialize, + finalize: finalize + } + + const TELEGRAM_BOT_MODULE = require('./TelegramBot.js') + + return thisObject + + function initialize() { + if (bot.SESSION.socialBots !== undefined) { + if (bot.SESSION.socialBots.bots !== undefined) { + for (let i = 0; i < bot.SESSION.socialBots.bots.length; i++) { + let socialBot = bot.SESSION.socialBots.bots[i] + if (socialBot.type === "Telegram Bot") { + let config = socialBot.config + socialBot.botInstance = TELEGRAM_BOT_MODULE.newTelegramBot(bot, logger) + socialBot.botInstance.initialize(config.botToken, config.chatId) + } + } + } + + function announce(text) { + if (bot.SESSION.socialBots.bots !== undefined) { + for (let i = 0; i < bot.SESSION.socialBots.bots.length; i++) { + let socialBot = bot.SESSION.socialBots.bots[i] + try { + if (socialBot.type === "Telegram Bot") { + socialBot.botInstance.telegramAPI.sendMessage(socialBot.botInstance.chatId, text).catch(err => logger.write(MODULE_NAME, "[WARN] initialize -> initializeSocialBots -> announce -> Telegram API error -> err = " + err)) + } + } catch (err) { + logger.write(MODULE_NAME, "[WARN] initialize -> announce -> err = " + err.stack); + } + } + } + } + + bot.SESSION.socialBots.announce = announce + } + } + + function finalize() { + if (bot.SESSION.socialBots === undefined) { return } + if (bot.SESSION.socialBots.bots !== undefined) { + for (let i = 0; i < bot.SESSION.socialBots.bots.length; i++) { + let socialBot = bot.SESSION.socialBots.bots[i] + if (socialBot.type === "Telegram Bot") { + socialBot.botInstance.finalize() + } + } + } + } + + function sendMessage(message) { + if (bot.SESSION.socialBots !== undefined) { + if (bot.SESSION.socialBots.bots !== undefined) { + for (let i = 0; i < bot.SESSION.socialBots.bots.length; i++) { + let socialBot = bot.SESSION.socialBots.bots[i] + if (socialBot.type === "Telegram Bot") { + socialBot.botInstance.sendMessage(message) + } + } + } + } + } +} \ No newline at end of file diff --git a/TaskServer/StatusDependencies.js b/TaskServer/StatusDependencies.js index 48b5659a9..2b3615e32 100644 --- a/TaskServer/StatusDependencies.js +++ b/TaskServer/StatusDependencies.js @@ -4,7 +4,7 @@ const LOG_FILE_CONTENT = false; const MODULE_NAME = "Status Dependencies"; - let bot = BOT + let bot = BOT let thisObject = { nodeArray: undefined, @@ -18,11 +18,7 @@ return thisObject; function initialize(callBackFunction) { - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Entering function."); } - /* Basic Valdidations */ if (bot.processNode.referenceParent.processDependencies !== undefined) { if (bot.processNode.referenceParent.processDependencies.statusDependencies !== undefined) { @@ -47,7 +43,7 @@ let statusDependency = { dependency: thisObject.nodeArray[i] } - + dependenciesToProcess.push(statusDependency) } @@ -88,9 +84,6 @@ switch (err.message) { case global.DEFAULT_OK_RESPONSE.message: { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] initialize -> onLoad -> Execution finished well. -> Status Dependency = " + JSON.stringify(statusDependency.dependency)) } - addReport(); return; } @@ -124,7 +117,7 @@ } } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> onLoad -> err = "+ err.stack); + logger.write(MODULE_NAME, "[ERROR] initialize -> onLoad -> err = " + err.stack); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } @@ -137,14 +130,14 @@ loadCount++; logger.write(MODULE_NAME, "[INFO] initialize -> addReport -> Total Added = " + loadCount); - let key = statusDependency.dependency.dataMine + "-" + statusDependency.dependency.bot + "-" + statusDependency.dependency.process + "-" + statusDependency.dependency.dataSetVersion; + let key = statusDependency.dependency.dataMine + "-" + statusDependency.dependency.bot + "-" + statusDependency.dependency.process thisObject.keys.push(key); thisObject.statusReports.set(key, statusReportModule); if (statusReportModule.mainUtility !== undefined) { thisObject.reportsByMainUtility.set(statusReportModule.mainUtility, statusReportModule) - } + } if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] initialize -> addReport -> Report added to Map. -> key = " + key); } @@ -161,7 +154,7 @@ } } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> err = "+ err.stack); + logger.write(MODULE_NAME, "[ERROR] initialize -> err = " + err.stack); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } diff --git a/TaskServer/StatusReport.js b/TaskServer/StatusReport.js index 0ae6bc288..21089be6d 100644 --- a/TaskServer/StatusReport.js +++ b/TaskServer/StatusReport.js @@ -20,10 +20,11 @@ finalize: finalize, load: load, save: save, + asyncSave: asyncSave, status: undefined }; - let statusDependencyNode; + let statusDependencyNode; /* Utilities needed. */ @@ -32,83 +33,73 @@ /* Storage account to be used here. */ const FILE_STORAGE = require('./FileStorage.js'); - let fileStorage + let fileStorage let sessionPath = '' return thisObject; function initialize(pStatusDependencyNode, callBackFunction) { - try { - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Entering function."); } - statusDependencyNode = pStatusDependencyNode; logger.fileName = MODULE_NAME + "." + statusDependencyNode.type + "." + statusDependencyNode.name + "." + statusDependencyNode.id; /* Some very basic validations that we have all the information needed. */ if (statusDependencyNode.referenceParent === undefined) { - logger.write(MODULE_NAME, "[ERROR] initialize -> Status Dependency without Reference Parent. Status Dependency = " + JSON.stringify(statusDependencyNode)); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); + validationFailed(statusDependencyNode, "Status Dependency without Reference Parent.") return } if (statusDependencyNode.referenceParent.parentNode === undefined) { - logger.write(MODULE_NAME, "[ERROR] initialize -> Status Report not attached to a Process Definition. Status Report = " + JSON.stringify(statusDependencyNode.referenceParent)); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); + validationFailed(statusDependencyNode.referenceParent, "Status Report not attached to a Process Definition.") return } - if (statusDependencyNode.referenceParent.parentNode.code.codeName === undefined) { - logger.write(MODULE_NAME, "[ERROR] initialize -> Process Definition witn no codeName defined. Process Definition = " + JSON.stringify(statusDependencyNode.referenceParent.parentNode)); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); + if (statusDependencyNode.referenceParent.parentNode.config.codeName === undefined) { + validationFailed(statusDependencyNode.referenceParent.parentNode, "Process Definition witn no codeName defined.") return } if (statusDependencyNode.referenceParent.parentNode.parentNode === undefined) { - logger.write(MODULE_NAME, "[ERROR] initialize -> Process Definition not attached to a Bot. Process Definition = " + JSON.stringify(statusDependencyNode.referenceParent.parentNode)); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); + validationFailed(statusDependencyNode.referenceParent.parentNode, "Process Definition not attached to a Bot.") return } - if (statusDependencyNode.referenceParent.parentNode.parentNode.code.codeName === undefined) { - logger.write(MODULE_NAME, "[ERROR] initialize -> Bot witn no codeName defined. Bot = " + JSON.stringify(statusDependencyNode.referenceParent.parentNode.parentNode)); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); + if (statusDependencyNode.referenceParent.parentNode.parentNode.config.codeName === undefined) { + validationFailed(statusDependencyNode.referenceParent.parentNode.parentNode, "Bot with no codeName defined.") return } if (statusDependencyNode.referenceParent.parentNode.parentNode.parentNode === undefined) { - logger.write(MODULE_NAME, "[ERROR] initialize -> Bot not attached to a Data Mine. Bot = " + JSON.stringify(statusDependencyNode.referenceParent.parentNode.parentNode)); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); + validationFailed(statusDependencyNode.referenceParent.parentNode.parentNode, "Bot not attached to a Data Mine.") return } - if (statusDependencyNode.referenceParent.parentNode.parentNode.parentNode.code.codeName === undefined) { - logger.write(MODULE_NAME, "[ERROR] initialize -> Data Mine witn no codeName defined. Data Mine = " + JSON.stringify(statusDependencyNode.referenceParent.parentNode.parentNode.parentNode)); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); + if (statusDependencyNode.referenceParent.parentNode.parentNode.parentNode.config.codeName === undefined) { + validationFailed(statusDependencyNode.referenceParent.parentNode.parentNode.parentNode, "Data Mine witn no codeName defined.") return } + function validationFailed(errorInNode, errorMessage) { + let nodeString = JSON.stringify(errorInNode) + logger.write(MODULE_NAME, "[ERROR] initialize -> " + errorMessage + ' -> nodeString = ' + nodeString) + global.PROCESS_ERROR(bot.processKey, errorInNode, errorMessage) + callBackFunction(global.DEFAULT_FAIL_RESPONSE); + } + /* Simplifying the access to basic info */ - statusDependencyNode.bot = statusDependencyNode.referenceParent.parentNode.parentNode.code.codeName - statusDependencyNode.process = statusDependencyNode.referenceParent.parentNode.code.codeName + statusDependencyNode.bot = statusDependencyNode.referenceParent.parentNode.parentNode.config.codeName + statusDependencyNode.process = statusDependencyNode.referenceParent.parentNode.config.codeName statusDependencyNode.bottype = statusDependencyNode.referenceParent.parentNode.parentNode.type - statusDependencyNode.dataMine = statusDependencyNode.referenceParent.parentNode.parentNode.parentNode.code.codeName + statusDependencyNode.dataMine = statusDependencyNode.referenceParent.parentNode.parentNode.parentNode.config.codeName /* We retrieve the report main utility */ - if (statusDependencyNode.code !== undefined) { - if (statusDependencyNode.code.mainUtility !== undefined) { - thisObject.mainUtility = statusDependencyNode.code.mainUtility + if (statusDependencyNode.config !== undefined) { + if (statusDependencyNode.config.mainUtility !== undefined) { + thisObject.mainUtility = statusDependencyNode.config.mainUtility } } - /* This stuff is still hardcoded and unresolved. */ - statusDependencyNode.botVersion = { - "major": 1, - "minor": 0 - } - statusDependencyNode.dataSetVersion = "dataSet.V1" - if (bot.SESSION !== undefined && statusDependencyNode.bottype === "Trading Bot") { sessionPath = bot.SESSION.folderName + "/" } @@ -119,51 +110,98 @@ for (let i = 0; i < network.networkNodes.length; i++) { let networkNode = network.networkNodes[i] - - if (checkThisBranch(networkNode.dataMining) === true) { return } - if (checkThisBranch(networkNode.testingEnvironment) === true) {return} - if (checkThisBranch(networkNode.productionEnvironment) === true) { return } - function checkThisBranch(branch) { - if (branch === undefined) {return} - for (let j = 0; j < branch.exchangeTasks.length; j++) { - let exchangeTasks = branch.exchangeTasks[j] - for (let k = 0; k < exchangeTasks.taskManagers.length; k++) { - let taskManager = exchangeTasks.taskManagers[k] - for (let m = 0; m < taskManager.tasks.length; m++) { - let task = taskManager.tasks[m] - if (task.bot !== undefined) { - for (let n = 0; n < task.bot.processes.length; n++) { - let process = task.bot.processes[n] - if (process.marketReference !== undefined) { - if (process.marketReference.referenceParent !== undefined) { - let market = process.marketReference.referenceParent - let currentProcessMarket = bot.processNode.marketReference.referenceParent - if (currentProcessMarket.id === market.id) { - if (process.referenceParent !== undefined) { - let processDefinition = process.referenceParent - if (processThisDependsOn.id === processDefinition.id) { - if (process.type === 'Trading Process Instance') { - if (process.session !== undefined) { - if (bot.processNode.session.id !== process.session.id) { - continue - } - } else { - continue - } - } + if (checkThisDataBranch(networkNode.dataMining) === true) { return } + if (checkThisTradingBranch(networkNode.testingEnvironment) === true) { return } + if (checkThisTradingBranch(networkNode.productionEnvironment) === true) { return } - /* We found where the task that runs the process definition this status report depends on and where it is located on the network. */ - - thisObject.networkNode = networkNode - if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Retrieving status report from " + networkNode.name + " -> host = " + networkNode.code.host + ' -> port = ' + networkNode.code.webPort + '.'); } - - fileStorage = FILE_STORAGE.newFileStorage(logger, networkNode.code.host, networkNode.code.webPort); - callBackFunction(global.DEFAULT_OK_RESPONSE); - return true + function checkThisDataBranch(branch) { + if (branch === undefined) { return } + for (let j = 0; j < branch.exchangeDataTasks.length; j++) { + let exchangeTasks = branch.exchangeDataTasks[j] + for (let p = 0; p < exchangeTasks.marketDataTasks.length; p++) { + let marketTasks = exchangeTasks.marketDataTasks[p] + if (marketTasks.referenceParent === undefined) { continue } + if (marketTasks.referenceParent.id !== global.MARKET_NODE.id) { continue } + for (let q = 0; q < marketTasks.dataMineTasks.length; q++) { + let mineTasks = marketTasks.dataMineTasks[q] + for (let k = 0; k < mineTasks.taskManagers.length; k++) { + let taskManager = mineTasks.taskManagers[k] + for (let m = 0; m < taskManager.tasks.length; m++) { + let task = taskManager.tasks[m] + if (task.bot === undefined) { continue } + for (let n = 0; n < task.bot.processes.length; n++) { + let process = task.bot.processes[n] + if (process.referenceParent === undefined) { continue } + let processDefinition = process.referenceParent + if (processThisDependsOn.id === processDefinition.id) { + if (process.type === 'Trading Process Instance') { + if (process.session !== undefined) { + if (bot.processNode.session.id !== process.session.id) { + continue } + } else { + continue } } + /* + We found where the task that runs the process definition this status report depends on + and where it is located on the network. + */ + thisObject.networkNode = networkNode + if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Retrieving status report from " + networkNode.name + " -> host = " + networkNode.config.host + ' -> port = ' + networkNode.config.webPort + '.'); } + + fileStorage = FILE_STORAGE.newFileStorage(logger, networkNode.config.host, networkNode.config.webPort); + callBackFunction(global.DEFAULT_OK_RESPONSE); + return true + } + } + } + } + } + } + } + } + + function checkThisTradingBranch(branch) { + if (branch === undefined) { return } + for (let j = 0; j < branch.exchangeTradingTasks.length; j++) { + let exchangeTasks = branch.exchangeTradingTasks[j] + for (let p = 0; p < exchangeTasks.marketTradingTasks.length; p++) { + let marketTasks = exchangeTasks.marketTradingTasks[p] + if (marketTasks.referenceParent === undefined) { continue } + if (marketTasks.referenceParent.id !== global.MARKET_NODE.id) { continue } + for (let q = 0; q < marketTasks.tradingMineTasks.length; q++) { + let mineTasks = marketTasks.tradingMineTasks[q] + for (let k = 0; k < mineTasks.taskManagers.length; k++) { + let taskManager = mineTasks.taskManagers[k] + for (let m = 0; m < taskManager.tasks.length; m++) { + let task = taskManager.tasks[m] + if (task.bot === undefined) { continue } + for (let n = 0; n < task.bot.processes.length; n++) { + let process = task.bot.processes[n] + if (process.referenceParent === undefined) { continue } + let processDefinition = process.referenceParent + if (processThisDependsOn.id === processDefinition.id) { + if (process.type === 'Trading Process Instance') { + if (process.session !== undefined) { + if (bot.processNode.session.id !== process.session.id) { + continue + } + } else { + continue + } + } + /* + We found where the task that runs the process definition this status report depends on + and where it is located on the network. + */ + thisObject.networkNode = networkNode + if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Retrieving status report from " + networkNode.name + " -> host = " + networkNode.config.host + ' -> port = ' + networkNode.config.webPort + '.'); } + + fileStorage = FILE_STORAGE.newFileStorage(logger, networkNode.config.host, networkNode.config.webPort); + callBackFunction(global.DEFAULT_OK_RESPONSE); + return true } } } @@ -183,7 +221,7 @@ callBackFunction(global.DEFAULT_FAIL_RESPONSE); } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> err = "+ err.stack); + logger.write(MODULE_NAME, "[ERROR] initialize -> err = " + err.stack); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } @@ -204,16 +242,16 @@ let fileName = "Status.Report.json"; let filePath; - let ownerId = statusDependencyNode.dataMine + "-" + statusDependencyNode.bot + "-" + statusDependencyNode.botVersion.major + "-" + statusDependencyNode.botVersion.minor + "-" + statusDependencyNode.process + "-" + statusDependencyNode.dataSetVersion; - let botId = bot.dataMine + "-" + bot.codeName + "-" + bot.version.major + "-" + bot.version.minor + "-" + bot.process + "-" + bot.dataSetVersion; + let ownerId = statusDependencyNode.dataMine + "-" + statusDependencyNode.bot + "-" + statusDependencyNode.process + let botId = bot.dataMine + "-" + bot.codeName + "-" + bot.process if (ownerId !== botId) { let rootPath = bot.exchange + "/" + bot.market.baseAsset + "-" + bot.market.quotedAsset + "/" + statusDependencyNode.dataMine + "/" + statusDependencyNode.bot - filePath = rootPath + "/Reports/" + sessionPath + statusDependencyNode.process ; + filePath = rootPath + "/Reports/" + sessionPath + statusDependencyNode.process; } else { - filePath = bot.filePathRoot + "/Reports/" + sessionPath + statusDependencyNode.process ; + filePath = bot.filePathRoot + "/Reports/" + sessionPath + statusDependencyNode.process; } filePath += '/' + fileName @@ -236,10 +274,10 @@ function onFileReceived(err, text) { - if ( err.result === global.CUSTOM_FAIL_RESPONSE.result && (err.message === 'Folder does not exist.' || err.message === 'File does not exist.') + if (err.result === global.CUSTOM_FAIL_RESPONSE.result && (err.message === 'Folder does not exist.' || err.message === 'File does not exist.') || err.code === "The specified key does not exist.") { - logger.write(MODULE_NAME, "[INFO] load -> onFileReceived -> err = "+ err.stack); + logger.write(MODULE_NAME, "[INFO] load -> onFileReceived -> err = " + err.message); /* In this case we can assume that this is the first execution ever of this bot.*/ @@ -255,7 +293,7 @@ } if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - logger.write(MODULE_NAME, "[ERROR] load -> onFileReceived -> err = "+ err.stack); + logger.write(MODULE_NAME, "[ERROR] load -> onFileReceived -> err = " + err.message); callBackFunction(err); return; } @@ -290,7 +328,7 @@ } } catch (err) { - logger.write(MODULE_NAME, "[ERROR] load -> err = "+ err.stack); + logger.write(MODULE_NAME, "[ERROR] load -> err = " + err.stack); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } @@ -301,8 +339,8 @@ if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] save -> Entering function."); } - let ownerId = statusDependencyNode.dataMine + "-" + statusDependencyNode.bot + "-" + statusDependencyNode.botVersion.major + "-" + statusDependencyNode.botVersion.minor + "-" + statusDependencyNode.process + "-" + statusDependencyNode.dataSetVersion; - let botId = bot.dataMine + "-" + bot.codeName + "-" + bot.version.major + "-" + bot.version.minor + "-" + bot.process + "-" + bot.dataSetVersion; + let ownerId = statusDependencyNode.dataMine + "-" + statusDependencyNode.bot + "-" + statusDependencyNode.process + let botId = bot.dataMine + "-" + bot.codeName + "-" + bot.process if (ownerId !== botId && statusDependencyNode.process !== "Context") { // Context is a special case where the report is created by the Context.js module itself. @@ -328,7 +366,7 @@ if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] save -> onFileCreated -> Entering function."); } if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - logger.write(MODULE_NAME, "[ERROR] save -> onFileCreated -> err = "+ err.stack); + logger.write(MODULE_NAME, "[ERROR] save -> onFileCreated -> err = " + err.stack); callBackFunction(err); return; } @@ -341,16 +379,34 @@ let processOutput = PROCESS_OUTPUT.newProcessOutput(bot, logger) - processOutput.raiseEvents(thisObject.file.lastFile, callBackFunction); + processOutput.raiseEvents(thisObject.file.lastFile, thisObject.file.timeFrames, callBackFunction); return; } } catch (err) { - logger.write(MODULE_NAME, "[ERROR] save -> err = "+ err.stack); + logger.write(MODULE_NAME, "[ERROR] save -> err = " + err.stack); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } -}; + async function asyncSave() { + + let fileName = "Status.Report.json"; + let filePath = bot.filePathRoot + "/Reports/" + sessionPath + statusDependencyNode.process; + + filePath += '/' + fileName + let fileContent = JSON.stringify(thisObject.file); + + let response = await fileStorage.asyncCreateTextFile(filePath, fileContent + '\n', true) + + if (response.err.result !== global.DEFAULT_OK_RESPONSE.result) { + throw (response.err) + } + + /* All good, lets emit the event that means data has been updated. */ + let processOutput = PROCESS_OUTPUT.newProcessOutput(bot, logger) + processOutput.asyncRaiseEvents(thisObject.file.lastFile, thisObject.file.timeFrames) + } +} diff --git a/TaskServer/TelegramBot.js b/TaskServer/TelegramBot.js new file mode 100644 index 000000000..9e2383ed1 --- /dev/null +++ b/TaskServer/TelegramBot.js @@ -0,0 +1,51 @@ +exports.newTelegramBot = function newTelegramBot(bot, logger) { + + const MODULE_NAME = 'Telegram Bot' + + let thisObject = { + telegramBot: undefined, + telegramAPI: undefined, + chatId: undefined, + sendMessage: sendMessage, + initialize: initialize, + finalize: finalize + } + + return thisObject + + function initialize(botToken, chatId) { + /* Telegram Bot Initialization */ + try { + thisObject.chatId = chatId + + const Telegraf = require('telegraf') + + thisObject.telegramBot = new Telegraf(botToken) + thisObject.telegramBot.start((ctx) => ctx.reply('Hi! I am the Telegram Bot that will tell you what happens with your trading session.')) + thisObject.telegramBot.help((ctx) => ctx.reply('I can stop the session if you type STOP.')) + thisObject.telegramBot.hears('STOP', (ctx) => bot.SESSION.stop(' by STOP command at Telegram.')) + thisObject.telegramBot.launch() + + const Telegram = require('telegraf/telegram') + + thisObject.telegramAPI = new Telegram(botToken) + + const message = "Telegram bot is starting." + thisObject.telegramAPI.sendMessage(thisObject.chatId, message).catch(err => parentLogger.write(MODULE_NAME, "[WARN] initializeTelegramBot -> Telegram API error -> err = " + err)) + + } catch (err) { + parentLogger.write(MODULE_NAME, "[WARN] initialize -> err = " + err.stack); + } + + } + + function finalize() { + const message = "Telegram bot is signing off." + thisObject.telegramAPI.sendMessage(thisObject.chatId, message).catch(err => parentLogger.write(MODULE_NAME, "[WARN] finalize -> Telegram API error -> err = " + err)) + } + + function sendMessage(message) { + thisObject.telegramAPI.sendMessage(thisObject.chatId, message).catch(err => parentLogger.write(MODULE_NAME, "[WARN] announce -> Telegram API error -> err = " + err)) + } + +} \ No newline at end of file diff --git a/TaskServer/TradingBot.js b/TaskServer/TradingBot.js index f9e713080..9d4d48ee7 100644 --- a/TaskServer/TradingBot.js +++ b/TaskServer/TradingBot.js @@ -1,1041 +1,686 @@ -exports.newTradingBot = function newTradingBot(bot, logger, UTILITIES, FILE_STORAGE) { - - const FULL_LOG = true; - const LOG_FILE_CONTENT = false; - const ONE_DAY_IN_MILISECONDS = 24 * 60 * 60 * 1000; +exports.newTradingBot = function newTradingBot(bot, parentLogger) { const MODULE_NAME = "Trading Bot"; + const FULL_LOG = true; + + const TRADING_PROCESS_MODULE = require(global.ROOT_DIR + '/LowFrequencyTrading/TradingProcess.js'); + const FILE_STORAGE = require('./FileStorage.js'); + const SESSION = require(global.ROOT_DIR + 'Session'); + + let fileStorage = FILE_STORAGE.newFileStorage(parentLogger); + let session = SESSION.newSession(bot, parentLogger) + + const DEBUG_MODULE = require(global.ROOT_DIR + 'DebugLog'); + let logger; // We need this here in order for the loopHealth function to work and be able to rescue the loop when it gets in trouble. + + let nextLoopTimeoutHandle; let thisObject = { initialize: initialize, - finalize: finalize, - start: start + run: run }; - let utilities = UTILITIES.newCloudUtilities(logger); - let fileStorage = FILE_STORAGE.newFileStorage(logger); - - const COMMONS = require('./Commons.js'); - let commons = COMMONS.newCommons(bot, logger, UTILITIES, FILE_STORAGE); - - let exchangeAPI; + let processConfig; return thisObject; - function finalize() { - thisObject = undefined - utilities = undefined - fileStorage = undefined - commons = undefined - } - - function initialize(pExchangeAPI, callBackFunction) { - + function initialize(pProcessConfig, callBackFunction) { + /* This function is exactly the same in the 3 modules representing the 2 different bot types loops. */ try { - - logger.fileName = MODULE_NAME; - logger.initialize(); - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] initialize -> Entering function."); } - - exchangeAPI = pExchangeAPI; - callBackFunction(global.DEFAULT_OK_RESPONSE); + processConfig = pProcessConfig; + if (bot.definedByUI === true) { + /* The code of the bot is defined at the UI. No need to load a file with the code. */ + session.initialize(processConfig, callBackFunction) + } } catch (err) { - logger.write(MODULE_NAME, "[ERROR] initialize -> err = " + err.stack); + parentLogger.write(MODULE_NAME, "[ERROR] initialize -> err = " + err.stack); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } - function start(multiPeriodDataFiles, timeFrame, timeFrameLabel, currentDay, interExecutionMemory, callBackFunction) { - + function run(callBackFunction) { try { + /* Some initial values*/ + let fixedTimeLoopIntervalHandle; + bot.STOP_SESSION = true; + if (FULL_LOG === true) { parentLogger.write(MODULE_NAME, '[IMPORTANT] run -> Stopping the Session now. ') } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> Entering function."); } + /* Heartbeats sent to the UI */ + bot.processHeartBeat = processHeartBeat - let chart = {} - let mainDependency = {} + loop(); - /* The first phase here is about checking that we have everything we need at the definition level. */ - let dataDependencies = bot.processNode.referenceParent.processDependencies.dataDependencies - if (commons.validateDataDependencies(dataDependencies, callBackFunction) !== true) {return} + function loop() { + try { + processHeartBeat(undefined, undefined, "Running...") + function pad(str, max) { + str = str.toString(); + return str.length < max ? pad(" " + str, max) : str; + } - let outputDatasets = bot.processNode.referenceParent.processOutput.outputDatasets - if (commons.validateOutputDatasets(outputDatasets, callBackFunction) !== true) { return } + /* For each loop we want to create a new log file. */ + if (logger !== undefined) { + logger.finalize() + } + logger = DEBUG_MODULE.newDebugLog(); + global.LOGGER_MAP.set(MODULE_NAME, logger) + logger.bot = bot; + logger.initialize(); - /* The second phase is about transforming the inputs into a format that can be used to apply the user defined code. */ - for (let j = 0; j < global.marketFilesPeriods.length; j++) { + bot.loopCounter++; + bot.loopStartTime = new Date().valueOf(); - let timeFrameLabel = marketFilesPeriods[j][1] - let dataFiles = multiPeriodDataFiles.get(timeFrameLabel) - let products = {} + let nextWaitTime; - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> Inflating Data Files for timeFrame = " + timeFrameLabel); } + /* We tell the UI that we are running. */ + processHeartBeat(undefined, undefined, "Running...") - if (dataFiles !== undefined) { - commons.inflateDatafiles(dataFiles, dataDependencies, products, mainDependency, timeFrame) + /* We define here all the modules that the rest of the infraestructure, including the bots themselves can consume. */ + const UTILITIES = require(global.ROOT_DIR + 'CloudUtilities'); + const STATUS_REPORT = require(global.ROOT_DIR + 'StatusReport'); + const STATUS_DEPENDENCIES = require(global.ROOT_DIR + 'StatusDependencies'); + const DATA_DEPENDENCIES = require(global.ROOT_DIR + 'DataDependencies'); + const DATA_SET = require(global.ROOT_DIR + 'DataSet'); + const PROCESS_EXECUTION_EVENTS = require(global.ROOT_DIR + 'ProcessExecutionEvents'); + const PROCESS_OUTPUT = require(global.ROOT_DIR + 'ProcessOutput'); - let propertyName = 'at' + timeFrameLabel.replace('-', ''); - chart[propertyName] = products + /* We define the datetime for the process that we are running now. This will be the official processing time for both the infraestructure and the bot. */ + bot.processDatetime = new Date(); // This will be considered the process date and time, so as to have it consistenly all over the execution. + + /* High level log entry */ + console.log(new Date().toISOString() + " " + pad(bot.exchange, 20) + " " + pad(bot.market.baseAsset + '/' + bot.market.quotedAsset, 10) + " " + pad(bot.codeName, 30) + " " + pad(bot.process, 30) + + " Main Loop # " + pad(Number(bot.loopCounter), 8) + " " + bot.processNode.session.type + " " + bot.processNode.session.name) + + /* Checking if we need to need to emit any event */ + if (bot.SESSION_STATUS === 'Idle' && bot.STOP_SESSION === false) { + bot.SESSION_STATUS = 'Running' + } + + if (bot.SESSION_STATUS === 'Running' && bot.STOP_SESSION === true) { + bot.SESSION_STATUS = 'Stopped' + } + + global.EMIT_SESSION_STATUS (bot.SESSION_STATUS, bot.sessionKey) + + /* Checking if we should process this loop or not.*/ + if (bot.STOP_SESSION === true) { + + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> Waiting for " + bot.processNode.session.type + " " + bot.processNode.session.name + " to be ran."); } + + console.log(new Date().toISOString() + " " + pad(bot.codeName, 20) + " " + pad(bot.process, 30) + + " Waiting for " + bot.processNode.session.type + " " + bot.processNode.session.name + " to be ran. "); + + nextWaitTime = 'Waiting for Session'; + loopControl(nextWaitTime); + return + } + + /* We will prepare first the infraestructure needed for the bot to run. There are 3 modules we need to sucessfullly initialize first. */ + + let processExecutionEvents + let userBot; + let processFramework; + let statusDependencies; + let dataDependencies; + + initializeProcessExecutionEvents(); + + function initializeProcessExecutionEvents() { + try { + processExecutionEvents = PROCESS_EXECUTION_EVENTS.newProcessExecutionEvents(bot, logger) + processExecutionEvents.initialize(processConfig, onInizialized); + + function onInizialized(err) { + try { + switch (err.result) { + case global.DEFAULT_OK_RESPONSE.result: { + logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Execution finished well."); + startProcessExecutionEvents() + return; + } + case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. + logger.write(MODULE_NAME, "[WARN] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Retry Later. Requesting Execution Retry."); + nextWaitTime = 'Retry'; + loopControl(nextWaitTime); + return; + } + case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Operation Failed. Aborting the process."); + global.unexpectedError = err.message + processStopped() + return + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Unhandled err.result received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + + function startProcessExecutionEvents() { + try { + processExecutionEvents.start(onStarted); + + function onStarted(err) { + try { + switch (err.result) { + case global.DEFAULT_OK_RESPONSE.result: { + logger.write(MODULE_NAME, "[INFO] run -> loop -> startProcessExecutionEvents -> onStarted -> Execution finished well."); + + if (global.STOP_TASK_GRACEFULLY === true) { + loopControl() + return + } + + initializeStatusDependencies(); + return; + } + case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. + logger.write(MODULE_NAME, "[WARN] run -> loop -> startProcessExecutionEvents -> onStarted -> Retry Later. Requesting Execution Retry."); + nextWaitTime = 'Retry'; + loopControl(nextWaitTime); + return; + } + case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> Operation Failed. Aborting the process."); + global.unexpectedError = err.message + processStopped() + return + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> Unhandled err.result received. -> err.result = " + err.result); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> Unhandled err.result received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + + function initializeStatusDependencies() { + try { + statusDependencies = STATUS_DEPENDENCIES.newStatusDependencies(bot, logger, STATUS_REPORT, UTILITIES, PROCESS_OUTPUT); + statusDependencies.initialize(onInizialized); + + function onInizialized(err) { + try { + switch (err.result) { + case global.DEFAULT_OK_RESPONSE.result: { + logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeStatusDependencies -> onInizialized -> Execution finished well."); + initializeDataDependencies(); + return; + } + case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. + logger.write(MODULE_NAME, "[WARN] run -> loop -> initializeStatusDependencies -> onInizialized -> Retry Later. Requesting Execution Retry."); + nextWaitTime = 'Retry'; + loopControl(nextWaitTime); + return; + } + case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> Operation Failed. Aborting the process."); + global.unexpectedError = err.message + processStopped() + return + return; + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> Unhandled err.result received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + + function initializeDataDependencies() { + try { + dataDependencies = DATA_DEPENDENCIES.newDataDependencies(bot, logger, DATA_SET); + dataDependencies.initialize(onInizialized); + + function onInizialized(err) { + try { + switch (err.result) { + case global.DEFAULT_OK_RESPONSE.result: { + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeDataDependencies -> onInizialized -> Execution finished well."); } + switch (processConfig.framework.name) { + case 'Low-Frequency-Trading-Process': { + processFramework = TRADING_PROCESS_MODULE.newTradingProcess(bot, logger, UTILITIES); + intitializeProcessFramework(); + break; + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> Process Framework not Supported."); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> Process Framework Name = " + processConfig.framework.name); + global.unexpectedError = err.message + processStopped() + return + } + } + return; + } + case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. + logger.write(MODULE_NAME, "[WARN] run -> loop -> initializeDataDependencies -> onInizialized -> Retry Later. Requesting Execution Retry."); + nextWaitTime = 'Retry'; + loopControl(nextWaitTime); + return; + } + case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> Operation Failed. Aborting the process."); + global.unexpectedError = err.message + processStopped() + return + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> Unhandled err.result received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + + function intitializeProcessFramework() { + try { + processFramework.initialize(processConfig, statusDependencies, dataDependencies, onInizialized); + + function onInizialized(err) { + try { + switch (err.result) { + case global.DEFAULT_OK_RESPONSE.result: { + logger.write(MODULE_NAME, "[INFO] run -> loop -> intitializeProcessFramework -> onInizialized -> Execution finished well."); + startProcessFramework(); + return; + } + case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. + logger.write(MODULE_NAME, "[WARN] run -> loop -> intitializeProcessFramework -> onInizialized -> Retry Later. Requesting Execution Retry."); + nextWaitTime = 'Retry'; + loopControl(nextWaitTime); + return; + } + case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. + logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized -> Operation Failed. Aborting the process."); + global.unexpectedError = err.message + processStopped() + return + } + case global.CUSTOM_OK_RESPONSE.result: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized > Unhandled custom response received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized -> Unhandled err.result received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + + function startProcessFramework() { + try { + processFramework.start(onFinished); + + function onFinished(err) { + try { + processFramework.finalize() + processFramework = undefined + dataDependencies.finalize() + dataDependencies = undefined + statusDependencies.finalize() + statusDependencies = undefined + + switch (err.result) { + case global.DEFAULT_OK_RESPONSE.result: { + logger.write(MODULE_NAME, "[INFO] run -> loop -> startProcessFramework -> onFinished -> Execution finished well."); + nextWaitTime = 'Normal'; + finishProcessExecutionEvents() + return; + } + case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. + logger.write(MODULE_NAME, "[WARN] run -> loop -> startProcessFramework -> onFinished -> Retry Later. Requesting Execution Retry."); + nextWaitTime = 'Retry'; + loopControl(nextWaitTime); + return; + } + case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> Operation Failed. Aborting the process."); + global.unexpectedError = err.message + processStopped() + return + } + case global.CUSTOM_OK_RESPONSE.result: { + + switch (err.message) { + case "Dependency does not exist.": { + logger.write(MODULE_NAME, "[WARN] run -> loop -> startProcessFramework -> onFinished -> Dependency does not exist. This Loop will go to sleep."); + nextWaitTime = 'Sleep'; + loopControl(nextWaitTime); + return; + } + case "Dependency not ready.": { + logger.write(MODULE_NAME, "[WARN] run -> loop -> startProcessFramework -> onFinished -> Dependency not ready. This Loop will go to sleep."); + nextWaitTime = 'Sleep'; + loopControl(nextWaitTime); + return; + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> Unhandled custom response received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> Unhandled err.result received. -> err.result = " + err.result); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> Unhandled err.result received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + + function finishProcessExecutionEvents() { + try { + processExecutionEvents.finish(onFinished); + + function onFinished(err) { + try { + processExecutionEvents.finalize() + processExecutionEvents = undefined + + switch (err.result) { + case global.DEFAULT_OK_RESPONSE.result: { + logger.write(MODULE_NAME, "[INFO] run -> loop -> finishProcessExecutionEvents -> onFinished -> Execution finished well."); + nextWaitTime = 'Normal'; + loopControl(nextWaitTime); + return; + } + case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. + logger.write(MODULE_NAME, "[WARN] run -> loop -> finishProcessExecutionEvents -> onFinished -> Retry Later. Requesting Execution Retry."); + nextWaitTime = 'Retry'; + loopControl(nextWaitTime); + return; + } + case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. + logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> Operation Failed. Aborting the process."); + global.unexpectedError = err.message + processStopped() + return + } + default: { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> Unhandled err.result received. -> err.result = " + err.result); + logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> Unhandled err.result received. -> err = " + err.message); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + + function loopControl(nextWaitTime) { + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> nextWaitTime = " + nextWaitTime); } + + /* We show we reached the end of the loop. */ + processHeartBeat(undefined, undefined, "Running...") + + /* Here we check if we must stop the loop gracefully. */ + shallWeStop(onStop, onContinue); + + function onStop() { + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> onStop -> Stopping the Loop Gracefully. See you next time!"); } + + if (global.WRITE_LOGS_TO_FILES === 'true') { + logger.persist(); + } + + global.EVENT_SERVER_CLIENT.raiseEvent(bot.sessionKey, 'Stopped') + processStopped() + return; + } + + function onContinue() { + /* Indicator bots are going to be executed after a configured period of time after the last execution ended. This is to avoid overlapping executions. */ + switch (nextWaitTime) { + case 'Waiting for Session': { + let waitTime = processConfig.sessionRunWaitTime + nextLoopTimeoutHandle = setTimeout(loop, waitTime); + let waitingTime = waitTime / 1000 / 60 + let label = 'minute/s' + if (waitingTime < 1) { + waitingTime = waitTime / 1000 + label = 'seconds' + } + processHeartBeat(undefined, undefined, "Waiting " + waitingTime + " " + label + " for " + bot.processNode.session.type + " " + bot.processNode.session.name + " to be ran. ") + logger.persist(); + } + break + case 'Normal': { + let waitTime + if (processConfig.waitsForExecutionFinishedEvent === true) { + waitTime = 0 + } else { + switch (bot.SESSION.type) { + case 'Live Trading Session': { + waitTime = bot.SESSION.parameters.timeFrame.config.value + break + } + case 'Fordward Tessting Session': { + waitTime = bot.SESSION.parameters.timeFrame.config.value + break + } + case 'Paper Trading Session': { + waitTime = bot.SESSION.parameters.timeFrame.config.value + break + } + case 'Backtesting Session': { + waitTime = 0 + break + } + } + } + + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (waitTime / 1000 / 60) + " minute/s."); } + nextLoopTimeoutHandle = setTimeout(loop, waitTime); + let waitingTime = waitTime / 1000 / 60 + let label = 'minute/s' + if (waitingTime < 1) { + waitingTime = waitTime / 1000 + label = 'seconds' + } + processHeartBeat(undefined, undefined, "Waiting " + waitingTime + " " + label + " for next execution.") + logger.persist(); + } + break; + case 'Retry': { + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (processConfig.retryWaitTime / 1000) + " seconds."); } + nextLoopTimeoutHandle = setTimeout(loop, processConfig.retryWaitTime); + processHeartBeat(undefined, undefined, "Trying to recover from some problem. Waiting " + processConfig.retryWaitTime / 1000 + " seconds for next execution.") + logger.persist(); + } + break; + case 'Sleep': { + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (processConfig.sleepWaitTime / 60000) + " minutes."); } + nextLoopTimeoutHandle = setTimeout(loop, processConfig.sleepWaitTime); + processHeartBeat(undefined, undefined, "Waiting " + processConfig.sleepWaitTime / 60000 + " minutes for next execution.") + logger.persist(); + } + break; + case 'Coma': { + if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (processConfig.comaWaitTime / 3600000) + " hours."); } + nextLoopTimeoutHandle = setTimeout(loop, processConfig.comaWaitTime); + processHeartBeat(undefined, undefined, "Waiting " + processConfig.comaWaitTime / 3600000 + " hours for next execution.") + logger.persist(); + } + break; + } + } + } + + function shallWeStop(stopCallBack, continueCallBack) { + try { + /* IMPORTANT: This function is exactly the same on the 3 modules. */ + if (!global.STOP_TASK_GRACEFULLY) { + continueCallBack(); + } else { + stopCallBack(); + } + } catch (err) { + logger.write(MODULE_NAME, "[ERROR] run -> loop -> shallWeStop -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return + } + } + + } catch (err) { + parentLogger.write(MODULE_NAME, "[ERROR] run -> loop -> err = " + err.stack); + global.unexpectedError = err.message + processStopped() + return } } - for (let j = 0; j < global.dailyFilePeriods.length; j++) { - - let timeFrameLabel = global.dailyFilePeriods[j][1] - let dataFiles = multiPeriodDataFiles.get(timeFrameLabel) - let products = {} - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> Inflating Data Files for timeFrame = " + timeFrameLabel); } - - if (dataFiles !== undefined) { - commons.inflateDatafiles(dataFiles, dataDependencies, products, mainDependency, timeFrame) - - let propertyName = 'at' + timeFrameLabel.replace('-', ''); - chart[propertyName] = products + function processHeartBeat(processingDate, percentage, status) { + let event = { + seconds: (new Date()).getSeconds(), + processingDate: processingDate, + percentage: percentage, + status: status } + global.EVENT_SERVER_CLIENT.raiseEvent(bot.processKey, 'Heartbeat', event) } - /* Single Files */ - - let dataFiles = multiPeriodDataFiles.get('Single Files') - let products = {} - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> Inflating Data Files from Single Files."); } - - if (dataFiles !== undefined) { - commons.inflateDatafiles(dataFiles, dataDependencies, products, mainDependency, timeFrame) - - let propertyName = 'atAnyTimeFrame'; - chart[propertyName] = products - } - - /* Simulation */ - - const TRADING_SIMULATION = require('./TradingSimulation.js'); - let tradingSimulation = TRADING_SIMULATION.newTradingSimulation(bot, logger, UTILITIES); - - let market = bot.market; - - const SIMULATED_RECORDS_FOLDER_NAME = "Trading-Simulation"; - const CONDITIONS_FOLDER_NAME = "Simulation-Conditions"; - const STRATEGIES_FOLDER_NAME = "Simulation-Strategies"; - const TRADES_FOLDER_NAME = "Simulation-Trades"; - const SNAPSHOTS_FOLDER_NAME = "Snapshots"; - - const ONE_DAY_IN_MILISECONDS = 24 * 60 * 60 * 1000; - - let recordsArray - let conditionsArray - let strategiesArray - let tradesArray - - let snapshotHeaders - let triggerOnSnapshot - let takePositionSnapshot - - let tradingSystem = {}; - - tradingSimulation.runSimulation( - chart, - dataDependencies, - timeFrame, - timeFrameLabel, - currentDay, - interExecutionMemory, - exchangeAPI, - writeFiles, - callBackFunction) - - function writeFiles(pTradingSystem, pRecordsArray, pConditionsArray, pStrategiesArray, pTradesArray, pSnapshotHeaders, pTriggerOnSnapshot, pTakePositionSnapshot) { - - tradingSystem = pTradingSystem - recordsArray = pRecordsArray - conditionsArray = pConditionsArray - strategiesArray = pStrategiesArray - tradesArray = pTradesArray - - snapshotHeaders = pSnapshotHeaders - triggerOnSnapshot = pTriggerOnSnapshot - takePositionSnapshot = pTakePositionSnapshot - - if (timeFrame > global.dailyFilePeriods[0][0]) { - writeMarketFiles() + function processStopped() { + if (global.unexpectedError !== undefined) { + global.PROCESS_ERROR(bot.processKey, undefined, "An unexpected error caused the Process to stop.") } else { - writeDailyFiles() + global.EVENT_SERVER_CLIENT.raiseEvent(bot.processKey, 'Stopped') } - - } - - function writeMarketFiles() { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDailyFiles -> Entering function."); } - - writeRecordsFile(); - - function writeRecordsFile() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeMarketFiles -> writeRecordsFile -> Entering function."); } - - let separator = ""; - let fileRecordCounter = 0; - - let fileContent = ""; - - for (let i = 0; i < recordsArray.length; i++) { - - let record = recordsArray[i]; - - fileContent = fileContent + separator + '[' + - record.begin + "," + - record.end + "," + - record.type + "," + - record.marketRate + "," + - record.amount + "," + - record.balanceA + "," + - record.balanceB + "," + - record.profit + "," + - record.lastTradeProfitLoss + "," + - record.stopLoss + "," + - record.roundtrips + "," + - record.hits + "," + - record.fails + "," + - record.hitRatio + "," + - record.ROI + "," + - record.periods + "," + - record.days + "," + - record.anualizedRateOfReturn + "," + - record.positionRate + "," + - record.lastTradeROI + "," + - record.strategy + "," + - record.strategyStageNumber + "," + - record.takeProfit + "," + - record.stopLossPhase + "," + - record.takeProfitPhase + "," + - JSON.stringify(record.executionRecord) + "," + - record.positionSize + "," + - record.initialBalanceA + "," + - record.minimumBalanceA + "," + - record.maximumBalanceA + "," + - record.initialBalanceB + "," + - record.minimumBalanceB + "," + - record.maximumBalanceB + "," + - record.baseAsset + "," + - record.quotedAsset + "," + - record.marketBaseAsset + "," + - record.marketQuotedAsset + "," + - record.positionPeriods + "," + - record.positionDays + "," + - record.distanceToLastTriggerOn + "," + - record.distanceToLastTriggerOff + "," + - record.distanceToLastTakePosition + "," + - record.distanceToLastClosePosition + "]"; - - if (separator === "") { separator = ","; } - - fileRecordCounter++; - - } - - fileContent = "[" + fileContent + "]"; - - let fileName = 'Data.json'; - let filePath = bot.filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + SIMULATED_RECORDS_FOLDER_NAME + "/" + "Multi-Period-Market" + "/" + timeFrameLabel; - filePath += '/' + fileName - - fileStorage.createTextFile(filePath, fileContent + '\n', onFileCreated); - - function onFileCreated(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeMarketFiles -> writeRecordsFile -> onFileCreated -> Entering function."); } - if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, "[INFO] start -> writeMarketFiles -> writeRecordsFile -> onFileCreated -> fileContent = " + fileContent); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeRecordsFile -> onFileCreated -> err = " + err.stack); - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeRecordsFile -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeRecordsFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); - - callBackFunction(err); - return; - - } - - writeConditionsFile(); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeRecordsFile -> onFileCreated -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeRecordsFile -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function writeConditionsFile() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeMarketFiles -> writeConditionsFile -> Entering function."); } - - let separator = ""; - let fileRecordCounter = 0; - - let fileContent = ""; - - for (let i = 0; i < conditionsArray.length; i++) { - - let record = conditionsArray[i]; - - let conditions = ""; - let conditionsSeparator = ""; - - for (let j = 0; j < record.length - 3; j++) { - conditions = conditions + conditionsSeparator + record[j]; - if (conditionsSeparator === "") { conditionsSeparator = ","; } - } - - conditions = conditions + conditionsSeparator + '[' + record[record.length - 3] + ']'; // The last item contains an Array of condition values. - conditions = conditions + conditionsSeparator + '[' + record[record.length - 2] + ']'; // The last item contains an Array of formulaErrors. - conditions = conditions + conditionsSeparator + '[' + record[record.length - 1] + ']'; // The last item contains an Array of formulaValues. - - fileContent = fileContent + separator + '[' + conditions + ']'; - - if (separator === "") { separator = ","; } - - fileRecordCounter++; - - } - - fileContent = "[" + fileContent + "]"; - fileContent = "[" + JSON.stringify(tradingSystem) + "," + fileContent + "]"; - - let fileName = 'Data.json'; - let filePath = bot.filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + CONDITIONS_FOLDER_NAME + "/" + "Multi-Period-Market" + "/" + timeFrameLabel; - filePath += '/' + fileName - - fileStorage.createTextFile(filePath, fileContent + '\n', onFileCreated); - - function onFileCreated(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeMarketFiles -> writeConditionsFile -> onFileCreated -> Entering function."); } - if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, "[INFO] start -> writeMarketFiles -> writeConditionsFile -> onFileCreated -> fileContent = " + fileContent); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeConditionsFile -> onFileCreated -> err = " + err.stack); - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeConditionsFile -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeConditionsFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); - - callBackFunction(err); - return; - - } - - writeStrategiesFile(); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeConditionsFile -> onFileCreated -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeConditionsFile -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function writeStrategiesFile() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeMarketFiles -> writeStrategiesFile -> Entering function."); } - - let separator = ""; - let fileRecordCounter = 0; - - let fileContent = ""; - - for (let i = 0; i < strategiesArray.length; i++) { - let record = strategiesArray[i]; - - fileContent = fileContent + separator + '[' + - record.begin + "," + - record.end + "," + - record.status + "," + - record.number + "," + - record.beginRate + "," + - record.endRate + "," + - '"' + record.triggerOnSituation + '"' + "," + - '"' + record.name + '"' + "]"; - - if (separator === "") { separator = ","; } - - fileRecordCounter++; - - } - - fileContent = "[" + fileContent + "]"; - - let fileName = 'Data.json'; - let filePath = bot.filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + STRATEGIES_FOLDER_NAME + "/" + "Multi-Period-Market" + "/" + timeFrameLabel; - filePath += '/' + fileName - - fileStorage.createTextFile(filePath, fileContent + '\n', onFileCreated); - - function onFileCreated(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeMarketFiles -> writeStrategiesFile -> onFileCreated -> Entering function."); } - if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, "[INFO] start -> writeMarketFiles -> writeStrategiesFile -> onFileCreated -> fileContent = " + fileContent); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeStrategiesFile -> onFileCreated -> err = " + err.stack); - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeStrategiesFile -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeStrategiesFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); - - callBackFunction(err); - return; - - } - - writeTradesFile(); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeStrategiesFile -> onFileCreated -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeStrategiesFile -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function writeTradesFile() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeMarketFiles -> writeTradesFile -> Entering function."); } - - let separator = ""; - let fileRecordCounter = 0; - - let fileContent = ""; - - for (let i = 0; i < tradesArray.length; i++) { - - let record = tradesArray[i]; - if (record.stopRate === undefined) { record.stopRate = 0 } - - fileContent = fileContent + separator + '[' + - record.begin + "," + - record.end + "," + - record.status + "," + - record.lastTradeROI + "," + - record.beginRate + "," + - record.endRate + "," + - record.exitType + "," + - '"' + record.takePositionSituation + '"' + "]"; - - if (separator === "") { separator = ","; } - - fileRecordCounter++; - - } - - fileContent = "[" + fileContent + "]"; - - let fileName = 'Data.json'; - let filePath = bot.filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + TRADES_FOLDER_NAME + "/" + "Multi-Period-Market" + "/" + timeFrameLabel; - filePath += '/' + fileName - - fileStorage.createTextFile(filePath, fileContent + '\n', onFileCreated); - - function onFileCreated(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeMarketFiles -> writeTradesFile -> onFileCreated -> Entering function."); } - if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, "[INFO] start -> writeMarketFiles -> writeTradesFile -> onFileCreated -> fileContent = " + fileContent); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeTradesFile -> onFileCreated -> err = " + err.stack); - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeTradesFile -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeTradesFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); - - callBackFunction(err); - return; - - } - - writeSnapshotFiles(); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeTradesFile -> onFileCreated -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeTradesFile -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function writeSnapshotFiles() { - - writeSnapshotFile(triggerOnSnapshot, 'Trigger-On', onFinish) - - function onFinish() { - writeSnapshotFile(takePositionSnapshot, 'Take-Position', callBackFunction) - } - - } - - function writeSnapshotFile(snapshotArray, pFileName, callBack) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeMarketFiles -> writeSnapshotFile -> Entering function."); } - - let fileRecordCounter = 0; - - let fileContent = ""; - let separator = "\r\n"; - - parseRecord(snapshotHeaders) - - for (let i = 0; i < snapshotArray.length; i++) { - let record = snapshotArray[i]; - parseRecord(record) - fileRecordCounter++; - } - - function parseRecord(record) { - for (let j = 0; j < record.length; j++) { - let property = record[j] - - fileContent = fileContent + '' + property - if (j !== record.length - 1) { - fileContent = fileContent + "," - } - } - fileContent = fileContent + separator - - } - - fileContent = "" + fileContent + ""; - - let fileName = pFileName + '.csv'; - let filePath = bot.filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + SNAPSHOTS_FOLDER_NAME + "/" + "Multi-Period-Market" + "/" + timeFrameLabel; - filePath += '/' + fileName - - fileStorage.createTextFile(filePath, fileContent + '\n', onFileCreated); - - function onFileCreated(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeMarketFiles -> writeSnapshotFile -> onFileCreated -> Entering function."); } - if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, "[INFO] start -> writeMarketFiles -> writeSnapshotFile -> onFileCreated -> fileContent = " + fileContent); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeSnapshotFile -> onFileCreated -> err = " + err.stack); - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeSnapshotFile -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeSnapshotFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); - - callBackFunction(err); - return; - - } - - callBack(global.DEFAULT_OK_RESPONSE); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeSnapshotFile -> onFileCreated -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeSnapshotFile -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - } - - function writeDailyFiles() { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDailyFiles -> Entering function."); } - - writeRecordsFile(); - - function writeRecordsFile() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDailyFiles -> writeRecordsFile -> Entering function."); } - - let separator = ""; - let fileRecordCounter = 0; - - let fileContent = ""; - - for (let i = 0; i < recordsArray.length; i++) { - - let record = recordsArray[i]; - - /* Will only add to the file the records of the current day */ - - if (record.begin < currentDay.valueOf()) { continue; } - - fileContent = fileContent + separator + '[' + - record.begin + "," + - record.end + "," + - record.type + "," + - record.marketRate + "," + - record.amount + "," + - record.balanceA + "," + - record.balanceB + "," + - record.profit + "," + - record.lastTradeProfitLoss + "," + - record.stopLoss + "," + - record.roundtrips + "," + - record.hits + "," + - record.fails + "," + - record.hitRatio + "," + - record.ROI + "," + - record.periods + "," + - record.days + "," + - record.anualizedRateOfReturn + "," + - record.positionRate + "," + - record.lastTradeROI + "," + - record.strategy + "," + - record.strategyStageNumber + "," + - record.takeProfit + "," + - record.stopLossPhase + "," + - record.takeProfitPhase + "," + - JSON.stringify(record.executionRecord) + "," + - record.positionSize + "," + - record.initialBalanceA + "," + - record.minimumBalanceA + "," + - record.maximumBalanceA + "," + - record.initialBalanceB + "," + - record.minimumBalanceB + "," + - record.maximumBalanceB + "," + - record.baseAsset + "," + - record.quotedAsset + "," + - record.marketBaseAsset + "," + - record.marketQuotedAsset + "," + - record.positionPeriods + "," + - record.positionDays + "," + - record.distanceToLastTriggerOn + "," + - record.distanceToLastTriggerOff + "," + - record.distanceToLastTakePosition + "," + - record.distanceToLastClosePosition + "]"; - - if (separator === "") { separator = ","; } - - fileRecordCounter++; - - } - - fileContent = "[" + fileContent + "]"; - - let dateForPath = currentDay.getUTCFullYear() + '/' + utilities.pad(currentDay.getUTCMonth() + 1, 2) + '/' + utilities.pad(currentDay.getUTCDate(), 2); - let fileName = 'Data.json'; - let filePath = bot.filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + SIMULATED_RECORDS_FOLDER_NAME + "/" + "Multi-Period-Daily" + "/" + timeFrameLabel + "/" + dateForPath; - filePath += '/' + fileName - - fileStorage.createTextFile(filePath, fileContent + '\n', onFileCreated); - - function onFileCreated(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDailyFiles -> writeRecordsFile -> onFileCreated -> Entering function."); } - if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDailyFiles -> writeRecordsFile -> onFileCreated -> fileContent = " + fileContent); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeRecordsFile -> onFileCreated -> err = " + err.stack); - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeRecordsFile -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeRecordsFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); - - callBackFunction(err); - return; - - } - - writeConditionsFile(); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeRecordsFile -> onFileCreated -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeRecordsFile -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function writeConditionsFile() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDailyFiles -> writeConditionsFile -> Entering function."); } - - let separator = ""; - let fileRecordCounter = 0; - - let fileContent = ""; - - for (let i = 0; i < conditionsArray.length; i++) { - - let record = conditionsArray[i]; - - /* Will only add to the file the records of the current day */ - - if (record.begin < currentDay.valueOf()) { continue; } - - let conditions = ""; - let conditionsSeparator = ""; - - /* Will only add to the file the records of the current day */ - - if (record.begin < currentDay.valueOf()) { continue; } - - for (let j = 0; j < record.length - 3; j++) { - conditions = conditions + conditionsSeparator + record[j]; - if (conditionsSeparator === "") { conditionsSeparator = ","; } - } - - conditions = conditions + conditionsSeparator + '[' + record[record.length - 3] + ']'; // The last item contains an Array of condition values. - conditions = conditions + conditionsSeparator + '[' + record[record.length - 2] + ']'; // The last item contains an Array of formulaErrors. - conditions = conditions + conditionsSeparator + '[' + record[record.length - 1] + ']'; // The last item contains an Array of formulaValues. - - fileContent = fileContent + separator + '[' + conditions + ']'; - - if (separator === "") { separator = ","; } - - fileRecordCounter++; - - } - - fileContent = "[" + fileContent + "]"; - fileContent = "[" + JSON.stringify(tradingSystem) + "," + fileContent + "]"; - - let dateForPath = currentDay.getUTCFullYear() + '/' + utilities.pad(currentDay.getUTCMonth() + 1, 2) + '/' + utilities.pad(currentDay.getUTCDate(), 2); - let fileName = 'Data.json'; - let filePath = bot.filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + CONDITIONS_FOLDER_NAME + "/" + "Multi-Period-Daily" + "/" + timeFrameLabel + "/" + dateForPath; - filePath += '/' + fileName - - fileStorage.createTextFile(filePath, fileContent + '\n', onFileCreated); - - function onFileCreated(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDailyFiles -> writeConditionsFile -> onFileCreated -> Entering function."); } - if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDailyFiles -> writeConditionsFile -> onFileCreated -> fileContent = " + fileContent); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeConditionsFile -> onFileCreated -> err = " + err.stack); - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeConditionsFile -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeConditionsFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); - - callBackFunction(err); - return; - - } - - writeStrategiesFile(); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeConditionsFile -> onFileCreated -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeConditionsFile -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function writeStrategiesFile() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDailyFiles -> writeStrategiesFile -> Entering function."); } - - let separator = ""; - let fileRecordCounter = 0; - - let fileContent = ""; - - for (let i = 0; i < strategiesArray.length; i++) { - let record = strategiesArray[i]; - - /* Will only add to the file the records of the current day. In this case since objects can span more than one day, we add all of the objects that ends - at the current date. */ - - if (record.end < currentDay.valueOf()) { continue; } - - fileContent = fileContent + separator + '[' + - record.begin + "," + - record.end + "," + - record.status + "," + - record.number + "," + - record.beginRate + "," + - record.endRate + "," + - '"' + record.triggerOnSituation + '"' + "," + - '"' + record.name + '"' + "]"; - - if (separator === "") { separator = ","; } - - fileRecordCounter++; - - } - - fileContent = "[" + fileContent + "]"; - - let dateForPath = currentDay.getUTCFullYear() + '/' + utilities.pad(currentDay.getUTCMonth() + 1, 2) + '/' + utilities.pad(currentDay.getUTCDate(), 2); - let fileName = 'Data.json'; - let filePath = bot.filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + STRATEGIES_FOLDER_NAME + "/" + "Multi-Period-Daily" + "/" + timeFrameLabel + "/" + dateForPath; - filePath += '/' + fileName - - fileStorage.createTextFile(filePath, fileContent + '\n', onFileCreated); - - function onFileCreated(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDailyFiles -> writeStrategiesFile -> onFileCreated -> Entering function."); } - if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDailyFiles -> writeStrategiesFile -> onFileCreated -> fileContent = " + fileContent); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeStrategiesFile -> onFileCreated -> err = " + err.stack); - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeStrategiesFile -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeStrategiesFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); - - callBackFunction(err); - return; - - } - - writeTradesFile(); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeStrategiesFile -> onFileCreated -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeStrategiesFile -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function writeTradesFile() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDailyFiles -> writeTradesFile -> Entering function."); } - - let separator = ""; - let fileRecordCounter = 0; - - let fileContent = ""; - - for (let i = 0; i < tradesArray.length; i++) { - - let record = tradesArray[i]; - - /* Will only add to the file the records of the current day. In this case since objects can span more than one day, we add all of the objects that ends - at the current date. */ - - if (record.end < currentDay.valueOf()) { continue; } - if (record.stopRate === undefined) { record.stopRate = 0 } - - fileContent = fileContent + separator + '[' + - record.begin + "," + - record.end + "," + - record.status + "," + - record.lastTradeROI + "," + - record.beginRate + "," + - record.endRate + "," + - record.exitType + "," + - '"' + record.takePositionSituation + '"' + "]"; - - if (separator === "") { separator = ","; } - - fileRecordCounter++; - - } - - fileContent = "[" + fileContent + "]"; - - let dateForPath = currentDay.getUTCFullYear() + '/' + utilities.pad(currentDay.getUTCMonth() + 1, 2) + '/' + utilities.pad(currentDay.getUTCDate(), 2); - let fileName = 'Data.json'; - let filePath = bot.filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + TRADES_FOLDER_NAME + "/" + "Multi-Period-Daily" + "/" + timeFrameLabel + "/" + dateForPath; - filePath += '/' + fileName - - fileStorage.createTextFile(filePath, fileContent + '\n', onFileCreated); - - function onFileCreated(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDailyFiles -> writeTradesFile -> onFileCreated -> Entering function."); } - if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDailyFiles -> writeTradesFile -> onFileCreated -> fileContent = " + fileContent); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeTradesFile -> onFileCreated -> err = " + err.stack); - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeTradesFile -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeTradesFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); - - callBackFunction(err); - return; - - } - - writeSnapshotFiles() - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeTradesFile -> onFileCreated -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeTradesFile -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function writeSnapshotFiles() { - - writeSnapshotFile(triggerOnSnapshot, 'Trigger-On', onFinish) - - function onFinish() { - writeSnapshotFile(takePositionSnapshot, 'Take-Position', callBackFunction) - } - - } - - function writeSnapshotFile(snapshotArray, pFileName, callBack) { - if (bot.startMode !== 'Backtest') { - callBack(global.DEFAULT_OK_RESPONSE); - return; - } - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDailyFiles -> writeSnapshotFile -> Entering function."); } - - let fileRecordCounter = 0; - - let fileContent = ""; - let separator = "\r\n"; - - parseRecord(snapshotHeaders) - - for (let i = 0; i < snapshotArray.length; i++) { - let record = snapshotArray[i]; - parseRecord(record) - fileRecordCounter++; - } - - function parseRecord(record) { - for (let j = 0; j < record.length; j++) { - let property = record[j] - - fileContent = fileContent + '' + property - if (j !== record.length - 1) { - fileContent = fileContent + "," - } - } - fileContent = fileContent + separator - - } - - fileContent = "" + fileContent + ""; - - let dateForPath = currentDay.getUTCFullYear() + '/' + utilities.pad(currentDay.getUTCMonth() + 1, 2) + '/' + utilities.pad(currentDay.getUTCDate(), 2); - let fileName = pFileName + '.csv'; - let filePath = bot.filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + SNAPSHOTS_FOLDER_NAME + "/" + "Multi-Period-Daily" + "/" + timeFrameLabel + "/" + dateForPath; - filePath += '/' + fileName - - fileStorage.createTextFile(filePath, fileContent + '\n', onFileCreated); - - function onFileCreated(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDailyFiles -> writeSnapshotFile -> onFileCreated -> Entering function."); } - if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, "[INFO] start -> writeDailyFiles -> writeSnapshotFile -> onFileCreated -> fileContent = " + fileContent); } - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeSnapshotFile -> onFileCreated -> err = " + err.stack); - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeSnapshotFile -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeSnapshotFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); - - callBackFunction(err); - return; - - } - - callBack(global.DEFAULT_OK_RESPONSE); - - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeSnapshotFile -> onFileCreated -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeSnapshotFile -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } + sessionStopped() + logger.persist(); + clearInterval(fixedTimeLoopIntervalHandle); + clearTimeout(nextLoopTimeoutHandle); + if (global.unexpectedError !== undefined) { + callBackFunction(global.DEFAULT_FAIL_RESPONSE) + } else { + callBackFunction(global.DEFAULT_OK_RESPONSE) } } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] start -> err = " + err.stack); + + function sessionStopped() { + if (bot.SESSION_STATUS === 'Running') { + global.EVENT_SERVER_CLIENT.raiseEvent(bot.sessionKey, 'Stopped') + bot.SESSION_STATUS = 'Stopped' + } + } + + } catch (err) { + parentLogger.write(MODULE_NAME, "[ERROR] run -> err = " + err.stack); + clearInterval(fixedTimeLoopIntervalHandle); + clearTimeout(nextLoopTimeoutHandle); callBackFunction(global.DEFAULT_FAIL_RESPONSE); } } }; - diff --git a/TaskServer/TradingBotProcessMainLoop.js b/TaskServer/TradingBotProcessMainLoop.js deleted file mode 100644 index 579de4f33..000000000 --- a/TaskServer/TradingBotProcessMainLoop.js +++ /dev/null @@ -1,1071 +0,0 @@ -exports.newTradingBotProcessMainLoop = function newTradingBotProcessMainLoop(bot, parentLogger) { - - const ROOT_DIR = './'; - - const MODULE_NAME = "Trading Process Main Loop"; - const FULL_LOG = true; - - let USER_BOT_MODULE; - let USER_BOT_COMMONS; - - const MULTI_PERIOD_MARKET = require(ROOT_DIR + 'MultiPeriodMarket'); - const MULTI_PERIOD_DAILY = require(ROOT_DIR + 'MultiPeriodDaily'); - const MULTI_PERIOD = require(ROOT_DIR + 'MultiPeriod'); - const FILE_STORAGE = require('./FileStorage.js'); - const SESSION = require(ROOT_DIR + 'Session'); - - let fileStorage = FILE_STORAGE.newFileStorage(parentLogger); - let session = SESSION.newSession(bot, parentLogger) - - const DEBUG_MODULE = require(ROOT_DIR + 'DebugLog'); - let logger; // We need this here in order for the loopHealth function to work and be able to rescue the loop when it gets in trouble. - - let nextLoopTimeoutHandle; - let checkLoopHealthHandle; - - let thisObject = { - initialize: initialize, - run: run - }; - - let processConfig; - - return thisObject; - - function initialize(pProcessConfig, callBackFunction) { - - /* This function is exactly the same in the 3 modules representing the 2 different bot types loops. */ - - try { - if (FULL_LOG === true) { parentLogger.write(MODULE_NAME, "[INFO] initialize -> Entering function."); } - - processConfig = pProcessConfig; - - if (bot.definedByUI === true) { - /* The code of the bot is defined at the UI. No need to load a file with the code. */ - session.initialize(processConfig, onSessionInitialized) - - function onSessionInitialized(err) { - callBackFunction(err); - } - return - } - - bot.resumeExecution = processConfig.framework.startDate.resumeExecution // We are inherating this from root, but from here we need it at bot - - let filePath = bot.dataMine + "/" + "bots" + "/" + bot.repo + "/" + pProcessConfig.codeName - filePath += "/User.Bot.js" - - fileStorage.getTextFile(filePath, onBotDownloaded); - - function onBotDownloaded(err, text) { - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - - parentLogger.write(MODULE_NAME, "[ERROR] initialize -> onInizialized -> onBotDownloaded -> err = " + err.message); - parentLogger.write(MODULE_NAME, "[ERROR] initialize -> onInizialized -> onBotDownloaded -> filePath = " + filePath); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - - USER_BOT_MODULE = {} - USER_BOT_MODULE.newUserBot = eval(text); // Use this for production - - filePath = bot.dataMine + "/" + "bots" + "/" + bot.repo; - filePath += "/Commons.js" - - fileStorage.getTextFile(filePath, onCommonsDownloaded); - - function onCommonsDownloaded(err, text) { - - if (err.result !== global.DEFAULT_OK_RESPONSE.result) { - parentLogger.write(MODULE_NAME, "[WARN] initialize -> onBotDownloaded -> onCommonsDownloaded -> Commons not found: " + err.code || err.message); - callBackFunction(global.DEFAULT_OK_RESPONSE); - return; - } - - USER_BOT_COMMONS = {} - USER_BOT_COMMONS.newCommons = eval(text); // Use this for production - - session.initialize(onSessionInitialized) - - function onSessionInitialized(err) { - callBackFunction(err); - } - } - } - } catch (err) { - parentLogger.write(MODULE_NAME, "[ERROR] initialize -> err = "+ err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - - function run(callBackFunction) { - - try { - - if (FULL_LOG === true) { parentLogger.write(MODULE_NAME, "[INFO] run -> Entering function."); } - - /* Some initial values*/ - bot.enableCheckLoopHealth = true; - let fixedTimeLoopIntervalHandle; - bot.STOP_SESSION = true; - - loop(); - - function loop() { - - try { - - processHeartBeat(undefined, undefined, "Running...") - function pad(str, max) { - str = str.toString(); - return str.length < max ? pad(" " + str, max) : str; - } - - /* For each loop we want to create a new log file. */ - if (logger !== undefined) { - logger.finalize() - } - logger = DEBUG_MODULE.newDebugLog(); - global.LOGGER_MAP.set(MODULE_NAME, logger) - logger.bot = bot; - logger.initialize(); - - bot.loopCounter++; - bot.loopStartTime = new Date().valueOf(); - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> Entering function."); } - - let nextWaitTime; - - /* Heartbeats sent to the UI */ - bot.sessionHeartBeat = sessionHeartBeat - bot.processHeartBeat = processHeartBeat - processHeartBeat() - - /* We define here all the modules that the rest of the infraestructure, including the bots themselves can consume. */ - - const UTILITIES = require(ROOT_DIR + 'CloudUtilities'); - const EXCHANGE_API = require(ROOT_DIR + 'ExchangeAPI'); - const STATUS_REPORT = require(ROOT_DIR + 'StatusReport'); - const STATUS_DEPENDENCIES = require(ROOT_DIR + 'StatusDependencies'); - const DATA_DEPENDENCIES = require(ROOT_DIR + 'DataDependencies'); - const DATA_SET = require(ROOT_DIR + 'DataSet'); - const PROCESS_EXECUTION_EVENTS = require(ROOT_DIR + 'ProcessExecutionEvents'); - const PROCESS_OUTPUT = require(ROOT_DIR + 'ProcessOutput'); - - /* We define the datetime for the process that we are running now. This will be the official processing time for both the infraestructure and the bot. */ - - bot.processDatetime = new Date(); // This will be considered the process date and time, so as to have it consistenly all over the execution. - - /* High level log entry */ - - console.log(new Date().toISOString() + " " + pad(bot.exchange, 20) + " " + pad(bot.market.baseAsset + '/' + bot.market.quotedAsset, 10) + " " + pad(bot.codeName, 30) + " " + pad(bot.process, 30) - + " Main Loop # " + pad(Number(bot.loopCounter), 8) + " " + bot.processNode.session.type + " " + bot.processNode.session.name) - - /* Checking if we need to need to emit any event */ - - if (bot.SESSION_STATUS === 'Idle' && bot.STOP_SESSION === false) { - global.EVENT_SERVER_CLIENT.raiseEvent(bot.sessionKey, 'Running') - bot.SESSION_STATUS = 'Running' - } - - if (bot.SESSION_STATUS === 'Running' && bot.STOP_SESSION === true) { - global.EVENT_SERVER_CLIENT.raiseEvent(bot.sessionKey, 'Stopped') - bot.SESSION_STATUS = 'Stopped' - } - - /* Checking if we should process this loop or not.*/ - if (bot.STOP_SESSION === true) { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> Waiting for " + bot.processNode.session.type + " " + bot.processNode.session.name + " to be ran."); } - - console.log(new Date().toISOString() + " " + pad(bot.codeName, 20) + " " + pad(bot.process, 30) - + " Waiting for " + bot.processNode.session.type + " " + bot.processNode.session.name + " to be ran. "); - - nextWaitTime = 'Normal'; - loopControl(nextWaitTime); - return - } - - /* We will prepare first the infraestructure needed for the bot to run. There are 3 modules we need to sucessfullly initialize first. */ - - let processExecutionEvents - let userBot; - let processFramework; - let statusDependencies; - let dataDependencies; - - initializeProcessExecutionEvents(); - - function initializeProcessExecutionEvents() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeProcessExecutionEvents -> Entering function."); } - - processExecutionEvents = PROCESS_EXECUTION_EVENTS.newProcessExecutionEvents(bot, logger) - - processExecutionEvents.initialize(onInizialized); - - function onInizialized(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Entering function."); } - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Execution finished well."); - startProcessExecutionEvents() - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[WARN] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Retry Later. Requesting Execution Retry."); - nextWaitTime = 'Retry'; - loopControl(nextWaitTime); - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - processStopped() - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> onInizialized -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeProcessExecutionEvents -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - function startProcessExecutionEvents() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> startProcessExecutionEvents -> Entering function."); } - - processExecutionEvents.start(onStarted); - - function onStarted(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> startProcessExecutionEvents -> onStarted -> Entering function."); } - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - logger.write(MODULE_NAME, "[INFO] run -> loop -> startProcessExecutionEvents -> onStarted -> Execution finished well."); - - if (global.STOP_TASK_GRACEFULLY === true) { - loopControl() - return - } - - initializeStatusDependencies(); - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[WARN] run -> loop -> startProcessExecutionEvents -> onStarted -> Retry Later. Requesting Execution Retry."); - nextWaitTime = 'Retry'; - loopControl(nextWaitTime); - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - processStopped() - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> Unhandled err.result received. -> err.result = " + err.result); - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> onStarted -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessExecutionEvents -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - function initializeStatusDependencies() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeStatusDependencies -> Entering function."); } - - statusDependencies = STATUS_DEPENDENCIES.newStatusDependencies(bot, logger, STATUS_REPORT, UTILITIES, PROCESS_OUTPUT); - - statusDependencies.initialize(onInizialized); - - function onInizialized(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeStatusDependencies -> onInizialized -> Entering function."); } - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeStatusDependencies -> onInizialized -> Execution finished well."); - initializeDataDependencies(); - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[WARN] run -> loop -> initializeStatusDependencies -> onInizialized -> Retry Later. Requesting Execution Retry."); - nextWaitTime = 'Retry'; - loopControl(nextWaitTime); - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - sessionStopped() - processStopped() - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> onInizialized -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeStatusDependencies -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - function initializeDataDependencies() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeDataDependencies -> Entering function."); } - - dataDependencies = DATA_DEPENDENCIES.newDataDependencies(bot, logger, DATA_SET); - - dataDependencies.initialize(onInizialized); - - function onInizialized(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeDataDependencies -> onInizialized -> Entering function."); } - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeDataDependencies -> onInizialized -> Execution finished well."); } - initializeExchangeAPI(); - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[WARN] run -> loop -> initializeDataDependencies -> onInizialized -> Retry Later. Requesting Execution Retry."); - nextWaitTime = 'Retry'; - loopControl(nextWaitTime); - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - sessionStopped() - processStopped() - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> onInizialized -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeDataDependencies -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - function initializeExchangeAPI() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeExchangeAPI -> Entering function."); } - - exchangeAPI = EXCHANGE_API.newExchangeAPI(logger, bot); - - exchangeAPI.initialize(onInizialized); - - function onInizialized(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeContext -> onInizialized -> onInizialized -> Entering function."); } - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> initializeExchangeAPI -> onInizialized -> Execution finished well."); } - - switch (processConfig.framework.name) { - case 'Multi-Period': { - processFramework = MULTI_PERIOD.newMultiPeriod(bot, logger, UTILITIES, USER_BOT_MODULE, USER_BOT_COMMONS); - intitializeProcessFramework(); - break; - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeExchangeAPI -> onInizialized -> Process Framework not Supported."); - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeExchangeAPI -> onInizialized -> Process Framework Name = " + processConfig.framework.name); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - } - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[WARN] run -> loop -> initializeExchangeAPI -> onInizialized -> Retry Later. Requesting Execution Retry."); - nextWaitTime = 'Retry'; - loopControl(nextWaitTime); - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - sessionStopped() - processStopped() - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeExchangeAPI -> onInizialized -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeExchangeAPI -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeExchangeAPI -> onInizialized -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeContext -> onInizialized -> onInizialized -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> initializeExchangeAPI -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - function intitializeProcessFramework() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> intitializeProcessFramework -> Entering function."); } - - processFramework.initialize(processConfig, statusDependencies, dataDependencies, exchangeAPI, onInizialized); - - function onInizialized(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> intitializeProcessFramework -> onInizialized -> Entering function."); } - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - logger.write(MODULE_NAME, "[INFO] run -> loop -> intitializeProcessFramework -> onInizialized -> Execution finished well."); - startProcessFramework(); - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[WARN] run -> loop -> intitializeProcessFramework -> onInizialized -> Retry Later. Requesting Execution Retry."); - nextWaitTime = 'Retry'; - loopControl(nextWaitTime); - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - sessionStopped() - processStopped() - logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - case global.CUSTOM_OK_RESPONSE.result: { - - switch (err.message) { - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized > Unhandled custom response received. -> err = " + err.message); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - } - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized -> Unhandled err.result received. -> err.result = " + err.result); - logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> onInizialized -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> intitializeProcessFramework -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - function startProcessFramework() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> startProcessFramework -> Entering function."); } - - processFramework.start(onFinished); - - function onFinished(err) { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> startProcessFramework -> onFinished -> Entering function."); } - processFramework.finalize() - processFramework = undefined - dataDependencies.finalize() - dataDependencies = undefined - statusDependencies.finalize() - statusDependencies = undefined - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - logger.write(MODULE_NAME, "[INFO] run -> loop -> startProcessFramework -> onFinished -> Execution finished well."); - nextWaitTime = 'Normal'; - finishProcessExecutionEvents() - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[WARN] run -> loop -> startProcessFramework -> onFinished -> Retry Later. Requesting Execution Retry."); - nextWaitTime = 'Retry'; - loopControl(nextWaitTime); - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - sessionStopped() - processStopped() - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - case global.CUSTOM_OK_RESPONSE.result: { - - switch (err.message) { - case "Dependency does not exist.": { - logger.write(MODULE_NAME, "[WARN] run -> loop -> startProcessFramework -> onFinished -> Dependency does not exist. This Loop will go to sleep."); - nextWaitTime = 'Sleep'; - loopControl(nextWaitTime); - return; - } - case "Dependency not ready.": { - logger.write(MODULE_NAME, "[WARN] run -> loop -> startProcessFramework -> onFinished -> Dependency not ready. This Loop will go to sleep."); - nextWaitTime = 'Sleep'; - loopControl(nextWaitTime); - return; - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> Unhandled custom response received. -> err = " + err.message); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - } - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> Unhandled err.result received. -> err.result = " + err.result); - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> onFinished -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> startProcessFramework -> err = "+ err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - function finishProcessExecutionEvents() { - - try { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> finishProcessExecutionEvents -> Entering function."); } - - processExecutionEvents.finish(onFinished); - - function onFinished(err) { - try { - processExecutionEvents.finalize() - processExecutionEvents = undefined - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> finishProcessExecutionEvents -> onFinished -> Entering function."); } - - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - logger.write(MODULE_NAME, "[INFO] run -> loop -> finishProcessExecutionEvents -> onFinished -> Execution finished well."); - nextWaitTime = 'Normal'; - loopControl(nextWaitTime); - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { // Something bad happened, but if we retry in a while it might go through the next time. - logger.write(MODULE_NAME, "[WARN] run -> loop -> finishProcessExecutionEvents -> onFinished -> Retry Later. Requesting Execution Retry."); - nextWaitTime = 'Retry'; - loopControl(nextWaitTime); - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { // This is an unexpected exception that we do not know how to handle. - processStopped() - logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> Operation Failed. Aborting the process."); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - return; - } - default: { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> Unhandled err.result received. -> err.result = " + err.result); - logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> Unhandled err.result received. -> err = " + err.message); - - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> onFinished -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> finishProcessExecutionEvents -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - function loopControl(nextWaitTime) { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Entering function."); } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> nextWaitTime = " + nextWaitTime); } - - /* We show we reached the end of the loop. */ - - processHeartBeat() - - /* Here we check if we must stop the loop gracefully. */ - - shallWeStop(onStop, onContinue); - - function onStop() { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> onStop -> Entering function."); } - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> onStop -> Stopping the Loop Gracefully. See you next time!"); } - - if (global.WRITE_LOGS_TO_FILES === 'true') { - logger.persist(); - } - - global.EVENT_SERVER_CLIENT.raiseEvent(bot.sessionKey, 'Stopped') - processStopped() - callBackFunction(global.DEFAULT_OK_RESPONSE); - return; - - } - - function onContinue() { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> onContinue -> Entering function."); } - - /* Indicator bots are going to be executed after a configured period of time after the last execution ended. This is to avoid overlapping executions. */ - - switch (nextWaitTime) { - case 'Normal': { - let waitTime - if (bot.startMode === "Live") { - waitTime = processConfig.liveWaitTime - } else { - waitTime = processConfig.normalWaitTime - } - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (waitTime / 1000 / 60) + " minute/s."); } - if (processConfig.deadWaitTime > 0) { - checkLoopHealthHandle = setTimeout(checkLoopHealth, processConfig.deadWaitTime, bot.loopCounter); - } - nextLoopTimeoutHandle = setTimeout(loop, waitTime); - let waitingTime = waitTime / 1000 / 60 - let label = 'minute/s' - if (waitingTime < 1) { - waitingTime = waitTime / 1000 - label = 'seconds' - } - processHeartBeat(undefined, undefined, "Waiting " + waitingTime + " " + label + " for next execution.") - if (global.WRITE_LOGS_TO_FILES === 'true') { - logger.persist(); - } - } - break; - case 'Retry': { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (processConfig.retryWaitTime / 1000) + " seconds."); } - if (processConfig.deadWaitTime > 0) { - checkLoopHealthHandle = setTimeout(checkLoopHealth, processConfig.deadWaitTime, bot.loopCounter); - } - nextLoopTimeoutHandle = setTimeout(loop, processConfig.retryWaitTime); - processHeartBeat(undefined, undefined, "Trying to recover from some problem. Waiting " + processConfig.retryWaitTime / 1000 + " seconds for next execution.") - logger.persist(); - } - break; - case 'Sleep': { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (processConfig.sleepWaitTime / 60000) + " minutes."); } - nextLoopTimeoutHandle = setTimeout(loop, processConfig.sleepWaitTime); - processHeartBeat(undefined, undefined, "Waiting " + processConfig.sleepWaitTime / 60000 + " minutes for next execution.") - logger.persist(); - } - break; - case 'Coma': { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> loopControl -> Restarting Loop in " + (processConfig.comaWaitTime / 3600000) + " hours."); } - nextLoopTimeoutHandle = setTimeout(loop, processConfig.comaWaitTime); - processHeartBeat(undefined, undefined, "Waiting " + processConfig.comaWaitTime / 3600000 + " hours for next execution.") - logger.persist(); - } - break; - } - } - } - - function checkLoopHealth(pLastLoop) { - - if (bot.enableCheckLoopHealth === false || global.STOP_TASK_GRACEFULLY === true) { - - logger.write(MODULE_NAME, "[WARN] run -> loop -> checkLoopHealth -> bot.enableCheckLoopHealth = " + bot.enableCheckLoopHealth); - - return; - } // This gets disabled anytime the Main Loop is shut down by any condition. - - if (bot.loopCounter <= pLastLoop + 1) { // This means that the next loop started but also stopped executing abruptally. - - let now = new Date().valueOf(); - - if (now - bot.loopStartTime > processConfig.deadWaitTime) { - - logger.write(MODULE_NAME, "[ERROR] run -> loop -> checkLoopHealth -> Dead loop found -> pLastLoop = " + pLastLoop); - console.log((new Date().toISOString() + " [ERROR] run -> loop -> checkLoopHealth -> " + pad(bot.codeName, 20) + " " + pad(bot.process, 30) + " Loop # " + pad(Number(bot.loopCounter), 5) + " found dead. Resurrecting it now.")); - - logger.persist(); // We persist the logs of the failed execution. - clearTimeout(nextLoopTimeoutHandle); // We cancel the timeout in case the original loop was still running and schedulled to reexecute. - loop(); // We restart the loop so that the processing can continue. - - } else { - - console.log((new Date().toISOString() + " [WARN] run -> loop -> checkLoopHealth -> " + pad(bot.codeName, 20) + " " + pad(bot.process, 30) + " Loop # " + pad(Number(bot.loopCounter), 5) + " found delayed but still alive. No action taken.")); - - } - } - } - - function shallWeStop(stopCallBack, continueCallBack) { - - try { - - /* IMPORTANT: This function is exactly the same on the 3 modules. */ - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> shallWeStop -> Entering function. "); } - - if (!global.STOP_TASK_GRACEFULLY) { - continueCallBack(); - } else { - stopCallBack(); - } - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] run -> loop -> shallWeStop -> err = " + err.stack); - logger.persist(); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return; - } - } - - } catch (err) { - parentLogger.write(MODULE_NAME, "[ERROR] run -> loop -> err = "+ err.stack); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(err); - } - } - - function processHeartBeat(processingDate, percentage, status) { - let event = { - seconds: (new Date()).getSeconds(), - processingDate: processingDate, - percentage: percentage, - status: status - } - global.EVENT_SERVER_CLIENT.raiseEvent(bot.processKey, 'Heartbeat', event) - } - - function sessionHeartBeat(processingDate) { - let event = { - seconds: (new Date()).getSeconds(), - processingDate: processingDate - } - global.EVENT_SERVER_CLIENT.raiseEvent(bot.sessionKey, 'Heartbeat', event) - - if (global.STOP_TASK_GRACEFULLY === true) { - bot.STOP_SESSION = true - } - } - - function processStopped() { - global.EVENT_SERVER_CLIENT.raiseEvent(bot.processKey, 'Stopped') - } - - function sessionStopped() { - if (bot.SESSION_STATUS === 'Running') { - global.EVENT_SERVER_CLIENT.raiseEvent(bot.sessionKey, 'Stopped') - bot.SESSION_STATUS = 'Stopped' - } - } - - } catch (err) { - parentLogger.write(MODULE_NAME, "[ERROR] run -> err = "+ err.stack); - clearInterval(fixedTimeLoopIntervalHandle); - clearTimeout(nextLoopTimeoutHandle); - clearTimeout(checkLoopHealthHandle); - bot.enableCheckLoopHealth = false; - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } -}; diff --git a/TaskServer/TradingSimulation.js b/TaskServer/TradingSimulation.js deleted file mode 100644 index 2cb22cc25..000000000 --- a/TaskServer/TradingSimulation.js +++ /dev/null @@ -1,3389 +0,0 @@ -exports.newTradingSimulation = function newTradingSimulation(bot, logger, UTILITIES) { - - const FULL_LOG = true; - const LOG_FILE_CONTENT = false; - const ONE_DAY_IN_MILISECONDS = 24 * 60 * 60 * 1000; - const MODULE_NAME = "Trading Simulation -> " + bot.SESSION.name; - - const GMT_SECONDS = ':00.000 GMT+0000'; - - let thisObject = { - finalize: finalize, - runSimulation: runSimulation - }; - - let utilities = UTILITIES.newCloudUtilities(bot, logger); - - return thisObject; - - function finalize() { - thisObject = undefined - } - - function runSimulation( - chart, - dataDependencies, - timeFrame, - timeFrameLabel, - currentDay, - interExecutionMemory, - exchangeAPI, - callback, - callBackFunction) { - - try { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> Entering function."); } - let processingDailyFiles - if (timeFrame > global.dailyFilePeriods[0][0]) { - processingDailyFiles = false - } else { - processingDailyFiles = true - } - - let recordsArray = []; - let conditionsArray = []; - let strategiesArray = []; - let tradesArray = []; - - let tradingSystem = bot.TRADING_SYSTEM - - /* Initial Default Values */ - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> bot.VALUES_TO_USE.timeRange.initialDatetime = " + bot.VALUES_TO_USE.timeRange.initialDatetime); } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> bot.VALUES_TO_USE.timeRange.finalDatetime = " + bot.VALUES_TO_USE.timeRange.finalDatetime); } - - let timerToCloseStage = 0 - - /* Stop Loss Management */ - - const MIN_STOP_LOSS_VALUE = 0.0000000001 // We can not let the stop be zero to avoid division by 0 error or infinity numbers as a result. - const MAX_STOP_LOSS_VALUE = Number.MAX_SAFE_INTEGER - let stopLoss = 0; - - /* Take Profit Management */ - - const MIN_TAKE_PROFIT_VALUE = 0.0000000001 // We can not let the buy order be zero to avoid division by 0 error or infinity numbers as a result. - const MAX_TAKE_PROFIT_VALUE = Number.MAX_SAFE_INTEGER - let takeProfit = 0; - - /* Simulation Records */ - - let hitRatio = 0; - let ROI = 0; - let days = 0; - let positionDays = 0; - let anualizedRateOfReturn = 0; - let type = '""'; - let marketRate = 0; - let takePositionNow = false - let closePositionNow = false - - /* In some cases we need to know if we are positioned at the last candle of the calendar day, for that we need these variables. */ - - let lastInstantOfTheDay = 0 - if (currentDay) { - lastInstantOfTheDay = currentDay.valueOf() + ONE_DAY_IN_MILISECONDS - 1; - } - - /* - The following counters need to survive multiple executions of the similator and keep themselves reliable. - This is challenging when the simulation is executed using Daily Files, since each execution means a new - day and these counters are meant to be kept along the whole market. - - To overcome this problem, we use the interExecutionMemory to record the values of the current execution - when finish. But there are a few details: - - 1. When the process is at the head of the market, it executes multple times at the same day. - 2. The same code serves execution from Market Files. - 3. In Daily Files we are receiving candles from the current day and previous day, so we need to take care of - not adding to the counters duplicate info when processing the day before candles. - - To overcome these challenges we record the values of the counters and variables on the interExecutionMemory only when - the day is complete and if we have a current Day. That menas that for Market Files we will never use - interExecutionMemory. - */ - - /* Snapshots of Trigger On and Take Positions */ - let snapshots = { - headers: undefined, - triggerOn: [], - takePosition: [], - lastTriggerOn: undefined, - lastTakePosition: undefined - } - - /*Needed for statistics */ - let previousBalanceBaseAsset = 0; - let previousBalanceQuotedAsset = 0; - - /* Position Management */ - let tradePositionRate = 0; - let tradePositionSize = 0; - - /* Strategy and Phase Management */ - let currentStrategyIndex = -1; - let strategyStage = 'No Stage'; - - let stopLossPhase = -1; - let stopLossStage = 'No Stage'; - - let takeProfitPhase = -1; - let takeProfitStage = 'No Stage'; - - /* These 2 objects will allow us to create separate files for each one of them. */ - - let currentStrategy = { - begin: 0, - end: 0, - status: 0, - number: 0, - beginRate: 0, - endRate: 0, - triggerOnSituation: '', - name: '' - } - - let currentTrade = { - begin: 0, - end: 0, - status: 0, - profit: 0, - exitType: 0, - beginRate: 0, - endRate: 0, - takePositionSituation: '' - } - - let balanceBaseAsset = bot.VALUES_TO_USE.initialBalanceA; - let balanceQuotedAsset = bot.VALUES_TO_USE.initialBalanceB; - - let lastTradeProfitLoss = 0; - let profit = 0; - let lastTradeROI = 0; - - let roundtrips = 0; - let fails = 0; - let hits = 0; - let periods = 0; - let positionPeriods = 0; - - let closeRate - - /* Usefull counters for conditions and formulas */ - - let distanceToLast = { - triggerOn: 0, - triggerOff: 0, - takePosition: 0, - closePosition: 0 - } - - /* Message to the Simulation Executor */ - - let orderId = 0; - let messageId = 0; - - /* Allowing these to be accesible at formulas */ - baseAsset = bot.VALUES_TO_USE.baseAsset - quotedAsset = bot.VALUES_TO_USE.quotedAsset - - let yesterday = {}; - - /* Initialization */ - - - yesterday.snapshots = { - headers: undefined, - triggerOn: [], - takePosition: [], - lastTriggerOn: undefined, - lastTakePosition: undefined - } - - yesterday.stopLoss = 0 - yesterday.takeProfit = 0 - - yesterday.previousBalanceBaseAsset = previousBalanceBaseAsset - yesterday.previousBalanceQuotedAsset = previousBalanceQuotedAsset - - yesterday.tradePositionRate = tradePositionRate - yesterday.tradePositionSize = tradePositionSize - - yesterday.currentStrategyIndex = currentStrategyIndex - yesterday.strategyStage = strategyStage - - yesterday.stopLossPhase = stopLossPhase - yesterday.stopLossStage = stopLossStage - - yesterday.takeProfitPhase = takeProfitPhase - yesterday.takeProfitStage = takeProfitStage - - yesterday.currentStrategy = { - begin: 0, - end: 0, - status: 0, - number: 0, - beginRate: 0, - endRate: 0, - triggerOnSituation: '', - name: '' - } - - yesterday.currentTrade = { - begin: 0, - end: 0, - status: 0, - profit: 0, - exitType: 0, - beginRate: 0, - endRate: 0, - takePositionSituation: '' - } - - yesterday.balanceBaseAsset = balanceBaseAsset; - yesterday.balanceQuotedAsset = balanceQuotedAsset; - - yesterday.lastTradeProfitLoss = 0; - yesterday.profit = 0; - yesterday.lastTradeROI = 0; - - yesterday.roundtrips = 0; - yesterday.fails = 0; - yesterday.hits = 0; - yesterday.periods = 0; - yesterday.positionPeriods = 0; - - yesterday.distanceToLast = { - triggerOn: 0, - triggerOff: 0, - takePosition: 0, - closePosition: 0 - } - - yesterday.orderId = 0; - yesterday.messageId = 0; - - yesterday.hitRatio = 0; - yesterday.ROI = 0; - yesterday.anualizedRateOfReturn = 0; - - if (interExecutionMemory.roundtrips === undefined) { // This just means that the inter execution memory was never used before. - - /* Initialize the data structure we will use inter execution. */ - - interExecutionMemory.snapshots = { - headers: undefined, - triggerOn: [], - takePosition: [], - lastTriggerOn: undefined, - lastTakePosition: undefined - } - - interExecutionMemory.stopLoss = 0 - interExecutionMemory.takeProfit = 0 - - interExecutionMemory.previousBalanceBaseAsset = previousBalanceBaseAsset - interExecutionMemory.previousBalanceQuotedAsset = previousBalanceQuotedAsset - - interExecutionMemory.tradePositionRate = tradePositionRate - interExecutionMemory.tradePositionSize = tradePositionSize - - interExecutionMemory.currentStrategyIndex = currentStrategyIndex - interExecutionMemory.strategyStage = strategyStage - - interExecutionMemory.stopLossPhase = stopLossPhase - interExecutionMemory.stopLossStage = stopLossStage - - interExecutionMemory.takeProfitPhase = takeProfitPhase - interExecutionMemory.takeProfitStage = takeProfitStage - - interExecutionMemory.currentStrategy = { - begin: 0, - end: 0, - status: 0, - number: 0, - beginRate: 0, - endRate: 0, - triggerOnSituation: '', - name: '' - } - - interExecutionMemory.currentTrade = { - begin: 0, - end: 0, - status: 0, - profit: 0, - exitType: 0, - beginRate: 0, - endRate: 0, - takePositionSituation: '' - } - - interExecutionMemory.balanceBaseAsset = balanceBaseAsset; - interExecutionMemory.balanceQuotedAsset = balanceQuotedAsset; - - interExecutionMemory.lastTradeProfitLoss = lastTradeProfitLoss; - interExecutionMemory.profit = profit; - interExecutionMemory.lastTradeROI = lastTradeROI; - - interExecutionMemory.roundtrips = 0; - interExecutionMemory.fails = 0; - interExecutionMemory.hits = 0; - interExecutionMemory.periods = 0; - interExecutionMemory.positionPeriods = 0; - - interExecutionMemory.distanceToLast = { - triggerOn: 0, - triggerOff: 0, - takePosition: 0, - closePosition: 0 - } - - interExecutionMemory.orderId = 0; - interExecutionMemory.messageId = 0; - - interExecutionMemory.hitRatio = 0; - interExecutionMemory.ROI = 0; - interExecutionMemory.anualizedRateOfReturn = 0; - - interExecutionMemory.announcements = [] - - } else { - - /* We get the initial values from the day previous to the candles we receive at the current execution */ - - snapshots = { - headers: interExecutionMemory.snapshots.headers, - triggerOn: interExecutionMemory.snapshots.triggerOn, - takePosition: interExecutionMemory.snapshots.takePosition, - lastTriggerOn: interExecutionMemory.snapshots.lastTriggerOn, - lastTakePosition: interExecutionMemory.snapshots.lastTakePosition - } - - stopLoss = interExecutionMemory.stopLoss - takeProfit = interExecutionMemory.takeProfit - - previousBalanceBaseAsset = interExecutionMemory.previousBalanceBaseAsset - previousBalanceQuotedAsset = interExecutionMemory.previousBalanceQuotedAsset - - tradePositionRate = interExecutionMemory.tradePositionRate - tradePositionSize = interExecutionMemory.tradePositionSize - - currentStrategyIndex = interExecutionMemory.currentStrategyIndex - strategyStage = interExecutionMemory.strategyStage - - stopLossPhase = interExecutionMemory.stopLossPhase - stopLossStage = interExecutionMemory.stopLossStage - - takeProfitPhase = interExecutionMemory.takeProfitPhase - takeProfitStage = interExecutionMemory.takeProfitStage - - currentStrategy = { - begin: interExecutionMemory.currentStrategy.begin, - end: interExecutionMemory.currentStrategy.end, - status: interExecutionMemory.currentStrategy.status, - number: interExecutionMemory.currentStrategy.number, - beginRate: interExecutionMemory.currentStrategy.beginRate, - endRate: interExecutionMemory.currentStrategy.endRate, - triggerOnSituation: interExecutionMemory.currentStrategy.triggerOnSituation, - name: currentStrategy.name - } - - currentTrade = { - begin: interExecutionMemory.currentTrade.begin, - end: interExecutionMemory.currentTrade.end, - status: interExecutionMemory.currentTrade.status, - profit: interExecutionMemory.currentTrade.profit, - exitType: interExecutionMemory.currentTrade.exitType, - beginRate: interExecutionMemory.currentTrade.beginRate, - endRate: interExecutionMemory.currentTrade.endRate, - takePositionSituation: interExecutionMemory.currentTrade.takePositionSituation - } - - if (currentDay) { - if (currentDay.valueOf() >= bot.VALUES_TO_USE.timeRange.initialDatetime.valueOf() + ONE_DAY_IN_MILISECONDS) { // Only after the first day we start grabbing the balance from this memory. - - balanceBaseAsset = interExecutionMemory.balanceBaseAsset; - balanceQuotedAsset = interExecutionMemory.balanceQuotedAsset; - - yesterday.balanceBaseAsset = balanceBaseAsset; - yesterday.balanceQuotedAsset = balanceQuotedAsset; - - } - } - - lastTradeProfitLoss = interExecutionMemory.lastTradeProfitLoss; - profit = interExecutionMemory.profit; - lastTradeROI = interExecutionMemory.lastTradeROI; - - roundtrips = interExecutionMemory.roundtrips; - fails = interExecutionMemory.fails; - hits = interExecutionMemory.hits; - periods = interExecutionMemory.periods; - positionPeriods = interExecutionMemory.positionPeriods; - - distanceToLast.triggerOn = interExecutionMemory.distanceToLast.triggerOn - distanceToLast.triggerOff = interExecutionMemory.distanceToLast.triggerOff - distanceToLast.takePosition = interExecutionMemory.distanceToLast.takePosition - distanceToLast.closePosition = interExecutionMemory.distanceToLast.closePosition - - orderId = interExecutionMemory.orderId; // to be deprecated - messageId = interExecutionMemory.messageId; // to be deprecated - - hitRatio = interExecutionMemory.hitRatio; - ROI = interExecutionMemory.ROI; - anualizedRateOfReturn = interExecutionMemory.anualizedRateOfReturn; - - /* For the case that any of these variables are not updated during the main loop, we need to store their value at the yesterday structure, otherwise it would be lost. */ - - yesterday.snapshots = { - headers: snapshots.headers, - triggerOn: snapshots.triggerOn, - takePosition: snapshots.takePosition, - lastTriggerOn: snapshots.lastTriggerOn, - lastTakePosition: snapshots.lastTakePosition - } - - yesterday.stopLoss = stopLoss - yesterday.takeProfit = takeProfit - - yesterday.previousBalanceBaseAsset = previousBalanceBaseAsset - yesterday.previousBalanceQuotedAsset = previousBalanceQuotedAsset - - yesterday.tradePositionRate = tradePositionRate - yesterday.tradePositionSize = tradePositionSize - - yesterday.currentStrategyIndex = currentStrategyIndex; - yesterday.strategyStage = strategyStage; - - yesterday.stopLossPhase = stopLossPhase; - yesterday.stopLossStage = stopLossStage; - - yesterday.takeProfitPhase = takeProfitPhase; - yesterday.takeProfitStage = takeProfitStage; - - yesterday.currentStrategy = { - begin: currentStrategy.begin, - end: currentStrategy.end, - status: currentStrategy.status, - number: currentStrategy.number, - beginRate: currentStrategy.beginRate, - endRate: currentStrategy.endRate, - triggerOnSituation: currentStrategy.triggerOnSituation, - name: currentStrategy.name - } - - yesterday.currentTrade = { - begin: currentTrade.begin, - end: currentTrade.end, - status: currentTrade.status, - profit: currentTrade.profit, - exitType: currentTrade.exitType, - beginRate: currentTrade.beginRate, - endRate: currentTrade.endRate, - takePositionSituation: currentTrade.takePositionSituation - } - - yesterday.lastTradeProfitLoss = lastTradeProfitLoss; - yesterday.profit = profit; - yesterday.lastTradeROI = lastTradeROI; - - yesterday.roundtrips = roundtrips; - yesterday.fails = fails; - yesterday.hits = hits; - yesterday.periods = periods; - yesterday.positionPeriods = positionPeriods; - - yesterday.distanceToLast.triggerOn = distanceToLast.triggerOn - yesterday.distanceToLast.triggerOff = distanceToLast.triggerOff - yesterday.distanceToLast.takePosition = distanceToLast.takePosition - yesterday.distanceToLast.closePosition = distanceToLast.closePosition - - yesterday.hitRatio = hitRatio; - yesterday.ROI = ROI; - yesterday.anualizedRateOfReturn = anualizedRateOfReturn; - } - - /* Main Array and Maps */ - - let propertyName = 'at' + timeFrameLabel.replace('-', ''); - let candles = chart[propertyName].candles - let currentChart = chart[propertyName] - - /* Last Candle */ - let lastCandle = candles[candles.length - 1]; - - /* Main Simulation Loop: We go thourgh all the candles at this time period. */ - let currentCandleIndex - - /* For Loop Level heartbeat */ - let loopingDay - let previousLoopingDay - - initializeLoop() - - function initializeLoop() { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> initializeLoop -> Entering function."); } - - /* Estimate Initial Candle */ - - let firstEnd = candles[0].end - let targetEnd = bot.VALUES_TO_USE.timeRange.initialDatetime.valueOf() - let diff = targetEnd - firstEnd - let amount = diff / timeFrame - - currentCandleIndex = Math.trunc(amount) - if (currentCandleIndex < 0) { currentCandleIndex = 0 } - if (currentCandleIndex > candles.length - 1) { - /* This will happen when the bot.VALUES_TO_USE.timeRange.initialDatetime is beyond the last candle available, meaning that the dataSet needs to be updated with more up-to-date data. */ - currentCandleIndex = candles.length - 1 - } - - loop() - } - - function loop() { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Entering function."); } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Processing candle # " + currentCandleIndex); } - - /* We are going to take snapshots of the values of indicators at key moments of the sumulation. */ - - let snapshotKeys = new Map() - snapshotLoopHeaders = [] - snapshotDataRecord = [] - saveAsLastTriggerOnSnapshot = false - saveAsLastTakePositionSnapshot = false - addToSnapshots = false - - let announcementsToBeMade = [] - let candle = candles[currentCandleIndex]; - - /* Not processing while out of user-defined time range */ - - if (candle.end < bot.VALUES_TO_USE.timeRange.initialDatetime.valueOf()) { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Skipping Candle before the bot.VALUES_TO_USE.timeRange.initialDatetime."); } - controlLoop(); - return - } - if (candle.begin > bot.VALUES_TO_USE.timeRange.finalDatetime.valueOf()) { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Skipping Candle after the bot.VALUES_TO_USE.timeRange.finalDatetime."); } - afterLoop(); - return - } - - /* Here we update at the chart data structure the objects for each product representing where we are currently standing at the simulation loop */ - if (processingDailyFiles) { - for (let j = 0; j < global.dailyFilePeriods.length; j++) { - - let mapKey = dailyFilePeriods[j][1] - let propertyName = 'at' + mapKey.replace('-', ''); - let thisChart = chart[propertyName] - - for (let k = 0; k < dataDependencies.length; k++) { - let dataDependencyNode = dataDependencies[k] - if (dataDependencyNode.referenceParent.code.codeName !== 'Multi-Period-Daily') { continue } - let singularVariableName = dataDependencyNode.referenceParent.parentNode.code.singularVariableName - let pluralVariableName = dataDependencyNode.referenceParent.parentNode.code.pluralVariableName - let currentElement = getElement(thisChart[pluralVariableName], candle, 'Daily' + '-' + mapKey + '-' + pluralVariableName) - thisChart[singularVariableName] = currentElement - } - } - } - - /* Finding the Current Element on Market Files */ - for (let j = 0; j < global.marketFilesPeriods.length; j++) { - - let mapKey = marketFilesPeriods[j][1] - let propertyName = 'at' + mapKey.replace('-', ''); - let thisChart = chart[propertyName] - - for (let k = 0; k < dataDependencies.length; k++) { - let dataDependencyNode = dataDependencies[k] - if (dataDependencyNode.referenceParent.code.codeName !== 'Multi-Period-Market') {continue} - let singularVariableName = dataDependencyNode.referenceParent.parentNode.code.singularVariableName - let pluralVariableName = dataDependencyNode.referenceParent.parentNode.code.pluralVariableName - let currentElement = getElement(thisChart[pluralVariableName], candle, 'Market' + '-' + mapKey + '-' + pluralVariableName) - thisChart[singularVariableName] = currentElement - } - } - - /* Finding the Current Element on Single Files */ - - function isItInside(elementWithTimestamp, elementWithBeginEnd) { - if (elementWithTimestamp.timestamp >= elementWithBeginEnd.begin && elementWithTimestamp.timestamp <= elementWithBeginEnd.end) { - return true - } else { - return false - } - } - - let propertyName = 'atAnyTimeFrame' - let thisChart = chart[propertyName] - - for (let k = 0; k < dataDependencies.length; k++) { - let dataDependencyNode = dataDependencies[k] - if (dataDependencyNode.referenceParent.code.codeName !== 'Single-File') { continue } - let singularVariableName = dataDependencyNode.referenceParent.parentNode.code.singularVariableName - let pluralVariableName = dataDependencyNode.referenceParent.parentNode.code.pluralVariableName - let elementArray = thisChart[pluralVariableName] - let currentElement - if (elementArray !== undefined) { - currentElement = elementArray[elementArray.length - 1] - } - thisChart[singularVariableName] = currentElement - } - - /* While we are processing the previous day. */ - let positionedAtYesterday = false - if (currentDay) { - positionedAtYesterday = (candle.end < currentDay.valueOf()) - } - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Candle Begin @ " + (new Date(candle.begin)).toLocaleString()) } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Candle End @ " + (new Date(candle.end)).toLocaleString()) } - - let ticker = { - bid: candle.close, - ask: candle.close, - last: candle.close - } - - /* We will produce a simulation level heartbeat in order to inform the user this is running. */ - - loopingDay = new Date(Math.trunc(candle.begin / ONE_DAY_IN_MILISECONDS) * ONE_DAY_IN_MILISECONDS) - if (loopingDay.valueOf() !== previousLoopingDay) { - - let processingDate = loopingDay.getUTCFullYear() + '-' + utilities.pad(loopingDay.getUTCMonth() + 1, 2) + '-' + utilities.pad(loopingDay.getUTCDate(), 2); - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Simulation " + bot.sessionKey + " Loop # " + currentCandleIndex + " @ " + processingDate) } - - /* Telling the world we are alive and doing well */ - let fromDate = new Date(bot.VALUES_TO_USE.timeRange.initialDatetime.valueOf()) - let lastDate = new Date(bot.VALUES_TO_USE.timeRange.finalDatetime.valueOf()) - - let currentDateString = loopingDay.getUTCFullYear() + '-' + utilities.pad(loopingDay.getUTCMonth() + 1, 2) + '-' + utilities.pad(loopingDay.getUTCDate(), 2); - let currentDate = new Date(loopingDay) - let percentage = global.getPercentage(fromDate, currentDate, lastDate) - bot.processHeartBeat(currentDateString, percentage) - - if (global.areEqualDates(currentDate, new Date()) === false) { - logger.newInternalLoop(bot.codeName, bot.process, currentDate, percentage); - } - } - previousLoopingDay = loopingDay.valueOf() - - /* If any of the needed data dependencies is missing for this particular candle, then we jump the candle*/ - /* - for (let k = 0; k < dataDependencies.length; k++) { - let dataDependencyNode = dataDependencies[k] - let singularVariableName = dataDependencyNode.referenceParent.parentNode.code.singularVariableName - let pluralVariableName = dataDependencyNode.referenceParent.parentNode.code.pluralVariableName - let product = currentChart[pluralVariableName] - let currentElement = currentChart[singularVariableName] - - if (currentElement === undefined) { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Skipping Candle because " + singularVariableName + " is undefined."); } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> For some indicators it is normal to start after a few candles."); } - controlLoop(); - return - } - } - */ - - periods++; - days = periods * timeFrame / ONE_DAY_IN_MILISECONDS; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.periods = periods - } - - /* We skip the candle at the head of the market because currentCandleIndex has not closed yet. */ - let candlesPerDay = ONE_DAY_IN_MILISECONDS / timeFrame - if (currentCandleIndex === candles.length - 1) { - if ((candles.length < candlesPerDay) || (candles.length > candlesPerDay && candles.length < candlesPerDay * 2)) { - /*We are at the head of the market, thus we skip the last candle because it has not close yet. */ - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Skipping Candle because it is the last one and has not been closed yet."); } - controlLoop(); - return - /* Note here that in the last candle of the first day or the second day it will use an incomplete candle and partially calculated indicators. - if we skip these two periods, then there will be a hole in the file since the last period will be missing. */ - } - } - - } else { // We are processing Market Files - if (currentCandleIndex === candles.length - 1) { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Skipping Candle because it is the last one and has not been closed yet."); } - controlLoop(); - return - } - } - - let conditions = new Map; // Here we store the conditions values that will be use in the simulator for decision making. - let formulas = new Map; - let conditionsArrayRecord = []; // These are the records that will be saved in a file for the plotter to consume. - let conditionsArrayValues = []; // Here we store the conditions values that will be written on file for the plotter. - let formulasErrors = []; // Here we store the errors produced by all phase formulas. - let formulasValues = []; // Here we store the values produced by all phase formulas. - - /* We define and evaluate all conditions to be used later during the simulation loop. */ - - conditionsArrayRecord.push(candle.begin); - conditionsArrayRecord.push(candle.end); - - for (let j = 0; j < tradingSystem.strategies.length; j++) { - - let strategy = tradingSystem.strategies[j]; - - let positionSize = 0 - let positionRate = 0 - - /* Continue with the rest of the formulas and conditions */ - - let triggerStage = strategy.triggerStage - - if (triggerStage !== undefined) { - - if (triggerStage.triggerOn !== undefined) { - - for (let k = 0; k < triggerStage.triggerOn.situations.length; k++) { - - let situation = triggerStage.triggerOn.situations[k]; - - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = situation.conditions[m]; - let key = j + '-' + 'triggerStage' + '-' + 'triggerOn' + '-' + k + '-' + m; - - if (condition.javascriptCode !== undefined) { - newCondition(key, condition.javascriptCode, chart); - } - } - } - } - - if (triggerStage.triggerOff !== undefined) { - - for (let k = 0; k < triggerStage.triggerOff.situations.length; k++) { - - let situation = triggerStage.triggerOff.situations[k]; - - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = situation.conditions[m]; - let key = j + '-' + 'triggerStage' + '-' + 'triggerOff' + '-' + k + '-' + m; - - if (condition.javascriptCode !== undefined) { - newCondition(key, condition.javascriptCode, chart); - } - } - } - } - - if (triggerStage.takePosition !== undefined) { - - for (let k = 0; k < triggerStage.takePosition.situations.length; k++) { - - let situation = triggerStage.takePosition.situations[k]; - - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = situation.conditions[m]; - let key = j + '-' + 'triggerStage' + '-' + 'takePosition' + '-' + k + '-' + m; - - if (condition.javascriptCode !== undefined) { - newCondition(key, condition.javascriptCode, chart); - } - } - } - } - } - - let openStage = strategy.openStage - - if (openStage !== undefined) { - - /* Default Values*/ - if (baseAsset === bot.market.baseAsset) { - positionSize = balanceBaseAsset; - positionRate = candle.close; - } else { - positionSize = balanceQuotedAsset; - positionRate = candle.close; - } - - let initialDefinition = openStage.initialDefinition - - if (initialDefinition !== undefined) { - - if (tradePositionSize !== 0) { - positionSize = tradePositionSize - } else { - if (initialDefinition.positionSize !== undefined) { - if (initialDefinition.positionSize.formula !== undefined) { - try { - let code = initialDefinition.positionSize.formula.code - positionSize = eval(code); - addCodeToSnapshot(code) - } catch (err) { - initialDefinition.positionSize.formula.error = err.message - } - if (isNaN(positionSize)) { - if (baseAsset === bot.market.baseAsset) { - positionSize = balanceBaseAsset; - } else { - positionSize = balanceQuotedAsset; - } - } else { - if (baseAsset === bot.market.baseAsset) { - if (positionSize > balanceBaseAsset) { positionSize = balanceBaseAsset } - } else { - if (positionSize > balanceQuotedAsset) { positionSize = balanceQuotedAsset } - } - } - } - } - } - - if (tradePositionRate !== 0) { - positionRate = tradePositionRate - } else { - if (initialDefinition.positionRate !== undefined) { - if (initialDefinition.positionRate.formula !== undefined) { - try { - let code = initialDefinition.positionRate.formula.code - positionRate = eval(initialDefinition.positionRate.formula.code); - addCodeToSnapshot(code) - } catch (err) { - initialDefinition.positionRate.formula.error = err.message - } - if (isNaN(positionRate)) { - if (baseAsset === bot.market.baseAsset) { - positionRate = candle.close; - } else { - positionRate = candle.close; - } - } - } - } - } - - if (initialDefinition.stopLoss !== undefined) { - - for (let p = 0; p < initialDefinition.stopLoss.phases.length; p++) { - - let phase = initialDefinition.stopLoss.phases[p]; - - /* Evaluate Formula */ - let formulaValue - let formulaError = '' - - if (phase.formula !== undefined) { - try { - let code = phase.formula.code - formulaValue = eval(code); - addCodeToSnapshot(code) - if (formulaValue === Infinity) { - formulaError = "Formula evaluates to Infinity." - formulaValue = MAX_STOP_LOSS_VALUE - if (stopLossStage === 'Open Stage') { - formulaError = "WARNING: Formula evaluates to Infinity." - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[WARN] runSimulation -> loop -> initialDefinition.stopLoss -> MAX_STOP_LOSS_VALUE -> formulaError = " + formulaError); } - } - } - } catch (err) { - if (phase.formula.code.indexOf('previous') > 0 && err.message.indexOf('of undefined') > 0) { - /* - We are not going to set an error for the casess we are using previous and the error is that the indicator is undefined. - */ - } else { - formulaError = err.message - } - } - if (isNaN(formulaValue)) { formulaValue = 0; } - if (formulaValue < MIN_STOP_LOSS_VALUE) { - formulaValue = MIN_STOP_LOSS_VALUE - if (stopLossStage === 'Open Stage') { - formulaError = "WARNING: Formula is evaluating below the MIN_STOP_LOSS_VALUE." - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[WARN] runSimulation -> loop -> initialDefinition.stopLoss -> MIN_STOP_LOSS_VALUE -> formulaError = " + formulaError); } - } - } - - formulasErrors.push('"' + formulaError + '"') - formulasValues.push(formulaValue) - let key = j + '-' + 'openStage' + '-' + 'initialDefinition' + '-' + 'stopLoss' + '-' + p; - formulas.set(key, formulaValue) - } - - /* next phase event */ - let nextPhaseEvent = phase.nextPhaseEvent; - if (nextPhaseEvent !== undefined) { - - for (let k = 0; k < nextPhaseEvent.situations.length; k++) { - - let situation = nextPhaseEvent.situations[k]; - - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = situation.conditions[m]; - let key = j + '-' + 'openStage' + '-' + 'initialDefinition' + '-' + 'stopLoss' + '-' + p + '-' + k + '-' + m; - - if (condition.javascriptCode !== undefined) { - newCondition(key, condition.javascriptCode, chart); - } - } - } - } - - /* move to phase events */ - for (let n = 0; n < phase.moveToPhaseEvents.length; n++) { - let moveToPhaseEvent = phase.moveToPhaseEvents[n]; - if (moveToPhaseEvent !== undefined) { - - for (let k = 0; k < moveToPhaseEvent.situations.length; k++) { - - let situation = moveToPhaseEvent.situations[k]; - - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = situation.conditions[m]; - let key = j + '-' + 'openStage' + '-' + 'initialDefinition' + '-' + 'stopLoss' + '-' + p + '-' + n + '-' + k + '-' + m; - - if (condition.javascriptCode !== undefined) { - newCondition(key, condition.javascriptCode, chart); - } - } - } - } - } - } - } - - if (initialDefinition.takeProfit !== undefined) { - - for (let p = 0; p < initialDefinition.takeProfit.phases.length; p++) { - - let phase = initialDefinition.takeProfit.phases[p]; - - /* Evaluate Formula */ - let formulaValue - let formulaError = '' - - if (phase.formula !== undefined) { - try { - let code = phase.formula.code - formulaValue = eval(code); - addCodeToSnapshot(code) - if (formulaValue === Infinity) { - formulaValue = MAX_TAKE_PROFIT_VALUE - if (takeProfitStage === 'Open Stage') { - formulaError = "WARNING: Formula evaluates to Infinity." - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[WARN] runSimulation -> loop -> initialDefinition.takeProfit -> MAX_TAKE_PROFIT_VALUE -> formulaError = " + formulaError); } - } - } - } catch (err) { - if (phase.formula.code.indexOf('previous') > 0 && err.message.indexOf('of undefined') > 0) { - /* - We are not going to set an error for the casess we are using previous and the error is that the indicator is undefined. - */ - } else { - formulaError = err.message - } - } - if (isNaN(formulaValue)) { formulaValue = 0; } - if (formulaValue < MIN_TAKE_PROFIT_VALUE) { - formulaValue = MIN_TAKE_PROFIT_VALUE - if (takeProfitStage === 'Open Stage') { - formulaError = "WARNING: Formula is evaluating below the MIN_TAKE_PROFIT_VALUE." - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[WARN] runSimulation -> loop -> initialDefinition.takeProfit -> MIN_TAKE_PROFIT_VALUE -> formulaError = " + formulaError); } - } - } - - formulasErrors.push('"' + formulaError + '"') - formulasValues.push(formulaValue) - let key = j + '-' + 'openStage' + '-' + 'initialDefinition' + '-' + 'takeProfit' + '-' + p; - formulas.set(key, formulaValue) - } - - /* next phase event */ - let nextPhaseEvent = phase.nextPhaseEvent; - if (nextPhaseEvent !== undefined) { - - for (let k = 0; k < nextPhaseEvent.situations.length; k++) { - - let situation = nextPhaseEvent.situations[k]; - - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = situation.conditions[m]; - let key = j + '-' + 'openStage' + '-' + 'initialDefinition' + '-' + 'takeProfit' + '-' + p + '-' + k + '-' + m; - - if (condition.javascriptCode !== undefined) { - newCondition(key, condition.javascriptCode, chart); - } - } - } - } - - /* move to phase events */ - for (let n = 0; n < phase.moveToPhaseEvents.length; n++) { - let moveToPhaseEvent = phase.moveToPhaseEvents[n]; - if (moveToPhaseEvent !== undefined) { - - for (let k = 0; k < moveToPhaseEvent.situations.length; k++) { - - let situation = moveToPhaseEvent.situations[k]; - - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = situation.conditions[m]; - let key = j + '-' + 'openStage' + '-' + 'initialDefinition' + '-' + 'takeProfit' + '-' + p + '-' + n + '-' + k + '-' + m; - - if (condition.javascriptCode !== undefined) { - newCondition(key, condition.javascriptCode, chart); - } - } - } - } - } - } - } - } - - strategy.positionSize = positionSize - strategy.positionRate = positionRate - } - - let manageStage = strategy.manageStage - - if (manageStage !== undefined) { - - if (manageStage.stopLoss !== undefined) { - - for (let p = 0; p < manageStage.stopLoss.phases.length; p++) { - - let phase = manageStage.stopLoss.phases[p]; - - /* Evaluate Formula */ - let formulaValue - let formulaError = '' - - if (phase.formula !== undefined) { - try { - let code = phase.formula.code - formulaValue = eval(code); - addCodeToSnapshot(code) - if (formulaValue === Infinity) { - formulaError = "" - formulaValue = MAX_STOP_LOSS_VALUE - if (stopLossStage === 'Manage Stage') { - formulaError = "WARNING: Formula evaluates to Infinity." - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[WARN] runSimulation -> loop -> manageStage.stopLoss -> MAX_STOP_LOSS_VALUE -> formulaError = " + formulaError); } - } - } - } catch (err) { - if (phase.formula.code.indexOf('previous') > 0 && err.message.indexOf('of undefined') > 0) { - /* - We are not going to set an error for the casess we are using previous and the error is that the indicator is undefined. - */ - } else { - formulaError = err.message - } - } - if (isNaN(formulaValue)) { formulaValue = 0; } - if (formulaValue < MIN_STOP_LOSS_VALUE) { - formulaValue = MIN_STOP_LOSS_VALUE - if (stopLossStage === 'Manage Stage') { - formulaError = "WARNING: Formula is evaluating below the MIN_STOP_LOSS_VALUE." - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[WARN] runSimulation -> loop -> manageStage.stopLoss -> MIN_STOP_LOSS_VALUE -> formulaError = " + formulaError); } - } - } - - formulasErrors.push('"' + formulaError + '"') - formulasValues.push(formulaValue) - let key = j + '-' + 'manageStage' + '-' + 'stopLoss' + '-' + p; - formulas.set(key, formulaValue) - } - - /* next phase event */ - let nextPhaseEvent = phase.nextPhaseEvent; - if (nextPhaseEvent !== undefined) { - - for (let k = 0; k < nextPhaseEvent.situations.length; k++) { - - let situation = nextPhaseEvent.situations[k]; - - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = situation.conditions[m]; - let key = j + '-' + 'manageStage' + '-' + 'stopLoss' + '-' + p + '-' + k + '-' + m; - - if (condition.javascriptCode !== undefined) { - newCondition(key, condition.javascriptCode, chart); - } - } - } - } - - /* move to phase events */ - for (let n = 0; n < phase.moveToPhaseEvents.length; n++) { - let moveToPhaseEvent = phase.moveToPhaseEvents[n]; - if (moveToPhaseEvent !== undefined) { - - for (let k = 0; k < moveToPhaseEvent.situations.length; k++) { - - let situation = moveToPhaseEvent.situations[k]; - - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = situation.conditions[m]; - let key = j + '-' + 'manageStage' + '-' + 'stopLoss' + '-' + p + '-' + n + '-' + k + '-' + m; - - if (condition.javascriptCode !== undefined) { - newCondition(key, condition.javascriptCode, chart); - } - } - } - } - } - } - } - - if (manageStage.takeProfit !== undefined) { - - for (let p = 0; p < manageStage.takeProfit.phases.length; p++) { - - let phase = manageStage.takeProfit.phases[p]; - - /* Evaluate Formula */ - let formulaValue - let formulaError = '' - - if (phase.formula !== undefined) { - try { - let code = phase.formula.code - formulaValue = eval(code); - addCodeToSnapshot(code) - if (formulaValue === Infinity) { - formulaError = "Formula evaluates to Infinity." - formulaValue = MAX_TAKE_PROFIT_VALUE - if (takeProfitStage === 'Manage Stage') { - formulaError = "WARNING: Formula evaluates to Infinity." - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[WARN] runSimulation -> loop -> manageStage.takeProfit -> MAX_TAKE_PROFIT_VALUE -> formulaError = " + formulaError); } - } - } - } catch (err) { - if (phase.formula.code.indexOf('previous') > 0 && err.message.indexOf('of undefined') > 0) { - /* - We are not going to set an error for the casess we are using previous and the error is that the indicator is undefined. - */ - } else { - formulaError = err.message - } - } - if (isNaN(formulaValue)) { formulaValue = 0; } - if (formulaValue < MIN_TAKE_PROFIT_VALUE) { - formulaValue = MIN_TAKE_PROFIT_VALUE - if (takeProfitStage === 'Manage Stage') { - formulaError = "WARNING: Formula is evaluating below the MIN_TAKE_PROFIT_VALUE." - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[WARN] runSimulation -> loop -> manageStage.takeProfit -> MIN_TAKE_PROFIT_VALUE -> formulaError = " + formulaError); } - } - } - - formulasErrors.push('"' + formulaError + '"') - formulasValues.push(formulaValue) - let key = j + '-' + 'manageStage' + '-' + 'takeProfit' + '-' + p; - formulas.set(key, formulaValue) - } - - /* next phase event */ - let nextPhaseEvent = phase.nextPhaseEvent; - if (nextPhaseEvent !== undefined) { - - for (let k = 0; k < nextPhaseEvent.situations.length; k++) { - - let situation = nextPhaseEvent.situations[k]; - - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = situation.conditions[m]; - let key = j + '-' + 'manageStage' + '-' + 'takeProfit' + '-' + p + '-' + k + '-' + m; - - if (condition.javascriptCode !== undefined) { - newCondition(key, condition.javascriptCode, chart); - } - } - } - } - - /* move to phase events */ - for (let n = 0; n < phase.moveToPhaseEvents.length; n++) { - let moveToPhaseEvent = phase.moveToPhaseEvents[n]; - if (moveToPhaseEvent !== undefined) { - - for (let k = 0; k < moveToPhaseEvent.situations.length; k++) { - - let situation = moveToPhaseEvent.situations[k]; - - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = situation.conditions[m]; - let key = j + '-' + 'manageStage' + '-' + 'takeProfit' + '-' + p + '-' + n + '-' + k + '-' + m; - - if (condition.javascriptCode !== undefined) { - newCondition(key, condition.javascriptCode, chart); - } - } - } - } - } - } - } - } - - function newCondition(key, node, chart) { - - let condition; - let error = '' - let value - - try { - let code = node.code - value = eval(code); - addCodeToSnapshot(code) - } catch (err) { - /* - One possible error is that the conditions references a .previous that is undefined. For this - reason and others, we will simply set the value to false. - */ - value = false - - if (node.code.indexOf('previous') > -1 && err.message.indexOf('of undefined') > -1 || - node.code.indexOf('chart') > -1 && err.message.indexOf('of undefined') > -1 - ) { - /* - We are not going to set an error for the casess we are using previous and the error is that the indicator is undefined. - */ - } else { - node.error = err.message + " @ " + (new Date(candle.begin)).toLocaleString() - } - } - - condition = { - key: key, - value: value - }; - - conditions.set(condition.key, condition); - - if (condition.value) { - conditionsArrayValues.push(1); - } else { - conditionsArrayValues.push(0); - } - } - } - - /* Trigger On Conditions */ - if ( - strategyStage === 'No Stage' && - currentStrategyIndex === -1 - ) { - let minimumBalance - let maximumBalance - let balance - - if (baseAsset === bot.market.baseAsset) { - balance = balanceBaseAsset - minimumBalance = bot.VALUES_TO_USE.minimumBalanceA - maximumBalance = bot.VALUES_TO_USE.maximumBalanceA - } else { - balance = balanceQuotedAsset - minimumBalance = bot.VALUES_TO_USE.minimumBalanceB - maximumBalance = bot.VALUES_TO_USE.maximumBalanceB - } - - let stopRunningDate = new Date(candle.begin) - if (balance <= minimumBalance) { - tradingSystem.error = "Min Balance @ " + stopRunningDate.toLocaleString() - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> " + tradingSystem.error ); } - afterLoop() - return - } - - if (balance >= maximumBalance) { - tradingSystem.error = "Max Balance @ " + stopRunningDate.toLocaleString() - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> " + tradingSystem.error); } - afterLoop() - return - } - - /* - Here we need to pick a strategy, or if there is not suitable strategy for the current - market conditions, we pass until the next period. - - To pick a new strategy we will evaluate what we call the trigger on. Once we enter - into one strategy, we will ignore market conditions for others. However there is also - a strategy trigger off which can be hit before taking a position. If hit, we would - be outside a strategy again and looking for the condition to enter all over again. - - */ - - for (let j = 0; j < tradingSystem.strategies.length; j++) { - - if ( - strategyStage !== 'No Stage' || - currentStrategyIndex !== -1 - ) {continue} - - let strategy = tradingSystem.strategies[j]; - - let triggerStage = strategy.triggerStage - - if (triggerStage !== undefined) { - - if (triggerStage.triggerOn !== undefined) { - - for (let k = 0; k < triggerStage.triggerOn.situations.length; k++) { - - let situation = triggerStage.triggerOn.situations[k]; - let passed - if (situation.conditions.length > 0) { - passed = true - } - - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = situation.conditions[m]; - let key = j + '-' + 'triggerStage' + '-' + 'triggerOn' + '-' + k + '-' + m; - - let value = false - if (conditions.get(key) !== undefined) { - value = conditions.get(key).value; - } - - if (value === false) { passed = false; } - } - - if (passed) { - - strategyStage = 'Trigger Stage'; - checkAnnouncements(triggerStage) - - currentStrategyIndex = j; - currentStrategy.begin = candle.begin; - currentStrategy.beginRate = candle.min; - currentStrategy.endRate = candle.min; // In case the strategy does not get exited - currentStrategy.triggerOnSituation = situation.name - currentStrategy.name = strategy.name - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.strategyStage = strategyStage; - yesterday.currentStrategyIndex = currentStrategyIndex; - yesterday.currentStrategy.begin = currentStrategy.begin; - yesterday.currentStrategy.beginRate = currentStrategy.beginRate; - yesterday.currentStrategy.endRate = currentStrategy.endRate; - yesterday.currentStrategy.triggerOnSituation = currentStrategy.triggerOnSituation; - yesterday.currentStrategy.name = currentStrategy.name; - } - } - - distanceToLast.triggerOn = 1; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.distanceToLast.triggerOn = distanceToLast.triggerOn - } - } - - checkAnnouncements(triggerStage.triggerOn) - saveAsLastTriggerOnSnapshot = true - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Switching to Trigger Stage because conditions at Trigger On Event were met."); } - break; - } - } - } - } - } - - } - - /* Trigger Off Condition */ - if (strategyStage === 'Trigger Stage') { - - let strategy = tradingSystem.strategies[currentStrategyIndex]; - - let triggerStage = strategy.triggerStage - - if (triggerStage !== undefined) { - - if (triggerStage.triggerOff !== undefined) { - - for (let k = 0; k < triggerStage.triggerOff.situations.length; k++) { - - let situation = triggerStage.triggerOff.situations[k]; - let passed - if (situation.conditions.length > 0) { - passed = true - } - - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = situation.conditions[m]; - let key = currentStrategyIndex + '-' + 'triggerStage' + '-' + 'triggerOff' + '-' + k + '-' + m; - - let value = false - if (conditions.get(key) !== undefined) { - value = conditions.get(key).value; - } - - if (value === false) { passed = false; } - } - - if (passed) { - - currentStrategy.number = currentStrategyIndex - currentStrategy.end = candle.end; - currentStrategy.endRate = candle.min; - currentStrategy.status = 1; // This means the strategy is closed, i.e. that has a begin and end. - strategyStage = 'No Stage'; - currentStrategyIndex = -1; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.currentStrategy.number = currentStrategy.number; - yesterday.currentStrategy.end = currentStrategy.end; - yesterday.currentStrategy.endRate = currentStrategy.endRate; - yesterday.currentStrategy.status = currentStrategy.status; - yesterday.strategyStage = strategyStage; - yesterday.currentStrategyIndex = currentStrategyIndex; - } - } - - distanceToLast.triggerOff = 1; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.distanceToLast.triggerOff = distanceToLast.triggerOff - } - } - - checkAnnouncements(triggerStage.triggerOff) - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Switching to No Stage because conditions at the Trigger Off Event were met."); } - break; - } - } - } - } - } - - /* Take Position Condition */ - if (strategyStage === 'Trigger Stage') { - - let strategy = tradingSystem.strategies[currentStrategyIndex]; - - let triggerStage = strategy.triggerStage - - if (triggerStage !== undefined) { - - if (triggerStage.takePosition !== undefined) { - - for (let k = 0; k < triggerStage.takePosition.situations.length; k++) { - - let situation = triggerStage.takePosition.situations[k]; - let passed - if (situation.conditions.length > 0) { - passed = true - } - - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = situation.conditions[m]; - let key = currentStrategyIndex + '-' + 'triggerStage' + '-' + 'takePosition' + '-' + k + '-' + m; - - let value = false - if (conditions.get(key) !== undefined) { - value = conditions.get(key).value; - } - - if (value === false) { passed = false; } - } - - if (passed) { - - type = '"Take Position"'; - - strategyStage = 'Open Stage'; - checkAnnouncements(strategy.openStage) - - stopLossStage = 'Open Stage'; - takeProfitStage = 'Open Stage'; - stopLossPhase = 0; - takeProfitPhase = 0; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.strategyStage = strategyStage; - yesterday.stopLossStage = stopLossStage; - yesterday.takeProfitStage = takeProfitStage; - yesterday.stopLossPhase = stopLossPhase; - yesterday.takeProfitPhase = takeProfitPhase; - } - } - - takePositionNow = true - currentTrade.takePositionSituation = situation.name - - checkAnnouncements(triggerStage.takePosition) - saveAsLastTakePositionSnapshot = true - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Conditions at the Take Position Event were met."); } - break; - } - } - } - } - } - - /* Stop Loss Management */ - if ( - (strategyStage === 'Open Stage' || strategyStage === 'Manage Stage') && - takePositionNow !== true - ) { - - checkStopPhases() - calculateStopLoss(); - - } - - function checkStopPhases() { - - let strategy = tradingSystem.strategies[currentStrategyIndex]; - - let openStage = strategy.openStage - let manageStage = strategy.manageStage - let parentNode - let j = currentStrategyIndex - let stageKey - let initialDefinitionKey = '' - let p - - if (stopLossStage === 'Open Stage' && openStage !== undefined) { - if (openStage.initialDefinition !== undefined) { - if (openStage.initialDefinition.stopLoss !== undefined) { - parentNode = openStage.initialDefinition - initialDefinitionKey = '-' + 'initialDefinition' - stageKey = 'openStage' - p = stopLossPhase - } - } - } - - if (stopLossStage === 'Manage Stage' && manageStage !== undefined) { - if (manageStage.stopLoss !== undefined) { - parentNode = manageStage - stageKey = 'manageStage' - p = stopLossPhase - 1 - } - } - - if (parentNode !== undefined) { - let phase = parentNode.stopLoss.phases[p]; - - /* Check the next Phase Event. */ - let nextPhaseEvent = phase.nextPhaseEvent; - if (nextPhaseEvent !== undefined) { - - for (let k = 0; k < nextPhaseEvent.situations.length; k++) { - - let situation = nextPhaseEvent.situations[k]; - let passed - if (situation.conditions.length > 0) { - passed = true - } - - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = situation.conditions[m]; - let key = j + '-' + stageKey + initialDefinitionKey + '-' + 'stopLoss' + '-' + p + '-' + k + '-' + m; - - let value = false - if (conditions.get(key) !== undefined) { - value = conditions.get(key).value; - } - - if (value === false) { passed = false; } - } - - if (passed) { - - stopLossPhase++; - stopLossStage = 'Manage Stage' - if (takeProfitPhase > 0) { - strategyStage = 'Manage Stage' - checkAnnouncements(manageStage, 'Take Profit') - } - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.stopLossPhase = stopLossPhase; - yesterday.stopLossStage = stopLossStage; - yesterday.strategyStage = strategyStage; - } - } - - checkAnnouncements(nextPhaseEvent) - return; - } - } - } - - /* Check the Move to Phase Events. */ - for (let n = 0; n < phase.moveToPhaseEvents.length; n++) { - let moveToPhaseEvent = phase.moveToPhaseEvents[n]; - if (moveToPhaseEvent !== undefined) { - - for (let k = 0; k < moveToPhaseEvent.situations.length; k++) { - - let situation = moveToPhaseEvent.situations[k]; - let passed - if (situation.conditions.length > 0) { - passed = true - } - - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = situation.conditions[m]; - let key = j + '-' + stageKey + initialDefinitionKey + '-' + 'stopLoss' + '-' + p + '-' + n + '-' + k + '-' + m; - - let value = false - if (conditions.get(key) !== undefined) { - value = conditions.get(key).value; - } - - if (value === false) { passed = false; } - } - - if (passed) { - - let moveToPhase = moveToPhaseEvent.referenceParent - if (moveToPhase !== undefined) { - for (let q = 0; q < parentNode.stopLoss.phases.length; q++) { - if (parentNode.stopLoss.phases[q].id === moveToPhase.id) { - stopLossPhase = q + 1 - } - } - } else { - moveToPhaseEvent.error = "This Node needs to reference a Phase." - continue - } - - stopLossStage = 'Manage Stage' - if (takeProfitPhase > 0) { - strategyStage = 'Manage Stage' - checkAnnouncements(manageStage, 'Take Profit') - } - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.stopLossPhase = stopLossPhase; - yesterday.stopLossStage = stopLossStage; - yesterday.strategyStage = strategyStage; - } - } - - checkAnnouncements(moveToPhaseEvent) - return; - } - } - } - } - } - } - - function calculateStopLoss() { - - let strategy = tradingSystem.strategies[currentStrategyIndex]; - let openStage = strategy.openStage - let manageStage = strategy.manageStage - let phase - let key - - if (stopLossStage === 'Open Stage' && openStage !== undefined) { - if (openStage.initialDefinition !== undefined) { - if (openStage.initialDefinition.stopLoss !== undefined) { - phase = openStage.initialDefinition.stopLoss.phases[stopLossPhase]; - key = currentStrategyIndex + '-' + 'openStage' + '-' + 'initialDefinition' + '-' + 'stopLoss' + '-' + (stopLossPhase); - } - } - } - - if (stopLossStage === 'Manage Stage' && manageStage !== undefined) { - if (manageStage.stopLoss !== undefined) { - phase = manageStage.stopLoss.phases[stopLossPhase - 1]; - key = currentStrategyIndex + '-' + 'manageStage' + '-' + 'stopLoss' + '-' + (stopLossPhase - 1); - } - } - - if (phase !== undefined) { - if (phase.formula !== undefined) { - let previousValue = stopLoss - - stopLoss = formulas.get(key) - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.stopLoss = stopLoss - } - } - - if (stopLoss !== previousValue) { - checkAnnouncements(phase, stopLoss) - } - } - } - } - - /* Take Profit Management */ - if ( - (strategyStage === 'Open Stage' || strategyStage === 'Manage Stage') && - takePositionNow !== true - ) { - - checkTakeProfitPhases(); - calculateTakeProfit(); - - } - - function checkTakeProfitPhases() { - - let strategy = tradingSystem.strategies[currentStrategyIndex]; - - let openStage = strategy.openStage - let manageStage = strategy.manageStage - let parentNode - let j = currentStrategyIndex - let stageKey - let initialDefinitionKey = '' - let p - - if (takeProfitStage === 'Open Stage' && openStage !== undefined) { - if (openStage.initialDefinition !== undefined) { - if (openStage.initialDefinition.takeProfit !== undefined) { - parentNode = openStage.initialDefinition - initialDefinitionKey = '-' + 'initialDefinition' - stageKey = 'openStage' - p = takeProfitPhase - } - } - } - - if (takeProfitStage === 'Manage Stage' && manageStage !== undefined) { - if (manageStage.takeProfit !== undefined) { - parentNode = manageStage - stageKey = 'manageStage' - p = takeProfitPhase - 1 - } - } - - if (parentNode !== undefined) { - let phase = parentNode.takeProfit.phases[p]; - if (phase === undefined) {return} // trying to jump to a phase that does not exists. - - /* Check the next Phase Event. */ - let nextPhaseEvent = phase.nextPhaseEvent; - if (nextPhaseEvent !== undefined) { - - for (let k = 0; k < nextPhaseEvent.situations.length; k++) { - - let situation = nextPhaseEvent.situations[k]; - let passed - if (situation.conditions.length > 0) { - passed = true - } - - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = situation.conditions[m]; - let key = j + '-' + stageKey + initialDefinitionKey + '-' + 'takeProfit' + '-' + p + '-' + k + '-' + m; - - let value = false - if (conditions.get(key) !== undefined) { - value = conditions.get(key).value; - } - - if (value === false) { passed = false; } - } - - if (passed) { - - takeProfitPhase++; - takeProfitStage = 'Manage Stage' - if (stopLossPhase > 0) { - strategyStage = 'Manage Stage' - checkAnnouncements(manageStage, 'Stop') - } - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.takeProfitPhase = takeProfitPhase; - yesterday.takeProfitStage = takeProfitStage; - yesterday.strategyStage = strategyStage; - } - } - - checkAnnouncements(nextPhaseEvent) - return; - } - } - } - - /* Check the Move to Phase Events. */ - for (let n = 0; n < phase.moveToPhaseEvents.length; n++) { - let moveToPhaseEvent = phase.moveToPhaseEvents[n]; - if (moveToPhaseEvent !== undefined) { - - for (let k = 0; k < moveToPhaseEvent.situations.length; k++) { - - let situation = moveToPhaseEvent.situations[k]; - let passed - if (situation.conditions.length > 0) { - passed = true - } - - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = situation.conditions[m]; - let key = j + '-' + stageKey + initialDefinitionKey + '-' + 'takeProfit' + '-' + p + '-' + n + '-' + k + '-' + m; - - let value = false - if (conditions.get(key) !== undefined) { - value = conditions.get(key).value; - } - - if (value === false) { passed = false; } - } - - if (passed) { - - let moveToPhase = moveToPhaseEvent.referenceParent - if (moveToPhase !== undefined) { - for (let q = 0; q < parentNode.takeProfit.phases.length; q++) { - if (parentNode.takeProfit.phases[q].id === moveToPhase.id) { - takeProfitPhase = q + 1 - } - } - } else { - moveToPhaseEvent.error = "This Node needs to reference a Phase." - continue - } - - takeProfitStage = 'Manage Stage' - if (stopLossPhase > 0) { - strategyStage = 'Manage Stage' - checkAnnouncements(manageStage, 'Stop') - } - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.takeProfitPhase = takeProfitPhase; - yesterday.takeProfitStage = takeProfitStage; - yesterday.strategyStage = strategyStage; - } - } - - checkAnnouncements(moveToPhaseEvent) - return; - } - } - } - } - } - } - - function calculateTakeProfit() { - - let strategy = tradingSystem.strategies[currentStrategyIndex]; - let openStage = strategy.openStage - let manageStage = strategy.manageStage - let phase - let key - - if (takeProfitStage === 'Open Stage' && openStage !== undefined) { - if (openStage.initialDefinition !== undefined) { - if (openStage.initialDefinition.takeProfit !== undefined) { - phase = openStage.initialDefinition.takeProfit.phases[takeProfitPhase]; - key = currentStrategyIndex + '-' + 'openStage' + '-' + 'initialDefinition' + '-' + 'takeProfit' + '-' + (takeProfitPhase); - } - } - } - - if (takeProfitStage === 'Manage Stage' && manageStage !== undefined) { - if (manageStage.takeProfit !== undefined) { - phase = manageStage.takeProfit.phases[takeProfitPhase - 1]; - key = currentStrategyIndex + '-' + 'manageStage' + '-' + 'takeProfit' + '-' + (takeProfitPhase - 1); - } - } - - if (phase !== undefined) { - if (phase.formula !== undefined) { - - let previousValue = stopLoss - - takeProfit = formulas.get(key) - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.takeProfit = takeProfit - } - } - - if (takeProfit !== previousValue) { - checkAnnouncements(phase, takeProfit) - } - } - } - } - - /* Keeping Position Counters Up-to-date */ - if ( - (strategyStage === 'Open Stage' || strategyStage === 'Manage Stage') - ) { - - if (takePositionNow === true) { - positionPeriods = 0 - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.positionPeriods = 0 - } - } - } - - positionPeriods++; - positionDays = positionPeriods * timeFrame / ONE_DAY_IN_MILISECONDS; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.positionPeriods = positionPeriods - } - } - } else { - positionPeriods = 0 - positionDays = 0 - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.positionPeriods = 0 - } - } - } - - /* Keeping Distance Counters Up-to-date */ - if ( - distanceToLast.triggerOn > 0 // with this we avoind counting before the first event happens. - ) { - distanceToLast.triggerOn++; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.distanceToLast.triggerOn = distanceToLast.triggerOn - } - } - } - - if ( - distanceToLast.triggerOff > 0 // with this we avoind counting before the first event happens. - ) { - distanceToLast.triggerOff++; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.distanceToLast.triggerOff = distanceToLast.triggerOff - } - } - } - - if ( - distanceToLast.takePosition > 0 // with this we avoind counting before the first event happens. - ) { - distanceToLast.takePosition++; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.distanceToLast.takePosition = distanceToLast.takePosition - } - } - } - - if ( - distanceToLast.closePosition > 0 // with this we avoind counting before the first event happens. - ) { - distanceToLast.closePosition++; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.distanceToLast.takePosition = distanceToLast.closePosition - } - } - } - - /* Checking if Stop or Take Profit were hit */ - if ( - (strategyStage === 'Open Stage' || strategyStage === 'Manage Stage') && - takePositionNow !== true - ) { - let strategy = tradingSystem.strategies[currentStrategyIndex]; - - /* Checking what happened since the last execution. We need to know if the Stop Loss - or our Take Profit were hit. */ - - /* Stop Loss condition: Here we verify if the Stop Loss was hitted or not. */ - - if ((baseAsset === bot.market.baseAsset && candle.max >= stopLoss) || (baseAsset !== bot.market.baseAsset && candle.min <= stopLoss)) { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Stop Loss was hit."); } - /* - Hit Point Validation - - This prevents misscalculations when a formula places the stop loss in this case way beyond the market price. - If we take the stop loss value at those situation would be a huge distortion of facts. - */ - - if (baseAsset === bot.market.baseAsset) { - if (stopLoss < candle.min) { - stopLoss = candle.min - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.stopLoss = stopLoss - } - } - } - } else { - if (stopLoss > candle.max) { - stopLoss = candle.max - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.stopLoss = stopLoss - } - } - } - } - - let slippedStopLoss = stopLoss - - /* Apply the Slippage */ - let slippageAmount = slippedStopLoss * bot.VALUES_TO_USE.slippage.stopLoss / 100 - - if (baseAsset === bot.market.baseAsset) { - slippedStopLoss = slippedStopLoss + slippageAmount - } else { - slippedStopLoss = slippedStopLoss - slippageAmount - } - - closeRate = slippedStopLoss; - - marketRate = closeRate; - type = '"Close@StopLoss"'; - strategyStage = 'Close Stage'; - checkAnnouncements(strategy.closeStage, 'Stop') - - stopLossStage = 'No Stage'; - takeProfitStage = 'No Stage'; - currentTrade.end = candle.end; - currentTrade.status = 1; - currentTrade.exitType = 1; - currentTrade.endRate = closeRate; - - closePositionNow = true; - addToSnapshots = true - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.strategyStage = strategyStage; - yesterday.stopLossStage = stopLossStage; - yesterday.takeProfitStage = takeProfitStage; - yesterday.currentTrade.end = currentTrade.end; - yesterday.currentTrade.status = currentTrade.status; - yesterday.currentTrade.exitType = currentTrade.exitType; - yesterday.currentTrade.endRate = currentTrade.endRate; - } - } - } - - /* Take Profit condition: Here we verify if the Take Profit was hit or not. */ - - if ((baseAsset === bot.market.baseAsset && candle.min <= takeProfit) || (baseAsset !== bot.market.baseAsset && candle.max >= takeProfit)) { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Take Profit was hit."); } - /* - Hit Point Validation: - - This prevents misscalculations when a formula places the take profit in this case way beyond the market price. - If we take the stop loss value at those situation would be a huge distortion of facts. - */ - - if (baseAsset === bot.market.baseAsset) { - if (takeProfit > candle.max) { - takeProfit = candle.max - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.takeProfit = takeProfit - } - } - } - } else { - if (takeProfit < candle.min) { - takeProfit = candle.min - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.takeProfit = takeProfit - } - } - } - } - - let slippedTakeProfit = takeProfit - /* Apply the Slippage */ - let slippageAmount = slippedTakeProfit * bot.VALUES_TO_USE.slippage.takeProfit / 100 - - if (baseAsset === bot.market.baseAsset) { - slippedTakeProfit = slippedTakeProfit + slippageAmount - } else { - slippedTakeProfit = slippedTakeProfit - slippageAmount - } - - closeRate = slippedTakeProfit; - - marketRate = closeRate; - type = '"Close@TakeProfit"'; - strategyStage = 'Close Stage'; - checkAnnouncements(strategy.closeStage, 'Take Profit') - - stopLossStage = 'No Stage'; - takeProfitStage = 'No Stage'; - - currentTrade.end = candle.end; - currentTrade.status = 1; - currentTrade.exitType = 2; - currentTrade.endRate = closeRate; - - closePositionNow = true; - addToSnapshots = true - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.strategyStage = strategyStage; - yesterday.stopLossStage = stopLossStage; - yesterday.takeProfitStage = takeProfitStage; - - yesterday.currentTrade.end = currentTrade.end; - yesterday.currentTrade.status = currentTrade.status; - yesterday.currentTrade.exitType = currentTrade.exitType; - yesterday.currentTrade.endRate = currentTrade.endRate; - } - } - } - } - - /* Taking a Position */ - if ( - takePositionNow === true - ) { - takePositionNow = false - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> takePositionNow -> Entering code block."); } - - /* Inicializing this counter */ - distanceToLast.takePosition = 1; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.distanceToLast.takePosition = distanceToLast.takePosition - } - } - - /* Position size and rate */ - let strategy = tradingSystem.strategies[currentStrategyIndex]; - - tradePositionSize = strategy.positionSize; - tradePositionRate = strategy.positionRate; - - /* We take what was calculated at the formula and apply the slippage. */ - let slippageAmount = tradePositionRate * bot.VALUES_TO_USE.slippage.positionRate / 100 - - if (baseAsset === bot.market.baseAsset) { - tradePositionRate = tradePositionRate - slippageAmount - } else { - tradePositionRate = tradePositionRate + slippageAmount - } - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.tradePositionSize = tradePositionSize; - yesterday.tradePositionRate = tradePositionRate; - } - } - - /* Update the trade record information. */ - currentTrade.begin = candle.begin; - currentTrade.beginRate = tradePositionRate; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.currentTrade.begin = currentTrade.begin; - yesterday.currentTrade.beginRate = currentTrade.beginRate; - } - } - - /* Check if we need to execute. */ - if (currentCandleIndex > candles.length - 10) { /* Only at the last candles makes sense to check if we are in live mode or not.*/ - /* Check that we are in LIVE MODE */ - if (bot.startMode === "Live") { - /* We see if we need to put the actual order at the exchange. */ - if (interExecutionMemory.executionContext !== undefined) { - switch (interExecutionMemory.executionContext.status) { - case "Without a Position": { // We need to put the order because It was not put yet. - if (strategy.openStage !== undefined) { - if (strategy.openStage.openExecution !== undefined) { - putOpeningOrder() - return - } - } - break - } - case "Position Closed": { // Waiting for a confirmation that the position was closed. - if (strategy.openStage !== undefined) { - if (strategy.openStage.openExecution !== undefined) { - putOpeningOrder() - return - } - } - break - } - case "Taking Position": { // Waiting for a confirmation that the position was taken. - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> takePositionNow -> Exiting code block because status is Taking Position."); } - break - } - case "In a Position": { // This should mean that we already put the order at the exchange. - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> takePositionNow -> Exiting code block because status is In a Position."); } - break - } - } - } else { // The context does not exist so it means we are not in a position. - if (strategy.openStage !== undefined) { - if (strategy.openStage.openExecution !== undefined) { - putOpeningOrder() - return - } - } - } - } else { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> takePositionNow -> Not trading live."); } - } - } else { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> takePositionNow -> Not the last closed candle."); } - } - - takePositionAtSimulation() - - return - - function putOpeningOrder() { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> putOpeningOrder -> Entering function."); } - - /* We wont take a position unless we are withing the bot.VALUES_TO_USE.timeRange.initialDatetime and the bot.VALUES_TO_USE.timeRange.finalDatetime range */ - if (bot.VALUES_TO_USE.timeRange.initialDatetime !== undefined) { - if (candle.end < bot.VALUES_TO_USE.timeRange.initialDatetime.valueOf()) { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> putOpeningOrder -> Not placing the trade at the exchange because current candle ends before the start date. -> bot.VALUES_TO_USE.timeRange.initialDatetime = " + bot.VALUES_TO_USE.timeRange.initialDatetime); } - takePositionAtSimulation() - return; - } - } - - /*We wont take a position if we are past the final datetime */ - if (bot.VALUES_TO_USE.timeRange.finalDatetime !== undefined) { - if (candle.begin > bot.VALUES_TO_USE.timeRange.finalDatetime.valueOf()) { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> putOpeningOrder -> Not placing the trade at the exchange because current candle begins after the end date. -> bot.VALUES_TO_USE.timeRange.finalDatetime = " + bot.VALUES_TO_USE.timeRange.finalDatetime); } - takePositionAtSimulation() - return; - } - } - - /* Mechanism to avoid putting the same order over and over again at different executions of the simulation engine. */ - if (interExecutionMemory.executionContext !== undefined) { - if (interExecutionMemory.executionContext.periods !== undefined) { - if (periods <= interExecutionMemory.executionContext.periods) { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> putOpeningOrder -> Not placing the trade at the exchange because it was already placed at a previous execution."); } - takePositionAtSimulation() - return; - } - } - } - - /* We are not going to place orders based on outdated information. The next filter prevents firing orders when backtesting. */ - if (currentDay) { - let today = new Date(Math.trunc((new Date().valueOf()) / ONE_DAY_IN_MILISECONDS) * ONE_DAY_IN_MILISECONDS) - let processDay = new Date(Math.trunc(currentDay.valueOf() / ONE_DAY_IN_MILISECONDS) * ONE_DAY_IN_MILISECONDS) - if (today.valueOf() !== processDay.valueOf()) { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> putOpeningOrder -> Not placing the trade at the exchange because the current candle belongs to the previous day and that is considered simulation and not live trading."); } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> putOpeningOrder -> today = " + today); } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> putOpeningOrder -> processDay = " + processDay); } - takePositionAtSimulation() - return; - } - } - - let orderPrice - let amountA - let amountB - let orderSide - - - if (baseAsset === bot.market.baseAsset) { - orderSide = "sell" - - orderPrice = tradePositionRate - - amountA = tradePositionSize * orderPrice - amountB = tradePositionSize - - } else { - orderSide = "buy" - - orderPrice = tradePositionRate - - amountA = tradePositionSize - amountB = tradePositionSize / orderPrice - - } - - interExecutionMemory.executionContext = { - status: "Taking Position", - periods: periods, - } - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> putOpeningOrder -> Ready to create order."); } - exchangeAPI.createOrder(bot.market, orderSide, orderPrice, amountA, amountB, onOrderCreated) - - function onOrderCreated(err, order) { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> putOpeningOrder -> onOrderCreated -> Entering function."); } - - try { - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> putOpeningOrder -> onOrderCreated -> DEFAULT_OK_RESPONSE "); } - interExecutionMemory.executionContext = { - status: "In a Position", - periods: periods, - amountA: amountA, - amountB: amountB, - orderId: order.id - } - takePositionAtSimulation() - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> putOpeningOrder -> onOrderCreated -> DEFAULT_FAIL_RESPONSE "); } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[ERROR] runSimulation -> loop -> putOpeningOrder -> onOrderCreated -> Message = " + err.message); } - strategy.openStage.openExecution.error = err.message - afterLoop() - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> putOpeningOrder -> onOrderCreated -> DEFAULT_RETRY_RESPONSE "); } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[ERROR] runSimulation -> loop -> putOpeningOrder -> onOrderCreated -> Message = " + err.message); } - strategy.openStage.openExecution.error = err.message - afterLoop() - return; - } - } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[ERROR] runSimulation -> loop -> putOpeningOrder -> onOrderCreated -> Unexpected Response -> Message = " + err.message); } - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] runSimulation -> loop -> putOpeningOrder -> onOrderCreated -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return - } - } - } - - function takePositionAtSimulation() { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> takePositionAtSimulation -> Entering function."); } - - /* Continue with the simulation */ - calculateTakeProfit(); - calculateStopLoss(); - - marketRate = candle.close; - - previousBalanceBaseAsset = balanceBaseAsset; - previousBalanceQuotedAsset = balanceQuotedAsset; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.previousBalanceBaseAsset = previousBalanceBaseAsset; - yesterday.previousBalanceQuotedAsset = previousBalanceQuotedAsset; - } - } - - lastTradeProfitLoss = 0; - lastTradeROI = 0; - - let feePaid = 0 - - if (baseAsset === bot.market.baseAsset) { - - feePaid = tradePositionSize * tradePositionRate * bot.VALUES_TO_USE.feeStructure.taker / 100 - - balanceQuotedAsset = balanceQuotedAsset + tradePositionSize * tradePositionRate - feePaid; - balanceBaseAsset = balanceBaseAsset - tradePositionSize; - } else { - - feePaid = tradePositionSize / tradePositionRate * bot.VALUES_TO_USE.feeStructure.taker / 100 - - balanceBaseAsset = balanceBaseAsset + tradePositionSize / tradePositionRate - feePaid; - balanceQuotedAsset = balanceQuotedAsset - tradePositionSize; - } - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.balanceBaseAsset = balanceBaseAsset; - yesterday.balanceQuotedAsset = balanceQuotedAsset; - - yesterday.lastTradeProfitLoss = lastTradeProfitLoss; - yesterday.lastTradeROI = lastTradeROI; - } - } - - addRecord(); - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> takePositionAtSimulation -> Exiting Loop Body after taking position at simulation."); } - controlLoop(); - return - } - } - - if (closePositionNow === true) { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Closing a Position -> Entering code block."); } - - closePositionNow = false - - /* Inicializing this counter */ - distanceToLast.closePosition = 1; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.distanceToLast.closePosition = distanceToLast.closePosition - } - } - - /* Position size and rate */ - let strategy = tradingSystem.strategies[currentStrategyIndex]; - - if (currentCandleIndex > candles.length - 10) { /* Only at the last candles makes sense to check if we are in live mode or not.*/ - /* Check that we are in LIVE MODE */ - if (bot.startMode === "Live") { - /* We see if we need to put the actual order at the exchange. */ - if (interExecutionMemory.executionContext !== undefined) { - switch (interExecutionMemory.executionContext.status) { - case "Without a Position": { // No way to close anything at the exchange. - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Closing a Position -> Exiting code block because status is Without a Position."); } - break - } - case "In a Position": { // This should mean that we already put the order at the exchange. - if (strategy.closeStage !== undefined) { - if (strategy.closeStage.closeExecution !== undefined) { - putClosingOrder() - return - } - } - break - } - case "Closing Position": { // Waiting for a confirmation that the position was taken. - if (strategy.closeStage !== undefined) { - if (strategy.closeStage.closeExecution !== undefined) { - putClosingOrder() - return - } - } - break - } - - case "Position Closed": { // - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Closing a Position -> Exiting code block because status is Position Closed."); } - break - } - } - } - } - } else { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Closing a Position -> Not within the last 10 candles."); } - } - - closePositionAtSimulation() - return - - function putClosingOrder() { - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> putClosingOrder -> Entering function."); } - - /* Mechanism to avoid putting the same order over and over again at different executions of the simulation engine. */ - if (interExecutionMemory.executionContext !== undefined) { - if (interExecutionMemory.executionContext.periods !== undefined) { - if (periods <= interExecutionMemory.executionContext.periods) { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> putClosingOrder -> Exiting function because this closing was already submited at a previous execution."); } - closePositionAtSimulation() - return; - } - } - } - - let orderPrice - let amountA - let amountB - let orderSide - - if (baseAsset === bot.market.baseAsset) { - orderSide = "buy" - - orderPrice = ticker.last + 100; // This is provisional and totally arbitrary, until we have a formula on the designer that defines this stuff. - - amountA = balanceQuotedAsset - amountB = balanceQuotedAsset / orderPrice - - } else { - orderSide = "sell" - - orderPrice = ticker.last - 100; // This is provisional and totally arbitrary, until we have a formula on the designer that defines this stuff. - - amountA = balanceBaseAsset * orderPrice - amountB = balanceBaseAsset - - } - - interExecutionMemory.executionContext = { - status: "Closing Position", - periods: periods, - } - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> putClosingOrder -> About to close position at the exchange."); } - exchangeAPI.createOrder(bot.market, orderSide, orderPrice, amountA, amountB, onOrderCreated) - - function onOrderCreated(err, order) { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> putClosingOrder -> onOrderCreated -> Entering function."); } - - try { - switch (err.result) { - case global.DEFAULT_OK_RESPONSE.result: { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> putClosingOrder -> onOrderCreated -> DEFAULT_OK_RESPONSE "); } - interExecutionMemory.executionContext = { - status: "Position Closed", - periods: periods, - amountA: amountA, - amountB: amountB, - orderId: order.id - } - closePositionAtSimulation() - return; - } - case global.DEFAULT_FAIL_RESPONSE.result: { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> putClosingOrder -> onOrderCreated -> DEFAULT_FAIL_RESPONSE "); } - /* We will assume that the problem is temporary, and expect that it will work at the next execution.*/ - strategy.closeStage.closeExecution.error = err.message - afterLoop() - return; - } - case global.DEFAULT_RETRY_RESPONSE.result: { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> putOpeningOrder -> onOrderCreated -> DEFAULT_RETRY_RESPONSE "); } - strategy.closeStage.closeExecution.error = err.message - afterLoop() - return; - } - } - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[ERROR] runSimulation -> loop -> putClosingOrder -> onOrderCreated -> Unexpected Response -> Message = " + err.message); } - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return - - } catch (err) { - logger.write(MODULE_NAME, "[ERROR] runSimulation -> loop -> putClosingOrder -> onOrderCreated -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - return - } - } - } - - function closePositionAtSimulation() { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> closePositionAtSimulation -> Entering function."); } - - roundtrips++; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.roundtrips = roundtrips - } - } - - let feePaid = 0 - - if (baseAsset === bot.market.baseAsset) { - strategy.positionSize = balanceQuotedAsset / closeRate; - strategy.positionRate = closeRate; - - feePaid = balanceQuotedAsset / closeRate * bot.VALUES_TO_USE.feeStructure.taker / 100 - - balanceBaseAsset = balanceBaseAsset + balanceQuotedAsset / closeRate - feePaid; - balanceQuotedAsset = 0; - } else { - strategy.positionSize = balanceBaseAsset * closeRate; - strategy.positionRate = closeRate; - - feePaid = balanceBaseAsset * closeRate * bot.VALUES_TO_USE.feeStructure.taker / 100 - - balanceQuotedAsset = balanceQuotedAsset + balanceBaseAsset * closeRate - feePaid; - balanceBaseAsset = 0; - } - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.balanceBaseAsset = balanceBaseAsset; - yesterday.balanceQuotedAsset = balanceQuotedAsset; - - } - } - - if (baseAsset === bot.market.baseAsset) { - lastTradeProfitLoss = balanceBaseAsset - previousBalanceBaseAsset; - lastTradeROI = lastTradeProfitLoss * 100 / tradePositionSize; - if (isNaN(lastTradeROI)) { lastTradeROI = 0; } - profit = balanceBaseAsset - bot.VALUES_TO_USE.initialBalanceA; - } else { - lastTradeProfitLoss = balanceQuotedAsset - previousBalanceQuotedAsset; - lastTradeROI = lastTradeProfitLoss * 100 / tradePositionSize; - if (isNaN(lastTradeROI)) { lastTradeROI = 0; } - profit = balanceQuotedAsset - bot.VALUES_TO_USE.initialBalanceB; - } - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.lastTradeProfitLoss = lastTradeProfitLoss; - yesterday.profit = profit; - yesterday.lastTradeROI = lastTradeROI; - } - } - - currentTrade.lastTradeROI = lastTradeROI; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.currentTrade.lastTradeROI = currentTrade.lastTradeROI; - } - } - - if (lastTradeProfitLoss > 0) { - hits++; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.hits = hits - } - } - - } else { - fails++; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.fails = fails - } - } - } - - if (baseAsset === bot.market.baseAsset) { - ROI = (bot.VALUES_TO_USE.initialBalanceA + profit) / bot.VALUES_TO_USE.initialBalanceA - 1; - hitRatio = hits / roundtrips; - anualizedRateOfReturn = ROI / days * 365; - } else { - ROI = (bot.VALUES_TO_USE.initialBalanceB + profit) / bot.VALUES_TO_USE.initialBalanceB - 1; - hitRatio = hits / roundtrips; - anualizedRateOfReturn = ROI / days * 365; - } - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.ROI = ROI; - yesterday.hitRatio = hitRatio; - yesterday.anualizedRateOfReturn = anualizedRateOfReturn; - } - } - - addRecord(); - - stopLoss = 0; - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.stopLoss = stopLoss - } - } - takeProfit = 0; - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.takeProfit = takeProfit - } - } - - tradePositionRate = 0; - tradePositionSize = 0; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.tradePositionSize = tradePositionSize; - yesterday.tradePositionRate = tradePositionRate; - } - } - - timerToCloseStage = candle.begin - stopLossStage = 'No Stage'; - takeProfitStage = 'No Stage'; - stopLossPhase = -1; - takeProfitPhase = -1; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.stopLossStage = stopLossStage; - yesterday.takeProfitStage = takeProfitStage; - yesterday.stopLossPhase = stopLossPhase; - yesterday.takeProfitPhase = takeProfitPhase; - } - } - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> closePositionAtSimulation -> Exiting Loop Body after closing position at simulation."); } - controlLoop(); - return - } - } - - /* Closing the Closing Stage */ - if (strategyStage === 'Close Stage') { - if (candle.begin - 5 * 60 * 1000 > timerToCloseStage) { - - currentStrategy.number = currentStrategyIndex - currentStrategy.end = candle.end; - currentStrategy.endRate = candle.min; - currentStrategy.status = 1; // This means the strategy is closed, i.e. that has a begin and end. - - if (processingDailyFiles) { - if (positionedAtYesterday) { - - yesterday.currentStrategy.number = currentStrategy.number; - yesterday.currentStrategy.end = currentStrategy.end; - yesterday.currentStrategy.endRate = currentStrategy.endRate; - yesterday.currentStrategy.status = currentStrategy.status; - } - } - - currentStrategyIndex = -1; - strategyStage = 'No Stage'; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.currentStrategyIndex = currentStrategyIndex; - yesterday.strategyStage = strategyStage; - } - } - - timerToCloseStage = 0 - - distanceToLast.triggerOff = 1; - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.distanceToLast.triggerOff = distanceToLast.triggerOff - } - } - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Closing the Closing Stage -> Exiting Close Stage."); } - } else { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Closing the Closing Stage -> Waiting for timer."); } - } - } - - /* Not a buy or sell condition */ - - marketRate = candle.close; - addRecord(); - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> Exiting Loop Body after adding a record."); } - controlLoop(); - return - - function addRecord() { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> loop -> addRecord -> Entering function."); } - - // Since we are going to write the message to a file that the Simulation Executor is going to read, we use the abbreviations. - let messageType; - let message; - let simulationRecord; - let executionRecord; - - let strategyStageNumber - switch (strategyStage) { - case 'No Stage': { - strategyStageNumber = 0 - break - } - case 'Trigger Stage': { - strategyStageNumber = 1 - break - } - case 'Open Stage': { - strategyStageNumber = 2 - break - } - case 'Manage Stage': { - strategyStageNumber = 3 - break - } - case 'Close Stage': { - strategyStageNumber = 4 - break - } - } - - if (balanceBaseAsset === Infinity) { - balanceBaseAsset = Number.MAX_SAFE_INTEGER - } - - if (balanceQuotedAsset === Infinity) { - balanceQuotedAsset = Number.MAX_SAFE_INTEGER - } - - let quotedBaseAsset = '"' + baseAsset + '"' - let quotedQuotedAsset = '"' + quotedAsset + '"' - - simulationRecord = { - begin: candle.begin, - end: candle.end, - type: type, - marketRate: marketRate, - amount: 1, - balanceA: balanceBaseAsset, - balanceB: balanceQuotedAsset, - profit: profit, - lastTradeProfitLoss: lastTradeProfitLoss, - stopLoss: stopLoss, - roundtrips: roundtrips, - hits: hits, - fails: fails, - hitRatio: hitRatio, - ROI: ROI, - periods: periods, - days: days, - anualizedRateOfReturn: anualizedRateOfReturn, - positionRate: tradePositionRate, - lastTradeROI: lastTradeROI, - strategy: currentStrategyIndex, - strategyStageNumber: strategyStageNumber, - takeProfit: takeProfit, - stopLossPhase: stopLossPhase, - takeProfitPhase: takeProfitPhase, - executionRecord: '', - positionSize: tradePositionSize, - initialBalanceA: bot.VALUES_TO_USE.initialBalanceA, - minimumBalanceA: bot.VALUES_TO_USE.minimumBalanceA, - maximumBalanceA: bot.VALUES_TO_USE.maximumBalanceA, - initialBalanceB: bot.VALUES_TO_USE.initialBalanceB, - minimumBalanceB: bot.VALUES_TO_USE.minimumBalanceB, - maximumBalanceB: bot.VALUES_TO_USE.maximumBalanceB, - baseAsset: quotedBaseAsset, - quotedAsset: quotedQuotedAsset, - marketBaseAsset: '"' + bot.market.baseAsset + '"', - marketQuotedAsset: '"' + bot.market.quotedAsset + '"' , - positionPeriods: positionPeriods, - positionDays: positionDays, - distanceToLastTriggerOn: distanceToLast.triggerOn, - distanceToLastTriggerOff: distanceToLast.triggerOff, - distanceToLastTakePosition: distanceToLast.takePosition, - distanceToLastClosePosition: distanceToLast.closePosition - } - - recordsArray.push(simulationRecord); - - type = '""'; - - /* Prepare the information for the Conditions File */ - - conditionsArrayRecord.push(currentStrategyIndex); - conditionsArrayRecord.push(strategyStageNumber); - conditionsArrayRecord.push(stopLossPhase); - conditionsArrayRecord.push(takeProfitPhase); - conditionsArrayRecord.push(conditionsArrayValues); - conditionsArrayRecord.push(formulasErrors); - conditionsArrayRecord.push(formulasValues); - - conditionsArray.push(conditionsArrayRecord); - - /* - Lets see if there will be an open strategy ... - Except if we are at the head of the market (remember we skipped the last candle for not being closed.) - */ - if (currentStrategy.begin !== 0 && currentStrategy.end === 0 && currentCandleIndex === candles.length - 2 && lastCandle.end !== lastInstantOfTheDay) { - currentStrategy.status = 2; // This means the strategy is open, i.e. that has a begin but no end. - currentStrategy.end = candle.end - } - - /* Prepare the information for the Strategies File*/ - if (currentStrategy.begin !== 0 && currentStrategy.end !== 0) - { - strategiesArray.push(currentStrategy); - - currentStrategy = { - begin: 0, - end: 0, - status: 0, - number: 0, - beginRate: 0, - endRate: 0, - triggerOnSituation: '', - name: '' - } - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.currentStrategy = { - begin: 0, - end: 0, - status: 0, - number: 0, - beginRate: 0, - endRate: 0, - triggerOnSituation: '', - name: '' - } - } - } - } - - /* - Lets see if there will be an open trade ... - Except if we are at the head of the market (remember we skipped the last candle for not being closed.) - */ - if (currentTrade.begin !== 0 && currentTrade.end === 0 && currentCandleIndex === candles.length - 2 && lastCandle.end !== lastInstantOfTheDay) { - currentTrade.status = 2; // This means the trade is open - currentTrade.end = candle.end - currentTrade.endRate = candle.close - - /* Here we will calculate the ongoing ROI */ - if (baseAsset === bot.market.baseAsset) { - currentTrade.lastTradeROI = (tradePositionRate - candle.close) / tradePositionRate * 100 - } else { - currentTrade.lastTradeROI = (candle.close - tradePositionRate) / tradePositionRate * 100 - } - } - - /* Snapshots Management (before we generate the trade record and delete that info) */ - if (saveAsLastTriggerOnSnapshot === true) { - snapshots.lastTriggerOn = snapshotDataRecord - saveAsLastTriggerOnSnapshot = false - } - - if (saveAsLastTakePositionSnapshot === true) { - snapshots.lastTakePosition = snapshotDataRecord - saveAsLastTakePositionSnapshot = false - } - - if (addToSnapshots === true) { - let closeValues = [ - roundtrips, // Trade Number - (new Date(candle.begin)).toISOString(), // Datetime - tradingSystem.strategies[currentStrategyIndex].name, // Strategy - currentStrategy.triggerOnSituation, // Trigger On Situation - currentTrade.takePositionSituation, // Take Position Situation - hitOrFial(), // Result - lastTradeROI, // ROI - simulationRecord.type.replace(/"/g, '') // Exit Type - ] - - function hitOrFial() { - if (lastTradeROI > 0) { return 'HIT' } else { return 'FAIL' } - } - - if (positionedAtYesterday === false) { - snapshots.triggerOn.push(closeValues.concat(snapshots.lastTriggerOn)) - snapshots.takePosition.push(closeValues.concat(snapshots.lastTakePosition)) - } - snapshots.lastTriggerOn = undefined - snapshots.lastTakePosition = undefined - addToSnapshots = false - } - - let closeHeaders = ['Trade Number', 'Close Datetime', 'Strategy', 'Trigger On Situation', 'Take Position Situation', 'Result', 'ROI', 'Exit Type'] - if (snapshots.headers === undefined) { - snapshots.headers = closeHeaders.concat(JSON.parse(JSON.stringify(snapshotLoopHeaders))) - } - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.snapshots.headers = snapshots.headers; - yesterday.snapshots.triggerOn = snapshots.triggerOn; - yesterday.snapshots.takePosition = snapshots.takePosition; - yesterday.snapshots.lastTriggerOn = snapshots.lastTriggerOn; - yesterday.snapshots.lastTakePosition = snapshots.lastTakePosition; - } - } - - /* Prepare the information for the Trades File */ - if (currentTrade.begin !== 0 && currentTrade.end !== 0) { - - currentTrade.profit = lastTradeProfitLoss; - - tradesArray.push(currentTrade); - - currentTrade = { - begin: 0, - end: 0, - status: 0, - lastTradeROI: 0, - exitType: 0, - beginRate: 0, - endRate: 0, - takePositionSituation: '' - } - - if (processingDailyFiles) { - if (positionedAtYesterday) { - yesterday.currentTrade = { - begin: 0, - end: 0, - status: 0, - lastTradeROI: 0, - exitType: 0, - beginRate: 0, - endRate: 0, - takePositionSituation: '' - } - } - } - } - - /* After everything at the simulation level was done, we will do the annoucements that are pending.*/ - makeAnnoucements() - } - - function checkAnnouncements(node, value) { - /* - Value is an optional parameter that represents the value that the announcement is monitoring for change (for numeric values only). - If we do receive this value, we will only make the annoucement if the variance is grater than the user pre-defined value - for this variance. - */ - - if (node.announcements !== undefined) { - for (let i = 0; i < node.announcements.length; i++) { - let announcement = node.announcements[i] - let key = node.type + "-" + announcement.name + "-" + announcement.id - - let lastPeriodAnnounced = -1 - let newAnnouncementRecord = {} - - for (let j = 0; j < interExecutionMemory.announcements.length; j++) { - let announcementRecord = interExecutionMemory.announcements[j] - if (announcementRecord.key === key) { - lastPeriodAnnounced = announcementRecord.periods - newAnnouncementRecord = announcementRecord - break - } - } - - if (periods > lastPeriodAnnounced) { - - if (isNaN(value) === false) { - /* The Value Variation is what tells us how much the value already announced must change in order to annouce it again. */ - let valueVariation - - let code = announcement.code - valueVariation = code.valueVariation - - if (newAnnouncementRecord.value !== undefined && valueVariation !== undefined) { - let upperLimit = newAnnouncementRecord.value + newAnnouncementRecord.value * valueVariation / 100 - let lowerLimit = newAnnouncementRecord.value - newAnnouncementRecord.value * valueVariation / 100 - if (value > lowerLimit && value < upperLimit) { - /* There is not enough variation to announce this again. */ - return - } - } - } - - /* - We store the announcement temporarily at an Array to differ its execution, becasue we need to evaulate its formula - and at this point in time the potential variables used at the formula are still not set. - */ - announcement.value = value - announcementsToBeMade.push(announcement) - - /* Next, we will remmeber this announcement was already done, so that it is not announced again in further processing of the same day. */ - if (newAnnouncementRecord.periods !== undefined) { - newAnnouncementRecord.periods = periods - newAnnouncementRecord.value = value - } else { - newAnnouncementRecord = { - key: key, - periods: periods, - value: value - } - interExecutionMemory.announcements.push(newAnnouncementRecord) - } - } - } - } - } - - function makeAnnoucements() { - /* Here we go through all the annoucements that need to be done during this loop, and we just do them. */ - for (let i = 0; i < announcementsToBeMade.length; i++) { - announcement = announcementsToBeMade[i] - /* Here we check if there is a formula attached to the annoucement, we evaluate it to get the annoucement text. */ - let formulaValue - if (announcement.formula !== undefined) { - try { - let value = announcement.value - formulaValue = eval(announcement.formula.code); - } catch (err) { - announcement.formula.error = err.message - } - } - announcement.formulaValue = formulaValue - - if (bot.SESSION.socialBots !== undefined) { - bot.SESSION.socialBots.announce(announcement) - } - } - } - - function addCodeToSnapshot(code) { - if (code === undefined) { return } - - try { - let instructionsArray = code.split(' ') - for (let i = 0; i < instructionsArray.length; i++) { - let instruction = instructionsArray[i] - instruction = instruction.replace('(', '') - instruction = instruction.replace(')', '') - instruction = instruction.replace(//g, '') - instruction = instruction.replace(/<=/g, '') - instruction = instruction.replace(/>=/g, '') - instruction = instruction.replace(/!=/g, '') - instruction = instruction.replace(/!==/g, '') - instruction = instruction.replace(/==/g, '') - instruction = instruction.replace(/===/g, '') - instruction = instruction.replace(/{/g, '') - instruction = instruction.replace(/}/g, '') - if (instruction.indexOf('chart') >= 0) { - let parts = instruction.split('.') - let timeFrame = parts[1] - let product = parts[2] - let property - checkPrevious(3) - function checkPrevious(index) { - property = parts[index] - if (property === 'previous') { - product = product + '.previous' - checkPrevious(index + 1) - } - } - - // Example: chart.at01hs.popularSMA.sma200 - chart.at01hs.popularSMA.sma100 < 10 - if (timeFrame !== 'atAnyTimeFrame') { - timeFrame = timeFrame.substring(2, 4) + '-' + timeFrame.substring(4, 7) - } - let key = timeFrame + '-' + product + '-' + property - let existingKey = snapshotKeys.get(key) - - if (existingKey === undefined) {// means that at the current loop this property of this product was not used before. - snapshotKeys.set(key, key) - snapshotLoopHeaders.push(key) - - let value = eval(instruction) - snapshotDataRecord.push(value) - } - } - } - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] runSimulation -> addCodeToSnapshot -> code = " + code); - logger.write(MODULE_NAME, "[ERROR] runSimulation -> addCodeToSnapshot -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - - function controlLoop() { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> controlLoop -> Entering function."); } - - /* Checking if we should continue processing this loop or not.*/ - if (bot.STOP_SESSION === true) { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> controlLoop -> We are going to stop here bacause we were requested to stop processing this session."); } - console.log("[INFO] runSimulation -> controlLoop -> We are going to stop here bacause we were requested to stop processing this session.") - afterLoop() - return - } - - if (global.STOP_TASK_GRACEFULLY === true) { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> controlLoop -> We are going to stop here bacause we were requested to stop processing this task."); } - console.log("[INFO] runSimulation -> controlLoop -> We are going to stop here bacause we were requested to stop processing this task.") - afterLoop() - return - } - - currentCandleIndex++ - if (currentCandleIndex < candles.length) { - setImmediate(loop) // This will execute the next loop in the next iteration of the NodeJs event loop allowing for other callbacks to be executed. - } else { - afterLoop() - } - } - - function afterLoop() { - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> afterLoop -> Entering function."); } - - /* - Before returning we need to see if we have to record some of our counters at the interExecutionMemory. - To do that, the condition to be met is that this execution must include all candles of the current day. - */ - - if (processingDailyFiles) { - - if (lastCandle.end === lastInstantOfTheDay) { - - interExecutionMemory.snapshots = { - headers: yesterday.snapshots.headers, - triggerOn: yesterday.snapshots.triggerOn, - takePosition: yesterday.snapshots.takePosition, - lastTriggerOn: yesterday.snapshots.lastTriggerOn, - lastTakePosition: yesterday.snapshots.lastTakePosition - } - - interExecutionMemory.stopLoss = yesterday.stopLoss - interExecutionMemory.takeProfit = yesterday.takeProfit - - interExecutionMemory.previousBalanceBaseAsset = yesterday.previousBalanceBaseAsset - interExecutionMemory.previousBalanceQuotedAsset = yesterday.previousBalanceQuotedAsset - - interExecutionMemory.tradePositionRate = yesterday.tradePositionRate - interExecutionMemory.tradePositionSize = yesterday.tradePositionSize - - interExecutionMemory.currentStrategyIndex = yesterday.currentStrategyIndex - interExecutionMemory.strategyStage = yesterday.strategyStage - - interExecutionMemory.stopLossPhase = yesterday.stopLossPhase - interExecutionMemory.stopLossStage = yesterday.stopLossStage - - interExecutionMemory.takeProfitPhase = yesterday.takeProfitPhase - interExecutionMemory.takeProfitStage = yesterday.takeProfitStage - - interExecutionMemory.currentStrategy = { - begin: yesterday.currentStrategy.begin, - end: yesterday.currentStrategy.end, - status: yesterday.currentStrategy.status, - number: yesterday.currentStrategy.number, - beginRate: yesterday.currentStrategy.beginRate, - endRate: yesterday.currentStrategy.endRate, - triggerOnSituation: yesterday.currentStrategy.triggerOnSituation, - name: yesterday.currentStrategy.name - } - - interExecutionMemory.currentTrade = { - begin: yesterday.currentTrade.begin, - end: yesterday.currentTrade.end, - status: yesterday.currentTrade.status, - profit: yesterday.currentTrade.profit, - exitType: yesterday.currentTrade.exitType, - beginRate: yesterday.currentTrade.beginRate, - endRate: yesterday.currentTrade.endRate, - takePositionSituation: yesterday.currentTrade.takePositionSituation - } - - interExecutionMemory.balanceBaseAsset = yesterday.balanceBaseAsset; - interExecutionMemory.balanceQuotedAsset = yesterday.balanceQuotedAsset; - interExecutionMemory.lastTradeProfitLoss = yesterday.lastTradeProfitLoss; - interExecutionMemory.profit = yesterday.profit; - interExecutionMemory.lastTradeROI = yesterday.lastTradeROI; - - interExecutionMemory.roundtrips = yesterday.roundtrips; - interExecutionMemory.fails = yesterday.fails; - interExecutionMemory.hits = yesterday.hits; - interExecutionMemory.periods = yesterday.periods; - interExecutionMemory.positionPeriods = yesterday.positionPeriods; - - interExecutionMemory.distanceToLast.triggerOn = yesterday.distanceToLast.triggerOn - interExecutionMemory.distanceToLast.triggerOff = yesterday.distanceToLast.triggerOff - interExecutionMemory.distanceToLast.takePosition = yesterday.distanceToLast.takePosition - interExecutionMemory.distanceToLast.closePosition = yesterday.distanceToLast.closePosition - - interExecutionMemory.messageId = interExecutionMemory.messageId + yesterday.messageId; - interExecutionMemory.orderId = interExecutionMemory.orderId + yesterday.orderId; - - interExecutionMemory.hitRatio = yesterday.hitRatio; - interExecutionMemory.ROI = yesterday.ROI; - interExecutionMemory.anualizedRateOfReturn = yesterday.anualizedRateOfReturn; - } - } - - if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] runSimulation -> callback -> recordsArray.length = " + recordsArray.length); } - - callback(tradingSystem, recordsArray, conditionsArray, strategiesArray, tradesArray, snapshots.headers, snapshots.triggerOn, snapshots.takePosition); - } - - function getElement(pArray, currentCandle, datasetName) { - if (pArray === undefined) {return} - try { - let element; - for (let i = 0; i < pArray.length; i++) { - element = pArray[i]; - - if (currentCandle.end === element.end) { // when there is an exact match at the end we take that element - return element - } else { - if ( - i > 0 && - element.end > currentCandle.end - ) { - let previousElement = pArray[i - 1] - if (previousElement.end < currentCandle.end) { - return previousElement // If one elements goes into the future of currentCandle, then we stop and take the previous element. - } else { - return - } - } - if ( - i === pArray.length - 1 // If we reach the end of the array, then we return the last element. - && - element.end < currentCandle.end - ) { - return element - } - } - } - return - } - catch (err) { - logger.write(MODULE_NAME, "[ERROR] runSimulation -> getElement -> datasetName = " + datasetName); - logger.write(MODULE_NAME, "[ERROR] runSimulation -> getElement -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } - } - - catch (err) { - logger.write(MODULE_NAME, "[ERROR] runSimulation -> err = " + err.stack); - callBackFunction(global.DEFAULT_FAIL_RESPONSE); - } - } -}; - - - diff --git a/TaskServer/server.js b/TaskServer/server.js index 80ac46a62..3ff27cf3f 100644 --- a/TaskServer/server.js +++ b/TaskServer/server.js @@ -1,5 +1,6 @@ -/* Callbacks default responses. */ + +/* Callbacks default responses. */ global.DEFAULT_OK_RESPONSE = { result: "Ok", message: "Operation Succeeded" @@ -25,19 +26,289 @@ global.CUSTOM_FAIL_RESPONSE = { message: "Custom Message" }; -const ONE_DAY_IN_MILISECONDS = 24 * 60 * 60 * 1000; +global.ROOT_DIR = './'; + +global.ONE_YEAR_IN_MILISECONDS = 365 * 24 * 60 * 60 * 1000 +global.ONE_DAY_IN_MILISECONDS = 24 * 60 * 60 * 1000 +global.ONE_MIN_IN_MILISECONDS = 60 * 1000 global.LOGGER_MAP = new Map() global.SESSION_MAP = new Map() +global.UNIQUE_ID = function () { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8) + return v.toString(16) + }) +} + +global.PRECISE = function (floatNumber, precision) { + return this.parseFloat(floatNumber.toFixed(precision)) +} + +global.REMOVE_TIME = function (datetime) { + const GMT_SECONDS = ':00.000 GMT+0000'; + let date = new Date(datetime) + return new Date(date.getUTCFullYear() + "-" + (date.getUTCMonth() + 1) + "-" + date.getUTCDate() + " " + "00:00" + GMT_SECONDS); +} + +global.PROCESS_ERROR = function (processKey, node, errorMessage) { + let event + if (node !== undefined) { + event = { + nodeName: node.name, + nodeType: node.type, + nodeId: node.id, + errorMessage: errorMessage + } + } else { + event = { + errorMessage: errorMessage + } + } + global.EVENT_SERVER_CLIENT.raiseEvent(processKey, 'Error', event) +} + +global.PROCESS_WARNING = function (processKey, node, warningMessage) { + let event + if (node !== undefined) { + event = { + nodeName: node.name, + nodeType: node.type, + nodeId: node.id, + warningMessage: warningMessage + } + } else { + event = { + warningMessage: warningMessage + } + } + global.EVENT_SERVER_CLIENT.raiseEvent(processKey, 'Warning', event) +} + +global.PROCESS_INFO = function (processKey, node, infoMessage) { + let event + if (node !== undefined) { + event = { + nodeName: node.name, + nodeType: node.type, + nodeId: node.id, + infoMessage: infoMessage + } + } else { + event = { + infoMessage: infoMessage + } + } + global.EVENT_SERVER_CLIENT.raiseEvent(processKey, 'Info', event) +} + +global.NODE_BRANCH_TO_ARRAY = function (node, nodeType) { + let resultArray = [] + scanNodeBranch(node, nodeType) + return resultArray + + function scanNodeBranch(startingNode) { + let nodeDefinition = global.APP_SCHEMA_MAP.get(startingNode.type) + if (nodeDefinition === undefined) { return } + + if (startingNode.type === nodeType) { + resultArray.push(startingNode) + return + } + + if (nodeDefinition.properties === undefined) { return } + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.type) { + case 'node': { + scanNodeBranch(startingNode[property.name]) + } + break + case 'array': { + let startingNodePropertyArray = startingNode[property.name] + if (startingNodePropertyArray !== undefined) { + for (let m = 0; m < startingNodePropertyArray.length; m++) { + scanNodeBranch(startingNodePropertyArray[m]) + } + } + break + } + } + } + } +} + +global.FIND_NODE_IN_NODE_MESH = function (node, nodeType) { + /* + This function scans a node mesh for a certain node type and + returns the first instance found. + */ + let nodeFound + scanNodeMesh(node, nodeType) + return nodeFound + + function scanNodeMesh(startingNode) { + if (startingNode === undefined) { return } + if (nodeFound !== undefined) { return } + + let nodeDefinition = APP_SCHEMA_MAP.get(startingNode.type) + if (nodeDefinition === undefined) { return } + + if (startingNode.type === nodeType) { + nodeFound = startingNode + return + } + + /* We scan through this node children */ + if (nodeDefinition.properties !== undefined) { + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.type) { + case 'node': { + scanNodeMesh(startingNode[property.name]) + } + break + case 'array': { + let startingNodePropertyArray = startingNode[property.name] + if (startingNodePropertyArray !== undefined) { + for (let m = 0; m < startingNodePropertyArray.length; m++) { + scanNodeMesh(startingNodePropertyArray[m]) + } + } + break + } + } + } + } + /* We scan parents nodes. */ + if (startingNode.parentNode !== undefined) { + scanNodeMesh(startingNode.parentNode) + } + /* We scan reference parents too. */ + if (startingNode.referenceParent !== undefined) { + scanNodeMesh(startingNode.referenceParent) + } + } +} + +global.NODE_MESH_TO_PATH_ARRAY = function (node, nodeId) { + /* + This function scans a node mesh for a certain node if and + returns an array with the path within that mesh to the + requested node. + */ + let nodeArray = [] + scanNodeMesh(node) + return nodeArray + + function scanNodeMesh(startingNode) { + if (startingNode === undefined) { return } + + let nodeDefinition = APP_SCHEMA_MAP.get(startingNode.type) + if (nodeDefinition === undefined) { return } + + if (startingNode.id === nodeId) { + nodeArray.push(startingNode) + return + } + + /* We scan through this node children */ + if (nodeDefinition.properties !== undefined) { + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + + switch (property.type) { + case 'node': { + scanNodeMesh(startingNode[property.name]) + if (nodeArray.length > 0) { + nodeArray.unshift(startingNode) + return + } + } + break + case 'array': { + let startingNodePropertyArray = startingNode[property.name] + if (startingNodePropertyArray !== undefined) { + for (let m = 0; m < startingNodePropertyArray.length; m++) { + scanNodeMesh(startingNodePropertyArray[m]) + if (nodeArray.length > 0) { + nodeArray.unshift(startingNode) + return + } + } + } + break + } + } + } + } + /* We scan parents nodes. */ + if (startingNode.parentNode !== undefined) { + scanNodeMesh(startingNode.parentNode) + if (nodeArray.length > 0) { + nodeArray.unshift(startingNode) + return + } + } + /* We scan reference parents too. */ + if (startingNode.referenceParent !== undefined) { + scanNodeMesh(startingNode.referenceParent) + if (nodeArray.length > 0) { + nodeArray.unshift(startingNode) + return + } + } + } +} + +global.FIND_NODE_IN_NODE_ARRAY = function (nodeArray, nodeType) { + for (let i=0; i < nodeArray.length; i++) { + let node = nodeArray[i] + if (node.type === nodeType) { + return node + } + } +} + +global.FILTER_OUT_NODES_WITHOUT_REFERENCE_PARENT_FROM_NODE_ARRAY = function (nodeArray) { + let filteredNodeArray = [] + for (let i = 0; i < nodeArray.length; i++) { + let arrayItem = nodeArray[i] + if (arrayItem.referenceParent === undefined) { + continue + } else { + filteredNodeArray.push(arrayItem) + } + } + return filteredNodeArray +} + +global.EMIT_SESSION_STATUS = function (status, key) { + switch(status) { + case 'Running': { + global.EVENT_SERVER_CLIENT.raiseEvent(key, 'Running') + break + } + case 'Stopped': { + global.EVENT_SERVER_CLIENT.raiseEvent(key, 'Stopped') + break + } + } +} + process.on('uncaughtException', function (err) { console.log('[ERROR] Task Server -> server -> uncaughtException -> err.message = ' + err.message) console.log('[ERROR] Task Server -> server -> uncaughtException -> err.stack = ' + err.stack) + console.log(err.stack) global.EXIT_NODE_PROCESS() }) process.on('unhandledRejection', (reason, p) => { console.log('[ERROR] Task Server -> server -> unhandledRejection -> reason = ' + JSON.stringify(reason)) console.log('[ERROR] Task Server -> server -> unhandledRejection -> p = ' + JSON.stringify(p)) + console.log(reason.stack) global.EXIT_NODE_PROCESS() }) @@ -57,7 +328,7 @@ function finalizeSessions() { } } -process.on('exit', function (code) { +process.on('exit', function (config) { if (global.TASK_NODE !== undefined) { /* We send an event signaling that the Task is being terminated. */ @@ -68,7 +339,7 @@ process.on('exit', function (code) { global.EVENT_SERVER_CLIENT = undefined } - //console.log('[INFO] Task Server -> server -> process.on.exit -> About to exit -> code = ' + code) + //console.log('[INFO] Task Server -> server -> process.on.exit -> About to exit -> config = ' + config) }) /* Here we listen for the message to stop this Task / Process comming from the Task Manager, which is the paret of this node js process. */ @@ -84,13 +355,17 @@ process.on('message', message => { let key = global.TASK_NODE.name + '-' + global.TASK_NODE.type + '-' + global.TASK_NODE.id console.log('[INFO] Task Server -> server -> process.on -> Stopping Task ' + key + '. Nodejs process will be exited in less than 1 minute.') setTimeout(global.EXIT_NODE_PROCESS, 60000); - } + } }); let shuttingDownProcess = false global.EXIT_NODE_PROCESS = function exitProcess() { + if (global.unexpectedError !== undefined) { + global.taskError(undefined, "An unexpected error caused the Task to stop.") + } + if (shuttingDownProcess === true) { return } shuttingDownProcess = true @@ -101,7 +376,7 @@ global.EXIT_NODE_PROCESS = function exitProcess() { clearInterval(global.HEARTBEAT_INTERVAL_HANDLER) for (let i = 0; i < global.TASK_NODE.bot.processes.length; i++) { - let code = global.TASK_NODE.bot.processes[i].code + let config = global.TASK_NODE.bot.processes[i].config let process = global.TASK_NODE.bot.processes[i] key = process.name + '-' + process.type + '-' + process.id @@ -138,7 +413,7 @@ let taskId = process.argv[2] // reading what comes as an argument of the nodejs /* Setting up the global Event Handler */ let EVENT_SERVER_CLIENT = require('./EventServerClient.js'); - + global.EVENT_SERVER_CLIENT = EVENT_SERVER_CLIENT.newEventsServerClient() global.EVENT_SERVER_CLIENT.initialize(preLoader) global.STOP_TASK_GRACEFULLY = false; @@ -151,7 +426,8 @@ function preLoader() { global.EVENT_SERVER_CLIENT.listenToEvent('Task Server - ' + taskId, 'Run Task', undefined, 'Task Server - ' + taskId, undefined, eventReceived) global.EVENT_SERVER_CLIENT.raiseEvent('Task Manager - ' + taskId, 'Nodejs Process Ready for Task') function eventReceived(message) { - global.TASK_NODE = message + global.APP_SCHEMA_ARRAY = JSON.parse(message.event.appSchema) + setUpAppSchema() global.TASK_NODE = JSON.parse(message.event.taskDefinition) global.TASK_NETWORK = JSON.parse(message.event.networkDefinition) bootLoader() @@ -162,11 +438,12 @@ function preLoader() { } } else { /* This process was started not by the Task Manager, but independently (most likely for debugging purposes). In this case we listen to an event with the Task Info that should be emitted at the UI */ - try { + try { //console.log('[INFO] Task Server -> server -> preLoader -> Waiting for event to start debugging...') global.EVENT_SERVER_CLIENT.listenToEvent('Task Server', 'Debug Task Started', undefined, 'Task Server', undefined, startDebugging) function startDebugging(message) { - global.TASK_NODE = message + global.APP_SCHEMA_ARRAY = JSON.parse(message.event.appSchema) + setUpAppSchema() global.TASK_NODE = JSON.parse(message.event.taskDefinition) global.TASK_NETWORK = JSON.parse(message.event.networkDefinition) bootLoader() @@ -176,6 +453,16 @@ function preLoader() { console.log('[ERROR] Task Server -> server -> preLoader -> global.TASK_NODE = ' + JSON.stringify(global.TASK_NODE).substring(0, 1000)) } } + + function setUpAppSchema() { + /* Setup the APP_SCHEMA_MAP based on the APP_SCHEMA_ARRAY */ + global.APP_SCHEMA_MAP = new Map() + for (let i = 0; i < global.APP_SCHEMA_ARRAY.length; i++) { + let nodeDefinition = global.APP_SCHEMA_ARRAY[i] + let key = nodeDefinition.type + global.APP_SCHEMA_MAP.set(key, nodeDefinition) + } + } } function bootLoader() { @@ -190,85 +477,115 @@ function bootLoader() { function taskHearBeat() { - /* The heartbeat event is raised at the event handler of the instance of this task, created at the UI. */ + /* The heartbeat event is raised at the event handler of the instance of this task, created at the UI. */ let event = { seconds: (new Date()).getSeconds() } - global.EVENT_SERVER_CLIENT.raiseEvent(key, 'Heartbeat', event) + global.EVENT_SERVER_CLIENT.raiseEvent(key, 'Heartbeat', event) + } + + global.taskError = function taskError(node, errorMessage) { + let event + if (node !== undefined) { + event = { + nodeName: node.name, + nodeType: node.type, + nodeId: node.id, + errorMessage: errorMessage + } + } else { + event = { + errorMessage: errorMessage + } + } + + global.EVENT_SERVER_CLIENT.raiseEvent(key, 'Error', event) } for (let processIndex = 0; processIndex < global.TASK_NODE.bot.processes.length; processIndex++) { - let code = global.TASK_NODE.bot.processes[processIndex].code + let config = global.TASK_NODE.bot.processes[processIndex].config /* Validate that the minimun amount of input required are defined. */ - if (global.TASK_NODE.bot.processes[processIndex].marketReference === undefined) { - console.log("[WARN] Task Server -> server -> bootLoader -> Process Instance without a Market Reference. This process will not be executed. -> Process Instance = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex])); + if (global.TASK_NODE.parentNode === undefined) { + console.log("[ERROR] Task Server -> server -> bootLoader -> Task without a Task Manager. This process will not be executed. -> Process Instance = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex])); continue } - if (global.TASK_NODE.bot.processes[processIndex].marketReference.referenceParent === undefined) { - console.log("[WARN] Task Server -> server -> bootLoader -> Market Reference without a Reference Parent. This process will not be executed. -> Process Instance = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex].marketReference) + ", bot = " + global.TASK_NODE.bot.name); + if (global.TASK_NODE.parentNode.parentNode === undefined) { + console.log("[ERROR] Task Server -> server -> bootLoader -> Task Manager without Mine Tasks. This process will not be executed. -> Process Instance = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex])); continue } - if (global.TASK_NODE.bot.processes[processIndex].marketReference.referenceParent.parentNode === undefined) { - console.log("[WARN] Task Server -> server -> bootLoader -> Market without a Parent. This process will not be executed. -> Process Instance = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex].marketReference.referenceParent)); + if (global.TASK_NODE.parentNode.parentNode.parentNode === undefined) { + console.log("[ERROR] Task Server -> server -> bootLoader -> Mine Tasks without Market Tasks. This process will not be executed. -> Process Instance = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex])); continue } - if (global.TASK_NODE.bot.processes[processIndex].marketReference.referenceParent.parentNode.parentNode === undefined) { - console.log("[WARN] Task Server -> server -> bootLoader -> Exchange Markets without a Parent. This process will not be executed. -> Process Instance = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex].marketReference.referenceParent.parentNode)); + if (global.TASK_NODE.parentNode.parentNode.parentNode.referenceParent === undefined) { + console.log("[ERROR] Task Server -> server -> bootLoader -> Market Tasks without a Market. This process will not be executed. -> Process Instance = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex])); continue } - if (global.TASK_NODE.bot.processes[processIndex].marketReference.referenceParent.baseAsset === undefined) { - console.log("[WARN] Task Server -> server -> bootLoader -> Market without a Base Asset. This process will not be executed. -> Process Instance = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex].marketReference.referenceParent)); + global.MARKET_NODE = global.TASK_NODE.parentNode.parentNode.parentNode.referenceParent + + if (global.MARKET_NODE.parentNode === undefined) { + console.log("[ERROR] Task Server -> server -> bootLoader -> Market without a Parent. This process will not be executed. -> Process Instance = " + JSON.stringify(global.MARKET_NODE)); continue } - if (global.TASK_NODE.bot.processes[processIndex].marketReference.referenceParent.quotedAsset === undefined) { - console.log("[WARN] Task Server -> server -> bootLoader -> Market without a Quoted Asset. This process will not be executed. -> Process Instance = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex].marketReference.referenceParent)); + if (global.MARKET_NODE.parentNode.parentNode === undefined) { + console.log("[ERROR] Task Server -> server -> bootLoader -> Exchange Markets without a Parent. This process will not be executed. -> Process Instance = " + JSON.stringify(global.MARKET_NODE.parentNode)); continue } - if (global.TASK_NODE.bot.processes[processIndex].marketReference.referenceParent.baseAsset.referenceParent === undefined) { - console.log("[WARN] Task Server -> server -> bootLoader -> Base Asset without a Reference Parent. This process will not be executed. -> Process Instance = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex].marketReference.referenceParent.baseAsset)); + if (global.MARKET_NODE.baseAsset === undefined) { + console.log("[ERROR] Task Server -> server -> bootLoader -> Market without a Base Asset. This process will not be executed. -> Process Instance = " + JSON.stringify(global.MARKET_NODE)); continue } - if (global.TASK_NODE.bot.processes[processIndex].marketReference.referenceParent.quotedAsset.referenceParent === undefined) { - console.log("[WARN] Task Server -> server -> bootLoader -> Quoted Asset without a Reference Parent. This process will not be executed. -> Process Instance = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex].marketReference.referenceParent.quotedAsset)); + if (global.MARKET_NODE.quotedAsset === undefined) { + console.log("[ERROR] Task Server -> server -> bootLoader -> Market without a Quoted Asset. This process will not be executed. -> Process Instance = " + JSON.stringify(global.MARKET_NODE)); + continue + } + + if (global.MARKET_NODE.baseAsset.referenceParent === undefined) { + console.log("[ERROR] Task Server -> server -> bootLoader -> Base Asset without a Reference Parent. This process will not be executed. -> Process Instance = " + JSON.stringify(global.MARKET_NODE.baseAsset)); + continue + } + + if (global.MARKET_NODE.quotedAsset.referenceParent === undefined) { + console.log("[ERROR] Task Server -> server -> bootLoader -> Quoted Asset without a Reference Parent. This process will not be executed. -> Process Instance = " + JSON.stringify(global.MARKET_NODE.quotedAsset)); continue } if (global.TASK_NODE.bot.processes[processIndex].referenceParent === undefined) { - console.log("[WARN] Task Server -> server -> bootLoader -> Process Instance without a Reference Parent. This process will not be executed. -> Process Instance = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex])); + console.log("[ERROR] Task Server -> server -> bootLoader -> Process Instance without a Reference Parent. This process will not be executed. -> Process Instance = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex])); continue } if (global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode === undefined) { - console.log("[WARN] Task Server -> server -> bootLoader -> Process Definition without parent Bot Definition. -> Process Definition = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex].referenceParent)); + console.log("[ERROR] Task Server -> server -> bootLoader -> Process Definition without parent Bot Definition. -> Process Definition = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex].referenceParent)); continue } if (global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.parentNode === undefined) { - console.log("[WARN] Task Server -> server -> bootLoader -> Bot Definition without parent Data Mine. -> Bot Definition = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode)); + console.log("[ERROR] Task Server -> server -> bootLoader -> Bot Definition without parent Data Mine. -> Bot Definition = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode)); continue } - if (global.TASK_NODE.bot.processes[processIndex].referenceParent.code.codeName === undefined) { - console.log("[WARN] Task Server -> server -> bootLoader -> Process Definition without a codeName defined. -> Process Definition = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex].referenceParent)); + if (global.TASK_NODE.bot.processes[processIndex].referenceParent.config.codeName === undefined) { + console.log("[ERROR] Task Server -> server -> bootLoader -> Process Definition without a codeName defined. -> Process Definition = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex].referenceParent)); continue } - if (global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.code.codeName === undefined) { - console.log("[WARN] Task Server -> server -> bootLoader -> Bot Definition without a codeName defined. -> Bot Definition = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode)); + if (global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.config.codeName === undefined) { + console.log("[ERROR] Task Server -> server -> bootLoader -> Bot Definition without a codeName defined. -> Bot Definition = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode)); continue } - if (global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.parentNode.code.codeName === undefined) { - console.log("[WARN] Task Server -> server -> bootLoader -> Data Mine without a codeName defined. -> Data Mine Definition = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.parentNode)); + if (global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.parentNode.config.codeName === undefined) { + console.log("[ERROR] Task Server -> server -> bootLoader -> Data Mine without a codeName defined. -> Data Mine Definition = " + JSON.stringify(global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.parentNode)); continue } @@ -278,7 +595,7 @@ function bootLoader() { function startRoot(processIndex) { - // console.log('[INFO] Task Server -> server -> startRoot -> Entering function. ') + // console.log('[INFO] Task Server -> server -> startRoot -> Entering function. ') const ROOT_MODULE = require('./Root') let root = ROOT_MODULE.newRoot() @@ -292,20 +609,20 @@ function startRoot(processIndex) { } global.getPercentage = function (fromDate, currentDate, lastDate) { - let fromDays = Math.trunc(fromDate.valueOf() / ONE_DAY_IN_MILISECONDS) - let currentDays = Math.trunc(currentDate.valueOf() / ONE_DAY_IN_MILISECONDS) - let lastDays = Math.trunc(lastDate.valueOf() / ONE_DAY_IN_MILISECONDS) + let fromDays = Math.trunc(fromDate.valueOf() / global.ONE_DAY_IN_MILISECONDS) + let currentDays = Math.trunc(currentDate.valueOf() / global.ONE_DAY_IN_MILISECONDS) + let lastDays = Math.trunc(lastDate.valueOf() / global.ONE_DAY_IN_MILISECONDS) let percentage = (currentDays - fromDays) * 100 / (lastDays - fromDays) if ((lastDays - fromDays) === 0) { percentage = 100 } - return percentage + return percentage } global.areEqualDates = function (date1, date2) { - let day1Days = Math.trunc(date1.valueOf() / ONE_DAY_IN_MILISECONDS) - let day2Days = Math.trunc(date2.valueOf() / ONE_DAY_IN_MILISECONDS) - + let day1Days = Math.trunc(date1.valueOf() / global.ONE_DAY_IN_MILISECONDS) + let day2Days = Math.trunc(date2.valueOf() / global.ONE_DAY_IN_MILISECONDS) + if (day1Days === day2Days) { return true } else { diff --git a/Trading-Systems/Example-ETH-USDT.json b/Trading-Systems/Example-ETH-USDT.json deleted file mode 100644 index a9be35370..000000000 --- a/Trading-Systems/Example-ETH-USDT.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"Trading System","name":"ETH/USDT Example","code":"{ \n\"codeName\": \"Example-ETH-USDT\"\n}","strategies":[{"type":"Strategy","name":"My Strategy","triggerStage":{"type":"Trigger Stage","triggerOn":{"type":"Trigger On Event","situations":[{"type":"Situation","name":"Volatility Breakout","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerBand.deviation < 5","id":"c8b33f02-3fe4-4850-8a77-129f1ca4e052","savedPayload":{"position":{"x":38975.66793734307,"y":18584.9448362216},"targetPosition":{"x":39217.33004827555,"y":18233.750554323513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":4},"uiObject":{}}},"id":"dc1ba175-2d04-4514-a6f0-8fe495d9db07","savedPayload":{"position":{"x":39217.33004827555,"y":18233.750554323513},"targetPosition":{"x":39459.56127624091,"y":17882.529285044857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":4},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"Channel 12 down","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"f194dcf9-4dcf-4e55-b92a-4f6db8f06663","savedPayload":{"position":{"x":39208.14111699266,"y":18585.33318932539},"targetPosition":{"x":39332.89714364308,"y":18233.92624287807},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":4},"uiObject":{}}},"id":"907e3344-d05a-4e77-8926-91f927693263","savedPayload":{"position":{"x":39332.89714364308,"y":18233.92624287807},"targetPosition":{"x":39459.56127624091,"y":17882.529285044857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":4},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.popularSMA.sma200 - chart.at01hs.popularSMA.sma100 < 10","id":"6f7ecdb9-93b4-444a-9500-591b6ac1f955","savedPayload":{"position":{"x":39400.6570084699,"y":18585.388175870383},"targetPosition":{"x":39428.74717507315,"y":18233.99778156078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":4},"uiObject":{}}},"id":"085cd01c-3053-419d-ac29-edd9653c192c","savedPayload":{"position":{"x":39428.74717507315,"y":18233.99778156078},"targetPosition":{"x":39459.56127624091,"y":17882.529285044857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":4},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"Convergence Divergence","code":"let currentDiff = chart.at01hs.base6SMA.sma120- chart.at01hs.base6SMA.sma60\nlet previousDiff = chart.at01hs.base6SMA.previous.sma120- chart.at01hs.base6SMA.previous.sma60\nif ( currentDiff > 5) { \n if ( previousDiff > currentDiff ) { true} else {false}\n} else {true}\n","id":"582cfd5f-d94d-4beb-bbea-188bbe1199c2","savedPayload":{"position":{"x":39592.31826565753,"y":18584.09102553276},"targetPosition":{"x":39527.950671506886,"y":18233.984946603843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":4},"uiObject":{}}},"id":"5983839f-a2c0-4da1-a8fb-1ea4e09a606c","savedPayload":{"position":{"x":39527.950671506886,"y":18233.984946603843},"targetPosition":{"x":39459.56127624091,"y":17882.529285044857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":4},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"(\n (chart.at01hs.bollingerSubChannel.slope === \"Side\" || chart.at01hs.bollingerSubChannel.slope === \"Gentle\") &&\n (chart.at01hs.bollingerSubChannel.previous.slope === \"Side\" || chart.at01hs.bollingerSubChannel.previous.slope === \"Gentle\")\n) ||\n(\n (chart.at01hs.bollingerSubChannel.previous.slope === \"Side\" || chart.at01hs.bollingerSubChannel.previous.slope === \"Gentle\") &&\n (chart.at01hs.bollingerSubChannel.previous.previous.slope === \"Side\" || chart.at01hs.bollingerSubChannel.previous.previous.slope === \"Gentle\")\n) ||\n(\n (chart.at01hs.bollingerSubChannel.previous.previous.slope === \"Side\" || chart.at01hs.bollingerSubChannel.previous.previous.slope === \"Gentle\") &&\n (chart.at01hs.bollingerSubChannel.previous.previous.previous.slope === \"Side\" || chart.at01hs.bollingerSubChannel.previous.previous.previous.slope === \"Gentle\")\n) ","id":"22848b8a-15c1-48fa-af0b-82711188330c","savedPayload":{"position":{"x":39796.829770335906,"y":18584.85107679872},"targetPosition":{"x":39628.82031570484,"y":18233.879648336875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":4},"uiObject":{}}},"id":"b9b6f7a4-1662-4e32-96de-54c2b431d1ba","savedPayload":{"position":{"x":39628.82031570484,"y":18233.879648336875},"targetPosition":{"x":39459.56127624091,"y":17882.529285044857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":4},"uiObject":{"isRunning":false}}}],"id":"98a7dbb9-421d-4dd3-9148-2db5e1dc5d06","savedPayload":{"position":{"x":39459.56127624091,"y":17882.529285044857},"targetPosition":{"x":40160.60247318399,"y":17827.092525048967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"Extreme Up tp Down","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Down\"","id":"779bba7a-9b4e-4090-90db-33b542c06b9d","savedPayload":{"position":{"x":39969.54095715052,"y":16206.101730742714},"targetPosition":{"x":39730.67441259208,"y":16907.50340014279},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":5},"uiObject":{}}},"id":"a815ab0d-e246-42cc-8299-1ce5cc78db16","savedPayload":{"position":{"x":39730.67441259208,"y":16907.50340014279},"targetPosition":{"x":39491.898590188706,"y":17609.48679082106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":5},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope=== \"Medium\" ||\nchart.at01hs.bollingerSubChannel.slope=== \"Steep\" ||\nchart.at01hs.bollingerSubChannel.slope=== \"Extreme\"","id":"72e777a7-3a3e-46b1-a68e-9aa4b138f3f3","savedPayload":{"position":{"x":39754.851100701715,"y":16206.321792716542},"targetPosition":{"x":39623.31506141007,"y":16907.81739232241},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":5},"uiObject":{}}},"id":"170c4ab3-16c2-418d-9a97-5e4046ea4fc6","savedPayload":{"position":{"x":39623.31506141007,"y":16907.81739232241},"targetPosition":{"x":39491.898590188706,"y":17609.48679082106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":5},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.previous.direction === \"Up\"","id":"7cd4b9d8-92e1-476c-a1c5-fde9bc6c7e0c","savedPayload":{"position":{"x":39551.94781507712,"y":16206.37670592337},"targetPosition":{"x":39522.09822613315,"y":16907.905086533247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":5},"uiObject":{}}},"id":"a3c9a0b6-23f5-4b50-92ef-c653dfd80d7d","savedPayload":{"position":{"x":39522.09822613315,"y":16907.905086533247},"targetPosition":{"x":39491.898590188706,"y":17609.48679082106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":5},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.previous.slope=== \"Medium\" ||\nchart.at01hs.bollingerSubChannel.previous.slope=== \"Steep\" ||\nchart.at01hs.bollingerSubChannel.previous.slope=== \"Extreme\"","id":"009e717e-0d60-4a3b-a0f1-5c182d4145e1","savedPayload":{"position":{"x":39350.59476214698,"y":16206.444143726349},"targetPosition":{"x":39420.89199017454,"y":16907.94976360571},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":5},"uiObject":{}}},"id":"5d26fac2-8265-4fcb-9450-a068068634f9","savedPayload":{"position":{"x":39420.89199017454,"y":16907.94976360571},"targetPosition":{"x":39491.898590188706,"y":17609.48679082106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":5},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.previous.previous.direction === \"Up\"","id":"a7ef2c7c-0820-4c61-8687-d1c80f688999","savedPayload":{"position":{"x":39144.27040214298,"y":16206.618841537993},"targetPosition":{"x":39317.95267207118,"y":16908.04927112296},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":5},"uiObject":{}}},"id":"25492b74-4028-4db9-b45f-31203e173dc2","savedPayload":{"position":{"x":39317.95267207118,"y":16908.04927112296},"targetPosition":{"x":39491.898590188706,"y":17609.48679082106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":5},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.previous.previous.slope=== \"Steep\" ||\nchart.at01hs.bollingerSubChannel.previous.previous.slope=== \"Extreme\"","id":"a8ad716c-90d8-43cc-9b1c-74124be1f4e7","savedPayload":{"position":{"x":38922.31312124393,"y":16206.885699964567},"targetPosition":{"x":39206.948404118324,"y":16908.183690674712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":5},"uiObject":{}}},"id":"a9087a2a-6ba6-429e-a354-6892a934831d","savedPayload":{"position":{"x":39206.948404118324,"y":16908.183690674712},"targetPosition":{"x":39491.898590188706,"y":17609.48679082106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":5},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.previous.previous.previous.direction === \"Up\"","id":"96968bf7-5a20-42fd-9ad3-1645312ed67a","savedPayload":{"position":{"x":38673.03902483318,"y":16207.27545579658},"targetPosition":{"x":39082.298587064644,"y":16908.376102983762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":5},"uiObject":{}}},"id":"88e2c3ee-aa4b-4c1d-9eb0-6387f950ac41","savedPayload":{"position":{"x":39082.298587064644,"y":16908.376102983762},"targetPosition":{"x":39491.898590188706,"y":17609.48679082106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":5},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.previous.previous.slope=== \"Extreme\"","id":"90b0c032-85eb-4a95-a99b-93744543dd28","savedPayload":{"position":{"x":38378.37419831872,"y":16207.825475831196},"targetPosition":{"x":38934.964251620084,"y":16908.64599430716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":5},"uiObject":{}}},"id":"2a47ec3d-acc1-47fd-b78d-e73ebcf22ea3","savedPayload":{"position":{"x":38934.964251620084,"y":16908.64599430716},"targetPosition":{"x":39491.898590188706,"y":17609.48679082106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":5},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"Channel 12 down","code":"chart.at12hs.bollingerChannel.direction === \"Down\"","id":"26e83ad0-2c67-4811-ba93-2bb8cd37bdbf","savedPayload":{"position":{"x":38008.18719732838,"y":16208.600604412388},"targetPosition":{"x":38749.87686897238,"y":16909.028480802514},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":5},"uiObject":{}}},"id":"6dff7477-d730-4380-a11b-1573acbdddea","savedPayload":{"position":{"x":38749.87686897238,"y":16909.028480802514},"targetPosition":{"x":39491.898590188706,"y":17609.48679082106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":5},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"Convergence Divergence","code":"let currentDiff = chart.at01hs.base6SMA.sma120- chart.at01hs.base6SMA.sma60\nlet previousDiff = chart.at01hs.base6SMA.previous.sma120- chart.at01hs.base6SMA.previous.sma60\nif ( currentDiff > 5) { \n if ( previousDiff > currentDiff ) { true} else {false}\n} else {true}\n","id":"1c0a3e5e-b80f-43ea-8316-7db3b3251f52","savedPayload":{"position":{"x":37505.79838580453,"y":16209.732189550334},"targetPosition":{"x":38498.68628481394,"y":16909.593871796234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":5},"uiObject":{}}},"id":"4d6c5b41-469f-4276-a8da-62ccb6cd9f0c","savedPayload":{"position":{"x":38498.68628481394,"y":16909.593871796234},"targetPosition":{"x":39491.898590188706,"y":17609.48679082106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":5},"uiObject":{"isRunning":false}}}],"id":"26b2205a-a2e1-475f-9387-3d41da2eade1","savedPayload":{"position":{"x":39491.898590188706,"y":17609.48679082106},"targetPosition":{"x":40160.60247318399,"y":17827.092525048967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"New Announcement","code":"{ \n\"text\": \"Triggered ON !\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Triggered ON at rate \" + candle.close + \" \" + quotedAsset + \". balanceBaseAsset = \" + balanceBaseAsset + \" \" + baseAsset + \".\"","id":"2eb05319-2614-4086-b362-4848e5e0ae46","savedPayload":{"position":{"x":24952.161013693756,"y":39362.54925944117},"targetPosition":{"x":25214.294118716967,"y":39586.660347200865},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"36d1d184-4ed7-43b2-936f-942a4a38457c","savedPayload":{"position":{"x":39893.96818370987,"y":17598.984735036076},"targetPosition":{"x":40160.60247318399,"y":17827.092525048967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6b7d0ed5-a7d2-45a4-8315-bad22d58facb","savedPayload":{"position":{"x":40160.60247318399,"y":17827.092525048967},"targetPosition":{"x":40828.79837148866,"y":18043.99260378728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"e"}}},"triggerOff":{"type":"Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerBand.direction=== \"Up\"","id":"95f23ff9-a105-47a8-9fa1-c4b627d8f1dd","savedPayload":{"position":{"x":24120.634163723043,"y":38164.31189273787},"targetPosition":{"x":24655.806183680434,"y":38597.85119968526},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"89fb4f7a-0500-4324-8116-17f03e29fc8c","savedPayload":{"position":{"x":24655.806183680434,"y":38597.85119968526},"targetPosition":{"x":25191.03948227251,"y":39031.48984343016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e8e0a028-991f-4d1b-8e6d-9e55d9a79cc7","savedPayload":{"position":{"x":39869.96197566348,"y":17032.980565130456},"targetPosition":{"x":40415.95028229634,"y":17475.42493623962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"New Announcement","code":"{ \n\"text\": \"Triggered ON !\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Triggered OFF at rate \" + candle.close + \" \" + quotedAsset + \". balanceBaseAsset = \" + balanceBaseAsset + \" \" + baseAsset + \".\"","id":"fb0ea8b9-4d68-418a-9cf5-80f7287b8cbb","savedPayload":{"position":{"x":40164.78300806596,"y":16819.230116224822},"targetPosition":{"x":40290.34567533172,"y":17147.403040034133},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8656427e-17ee-4919-b766-2ca49442ba21","savedPayload":{"position":{"x":40290.34567533172,"y":17147.403040034133},"targetPosition":{"x":40415.95028229634,"y":17475.42493623962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2cd9c7a6-a9cc-47af-80f0-d35d9c60d6f8","savedPayload":{"position":{"x":40415.95028229634,"y":17475.42493623962},"targetPosition":{"x":40828.79837148866,"y":18043.99260378728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","situations":[{"type":"Situation","name":" 3 Min","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.min< chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation","id":"4b93f1b6-9977-4486-8786-43fa6a97933f","savedPayload":{"position":{"x":40359.7981144081,"y":15661.36396366063},"targetPosition":{"x":40485.77978482326,"y":15989.36305172966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"42d544df-c863-4dca-a8fb-43b61983f0dc","savedPayload":{"position":{"x":40485.77978482326,"y":15989.36305172966},"targetPosition":{"x":40737.48363798533,"y":16644.057048798677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.min< chart.at01hs.bollingerBand.previous.movingAverage - chart.at01hs.bollingerBand.previous.deviation","id":"2bef9fbd-b3a7-4030-bc52-07cf8403b5e3","savedPayload":{"position":{"x":40518.825146753814,"y":15614.165286121397},"targetPosition":{"x":40591.74670606619,"y":15957.934096806865},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f4f26586-fb67-41db-aa8d-842cc41e8126","savedPayload":{"position":{"x":40591.74670606619,"y":15957.934096806865},"targetPosition":{"x":40737.48363798533,"y":16644.057048798677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.previous.min< chart.at01hs.bollingerBand.previous.previous.movingAverage - chart.at01hs.bollingerBand.previous.previous.deviation","id":"bc53ed58-a2f3-49b2-92f5-b2b42eeecd62","savedPayload":{"position":{"x":40683.01309399883,"y":15592.574026760418},"targetPosition":{"x":40701.132492502235,"y":15943.543713863683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"49903366-2e10-4658-81ba-4043d68815f3","savedPayload":{"position":{"x":40701.132492502235,"y":15943.543713863683},"targetPosition":{"x":40737.48363798533,"y":16644.057048798677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerBand.deviation >= 1.5","id":"e875491d-1fc0-4de6-b1db-83e3226c112f","savedPayload":{"position":{"x":40848.27917237193,"y":15597.050760405007},"targetPosition":{"x":40811.35249721972,"y":15946.492453693521},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e7fb66f4-fd90-4ebf-8c70-1425d32ca6fa","savedPayload":{"position":{"x":40811.35249721972,"y":15946.492453693521},"targetPosition":{"x":40737.48363798533,"y":16644.057048798677},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"972e94e6-dab6-4d8d-966b-8d64a76b0928","savedPayload":{"position":{"x":40737.48363798533,"y":16644.057048798677},"targetPosition":{"x":40828.99300332594,"y":17341.163179913245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"New Announcement","code":"{ \n\"text\": \"Triggered ON !\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Take Position at rate \" + candle.close + \" \" + quotedAsset + \". balanceBaseAsset = \" + balanceBaseAsset + \" \" + baseAsset + \".\"","id":"1fb19c15-3a56-4399-81a4-0215cd3a7408","savedPayload":{"position":{"x":41011.648974863994,"y":16662.667716069736},"targetPosition":{"x":40920.16830692097,"y":17001.964555753053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fc4bb38a-e21a-4ad4-afb7-4c1a08032523","savedPayload":{"position":{"x":40920.16830692097,"y":17001.964555753053},"targetPosition":{"x":40828.99300332594,"y":17341.163179913245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4e7d70a7-66a3-4ce3-8578-765a693d93ba","savedPayload":{"position":{"x":40828.99300332594,"y":17341.163179913245},"targetPosition":{"x":40828.79837148866,"y":18043.99260378728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"r"}}},"announcements":[{"type":"Announcement","name":"New Announcement","code":"{ \n\"text\": \"Triggered ON !\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Trigger Stage at rate \" + candle.close + \" \" + quotedAsset + \".\"","id":"fee1ad22-1475-49de-8222-42b01d1407b7","savedPayload":{"position":{"x":41149.3272288524,"y":17603.867865805965},"targetPosition":{"x":41045.585458134155,"y":17746.08686593274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a67efd5d-3072-4053-9a6f-8f4e9c1e5a16","savedPayload":{"position":{"x":41045.585458134155,"y":17746.08686593274},"targetPosition":{"x":40828.79837148866,"y":18043.99260378728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"078dc437-73fe-4333-9bc4-33afd4a3c466","savedPayload":{"position":{"x":40828.628834123585,"y":18043.764574783247},"targetPosition":{"x":41045.751931026774,"y":18712.330423882606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"openStage":{"type":"Open Stage","initialDefinition":{"type":"Initial Definition","stopLoss":{"type":"Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","code":"if (positionRate + positionRate * 1.5 / 100 > 150 * 5 / 200) {positionRate + positionRate * 1.5 / 100} else {150 * 5 / 200}","id":"448ee554-e3de-4efa-81f3-d432b2c53862","savedPayload":{"position":{"x":27862.754090463466,"y":37801.87043507369},"targetPosition":{"x":28196.023715857813,"y":37890.93953134401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 4 / 100","id":"693e9797-a626-4b2e-b14f-82551b30ac8e","savedPayload":{"position":{"x":27838.798202872717,"y":36558.561232499625},"targetPosition":{"x":27927.986616967617,"y":36891.59830842613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"726584e8-8260-446d-b9d3-b023c71937ea","savedPayload":{"position":{"x":27928.0102979253,"y":36891.60954193342},"targetPosition":{"x":28017.272719831937,"y":37224.74749626965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d6cf0c0e-3c01-4136-826d-b9cf33781e01","savedPayload":{"position":{"x":28017.272719831937,"y":37224.74749626965},"targetPosition":{"x":28106.60177946232,"y":37557.90208286212},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"fb546e97-5b64-4215-887b-f855dce837b4","savedPayload":{"position":{"x":28106.60177946232,"y":37557.90208286212},"targetPosition":{"x":28196.023715857813,"y":37890.93953134401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"2583cd03-b155-4100-a9fe-d24907c153ad","savedPayload":{"position":{"x":28196.023715857813,"y":37890.93953134401},"targetPosition":{"x":28439.981374200324,"y":38134.53988875988},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8c1ee9e2-d7b5-4d46-9a53-dfbaa3cbec70","savedPayload":{"position":{"x":28439.981374200324,"y":38134.53988875988},"targetPosition":{"x":28683.803832355705,"y":38377.86013555271},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.movingAverage * 0.4","id":"98daaee6-e88b-4fce-a65d-e8097f463762","savedPayload":{"position":{"x":28359.61287064344,"y":37429.05752433421},"targetPosition":{"x":28576.48877521516,"y":37697.079821834835},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at03hs.percentageBandwidth.previous.movingAverage <= 0.25","id":"cde19aef-5c69-4db0-9682-a0d74e7ec977","savedPayload":{"position":{"x":28923.98110539865,"y":36362.36005030556},"targetPosition":{"x":28843.621943313265,"y":36697.73827957708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bb26132e-edf1-47db-b5e3-1b61dcd58f92","savedPayload":{"position":{"x":28843.616777923242,"y":36697.769671585316},"targetPosition":{"x":28763.316515353217,"y":37033.35111075147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4f7d76f4-5a8e-4573-9c60-fb34d83b806e","savedPayload":{"position":{"x":28763.316515353217,"y":37033.35111075147},"targetPosition":{"x":28700.06150409167,"y":37375.31216617662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at03hs.percentageBandwidth.movingAverage <= 30 * 5 / 200","id":"eea4143b-b66d-452d-a272-55268af2a4e6","savedPayload":{"position":{"x":29124.43296863819,"y":36432.1470982425},"targetPosition":{"x":29000.802790383877,"y":36754.119439115646},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ca7cfb9e-049d-4148-bf2f-d683dc3fa65f","savedPayload":{"position":{"x":29000.817705469985,"y":36754.13290164355},"targetPosition":{"x":28881.899656465408,"y":37078.84897717983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","id":"0518480b-e27c-479b-8739-b4fb49045d66","savedPayload":{"position":{"x":29292.502580161425,"y":36523.52262290348},"targetPosition":{"x":29089.69809182339,"y":36802.46268486007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fcda259c-a156-41de-a145-170fb03137c9","savedPayload":{"position":{"x":29089.70110764168,"y":36802.45683656605},"targetPosition":{"x":28881.899656465408,"y":37078.84897717983},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ba21cfb1-f66d-49fc-9674-3b54053f5e3c","savedPayload":{"position":{"x":28881.899656465408,"y":37078.84897717983},"targetPosition":{"x":28700.06150409167,"y":37375.31216617662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"02450cc1-7387-412f-b29c-9cefcfb15530","savedPayload":{"position":{"x":28700.06150409167,"y":37375.31216617662},"targetPosition":{"x":28576.48877521516,"y":37697.079821834835},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"078a395a-7d4e-4f4d-8a60-a1c87942d05a","savedPayload":{"position":{"x":28576.48877521516,"y":37697.079821834835},"targetPosition":{"x":28630.206928530763,"y":38037.58645012647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"873582e3-a457-433b-9c5b-b954b7a2d52b","savedPayload":{"position":{"x":28630.206928530763,"y":38037.58645012647},"targetPosition":{"x":28683.803832355705,"y":38377.86013555271},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"Position Size","formula":{"type":"Formula","code":"balanceBaseAsset","id":"c138e36f-a98c-4b09-a5a8-48e9cb7517f4","savedPayload":{"position":{"x":28997.49154888704,"y":37763.97659571936},"targetPosition":{"x":28840.644326783942,"y":38070.957298293026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d8f17559-4d61-4bad-b908-574f0086d88c","savedPayload":{"position":{"x":28840.644326783942,"y":38070.957298293026},"targetPosition":{"x":28683.803832355705,"y":38377.86013555271},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"Position Rate","formula":{"type":"Formula","name":"My Formula","code":"candle.close","id":"a6df3558-2d4c-49fd-ae22-60a0096a1838","savedPayload":{"position":{"x":29298.49535904129,"y":38065.43152380673},"targetPosition":{"x":28991.122647089924,"y":38221.738681927076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"12b556ff-c7b5-43fb-836f-4587193c32c5","savedPayload":{"position":{"x":28991.122647089924,"y":38221.738681927076},"targetPosition":{"x":28683.803832355705,"y":38377.86013555271},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1b2aa4b3-f2cf-4193-811e-9fbbdbf49b2b","savedPayload":{"position":{"x":28683.803832355705,"y":38377.86013555271},"targetPosition":{"x":28575.90003806251,"y":39058.51954897065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"t"}}},"openExecution":{"type":"Open Execution","id":"de41f928-10a0-400c-b391-30744f81058f","savedPayload":{"position":{"x":29132.72153020977,"y":38654.38684107272},"targetPosition":{"x":28575.90003806251,"y":39058.51954897065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"New Announcement","code":"{ \n\"text\": \"Triggered ON !\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Open Stage at rate \" + candle.close + \" \" + quotedAsset + \".\"","id":"80e99b1d-03cb-47c5-9b12-b9d56dd16fe2","savedPayload":{"position":{"x":29596.623852842335,"y":39220.21512113033},"targetPosition":{"x":29256.136965529164,"y":39166.29623763803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2d838268-9c72-419d-8e40-94c25a3a1225","savedPayload":{"position":{"x":29256.136965529164,"y":39166.29623763803},"targetPosition":{"x":28575.90003806251,"y":39058.51954897065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"70bf3771-b311-4b70-b881-7f3cb384973e","savedPayload":{"position":{"x":43319.18459776506,"y":17060.613845833795},"targetPosition":{"x":41045.751931026774,"y":18712.330423882606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","stopLoss":{"type":"Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 4 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 4 / 100} else {stopLoss}","id":"de31bf30-1a8c-47e0-b86d-f678f7ae5d58","savedPayload":{"position":{"x":28718.13371183511,"y":40906.762247621424},"targetPosition":{"x":28244.700963740746,"y":41405.95165218291},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[],"announcements":[],"id":"3cc519c4-645c-428b-b7ea-f06b3b234cee","savedPayload":{"position":{"x":28441.67248087259,"y":42066.24116563961},"targetPosition":{"x":28244.700963740746,"y":41405.95165218291},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"d6b223e2-645f-43eb-998e-426aa4634155","savedPayload":{"position":{"x":28244.700963740746,"y":41405.95165218291},"targetPosition":{"x":27573.72676577209,"y":41245.23424938797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c96e927b-dfaa-4fb8-b253-340aab3727e2","savedPayload":{"position":{"x":27573.72676577209,"y":41245.23424938797},"targetPosition":{"x":26903.026095516023,"y":41084.478988003975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","phases":[{"type":"Phase","name":"New Phase 1","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.movingAverage * 0.35","id":"aba39824-a369-42ff-b795-c4befbc41722","savedPayload":{"position":{"x":28769.08089716601,"y":41888.4379265043},"targetPosition":{"x":28297.391454542332,"y":42098.51226496971},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at04hs.percentageBandwidth.previous.movingAverage <= 15 * 5 / 200","id":"d85655db-5f1b-49a1-80ac-d34a2f3618e8","savedPayload":{"position":{"x":28217.673422187934,"y":44160.143086470525},"targetPosition":{"x":28210.272768384122,"y":43900.259519928426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"10770e7d-d204-44d7-987d-8eebc8e0f9fd","savedPayload":{"position":{"x":28210.123636786306,"y":43900.2456469662},"targetPosition":{"x":28203.665876389226,"y":43643.460137477676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"abe76ce1-b2cd-4b77-8da0-1fbb7ed0f456","savedPayload":{"position":{"x":28202.887929602704,"y":43642.293700933034},"targetPosition":{"x":28189.361912247517,"y":43125.22822862359},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at04hs.percentageBandwidth.movingAverage <= 50 * 5 / 200","id":"a8127516-d10b-4922-a587-8c0a40987a6b","savedPayload":{"position":{"x":27513.78932387198,"y":44494.28717661295},"targetPosition":{"x":27698.925470660823,"y":44011.81884920919},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0b9ea6c7-ef39-4b0c-a066-25d0cb3e684a","savedPayload":{"position":{"x":27698.582108426705,"y":44026.59779701859},"targetPosition":{"x":27885.262324641033,"y":43543.68490046174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","id":"83541ebf-2d85-4347-be2f-5519c28cc06b","savedPayload":{"position":{"x":27083.528458148056,"y":44192.669279745365},"targetPosition":{"x":27483.27142319978,"y":43868.06645668192},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a5ebd149-82ca-42ee-a019-c35908630c97","savedPayload":{"position":{"x":27483.214415385588,"y":43868.003197810416},"targetPosition":{"x":27885.262324641033,"y":43543.68490046174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"780a0b1c-d8e9-42d0-83e9-7eac38526713","savedPayload":{"position":{"x":27884.812411662948,"y":43543.13675637284},"targetPosition":{"x":28189.361912247517,"y":43125.22822862359},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"f2f28964-3527-40a4-aab8-a5bddee456c3","savedPayload":{"position":{"x":28189.361912247517,"y":43125.22822862359},"targetPosition":{"x":28297.391454542332,"y":42098.51226496971},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"f721e717-fe84-4fc8-89ea-a9169fbb2b8b","savedPayload":{"position":{"x":28297.391454542332,"y":42098.51226496971},"targetPosition":{"x":27461.018701923105,"y":41490.565943387344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase 2","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.movingAverage * 0.2","id":"31c09170-3870-4ecd-8df5-c006d099fd26","savedPayload":{"position":{"x":29605.686405287142,"y":42496.12145503934},"targetPosition":{"x":29133.83759882158,"y":42706.003235608514},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at06hs.percentageBandwidth.previous.movingAverage <= 15 * 5 / 200","id":"cc42d05e-5214-4e6a-a8b1-a0b0a1a43f9e","savedPayload":{"position":{"x":29051.724137379573,"y":44754.593729003034},"targetPosition":{"x":29045.638231103414,"y":44495.9715253245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cb14f97b-80b4-403c-9338-33ff0ee50d54","savedPayload":{"position":{"x":29045.638231103414,"y":44495.9715253245},"targetPosition":{"x":29038.786690773053,"y":44237.11243451953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b3d438af-a983-421f-ad44-1e8e68045bec","savedPayload":{"position":{"x":29041.193004122222,"y":44248.37672997642},"targetPosition":{"x":29027.066555130652,"y":43733.07371506251},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at06hs.percentageBandwidth.movingAverage <= 50 * 5 / 200","id":"b4b0a458-6c0d-48ee-8229-16bbbe0d8aab","savedPayload":{"position":{"x":28350.97292530882,"y":45103.039301842044},"targetPosition":{"x":28536.016900799015,"y":44620.71970698076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5fd35821-cdc3-40a5-9c1a-99d6c34ad3a5","savedPayload":{"position":{"x":28536.016900799015,"y":44620.71970698076},"targetPosition":{"x":28720.981680598357,"y":44137.8664669123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","id":"8fc41821-4223-4d62-9c1e-8b8a58b19a64","savedPayload":{"position":{"x":27777.2669807274,"y":44558.416733298676},"targetPosition":{"x":28249.245287566355,"y":44348.24301712329},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"65cdb202-4470-4dab-b395-84bf1139ed90","savedPayload":{"position":{"x":28249.245287566355,"y":44348.24301712329},"targetPosition":{"x":28720.981680598357,"y":44137.8664669123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"65998ace-ed44-4b7c-9bac-b41b5dbd91f3","savedPayload":{"position":{"x":28722.664977809065,"y":44152.133085053705},"targetPosition":{"x":29027.066555130652,"y":43733.07371506251},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"5eb70946-55ab-468d-a1f7-b8489bfd1918","savedPayload":{"position":{"x":29026.25851806721,"y":43732.54526995663},"targetPosition":{"x":29133.83759882158,"y":42706.003235608514},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"322e4405-f6d8-4119-8b06-12842394446c","savedPayload":{"position":{"x":29133.83759882158,"y":42706.003235608514},"targetPosition":{"x":28297.391454542332,"y":42098.51226496971},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase 3","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.movingAverage * 0.15","id":"7ccb623f-5c4a-4ea4-b9a5-b03915edf701","savedPayload":{"position":{"x":30442.76505686322,"y":43102.81532845912},"targetPosition":{"x":29970.88734908114,"y":43313.29735246427},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at08hs.percentageBandwidth.previous.movingAverage <= 15 * 5 / 200 && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >= 5","id":"94d1d02d-44f4-473a-a7b7-de2f1468c057","savedPayload":{"position":{"x":29888.352271297714,"y":45361.270478878745},"targetPosition":{"x":29882.192773915227,"y":45102.69247178304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"83e4873c-27af-44af-9073-77ffd7a572f2","savedPayload":{"position":{"x":29882.192773915227,"y":45102.69247178304},"targetPosition":{"x":29875.85041104174,"y":44843.61090659265},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a356f8d7-9b7a-426d-be67-94c31110dbe5","savedPayload":{"position":{"x":29875.85041104174,"y":44843.61090659265},"targetPosition":{"x":29862.093623619825,"y":44326.91293823362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at08hs.percentageBandwidth.movingAverage <= 40 * 5 / 200 && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >= 3","id":"85d8bc86-36d2-444c-af92-bf65f6e22495","savedPayload":{"position":{"x":29279.967170351716,"y":45469.22859679188},"targetPosition":{"x":29372.666929809657,"y":45227.35545864132},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2c1acf3c-eba9-4b8d-b37d-5b39d53b6675","savedPayload":{"position":{"x":29372.666929809657,"y":45227.35545864132},"targetPosition":{"x":29558.181693584735,"y":44745.1276047753},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.direction === \"Up\"","id":"2638c79e-6109-44bb-a538-9b6e5be989e6","savedPayload":{"position":{"x":28754.986701051188,"y":45396.309332964716},"targetPosition":{"x":29156.88814103355,"y":45070.69701665891},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d888e03a-7cc1-415d-81df-8b65e0352ef0","savedPayload":{"position":{"x":29156.88814103355,"y":45070.69701665891},"targetPosition":{"x":29558.181693584735,"y":44745.1276047753},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"aea51276-c54c-48c7-83ed-eb7f42194f1f","savedPayload":{"position":{"x":29558.181693584735,"y":44745.1276047753},"targetPosition":{"x":29862.093623619825,"y":44326.91293823362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"e447d90b-6e92-4000-9c25-f106e1bbc311","savedPayload":{"position":{"x":29863.288774002736,"y":44340.20860259425},"targetPosition":{"x":29970.88734908114,"y":43313.29735246427},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"05723b89-c8ed-4d8d-b30f-5fe78c84ebfe","savedPayload":{"position":{"x":29970.88734908114,"y":43313.29735246427},"targetPosition":{"x":29133.83759882158,"y":42706.003235608514},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase 4","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.movingAverage * 0.1","id":"9d4d7cf5-c982-4eb2-b532-cf889f16f490","savedPayload":{"position":{"x":31283.448668078945,"y":43711.24136450083},"targetPosition":{"x":30809.565967620572,"y":43920.61129526557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at12hs.percentageBandwidth.previous.movingAverage <= 15* 5 / 200 && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >= 15","id":"a76f5183-192b-4959-8e7b-cfd0ec60a531","savedPayload":{"position":{"x":30726.315294401636,"y":45968.44257127543},"targetPosition":{"x":30719.403220930104,"y":45709.65219759063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2eb5d722-b708-47c0-a952-09df9d96110b","savedPayload":{"position":{"x":30719.403220930104,"y":45709.65219759063},"targetPosition":{"x":30713.09778732514,"y":45451.2549074874},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"638ae37a-361d-4a11-9c88-3292df00b73a","savedPayload":{"position":{"x":30713.09778732514,"y":45451.2549074874},"targetPosition":{"x":30699.509220993346,"y":44934.228166094734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"(chart.at24hs.percentageBandwidth.movingAverage <= 70 * 5 / 200 || chart.at12hs.percentageBandwidth.movingAverage <= 40 * 5 / 200 ) && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >=5","id":"dd4fb83f-cf74-46f8-91e3-ee89ff9d8ce7","savedPayload":{"position":{"x":30117.059948453647,"y":46076.17070114448},"targetPosition":{"x":30209.830813714078,"y":45834.75155622112},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ebc92857-50ae-4375-9287-4b5f98294395","savedPayload":{"position":{"x":30209.830813714078,"y":45834.75155622112},"targetPosition":{"x":30395.100812836874,"y":45352.16993193326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.previous.direction === \"Up\"","id":"bb3cd9c3-7482-4c8d-b5ed-9ee4f5c41e30","savedPayload":{"position":{"x":29592.089768910646,"y":46002.87543231785},"targetPosition":{"x":29993.63470829312,"y":45677.273213323766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"29c292c8-18a1-4db7-a300-348381a340f5","savedPayload":{"position":{"x":29993.63470829312,"y":45677.273213323766},"targetPosition":{"x":30395.100812836874,"y":45352.16993193326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b0dcc674-ee90-4e04-80e9-47e4654075b1","savedPayload":{"position":{"x":30395.100812836874,"y":45352.16993193326},"targetPosition":{"x":30699.509220993346,"y":44934.228166094734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"084686eb-9896-405a-a232-4845a46cda93","savedPayload":{"position":{"x":30704.17733940086,"y":44951.084373052625},"targetPosition":{"x":30809.748975953848,"y":43920.60002109334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"fec5b7b3-e8d8-4197-9a12-0d24e746c775","savedPayload":{"position":{"x":30807.94629438503,"y":43920.755532910414},"targetPosition":{"x":29970.88734908114,"y":43313.29735246427},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase 5","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation * 1.75","id":"98781ade-0130-4b11-b972-9ea9cd8c8681","savedPayload":{"position":{"x":32116.427373336363,"y":44304.36226927431},"targetPosition":{"x":31643.954044687805,"y":44514.76283542852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.percentageBandwidth.previous.movingAverage <= 30 * 5 / 200 && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >=10","id":"c857cb76-469a-4610-aae1-c24bea799227","savedPayload":{"position":{"x":31697.92367134093,"y":46563.37866177049},"targetPosition":{"x":31657.69455772915,"y":46308.296408520175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4ec27db1-cfd7-4b0e-a2c7-e24e31fbddd4","savedPayload":{"position":{"x":31657.69455772915,"y":46308.296408520175},"targetPosition":{"x":31617.59940331046,"y":46052.525304911855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ed10b124-3dbf-4263-bdfc-39f83b7bdf46","savedPayload":{"position":{"x":31617.59940331046,"y":46052.525304911855},"targetPosition":{"x":31536.734143167356,"y":45541.767269313095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"(chart.at24hs.percentageBandwidth.movingAverage <= 60 * 5 / 200 || chart.at12hs.percentageBandwidth.movingAverage <= 30* 5 / 200) && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >=5","id":"abf5c421-f55f-4357-a0b1-30b057b97563","savedPayload":{"position":{"x":30862.833929281474,"y":46924.718878878266},"targetPosition":{"x":31048.04636218654,"y":46442.27306350962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f43a7856-d53a-4a71-afcd-080570df62e9","savedPayload":{"position":{"x":31048.04636218654,"y":46442.27306350962},"targetPosition":{"x":31233.063670844833,"y":45960.206278213635},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.previous.direction === \"Up\"","id":"54f755e2-02cb-4301-98eb-52b7a7c856d8","savedPayload":{"position":{"x":30430.55172997686,"y":46611.4083095655},"targetPosition":{"x":30832.14552148268,"y":46285.97291674377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"00d1d808-1757-43a5-9937-1ad755ba0a6d","savedPayload":{"position":{"x":30832.14552148268,"y":46285.97291674377},"targetPosition":{"x":31233.063670844833,"y":45960.206278213635},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"12567531-5c2b-4d7d-b7e0-3ac2c28211d8","savedPayload":{"position":{"x":31233.063670844833,"y":45960.206278213635},"targetPosition":{"x":31536.734143167356,"y":45541.767269313095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"9abc28a3-70a5-45b3-8b62-5176c2b0dfa4","savedPayload":{"position":{"x":31536.734143167356,"y":45541.767269313095},"targetPosition":{"x":31643.954044687805,"y":44514.76283542852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"07b02430-b413-4c1d-9b30-af6d04b6144d","savedPayload":{"position":{"x":31647.506233883865,"y":44527.49031770047},"targetPosition":{"x":30809.748975953848,"y":43920.60002109334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase 6","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation * 1.25","id":"a5e2d77c-ed6b-47ca-a5d2-dc3331a766aa","savedPayload":{"position":{"x":32952.918656753674,"y":44912.15223866125},"targetPosition":{"x":32480.638558156756,"y":45122.66219214419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.percentageBandwidth.previous.movingAverage <= 30 * 5 / 200 && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >=10","id":"a738d89d-1f15-4612-a3ec-287c1885a80d","savedPayload":{"position":{"x":32414.618452733845,"y":47699.86678841927},"targetPosition":{"x":32400.91146362946,"y":47183.8403684616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"57616784-efe1-4995-950e-dbfe3045587c","savedPayload":{"position":{"x":32400.91146362946,"y":47183.8403684616},"targetPosition":{"x":32387.27854461963,"y":46666.80260984331},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"754f8a4d-fa40-46b7-88fd-a2e789b6ee2f","savedPayload":{"position":{"x":32387.27854461963,"y":46666.80260984331},"targetPosition":{"x":32373.197733694906,"y":46149.747547597915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"(chart.at24hs.percentageBandwidth.movingAverage <= 50 * 5 / 200 || chart.at12hs.percentageBandwidth.movingAverage <= 17.5 * 5 / 200 ) && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >=5","id":"f37841ef-44c1-4344-92a6-c0861dbd3ee8","savedPayload":{"position":{"x":31576.260287312238,"y":47476.95870106165},"targetPosition":{"x":31822.641259590677,"y":47022.75172666923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c1948dae-0bad-4d0d-8fdf-64596c6d8841","savedPayload":{"position":{"x":31822.641259590677,"y":47022.75172666923},"targetPosition":{"x":32068.766941947903,"y":46568.47957469146},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.previous.direction === \"Up\"","id":"3ab3c1a2-79e6-49f6-a454-d9dce0258e1f","savedPayload":{"position":{"x":31265.517412700217,"y":47219.30533821963},"targetPosition":{"x":31666.95058234024,"y":46893.65746196227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8b1effc0-4e42-4982-a107-7c14253a0a91","savedPayload":{"position":{"x":31666.95058234024,"y":46893.65746196227},"targetPosition":{"x":32068.766941947903,"y":46568.47957469146},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"53f5eade-6073-48e8-8c7c-eeae6203fe56","savedPayload":{"position":{"x":32068.766941947903,"y":46568.47957469146},"targetPosition":{"x":32373.197733694906,"y":46149.747547597915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"78f56842-1b09-4f95-ab84-40bfc06e9290","savedPayload":{"position":{"x":32373.197733694906,"y":46149.747547597915},"targetPosition":{"x":32480.638558156756,"y":45122.66219214419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"d408f464-44d9-4666-99d4-39923a6f900e","savedPayload":{"position":{"x":32480.638558156756,"y":45122.66219214419},"targetPosition":{"x":31643.954044687805,"y":44514.76283542852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation","id":"83e918e2-59fe-417d-8be5-2db6ec8163a4","savedPayload":{"position":{"x":33316.9526979199,"y":45729.69966929474},"targetPosition":{"x":32899.31448818952,"y":45426.07372232443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[],"id":"241b040a-0981-4e3b-8308-e2921bd372b9","savedPayload":{"position":{"x":32899.31448818952,"y":45426.07372232443},"targetPosition":{"x":32480.638558156756,"y":45122.66219214419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b44bba31-b942-4b54-a22a-ea6682dfc3bc","savedPayload":{"position":{"x":27461.018701923105,"y":41490.565943387344},"targetPosition":{"x":26903.026095516023,"y":41084.478988003975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"New Announcement","code":"{ \n\"text\": \"Triggered ON !\"\n}","formula":{"type":"Formula","name":"New Formula","code":"value +\" entered the Manage Stage at rate \" + candle.close + \" \" + quotedAsset + \".\"","id":"541dc8a2-1eaf-4d95-a458-2fc9cbcb7502","savedPayload":{"position":{"x":27441.614524538258,"y":41965.5825289579},"targetPosition":{"x":27261.76775086609,"y":41671.386537634775},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"49cb2ebb-6cef-490d-900b-0dc610c4da51","savedPayload":{"position":{"x":27261.76775086609,"y":41671.386537634775},"targetPosition":{"x":26903.026095516023,"y":41084.478988003975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6cb1a8f3-625c-4390-8124-4c4df1896331","savedPayload":{"position":{"x":41614.575702981885,"y":19125.553198461148},"targetPosition":{"x":41045.751931026774,"y":18712.330423882606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","closeExecution":{"type":"Close Execution","id":"9b0fe8f6-e5e9-491f-b554-5b94e8e4d8c9","savedPayload":{"position":{"x":26319.749631135088,"y":41389.93162937928},"targetPosition":{"x":26238.51952416559,"y":41007.15680602576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"New Announcement","code":"{ \n\"text\": \"Triggered ON !\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Close Stage at rate \" + candle.close + \" \" + quotedAsset + \".\" \n+ \" Position Exit Type: \" + value + \".\" \n+ \" ROI: \" + lastTradeROI.toFixed(2) + \" %\"","id":"706da109-1287-4d9c-8458-e527f3db728a","savedPayload":{"position":{"x":25806.183338605897,"y":41396.73215567412},"targetPosition":{"x":25934.3492966588,"y":41281.16692656502},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"af0b5d25-3f44-421a-ab2c-9fcdbb58eba1","savedPayload":{"position":{"x":25934.3492966588,"y":41281.16692656502},"targetPosition":{"x":26238.51952416559,"y":41007.15680602576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f8582d0c-5022-451b-82df-a0307d941afb","savedPayload":{"position":{"x":40937.16014794862,"y":19046.729564795714},"targetPosition":{"x":41045.751931026774,"y":18712.330423882606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5272a0f3-ab7d-43a5-8c4a-c8d048535b7d","savedPayload":{"position":{"x":41045.751931026774,"y":18712.330423882606},"targetPosition":{"x":39639.25,"y":18712.33806613947},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8e87715a-d609-4558-b1ee-bb7d6cb00179","savedPayload":{"position":{"x":39639.25,"y":18712.33806613947},"targetPosition":{"x":39639.25,"y":18712.33806613947},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}} \ No newline at end of file diff --git a/Trading-Systems/Sparta-BRR-BTC-USDT.json b/Trading-Systems/Sparta-BRR-BTC-USDT.json deleted file mode 100644 index c9e6e64c7..000000000 --- a/Trading-Systems/Sparta-BRR-BTC-USDT.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"Trading System","name":"Bull Run Rider for BTC/USDT","code":"{ \n\"codeName\": \"Sparta-BRR-BTC-USDT\"\n}","strategies":[{"type":"Strategy","name":"My Strategy","triggerStage":{"type":"Trigger Stage","triggerOn":{"type":"Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.max > chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"1e07e38a-c469-4f3f-b7e8-dccd9f94c546","savedPayload":{"position":{"x":32136.28636024774,"y":18006.129040560536},"targetPosition":{"x":32356.411078541598,"y":17994.8611316122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a1c434c4-5787-4906-8157-1e355999bba8","savedPayload":{"position":{"x":32356.411078541598,"y":17994.8611316122},"targetPosition":{"x":32576.81076551354,"y":17983.560786264006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.max > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation\n","id":"3fb95a71-efe8-45cf-be43-8b0d94d2f420","savedPayload":{"position":{"x":32336.278054047183,"y":17613.80662251148},"targetPosition":{"x":32456.46036116711,"y":17798.592583814658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f69f2608-49bd-4b04-b8f8-497675f819fe","savedPayload":{"position":{"x":32456.46036116711,"y":17798.592583814658},"targetPosition":{"x":32576.81076551354,"y":17983.560786264006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1dfb0689-df0c-4184-9c09-683d012c9dfe","savedPayload":{"position":{"x":32576.81076551354,"y":17983.560786264006},"targetPosition":{"x":32773.13118473049,"y":18083.48293309789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"32d2ee8c-71bd-4e4c-8671-04bbc4a16734","savedPayload":{"position":{"x":32773.13118473049,"y":18083.48293309789},"targetPosition":{"x":33165.111331477776,"y":18282.94927462636},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage","id":"a1dd4467-b96b-4084-bd9b-056c6495de95","savedPayload":{"position":{"x":32824.239213958535,"y":17235.66806596493},"targetPosition":{"x":32892.45262811099,"y":17445.325022978603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b527026c-4be3-4baf-bbde-83ebfd17e567","savedPayload":{"position":{"x":32892.45262811099,"y":17445.325022978603},"targetPosition":{"x":32960.82113677954,"y":17655.21646975055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"41cbb7ba-020c-4e96-a6a7-c3ef8c25b6fd","savedPayload":{"position":{"x":32960.82113677954,"y":17655.21646975055},"targetPosition":{"x":33029.05799170436,"y":17864.75284364219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"1af9fdb8-7316-4374-84f2-1b946741b5c6","savedPayload":{"position":{"x":33029.05799170436,"y":17864.75284364219},"targetPosition":{"x":33165.111331477776,"y":18282.94927462636},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.max > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation\n","id":"0c15bd8b-b59c-4a2c-b65a-b063aec45216","savedPayload":{"position":{"x":33171.57121687983,"y":17363.232196850764},"targetPosition":{"x":33314.699085071785,"y":17531.156854636647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e022ab25-c7d3-439b-bfd7-1217c6abfbfe","savedPayload":{"position":{"x":33314.699085071785,"y":17531.156854636647},"targetPosition":{"x":33464.39831864422,"y":17695.493553606346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.max > chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"cbce2ad1-a528-444c-9a41-3d592f7260aa","savedPayload":{"position":{"x":33323.92463319635,"y":17272.776882135928},"targetPosition":{"x":33392.10363312081,"y":17482.738587934575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"793426fb-7c1e-40c6-a41e-2acb0943aece","savedPayload":{"position":{"x":33392.10363312081,"y":17482.738587934575},"targetPosition":{"x":33464.39831864422,"y":17695.493553606346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close > chart.at01hs.candle.open","id":"9f72065b-dd6c-4d64-8de5-7fe2110bf66b","savedPayload":{"position":{"x":33497.69267121316,"y":17250.86445462576},"targetPosition":{"x":33480.85017954714,"y":17470.73191146608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"abdce7c6-67e2-4fbf-a4c3-e5526c13b6ca","savedPayload":{"position":{"x":33480.85017954714,"y":17470.73191146608},"targetPosition":{"x":33464.39831864422,"y":17695.493553606346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.max-chart.at01hs.candle.min < 500","id":"68d20d82-b34a-49b7-be79-2d859997ec8e","savedPayload":{"position":{"x":33666.197050656265,"y":17297.87877095202},"targetPosition":{"x":33566.359629782004,"y":17494.335615659027},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2d4d8745-13d1-47bd-8f42-faace8bfd7cb","savedPayload":{"position":{"x":33566.359629782004,"y":17494.335615659027},"targetPosition":{"x":33464.39831864422,"y":17695.493553606346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Up\"","id":"01a5065a-b7af-4cbe-8678-033694f77d69","savedPayload":{"position":{"x":33803.30743500673,"y":17405.68601299266},"targetPosition":{"x":33635.85756294036,"y":17548.855803792325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5f433ebc-f0ae-4095-93f5-6de3e03c0683","savedPayload":{"position":{"x":33635.85756294036,"y":17548.855803792325},"targetPosition":{"x":33464.39831864422,"y":17695.493553606346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at04hs.percentageBandwidth.movingAverage >= 85","id":"98b5b2b2-fbc0-4d1f-af0f-0d7eee6dc94b","savedPayload":{"position":{"x":33888.53632028435,"y":17557.542176570165},"targetPosition":{"x":33679.07051639968,"y":17625.720481419718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7ef29297-9eb3-4b6e-a69e-58e5afbfaff9","savedPayload":{"position":{"x":33679.07051639968,"y":17625.720481419718},"targetPosition":{"x":33464.39831864422,"y":17695.493553606346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"(chart.at12hs.bollingerSubChannel.slope === \"Side\" || chart.at12hs.bollingerSubChannel.slope === \"Gentle\") && (chart.at08hs.bollingerSubChannel.slope === \"Side\" || chart.at08hs.bollingerSubChannel.slope === \"Gentle\") && (chart.at06hs.bollingerSubChannel.slope === \"Side\" || chart.at06hs.bollingerSubChannel.slope === \"Gentle\")","id":"ea3dc59e-40da-4b52-b5d6-2724fb12eb20","savedPayload":{"position":{"x":33904.16275620565,"y":17743.462498734527},"targetPosition":{"x":33684.922059913355,"y":17726.252653307056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"24a4f2dc-268f-4e27-97f7-f4a0cd89e710","savedPayload":{"position":{"x":33684.922059913355,"y":17726.252653307056},"targetPosition":{"x":33464.39831864422,"y":17695.493553606346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c3b9135a-1e58-486e-b444-1bdd743effa5","savedPayload":{"position":{"x":33464.39831864422,"y":17695.493553606346},"targetPosition":{"x":33364.594001174206,"y":17891.460769989226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"830b1089-fef6-4e79-9ad2-a45c14574b84","savedPayload":{"position":{"x":33364.594001174206,"y":17891.460769989226},"targetPosition":{"x":33165.111331477776,"y":18282.94927462636},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"8ffee2fe-23fb-4e58-8bb9-09b0c2aaa621","savedPayload":{"position":{"x":33165.111331477776,"y":18282.94927462636},"targetPosition":{"x":33301.07690941218,"y":18701.260324259536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","initialDefinition":{"type":"Initial Definition","stopLoss":{"type":"Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","code":"positionRate - positionRate * 2.5 / 100","id":"5df1f00d-cb38-4ffb-84ac-3ce85f4e23dc","savedPayload":{"position":{"x":40413.063887478034,"y":18623.799058846937},"targetPosition":{"x":40435.48088542664,"y":18410.515570394346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close > positionRate + positionRate * 2 / 100","id":"7aeace08-1969-4deb-aa89-726658f778ba","savedPayload":{"position":{"x":39741.479204493,"y":17906.293834688855},"targetPosition":{"x":39914.97962472641,"y":18032.349268615228},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e7ca02e3-34a6-4898-98e7-c44051e3b1a4","savedPayload":{"position":{"x":39914.97962472641,"y":18032.349268615228},"targetPosition":{"x":40088.48004495982,"y":18158.4047025416},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9111e54c-f9c1-491c-96c4-0b15f5f46326","savedPayload":{"position":{"x":40088.48004495982,"y":18158.4047025416},"targetPosition":{"x":40261.98046519323,"y":18284.460136467973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"15653ae3-7298-4da5-89a3-6da07b194d05","savedPayload":{"position":{"x":40261.98046519323,"y":18284.460136467973},"targetPosition":{"x":40435.48088542664,"y":18410.515570394346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"c7844fec-1bb6-4412-b95d-f47b437d9a67","savedPayload":{"position":{"x":40435.48088542664,"y":18410.515570394346},"targetPosition":{"x":40631.39830360865,"y":18323.287515868124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2f0906a5-35ac-4681-9a75-d455789d198d","savedPayload":{"position":{"x":34034.380363564116,"y":17731.34601389084},"targetPosition":{"x":34335.182151451816,"y":17597.34504268334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","code":"positionRate * 2","id":"54b0c16e-a747-4e2d-8350-fd147abc9955","savedPayload":{"position":{"x":33571.92767878455,"y":17173.688596070475},"targetPosition":{"x":33894.45112325249,"y":17106.291085106615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[],"announcements":[],"id":"c6bffce6-17a9-484d-a8f7-5a3a4f5bd18d","savedPayload":{"position":{"x":33996.46835932633,"y":16792.00044700848},"targetPosition":{"x":33894.45112325249,"y":17106.291085106615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"73450f7c-f2df-4c92-a14d-e39d460d09c7","savedPayload":{"position":{"x":33894.45112325249,"y":17106.291085106615},"targetPosition":{"x":34114.96821124175,"y":17351.89297465581},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"784fc53e-e6ea-4658-80c7-62139549c49a","savedPayload":{"position":{"x":34114.96821124175,"y":17351.89297465581},"targetPosition":{"x":34335.182151451816,"y":17597.34504268334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"Position Size","formula":{"type":"Formula","code":"balanceQuotedAsset","id":"51c900a5-97d0-4d54-9af2-d2a8b56338ef","savedPayload":{"position":{"x":34665.57343531102,"y":17025.553858351243},"targetPosition":{"x":34500.45317529984,"y":17311.39741068467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"31b90dc3-5e56-4485-afd1-7f0017805c7a","savedPayload":{"position":{"x":34500.45317529984,"y":17311.39741068467},"targetPosition":{"x":34335.182151451816,"y":17597.34504268334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"Position Rate","formula":{"type":"Formula","name":"My Formula","code":"chart.at01hs.candle.close","id":"bdd26201-c1e2-403b-afca-7c48da10cd7a","savedPayload":{"position":{"x":34981.10844752096,"y":17733.95901919584},"targetPosition":{"x":34658.1759953963,"y":17665.592044141285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5368a5cc-a6a1-46fa-996c-76a00c003dd1","savedPayload":{"position":{"x":34658.1759953963,"y":17665.592044141285},"targetPosition":{"x":34335.182151451816,"y":17597.34504268334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b0e61bb8-915c-4089-839c-0cbb27143a5a","savedPayload":{"position":{"x":34335.182151451816,"y":17597.34504268334},"targetPosition":{"x":34369.11419237636,"y":17925.674768152858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","id":"adafb7bb-4f7f-4275-b6dd-36e9d03441ce","savedPayload":{"position":{"x":34970.91407909393,"y":18193.379688664256},"targetPosition":{"x":34369.11419237636,"y":17925.674768152858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"announcements":[],"id":"4743e572-e0ec-4641-8881-86eef4337ed7","savedPayload":{"position":{"x":34369.11419237636,"y":17925.674768152858},"targetPosition":{"x":33301.07690941218,"y":18701.260324259536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","stopLoss":{"type":"Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.movingAverage * 3.5 / 100 > stopLoss) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.movingAverage * 3.5 / 100} else {stopLoss}","id":"f8666b4c-a5f5-463f-b358-5e6930274156","savedPayload":{"position":{"x":34083.189959275674,"y":18561.27186019099},"targetPosition":{"x":34059.682856962274,"y":18780.5460861474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[],"announcements":[],"id":"49858221-6783-4a5c-abdd-a715ee64491d","savedPayload":{"position":{"x":34238.67247171901,"y":18910.031257666433},"targetPosition":{"x":34059.682856962274,"y":18780.5460861474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"1c0100eb-a29a-4024-b7b9-d24164bc43eb","savedPayload":{"position":{"x":34059.682856962274,"y":18780.5460861474},"targetPosition":{"x":33857.93951171484,"y":18870.159251221132},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"17cd97a5-9ae0-46fb-86a7-a6b2824510c4","savedPayload":{"position":{"x":33857.93951171484,"y":18870.159251221132},"targetPosition":{"x":33656.723298141434,"y":18959.56762011535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 12.5 / 100","id":"77754c17-f3b3-478f-b837-79bd0a2b533b","savedPayload":{"position":{"x":33944.702654384215,"y":19874.728267927403},"targetPosition":{"x":33588.4475878523,"y":19616.28465130713},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.min < chart.at01hs.candle.previous.min","id":"8d2df34f-70ab-42e3-a055-c33f1a2e0c33","savedPayload":{"position":{"x":32642.242144725136,"y":20160.194428377745},"targetPosition":{"x":32814.27008689754,"y":20022.158826682076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6b58a29a-27a3-4728-96bf-f1cffc915b93","savedPayload":{"position":{"x":32814.27008689754,"y":20022.158826682076},"targetPosition":{"x":32985.94451109054,"y":19883.94443870979},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.min < chart.at01hs.candle.previous.previous.min","id":"b3f4b456-e22f-4461-a912-674d9d59d25e","savedPayload":{"position":{"x":32549.716009927022,"y":19951.774767163657},"targetPosition":{"x":32767.821194354558,"y":19917.688148589335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d6f645b9-dded-4dc8-9361-edbb5e9362d7","savedPayload":{"position":{"x":32767.821194354558,"y":19917.688148589335},"targetPosition":{"x":32985.94451109054,"y":19883.94443870979},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"11d3b6ff-1092-4d0c-aee7-06fd7fa1fdd4","savedPayload":{"position":{"x":32985.94451109054,"y":19883.94443870979},"targetPosition":{"x":33187.05314059247,"y":19794.843413175684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"262eb093-e91f-48c0-b975-43b2bb998c3e","savedPayload":{"position":{"x":33187.05314059247,"y":19794.843413175684},"targetPosition":{"x":33588.4475878523,"y":19616.28465130713},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"f23e15b8-7fc2-4b64-a091-7a889776d29a","savedPayload":{"position":{"x":33588.4475878523,"y":19616.28465130713},"targetPosition":{"x":33633.98398592257,"y":19178.780444559092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 10 / 100","id":"b99edd1c-9f5b-4024-87cc-5bae52679cc8","savedPayload":{"position":{"x":33899.31786211994,"y":20312.35947761577},"targetPosition":{"x":33543.08088968995,"y":20053.841140463508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.percentageBandwidth.direction === 'Down'","id":"994de580-782e-4e71-ad72-5a78f025e9b4","savedPayload":{"position":{"x":32713.80935872926,"y":20733.646838228065},"targetPosition":{"x":32844.243242986966,"y":20555.474564402964},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f3b04fbc-e688-4e48-9d5f-96ea5ef0c8cb","savedPayload":{"position":{"x":32844.243242986966,"y":20555.474564402964},"targetPosition":{"x":32974.06471941221,"y":20376.961716120833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.percentageBandwidth.movingAverage < 70","id":"fe5f5c24-785d-4b05-aa61-50d738d9cd81","savedPayload":{"position":{"x":32570.032267050625,"y":20556.502001638968},"targetPosition":{"x":32771.907099087926,"y":20466.759612479935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6b3364b5-d25b-4e29-b126-b7f85b401c3f","savedPayload":{"position":{"x":32771.907099087926,"y":20466.759612479935},"targetPosition":{"x":32974.06471941221,"y":20376.961716120833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"04b8d0ea-5b40-4f88-9482-75170e16b454","savedPayload":{"position":{"x":32974.06471941221,"y":20376.961716120833},"targetPosition":{"x":33142.325975931926,"y":20232.511924634888},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close > positionRate + positionRate * 13 / 100","id":"8eb895f9-4d9c-4314-8351-d47d57dea06a","savedPayload":{"position":{"x":32485.646781919662,"y":20329.98725591953},"targetPosition":{"x":32703.844802266467,"y":20295.532023355852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7f353c88-8c2e-4bcb-85ce-28276752daeb","savedPayload":{"position":{"x":32703.844802266467,"y":20295.532023355852},"targetPosition":{"x":32922.29632250737,"y":20261.06169432316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f9d261e8-528e-4469-9eb0-1765ec1adea4","savedPayload":{"position":{"x":32922.29632250737,"y":20261.06169432316},"targetPosition":{"x":33142.325975931926,"y":20232.511924634888},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"41adecfe-df45-4c0b-a6c6-9af24919657d","savedPayload":{"position":{"x":33142.325975931926,"y":20232.511924634888},"targetPosition":{"x":33543.08088968995,"y":20053.841140463508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"cc74b1fd-2a75-4d59-a30a-070a6f530237","savedPayload":{"position":{"x":33543.08088968995,"y":20053.841140463508},"targetPosition":{"x":33588.4475878523,"y":19616.28465130713},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 8.5 / 100","id":"a1a934f5-46c4-4a92-9513-11e3976469d5","savedPayload":{"position":{"x":33853.858623315384,"y":20750.27130156532},"targetPosition":{"x":33497.758248255035,"y":20491.620878414888},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation","id":"14b2b7a5-bce7-4081-b88f-13b77e46f00f","savedPayload":{"position":{"x":32492.553165785244,"y":20941.867192339025},"targetPosition":{"x":32693.947947708595,"y":20851.935397642123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"63de0e84-99e1-4ebb-a639-070aaec25769","savedPayload":{"position":{"x":32693.947947708595,"y":20851.935397642123},"targetPosition":{"x":32895.64672614131,"y":20761.42915139691},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b2193069-9399-49ef-b0a5-a27cdf12f0f5","savedPayload":{"position":{"x":32895.64672614131,"y":20761.42915139691},"targetPosition":{"x":33096.61682302355,"y":20671.115454471343},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"e7f20b10-01fe-4aa8-9857-421f22ea3a4c","savedPayload":{"position":{"x":33096.61682302355,"y":20671.115454471343},"targetPosition":{"x":33497.758248255035,"y":20491.620878414888},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"1c5a8e29-6bfc-4010-be09-19c2b96bfe70","savedPayload":{"position":{"x":33497.758248255035,"y":20491.620878414888},"targetPosition":{"x":33543.08088968995,"y":20053.841140463508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 7 / 100","id":"feaaddbf-e88d-4090-a7b2-eb74b86dcd4a","savedPayload":{"position":{"x":33807.97666449916,"y":21188.4754375366},"targetPosition":{"x":33452.216442775745,"y":20929.72185114129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[],"announcements":[],"id":"e39fdef7-ea4f-4b5d-bb01-7edac296c69c","savedPayload":{"position":{"x":33050.47563156183,"y":21109.44644261351},"targetPosition":{"x":33452.216442775745,"y":20929.72185114129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"f9b759a6-ab55-4344-963a-9608c2fbe429","savedPayload":{"position":{"x":33452.216442775745,"y":20929.72185114129},"targetPosition":{"x":33497.758248255035,"y":20491.620878414888},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b6bb374a-2c9d-4b84-8ddd-84f075656cca","savedPayload":{"position":{"x":33633.98398592257,"y":19178.780444559092},"targetPosition":{"x":33656.723298141434,"y":18959.56762011535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"1d90afee-eb99-4627-a823-027589c6d2c9","savedPayload":{"position":{"x":33656.723298141434,"y":18959.56762011535},"targetPosition":{"x":33301.07690941218,"y":18701.260324259536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","closeExecution":{"type":"Close Execution","id":"17ad00f9-a9c4-4e9a-b399-39db314232e1","savedPayload":{"position":{"x":33028.56713877728,"y":19537.61740792084},"targetPosition":{"x":33164.83586816252,"y":19119.62154378104},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[],"id":"575f8df0-55d4-4e22-a8e0-84b2973be70a","savedPayload":{"position":{"x":33164.83586816252,"y":19119.62154378104},"targetPosition":{"x":33301.07690941218,"y":18701.260324259536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"97bedd6e-ed17-4ea9-a3be-b6cadfea4d4d","savedPayload":{"position":{"x":33301.07690941218,"y":18701.260324259536},"targetPosition":{"x":32420.898649352486,"y":18701.25},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"56432995-eb04-4929-850f-6530233a3be3","savedPayload":{"position":{"x":32420.898649352486,"y":18701.25},"targetPosition":{"x":32420.898649352486,"y":18701.25},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"b"}}} \ No newline at end of file diff --git a/Trading-Systems/Sparta-WHB-BTC-USDT.json b/Trading-Systems/Sparta-WHB-BTC-USDT.json deleted file mode 100644 index 9933ddc6f..000000000 --- a/Trading-Systems/Sparta-WHB-BTC-USDT.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","code":"{ \n\"codeName\": \"Sparta-WHB-BTC-USDT\"\n}","strategies":[{"type":"Strategy","name":"Steep","triggerStage":{"type":"Trigger Stage","triggerOn":{"type":"Trigger On Event","situations":[{"type":"Situation","name":"Steep","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage && chart.at01hs.candle.previous.close < chart.at01hs.bollingerBand.previous.movingAverage && chart.at01hs.candle.previous.previous.close < chart.at01hs.bollingerBand.previous.previous.movingAverage","id":"04630f48-d984-4e80-ae51-614c9b8d8d4a","savedPayload":{"position":{"x":38654.42937601845,"y":24118.7146096835},"targetPosition":{"x":38896.03793282062,"y":23893.50644952296},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"72e53092-78e4-431d-bc2d-7f3079881067","savedPayload":{"position":{"x":38896.03793282062,"y":23893.50644952296},"targetPosition":{"x":39378.570631146256,"y":23443.53261737075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation","id":"874e7f12-9a9f-4d01-9b5a-8d45b3244707","savedPayload":{"position":{"x":38467.02147676738,"y":23830.21107095448},"targetPosition":{"x":38771.169126085806,"y":23701.239147931672},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"639a3d0f-089c-4a72-bb8a-646a088c827f","savedPayload":{"position":{"x":38771.169126085806,"y":23701.239147931672},"targetPosition":{"x":39378.570631146256,"y":23443.53261737075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Down\"","id":"c2044baf-6f85-4b83-9984-efb4e163da43","savedPayload":{"position":{"x":38389.664496650454,"y":23495.04507117375},"targetPosition":{"x":38719.629522672716,"y":23477.904752152226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a182ddc2-c81f-4187-a683-e1eb70d2a073","savedPayload":{"position":{"x":38719.629522672716,"y":23477.904752152226},"targetPosition":{"x":39378.570631146256,"y":23443.53261737075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerBand.deviation > 200","id":"386c8342-029f-43da-934f-842a63abc4cd","savedPayload":{"position":{"x":38431.586955243925,"y":23154.12292223018},"targetPosition":{"x":38747.56097033524,"y":23250.663790011644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"40bc2e8f-a913-47d3-aedb-6d48c0ba53fa","savedPayload":{"position":{"x":38747.56097033524,"y":23250.663790011644},"targetPosition":{"x":39378.570631146256,"y":23443.53261737075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.max - chart.at01hs.candle.min < 750","id":"11ac851b-1b7f-4fd2-99ba-e5b374843f75","savedPayload":{"position":{"x":38587.837841833374,"y":22847.685517901587},"targetPosition":{"x":38851.72572661361,"y":23046.50017712293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"ae77e599-0666-4ee2-9ba1-5454122da57e","savedPayload":{"position":{"x":38851.59129412593,"y":23046.46870027089},"targetPosition":{"x":39378.570631146256,"y":23443.53261737075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerBand.deviation < 1000","id":"ce8ed2e0-78f2-4dc5-b67f-7cc0faa6f72d","savedPayload":{"position":{"x":38839.382799047715,"y":22613.10431827154},"targetPosition":{"x":39019.32925227039,"y":22890.193356793647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"9bd67f05-1e80-4af4-8b3b-6326aea61169","savedPayload":{"position":{"x":39019.20836123038,"y":22890.163662927203},"targetPosition":{"x":39378.570631146256,"y":23443.53261737075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.percentageBandwidth.movingAverage >= 30 || chart.at03hs.percentageBandwidth.movingAverage >= 30 || chart.at04hs.percentageBandwidth.movingAverage >= 30 || chart.at06hs.percentageBandwidth.movingAverage >= 30 || chart.at08hs.percentageBandwidth.movingAverage >= 30","id":"5607e471-72db-4adf-b542-5627836b2fc4","savedPayload":{"position":{"x":39156.005778308325,"y":22478.707014444873},"targetPosition":{"x":39230.30291243001,"y":22800.64350413514},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"668f372c-b50d-4ad7-bfe1-cb3594d0b1c9","savedPayload":{"position":{"x":39230.18484547141,"y":22800.612491027987},"targetPosition":{"x":39378.570631146256,"y":23443.53261737075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope != \"Extreme\" || (chart.at01hs.bollingerSubChannel.period <=6 && chart.at08hs.bollingerChannel.direction === \"Down\" && chart.at06hs.bollingerChannel.direction === \"Down\" && chart.at04hs.bollingerChannel.direction === \"Down\" && chart.at02hs.bollingerSubChannel.slope === (\"Extreme\" || \"Steep\"))","id":"754d3dcd-a660-4a60-b553-60d4e4828fc2","savedPayload":{"position":{"x":39499.05202984986,"y":22460.737831992745},"targetPosition":{"x":39458.97682702611,"y":22788.66468167322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d54ee343-d311-4d85-a97f-52b1f68af31c","savedPayload":{"position":{"x":39458.86345462394,"y":22788.633396789402},"targetPosition":{"x":39378.570631146256,"y":23443.53261737075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d36638b7-6ffc-4dd8-a0aa-581dc203a3fd","savedPayload":{"position":{"x":39378.570631146256,"y":23443.53261737075},"targetPosition":{"x":39967.429056464694,"y":23743.542886573094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"eb5ec9e9-b915-41db-917b-b3c4084fa2d0","savedPayload":{"position":{"x":39967.429056464694,"y":23743.542886573094},"targetPosition":{"x":40556.1702605225,"y":24043.408960214012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close > chart.at01hs.bollingerBand.movingAverage","id":"04223c33-3fb5-495e-b481-f3f89d19772d","savedPayload":{"position":{"x":38210.648710788475,"y":24781.418713158193},"targetPosition":{"x":38647.010106152025,"y":24587.43993400261},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"06e77d55-6aff-46fb-940d-673fe9c79bd8","savedPayload":{"position":{"x":38647.010106152025,"y":24587.43993400261},"targetPosition":{"x":39083.52651184902,"y":24393.503671421502},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8ccdd8c1-1ca7-4746-b504-16ca7dca9164","savedPayload":{"position":{"x":40147.90856068426,"y":22786.295224985486},"targetPosition":{"x":40352.049091964946,"y":23414.93778484698},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"1b2fd09f-1095-4513-b6cd-18f565a96fd2","savedPayload":{"position":{"x":40352.049091964946,"y":23414.93778484698},"targetPosition":{"x":40556.1702605225,"y":24043.408960214012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","situations":[{"type":"Situation","name":"Steep","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage && chart.at01hs.candle.previous.close < chart.at01hs.bollingerBand.previous.movingAverage && chart.at01hs.candle.previous.previous.close < chart.at01hs.bollingerBand.previous.previous.movingAverage","id":"f72bf18a-b497-46d4-8be0-e327da01a533","savedPayload":{"position":{"x":39240.350911186295,"y":23504.494295275093},"targetPosition":{"x":39478.87025480116,"y":23522.725227223866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8c26040a-2bc1-4227-bede-1970dd8a7d74","savedPayload":{"position":{"x":39478.87025480116,"y":23522.725227223866},"targetPosition":{"x":39955.17846091955,"y":23558.926224459294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation","id":"9fdb21ec-7e23-48f2-bcd8-448147ec07e1","savedPayload":{"position":{"x":39284.59696457764,"y":23305.152539451356},"targetPosition":{"x":39508.373518788445,"y":23389.868800061806},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"9d362d79-a971-4ca6-99db-733d52a345b2","savedPayload":{"position":{"x":39508.373518788445,"y":23389.868800061806},"targetPosition":{"x":39955.17846091955,"y":23558.926224459294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Down\"","id":"6c812d60-985b-402b-bd39-adf518b44d7a","savedPayload":{"position":{"x":39383.2217853877,"y":23126.478191715356},"targetPosition":{"x":39574.09296654021,"y":23270.811905752722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"b62b951d-9f1d-4ef8-8a1b-8ec6ee301e5e","savedPayload":{"position":{"x":39574.09296654021,"y":23270.811905752722},"targetPosition":{"x":39955.17846091955,"y":23558.926224459294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerBand.deviation > 200","id":"3c1b1284-cc15-44a0-ad56-152c608873c8","savedPayload":{"position":{"x":39528.19260345359,"y":22982.85266277603},"targetPosition":{"x":39670.68822663726,"y":23175.11183531663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d6a25acf-936d-4839-b8ed-aa1f1c26f283","savedPayload":{"position":{"x":39670.68822663726,"y":23175.11183531663},"targetPosition":{"x":39955.17846091955,"y":23558.926224459294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.max - chart.at01hs.candle.min < 750","id":"a9d0ee08-149f-4e02-b913-e31c6a81143c","savedPayload":{"position":{"x":39707.742010433845,"y":22885.903680709336},"targetPosition":{"x":39790.32484971696,"y":23110.517001753822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"a1786da7-a63b-4930-a9ac-bde381e03456","savedPayload":{"position":{"x":39790.32484971696,"y":23110.517001753822},"targetPosition":{"x":39955.17846091955,"y":23558.926224459294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerBand.deviation < 1000","id":"03ea81ae-6b27-46e6-8355-98418b3102eb","savedPayload":{"position":{"x":39907.31271552981,"y":22843.480362937433},"targetPosition":{"x":39923.30854888421,"y":23082.253933862172},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"7293789d-7e2c-4418-91ff-1773f8300504","savedPayload":{"position":{"x":39923.30854888421,"y":23082.253933862172},"targetPosition":{"x":39955.17846091955,"y":23558.926224459294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.percentageBandwidth.movingAverage >= 30 || chart.at03hs.percentageBandwidth.movingAverage >= 30 || chart.at04hs.percentageBandwidth.movingAverage >= 30 || chart.at06hs.percentageBandwidth.movingAverage >= 30 || chart.at08hs.percentageBandwidth.movingAverage >= 30","id":"1cbf188a-3e7e-486b-97f7-591e2942d4c2","savedPayload":{"position":{"x":40110.33565939289,"y":22859.030126104986},"targetPosition":{"x":40058.66797686181,"y":23092.616084393856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"82ef75a8-d740-4a20-b382-f8a38b67b37f","savedPayload":{"position":{"x":40058.66797686181,"y":23092.616084393856},"targetPosition":{"x":39955.17846091955,"y":23558.926224459294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope != \"Extreme\" || (chart.at01hs.bollingerSubChannel.period <=6 && chart.at08hs.bollingerChannel.direction === \"Down\" && chart.at06hs.bollingerChannel.direction === \"Down\" && chart.at04hs.bollingerChannel.direction === \"Down\" && chart.at02hs.bollingerSubChannel.slope === (\"Extreme\" || \"Steep\"))","id":"390add95-1bf1-4d10-9ce6-6f0adfdeb11d","savedPayload":{"position":{"x":40301.106300854844,"y":22931.31532649044},"targetPosition":{"x":40185.81529016951,"y":23140.7748187153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"bad14acd-fac1-47a9-bb8c-35e3fba8017b","savedPayload":{"position":{"x":40185.81529016951,"y":23140.7748187153},"targetPosition":{"x":39955.17846091955,"y":23558.926224459294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at08hs.bollingerBand.deviation < 1575","id":"5916a300-bd02-4d33-bb25-8132bbab6402","savedPayload":{"position":{"x":40463.76971325339,"y":23054.494110751715},"targetPosition":{"x":40294.25413728789,"y":23222.84607488945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"70c87419-dd46-48a9-83df-6394dcdc9f81","savedPayload":{"position":{"x":40294.25413728789,"y":23222.84607488945},"targetPosition":{"x":39955.17846091955,"y":23558.926224459294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.candle.open < chart.at24hs.bollingerBand.movingAverage + chart.at24hs.bollingerBand.deviation || chart.at24hs.candle.close < chart.at24hs.bollingerBand.movingAverage + chart.at24hs.bollingerBand.deviation","id":"485bc3a9-85ce-42a2-8bc8-3fd8c199a153","savedPayload":{"position":{"x":40559.83786637926,"y":23203.596114575474},"targetPosition":{"x":40375.24653894792,"y":23332.286513695442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"1dc2cb20-f252-41ac-9617-0ae1115d3883","savedPayload":{"position":{"x":40375.24653894792,"y":23332.286513695442},"targetPosition":{"x":39955.17846091955,"y":23558.926224459294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a77b35ef-82dd-4a0b-858a-a9332e93ffcd","savedPayload":{"position":{"x":40993.44114336273,"y":22808.180948915793},"targetPosition":{"x":40856.13716335811,"y":23454.689439619513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"d5a86e8e-555a-4362-9d2f-d5bdf8a4e637","savedPayload":{"position":{"x":41298.2303357878,"y":22964.61172046955},"targetPosition":{"x":41077.186099344915,"y":23209.857438088973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"207f6150-3902-445b-86c7-1539739421a5","savedPayload":{"position":{"x":41077.15627448108,"y":23209.336531641686},"targetPosition":{"x":40856.13716335811,"y":23454.689439619513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ac645fd1-0e1d-4b12-aaf1-3b8e081e847f","savedPayload":{"position":{"x":40856.13716335811,"y":23454.689439619513},"targetPosition":{"x":40556.1702605225,"y":24043.408960214012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"e4de9514-302c-44e1-a9a6-419e43d5e56f","savedPayload":{"position":{"x":40556.1702605225,"y":24043.408960214012},"targetPosition":{"x":40964.21468152683,"y":25299.495034629625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"openStage":{"type":"Open Stage","initialDefinition":{"type":"Initial Definition","stopLoss":{"type":"Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","code":"if (positionRate + positionRate * 3 / 100 > 150) {positionRate + positionRate * 3 / 100} else {150}","id":"90875495-204f-47d8-b90a-e740b494d1aa","savedPayload":{"position":{"x":41543.57064293352,"y":22327.617504659756},"targetPosition":{"x":42021.77913634585,"y":22455.81161228222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 5 / 100","id":"f0b676b3-5b9f-4d04-82ae-f9db3029c311","savedPayload":{"position":{"x":40593.55450196466,"y":21938.07510378422},"targetPosition":{"x":40686.19422978413,"y":22284.150080605094},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"de58c7ca-47d9-48f7-a7fc-ad576082d89f","savedPayload":{"position":{"x":40686.19422978413,"y":22284.150080605094},"targetPosition":{"x":40778.84533803481,"y":22630.27462019225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"739a79d8-37c4-4add-9a85-f5a56c4b1510","savedPayload":{"position":{"x":40778.84533803481,"y":22630.27462019225},"targetPosition":{"x":40874.1988416803,"y":22986.346465704635},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"d0ff413b-dfbc-4f84-a02a-03ab750beea4","savedPayload":{"position":{"x":41893.54634082963,"y":21977.063439550475},"targetPosition":{"x":42021.77913634585,"y":22455.81161228222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"b3756856-991c-46e9-b8d1-1fd88616b175","savedPayload":{"position":{"x":42021.81316754483,"y":22455.83985723156},"targetPosition":{"x":42372.21439830182,"y":22806.235388260873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0081ab16-4738-40b4-abb6-5e0220b5d3ec","savedPayload":{"position":{"x":42372.21356099864,"y":22806.226453474643},"targetPosition":{"x":42722.450287929445,"y":23156.36027557246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.movingAverage * 0.4","id":"5eed5f84-8951-4768-8ff6-1f7cadff9bc0","savedPayload":{"position":{"x":42256.46443548883,"y":21792.571687125077},"targetPosition":{"x":42567.906061434565,"y":22177.53357490311},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at03hs.percentageBandwidth.previous.movingAverage <= 10","id":"ce100174-38ec-45a1-b30e-b9172449b917","savedPayload":{"position":{"x":41321.10027492377,"y":21724.77294104368},"targetPosition":{"x":41377.02401140234,"y":22078.756166789346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"361254c9-2c48-4971-a21d-a2db49fd6c02","savedPayload":{"position":{"x":41377.02401140234,"y":22078.756166789346},"targetPosition":{"x":41432.96551482378,"y":22432.890715624035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ed006cd1-bf42-46ed-b32b-85206d87cd28","savedPayload":{"position":{"x":41432.96551482378,"y":22432.890715624035},"targetPosition":{"x":41490.569748251975,"y":22796.956822782457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at03hs.percentageBandwidth.movingAverage <= 30","id":"4f0db7ef-3ce2-45b3-ad50-b3a70caa7148","savedPayload":{"position":{"x":42034.085892478375,"y":21895.784268531883},"targetPosition":{"x":41905.6790727935,"y":22230.309567356013},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ceb437ce-ce7c-4b40-9c66-76a8510b548f","savedPayload":{"position":{"x":41905.6790727935,"y":22230.309567356013},"targetPosition":{"x":41777.11600709778,"y":22565.015554381593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","id":"703dab03-8dba-4449-ac5d-07237c70801a","savedPayload":{"position":{"x":42485.127772570304,"y":22452.84922303708},"targetPosition":{"x":42131.22517356006,"y":22508.89700539373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9d989c1e-f5ea-4d99-98f4-cb9f7a2dd7f4","savedPayload":{"position":{"x":42131.22517356006,"y":22508.89700539373},"targetPosition":{"x":41777.11600709778,"y":22565.015554381593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0ce6bb24-f168-4aaa-83ed-164c13e57c0d","savedPayload":{"position":{"x":41777.11600709778,"y":22565.015554381593},"targetPosition":{"x":41490.569748251975,"y":22796.956822782457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"faa1df3b-d813-4285-be96-e3f6708ade25","savedPayload":{"position":{"x":42745.46977372124,"y":21714.804795770884},"targetPosition":{"x":42567.906061434565,"y":22177.53357490311},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"1ce94879-9960-47dd-8014-32609b061a2d","savedPayload":{"position":{"x":42568.00695592488,"y":22177.51975436304},"targetPosition":{"x":42645.246053418836,"y":22667.102763559975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e7378dd3-01ab-4cc5-a2b6-158a1d106b8c","savedPayload":{"position":{"x":42645.246522085334,"y":22667.07588906284},"targetPosition":{"x":42722.450287929445,"y":23156.36027557246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"Position Size","formula":{"type":"Formula","code":"balanceBaseAsset","id":"0d807c1a-4d63-4f34-8b21-601fb4bcbfb7","savedPayload":{"position":{"x":43172.29109125882,"y":22274.223797311202},"targetPosition":{"x":42947.393118584485,"y":22715.316464885633},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9a47a9fc-fd8b-4ac0-9ab4-fe8105b48742","savedPayload":{"position":{"x":42947.393961295784,"y":22715.289411267244},"targetPosition":{"x":42722.450287929445,"y":23156.36027557246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"Position Rate","formula":{"type":"Formula","name":"My Formula","code":"candle.close","id":"a2b79f22-8024-4357-b21e-a5bb2f06085a","savedPayload":{"position":{"x":43604.59284152999,"y":22707.243882182105},"targetPosition":{"x":43163.40623490247,"y":22931.91537080668},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1caf887e-9ef2-4c73-89e3-681501c22f2f","savedPayload":{"position":{"x":43163.40569741022,"y":22931.906398251514},"targetPosition":{"x":42722.450287929445,"y":23156.36027557246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7066a6ba-4707-439c-9f30-d115b7e91587","savedPayload":{"position":{"x":42722.49708483028,"y":23156.165399772814},"targetPosition":{"x":42567.46100856192,"y":24134.750300215164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","id":"12807f32-bcd9-479d-ba07-b4cc6559a788","savedPayload":{"position":{"x":42967.816253548626,"y":23844.006750298126},"targetPosition":{"x":42567.46100856192,"y":24134.750300215164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"b2207d78-4a23-497d-8d5f-9b96578cc2f2","savedPayload":{"position":{"x":43545.39029452099,"y":24289.313990316892},"targetPosition":{"x":43056.470377660335,"y":24212.05286087909},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1d7fbd95-3af3-46ba-be2c-82afa907bafd","savedPayload":{"position":{"x":43056.470377660335,"y":24212.05286087909},"targetPosition":{"x":42567.46100856192,"y":24134.750300215164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"039258ce-13eb-4b32-86ef-201855c44942","savedPayload":{"position":{"x":42567.46100856192,"y":24134.750300215164},"targetPosition":{"x":40964.21468152683,"y":25299.495034629625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","stopLoss":{"type":"Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 5.25 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 5.25 / 100} else {stopLoss}","id":"45d6af45-3e8b-4896-b836-2d83f93e32a7","savedPayload":{"position":{"x":43040.85349551532,"y":24865.41827961376},"targetPosition":{"x":42804.32840344481,"y":25481.304974122737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[],"announcements":[],"id":"17dc17a5-0393-42d9-a481-652f7a81d656","savedPayload":{"position":{"x":43220.02334011708,"y":25994.393030930725},"targetPosition":{"x":42804.32840344481,"y":25481.304974122737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"4f1b38dc-b338-475c-9127-5a9e3fcecc41","savedPayload":{"position":{"x":42804.32840344481,"y":25481.304974122737},"targetPosition":{"x":42151.50515206838,"y":25584.614309622168},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"557b2149-e296-4b80-aaf1-370725a83a54","savedPayload":{"position":{"x":42151.50515206838,"y":25584.614309622168},"targetPosition":{"x":41498.80494613707,"y":25687.903975235113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","phases":[{"type":"Phase","name":"P 1","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.movingAverage * 0.15 - chart.at01hs.bollingerBand.deviation * 4 > 1){chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.movingAverage * 0.15 - chart.at01hs.bollingerBand.deviation * 4} else {takeProfit}","id":"21425aee-b9db-4dcc-8857-a2192910d396","savedPayload":{"position":{"x":43554.71815666318,"y":26651.942851303353},"targetPosition":{"x":43102.490029688415,"y":26853.17443468902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at08hs.percentageBandwidth.previous.movingAverage <= 15","id":"b7fe3cd8-6a2b-497f-a55b-790584961b57","savedPayload":{"position":{"x":39076.46058213071,"y":27754.396568633903},"targetPosition":{"x":39257.34107582367,"y":27505.91308833616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a12da025-d126-479e-8557-1eb2822f4f0f","savedPayload":{"position":{"x":39257.34107582367,"y":27505.91308833616},"targetPosition":{"x":39438.07303747677,"y":27257.00491756352},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"59701135-40be-49ae-b079-8e4b6310f6ea","savedPayload":{"position":{"x":38913.1938983026,"y":27578.244758070996},"targetPosition":{"x":39175.626335632536,"y":27417.733114613016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4f747a40-0047-47f4-8a13-bd0521b95e2b","savedPayload":{"position":{"x":39175.626335632536,"y":27417.733114613016},"targetPosition":{"x":39438.07303747677,"y":27257.00491756352},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.period >= 5","id":"bc4571b1-a0a8-45cf-b77b-14576d3ad21f","savedPayload":{"position":{"x":38830.05510220841,"y":27353.037657790377},"targetPosition":{"x":39134.026162947055,"y":27305.00124396789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fb89b159-fe69-404b-b013-bb82e2fdcfa1","savedPayload":{"position":{"x":39134.026162947055,"y":27305.00124396789},"targetPosition":{"x":39438.07303747677,"y":27257.00491756352},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"67030efa-0733-4e0e-a66c-c7dd1c68417f","savedPayload":{"position":{"x":39438.07303747677,"y":27257.00491756352},"targetPosition":{"x":39708.61223080854,"y":27090.915796338108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at08hs.percentageBandwidth.movingAverage <= 40 && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >= 3","id":"4bb6b468-bd77-474e-93b2-f86437fd46c7","savedPayload":{"position":{"x":38934.982734317826,"y":27128.807942747462},"targetPosition":{"x":39087.0070867157,"y":27104.959222048245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"95eecb05-95b8-4460-9327-a1b3e42acb6e","savedPayload":{"position":{"x":39087.0070867157,"y":27104.959222048245},"targetPosition":{"x":39390.90528515823,"y":27057.147755850645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.direction === \"Up\"","id":"8b544008-7648-457a-b75e-b4fee8ed097c","savedPayload":{"position":{"x":38816.80662927576,"y":26836.626934486252},"targetPosition":{"x":39103.694982618494,"y":26946.725109026145},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7a8ac438-7d80-4cc0-93bb-de47b2fadfd0","savedPayload":{"position":{"x":39103.694982618494,"y":26946.725109026145},"targetPosition":{"x":39390.90528515823,"y":27057.147755850645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d8a07730-dec5-4ebd-8de1-dc60a1197b04","savedPayload":{"position":{"x":39390.90528515823,"y":27057.147755850645},"targetPosition":{"x":39708.61223080854,"y":27090.915796338108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"76c3b030-4744-4005-bcf8-2fe69a68f3ae","savedPayload":{"position":{"x":42999.10513705871,"y":27837.56606790635},"targetPosition":{"x":43102.490029688415,"y":26853.17443468902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"691dde4a-1ec7-4bf7-aa4a-13697345bbff","savedPayload":{"position":{"x":43102.490029688415,"y":26853.17443468902},"targetPosition":{"x":42300.66701596131,"y":26270.601123532455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"P 2","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.movingAverage * 0.1 - chart.at01hs.bollingerBand.deviation * 4 > 1){chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.movingAverage * 0.1 - chart.at01hs.bollingerBand.deviation * 4} else {takeProfit}","id":"0126f4db-54fc-4ede-8373-455eb98c02ac","savedPayload":{"position":{"x":44356.46025768742,"y":27234.418120667342},"targetPosition":{"x":43904.27034596599,"y":27435.680274939747},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at12hs.percentageBandwidth.previous.movingAverage <= 15","id":"dd2c179d-0f15-4260-807e-926d1af2bb29","savedPayload":{"position":{"x":39020.18668533981,"y":28388.812797834158},"targetPosition":{"x":39185.78202780981,"y":28121.28941849295},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"65617019-982d-40a3-a086-b31b540babc3","savedPayload":{"position":{"x":39185.78202780981,"y":28121.28941849295},"targetPosition":{"x":39366.632975030356,"y":27872.99503392311},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":" chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"cb1c258b-8d57-4eb9-b912-5c8924cd4d49","savedPayload":{"position":{"x":38841.49821734451,"y":28193.801860912947},"targetPosition":{"x":39104.11952541188,"y":28033.451648490387},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"52c0dae3-b8e3-405b-9423-f32913636a57","savedPayload":{"position":{"x":39104.11952541188,"y":28033.451648490387},"targetPosition":{"x":39366.632975030356,"y":27872.99503392311},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.period >= 15","id":"89d19b8f-d030-46f6-8a98-c2bfa2e1f553","savedPayload":{"position":{"x":38758.59117340723,"y":27968.676415639282},"targetPosition":{"x":39062.50197271419,"y":27920.95845222073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c13131f3-4bfe-43c6-8ed4-7a6fd8a385d1","savedPayload":{"position":{"x":39062.50197271419,"y":27920.95845222073},"targetPosition":{"x":39366.632975030356,"y":27872.99503392311},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"14c028eb-4857-45dd-a5e1-32428d869fc9","savedPayload":{"position":{"x":39366.632975030356,"y":27872.99503392311},"targetPosition":{"x":39644.57846953069,"y":27702.333527444905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"(chart.at24hs.percentageBandwidth.movingAverage <= 70 || chart.at12hs.percentageBandwidth.movingAverage <= 40 ) && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >=5","id":"2094c0d3-3283-4228-8b69-8db579c64ed9","savedPayload":{"position":{"x":38849.82406221925,"y":27734.232868776628},"targetPosition":{"x":39002.18453621761,"y":27710.24535513939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"70d80cd1-296e-47b3-b1c1-5b6b7a62bbc6","savedPayload":{"position":{"x":39002.18453621761,"y":27710.24535513939},"targetPosition":{"x":39318.43147689118,"y":27667.80758277534},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.previous.direction === \"Up\"","id":"b44eb9ba-94f2-4231-88ea-ece9767764d2","savedPayload":{"position":{"x":38743.64438683522,"y":27447.363629044692},"targetPosition":{"x":39031.25127631588,"y":27557.529013013213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"37903197-40db-4925-b0eb-8a5200605fcb","savedPayload":{"position":{"x":39031.25127631588,"y":27557.529013013213},"targetPosition":{"x":39318.43147689118,"y":27667.80758277534},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"eb62450a-7c7d-461b-853c-18c9d9256db2","savedPayload":{"position":{"x":39318.43147689118,"y":27667.80758277534},"targetPosition":{"x":39644.57846953069,"y":27702.333527444905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"726e5671-70e4-4489-ba9f-24f19bc3139f","savedPayload":{"position":{"x":43800.89921548829,"y":28419.99703426067},"targetPosition":{"x":43904.27034596599,"y":27435.680274939747},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"d465a0e2-291c-44af-a7e7-ab88dfafee33","savedPayload":{"position":{"x":43904.27034596599,"y":27435.680274939747},"targetPosition":{"x":43102.490029688415,"y":26853.17443468902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"P 3","formula":{"type":"Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation * 3 > 1){chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation * 3} else {takeProfit}","id":"4229e801-d485-4e90-a57e-14d7401dba6b","savedPayload":{"position":{"x":45158.08957392563,"y":27816.911902414922},"targetPosition":{"x":44705.940105036716,"y":28018.16302825531},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.percentageBandwidth.previous.movingAverage <= 20","id":"1d28c26b-838a-45b3-a9ae-dfd0ff517b4e","savedPayload":{"position":{"x":43671.762597188776,"y":28665.652455724376},"targetPosition":{"x":43344.72209039262,"y":28520.953982631425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"435d84a7-18b8-4bdd-ac3e-20ec918972ad","savedPayload":{"position":{"x":43344.72209039262,"y":28520.953982631425},"targetPosition":{"x":43065.015970762935,"y":28352.86106371552},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":" chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"532d32c0-8218-46fd-b226-c0d74ffbc59f","savedPayload":{"position":{"x":43597.85750051345,"y":28833.076691652197},"targetPosition":{"x":43331.63332171728,"y":28593.404475720527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ace92aa6-e1ac-4bea-8469-697cf19d9ca4","savedPayload":{"position":{"x":43331.63332171728,"y":28593.404475720527},"targetPosition":{"x":43065.015970762935,"y":28352.86106371552},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.period >=10","id":"4c814ec0-81f5-41d2-b6de-f7518b0b0928","savedPayload":{"position":{"x":43423.46986322124,"y":28974.029351480076},"targetPosition":{"x":43244.43462992984,"y":28663.76906695555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9f704e05-6368-413c-a5cb-9186b17d7c70","savedPayload":{"position":{"x":43244.43462992984,"y":28663.76906695555},"targetPosition":{"x":43065.015970762935,"y":28352.86106371552},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.popularEMA.ema20 > chart.at01hs.popularEMA.ema50 || (chart.at01hs.popularEMA.ema50 - chart.at01hs.popularEMA.ema20 < chart.at01hs.popularEMA.previous.ema50 - chart.at01hs.popularEMA.previous.ema20 && chart.at01hs.popularEMA.previous.ema50 - chart.at01hs.popularEMA.previous.ema20 < chart.at01hs.popularEMA.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.ema20 && chart.at01hs.popularEMA.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.ema20 < chart.at01hs.popularEMA.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.ema20 && chart.at01hs.popularEMA.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.ema20 < chart.at01hs.popularEMA.previous.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.previous.ema20 && chart.at01hs.popularEMA.previous.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.previous.ema20 < chart.at01hs.popularEMA.previous.previous.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.previous.previous.ema20)","id":"b62b16a0-a825-4abb-80d4-0c011943738d","savedPayload":{"position":{"x":43213.87457064216,"y":29054.40075981538},"targetPosition":{"x":43139.47701980421,"y":28703.965527094068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"56fcf0d9-017b-481d-906e-1d00909c9707","savedPayload":{"position":{"x":43139.47701980421,"y":28703.965527094068},"targetPosition":{"x":43065.015970762935,"y":28352.86106371552},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f896ea80-b7b0-4d72-b19a-512e8656f22b","savedPayload":{"position":{"x":43065.015970762935,"y":28352.86106371552},"targetPosition":{"x":42832.91695479948,"y":28066.793036095227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.previous.direction === \"Up\"","id":"bd0bcb72-0dac-41e4-a89c-4c6cd57daf7a","savedPayload":{"position":{"x":43051.07226566322,"y":29103.087301525506},"targetPosition":{"x":42922.883797168666,"y":28768.03131200254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8a601ab7-fee9-49c4-b575-54f33583a59f","savedPayload":{"position":{"x":42922.883797168666,"y":28768.03131200254},"targetPosition":{"x":42794.351374197264,"y":28433.092876235107},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"cb5a576f-8a8a-4ee2-94ad-1df17c72b431","savedPayload":{"position":{"x":42831.43358116719,"y":29149.772948459282},"targetPosition":{"x":42812.88744862709,"y":28791.45664511423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ce24e5f1-c2fc-48fe-95c5-653d162f4a6c","savedPayload":{"position":{"x":42812.88744862709,"y":28791.45664511423},"targetPosition":{"x":42794.351374197264,"y":28433.092876235107},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.period >=5","id":"664048a7-6e49-4e70-9778-d20b593e407d","savedPayload":{"position":{"x":42608.719226546105,"y":29126.22083911598},"targetPosition":{"x":42701.44309306069,"y":28779.676316086447},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e00c3690-d6dc-4a50-95de-ccd597b7959a","savedPayload":{"position":{"x":42701.44309306069,"y":28779.676316086447},"targetPosition":{"x":42794.351374197264,"y":28433.092876235107},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.percentageBandwidth.movingAverage <= 60 || chart.at12hs.percentageBandwidth.movingAverage <= 30","id":"9f61c27b-bcbc-4a78-8f6f-4858c9c48593","savedPayload":{"position":{"x":42403.44799963697,"y":29034.637647296153},"targetPosition":{"x":42598.68106458204,"y":28733.805168060902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"27c9dd7c-0456-4ba1-b544-0b0484f6824f","savedPayload":{"position":{"x":42598.68106458204,"y":28733.805168060902},"targetPosition":{"x":42794.351374197264,"y":28433.092876235107},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0f0c037f-31b9-43ed-9597-0afdca8bc238","savedPayload":{"position":{"x":42794.351374197264,"y":28433.092876235107},"targetPosition":{"x":42832.91695479948,"y":28066.793036095227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close <= positionRate * 0.8","id":"76951759-0c59-46ba-b12b-381e7ee76a93","savedPayload":{"position":{"x":41989.1026432755,"y":28749.265422429955},"targetPosition":{"x":42267.24784420857,"y":28524.02504592896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a7b2547e-0b31-42cf-9b0d-689a02f3964e","savedPayload":{"position":{"x":42267.24784420857,"y":28524.02504592896},"targetPosition":{"x":42546.23149631797,"y":28298.292895552117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1283aaed-707c-47fd-af74-1d4d02a872f9","savedPayload":{"position":{"x":42546.23149631797,"y":28298.292895552117},"targetPosition":{"x":42832.91695479948,"y":28066.793036095227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"bb4d9e1b-8f3c-4ee8-82e6-c2b44bec9fdb","savedPayload":{"position":{"x":44602.606609786315,"y":29002.35937458846},"targetPosition":{"x":44705.94006741386,"y":28018.14131654659},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"8ddb340d-921c-4999-a685-d4d345b74c5f","savedPayload":{"position":{"x":44706.012384131885,"y":28018.116420001486},"targetPosition":{"x":43904.27034596599,"y":27435.680274939747},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"P 4","formula":{"type":"Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation * 1.5 > 1){chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation * 1.5} else {takeProfit}","id":"5b65d305-886b-4244-9d5a-fed743f4429b","savedPayload":{"position":{"x":45999.922327496504,"y":28652.661924257347},"targetPosition":{"x":45108.67865429032,"y":28923.49119666455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.percentageBandwidth.previous.movingAverage <= 10","id":"492361d1-7ffa-4589-becd-8559c94538dd","savedPayload":{"position":{"x":39468.09436374861,"y":29836.027043103848},"targetPosition":{"x":39435.98417813631,"y":29530.098683426906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5f22aa06-b15c-46ae-bc5f-cb01d4786dfe","savedPayload":{"position":{"x":39435.98417813631,"y":29530.098683426906},"targetPosition":{"x":39401.51538741613,"y":29223.881664928525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"a0f575e8-ba84-4fa1-9b8b-5c9b1f78837b","savedPayload":{"position":{"x":39274.52671234616,"y":29826.963021090767},"targetPosition":{"x":39338.40665267933,"y":29526.02554167459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f488cc42-c26f-4881-b7af-33767df2c3ed","savedPayload":{"position":{"x":39338.40665267933,"y":29526.02554167459},"targetPosition":{"x":39401.51538741613,"y":29223.881664928525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.period >=10","id":"6467a895-b8d3-46f0-8a41-ba3db3134289","savedPayload":{"position":{"x":39097.61406112272,"y":29761.325104994416},"targetPosition":{"x":39251.40258179088,"y":29494.889710785144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e756b47a-49c4-475f-9239-98cc21d001e4","savedPayload":{"position":{"x":39251.40258179088,"y":29494.889710785144},"targetPosition":{"x":39401.51538741613,"y":29223.881664928525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.popularEMA.ema20 > chart.at01hs.popularEMA.ema50 || (chart.at01hs.popularEMA.ema50 - chart.at01hs.popularEMA.ema20 < chart.at01hs.popularEMA.previous.ema50 - chart.at01hs.popularEMA.previous.ema20 && chart.at01hs.popularEMA.previous.ema50 - chart.at01hs.popularEMA.previous.ema20 < chart.at01hs.popularEMA.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.ema20 && chart.at01hs.popularEMA.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.ema20 < chart.at01hs.popularEMA.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.ema20 && chart.at01hs.popularEMA.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.ema20 < chart.at01hs.popularEMA.previous.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.previous.ema20 && chart.at01hs.popularEMA.previous.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.previous.ema20 < chart.at01hs.popularEMA.previous.previous.previous.previous.previous.ema50 - chart.at01hs.popularEMA.previous.previous.previous.previous.previous.ema20)","id":"3a95c3c9-027f-4b7f-b16e-d4d7e3c61af2","savedPayload":{"position":{"x":38937.35676051016,"y":29629.96983701126},"targetPosition":{"x":39165.96311307189,"y":29424.166464323942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7a0c06a1-a4b2-47e7-a6df-b67d8b3a5ede","savedPayload":{"position":{"x":39165.96311307189,"y":29424.166464323942},"targetPosition":{"x":39401.51538741613,"y":29223.881664928525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b1eaefe0-b666-4703-90d0-3c390c8d244d","savedPayload":{"position":{"x":39401.51538741613,"y":29223.881664928525},"targetPosition":{"x":39516.114415636366,"y":28924.56410175436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.previous.direction === \"Up\"","id":"e2ac35ad-181e-4b58-84d6-3d9f1722c5aa","savedPayload":{"position":{"x":38783.25839629824,"y":29550.283067363347},"targetPosition":{"x":38976.78761240302,"y":29311.196837337044},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fd88ff7a-6009-4b82-b5a6-af38cf1b7dd3","savedPayload":{"position":{"x":38976.78761240302,"y":29311.196837337044},"targetPosition":{"x":39216.20118961254,"y":29015.61645459315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.percentageBandwidth.movingAverage <= 50 || chart.at12hs.percentageBandwidth.movingAverage <= 17.5","id":"915373e8-78fa-4957-b0d6-8a128722bab2","savedPayload":{"position":{"x":38617.92058663264,"y":29364.980604492466},"targetPosition":{"x":38888.083782832815,"y":29218.185716728876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6ec11da4-1d56-4fd9-8798-d7d1079f4a2d","savedPayload":{"position":{"x":38888.083782832815,"y":29218.185716728876},"targetPosition":{"x":39216.20118961254,"y":29015.61645459315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"035d92fc-2871-4ffc-98c0-bd8bb995d01a","savedPayload":{"position":{"x":38565.3796355632,"y":29255.50956141062},"targetPosition":{"x":38855.60331264063,"y":29152.8843117097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4eb8fa5b-86e5-4e51-94be-cf93bd61e328","savedPayload":{"position":{"x":38855.60331264063,"y":29152.8843117097},"targetPosition":{"x":39216.20118961254,"y":29015.61645459315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.period >=5","id":"7f7981d8-7b3f-428c-b50b-7dec88963c51","savedPayload":{"position":{"x":38533.54748612064,"y":29109.17600160364},"targetPosition":{"x":38836.05433977321,"y":29053.353120128697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1a1a49bc-3696-453c-b26e-221b2198a725","savedPayload":{"position":{"x":38836.05433977321,"y":29053.353120128697},"targetPosition":{"x":39216.20118961254,"y":29015.61645459315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"35438563-6038-400f-a354-20f7e8d080d7","savedPayload":{"position":{"x":39223.48859763672,"y":29054.74047818931},"targetPosition":{"x":39516.114415636366,"y":28924.56410175436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close <= positionRate * 0.6","id":"c71d184c-dad3-4487-81e6-5f9d1e2ec6f3","savedPayload":{"position":{"x":38641.95400740201,"y":28589.07353652381},"targetPosition":{"x":38929.0535263983,"y":28699.13205164679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9bcabc5a-7a66-4e3e-823d-732c443ae1a6","savedPayload":{"position":{"x":38929.0535263983,"y":28699.13205164679},"targetPosition":{"x":39216.33878579554,"y":28809.305968189135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d60cbb75-bc28-4e8f-b7ea-a35d736a54fa","savedPayload":{"position":{"x":39216.33878579554,"y":28809.305968189135},"targetPosition":{"x":39516.114415636366,"y":28924.56410175436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"45c33f40-81fd-4db2-b218-eb8af83f82f2","savedPayload":{"position":{"x":45403.77606315581,"y":29584.400513497458},"targetPosition":{"x":45507.103578874885,"y":28600.259762022102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"e2fc4f36-4fd8-47b3-853a-986780cedddc","savedPayload":{"position":{"x":45507.67229553253,"y":28600.535617469774},"targetPosition":{"x":44705.94006741386,"y":28018.14131654659},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"P 5","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation","id":"eacb3d83-4d09-4208-a388-1398be9577e2","savedPayload":{"position":{"x":46308.52299848638,"y":29182.447480972733},"targetPosition":{"x":45908.046683418026,"y":28891.563771160505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"4f569eba-e3b6-49b8-9a09-0b340c93aae5","savedPayload":{"position":{"x":45908.046683418026,"y":28891.563771160505},"targetPosition":{"x":45507.103578874885,"y":28600.259762022102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4bd6d7c6-5f77-4388-b95b-f6de69aaf635","savedPayload":{"position":{"x":42300.66701596131,"y":26270.601123532455},"targetPosition":{"x":41498.80494613707,"y":25687.903975235113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"15dd5086-999b-47bd-bc1b-52d237404446","savedPayload":{"position":{"x":41302.81204154982,"y":26447.212699873733},"targetPosition":{"x":41240.26395076143,"y":26049.428184312597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"874036e1-7a51-4ac3-8b0e-4c9c4b2685d3","savedPayload":{"position":{"x":41601.81126025612,"y":26339.27649608335},"targetPosition":{"x":41498.80494613707,"y":25687.903975235113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9dfe21e5-b773-4d3c-8e32-1aaabcb8b62d","savedPayload":{"position":{"x":41498.80494613707,"y":25687.903975235113},"targetPosition":{"x":40964.21468152683,"y":25299.495034629625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","closeExecution":{"type":"Close Execution","id":"1a51f4d1-0c53-4be4-9a9c-ebc9fe97044a","savedPayload":{"position":{"x":41201.94668943851,"y":26419.243789944743},"targetPosition":{"x":40759.976634935716,"y":25928.030981927273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"66a09bf3-bed1-47e2-ba3a-2726e616b369","savedPayload":{"position":{"x":40320.00785816407,"y":26295.120140331164},"targetPosition":{"x":40539.105344753065,"y":25956.82560373922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"80b2983d-42e3-476d-9aa3-dece6d6098d7","savedPayload":{"position":{"x":40400.71750422938,"y":26481.24829109853},"targetPosition":{"x":40759.976634935716,"y":25928.030981927273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dc69e8b8-3474-4900-8169-ff524674a608","savedPayload":{"position":{"x":40759.976634935716,"y":25928.030981927273},"targetPosition":{"x":40964.21468152683,"y":25299.495034629625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f5eefa19-8d3b-4677-951d-9e8b9381cf09","savedPayload":{"position":{"x":40799.25277624297,"y":25299.475621769012},"targetPosition":{"x":39642.04913415892,"y":25299.5},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"Xtreme","triggerStage":{"type":"Trigger Stage","triggerOn":{"type":"Trigger On Event","situations":[{"type":"Situation","name":"Xtreme","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage && chart.at01hs.candle.previous.close < chart.at01hs.bollingerBand.previous.movingAverage && chart.at01hs.candle.previous.previous.close < chart.at01hs.bollingerBand.previous.previous.movingAverage","id":"3e541a4b-524f-447f-b562-0d95d16367dc","savedPayload":{"position":{"x":38634.2422209234,"y":25114.210476306747},"targetPosition":{"x":38811.7682138299,"y":25265.453656720227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"5608edc7-4669-416c-8683-363416f0bbd6","savedPayload":{"position":{"x":38811.7682138299,"y":25265.453656720227},"targetPosition":{"x":39167.33696663251,"y":25567.396941744308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation","id":"89919e11-81cf-4229-899f-dc51fee4caa3","savedPayload":{"position":{"x":38783.360000752764,"y":24981.69659794209},"targetPosition":{"x":38911.31594665894,"y":25177.24192909973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e6bdb405-f8a6-49d8-90f9-b571e1f776a2","savedPayload":{"position":{"x":38911.31594665894,"y":25177.24192909973},"targetPosition":{"x":39167.33696663251,"y":25567.396941744308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerBand.previous.previous.previous.deviation > 200","id":"4c3fae0d-e6de-43ec-9cfd-001f23493431","savedPayload":{"position":{"x":38963.49978632944,"y":24896.991012787617},"targetPosition":{"x":39031.45155996245,"y":25120.849731759805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"262623d8-9d87-4af1-972b-cdc7f9f3dabd","savedPayload":{"position":{"x":39031.45155996245,"y":25120.849731759805},"targetPosition":{"x":39167.33696663251,"y":25567.396941744308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Down\"","id":"9dc33bbb-b6de-42a3-a2f5-559063a5366d","savedPayload":{"position":{"x":39159.762500636134,"y":24867.2298414088},"targetPosition":{"x":39162.11536447005,"y":25101.444106837534},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"450315b6-9cf1-4a21-bd7b-1e22b9e925b2","savedPayload":{"position":{"x":39162.11536447005,"y":25101.444106837534},"targetPosition":{"x":39167.33696663251,"y":25567.396941744308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.max - chart.at01hs.candle.min < 750","id":"3d3b51aa-5993-4a61-bfa3-9cfdedd94c98","savedPayload":{"position":{"x":39361.235711126326,"y":24896.513150786956},"targetPosition":{"x":39296.664078886526,"y":25121.972859979345},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"2e77e2ad-b82f-43aa-b4d4-409159aeae26","savedPayload":{"position":{"x":39296.664078886526,"y":25121.972859979345},"targetPosition":{"x":39167.33696663251,"y":25567.396941744308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerBand.deviation < 1000","id":"71c5e77c-8ba2-4c8c-a034-6bd853c5c896","savedPayload":{"position":{"x":39541.83907151459,"y":24974.451872727255},"targetPosition":{"x":39416.7244549055,"y":25172.407687215775},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"14a4c5b3-49bf-4329-bc74-d01161a2753a","savedPayload":{"position":{"x":39416.7244549055,"y":25172.407687215775},"targetPosition":{"x":39167.33696663251,"y":25567.396941744308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.percentageBandwidth.movingAverage >= 30 || chart.at03hs.percentageBandwidth.movingAverage >= 30 || chart.at04hs.percentageBandwidth.movingAverage >= 30 || chart.at06hs.percentageBandwidth.movingAverage >= 30 || chart.at08hs.percentageBandwidth.movingAverage >= 30","id":"ea735cd1-88f9-4298-9ae2-9194149470d8","savedPayload":{"position":{"x":39693.465873832836,"y":25103.670977960774},"targetPosition":{"x":39517.81721306262,"y":25258.44903153187},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"d475020d-507d-4b11-959d-139be28e7bb7","savedPayload":{"position":{"x":39517.81721306262,"y":25258.44903153187},"targetPosition":{"x":39167.33696663251,"y":25567.396941744308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"if (chart.at01hs.bollingerSubChannel.slope != \"Extreme\") {true} else {if (chart.at01hs.bollingerSubChannel.period <=7) {true} else {false}}","id":"43e66d7d-4647-4c4a-9184-716fec0da81e","savedPayload":{"position":{"x":39802.62864091867,"y":25270.589574730027},"targetPosition":{"x":39590.60564965547,"y":25369.650068902545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8a0dc00d-c225-4b20-8db7-179f82dd15c0","savedPayload":{"position":{"x":39590.60564965547,"y":25369.650068902545},"targetPosition":{"x":39167.33696663251,"y":25567.396941744308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.percentageBandwidth.movingAverage >= 70 || chart.at02hs.percentageBandwidth.previous.movingAverage >= 70 || chart.at02hs.percentageBandwidth.previous.previous.movingAverage >= 70 || chart.at02hs.percentageBandwidth.previous.previous.previous.movingAverage >= 70 || chart.at02hs.percentageBandwidth.previous.previous.previous.previous.movingAverage >= 70 || chart.at02hs.percentageBandwidth.previous.previous.previous.previous.previous.movingAverage >= 70","id":"12e94fef-d550-4d40-91b6-7ab599418e2b","savedPayload":{"position":{"x":39860.42814199552,"y":25461.695547089388},"targetPosition":{"x":39629.17175511788,"y":25496.90542877681},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"f1431d9b-f0ad-4ac2-a389-19aefd45ae65","savedPayload":{"position":{"x":39629.17175511788,"y":25496.90542877681},"targetPosition":{"x":39167.33696663251,"y":25567.396941744308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerBand.deviation > 2000","id":"3ea73407-524a-4d18-8e64-cde594389f1c","savedPayload":{"position":{"x":39862.25228331403,"y":25661.08498035626},"targetPosition":{"x":39630.36845143606,"y":25629.79896218831},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"8906bf8b-8852-4ee8-99cf-c7012e501f37","savedPayload":{"position":{"x":39630.36845143606,"y":25629.79896218831},"targetPosition":{"x":39167.33696663251,"y":25567.396941744308},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c014c368-926e-40d0-90ac-bc42b4030112","savedPayload":{"position":{"x":39861.42977523583,"y":26842.02189422478},"targetPosition":{"x":39371.93722036876,"y":26592.693171942734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"cc1b7480-4eb6-4e05-97a8-eb0cccf1bec2","savedPayload":{"position":{"x":39371.93722036876,"y":26592.693171942734},"targetPosition":{"x":38882.46479348825,"y":26343.46333561765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close > chart.at01hs.bollingerBand.movingAverage","id":"ac1a8358-509d-4a6b-ae6c-5c089c5b394d","savedPayload":{"position":{"x":39854.427602718395,"y":27081.074015003174},"targetPosition":{"x":39640.56634645905,"y":26985.882462866124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"efdeab3d-33ab-402e-865e-fc74a1f882f3","savedPayload":{"position":{"x":39640.56634645905,"y":26985.882462866124},"targetPosition":{"x":39301.72890316699,"y":26835.062612435067},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"31853984-3108-4bd0-aa9a-8b2c3bdbe432","savedPayload":{"position":{"x":39222.01208389953,"y":27388.268767037673},"targetPosition":{"x":39052.21505392141,"y":26865.808845845586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"be56ec91-bf3a-4888-9962-403640a3bc9f","savedPayload":{"position":{"x":39052.21505392141,"y":26865.808845845586},"targetPosition":{"x":38882.46479348825,"y":26343.46333561765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","situations":[{"type":"Situation","name":"Xtreme","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage && chart.at01hs.candle.previous.close < chart.at01hs.bollingerBand.previous.movingAverage && chart.at01hs.candle.previous.previous.close < chart.at01hs.bollingerBand.previous.previous.movingAverage","id":"58ee7e60-f4ae-4b57-b5c6-11aba949230a","savedPayload":{"position":{"x":39154.73823641365,"y":27232.789230778213},"targetPosition":{"x":38922.04306999821,"y":27208.34497137087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a0c2192c-6c72-4c29-b00a-72b7c8cb4d10","savedPayload":{"position":{"x":38922.04306999821,"y":27208.34497137087},"targetPosition":{"x":38553.31459023112,"y":27168.682047000915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation","id":"5f3ec561-949c-459e-9463-a9444b112985","savedPayload":{"position":{"x":39105.94680751818,"y":27414.96822571868},"targetPosition":{"x":38892.1048115828,"y":27319.653919703236},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d6e21f88-645e-4cbb-8888-233a48c0874e","savedPayload":{"position":{"x":38892.1048115828,"y":27319.653919703236},"targetPosition":{"x":38553.31459023112,"y":27168.682047000915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerBand.previous.previous.previous.deviation > 200","id":"a5dc90e1-f251-403d-901b-4b5f2168671a","savedPayload":{"position":{"x":39002.73281129333,"y":27573.51650874495},"targetPosition":{"x":38829.02746517212,"y":27417.036717538103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7d61e222-4ca9-4269-9ac8-7d3dd5f7abb0","savedPayload":{"position":{"x":38829.02746517212,"y":27417.036717538103},"targetPosition":{"x":38553.31459023112,"y":27168.682047000915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Down\"","id":"6f4d0602-2693-4cbd-b9f4-68275f92b000","savedPayload":{"position":{"x":38855.838931195285,"y":27692.77642241698},"targetPosition":{"x":38738.69928780255,"y":27489.843079814895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a32c8be5-7e22-4a0a-85c8-6544fbe89b2e","savedPayload":{"position":{"x":38738.69928780255,"y":27489.843079814895},"targetPosition":{"x":38553.31459023112,"y":27168.682047000915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.max - chart.at01hs.candle.min < 750","id":"8a7346fc-2789-42f3-b547-2ec4c51fa8b7","savedPayload":{"position":{"x":38679.100769611716,"y":27760.35658060563},"targetPosition":{"x":38630.465712488534,"y":27531.622673608326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"598028c6-a326-4a56-a26b-0d6dc532b3a4","savedPayload":{"position":{"x":38630.465712488534,"y":27531.622673608326},"targetPosition":{"x":38553.31459023112,"y":27168.682047000915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.bollingerBand.deviation < 1000","id":"0f36e63a-b125-4962-93b7-6e9cb43f357b","savedPayload":{"position":{"x":38490.50599310752,"y":27770.532025518165},"targetPosition":{"x":38514.746422009855,"y":27537.45725948166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"45291209-a1e2-4df8-bae6-073206b96243","savedPayload":{"position":{"x":38514.746422009855,"y":27537.45725948166},"targetPosition":{"x":38553.31459023112,"y":27168.682047000915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.percentageBandwidth.movingAverage >= 30 || chart.at03hs.percentageBandwidth.movingAverage >= 30 || chart.at04hs.percentageBandwidth.movingAverage >= 30 || chart.at06hs.percentageBandwidth.movingAverage >= 30 || chart.at08hs.percentageBandwidth.movingAverage >= 30","id":"3f9094d6-34a5-4575-812d-bb207c2ccc3c","savedPayload":{"position":{"x":38307.75351570131,"y":27721.378871604025},"targetPosition":{"x":38402.60603834086,"y":27507.67418373712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"32b9e05f-7b36-4887-9310-0a7afc9585d6","savedPayload":{"position":{"x":38402.60603834086,"y":27507.67418373712},"targetPosition":{"x":38553.31459023112,"y":27168.682047000915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"if (chart.at01hs.bollingerSubChannel.slope != \"Extreme\") {true} else {if (chart.at01hs.bollingerSubChannel.period <=7) {true} else {false}}","id":"03ae74e4-b4da-406b-a35b-73def4da55fc","savedPayload":{"position":{"x":38148.88912355448,"y":27617.89873022396},"targetPosition":{"x":38304.902167953085,"y":27444.315539978747},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4a56a1ac-087e-4b3e-8c1d-0cd01de90faf","savedPayload":{"position":{"x":38304.902167953085,"y":27444.315539978747},"targetPosition":{"x":38553.31459023112,"y":27168.682047000915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at02hs.percentageBandwidth.movingAverage >= 70 || chart.at02hs.percentageBandwidth.previous.movingAverage >= 70 || chart.at02hs.percentageBandwidth.previous.previous.movingAverage >= 70 || chart.at02hs.percentageBandwidth.previous.previous.previous.movingAverage >= 70 || chart.at02hs.percentageBandwidth.previous.previous.previous.previous.movingAverage >= 70 || chart.at02hs.percentageBandwidth.previous.previous.previous.previous.previous.movingAverage >= 70","id":"dbf4cb5b-3a7c-45e3-9226-b776dfebd03c","savedPayload":{"position":{"x":38029.99258992764,"y":27470.840781029798},"targetPosition":{"x":38232.099327035125,"y":27354.05074915757},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c0b2dd7b-c260-48ae-b748-fad2c2b40e6a","savedPayload":{"position":{"x":38232.099327035125,"y":27354.05074915757},"targetPosition":{"x":38553.31459023112,"y":27168.682047000915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f3c49f4e-bd99-4980-ab18-b99cc12e4880","savedPayload":{"position":{"x":38661.81202607896,"y":27381.320846179507},"targetPosition":{"x":38633.1848732142,"y":26832.729177094534},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"97c50b48-5c9a-4294-b058-29ef02d3ae3b","savedPayload":{"position":{"x":38575.52714053305,"y":26906.067731836865},"targetPosition":{"x":38400.22161546643,"y":27100.081102367727},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b4fff923-83b3-427d-b750-9291f0ae4008","savedPayload":{"position":{"x":38449.40311308975,"y":27036.797637400912},"targetPosition":{"x":38633.1848732142,"y":26832.729177094534},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"267e00cd-81fb-40ac-b287-ce322c3c0a72","savedPayload":{"position":{"x":38633.1848732142,"y":26832.729177094534},"targetPosition":{"x":38882.46479348825,"y":26343.46333561765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"a54033d0-c494-4bb1-9985-f735f9bbdc76","savedPayload":{"position":{"x":38882.46479348825,"y":26343.46333561765},"targetPosition":{"x":38543.28678959614,"y":25299.500783556694},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"openStage":{"type":"Open Stage","initialDefinition":{"type":"Initial Definition","stopLoss":{"type":"Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","code":"if (positionRate + positionRate * 3 / 100 > 150) {positionRate + positionRate * 3 / 100} else {150}","id":"0337c80c-4d49-463c-a671-541fbc071998","savedPayload":{"position":{"x":38062.009464331495,"y":27769.222299978934},"targetPosition":{"x":37664.405316160555,"y":27662.580380440922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 4 / 100","id":"3072fb05-b95d-4f59-9798-f43dc9e39c88","savedPayload":{"position":{"x":37929.98129274946,"y":28753.17220326868},"targetPosition":{"x":37839.44752650823,"y":28415.132360582025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bdc0ea0a-76f0-4397-8b81-6eed09dda349","savedPayload":{"position":{"x":37839.44752650823,"y":28415.132360582025},"targetPosition":{"x":37748.755823659034,"y":28076.735371852712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"99059151-79e7-4d4f-a49a-0d2ca95e3fa4","savedPayload":{"position":{"x":37748.755823659034,"y":28076.735371852712},"targetPosition":{"x":37655.04840520232,"y":27727.298505096143},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"99c91cfe-eb1e-423c-b771-2cb019ab972d","savedPayload":{"position":{"x":37771.06077227574,"y":28060.675431141597},"targetPosition":{"x":37664.405316160555,"y":27662.580380440922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"eaca874c-4cde-4941-ab00-766364d335a2","savedPayload":{"position":{"x":37664.224091102864,"y":27662.903849216225},"targetPosition":{"x":37373.030175627486,"y":27371.680921865627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4b526d7b-4fdf-43ca-806a-c7771fe60ec1","savedPayload":{"position":{"x":37373.030175627486,"y":27371.680921865627},"targetPosition":{"x":37081.9249212183,"y":27080.755302498605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.movingAverage * 0.4","id":"8652e61e-34e7-45bd-bba7-5330a3070d92","savedPayload":{"position":{"x":37469.08380820336,"y":28214.300184030468},"targetPosition":{"x":37210.23596307848,"y":27894.118767508924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at03hs.percentageBandwidth.previous.movingAverage <= 10","id":"28c243c3-4b55-4bb4-a594-4c05e05f9d0c","savedPayload":{"position":{"x":37218.208438274334,"y":28962.60975299573},"targetPosition":{"x":37163.60191935214,"y":28616.78876298102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c1a574e0-c584-4a5a-85c4-8273feb81fe0","savedPayload":{"position":{"x":37163.60191935214,"y":28616.78876298102},"targetPosition":{"x":37108.94332779953,"y":28270.718996895914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9cdd45d8-f6c4-4e20-aa65-6a856263e554","savedPayload":{"position":{"x":37108.94332779953,"y":28270.718996895914},"targetPosition":{"x":37052.28832721757,"y":27912.704286551558},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at03hs.percentageBandwidth.movingAverage <= 30","id":"bc8ec34b-ca18-42dc-8511-eed81356e134","savedPayload":{"position":{"x":36519.61120085396,"y":28794.624446423844},"targetPosition":{"x":36645.011147517216,"y":28467.775625694398},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fbbd2165-081d-45b1-aa19-c424816b4326","savedPayload":{"position":{"x":36645.011147517216,"y":28467.775625694398},"targetPosition":{"x":36770.556087479206,"y":28140.723987238274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","id":"d147395c-8ac0-4a5b-86f4-d013296c62af","savedPayload":{"position":{"x":36078.868902260336,"y":28250.279014350614},"targetPosition":{"x":36424.60756552862,"y":28195.528906634943},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b5c33632-4126-495f-8b9f-b0833810a6b6","savedPayload":{"position":{"x":36424.60756552862,"y":28195.528906634943},"targetPosition":{"x":36770.556087479206,"y":28140.723987238274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3d24dd7c-1b0d-4604-ac3d-13b37c021477","savedPayload":{"position":{"x":36770.556087479206,"y":28140.723987238274},"targetPosition":{"x":37052.28832721757,"y":27912.704286551558},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"4f25e2ba-6306-4d6c-a230-093f16fbaed3","savedPayload":{"position":{"x":37062.584073794125,"y":28278.881608695032},"targetPosition":{"x":37210.23596307848,"y":27894.118767508924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"fcb8e7e9-eab0-41a4-a33d-c9f8fb5177fb","savedPayload":{"position":{"x":37210.024318125805,"y":27894.36667075418},"targetPosition":{"x":37145.96661083353,"y":27487.416603708327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6714ac24-f79f-44b5-924f-8f1f69486b07","savedPayload":{"position":{"x":37145.96661083353,"y":27487.416603708327},"targetPosition":{"x":37081.9249212183,"y":27080.755302498605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"Position Size","formula":{"type":"Formula","code":"balanceBaseAsset","id":"3a4a4b24-af2b-4e3c-b78f-7b67e5c615b2","savedPayload":{"position":{"x":36707.72120868308,"y":27814.114056568513},"targetPosition":{"x":36894.797912171234,"y":27447.398318992065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4a88ee6a-b3a1-4424-8326-2934c76e451a","savedPayload":{"position":{"x":36894.797912171234,"y":27447.398318992065},"targetPosition":{"x":37081.9249212183,"y":27080.755302498605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"Position Rate","formula":{"type":"Formula","name":"My Formula","code":"candle.close","id":"1649c29c-10d2-4766-92e0-d0feedcf24e3","savedPayload":{"position":{"x":36348.37993768211,"y":27454.092178919273},"targetPosition":{"x":36715.21311200159,"y":27267.32295693829},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7fdce54a-55cb-4b4b-8db1-eeafd1028680","savedPayload":{"position":{"x":36715.21311200159,"y":27267.32295693829},"targetPosition":{"x":37081.9249212183,"y":27080.755302498605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"bffe2cff-a470-41cd-9424-682cde958799","savedPayload":{"position":{"x":37081.9249212183,"y":27080.755302498605},"targetPosition":{"x":37210.78333675819,"y":26267.55164107282},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","id":"6def1ff4-f839-45e1-847e-e5e9d45ddc65","savedPayload":{"position":{"x":36877.83851612586,"y":26509.252362186733},"targetPosition":{"x":37210.78333675819,"y":26267.55164107282},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"7c07a075-202b-4958-83a0-b5e598dba4bf","savedPayload":{"position":{"x":37290.63126975661,"y":26145.537201432606},"targetPosition":{"x":36985.03042320477,"y":26097.257521179734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e96b9964-fc96-40ec-b762-f3f7d259ad49","savedPayload":{"position":{"x":36804.1024882504,"y":26203.31469524569},"targetPosition":{"x":37210.78333675819,"y":26267.55164107282},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b9054c44-a372-44c6-ad59-45520ac8a9ed","savedPayload":{"position":{"x":37210.78333675819,"y":26267.55164107282},"targetPosition":{"x":38543.28678959614,"y":25299.500783556694},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","stopLoss":{"type":"Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 4 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 4 / 100} else {stopLoss}","id":"349bbdc8-b091-4378-bb0a-57537aff415f","savedPayload":{"position":{"x":36817.428085791486,"y":25660.592414338284},"targetPosition":{"x":37014.1484819643,"y":25148.57178806651},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[],"announcements":[],"id":"22ebcfc5-e401-4946-b3e9-4cfb0d667be6","savedPayload":{"position":{"x":36668.500513310195,"y":24722.118116395508},"targetPosition":{"x":37014.1484819643,"y":25148.57178806651},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"c0eddbff-148a-4eb1-b979-e734b2f80b8d","savedPayload":{"position":{"x":37014.1484819643,"y":25148.57178806651},"targetPosition":{"x":37556.71902464847,"y":25062.695102924572},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5355af46-22d9-45b8-9dc2-62db0d70dc22","savedPayload":{"position":{"x":37556.71902464847,"y":25062.695102924572},"targetPosition":{"x":38099.15732398546,"y":24976.757582524697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","phases":[{"type":"Phase","name":"New Phase 1","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.movingAverage * 0.3","id":"56242029-b63d-42a2-af1d-bad6099fc58c","savedPayload":{"position":{"x":36612.39912796038,"y":24336.747274231133},"targetPosition":{"x":36988.52935666488,"y":24169.481133182588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at04hs.percentageBandwidth.previous.movingAverage <= 15","id":"cdbf6c47-8430-4556-8fde-0ef4d71149f8","savedPayload":{"position":{"x":37045.66609825689,"y":23011.079239241615},"targetPosition":{"x":37049.59238641556,"y":23185.938465619744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2479eba5-be67-4727-937b-15860346a7ce","savedPayload":{"position":{"x":37049.59238641556,"y":23185.938465619744},"targetPosition":{"x":37053.798753077754,"y":23361.699146030118},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9dad5a0d-5aa2-4f0c-86d7-ee1421a92e22","savedPayload":{"position":{"x":37053.798753077754,"y":23361.699146030118},"targetPosition":{"x":37063.28410709585,"y":23723.567918757064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at04hs.percentageBandwidth.movingAverage <= 50","id":"123f1320-0f5b-4c25-831c-a3c6dde68530","savedPayload":{"position":{"x":37528.16287653762,"y":22776.94520156177},"targetPosition":{"x":37402.33856572435,"y":23103.98069617015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2f7f419b-9b00-466f-908a-31021c5a6f0c","savedPayload":{"position":{"x":37402.33856572435,"y":23103.98069617015},"targetPosition":{"x":37276.72671560257,"y":23430.78943207519},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","id":"d58440e5-c014-4484-a7ac-6e4ed9a0c1b3","savedPayload":{"position":{"x":37821.363061400385,"y":22990.24072991842},"targetPosition":{"x":37549.0450213447,"y":23210.690957570576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3b33e925-4371-4070-bfc7-968fc18f04fe","savedPayload":{"position":{"x":37549.0450213447,"y":23210.690957570576},"targetPosition":{"x":37276.72671560257,"y":23430.78943207519},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e37f4996-17a5-4846-bd49-cbb1f6b5eb65","savedPayload":{"position":{"x":37276.72671560257,"y":23430.78943207519},"targetPosition":{"x":37063.28410709585,"y":23723.567918757064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"e6acc8e7-001c-4f6a-8a16-a2df63767dd4","savedPayload":{"position":{"x":37074.51419599796,"y":23350.941553342414},"targetPosition":{"x":36988.52935666488,"y":24169.481133182588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"b10e345c-aecf-4562-a85e-c345e6e433e5","savedPayload":{"position":{"x":36988.52935666488,"y":24169.481133182588},"targetPosition":{"x":37654.916260101934,"y":24653.743255781377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase 2","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.movingAverage * 0.2","id":"47ac5c54-bcab-4679-bae3-df48476b2e89","savedPayload":{"position":{"x":35946.1086229054,"y":23852.67639929983},"targetPosition":{"x":36322.16487414663,"y":23685.31432683232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at06hs.percentageBandwidth.previous.movingAverage <= 15","id":"d6b1f3ba-ab79-4f7a-9460-7ad56d2f603c","savedPayload":{"position":{"x":36479.019345974244,"y":22599.411387665285},"targetPosition":{"x":36482.86663384189,"y":22774.409781589235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"af7e89d7-6bf9-45df-a7d6-43a68ab6030f","savedPayload":{"position":{"x":36482.86663384189,"y":22774.409781589235},"targetPosition":{"x":36487.032365404266,"y":22949.976412005042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a7ba56f6-8080-4c78-a5f7-3a8f0c879643","savedPayload":{"position":{"x":36487.032365404266,"y":22949.976412005042},"targetPosition":{"x":36496.58422710869,"y":23312.033653946226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at06hs.percentageBandwidth.movingAverage <= 50","id":"0178806d-1922-4f22-90f4-bad53ec87486","savedPayload":{"position":{"x":36961.61240220812,"y":22365.184631110522},"targetPosition":{"x":36835.65403922743,"y":22692.490754070335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4e7bfa49-fe1b-420e-a0c7-cf2fa021cb29","savedPayload":{"position":{"x":36835.65403922743,"y":22692.490754070335},"targetPosition":{"x":36709.925261896904,"y":23019.437319595327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","id":"1005f00a-fc60-46ed-9148-821f8ae11dac","savedPayload":{"position":{"x":37350.12677311433,"y":22734.148665188153},"targetPosition":{"x":37029.960460867296,"y":22877.023877882995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cc097f0c-d6f0-4604-a6e5-e20bf187950d","savedPayload":{"position":{"x":37029.960460867296,"y":22877.023877882995},"targetPosition":{"x":36709.925261896904,"y":23019.437319595327},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"055acccd-9f4a-4061-8450-2542728bea0d","savedPayload":{"position":{"x":36709.925261896904,"y":23019.437319595327},"targetPosition":{"x":36496.58422710869,"y":23312.033653946226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"7c4c75d1-66a7-46fe-9d8b-f59127feb4fb","savedPayload":{"position":{"x":36408.12921121267,"y":22866.886167247496},"targetPosition":{"x":36322.16487414663,"y":23685.31432683232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"d4b86789-6853-4e39-87a2-c0db5ba83b57","savedPayload":{"position":{"x":36322.16487414663,"y":23685.31432683232},"targetPosition":{"x":36988.52935666488,"y":24169.481133182588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase 3","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.movingAverage * 0.15","id":"3f765cfe-7c53-4864-9966-2189a50e67d3","savedPayload":{"position":{"x":35279.80885738757,"y":23368.56838345668},"targetPosition":{"x":35655.83443612933,"y":23201.19255471755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at08hs.percentageBandwidth.previous.movingAverage <= 15 && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >= 5","id":"f3eb091e-10d2-42af-a3fd-0f292dd4facd","savedPayload":{"position":{"x":35912.426132011344,"y":22188.02473709919},"targetPosition":{"x":35916.25655923137,"y":22363.348447677257},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6bc0645d-3c4b-4f51-b6d4-bf64a18c67ad","savedPayload":{"position":{"x":35916.25655923137,"y":22363.348447677257},"targetPosition":{"x":35920.423785958636,"y":22538.67684374441},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1f70959a-6225-418b-a8c0-9f0eb1b25959","savedPayload":{"position":{"x":35920.423785958636,"y":22538.67684374441},"targetPosition":{"x":35929.99672269212,"y":22900.68593225255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at08hs.percentageBandwidth.movingAverage <= 40 && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >= 3","id":"7ea7b4d1-afca-4054-a879-f23b8af5f603","savedPayload":{"position":{"x":36332.45374018306,"y":22117.07062196842},"targetPosition":{"x":36269.12594360673,"y":22281.21403283719},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"46770ee9-f4a5-4954-bba6-a81a98ac170d","savedPayload":{"position":{"x":36269.12594360673,"y":22281.21403283719},"targetPosition":{"x":36143.284821448804,"y":22608.34684277255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.direction === \"Up\"","id":"ef2340f6-814f-4b36-bd7b-dda85145602f","savedPayload":{"position":{"x":36688.35895584827,"y":22167.168535872745},"targetPosition":{"x":36415.90984566528,"y":22387.88368661559},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2bd3230e-6d75-40b8-a21d-ae996c0af609","savedPayload":{"position":{"x":36415.90984566528,"y":22387.88368661559},"targetPosition":{"x":36143.284821448804,"y":22608.34684277255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e6d5b689-a6aa-458d-812c-23aa107070f7","savedPayload":{"position":{"x":36143.284821448804,"y":22608.34684277255},"targetPosition":{"x":35929.99672269212,"y":22900.68593225255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"a6666b42-09ab-4e1d-8496-68d75146df17","savedPayload":{"position":{"x":35741.788301955756,"y":22382.811190232384},"targetPosition":{"x":35655.83443612933,"y":23201.19255471755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"5c382616-0be7-41ce-ba3b-be50f1171cc6","savedPayload":{"position":{"x":35655.83443612933,"y":23201.19255471755},"targetPosition":{"x":36322.16487414663,"y":23685.31432683232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase 4","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.movingAverage * 0.1","id":"f1cba918-c516-4a1b-89c6-0cd41c7c51ba","savedPayload":{"position":{"x":34613.50150082444,"y":22884.621673593494},"targetPosition":{"x":34989.484547146545,"y":22717.228144897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at12hs.percentageBandwidth.previous.movingAverage <= 15 && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >= 15","id":"7a388dfb-f8d5-4db5-b23f-5904cf537693","savedPayload":{"position":{"x":35345.54834782866,"y":21776.558779173272},"targetPosition":{"x":35349.45653262655,"y":21951.944394752234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4612914d-6253-478a-9f65-2bb8d6b6b971","savedPayload":{"position":{"x":35349.45653262655,"y":21951.944394752234},"targetPosition":{"x":35353.67262658888,"y":22127.323998231765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"404022c9-8d38-41e3-b54e-440efaf4043e","savedPayload":{"position":{"x":35353.67262658888,"y":22127.323998231765},"targetPosition":{"x":35363.33987740086,"y":22489.365901438257},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"(chart.at24hs.percentageBandwidth.movingAverage <= 70 || chart.at12hs.percentageBandwidth.movingAverage <= 40 ) && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >=5","id":"1ed19248-d020-48cf-8108-720224f865f7","savedPayload":{"position":{"x":35765.689919450415,"y":21705.61672866174},"targetPosition":{"x":35702.37323616819,"y":21869.870719247032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"5ee85058-ba70-4e9f-8edd-b347db3e9d48","savedPayload":{"position":{"x":35702.37323616819,"y":21869.870719247032},"targetPosition":{"x":35576.559391603776,"y":22197.076412807688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.previous.direction === \"Up\"","id":"7deb0164-b72a-4a5b-b530-d60ab9d17d64","savedPayload":{"position":{"x":36121.60989343169,"y":21755.73157600969},"targetPosition":{"x":35849.16698062161,"y":21976.524346573085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"13fb342c-0335-40f9-b23d-3db153c33b16","savedPayload":{"position":{"x":35849.16698062161,"y":21976.524346573085},"targetPosition":{"x":35576.559391603776,"y":22197.076412807688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e9d17467-711c-45f7-8a08-f34da5a9d4d5","savedPayload":{"position":{"x":35576.559391603776,"y":22197.076412807688},"targetPosition":{"x":35363.33987740086,"y":22489.365901438257},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"9963f1b1-f5aa-4cef-b355-1e496edfa9e9","savedPayload":{"position":{"x":35075.55883317493,"y":21898.966732555666},"targetPosition":{"x":34989.61658634904,"y":22717.254029968073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"840184c3-e47a-4a42-a4d6-ceef67383a54","savedPayload":{"position":{"x":34989.447899426006,"y":22717.03424162746},"targetPosition":{"x":35655.83443612933,"y":23201.19255471755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase 5","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation * 1.75","id":"7548b47a-e78d-4679-8187-284a4f662261","savedPayload":{"position":{"x":33947.16212688377,"y":22400.829966740333},"targetPosition":{"x":34323.3327786729,"y":22233.159240527537},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.percentageBandwidth.previous.movingAverage <= 30 && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >=10","id":"ef8a4d0d-b3b8-437b-959a-c963f6c89fe3","savedPayload":{"position":{"x":34686.23734319014,"y":21373.562022389164},"targetPosition":{"x":34712.890400933815,"y":21546.67217851684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"70e23a03-8532-4e6c-a5f7-0532578ee8c4","savedPayload":{"position":{"x":34712.890400933815,"y":21546.67217851684},"targetPosition":{"x":34740.132717953886,"y":21720.801015570323},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7691f96d-3dd1-46fd-abd1-a0fa7c2e2457","savedPayload":{"position":{"x":34740.132717953886,"y":21720.801015570323},"targetPosition":{"x":34796.82413534809,"y":22077.91417113042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"(chart.at24hs.percentageBandwidth.movingAverage <= 60 || chart.at12hs.percentageBandwidth.movingAverage <= 30 ) && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >=5","id":"5aaa360b-617c-433f-bac0-360722424506","savedPayload":{"position":{"x":35260.930066821624,"y":21131.392613299886},"targetPosition":{"x":35135.5728173172,"y":21458.11081641969},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"90f6a6d2-4b9f-47f0-910b-61106d80b107","savedPayload":{"position":{"x":35135.5728173172,"y":21458.11081641969},"targetPosition":{"x":35010.10226864419,"y":21785.087224550778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.previous.direction === \"Up\"","id":"a2607c85-5420-444e-9a11-4eedeb76745f","savedPayload":{"position":{"x":35554.276038028744,"y":21344.656009542323},"targetPosition":{"x":35282.35444746537,"y":21564.829089366543},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3a75e5f5-3366-4c84-a15d-dc60119e2844","savedPayload":{"position":{"x":35282.35444746537,"y":21564.829089366543},"targetPosition":{"x":35010.10226864419,"y":21785.087224550778},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3162a795-144e-419d-9323-d70546393310","savedPayload":{"position":{"x":35010.10226864419,"y":21785.087224550778},"targetPosition":{"x":34796.82413534809,"y":22077.91417113042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"dd63d693-0e99-463a-a988-86287504d827","savedPayload":{"position":{"x":34409.77172681528,"y":21415.162105086772},"targetPosition":{"x":34323.32725745321,"y":22233.14268963072},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"65109409-9152-4cc4-93e7-c33301f6d28c","savedPayload":{"position":{"x":34323.33595340725,"y":22233.193086902567},"targetPosition":{"x":34989.61658634904,"y":22717.254029968073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase 6","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation * 1.25","id":"c8800084-2dd6-44b5-b54a-e26a7dd3149a","savedPayload":{"position":{"x":33280.26062062725,"y":21916.058847959946},"targetPosition":{"x":33656.30735592492,"y":21748.61897320079},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.percentageBandwidth.previous.movingAverage <= 30 && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >=10","id":"ea47f887-5722-46b5-9b97-ac7bedb3ee7b","savedPayload":{"position":{"x":34201.77769468176,"y":20604.192116809576},"targetPosition":{"x":34210.8857044323,"y":20953.745286913818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5fa32bce-6d0e-4b93-ab17-dba973cfad1a","savedPayload":{"position":{"x":34210.8857044323,"y":20953.745286913818},"targetPosition":{"x":34220.13697780592,"y":21303.74379169583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1825ef6b-4396-4635-a9da-3652cd510acd","savedPayload":{"position":{"x":34220.13697780592,"y":21303.74379169583},"targetPosition":{"x":34230.265895908764,"y":21666.041457149666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"(chart.at24hs.percentageBandwidth.movingAverage <= 50 || chart.at12hs.percentageBandwidth.movingAverage <= 17.5 ) && chart.at01hs.bollingerSubChannel.slope === \"Extreme\" && chart.at01hs.bollingerSubChannel.period >=5","id":"d19aeeec-1ed3-462b-8a55-b9806a17ad77","savedPayload":{"position":{"x":34777.155360963516,"y":20757.357517018118},"targetPosition":{"x":34610.00340944047,"y":21065.513546063103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b731c25b-4899-4198-98bc-a42c5e77cb14","savedPayload":{"position":{"x":34610.00340944047,"y":21065.513546063103},"targetPosition":{"x":34443.29351708951,"y":21373.376150149285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at24hs.bollingerChannel.previous.previous.direction === \"Up\"","id":"3a3e404a-06ca-4371-a5e4-f71d0ceab201","savedPayload":{"position":{"x":34987.71386018262,"y":20932.496636578537},"targetPosition":{"x":34715.44143342088,"y":21153.23638102526},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"188c7a7f-f9b7-4d4e-9147-065d1aa7a2f4","savedPayload":{"position":{"x":34715.44143342088,"y":21153.23638102526},"targetPosition":{"x":34443.29351708951,"y":21373.376150149285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"869ee575-049f-4759-a498-79647b0ed1a4","savedPayload":{"position":{"x":34443.29351708951,"y":21373.376150149285},"targetPosition":{"x":34230.265895908764,"y":21666.041457149666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"412e8505-aab3-4c3c-8799-dfddc8e879f2","savedPayload":{"position":{"x":33742.19649676662,"y":20930.31632524261},"targetPosition":{"x":33656.34260136011,"y":21748.59492729729},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"34563f7d-9c72-465b-8265-07302e098ff1","savedPayload":{"position":{"x":33657.17038592897,"y":21749.36153835545},"targetPosition":{"x":34323.32725745321,"y":22233.14268963072},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"New Phase","formula":{"type":"Formula","code":"chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation","id":"e63d85c1-3f43-4eee-96f2-3db5ae3db60e","savedPayload":{"position":{"x":32990.1264608507,"y":21264.6414477228},"targetPosition":{"x":33323.105667745454,"y":21506.49043771999},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"3f98a4e8-b586-4ffa-9630-86caec6508ff","savedPayload":{"position":{"x":33323.097425587905,"y":21506.467085729528},"targetPosition":{"x":33656.34260136011,"y":21748.59492729729},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a3704633-a258-4bcf-9aef-063f91fe4729","savedPayload":{"position":{"x":37654.916260101934,"y":24653.743255781377},"targetPosition":{"x":38099.15732398546,"y":24976.757582524697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"2c2a8de4-7aef-421d-b0c9-cbfcff444c84","savedPayload":{"position":{"x":38376.81204154982,"y":25097.712699873733},"targetPosition":{"x":38314.26395076143,"y":24699.928184312597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4264495f-73b8-4fb4-a41b-034b0727a9b0","savedPayload":{"position":{"x":38013.68104873196,"y":24434.85298322019},"targetPosition":{"x":38099.15732398546,"y":24976.757582524697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e3e4ef8c-d328-417c-af43-1300f00f674f","savedPayload":{"position":{"x":38099.15732398546,"y":24976.757582524697},"targetPosition":{"x":38543.28678959614,"y":25299.500783556694},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","closeExecution":{"type":"Close Execution","id":"0b0c1936-fe07-43b9-80dd-8e8d7cb5e19d","savedPayload":{"position":{"x":38599.14393103092,"y":24239.61963606108},"targetPosition":{"x":38713.07429295899,"y":24777.04968466085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"d97442f9-5c13-4ad6-9151-878e6842fe57","savedPayload":{"position":{"x":38807.00785816407,"y":25105.620140331164},"targetPosition":{"x":39026.105344753065,"y":24767.32560373922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8df754d2-5c34-405b-b7ff-95c5f87083d2","savedPayload":{"position":{"x":39011.80785197776,"y":24317.005110283426},"targetPosition":{"x":38713.07429295899,"y":24777.04968466085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"51a105b6-c1a1-4805-b0f0-a4895097f071","savedPayload":{"position":{"x":38713.07429295899,"y":24777.04968466085},"targetPosition":{"x":38543.28678959614,"y":25299.500783556694},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3e5c4b18-a27e-4d12-a5d8-9bf44e970f1c","savedPayload":{"position":{"x":38543.28678959614,"y":25299.500783556694},"targetPosition":{"x":39642.04913415892,"y":25299.5},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00","savedPayload":{"position":{"x":39642.04913415892,"y":25299.5},"targetPosition":{"x":39642.04913415892,"y":25299.5},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"w"}}} \ No newline at end of file diff --git a/Workspace - Binance - WHB - BBTB.json b/Workspace - Binance - WHB - BBTB.json deleted file mode 100644 index b8bf85c8d..000000000 --- a/Workspace - Binance - WHB - BBTB.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"Workspace","name":"Binance - WHB - BBTB","rootNodes":[{"type":"Network","name":"Superalgos","networkNodes":[{"type":"Network Node","name":"My Computer","code":"{ \n\"host\": \"localhost\", \n\"webPort\": \"34247\", \n\"webSocketsPort\": \"8080\"\n}","dataStorage":{"type":"Data Storage","name":"New Data Storage","sessionIndependentData":{"type":"Session Independent Data","name":"New Session Independent Data","exchangeDataProducts":[{"type":"Exchange Data Products","name":"Binance","singleMarketData":[{"type":"Single Market Data","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"dd7c8795-bb24-4438-9d77-b37a9000ad7f","savedPayload":{"position":{"x":39655.39345377463,"y":28084.121285348076},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"98e6c917-f4b7-4b71-9215-de3ccaf3dc0c","savedPayload":{"position":{"x":39619.08803001109,"y":27971.34006849996},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"1d7dd537-5f6f-4eb2-8e56-ddba0aef720f","savedPayload":{"position":{"x":39594.11393185164,"y":27855.840877332517},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"221c8d22-8a7f-4014-a7ed-0bafc886b123","savedPayload":{"position":{"x":39580.59887306321,"y":27738.507421368748},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"6929ebe7-6486-4299-add5-ed0282500d91","savedPayload":{"position":{"x":39578.655464896365,"y":27620.63069875915},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"4a3ed8eb-a73e-4fb4-835a-681cf47d7373","savedPayload":{"position":{"x":39588.297198778826,"y":27502.946480135615},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"5ffc6a67-e33b-422b-8e36-f9711f93c723","savedPayload":{"position":{"x":39609.428887621216,"y":27386.77785099828},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"48f7953c-f62d-4292-b042-d1ac05f8f80f","savedPayload":{"position":{"x":39641.84608404141,"y":27273.24280350331},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"3b9a3c93-6d41-440e-89a2-2fd1b2dde603","savedPayload":{"position":{"x":39685.2360649887,"y":27163.433854438405},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"70401ea0-3fed-4e40-8bba-a1e5adce9b8c","savedPayload":{"position":{"x":39739.18066448831,"y":27058.407968059906},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"06ac8eb7-8b14-42b1-9e2e-466280ade032","savedPayload":{"position":{"x":39803.16019594351,"y":26959.1762369918},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"014bba70-64d4-4035-b06d-145ee9b4c54c","savedPayload":{"position":{"x":39876.55840037216,"y":26866.694054096202},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"768cc06c-6fdf-491a-a741-5e08f0e25e38","savedPayload":{"position":{"x":39958.66834477317,"y":26781.851861425766},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"40794460-b815-498f-a245-e677de0eed86","savedPayload":{"position":{"x":40048.69920292061,"y":26705.466552453436},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"7ccbd0c1-c804-47e3-9314-14cbb756c806","savedPayload":{"position":{"x":40145.78385240617,"y":26638.273605375165},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"728d6f08-086f-41ba-9126-30ec56a45ea5","savedPayload":{"position":{"x":40248.98721974834,"y":26580.920017944973},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"1510fd36-633e-40a7-adbe-680660d64bd0","savedPayload":{"position":{"x":40357.31529765827,"y":26533.95809992029},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"2404b1eb-c7c9-46e7-b22a-93cfcc3739f4","savedPayload":{"position":{"x":40469.72474382882,"y":26497.840166222424},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"d83476c3-2f0b-4d4a-abb2-0e47ed0a421d","savedPayload":{"position":{"x":40585.132955318084,"y":26472.914171771416},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"0428f20b-9620-480e-a531-dbb2e5f59ef4","savedPayload":{"position":{"x":40702.42850753783,"y":26459.42033593334},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"fcfec9fa-1a0d-4285-9fad-4a23409f88ed","savedPayload":{"position":{"x":40820.28557415008,"y":26457.488926076465},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"08f223a8-9707-4c45-b638-1fe0e4a2b053","savedPayload":{"position":{"x":40937.95845139182,"y":26467.13880986452},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"66f1a9be-fe96-48c3-91e4-500c6e246423","savedPayload":{"position":{"x":41054.120384899,"y":26488.277064496815},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"e432c706-cbcd-4af0-b23c-b18e5b29377a","savedPayload":{"position":{"x":41167.65178678811,"y":26520.700545782674},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"7f2dfd8e-de4a-4bd1-8d34-27581f1a3ed8","savedPayload":{"position":{"x":41277.4594798642,"y":26564.097566374792},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"595d148f-6cdf-48d3-ab8f-23fba0052631","savedPayload":{"position":{"x":41382.48641024106,"y":26618.051155654128},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"2045098a-e9b4-4409-9fd9-ee7285d9b7cf","savedPayload":{"position":{"x":41481.72199276818,"y":26682.043494609432},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"295bd09d-e868-4e8b-9944-39bf6e0d7951","savedPayload":{"position":{"x":41574.21247985582,"y":26755.461785010735},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"ba6f23d4-c2e7-41b4-88a0-e14ebb34e21c","savedPayload":{"position":{"x":41659.072595416554,"y":26837.602086697607},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}},{"type":"Data Product","name":"Resistances","id":"0669d924-aace-46d1-b126-ccced8fd33cf","savedPayload":{"position":{"x":41734.78246123321,"y":26926.742016325188},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Resistances","id":"7a734501-a0fb-4305-803e-7e95d477c513"}}},{"type":"Data Product","name":"Supports","id":"5e7a0e50-e6ed-4106-8025-8b35ad6c597c","savedPayload":{"position":{"x":41803.59685318991,"y":27026.194745818015},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Supports","id":"bc3c43de-6312-47d4-ae3d-0c95c1b039e0"}}}],"id":"cbdd3605-b905-453f-9ecb-e986cb2729f9","savedPayload":{"position":{"x":24207.999751769254,"y":28942.4248575682},"targetPosition":{"x":25074.611669244932,"y":29722.715919865514},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}}],"id":"7f87ecc6-8dd3-42e9-9217-1579b64aae75","savedPayload":{"position":{"x":25074.725705182926,"y":29722.361915324287},"targetPosition":{"x":25508.405506167062,"y":30112.915970947008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"bf04ccea-266d-4115-b50e-fefdf29b873a","savedPayload":{"position":{"x":25508.405506167062,"y":30112.915970947008},"targetPosition":{"x":25942.043094058594,"y":30503.50687445451},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"i"}}},"sessionBasedData":{"type":"Session Based Data","name":"New Session Based Data","exchangeSessions":[{"type":"Exchange Sessions","name":"Binance","sessionReferences":[{"type":"Session Reference","name":"Back WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"573fb46f-78d2-4bf3-ad11-e42d2531d53e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"39d7a06d-5aad-4b03-8778-e4df8dacc825","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"7af9d35c-7464-4ed5-9ee6-ccf7a9943894","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"82b46974-7a93-4066-a3b7-378b42710364","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"109e30d5-c839-4e20-8744-2e4dc002f3a8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"3792a579-2f2c-4c29-9cb1-05e2683db5da","savedPayload":{"position":{"x":25442.41940134145,"y":28898.292141318674},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Backtesting Session","name":"Back WHB","id":"f32f1cdc-425f-4193-a43b-be9312c74234"}}},{"type":"Session Reference","name":"Paper WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"63636068-307e-4cea-b31f-f47e106cea2c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"20848048-8efb-47b1-aaf0-789d2f6c5b1d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"87b74841-4f6a-4658-b01b-7feb254b5d2f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"5e28998c-b35f-4cc0-9fd6-8ee5f5714545","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"12cd1cb4-f163-4d1b-8955-cae6904831c7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"5f2e9d8a-f1df-4efd-8232-718818cab630","savedPayload":{"position":{"x":25645.811186643416,"y":28672.384434673422},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Paper Trading Session","name":"Paper WHB","id":"2198ec50-3d31-43b7-a57d-e386bef38a93"}}},{"type":"Session Reference","name":"Live Trading WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"af19e56c-eaf1-4b0b-93f9-74b9ac1843c2","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"30ac52a8-ee50-439c-83c8-df75ab49374a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"c35fa0be-6e51-4d14-9a52-6b0174cc1aab","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"6a059555-2555-4c7f-a722-2ab4ca0440c5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"863885a8-2351-4b29-9f2e-ae3aeda223fc","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"ee314903-8ee9-4068-8a90-9452c460b910","savedPayload":{"position":{"x":25914.176401881115,"y":28529.692846346756},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Live Trading Session","name":"Live Trading WHB","id":"5335fd67-ebdc-4cfd-936d-b76af957713e"}}},{"type":"Session Reference","name":"Fwd WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"5919a710-a950-4049-9605-3f127b7fac6b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"c7030a88-152f-421c-8b32-66f3c222286a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"f4b18249-5044-4b34-83f7-3cedbbe939c5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"25db80e6-c4cf-4568-98d3-0cba83625ece","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"9b6e94d5-442d-4882-beb6-6b616adb24a7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"3892574a-ebe9-4d4d-8e79-02e6f0900c44","savedPayload":{"position":{"x":26214.957290034235,"y":28487.39268280673},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Forward Testing Session","name":"Fwd WHB","id":"0e7edb98-38ff-4516-89a1-188030989ddc"}}},{"type":"Session Reference","name":"Back BBTB Binance BTC/USDT","singleMarketData":{"type":"Single Market Data","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Simulation","id":"653622df-b35b-4c72-9b1d-cbbea2d45a93","savedPayload":{"position":{"x":26455.573591725715,"y":27743.761762864735},"targetPosition":{"x":26685.903141314688,"y":28119.50039190219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"bcd39fee-3584-4e3a-b524-05ecb62d4582","savedPayload":{"position":{"x":26718.02998233403,"y":27678.207255468882},"targetPosition":{"x":26685.903141314688,"y":28119.50039190219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"aa60feec-3e11-4509-ab4f-5eac17ea7d3b","savedPayload":{"position":{"x":26969.002379074984,"y":27779.578235462006},"targetPosition":{"x":26685.903141314688,"y":28119.50039190219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"d6a48300-ab24-4b7b-8fb1-b431e389c7d1","savedPayload":{"position":{"x":27112.390627347257,"y":28009.145745126465},"targetPosition":{"x":26685.903141314688,"y":28119.50039190219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"1a28b5a4-fd4e-4911-a195-3a27cac67cd9","savedPayload":{"position":{"x":26685.903141314688,"y":28119.50039190219},"targetPosition":{"x":26511.90768779935,"y":28550.735424728384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"894fe28c-55f0-4ce7-a61f-31b7a58036b0","savedPayload":{"position":{"x":26512.25277222365,"y":28550.5818725418},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Backtesting Session","name":"Back BBTB","id":"5d72321e-97e7-404f-8272-809dbbf4db35"}}},{"type":"Session Reference","name":"Paper BBTB Binance BTC/USDT","singleMarketData":{"type":"Single Market Data","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Simulation","id":"2004d488-ba55-478c-afa4-c00a555bf34c","savedPayload":{"position":{"x":26971.216338450067,"y":27957.810135682634},"targetPosition":{"x":27062.315598951875,"y":28386.268950715483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"7859d024-817a-4059-8a17-86690194f9de","savedPayload":{"position":{"x":27240.2554163473,"y":27986.018658800323},"targetPosition":{"x":27062.315598951875,"y":28386.268950715483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"11af0867-3396-48d4-b794-9d133d2d2416","savedPayload":{"position":{"x":27441.353895746524,"y":28167.02459841552},"targetPosition":{"x":27062.315598951875,"y":28386.268950715483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"dd541e63-8071-4b0f-8eb8-5fd50ef3eb82","savedPayload":{"position":{"x":27497.330846318662,"y":28431.383320855293},"targetPosition":{"x":27062.315598951875,"y":28386.268950715483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"778e7f94-7cf1-43a2-8843-2faca50fd6b2","savedPayload":{"position":{"x":27062.315598951875,"y":28386.268950715483},"targetPosition":{"x":26769.67959034035,"y":28711.749779677113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"fdfa0714-e7cc-4833-8623-2366fc36e275","savedPayload":{"position":{"x":26770.006560596325,"y":28711.63882050236},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Paper Trading Session","name":"Paper BBTB","id":"a70b66f2-4d79-4ab0-8a84-cb47fd872b79"}}},{"type":"Session Reference","name":"Live Trading BBTB Binance BTC/USDT","singleMarketData":{"type":"Single Market Data","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Simulation","id":"84c5619b-c379-4bed-bd1c-3dccfc840fa7","savedPayload":{"position":{"x":27403.685124941287,"y":28311.811214135712},"targetPosition":{"x":27342.982549435495,"y":28745.594465055852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"9cd0c0da-e0df-4b83-a7f5-7e503f050020","savedPayload":{"position":{"x":27646.983850070956,"y":28430.393602867665},"targetPosition":{"x":27342.982549435495,"y":28745.594465055852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"8681f8d9-c6fa-4966-aa76-e627000962cb","savedPayload":{"position":{"x":27773.915926630965,"y":28669.291142164537},"targetPosition":{"x":27342.982549435495,"y":28745.594465055852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"05aa1029-fde5-4240-b5ef-31636ed817ee","savedPayload":{"position":{"x":27735.959746783006,"y":28937.181489181425},"targetPosition":{"x":27342.982549435495,"y":28745.594465055852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"c966a877-9552-4b7c-9b12-f6cbf5e631d6","savedPayload":{"position":{"x":27342.982549435495,"y":28745.594465055852},"targetPosition":{"x":26956.711147228187,"y":28951.208113208817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"9576879e-2a52-4224-b082-6d8f0a25424f","savedPayload":{"position":{"x":26957.130045686332,"y":28951.141808070486},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Live Trading Session","name":"Live Trading BBTB","id":"ef82a64d-7c70-48d5-868a-09acf97e5289"}}},{"type":"Session Reference","name":"Fwd BBTB Binance BTC/USDT","singleMarketData":{"type":"Single Market Data","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Simulation","id":"3713af17-7ed8-4d32-abbb-66be7ba3d95b","savedPayload":{"position":{"x":27689.20756476676,"y":28792.01762932115},"targetPosition":{"x":27483.76587740709,"y":29178.885493436097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"8206a3c4-7a92-4f52-aa29-d0b912511e94","savedPayload":{"position":{"x":27877.30263666776,"y":28986.652324934446},"targetPosition":{"x":27483.76587740709,"y":29178.885493436097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"35c51f59-d967-4fb9-bf3d-ebef155fe90a","savedPayload":{"position":{"x":27914.92862485214,"y":29254.298693059718},"targetPosition":{"x":27483.76587740709,"y":29178.885493436097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"82cb4b63-c7ed-4e1c-b558-5caf08e7840e","savedPayload":{"position":{"x":27787.524400010894,"y":29492.93889701325},"targetPosition":{"x":27483.76587740709,"y":29178.885493436097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"b07b8215-91b7-4cdf-b0c9-f6de319d98af","savedPayload":{"position":{"x":27483.76587740709,"y":29178.885493436097},"targetPosition":{"x":27050.43363927934,"y":29240.015942621932},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"f28418b1-30c9-4f12-9162-b483ed79adf9","savedPayload":{"position":{"x":27051.047858882026,"y":29240.240033953312},"targetPosition":{"x":26184.51447943233,"y":29361.966590854634},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Forward Testing Session","name":"Fwd BBTB","id":"7b91c25c-ac96-4c3c-9e79-17c262f17180"}}}],"id":"5b3343c9-3fab-46ec-92e3-9c074759a112","savedPayload":{"position":{"x":26184.524152752183,"y":29361.71743417283},"targetPosition":{"x":26063.272886633127,"y":29932.60782590063},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"29ca14e5-dabe-470a-be64-ed7996bd1e55","savedPayload":{"position":{"x":26063.272886633127,"y":29932.60782590063},"targetPosition":{"x":25942.043094058594,"y":30503.50687445451},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0726a9e4-23b6-4d27-a8de-e91a9665a8ba","savedPayload":{"position":{"x":25941.944960467765,"y":30503.547160259044},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"d"}}},"dataMining":{"type":"Data Mining","name":"New Data Mining","exchangeTasks":[{"type":"Exchange Tasks","name":"Binance","taskManagers":[{"type":"Task Manager","name":"Masters BTC/USDT","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"b1a110d4-ac93-402d-8465-a35a835d0c22","savedPayload":{"position":{"x":26295.776593937757,"y":28781.36401676669},"targetPosition":{"x":26497.181368080222,"y":28993.314045627245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"fa3aae08-61b3-4a35-af20-c1242b9954c8","savedPayload":{"position":{"x":26497.181368080222,"y":28993.314045627245},"targetPosition":{"x":26698.745648170545,"y":29205.196033081145},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"e61db3ab-b80d-4575-8da1-5598e0b1b525","savedPayload":{"position":{"x":26698.745648170545,"y":29205.196033081145},"targetPosition":{"x":26900.64484115142,"y":29417.1103410173},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"160f8edd-29cf-40c2-bb21-5f569d97f9d1","savedPayload":{"position":{"x":26900.64484115142,"y":29417.1103410173},"targetPosition":{"x":27303.642788619873,"y":29839.997018774087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"22df3948-2a73-4ca6-a927-4b722dbb27dc","savedPayload":{"position":{"x":26644.79038090263,"y":28548.29577551908},"targetPosition":{"x":26816.76829379165,"y":28784.96123948801},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"5324b18d-e2b0-495e-94a0-cfc3f3473766","savedPayload":{"position":{"x":26816.76829379165,"y":28784.96123948801},"targetPosition":{"x":26988.793025211893,"y":29021.546670103362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"d7e0c235-4024-4888-86ba-32cf5c73b852","savedPayload":{"position":{"x":26896.951155637144,"y":28149.592406858952},"targetPosition":{"x":26942.81353308944,"y":28585.46723817298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"02adb2d3-1740-4f42-975e-e0365e308b97","savedPayload":{"position":{"x":26942.81353308944,"y":28585.46723817298},"targetPosition":{"x":26988.793025211893,"y":29021.546670103362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"ccf1813f-31d2-4359-88ce-8c8e6132f222","savedPayload":{"position":{"x":26988.793025211893,"y":29021.546670103362},"targetPosition":{"x":27093.923115202073,"y":29294.80421308715},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b55a2f7e-354e-47ce-8986-a4a0079efe2b","savedPayload":{"position":{"x":27093.923115202073,"y":29294.80421308715},"targetPosition":{"x":27303.642788619873,"y":29839.997018774087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"89bf947b-a245-4aad-a2fa-472ad6f8fd2e","savedPayload":{"position":{"x":27189.754505576493,"y":28394.19710240186},"targetPosition":{"x":27257.861597975232,"y":28678.7864774289},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"df74508f-a106-4190-83ae-8c43455cd889","savedPayload":{"position":{"x":27257.861597975232,"y":28678.7864774289},"targetPosition":{"x":27326.013193344465,"y":28963.273945892004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"441d958c-4ebf-4cc5-b49e-cdaf3802efc3","savedPayload":{"position":{"x":27574.559572441973,"y":28122.40215659922},"targetPosition":{"x":27450.305086678956,"y":28542.72094770502},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"daf27799-58cb-480a-832b-4e3404882961","savedPayload":{"position":{"x":27450.305086678956,"y":28542.72094770502},"targetPosition":{"x":27326.013193344465,"y":28963.273945892004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"b1b31e7e-12f8-45fd-9508-cb82030d7507","savedPayload":{"position":{"x":27326.013193344465,"y":28963.273945892004},"targetPosition":{"x":27318.591273474813,"y":29256.0297430117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"52b4b8db-0336-423c-9343-5353225b4bfb","savedPayload":{"position":{"x":27318.591273474813,"y":29256.0297430117},"targetPosition":{"x":27303.642788619873,"y":29839.997018774087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f7457cf6-bcdc-48e1-b6e2-b45de382bc37","savedPayload":{"position":{"x":27751.8331614713,"y":28460.835841190503},"targetPosition":{"x":27706.012054908566,"y":28749.870177439392},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"5a6b7843-090c-4b3b-9be4-ed8c8d1f6935","savedPayload":{"position":{"x":27706.012054908566,"y":28749.870177439392},"targetPosition":{"x":27660.23614278188,"y":29038.812455756783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"e78c5425-7d77-47c5-bb63-db88cad6e060","savedPayload":{"position":{"x":28211.83015890913,"y":28357.252260215242},"targetPosition":{"x":27936.11776415758,"y":28697.938136515048},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"4c5ed30f-d600-44e2-ac14-33ce0528178e","savedPayload":{"position":{"x":27936.11776415758,"y":28697.938136515048},"targetPosition":{"x":27660.23614278188,"y":29038.812455756783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"b4fb4df9-2d6e-4c0a-8eb5-d1bd78232d0d","savedPayload":{"position":{"x":27660.23614278188,"y":29038.812455756783},"targetPosition":{"x":27541.161002138204,"y":29306.33835211767},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"aacffa8c-5a19-423f-b551-0f9a5c46a628","savedPayload":{"position":{"x":27541.161002138204,"y":29306.33835211767},"targetPosition":{"x":27303.642788619873,"y":29839.997018774087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"7af918d3-d9a4-4553-9b3d-12224b4ad938","savedPayload":{"position":{"x":28246.09248316529,"y":28737.939326780328},"targetPosition":{"x":28093.06415879192,"y":28987.2949110211},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"0d8ca3f1-31af-40e4-8f43-4dacc8950dff","savedPayload":{"position":{"x":28093.06415879192,"y":28987.2949110211},"targetPosition":{"x":27940.057991958874,"y":29236.559755396884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f11fe52f-ba3f-486d-93f2-a6b82fa67c2d","savedPayload":{"position":{"x":28710.63353519865,"y":28818.37666235774},"targetPosition":{"x":28325.531920669902,"y":29027.44452475342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"ba74160c-2b59-497a-b895-4ddade53f72e","savedPayload":{"position":{"x":28325.531920669902,"y":29027.44452475342},"targetPosition":{"x":27940.057991958874,"y":29236.559755396884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"3a93a6a1-0d2e-475b-874e-8784dc4b6c78","savedPayload":{"position":{"x":27940.057991958874,"y":29236.559755396884},"targetPosition":{"x":27727.493045084848,"y":29438.01514560189},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"9843b9dd-ff8e-4cef-b063-730b0317420d","savedPayload":{"position":{"x":27727.493045084848,"y":29438.01514560189},"targetPosition":{"x":27303.642788619873,"y":29839.997018774087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"da37aa9d-a68c-49eb-be66-5fcc1a13ab69","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"abae0d8d-c44c-4825-b6ad-aabad604ba2d","savedPayload":{"position":{"x":28396.037566708925,"y":29421.614584380517},"targetPosition":{"x":28122.746782236274,"y":29526.34159600593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"f33858b9-8561-4f70-ba70-d8d168786321","savedPayload":{"position":{"x":28122.746782236274,"y":29526.34159600593},"targetPosition":{"x":27849.20316575137,"y":29631.049785901763},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"64e8f70e-829c-47cd-b933-f4e4dd0c90fc","savedPayload":{"position":{"x":27849.20316575137,"y":29631.049785901763},"targetPosition":{"x":27303.642788619873,"y":29839.997018774087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Resistances & Supports","bot":{"type":"Indicator Bot Instance","name":"Resistances & Supports","code":" {\n \"repo\": \"\"\n }","processes":[{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"5e0f86e6-2a43-49c2-a347-7203f0867c2d","savedPayload":{"position":{"x":29032.650008520504,"y":29659.7209500006},"targetPosition":{"x":28606.58515022879,"y":29761.864642359356},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"f9f341a9-ba04-4c03-8f3b-249e72681562","savedPayload":{"position":{"x":28606.58515022879,"y":29761.864642359356},"targetPosition":{"x":28180.254520845563,"y":29864.051049529597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"5d9b2729-43fb-4e7e-aa4f-b8477c424e51"}}},{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"9974d57e-33ac-4fcf-ad75-35a8c4dc549e","savedPayload":{"position":{"x":28740.96463022337,"y":30030.055359108075},"targetPosition":{"x":28460.59045635442,"y":29947.10439692041},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"9c93e98f-e166-4c8d-a9d7-08ada9c68eeb","savedPayload":{"position":{"x":28460.59045635442,"y":29947.10439692041},"targetPosition":{"x":28180.254520845563,"y":29864.051049529597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"be19d91b-9337-4f84-96b3-f4e54ea12df5"}}}],"id":"88a4c3b6-e148-47e8-91b2-bf72bb167dc5","savedPayload":{"position":{"x":28180.254520845563,"y":29864.051049529597},"targetPosition":{"x":27887.623437774728,"y":29856.170560424096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6c9dc449-6a37-4f34-8984-13aafed439fc","savedPayload":{"position":{"x":27887.623437774728,"y":29856.170560424096},"targetPosition":{"x":27303.642788619873,"y":29839.997018774087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ea242bf3-f7e6-431a-ab41-e022cb3ac6df","savedPayload":{"position":{"x":27304.278949288993,"y":29839.129992092854},"targetPosition":{"x":27066.853530706274,"y":30372.59375201423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta BTC/USDT","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"08b275d2-c921-49d0-a88d-5669df5c17e0","savedPayload":{"position":{"x":28228.72521288214,"y":28715.602115489775},"targetPosition":{"x":28228.861792805477,"y":29007.980855807735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"a5449b25-a98e-4fa4-87eb-5f60b967770a","savedPayload":{"position":{"x":28228.861792805477,"y":29007.980855807735},"targetPosition":{"x":28228.923628084704,"y":29300.06686932012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"287d4ba4-1404-4256-bdbb-cf2c970e5269","savedPayload":{"position":{"x":29238.98710680755,"y":28716.3520201579},"targetPosition":{"x":28734.144403315004,"y":29007.919913068403},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"05fb2b7e-6704-4f05-b12b-b590101e5ca9","savedPayload":{"position":{"x":28734.144403315004,"y":29007.919913068403},"targetPosition":{"x":28228.923628084704,"y":29300.06686932012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"f6dc278d-5a5c-4cba-b513-f0660a9f492d","savedPayload":{"position":{"x":28228.923628084704,"y":29300.06686932012},"targetPosition":{"x":27937.314391482443,"y":29805.71391222206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a15b5f86-52c2-4a22-9dd9-311d981601ba","savedPayload":{"position":{"x":27937.314391482443,"y":29805.71391222206},"targetPosition":{"x":27645.47604026171,"y":30311.719439667875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f8ea11d8-7b32-4ed0-968d-a20df0b49d7f","savedPayload":{"position":{"x":29055.03074232478,"y":29364.155049541812},"targetPosition":{"x":28883.181776512578,"y":29600.02418722641},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"e32509df-e962-4760-991e-6533a398c58e","savedPayload":{"position":{"x":28883.181776512578,"y":29600.02418722641},"targetPosition":{"x":28711.92860225306,"y":29835.824880290023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"0d4140a1-5e1f-4e2e-b540-582474e41889","savedPayload":{"position":{"x":29873.1235953913,"y":29957.84157849362},"targetPosition":{"x":29292.744441948304,"y":29896.70128328085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"96466f5a-6dd9-4db9-b30c-1c4622076d8a","savedPayload":{"position":{"x":29292.744441948304,"y":29896.70128328085},"targetPosition":{"x":28711.92860225306,"y":29835.824880290023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"fffaf3df-a88c-4d45-bb52-d02b818502b5","savedPayload":{"position":{"x":28711.92860225306,"y":29835.824880290023},"targetPosition":{"x":28178.856365881307,"y":30073.59601068226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"53fd5de3-7d70-4eb7-8dd6-976d1e188d12","savedPayload":{"position":{"x":28178.856365881307,"y":30073.59601068226},"targetPosition":{"x":27645.47604026171,"y":30311.719439667875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"78a80ff6-f4f2-4680-9a7b-65225144dd94","savedPayload":{"position":{"x":29343.123990290904,"y":30372.959616137443},"targetPosition":{"x":29064.777283488427,"y":30463.487094555752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"301a8d2c-f659-4d4b-9906-40177bdc1256","savedPayload":{"position":{"x":29064.777283488427,"y":30463.487094555752},"targetPosition":{"x":28787.38048108401,"y":30553.17433174999},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"a9291a08-1ba1-436b-b491-e759cc8fb7d1","savedPayload":{"position":{"x":29655.246962702226,"y":31333.244849074097},"targetPosition":{"x":29221.491214867103,"y":30943.007309836925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"19fff031-07c3-4836-9bca-1570eb69a931","savedPayload":{"position":{"x":29221.491214867103,"y":30943.007309836925},"targetPosition":{"x":28787.38048108401,"y":30553.17433174999},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"a81bcaf4-6c99-4b6a-8291-5fa657ae2c17","savedPayload":{"position":{"x":28787.38048108401,"y":30553.17433174999},"targetPosition":{"x":28216.87537107575,"y":30432.41340723835},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8e2997a2-13ae-464c-b980-9ec46584db3b","savedPayload":{"position":{"x":28216.87537107575,"y":30432.41340723835},"targetPosition":{"x":27645.47604026171,"y":30311.719439667875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f6802028-335d-4e31-90a7-9d608199aafb","savedPayload":{"position":{"x":28980.915039741532,"y":31358.998224580246},"targetPosition":{"x":28703.237872801612,"y":31269.241992275245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"8540fa7a-f4b2-4e97-923c-e8acd00bbb9f","savedPayload":{"position":{"x":28703.237872801612,"y":31269.241992275245},"targetPosition":{"x":28425.94036742731,"y":31179.220069122053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"51d58c12-ad1f-450e-94fd-ea0f8ad08769","savedPayload":{"position":{"x":28668.892311218562,"y":32320.886124995297},"targetPosition":{"x":28548.162305811125,"y":31749.536588300653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"c655562c-3839-42e0-9ea6-982629405d33","savedPayload":{"position":{"x":28548.162305811125,"y":31749.536588300653},"targetPosition":{"x":28425.94036742731,"y":31179.220069122053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"f84cf5d6-034c-42db-b197-e95c0228efc9","savedPayload":{"position":{"x":28425.94036742731,"y":31179.220069122053},"targetPosition":{"x":28035.898569423418,"y":30746.03018721756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"385443d2-f17f-459c-b603-58f42e5c366f","savedPayload":{"position":{"x":28035.898569423418,"y":30746.03018721756},"targetPosition":{"x":27645.47604026171,"y":30311.719439667875},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"2a5cc26f-cb88-4743-b412-c33acb6aa0fb","savedPayload":{"position":{"x":27647.58213866322,"y":30311.62037098606},"targetPosition":{"x":27066.853530706274,"y":30372.59375201423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}}],"id":"b1c93d10-5dd9-4b3f-9662-b9bf7850b81a","savedPayload":{"position":{"x":27066.853530706274,"y":30372.59375201423},"targetPosition":{"x":26594.641092308266,"y":30715.716199742572},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"7449a608-32ca-4285-94d1-c96791e2817f","savedPayload":{"position":{"x":26594.641092308266,"y":30715.716199742572},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"testingEnvironment":{"type":"Testing Environment","name":"New Testing Environment","exchangeTasks":[{"type":"Exchange Tasks","name":"Binance","taskManagers":[{"type":"Task Manager","name":"Paper & Backtesting Sessions WHB","tasks":[{"type":"Task","name":"Paper Trading WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"34d3f232-9fb1-47e1-97be-9233ef34db93","savedPayload":{"position":{"x":29053.725088200696,"y":31178.296562237272},"targetPosition":{"x":29338.31751661565,"y":31241.600647628944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"969cd1c0-1d6d-4667-a810-d18369410d94","savedPayload":{"position":{"x":29210.35538322298,"y":30979.009544966942},"targetPosition":{"x":29338.31751661565,"y":31241.600647628944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"4af996da-6714-41ac-ad51-5706f41b40f0","savedPayload":{"position":{"x":29463.747814775626,"y":30977.168763636604},"targetPosition":{"x":29338.31751661565,"y":31241.600647628944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"963db77e-0405-4fc4-8780-1b7fa93f41a6","savedPayload":{"position":{"x":29623.382855600412,"y":31174.253015538645},"targetPosition":{"x":29338.31751661565,"y":31241.600647628944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"cd125f30-93e7-4786-b1e1-33274bd2877c","savedPayload":{"position":{"x":29568.897659271563,"y":31421.634654659032},"targetPosition":{"x":29338.31751661565,"y":31241.600647628944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"f8fcac2e-2a52-4189-a95d-77e83b5a6f98","savedPayload":{"position":{"x":29341.37131237591,"y":31533.232063703043},"targetPosition":{"x":29338.31751661565,"y":31241.600647628944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b5ba0c98-c052-4195-92c2-119652d91c32","savedPayload":{"position":{"x":29338.31751661565,"y":31241.600647628944},"targetPosition":{"x":29111.892718961364,"y":31425.413997491076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2198ec50-3d31-43b7-a57d-e386bef38a93","savedPayload":{"position":{"x":29111.892718961364,"y":31425.413997491076},"targetPosition":{"x":28884.86637869949,"y":31609.204020240253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"h"},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"06c8bcea-4122-4a35-8db3-a1ddc7657e4b","savedPayload":{"position":{"x":29157.7130474397,"y":31713.580683385073},"targetPosition":{"x":28884.86637869949,"y":31609.204020240253},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"731abb89-b672-41b1-b403-2932226d3df7","savedPayload":{"position":{"x":28884.86637869949,"y":31609.204020240253},"targetPosition":{"x":28597.236018489682,"y":31654.818135175123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"4f784203-664a-4791-9e3a-7565f0a11e79","savedPayload":{"position":{"x":28597.236018489682,"y":31654.818135175123},"targetPosition":{"x":28223.59351783207,"y":31714.150551638733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"e04e8948-849d-4161-af18-4644990d0b49","savedPayload":{"position":{"x":28224.00121827715,"y":31714.071305608257},"targetPosition":{"x":27647.265651821617,"y":31805.707696108428},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Backtesting WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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.01\n}","id":"48e2c5e0-8f9e-40f0-8ab6-2ecc57aa3039","savedPayload":{"position":{"x":29098.521240698683,"y":31935.837896810688},"targetPosition":{"x":29313.788737704406,"y":32133.090191232022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{}","id":"e8703a6e-e6c0-485f-a27d-a9e60a57a0a6","savedPayload":{"position":{"x":29333.60045158225,"y":31841.528891470996},"targetPosition":{"x":29313.788737704406,"y":32133.090191232022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"initialDatetime\": \"2020-01-01\",\n\"finalDatetime\": \"2020-12-31\"\n}","id":"08815e4e-c066-4914-85b7-a4f7ce4748a5","savedPayload":{"position":{"x":29554.12040583563,"y":31966.726866778834},"targetPosition":{"x":29313.788737704406,"y":32133.090191232022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-hs\"\n}","id":"805c356b-4a05-424e-ba29-260e35c11943","savedPayload":{"position":{"x":29593.792554270374,"y":32217.03197190166},"targetPosition":{"x":29313.788737704406,"y":32133.090191232022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"bcccd1fd-188c-43e4-abfc-4bc89d6adecc","savedPayload":{"position":{"x":29422.750242737053,"y":32404.255370212486},"targetPosition":{"x":29313.788737704406,"y":32133.090191232022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"ae594b88-e40b-408b-8082-3ba92ffc2c8c","savedPayload":{"position":{"x":29170.090126600204,"y":32387.269880544263},"targetPosition":{"x":29313.788737704406,"y":32133.090191232022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c220646b-827b-43c8-ab7e-5ecd53b4070a","savedPayload":{"position":{"x":29313.788737704406,"y":32133.090191232022},"targetPosition":{"x":29025.31293273882,"y":32178.657096794905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f32f1cdc-425f-4193-a43b-be9312c74234","savedPayload":{"position":{"x":29025.31293273882,"y":32178.657096794905},"targetPosition":{"x":28737.221554705564,"y":32224.198135620758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"02fe6309-40c0-4e31-9aed-fbf8f434bfa9","savedPayload":{"position":{"x":28920.753410397992,"y":32451.342700608282},"targetPosition":{"x":28737.221554705564,"y":32224.198135620758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"dd22d90b-5a91-4723-9f65-17eb94fb4d9d","savedPayload":{"position":{"x":28737.221554705564,"y":32224.198135620758},"targetPosition":{"x":28464.92149864101,"y":32119.615983291988},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"0942010b-12f0-4be9-979d-c3e1bbc4eb74","savedPayload":{"position":{"x":28464.92149864101,"y":32119.615983291988},"targetPosition":{"x":28192.294080840293,"y":32015.004524724474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a8ff6583-b710-44b1-8768-d8a70bdf22c9","savedPayload":{"position":{"x":28192.294080840293,"y":32015.004524724474},"targetPosition":{"x":27647.265651821617,"y":31805.707696108428},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"caed4703-e134-4a48-9062-fe5277b7d95f","savedPayload":{"position":{"x":27647.68008682938,"y":31806.089399124143},"targetPosition":{"x":27066.93653612294,"y":31745.128408313474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task Manager","name":"Paper & Backtesting Sessions BBBT","tasks":[{"type":"Task","name":"Paper Trading BBTB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Paper Trading Session","name":"Paper BBTB","code":"{\n\"folderName\": \"Paper-BBTB\"\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"413c658b-ecb1-412a-ad17-dd21a6cf9edf","savedPayload":{"position":{"x":28547.296798710377,"y":33177.96229954759},"targetPosition":{"x":28634.427840137847,"y":33455.84621878164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"937d18df-32f8-4619-93a0-df66d785f502","savedPayload":{"position":{"x":28798.054551794612,"y":33214.03895615387},"targetPosition":{"x":28634.427840137847,"y":33455.84621878164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"8d7017e0-2478-4f6f-9a06-97e02f485e0d","savedPayload":{"position":{"x":28926.486196501322,"y":33432.7626298793},"targetPosition":{"x":28634.427840137847,"y":33455.84621878164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"fbd66c8d-fb89-41ef-a7d8-ddc1892ea0b7","savedPayload":{"position":{"x":28835.59826260729,"y":33669.30171995318},"targetPosition":{"x":28634.427840137847,"y":33455.84621878164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"71601678-f7fe-4093-81a7-2e7c4f15b36c","savedPayload":{"position":{"x":28594.239704828236,"y":33745.92582152021},"targetPosition":{"x":28634.427840137847,"y":33455.84621878164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"77080ae1-9bce-474f-b5b6-31c227d35298","savedPayload":{"position":{"x":28383.66380482646,"y":33604.43183203189},"targetPosition":{"x":28634.427840137847,"y":33455.84621878164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6681be32-37aa-4703-8cbe-3766844aba04","savedPayload":{"position":{"x":28634.427840137847,"y":33455.84621878164},"targetPosition":{"x":28361.98242638787,"y":33351.540739306445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a70b66f2-4d79-4ab0-8a84-cb47fd872b79","savedPayload":{"position":{"x":28361.98242638787,"y":33351.540739306445},"targetPosition":{"x":28089.249807050834,"y":33246.86525910501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"h"},"referenceParent":{"type":"Trading System","name":"BB Top Bounce","id":"3313017d-fdce-481b-9679-fe8e4f67cd45"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"53fd90cb-3efc-47b2-90f5-0f8010fc6ef9","savedPayload":{"position":{"x":28135.05824489568,"y":33535.273720009944},"targetPosition":{"x":28089.249807050834,"y":33246.86525910501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"b3dec672-be14-4dca-8be4-5b495373b662","savedPayload":{"position":{"x":28089.249807050834,"y":33246.86525910501},"targetPosition":{"x":27905.73457118441,"y":33020.46078156538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"4315bf06-ef80-490e-af6f-d00b72bfa20d","savedPayload":{"position":{"x":27905.73457118441,"y":33020.46078156538},"targetPosition":{"x":27671.388877466165,"y":32731.347316341966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"b55596f0-998c-4efa-ae49-4645b999dc38","savedPayload":{"position":{"x":27671.879214452627,"y":32731.820272532263},"targetPosition":{"x":27304.185851097416,"y":32278.232903734217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Backtesting BBTB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Backtesting Session","name":"Back BBTB","code":"{\n\"folderName\": \"Back-BBTB\"\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"Bitcoin","code":"{\n\"initialBalance\": 1,\n\"minimumBalance\": 0.01\n}","id":"11c310f7-a52f-467f-afbc-57c04639a979","savedPayload":{"position":{"x":27916.481652102262,"y":33599.759613970455},"targetPosition":{"x":27853.396917158356,"y":33884.860845262934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{}","id":"208693a0-838b-4992-9344-4b798acce6c2","savedPayload":{"position":{"x":28115.803205617383,"y":33756.36682725557},"targetPosition":{"x":27853.396917158356,"y":33884.860845262934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"initialDatetime\": \"2020-01-01\",\n\"finalDatetime\": \"2020-12-31\"\n}","id":"48fa15e9-aff6-4521-b5e3-a45e1a01d9b1","savedPayload":{"position":{"x":28117.64356204215,"y":34009.74185363862},"targetPosition":{"x":27853.396917158356,"y":33884.860845262934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-hs\"\n}","id":"d3a5cba8-3272-43c9-89d7-a40de0f49045","savedPayload":{"position":{"x":27920.53622822488,"y":34169.34774106237},"targetPosition":{"x":27853.396917158356,"y":33884.860845262934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"b764240b-aec9-4ddc-bac7-99bb34bc2163","savedPayload":{"position":{"x":27673.06943323524,"y":34114.826515846355},"targetPosition":{"x":27853.396917158356,"y":33884.860845262934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"e233bb2d-080c-4f2e-9188-edba85ae74d9","savedPayload":{"position":{"x":27561.340560759694,"y":33887.34654210748},"targetPosition":{"x":27853.396917158356,"y":33884.860845262934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e3473182-57b9-41f8-8d5a-1bb13c8b5441","savedPayload":{"position":{"x":27853.396917158356,"y":33884.860845262934},"targetPosition":{"x":27669.659067037686,"y":33657.986030898595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5d72321e-97e7-404f-8272-809dbbf4db35","savedPayload":{"position":{"x":27669.659067037686,"y":33657.986030898595},"targetPosition":{"x":27486.17259995275,"y":33431.36437316124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"BB Top Bounce","id":"3313017d-fdce-481b-9679-fe8e4f67cd45"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"eb149e85-7202-4f3f-832f-0b25c4d97b0b","savedPayload":{"position":{"x":27381.235995861578,"y":33703.88093424843},"targetPosition":{"x":27486.17259995275,"y":33431.36437316124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"919e2ba3-4089-4729-add5-0be715c27ceb","savedPayload":{"position":{"x":27486.17259995275,"y":33431.36437316124},"targetPosition":{"x":27440.76951082649,"y":33143.27963697891},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"a1d698ca-cc6f-4ba2-8a19-c72a1fda3547","savedPayload":{"position":{"x":27440.76951082649,"y":33143.27963697891},"targetPosition":{"x":27395.257815099696,"y":32854.88507673065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"648b9d39-4e74-4c95-8ad6-8fd048e86a51","savedPayload":{"position":{"x":27395.257815099696,"y":32854.88507673065},"targetPosition":{"x":27304.185851097416,"y":32278.232903734217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"e5b805c8-a056-4356-894f-2dbc5af0e663","savedPayload":{"position":{"x":27304.393574237776,"y":32278.584805397666},"targetPosition":{"x":27066.93653612294,"y":31745.128408313474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"f69b2c23-ccc5-47fb-9945-9b7badcea636","savedPayload":{"position":{"x":27066.93653612294,"y":31745.128408313474},"targetPosition":{"x":26594.684467703388,"y":31402.038080606744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"2ae685a1-25c6-4bd5-b559-d83e373e8d45","savedPayload":{"position":{"x":26594.684467703388,"y":31402.038080606744},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"productionEnvironment":{"type":"Production Environment","name":"New Production Environment","exchangeTasks":[{"type":"Exchange Tasks","name":"Binance","taskManagers":[{"type":"Task Manager","name":"Fwd & Live Sessions WHB","tasks":[{"type":"Task","name":"Fwd Testing WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"079cdfaf-2d41-4fa3-a68d-9e2620de0cdd","savedPayload":{"position":{"x":26911.904805688697,"y":33877.83855353868},"targetPosition":{"x":26939.935482060053,"y":34168.99628679548},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"5f5ec9f1-c4e2-4ca7-94c4-bad619511e5c","savedPayload":{"position":{"x":27149.637533721845,"y":33965.224707654976},"targetPosition":{"x":26939.935482060053,"y":34168.99628679548},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"d5fda5e7-7571-41e7-b19a-a721d73fd8f5","savedPayload":{"position":{"x":27229.75293966923,"y":34205.63875066876},"targetPosition":{"x":26939.935482060053,"y":34168.99628679548},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"f6ed8468-7fd1-4aac-848b-647973e41b04","savedPayload":{"position":{"x":27091.64777386982,"y":34418.36410683359},"targetPosition":{"x":26939.935482060053,"y":34168.99628679548},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"da2d51df-7c40-4bf0-80ec-63a38992fcfe","savedPayload":{"position":{"x":26839.557822966337,"y":34443.054925326855},"targetPosition":{"x":26939.935482060053,"y":34168.99628679548},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"4e1b48a9-df71-402e-9159-66c49cdc08b3","savedPayload":{"position":{"x":26663.129332876793,"y":34261.13999235772},"targetPosition":{"x":26939.935482060053,"y":34168.99628679548},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b9e7a071-26dd-4796-8704-2314f6c2c603","savedPayload":{"position":{"x":26939.935482060053,"y":34168.99628679548},"targetPosition":{"x":26694.69931299244,"y":34009.65498125702},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0e7edb98-38ff-4516-89a1-188030989ddc","savedPayload":{"position":{"x":26694.69931299244,"y":34009.65498125702},"targetPosition":{"x":26450.063508544084,"y":33851.28856320041},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","keyInstance":{"type":"Key Instance","name":"WHB","id":"8d9b39d4-b764-486d-a2f6-e84391bbd818","savedPayload":{"position":{"x":26420.314627516196,"y":34434.593343237946},"targetPosition":{"x":26434.78623833593,"y":34142.32253952669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"WHB","id":"88eab4e5-3be4-4982-93fa-e95bcb1ab559"}}},"id":"f122bd16-0c85-43d1-932a-57a710db8013","savedPayload":{"position":{"x":26434.78623833593,"y":34142.32253952669},"targetPosition":{"x":26450.063508544084,"y":33851.28856320041},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"a034c52a-8924-4e60-9653-f6da1ea6f8b5","savedPayload":{"position":{"x":26450.063508544084,"y":33851.28856320041},"targetPosition":{"x":26317.467045407157,"y":33591.29206771532},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"74f70f20-305b-4e90-aad6-1bcd2ff8ee1c","savedPayload":{"position":{"x":26317.467045407157,"y":33591.29206771532},"targetPosition":{"x":26148.41132254964,"y":33259.9228469287},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"749d6eaf-1548-47ca-901d-1cfc1a21b0a5","savedPayload":{"position":{"x":26148.582891049457,"y":33260.12541562256},"targetPosition":{"x":25883.19291210899,"y":32739.964712038032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Live Trading WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"166cdb09-90e0-49a1-9c38-b57364287620","savedPayload":{"position":{"x":26208.050966274,"y":34160.35107907078},"targetPosition":{"x":26087.003052429103,"y":34426.05688773178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"5bf43efd-3dd2-44f2-b25e-f6c7a5fda17e","savedPayload":{"position":{"x":26370.44612361169,"y":34354.97447991964},"targetPosition":{"x":26087.003052429103,"y":34426.05688773178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"88d7104b-7925-408a-b490-bbbaaafd7a5f","savedPayload":{"position":{"x":26319.520337146398,"y":34603.19178088377},"targetPosition":{"x":26087.003052429103,"y":34426.05688773178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"1c158006-c3c1-4157-8ad6-f08ee2b769d6","savedPayload":{"position":{"x":26093.53679007253,"y":34718.334497108015},"targetPosition":{"x":26087.003052429103,"y":34426.05688773178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"01064db9-f153-4d30-a26c-d9d339e7a856","savedPayload":{"position":{"x":25862.827742163376,"y":34613.525587935794},"targetPosition":{"x":26087.003052429103,"y":34426.05688773178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"06f7cc4e-6112-4ac8-9f20-610b357a58d2","savedPayload":{"position":{"x":25800.863411804872,"y":34367.99372771353},"targetPosition":{"x":26087.003052429103,"y":34426.05688773178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b86ce81f-5084-48d1-8a45-8f45fbe97891","savedPayload":{"position":{"x":26087.003052429103,"y":34426.05688773178},"targetPosition":{"x":25954.493008998666,"y":34165.81355967171},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5335fd67-ebdc-4cfd-936d-b76af957713e","savedPayload":{"position":{"x":25954.493008998666,"y":34165.81355967171},"targetPosition":{"x":25822.10614182093,"y":33905.93151002576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","keyInstance":{"type":"Key Instance","name":"WHB","id":"a0061ba6-2359-4c5c-822d-1e17aaf7c2fd","savedPayload":{"position":{"x":25503.68561078083,"y":34395.51789659483},"targetPosition":{"x":25662.836299118742,"y":34150.682880165485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"WHB","id":"88eab4e5-3be4-4982-93fa-e95bcb1ab559"}}},"id":"954b1896-121c-41e2-9608-5b46a70082fb","savedPayload":{"position":{"x":25662.836299118742,"y":34150.682880165485},"targetPosition":{"x":25822.10614182093,"y":33905.93151002576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"8cb4d9af-0f53-4b33-9174-330da87b166c","savedPayload":{"position":{"x":25822.10614182093,"y":33905.93151002576},"targetPosition":{"x":25837.378672600596,"y":33614.63794897366},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"8b30643a-eb54-4d6f-958d-8393f9a1e5f4","savedPayload":{"position":{"x":25837.378672600596,"y":33614.63794897366},"targetPosition":{"x":25852.58903231585,"y":33323.01040905266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"52ec5181-d057-42e3-a6e8-407d20d4e641","savedPayload":{"position":{"x":25852.58903231585,"y":33323.01040905266},"targetPosition":{"x":25883.19291210899,"y":32739.964712038032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1bbb36fe-edbf-49d8-9827-85a1345c0289","savedPayload":{"position":{"x":25882.950110399604,"y":32740.499766863533},"targetPosition":{"x":25761.61231198653,"y":32169.326697958408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"l"}}},{"type":"Task Manager","name":"Fwd & Live Sessions BBTB","tasks":[{"type":"Task","name":"Fwd Testing BBTB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Forward Testing Session","name":"Fwd BBTB","code":"{\n\"folderName\": \"Fwd-BBTB\",\n\"balancePercentage\": 10\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"3a75a6ee-f188-4bd1-81ff-8018094d1eb0","savedPayload":{"position":{"x":24857.094321966553,"y":34017.30375601778},"targetPosition":{"x":24619.145851955524,"y":34187.288899821026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"b0d3da2f-f67f-473e-9f61-1296a9bfd952","savedPayload":{"position":{"x":24900.379262240484,"y":34266.88105509463},"targetPosition":{"x":24619.145851955524,"y":34187.288899821026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"6b4f8416-a9ec-47f5-ac7b-3c5005733328","savedPayload":{"position":{"x":24732.106855452465,"y":34456.57555177858},"targetPosition":{"x":24619.145851955524,"y":34187.288899821026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"ab1e8a12-e834-4062-b411-dbf174dcee6d","savedPayload":{"position":{"x":24479.061255754154,"y":34443.320476277215},"targetPosition":{"x":24619.145851955524,"y":34187.288899821026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"97669707-03fd-488c-bb1d-1ee4cafcf93a","savedPayload":{"position":{"x":24331.540268704146,"y":34237.15844285456},"targetPosition":{"x":24619.145851955524,"y":34187.288899821026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"e92c18cc-6c10-4231-bd61-ec3561875ff6","savedPayload":{"position":{"x":24400.852816728264,"y":33993.59591676479},"targetPosition":{"x":24619.145851955524,"y":34187.288899821026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"231917f8-cc46-4f5b-834c-0b0ff89dd932","savedPayload":{"position":{"x":24619.145851955524,"y":34187.288899821026},"targetPosition":{"x":24634.678502791634,"y":33895.04800320409},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7b91c25c-ac96-4c3c-9e79-17c262f17180","savedPayload":{"position":{"x":24634.678502791634,"y":33895.04800320409},"targetPosition":{"x":24649.52986998621,"y":33604.070042960644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Trading System","name":"BB Top Bounce","id":"3313017d-fdce-481b-9679-fe8e4f67cd45"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","keyInstance":{"type":"Key Instance","name":"BBTB","id":"98b73dbc-52e7-4292-9051-d0cb41db5f72","savedPayload":{"position":{"x":24129.27847262082,"y":33869.54908085728},"targetPosition":{"x":24389.757289928526,"y":33736.110358887185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"BBTB","id":"bfea6ed0-673c-4245-9b5e-7837785a63c9"}}},"id":"ea2bb934-5c1f-4006-87af-865cf23f968c","savedPayload":{"position":{"x":24389.757289928526,"y":33736.110358887185},"targetPosition":{"x":24649.52986998621,"y":33604.070042960644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"c639e264-5ac1-41d3-8b56-c4c4cd46af16","savedPayload":{"position":{"x":24649.52986998621,"y":33604.070042960644},"targetPosition":{"x":24808.52711960168,"y":33359.15206815564},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"e6d0e073-c898-41ec-9f84-611faf9732fa","savedPayload":{"position":{"x":24808.52711960168,"y":33359.15206815564},"targetPosition":{"x":25009.92952810802,"y":33048.84834292683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"29dd451d-55ac-4d0c-9b16-7e0da9bcd453","savedPayload":{"position":{"x":25010.208411201253,"y":33049.58289830841},"targetPosition":{"x":25327.94689250348,"y":32559.706659848987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Live Trading BBTB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Live Trading Session","name":"Live Trading BBTB","code":"{\n\"folderName\": \"Live-WHB\"\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"d5a1b4b6-2bfc-4772-9c60-0c55f2abb0b1","savedPayload":{"position":{"x":24260.538987280175,"y":33550.71216075862},"targetPosition":{"x":23969.86888522787,"y":33578.648957530306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"7354aa3e-f4a4-47b2-a709-50cc86d27d9d","savedPayload":{"position":{"x":24173.18724052507,"y":33788.4722661596},"targetPosition":{"x":23969.86888522787,"y":33578.648957530306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"de6e1749-8ecd-4cae-8a14-c2e51040ee7c","savedPayload":{"position":{"x":23932.791102038387,"y":33868.58195880339},"targetPosition":{"x":23969.86888522787,"y":33578.648957530306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"a9e15ef3-5525-4394-b2df-27ca00c3d946","savedPayload":{"position":{"x":23720.08635822111,"y":33730.444354486164},"targetPosition":{"x":23969.86888522787,"y":33578.648957530306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"d4e3d01f-dd4f-4e1d-a19f-309b3e06b627","savedPayload":{"position":{"x":23695.402964957855,"y":33478.2594087949},"targetPosition":{"x":23969.86888522787,"y":33578.648957530306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"9f20c206-6968-406a-b3ea-fe7279839093","savedPayload":{"position":{"x":23877.23148842474,"y":33301.720315558065},"targetPosition":{"x":23969.86888522787,"y":33578.648957530306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c1085d75-2c80-4b85-937c-fd9d0bda0569","savedPayload":{"position":{"x":23969.86888522787,"y":33578.648957530306},"targetPosition":{"x":24128.83067051651,"y":33333.74258625553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ef82a64d-7c70-48d5-868a-09acf97e5289","savedPayload":{"position":{"x":24128.83067051651,"y":33333.74258625553},"targetPosition":{"x":24287.611744709568,"y":33089.16432250978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"BB Top Bounce","id":"3313017d-fdce-481b-9679-fe8e4f67cd45"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","keyInstance":{"type":"Key Instance","name":"BBTB","id":"93b6328f-bf96-4ee9-95de-ef6dcc2f0d16","savedPayload":{"position":{"x":23704.39354899768,"y":33058.19754916051},"targetPosition":{"x":23996.014700634343,"y":33073.6088902628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"BBTB","id":"bfea6ed0-673c-4245-9b5e-7837785a63c9"}}},"id":"e5be2d9b-1d10-4752-8dda-3bd86a1d2e87","savedPayload":{"position":{"x":23996.014700634343,"y":33073.6088902628},"targetPosition":{"x":24287.611744709568,"y":33089.16432250978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"51e40ee6-299f-4916-b55b-2d5bb47f9c9d","savedPayload":{"position":{"x":24287.611744709568,"y":33089.16432250978},"targetPosition":{"x":24547.509731220285,"y":32956.940681014414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"d5320e1e-a4eb-4900-a6fc-8de4467e4363","savedPayload":{"position":{"x":24547.509731220285,"y":32956.940681014414},"targetPosition":{"x":24807.68666804564,"y":32824.52558922391},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e3796688-b650-45cd-a0c0-24fe3a2e0d74","savedPayload":{"position":{"x":24807.68666804564,"y":32824.52558922391},"targetPosition":{"x":25327.94689250348,"y":32559.706659848987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0357b28b-fc1c-47aa-9b37-1106936ea9b2","savedPayload":{"position":{"x":25327.665600422843,"y":32560.01470501415},"targetPosition":{"x":25761.61231198653,"y":32169.326697958408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"l"}}}],"id":"fa859e89-960f-4fe1-8e68-1e41b0ea80ec","savedPayload":{"position":{"x":25761.61231198653,"y":32169.326697958408},"targetPosition":{"x":25941.970816779165,"y":31614.148425508283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}}],"id":"32656457-f603-416a-b805-546642094dc4","savedPayload":{"position":{"x":25941.970816779165,"y":31614.148425508283},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"u"}}},"id":"ce601334-52c5-4ffb-ab61-49ca1943a15a","savedPayload":{"position":{"x":26122.378344035824,"y":31058.919069244217},"targetPosition":{"x":24954.356993272086,"y":31057.918778615294},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"r"}}}],"id":"efbbc81b-93c8-4ce0-873e-675f39d333e8","savedPayload":{"position":{"x":24954.356993272086,"y":31057.918778615294},"targetPosition":{"x":24954.356993272086,"y":31057.918778615294},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"n"}}},{"type":"Crypto Ecosystem","name":"My Crypto Ecosystem","cryptoExchanges":[{"type":"Crypto Exchanges","name":"Tested","exchanges":[{"type":"Crypto Exchange","name":"Binance","code":"{\n \"codeName\": \"binance\",\n \"API\": [\n {\n \"method\": \"fetchTrades\",\n \"fetchType\": \"by Id\",\n \"fetchTradesMethod\": \"publicGetHistoricalTrades\",\n \"firstId\": \"f\"\n }\n ]\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"EUR\"} \n}","assets":[{"type":"Asset","name":"Bitcoin","code":"{ \n\"codeName\": \"BTC\"\n}","id":"b2814a75-fd57-45c4-a3cb-af276793e573","savedPayload":{"position":{"x":14195.09373519908,"y":30498.57953967648},"targetPosition":{"x":14305.025652484152,"y":30812.79046466984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Tether","code":"{ \n\"codeName\": \"USDT\"\n}","id":"04c5f172-6976-4557-b95f-38004b5201a6","savedPayload":{"position":{"x":14342.003487956641,"y":30482.411278035917},"targetPosition":{"x":14305.025652484152,"y":30812.79046466984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Ether","code":"{ \n\"codeName\": \"ETH\"\n}","id":"4175d47c-e12c-4902-b026-f4999a6d07a4","savedPayload":{"position":{"x":14481.605152989256,"y":30531.154856472},"targetPosition":{"x":14305.025652484152,"y":30812.79046466984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Monero","code":"{ \n\"codeName\": \"XMR\"\n}","id":"e3b61070-77b9-4dcf-9862-7f05ffa237f3","savedPayload":{"position":{"x":14586.128143352431,"y":30635.66020347477},"targetPosition":{"x":14305.025652484152,"y":30812.79046466984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Stellar","code":"{ \n\"codeName\": \"XLM\"\n}","id":"6dee1e7e-80f3-4597-a28a-881af206ec14","savedPayload":{"position":{"x":14635.380023465843,"y":30775.418809131024},"targetPosition":{"x":14305.025652484152,"y":30812.79046466984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Ethereum Classic","code":"{ \n\"codeName\": \"ETC\"\n}","id":"59378d33-4833-495a-89bb-f739710be7d9","savedPayload":{"position":{"x":14618.714156215316,"y":30922.740363095792},"targetPosition":{"x":14305.025652484152,"y":30812.79046466984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"f4451bbc-50ea-4558-9b3c-abd3e757a76e","savedPayload":{"position":{"x":14305.17360826227,"y":30812.68986934228},"targetPosition":{"x":14079.894884165275,"y":31038.166461562458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"E"}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"BTC/USDT","code":"{ \n\"codeName\": \"BTC/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"Bitcoin","id":"07b514a4-3ea2-4ab7-aeb0-07b48acb6f8d","savedPayload":{"position":{"x":15236.371832479537,"y":30780.053229243735},"targetPosition":{"x":15049.153562663865,"y":31038.131226693393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"b2814a75-fd57-45c4-a3cb-af276793e573"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"61e7d2b5-1672-4e11-8380-345a4fe4a991","savedPayload":{"position":{"x":15352.419771068837,"y":30939.69858316036},"targetPosition":{"x":15049.153562663865,"y":31038.131226693393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"04c5f172-6976-4557-b95f-38004b5201a6"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"a174a91f-0818-4fdc-88cd-20dbdf45c548","savedPayload":{"position":{"x":15352.36057193139,"y":31136.524172911017},"targetPosition":{"x":15049.153562663865,"y":31038.131226693393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"11beab3d-d894-4d20-9940-f864ba957f91","savedPayload":{"position":{"x":15236.806192935961,"y":31295.59566491682},"targetPosition":{"x":15049.153562663865,"y":31038.131226693393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"5489751f-5ce4-40d0-9854-5bcfdc810269","savedPayload":{"position":{"x":15049.153562663865,"y":31038.131226693393},"targetPosition":{"x":14716.990761953079,"y":31038.17830230591},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0e1257c5-49b1-4b52-8942-9bdef72854d2","savedPayload":{"position":{"x":14716.843959091762,"y":31038.024738221364},"targetPosition":{"x":14079.894884165275,"y":31038.166461562458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b","savedPayload":{"position":{"x":15045.552221144293,"y":31329.003976386983},"targetPosition":{"x":14837.69016883917,"y":31570.65978539939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"b2814a75-fd57-45c4-a3cb-af276793e573"}}},{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da","savedPayload":{"position":{"x":15129.925421763637,"y":31443.234588877498},"targetPosition":{"x":14837.69016883917,"y":31570.65978539939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"04c5f172-6976-4557-b95f-38004b5201a6"}}},{"type":"Exchange Account Asset","name":"Ether","id":"b3d0800f-f430-4549-86e9-68001c43fa1f","savedPayload":{"position":{"x":15156.324673396291,"y":31582.493916797535},"targetPosition":{"x":14837.69016883917,"y":31570.65978539939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ether","id":"4175d47c-e12c-4902-b026-f4999a6d07a4"}}},{"type":"Exchange Account Asset","name":"Monero","id":"ee25ff6a-8b3d-4f30-8acf-71ca4b186195","savedPayload":{"position":{"x":15119.60270103622,"y":31719.58562930427},"targetPosition":{"x":14837.69016883917,"y":31570.65978539939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Monero","id":"e3b61070-77b9-4dcf-9862-7f05ffa237f3"}}},{"type":"Exchange Account Asset","name":"Stellar","id":"5716ea79-1392-4f6d-a46e-dba38ab9b39e","savedPayload":{"position":{"x":15027.042577031634,"y":31827.16324834079},"targetPosition":{"x":14837.69016883917,"y":31570.65978539939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Stellar","id":"6dee1e7e-80f3-4597-a28a-881af206ec14"}}},{"type":"Exchange Account Asset","name":"Ethereum Classic","id":"d9d0d41c-67a9-42ea-8c64-067647ee53a4","savedPayload":{"position":{"x":14896.892806780692,"y":31883.891480137856},"targetPosition":{"x":14837.69016883917,"y":31570.65978539939},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ethereum Classic","id":"59378d33-4833-495a-89bb-f739710be7d9"}}}],"id":"f7bbfcc0-2359-4de1-8ddc-5e117bde0c52","savedPayload":{"position":{"x":14837.69016883917,"y":31570.65978539939},"targetPosition":{"x":14529.97816888475,"y":31488.389186969194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"WHB","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"88eab4e5-3be4-4982-93fa-e95bcb1ab559","savedPayload":{"position":{"x":14771.379005546727,"y":32072.350747523094},"targetPosition":{"x":14612.113800977872,"y":31796.265546651335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Exchange Account Key","name":"BBTB","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"bfea6ed0-673c-4245-9b5e-7837785a63c9","savedPayload":{"position":{"x":14612.064462876144,"y":32115.0038323965},"targetPosition":{"x":14612.113800977872,"y":31796.265546651335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"cf3895fd-4f0c-4bd8-8afb-886a718cc891","savedPayload":{"position":{"x":14612.113800977872,"y":31796.265546651335},"targetPosition":{"x":14529.97816888475,"y":31488.389186969194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a718949a-e315-4bda-8523-b0b03e3ca507","savedPayload":{"position":{"x":14529.97816888475,"y":31488.389186969194},"targetPosition":{"x":14305.012345932206,"y":31263.313648257546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a913b30b-17d3-4b2b-9c39-9c7dc67f0000","savedPayload":{"position":{"x":14305.012345932206,"y":31263.313648257546},"targetPosition":{"x":14079.894884165275,"y":31038.166461562458},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"22d2b36e-7a77-40a6-8948-b7d0fb744923","savedPayload":{"position":{"x":14079.894884165275,"y":31038.166461562458},"targetPosition":{"x":13442.879291220586,"y":31038.17362849701},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"c16f8dd4-05f5-45db-8a47-713eb1116f72","savedPayload":{"position":{"x":13442.879291220586,"y":31038.17362849701},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"signalsProviders":[],"superActions":{"type":"Super Actions","name":"New Super Actions","superActions":[{"type":"Super Action","name":"Install Market","id":"2cd8e9dd-02a8-40b5-8979-108491309697","savedPayload":{"position":{"x":13596.796537982185,"y":29900.600915146206},"targetPosition":{"x":13238.769838624787,"y":30494.890822183912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"d103d8f7-8b21-436a-a0cf-8244b3dcb756","savedPayload":{"position":{"x":13738.553946135695,"y":30013.646249280533},"targetPosition":{"x":13238.769838624787,"y":30494.890822183912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"c934df8f-d942-4723-ad44-f187e5df4351","savedPayload":{"position":{"x":12166.581869182457,"y":31038.25465749285},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9f4e7bfb-ea29-47cd-92bd-11f31d177ff8","savedPayload":{"position":{"x":12805.301618063546,"y":31038.2348844148},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"e"}}},{"type":"Charting Space","name":"New Charting Space","viewport":{"type":"Viewport","name":"New Viewport","code":"{\"zoom\":\"0.00\"}","id":"c3db9bcf-39ee-47d1-ab4f-14bd5de815da","savedPayload":{"position":{"x":13421.60994808922,"y":24983.353401471086},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"frame":{"position":{"x":-105.87179487179515,"y":64.6875}}}},"dashboards":[{"type":"Dashboard","name":"Super Action Generated","timeMachines":[{"type":"Time Machine","name":"WHB Binance BTC/USDT","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2020-05-18T06:17:05.470Z\",\n \"toDate\": \"2020-05-27T22:57:28.511Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"9368d644-21cd-4be9-bb36-df83b66c67d1","savedPayload":{"position":{"x":11611.720379074248,"y":26036.808408556513},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 8468.468050704952,\n \"maxValue\": 10604.90816010915,\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"7242faad-e2a0-4dd2-8016-bd4448a3b61c","savedPayload":{"position":{"x":11472.84821627644,"y":26143.60061063287},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"cddfbb92-c310-477a-9c66-b2a38ff8309f","savedPayload":{"position":{"x":11311.376506720255,"y":26210.551198106474},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timelineCharts":[{"type":"Timeline Chart","name":"Indicators","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":"Candles","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"09e91fb3-cdff-4c0c-b320-417aeb4f2538","savedPayload":{"position":{"x":45798.08358329995,"y":30783.47112133315},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"dd7c8795-bb24-4438-9d77-b37a9000ad7f"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"2b8f6dec-a712-4716-88d8-a33c01398956","savedPayload":{"position":{"x":45898.37673360377,"y":30788.25119234455},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"6929ebe7-6486-4299-add5-ed0282500d91"}}},{"type":"Layer","name":"Resistances","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"57d807c2-eeac-46a5-bd07-6f630a578562","savedPayload":{"position":{"x":45996.05938571397,"y":30809.588522972816},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Resistances","id":"0669d924-aace-46d1-b126-ccced8fd33cf"}}},{"type":"Layer","name":"Supports","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9a035c82-60cb-4ab4-b4f8-e40b0dde7c2c","savedPayload":{"position":{"x":46088.671022938994,"y":30846.72421469604},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Supports","id":"5e7a0e50-e6ed-4106-8025-8b35ad6c597c"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"25363a67-bcaf-4392-9ed8-2b6c99fb31c8","savedPayload":{"position":{"x":46173.797322491286,"y":30898.58369972401},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"1d7dd537-5f6f-4eb2-8e56-ddba0aef720f"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"63dbae3f-cebc-4587-9b9c-60ffe83e4143","savedPayload":{"position":{"x":46249.17664768098,"y":30963.730987652525},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"221c8d22-8a7f-4014-a7ed-0bafc886b123"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"2203bc66-a385-438b-8050-0b812b655d0a","savedPayload":{"position":{"x":46312.78393052083,"y":31040.384533238812},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"d83476c3-2f0b-4d4a-abb2-0e47ed0a421d"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ea4ce55e-855e-4a61-ad12-222a0077e51e","savedPayload":{"position":{"x":46362.900460538505,"y":31126.454059169817},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"5ffc6a67-e33b-422b-8e36-f9711f93c723"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"e9272caf-38f8-44de-a698-13f8b19b50c3","savedPayload":{"position":{"x":46398.167326095994,"y":31219.59432824167},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"0428f20b-9620-480e-a531-dbb2e5f59ef4"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"a9fcfaea-cd50-464e-aa65-1f2a3e98633d","savedPayload":{"position":{"x":46417.62588351845,"y":31317.267577006704},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"48f7953c-f62d-4292-b042-d1ac05f8f80f"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\"\n}","id":"8c1e005a-c340-4850-9de2-900a4cfc44bb","savedPayload":{"position":{"x":46420.70567572493,"y":31416.809466474464},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"3b9a3c93-6d41-440e-89a2-2fd1b2dde603"}}},{"type":"Layer","name":"Base5 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"6223f2d7-bdb4-474a-9e60-b54dc00680ea","savedPayload":{"position":{"x":46407.31337137963,"y":31515.483822428057},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"2404b1eb-c7c9-46e7-b22a-93cfcc3739f4"}}},{"type":"Layer","name":"Base6 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"a71c4fa6-d034-499c-9b30-7a46378cadc0","savedPayload":{"position":{"x":46377.87367543775,"y":31610.607629023725},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"1510fd36-633e-40a7-adbe-680660d64bd0"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"53c4ff8b-f3c5-4329-8fe4-6209c0ffb9f1","savedPayload":{"position":{"x":46333.185880681754,"y":31699.591341637817},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"70401ea0-3fed-4e40-8bba-a1e5adce9b8c"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"09cbb1f5-edad-4f9f-ab1c-7f9b0a0d8f7c","savedPayload":{"position":{"x":46274.467312818415,"y":31780.011584392756},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"06ac8eb7-8b14-42b1-9e2e-466280ade032"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"88466a0a-b385-417f-9efa-8c0139e05a5e","savedPayload":{"position":{"x":46203.31676678368,"y":31849.67669835976},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"014bba70-64d4-4035-b06d-145ee9b4c54c"}}},{"type":"Layer","name":"Base7 EMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6564d574-c6fd-4ee0-96ab-0e7c62e1cd7c","savedPayload":{"position":{"x":46121.67361107911,"y":31906.68977984249},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"768cc06c-6fdf-491a-a741-5e08f0e25e38"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"941fef87-83dd-457f-818c-71745fa1692a","savedPayload":{"position":{"x":46028.33674024209,"y":31950.48529383432},"targetPosition":{"x":45819.36840869368,"y":31385.419815840156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"40794460-b815-498f-a245-e677de0eed86"}}}],"id":"1c96281c-523a-4597-b9b2-2db3d880ff49","savedPayload":{"position":{"x":45819.36840869368,"y":31385.419815840156},"targetPosition":{"x":45228.931388073186,"y":31502.74417203152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"ff535c6b-411f-4790-ab2b-c755c74de1b9","savedPayload":{"position":{"x":11138.25130732125,"y":26233.38907834376},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 2109149.343784579,\n \"maxValue\": 2118053.365048354,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"9ee722c6-095f-4f4a-b8b2-9cb9bca115aa","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,"arrangementStyle":0},"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":"c4041768-1a6e-4f5b-8d7b-b681a175f27a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"98e6c917-f4b7-4b71-9215-de3ccaf3dc0c"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"e9404a3f-2768-4b17-ac7a-8b11e1a1957c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"858fd2be-abef-4173-abef-dedf17f00d47","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"8411d061-e010-4d33-b35c-e71d743fd403","savedPayload":{"position":{"x":10965.194408624708,"y":26210.60036281255},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 25826.74987533423,\n \"maxValue\": 25961.190304401338,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"60aaeaeb-2247-4536-a1a2-cf7d731b6fc5","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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\": true\n}","id":"c230772e-ca08-45df-bad6-4b72be44d9a5","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"4a3ed8eb-a73e-4fb4-835a-681cf47d7373"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"f9435119-1d3f-4106-9c78-531f6ef4714f","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"728d6f08-086f-41ba-9126-30ec56a45ea5"}}}],"id":"acbd2ecb-2f75-44b8-8659-26482cb6fb0b","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"a7f9fef6-c3f9-4e17-b894-9a5e154ccbbe","savedPayload":{"position":{"x":10803.78018262477,"y":26143.752131657493},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 943.9334763368367,\n \"maxValue\": 947.9334763368367,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"1415a288-9d79-45c9-a55c-9991e8b6953b","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"33e885d3-27f0-4ff7-8715-bc2f945e698e","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"7ccbd0c1-c804-47e3-9314-14cbb756c806"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f3cd6f15-98f5-4165-b6c3-04b8796fb43d","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"08f223a8-9707-4c45-b638-1fe0e4a2b053"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"66440f58-8741-4b22-8146-00f772837545","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"66f1a9be-fe96-48c3-91e4-500c6e246423"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"3ba14173-bac8-4013-9a5c-b8aecd05e0ae","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"e432c706-cbcd-4af0-b23c-b18e5b29377a"}}}],"id":"ab7c3367-a36e-4a78-b43b-bfeea5fc5201","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0}}},"id":"156b9564-14a5-4148-8ca6-1e7b98d4189d","savedPayload":{"position":{"x":10665.17152728171,"y":26037.402405028162},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"4978dec9-1374-421a-865e-9e0d30682f65","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,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"on\",\n \"showPanels\": true\n}","id":"93d62cc0-6914-411e-bf9f-008271cd2965","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"573fb46f-78d2-4bf3-ad11-e42d2531d53e"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"on\"\n}","id":"cbb41381-e76d-44f5-8dd3-f9a8c0c0379f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"39d7a06d-5aad-4b03-8778-e4df8dacc825"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"on\"\n}","id":"88471305-9c12-4caf-856b-675fb2db2db3","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"82b46974-7a93-4066-a3b7-378b42710364"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"on\"\n}","id":"8cb92f6b-8ede-44ef-928a-36f4ec022af8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"7af9d35c-7464-4ed5-9ee6-ccf7a9943894"}}}],"id":"3ec4f352-fb06-4ade-8393-7a5a83765773","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":330,"radius":0}}},"id":"ac6929d9-238c-4689-b2ee-3cc001be578b","savedPayload":{"position":{"x":10558.81501585983,"y":25898.797450091883},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"d7c6c5e8-82d8-4f2a-a07e-66c3498d1fe5","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,"arrangementStyle":0},"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":"b978b005-7bc2-4246-b4d9-5fcfc463eacf","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"63636068-307e-4cea-b31f-f47e106cea2c"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"1ca55ee3-231b-41ad-9acd-24f043e8aa01","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"20848048-8efb-47b1-aaf0-789d2f6c5b1d"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"52850e27-6287-4005-ba6e-66f5b193e3ad","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"5e28998c-b35f-4cc0-9fd6-8ee5f5714545"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"46bd81b8-5b9f-4c5f-89bb-149e19bd0267","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"87b74841-4f6a-4658-b01b-7feb254b5d2f"}}}],"id":"0cf47550-1612-4cd7-8fdd-a68014bd52cc","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1620,"y":80},"width":150,"height":40,"radius":0}}},"id":"c285480b-3a39-4dd0-be1d-6470a97d22a7","savedPayload":{"position":{"x":10491.96325073248,"y":25737.373898896472},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"b10a1160-3d9b-44a5-97e9-dbfdc9f103b6","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,"arrangementStyle":0},"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":"b4fb2c12-42e4-496d-aea2-ccf8c90c2e6a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"5919a710-a950-4049-9605-3f127b7fac6b"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"fc3d15bc-ac9c-4150-9a26-4c8baef90266","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"c7030a88-152f-421c-8b32-66f3c222286a"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"c749facc-4350-43c1-b881-72c781475f56","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"25db80e6-c4cf-4568-98d3-0cba83625ece"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"30fa6c26-bdbb-4a70-a917-f42d99583938","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"f4b18249-5044-4b34-83f7-3cedbbe939c5"}}}],"id":"c689ea14-8d8b-4482-9cf3-c652904ebd27","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1470,"y":80},"width":150,"height":40,"radius":0}}},"id":"fabbc9b6-b752-4ba6-80a4-835eaa856948","savedPayload":{"position":{"x":10469.194131114753,"y":25564.28586691085},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"eb70203f-383c-4227-8b82-64458c8ceb62","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,"arrangementStyle":0},"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":"3a82f6d9-2063-4fd7-aa79-dedc4222c58c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"af19e56c-eaf1-4b0b-93f9-74b9ac1843c2"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"605b9ea8-5ed1-4750-8921-88bc481ffbc4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"30ac52a8-ee50-439c-83c8-df75ab49374a"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"3e97cb0b-80dd-4d12-8205-852c759a3f55","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"6a059555-2555-4c7f-a722-2ab4ca0440c5"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"76a918d5-1242-4b97-a252-550200546f5c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"c35fa0be-6e51-4d14-9a52-6b0174cc1aab"}}}],"id":"8658198e-ea8a-45ef-b05f-b2810aa3e015","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1320,"y":80},"width":150,"height":40,"radius":0}}},"id":"6616907b-5ec0-4c2d-b47b-885343226b81","savedPayload":{"position":{"x":10492.226838547804,"y":25390.75587290283},"targetPosition":{"x":11138.236958169193,"y":25564.296880103568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a9786387-316d-4b02-a53a-60187e2e17ed","savedPayload":{"position":{"x":11138.236958169193,"y":25564.296880103568},"targetPosition":{"x":11472.267056451483,"y":24985.351675411093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":1135,"y":395},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"BBTB Binance BTC/USDT","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2020-05-20T06:57:25.096Z\",\n \"toDate\": \"2020-05-28T23:36:50.667Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"28d6f2c6-d921-4bc6-a262-f9d432e43a75","savedPayload":{"position":{"x":10492.140742264783,"y":24579.9362145769},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 8539.15569832808,\n \"maxValue\": 10398.820427646755,\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"305a3f31-2554-45f4-9a5a-063087eade65","savedPayload":{"position":{"x":10469.108817024662,"y":24406.41410216667},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"af0e57b5-269b-4d97-ac21-76195ede4cd6","savedPayload":{"position":{"x":10491.878304594275,"y":24233.318318413578},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timelineCharts":[{"type":"Timeline Chart","name":"Indicators","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":"Candles","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"8b7edeec-2998-4877-95d6-4bc85a91f199","savedPayload":{"position":{"x":46248.05137575185,"y":30539.981477083165},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"dd7c8795-bb24-4438-9d77-b37a9000ad7f"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"2360e8bf-a667-40b9-ad6e-84bca97a4c90","savedPayload":{"position":{"x":46348.34452605566,"y":30544.761548094564},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"6929ebe7-6486-4299-add5-ed0282500d91"}}},{"type":"Layer","name":"Resistances","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f2d657ea-cfc5-47d7-9a00-b1c1ebc61e3f","savedPayload":{"position":{"x":46446.02717816587,"y":30566.09887872283},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Resistances","id":"0669d924-aace-46d1-b126-ccced8fd33cf"}}},{"type":"Layer","name":"Supports","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"5f830182-98fa-4e85-b66b-f1e240d821c9","savedPayload":{"position":{"x":46538.63881539089,"y":30603.234570446057},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Supports","id":"5e7a0e50-e6ed-4106-8025-8b35ad6c597c"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ae39c816-1963-4071-af1d-22d6cf94041e","savedPayload":{"position":{"x":46623.76511494318,"y":30655.094055474026},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"1d7dd537-5f6f-4eb2-8e56-ddba0aef720f"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"84a553d0-1d85-4164-8a7e-f583326a807d","savedPayload":{"position":{"x":46699.14444013288,"y":30720.24134340254},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"221c8d22-8a7f-4014-a7ed-0bafc886b123"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"c2fde932-5320-4d26-a998-4a4f5bf4d847","savedPayload":{"position":{"x":46762.751722972724,"y":30796.894888988827},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"d83476c3-2f0b-4d4a-abb2-0e47ed0a421d"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"986d6828-d93c-4eba-9ac2-c2c94d90582e","savedPayload":{"position":{"x":46812.8682529904,"y":30882.964414919832},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"5ffc6a67-e33b-422b-8e36-f9711f93c723"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"90090b4c-f6bb-465f-8240-1ff1b829503d","savedPayload":{"position":{"x":46848.135118547885,"y":30976.104683991685},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"0428f20b-9620-480e-a531-dbb2e5f59ef4"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"3100c7a8-46ce-4713-bb6c-4a90bf09dcbc","savedPayload":{"position":{"x":46867.59367597035,"y":31073.77793275672},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"48f7953c-f62d-4292-b042-d1ac05f8f80f"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\"\n}","id":"534a2350-9486-4c2b-8e42-0988e56d4a6e","savedPayload":{"position":{"x":46870.67346817683,"y":31173.31982222448},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"3b9a3c93-6d41-440e-89a2-2fd1b2dde603"}}},{"type":"Layer","name":"Base5 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"948561ae-efea-46e1-9667-5c4817118eca","savedPayload":{"position":{"x":46857.28116383152,"y":31271.994178178073},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"2404b1eb-c7c9-46e7-b22a-93cfcc3739f4"}}},{"type":"Layer","name":"Base6 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"49e73773-8345-4e59-9fed-0cf16c82be08","savedPayload":{"position":{"x":46827.84146788965,"y":31367.11798477374},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"1510fd36-633e-40a7-adbe-680660d64bd0"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"0f88f124-bb93-4bac-918e-fd11496d1a76","savedPayload":{"position":{"x":46783.15367313365,"y":31456.101697387832},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"70401ea0-3fed-4e40-8bba-a1e5adce9b8c"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"5fcb4df6-3903-4e0a-b29d-4ca52ca10f40","savedPayload":{"position":{"x":46724.43510527031,"y":31536.52194014277},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"06ac8eb7-8b14-42b1-9e2e-466280ade032"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"b9c8e51c-82eb-4dc5-9b12-01a5c660e27d","savedPayload":{"position":{"x":46653.28455923557,"y":31606.187054109774},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"014bba70-64d4-4035-b06d-145ee9b4c54c"}}},{"type":"Layer","name":"Base7 EMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e101b9b9-54f7-4450-b658-41d428fe98b3","savedPayload":{"position":{"x":46571.641403531,"y":31663.200135592506},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"768cc06c-6fdf-491a-a741-5e08f0e25e38"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"7f4a8c67-cfb0-4370-a7d1-3dbb51a4200a","savedPayload":{"position":{"x":46478.30453269399,"y":31706.995649584336},"targetPosition":{"x":46269.336201145576,"y":31141.93017159017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"40794460-b815-498f-a245-e677de0eed86"}}}],"id":"4ecd5f52-f81e-456c-9497-9c1d2fe4c659","savedPayload":{"position":{"x":46269.336201145576,"y":31141.93017159017},"targetPosition":{"x":45678.899180525084,"y":31259.254527781533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"6916ddb0-8156-49b5-a37b-16818ad780fd","savedPayload":{"position":{"x":10558.729861137988,"y":24071.895181337284},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 2042396.836815424,\n \"maxValue\": 2051300.858079199,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"fea71c82-c589-4e2b-9a23-a9f90a980a5c","savedPayload":{"position":{"x":44405.55033743636,"y":31261.51022477371},"targetPosition":{"x":44080.414675039254,"y":31287.13850027945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"0358d7fb-73e1-4099-bbad-672d80f35e8e","savedPayload":{"position":{"x":44612.89390157048,"y":31479.949969919875},"targetPosition":{"x":44401.28500610063,"y":31441.688531642707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"98e6c917-f4b7-4b71-9215-de3ccaf3dc0c"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"1647ec62-daa0-4985-ae3d-9ad7b3222397","savedPayload":{"position":{"x":44564.361174041755,"y":31581.712327942194},"targetPosition":{"x":44401.28500610063,"y":31441.688531642707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"111f471b-a72c-4330-97b0-3f2b310f3c55","savedPayload":{"position":{"x":44401.28500610063,"y":31441.688531642707},"targetPosition":{"x":44080.414675039254,"y":31287.13850027945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"237e33ff-32f9-4f45-bb51-b42e93d4f2e3","savedPayload":{"position":{"x":10665.086276963259,"y":23933.289816556313},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 24818.86417825609,\n \"maxValue\": 24953.3046073232,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"9294ac73-b348-4f8c-aa4b-a98e72b643ce","savedPayload":{"position":{"x":44361.21664273736,"y":31366.73167335227},"targetPosition":{"x":44060.4423815896,"y":31347.32101223103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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\": true\n}","id":"e8cef08c-fcbb-4430-8a2f-825d101f44e3","savedPayload":{"position":{"x":44529.19471727387,"y":31592.619948516272},"targetPosition":{"x":44324.99063603653,"y":31523.731134007154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"4a3ed8eb-a73e-4fb4-835a-681cf47d7373"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"ce432b11-fd42-4bbb-be67-be70436e1935","savedPayload":{"position":{"x":44467.06932232549,"y":31685.848244771263},"targetPosition":{"x":44324.99063603653,"y":31523.731134007154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"728d6f08-086f-41ba-9126-30ec56a45ea5"}}}],"id":"40c545c9-8f6e-4777-a5b7-6386c382d0ef","savedPayload":{"position":{"x":44324.99063603653,"y":31523.731134007154},"targetPosition":{"x":44060.4423815896,"y":31347.32101223103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"3b7bd98c-c062-412b-8efc-b6943b0c57c4","savedPayload":{"position":{"x":10803.694986500428,"y":23826.93951465946},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 913.9458988180226,\n \"maxValue\": 917.9458988180226,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"33fca6f7-ae02-4d47-987b-6d4cdd54d7dc","savedPayload":{"position":{"x":44290.58808276839,"y":31546.332726046596},"targetPosition":{"x":44008.67786449814,"y":31450.627230444796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"3f2dd6ab-cbb0-47d4-bcc0-4c65a6a26bbf","savedPayload":{"position":{"x":44413.860692334245,"y":31705.270868973323},"targetPosition":{"x":44217.224018592766,"y":31688.7983598539},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"7ccbd0c1-c804-47e3-9314-14cbb756c806"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6970ee87-56eb-42e1-a7f5-e8496ae7c14e","savedPayload":{"position":{"x":44370.6894603055,"y":31786.435037256044},"targetPosition":{"x":44217.224018592766,"y":31688.7983598539},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"08f223a8-9707-4c45-b638-1fe0e4a2b053"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"8467da0c-25b2-4471-8a51-d10e22c09575","savedPayload":{"position":{"x":44303.94190533702,"y":31846.937174734503},"targetPosition":{"x":44217.224018592766,"y":31688.7983598539},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"66f1a9be-fe96-48c3-91e4-500c6e246423"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"538dc51b-9d04-4064-8997-7c2cfd01def4","savedPayload":{"position":{"x":44207.172795775405,"y":31883.5736299024},"targetPosition":{"x":44217.224018592766,"y":31688.7983598539},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"e432c706-cbcd-4af0-b23c-b18e5b29377a"}}}],"id":"413ae363-1475-4fb5-918f-607c5ee50198","savedPayload":{"position":{"x":44217.224018592766,"y":31688.7983598539},"targetPosition":{"x":44008.67786449814,"y":31450.627230444796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0}}},"id":"6fbb972a-6cb6-479d-bbd8-20d96f997ec7","savedPayload":{"position":{"x":10965.11030574667,"y":23760.090535827057},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"c0059d35-5a9a-4569-9384-72e2e15f134d","savedPayload":{"position":{"x":27557.63582153647,"y":27912.736751977856},"targetPosition":{"x":27650.227157061017,"y":28257.50773383182},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"on\",\n \"showPanels\": true\n}","id":"1ab2b96f-e3d5-46a0-9be0-2f2b76209ea2","savedPayload":{"position":{"x":27665.65594917696,"y":27585.32604165042},"targetPosition":{"x":27743.053578769875,"y":27912.28127902672},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"653622df-b35b-4c72-9b1d-cbbea2d45a93"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"3d8a3ad2-2047-4906-b695-5336d5d7c98a","savedPayload":{"position":{"x":27773.681834722982,"y":27575.417965010536},"targetPosition":{"x":27743.053578769875,"y":27912.28127902672},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"bcd39fee-3584-4e3a-b524-05ecb62d4582"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"on\"\n}","id":"75f4bc8d-ba22-4a6e-a8c2-2c384ef2b98c","savedPayload":{"position":{"x":27879.136658694806,"y":27601.456940514337},"targetPosition":{"x":27743.053578769875,"y":27912.28127902672},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"d6a48300-ab24-4b7b-8fb1-b431e389c7d1"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"on\"\n}","id":"db1b234c-5cba-4b03-8572-755e2af13f73","savedPayload":{"position":{"x":27979.473145949694,"y":27672.59337035246},"targetPosition":{"x":27743.053578769875,"y":27912.28127902672},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"aa60feec-3e11-4509-ab4f-5eac17ea7d3b"}}}],"id":"ce11bc60-a642-46e6-ab04-99b6835f22d3","savedPayload":{"position":{"x":27743.053578769875,"y":27912.28127902672},"targetPosition":{"x":27650.227157061017,"y":28257.50773383182},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":330,"radius":0}}},"id":"d3f769da-9958-4549-b2d9-7eb8582f94c2","savedPayload":{"position":{"x":11138.157252601008,"y":23737.30184414623},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"4c7c5182-d380-459d-aaf3-27cf75fff424","savedPayload":{"position":{"x":28262.385658877018,"y":28130.53416813641},"targetPosition":{"x":28262.41822833366,"y":28486.384792584635},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"8c3a6cb3-9c1c-4a56-8e45-34da3b7211a5","savedPayload":{"position":{"x":28447.69443236196,"y":27841.456778292883},"targetPosition":{"x":28440.385696197893,"y":28177.98107529941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"2004d488-ba55-478c-afa4-c00a555bf34c"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"f6941192-1842-4fa5-9963-3d82963ccf8f","savedPayload":{"position":{"x":28557.462280733387,"y":27859.50803963232},"targetPosition":{"x":28440.385696197893,"y":28177.98107529941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"7859d024-817a-4059-8a17-86690194f9de"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"dbc9d245-aa65-4b6e-bed2-43a76dd4c5f6","savedPayload":{"position":{"x":28655.050318792713,"y":27915.11964276374},"targetPosition":{"x":28440.385696197893,"y":28177.98107529941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"dd541e63-8071-4b0f-8eb8-5fd50ef3eb82"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"d4c540d0-ef98-40c5-8b3b-401a36d97a35","savedPayload":{"position":{"x":28729.501541674534,"y":28006.267495681434},"targetPosition":{"x":28440.385696197893,"y":28177.98107529941},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"11af0867-3396-48d4-b794-9d133d2d2416"}}}],"id":"848138ac-75f4-4f45-9d75-5f3efd1b1851","savedPayload":{"position":{"x":28440.385696197893,"y":28177.98107529941},"targetPosition":{"x":28262.41822833366,"y":28486.384792584635},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1620,"y":80},"width":150,"height":40,"radius":0}}},"id":"7e78029b-0e92-4aca-b46e-b0abd6a9efc1","savedPayload":{"position":{"x":11311.290953212665,"y":23760.139397561445},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"30f19a00-1682-4e5b-bbf1-038de1e095a0","savedPayload":{"position":{"x":28472.766660410845,"y":29349.031832198143},"targetPosition":{"x":28472.716345933826,"y":29707.546693237375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"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":"55f431d8-2f2b-4a23-8918-c7e648f501f4","savedPayload":{"position":{"x":28819.954200077675,"y":29131.835390461678},"targetPosition":{"x":28725.76222074944,"y":29454.779651892102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"3713af17-7ed8-4d32-abbb-66be7ba3d95b"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"352896a0-4682-4e04-b63a-8c449e290e3c","savedPayload":{"position":{"x":28923.00109202421,"y":29179.54612793986},"targetPosition":{"x":28725.76222074944,"y":29454.779651892102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"8206a3c4-7a92-4f52-aa29-d0b912511e94"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"ad636a90-0f4f-4851-8ac4-f1d8f62db35f","savedPayload":{"position":{"x":28999.37401037677,"y":29254.845401658935},"targetPosition":{"x":28725.76222074944,"y":29454.779651892102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"82cb4b63-c7ed-4e1c-b558-5caf08e7840e"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"46e22bd5-7a0a-4cf4-a07a-ffb56e480b13","savedPayload":{"position":{"x":29049.875305170575,"y":29364.278029383444},"targetPosition":{"x":28725.76222074944,"y":29454.779651892102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"35c51f59-d967-4fb9-bf3d-ebef155fe90a"}}}],"id":"b3fbff56-9599-4434-b850-ecde29200a93","savedPayload":{"position":{"x":28725.76222074944,"y":29454.779651892102},"targetPosition":{"x":28472.716345933826,"y":29707.546693237375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1470,"y":80},"width":150,"height":40,"radius":0}}},"id":"6a6e8794-41f5-43a6-afd2-7e46272b49f6","savedPayload":{"position":{"x":11472.759865802207,"y":23827.087856289705},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Live Trading","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-min\"}","id":"0e5d370a-9170-44e8-870a-20dcc784a793","savedPayload":{"position":{"x":28317.561321721798,"y":28460.143313868284},"targetPosition":{"x":28139.557768239833,"y":28769.97071387159},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"d4b2f167-9859-46d5-a98f-18ce9b8c2c37","savedPayload":{"position":{"x":28624.627247902066,"y":28305.973052222267},"targetPosition":{"x":28447.39063058376,"y":28591.244910585203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"84c5619b-c379-4bed-bd1c-3dccfc840fa7"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"303943c9-fa32-4510-abdb-59c743008a7a","savedPayload":{"position":{"x":28705.758217764087,"y":28373.020535680873},"targetPosition":{"x":28447.39063058376,"y":28591.244910585203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"9cd0c0da-e0df-4b83-a7f5-7e503f050020"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"09bd756c-955e-40c3-b093-f5bd16a47d94","savedPayload":{"position":{"x":28763.500035918594,"y":28466.28104399784},"targetPosition":{"x":28447.39063058376,"y":28591.244910585203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"05aa1029-fde5-4240-b5ef-31636ed817ee"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"7baed766-dcbe-4ca9-a45c-f09d5e1f0c0c","savedPayload":{"position":{"x":28784.40971720822,"y":28589.492110455},"targetPosition":{"x":28447.39063058376,"y":28591.244910585203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"8681f8d9-c6fa-4966-aa76-e627000962cb"}}}],"id":"73aed3a7-3c46-4847-85a8-1da38a836b75","savedPayload":{"position":{"x":28447.39063058376,"y":28591.244910585203},"targetPosition":{"x":28139.557768239833,"y":28769.97071387159},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1320,"y":80},"width":150,"height":40,"radius":0}}},"id":"0440d6cc-9623-40ab-b3fd-b6fc234d2550","savedPayload":{"position":{"x":11611.635854119537,"y":23933.882953163084},"targetPosition":{"x":11138.15835124918,"y":24406.41899509399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f2065c00-1afb-40e3-937c-fa4046f388a2","savedPayload":{"position":{"x":11138.15835124918,"y":24406.41899509399},"targetPosition":{"x":11472.267056451483,"y":24985.351675411093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":725,"y":395},"width":240,"height":113.625,"radius":0}}}],"id":"64fa2a31-21ea-4b56-a625-dc4082876a89","savedPayload":{"position":{"x":11472.267056451483,"y":24985.351675411093},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":0,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"t"}}}],"id":"c53a4385-3fb3-49d5-b506-99bcaef2c141","savedPayload":{"position":{"x":12809.806237131383,"y":24985.35640053908},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":0,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"c"}}},{"type":"Trading System","name":"BB Top Bounce","code":"{ \n\"codeName\": \"\"\n}","strategies":[{"type":"Strategy","name":"S1 - 3H Down","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"99948a6e-e866-4339-86ba-eac367226312","savedPayload":{"position":{"x":31745.87792199155,"y":30844.340258645996},"targetPosition":{"x":32052.38122416619,"y":30583.023145060495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f0534c68-ab47-4370-b1fd-b3be4c1c262f","savedPayload":{"position":{"x":32052.38122416619,"y":30583.023145060495},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"d3bd1690-1f94-484b-ac3c-7be2c7be85ed","savedPayload":{"position":{"x":31605.618112221746,"y":30565.806770971594},"targetPosition":{"x":31989.318028702757,"y":30441.460815337527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e2d7334d-cf52-44d9-a20e-5be201ca6799","savedPayload":{"position":{"x":31989.318028702757,"y":30441.460815337527},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"d1fa707f-eb75-4b1c-8117-688b9b94e539","savedPayload":{"position":{"x":31554.61755893405,"y":30257.172197674274},"targetPosition":{"x":31956.687749228324,"y":30288.882416651897},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fb71bcfb-2a40-4e8a-b8e8-b492128350a0","savedPayload":{"position":{"x":31956.687749228324,"y":30288.882416651897},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerChannel.direction === \"Down\"","id":"8c8c5128-b88b-44a5-8e36-d5c61127404f","savedPayload":{"position":{"x":31639.94576021355,"y":29954.803831254892},"targetPosition":{"x":31999.203547395213,"y":30137.794869043297},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"22246178-a8f9-4ec8-b55b-36cf7a24fbff","savedPayload":{"position":{"x":31999.203547395213,"y":30137.794869043297},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Medium, Steep or Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerSubChannel.slope === \"Medium\" || chart.at03hs.bollingerSubChannel.slope === \"Steep\" || chart.at03hs.bollingerSubChannel.slope === \"Extreme\" ","id":"bf8df41c-c62f-4cd6-840e-1dd538359c3b","savedPayload":{"position":{"x":31834.655620259655,"y":29707.873760246843},"targetPosition":{"x":32096.553555740164,"y":30014.31400704127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9dba774d-1afa-40dd-b5ec-8f4029824473","savedPayload":{"position":{"x":32096.553555740164,"y":30014.31400704127},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerSubChannel.slope === \"Gentle\"","id":"c4428437-7308-46f3-884e-22d2aac8d1a0","savedPayload":{"position":{"x":32109.03084733644,"y":29554.180048988066},"targetPosition":{"x":32233.790964800362,"y":29937.452098557496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7766453d-73ca-46f7-a39c-00f4f11af05e","savedPayload":{"position":{"x":32233.790964800362,"y":29937.452098557496},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"eac9b2d4-4364-4116-9d99-e92b8bbce5e7","savedPayload":{"position":{"x":32420.849012406088,"y":29517.112042973775},"targetPosition":{"x":32389.86788822145,"y":29918.98295933012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"40cb1853-f93e-4023-8d45-708376281bde","savedPayload":{"position":{"x":32389.86788822145,"y":29918.98295933012},"targetPosition":{"x":32358.475513276375,"y":30321.19625417135},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8d558598-60b5-4104-9a84-1773b125c509","savedPayload":{"position":{"x":32358.475513276375,"y":30321.19625417135},"targetPosition":{"x":32756.369395728692,"y":30473.2782041962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"3afd4ef5-2175-48fa-844f-e4e4ed775b26","savedPayload":{"position":{"x":32756.369395728692,"y":30473.2782041962},"targetPosition":{"x":33115.49575849726,"y":30655.993268223905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"0fb11814-5ba2-4c23-86b0-e6f8c01363e6","savedPayload":{"position":{"x":32617.29250092579,"y":29121.850815516915},"targetPosition":{"x":32741.838475650537,"y":29505.18938868129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"32415e55-51cb-44cf-a0d9-9de73b946da8","savedPayload":{"position":{"x":32741.838475650537,"y":29505.18938868129},"targetPosition":{"x":32866.375295950726,"y":29888.60205395678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"317dd29a-db32-4f10-bee0-325b7a7c816c","savedPayload":{"position":{"x":32866.375295950726,"y":29888.60205395678},"targetPosition":{"x":32991.015860687716,"y":30271.979726021065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"547d578f-4568-4b1f-965d-1d598b7b67bb","savedPayload":{"position":{"x":32991.015860687716,"y":30271.979726021065},"targetPosition":{"x":33115.49575849726,"y":30655.993268223905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"903651ac-50d3-44ea-aae2-0b6bbe43b989","savedPayload":{"position":{"x":32519.153930150867,"y":29623.888173680094},"targetPosition":{"x":32898.8713319454,"y":29758.68564157265},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4c4c6084-bebe-46ce-a12f-68924568c81d","savedPayload":{"position":{"x":32898.8713319454,"y":29758.68564157265},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"b16e3f56-5a3f-4af9-a9d1-ff3bbf9ca0b8","savedPayload":{"position":{"x":32679.72474976604,"y":29354.39087414772},"targetPosition":{"x":32979.10492621333,"y":29624.347968493967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c4e1f247-db57-4488-81e9-c7602562b8f3","savedPayload":{"position":{"x":32979.10492621333,"y":29624.347968493967},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"34452811-c161-4b33-8335-bc996a8638ad","savedPayload":{"position":{"x":32931.691553348195,"y":29166.564159994483},"targetPosition":{"x":33105.053842370166,"y":29530.40381131325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"db35b110-1991-4e3d-a1bd-04b0d1bad669","savedPayload":{"position":{"x":33105.053842370166,"y":29530.40381131325},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerChannel.direction === \"Down\"","id":"8fcf0aed-cd6b-4df9-8ec4-4511fcde66d8","savedPayload":{"position":{"x":33236.37478842459,"y":29089.384601838196},"targetPosition":{"x":33257.444177016405,"y":29491.79286529503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"48bd56ea-0d5a-404d-a887-061493bebbcf","savedPayload":{"position":{"x":33257.444177016405,"y":29491.79286529503},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Medium, Steep or Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerSubChannel.slope === \"Medium\" || chart.at03hs.bollingerSubChannel.slope === \"Steep\" || chart.at03hs.bollingerSubChannel.slope === \"Extreme\" ","id":"40b36ec9-ebf1-43fe-8003-f0d130b7cb36","savedPayload":{"position":{"x":33547.15819738872,"y":29134.731069626498},"targetPosition":{"x":33412.887765036874,"y":29514.443714403056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6c90a754-52bd-47cf-a3b5-95ad037bbb62","savedPayload":{"position":{"x":33412.887765036874,"y":29514.443714403056},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerSubChannel.slope === \"Gentle\"","id":"3f28257c-cc33-4c59-b40b-85bc88821f96","savedPayload":{"position":{"x":33817.50271555692,"y":29295.712530312267},"targetPosition":{"x":33548.076869473945,"y":29594.931818674166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fc2fb509-2854-4359-aa1e-b32a2174bd35","savedPayload":{"position":{"x":33548.076869473945,"y":29594.931818674166},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"5226a3d7-c8f8-41bd-9b45-f6238576628f","savedPayload":{"position":{"x":34005.82672873455,"y":29547.817722630363},"targetPosition":{"x":33642.2312063245,"y":29721.07059078792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0b38876e-bcad-4cec-90e2-c2e358723d29","savedPayload":{"position":{"x":33642.2312063245,"y":29721.07059078792},"targetPosition":{"x":33278.333917070595,"y":29894.451567060434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"46e2ecf6-82ae-435d-a3a0-d5e2903404fd","savedPayload":{"position":{"x":33278.333917070595,"y":29894.451567060434},"targetPosition":{"x":33299.00147256256,"y":30297.01571488586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"c296b2ce-4039-48ec-b8bb-99c9d96853eb","savedPayload":{"position":{"x":33609.682057130776,"y":29953.38300829202},"targetPosition":{"x":33434.376532064154,"y":30147.396378822883},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d0dbc486-d195-4db3-b895-385088b800ba","savedPayload":{"position":{"x":33434.475794635255,"y":30147.282072860846},"targetPosition":{"x":33299.00147256256,"y":30297.01571488586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"93418d2a-3047-4f80-aa59-0c6fdb35ad43","savedPayload":{"position":{"x":33299.00147256256,"y":30297.01571488586},"targetPosition":{"x":33115.49575849726,"y":30655.993268223905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"1055a2cc-e93a-4dd8-a992-f56553527ddd","savedPayload":{"position":{"x":33115.49575849726,"y":30655.993268223905},"targetPosition":{"x":33239.48474341851,"y":31038.643250235426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"853852d1-d2fa-4e32-a891-e98ca52a556e","savedPayload":{"position":{"x":33687.32525899127,"y":28630.28850235298},"targetPosition":{"x":33979.54395432601,"y":28708.55040929766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"3bdebe73-3546-43f3-b644-73ec62086c66","savedPayload":{"position":{"x":33666.51804208801,"y":27539.983917204023},"targetPosition":{"x":33744.69548060642,"y":27832.06710596675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"36615e86-2c8e-4182-ab3e-5c263c44fcb1","savedPayload":{"position":{"x":33744.70691352631,"y":27832.134330548877},"targetPosition":{"x":33822.954696502624,"y":28124.404333447008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6aae47da-70b4-4fd3-b2da-65a1d645b915","savedPayload":{"position":{"x":33822.86695788699,"y":28124.39717183063},"targetPosition":{"x":33901.15598726982,"y":28416.52491269287},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"18261801-3d1b-4dfe-872c-019fff59db4d","savedPayload":{"position":{"x":33901.15572942444,"y":28416.51381216433},"targetPosition":{"x":33979.54395432601,"y":28708.55040929766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"678cc7e5-c7cf-48e5-beee-37455617aa15","savedPayload":{"position":{"x":33979.616026972566,"y":28708.527885863212},"targetPosition":{"x":34193.31786858143,"y":28922.065415950765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a57d76af-2d34-41a0-b68b-a5dda59436b4","savedPayload":{"position":{"x":34193.31786858143,"y":28922.065415950765},"targetPosition":{"x":34406.84857131276,"y":29135.252280701574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"f191391f-f798-4819-b46b-8ae9538ff71f","savedPayload":{"position":{"x":34123.43694196574,"y":28303.266547138595},"targetPosition":{"x":34313.34298525399,"y":28538.488004355862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"65b73feb-09e0-491d-99fd-30f331acac97","savedPayload":{"position":{"x":34436.073537225195,"y":27376.24000730662},"targetPosition":{"x":34483.20864925244,"y":27674.87599559046},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fa12e6f8-f9d6-4eb7-9e3b-1e0f17581548","savedPayload":{"position":{"x":34483.301676393894,"y":27675.108504545075},"targetPosition":{"x":34530.31165278271,"y":27973.96671756476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"2eff0ccd-bf54-4456-aff5-9f46cf1469ff","savedPayload":{"position":{"x":35000.38389861486,"y":27593.093039459363},"targetPosition":{"x":34765.46226665505,"y":27783.35172716299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a4af8e92-a505-48fd-8080-8a715cd856dc","savedPayload":{"position":{"x":34765.43852093076,"y":27783.562045970917},"targetPosition":{"x":34530.31165278271,"y":27973.96671756476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ef07d7e4-53c0-4746-a1a2-4b4856cba9df","savedPayload":{"position":{"x":34530.30099769694,"y":27973.974792996265},"targetPosition":{"x":34421.88845899308,"y":28256.249074095707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"2484f7be-38df-4139-94b4-d753e6d50eed","savedPayload":{"position":{"x":34421.82014227279,"y":28256.221955834993},"targetPosition":{"x":34313.34298525399,"y":28538.488004355862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"8ba924d4-3ac9-41de-ba03-02368b3bde5a","savedPayload":{"position":{"x":34313.4187637897,"y":28538.448023932728},"targetPosition":{"x":34360.1918698118,"y":28837.00124492984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8c2601bb-ff4c-4947-b514-96f43313e134","savedPayload":{"position":{"x":34360.1600707038,"y":28837.029615626387},"targetPosition":{"x":34406.84857131276,"y":29135.252280701574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"058068ed-ad77-4574-b61b-58e54f0db35b","savedPayload":{"position":{"x":34682.314020993916,"y":28597.031066228574},"targetPosition":{"x":34544.60399635092,"y":28866.212135868725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9ba67283-694d-42a9-995f-19e53d5519d0","savedPayload":{"position":{"x":34544.60399635092,"y":28866.212135868725},"targetPosition":{"x":34406.84857131276,"y":29135.252280701574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"bd3b401d-5b77-43ba-87e1-c4f9552bf56f","savedPayload":{"position":{"x":34946.04548109355,"y":28861.386648858126},"targetPosition":{"x":34676.46337129765,"y":28998.42894504949},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4938fc97-68bf-490e-85a0-66254b98bbac","savedPayload":{"position":{"x":34676.46337129765,"y":28998.42894504949},"targetPosition":{"x":34406.84857131276,"y":29135.252280701574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3f9517c2-52d1-4922-a838-1aacf268bcc7","savedPayload":{"position":{"x":34406.84857131276,"y":29135.252280701574},"targetPosition":{"x":34217.642980461096,"y":30328.208176155946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"97162469-0f8d-4710-81e1-1a1f3070a5ac","savedPayload":{"position":{"x":34462.41262967484,"y":30150.616620789337},"targetPosition":{"x":34217.642980461096,"y":30328.208176155946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"b23bab61-270d-4e0e-bcdc-f57457942e30","savedPayload":{"position":{"x":34822.17690991721,"y":30423.728911300397},"targetPosition":{"x":34516.57606336537,"y":30375.449231047525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a92fd7c1-db55-485b-bb59-7894f339959d","savedPayload":{"position":{"x":34516.582487985164,"y":30375.451352699893},"targetPosition":{"x":34217.642980461096,"y":30328.208176155946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e35699bc-1fe9-4cdc-b029-6361f0ce8592","savedPayload":{"position":{"x":34217.642980461096,"y":30328.208176155946},"targetPosition":{"x":33239.48474341851,"y":31038.643250235426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Standard Run","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"0e9e87f6-4636-4f1f-8091-d1c3090ee345","savedPayload":{"position":{"x":34864.4258519058,"y":31073.451873580834},"targetPosition":{"x":34461.11172798981,"y":31137.136196285086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"4a44eb01-4bb2-4b85-bd64-cab1b6a4678f","savedPayload":{"position":{"x":34461.11172798981,"y":31137.136196285086},"targetPosition":{"x":33939.89373966002,"y":31219.42301087441},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a9042fd2-0f05-4208-91b7-81e00b6493fb","savedPayload":{"position":{"x":33964.17199362247,"y":31212.629100310176},"targetPosition":{"x":33565.701923404486,"y":31275.6154406843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"aadae3ad-5cf1-4417-baad-c6e8b0ab8f31","savedPayload":{"position":{"x":34479.54862907233,"y":31441.47133565945},"targetPosition":{"x":34242.223416518915,"y":31767.17190193582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bfc7fa92-c54c-43e7-8a6d-f89572d1fee2","savedPayload":{"position":{"x":35534.17506364013,"y":32601.01834737772},"targetPosition":{"x":35227.57871058723,"y":32377.80094191258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5ea229bf-a68c-40f9-a6ac-8bae8171ecda","savedPayload":{"position":{"x":35227.57871058723,"y":32377.80094191258},"targetPosition":{"x":34900.77194830591,"y":32141.7292100267},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"585c2f06-93d7-403f-ab70-0aab9c936f72","savedPayload":{"position":{"x":34900.77194830591,"y":32141.7292100267},"targetPosition":{"x":34573.63535245736,"y":31912.267182708572},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"cddeb772-d0f7-4ba8-b303-b623746f3f6e","savedPayload":{"position":{"x":34573.63535245736,"y":31912.267182708572},"targetPosition":{"x":34242.223416518915,"y":31767.17190193582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"4862beb3-990c-43ba-a21b-93ce1227d060","savedPayload":{"position":{"x":34095.983992917565,"y":33156.25692616599},"targetPosition":{"x":33932.40423152793,"y":32787.97422544229},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dc6ade59-03df-4aa5-a892-5e225a38cb35","savedPayload":{"position":{"x":33932.40423152793,"y":32787.97422544229},"targetPosition":{"x":33768.76262490215,"y":32419.670081760734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"54428b89-eb5f-4844-9fec-b049f074b3c8","savedPayload":{"position":{"x":33684.54360513825,"y":33221.50127229437},"targetPosition":{"x":33726.58189119683,"y":32820.64500846274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"81b0626e-e4c7-40dc-ae8d-ec5603067461","savedPayload":{"position":{"x":33726.58189119683,"y":32820.64500846274},"targetPosition":{"x":33768.76262490215,"y":32419.670081760734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"05867691-257f-4795-b70f-180ef26713fd","savedPayload":{"position":{"x":33295.15009910802,"y":33072.03862949453},"targetPosition":{"x":33531.844828303714,"y":32745.9038412817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2d354bdf-7142-4921-aec4-60a295569584","savedPayload":{"position":{"x":33531.844828303714,"y":32745.9038412817},"targetPosition":{"x":33768.76262490215,"y":32419.670081760734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"74adc18a-fcb8-47ad-a447-1595f16cc7f6","savedPayload":{"position":{"x":33032.65657548499,"y":32747.964707298193},"targetPosition":{"x":33400.58073167286,"y":32583.817208006196},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8c760094-3830-48d3-a97c-a9dee27f3c7e","savedPayload":{"position":{"x":33400.58073167286,"y":32583.817208006196},"targetPosition":{"x":33768.76262490215,"y":32419.670081760734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"45a3f428-25a5-4cf2-a13f-08bf3bbc4972","savedPayload":{"position":{"x":32967.43396894057,"y":32336.52703312829},"targetPosition":{"x":33367.984332677246,"y":32377.98795861293},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6106746d-8995-425e-8dd9-009894a5dd07","savedPayload":{"position":{"x":33367.984332677246,"y":32377.98795861293},"targetPosition":{"x":33768.76262490215,"y":32419.670081760734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"61a873ab-dc8f-4023-93cd-a861bd965858","savedPayload":{"position":{"x":33768.76262490215,"y":32419.670081760734},"targetPosition":{"x":34005.569456507634,"y":32093.444793007522},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"aa98a93e-c928-4900-854a-97b3750182d2","savedPayload":{"position":{"x":34005.569456507634,"y":32093.444793007522},"targetPosition":{"x":34242.223416518915,"y":31767.17190193582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"83f85765-e13b-406a-bd56-7fd820eebc16"}}}],"announcements":[],"id":"e3b43a25-cbb0-4ebc-ac2f-148a56d7d934","savedPayload":{"position":{"x":34242.223416518915,"y":31767.17190193582},"targetPosition":{"x":33891.42358861794,"y":31512.39396500924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"e603a735-7a74-4654-b0bb-50bee2d1e307","savedPayload":{"position":{"x":34965.37684662937,"y":31962.859663977957},"targetPosition":{"x":34566.985205192934,"y":32026.856287734012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"12b3cadf-b8f9-4f43-8799-40c1509f8d07","savedPayload":{"position":{"x":35934.15152043711,"y":32273.569658836277},"targetPosition":{"x":35565.78497710967,"y":32437.163554507133},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d45aa91c-a153-4311-8403-8e4492ffcc95","savedPayload":{"position":{"x":35565.78497710967,"y":32437.163554507133},"targetPosition":{"x":35196.94350553596,"y":32600.98818807042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"47191a8e-485b-4f11-be05-c1b6253da95e","savedPayload":{"position":{"x":36019.79323488345,"y":32698.898330709257},"targetPosition":{"x":35618.76476118394,"y":32656.59127038628},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0a6eff46-6a7b-4a29-81a4-93a751a056bf","savedPayload":{"position":{"x":35618.76476118394,"y":32656.59127038628},"targetPosition":{"x":35196.94350553596,"y":32600.98818807042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"e9cfe84c-e144-4e95-88ce-8bfdffd42f89","savedPayload":{"position":{"x":35850.04803078668,"y":33074.805375387914},"targetPosition":{"x":35523.743612251135,"y":32837.93392343165},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9dfa9604-bc08-4df3-980d-2f8b06185031","savedPayload":{"position":{"x":35523.743612251135,"y":32837.93392343165},"targetPosition":{"x":35196.94350553596,"y":32600.98818807042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"8c332bfe-ab0c-4905-9440-86091b7040b1","savedPayload":{"position":{"x":35526.96283562273,"y":33337.71267605346},"targetPosition":{"x":35362.78202114205,"y":32969.172911299174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e358399e-001d-4d07-83e4-2bf9d65ed1bd","savedPayload":{"position":{"x":35362.78202114205,"y":32969.172911299174},"targetPosition":{"x":35196.94350553596,"y":32600.98818807042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div previous ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"51ec782d-f54f-46b5-b45a-9db5cf7a380e","savedPayload":{"position":{"x":35078.386460330876,"y":33413.44311371471},"targetPosition":{"x":35120.761185118834,"y":33012.25356399207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c64c6aff-2525-4e58-9e27-ac7a8b3dc8cb","savedPayload":{"position":{"x":35120.761185118834,"y":33012.25356399207},"targetPosition":{"x":35196.94350553596,"y":32600.98818807042},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"08f82342-86ce-4222-b954-968397dd2d33","savedPayload":{"position":{"x":35196.94350553596,"y":32600.98818807042},"targetPosition":{"x":34870.15982787527,"y":32364.087714314013},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"170cad22-eef5-48c3-b5d9-fae484dab493","savedPayload":{"position":{"x":34870.15982787527,"y":32364.087714314013},"targetPosition":{"x":34566.985205192934,"y":32026.856287734012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"83f85765-e13b-406a-bd56-7fd820eebc16"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"0320d330-7d8e-4577-8ea3-debcdf5c4971","savedPayload":{"position":{"x":35201.0639175972,"y":33465.70824658257},"targetPosition":{"x":34945.200145626884,"y":33137.04979310342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6611a627-dfaf-4248-8aaa-e27fb7ac7141","savedPayload":{"position":{"x":34945.200145626884,"y":33137.04979310342},"targetPosition":{"x":34692.15922488175,"y":32823.47675811349},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"51f5f720-c0df-4209-a32f-80f67688004d","savedPayload":{"position":{"x":34403.59582771485,"y":33576.18639286568},"targetPosition":{"x":34547.81576381235,"y":33199.90475745102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"62ebc71f-7dab-4090-9f0e-c557cbbf5045","savedPayload":{"position":{"x":34547.81576381235,"y":33199.90475745102},"targetPosition":{"x":34692.15922488175,"y":32823.47675811349},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9cfa9122-1b64-4a37-877f-1c722493562a","savedPayload":{"position":{"x":34692.15922488175,"y":32823.47675811349},"targetPosition":{"x":34629.497980836786,"y":32425.186055399783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"73f3e391-cceb-4d27-932f-7b3c76d63b24","savedPayload":{"position":{"x":34629.497980836786,"y":32425.186055399783},"targetPosition":{"x":34566.985205192934,"y":32026.856287734012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"e3b43a25-cbb0-4ebc-ac2f-148a56d7d934"}}}],"announcements":[],"id":"913c2adb-a405-40e1-b661-300ec59c4ea0","savedPayload":{"position":{"x":34566.985205192934,"y":32026.856287734012},"targetPosition":{"x":34242.223416518915,"y":31767.17190193582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"be65b94d-3942-43c3-96aa-354447d5d591","savedPayload":{"position":{"x":35266.86864213329,"y":32080.796230194483},"targetPosition":{"x":34898.47957079251,"y":32244.880649959683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"fb87ce68-53e9-4553-a0d4-c996920c9b7a","savedPayload":{"position":{"x":35881.98510857697,"y":33453.83239370252},"targetPosition":{"x":35556.24500068716,"y":33217.03786906918},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1c9f9e96-a31d-42dc-a72f-ee8c25057426","savedPayload":{"position":{"x":35556.24500068716,"y":33217.03786906918},"targetPosition":{"x":35230.10643190333,"y":32980.148545011216},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"2d8cbbda-0c6c-4f48-ab1a-4f3ee6cb46d1","savedPayload":{"position":{"x":35144.11024531394,"y":33766.74632003621},"targetPosition":{"x":35186.14435295862,"y":33366.033340052745},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e4719fbb-2730-46bf-9593-75e9544d860c","savedPayload":{"position":{"x":35186.14435295862,"y":33366.033340052745},"targetPosition":{"x":35230.10643190333,"y":32980.148545011216},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"60819e62-c36a-4cf6-86ea-09aa1046f1b7","savedPayload":{"position":{"x":35230.10643190333,"y":32980.148545011216},"targetPosition":{"x":35061.15284169607,"y":32613.19638922832},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"297f0537-a281-46ab-89a4-9aab36495673","savedPayload":{"position":{"x":35061.15284169607,"y":32613.19638922832},"targetPosition":{"x":34898.47957079251,"y":32244.880649959683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"e3b43a25-cbb0-4ebc-ac2f-148a56d7d934"}}}],"announcements":[],"id":"83f85765-e13b-406a-bd56-7fd820eebc16","savedPayload":{"position":{"x":34898.47957079251,"y":32244.880649959683},"targetPosition":{"x":34566.985205192934,"y":32026.856287734012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cf907f3e-a01a-4ffb-9e3b-23ea0d8f34d1","savedPayload":{"position":{"x":33892.049283641114,"y":31512.87348125915},"targetPosition":{"x":33565.701923404486,"y":31275.6154406843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"fa95edc3-acc6-44c0-acb1-47583e1ff54a","savedPayload":{"position":{"x":33690.80820420145,"y":32071.297117691756},"targetPosition":{"x":33628.26011341306,"y":31673.51260213062},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"67446ae0-3e01-451b-8689-d9c7ea48a1f4","savedPayload":{"position":{"x":33629.00012297632,"y":31673.95650524724},"targetPosition":{"x":33565.701923404486,"y":31275.6154406843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3f7a5501-fa20-4b3b-b038-2297cb2fd04e","savedPayload":{"position":{"x":33565.701923404486,"y":31275.6154406843},"targetPosition":{"x":33239.48474341851,"y":31038.643250235426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"938021bb-3f71-4d07-961b-bdac0c208ec6","savedPayload":{"position":{"x":33385.03651416626,"y":31721.91869755804},"targetPosition":{"x":33115.24150182601,"y":31421.868407518647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"dc7931a1-ce6a-4a8b-bc84-65cbfc4ebbd0","savedPayload":{"position":{"x":32676.438509295866,"y":32098.960417908125},"targetPosition":{"x":32895.535995884864,"y":31760.66588131618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4f75b57a-e00c-4479-9cf0-7c87eef8254b","savedPayload":{"position":{"x":32895.5338274171,"y":31760.68558474898},"targetPosition":{"x":33115.24150182601,"y":31421.868407518647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2371e1b0-7d6e-47d8-92b3-8447bd933af5","savedPayload":{"position":{"x":33115.24150182601,"y":31421.868407518647},"targetPosition":{"x":33239.48474341851,"y":31038.643250235426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"77e56192-a0b0-4786-afdb-8e59ba757ccf","savedPayload":{"position":{"x":33239.48474341851,"y":31038.643250235426},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S3 - 2H Down","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"0c6d7b91-4bbf-4e27-850c-6348ffea4055","savedPayload":{"position":{"x":31634.350378426207,"y":30259.571095345415},"targetPosition":{"x":32263.43911849039,"y":30259.947220728467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9c8b0541-0125-4ed1-8bcb-2d8a539bcc85","savedPayload":{"position":{"x":32263.43911849039,"y":30259.947220728467},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"b09863b6-7ea3-4929-8b3c-f99409fb1bf1","savedPayload":{"position":{"x":31696.88500088226,"y":29870.632625415637},"targetPosition":{"x":32294.89171998345,"y":30065.140782336246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"26835b4a-83a2-4209-84a0-e38c74ff993a","savedPayload":{"position":{"x":32294.89171998345,"y":30065.140782336246},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"2fc1bc08-9def-4a37-abc3-dbac24a2c360","savedPayload":{"position":{"x":31875.884827815316,"y":29520.365687488113},"targetPosition":{"x":32384.487164002785,"y":29890.063455449697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1fa5642c-48f4-492b-81d3-5d752decd8af","savedPayload":{"position":{"x":32384.487164002785,"y":29890.063455449697},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Down","code":"chart.at02hs.bollingerBand.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Down\"","id":"07c23ae8-6440-4b6e-aabe-67afdba80c7c","savedPayload":{"position":{"x":32154.209372947636,"y":29242.349943028978},"targetPosition":{"x":32523.67032296668,"y":29751.085106238465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c14a9e3b-6d84-44c9-8273-1a37850087b4","savedPayload":{"position":{"x":32523.67032296668,"y":29751.085106238465},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Up","code":"chart.at02hs.bollingerBand.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Up\"","id":"57d558fd-ecfa-429a-9304-88f41b32b44c","savedPayload":{"position":{"x":32504.830345617527,"y":29063.85702318619},"targetPosition":{"x":32698.994485377014,"y":29661.828315918163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ab49ca45-333d-4ed9-99a1-a3ca632cbbb2","savedPayload":{"position":{"x":32698.994485377014,"y":29661.828315918163},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H NOT Side","code":"chart.at04hs.bollingerSubChannel.slope === \"Side\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope != \"Side\"","id":"261d9835-4d23-4b58-946d-b9324d920273","savedPayload":{"position":{"x":32893.22119985897,"y":29002.336709240757},"targetPosition":{"x":32893.22305153142,"y":29631.07615103375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4d450dc4-bfbb-4779-b070-cac385b809c7","savedPayload":{"position":{"x":32893.22305153142,"y":29631.07615103375},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H RSI > 60","code":"chart.at24hs.rsi14.value < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.rsi14.value > 60","id":"c0afd580-e4b8-4c7c-ac4c-7370e5a79a98","savedPayload":{"position":{"x":33281.4681278924,"y":29063.86071973356},"targetPosition":{"x":33087.3880414573,"y":29661.86609096789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"95207d90-4af8-4b5a-8321-0076e8b8929d","savedPayload":{"position":{"x":33087.3880414573,"y":29661.86609096789},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"92ef2b33-6bd1-4ab7-91a4-ddb3e035ed08","savedPayload":{"position":{"x":33632.012109517724,"y":29242.375556754567},"targetPosition":{"x":33262.687218260275,"y":29751.231513287654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3ac7ebe1-3f6f-4e35-a8a2-f39aa509c849","savedPayload":{"position":{"x":33262.687218260275,"y":29751.231513287654},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 3: 02H Down && 4H Side && 1H Medium, Steep or Extreme","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Down\" && chart.at12hs.bollingerChannel.direction === \"Down\" && chart.at04hs.bollingerSubChannel.slope === \"Side\" && (chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\")) {false} else {true}","id":"6ef3aec8-78cb-4942-bcfd-ff860b2b7971","savedPayload":{"position":{"x":33910.39444114047,"y":29520.60636592229},"targetPosition":{"x":33401.847358196974,"y":29890.34803965414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5af02e84-f067-45ee-8d7e-44966254e430","savedPayload":{"position":{"x":33401.847358196974,"y":29890.34803965414},"targetPosition":{"x":32893.236637209084,"y":30260.196412414953},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"20017afc-2e99-4596-9a1d-41b8b8ee7999","savedPayload":{"position":{"x":32893.236637209084,"y":30260.196412414953},"targetPosition":{"x":33087.874215175114,"y":30859.83394852712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"e6080867-291e-4dc7-b00f-582656e25e80","savedPayload":{"position":{"x":33087.874215175114,"y":30859.83394852712},"targetPosition":{"x":33217.802289890395,"y":31259.358809115663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"890f22bb-d291-4fdd-b444-5afbea478f13","savedPayload":{"position":{"x":33996.096905529594,"y":29767.64086654404},"targetPosition":{"x":33805.65783204276,"y":30141.695325277316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ef921c85-8bd3-49cc-aeaa-2556181fec27","savedPayload":{"position":{"x":33805.65783204276,"y":30141.695325277316},"targetPosition":{"x":33599.576454871414,"y":30510.782338093184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d4217f36-b6e4-45dc-979d-5ad1e74d0b85","savedPayload":{"position":{"x":33599.576454871414,"y":30510.782338093184},"targetPosition":{"x":33408.94602515501,"y":30885.02159265233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"92cd971f-1315-425e-883c-4adefb12883e","savedPayload":{"position":{"x":33408.94602515501,"y":30885.02159265233},"targetPosition":{"x":33217.802289890395,"y":31259.358809115663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"f5611889-2d66-4b5a-84ca-1bd444e56cb0","savedPayload":{"position":{"x":33395.423835013324,"y":29567.707236019025},"targetPosition":{"x":33709.38286226146,"y":30112.552280287062},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96fdbdfc-c7d9-4e54-972c-de01d3f58a76","savedPayload":{"position":{"x":33709.38286226146,"y":30112.552280287062},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"ccd315a6-ae1c-4fcf-b6d4-deac89aef390","savedPayload":{"position":{"x":33778.40641159468,"y":29431.615941930762},"targetPosition":{"x":33908.92112230485,"y":30046.80251988933},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"382fb23e-b4bc-4792-a492-328fa6201f6c","savedPayload":{"position":{"x":33908.92112230485,"y":30046.80251988933},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"cbc7b7f8-b6f1-4752-9259-6372178089e4","savedPayload":{"position":{"x":34170.783725012014,"y":29411.253122777303},"targetPosition":{"x":34105.031023089345,"y":30036.658201403985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"74975af2-4802-47bc-8251-97981c77dc4a","savedPayload":{"position":{"x":34105.031023089345,"y":30036.658201403985},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Down","code":"chart.at02hs.bollingerBand.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Down\"","id":"b7bdf1ce-16a5-4fc0-a87b-f8815615ef99","savedPayload":{"position":{"x":34550.61749887825,"y":29513.125500171263},"targetPosition":{"x":34294.97437106376,"y":30087.594297581873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a1e09269-19e5-4dff-8aeb-66d8bf6bd96d","savedPayload":{"position":{"x":34294.97437106376,"y":30087.594297581873},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Up","code":"chart.at02hs.bollingerBand.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Up\"","id":"c516d181-ad48-49cd-a298-fddb6e91de94","savedPayload":{"position":{"x":34880.39014568893,"y":29727.362169392713},"targetPosition":{"x":34459.88109390561,"y":30194.77025937824},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d57a06c7-d40b-4488-93fe-f7441dd299c6","savedPayload":{"position":{"x":34459.88109390561,"y":30194.77025937824},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H NOT Side","code":"chart.at04hs.bollingerSubChannel.slope === \"Side\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope != \"Side\"","id":"9fabe671-7d14-43b5-ba69-831f4f2a066f","savedPayload":{"position":{"x":35127.70499575345,"y":30032.837976998024},"targetPosition":{"x":34583.614143110055,"y":30347.712936148797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"177c777c-ff05-4dc0-8b6b-d663b7329938","savedPayload":{"position":{"x":34583.614143110055,"y":30347.712936148797},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H RSI > 60","code":"chart.at24hs.rsi14.value < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.rsi14.value > 60","id":"e48e0eea-8553-4baa-ab82-de8e822619b3","savedPayload":{"position":{"x":35232.973925329425,"y":30343.470555819193},"targetPosition":{"x":34654.06615516728,"y":30531.468555641797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ee231079-650d-4046-8e5b-ad3a82e09efa","savedPayload":{"position":{"x":34654.06615516728,"y":30531.468555641797},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"241ea7c4-ec8c-4f74-994f-27cdc3cc5084","savedPayload":{"position":{"x":35289.263598407466,"y":30849.634778970838},"targetPosition":{"x":34664.35817900187,"y":30727.80228253821},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b1bb2780-2f92-47da-9ea5-39d0397e7144","savedPayload":{"position":{"x":34664.35817900187,"y":30727.80228253821},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 3: 02H Down && 4H Side && 1H Medium, Steep or Extreme","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Down\" && chart.at12hs.bollingerChannel.direction === \"Down\" && chart.at04hs.bollingerSubChannel.slope === \"Side\" && (chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\")) {false} else {true}","id":"35f95b09-f037-43ba-96f9-fa9d7d677bea","savedPayload":{"position":{"x":35186.911624698034,"y":31174.495365223673},"targetPosition":{"x":34613.44451250334,"y":30917.967080169867},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6d92e5f1-7164-4f38-9a56-07334aee23fd","savedPayload":{"position":{"x":34613.44451250334,"y":30917.967080169867},"targetPosition":{"x":34039.16510092277,"y":30662.160080407033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2f0018b8-a386-4eb2-8cf8-b61c00af7639","savedPayload":{"position":{"x":34039.16510092277,"y":30662.160080407033},"targetPosition":{"x":33617.50526924846,"y":31130.04262069468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"ef95cbde-2d8b-4b1e-99a5-887e8ae2134c","savedPayload":{"position":{"x":34064.66251833871,"y":31147.655408084436},"targetPosition":{"x":33889.356993272086,"y":31341.668778615298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96060481-8324-4e13-808e-110537619ad7","savedPayload":{"position":{"x":33827.692335875254,"y":31119.423819500727},"targetPosition":{"x":33617.50526924846,"y":31130.04262069468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a937976d-4084-4184-a913-910b75ed6659","savedPayload":{"position":{"x":33617.50526924846,"y":31130.04262069468},"targetPosition":{"x":33217.802289890395,"y":31259.358809115663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"def5d0af-b5ee-43f9-9ea0-0b73cd37d82e","savedPayload":{"position":{"x":33217.802289890395,"y":31259.358809115663},"targetPosition":{"x":33027.197109693196,"y":31632.476242375036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"7e0c459e-9cc8-4d5a-bc57-fb82c79c09c5","savedPayload":{"position":{"x":35135.70214605619,"y":30167.516083927436},"targetPosition":{"x":35293.07724412037,"y":30440.26764173129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"e3edba7e-b9f0-4f02-8f66-ce5b9829d767","savedPayload":{"position":{"x":35922.91984041911,"y":29348.815450539747},"targetPosition":{"x":35765.484647432946,"y":29621.567567535756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"076b5c63-1619-410e-9ee5-1fa66f3d035f","savedPayload":{"position":{"x":35765.484647432946,"y":29621.567567535756},"targetPosition":{"x":35607.95729325596,"y":29894.457895979314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"094675d4-792f-4529-9f36-55540ba6c57d","savedPayload":{"position":{"x":35607.95729325596,"y":29894.457895979314},"targetPosition":{"x":35450.49478104098,"y":30167.39244502679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"7318274d-9569-419a-ba18-c3c1df7191f8","savedPayload":{"position":{"x":35450.49478104098,"y":30167.39244502679},"targetPosition":{"x":35293.07724412037,"y":30440.26764173129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"d4d2eb85-82c2-4c39-9f1f-9c865905dd5b","savedPayload":{"position":{"x":35293.07724412037,"y":30440.26764173129},"targetPosition":{"x":35288.817725527595,"y":30747.9133770426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"295179a4-3458-455d-b4de-549db3a926a8","savedPayload":{"position":{"x":35288.817725527595,"y":30747.9133770426},"targetPosition":{"x":35289.0497852532,"y":31090.402311553746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"3466c2e0-e14f-4e76-9735-651f84617051","savedPayload":{"position":{"x":35692.920333218164,"y":30268.646393535015},"targetPosition":{"x":35659.66370706001,"y":30581.829281582708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"0ecb1abe-ce06-4d16-a850-b180b6b66252","savedPayload":{"position":{"x":36605.838815369854,"y":29816.50777554093},"targetPosition":{"x":36420.67086759038,"y":30071.16215403728},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"30e0b04a-1a96-4850-ae5c-f3e85da03da3","savedPayload":{"position":{"x":36420.67086759038,"y":30071.16215403728},"targetPosition":{"x":36235.36714817673,"y":30325.959128296938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"f6e4f3d5-a156-48d8-9c93-1109c5a5fca5","savedPayload":{"position":{"x":36861.988247619585,"y":30391.53865762637},"targetPosition":{"x":36548.78807948588,"y":30358.761659611344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a40f8de3-9ee1-47f7-9f91-71dd2240ab98","savedPayload":{"position":{"x":36548.78807948588,"y":30358.761659611344},"targetPosition":{"x":36235.36714817673,"y":30325.959128296938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"22980027-50ca-447a-a53c-fa84e87cfc4b","savedPayload":{"position":{"x":36235.36714817673,"y":30325.959128296938},"targetPosition":{"x":35947.5490253868,"y":30453.9215256811},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"ae0768db-6f1c-438d-af27-223b71c98b26","savedPayload":{"position":{"x":35947.5490253868,"y":30453.9215256811},"targetPosition":{"x":35659.66370706001,"y":30581.829281582708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"76c590b2-d1f8-497d-aadc-084d4500772c","savedPayload":{"position":{"x":35659.66370706001,"y":30581.829281582708},"targetPosition":{"x":35474.3107204167,"y":30836.26619004085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9fcc3e4a-8a02-4dbd-82b8-b0f10843f527","savedPayload":{"position":{"x":35474.3107204167,"y":30836.26619004085},"targetPosition":{"x":35289.0497852532,"y":31090.402311553746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"1f9b31ce-64a5-4606-ba43-cdab0eb3dece","savedPayload":{"position":{"x":35888.51870731133,"y":30897.094478356263},"targetPosition":{"x":35588.76478443183,"y":30993.81670423616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"811a932e-9ad1-454e-aa71-86c100807627","savedPayload":{"position":{"x":35588.76478443183,"y":30993.81670423616},"targetPosition":{"x":35289.0497852532,"y":31090.402311553746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"4c2c3a4f-8cca-4211-b3d1-180266f99704","savedPayload":{"position":{"x":35888.02932685479,"y":31285.56938726938},"targetPosition":{"x":35588.475187273674,"y":31188.07770374712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7da16723-66b0-44a8-80a2-32afbfc33eda","savedPayload":{"position":{"x":35588.475187273674,"y":31188.07770374712},"targetPosition":{"x":35289.0497852532,"y":31090.402311553746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"05204106-bf49-4b86-be1e-c04acfff70ff","savedPayload":{"position":{"x":35289.0497852532,"y":31090.402311553746},"targetPosition":{"x":34270.93031373407,"y":31829.561903674166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"b739c187-7a8d-4877-b35d-db44832293a9","savedPayload":{"position":{"x":34582.036710214496,"y":31878.912006201877},"targetPosition":{"x":34270.93031373407,"y":31829.561903674166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"79d58168-9a31-4fe8-9e7e-19212ea5b481","savedPayload":{"position":{"x":34611.957839823925,"y":32060.94845886817},"targetPosition":{"x":34306.356993272086,"y":32012.668778615298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4a32c55d-ae86-4918-b898-ad027b574e14","savedPayload":{"position":{"x":34456.25406941115,"y":32084.595626386963},"targetPosition":{"x":34270.93031373407,"y":31829.561903674166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"96a417b6-09d8-4b1e-9778-3bef281c7849","savedPayload":{"position":{"x":34270.93031373407,"y":31829.561903674166},"targetPosition":{"x":33027.197109693196,"y":31632.476242375036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Slow Run","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"c57b9aaa-edc1-4a24-a2f9-1eeb3eed3d5c","savedPayload":{"position":{"x":34130.26731414797,"y":32800.3400427803},"targetPosition":{"x":33790.66857191591,"y":32553.726624302923},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"22d1ba82-cecd-4ebf-a9b0-c02a2dcc4385","savedPayload":{"position":{"x":33790.66857191591,"y":32553.726624302923},"targetPosition":{"x":33432.69324860659,"y":32293.801129954125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f41b282c-06b8-4a86-9c94-18173ce77526","savedPayload":{"position":{"x":33432.82333847737,"y":32294.4434055754},"targetPosition":{"x":33092.84480699051,"y":32047.383542560598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"214e21c2-bdab-4d05-91b2-02f327d177b8","savedPayload":{"position":{"x":33560.189047347376,"y":33061.25591731097},"targetPosition":{"x":33168.17755880856,"y":32910.85719093055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"401d2bc0-0193-42de-8a65-df43242eb516","savedPayload":{"position":{"x":31019.353328127647,"y":34771.29319333476},"targetPosition":{"x":30873.113188713138,"y":34459.5430677265},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b023b429-024c-46eb-86f8-6e4e23be3b3c","savedPayload":{"position":{"x":30873.113188713138,"y":34459.5430677265},"targetPosition":{"x":30730.968945388893,"y":34140.681493701086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ee7cd341-d632-47d6-9ddf-4462e6961461","savedPayload":{"position":{"x":30730.968945388893,"y":34140.681493701086},"targetPosition":{"x":30588.167033308324,"y":33817.51375204604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"5c96f85d-f36d-496f-8c82-68bdbde4456f","savedPayload":{"position":{"x":32841.61331690757,"y":33175.13217299862},"targetPosition":{"x":33168.17755880856,"y":32910.85719093055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"241d29a5-2372-4c0b-9dd1-9c74e98d8593","savedPayload":{"position":{"x":33168.17755880856,"y":32910.85719093055},"targetPosition":{"x":33099.11889863151,"y":32474.052057676712},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"54a1a04f-b59d-40d9-91d6-9716c0198983","savedPayload":{"position":{"x":33573.69376797636,"y":33571.86718032515},"targetPosition":{"x":33233.80391345122,"y":33325.478360001805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"23d9abaa-63cc-4aef-abaf-7b493213cd29","savedPayload":{"position":{"x":32449.77558908902,"y":34154.4611915215},"targetPosition":{"x":32015.40384472738,"y":34108.56368300236},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"28be9fea-5e5c-4c99-b4a4-6c01a831d9ce","savedPayload":{"position":{"x":32015.40384472738,"y":34108.56368300236},"targetPosition":{"x":31568.575996973697,"y":34061.39642915175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"c59f1c98-a4e9-40c1-8690-6543baa7a966","savedPayload":{"position":{"x":32283.759517871575,"y":34582.810236984864},"targetPosition":{"x":31931.786549495515,"y":34326.11237323376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c24d0f99-6491-40b3-94d9-49f91d354f3c","savedPayload":{"position":{"x":31931.786549495515,"y":34326.11237323376},"targetPosition":{"x":31568.575996973697,"y":34061.39642915175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"d6b4d297-a5fa-4561-acb0-b8d3b891912e","savedPayload":{"position":{"x":31946.197478846712,"y":34889.8385827318},"targetPosition":{"x":31751.053079962017,"y":34472.602873182244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c3f66d39-dc88-4049-895a-378f492a7d35","savedPayload":{"position":{"x":31751.053079962017,"y":34472.602873182244},"targetPosition":{"x":31568.575996973697,"y":34061.39642915175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"e9ac7090-a4d5-409d-9432-0d422f60e6e1","savedPayload":{"position":{"x":31475.217579292843,"y":34943.29649864423},"targetPosition":{"x":31521.155688266826,"y":34508.526991908395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a05e64ed-4262-42f1-b9dc-cc14f8b27c2d","savedPayload":{"position":{"x":31521.155688266826,"y":34508.526991908395},"targetPosition":{"x":31568.575996973697,"y":34061.39642915175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div previous ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"cb158763-cb2f-494b-88ab-dafeb3825ca4","savedPayload":{"position":{"x":31046.924625195723,"y":34779.00271509945},"targetPosition":{"x":31304.05023460572,"y":34425.23837899979},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"386bbe6b-9082-47e7-b750-e0e9d16a7030","savedPayload":{"position":{"x":31304.05023460572,"y":34425.23837899979},"targetPosition":{"x":31568.575996973697,"y":34061.39642915175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"32813be2-a6cd-4e5d-9a58-87eae5b3b5e9","savedPayload":{"position":{"x":33456.2367626283,"y":34169.229931685244},"targetPosition":{"x":33390.31829204923,"y":33754.57207201343},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"264bdd5b-5246-4a3f-bd09-5c50baf57963","savedPayload":{"position":{"x":33390.31829204923,"y":33754.57207201343},"targetPosition":{"x":33233.80391345122,"y":33325.478360001805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"241d29a5-2372-4c0b-9dd1-9c74e98d8593"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"308d9cf6-beba-4d14-9b90-bb11409e3835","savedPayload":{"position":{"x":32678.163507437253,"y":36556.91105564189},"targetPosition":{"x":32834.64820004886,"y":36148.98136136614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a787ffbe-ea25-41cb-a719-de115285eead","savedPayload":{"position":{"x":32834.64820004886,"y":36148.98136136614},"targetPosition":{"x":32991.201109072026,"y":35740.89140224141},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d4b41076-5b23-498d-bc3e-1ccf277a1a43","savedPayload":{"position":{"x":32739.83720167254,"y":34005.06095530531},"targetPosition":{"x":32986.689244005254,"y":33665.01100359143},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"7cb4214c-3e3e-4a70-ad14-6ae2a568f24c","savedPayload":{"position":{"x":32986.689244005254,"y":33665.01100359143},"targetPosition":{"x":33233.80391345122,"y":33325.478360001805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"241d29a5-2372-4c0b-9dd1-9c74e98d8593"}}}],"announcements":[],"id":"592ad0d7-d583-4827-8ae6-48f6ad25c1a3","savedPayload":{"position":{"x":33233.80391345122,"y":33325.478360001805},"targetPosition":{"x":33168.17755880856,"y":32910.85719093055},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"580ecace-0d6d-4632-ad8d-e6dc86df51c8","savedPayload":{"position":{"x":33668.801065501335,"y":33887.456734513806},"targetPosition":{"x":33276.768273175025,"y":33736.54711405289},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bf6a5ecf-f5c8-4d13-a15c-1b567422bee0","savedPayload":{"position":{"x":34576.829412485866,"y":37000.01142562244},"targetPosition":{"x":34410.432322905384,"y":36626.06517025616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ca87de8b-af92-4d83-af59-7c71f17e1be4","savedPayload":{"position":{"x":34410.432322905384,"y":36626.06517025616},"targetPosition":{"x":34243.930379694895,"y":36251.90943343497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"d626af7e-c8bb-4e17-95e5-ba5abda158d8","savedPayload":{"position":{"x":33763.03089309385,"y":36914.47628256974},"targetPosition":{"x":34003.45132162593,"y":36583.27161248551},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"98a76d2a-1ec4-413c-85b2-59865c6e1187","savedPayload":{"position":{"x":34003.45132162593,"y":36583.27161248551},"targetPosition":{"x":34243.930379694895,"y":36251.90943343497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9406f175-4d00-436d-ab9e-27081d36611b","savedPayload":{"position":{"x":34243.930379694895,"y":36251.90943343497},"targetPosition":{"x":34286.475860589395,"y":35844.37747430465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"aef3e320-bbaf-42e5-8083-21157428bfaf","savedPayload":{"position":{"x":33126.35798120075,"y":34129.20434251816},"targetPosition":{"x":33276.768273175025,"y":33736.54711405289},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"241d29a5-2372-4c0b-9dd1-9c74e98d8593"}}}],"announcements":[],"id":"9b594083-3fb0-4dfa-ba4b-1b1ada8687fe","savedPayload":{"position":{"x":33276.768273175025,"y":33736.54711405289},"targetPosition":{"x":33233.80391345122,"y":33325.478360001805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"80d81cb5-6a3a-4eff-ad9f-5590450c7366","savedPayload":{"position":{"x":33158.365096722715,"y":32462.606975036346},"targetPosition":{"x":33092.84480699051,"y":32047.383542560598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"8d20508d-dc45-4488-8a09-814a24826d00","savedPayload":{"position":{"x":32806.905084060476,"y":32680.453294176434},"targetPosition":{"x":32744.356993272086,"y":32282.668778615298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c04c40be-cd86-4c0e-b802-681f5c47a7f7","savedPayload":{"position":{"x":32846.11743673657,"y":32387.282950915138},"targetPosition":{"x":33092.84480699051,"y":32047.383542560598},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3ea826ac-fe6b-4b8c-a0dc-f830202e8306","savedPayload":{"position":{"x":33092.84480699051,"y":32047.383542560598},"targetPosition":{"x":33027.197109693196,"y":31632.476242375036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"0400f408-3b91-42fd-839b-c71d8212e22b","savedPayload":{"position":{"x":32424.640743292275,"y":32175.998602689077},"targetPosition":{"x":32653.493876842065,"y":31823.167177806845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"761d7668-7a62-4221-be67-5754f4b7b2f2","savedPayload":{"position":{"x":32352.256298910706,"y":32433.62407361041},"targetPosition":{"x":32571.508942630673,"y":32095.215305371734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"00e6ad00-1176-41ab-a1f3-52a59aa8f7cd","savedPayload":{"position":{"x":32242.00054662029,"y":31910.80310333033},"targetPosition":{"x":32653.493876842065,"y":31823.167177806845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f83a0cfd-237d-4b3f-b4f0-9fa0a71b00bb","savedPayload":{"position":{"x":32653.493876842065,"y":31823.167177806845},"targetPosition":{"x":33027.197109693196,"y":31632.476242375036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4af71378-a61f-4d1d-a1cd-6933897ef3bd","savedPayload":{"position":{"x":33027.197109693196,"y":31632.476242375036},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S8 - 4H Up","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"0b8368d3-b1b1-413b-bbeb-95641a85b80f","savedPayload":{"position":{"x":32583.02153148494,"y":30375.069170464114},"targetPosition":{"x":32890.507807742724,"y":30666.144907896156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6034fcd2-8d4d-48b8-a392-18535fa70a53","savedPayload":{"position":{"x":32890.507807742724,"y":30666.144907896156},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"5e94af5d-2be9-4ae9-ae44-2867f755a827","savedPayload":{"position":{"x":32771.60113409807,"y":30224.788572225458},"targetPosition":{"x":32985.067261121585,"y":30591.65661580369},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f811cfed-9f3e-4211-84da-066b038d0b33","savedPayload":{"position":{"x":32985.067261121585,"y":30591.65661580369},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"9d5052c6-8411-4f18-ace8-17f021dfd5e2","savedPayload":{"position":{"x":32997.279518098934,"y":30134.976526965966},"targetPosition":{"x":33098.83303822341,"y":30547.231787359233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d4f2d1aa-32fd-4345-8291-3da0a9bf3fc5","savedPayload":{"position":{"x":33098.83303822341,"y":30547.231787359233},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Up\"","id":"3347b5df-6552-43dd-8265-43bb7d87df98","savedPayload":{"position":{"x":33236.19812252272,"y":30108.997090796624},"targetPosition":{"x":33217.92836568535,"y":30533.18565473396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7a4b6d88-b433-435d-a683-6eb73780f27b","savedPayload":{"position":{"x":33217.92836568535,"y":30533.18565473396},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"3bf685d6-ac1f-4bab-a7f1-8450ee657948","savedPayload":{"position":{"x":33473.11688690986,"y":30153.501414040173},"targetPosition":{"x":33336.27708618797,"y":30555.259147958208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"22eebcad-ee09-4e3b-897e-9495bb82784d","savedPayload":{"position":{"x":33336.27708618797,"y":30555.259147958208},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Side or 1H Extreme or Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope === \"Side\" || (chart.at04hs.bollingerSubChannel.slope === \"Gentle\" && (chart.at01hs.bollingerSubChannel.slope === \"Extreme\" || chart.at01hs.bollingerSubChannel.slope === \"Side\"))","id":"d5a69ea3-5ae1-4e4b-b858-8844f20f6369","savedPayload":{"position":{"x":33688.10523565221,"y":30263.125417578416},"targetPosition":{"x":33443.773670688315,"y":30610.037447064653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"54ac9a91-76eb-4d28-9d75-bcad0008c481","savedPayload":{"position":{"x":33443.773670688315,"y":30610.037447064653},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"e84f9d0b-15fc-4656-a2ed-392304b44df3","savedPayload":{"position":{"x":33863.57761044307,"y":30428.90350360676},"targetPosition":{"x":33531.52386726751,"y":30692.94592730243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"658b7720-b18e-42d0-9cb3-7f5c71928409","savedPayload":{"position":{"x":33531.52386726751,"y":30692.94592730243},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 3: 02H Down && 4H Side && 1H Medium, Steep or Extreme","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Down\" && chart.at12hs.bollingerChannel.direction === \"Down\" && chart.at04hs.bollingerSubChannel.slope === \"Side\" && (chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\")) {false} else {true}","id":"84b0abb3-cf34-491e-9436-4fdb07ee4977","savedPayload":{"position":{"x":33985.280778200904,"y":30637.388456021126},"targetPosition":{"x":33592.38327848182,"y":30797.24063448982},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f39b86b4-5a2a-470c-8503-0ee11eab51f6","savedPayload":{"position":{"x":33592.38327848182,"y":30797.24063448982},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 4: 02H Up && 02H Gentle && 3H Side","code":"chart.at02hs.percentageBandwidth.movingAverage > chart.at24hs.bollingerSubChannel.slope + chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Gentle\" && chart.at03hs.bollingerSubChannel.slope === \"Side\") {false} else {true}","id":"3bde8f4f-c2e3-413b-8df1-37aeb20a85f9","savedPayload":{"position":{"x":34043.32401464137,"y":30871.65436333817},"targetPosition":{"x":33621.38059220496,"y":30914.477414693258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"04fd8c8d-8074-4932-b3e1-56357c7829ea","savedPayload":{"position":{"x":33621.38059220496,"y":30914.477414693258},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 2: 02H, 03H, 04H, 06H, all Up && 2H Steep && 1H, 6H NOT Gentle","code":"chart.at24hs.bollingerChannel.direction + chart.at24hs.bollingerBand.slope > chart.at01hs.rsi14.value","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerSubChannel.direction === \"Up\" && chart.at03hs.bollingerSubChannel.direction === \"Up\" && chart.at04hs.bollingerSubChannel.direction === \"Up\" && chart.at06hs.bollingerSubChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Steep\" && chart.at01hs.bollingerSubChannel.slope != \"Gentle\" && chart.at06hs.bollingerSubChannel.slope != \"Gentle\") {false} else {true}","id":"cf1a034f-093e-422f-ba6f-ec4c3ce091d2","savedPayload":{"position":{"x":34030.35077514018,"y":31104.321423914676},"targetPosition":{"x":33616.07981062104,"y":31035.056200409377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"69c8d1ca-52b4-4eed-a65b-7a8a870bb46d","savedPayload":{"position":{"x":33616.07981062104,"y":31035.056200409377},"targetPosition":{"x":33198.90105550597,"y":30956.877809899306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"64643171-239b-49ac-adc7-0124075eb96e","savedPayload":{"position":{"x":33198.90105550597,"y":30956.877809899306},"targetPosition":{"x":33028.14648636911,"y":31378.695917323454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"9c8b28ef-af88-416c-9262-20efbf357408","savedPayload":{"position":{"x":33028.14648636911,"y":31378.695917323454},"targetPosition":{"x":32835.90089509466,"y":31756.649802761232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"09286632-34ad-4ea0-9f01-32bd89b20900","savedPayload":{"position":{"x":34447.590158460414,"y":31232.025739290348},"targetPosition":{"x":34044.21217345816,"y":31363.108994682723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f75343e2-3c65-413b-85de-8e88a1f91e09","savedPayload":{"position":{"x":34044.21217345816,"y":31363.108994682723},"targetPosition":{"x":33640.74002460985,"y":31494.101999004426},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"68074fb6-7ca9-43a7-a83c-abcd0c55148c","savedPayload":{"position":{"x":33640.74002460985,"y":31494.101999004426},"targetPosition":{"x":33239.78472574559,"y":31625.86269368105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"07f812fb-602f-4713-871d-648faa64a6ce","savedPayload":{"position":{"x":33239.78472574559,"y":31625.86269368105},"targetPosition":{"x":32835.90089509466,"y":31756.649802761232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"07c87bc6-f04b-4a08-88c3-82df8036a971","savedPayload":{"position":{"x":33850.367819499166,"y":31107.164291469344},"targetPosition":{"x":33751.92630459747,"y":31519.524189915035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9a120c5b-3fda-4ff3-89af-621d53b2e075","savedPayload":{"position":{"x":33751.92630459747,"y":31519.524189915035},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"d054b93f-3378-49e9-9e18-73373b1ec935","savedPayload":{"position":{"x":34061.47889360183,"y":31200.202061977026},"targetPosition":{"x":33848.155210901954,"y":31560.253992569105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cbc32f34-4189-4526-a323-9291e672495c","savedPayload":{"position":{"x":33848.155210901954,"y":31560.253992569105},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"562f3238-94f0-41af-8d61-f9984bc8bd0b","savedPayload":{"position":{"x":34248.89826260879,"y":31340.441558383638},"targetPosition":{"x":33943.065513621616,"y":31634.31513182773},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d5b4549d-92bd-4c3e-af81-884899aae8d9","savedPayload":{"position":{"x":33943.065513621616,"y":31634.31513182773},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Up\"","id":"ce7a4a64-743a-443d-a825-b02c25d4b55a","savedPayload":{"position":{"x":34389.59498945044,"y":31536.34634291851},"targetPosition":{"x":34013.448225311375,"y":31732.263679781754},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4b992367-9f3a-4ce3-b389-2fc84c8cca16","savedPayload":{"position":{"x":34013.448225311375,"y":31732.263679781754},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"a1c10e9c-19b9-4805-b441-ce3ec64b23a1","savedPayload":{"position":{"x":34469.42688721992,"y":31763.970288609766},"targetPosition":{"x":34053.391618664995,"y":31846.123357271776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f5f2b1bb-f847-4994-a1ab-5252c7c685c6","savedPayload":{"position":{"x":34053.391618664995,"y":31846.123357271776},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Side or 1H Extreme or Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope === \"Side\" || (chart.at04hs.bollingerSubChannel.slope === \"Gentle\" && (chart.at01hs.bollingerSubChannel.slope === \"Extreme\" || chart.at01hs.bollingerSubChannel.slope === \"Side\"))","id":"3d26867a-7ffc-4b17-a226-c2cf2d02a1ae","savedPayload":{"position":{"x":34481.870711502044,"y":32004.452875644973},"targetPosition":{"x":34059.63071301428,"y":31966.419472112397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a96f6aed-5ba0-458e-b073-a14a7030a4ce","savedPayload":{"position":{"x":34059.63071301428,"y":31966.419472112397},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"f674d92e-8b5b-4a88-9c97-c0499fea9f41","savedPayload":{"position":{"x":34425.87549450783,"y":32239.301956007203},"targetPosition":{"x":34031.64897146041,"y":32083.89092574789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b0663ef7-ad0e-44eb-8448-87c92b066de1","savedPayload":{"position":{"x":34031.64897146041,"y":32083.89092574789},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 3: 02H Down && 4H Side && 1H Medium, Steep or Extreme","code":"chart.at24hs.bollingerChannel.direction === \"Up\"","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Down\" && chart.at12hs.bollingerChannel.direction === \"Down\" && chart.at04hs.bollingerSubChannel.slope === \"Side\" && (chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\")) {false} else {true}","id":"6337812b-5df1-428e-9d36-f7935dde3ca7","savedPayload":{"position":{"x":34305.98828960082,"y":32448.99884859954},"targetPosition":{"x":33971.70269044266,"y":32188.76251868252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cda16118-0ec1-4313-bb27-be56055bb89a","savedPayload":{"position":{"x":33971.70269044266,"y":32188.76251868252},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 4: 02H Up && 02H Gentle && 3H Side","code":"chart.at02hs.percentageBandwidth.movingAverage > chart.at24hs.bollingerSubChannel.slope + chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Gentle\" && chart.at03hs.bollingerSubChannel.slope === \"Side\") {false} else {true}","id":"d467380e-37f7-4d69-8384-c766fa7511ef","savedPayload":{"position":{"x":34131.9442575213,"y":32616.530009178252},"targetPosition":{"x":33884.62935458651,"y":32272.531065884734},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"90afdd8d-1565-42b1-abbb-e88eb2e359db","savedPayload":{"position":{"x":33884.62935458651,"y":32272.531065884734},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 2: 02H, 03H, 04H, 06H, all Up && 2H Steep && 1H, 6H NOT Gentle","code":"chart.at24hs.bollingerChannel.direction + chart.at24hs.bollingerBand.slope > chart.at01hs.rsi14.value","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerSubChannel.direction === \"Up\" && chart.at03hs.bollingerSubChannel.direction === \"Up\" && chart.at04hs.bollingerSubChannel.direction === \"Up\" && chart.at06hs.bollingerSubChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Steep\" && chart.at01hs.bollingerSubChannel.slope != \"Gentle\" && chart.at06hs.bollingerSubChannel.slope != \"Gentle\") {false} else {true}","id":"051149b3-b815-4eb2-952c-88317a972764","savedPayload":{"position":{"x":33917.66926583683,"y":32728.305067164874},"targetPosition":{"x":33777.32415729678,"y":32328.419178658256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ac3a3676-3fc0-4eed-97c8-51fe93a65256","savedPayload":{"position":{"x":33777.32415729678,"y":32328.419178658256},"targetPosition":{"x":33637.0339345046,"y":31928.112734113376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3583b309-fa26-4e63-bfb2-055d5bad14b7","savedPayload":{"position":{"x":33637.0339345046,"y":31928.112734113376},"targetPosition":{"x":33213.509077296134,"y":31949.716370342587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"1cca5dce-5617-4b2d-b103-68c7289c7912","savedPayload":{"position":{"x":33248.66251833871,"y":31922.655408084436},"targetPosition":{"x":33073.356993272086,"y":32116.668778615298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bdadf3d3-ff21-4ea1-a342-9c135a422a3b","savedPayload":{"position":{"x":33370.94219349302,"y":32092.35851956931},"targetPosition":{"x":33213.509077296134,"y":31949.716370342587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e86cdca6-99e9-487f-b824-af95cf635d1f","savedPayload":{"position":{"x":33213.509077296134,"y":31949.716370342587},"targetPosition":{"x":32835.90089509466,"y":31756.649802761232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"fa8dc2de-7299-4e00-82a7-deb31393b442","savedPayload":{"position":{"x":32835.90089509466,"y":31756.649802761232},"targetPosition":{"x":32433.371579576764,"y":31886.914337943625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"be4be272-6865-445f-81e9-320f8bfdc392","savedPayload":{"position":{"x":34967.124271760935,"y":32358.1785110076},"targetPosition":{"x":34884.7347766961,"y":32665.58211057604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"5bee76dc-6b48-47d0-92c1-be86008a0567","savedPayload":{"position":{"x":36114.12799068074,"y":32336.170693053667},"targetPosition":{"x":35806.871460174916,"y":32418.413004338316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"058c7bc3-1b46-415d-bcf6-b2b260049b34","savedPayload":{"position":{"x":35806.871460174916,"y":32418.413004338316},"targetPosition":{"x":35499.43380969467,"y":32500.74406598618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cba32e81-cca9-4056-bd59-82f986580893","savedPayload":{"position":{"x":35499.43380969467,"y":32500.74406598618},"targetPosition":{"x":35192.04380396341,"y":32583.121051172304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"72bf5a83-c129-4bcb-b196-7efbf38b3122","savedPayload":{"position":{"x":35192.04380396341,"y":32583.121051172304},"targetPosition":{"x":34884.7347766961,"y":32665.58211057604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"502b92e1-1e58-46a5-9ecf-8cc1636f0ff4","savedPayload":{"position":{"x":34884.7347766961,"y":32665.58211057604},"targetPosition":{"x":34660.02936631182,"y":32890.48337181073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"eb4ede91-3ccc-41f8-b54c-8295767f386c","savedPayload":{"position":{"x":34660.02936631182,"y":32890.48337181073},"targetPosition":{"x":34435.67151202602,"y":33115.14655163129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"39c79407-8af5-465e-af51-1c75aad45115","savedPayload":{"position":{"x":35311.11096720446,"y":32816.9272234083},"targetPosition":{"x":35063.64575113468,"y":33016.76264590724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"aa01ada7-95ad-41e6-96f7-5c31702a541e","savedPayload":{"position":{"x":36286.24106064014,"y":33145.81980834591},"targetPosition":{"x":35972.055489563856,"y":33195.34612138585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d717b269-b5ec-4198-b8c4-4191fbbc4b18","savedPayload":{"position":{"x":35972.055489563856,"y":33195.34612138585},"targetPosition":{"x":35657.673132234,"y":33244.878314280504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"5e2b89fd-d5f9-4c8a-98e1-44ff5c2844cd","savedPayload":{"position":{"x":36058.15655754124,"y":33739.29437123348},"targetPosition":{"x":35857.98050868123,"y":33492.17091282344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d715ce3c-8efb-4ff3-bac9-4339b5906a91","savedPayload":{"position":{"x":35857.98050868123,"y":33492.17091282344},"targetPosition":{"x":35657.673132234,"y":33244.878314280504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1133b940-15fd-4255-8099-8c83ebf9ab1d","savedPayload":{"position":{"x":35657.673132234,"y":33244.878314280504},"targetPosition":{"x":35360.66365230035,"y":33130.86179964265},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"e6a82789-515c-403d-a11d-9c16d7e1e2d0","savedPayload":{"position":{"x":35360.66365230035,"y":33130.86179964265},"targetPosition":{"x":35063.64575113468,"y":33016.76264590724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"2fbf4e78-500b-4e2a-876b-fec9950bfeb4","savedPayload":{"position":{"x":35063.64575113468,"y":33016.76264590724},"targetPosition":{"x":34749.50080339453,"y":33066.0137817785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7e699a39-d4bc-44d7-bb6c-7813d7d63aeb","savedPayload":{"position":{"x":34749.50080339453,"y":33066.0137817785},"targetPosition":{"x":34435.67151202602,"y":33115.14655163129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"3d73ecde-b6ca-4229-9536-fbc7f87e0d45","savedPayload":{"position":{"x":35001.972454730174,"y":33404.90881119627},"targetPosition":{"x":34718.751802473744,"y":33260.05696886418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c43b5b83-3c68-480e-b390-26c224b63bbf","savedPayload":{"position":{"x":34718.751802473744,"y":33260.05696886418},"targetPosition":{"x":34435.67151202602,"y":33115.14655163129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"1e208de6-1b0c-4754-9b10-41edc1653336","savedPayload":{"position":{"x":34723.83391273956,"y":33682.356075508505},"targetPosition":{"x":34579.63262505743,"y":33398.762441228064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2c575ff8-0704-4398-8792-34e0eeb4381f","savedPayload":{"position":{"x":34579.63262505743,"y":33398.762441228064},"targetPosition":{"x":34435.67151202602,"y":33115.14655163129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"05c05d0c-7815-464b-bbf2-f7d2820d0235","savedPayload":{"position":{"x":34435.67151202602,"y":33115.14655163129},"targetPosition":{"x":33180.75535106592,"y":32916.07101014247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"478b1483-d146-4141-b6e7-2e913d285da5","savedPayload":{"position":{"x":33367.5784322329,"y":33173.57800692712},"targetPosition":{"x":33180.75535106592,"y":32916.07101014247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"08bb3184-c06a-43b6-9463-fd922b64abbd","savedPayload":{"position":{"x":33158.957839823925,"y":33124.948458868166},"targetPosition":{"x":32853.356993272086,"y":33076.6687786153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c6b029d3-1de0-4dbf-80bd-e303ae27a2ba","savedPayload":{"position":{"x":33131.10438055651,"y":33230.608107064065},"targetPosition":{"x":33180.75535106592,"y":32916.07101014247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a4386996-dbe4-434c-818b-66ac926fc575","savedPayload":{"position":{"x":33180.75535106592,"y":32916.07101014247},"targetPosition":{"x":32433.371579576764,"y":31886.914337943625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Controlled Run","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"6938be43-dc74-4576-8b0a-8b18bd34792e","savedPayload":{"position":{"x":32052.655649535795,"y":33496.36457838122},"targetPosition":{"x":32096.65981549785,"y":33074.519171615095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"6cefcdbc-918c-4abe-99f9-5a99c391d79b","savedPayload":{"position":{"x":32096.65981549785,"y":33074.519171615095},"targetPosition":{"x":32140.64270658053,"y":32652.206682617852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"901eb16f-14dd-4fd2-81c1-b4713a1b34e0","savedPayload":{"position":{"x":32250.309062987384,"y":32649.586359950557},"targetPosition":{"x":32184.041014524384,"y":32230.18847885705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"0199babe-dfd7-4f18-b9d7-3b73ade997fd","savedPayload":{"position":{"x":31582.494012962958,"y":32962.937014157265},"targetPosition":{"x":31410.280046457636,"y":32575.275710033362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"89e97633-9b3e-42ba-9cf6-bf29d6383a72","savedPayload":{"position":{"x":35114.68579910982,"y":35351.53563650537},"targetPosition":{"x":34955.055100783706,"y":34993.54246316036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"971da4c6-325b-4c78-a025-95dbd138bbc4","savedPayload":{"position":{"x":34955.055100783706,"y":34993.54246316036},"targetPosition":{"x":34795.109639340524,"y":34635.50799960973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2af1c651-e988-4ae0-92a3-d0918b8a1cfe","savedPayload":{"position":{"x":34795.109639340524,"y":34635.50799960973},"targetPosition":{"x":34634.92973533252,"y":34277.38989257793},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"4e18019c-6173-4b68-b709-174bc220cd55","savedPayload":{"position":{"x":31120.854325706285,"y":32749.006422256185},"targetPosition":{"x":31410.280046457636,"y":32575.275710033362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"a8860a5a-66b5-41f0-8a6c-dac7bf971c9d","savedPayload":{"position":{"x":30218.098378964016,"y":31775.44357488877},"targetPosition":{"x":30641.420921935773,"y":31788.395864739927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"690aeb6d-75ec-45c9-b321-9d943d84df5f","savedPayload":{"position":{"x":30641.420921935773,"y":31788.395864739927},"targetPosition":{"x":31065.15767239706,"y":31801.060086999303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"d691ad30-4129-48d1-9b75-2b2337e409d2","savedPayload":{"position":{"x":30312.735304700313,"y":31410.31946547273},"targetPosition":{"x":30688.782681018638,"y":31605.692657427535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"30880b5e-f66a-4d5a-b112-14bcc8bb9ac9","savedPayload":{"position":{"x":30688.782681018638,"y":31605.692657427535},"targetPosition":{"x":31065.15767239706,"y":31801.060086999303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"8d66b5bd-521c-4d19-9fc0-baa4fb54ad84","savedPayload":{"position":{"x":30556.44880964036,"y":31122.5653875293},"targetPosition":{"x":30810.690604022504,"y":31461.749653777068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c4298d6d-c635-49fe-a517-0dc19531c919","savedPayload":{"position":{"x":30810.690604022504,"y":31461.749653777068},"targetPosition":{"x":31065.15767239706,"y":31801.060086999303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"67b51901-a5fe-4fad-aad4-fc4d756b09cc","savedPayload":{"position":{"x":30900.789650854644,"y":30969.119767215772},"targetPosition":{"x":30982.937053526082,"y":31385.017133242192},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b051770c-7c9c-4636-86c8-d3b419f9a8bd","savedPayload":{"position":{"x":30982.937053526082,"y":31385.017133242192},"targetPosition":{"x":31065.15767239706,"y":31801.060086999303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"8d54874e-6c21-434a-80fa-492bf2a9be2b","savedPayload":{"position":{"x":31276.64844988148,"y":30980.361588941225},"targetPosition":{"x":31171.060852877814,"y":31390.702278688343},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9aa25c88-a620-42f1-b1e8-403c5c8718b1","savedPayload":{"position":{"x":31171.060852877814,"y":31390.702278688343},"targetPosition":{"x":31065.15767239706,"y":31801.060086999303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Down && NOT Side","code":"chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Down\" && chart.at01hs.bollingerSubChannel.slope != \"Side\"","id":"e8c97495-8098-4209-a220-6c399baba0f3","savedPayload":{"position":{"x":31610.0599232527,"y":31161.58973768663},"targetPosition":{"x":31338.32832705977,"y":31477.72508842297},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f39ad55a-1988-4ac8-9d5c-99054f951179","savedPayload":{"position":{"x":31338.32832705977,"y":31477.72508842297},"targetPosition":{"x":31065.15767239706,"y":31801.060086999303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"abaf1d9b-b5f9-4f8f-9a59-10936c3ea7b1","savedPayload":{"position":{"x":31065.15767239706,"y":31801.060086999303},"targetPosition":{"x":31237.76485603842,"y":32188.236450221637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"f9636b68-93f0-4100-8046-1d62eed73501","savedPayload":{"position":{"x":31237.76485603842,"y":32188.236450221637},"targetPosition":{"x":31410.280046457636,"y":32575.275710033362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"274cc7b8-9ab0-4f9a-9302-3357cfcac9da"}}}],"announcements":[],"id":"b1d129c5-5f5e-4b1a-a2d6-b79561d2a6ce","savedPayload":{"position":{"x":31410.280046457636,"y":32575.275710033362},"targetPosition":{"x":31797.26417642712,"y":32402.646659011032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"640cd6a8-a447-43ca-84f9-7dc5e6c8c826","savedPayload":{"position":{"x":30847.41292297006,"y":33144.808922085795},"targetPosition":{"x":30998.534423684807,"y":32747.451613870147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"9502bdd5-310a-4048-81ca-1eb0afe3c99d","savedPayload":{"position":{"x":30205.803426783637,"y":34001.091193026725},"targetPosition":{"x":30249.917950331896,"y":33577.896743108766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cb42b9eb-16cb-4bb4-af70-570fc4d1cd29","savedPayload":{"position":{"x":30249.917950331896,"y":33577.896743108766},"targetPosition":{"x":30294.134801020176,"y":33154.57222324627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"da7a29f2-93be-4ce8-aeb0-f286b5710891","savedPayload":{"position":{"x":29796.111617502072,"y":33843.85742346663},"targetPosition":{"x":30044.979866313377,"y":33499.24970649383},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b4748a9d-7f41-4ce0-92ea-267488fd2e02","savedPayload":{"position":{"x":30044.979866313377,"y":33499.24970649383},"targetPosition":{"x":30294.134801020176,"y":33154.57222324627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"792355fa-6601-4a41-b673-b814127b3524","savedPayload":{"position":{"x":29519.96605719332,"y":33502.923264063706},"targetPosition":{"x":29906.846942045566,"y":33328.73011607854},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4cd7afea-ce88-4111-b74e-dc48e34bcee5","savedPayload":{"position":{"x":29906.846942045566,"y":33328.73011607854},"targetPosition":{"x":30294.134801020176,"y":33154.57222324627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"835d94b1-7b62-43bc-bbda-34184c5a5410","savedPayload":{"position":{"x":29451.262472325034,"y":33070.381351734206},"targetPosition":{"x":29872.476892943403,"y":33112.352507651274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"66c6c8dc-f8b2-4534-aeb1-5f7aea412564","savedPayload":{"position":{"x":29872.476892943403,"y":33112.352507651274},"targetPosition":{"x":30294.134801020176,"y":33154.57222324627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Down && NOT Side or Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Down\" && chart.at01hs.bollingerSubChannel.slope != \"Side\" && chart.at01hs.bollingerSubChannel.slope != \"Gentle\"","id":"4734e468-3fd1-4b7e-8361-66dea0f1d3c1","savedPayload":{"position":{"x":29608.402791503686,"y":32660.871196158085},"targetPosition":{"x":29951.00436379901,"y":32907.53037466467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b9f90ab7-e386-4fa3-a326-d99ce319edcd","savedPayload":{"position":{"x":29951.00436379901,"y":32907.53037466467},"targetPosition":{"x":30294.134801020176,"y":33154.57222324627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"26ef5972-8cc4-4b0d-92a4-b7da565b84b4","savedPayload":{"position":{"x":30294.134801020176,"y":33154.57222324627},"targetPosition":{"x":30681.667674684573,"y":32980.164487420945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"9be98459-d007-4f66-94ac-cc7b6c6ad81c","savedPayload":{"position":{"x":30681.667674684573,"y":32980.164487420945},"targetPosition":{"x":30998.534423684807,"y":32747.451613870147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"274cc7b8-9ab0-4f9a-9302-3357cfcac9da"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","code":"chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"c959c1b6-aec3-4db7-a572-477f1ea2c132","savedPayload":{"position":{"x":29433.709225515253,"y":32793.11947467331},"targetPosition":{"x":29820.425136437625,"y":32619.15623349406},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"31460537-bb42-499a-9645-fca83618f4a5","savedPayload":{"position":{"x":29820.425136437625,"y":32619.15623349406},"targetPosition":{"x":30207.276664433924,"y":32445.696257695414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"b3e36006-93f4-4852-a7a7-d612a7e7ec27","savedPayload":{"position":{"x":29423.284124799575,"y":32145.37524164802},"targetPosition":{"x":29812.2635139139,"y":32295.247107792475},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b8fe60bd-1dbd-458d-bdfd-1accfdab0b7c","savedPayload":{"position":{"x":29812.2635139139,"y":32295.247107792475},"targetPosition":{"x":30207.276664433924,"y":32445.696257695414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"6b79a9e3-796e-4db6-8a5c-0bc0bd875f45","savedPayload":{"position":{"x":29863.249250356712,"y":31674.039657913658},"targetPosition":{"x":30035.18086627339,"y":32059.80702167967},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1d09d25e-54eb-4d39-bea6-44f8492a2d10","savedPayload":{"position":{"x":30035.18086627339,"y":32059.80702167967},"targetPosition":{"x":30207.276664433924,"y":32445.696257695414},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f3ce7cba-7352-4634-a05d-07399ba679f2","savedPayload":{"position":{"x":30207.276664433924,"y":32445.696257695414},"targetPosition":{"x":30603.028520115917,"y":32596.356054088126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"23ebc628-449c-43d8-97a2-28c23bb4dda7","savedPayload":{"position":{"x":30603.028520115917,"y":32596.356054088126},"targetPosition":{"x":30998.534423684807,"y":32747.451613870147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"b1d129c5-5f5e-4b1a-a2d6-b79561d2a6ce"}}}],"announcements":[],"id":"0995a46a-7564-4e4a-bdf9-d1dd437c75c6","savedPayload":{"position":{"x":30998.534423684807,"y":32747.451613870147},"targetPosition":{"x":31410.280046457636,"y":32575.275710033362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"12d58077-9b90-44f6-9d1d-5247aad7b0a4","savedPayload":{"position":{"x":30550.04180271156,"y":33329.80692424424},"targetPosition":{"x":30593.773775288653,"y":32906.46681785033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"af3238a0-9671-4ef7-90d8-802f9255d298","savedPayload":{"position":{"x":34353.31566433633,"y":36371.478113298595},"targetPosition":{"x":34107.73400761102,"y":36065.577333894784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2191cdaf-d396-458b-80e3-d67c69976c29","savedPayload":{"position":{"x":34107.73400761102,"y":36065.577333894784},"targetPosition":{"x":33865.53761248559,"y":35764.117352789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"fa54d65e-9ed1-42f1-bcfe-c774607c7ae3","savedPayload":{"position":{"x":33781.1348043335,"y":36545.510360363085},"targetPosition":{"x":33823.36067956762,"y":36154.932202560594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"de06b55c-392c-4032-b8a9-b1810881be63","savedPayload":{"position":{"x":33823.36067956762,"y":36154.932202560594},"targetPosition":{"x":33865.53761248559,"y":35764.117352789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Up || Side, Gentle or Medium","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Up\" || chart.at01hs.bollingerSubChannel.slope === \"Side\" || chart.at01hs.bollingerSubChannel.slope === \"Gentle\" || chart.at01hs.bollingerSubChannel.slope === \"Medium\"","id":"4eca07e4-a6af-46c8-8099-fd4599755539","savedPayload":{"position":{"x":33253.70014218347,"y":36259.27754119686},"targetPosition":{"x":33559.59724286728,"y":36011.788615334415},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a6ee99c3-005b-4b96-be05-579230e6af8b","savedPayload":{"position":{"x":33559.59724286728,"y":36011.788615334415},"targetPosition":{"x":33865.53761248559,"y":35764.117352789},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9fb58e58-feea-47c1-b7a6-0da4777ff32f","savedPayload":{"position":{"x":33865.53761248559,"y":35764.117352789},"targetPosition":{"x":33915.59035931588,"y":35356.68995455061},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"3ca96593-db50-40f0-a191-bfdffe79fdf8","savedPayload":{"position":{"x":30172.077781119075,"y":32863.606917906094},"targetPosition":{"x":30593.773775288653,"y":32906.46681785033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"b1d129c5-5f5e-4b1a-a2d6-b79561d2a6ce"}}}],"announcements":[],"id":"274cc7b8-9ab0-4f9a-9302-3357cfcac9da","savedPayload":{"position":{"x":30593.773775288653,"y":32906.46681785033},"targetPosition":{"x":30998.534423684807,"y":32747.451613870147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5969717f-fd1e-4579-a80b-5e66723412a9","savedPayload":{"position":{"x":31934.3203114876,"y":32573.628726629446},"targetPosition":{"x":32184.041014524384,"y":32230.18847885705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"ab76811a-5688-40bb-bcc9-dc754dea83c1","savedPayload":{"position":{"x":31829.79809078839,"y":32538.006502876146},"targetPosition":{"x":31767.25,"y":32140.22198731501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3add1401-37ae-4ab1-9bfd-bd2409be15ee","savedPayload":{"position":{"x":31765.00069416873,"y":32296.572495929217},"targetPosition":{"x":32184.041014524384,"y":32230.18847885705},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"455d4f49-eb65-49f8-a6d5-2bdd44e8bbac","savedPayload":{"position":{"x":32184.041014524384,"y":32230.18847885705},"targetPosition":{"x":32433.371579576764,"y":31886.914337943625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"1805fb84-f9aa-4376-b68b-7d009c1f35ad","savedPayload":{"position":{"x":31614.787231440176,"y":31844.739900906556},"targetPosition":{"x":32030.194776844528,"y":31756.418543665284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"53916478-d8e6-4a30-8c30-7eb64eab5232","savedPayload":{"position":{"x":31726.14930563862,"y":32262.17728231012},"targetPosition":{"x":31945.401949358587,"y":31923.768514071446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ebcdfc8a-8348-4b1d-ad3a-630bb68bcf95","savedPayload":{"position":{"x":31673.637620746475,"y":31525.40620600377},"targetPosition":{"x":32030.194776844528,"y":31756.418543665284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0ab9c0ab-a710-4da3-adb1-9e2f837da5fc","savedPayload":{"position":{"x":32030.194776844528,"y":31756.418543665284},"targetPosition":{"x":32433.371579576764,"y":31886.914337943625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a1b63f90-0ec5-4eb4-a51e-88852cc95049","savedPayload":{"position":{"x":32433.371579576764,"y":31886.914337943625},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S4 - 8H Up","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"565db073-2544-4f1e-8ffd-450fb4e10feb","savedPayload":{"position":{"x":33016.108423138045,"y":30708.61650625706},"targetPosition":{"x":33001.605706827475,"y":31117.1437175863},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1f26cf4a-76fc-4186-9b3b-9010f9f3da7c","savedPayload":{"position":{"x":33001.605706827475,"y":31117.1437175863},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"f288ec4c-d242-4138-a291-4e97fcec4e8e","savedPayload":{"position":{"x":33294.14747935223,"y":30768.08538063477},"targetPosition":{"x":33140.33062460357,"y":31147.607021558273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"eb5bf914-8163-453a-afa5-95f22ba39ead","savedPayload":{"position":{"x":33140.33062460357,"y":31147.607021558273},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"0638ff08-302c-488f-8a8b-be0cd0454e49","savedPayload":{"position":{"x":33536.5418717862,"y":30918.780123840108},"targetPosition":{"x":33262.102839579675,"y":31222.758503492238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0c8e03c5-c1b2-4aaf-bddc-874c50cfbbba","savedPayload":{"position":{"x":33262.102839579675,"y":31222.758503492238},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"8H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at08hs.bollingerChannel.direction === \"Up\"","id":"77dbd8ad-81fc-4394-93d4-e84e931970f7","savedPayload":{"position":{"x":33711.37061669641,"y":31142.31816964065},"targetPosition":{"x":33349.696532391084,"y":31334.167601834975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"78fae417-cc69-4a59-8edf-5d2e7102b50f","savedPayload":{"position":{"x":33349.696532391084,"y":31334.167601834975},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"12H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at12hs.bollingerChannel.direction === \"Down\"","id":"f513cfb2-d7b3-442b-8d72-8bedb02e7ddf","savedPayload":{"position":{"x":33799.103478253135,"y":31412.55479282884},"targetPosition":{"x":33393.62871134569,"y":31469.252426709958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4ab49bb6-b9d3-44a1-8fa5-6d5f7b9d3b3f","savedPayload":{"position":{"x":33393.62871134569,"y":31469.252426709958},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"09bdc89a-fa30-46cc-9da0-aa16844e829b","savedPayload":{"position":{"x":33789.194999211526,"y":31696.0948743394},"targetPosition":{"x":33388.694866665915,"y":31611.066158039575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2aae14ee-14b3-4c94-9394-d64432517632","savedPayload":{"position":{"x":33388.694866665915,"y":31611.066158039575},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H NOT Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope != \"Extreme\"","id":"a2059ed1-a903-483c-a5b1-a44203fb670f","savedPayload":{"position":{"x":33682.80126272068,"y":31959.687980869192},"targetPosition":{"x":33335.44879159541,"y":31742.939959405492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2ca6efe4-43ac-45a1-ba84-5215d33f32a6","savedPayload":{"position":{"x":33335.44879159541,"y":31742.939959405492},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Deviation > 40","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerBand.deviation > 25","id":"3b0663ea-9168-4101-bd49-a4fa14473dc7","savedPayload":{"position":{"x":33492.81527571664,"y":32171.088329177917},"targetPosition":{"x":33240.16363723661,"y":31848.699229038637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6f3289e9-c257-4953-ae25-664416db52a7","savedPayload":{"position":{"x":33240.16363723661,"y":31848.699229038637},"targetPosition":{"x":32987.75009839662,"y":31526.263027016277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"977e6e41-dca1-4b42-9e82-3e2eeae3c220","savedPayload":{"position":{"x":32987.75009839662,"y":31526.263027016277},"targetPosition":{"x":32607.26331447191,"y":31676.362232420466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"260de0f8-58ff-477f-aadb-f61a4043e3a8","savedPayload":{"position":{"x":32607.26331447191,"y":31676.362232420466},"targetPosition":{"x":32218.203346952138,"y":31802.987156123374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"a2b6bf13-42e1-428f-9691-42be919fa8c1","savedPayload":{"position":{"x":33677.75850723514,"y":32546.480820378853},"targetPosition":{"x":33313.07984357831,"y":32360.792558224523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"05892d30-611b-4f6e-93ae-3f484b208fe5","savedPayload":{"position":{"x":33313.07984357831,"y":32360.792558224523},"targetPosition":{"x":32948.32328257087,"y":32175.005781011547},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f6bb3530-fc04-47bb-b335-1f90463c6a04","savedPayload":{"position":{"x":32948.32328257087,"y":32175.005781011547},"targetPosition":{"x":32583.454684770324,"y":31989.358256691274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"3046ad00-d3de-4458-80db-287144ff86fa","savedPayload":{"position":{"x":32583.454684770324,"y":31989.358256691274},"targetPosition":{"x":32218.203346952138,"y":31802.987156123374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"3847310d-3d70-43f6-85a1-8a62eec1d4d3","savedPayload":{"position":{"x":33387.42539740356,"y":32116.794527589384},"targetPosition":{"x":33018.0279860199,"y":32292.436249824437},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"680fec1e-3d4c-4b3b-82a6-0f45a34f9776","savedPayload":{"position":{"x":33018.0279860199,"y":32292.436249824437},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"ffbb6568-c112-46de-8097-fbf993a8232f","savedPayload":{"position":{"x":33465.571106445495,"y":32425.43478155105},"targetPosition":{"x":33056.74325525523,"y":32446.256555772732},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f0830878-6dd9-4657-a0b5-906ff9296559","savedPayload":{"position":{"x":33056.74325525523,"y":32446.256555772732},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"d7a8fc7d-57a2-4340-bb12-627c667324e6","savedPayload":{"position":{"x":33419.45900626823,"y":32740.505273158957},"targetPosition":{"x":33033.752962097045,"y":32603.794747800173},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e841acd3-9785-49f5-be08-5aa63d3df039","savedPayload":{"position":{"x":33033.752962097045,"y":32603.794747800173},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"8H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at08hs.bollingerChannel.direction === \"Up\"","id":"60872ff6-a88d-4e3c-9069-4337d9e77653","savedPayload":{"position":{"x":33256.14231973845,"y":33014.56892092391},"targetPosition":{"x":32952.065637836226,"y":32740.884130165858},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"969eebbc-1e68-4dc7-bb42-5fd1e92648b3","savedPayload":{"position":{"x":32952.065637836226,"y":32740.884130165858},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"12H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at12hs.bollingerChannel.direction === \"Down\"","id":"e1f6e5b8-70b1-44b9-b127-099a28b39e5f","savedPayload":{"position":{"x":33000.20306486545,"y":33205.3420591731},"targetPosition":{"x":32824.05870270297,"y":32836.33950328082},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1d87e62c-73ff-434b-ac60-e7afa7035b78","savedPayload":{"position":{"x":32824.05870270297,"y":32836.33950328082},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"4dbcbf0e-b029-40db-9b3e-422ccb1d1642","savedPayload":{"position":{"x":32690.53788200545,"y":33283.801184534575},"targetPosition":{"x":32669.20586962084,"y":32875.59460029089},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ed71b78d-b409-451d-9e23-72fde4c6ac59","savedPayload":{"position":{"x":32669.20586962084,"y":32875.59460029089},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Deviation > 40","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerBand.deviation > 25","id":"ca95ffdd-a14f-4985-84b7-2a482eb8091d","savedPayload":{"position":{"x":32374.860433575843,"y":33237.99653746514},"targetPosition":{"x":32511.293905353414,"y":32852.60908935485},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"80a35c8a-7650-442f-82de-b9acb0c09988","savedPayload":{"position":{"x":32511.293905353414,"y":32852.60908935485},"targetPosition":{"x":32647.89809256855,"y":32466.81884324842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"22a72082-528a-440b-8e3f-374d612c4d51","savedPayload":{"position":{"x":32647.89809256855,"y":32466.81884324842},"targetPosition":{"x":32343.994367056974,"y":32192.577730607023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"db4a7c92-b806-4329-9300-9b83a3ad036c","savedPayload":{"position":{"x":32267.555525066622,"y":32166.208616784148},"targetPosition":{"x":32092.25,"y":32360.22198731501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6bebda83-5fa6-40c6-8b9d-193636aa5ff8","savedPayload":{"position":{"x":32353.99815107377,"y":32397.54225711615},"targetPosition":{"x":32343.994367056974,"y":32192.577730607023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c9d98dc4-e354-4357-99c8-eaa829f874d7","savedPayload":{"position":{"x":32343.994367056974,"y":32192.577730607023},"targetPosition":{"x":32218.203346952138,"y":31802.987156123374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"0bf02e1f-d661-437b-85b0-b31e57707199","savedPayload":{"position":{"x":32218.203346952138,"y":31802.987156123374},"targetPosition":{"x":31854.611783869535,"y":31617.461964697784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"283c986f-f9e6-4db2-a7cf-31df9bc42e21","savedPayload":{"position":{"x":33262.348283073654,"y":33668.26110625135},"targetPosition":{"x":32996.16226727139,"y":33821.48103036987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"7e24efcb-8efd-4f21-846e-c1c9be5e4dc0","savedPayload":{"position":{"x":35661.5330621917,"y":32460.96477728643},"targetPosition":{"x":35395.80978722638,"y":32307.691972974666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"151ea590-9f96-4956-a7e8-1ae8ed2497b1","savedPayload":{"position":{"x":35395.80978722638,"y":32307.691972974666},"targetPosition":{"x":35129.93735813902,"y":32154.346004055602},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"af5a4bfb-1676-4497-ad6f-8da3ad1154a1","savedPayload":{"position":{"x":35129.93735813902,"y":32154.346004055602},"targetPosition":{"x":34864.21598400471,"y":32001.112915297275},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"0c8cf0e4-2be0-4010-b296-400c3413dbfe","savedPayload":{"position":{"x":34864.21598400471,"y":32001.112915297275},"targetPosition":{"x":32996.16226727139,"y":33821.48103036987},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"80a6f7ab-286d-4f4e-af25-ba3f60432087","savedPayload":{"position":{"x":32996.16226727139,"y":33821.48103036987},"targetPosition":{"x":32689.147179694144,"y":33821.48199786943},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6ccb7dd5-015c-4d99-855a-4c51c8d31c1a","savedPayload":{"position":{"x":32689.147179694144,"y":33821.48199786943},"targetPosition":{"x":32382.725700846328,"y":33821.60989461435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"cf1fe591-e95e-49b1-9917-696fd2b69ea4","savedPayload":{"position":{"x":33184.71999818604,"y":34214.11641349901},"targetPosition":{"x":32879.1540673357,"y":34182.00430123203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"ac6e1c39-95ac-485c-b9c8-dddefff2fe1c","savedPayload":{"position":{"x":33634.126653251245,"y":35099.63359407601},"targetPosition":{"x":33383.31078816607,"y":34919.700064680575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6d2069d0-7a7b-478c-b682-81e52abc066a","savedPayload":{"position":{"x":33382.25050178636,"y":34920.44290986782},"targetPosition":{"x":33132.43780807961,"y":34740.48684695961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"bde76cfe-6402-4245-883b-9f5b50db5c52","savedPayload":{"position":{"x":33082.77997596954,"y":35350.85551519918},"targetPosition":{"x":33103.89082700777,"y":35043.21827334428},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"697829a6-b00e-4b70-99a5-c109263e5ca3","savedPayload":{"position":{"x":33101.38914931789,"y":35045.366536668065},"targetPosition":{"x":33132.43780807961,"y":34740.48684695961},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b43a31b0-a9ed-4e41-ae4c-427924f40c59","savedPayload":{"position":{"x":33129.1780223032,"y":34742.82310819165},"targetPosition":{"x":33004.26762261222,"y":34462.6015445682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"1c6e5b5b-6ac5-4693-94dd-45c76fdf2b96","savedPayload":{"position":{"x":33003.93138154689,"y":34462.70823485492},"targetPosition":{"x":32879.1540673357,"y":34182.00430123203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"0b1c973a-ce4a-47bd-90a1-d306b30d12aa","savedPayload":{"position":{"x":32878.67130061081,"y":34182.98753017021},"targetPosition":{"x":32630.566126111215,"y":34002.25393399775},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"04dc4bc7-dcaf-4b43-8418-e050d05c8952","savedPayload":{"position":{"x":32630.39594770166,"y":34002.13102715508},"targetPosition":{"x":32382.725700846328,"y":33821.60989461435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"eee941cf-f98c-4dd0-92fa-815fe2c10865","savedPayload":{"position":{"x":32571.120782001806,"y":34406.17252734529},"targetPosition":{"x":32476.87909012684,"y":34113.938241438496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ae433b8c-e6fd-4241-bbe3-2a2cd27ce009","savedPayload":{"position":{"x":32476.82545458858,"y":34113.76990798757},"targetPosition":{"x":32382.725700846328,"y":33821.60989461435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"117adca4-9252-45f2-84b6-6391fbfcb63b","savedPayload":{"position":{"x":32192.68544723151,"y":34405.61314236691},"targetPosition":{"x":32287.633187524032,"y":34113.59824941377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"67dd3e52-2d23-48a0-a7d0-56f7b60e6832","savedPayload":{"position":{"x":32287.559875555915,"y":34113.432909927375},"targetPosition":{"x":32382.725700846328,"y":33821.60989461435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7165c7fa-fb68-40ee-bfb7-2317a0defd40","savedPayload":{"position":{"x":32382.897645029716,"y":33821.819273275294},"targetPosition":{"x":31662.56404301089,"y":32829.66381673354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"b13321e7-009a-4c2e-bc8c-f1b0bdb4dd7b","savedPayload":{"position":{"x":31614.527267611713,"y":33132.96245280527},"targetPosition":{"x":31662.56404301089,"y":32829.66381673354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"9331e3ec-0b89-478a-9910-36fac6843934","savedPayload":{"position":{"x":31726.85084655184,"y":32860.50166756788},"targetPosition":{"x":31421.25,"y":32812.22198731501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5456a919-1f27-4bc1-80de-14aeb1dd2010","savedPayload":{"position":{"x":31414.04315714644,"y":33010.32122662356},"targetPosition":{"x":31662.56404301089,"y":32829.66381673354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2e4981ca-a802-4941-8ed8-563a3e6950ed","savedPayload":{"position":{"x":31662.56404301089,"y":32829.66381673354},"targetPosition":{"x":31854.611783869535,"y":31617.461964697784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Slow Run","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"53f5b5c3-ba67-453c-9c9f-4ce573a45cf7","savedPayload":{"position":{"x":30500.89247017438,"y":32459.578297266748},"targetPosition":{"x":30819.036958787143,"y":32201.72019233247},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"9f500e15-05a0-49f2-acb6-22dc52e3a776","savedPayload":{"position":{"x":30819.036958787143,"y":32201.72019233247},"targetPosition":{"x":31150.975630250297,"y":31932.866520667907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"48f10387-f326-4021-ae7e-bf0c89f12f0e","savedPayload":{"position":{"x":31208.328337171784,"y":32013.008173556012},"targetPosition":{"x":31448.949834379793,"y":31681.57948129423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"d2f712ac-98dc-41dc-b29e-260334b7cd69","savedPayload":{"position":{"x":30514.18167577269,"y":31761.2170374418},"targetPosition":{"x":30661.02568754195,"y":31379.194283221575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"629a5ecb-7ade-4453-89bb-1d1c5d5f96d9","savedPayload":{"position":{"x":31452.62521613617,"y":35704.649175755076},"targetPosition":{"x":31306.38507672166,"y":35392.89905014682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c9b1b192-1698-44a7-a0f5-20d21088f280","savedPayload":{"position":{"x":31306.38507672166,"y":35392.89905014682},"targetPosition":{"x":31164.240833397416,"y":35074.037476121404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0402e263-ac5c-4546-be68-8f33fdbf8666","savedPayload":{"position":{"x":31164.240833397416,"y":35074.037476121404},"targetPosition":{"x":31021.438921316847,"y":34750.86973446636},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"1fc1bb7a-a52b-4ce2-b17b-95194de42c8a","savedPayload":{"position":{"x":30296.68637656971,"y":31322.79310193876},"targetPosition":{"x":30661.02568754195,"y":31379.194283221575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"a0b6604b-8744-468d-8eb8-37266a7790bb","savedPayload":{"position":{"x":30438.724191200963,"y":29978.473640966942},"targetPosition":{"x":30695.912811285634,"y":30296.608544153656},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f7a6659c-b0db-4966-875f-4f3c22448e5f","savedPayload":{"position":{"x":30695.912811285634,"y":30296.608544153656},"targetPosition":{"x":30953.245579650113,"y":30614.81281670587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"bba2d293-88c4-492f-94af-1b9619f740fd","savedPayload":{"position":{"x":30825.47049961038,"y":29806.19925833095},"targetPosition":{"x":30889.3671042988,"y":30210.385421398318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"20aebaee-eb59-4c3f-8c59-39349e032515","savedPayload":{"position":{"x":30889.3671042988,"y":30210.385421398318},"targetPosition":{"x":30953.245579650113,"y":30614.81281670587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"8419c8f8-b2b3-4d98-99e8-2506e40bdb02","savedPayload":{"position":{"x":31245.840967273478,"y":29850.337168761183},"targetPosition":{"x":31099.60147314376,"y":30232.46849471163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0d40d31a-b3d2-4213-9ec0-16dfad84800c","savedPayload":{"position":{"x":31099.60147314376,"y":30232.46849471163},"targetPosition":{"x":30953.245579650113,"y":30614.81281670587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"1f20f276-1067-413d-9855-d5a8c3bf4dd5","savedPayload":{"position":{"x":31588.106924305583,"y":30098.824371705417},"targetPosition":{"x":31270.79628296104,"y":30356.84452509362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5a699f92-494e-4078-b641-1c9c57ffc366","savedPayload":{"position":{"x":31270.79628296104,"y":30356.84452509362},"targetPosition":{"x":30953.245579650113,"y":30614.81281670587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"8522cf28-0d47-4049-a2d0-f859792cc083","savedPayload":{"position":{"x":31745.815505511848,"y":30486.82650760695},"targetPosition":{"x":31356.715958954213,"y":30550.219742514226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0c5c7d7b-590f-4902-b44d-8609741d2b0c","savedPayload":{"position":{"x":31356.715958954213,"y":30550.219742514226},"targetPosition":{"x":30953.245579650113,"y":30614.81281670587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"aa9bda47-780e-48ec-97bf-52f713be6d1c","savedPayload":{"position":{"x":30953.245579650113,"y":30614.81281670587},"targetPosition":{"x":30807.09852676496,"y":30997.07900762244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"0905efc2-d8c9-4b8b-b09f-de915fca26e4","savedPayload":{"position":{"x":30807.09852676496,"y":30997.07900762244},"targetPosition":{"x":30661.02568754195,"y":31379.194283221575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"dc4b92b2-3855-4cc7-84f5-20cc259c1634"}}}],"announcements":[],"id":"e6304ea5-e683-49c1-8e84-e2bc119565fa","savedPayload":{"position":{"x":30661.02568754195,"y":31379.194283221575},"targetPosition":{"x":31068.629399090474,"y":31535.33551862273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"73870f3c-4fc8-464c-be6a-f5e397ee044e","savedPayload":{"position":{"x":29901.249484375345,"y":31377.094167262778},"targetPosition":{"x":30274.70605518238,"y":31210.2377720679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bc212a30-b2e9-435c-84a8-e505019c0570","savedPayload":{"position":{"x":28893.406176646076,"y":31520.778332079593},"targetPosition":{"x":29212.07710550547,"y":31264.012686794093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"19c71956-4d1e-4355-826e-5bc25d09fdc3","savedPayload":{"position":{"x":29212.07710550547,"y":31264.012686794093},"targetPosition":{"x":29531.831887857006,"y":31006.50215332862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"31e8935e-497f-47eb-9466-900faced609c","savedPayload":{"position":{"x":28721.087664239905,"y":31134.011329246656},"targetPosition":{"x":29125.8628289353,"y":31070.501110683115},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"506df2ab-b891-4709-84e6-b773c8743abf","savedPayload":{"position":{"x":29125.8628289353,"y":31070.501110683115},"targetPosition":{"x":29531.831887857006,"y":31006.50215332862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"c1e44382-1537-453b-9f6c-52ef913228aa","savedPayload":{"position":{"x":28765.22117439923,"y":30713.57003149922},"targetPosition":{"x":29147.944257952,"y":30860.18192434744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"928db494-0024-4ed4-a407-84087efb0704","savedPayload":{"position":{"x":29147.944257952,"y":30860.18192434744},"targetPosition":{"x":29531.831887857006,"y":31006.50215332862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"8bae0609-ccff-480d-b382-b56f22ec8dc4","savedPayload":{"position":{"x":29013.97083829324,"y":30370.97096869017},"targetPosition":{"x":29272.351997056765,"y":30688.807256238648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"98ac2a8f-4541-46de-8e01-f9709d6b195f","savedPayload":{"position":{"x":29272.351997056765,"y":30688.807256238648},"targetPosition":{"x":29531.831887857006,"y":31006.50215332862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div previous ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"a5a3a569-6a05-4fd0-8c15-22d5e5d1b148","savedPayload":{"position":{"x":29400.59541225859,"y":30198.51224944108},"targetPosition":{"x":29465.694395008868,"y":30602.505107002034},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2adc3c50-f284-4fb1-9f79-b077a54b5046","savedPayload":{"position":{"x":29465.694395008868,"y":30602.505107002034},"targetPosition":{"x":29531.831887857006,"y":31006.50215332862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c91df057-7904-431b-b997-8fbb2afada1f","savedPayload":{"position":{"x":29531.831887857006,"y":31006.50215332862},"targetPosition":{"x":29915.35006651546,"y":31152.79468292573},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"8196d5fe-af67-4302-84d1-f95279fb2075","savedPayload":{"position":{"x":29915.35006651546,"y":31152.79468292573},"targetPosition":{"x":30274.70605518238,"y":31210.2377720679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"dc4b92b2-3855-4cc7-84f5-20cc259c1634"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"60d1211f-6279-4c80-abe5-e727a70aea22","savedPayload":{"position":{"x":34435.312104755925,"y":37604.797131887906},"targetPosition":{"x":34371.381595713305,"y":37200.520638670896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6659d86a-2e52-48b2-bcc4-5f5b43b3907e","savedPayload":{"position":{"x":34371.381595713305,"y":37200.520638670896},"targetPosition":{"x":34301.70161318501,"y":36759.80355610525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"5ce2e13e-4b4f-424b-b4ee-1741c013690b","savedPayload":{"position":{"x":33637.05690195842,"y":37298.380990103775},"targetPosition":{"x":33955.25921385612,"y":37040.548458870755},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"38aa2600-90dc-4c6b-be17-a08ee9c829b3","savedPayload":{"position":{"x":33955.25921385612,"y":37040.548458870755},"targetPosition":{"x":34301.70161318501,"y":36759.80355610525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fd092801-0b6b-4f09-bbb3-b16fe1144ae3","savedPayload":{"position":{"x":29942.550949462675,"y":30461.549907287925},"targetPosition":{"x":30108.751431134442,"y":30835.89159387049},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"4b4f5de5-723c-4d6e-b26e-50ee87671f48","savedPayload":{"position":{"x":30108.751431134442,"y":30835.89159387049},"targetPosition":{"x":30274.70605518238,"y":31210.2377720679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"e6304ea5-e683-49c1-8e84-e2bc119565fa"}}}],"announcements":[],"id":"ad2a51aa-b179-457e-9704-5c9b1a8db72e","savedPayload":{"position":{"x":30274.70605518238,"y":31210.2377720679},"targetPosition":{"x":30661.02568754195,"y":31379.194283221575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"d29e9a58-79bb-445f-b51a-e5b86937aa8c","savedPayload":{"position":{"x":29569.89733993556,"y":31298.831477570733},"targetPosition":{"x":29887.28573602895,"y":31041.38429809122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"59efd870-0af2-4d5c-a78c-281b71f00497","savedPayload":{"position":{"x":35010.10130049439,"y":37933.36740804276},"targetPosition":{"x":34843.70421091391,"y":37559.42115267648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"31c9eb9e-6567-4866-b3de-cf7ac4fa0126","savedPayload":{"position":{"x":34843.70421091391,"y":37559.42115267648},"targetPosition":{"x":34677.20226770342,"y":37185.26541585529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"0dd58774-bae1-48f4-bb2a-ff3af03d885b","savedPayload":{"position":{"x":34196.30278110237,"y":37847.83226499006},"targetPosition":{"x":34436.72320963445,"y":37516.627594905825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f8894b26-93ec-450a-9cbf-2462e442a7bc","savedPayload":{"position":{"x":34436.72320963445,"y":37516.627594905825},"targetPosition":{"x":34677.20226770342,"y":37185.26541585529},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a1141841-95d0-4c98-b77e-16eb893e6b19","savedPayload":{"position":{"x":34677.20226770342,"y":37185.26541585529},"targetPosition":{"x":34719.74774859792,"y":36777.73345672497},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"5a854197-4f85-4f31-bf5e-c9acff5a60cc","savedPayload":{"position":{"x":29630.2706807204,"y":30722.685610075176},"targetPosition":{"x":29887.28573602895,"y":31041.38429809122},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"e6304ea5-e683-49c1-8e84-e2bc119565fa"}}}],"announcements":[],"id":"dc4b92b2-3855-4cc7-84f5-20cc259c1634","savedPayload":{"position":{"x":29887.28573602895,"y":31041.38429809122},"targetPosition":{"x":30274.70605518238,"y":31210.2377720679},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6b48bcff-79c4-4705-82ac-3666914c8628","savedPayload":{"position":{"x":31044.29603098015,"y":31745.267981535948},"targetPosition":{"x":31448.949834379793,"y":31681.57948129423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"103674cc-96ef-407d-8714-ea2e9a9d7e74","savedPayload":{"position":{"x":31378.79809078839,"y":31736.006502876146},"targetPosition":{"x":31316.25,"y":31338.22198731501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5270f90c-9a7c-4c48-a70d-b75316d43872","savedPayload":{"position":{"x":31117.861875558334,"y":31440.806546951313},"targetPosition":{"x":31448.949834379793,"y":31681.57948129423},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"657399d3-c55b-46b6-8ef6-bf1ed183c48f","savedPayload":{"position":{"x":31448.949834379793,"y":31681.57948129423},"targetPosition":{"x":31854.611783869535,"y":31617.461964697784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"c3529923-8f7c-4ce4-8368-edca9f37fa52","savedPayload":{"position":{"x":31325.053472792577,"y":31030.065705487017},"targetPosition":{"x":31668.750919700407,"y":31253.281061179234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"1147f820-1445-48ab-8c68-0f9dfc653b99","savedPayload":{"position":{"x":31261.14930563862,"y":31481.17728231012},"targetPosition":{"x":31480.401949358587,"y":31142.768514071446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0b01a5c6-c37d-4738-9bfd-1931a7d2d3d5","savedPayload":{"position":{"x":31583.37792473191,"y":30852.18473839943},"targetPosition":{"x":31668.750919700407,"y":31253.281061179234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"62290446-8b87-4e5a-8ade-9a34b8dbb148","savedPayload":{"position":{"x":31668.750919700407,"y":31253.281061179234},"targetPosition":{"x":31854.611783869535,"y":31617.461964697784},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b27aa9de-ced9-4e53-941c-499bab212f80","savedPayload":{"position":{"x":31854.611783869535,"y":31617.461964697784},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S6 - 2H Up","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"873a72fd-cc23-4965-ae29-5b2b70d85cb9","savedPayload":{"position":{"x":33010.897460448316,"y":31179.087705618313},"targetPosition":{"x":32743.530080996377,"y":31476.678900946034},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"087962b5-2546-4472-b71c-b161f0013b1c","savedPayload":{"position":{"x":32743.530080996377,"y":31476.678900946034},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"c72459a6-49d5-4021-b6e3-4a8c374b6b4b","savedPayload":{"position":{"x":33147.08185909988,"y":31338.07547366014},"targetPosition":{"x":32811.43571183378,"y":31556.272945529192},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"48333f2b-d8c7-4a92-bf5d-b8c9a8de4196","savedPayload":{"position":{"x":32811.43571183378,"y":31556.272945529192},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"8488937e-9b92-4562-b89c-a4d6c6dd8ee2","savedPayload":{"position":{"x":33237.13790341573,"y":31526.911203926844},"targetPosition":{"x":32856.01196197148,"y":31650.98625831615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ec9b3ba8-d6a4-4cb0-8679-a8daa868e549","savedPayload":{"position":{"x":32856.01196197148,"y":31650.98625831615},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"02H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Up\"","id":"ade6a251-d161-467d-8e94-45cfdadf536b","savedPayload":{"position":{"x":33275.56332572748,"y":31733.285246992767},"targetPosition":{"x":32875.524833571035,"y":31754.249385991152},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7499f60b-762e-4b37-a66d-2872755620c4","savedPayload":{"position":{"x":32875.524833571035,"y":31754.249385991152},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"04H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Down\"","id":"3beea11e-ff4a-4e39-97d0-97563dacfb09","savedPayload":{"position":{"x":33259.28460932873,"y":31940.902502677036},"targetPosition":{"x":32867.80836627228,"y":31858.056490410654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9e0650fa-cd1b-4770-81b2-06d677c73510","savedPayload":{"position":{"x":32867.80836627228,"y":31858.056490410654},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"01H Med, Steep o Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"276b36c3-c0ca-45d6-a659-c40dac406f46","savedPayload":{"position":{"x":33189.54211479279,"y":32137.713665862248},"targetPosition":{"x":32833.07319674841,"y":31956.498147475777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"904385e8-8b04-4c0c-9961-98b10184e976","savedPayload":{"position":{"x":32833.07319674841,"y":31956.498147475777},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"a49fbb15-05db-4a21-b59b-662a6d84c999","savedPayload":{"position":{"x":33071.171384054614,"y":32309.90187202421},"targetPosition":{"x":32773.91856258477,"y":32042.64240847269},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"89591bf6-dabe-4ba6-b2d8-4580a2c75b0a","savedPayload":{"position":{"x":32773.91856258477,"y":32042.64240847269},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Side or Medium","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\" || chart.at02hs.bollingerSubChannel.slope === \"Medium\"","id":"bb0016e9-0b74-4595-b450-209487362f00","savedPayload":{"position":{"x":32912.24643585934,"y":32445.677135860693},"targetPosition":{"x":32694.434555061398,"y":32110.581831373445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ad9f8e37-16b5-4245-9492-0192ef168849","savedPayload":{"position":{"x":32694.434555061398,"y":32110.581831373445},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"1e3c7245-5582-4af5-9527-5dddf151b976","savedPayload":{"position":{"x":32723.598227552084,"y":32535.7334732403},"targetPosition":{"x":32600.0416875229,"y":32155.64929664765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"440d6ea0-2ee2-408a-a556-18d4c53dda17","savedPayload":{"position":{"x":32600.0416875229,"y":32155.64929664765},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 4: 02H Up && 02H Gentle && 3H Side","code":"chart.at02hs.percentageBandwidth.movingAverage > chart.at24hs.bollingerSubChannel.slope + chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Gentle\" && chart.at03hs.bollingerSubChannel.slope === \"Side\") {false} else {true}","id":"d4189ed6-4d0f-45ea-b1ae-dbdb8f2e0e2c","savedPayload":{"position":{"x":32518.077922250573,"y":32573.891283006145},"targetPosition":{"x":32497.144449475723,"y":32174.74285972898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"01875e5f-f718-4047-baa4-c91930dd6c86","savedPayload":{"position":{"x":32497.144449475723,"y":32174.74285972898},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H NOT Steep","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope != \"Steep\"","id":"350d4a04-700f-4f33-960e-d267e00cec51","savedPayload":{"position":{"x":32310.0762594611,"y":32557.365021417743},"targetPosition":{"x":32392.844211360745,"y":32166.404433653668},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bda747f3-188e-4ed0-82bf-b600a9a9c3f5","savedPayload":{"position":{"x":32392.844211360745,"y":32166.404433653668},"targetPosition":{"x":32476.10497248283,"y":31774.247558718183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7ec2e400-1608-44b5-8ae4-ac4f815e76f5","savedPayload":{"position":{"x":32476.10497248283,"y":31774.247558718183},"targetPosition":{"x":32114.4975340574,"y":31604.990853046736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"0499e109-2786-4159-b79a-c6c24ebac150","savedPayload":{"position":{"x":32114.4975340574,"y":31604.990853046736},"targetPosition":{"x":31758.22011621457,"y":31424.574860926965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"3ed33d07-ff92-4ecc-81cd-8d9318f5a3a2","savedPayload":{"position":{"x":32252.16665434626,"y":32947.31660965903},"targetPosition":{"x":32128.776811132153,"y":32567.424743327494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"40eeff59-ef6d-456b-9662-2590ba1f90b8","savedPayload":{"position":{"x":32128.776811132153,"y":32567.424743327494},"targetPosition":{"x":32005.204151094837,"y":32186.883294667958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"208d89cb-60a9-461f-a8d2-a9d185ca3c5a","savedPayload":{"position":{"x":32005.204151094837,"y":32186.883294667958},"targetPosition":{"x":31881.43076718399,"y":31805.23997790666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"77ac2dcd-e4a4-4a8f-8c71-d8a30fa7a508","savedPayload":{"position":{"x":31881.43076718399,"y":31805.23997790666},"targetPosition":{"x":31758.22011621457,"y":31424.574860926965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"0c4f8301-8084-4276-a901-5e8137867ea0","savedPayload":{"position":{"x":31988.82332276822,"y":32672.19571834107},"targetPosition":{"x":31692.071482468677,"y":32404.721283246283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c407af9c-fe4a-4d5a-9446-25fc7284ee5c","savedPayload":{"position":{"x":31692.071482468677,"y":32404.721283246283},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"6f84e4e1-1174-4eea-b92a-fdb64cdded61","savedPayload":{"position":{"x":31830.031046317567,"y":32808.01597089322},"targetPosition":{"x":31612.54259799393,"y":32472.84689786787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"56b51e70-1cfd-403a-809d-ee19347ca315","savedPayload":{"position":{"x":31612.54259799393,"y":32472.84689786787},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"f3b540af-68c9-4345-9826-faf0d9e6e04c","savedPayload":{"position":{"x":31641.55767350311,"y":32897.9022710009},"targetPosition":{"x":31518.23455469705,"y":32517.86144086963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f4cdcc47-9a5d-4999-9c11-8fd1c19a5424","savedPayload":{"position":{"x":31518.23455469705,"y":32517.86144086963},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"02H Up","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerChannel.direction === \"Up\"","id":"0f3ff1d1-ff82-42da-a526-aff486cbc0bb","savedPayload":{"position":{"x":31436.205013692565,"y":32935.90412023717},"targetPosition":{"x":31415.48977015678,"y":32536.89355815333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0835043e-d8e1-424e-a530-1def860228eb","savedPayload":{"position":{"x":31415.48977015678,"y":32536.89355815333},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"04H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerChannel.direction === \"Down\"","id":"54f8e8ae-578f-461d-9ed2-9f352395dd19","savedPayload":{"position":{"x":31228.54443615153,"y":32919.419915645696},"targetPosition":{"x":31311.585595466433,"y":32528.664179815376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"feb6ba85-a9c1-40af-9e6b-00bd4ef1480b","savedPayload":{"position":{"x":31311.585595466433,"y":32528.664179815376},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"01H Med, Steep o Extreme","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.slope === \"Medium\" || chart.at01hs.bollingerSubChannel.slope === \"Steep\" || chart.at01hs.bollingerSubChannel.slope === \"Extreme\"","id":"949100cd-882b-4c11-b010-dbbfd5fff6f5","savedPayload":{"position":{"x":31031.643356321496,"y":32849.55793610308},"targetPosition":{"x":31213.072553776572,"y":32493.738191603945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d3f463af-4e6d-493b-bc8f-e4c66ffc8567","savedPayload":{"position":{"x":31213.072553776572,"y":32493.738191603945},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"b6856a8d-7a24-4a5f-a449-de2d32fe63be","savedPayload":{"position":{"x":30859.463550636483,"y":32731.085165783043},"targetPosition":{"x":31126.93780611842,"y":32434.498319116443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"37a6e660-f28f-4bd2-99ea-3c2f46d2a36c","savedPayload":{"position":{"x":31126.93780611842,"y":32434.498319116443},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Side or Medium","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\" || chart.at02hs.bollingerSubChannel.slope === \"Medium\"","id":"08d54285-d07e-4cec-8f13-a2f268a569a2","savedPayload":{"position":{"x":30723.724643081026,"y":32572.09916636515},"targetPosition":{"x":31059.056353841177,"y":32354.976107409486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e0208159-e2c5-4fa4-8658-714af9cc91bd","savedPayload":{"position":{"x":31059.056353841177,"y":32354.976107409486},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"36e3a366-1402-4953-8283-9a4131d304b2","savedPayload":{"position":{"x":30633.69548060391,"y":32383.464894864584},"targetPosition":{"x":31014.06490490233,"y":32260.590685797342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d4dc8ef4-ba98-4843-9ef5-16a649541da1","savedPayload":{"position":{"x":31014.06490490233,"y":32260.590685797342},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 4: 02H Up && 02H Gentle && 3H Side","code":"chart.at02hs.percentageBandwidth.movingAverage > chart.at24hs.bollingerSubChannel.slope + chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at02hs.bollingerChannel.direction === \"Up\" && chart.at02hs.bollingerSubChannel.slope === \"Gentle\" && chart.at03hs.bollingerSubChannel.slope === \"Side\") {false} else {true}","id":"f24fcdcf-8844-4f08-a9f2-3b56471a6dde","savedPayload":{"position":{"x":30595.571410680965,"y":32178.05371321225},"targetPosition":{"x":30995.052862976325,"y":32157.74965041339},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2f6a17d7-7a2e-4aa2-b120-d22cb0898194","savedPayload":{"position":{"x":30995.052862976325,"y":32157.74965041339},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H NOT Steep","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope != \"Steep\"","id":"5e74fc74-6684-4675-ba35-4ce3fee27b2a","savedPayload":{"position":{"x":30612.009771633493,"y":31970.454085425517},"targetPosition":{"x":31003.424923684455,"y":32053.515183920517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"cc3b8326-99cd-431c-8b27-c85322f6413f","savedPayload":{"position":{"x":31003.424923684455,"y":32053.515183920517},"targetPosition":{"x":31394.696965332292,"y":32137.06841264846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e5d2fd0e-f202-44e7-bf4c-32d3a203528e","savedPayload":{"position":{"x":31394.696965332292,"y":32137.06841264846},"targetPosition":{"x":31575.976545730267,"y":31780.03372773283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"08776dac-4836-413b-ad45-fdfa781b031c","savedPayload":{"position":{"x":31575.976545730267,"y":31780.03372773283},"targetPosition":{"x":31758.22011621457,"y":31424.574860926965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"5724bd17-a57c-4ec4-9389-170c4255a2d5","savedPayload":{"position":{"x":31758.22011621457,"y":31424.574860926965},"targetPosition":{"x":31633.219625647092,"y":31038.6715717692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"7ac87760-6585-45b0-8e6a-52393eba7893","savedPayload":{"position":{"x":30735.600805138325,"y":33507.99863549079},"targetPosition":{"x":30475.476039234916,"y":33357.5191308144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"e18e37c2-45e6-4c79-8ab5-0e5ca1d5106f","savedPayload":{"position":{"x":33617.84667711506,"y":33938.36138235442},"targetPosition":{"x":33617.80021414131,"y":33638.42804439987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"97289bf8-e16b-42a3-b467-58175c304390","savedPayload":{"position":{"x":33617.80021414131,"y":33638.42804439987},"targetPosition":{"x":33617.692701429136,"y":33338.295643587335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"77be179e-b8d7-42e1-8612-32b85af6352b","savedPayload":{"position":{"x":33617.67000115603,"y":33338.2983947205},"targetPosition":{"x":33617.553943954204,"y":33038.401141381386},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"21d88502-c3c4-4847-af18-a943a25e44f4","savedPayload":{"position":{"x":33617.553943954204,"y":33038.401141381386},"targetPosition":{"x":30475.395949616388,"y":33357.36740858946},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"5c93f074-54cb-4ef9-bcd5-b2ccef229271","savedPayload":{"position":{"x":30475.395949616388,"y":33357.36740858946},"targetPosition":{"x":30325.095919219108,"y":33097.442231856185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3c1bbf78-0fa6-429b-8dbf-d002f6a375b4","savedPayload":{"position":{"x":30325.095919219108,"y":33097.442231856185},"targetPosition":{"x":30174.932833579667,"y":32838.137954305625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"11d19fb0-32df-475f-a4b9-2832942954f3","savedPayload":{"position":{"x":30234.264038388534,"y":33709.59649631907},"targetPosition":{"x":30112.179889514613,"y":33434.84161439404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"547c7e11-9615-4493-8541-29323286596e","savedPayload":{"position":{"x":29697.381162992446,"y":34518.08926656646},"targetPosition":{"x":29728.562546731402,"y":34219.545692809836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"495e7972-41f7-474b-91b1-e434b599dcdc","savedPayload":{"position":{"x":29728.562546731402,"y":34219.545692809836},"targetPosition":{"x":29759.759570577848,"y":33920.72891942154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"eb8e1683-b144-470c-a376-2b091463a231","savedPayload":{"position":{"x":29211.7322965648,"y":34165.26538028993},"targetPosition":{"x":29485.6195128475,"y":34043.05074487052},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"867afb92-cc37-44ff-b2e9-b0f5cd2b3856","savedPayload":{"position":{"x":29485.6195128475,"y":34043.05074487052},"targetPosition":{"x":29759.759570577848,"y":33920.72891942154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"01b47fc7-1a64-44cb-bf9c-898cca8bed2b","savedPayload":{"position":{"x":29759.759570577848,"y":33920.72891942154},"targetPosition":{"x":29935.942617287852,"y":33677.80023794164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"cf8da514-59ee-4653-9cc1-69430acc9458","savedPayload":{"position":{"x":29935.942617287852,"y":33677.80023794164},"targetPosition":{"x":30112.179889514613,"y":33434.84161439404},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"7f1cee55-5e8d-4ef6-bcf6-d93ebcd364dd","savedPayload":{"position":{"x":30112.081341129044,"y":33434.631552439794},"targetPosition":{"x":30143.474708288704,"y":33136.159475499015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7d4e2188-8c93-4994-8d1d-ac48e2d042ee","savedPayload":{"position":{"x":30143.474708288704,"y":33136.159475499015},"targetPosition":{"x":30174.932833579667,"y":32838.137954305625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"09f38b0e-fe77-4c18-94f7-ccf4065bd658","savedPayload":{"position":{"x":29772.844422223552,"y":33283.54921569672},"targetPosition":{"x":29973.88377786049,"y":33060.741059920125},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3bf360bd-8eaf-4902-b171-228ee072b89f","savedPayload":{"position":{"x":29973.88377786049,"y":33060.741059920125},"targetPosition":{"x":30174.932833579667,"y":32838.137954305625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"220cd9e4-fafa-44dc-bded-294af6ccc6df","savedPayload":{"position":{"x":29588.164690634123,"y":32962.447589802534},"targetPosition":{"x":29881.55127058081,"y":32900.126240651916},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"58aae9b5-2a28-49dc-b8f6-b2f4a0ed6897","savedPayload":{"position":{"x":29881.55127058081,"y":32900.126240651916},"targetPosition":{"x":30174.932833579667,"y":32838.137954305625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"94e31b0c-1e6e-4a82-aaaf-62f1ceaea758","savedPayload":{"position":{"x":30174.932833579667,"y":32838.137954305625},"targetPosition":{"x":30662.455253128323,"y":31743.375196346577},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"20e99942-a476-436b-8a1c-a9347a048114","savedPayload":{"position":{"x":30363.938333749466,"y":31774.39366742148},"targetPosition":{"x":30662.455253128323,"y":31743.375196346577},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[],"id":"8f3d8a80-6472-48d8-a081-8de85b844295","savedPayload":{"position":{"x":30662.455253128323,"y":31743.375196346577},"targetPosition":{"x":31633.219625647092,"y":31038.6715717692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"New Manage Stage","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"a32cdd1e-19ce-4bcc-b7c9-52a9e9466dbf","savedPayload":{"position":{"x":30082.885861767205,"y":30674.271706394175},"targetPosition":{"x":30513.31088525428,"y":30719.649203626926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"291bbfda-c1d5-49f6-966b-3f7704ffbda8","savedPayload":{"position":{"x":30449.70849833978,"y":30712.79175326387},"targetPosition":{"x":30918.36861727118,"y":30762.229078092434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"bbb0aab4-c6e3-47f8-b737-9e6fcafcfba1","savedPayload":{"position":{"x":30909.98604740559,"y":30862.912765036395},"targetPosition":{"x":31305.47719822368,"y":30800.44309590927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"34d1cb14-5351-42d4-8827-b2b0aa013b99","savedPayload":{"position":{"x":30605.26333421754,"y":30205.78693761094},"targetPosition":{"x":30971.141125384296,"y":30043.93219128299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"6f6150fc-3a6a-4686-a350-ff141bc83623","savedPayload":{"position":{"x":30331.119285087545,"y":35572.907331899485},"targetPosition":{"x":30184.879145673036,"y":35261.15720629123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3ef9a345-0c46-428c-94f3-80decc872e23","savedPayload":{"position":{"x":30184.879145673036,"y":35261.15720629123},"targetPosition":{"x":30042.73490234879,"y":34942.295632265814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d34694ed-b6c6-4fca-ae8d-95e3f30a4888","savedPayload":{"position":{"x":30042.73490234879,"y":34942.295632265814},"targetPosition":{"x":29899.932990268222,"y":34619.12789061077},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"0be8dfdf-f4ff-4616-b788-c04b3c64eb1b","savedPayload":{"position":{"x":30735.67671147718,"y":29734.66378505733},"targetPosition":{"x":30971.141125384296,"y":30043.93219128299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"45b5b7a2-8cc1-47f8-99c5-8042c7925a89","savedPayload":{"position":{"x":31785.587628057838,"y":28921.80729278172},"targetPosition":{"x":31743.582103773908,"y":29319.674508790024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9bb86da8-d8fa-4b5c-b6a5-952327938371","savedPayload":{"position":{"x":31743.582103773908,"y":29319.674508790024},"targetPosition":{"x":31701.637548164443,"y":29717.658565468908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"05f551c5-32a7-4986-8753-5ac0bd0d4acc","savedPayload":{"position":{"x":32172.013825409394,"y":29069.989139590693},"targetPosition":{"x":31936.92706800949,"y":29393.78099313842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9ba9b517-a809-4b01-848f-5bb31ab1f92c","savedPayload":{"position":{"x":31936.92706800949,"y":29393.78099313842},"targetPosition":{"x":31701.637548164443,"y":29717.658565468908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"c7001aa3-f176-40e4-a6d7-2744966363cd","savedPayload":{"position":{"x":32432.555394753173,"y":29391.497494618434},"targetPosition":{"x":32067.232883950746,"y":29554.586947261843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"094200d6-3761-4dd0-8073-083d14bbeb71","savedPayload":{"position":{"x":32067.232883950746,"y":29554.586947261843},"targetPosition":{"x":31701.637548164443,"y":29717.658565468908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"aaee1ab9-d92b-4f01-afc1-654347d9511a","savedPayload":{"position":{"x":32497.38168861228,"y":29799.19204314747},"targetPosition":{"x":32099.598869002944,"y":29758.585748231508},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9143d8e3-b435-49f2-907e-a874e794d32a","savedPayload":{"position":{"x":32099.598869002944,"y":29758.585748231508},"targetPosition":{"x":31701.637548164443,"y":29717.658565468908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"9e27b341-5396-4a81-b483-13c9e497f3c4","savedPayload":{"position":{"x":32342.498436465543,"y":30179.457799669777},"targetPosition":{"x":32025.30263324656,"y":29951.650215787853},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"77518efa-2184-4602-8f5a-f3e106c6845c","savedPayload":{"position":{"x":32025.30263324656,"y":29951.650215787853},"targetPosition":{"x":31701.637548164443,"y":29717.658565468908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9d8fbd63-29f2-41f9-85f1-92643ff12c6d","savedPayload":{"position":{"x":31701.637548164443,"y":29717.658565468908},"targetPosition":{"x":31336.23232758938,"y":29880.60125077836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"a92424e5-ab90-424c-85cc-b8697bcb6009","savedPayload":{"position":{"x":31336.23232758938,"y":29880.60125077836},"targetPosition":{"x":30971.141125384296,"y":30043.93219128299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"8aff2c3b-ecf9-4df8-84ea-ffd6ba9c9612"}}}],"announcements":[],"id":"58effb7e-0927-4c47-8745-58895dead2ea","savedPayload":{"position":{"x":30971.141125384296,"y":30043.93219128299},"targetPosition":{"x":31146.90148203014,"y":30438.426905457258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"49b3a850-8a9e-41c7-8b5f-e5f3a21ce83d","savedPayload":{"position":{"x":30452.45845106373,"y":29521.565879294885},"targetPosition":{"x":30826.360212497813,"y":29664.135819369385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"c6bc7845-b742-4bd0-a28e-f76bafd9ae16","savedPayload":{"position":{"x":29620.502448153133,"y":29009.482794068932},"targetPosition":{"x":30020.48723524759,"y":28999.95192930794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0dea846d-7054-4651-9c26-e34941dd4128","savedPayload":{"position":{"x":30020.48723524759,"y":28999.95192930794},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"9ef393ca-8c24-4089-a87e-8ce151f2b828","savedPayload":{"position":{"x":29673.23605654033,"y":28702.255596384566},"targetPosition":{"x":30046.812421762977,"y":28846.20864900197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6be2982e-d239-488c-aa26-68e9b2a7af09","savedPayload":{"position":{"x":30046.812421762977,"y":28846.20864900197},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"69018aba-59d9-4f07-a2d5-d93c75981c93","savedPayload":{"position":{"x":29839.877390688383,"y":28438.113330539305},"targetPosition":{"x":30130.17776697706,"y":28714.084841759402},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6ce688b0-0234-4ad1-8afa-540325306d5c","savedPayload":{"position":{"x":30130.17776697706,"y":28714.084841759402},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"b882f3e8-28e5-49f8-90a1-c27ac4723c90","savedPayload":{"position":{"x":30094.91632821422,"y":28257.6976118685},"targetPosition":{"x":30257.805692474005,"y":28623.700232213934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d21fc9d4-bec7-4df6-9083-203e877f30de","savedPayload":{"position":{"x":30257.805692474005,"y":28623.700232213934},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"2d8c394e-6772-4d45-a052-a5c04202637c","savedPayload":{"position":{"x":30399.135146391483,"y":28188.951611978144},"targetPosition":{"x":30409.894262867972,"y":28589.425905596338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"577a9703-74fb-4ea1-9e6d-1a6083c6ac29","savedPayload":{"position":{"x":30409.894262867972,"y":28589.425905596338},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14 > chart.at01hs.base7EMA.previous.previous.ema21 - chart.at01hs.base7EMA.previous.previous.ema14","id":"af2fed7e-8530-49cb-8d8c-818c0dfd3865","savedPayload":{"position":{"x":30705.807101415852,"y":28242.043260085895},"targetPosition":{"x":30563.534489641403,"y":28615.829252344352},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8b902eb1-aaaf-41e5-abab-95f7673e1ff5","savedPayload":{"position":{"x":30563.534489641403,"y":28615.829252344352},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2 previous ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7 > chart.at01hs.base7EMA.previous.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.previous.ema7","id":"2a5efff2-2a04-4585-813e-e3ac2ffb8b95","savedPayload":{"position":{"x":30970.307494097444,"y":28407.94708158223},"targetPosition":{"x":30695.559309238633,"y":28699.077640496787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"081cec88-c2c1-49f8-88c1-760fc50e7f91","savedPayload":{"position":{"x":30695.559309238633,"y":28699.077640496787},"targetPosition":{"x":30421.294627160216,"y":28990.627562965827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7abbde01-e871-4b28-973e-51ca5f3f1c4d","savedPayload":{"position":{"x":30421.294627160216,"y":28990.627562965827},"targetPosition":{"x":30585.34029111149,"y":29357.81367658895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"276723b8-0d32-49d8-b9b3-bd29368160f7","savedPayload":{"position":{"x":30585.34029111149,"y":29357.81367658895},"targetPosition":{"x":30826.360212497813,"y":29664.135819369385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"8aff2c3b-ecf9-4df8-84ea-ffd6ba9c9612"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"16b5e57d-57f9-401a-9134-4dd112797d48","savedPayload":{"position":{"x":30789.66764429344,"y":28185.714818709304},"targetPosition":{"x":30951.533541835262,"y":28551.74444969474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f2bb1dbc-702a-413a-9421-9ac5309fe6f0","savedPayload":{"position":{"x":30951.533541835262,"y":28551.74444969474},"targetPosition":{"x":31113.728474558935,"y":28917.21393819002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"f73c271b-afa2-45ee-91d4-6aee3b3a8be9","savedPayload":{"position":{"x":31400.498422214296,"y":28170.05020162896},"targetPosition":{"x":31257.123145725003,"y":28543.607202208215},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"feaca6ce-0573-401a-909a-4e25687ce708","savedPayload":{"position":{"x":31257.123145725003,"y":28543.607202208215},"targetPosition":{"x":31113.728474558935,"y":28917.21393819002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2 prev.ema7 div 2 prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7 > chart.at01hs.base7EMA.previous.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.previous.ema7","id":"a9c93bde-d56d-42e9-a447-b29a02885149","savedPayload":{"position":{"x":31844.247105636758,"y":28591.21341930776},"targetPosition":{"x":31479.031034712203,"y":28754.272707956417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"72e2d105-feba-47a0-8eaf-6c83296a3863","savedPayload":{"position":{"x":31479.031034712203,"y":28754.272707956417},"targetPosition":{"x":31113.728474558935,"y":28917.21393819002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ab94fcaf-55b6-4be2-a44a-b399dda60644","savedPayload":{"position":{"x":31113.728474558935,"y":28917.21393819002},"targetPosition":{"x":30970.110994537692,"y":29290.905083627942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"07ca2734-a819-49f7-99f7-f19f58e5ffba","savedPayload":{"position":{"x":30970.110994537692,"y":29290.905083627942},"targetPosition":{"x":30826.360212497813,"y":29664.135819369385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"58effb7e-0927-4c47-8745-58895dead2ea"}}}],"announcements":[],"id":"e1d12230-902a-46bf-bb48-1fafbd162e1e","savedPayload":{"position":{"x":30826.360212497813,"y":29664.135819369385},"targetPosition":{"x":30971.141125384296,"y":30043.93219128299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"b53c2ea8-9341-416a-bef3-0b7fb86530d5","savedPayload":{"position":{"x":30285.58406428977,"y":29243.050178096328},"targetPosition":{"x":30683.146099147776,"y":29284.109186527035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"de39a349-8739-4e13-ba9d-91acedf7c835","savedPayload":{"position":{"x":33888.595369445764,"y":37801.62556418717},"targetPosition":{"x":33722.19827986528,"y":37427.67930882089},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b8a44bb5-4965-4d76-8a55-6f0274d84b0c","savedPayload":{"position":{"x":33722.19827986528,"y":37427.67930882089},"targetPosition":{"x":33555.69633665479,"y":37053.5235719997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"4529e123-22d2-40a3-a751-9069e69fa624","savedPayload":{"position":{"x":33074.796850053746,"y":37716.09042113447},"targetPosition":{"x":33315.21727858583,"y":37384.885751050235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c94daca3-f53c-42b6-970c-586d9b605b04","savedPayload":{"position":{"x":33315.21727858583,"y":37384.885751050235},"targetPosition":{"x":33555.69633665479,"y":37053.5235719997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0a283745-7a51-45ab-b781-538c6e1f6a8a","savedPayload":{"position":{"x":33555.69633665479,"y":37053.5235719997},"targetPosition":{"x":33598.24181754929,"y":36645.99161286938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"be4359e1-bbfa-404c-b1ab-e073d8b4b173","savedPayload":{"position":{"x":30725.365031712365,"y":28886.42343824879},"targetPosition":{"x":30683.146099147776,"y":29284.109186527035},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"58effb7e-0927-4c47-8745-58895dead2ea"}}}],"announcements":[],"id":"8aff2c3b-ecf9-4df8-84ea-ffd6ba9c9612","savedPayload":{"position":{"x":30683.146099147776,"y":29284.109186527035},"targetPosition":{"x":30826.360212497813,"y":29664.135819369385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c97bbced-498a-49dd-847a-a52170294ea9","savedPayload":{"position":{"x":30981.651480104963,"y":30564.710684840276},"targetPosition":{"x":31305.47719822368,"y":30800.44309590927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"06a4b038-f8fb-477e-9c1b-4c40ae6262ab","savedPayload":{"position":{"x":31174.04809078839,"y":31458.634409852893},"targetPosition":{"x":31111.5,"y":31060.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2b7c8ed1-9fc0-48ee-9fa1-1a0de54f71e3","savedPayload":{"position":{"x":31243.032461114977,"y":30404.860924837452},"targetPosition":{"x":31305.47719822368,"y":30800.44309590927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f9453ecf-918d-4816-a43e-216a4af33d75","savedPayload":{"position":{"x":31305.47719822368,"y":30800.44309590927},"targetPosition":{"x":31633.219625647092,"y":31038.6715717692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"a003e0e0-4a5c-4b36-a50b-98e69073a310","savedPayload":{"position":{"x":31675.554585333728,"y":30258.903145976074},"targetPosition":{"x":31758.97925625366,"y":30650.411333418004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"4b1b8e1d-da67-439f-8a1b-dd82581ec9c9","savedPayload":{"position":{"x":31742.39930563862,"y":31180.805189286868},"targetPosition":{"x":31961.651949358587,"y":30842.396421048194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b4633c27-f49c-42b5-be24-a2ea7d5ee8f7","savedPayload":{"position":{"x":31977.08325902516,"y":30314.67393304803},"targetPosition":{"x":31758.97925625366,"y":30650.411333418004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1b84ef5d-8088-401c-a38f-5d9222a01ec3","savedPayload":{"position":{"x":31758.97925625366,"y":30650.411333418004},"targetPosition":{"x":31633.219625647092,"y":31038.6715717692},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f1ca0dbb-65e8-4c60-84f0-89596e22e9be","savedPayload":{"position":{"x":31633.219625647092,"y":31038.6715717692},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S7 - 3H Down","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"b7ef7546-2729-499d-88db-7c958392fb0e","savedPayload":{"position":{"x":32756.711113974747,"y":31607.61024363443},"targetPosition":{"x":32358.625604152276,"y":31594.206592670653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"40201dbd-8fbe-41aa-acd3-c0cea3fff9de","savedPayload":{"position":{"x":32358.625604152276,"y":31594.206592670653},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"6dc11e45-63d6-4246-9a9a-294a45931b14","savedPayload":{"position":{"x":32699.286732443106,"y":31878.47863401902},"targetPosition":{"x":32329.570598085495,"y":31729.497664114646},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2dbb8f61-68b4-4835-a6f7-6d7c0c2248ee","savedPayload":{"position":{"x":32329.570598085495,"y":31729.497664114646},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"391ae861-6932-4481-bc4f-15a284dafe80","savedPayload":{"position":{"x":32552.09531778457,"y":32114.04753440217},"targetPosition":{"x":32255.859915100125,"y":31847.386259193245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"52613d30-4103-4272-b871-e3785881dcd8","savedPayload":{"position":{"x":32255.859915100125,"y":31847.386259193245},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerChannel.direction === \"Down\"","id":"7bf0cb68-72c5-4df6-891e-ee3b08bdc439","savedPayload":{"position":{"x":32334.114842423976,"y":32284.565342679653},"targetPosition":{"x":32147.15431300346,"y":31932.905356218682},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5bab5664-c7aa-4e60-aecd-30db721958b0","savedPayload":{"position":{"x":32147.15431300346,"y":31932.905356218682},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"3d771526-7fc9-4c67-b4b4-50e2df038870","savedPayload":{"position":{"x":32070.924868337093,"y":32370.08100269519},"targetPosition":{"x":32015.591548265118,"y":31975.736423733935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1298f042-2f23-4fc7-8359-5bdd3f7e7da1","savedPayload":{"position":{"x":32015.591548265118,"y":31975.736423733935},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Side or Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerSubChannel.slope === \"Side\" || chart.at06hs.bollingerSubChannel.slope === \"Gentle\"","id":"9e520195-93e0-4d66-b312-eb2c90921b3c","savedPayload":{"position":{"x":31794.650807013048,"y":32360.45078170795},"targetPosition":{"x":31877.416410439342,"y":31970.941978356223},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"16707f87-40dc-44ae-a7f8-2df9dc07d53c","savedPayload":{"position":{"x":31877.416410439342,"y":31970.941978356223},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Side","code":"chart.at02hs.bollingerSubChannel.slope > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\"","id":"8143bcc8-af0f-45ef-bbde-1f67fa30b819","savedPayload":{"position":{"x":31537.944515588584,"y":32256.803208422127},"targetPosition":{"x":31748.99837175806,"y":31919.0842921405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0f2efdf7-69dc-4d15-9bf4-6f714894d100","savedPayload":{"position":{"x":31748.99837175806,"y":31919.0842921405},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"10f38b80-2f33-4ad0-b849-019b27b36921","savedPayload":{"position":{"x":31332.159441515407,"y":32071.60292915926},"targetPosition":{"x":31646.02399287895,"y":31826.300241802153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"080177f0-9708-4e76-b021-f4857ee42930","savedPayload":{"position":{"x":31646.02399287895,"y":31826.300241802153},"targetPosition":{"x":31960.09358765132,"y":31580.130968973965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5dd3ebf8-bbcd-4978-8d28-0f4ecfe80ba4","savedPayload":{"position":{"x":31960.09358765132,"y":31580.130968973965},"targetPosition":{"x":31811.375456622718,"y":31210.024612755467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"b4791836-6c85-4279-b75c-ba308154012c","savedPayload":{"position":{"x":31811.375456622718,"y":31210.024612755467},"targetPosition":{"x":31687.76480518738,"y":30831.48557074782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"81a9ee22-bb7d-4a2b-b3ca-7df88b5cfcd1","savedPayload":{"position":{"x":30964.170002711508,"y":32252.191088803193},"targetPosition":{"x":31144.768944066076,"y":31897.42162298904},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"78d25152-3354-4e6c-8118-e621e2eab4e0","savedPayload":{"position":{"x":31144.768944066076,"y":31897.42162298904},"targetPosition":{"x":31325.724991307263,"y":31541.89217527304},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1067e774-8e02-44c0-a86a-43c62a2e1a69","savedPayload":{"position":{"x":31325.724991307263,"y":31541.89217527304},"targetPosition":{"x":31506.68394076039,"y":31186.464463611115},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"26a5deff-364b-4f52-b2f2-24eb39f8a9aa","savedPayload":{"position":{"x":31506.68394076039,"y":31186.464463611115},"targetPosition":{"x":31687.76480518738,"y":30831.48557074782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"7ca3641e-2701-4ae6-aebf-419045fa3ef7","savedPayload":{"position":{"x":31415.350855782843,"y":31953.662040186926},"targetPosition":{"x":31228.774127711946,"y":31601.810661783034},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"50506cba-6ce7-47ee-a28f-50cae0a62f61","savedPayload":{"position":{"x":31228.774127711946,"y":31601.810661783034},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"b0bf87ab-9049-4c24-918b-b7bc805db2a8","savedPayload":{"position":{"x":31151.8983901484,"y":32039.378083013424},"targetPosition":{"x":31096.520470152915,"y":31644.940254589535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"56da2b2c-74c3-4328-b75c-4990aef44ca0","savedPayload":{"position":{"x":31096.520470152915,"y":31644.940254589535},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"0ed3b727-9493-4064-8404-d2d48e9213ad","savedPayload":{"position":{"x":30875.88748954805,"y":32029.398005509585},"targetPosition":{"x":30958.5310225033,"y":31640.03030162792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f6f8fad9-0588-4d7c-81a8-5738f0d6c7e6","savedPayload":{"position":{"x":30958.5310225033,"y":31640.03030162792},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerChannel.direction === \"Down\"","id":"5fe7a35e-a56c-4ad4-854d-5b13ca036669","savedPayload":{"position":{"x":30619.45917271261,"y":31925.61009127704},"targetPosition":{"x":30830.267658267254,"y":31588.123770907005},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1b64fa95-a27a-4e68-9ae1-fa8358e23f41","savedPayload":{"position":{"x":30830.267658267254,"y":31588.123770907005},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"23e2569a-2867-4ebe-aa2b-21254ab0c096","savedPayload":{"position":{"x":30413.92809880018,"y":31740.258282032806},"targetPosition":{"x":30727.44993708856,"y":31495.42966547764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4f6a6ace-3508-4a78-953a-a9944f9b9077","savedPayload":{"position":{"x":30727.44993708856,"y":31495.42966547764},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Side or Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerSubChannel.slope === \"Side\" || chart.at06hs.bollingerSubChannel.slope === \"Gentle\"","id":"565a511b-5264-4cfd-ad94-c8b316f5e19c","savedPayload":{"position":{"x":30284.10436293634,"y":31495.651010108508},"targetPosition":{"x":30662.4945590601,"y":31373.11363325245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5e3a86fa-9e96-47ef-b87b-3324c9edf8a3","savedPayload":{"position":{"x":30662.4945590601,"y":31373.11363325245},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2H Side","code":"chart.at02hs.bollingerSubChannel.slope > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\"","id":"ef7ba943-87cb-4149-8ab2-a562a34fa524","savedPayload":{"position":{"x":30245.599644538674,"y":31221.709525819122},"targetPosition":{"x":30643.252589579934,"y":31236.12546813472},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e624d8a7-586a-4198-a528-b6ee474245dd","savedPayload":{"position":{"x":30643.252589579934,"y":31236.12546813472},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"9992327b-1059-4396-8766-514b6384a81b","savedPayload":{"position":{"x":30303.138677412127,"y":30950.697921181665},"targetPosition":{"x":30672.107581803288,"y":31100.54665498549},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0701df03-b97b-4d03-89a7-a9fb764d1d21","savedPayload":{"position":{"x":30672.107581803288,"y":31100.54665498549},"targetPosition":{"x":31041.820593356788,"y":31249.659564954316},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b72964a4-f423-4930-a40d-ced67854d28e","savedPayload":{"position":{"x":31041.820593356788,"y":31249.659564954316},"targetPosition":{"x":31308.726111061416,"y":30953.636053954928},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"0f375c4e-1181-48dc-a5c6-98808692de0b","savedPayload":{"position":{"x":31430.805525066622,"y":30518.836523760896},"targetPosition":{"x":31255.5,"y":30712.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b2fa6c84-789c-4629-834d-05326002e6af","savedPayload":{"position":{"x":31109.176798356515,"y":30963.27212808858},"targetPosition":{"x":31308.726111061416,"y":30953.636053954928},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"51e2b55b-66ca-45c9-9cfd-ec82ac5ce3d6","savedPayload":{"position":{"x":31308.726111061416,"y":30953.636053954928},"targetPosition":{"x":31687.76480518738,"y":30831.48557074782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"adc2c73c-702f-46ce-90ad-dbbc7f75ad3d","savedPayload":{"position":{"x":31687.76480518738,"y":30831.48557074782},"targetPosition":{"x":31869.68557793254,"y":30474.935931910186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"35334cbd-d4ce-49aa-aaf6-dd76ad2fc0e2","savedPayload":{"position":{"x":29872.650486479462,"y":31845.644615987683},"targetPosition":{"x":29722.94521058858,"y":31586.628418935463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"09357e03-4041-4836-8d0b-ff241d96d998","savedPayload":{"position":{"x":32805.75142358775,"y":32943.72579653},"targetPosition":{"x":33016.594443523325,"y":32732.39288563737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a39a586f-7f44-4599-81c9-26989d479b34","savedPayload":{"position":{"x":33140.34468073813,"y":32827.35630227829},"targetPosition":{"x":33289.50677656069,"y":32568.28724312379},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9fdd8bdf-bcd5-4318-9786-18d2e5e0cc65","savedPayload":{"position":{"x":33289.50677656069,"y":32568.28724312379},"targetPosition":{"x":33438.553943954204,"y":32309.40114138139},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"37c5e03a-b280-40d2-a2e8-e040f87303f8","savedPayload":{"position":{"x":33438.553943954204,"y":32309.40114138139},"targetPosition":{"x":29722.94521058858,"y":31586.628418935463},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"7f426eb4-a1d0-4bc1-90fc-a834c34b7c17","savedPayload":{"position":{"x":29722.94521058858,"y":31586.628418935463},"targetPosition":{"x":29722.725213705256,"y":31287.846173686503},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7a4858da-e282-4158-bea4-53b72dbb1817","savedPayload":{"position":{"x":29722.725213705256,"y":31287.846173686503},"targetPosition":{"x":29722.457835209898,"y":30989.4429009283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"4d50fd19-7ed8-453e-82bc-532f4493a243","savedPayload":{"position":{"x":29343.437731382317,"y":31744.382995141423},"targetPosition":{"x":29371.152393632306,"y":31472.02590154781},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"af81c406-ab61-41fb-be2f-e442ffc2f8f0","savedPayload":{"position":{"x":28476.443476226017,"y":32218.25881730505},"targetPosition":{"x":28649.504473241068,"y":31955.95291544174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dde94435-60a3-4c47-94cf-3e8175ac1634","savedPayload":{"position":{"x":28649.504473241068,"y":31955.95291544174},"targetPosition":{"x":28825.08157382303,"y":31714.314372018624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"3d7be9e2-afe8-4d9c-be2c-09af6c358225","savedPayload":{"position":{"x":28236.8604574126,"y":31599.372993702822},"targetPosition":{"x":28528.02184771264,"y":31682.79587950174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fa5631d8-a1d0-4139-85ea-67590dd474cc","savedPayload":{"position":{"x":28528.02184771264,"y":31682.79587950174},"targetPosition":{"x":28825.08157382303,"y":31714.314372018624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1150cede-dcd1-49d1-84f7-ffe774dabf5b","savedPayload":{"position":{"x":28825.08157382303,"y":31714.314372018624},"targetPosition":{"x":29098.089018424576,"y":31593.125254821593},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"23a3f497-117a-4975-a899-a4dbeb320a60","savedPayload":{"position":{"x":29098.089018424576,"y":31593.125254821593},"targetPosition":{"x":29371.152393632306,"y":31472.02590154781},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"73ab31c8-85c5-464a-8f79-1e368c01ae6a","savedPayload":{"position":{"x":29371.152393632306,"y":31472.02590154781},"targetPosition":{"x":29546.836137447066,"y":31230.632814358563},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"427a98f5-f0bc-4f3e-bd3e-290a2a61a0d8","savedPayload":{"position":{"x":29546.836137447066,"y":31230.632814358563},"targetPosition":{"x":29722.457835209898,"y":30989.4429009283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"5476a8e6-a075-466a-9942-13ce4962b132","savedPayload":{"position":{"x":29153.71032089733,"y":31172.81373022447},"targetPosition":{"x":29438.096980804145,"y":31081.090618860526},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7db9c851-0940-43fd-9366-641e540c24d8","savedPayload":{"position":{"x":29438.096980804145,"y":31081.090618860526},"targetPosition":{"x":29722.457835209898,"y":30989.4429009283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"065a3e90-45c2-45d6-846d-7dbbd61439db","savedPayload":{"position":{"x":29154.040974378873,"y":30803.964060964398},"targetPosition":{"x":29438.30180708951,"y":30896.630273574876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6e3ea9ca-8dfd-4706-8a44-bee210c3fa64","savedPayload":{"position":{"x":29438.30180708951,"y":30896.630273574876},"targetPosition":{"x":29722.457835209898,"y":30989.4429009283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"01200851-265b-4fd2-a819-e866a534dd69","savedPayload":{"position":{"x":29722.457835209898,"y":30989.4429009283},"targetPosition":{"x":30688.920593803676,"y":30287.74409384992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"cce2c890-b019-4232-804f-1a707f05bcb6","savedPayload":{"position":{"x":30393.584979815012,"y":30240.819745126442},"targetPosition":{"x":30688.920593803676,"y":30287.74409384992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"b23ca59f-d8bc-491c-9a8e-2b32a01b3106","savedPayload":{"position":{"x":31234.10084655184,"y":30186.12957454463},"targetPosition":{"x":30928.5,"y":30137.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a53e9a4d-005d-429d-8cea-80553c0eba26","savedPayload":{"position":{"x":30513.035580242144,"y":30045.471998217716},"targetPosition":{"x":30688.920593803676,"y":30287.74409384992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"bdd02df9-2a77-4665-808e-7172a0006e9c","savedPayload":{"position":{"x":30688.920593803676,"y":30287.74409384992},"targetPosition":{"x":31869.68557793254,"y":30474.935931910186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"New Manage Stage","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"cf80ef88-969d-40f5-bc36-ccee6f8518bf","savedPayload":{"position":{"x":31007.622745239525,"y":29170.029822350145},"targetPosition":{"x":31258.45994551566,"y":29479.940552493328},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"6fac6741-1d2a-4364-ba55-6d0082d4e33b","savedPayload":{"position":{"x":31258.45994551566,"y":29479.940552493328},"targetPosition":{"x":31530.039463965975,"y":29815.47282469586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"995255a7-571c-4219-bb24-a1dda890ba60","savedPayload":{"position":{"x":31484.467341186282,"y":29844.710284007848},"targetPosition":{"x":31807.16663599444,"y":30079.347663334862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"712dcccd-fca1-4d1b-bf00-497375a831ec","savedPayload":{"position":{"x":31732.539366836572,"y":29162.99263509157},"targetPosition":{"x":32104.571397491785,"y":29306.12811998022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"8facdd27-7830-4433-b373-c259545e9d3f","savedPayload":{"position":{"x":29882.867353640824,"y":35200.38777180643},"targetPosition":{"x":29736.627214226315,"y":34888.63764619818},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f7b658c8-0903-46b3-867a-c01eaca10bb1","savedPayload":{"position":{"x":29736.627214226315,"y":34888.63764619818},"targetPosition":{"x":29594.48297090207,"y":34569.77607217276},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"97de140f-ae6e-435a-8be7-c4d87e38bd83","savedPayload":{"position":{"x":29594.48297090207,"y":34569.77607217276},"targetPosition":{"x":29451.6810588215,"y":34246.608330517716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"c137f50a-c8a7-4275-8ae4-80fa7fedd38c","savedPayload":{"position":{"x":32166.756910341126,"y":28889.69689332528},"targetPosition":{"x":32104.571397491785,"y":29306.12811998022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"908a2ee2-d913-46d1-80f5-e7109c803e65","savedPayload":{"position":{"x":28516.71817962912,"y":35192.29086492423},"targetPosition":{"x":28557.156363557613,"y":34808.409636499855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0a9ab42d-9b24-461f-95cd-39ab13a54bc3","savedPayload":{"position":{"x":28557.156363557613,"y":34808.409636499855},"targetPosition":{"x":28598.0289573759,"y":34417.78682031214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"d4179fb4-9949-4d82-ae45-8d8be2001ce8","savedPayload":{"position":{"x":28140.072131909215,"y":35047.30833994516},"targetPosition":{"x":28366.86690488685,"y":34735.352904831736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"efab2947-1540-4e8f-a1d9-50289a9b3c7f","savedPayload":{"position":{"x":28366.86690488685,"y":34735.352904831736},"targetPosition":{"x":28598.0289573759,"y":34417.78682031214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"8fbb58cd-53d0-4e19-8f50-590090df0f58","savedPayload":{"position":{"x":27878.964636068133,"y":34737.91437333604},"targetPosition":{"x":28231.258809765986,"y":34581.04278506479},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"adec7d7c-258f-4222-a6d6-734f6962d5d9","savedPayload":{"position":{"x":28231.258809765986,"y":34581.04278506479},"targetPosition":{"x":28598.0289573759,"y":34417.78682031214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"b6a70772-8397-41ac-9268-5ad1cd9b0b80","savedPayload":{"position":{"x":27821.86029713508,"y":34336.88651844418},"targetPosition":{"x":28205.040932522745,"y":34376.814161692535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e1ffbeec-66bc-4d38-984b-2aff6740101f","savedPayload":{"position":{"x":28205.040932522745,"y":34376.814161692535},"targetPosition":{"x":28598.0289573759,"y":34417.78682031214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"ff907f99-713a-41f7-8b23-721699b74966","savedPayload":{"position":{"x":27964.313268952294,"y":33958.435928563435},"targetPosition":{"x":28276.53876559214,"y":34184.71313975834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"65511340-ee54-484b-8cb6-f2d95dec9bdd","savedPayload":{"position":{"x":28276.53876559214,"y":34184.71313975834},"targetPosition":{"x":28598.0289573759,"y":34417.78682031214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"94b2fbbc-3d32-473c-8008-231664970f09","savedPayload":{"position":{"x":32849.28299676666,"y":29591.021162867517},"targetPosition":{"x":32476.86475119283,"y":29448.614791856868},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"02434c11-1d6d-4f15-9577-237b5daba9ea","savedPayload":{"position":{"x":32476.86475119283,"y":29448.614791856868},"targetPosition":{"x":32104.571397491785,"y":29306.12811998022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"cac36b94-3568-446e-a2d2-9d860bd8ad0f"}}}],"announcements":[],"id":"74e77f0f-2945-48ac-ab1f-47a65feb84ec","savedPayload":{"position":{"x":32104.571397491785,"y":29306.12811998022},"targetPosition":{"x":31950.06586342185,"y":29709.082658113486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"db68ae8b-4414-43f9-b275-c97b3a6a80c6","savedPayload":{"position":{"x":32105.102125287416,"y":28580.59467680565},"targetPosition":{"x":32267.4143234272,"y":28944.957294860884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"2ccb9d00-d677-44b6-8b92-edbcaf349d29","savedPayload":{"position":{"x":33290.65093021714,"y":34555.75511226941},"targetPosition":{"x":33540.8213283894,"y":34865.279508582666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d5649c96-59d6-4f0e-a259-063e7355eb48","savedPayload":{"position":{"x":33540.8213283894,"y":34865.279508582666},"targetPosition":{"x":33791.47346791017,"y":35173.62066748123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"2689f28d-6ca9-4e82-8327-eae9956a751a","savedPayload":{"position":{"x":33676.94695072527,"y":34395.80631745438},"targetPosition":{"x":33738.340953101884,"y":34789.24855876006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b19aacc4-d892-41dc-a487-870ca6e13ce2","savedPayload":{"position":{"x":33738.340953101884,"y":34789.24855876006},"targetPosition":{"x":33791.47346791017,"y":35173.62066748123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"9e40ebf6-fd42-43da-b390-30926b085b8f","savedPayload":{"position":{"x":34079.123783303585,"y":34430.169852666026},"targetPosition":{"x":33935.38002039342,"y":34801.925115799015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2b8766b-b4da-40c7-8d88-76f3969065aa","savedPayload":{"position":{"x":33935.38002039342,"y":34801.925115799015},"targetPosition":{"x":33791.47346791017,"y":35173.62066748123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"cae32279-d999-4c13-8eb6-cad3063c74d4","savedPayload":{"position":{"x":34412.44222154852,"y":34672.67036466439},"targetPosition":{"x":34102.0921039295,"y":34923.20814374665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"04ac8528-0696-413b-a739-7825670c0234","savedPayload":{"position":{"x":34102.0921039295,"y":34923.20814374665},"targetPosition":{"x":33791.47346791017,"y":35173.62066748123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div previous ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"6a80e7f5-300b-417d-9f9d-49803b8f51f8","savedPayload":{"position":{"x":34579.99550348594,"y":35050.04227125973},"targetPosition":{"x":34185.89807327404,"y":35111.97251419154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8e23fa3d-13f0-45fe-990f-d268e58ff1cf","savedPayload":{"position":{"x":34185.89807327404,"y":35111.97251419154},"targetPosition":{"x":33791.47346791017,"y":35173.62066748123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"38fc838f-01a5-4a33-a35f-e185f52c295e","savedPayload":{"position":{"x":33790.73756529026,"y":35173.32453395331},"targetPosition":{"x":33648.14450005887,"y":35545.010999298036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"0c86ae11-a07f-4c31-a33c-05debf70c23c","savedPayload":{"position":{"x":33648.14450005887,"y":35545.010999298036},"targetPosition":{"x":32267.4143234272,"y":28944.957294860884},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"cac36b94-3568-446e-a2d2-9d860bd8ad0f"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"301720b6-e436-4134-be19-0bd0892f624d","savedPayload":{"position":{"x":32865.55424226058,"y":37100.53572793926},"targetPosition":{"x":32801.62373321796,"y":36696.25923472225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2e8c0fcc-d597-40f7-b07f-16214f744b0e","savedPayload":{"position":{"x":32801.62373321796,"y":36696.25923472225},"targetPosition":{"x":32731.943750689665,"y":36255.54215215661},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"b7683607-6589-414b-b6de-5aa132d6baef","savedPayload":{"position":{"x":32067.299039463076,"y":36794.11958615513},"targetPosition":{"x":32385.501351360777,"y":36536.28705492211},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e247b889-3abc-469b-b26d-fc11a08bf9c8","savedPayload":{"position":{"x":32385.501351360777,"y":36536.28705492211},"targetPosition":{"x":32731.943750689665,"y":36255.54215215661},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"605adda8-a968-4819-af76-2ee257f07e66","savedPayload":{"position":{"x":32996.142903277054,"y":28620.519213581738},"targetPosition":{"x":32631.78472413752,"y":28782.773153677914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"cc9492df-3289-4d6a-b152-bad2fc656730","savedPayload":{"position":{"x":32631.78472413752,"y":28782.773153677914},"targetPosition":{"x":32267.4143234272,"y":28944.957294860884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"74e77f0f-2945-48ac-ab1f-47a65feb84ec"}}}],"announcements":[],"id":"7fc97392-92a0-48cc-a5d3-799b1c2b8c35","savedPayload":{"position":{"x":32267.4143234272,"y":28944.957294860884},"targetPosition":{"x":32104.571397491785,"y":29306.12811998022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"895b6803-0996-41a6-9a13-93f488d7aee4","savedPayload":{"position":{"x":32159.626044730376,"y":28262.42213582802},"targetPosition":{"x":32410.183160417215,"y":28572.417370269148},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"df898928-7078-4e61-a616-169789552b36","savedPayload":{"position":{"x":33440.34343799904,"y":37429.106004094116},"targetPosition":{"x":33273.94634841856,"y":37055.159748727834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"c02edb77-0d76-4656-8d2f-068eaddabff7","savedPayload":{"position":{"x":33273.94634841856,"y":37055.159748727834},"targetPosition":{"x":33107.44440520807,"y":36681.00401190665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"3bdea448-de7a-4188-b9ec-350dbf88470a","savedPayload":{"position":{"x":32626.544918607025,"y":37343.570861041415},"targetPosition":{"x":32866.96534713911,"y":37012.36619095718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fbc8a359-f853-44a6-831d-a2078edeebe6","savedPayload":{"position":{"x":32866.96534713911,"y":37012.36619095718},"targetPosition":{"x":33107.44440520807,"y":36681.00401190665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f4664806-47a1-41be-956e-079599c0df49","savedPayload":{"position":{"x":33107.44440520807,"y":36681.00401190665},"targetPosition":{"x":33149.98988610257,"y":36273.47205277633},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"b75aa4bc-9257-4444-98ca-afe6377b914a","savedPayload":{"position":{"x":32720.007440830715,"y":28321.18817261144},"targetPosition":{"x":32410.183160417215,"y":28572.417370269148},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"74e77f0f-2945-48ac-ab1f-47a65feb84ec"}}}],"announcements":[],"id":"cac36b94-3568-446e-a2d2-9d860bd8ad0f","savedPayload":{"position":{"x":32410.183160417215,"y":28572.417370269148},"targetPosition":{"x":32267.4143234272,"y":28944.957294860884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7ce8f923-1393-45ac-97d6-742e2cff6627","savedPayload":{"position":{"x":31745.02301611295,"y":29685.056363586977},"targetPosition":{"x":31807.16663599444,"y":30079.347663334862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"cce97d86-51a4-421b-ab3f-0378a33d0563","savedPayload":{"position":{"x":32244.805525066622,"y":29775.836523760896},"targetPosition":{"x":32069.5,"y":29969.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7f219f7a-b837-4ea3-a556-81bed47eae20","savedPayload":{"position":{"x":32041.585952575293,"y":29756.362553668645},"targetPosition":{"x":31807.16663599444,"y":30079.347663334862},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0d03ff5b-3162-49a3-ae12-a0e5929de4dd","savedPayload":{"position":{"x":31807.16663599444,"y":30079.347663334862},"targetPosition":{"x":31869.68557793254,"y":30474.935931910186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"1c8d7c9c-e122-4839-a9df-db514ccfa466","savedPayload":{"position":{"x":32443.78411880295,"y":29957.94017527169},"targetPosition":{"x":32226.406850104606,"y":30292.86134791828},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"eabb6fbc-81b2-4eba-b222-062d7e7b219e","savedPayload":{"position":{"x":32075.39930563862,"y":30303.805189286868},"targetPosition":{"x":32294.651949358587,"y":29965.396421048194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6935a06b-c142-4601-8637-79d3eba3015e","savedPayload":{"position":{"x":32617.38344944207,"y":30209.38594008121},"targetPosition":{"x":32226.406850104606,"y":30292.86134791828},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"68777dc5-38aa-4508-8819-db12202b41c3","savedPayload":{"position":{"x":32226.406850104606,"y":30292.86134791828},"targetPosition":{"x":31869.68557793254,"y":30474.935931910186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"fc6676b7-944d-459c-bc06-592b3ae2fd1b","savedPayload":{"position":{"x":31869.68557793254,"y":30474.935931910186},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S2 - 6H Down","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"301d8e64-bde8-4eee-a0cf-b9c57bcb3050","savedPayload":{"position":{"x":32234.440324534728,"y":31685.198935221037},"targetPosition":{"x":31982.173246407383,"y":31389.646556791922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a869bb21-75b5-4621-9760-840cf4896844","savedPayload":{"position":{"x":31982.173246407383,"y":31389.646556791922},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"b3c4a94f-4986-4e55-ba28-f6456a67bd64","savedPayload":{"position":{"x":31969.70451636865,"y":31833.31869527966},"targetPosition":{"x":31849.590605542755,"y":31463.18464013037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7b405bfe-294d-48a8-b1ff-d0c4f4b328d1","savedPayload":{"position":{"x":31849.590605542755,"y":31463.18464013037},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"f4b66e81-3e26-4a04-9687-140ab33bd887","savedPayload":{"position":{"x":31668.20974582201,"y":31869.43108197012},"targetPosition":{"x":31698.734967129512,"y":31481.652370020198},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4d1c7a66-dd4a-45f9-956d-6cb68b64920b","savedPayload":{"position":{"x":31698.734967129512,"y":31481.652370020198},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"975153b0-b609-4975-b5d6-26f7bfe675e8","savedPayload":{"position":{"x":31376.60785778446,"y":31787.20304603462},"targetPosition":{"x":31552.95544610948,"y":31440.783608893744},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ecc5139a-825f-4c91-8e92-f3719460c66b","savedPayload":{"position":{"x":31552.95544610948,"y":31440.783608893744},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Steep","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope === \"Steep\"","id":"a838971e-d8bd-4ded-a418-453b8981ff9e","savedPayload":{"position":{"x":31138.503489096856,"y":31599.473841373},"targetPosition":{"x":31433.865217987634,"y":31346.94829135217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3694b7de-4040-4f51-a025-3d482ad6c127","savedPayload":{"position":{"x":31433.865217987634,"y":31346.94829135217},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H NOT Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerSubChannel.slope != \"Side\"","id":"fc7ab7ee-a96c-4d9a-ae8e-618cd3ee0769","savedPayload":{"position":{"x":30990.256511828706,"y":31334.90783090023},"targetPosition":{"x":31359.7059535975,"y":31214.620571594114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7f681b33-bfa1-46b5-9483-545d3f62791b","savedPayload":{"position":{"x":31359.7059535975,"y":31214.620571594114},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"d6572b86-2aaa-4223-9e6a-0206d8890778","savedPayload":{"position":{"x":30954.425687026902,"y":31034.227478934878},"targetPosition":{"x":31341.868486193758,"y":31064.086948863045},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"08da37fa-d3c5-49d9-8679-5b80bdff68dd","savedPayload":{"position":{"x":31341.868486193758,"y":31064.086948863045},"targetPosition":{"x":31729.810159666646,"y":31094.209708940154},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"680af7d1-9436-426c-b371-0c51ca813093","savedPayload":{"position":{"x":31729.810159666646,"y":31094.209708940154},"targetPosition":{"x":31876.728519165896,"y":30731.086536864696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"ab2764bc-e2c0-40d8-930f-bd3047f39596","savedPayload":{"position":{"x":31876.728519165896,"y":30731.086536864696},"targetPosition":{"x":32052.882822905718,"y":30384.748725123394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"29130ffe-4d84-411a-90d4-3ee5a6008c21","savedPayload":{"position":{"x":30573.967407399345,"y":30865.044767338284},"targetPosition":{"x":30943.50048121601,"y":30744.974402670025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e6a32c76-eda6-4982-8a3e-220c29218ba2","savedPayload":{"position":{"x":30943.50048121601,"y":30744.974402670025},"targetPosition":{"x":31313.21782034342,"y":30624.877802919116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b31b4647-b5e2-42e5-a1e9-fa0ffafeffc8","savedPayload":{"position":{"x":31313.21782034342,"y":30624.877802919116},"targetPosition":{"x":31682.6972231694,"y":30504.724136086927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"707c998d-da1c-45c1-84de-75ac9a0898b9","savedPayload":{"position":{"x":31682.6972231694,"y":30504.724136086927},"targetPosition":{"x":32052.882822905718,"y":30384.748725123394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"5840e471-a97e-4662-8938-5f1eb21091f0","savedPayload":{"position":{"x":31057.855020732903,"y":30959.629269467543},"targetPosition":{"x":31187.737955266624,"y":30593.52204463944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"447e0866-7372-4a42-b5b1-cd05e0efe728","savedPayload":{"position":{"x":31187.737955266624,"y":30593.52204463944},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"0a447725-e6ac-45ea-bb2c-5f3b968dfc06","savedPayload":{"position":{"x":30798.054534147086,"y":30804.816204348255},"targetPosition":{"x":31058.296133226202,"y":30516.178912692925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9540f515-0603-4cda-bbbd-84d7d104a8e1","savedPayload":{"position":{"x":31058.296133226202,"y":30516.178912692925},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"ad089114-2332-4b0b-b079-4070e1baa4c5","savedPayload":{"position":{"x":30616.980526490526,"y":30561.856583368746},"targetPosition":{"x":30967.726468712906,"y":30394.73857223334},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7f2c2ddf-c19f-4f32-bda3-b4a3b7e7fb90","savedPayload":{"position":{"x":30967.726468712906,"y":30394.73857223334},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerChannel.direction === \"Down\"","id":"48b35276-b129-486a-a517-ca3656ff9a53","savedPayload":{"position":{"x":30542.568712081516,"y":30268.072961601036},"targetPosition":{"x":30930.501586083756,"y":30247.795826218786},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"179fce4e-890b-4a07-9289-57620f55da9e","savedPayload":{"position":{"x":30930.501586083756,"y":30247.795826218786},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"4H Steep","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at04hs.bollingerSubChannel.slope === \"Steep\"","id":"45c706e6-6a7c-4b5a-b713-2b87ac0b6550","savedPayload":{"position":{"x":30586.303004546757,"y":29968.42600372806},"targetPosition":{"x":30952.34803604804,"y":30097.916134063787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ad485330-bf10-49e7-beaa-d57e0f8564b3","savedPayload":{"position":{"x":30952.34803604804,"y":30097.916134063787},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"6H NOT Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at06hs.bollingerSubChannel.slope != \"Side\"","id":"a360bbf1-b177-4298-80a8-06b6062dc779","savedPayload":{"position":{"x":30741.535335287797,"y":29707.74906833391},"targetPosition":{"x":31029.961639336052,"y":29967.557447555944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f8134986-b19a-4715-bb59-dd6bc7c774a8","savedPayload":{"position":{"x":31029.961639336052,"y":29967.557447555944},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"685b785a-4196-4b0a-84c1-0c7ed54e6162","savedPayload":{"position":{"x":30984.63248820747,"y":29526.15155137087},"targetPosition":{"x":31151.60230691471,"y":29876.76561310542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"747a6cc6-2122-4f62-ab40-bdcfbb8ae702","savedPayload":{"position":{"x":31151.60230691471,"y":29876.76561310542},"targetPosition":{"x":31318.795481358207,"y":30227.661807410743},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e9bc25c6-7eca-42cd-a2c2-dbc196d8929a","savedPayload":{"position":{"x":31318.795481358207,"y":30227.661807410743},"targetPosition":{"x":31706.775997487235,"y":30207.837568084273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"2968a063-b746-4430-944d-95d7db806279","savedPayload":{"position":{"x":32154.805525066622,"y":29905.836523760896},"targetPosition":{"x":31979.5,"y":30099.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5242fd04-b240-476a-89e2-c89ad6520c1b","savedPayload":{"position":{"x":31562.576354452234,"y":30077.0108733803},"targetPosition":{"x":31706.775997487235,"y":30207.837568084273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"88e734b7-e242-4b34-aeca-bb71905973ab","savedPayload":{"position":{"x":31706.775997487235,"y":30207.837568084273},"targetPosition":{"x":32052.882822905718,"y":30384.748725123394},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"73a50844-7c64-4816-a04d-db5da604663b","savedPayload":{"position":{"x":32052.882822905718,"y":30384.748725123394},"targetPosition":{"x":32433.355355014213,"y":30261.473769260487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"64b77603-5226-4bb0-8b4f-30f6aeed68d9","savedPayload":{"position":{"x":30111.63955779835,"y":29829.545701782456},"targetPosition":{"x":30187.057117096716,"y":29547.845858548342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"c6c5ef8c-570d-4c27-80b3-521ff8c7dfd5","savedPayload":{"position":{"x":29060.669915290688,"y":29849.453861610516},"targetPosition":{"x":29342.200079118393,"y":29774.177461183208},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"64166d63-e0f3-4271-b427-ea524d9d30a9","savedPayload":{"position":{"x":29342.200079118393,"y":29774.177461183208},"targetPosition":{"x":29623.921417779344,"y":29698.795938007857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9886efaf-3e04-48ed-8e2d-24efce78bcb1","savedPayload":{"position":{"x":29623.921417779344,"y":29698.795938007857},"targetPosition":{"x":29905.533851606528,"y":29623.3668189887},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"4787a1ba-b078-454d-9fa1-2742ae00ff26","savedPayload":{"position":{"x":29905.533851606528,"y":29623.3668189887},"targetPosition":{"x":30187.057117096716,"y":29547.845858548342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"d6880769-cf36-45b9-80ab-109068583690","savedPayload":{"position":{"x":30187.057117096716,"y":29547.845858548342},"targetPosition":{"x":30392.89365093651,"y":29341.779111862103},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b2c096dd-56af-48cd-9013-3005c6dbb9c9","savedPayload":{"position":{"x":30392.89365093651,"y":29341.779111862103},"targetPosition":{"x":30598.40999046724,"y":29135.918860965496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"385a3d80-aaaa-429a-9635-20a5f56982bb","savedPayload":{"position":{"x":29796.35835555227,"y":29409.162670086862},"targetPosition":{"x":30023.09432844091,"y":29226.049390760072},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"4a116f7c-9835-46f9-a487-f3314b07fc27","savedPayload":{"position":{"x":28902.861148437896,"y":29107.54072997879},"targetPosition":{"x":29190.768185411805,"y":29062.21639661277},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"31330f42-a7cd-4588-b037-0fb1f4012ebe","savedPayload":{"position":{"x":29190.768185411805,"y":29062.21639661277},"targetPosition":{"x":29478.85821017733,"y":29016.87886688429},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"e6f479d2-001f-4815-81fb-0104760a2131","savedPayload":{"position":{"x":29111.88702210781,"y":28563.579783555895},"targetPosition":{"x":29295.311079015475,"y":28790.15140430324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7da4d156-7295-46ca-84ef-b1b73b22ef68","savedPayload":{"position":{"x":29295.311079015475,"y":28790.15140430324},"targetPosition":{"x":29478.85821017733,"y":29016.87886688429},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8d74abf5-702e-4ff1-b555-1127ecdcc777","savedPayload":{"position":{"x":29478.85821017733,"y":29016.87886688429},"targetPosition":{"x":29750.977246609775,"y":29121.4307820616},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"8f143346-1514-49e9-af84-0198743e268b","savedPayload":{"position":{"x":29750.977246609775,"y":29121.4307820616},"targetPosition":{"x":30023.09432844091,"y":29226.049390760072},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"c068b8fa-cf10-400c-8b35-40ee201f079d","savedPayload":{"position":{"x":30023.09432844091,"y":29226.049390760072},"targetPosition":{"x":30310.901554337408,"y":29180.93088235573},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3f5fcc98-1fb5-4de2-8850-17dcc4decfd6","savedPayload":{"position":{"x":30310.901554337408,"y":29180.93088235573},"targetPosition":{"x":30598.40999046724,"y":29135.918860965496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"4fefaca7-9699-4d62-b9f2-e3f5edd1fbcf","savedPayload":{"position":{"x":30079.49724709394,"y":28870.270508476067},"targetPosition":{"x":30339.023460706743,"y":29003.074060938226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2e5f14fd-5232-41bc-b038-e069f5410cdb","savedPayload":{"position":{"x":30339.023460706743,"y":29003.074060938226},"targetPosition":{"x":30598.40999046724,"y":29135.918860965496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"4662a32b-d9af-474f-8c91-51b290ac985d","savedPayload":{"position":{"x":30334.376337737165,"y":28615.96359780366},"targetPosition":{"x":30466.495623202332,"y":28875.921911960835},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b20df87d-b9e0-4eef-86dc-1a12efdc4c68","savedPayload":{"position":{"x":30466.495623202332,"y":28875.921911960835},"targetPosition":{"x":30598.40999046724,"y":29135.918860965496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f8cd9672-6874-43aa-83fc-fe6431796152","savedPayload":{"position":{"x":30598.40999046724,"y":29135.918860965496},"targetPosition":{"x":31748.504152987472,"y":29318.386237653525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"3f1d66d7-b522-4dca-98a6-f876ee31f323","savedPayload":{"position":{"x":31577.296726741315,"y":29082.332722543688},"targetPosition":{"x":31748.504152987472,"y":29318.386237653525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"20468ec8-2523-47b4-b3b0-ac41bb89887a","savedPayload":{"position":{"x":32355.10084655184,"y":29226.12957454463},"targetPosition":{"x":32049.5,"y":29177.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d934edd3-f12a-4343-aef8-27f2531ec7e4","savedPayload":{"position":{"x":31794.09366947838,"y":29030.01992901516},"targetPosition":{"x":31748.504152987472,"y":29318.386237653525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cbae35a1-6426-4cde-a74e-6e3c8f1ef488","savedPayload":{"position":{"x":31748.504152987472,"y":29318.386237653525},"targetPosition":{"x":32433.355355014213,"y":30261.473769260487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Custom","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"e9425ea8-46fc-4bbd-96af-107b45fcde20","savedPayload":{"position":{"x":32787.40037538293,"y":28748.9879485708},"targetPosition":{"x":32746.82006427679,"y":29135.63873563346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"787093b5-b60f-4002-ae4e-7dcf26bc651c","savedPayload":{"position":{"x":32746.82006427679,"y":29135.63873563346},"targetPosition":{"x":32702.26410829101,"y":29560.101810710996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a1a3ca90-96ad-4bc3-84f0-0ead961f4ab3","savedPayload":{"position":{"x":32608.85593964742,"y":29552.080114880126},"targetPosition":{"x":32669.459407712402,"y":29936.52520297799},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"af90c747-4790-43c5-afe1-37a605571cae","savedPayload":{"position":{"x":33248.28983387989,"y":29259.76512258894},"targetPosition":{"x":33405.78863403118,"y":29615.251251332513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"64b16855-36d6-49b4-afde-9bc43b6bdd53","savedPayload":{"position":{"x":30958.49273226702,"y":35978.357887355276},"targetPosition":{"x":30812.25259285251,"y":35666.60776174702},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a06e989b-e442-43e3-b915-7aa76348e064","savedPayload":{"position":{"x":30812.25259285251,"y":35666.60776174702},"targetPosition":{"x":30670.108349528266,"y":35347.746187721605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ac15c2d4-9d65-464a-b3e6-2d28edca7308","savedPayload":{"position":{"x":30670.108349528266,"y":35347.746187721605},"targetPosition":{"x":30527.306437447696,"y":35024.57844606656},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"c81de819-5717-459a-9b89-f046c6768803","savedPayload":{"position":{"x":33711.17883883612,"y":29379.644809738806},"targetPosition":{"x":33405.78863403118,"y":29615.251251332513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bff4cb02-f3ad-4c61-9f94-cc3e2b43121c","savedPayload":{"position":{"x":34495.96331431318,"y":30406.151173773185},"targetPosition":{"x":34109.22405666117,"y":30365.45769696535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a9f77d3c-1868-4535-8117-e56d388ba5ad","savedPayload":{"position":{"x":34109.22405666117,"y":30365.45769696535},"targetPosition":{"x":33722.68793079328,"y":30324.700735716688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"42345fb4-0626-4b42-90c1-bb9f214e17d4","savedPayload":{"position":{"x":34352.02451001019,"y":30781.553036646546},"targetPosition":{"x":34037.23547026468,"y":30553.306359700626},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a4bfbfb1-543e-4db0-9f39-dd6631e660eb","savedPayload":{"position":{"x":34037.23547026468,"y":30553.306359700626},"targetPosition":{"x":33722.68793079328,"y":30324.700735716688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"67342cd6-6678-401c-94e1-e0b0eda2263e","savedPayload":{"position":{"x":34039.73033660556,"y":31034.651369948344},"targetPosition":{"x":33881.030676784874,"y":30679.892072710652},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6fcc3279-0e65-424f-81b5-0ed032a461ca","savedPayload":{"position":{"x":33881.030676784874,"y":30679.892072710652},"targetPosition":{"x":33722.68793079328,"y":30324.700735716688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"47ca70bc-782c-445f-834e-921f0840eb7e","savedPayload":{"position":{"x":33643.72639272173,"y":31097.640303634198},"targetPosition":{"x":33682.86854442032,"y":30711.32469247557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"13eaacfa-d129-401a-8648-93d7954f94ac","savedPayload":{"position":{"x":33682.86854442032,"y":30711.32469247557},"targetPosition":{"x":33722.68793079328,"y":30324.700735716688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"6674b07b-d9ed-4a96-88b2-6743cd6e0852","savedPayload":{"position":{"x":33276.322508362435,"y":30929.607895929035},"targetPosition":{"x":33495.33006605626,"y":30639.147260588717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"9163a9de-74b0-42f7-8ee0-85b93dee00fc","savedPayload":{"position":{"x":33495.33006605626,"y":30639.147260588717},"targetPosition":{"x":33722.68793079328,"y":30324.700735716688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"46f92b3d-10dd-484d-895b-c0d547424c3a","savedPayload":{"position":{"x":33722.68793079328,"y":30324.700735716688},"targetPosition":{"x":33564.219043595695,"y":29969.898477587783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"571d2fea-5e0b-49f3-877a-5b9b41516bfe","savedPayload":{"position":{"x":33564.219043595695,"y":29969.898477587783},"targetPosition":{"x":33405.78863403118,"y":29615.251251332513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"5639cfff-e0f1-417b-8034-adb661ded0cd"}}}],"announcements":[],"id":"75e54a0b-1af9-49d2-ab9b-461d72a731fe","savedPayload":{"position":{"x":33405.78863403118,"y":29615.251251332513},"targetPosition":{"x":33016.39430671254,"y":29788.88391817735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"3f9df9ef-2267-4a33-b2b8-fddce1f7f4d7","savedPayload":{"position":{"x":33911.744860763334,"y":29112.95246822761},"targetPosition":{"x":33773.051073781535,"y":29476.27272549899},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"bb9431b0-04e2-49ad-8a1e-8336a5a90ba6","savedPayload":{"position":{"x":34416.95322326507,"y":28296.16406245135},"targetPosition":{"x":34426.305881153865,"y":28684.915659615526},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fff74a7d-6205-4d97-b32a-c31c2879e228","savedPayload":{"position":{"x":34426.305881153865,"y":28684.915659615526},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"c2308750-4fa3-45bc-8ce3-b834db3e5a75","savedPayload":{"position":{"x":34715.444342528746,"y":28347.499556006016},"targetPosition":{"x":34575.68890177326,"y":28710.585139863535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"37f1894e-e911-46df-b97d-92ad8716bbb7","savedPayload":{"position":{"x":34575.68890177326,"y":28710.585139863535},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"c815953e-7501-4c0f-bf44-b2054f27204b","savedPayload":{"position":{"x":34972.058349418905,"y":28509.362884350343},"targetPosition":{"x":34704.06500386377,"y":28791.562960245974},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0abbc8b9-69b3-4051-a077-8cae2eb456e5","savedPayload":{"position":{"x":34704.06500386377,"y":28791.562960245974},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"b1db73ae-ddb7-452c-bc67-aebce55c0071","savedPayload":{"position":{"x":35147.141150108626,"y":28756.980442477477},"targetPosition":{"x":34791.679182237465,"y":28915.415108629633},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1c0d7a06-b7f3-443d-9088-177134b13b83","savedPayload":{"position":{"x":34791.679182237465,"y":28915.415108629633},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"12d82500-383b-445d-995d-7b589c84635a","savedPayload":{"position":{"x":35214.19946698019,"y":29052.728441879615},"targetPosition":{"x":34825.204368153114,"y":29063.356815214163},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ea51ecbf-d848-46a7-a88d-82ec88f8480a","savedPayload":{"position":{"x":34825.204368153114,"y":29063.356815214163},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"previous ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14 > chart.at01hs.base7EMA.previous.previous.ema21 - chart.at01hs.base7EMA.previous.previous.ema14","id":"c48ea949-7b3e-4c17-bff5-19d6e459d626","savedPayload":{"position":{"x":35162.832804467325,"y":29350.654711690964},"targetPosition":{"x":34799.55776558362,"y":29212.503217535977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"7d987b62-66de-4d68-be64-91c124266174","savedPayload":{"position":{"x":34799.55776558362,"y":29212.503217535977},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2 previous ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7 > chart.at01hs.base7EMA.previous.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.previous.ema7","id":"6e81b8d8-148d-4a5a-8307-40c1dbccabb2","savedPayload":{"position":{"x":35001.572988601365,"y":29607.454418412428},"targetPosition":{"x":34718.71420293217,"y":29340.778111080235},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"229f0b94-9e9a-45b5-87fe-8bf1427c1cb6","savedPayload":{"position":{"x":34718.71420293217,"y":29340.778111080235},"targetPosition":{"x":34435.516882385054,"y":29074.048555754413},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0e734dca-7ea8-4eaf-9379-48ccf8dff51e","savedPayload":{"position":{"x":34435.516882385054,"y":29074.048555754413},"targetPosition":{"x":34080.098739883826,"y":29232.794420662998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"43f6f964-e44c-4b9e-9c6e-f5f10afb891d","savedPayload":{"position":{"x":34080.098739883826,"y":29232.794420662998},"targetPosition":{"x":33773.051073781535,"y":29476.27272549899},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"5639cfff-e0f1-417b-8034-adb661ded0cd"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"427ca47c-7233-4e51-8070-0dd82e493d47","savedPayload":{"position":{"x":35209.14142961346,"y":29440.444294230565},"targetPosition":{"x":34854.12791187051,"y":29597.78782464058},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8b99cc7a-c8fd-4e57-9f24-c2576f6bab18","savedPayload":{"position":{"x":34854.12791187051,"y":29597.78782464058},"targetPosition":{"x":34498.6289280011,"y":29755.41052699473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"2217cfc4-1cdd-43b0-86ef-9957ff84c8f1","savedPayload":{"position":{"x":35224.438994290365,"y":30033.767832692964},"targetPosition":{"x":34861.984945374395,"y":29894.603901010996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"6918bca4-9fcd-44a4-9ad5-d4718158d064","savedPayload":{"position":{"x":34861.984945374395,"y":29894.603901010996},"targetPosition":{"x":34498.6289280011,"y":29755.41052699473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"2 prev.ema7 div 2 prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7 > chart.at01hs.base7EMA.previous.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.previous.ema7","id":"9afbcaee-9dcd-4b18-89a9-9124eea8c900","savedPayload":{"position":{"x":34815.39456925559,"y":30464.907508235723},"targetPosition":{"x":34657.375468352,"y":30110.167880558845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"91b01ae0-97af-48c7-adf3-1bb767e27f36","savedPayload":{"position":{"x":34657.375468352,"y":30110.167880558845},"targetPosition":{"x":34498.6289280011,"y":29755.41052699473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8f15adc5-8719-4f96-8560-127f7eaa0a97","savedPayload":{"position":{"x":34498.6289280011,"y":29755.41052699473},"targetPosition":{"x":34135.87591926167,"y":29615.995190587262},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"b15ba6fb-7ae0-4c8f-b8ac-b76c5945dcb5","savedPayload":{"position":{"x":34135.87591926167,"y":29615.995190587262},"targetPosition":{"x":33773.051073781535,"y":29476.27272549899},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"75e54a0b-1af9-49d2-ab9b-461d72a731fe"}}}],"announcements":[],"id":"eb74a012-ed21-4ce6-8f2e-8f2ebaea9188","savedPayload":{"position":{"x":33773.051073781535,"y":29476.27272549899},"targetPosition":{"x":33405.78863403118,"y":29615.251251332513},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} else {takeProfit}","id":"25d46d39-ae12-4dd8-a136-48f75b7236c1","savedPayload":{"position":{"x":34179.5922378825,"y":28952.68449982191},"targetPosition":{"x":34139.99028944556,"y":29339.458559691633},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"f4da55cf-3df3-40ed-8d05-a914a6697fae","savedPayload":{"position":{"x":34515.96881662524,"y":38207.07611964296},"targetPosition":{"x":34349.57172704476,"y":37833.12986427668},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"2c64d2c0-288c-45ae-a359-5d3f44bb4c5e","savedPayload":{"position":{"x":34349.57172704476,"y":37833.12986427668},"targetPosition":{"x":34183.06978383427,"y":37458.97412745549},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"b4571357-f64e-432a-8d80-37f1dfd89e82","savedPayload":{"position":{"x":33702.17029723322,"y":38121.54097659026},"targetPosition":{"x":33942.5907257653,"y":37790.336306506026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"96c5c204-c93f-494c-8691-30566d39db06","savedPayload":{"position":{"x":33942.5907257653,"y":37790.336306506026},"targetPosition":{"x":34183.06978383427,"y":37458.97412745549},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2849e6ed-91c0-4e63-a4a3-2ba4d4517008","savedPayload":{"position":{"x":34183.06978383427,"y":37458.97412745549},"targetPosition":{"x":34225.61526472877,"y":37051.44216832517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"9c2aa1f4-5ba6-4dc8-9f99-db133558f0e8","savedPayload":{"position":{"x":34526.32051478548,"y":29380.144072111412},"targetPosition":{"x":34139.99028944556,"y":29339.458559691633},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"75e54a0b-1af9-49d2-ab9b-461d72a731fe"}}}],"announcements":[],"id":"5639cfff-e0f1-417b-8034-adb661ded0cd","savedPayload":{"position":{"x":34139.99028944556,"y":29339.458559691633},"targetPosition":{"x":33773.051073781535,"y":29476.27272549899},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6cb50b3d-6bf3-422f-8d2a-d0103ea02607","savedPayload":{"position":{"x":32898.51510152386,"y":29621.695973589216},"targetPosition":{"x":32669.459407712402,"y":29936.52520297799},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"bf593624-8f03-46b0-8bcd-377c7620f1a3","savedPayload":{"position":{"x":33049.04809078839,"y":30508.634409852893},"targetPosition":{"x":32986.5,"y":30110.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8debc3c5-6540-43c3-8fa3-a0ae97e288af","savedPayload":{"position":{"x":33053.853780132136,"y":29875.553003142984},"targetPosition":{"x":32669.459407712402,"y":29936.52520297799},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"42765ad5-284e-4966-a367-76593b53bcf7","savedPayload":{"position":{"x":32669.459407712402,"y":29936.52520297799},"targetPosition":{"x":32433.355355014213,"y":30261.473769260487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"6880a8b7-7259-4fb2-abd2-b9c37a735b0e","savedPayload":{"position":{"x":33195.15644454074,"y":30303.891451120202},"targetPosition":{"x":32814.28960967772,"y":30385.03530095667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"975fec0b-d0f0-40c1-baab-1efccd8ea879","savedPayload":{"position":{"x":33080.399305638624,"y":30985.805189286868},"targetPosition":{"x":33299.65194935859,"y":30647.396421048194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8c3e1433-a8fe-4b1e-8b6a-e1b8fbbf88a3","savedPayload":{"position":{"x":33141.08859610247,"y":30597.192002896467},"targetPosition":{"x":32814.28960967772,"y":30385.03530095667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c64f618d-4336-4ff2-9dcd-3293acb4cd2a","savedPayload":{"position":{"x":32814.28960967772,"y":30385.03530095667},"targetPosition":{"x":32433.355355014213,"y":30261.473769260487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2faf1715-7b6a-4188-ac5e-c67502e18fcc","savedPayload":{"position":{"x":32433.355355014213,"y":30261.473769260487},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Strategy","name":"S5 - 4H Up","triggerStage":{"type":"Trigger Stage","name":"New Trigger Stage","triggerOn":{"type":"Trigger On Event","name":"New Trigger On Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"1bb17736-cc12-4b60-9807-632aeb2d3636","savedPayload":{"position":{"x":31803.637082753048,"y":31399.359971188216},"targetPosition":{"x":31818.655546656042,"y":30978.35806096688},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d2e2487a-d30a-4d70-9d70-f188409059a9","savedPayload":{"position":{"x":31818.655546656042,"y":30978.35806096688},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"21123f61-dc48-4915-b609-c3eab53b8fec","savedPayload":{"position":{"x":31525.850017503104,"y":31317.667269780963},"targetPosition":{"x":31684.17449023727,"y":30926.586714463938},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"daefe7ea-f409-406c-891a-28c3001ab5c0","savedPayload":{"position":{"x":31684.17449023727,"y":30926.586714463938},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"6897670f-f952-4d83-8a95-bc82ad1d07fa","savedPayload":{"position":{"x":31267.086794496026,"y":31183.122939986682},"targetPosition":{"x":31549.575445554154,"y":30869.705854556367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b6890e81-16b4-4cd2-b1ed-0c02d51dae4b","savedPayload":{"position":{"x":31549.575445554154,"y":30869.705854556367},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"c02c6beb-0de4-4a7c-a768-7332501d45b1","savedPayload":{"position":{"x":31087.19829214889,"y":30952.77737784711},"targetPosition":{"x":31459.640019499606,"y":30754.84508175051},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3e59df4d-42a2-41e9-93ff-6d85b65d9bc2","savedPayload":{"position":{"x":31459.640019499606,"y":30754.84508175051},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"02H Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\"","id":"3257e894-69d2-4f5f-93eb-13ba4d62c5e0","savedPayload":{"position":{"x":30996.834259943073,"y":30674.322016396036},"targetPosition":{"x":31414.44419194971,"y":30615.639370576555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"bd3ee521-2846-411f-a740-de3480e90421","savedPayload":{"position":{"x":31414.44419194971,"y":30615.639370576555},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerSubChannel.slope === \"Gentle\"","id":"3cef9be4-e642-4af5-b845-d63592ea22e9","savedPayload":{"position":{"x":31007.075520478138,"y":30382.25756547327},"targetPosition":{"x":31419.584840032832,"y":30469.569394286285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a23ee119-f4f5-4fe6-9013-27055d634051","savedPayload":{"position":{"x":31419.584840032832,"y":30469.569394286285},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H NOT Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerSubChannel.slope != \"Side\"","id":"7fa69f52-edfe-42b6-bda3-40e9ad7af808","savedPayload":{"position":{"x":31116.712625722495,"y":30110.76594490264},"targetPosition":{"x":31474.4688041132,"y":30333.762234397087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"50495c21-1a7b-4c38-9c6c-4cec9fb5a0f1","savedPayload":{"position":{"x":31474.4688041132,"y":30333.762234397087},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"0770176a-5af8-479d-8a7e-7bafaf04cb05","savedPayload":{"position":{"x":31312.539242984873,"y":29893.174081317917},"targetPosition":{"x":31572.61684784771,"y":30224.87918255947},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0538f837-fbba-4e7c-b1db-8a574559d584","savedPayload":{"position":{"x":31572.61684784771,"y":30224.87918255947},"targetPosition":{"x":31832.446754081677,"y":30557.303404222446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b2dd0458-53e0-4d8c-8f46-bb45946cdb65","savedPayload":{"position":{"x":31832.446754081677,"y":30557.303404222446},"targetPosition":{"x":32254.205048920863,"y":30381.34366988766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"642f8610-4b1d-4178-8bae-12abf00b7812","savedPayload":{"position":{"x":32254.205048920863,"y":30381.34366988766},"targetPosition":{"x":32655.355644345367,"y":30250.83828378207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","name":"New Trigger Off Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close< chart.at01hs.bollingerBand.movingAverage","id":"9d2e77ef-dc06-4357-8739-44065c83f8cb","savedPayload":{"position":{"x":31152.477915800475,"y":29485.148637629547},"targetPosition":{"x":31528.139844398356,"y":29676.425811184978},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"65d4f331-e81f-44d4-834b-9e786d9d2a36","savedPayload":{"position":{"x":31528.139844398356,"y":29676.425811184978},"targetPosition":{"x":31903.821467182715,"y":29867.826371430037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9753c7d0-7d95-4464-8331-a7d4bac71a9b","savedPayload":{"position":{"x":31903.821467182715,"y":29867.826371430037},"targetPosition":{"x":32279.619316977198,"y":30058.961696217935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"99db5a57-b7b5-44d2-b046-c5784a51bffc","savedPayload":{"position":{"x":32279.619316977198,"y":30058.961696217935},"targetPosition":{"x":32655.355644345367,"y":30250.83828378207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","name":"New Take Position Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"Previous Breakup","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.previous.close > chart.at01hs.bollingerBand.previous.movingAverage + chart.at01hs.bollingerBand.previous.deviation","id":"190f6e85-1f6e-4088-a156-a82e3b0e72cb","savedPayload":{"position":{"x":31467.337122690104,"y":29960.14749786813},"targetPosition":{"x":31839.670467427597,"y":29762.856324091823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"07da9742-43f4-4bfb-8720-3272474740d1","savedPayload":{"position":{"x":31839.670467427597,"y":29762.856324091823},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Close In","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.deviation","id":"56b61beb-3df4-4577-b39e-90c3c3fc7075","savedPayload":{"position":{"x":31377.480759506314,"y":29682.883283317376},"targetPosition":{"x":31795.183056971782,"y":29624.795860058675},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"34460859-dffb-4fba-93b2-fe143c3a25de","savedPayload":{"position":{"x":31795.183056971782,"y":29624.795860058675},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Current Red Candle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.candle.close < chart.at01hs.candle.open","id":"16a3f794-7209-437c-a272-c1f945374af2","savedPayload":{"position":{"x":31388.098788101044,"y":29391.140811100908},"targetPosition":{"x":31800.391690375553,"y":29478.963861724398},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"28a397a8-b5f1-44fd-afe2-3e366e7e938d","savedPayload":{"position":{"x":31800.391690375553,"y":29478.963861724398},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H Down","code":"chart.at03hs.bollingerChannel.direction * chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerChannel.direction === \"Down\"","id":"e6fa32e6-37a4-40ae-a68d-8d046eed13b6","savedPayload":{"position":{"x":31497.861935999175,"y":29119.985100224807},"targetPosition":{"x":31855.294923134716,"y":29343.32643845144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ba113199-ed6c-4b10-8312-4d938c7e8c39","savedPayload":{"position":{"x":31855.294923134716,"y":29343.32643845144},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"02H Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at02hs.bollingerSubChannel.slope === \"Side\"","id":"b76599cd-7312-4aac-9dee-8e21dac4b1c6","savedPayload":{"position":{"x":31693.887694668956,"y":28902.656474209638},"targetPosition":{"x":31953.340689905217,"y":29234.595917062725},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"d274dddf-c518-4602-9e20-001b6b348fde","savedPayload":{"position":{"x":31953.340689905217,"y":29234.595917062725},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"3H Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at03hs.bollingerSubChannel.slope === \"Gentle\"","id":"ef31d5cf-d980-494c-a6af-1970b0e5e172","savedPayload":{"position":{"x":31952.609151253357,"y":28765.393109525332},"targetPosition":{"x":32082.723348863343,"y":29165.905849972234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1e6adf92-f58a-4ebd-a125-f9b61d51ec59","savedPayload":{"position":{"x":32082.723348863343,"y":29165.905849972234},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"24H NOT Side","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at24hs.bollingerSubChannel.slope != \"Side\"","id":"d6005505-7c26-4f5c-b94e-3c2a9e812f5c","savedPayload":{"position":{"x":32242.21296721509,"y":28724.70054371358},"targetPosition":{"x":32227.550058824927,"y":29145.566309120117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dac090bd-5be4-4193-b40b-3ce250f62d91","savedPayload":{"position":{"x":32227.550058824927,"y":29145.566309120117},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"Filter 1: 08H Deviation > 200 < 1500","code":"chart.at24hs.bollingerBand.deviation < chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500) {false} else {true}","id":"6198450f-adf9-4208-a125-e47b101f9b41","savedPayload":{"position":{"x":32528.89266902186,"y":28785.576656817986},"targetPosition":{"x":32370.9875785451,"y":29176.112998723962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b1f55195-9a70-49fa-8025-51cdf0acdbeb","savedPayload":{"position":{"x":32370.9875785451,"y":29176.112998723962},"targetPosition":{"x":32212.846706910997,"y":29567.026440768434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"196d7981-9230-4a94-b8c2-39ff25a22bb9","savedPayload":{"position":{"x":32212.846706910997,"y":29567.026440768434},"targetPosition":{"x":32525.82609477754,"y":29849.549374255723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[{"type":"Announcement","name":"Take Position","code":"{ \n\"text\": \"Take Position Event.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB took position at $\" + chart.at01hs.candle.close.toFixed(0) + \"!\"","id":"1457056f-1f84-46e0-a144-f2113df411f7","savedPayload":{"position":{"x":32948.80552506662,"y":29504.836523760896},"targetPosition":{"x":32773.5,"y":29698.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4e4c322c-4604-431c-912c-6227d05d2e0b","savedPayload":{"position":{"x":32515.672915242736,"y":29638.436349027324},"targetPosition":{"x":32525.82609477754,"y":29849.549374255723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1c30f570-4f8e-47cf-95c1-dd1f4244a77a","savedPayload":{"position":{"x":32525.82609477754,"y":29849.549374255723},"targetPosition":{"x":32655.355644345367,"y":30250.83828378207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[],"id":"999bf574-a88b-467f-a107-7e0770e6bd53","savedPayload":{"position":{"x":32655.355644345367,"y":30250.83828378207},"targetPosition":{"x":33029.75192573155,"y":30442.29103770232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openStage":{"type":"Open Stage","name":"New Open Stage","initialDefinition":{"type":"Initial Definition","name":"New Initial Definition","stopLoss":{"type":"Initial Stop","name":"New Initial Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate + positionRate * 3 / 100","id":"8b0471ee-2c41-4195-99fc-4025d65a390e","savedPayload":{"position":{"x":31579.929199715712,"y":28329.796759479224},"targetPosition":{"x":31853.910414355745,"y":28171.703838281486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","code":"chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100","id":"a4ad262a-5f92-497f-9411-56c338d9292b","savedPayload":{"position":{"x":30754.122545444774,"y":27540.973438886354},"targetPosition":{"x":31028.003443564146,"y":27698.876056028217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f953a499-ba93-476f-8af5-61e25f1f9657","savedPayload":{"position":{"x":31031.316375796425,"y":27697.923160732968},"targetPosition":{"x":31305.440043072456,"y":27855.852868035698},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"abf13b1e-7ce1-41d1-87b8-c2e1f25c2a6d","savedPayload":{"position":{"x":31305.45786506844,"y":27855.824594382415},"targetPosition":{"x":31579.688155962634,"y":28013.767656946442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"2a270aac-6cd2-4b25-b1a4-ff18d1ccaa4b","savedPayload":{"position":{"x":31579.700107722136,"y":28013.74550246922},"targetPosition":{"x":31853.910414355745,"y":28171.703838281486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"72aea6dd-85da-4291-b993-17b6ab9827b1","savedPayload":{"position":{"x":31853.910414355745,"y":28171.703838281486},"targetPosition":{"x":32170.01608559407,"y":28171.536416079904},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3a958f65-ab12-4404-8c2d-14a1b1d80c84","savedPayload":{"position":{"x":32170.01608559407,"y":28171.536416079904},"targetPosition":{"x":32485.715088985602,"y":28171.15713012959},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Initial Take Profit","name":"New Initial Take Profit","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"positionRate - positionRate * 0.05","id":"407b0f9f-573e-4def-b3d1-a9eeabde83f7","savedPayload":{"position":{"x":31659.81139987375,"y":27766.388292401327},"targetPosition":{"x":31974.524291845133,"y":27799.41763208544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"1H EMA7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate","id":"881fe7f0-1527-499a-80f5-89bcce726dac","savedPayload":{"position":{"x":31879.089046140864,"y":26402.837294233297},"targetPosition":{"x":32077.218214079843,"y":26647.230374764797},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b18879da-9fa8-4926-aa76-ad8b401c37d1","savedPayload":{"position":{"x":31457.151266858393,"y":27035.4549659169},"targetPosition":{"x":31714.090630726034,"y":27222.201315049584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"positionPeriods > 2","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"positionPeriods > 2","id":"c5713c55-47b3-42a8-ab19-08cf2d749396","savedPayload":{"position":{"x":32505.5752595207,"y":26300.82685022934},"targetPosition":{"x":32391.551298605093,"y":26598.486857980544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"dba5f292-de5e-490c-ad0f-350ba7a79ba6","savedPayload":{"position":{"x":31747.847047714342,"y":26907.48381747061},"targetPosition":{"x":31714.090630726034,"y":27222.201315049584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6feb04a3-4e72-4cb3-8e80-d924677fd866","savedPayload":{"position":{"x":31712.19231193666,"y":27225.216897539707},"targetPosition":{"x":31841.69595034157,"y":27513.601035817344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"21268798-061f-4dbd-b3ae-62ed06497e7b","savedPayload":{"position":{"x":31846.13723379902,"y":27510.332013678686},"targetPosition":{"x":31974.524291845133,"y":27799.41763208544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[],"announcements":[],"id":"331d8a1e-2395-419d-b119-6f81a8b29085","savedPayload":{"position":{"x":31974.551736945174,"y":27799.396454380087},"targetPosition":{"x":32229.944270623495,"y":27985.490598327917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"74cbbf23-af31-4a53-9e2d-1d2be04f1f00","savedPayload":{"position":{"x":32229.970512281805,"y":27985.475088728974},"targetPosition":{"x":32485.715088985602,"y":28171.15713012959},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionSize":{"type":"Position Size","name":"New Position Size","formula":{"type":"Formula","name":"New Formula","code":"balanceBaseAsset","id":"532a9467-6b89-4ac8-b4e0-d5015bf2dd36","savedPayload":{"position":{"x":32291.8645065362,"y":27569.273658194026},"targetPosition":{"x":32388.85888378356,"y":27870.231835006754},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"46530eb5-5bbf-4e1a-b635-ed22afe99dfb","savedPayload":{"position":{"x":32388.863816650617,"y":27870.223459811998},"targetPosition":{"x":32485.715088985602,"y":28171.15713012959},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"positionRate":{"type":"Position Rate","name":"New Position Rate","formula":{"type":"Formula","name":"New Formula","code":"candle.close","id":"9f1b0754-b1f7-4e2b-9962-5555b951e026","savedPayload":{"position":{"x":32681.756599468277,"y":27569.863267139586},"targetPosition":{"x":32583.851836528476,"y":27870.62263043729},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"fc1eda7f-ae0a-46cb-89cf-8ec3bb01ad94","savedPayload":{"position":{"x":32583.85638300542,"y":27870.61332054747},"targetPosition":{"x":32485.715088985602,"y":28171.15713012959},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6da69684-0123-401b-94e8-a3ca551665d1","savedPayload":{"position":{"x":32485.956593586066,"y":28171.143151808643},"targetPosition":{"x":33227.79337521052,"y":29193.269686449254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"openExecution":{"type":"Open Execution","name":"New Open Execution","id":"599dc297-9684-46c2-a061-e5f0fe08b0cc","savedPayload":{"position":{"x":33277.42298551964,"y":28880.820143413617},"targetPosition":{"x":33227.79337521052,"y":29193.269686449254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Open","code":"{ \n\"text\": \"Open Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"Initial stop loss at $\" + stopLoss.toFixed(0) + \" and take profit at $\" + takeProfit.toFixed(0) + \". Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"5de18ec0-2f00-4c77-92b9-955a5923d698","savedPayload":{"position":{"x":33909.10084655184,"y":29201.12957454463},"targetPosition":{"x":33603.5,"y":29152.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"82532147-3a82-4ae5-8758-8ac080add9c7","savedPayload":{"position":{"x":33483.99096742361,"y":29007.16578768379},"targetPosition":{"x":33227.79337521052,"y":29193.269686449254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2a5f2b55-f09e-4be9-92d8-3527a134dac3","savedPayload":{"position":{"x":33227.79337521052,"y":29193.269686449254},"targetPosition":{"x":33029.75192573155,"y":30442.29103770232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"manageStage":{"type":"Manage Stage","name":"Controlled Run","stopLoss":{"type":"Stop","name":"New Stop","phases":[{"type":"Phase","name":"New Phase","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) {chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} else {stopLoss}","id":"928d3add-1690-4dfd-b2f8-455668fc742c","savedPayload":{"position":{"x":34446.54072965572,"y":29566.263118815612},"targetPosition":{"x":34118.74229678125,"y":29831.655797585274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[],"announcements":[],"id":"51924a8f-f6b0-41f0-9fb5-8cd97d8d6531","savedPayload":{"position":{"x":34118.74229678125,"y":29831.655797585274},"targetPosition":{"x":33774.18998850245,"y":30110.61435184037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6ba3063d-c882-44d2-a7c4-9915a220b17e","savedPayload":{"position":{"x":33694.781614397805,"y":30034.89501850924},"targetPosition":{"x":33446.54561839851,"y":30376.4041629772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takeProfit":{"type":"Take Profit","name":"New Take Profit","phases":[{"type":"Phase","name":"Manage: 3% Below ema7","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} else {positionRate - positionRate * 0.03}","id":"f0ba9068-9fd8-46c1-89c6-c51c2127fad3","savedPayload":{"position":{"x":34405.03823312209,"y":30291.840263281058},"targetPosition":{"x":34253.55735010361,"y":30685.388405891084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"nextPhaseEvent":{"type":"Next Phase Event","name":"New Next Phase Event","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"3d7e602e-ca81-4d0f-808c-0b6987a224d4","savedPayload":{"position":{"x":35787.30615527667,"y":35398.810989911646},"targetPosition":{"x":35627.67545695055,"y":35040.81781656664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3cf490f8-fb04-4a14-aab8-1215009b40bd","savedPayload":{"position":{"x":35627.67545695055,"y":35040.81781656664},"targetPosition":{"x":35467.72999550737,"y":34682.783353016006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"399b9981-c283-4140-8600-904bd8fae636","savedPayload":{"position":{"x":35467.72999550737,"y":34682.783353016006},"targetPosition":{"x":35307.55009149936,"y":34324.66524598421},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"19a0d710-315f-43b8-b1f0-8aca0f21d63e","savedPayload":{"position":{"x":35307.55009149936,"y":34324.66524598421},"targetPosition":{"x":34253.55735010361,"y":30685.388405891084},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"6407cb18-e862-47c7-8c3d-2ac857597595","savedPayload":{"position":{"x":34530.30464769007,"y":32086.76032216619},"targetPosition":{"x":34241.56519862483,"y":31779.736945370492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3218784f-7ac6-4f71-89ca-c13de6fb1e08","savedPayload":{"position":{"x":34241.56519862483,"y":31779.736945370492},"targetPosition":{"x":33952.40791518047,"y":31472.687567332738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"31096ee3-5cb2-437c-911c-b8dac600eeda","savedPayload":{"position":{"x":34206.86770563993,"y":32276.766339734662},"targetPosition":{"x":34079.78645287453,"y":31874.887902369603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4a59f893-ce98-40a8-a456-14758c0e3b72","savedPayload":{"position":{"x":34079.78645287453,"y":31874.887902369603},"targetPosition":{"x":33952.40791518047,"y":31472.687567332738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < positionRate","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < positionRate - positionRate * 0.01","id":"39e213d0-6871-4fcc-8ba7-6485b15b8010","savedPayload":{"position":{"x":33833.90249584932,"y":32307.77576085133},"targetPosition":{"x":33893.183785079695,"y":31890.35694745995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"a2c15f0e-3edb-4849-862a-dce24f143be6","savedPayload":{"position":{"x":33893.183785079695,"y":31890.35694745995},"targetPosition":{"x":33952.40791518047,"y":31472.687567332738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"5d4916ab-3a59-42cd-ad42-2c9be833bb36","savedPayload":{"position":{"x":33483.71175603528,"y":32173.510662283734},"targetPosition":{"x":33718.10598421068,"y":31823.189571328785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e90a9e18-c05e-4c34-8931-f934311d8be4","savedPayload":{"position":{"x":33718.10598421068,"y":31823.189571328785},"targetPosition":{"x":33952.40791518047,"y":31472.687567332738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"1578e195-a319-4748-8204-f90d816fc4ae","savedPayload":{"position":{"x":33226.90835172038,"y":31900.891944952567},"targetPosition":{"x":33589.60744328863,"y":31686.70649617647},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"b48541a5-46c2-4e7e-a072-07d94c1b2ac9","savedPayload":{"position":{"x":33589.60744328863,"y":31686.70649617647},"targetPosition":{"x":33952.40791518047,"y":31472.687567332738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Down && NOT Side","code":"chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Down\" && chart.at01hs.bollingerSubChannel.slope != \"Side\"","id":"fb1f280f-632e-4097-b5da-dfdbacd169c3","savedPayload":{"position":{"x":33113.8985015411,"y":31543.13031314437},"targetPosition":{"x":33533.18645691627,"y":31507.901950537547},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0000df02-7c31-423f-a377-ee7a54e745b1","savedPayload":{"position":{"x":33533.18645691627,"y":31507.901950537547},"targetPosition":{"x":33952.40791518047,"y":31472.687567332738},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a9ea4174-771b-4b50-8376-05494437d912","savedPayload":{"position":{"x":33952.40791518047,"y":31472.687567332738},"targetPosition":{"x":34103.02164774582,"y":31078.959490898098},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"730610f1-2311-4486-8905-37c9c001d766","savedPayload":{"position":{"x":34103.02164774582,"y":31078.959490898098},"targetPosition":{"x":34253.55735010361,"y":30685.388405891084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"1a7c350c-eb3a-4d8a-af57-68aabda6fea7"}}}],"announcements":[],"id":"f631120e-4f0f-41f4-85b3-74778c8060c0","savedPayload":{"position":{"x":34253.55735010361,"y":30685.388405891084},"targetPosition":{"x":33839.85571089323,"y":30526.991004243064},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Close: BB Lower Band","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < positionRate - positionRate * 0.03) {chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} else {positionRate - positionRate * 0.03}","id":"e0cee676-0034-4512-9ed3-b4f61df739bf","savedPayload":{"position":{"x":35032.298511827415,"y":30664.025220907624},"targetPosition":{"x":34647.207041214446,"y":30836.09669131313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Move to Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"2cd48b45-e3f4-4a76-8bf7-19470c990e1e","savedPayload":{"position":{"x":36107.40410258614,"y":30517.225318510787},"targetPosition":{"x":35780.230573333596,"y":30782.31136999146},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"17193755-5b37-4ee7-82ca-a14db05dbd30","savedPayload":{"position":{"x":35780.230573333596,"y":30782.31136999146},"targetPosition":{"x":35452.761665177284,"y":31047.66467334929},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 div ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema21 - chart.at01hs.base7EMA.ema14 > chart.at01hs.base7EMA.previous.ema21 - chart.at01hs.base7EMA.previous.ema14","id":"b8cb24ca-a2ce-4ae6-b5d9-63471af0095f","savedPayload":{"position":{"x":36284.90515124963,"y":30915.913862933052},"targetPosition":{"x":35869.021951828036,"y":30981.751761376323},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"4facbae1-8244-47d9-bf81-2ebf58477c34","savedPayload":{"position":{"x":35869.021951828036,"y":30981.751761376323},"targetPosition":{"x":35452.761665177284,"y":31047.66467334929},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"4e3f128a-a12a-444d-b706-c54a910da68b","savedPayload":{"position":{"x":36239.371881971114,"y":31349.282569362353},"targetPosition":{"x":35846.26069286043,"y":31198.494132839478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"e2460f9b-c5ab-4502-9b39-38159b55534b","savedPayload":{"position":{"x":35846.26069286043,"y":31198.494132839478},"targetPosition":{"x":35452.761665177284,"y":31047.66467334929},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema14 < ema21","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 < chart.at01hs.base7EMA.ema21 ","id":"2a370595-33f8-4cf8-af80-e7871edcf8fa","savedPayload":{"position":{"x":35983.1325692914,"y":31702.277925781378},"targetPosition":{"x":35718.094088328195,"y":31375.038293037353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"133e251e-2ac5-4ebd-8f4c-73eb8c8ba7e1","savedPayload":{"position":{"x":35718.094088328195,"y":31375.038293037353},"targetPosition":{"x":35452.761665177284,"y":31047.66467334929},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Down && NOT Side or Gentle","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Down\" && chart.at01hs.bollingerSubChannel.slope != \"Side\" && chart.at01hs.bollingerSubChannel.slope != \"Gentle\"","id":"55435ac8-859e-4665-842c-f6603923589e","savedPayload":{"position":{"x":35584.73289655696,"y":31879.94420607729},"targetPosition":{"x":35518.86240709847,"y":31463.838891768813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ee4dad2e-77dd-4f45-9847-c3c2e563d015","savedPayload":{"position":{"x":35518.86240709847,"y":31463.838891768813},"targetPosition":{"x":35452.761665177284,"y":31047.66467334929},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"42bd767a-7a9e-40dc-9973-ad6e2411e769","savedPayload":{"position":{"x":35452.761665177284,"y":31047.66467334929},"targetPosition":{"x":35058.85073610298,"y":30896.89534740672},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"f9f58805-ee92-40ac-be13-6d242a6a476f","savedPayload":{"position":{"x":35058.85073610298,"y":30896.89534740672},"targetPosition":{"x":34647.207041214446,"y":30836.09669131313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Run","id":"1a7c350c-eb3a-4d8a-af57-68aabda6fea7"}}},{"type":"Move to Phase Event","name":"Cancel Close","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 div ema14","code":"chart.atAnyTimeFrame.externalSignal.timestamp > chart.atAnyTimeFrame.externalSignal.timestamp","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 > chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"32c1fa99-99b6-4bdd-ad3d-fcb3858413fe","savedPayload":{"position":{"x":35776.79345269899,"y":31909.47813652903},"targetPosition":{"x":35383.44828063969,"y":31758.293786669023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8f146719-384b-4e16-a0b3-c7501eeca1dd","savedPayload":{"position":{"x":35383.44828063969,"y":31758.293786669023},"targetPosition":{"x":34989.99851802312,"y":31606.922286071378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 div prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 > chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"b1d2c06e-3c41-474c-b241-62639db26336","savedPayload":{"position":{"x":35332.887818885174,"y":32377.069703162415},"targetPosition":{"x":35161.53533828581,"y":31992.11486723846},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"655cd860-35be-4db4-8786-758133ade2f8","savedPayload":{"position":{"x":35161.53533828581,"y":31992.11486723846},"targetPosition":{"x":34989.99851802312,"y":31606.922286071378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"ema7 < ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.ema14","id":"7b14d5ba-d792-4d0e-9c33-aae6abc015dd","savedPayload":{"position":{"x":34688.90853441315,"y":32393.902044815673},"targetPosition":{"x":34839.54017120311,"y":32000.460775300373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"41486047-0d08-4227-8d03-3e844c75a3ea","savedPayload":{"position":{"x":34839.54017120311,"y":32000.460775300373},"targetPosition":{"x":34989.99851802312,"y":31606.922286071378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"78031caf-041a-4f69-aea1-f9666aef959d","savedPayload":{"position":{"x":34989.99851802312,"y":31606.922286071378},"targetPosition":{"x":34818.416667519436,"y":31221.49527777832},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"ad7504d5-49ec-4fed-bc74-44f5f398def7","savedPayload":{"position":{"x":34818.416667519436,"y":31221.49527777832},"targetPosition":{"x":34647.207041214446,"y":30836.09669131313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"f631120e-4f0f-41f4-85b3-74778c8060c0"}}}],"announcements":[],"id":"bee5a88b-489f-48ce-be58-4531f815462a","savedPayload":{"position":{"x":34647.207041214446,"y":30836.09669131313},"targetPosition":{"x":34253.55735010361,"y":30685.388405891084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Phase","name":"Run","formula":{"type":"Formula","name":"New Formula","code":"if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.23 < positionRate - positionRate * 0.03) {chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.23} else {takeProfit}","id":"6e3648cc-0d59-428a-acc2-afcf2a6e86c4","savedPayload":{"position":{"x":35364.36754637443,"y":30743.79677885484},"targetPosition":{"x":35036.48540989503,"y":31009.357437908086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"moveToPhaseEvents":[{"type":"Move to Phase Event","name":"Cancel Run","situations":[{"type":"Situation","name":"New Situation","conditions":[{"type":"Condition","name":"ema7 conv ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.ema14 - chart.at01hs.base7EMA.ema7 < chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7","id":"d68720e4-049f-46b9-b412-f0378573a413","savedPayload":{"position":{"x":35025.93602050318,"y":36418.753466704875},"targetPosition":{"x":34780.354363777864,"y":36112.85268730106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"609ce0eb-a9ec-495a-9f99-cd5adeaa5824","savedPayload":{"position":{"x":34780.354363777864,"y":36112.85268730106},"targetPosition":{"x":34538.157968652435,"y":35811.39270619528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"prev.ema7 conv prev.ema14","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.base7EMA.previous.ema14 - chart.at01hs.base7EMA.previous.ema7 < chart.at01hs.base7EMA.previous.previous.ema14 - chart.at01hs.base7EMA.previous.previous.ema7","id":"49efa579-e07f-432e-ab03-458909afe80a","savedPayload":{"position":{"x":34453.75516050035,"y":36592.785713769365},"targetPosition":{"x":34495.98103573446,"y":36202.207555966874},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"70e024f2-8dc4-443b-b7d0-8d979bd7879a","savedPayload":{"position":{"x":34495.98103573446,"y":36202.207555966874},"targetPosition":{"x":34538.157968652435,"y":35811.39270619528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Condition","name":"1H Up || Side, Gentle or Medium","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"chart.at01hs.bollingerSubChannel.direction === \"Up\" || chart.at01hs.bollingerSubChannel.slope === \"Side\" || chart.at01hs.bollingerSubChannel.slope === \"Gentle\" || chart.at01hs.bollingerSubChannel.slope === \"Medium\"","id":"199cc33c-0e13-4de9-910a-c9d356e9d0d6","savedPayload":{"position":{"x":33926.32049835032,"y":36306.55289460314},"targetPosition":{"x":34232.21759903413,"y":36059.063968740695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3621eed7-d3f5-4350-8e53-6eb76377b10a","savedPayload":{"position":{"x":34232.21759903413,"y":36059.063968740695},"targetPosition":{"x":34538.157968652435,"y":35811.39270619528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dede1ba7-70c6-417a-a54a-14177afbd413","savedPayload":{"position":{"x":34538.157968652435,"y":35811.39270619528},"targetPosition":{"x":34588.210715482724,"y":35403.96530795689},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"76a5126e-7d21-4160-b25a-08631b6d519a","savedPayload":{"position":{"x":35302.17787738192,"y":31337.322692776477},"targetPosition":{"x":35036.48540989503,"y":31009.357437908086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Phase","name":"Manage: 3% Below ema7","id":"f631120e-4f0f-41f4-85b3-74778c8060c0"}}}],"announcements":[],"id":"1a7c350c-eb3a-4d8a-af57-68aabda6fea7","savedPayload":{"position":{"x":35036.48540989503,"y":31009.357437908086},"targetPosition":{"x":34647.207041214446,"y":30836.09669131313},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a3dd2636-1b11-4d0a-8a32-945e790a97e5","savedPayload":{"position":{"x":33863.77572993962,"y":30310.715804922856},"targetPosition":{"x":33446.54561839851,"y":30376.4041629772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"announcements":[{"type":"Announcement","name":"Manage","code":"{ \n\"text\": \"Manage Stage: you will get the proper message when the trading session is run at a time frame lower than 1H.\",\n\"valueVariantion\": 2.5\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB Trade Management Status! Current TP, current price, and stop: \" + takeProfit.toFixed(0) + \", \" + chart.at01min.candle.close.toFixed(0) + \", \" + stopLoss.toFixed(0) + \".\"","id":"0204092d-3d12-43b7-95e3-f2146a2a0324","savedPayload":{"position":{"x":33695.04809078839,"y":31034.634409852893},"targetPosition":{"x":33632.5,"y":30636.849894291758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"8096b40e-271b-407a-b75c-7de3136b04a5","savedPayload":{"position":{"x":33788.0138298563,"y":30624.219309845328},"targetPosition":{"x":33446.54561839851,"y":30376.4041629772},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6af83cfb-a8f9-4313-8013-495ed37ee6f5","savedPayload":{"position":{"x":33446.54561839851,"y":30376.4041629772},"targetPosition":{"x":33029.75192573155,"y":30442.29103770232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"closeStage":{"type":"Close Stage","name":"New Close Stage","closeExecution":{"type":"Close Execution","name":"New Close Execution","id":"a0def27f-df31-4c8e-b5de-12cf8376aa64","savedPayload":{"position":{"x":33575.8445053462,"y":31047.439459383855},"targetPosition":{"x":33221.458597344295,"y":30817.50496330991},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"announcements":[{"type":"Announcement","name":"Close","code":"{ \n\"text\": \"Close Stage.\"\n}","formula":{"type":"Formula","name":"New Formula","code":"\"BBTB trade closed! P&L: \" + lastTradeProfitLoss.toFixed(2) * 100 + \"%. Balances: \" + balanceBaseAsset.toFixed(2) + \" BTC and \" + balanceQuotedAsset.toFixed(0) + \" USDT.\"","id":"9a31cc2b-bfb0-43b9-8ad7-0d0135c2a593","savedPayload":{"position":{"x":33396.399305638624,"y":31144.805189286868},"targetPosition":{"x":33615.65194935859,"y":30806.396421048194},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"952a1b99-cc01-414a-a583-69486a70cde8","savedPayload":{"position":{"x":33309.75440271151,"y":31230.662234131596},"targetPosition":{"x":33221.458597344295,"y":30817.50496330991},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e49340f8-ed08-46a6-b4f8-b1992e7780b4","savedPayload":{"position":{"x":33221.458597344295,"y":30817.50496330991},"targetPosition":{"x":33029.75192573155,"y":30442.29103770232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f1787887-41aa-41d4-80c5-34db452cd148","savedPayload":{"position":{"x":33029.75192573155,"y":30442.29103770232},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3313017d-fdce-481b-9679-fe8e4f67cd45","savedPayload":{"position":{"x":32433.356993272086,"y":31038.668778615298},"targetPosition":{"x":32433.356993272086,"y":31038.668778615298},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}]} \ No newline at end of file diff --git a/Workspace.json b/Workspace.json deleted file mode 100644 index 0bb71b7f6..000000000 --- a/Workspace.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"Workspace","name":"Default Workspace","rootNodes":[{"type":"Network","name":"Superalgos","networkNodes":[{"type":"Network Node","name":"My Computer","code":"{ \n\"host\": \"localhost\", \n\"webPort\": \"34247\", \n\"webSocketsPort\": \"8080\"\n}","dataStorage":{"type":"Data Storage","name":"New Data Storage","sessionIndependentData":{"type":"Session Independent Data","name":"New Session Independent Data","exchangeDataProducts":[{"type":"Exchange Data Products","name":"Binance","singleMarketData":[{"type":"Single Market Data","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"431ea989-085b-40ae-aa2a-d371d7cb68c6","savedPayload":{"position":{"x":24932.511140174844,"y":31869.750557360872},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"cc76acbb-9fd2-43f0-95de-dc78e1aaa2b5","savedPayload":{"position":{"x":24843.874257455736,"y":31943.103579980623},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"683e24f7-010a-412e-ba21-f280e63a0f1d","savedPayload":{"position":{"x":24748.85401394781,"y":32007.08769637134},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"210b7e14-a6f0-4c56-b5e4-108f57ebb4c6","savedPayload":{"position":{"x":24648.094528241738,"y":32061.389427113263},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"ddd34b26-4fa8-4d7c-b76d-f671c92a6181","savedPayload":{"position":{"x":24542.52429894684,"y":32105.531096469156},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"302bfaf2-6466-4aa0-9924-33999366b774","savedPayload":{"position":{"x":24433.14826134718,"y":32139.10047507596},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"10142313-9ac8-4f4c-8105-88aec7bb7ce9","savedPayload":{"position":{"x":24321.013502485006,"y":32161.785259112734},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"80ed873e-8017-45ec-b211-fc4604f5aaf6","savedPayload":{"position":{"x":24207.197944630294,"y":32173.368867997546},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"6635502b-5366-430e-8dc1-4edaa21c2a7f","savedPayload":{"position":{"x":24093.093129961107,"y":32173.739279862366},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"3d048c1f-d45a-442a-9d44-362ad7770bb6","savedPayload":{"position":{"x":23979.210125787013,"y":32162.894598056188},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"c92d9454-d5fb-4954-a188-367dcd697af6","savedPayload":{"position":{"x":23866.935785461683,"y":32140.939261825577},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"4810638a-c137-4df6-8016-c8a2540dc9e7","savedPayload":{"position":{"x":23757.353555905916,"y":32108.084997484744},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"9c1f6b84-409e-4257-92ea-a9481d3509cd","savedPayload":{"position":{"x":23651.519455833408,"y":32064.64799544436},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"dcd46168-1662-42c5-be91-f489d9a55833","savedPayload":{"position":{"x":23550.452235012137,"y":32011.046653785743},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"be7e47ef-a530-4dc1-bf59-b731f1e49fa1","savedPayload":{"position":{"x":23455.125315478406,"y":31947.796675307076},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"f6868e09-2559-4fac-9631-54cf1a867c8a","savedPayload":{"position":{"x":23366.45667008943,"y":31875.507874454284},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"c424ba00-bbe0-4ae9-830a-3d2aa6fcaf4d","savedPayload":{"position":{"x":23285.300551163327,"y":31794.87569671494},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"3ebce074-9080-426a-baf9-61c1a04fc05b","savedPayload":{"position":{"x":23212.43815251551,"y":31706.677099143046},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"303572ad-cc90-46c9-8620-8454d557897b","savedPayload":{"position":{"x":23148.571158735027,"y":31611.760692723947},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"afbf02cf-97a6-4dc0-a3d5-95f29ba7781f","savedPayload":{"position":{"x":23094.31533999354,"y":31511.041040132637},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"f23ed030-62cc-408b-8966-245a86db6096","savedPayload":{"position":{"x":23050.193030207938,"y":31405.48772814446},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"0333bb7c-5101-441b-be9a-d9ff1a84f116","savedPayload":{"position":{"x":23016.629167431493,"y":31296.1169107748},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"913f8079-b038-444a-ad43-465fa0443c04","savedPayload":{"position":{"x":22993.947925204775,"y":31183.98148413413},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"bba7e1ab-5bca-44c0-a8aa-cd9570b338f3","savedPayload":{"position":{"x":22982.366774350547,"y":31070.162375761025},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"30016fca-86bc-4ba7-bc2b-95cdc1b1f048","savedPayload":{"position":{"x":22982.00011011269,"y":30956.047930631943},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"db5f07f4-0008-46b0-ad05-b5902b847ea7","savedPayload":{"position":{"x":22992.850849190625,"y":30842.152099222247},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"1ae6002d-fe1a-4ba7-8ed7-7449e0cd1ee0","savedPayload":{"position":{"x":23014.817211734488,"y":30729.858718532232},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"3e571150-bba3-437b-94e3-3906183713d1","savedPayload":{"position":{"x":23047.693109997686,"y":30620.245830545235},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"48a88db2-8a4c-485c-8ffd-ef08bb72f0e8","savedPayload":{"position":{"x":23091.172679590025,"y":30514.353967236675},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}},{"type":"Data Product","name":"Resistances","id":"0669d924-aace-46d1-b126-ccced8fd33cf","savedPayload":{"position":{"x":23143.969145378844,"y":30414.665704041094},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Resistances","id":"7a734501-a0fb-4305-803e-7e95d477c513"}}},{"type":"Data Product","name":"Supports","id":"5e7a0e50-e6ed-4106-8025-8b35ad6c597c","savedPayload":{"position":{"x":23209.592365400207,"y":30315.83219010329},"targetPosition":{"x":24146.405904950017,"y":31009.32813115183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Supports","id":"bc3c43de-6312-47d4-ae3d-0c95c1b039e0"}}}],"id":"65485ef6-3a78-4075-81b6-74d13956e055","savedPayload":{"position":{"x":24146.405904950017,"y":31009.32813115183},"targetPosition":{"x":24926.125679148896,"y":30143.434476097653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},{"type":"Single Market Data","name":"Binance ETH/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"2d7d22ec-f671-4090-9c9c-e4b0c6c2775e","savedPayload":{"position":{"x":39641.333811210454,"y":28936.98413868935},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"77bbb005-e635-4a07-a00e-5d0f25bc9084","savedPayload":{"position":{"x":39612.59634583407,"y":28848.5110343909},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"36099c73-db76-421f-a708-3034438521fd","savedPayload":{"position":{"x":39594.15352768551,"y":28758.904338266497},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"85bba657-c6e4-47bd-ba9b-90896d7a0dfb","savedPayload":{"position":{"x":39585.513470979095,"y":28668.600155855387},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"64e94c82-d070-485a-a117-01a4b77412ce","savedPayload":{"position":{"x":39586.515890435076,"y":28578.275802249987},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"83fd70d7-063a-491e-bb0e-49da3fdbbc79","savedPayload":{"position":{"x":39597.01323868843,"y":28488.759535006342},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"f70fcd18-3dcb-4fb4-b6a5-3c747fffbb4c","savedPayload":{"position":{"x":39616.82107043368,"y":28400.936525998834},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"f1c226bf-68b1-4cc3-bbfb-719742db129b","savedPayload":{"position":{"x":39645.70528040039,"y":28315.720626172813},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"4a2e6c31-6ac4-4cfb-afd3-3a80351f820d","savedPayload":{"position":{"x":39683.34058679891,"y":28234.020419812852},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"1e19eb33-7c3f-4b24-99e3-e5bf275a4b14","savedPayload":{"position":{"x":39729.311389966206,"y":28156.718652140855},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"559be759-fcc7-4c8f-bfe5-fe2ad5699e64","savedPayload":{"position":{"x":39783.1123675581,"y":28084.656149508282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"f7bb88aa-5624-4164-8353-c1006976ce5a","savedPayload":{"position":{"x":39844.15303173856,"y":28018.61953084089},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"ca3b14d4-b9b4-42be-89c9-d1f6f03e2584","savedPayload":{"position":{"x":39911.76371803724,"y":27959.33092647535},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"3616f54f-d12a-4a33-8493-d79943095b40","savedPayload":{"position":{"x":39985.20283169866,"y":27907.43928775395},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"077fe5ec-7fab-402b-b39a-752c0b8ee216","savedPayload":{"position":{"x":40063.66492102786,"y":27863.51284455778},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"a22caa08-ca88-4217-a718-54256191090d","savedPayload":{"position":{"x":40146.28952675484,"y":27828.032723488246},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"06c72bab-01ca-446b-a0b4-7d7eee109839","savedPayload":{"position":{"x":40232.170594436364,"y":27801.387550178282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"9e8c58c4-c1eb-4465-b679-ac9d3e8f4c4e","savedPayload":{"position":{"x":40320.36641444746,"y":27783.86918815466},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"7c579b34-cec9-4088-8356-6456aaf584f9","savedPayload":{"position":{"x":40409.909923101404,"y":27775.669478131724},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"a74b855f-2618-48a1-a205-912c0706d557","savedPayload":{"position":{"x":40499.81663014655,"y":27776.909528674598},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"e16b6d08-456c-4d7c-9254-21527386e7e9","savedPayload":{"position":{"x":40589.09169664543,"y":27787.555002280842},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"32daacad-779a-468e-af1e-f481169a140a","savedPayload":{"position":{"x":40676.76137062555,"y":27807.472594093873},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"5c5274f1-d2e6-467a-b0d0-5c608a7f8cd1","savedPayload":{"position":{"x":40761.86594350216,"y":27836.447055375374},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"6b2f9252-dd53-448b-9ec3-b40f38d6967b","savedPayload":{"position":{"x":40843.47350168687,"y":27874.160297912516},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"cb797003-f635-4e8b-9b23-62b6e2b55987","savedPayload":{"position":{"x":40917.71602191771,"y":27917.913249620826},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"6c589edf-7930-443a-9e73-e0d3db280669","savedPayload":{"position":{"x":40986.24755380669,"y":27967.183543605785},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"e71e4bd2-d1bb-499c-89d1-99b13ce6540b","savedPayload":{"position":{"x":41056.98651886182,"y":28030.330808475923},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"0e4fb01a-cdf0-43c9-8a2c-456e4bdf5631","savedPayload":{"position":{"x":41118.83139724332,"y":28100.72015635104},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"9ce941d0-5fbd-4ddb-91fd-53a1ea9a8962","savedPayload":{"position":{"x":41186.43383723706,"y":28204.23453473696},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}}],"id":"a6c5c5cf-f16f-4134-921d-4c1fd58c1bd3","savedPayload":{"position":{"x":23762.31423242076,"y":30203.830266168174},"targetPosition":{"x":24926.125679148896,"y":30143.434476097653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},{"type":"Single Market Data","name":"Binance ETH/BTC","dataProducts":[{"type":"Data Product","name":"Candles","id":"16b9f4a3-a8d5-4dee-9e06-ebf6dc99a0dd","savedPayload":{"position":{"x":39641.333811210454,"y":28936.98413868935},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"3e3efaba-d646-4ed1-84e4-e557d6577cff","savedPayload":{"position":{"x":39612.59634583407,"y":28848.5110343909},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"f5a6c648-702c-4a09-b31f-172a39667a0d","savedPayload":{"position":{"x":39594.15352768551,"y":28758.904338266497},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"b79faabd-ce5d-4c0f-83f9-cf92872ef865","savedPayload":{"position":{"x":39585.513470979095,"y":28668.600155855387},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"ad4e270d-d05a-4c08-a5d9-77eee5b0c1df","savedPayload":{"position":{"x":39586.515890435076,"y":28578.275802249987},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"6b44528c-99f2-4481-bb5a-4543ce9eeb23","savedPayload":{"position":{"x":39597.01323868843,"y":28488.759535006342},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"a61f956e-17b3-4dd7-97a6-d752909f25ba","savedPayload":{"position":{"x":39616.82107043368,"y":28400.936525998834},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"fdee854a-412d-4da3-bfc6-097328a7b08b","savedPayload":{"position":{"x":39645.70528040039,"y":28315.720626172813},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"d65052b9-889e-4e5b-bf27-1f69eac2c1dd","savedPayload":{"position":{"x":39683.34058679891,"y":28234.020419812852},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"b9800757-deb3-460a-b21a-b1ded164bfe3","savedPayload":{"position":{"x":39729.311389966206,"y":28156.718652140855},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"2d36dd55-4a17-4c7c-ad99-f8e155cf79df","savedPayload":{"position":{"x":39783.1123675581,"y":28084.656149508282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"6260b35f-cb85-462b-b231-75d0300c319b","savedPayload":{"position":{"x":39844.15303173856,"y":28018.61953084089},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"dae4c509-b392-48fb-8719-c885e113e582","savedPayload":{"position":{"x":39911.76371803724,"y":27959.33092647535},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"3a752ddd-2215-4875-9d30-bdafa1e56330","savedPayload":{"position":{"x":39985.20283169866,"y":27907.43928775395},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"37aea73f-0321-4711-82f0-27f2331851f9","savedPayload":{"position":{"x":40063.66492102786,"y":27863.51284455778},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"762df080-244a-44a5-a10e-e6f90547e039","savedPayload":{"position":{"x":40146.28952675484,"y":27828.032723488246},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"f50e39e6-fccf-4641-a5b9-c4999ea85bc9","savedPayload":{"position":{"x":40232.170594436364,"y":27801.387550178282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"7bb9b38c-0720-4cba-93d0-5e8df34f7b37","savedPayload":{"position":{"x":40320.36641444746,"y":27783.86918815466},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"3f5f5748-7e39-45c6-9e35-f9ef72ee49b4","savedPayload":{"position":{"x":40409.909923101404,"y":27775.669478131724},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"6e7ed7af-2ab2-4c26-a945-5ff282ba708e","savedPayload":{"position":{"x":40499.81663014655,"y":27776.909528674598},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"75cd4d2b-0b18-4650-8337-93b80260171a","savedPayload":{"position":{"x":40589.09169664543,"y":27787.555002280842},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"4dd66811-c216-4488-80ae-f5fb86527782","savedPayload":{"position":{"x":40676.76137062555,"y":27807.472594093873},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"cdeb9d99-2e44-457e-aa1a-77e4e83128f2","savedPayload":{"position":{"x":40761.86594350216,"y":27836.447055375374},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"8c7efbf3-df1e-4d2a-b16f-2c44610a92f0","savedPayload":{"position":{"x":40843.47350168687,"y":27874.160297912516},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"1745c5a0-f14f-432e-a7b1-5efd41411fa1","savedPayload":{"position":{"x":40917.71602191771,"y":27917.913249620826},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"d5810f9e-5ee1-4d99-a08f-8a72720401d8","savedPayload":{"position":{"x":40986.24755380669,"y":27967.183543605785},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"c263e4aa-e8c1-426a-bee8-d1a0955d57c4","savedPayload":{"position":{"x":41056.98651886182,"y":28030.330808475923},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"9d65e5bd-8354-4433-9911-95e2f975ee0f","savedPayload":{"position":{"x":41118.83139724332,"y":28100.72015635104},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"5fca8f85-1152-4f04-b64b-6876f4b66e5a","savedPayload":{"position":{"x":41186.43383723706,"y":28204.23453473696},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}}],"id":"27d90aec-9540-497f-a326-ea224ecbf851","savedPayload":{"position":{"x":24060.147369538085,"y":29363.56104166905},"targetPosition":{"x":24926.125679148896,"y":30143.434476097653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}}],"id":"d87f998e-5b58-4df5-9080-8d9c3a4ba1a6","savedPayload":{"position":{"x":24925.331154205214,"y":30143.582283947504},"targetPosition":{"x":25508.203215259186,"y":30113.20296378238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}},{"type":"Exchange Data Products","name":"Bitfinex","singleMarketData":[{"type":"Single Market Data","name":"Bitfinex BTC/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"8ca5590a-f8fd-4451-beb4-6f129503917f","savedPayload":{"position":{"x":23857.518796632572,"y":30948.595796617203},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"40ad627e-1b42-471c-bf9c-5d2ac61811f9","savedPayload":{"position":{"x":23743.126518472814,"y":30937.776038794687},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"a5534859-2c15-4848-8083-a1eb33485e21","savedPayload":{"position":{"x":23630.675720084266,"y":30915.819014446486},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"8969e130-aa60-47c1-a301-99f1908db6df","savedPayload":{"position":{"x":23520.980204366722,"y":30882.95085481248},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"51e94a87-e6cf-4245-a74b-96c3032abb05","savedPayload":{"position":{"x":23415.055045667486,"y":30839.4907241862},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"1ef0b65e-d904-4a82-bf61-a6ba3aaf5443","savedPayload":{"position":{"x":23313.908638646677,"y":30785.85810333353},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"eb35295a-b358-4688-8482-74307091466e","savedPayload":{"position":{"x":23218.510619076456,"y":30722.569939692887},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"d525e21f-ea75-4844-8e09-87f5f478045e","savedPayload":{"position":{"x":23129.777709181402,"y":30650.235965199005},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"d4905d55-abce-4fa9-95a2-1875c16fb4b7","savedPayload":{"position":{"x":23048.563441648075,"y":30569.552929243273},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"891c972c-e624-42af-ab10-056b6d6f194b","savedPayload":{"position":{"x":22975.64940532264,"y":30481.29793394236},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"dbfb5bbc-ebb7-41da-8a45-eaf75d943736","savedPayload":{"position":{"x":22911.737491235457,"y":30386.320972435075},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"5bcf67c8-5a50-477f-9dce-c23993104cea","savedPayload":{"position":{"x":22857.44302651283,"y":30285.53675487433},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"83243cbe-ccb6-4aef-94a2-5fa4870c674b","savedPayload":{"position":{"x":22813.28879462196,"y":30179.91590606886},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"62ae801f-e2e0-4611-9cc0-a3dc66a76da1","savedPayload":{"position":{"x":22779.699972033926,"y":30070.475621930564},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"e19f6e55-47de-4f92-99ae-e7e10d755561","savedPayload":{"position":{"x":22757.000017865823,"y":29958.269875887152},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"90374e6f-9568-4211-b3a6-7c650c45f1e3","savedPayload":{"position":{"x":22745.40755033013,"y":29844.379270193356},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"850a58e9-2da0-43dc-b5be-739bd478309e","savedPayload":{"position":{"x":22745.034438801205,"y":29730.096602904843},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"9e1a2843-59a0-485e-8ce0-e8c98e5a2001","savedPayload":{"position":{"x":22755.884207749565,"y":29616.134022975937},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"56d92d99-a094-4b18-9e22-37eba7b7dfdb","savedPayload":{"position":{"x":22777.85228102424,"y":29503.78213580036},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"158d1589-7e86-4a42-819b-f3992495d35c","savedPayload":{"position":{"x":22810.727234717422,"y":29394.124128930966},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"fd7cefdd-57a6-4d42-920f-85f26ef9003b","savedPayload":{"position":{"x":22854.192594540717,"y":29288.216162193945},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"bbfcd667-2876-4432-acdd-c4c18a10da9f","savedPayload":{"position":{"x":22907.82994849088,"y":29187.07818980611},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"3331fec3-bb84-41ba-aec6-e8859970cbf5","savedPayload":{"position":{"x":22971.123009403243,"y":29091.68420748834},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"aeb10072-f55f-49e3-96bf-46967054f62f","savedPayload":{"position":{"x":23043.46264415907,"y":29002.95288106252},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"0fdf9d81-9385-44d0-9377-8c569b1a083e","savedPayload":{"position":{"x":23124.1528499236,"y":28921.73869624482},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"ad5e3de6-59c4-49d5-9634-d24e6f10fff0","savedPayload":{"position":{"x":23212.41768674634,"y":28848.82371772441},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"ebfb6d57-a2eb-4795-bbd4-60cb683eb985","savedPayload":{"position":{"x":23307.40928300375,"y":28784.910027264916},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"648437ed-379a-4ec3-b36e-88ed3c9eb924","savedPayload":{"position":{"x":23408.217457439972,"y":28730.612862030557},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"b60cf50c-726b-4161-a917-60c94ce0a814","savedPayload":{"position":{"x":23512.21060383111,"y":28686.991280881037},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}},{"type":"Data Product","name":"Resistances","id":"c09cd1cf-bdc9-44eb-96f5-c5be6ff73018","savedPayload":{"position":{"x":23618.871306723137,"y":28653.64827017649},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Resistances","id":"7a734501-a0fb-4305-803e-7e95d477c513"}}},{"type":"Data Product","name":"Supports","id":"73629d93-5410-4146-abcf-cec699e6508f","savedPayload":{"position":{"x":23742.373887671045,"y":28628.769267696025},"targetPosition":{"x":23910.256954200282,"y":29783.445329166498},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Supports","id":"bc3c43de-6312-47d4-ae3d-0c95c1b039e0"}}}],"id":"9ee38046-b40d-4f09-9ffa-5cc47e14d3ef","savedPayload":{"position":{"x":23909.89673985658,"y":29783.624657238204},"targetPosition":{"x":25074.516130996362,"y":29722.721410284623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},{"type":"Single Market Data","name":"Bitfinex ETH/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"db5a0847-7d32-407f-b998-504e6987ac5d","savedPayload":{"position":{"x":39641.333811210454,"y":28936.98413868935},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"1aa532fa-b407-484a-b905-ffcaabbd18dd","savedPayload":{"position":{"x":39612.59634583407,"y":28848.5110343909},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"311b5bc6-89b8-4111-9dff-297c8cada756","savedPayload":{"position":{"x":39594.15352768551,"y":28758.904338266497},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"55f7eed7-d7d8-4d6c-aeeb-37dc4f19e250","savedPayload":{"position":{"x":39585.513470979095,"y":28668.600155855387},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"1b8b981a-f564-4be0-b964-5a6e8aac483c","savedPayload":{"position":{"x":39586.515890435076,"y":28578.275802249987},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"6318dc61-c509-4f55-8bc1-f8c354750373","savedPayload":{"position":{"x":39597.01323868843,"y":28488.759535006342},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"b5a92b7b-49f7-4e81-96b0-65139a052f31","savedPayload":{"position":{"x":39616.82107043368,"y":28400.936525998834},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"6ce07f50-22e1-4067-89d5-35197f49c12d","savedPayload":{"position":{"x":39645.70528040039,"y":28315.720626172813},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"5ee22014-e965-4bd3-9dc4-5f278fa645e2","savedPayload":{"position":{"x":39683.34058679891,"y":28234.020419812852},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"16c5f929-dfa2-491d-8840-f7364d585534","savedPayload":{"position":{"x":39729.311389966206,"y":28156.718652140855},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"ccd8661e-6c55-4487-85c8-c8a78ef69449","savedPayload":{"position":{"x":39783.1123675581,"y":28084.656149508282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"99141ad2-c42b-4a92-905a-a5204bdbd028","savedPayload":{"position":{"x":39844.15303173856,"y":28018.61953084089},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"606c917d-f3c8-4bda-876b-f2a330c9e080","savedPayload":{"position":{"x":39911.76371803724,"y":27959.33092647535},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"55faf55c-a35d-4fab-b06e-a741c79eb649","savedPayload":{"position":{"x":39985.20283169866,"y":27907.43928775395},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"91c0af7b-fb28-4579-a9cd-f3bb72d3a7b5","savedPayload":{"position":{"x":40063.66492102786,"y":27863.51284455778},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"6050a905-5b53-4564-839c-704689a8040c","savedPayload":{"position":{"x":40146.28952675484,"y":27828.032723488246},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"427f90de-6fcb-4118-81ad-8edbbc56d69e","savedPayload":{"position":{"x":40232.170594436364,"y":27801.387550178282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"0bc50648-a584-454e-a1f2-aa10ca3bf584","savedPayload":{"position":{"x":40320.36641444746,"y":27783.86918815466},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"8443e827-1f25-4628-ad26-ae9b2ed75a4c","savedPayload":{"position":{"x":40409.909923101404,"y":27775.669478131724},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"2e75cfc3-0672-4036-ab3c-e442f25e67c5","savedPayload":{"position":{"x":40499.81663014655,"y":27776.909528674598},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"83349bb9-eb3b-420e-9179-51e5fed53a4d","savedPayload":{"position":{"x":40589.09169664543,"y":27787.555002280842},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"c691a7ca-0ca2-40e3-8d3c-0aa2d0dc67df","savedPayload":{"position":{"x":40676.76137062555,"y":27807.472594093873},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"e70866c1-2510-4173-955c-c5f051675fc2","savedPayload":{"position":{"x":40761.86594350216,"y":27836.447055375374},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"244258eb-32a2-4461-82b0-189843ae2938","savedPayload":{"position":{"x":40843.47350168687,"y":27874.160297912516},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"9142fb14-ef44-4145-8a12-f478740f683d","savedPayload":{"position":{"x":40917.71602191771,"y":27917.913249620826},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"f162aa37-3254-40df-bf80-ad675ec7013e","savedPayload":{"position":{"x":40986.24755380669,"y":27967.183543605785},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"d27bcabe-7c58-4cde-982e-7df6371566c2","savedPayload":{"position":{"x":41056.98651886182,"y":28030.330808475923},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"d8d7ee2a-c7ba-4af6-bb9b-5f079fd2bc97","savedPayload":{"position":{"x":41118.83139724332,"y":28100.72015635104},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"f7de320f-62ed-4895-a8ec-f428b4ae257e","savedPayload":{"position":{"x":41186.43383723706,"y":28204.23453473696},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}}],"id":"24ffe12b-2bb6-4fb0-be14-10c991da0f71","savedPayload":{"position":{"x":24207.876849318975,"y":28942.403177936478},"targetPosition":{"x":25074.516130996362,"y":29722.721410284623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},{"type":"Single Market Data","name":"Bitfinex ETH/BTC","dataProducts":[{"type":"Data Product","name":"Candles","id":"7231bf36-59d4-488a-92f6-b86cac06a4ee","savedPayload":{"position":{"x":39641.333811210454,"y":28936.98413868935},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"89545d86-176a-4d6c-a3c6-f5aa91bc81f9","savedPayload":{"position":{"x":39612.59634583407,"y":28848.5110343909},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"6d6dbb96-9000-4823-a406-21e08b23d9b1","savedPayload":{"position":{"x":39594.15352768551,"y":28758.904338266497},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"2e918fbb-7a86-4a0a-a2d6-63f96aba723c","savedPayload":{"position":{"x":39585.513470979095,"y":28668.600155855387},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"8cd8fadf-5f8e-4bd9-b94f-60ecc6458b2f","savedPayload":{"position":{"x":39586.515890435076,"y":28578.275802249987},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"c8addbbe-1357-4b4b-be80-8d393382ecf1","savedPayload":{"position":{"x":39597.01323868843,"y":28488.759535006342},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"1862c44e-a987-400c-912a-700c71afca0f","savedPayload":{"position":{"x":39616.82107043368,"y":28400.936525998834},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"dabf0634-d480-42fb-bb2e-412bd2f5a91a","savedPayload":{"position":{"x":39645.70528040039,"y":28315.720626172813},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"bcd2f058-b482-470b-8b05-524070d15aed","savedPayload":{"position":{"x":39683.34058679891,"y":28234.020419812852},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"544b0d58-b0a2-4d0a-b93e-6bcc8049bdfa","savedPayload":{"position":{"x":39729.311389966206,"y":28156.718652140855},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"b9992ccb-be3f-4bde-bf0c-d4f57adbbe60","savedPayload":{"position":{"x":39783.1123675581,"y":28084.656149508282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"dfec915e-0506-45ec-a312-f479c82f053f","savedPayload":{"position":{"x":39844.15303173856,"y":28018.61953084089},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"e887f7a3-6b04-4350-b4af-2e93f83a3f5e","savedPayload":{"position":{"x":39911.76371803724,"y":27959.33092647535},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"302cc843-8d79-40e0-91e5-55dd67ec72a1","savedPayload":{"position":{"x":39985.20283169866,"y":27907.43928775395},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"f58fb743-f2a8-4057-a8b1-94de5abfed2a","savedPayload":{"position":{"x":40063.66492102786,"y":27863.51284455778},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"a4462e08-b9c2-4087-8a28-db60b1e73da0","savedPayload":{"position":{"x":40146.28952675484,"y":27828.032723488246},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"7406f236-8c84-4667-a664-a99f4e7f7e9a","savedPayload":{"position":{"x":40232.170594436364,"y":27801.387550178282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"1532eee5-30cc-402e-bccd-215e369ec6d5","savedPayload":{"position":{"x":40320.36641444746,"y":27783.86918815466},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"8bbbd6dd-2046-46aa-8371-b72b6a854dd3","savedPayload":{"position":{"x":40409.909923101404,"y":27775.669478131724},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"b4723c12-5eee-4332-a2d8-5121621ec67c","savedPayload":{"position":{"x":40499.81663014655,"y":27776.909528674598},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"725e166a-50c8-4bc6-89c3-982568b131de","savedPayload":{"position":{"x":40589.09169664543,"y":27787.555002280842},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"abf1cca1-7712-49f0-ba75-5da62c3a392a","savedPayload":{"position":{"x":40676.76137062555,"y":27807.472594093873},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"eb71fb91-c7e2-41ad-9076-8ff6b16f19e7","savedPayload":{"position":{"x":40761.86594350216,"y":27836.447055375374},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"9a1c3271-ec28-4b22-bcbd-d774fd697b2a","savedPayload":{"position":{"x":40843.47350168687,"y":27874.160297912516},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"f3b6ad0d-6f9e-4326-aa14-358642d1307e","savedPayload":{"position":{"x":40917.71602191771,"y":27917.913249620826},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"e7d09883-ff94-4e49-999c-aafaca89ff88","savedPayload":{"position":{"x":40986.24755380669,"y":27967.183543605785},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"1890a6a3-73aa-49eb-86ca-ea3560f16703","savedPayload":{"position":{"x":41056.98651886182,"y":28030.330808475923},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"13e5d062-5f46-41ea-86f1-a1ea522cad64","savedPayload":{"position":{"x":41118.83139724332,"y":28100.72015635104},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"61189f6e-65e8-48c8-bdd1-7b75fad66538","savedPayload":{"position":{"x":41186.43383723706,"y":28204.23453473696},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}}],"id":"98a11c64-20d8-49f8-aee6-aad97aaef25d","savedPayload":{"position":{"x":25013.53946172551,"y":28558.101819509862},"targetPosition":{"x":25074.516130996362,"y":29722.721410284623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}}],"id":"dedbd027-6896-43e4-98f9-abb48612bfbe","savedPayload":{"position":{"x":25074.455450160727,"y":29722.665363931737},"targetPosition":{"x":25508.203215259186,"y":30113.20296378238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Bitfinex","id":"3ff59cad-42ae-4527-b060-4585cc4e7e1a"}}},{"type":"Exchange Data Products","name":"Bittrex","singleMarketData":[{"type":"Single Market Data","name":"Bittrex BTC/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"18386b37-31c2-4e85-8e17-e46e036de5b9","savedPayload":{"position":{"x":39641.333811210454,"y":28936.98413868935},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"bf4456fc-661b-4059-8cd8-9249de117055","savedPayload":{"position":{"x":39612.59634583407,"y":28848.5110343909},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"f058cb8d-ac26-49b2-a71e-03b6da20cf2c","savedPayload":{"position":{"x":39594.15352768551,"y":28758.904338266497},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"712a8c20-3a29-4c01-8292-9f7dd49626d1","savedPayload":{"position":{"x":39585.513470979095,"y":28668.600155855387},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"c944bfd2-3366-4ef8-8d86-17fb07b8236b","savedPayload":{"position":{"x":39586.515890435076,"y":28578.275802249987},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"c6b2aa08-7810-44e7-b41e-cf2c5ed6bdaa","savedPayload":{"position":{"x":39597.01323868843,"y":28488.759535006342},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"a1bdc52f-a93c-468a-9a57-3730eaf653b0","savedPayload":{"position":{"x":39616.82107043368,"y":28400.936525998834},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"8cb86b9c-bd1c-40f2-932d-39c3463c281b","savedPayload":{"position":{"x":39645.70528040039,"y":28315.720626172813},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"ae18cd86-b31a-4205-84ee-1ae5fa13a80e","savedPayload":{"position":{"x":39683.34058679891,"y":28234.020419812852},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"4d76dcf6-8f1e-46c9-a635-36f5c2afa299","savedPayload":{"position":{"x":39729.311389966206,"y":28156.718652140855},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"f06e0f2d-3494-488a-9d61-fe8ceaa22294","savedPayload":{"position":{"x":39783.1123675581,"y":28084.656149508282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"a660ba6d-92e9-46d4-9a44-a3f753acc5c2","savedPayload":{"position":{"x":39844.15303173856,"y":28018.61953084089},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"ec9da642-733f-4906-9030-bec8f124af77","savedPayload":{"position":{"x":39911.76371803724,"y":27959.33092647535},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"b7652a67-6fd3-458b-b1e1-c44781a2a277","savedPayload":{"position":{"x":39985.20283169866,"y":27907.43928775395},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"e66a9113-31a7-480d-93f5-4b3030fcb59a","savedPayload":{"position":{"x":40063.66492102786,"y":27863.51284455778},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"f40c85ab-ea9f-4218-b9fb-b772a80f6573","savedPayload":{"position":{"x":40146.28952675484,"y":27828.032723488246},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"cae7b3ba-fe2c-47de-8df9-d06e4c8f461d","savedPayload":{"position":{"x":40232.170594436364,"y":27801.387550178282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"3249ddb7-692a-4c09-a4c3-77b96b0a64c7","savedPayload":{"position":{"x":40320.36641444746,"y":27783.86918815466},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"c93aa11a-f985-47bd-b455-7e29e74ae110","savedPayload":{"position":{"x":40409.909923101404,"y":27775.669478131724},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"ad145a69-4b17-4d3e-ac0d-8457100b79db","savedPayload":{"position":{"x":40499.81663014655,"y":27776.909528674598},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"8d96c5ee-a93c-4998-9921-97df5c9bf029","savedPayload":{"position":{"x":40589.09169664543,"y":27787.555002280842},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"ed3a7c39-e271-465c-b851-28e732280269","savedPayload":{"position":{"x":40676.76137062555,"y":27807.472594093873},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"36e8fd8c-1ee2-4eb5-aee4-1ebe41904d6b","savedPayload":{"position":{"x":40761.86594350216,"y":27836.447055375374},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"cf1ee8e6-1535-407a-96a8-9fa3ca0fe961","savedPayload":{"position":{"x":40843.47350168687,"y":27874.160297912516},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"51498d52-85b8-457c-a3c0-408b2508da35","savedPayload":{"position":{"x":40917.71602191771,"y":27917.913249620826},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"1dae3f21-76fd-4c1c-9996-bcf47979864e","savedPayload":{"position":{"x":40986.24755380669,"y":27967.183543605785},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"54e34635-4dcc-419c-90eb-be0dc9e32133","savedPayload":{"position":{"x":41056.98651886182,"y":28030.330808475923},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"7611c40e-3062-4a96-9674-f226f5c597ee","savedPayload":{"position":{"x":41118.83139724332,"y":28100.72015635104},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"639fcc78-6450-44a7-910f-7dc77ff05ebd","savedPayload":{"position":{"x":41186.43383723706,"y":28204.23453473696},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}}],"id":"ab149c28-1094-4494-9f12-1b5e127dd2c9","savedPayload":{"position":{"x":24352.747582438504,"y":29229.32576578101},"targetPosition":{"x":25478.3404478132,"y":29530.81450844425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b440afe2-4129-4553-8adc-a2bbbf88354d"}}},{"type":"Single Market Data","name":"Bittrex ETH/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"e24f042c-71b5-4647-ac90-c0068c30e202","savedPayload":{"position":{"x":39641.333811210454,"y":28936.98413868935},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"05f3214d-b73d-4f1d-ac9f-df9c4f1d9872","savedPayload":{"position":{"x":39612.59634583407,"y":28848.5110343909},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"8cb63f19-fd93-4aee-b69f-b89b15e908b2","savedPayload":{"position":{"x":39594.15352768551,"y":28758.904338266497},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"9b2f804e-ff08-4f83-8608-ec6548cb8859","savedPayload":{"position":{"x":39585.513470979095,"y":28668.600155855387},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"ae616763-d384-41cc-a61a-e8a2ae01752b","savedPayload":{"position":{"x":39586.515890435076,"y":28578.275802249987},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"b0e5bf78-4bb7-478f-817a-5f5f85f7890d","savedPayload":{"position":{"x":39597.01323868843,"y":28488.759535006342},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"0d1b6fe2-e5f4-4724-89fa-f5443084ccd0","savedPayload":{"position":{"x":39616.82107043368,"y":28400.936525998834},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"22799460-416a-4ea4-9e19-bea31f5ae5b4","savedPayload":{"position":{"x":39645.70528040039,"y":28315.720626172813},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"c8cab685-fea6-4224-afee-ffa7c45e3069","savedPayload":{"position":{"x":39683.34058679891,"y":28234.020419812852},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"876b4c27-42db-430c-99eb-208d0562cc86","savedPayload":{"position":{"x":39729.311389966206,"y":28156.718652140855},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"f556f3d0-1c6e-4ee0-8128-280892ab378a","savedPayload":{"position":{"x":39783.1123675581,"y":28084.656149508282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"be67744f-7ee5-490e-ad75-b0ed1563df09","savedPayload":{"position":{"x":39844.15303173856,"y":28018.61953084089},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"60f28f50-15fd-4e1b-88eb-c2e1b24610fa","savedPayload":{"position":{"x":39911.76371803724,"y":27959.33092647535},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"fca7ffa6-b650-46f3-8b0a-768fdfd54332","savedPayload":{"position":{"x":39985.20283169866,"y":27907.43928775395},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"92950803-603f-49c8-b4d6-b72f86162365","savedPayload":{"position":{"x":40063.66492102786,"y":27863.51284455778},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"6da79673-bb47-4600-b4a5-fb8f88522b36","savedPayload":{"position":{"x":40146.28952675484,"y":27828.032723488246},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"dd2a07fe-1572-471b-9f9b-48a7e0392555","savedPayload":{"position":{"x":40232.170594436364,"y":27801.387550178282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"3d0fbf6d-c623-4b21-8381-8641952cf6f1","savedPayload":{"position":{"x":40320.36641444746,"y":27783.86918815466},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"843b0322-9811-4417-bc50-065fbe04b5d3","savedPayload":{"position":{"x":40409.909923101404,"y":27775.669478131724},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"fd558fef-2d8b-4744-aecf-754744b3cb90","savedPayload":{"position":{"x":40499.81663014655,"y":27776.909528674598},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"024b78b3-31b5-482b-8932-20e9f3abed34","savedPayload":{"position":{"x":40589.09169664543,"y":27787.555002280842},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"98d0042b-ba9a-497f-8b06-742a54c0b829","savedPayload":{"position":{"x":40676.76137062555,"y":27807.472594093873},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"510d89e2-5395-49d1-bd51-6625e52cb270","savedPayload":{"position":{"x":40761.86594350216,"y":27836.447055375374},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"a2a50fb8-37e0-4b15-9e37-ad6ed7d7d5e3","savedPayload":{"position":{"x":40843.47350168687,"y":27874.160297912516},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"dc09914f-c106-4f9e-abd1-4568e397f1ae","savedPayload":{"position":{"x":40917.71602191771,"y":27917.913249620826},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"dfc24bd8-cd07-4274-92fd-8c0c744e2c68","savedPayload":{"position":{"x":40986.24755380669,"y":27967.183543605785},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"5ed353b3-55bd-426a-99fd-1f06e244a2ac","savedPayload":{"position":{"x":41056.98651886182,"y":28030.330808475923},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"24643a9a-d0a7-4b2e-9819-2b35a6d04a59","savedPayload":{"position":{"x":41118.83139724332,"y":28100.72015635104},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"a6833160-42da-4870-ac11-4708cdc33ab5","savedPayload":{"position":{"x":41186.43383723706,"y":28204.23453473696},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}}],"id":"dc3de33d-d8b0-4ed0-8cd9-24a9c2f6ae39","savedPayload":{"position":{"x":24501.069126562343,"y":28896.093047070186},"targetPosition":{"x":25478.3404478132,"y":29530.81450844425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169"}}},{"type":"Single Market Data","name":"Bittrex ETC/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"ddd87ac2-ab9c-4ed9-9e0c-a3f3a8f343b3","savedPayload":{"position":{"x":39641.333811210454,"y":28936.98413868935},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"1c1f88b7-277c-4f55-a84c-1ae3d65880ee","savedPayload":{"position":{"x":39612.59634583407,"y":28848.5110343909},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"ed6af1ef-8cf9-44c6-aeeb-d2158e55de0c","savedPayload":{"position":{"x":39594.15352768551,"y":28758.904338266497},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"633b20d4-01c5-4690-9ce7-b88cdbd60a06","savedPayload":{"position":{"x":39585.513470979095,"y":28668.600155855387},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"fd5865d8-cdfd-4ed9-9f5d-32b2921a1405","savedPayload":{"position":{"x":39586.515890435076,"y":28578.275802249987},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"02cf98d8-a0c7-4660-a2a6-3e036fa164f1","savedPayload":{"position":{"x":39597.01323868843,"y":28488.759535006342},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"ccb3113d-5688-43fd-8d56-50c0203e83c8","savedPayload":{"position":{"x":39616.82107043368,"y":28400.936525998834},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"d8abe022-57c9-4a5b-8659-cac54108db52","savedPayload":{"position":{"x":39645.70528040039,"y":28315.720626172813},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"04a7403b-5b37-40ff-b89f-9dfa89ba823d","savedPayload":{"position":{"x":39683.34058679891,"y":28234.020419812852},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"25ffeeb8-15ae-4100-9ba1-0fd871c6ab0e","savedPayload":{"position":{"x":39729.311389966206,"y":28156.718652140855},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"b38b6d6a-66cc-4b57-84ad-5e5b68e87b12","savedPayload":{"position":{"x":39783.1123675581,"y":28084.656149508282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"c90fef1e-d849-40e9-bf33-daa7fab0b5a8","savedPayload":{"position":{"x":39844.15303173856,"y":28018.61953084089},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"c1db1eb1-51fd-4c6e-9337-a8ed3990544a","savedPayload":{"position":{"x":39911.76371803724,"y":27959.33092647535},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"61c35ce6-f516-4a9d-b59f-02827725baae","savedPayload":{"position":{"x":39985.20283169866,"y":27907.43928775395},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"b8927c70-a6cf-4efe-b0e1-2aa65c04f014","savedPayload":{"position":{"x":40063.66492102786,"y":27863.51284455778},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"35bbd8e0-d1e3-4958-b0ec-bd75398c5de1","savedPayload":{"position":{"x":40146.28952675484,"y":27828.032723488246},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"59ca793f-73b6-4da1-8ef8-e8d9e7f26dc2","savedPayload":{"position":{"x":40232.170594436364,"y":27801.387550178282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"6de43c70-eecf-461a-a8f9-545bc53ad361","savedPayload":{"position":{"x":40320.36641444746,"y":27783.86918815466},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"8d4b6559-0a08-45c3-a366-6078f233c85d","savedPayload":{"position":{"x":40409.909923101404,"y":27775.669478131724},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"0c9e1772-2c58-4c44-836f-4b26a48f9553","savedPayload":{"position":{"x":40499.81663014655,"y":27776.909528674598},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"23a549f6-48e1-457a-8cad-24ae2212c474","savedPayload":{"position":{"x":40589.09169664543,"y":27787.555002280842},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"6ea466b2-82c1-4df1-a019-76fa01c31e24","savedPayload":{"position":{"x":40676.76137062555,"y":27807.472594093873},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"4bd4551d-122d-448e-b057-7d0fea80861f","savedPayload":{"position":{"x":40761.86594350216,"y":27836.447055375374},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"6618a228-456d-4750-bfc1-1d67c30dd342","savedPayload":{"position":{"x":40843.47350168687,"y":27874.160297912516},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"397f9ef6-9408-4ff0-a648-c613eba608c3","savedPayload":{"position":{"x":40917.71602191771,"y":27917.913249620826},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"a99e142e-0d9f-4a4b-b1d6-5543515021dd","savedPayload":{"position":{"x":40986.24755380669,"y":27967.183543605785},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"2c7f3547-5f6d-43c1-b847-c3c5a50e1065","savedPayload":{"position":{"x":41056.98651886182,"y":28030.330808475923},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"2bf97109-0348-4667-8997-602fa9881b90","savedPayload":{"position":{"x":41118.83139724332,"y":28100.72015635104},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"f0dd17db-bfce-49ce-bd9e-d4fcd727ab0b","savedPayload":{"position":{"x":41186.43383723706,"y":28204.23453473696},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}}],"id":"06090a1b-21b3-4730-92e6-344bcdace9ae","savedPayload":{"position":{"x":24744.89147317478,"y":28625.12966205948},"targetPosition":{"x":25478.3404478132,"y":29530.81450844425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETC/USDT","id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a"}}},{"type":"Single Market Data","name":"Bittrex XMR/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"38cff471-d74c-4fe0-b53b-9d64290df615","savedPayload":{"position":{"x":39641.333811210454,"y":28936.98413868935},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"b6e14358-eb68-4e7f-baf5-cd05ebbd9faf","savedPayload":{"position":{"x":39612.59634583407,"y":28848.5110343909},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"c8b61164-d8fc-445b-b8ab-81b35e19abb4","savedPayload":{"position":{"x":39594.15352768551,"y":28758.904338266497},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"379870d9-4fb7-42c0-aef1-0c054b89dafb","savedPayload":{"position":{"x":39585.513470979095,"y":28668.600155855387},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"ac5dd233-6cf9-4820-9ab9-a7adbd9b2429","savedPayload":{"position":{"x":39586.515890435076,"y":28578.275802249987},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"d10b824a-b980-4b29-a982-a8e1666d53ec","savedPayload":{"position":{"x":39597.01323868843,"y":28488.759535006342},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"64bb097f-4821-4e8c-bfa6-b3af05f8443d","savedPayload":{"position":{"x":39616.82107043368,"y":28400.936525998834},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"4b05b9c6-8794-45d6-b782-5e071ae635b5","savedPayload":{"position":{"x":39645.70528040039,"y":28315.720626172813},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"0417fe10-ec0d-48a5-b8e9-e0cc16a47159","savedPayload":{"position":{"x":39683.34058679891,"y":28234.020419812852},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"a28b9b3c-1b09-48fb-98f2-0adc73ba9e45","savedPayload":{"position":{"x":39729.311389966206,"y":28156.718652140855},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"8ebcc43b-051e-436d-99c9-84b16a5575f9","savedPayload":{"position":{"x":39783.1123675581,"y":28084.656149508282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"e2054a67-d691-415b-a17c-a6dfbc026ba7","savedPayload":{"position":{"x":39844.15303173856,"y":28018.61953084089},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"04b7414a-04eb-4913-8d27-e91c4d5207bf","savedPayload":{"position":{"x":39911.76371803724,"y":27959.33092647535},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"e46be264-9b3c-4672-b057-477fd5b4ff17","savedPayload":{"position":{"x":39985.20283169866,"y":27907.43928775395},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"24fc564c-b387-47a7-b884-e7ef8c5fb43c","savedPayload":{"position":{"x":40063.66492102786,"y":27863.51284455778},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"4e592467-d045-4d8f-85d8-051966d5f7c6","savedPayload":{"position":{"x":40146.28952675484,"y":27828.032723488246},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"1fdae58b-ae24-40a7-b6af-2422c8fc6305","savedPayload":{"position":{"x":40232.170594436364,"y":27801.387550178282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"70651c9f-8d7f-40aa-8c9d-e5b6968025e6","savedPayload":{"position":{"x":40320.36641444746,"y":27783.86918815466},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"504af5a8-686f-47ca-a2c7-a9d1faf9b4c4","savedPayload":{"position":{"x":40409.909923101404,"y":27775.669478131724},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"cb385521-0845-4ed1-8775-1cf4d3a7f277","savedPayload":{"position":{"x":40499.81663014655,"y":27776.909528674598},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"cabe366d-0fb1-4ad6-8a19-1339ce5411f6","savedPayload":{"position":{"x":40589.09169664543,"y":27787.555002280842},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"5df032a9-2fd9-4c4c-8a22-0ef6fcebea43","savedPayload":{"position":{"x":40676.76137062555,"y":27807.472594093873},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"b74c6e0d-997a-4b05-ab6d-59b2d9f95082","savedPayload":{"position":{"x":40761.86594350216,"y":27836.447055375374},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"32e3d829-1991-440e-b2fb-b738fc0bb0dd","savedPayload":{"position":{"x":40843.47350168687,"y":27874.160297912516},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"f0b18ad2-e19e-49ab-9330-66ea4735e8e3","savedPayload":{"position":{"x":40917.71602191771,"y":27917.913249620826},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"c627f2f0-4ed4-4f65-87f3-8b2119ec381a","savedPayload":{"position":{"x":40986.24755380669,"y":27967.183543605785},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"ead70d5a-fb27-4b8c-9d43-abd6413e849b","savedPayload":{"position":{"x":41056.98651886182,"y":28030.330808475923},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"44f08ac2-b9f2-497d-842e-e06a0f930b03","savedPayload":{"position":{"x":41118.83139724332,"y":28100.72015635104},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"deec79da-3141-4d86-908c-f2c0b72a5c13","savedPayload":{"position":{"x":41186.43383723706,"y":28204.23453473696},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}}],"id":"502a5e5b-d635-4cd8-8d4e-b4803816cb95","savedPayload":{"position":{"x":25060.992615072733,"y":28442.256412874933},"targetPosition":{"x":25478.3404478132,"y":29530.81450844425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XMR/USDT","id":"35020f56-8c2c-4a78-8547-41f39c8d282f"}}},{"type":"Single Market Data","name":"Bittrex DASH/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"a7b8e4ed-e341-478f-ade9-608a15ca978a","savedPayload":{"position":{"x":39641.333811210454,"y":28936.98413868935},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"6735e760-6024-47c2-9005-61041c63dad1","savedPayload":{"position":{"x":39612.59634583407,"y":28848.5110343909},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"cf406371-01ec-4213-aadf-a73ca6dd7c2a","savedPayload":{"position":{"x":39594.15352768551,"y":28758.904338266497},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"60c11137-e5e8-4b1e-8440-0fe54d8eaad1","savedPayload":{"position":{"x":39585.513470979095,"y":28668.600155855387},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"47ed9747-aa4b-444d-a1ae-ee5bcd22b41b","savedPayload":{"position":{"x":39586.515890435076,"y":28578.275802249987},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"75aa5ebb-8a85-4edc-a49c-50aee8469e13","savedPayload":{"position":{"x":39597.01323868843,"y":28488.759535006342},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"2a0b2849-8f3c-42ed-bf53-4b5b3a95152a","savedPayload":{"position":{"x":39616.82107043368,"y":28400.936525998834},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"c62b975f-ec36-4c4e-bf9c-ad88c6f6b145","savedPayload":{"position":{"x":39645.70528040039,"y":28315.720626172813},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"530cf439-80c9-42e8-8d68-b22d36a3f7d5","savedPayload":{"position":{"x":39683.34058679891,"y":28234.020419812852},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"540e982f-042a-41b8-b13b-48dad95ae02d","savedPayload":{"position":{"x":39729.311389966206,"y":28156.718652140855},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"56fdc71f-06a1-4d8f-b68a-eadf7d51d504","savedPayload":{"position":{"x":39783.1123675581,"y":28084.656149508282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"a4bb4d63-e1f8-4de8-84b4-00cb8c33d0d3","savedPayload":{"position":{"x":39844.15303173856,"y":28018.61953084089},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"a2a18651-52ab-446e-b332-737416c50833","savedPayload":{"position":{"x":39911.76371803724,"y":27959.33092647535},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"fc8ea3a8-8dbe-4c4d-a5ec-bbbeec11bca4","savedPayload":{"position":{"x":39985.20283169866,"y":27907.43928775395},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"11ea11bd-a2cf-4be5-9a49-2ba89525146b","savedPayload":{"position":{"x":40063.66492102786,"y":27863.51284455778},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"d16eac0e-b7aa-46e8-b72d-d7053a6043c7","savedPayload":{"position":{"x":40146.28952675484,"y":27828.032723488246},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"fc7ec38a-c62f-4c0d-9883-1d7a000fc2ae","savedPayload":{"position":{"x":40232.170594436364,"y":27801.387550178282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"bb037972-8e14-4029-9f39-3a53274ef2fb","savedPayload":{"position":{"x":40320.36641444746,"y":27783.86918815466},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"65e1feda-46c5-474f-980a-bbc152c36176","savedPayload":{"position":{"x":40409.909923101404,"y":27775.669478131724},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"2a89e458-4e2f-4272-89e5-acf366a7579b","savedPayload":{"position":{"x":40499.81663014655,"y":27776.909528674598},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"cbb77a2c-8dce-4973-b180-635a67524784","savedPayload":{"position":{"x":40589.09169664543,"y":27787.555002280842},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"9537855d-7860-46ae-bdda-41ceaf907454","savedPayload":{"position":{"x":40676.76137062555,"y":27807.472594093873},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"375aef7f-62da-45b3-8dbd-5280a3ef1603","savedPayload":{"position":{"x":40761.86594350216,"y":27836.447055375374},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"7f8edb46-c490-468f-b8c1-9af512b9a493","savedPayload":{"position":{"x":40843.47350168687,"y":27874.160297912516},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"42110796-f5e4-490d-8b12-64bc6a0ffc08","savedPayload":{"position":{"x":40917.71602191771,"y":27917.913249620826},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"75dbbb68-6728-4297-bda9-34b73d27ad64","savedPayload":{"position":{"x":40986.24755380669,"y":27967.183543605785},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"1b3583f7-05ad-4f11-930b-3b210955c8c9","savedPayload":{"position":{"x":41056.98651886182,"y":28030.330808475923},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"21d462da-6a1f-40f5-9cec-4acb0b785a0e","savedPayload":{"position":{"x":41118.83139724332,"y":28100.72015635104},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"aa95315e-d2ce-4b3f-8b00-7cc8146dea33","savedPayload":{"position":{"x":41186.43383723706,"y":28204.23453473696},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}}],"id":"b6149abf-0b50-4cd7-bdc3-fa3763146940","savedPayload":{"position":{"x":25417.4978218559,"y":28366.902373573834},"targetPosition":{"x":25478.3404478132,"y":29530.81450844425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"DASH/USDT","id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6"}}},{"type":"Single Market Data","name":"Bittrex ADA/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"e8f78daf-66e6-4af7-9efc-51d543d341ad","savedPayload":{"position":{"x":39641.333811210454,"y":28936.98413868935},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"5ed2aff0-7419-4c86-89ba-5c55dccc5945","savedPayload":{"position":{"x":39612.59634583407,"y":28848.5110343909},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"a2e6d9b6-bd60-481f-ac56-9594f808b78c","savedPayload":{"position":{"x":39594.15352768551,"y":28758.904338266497},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"dcec564f-b166-4808-a7bc-02cc0d172eb1","savedPayload":{"position":{"x":39585.513470979095,"y":28668.600155855387},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"56fc841c-2d61-4cc0-b009-b967270bfaab","savedPayload":{"position":{"x":39586.515890435076,"y":28578.275802249987},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"10ececf3-e4b7-4d0e-af1d-5efa2d86a911","savedPayload":{"position":{"x":39597.01323868843,"y":28488.759535006342},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"d54420f0-dfbe-4fd5-b96f-230c78e8bbc9","savedPayload":{"position":{"x":39616.82107043368,"y":28400.936525998834},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"796cbd91-12b4-48bd-880f-4a83a6e97aea","savedPayload":{"position":{"x":39645.70528040039,"y":28315.720626172813},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"691337d4-1a6c-4531-9dbf-9acf9549c531","savedPayload":{"position":{"x":39683.34058679891,"y":28234.020419812852},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"a705d1dc-5ad7-482e-99be-64b1ad09748f","savedPayload":{"position":{"x":39729.311389966206,"y":28156.718652140855},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"3064ee6c-602a-4303-bbcb-43a66af7021b","savedPayload":{"position":{"x":39783.1123675581,"y":28084.656149508282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"64476647-d34d-402b-82a5-521a8b647264","savedPayload":{"position":{"x":39844.15303173856,"y":28018.61953084089},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"8560c11f-af83-47b7-afe2-37c16e18ea4f","savedPayload":{"position":{"x":39911.76371803724,"y":27959.33092647535},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"c144d391-12df-47a7-b483-b0f02f731f66","savedPayload":{"position":{"x":39985.20283169866,"y":27907.43928775395},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"45d13953-e76a-4a87-9c7f-6908936d3a0e","savedPayload":{"position":{"x":40063.66492102786,"y":27863.51284455778},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"f2a5e267-e248-465c-9ebf-e5ab244a7b5f","savedPayload":{"position":{"x":40146.28952675484,"y":27828.032723488246},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"c4c49042-542d-4f50-b14d-e9860cda4150","savedPayload":{"position":{"x":40232.170594436364,"y":27801.387550178282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"0b595a2a-2748-4ae4-b502-2d2cdfef5d24","savedPayload":{"position":{"x":40320.36641444746,"y":27783.86918815466},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"caf7b9e1-0576-4d9f-a414-3ba9b46e75eb","savedPayload":{"position":{"x":40409.909923101404,"y":27775.669478131724},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"d8b32f0e-220e-4a5a-87ed-3588d790f4e2","savedPayload":{"position":{"x":40499.81663014655,"y":27776.909528674598},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"21dcc7b6-859b-470a-9c82-97a63e65dd2e","savedPayload":{"position":{"x":40589.09169664543,"y":27787.555002280842},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"e15720e5-644b-41cd-b18c-a98166d84d62","savedPayload":{"position":{"x":40676.76137062555,"y":27807.472594093873},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"4c7e1297-9fa7-47fe-825f-14ffb4e902f4","savedPayload":{"position":{"x":40761.86594350216,"y":27836.447055375374},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"bbc32836-a05d-4b66-a284-74b7174e50f1","savedPayload":{"position":{"x":40843.47350168687,"y":27874.160297912516},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"3969faaf-0b07-403e-a9cd-a7fabfff72bd","savedPayload":{"position":{"x":40917.71602191771,"y":27917.913249620826},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"84ebe8cf-1ef0-4fc3-9a00-4bd2b7511bdc","savedPayload":{"position":{"x":40986.24755380669,"y":27967.183543605785},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"b404c9b4-0b4d-45da-b7e5-fa19200ca7cb","savedPayload":{"position":{"x":41056.98651886182,"y":28030.330808475923},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"6b7dddbd-1781-4083-b668-2ef924dfc373","savedPayload":{"position":{"x":41118.83139724332,"y":28100.72015635104},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"bb6dff46-0a7c-433f-ab76-0b3c693d95bb","savedPayload":{"position":{"x":41186.43383723706,"y":28204.23453473696},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}}],"id":"725c3e71-f0c6-4f02-8b31-92af30289c69","savedPayload":{"position":{"x":25779.856009638646,"y":28404.93023465381},"targetPosition":{"x":25478.3404478132,"y":29530.81450844425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ADA/USDT","id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f"}}},{"type":"Single Market Data","name":"Bittrex TRX/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"969b13bf-452e-48bf-9000-4eed11ff644d","savedPayload":{"position":{"x":39641.333811210454,"y":28936.98413868935},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"7a0fc8bc-dd6e-4f25-aa78-27b301b57fb2","savedPayload":{"position":{"x":39612.59634583407,"y":28848.5110343909},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"11bfda30-024f-4bbe-9650-df3b30565d4f","savedPayload":{"position":{"x":39594.15352768551,"y":28758.904338266497},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"85112a16-298d-49d0-a0d4-40fa28514991","savedPayload":{"position":{"x":39585.513470979095,"y":28668.600155855387},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"a8649655-58ba-4613-ad5d-73e0cb09a968","savedPayload":{"position":{"x":39586.515890435076,"y":28578.275802249987},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"402ced77-4d3e-4e7e-a4ec-48515db4aa75","savedPayload":{"position":{"x":39597.01323868843,"y":28488.759535006342},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"f56b72d8-679d-4088-a9c6-f06261b20b12","savedPayload":{"position":{"x":39616.82107043368,"y":28400.936525998834},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"bf5c0cfe-e275-4f55-b7c1-3a239c26bc73","savedPayload":{"position":{"x":39645.70528040039,"y":28315.720626172813},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"0584f969-d053-4fad-bf9c-5e7ca5c91d80","savedPayload":{"position":{"x":39683.34058679891,"y":28234.020419812852},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"d73d610d-f649-424c-b01a-d86ebb2f2408","savedPayload":{"position":{"x":39729.311389966206,"y":28156.718652140855},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"36b804ed-9849-4ee7-bae8-8fd0e3cb4591","savedPayload":{"position":{"x":39783.1123675581,"y":28084.656149508282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"ceeed58a-0740-4dd8-87b5-eeeafaf435a7","savedPayload":{"position":{"x":39844.15303173856,"y":28018.61953084089},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"2d40c3fd-6ffc-4e4b-af68-cf982c651c48","savedPayload":{"position":{"x":39911.76371803724,"y":27959.33092647535},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"2ffc6f95-5ebc-4899-b47f-66c5acf3935f","savedPayload":{"position":{"x":39985.20283169866,"y":27907.43928775395},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"b407ebab-eb7f-4e61-bc62-767279c5a5b7","savedPayload":{"position":{"x":40063.66492102786,"y":27863.51284455778},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"c9520ba2-bf76-4dc7-a72b-5fd16f1a9d63","savedPayload":{"position":{"x":40146.28952675484,"y":27828.032723488246},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"4f3e6f14-1e5f-4fdd-80ce-fbe78967aaa4","savedPayload":{"position":{"x":40232.170594436364,"y":27801.387550178282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"559256e3-0cea-4280-af2b-174a971fbb74","savedPayload":{"position":{"x":40320.36641444746,"y":27783.86918815466},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"b084ff36-9793-4af8-a9b5-d7d106e59add","savedPayload":{"position":{"x":40409.909923101404,"y":27775.669478131724},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"fe56310c-617c-4f69-b133-a38e6fcd1695","savedPayload":{"position":{"x":40499.81663014655,"y":27776.909528674598},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"c3abee6a-f6d2-45c9-a4b7-328d04ae466d","savedPayload":{"position":{"x":40589.09169664543,"y":27787.555002280842},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"cd3da659-6d9d-4624-bb89-c637c89c2dda","savedPayload":{"position":{"x":40676.76137062555,"y":27807.472594093873},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"6b210cd5-0961-41aa-bb1f-49f06bd7a8c4","savedPayload":{"position":{"x":40761.86594350216,"y":27836.447055375374},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"37cad52c-3e13-43b4-a939-cfe22ff35dc3","savedPayload":{"position":{"x":40843.47350168687,"y":27874.160297912516},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"f5801a77-c149-431d-b3b4-52c609b68b66","savedPayload":{"position":{"x":40917.71602191771,"y":27917.913249620826},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"247ba6dd-829b-48bb-9d3f-9543ebbd03ba","savedPayload":{"position":{"x":40986.24755380669,"y":27967.183543605785},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"6337456d-169a-4ba7-a3bd-6f4830df8175","savedPayload":{"position":{"x":41056.98651886182,"y":28030.330808475923},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"dc59e3a8-8894-4058-9da6-c6807ad77262","savedPayload":{"position":{"x":41118.83139724332,"y":28100.72015635104},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"3d86a2e2-8336-4955-b3dc-7ca8c5faf5a6","savedPayload":{"position":{"x":41186.43383723706,"y":28204.23453473696},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}}],"id":"342c663b-35e2-40e5-9b7f-5e84405cc951","savedPayload":{"position":{"x":26113.0968057542,"y":28553.248728579336},"targetPosition":{"x":25478.3404478132,"y":29530.81450844425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"TRX/USDT","id":"2cb30869-9de4-4855-bf78-58ac6a10a285"}}},{"type":"Single Market Data","name":"Bittrex XLM/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"5bbb8d3b-f4a0-443d-b8f7-446057118471","savedPayload":{"position":{"x":39641.333811210454,"y":28936.98413868935},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"5655d994-fab9-4648-8294-ac801040be2b","savedPayload":{"position":{"x":39612.59634583407,"y":28848.5110343909},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"cca878dd-2f01-45e0-9802-7483b42b4215","savedPayload":{"position":{"x":39594.15352768551,"y":28758.904338266497},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"ab510dbb-bf7d-4ead-8bef-95b9879c36c1","savedPayload":{"position":{"x":39585.513470979095,"y":28668.600155855387},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"e14abcc3-2fa6-481a-8a81-a92029da9366","savedPayload":{"position":{"x":39586.515890435076,"y":28578.275802249987},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"df680775-c023-4053-afe8-c19f4d115335","savedPayload":{"position":{"x":39597.01323868843,"y":28488.759535006342},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"4efedf7e-dab7-433a-9618-f99e4fe49a0b","savedPayload":{"position":{"x":39616.82107043368,"y":28400.936525998834},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"72979cdb-b3d5-4f6f-919f-9c686645d5eb","savedPayload":{"position":{"x":39645.70528040039,"y":28315.720626172813},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"291decd2-466c-41a9-8151-804479477adb","savedPayload":{"position":{"x":39683.34058679891,"y":28234.020419812852},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"a27654cd-6702-4493-a88a-10b20544821e","savedPayload":{"position":{"x":39729.311389966206,"y":28156.718652140855},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"25c69e81-14db-4730-b7b7-20af2191dc82","savedPayload":{"position":{"x":39783.1123675581,"y":28084.656149508282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"bb17d643-2b04-4ada-8541-dc2ef8695f9d","savedPayload":{"position":{"x":39844.15303173856,"y":28018.61953084089},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"b5124327-5cbd-48a7-b503-88bdbef311f4","savedPayload":{"position":{"x":39911.76371803724,"y":27959.33092647535},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"e7e994e4-fd5e-4e1a-824b-4b22abc0529e","savedPayload":{"position":{"x":39985.20283169866,"y":27907.43928775395},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"11022614-5256-4cfc-b173-bc14399ff681","savedPayload":{"position":{"x":40063.66492102786,"y":27863.51284455778},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"e16bb3c7-c4d0-4657-8847-3da74df42eb5","savedPayload":{"position":{"x":40146.28952675484,"y":27828.032723488246},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"a8a96c84-a857-4e37-b01d-26fdb08d7307","savedPayload":{"position":{"x":40232.170594436364,"y":27801.387550178282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"5a36f514-879f-4443-b37a-d40ff2a03970","savedPayload":{"position":{"x":40320.36641444746,"y":27783.86918815466},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"d1b38bb9-1c33-4a6c-8bac-f596a8ba35fa","savedPayload":{"position":{"x":40409.909923101404,"y":27775.669478131724},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"5f2a5acb-6dee-4190-b4f2-a86dd0a04ea3","savedPayload":{"position":{"x":40499.81663014655,"y":27776.909528674598},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"fee0fa2a-eea9-4d4e-834a-9337642d570e","savedPayload":{"position":{"x":40589.09169664543,"y":27787.555002280842},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"7dd49ba4-7acf-4d69-b5d0-12baec0062e6","savedPayload":{"position":{"x":40676.76137062555,"y":27807.472594093873},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"7c5a650e-292b-4a1f-a3a2-9c70f8640392","savedPayload":{"position":{"x":40761.86594350216,"y":27836.447055375374},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"69373311-1e44-4c8c-8db4-88c32c7275aa","savedPayload":{"position":{"x":40843.47350168687,"y":27874.160297912516},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"6fa635b4-61d4-49c2-8968-51f916c742b1","savedPayload":{"position":{"x":40917.71602191771,"y":27917.913249620826},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"59c5ad31-6b02-44d5-82b5-5243a7235cec","savedPayload":{"position":{"x":40986.24755380669,"y":27967.183543605785},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"d7bac61e-3408-4b59-b4f2-4c4dd31b10a1","savedPayload":{"position":{"x":41056.98651886182,"y":28030.330808475923},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"14ef8c1f-3e5e-4f2e-8a1f-7bf01456add4","savedPayload":{"position":{"x":41118.83139724332,"y":28100.72015635104},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"fd88626d-4ea2-40ce-b4d5-df984e0b51eb","savedPayload":{"position":{"x":41186.43383723706,"y":28204.23453473696},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}}],"id":"3294aebb-8a68-4ec1-b8b5-3e3b9c73c15b","savedPayload":{"position":{"x":26383.906234579415,"y":28797.485459631727},"targetPosition":{"x":25478.3404478132,"y":29530.81450844425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XLM/USDT","id":"04b82448-a05a-4991-aa02-6a29f23d0ccc"}}},{"type":"Single Market Data","name":"Bittrex EOS/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"1a7ba5e5-ea1d-4d08-a6da-a124be2cf405","savedPayload":{"position":{"x":39641.333811210454,"y":28936.98413868935},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"ba417f39-c1ca-4735-8652-aa1759d0952b","savedPayload":{"position":{"x":39612.59634583407,"y":28848.5110343909},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"7b5d970c-a09f-4fd9-a1bd-243d558d851b","savedPayload":{"position":{"x":39594.15352768551,"y":28758.904338266497},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"f4b99732-9571-467b-ace0-a52ac23231f2","savedPayload":{"position":{"x":39585.513470979095,"y":28668.600155855387},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"18b9684f-69ea-4768-a7e1-c48a90c70fee","savedPayload":{"position":{"x":39586.515890435076,"y":28578.275802249987},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"8dd768bd-c47c-4bca-9a0a-744ce3c5cbaf","savedPayload":{"position":{"x":39597.01323868843,"y":28488.759535006342},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"08b3fb60-b2f3-4a24-8b6d-f686f860a8a9","savedPayload":{"position":{"x":39616.82107043368,"y":28400.936525998834},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"a8d309f1-437b-4f03-abf2-d226535443d5","savedPayload":{"position":{"x":39645.70528040039,"y":28315.720626172813},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"8d30954e-e8cb-4422-9936-b3db8eeb2230","savedPayload":{"position":{"x":39683.34058679891,"y":28234.020419812852},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"93116bf3-566d-473c-8778-ab6b2f273b14","savedPayload":{"position":{"x":39729.311389966206,"y":28156.718652140855},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"cacef726-dff8-4943-a17f-7d8bdb4b9597","savedPayload":{"position":{"x":39783.1123675581,"y":28084.656149508282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"8f495edb-4a00-4bad-a2cf-7bd33dcc3d74","savedPayload":{"position":{"x":39844.15303173856,"y":28018.61953084089},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"1843ab42-2d74-4473-8059-cb27a5945383","savedPayload":{"position":{"x":39911.76371803724,"y":27959.33092647535},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"4355b685-22c8-4117-bde8-a24bde773d43","savedPayload":{"position":{"x":39985.20283169866,"y":27907.43928775395},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"6a4acfa9-3272-4d9c-acda-db0965821b1b","savedPayload":{"position":{"x":40063.66492102786,"y":27863.51284455778},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"bfc6057a-19d3-498c-bcf4-80c07ade8d94","savedPayload":{"position":{"x":40146.28952675484,"y":27828.032723488246},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"402b3d3f-7860-4dd8-8d35-d514c1e1dd04","savedPayload":{"position":{"x":40232.170594436364,"y":27801.387550178282},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"0b7ef0ae-a553-4fb2-b48a-4c8f420ad664","savedPayload":{"position":{"x":40320.36641444746,"y":27783.86918815466},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Bollinger Channels","id":"7e67d8a3-5ef5-4367-84dc-e9fa04a24237","savedPayload":{"position":{"x":40409.909923101404,"y":27775.669478131724},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"5cb33464-e8b8-4fa7-80f5-9706644af076","savedPayload":{"position":{"x":40499.81663014655,"y":27776.909528674598},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"MACD 122609","id":"eed55490-f343-4776-9b11-abe576113cef","savedPayload":{"position":{"x":40589.09169664543,"y":27787.555002280842},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"MACD 031016","id":"56953a9e-d54f-4d93-99df-3aee612b4e87","savedPayload":{"position":{"x":40676.76137062555,"y":27807.472594093873},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 031016","id":"d1482dc0-e9f1-47ba-b75e-961fa914a53a"}}},{"type":"Data Product","name":"MACD 081709","id":"50f3059d-175c-429f-ba3f-92e375789894","savedPayload":{"position":{"x":40761.86594350216,"y":27836.447055375374},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 081709","id":"683e6b29-9f82-4a8e-93eb-20ac0e81a750"}}},{"type":"Data Product","name":"MACD 245209","id":"0022476c-d823-4277-9baa-0528a23eadd1","savedPayload":{"position":{"x":40843.47350168687,"y":27874.160297912516},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 245209","id":"47984765-8180-45cf-a9eb-f0a8b22d165d"}}},{"type":"Data Product","name":"Candles","id":"468616a3-d103-47d8-b3fe-a70d285e0119","savedPayload":{"position":{"x":40917.71602191771,"y":27917.913249620826},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"2443883b-6959-42a3-ae3b-ef3102ffcdcc"}}},{"type":"Data Product","name":"Volumes","id":"cc89dc87-2b5a-47de-8b80-eb8aafccfcd0","savedPayload":{"position":{"x":40986.24755380669,"y":27967.183543605785},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"3a43c6f3-bac0-404e-865f-822eb48c8660"}}},{"type":"Data Product","name":"Bollinger Channels","id":"92cbf1a4-0309-46e9-b2b5-3ce1a602bd24","savedPayload":{"position":{"x":41056.98651886182,"y":28030.330808475923},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels","id":"94bc3958-cc85-43a1-a178-103e84f42910"}}},{"type":"Data Product","name":"Bollinger Sub-Channels","id":"f3cf71ca-2147-4e4a-9361-094ec2a24e1b","savedPayload":{"position":{"x":41118.83139724332,"y":28100.72015635104},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels","id":"79ce9c05-8a4c-4b58-850f-288037acc702"}}},{"type":"Data Product","name":"External Signals","id":"671e1bec-40a8-44e1-9838-ec86f815b9b9","savedPayload":{"position":{"x":41186.43383723706,"y":28204.23453473696},"targetPosition":{"x":40443.285556188,"y":28633.794640045882},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"External Signals","id":"29196db8-4c41-47ea-be7e-952cd9be9a0b"}}}],"id":"448d0b37-7cdf-4f23-8c92-dd978390606e","savedPayload":{"position":{"x":26566.393552495545,"y":29113.19524113364},"targetPosition":{"x":25478.3404478132,"y":29530.81450844425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"EOS/USDT","id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7"}}}],"id":"066e8485-6104-4462-b9b0-4f7a6cb7a852","savedPayload":{"position":{"x":25477.643710378197,"y":29530.33464456329},"targetPosition":{"x":25508.203215259186,"y":30113.20296378238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Bittrex","id":"a9a5c7bc-797b-4cd1-b24e-a627cd396d3e"}}}],"id":"bf04ccea-266d-4115-b50e-fefdf29b873a","savedPayload":{"position":{"x":25508.203215259186,"y":30113.20296378238},"targetPosition":{"x":25941.95025015318,"y":30503.689499234977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"i"}}},"sessionBasedData":{"type":"Session Based Data","name":"New Session Based Data","exchangeSessions":[{"type":"Exchange Sessions","name":"Binance","sessionReferences":[{"type":"Session Reference","name":"Back WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"c53d8a77-b1d4-446c-9bef-8458b832c5e5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"0f1e10be-0da8-4d10-93d7-35e407579cb0","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"302de277-a428-4cc0-8757-b2ef7de6040b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"a85fc58e-5b58-449b-b733-c3a623e1d5d4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"38a030ff-3c7c-4177-ab90-59721be64e6e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"5395e975-901e-4d8f-95a8-685b538f7d01","savedPayload":{"position":{"x":25010.649164135288,"y":29442.0306094599},"targetPosition":{"x":25883.325943783108,"y":29378.936500086696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Backtesting Session","name":"Back WHB","id":"44357648-e96f-4e38-b23d-192f2a73107a"}}},{"type":"Session Reference","name":"Paper WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"86135c4b-7161-4602-8331-5ada9f2621ea","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"a19aea16-1776-4222-abc3-9441c55fdff8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"48bafad6-7649-4128-ade0-c9d706fc895b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"716af81c-fb38-4488-9e39-73ca2fdbaa21","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"766e1cd9-ad8d-4d49-b7ed-855e818fb25c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"dde98548-3790-4d32-9bef-b576599c6803","savedPayload":{"position":{"x":25020.896519131282,"y":29231.525321925536},"targetPosition":{"x":25883.325943783108,"y":29378.936500086696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Paper Trading Session","name":"Paper WHB","id":"1d6b5b33-21b7-4331-998c-bf9225c76bd6"}}},{"type":"Session Reference","name":"Live Trading WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"527c6b54-c797-4977-99d1-36b89e08f5bb","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"8a538782-87e4-45e7-90fe-879d921f3a84","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"824314e2-9950-4479-af8d-ed86864b935f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"f4cceeeb-e0a3-4e0b-81e8-f4d1a9c64d8f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"1eb86f13-5736-431d-9485-b9004407ff9e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"7b5b5ff5-d9b8-4f83-838b-805383e0c8f7","savedPayload":{"position":{"x":25081.33694793941,"y":29029.499127829233},"targetPosition":{"x":25883.325943783108,"y":29378.936500086696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Live Trading Session","name":"Live Trading WHB","id":"e50eb025-56d8-4c8e-a1aa-004f3a3e2f41"}}},{"type":"Session Reference","name":"Fwd WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"11799e85-e7db-4069-8485-24039fb9ec8c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"4b336f24-4ef4-47bd-a768-ce8ff0bf3ddc","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"69df429a-96ca-4830-b234-a9c214beef8c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"8219cb27-d00c-404c-af8d-707ed0e5bf93","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"720a88be-9408-418d-9545-8e8e8bfe6a53","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"af8c7ef9-1611-44f8-9fc9-f600c7cc1887","savedPayload":{"position":{"x":25188.357207296576,"y":28847.8140904285},"targetPosition":{"x":25883.325943783108,"y":29378.936500086696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Forward Testing Session","name":"Fwd WHB","id":"b59b370b-634d-45ea-b4ec-49b1fb32fc9a"}}},{"type":"Session Reference","name":" ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"ac6e339c-3702-4311-81c7-b6a4f6e556bd","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"75198a71-5f02-4975-b8c6-161e883c946b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"ae479800-3046-4727-a7fd-c34eb55facd5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"bb3a2219-7fa9-466a-99c8-7d0143ba9cd2","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"8f1fb70f-50e1-415a-b527-fcac706ef5d9","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"cedbd67e-72b6-48b5-9059-0d97981209b8","savedPayload":{"position":{"x":25335.7183824325,"y":28696.934515964716},"targetPosition":{"x":25883.325943783108,"y":29378.936500086696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Backtesting Session","name":"Back WHB","id":"40d6fe94-8e96-452a-9138-bd2cdeea66fb"}}},{"type":"Session Reference","name":" ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"e08f86ed-a70e-4992-a629-aba8cb5974a0","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"2fa173f0-7dc6-4092-a353-df11cbbf94e6","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"371864f3-f899-49bf-9550-8eeac54cc4e0","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"1480e422-f905-462a-8472-4abef0c8a9c3","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"fc65a91a-7abe-4553-a4fa-abd428f8f811","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"77da287f-4094-4523-922e-67e3f14e7901","savedPayload":{"position":{"x":25514.839481318377,"y":28585.713349810034},"targetPosition":{"x":25883.325943783108,"y":29378.936500086696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Paper Trading Session","name":"Paper WHB","id":"62400ed1-c5b2-48dc-a706-58b4657a2dd9"}}},{"type":"Session Reference","name":"Live Trading WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"d7302c42-c04d-4e40-ae81-53a3d5ab6973","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"7cd519e8-5891-49c9-85ae-ee9be4af47b1","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"a7e568fd-34cc-4947-823e-de9537a218f4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"983419aa-c0b7-443c-9662-ab5ebc7789bb","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"f1595852-bcbe-4b62-b28d-85929e5ee0ac","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"94be2668-9050-4f6c-92d6-1edb3c643d66","savedPayload":{"position":{"x":25715.154096691116,"y":28520.794406506804},"targetPosition":{"x":25883.325943783108,"y":29378.936500086696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Live Trading Session","name":"Live Trading WHB","id":"1e3014ed-577c-4c13-92e8-538071779248"}}},{"type":"Session Reference","name":"Fwd WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"9dbc8439-506c-45f6-9fff-53efa1b9e49e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"72912a92-465b-475c-adba-38eccfdc3feb","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"78f9823a-c50f-4181-851f-6e7ce7dfec68","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"4df740e7-dc01-4d8b-a524-921242be2461","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"af8adf14-b9c1-4c6f-84ec-2e1edd8a407b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"1243a61e-5359-4597-8edd-29be8ad4650d","savedPayload":{"position":{"x":25925.410595795944,"y":28505.076958254806},"targetPosition":{"x":25883.325943783108,"y":29378.936500086696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Forward Testing Session","name":"Fwd WHB","id":"985b10f7-2506-4bd8-bd60-1e8d0e1b521c"}}},{"type":"Session Reference","name":" ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"e2ac8a3b-67a4-4fb0-92e7-520cccb48d82","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"7a5fb561-1307-43e6-9b34-2a35dac865ad","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"24962019-f13a-4530-907c-492af5dd145d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"2e976c51-c1c9-4347-9db2-7c7deca89d28","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"12e19547-4dca-4cc2-a1c2-2d084e1f352e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"97819a51-c58e-4cd8-9354-6099ee00a1f3","savedPayload":{"position":{"x":26167.374714856644,"y":28519.42758780614},"targetPosition":{"x":25883.325943783108,"y":29378.936500086696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Backtesting Session","name":"Back WHB","id":"343a2069-23b2-46ff-93ee-06df825bb14a"}}},{"type":"Session Reference","name":" ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"b34828ab-b807-49c9-ad9a-dd42c0f4f656","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"8624e12a-5ed5-45d5-b142-f80182af0633","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"248329f6-dff0-473d-9a8f-ef4cd20669f5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"6555b383-f5e5-4dbf-8a35-47bcfcec27a5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"d99f8b63-a533-4ae8-8674-4a63d1b02ef8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"e3561327-2ad4-4475-8b2a-81a615b01ab0","savedPayload":{"position":{"x":26327.212443877335,"y":28624.67901658556},"targetPosition":{"x":25883.325943783108,"y":29378.936500086696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Paper Trading Session","name":"Paper WHB","id":"60e0ea62-1451-4c13-a9f0-222cd24f1230"}}},{"type":"Session Reference","name":"Live Trading WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"ccf46688-a170-415e-b02a-2086ea54303a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"d4ec1ce0-bb1e-4264-bf21-cb8a5fc1a503","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"979497e1-fc1d-45ff-a315-dc38732d1f5d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"a31e1238-a02a-4f7f-afb4-4eccb55d7134","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"6b206211-66ff-4115-9a89-231c91a632d1","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"3a4157f4-9b0e-43a6-9585-046f18850dbc","savedPayload":{"position":{"x":26494.96914576387,"y":28752.997550641692},"targetPosition":{"x":25883.325943783108,"y":29378.936500086696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Live Trading Session","name":"Live Trading WHB","id":"ed1c4e01-7ea7-4ecb-8421-dfbb6b860d6a"}}},{"type":"Session Reference","name":"Fwd WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"fb7a0d59-28c0-4e85-8263-2fca9291395f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"a895b4b5-54be-420d-9f60-4afefce04b20","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"ed2abc11-a45f-4e39-b4ae-ef677aec9690","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"dc4f0ddf-405d-4f6a-8954-3dbab72561ae","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"d388f020-16a7-4618-a100-a2520bb44978","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"1715f8aa-7698-4bbb-92ed-3431e390cef7","savedPayload":{"position":{"x":26626.70866456434,"y":28917.479674969618},"targetPosition":{"x":25883.325943783108,"y":29378.936500086696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Forward Testing Session","name":"Fwd WHB","id":"2de12c44-9f02-4fa9-995b-cd4e0702d642"}}}],"id":"4fa4b48a-6c18-42d0-addc-f5a02d2e8952","savedPayload":{"position":{"x":25882.842626084057,"y":29377.683067753285},"targetPosition":{"x":26063.15791303317,"y":29932.8015750637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}},{"type":"Exchange Sessions","name":"Bitfinex","sessionReferences":[{"type":"Session Reference","name":"Back WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"516a1509-9f5f-4b61-b68d-9c909d3b8e68","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"977ad327-512d-4d5d-9eda-7300e1e9b155","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"b32f6163-26d6-48ad-8cfe-895962be4423","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"c6fc5b0d-ff9b-4bac-a5d5-2202b4b6bf65","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"3c8668f0-7e2e-445d-80ce-7c1cee6287b5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"c54d7121-d148-4151-a355-cca605325307","savedPayload":{"position":{"x":25962.90392131191,"y":28776.823652722684},"targetPosition":{"x":26454.006407405348,"y":29500.459902456496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Backtesting Session","name":"Back WHB","id":"7de73196-0e44-4e7f-b86e-bc5d89cd8c18"}}},{"type":"Session Reference","name":"Paper WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"2bb7ea2d-a457-4ac9-98db-36498996679c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"80f1751b-0a93-414b-b1ff-a26361ea7ca8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"7ab2d3fd-c160-4db8-baef-9751dff11606","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"1702e9f5-5319-4c2b-a42f-66f37ad6db47","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"5512cf00-77f4-4159-b95f-bf60864f4660","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"b086c48a-b55c-442a-a20b-9d59c7d9e7f3","savedPayload":{"position":{"x":26150.629790947874,"y":28680.834634873616},"targetPosition":{"x":26454.006407405348,"y":29500.459902456496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Paper Trading Session","name":"Paper WHB","id":"9b06d8ea-606c-4935-a9de-cfaebdb0f13e"}}},{"type":"Session Reference","name":"Live Trading WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"69356347-8b0c-4fbc-b280-aa9062704fae","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"454eab4f-b3e1-4bb1-bd63-fdbd0f1a873a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"362e6861-aac6-49bf-b7e3-393fd0e1a4e5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"5754e659-008a-4c78-a74d-abe6cae82799","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"e9456961-7e55-4d0c-8416-6b66ca2c3789","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"09143240-af0a-4636-ac2b-308aac35ac81","savedPayload":{"position":{"x":26392.014350022226,"y":28637.36775996326},"targetPosition":{"x":26454.006407405348,"y":29500.459902456496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Live Trading Session","name":"Live Trading WHB","id":"dcf7c50c-1136-4dec-a148-e2df09f2a9e0"}}},{"type":"Session Reference","name":"Fwd WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"2daaf951-8ba9-41a8-8f00-4823e5a060b8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"a42db4cb-8572-438b-a904-e09a26239622","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"8a5e18dd-59c7-48a9-af1a-963fb114889b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"7f2b1543-352b-44f1-bcff-501bf021dec9","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"aeb1fd45-44ae-4b44-af2f-504e319038a0","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"132a40e3-6f61-4c3a-a1b0-661d391fa5e1","savedPayload":{"position":{"x":26567.13884161537,"y":28632.273677243604},"targetPosition":{"x":26454.006407405348,"y":29500.459902456496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Forward Testing Session","name":"Fwd WHB","id":"cd251c3a-d744-4c7c-95f7-e25767cad491"}}},{"type":"Session Reference","name":"Back WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"d3366b10-fa22-4725-baf9-7a32e539ea1f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"eab6c873-15e1-4d89-be61-283ce19466c4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"dfcaaffc-321f-4c66-a3f7-71204cc2270d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"85e9d71f-7cde-48d6-b2c7-941c201ce607","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"f26ef586-d2a5-41b0-9a6c-e48f1ea3549a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"8e99bb64-6032-48e2-90e6-e067f081ea64","savedPayload":{"position":{"x":26771.175110434127,"y":28684.86264579188},"targetPosition":{"x":26454.006407405348,"y":29500.459902456496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Backtesting Session","name":"Back WHB","id":"79d39424-cb62-4067-9d61-79ee417b3d8b"}}},{"type":"Session Reference","name":"Paper WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"57f048db-6099-4b22-860e-9ee0d03cb642","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"011bbfc9-2c72-4295-b4ba-f620003b7687","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"8edfaf6e-b6d8-475c-8378-29d8605515b6","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"160d4652-15a8-44dd-a230-a5c5bd4fd8de","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"0b554a70-9528-48df-8083-806a16c055ab","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"57c3440b-db40-45ee-8e94-982bd7fea991","savedPayload":{"position":{"x":26956.97696599467,"y":28784.527448910492},"targetPosition":{"x":26454.006407405348,"y":29500.459902456496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Paper Trading Session","name":"Paper WHB","id":"bf175700-6956-4130-8132-8b7b041544bc"}}},{"type":"Session Reference","name":"Live Trading WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"8b53b255-12d3-47b3-a871-0d851c8bc8ae","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"843d8d51-1117-41ff-a49a-8c4997ab4c2d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"98b9505a-321f-4a53-9f26-285e75511bf3","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"47996c06-9545-4455-ac2d-d1a7ec09fa55","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"169bf89c-1b48-4bde-bd4e-b6529995f342","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"f5fd2e7d-26f5-4630-8e12-3a4a05a8b3d0","savedPayload":{"position":{"x":27113.610001585297,"y":28925.700151524816},"targetPosition":{"x":26454.006407405348,"y":29500.459902456496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Live Trading Session","name":"Live Trading WHB","id":"cefe5475-ad20-46b0-8ebc-92bb213626bf"}}},{"type":"Session Reference","name":"Fwd WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"56f265cd-0b1e-4a6b-be41-edfed0323a0b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"e644e7dc-8362-41dd-b4be-e2cc5dd6a117","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"97805367-6a8c-4b1c-b44c-6621f76e23e9","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"7b70c767-5bd4-4933-a691-7a92e80bf40c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"d5b038e3-4ce8-4848-b1b3-5c43bac3ed29","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"e1d60f09-45d5-42af-9b49-193f96e30656","savedPayload":{"position":{"x":27231.963653097013,"y":29100.23324410124},"targetPosition":{"x":26454.006407405348,"y":29500.459902456496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Forward Testing Session","name":"Fwd WHB","id":"ae8da722-ddef-463f-8439-e3a9e5501eff"}}},{"type":"Session Reference","name":"Back WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"91ab681f-50ea-4b07-a7b4-1e8387b91662","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"c5a1bfa7-a778-41c0-9f83-05af2de17ce1","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"e447664b-aef8-4ad1-b097-aa9e44bed78d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"4c25509e-56e7-49c0-a78a-61de55438179","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"f26abff5-0351-4fec-8f05-6af08eca4f3e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"7c93facc-7d0d-4a87-a11c-23cfab94f4b8","savedPayload":{"position":{"x":27305.137998205868,"y":29298.043652102042},"targetPosition":{"x":26454.006407405348,"y":29500.459902456496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Backtesting Session","name":"Back WHB","id":"99d2a76d-3c58-411c-abeb-7c49a7a41171"}}},{"type":"Session Reference","name":"Paper WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"3a1d3d5f-5655-49a9-890d-89f7ba153c24","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"846b361f-f5d2-431f-bfd4-137033d8b7f5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"4bf25656-ea71-44fc-92f9-52f33c327333","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"0905aa96-ac6c-4a0a-987c-d8833fbfd2ee","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"1d64468f-6621-441e-81bc-3ed3270f5791","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"ac5af50d-d2dc-4a0d-834e-48f48729dcf9","savedPayload":{"position":{"x":27328.850895499,"y":29507.311290222664},"targetPosition":{"x":26454.006407405348,"y":29500.459902456496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Paper Trading Session","name":"Paper WHB","id":"979d1da8-7e14-43d0-a34a-3cb82ffbcea6"}}},{"type":"Session Reference","name":"Live Trading WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"d73f67de-e135-4692-b4d8-f00a28560ffd","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"8680d446-bcce-4286-a06c-50406f1d4f50","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"e806ba98-35cf-4e32-ac95-6acf1a4617e7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"abaeed4c-618f-48c7-8e25-fe9ceba6c905","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"63551887-501d-441e-a552-035580ddc6ca","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"ac776aa0-7991-4d04-995c-6467b9a43015","savedPayload":{"position":{"x":27301.73514303333,"y":29716.459063181224},"targetPosition":{"x":26454.006407405348,"y":29500.459902456496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Live Trading Session","name":"Live Trading WHB","id":"a2d515ce-de72-49e3-b58e-81186c595f74"}}},{"type":"Session Reference","name":"Fwd WHB ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"7b75ee15-4932-4d1d-82a3-ae281babd47f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"057c9f67-a4f4-4976-8f6a-611e3dafce90","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"a482b127-3391-4e03-a8c7-d4e589f7ba92","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"d426fa48-5102-4908-a4ec-7c288bb8be61","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"319eae81-25be-4712-8fec-fc7812a1806c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"7b6c1bf8-62e4-42a5-8b9c-48702cd4f596","savedPayload":{"position":{"x":27225.302450701627,"y":29913.115204763348},"targetPosition":{"x":26454.006407405348,"y":29500.459902456496},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Forward Testing Session","name":"Fwd WHB","id":"bb2a5ffe-3b5b-461d-90e7-ce348bc7bb97"}}}],"id":"f2b59e54-225c-4933-9bbe-3f6b65569a89","savedPayload":{"position":{"x":26453.503473612465,"y":29499.694512361344},"targetPosition":{"x":26063.15791303317,"y":29932.8015750637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Bitfinex","id":"3ff59cad-42ae-4527-b060-4585cc4e7e1a"}}}],"id":"29ca14e5-dabe-470a-be64-ed7996bd1e55","savedPayload":{"position":{"x":26063.15791303317,"y":29932.8015750637},"targetPosition":{"x":25941.95025015318,"y":30503.689499234977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0726a9e4-23b6-4d27-a8de-e91a9665a8ba","savedPayload":{"position":{"x":25941.899249729755,"y":30503.488020550398},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"d"}}},"dataMining":{"type":"Data Mining","name":"New Data Mining","exchangeTasks":[{"type":"Exchange Tasks","name":"Binance","taskManagers":[{"type":"Task Manager","name":"Masters BTC/USDT","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"42c726ad-b9a0-445e-b259-70423f3ffd12","savedPayload":{"position":{"x":24978.07277815993,"y":30601.00095525652},"targetPosition":{"x":25223.946151545286,"y":30442.827063526787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"a776e96c-9824-4734-895c-7ead23e47b55","savedPayload":{"position":{"x":25223.946151545286,"y":30442.827063526787},"targetPosition":{"x":25469.798794155027,"y":30284.37326963926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"746a39b8-9fc7-42eb-892e-aa9d3084a49c","savedPayload":{"position":{"x":25469.798794155027,"y":30284.37326963926},"targetPosition":{"x":25715.8283004815,"y":30125.55722710666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6dfa7264-7d02-4a9d-8da1-fda9633d9cd0","savedPayload":{"position":{"x":25715.8283004815,"y":30125.55722710666},"targetPosition":{"x":26206.458405843925,"y":29808.379380539973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true}}},{"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"d5446580-e0c9-4831-803d-828a8a0f960f","savedPayload":{"position":{"x":24813.966744794838,"y":30214.952420294285},"targetPosition":{"x":25078.68327585426,"y":30090.12727781268},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"0f91d692-fe8d-4b30-be5e-4a6dd89be199","savedPayload":{"position":{"x":25078.68327585426,"y":30090.12727781268},"targetPosition":{"x":25343.2959107317,"y":29965.262938804237},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"4b16be25-c976-474a-8ca7-04dcc2adc6da","savedPayload":{"position":{"x":24469.16954398774,"y":29893.811980982406},"targetPosition":{"x":24906.11285552085,"y":29929.558089300655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"336c62aa-cb1d-40bf-81e0-2cd305e3c392","savedPayload":{"position":{"x":24906.11285552085,"y":29929.558089300655},"targetPosition":{"x":25343.2959107317,"y":29965.262938804237},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"902da064-06f6-49f3-a90c-edcfb10095dd","savedPayload":{"position":{"x":25343.2959107317,"y":29965.262938804237},"targetPosition":{"x":25631.55615328322,"y":29912.914955774966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"29f44e1a-cc67-431c-8250-8c76a0ee4166","savedPayload":{"position":{"x":25631.55615328322,"y":29912.914955774966},"targetPosition":{"x":26206.458405843925,"y":29808.379380539973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"7ae30888-309f-4df7-aff2-fb23a80477b4","savedPayload":{"position":{"x":24764.097605037605,"y":29650.9129681462},"targetPosition":{"x":25056.498625542867,"y":29637.0537515088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"5de236c0-62c7-4bc5-b798-72f04075c10b","savedPayload":{"position":{"x":25056.498625542867,"y":29637.0537515088},"targetPosition":{"x":25348.8518665333,"y":29623.147038116185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"bd6ddf73-e9d3-429e-88e5-3df884a9c23e","savedPayload":{"position":{"x":24568.661133331647,"y":29222.390841382785},"targetPosition":{"x":24958.614860473892,"y":29422.6804073874},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"fea72a1d-1b85-48fb-866f-191b8c580790","savedPayload":{"position":{"x":24958.614860473892,"y":29422.6804073874},"targetPosition":{"x":25348.8518665333,"y":29623.147038116185},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":true,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"bb99d9fa-f244-4899-8725-a070c40cff13","savedPayload":{"position":{"x":25348.8518665333,"y":29623.147038116185},"targetPosition":{"x":25635.24580092078,"y":29684.970891834582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"5f84bba8-05f8-4d26-80bb-55e15e359c15","savedPayload":{"position":{"x":25635.24580092078,"y":29684.970891834582},"targetPosition":{"x":26206.458405843925,"y":29808.379380539973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"eff7af91-29cc-436d-b941-659c8c3a975f","savedPayload":{"position":{"x":24934.261252326593,"y":29110.903177555258},"targetPosition":{"x":25209.75281626466,"y":29209.792502900502},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"9c31c436-a97d-4856-ac7f-27d25e4ddf6f","savedPayload":{"position":{"x":25209.75281626466,"y":29209.792502900502},"targetPosition":{"x":25485.202468486226,"y":29308.651512617344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"2782400f-a023-4674-a646-a9f5d84c0f6e","savedPayload":{"position":{"x":24917.98473759134,"y":28639.686681834835},"targetPosition":{"x":25201.51444939651,"y":28974.069876837384},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"001bb14a-d4f5-4fdc-b9ed-3b818fbe2f39","savedPayload":{"position":{"x":25201.51444939651,"y":28974.069876837384},"targetPosition":{"x":25485.202468486226,"y":29308.651512617344},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"188e8927-c5ee-48d2-9e93-427d1bfbe9a0","savedPayload":{"position":{"x":25485.202468486226,"y":29308.651512617344},"targetPosition":{"x":25726.044813314016,"y":29475.610791072653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6f10753e-f00f-44e9-90b6-2f30d13498f5","savedPayload":{"position":{"x":25726.044813314016,"y":29475.610791072653},"targetPosition":{"x":26206.458405843925,"y":29808.379380539973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true}}},{"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"cb47918d-0105-4d93-93cd-4d47ccbc13a1","savedPayload":{"position":{"x":25298.451266612246,"y":28676.50987824493},"targetPosition":{"x":25515.11541154967,"y":28873.471078174625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"d0c4d932-2047-4af9-9f4c-575644763855","savedPayload":{"position":{"x":25515.11541154967,"y":28873.471078174625},"targetPosition":{"x":25731.642975489744,"y":29070.2873730733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"458dda98-96ec-4f0b-9b4d-2a148f11da72","savedPayload":{"position":{"x":25464.123824697257,"y":28235.059848405643},"targetPosition":{"x":25597.896757585153,"y":28652.431061442407},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"10d2e176-4730-48bc-9223-02d87a12d28d","savedPayload":{"position":{"x":25597.896757585153,"y":28652.431061442407},"targetPosition":{"x":25731.642975489744,"y":29070.2873730733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":true,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"6939a55f-0383-48af-b298-1f5d4eda5d06","savedPayload":{"position":{"x":25731.642975489744,"y":29070.2873730733},"targetPosition":{"x":25890.14599426717,"y":29316.865605592895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"f4761c51-d896-4b1d-94d4-7548e02f69fe","savedPayload":{"position":{"x":25890.14599426717,"y":29316.865605592895},"targetPosition":{"x":26206.458405843925,"y":29808.379380539973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"6f5bc84f-37fc-4858-b1e7-1b2067a25296","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"840aa1e4-9ded-43fc-be2b-5fd7aee2f893","savedPayload":{"position":{"x":25998.367932366837,"y":28656.15058222684},"targetPosition":{"x":26050.386461672537,"y":28944.407113610694},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"68698ff2-1bd7-421d-808e-99020cd15091","savedPayload":{"position":{"x":26050.386461672537,"y":28944.407113610694},"targetPosition":{"x":26102.393052298732,"y":29233.049545964852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5be3cb3d-32b8-4ce1-89a2-333eafd13d92","savedPayload":{"position":{"x":26102.393052298732,"y":29233.049545964852},"targetPosition":{"x":26206.458405843925,"y":29808.379380539973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true}}},{"type":"Task","name":"Resistances & Supports","bot":{"type":"Indicator Bot Instance","name":"Resistances & Supports","code":" {\n \"repo\": \"\"\n }","processes":[{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"5e0f86e6-2a43-49c2-a347-7203f0867c2d","savedPayload":{"position":{"x":26351.38485471997,"y":28074.88256462966},"targetPosition":{"x":26372.36854076702,"y":28512.616405826237},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"f9f341a9-ba04-4c03-8f3b-249e72681562","savedPayload":{"position":{"x":26372.36854076702,"y":28512.616405826237},"targetPosition":{"x":26393.32113427409,"y":28950.6921665749},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"5d9b2729-43fb-4e7e-aa4f-b8477c424e51"}}},{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"9974d57e-33ac-4fcf-ad75-35a8c4dc549e","savedPayload":{"position":{"x":26661.06625066805,"y":28430.295188724027},"targetPosition":{"x":26527.219406287564,"y":28690.47461293794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"9c93e98f-e166-4c8d-a9d7-08ada9c68eeb","savedPayload":{"position":{"x":26527.219406287564,"y":28690.47461293794},"targetPosition":{"x":26393.32113427409,"y":28950.6921665749},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"be19d91b-9337-4f84-96b3-f4e54ea12df5"}}}],"id":"88a4c3b6-e148-47e8-91b2-bf72bb167dc5","savedPayload":{"position":{"x":26393.32113427409,"y":28950.6921665749},"targetPosition":{"x":26330.97484944011,"y":29237.168733187074},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6c9dc449-6a37-4f34-8984-13aafed439fc","savedPayload":{"position":{"x":26330.97484944011,"y":29237.168733187074},"targetPosition":{"x":26206.458405843925,"y":29808.379380539973},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true}}}],"id":"2aa7f43e-0f43-494e-8380-5559751c6138","savedPayload":{"position":{"x":26206.458405843925,"y":29808.379380539973},"targetPosition":{"x":26686.3034094085,"y":30140.21433120546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta BTC/USDT","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"8b8e34e7-5e12-4717-bf57-6daae86165fd","savedPayload":{"position":{"x":24701.37992695034,"y":29734.965997022297},"targetPosition":{"x":24969.191811743553,"y":29618.376219271937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"e0353c29-fda4-4521-812f-10609d0c1f7f","savedPayload":{"position":{"x":24969.191811743553,"y":29618.376219271937},"targetPosition":{"x":25236.93141646924,"y":29501.836917830624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"e3b60672-91b7-413a-85a4-74e9adff8617","savedPayload":{"position":{"x":24297.62589983071,"y":28808.963152258082},"targetPosition":{"x":24767.208067024727,"y":29155.393184212644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"aff35ef5-45bb-44fa-a7bf-64c92016f1b8","savedPayload":{"position":{"x":24767.208067024727,"y":29155.393184212644},"targetPosition":{"x":25236.93141646924,"y":29501.836917830624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"10c9e786-ea1e-4c33-b0b3-b1336cfd424f","savedPayload":{"position":{"x":25236.93141646924,"y":29501.836917830624},"targetPosition":{"x":25816.955535903824,"y":29567.109703556667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7b71601f-3427-49c1-81a4-50993775947a","savedPayload":{"position":{"x":25816.955535903824,"y":29567.109703556667},"targetPosition":{"x":26397.641593248456,"y":29632.285164803907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"9ca92a06-6f84-4a32-9d03-465eb1a7d301","savedPayload":{"position":{"x":24965.171310342437,"y":28718.376750333744},"targetPosition":{"x":25250.42896848256,"y":28781.335355979765},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"97a00727-5f27-4bcf-92c8-25de54ff6a51","savedPayload":{"position":{"x":25250.42896848256,"y":28781.335355979765},"targetPosition":{"x":25535.596569847447,"y":28844.281380248587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"2bed94c9-adff-448b-aaff-bf9e32f8b4fd","savedPayload":{"position":{"x":25183.14469176943,"y":27731.527848759644},"targetPosition":{"x":25359.315158257814,"y":28287.85636015459},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"2b40984e-af30-4103-8a08-d4a18d956b6b","savedPayload":{"position":{"x":25359.315158257814,"y":28287.85636015459},"targetPosition":{"x":25535.596569847447,"y":28844.281380248587},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"fb7d0472-69ba-4dbf-8f50-747aabece7f1","savedPayload":{"position":{"x":25535.596569847447,"y":28844.281380248587},"targetPosition":{"x":25966.378395409625,"y":29238.09315478951},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4bdfdec3-a922-4b96-9b3c-2576e01b8c8b","savedPayload":{"position":{"x":25966.378395409625,"y":29238.09315478951},"targetPosition":{"x":26397.641593248456,"y":29632.285164803907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true}}},{"type":"Task","name":"MACD","bot":{"type":"Indicator Bot Instance","name":"MACD","code":" {\n\"repo\": \"MACD-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"3ce35ca5-2f3b-4004-b52f-a52d0cf850e4","savedPayload":{"position":{"x":25776.3733855927,"y":28050.697086888045},"targetPosition":{"x":25970.0374981836,"y":28269.35599365017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"7e704caa-a900-4078-a778-1f8a3ce9b014","savedPayload":{"position":{"x":25970.0374981836,"y":28269.35599365017},"targetPosition":{"x":26163.634591699512,"y":28487.9503460179},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"767f2354-4f95-4532-b24f-3495363b0aa5","savedPayload":{"position":{"x":26532.218857509393,"y":27380.44975218586},"targetPosition":{"x":26347.910107628508,"y":27934.13082069985},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"3739134b-bc4b-413f-b123-e83044ee6c8c","savedPayload":{"position":{"x":26347.910107628508,"y":27934.13082069985},"targetPosition":{"x":26163.634591699512,"y":28487.9503460179},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"057b5470-5a8b-4ee1-9014-eaf5b529d233","savedPayload":{"position":{"x":26163.634591699512,"y":28487.9503460179},"targetPosition":{"x":26280.55452672701,"y":29059.809612052995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7d2a8af7-fe6f-41fa-a3f4-ddc2e8fae6aa","savedPayload":{"position":{"x":26280.55452672701,"y":29059.809612052995},"targetPosition":{"x":26397.641593248456,"y":29632.285164803907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"11e704b1-6536-438f-bf83-5c684a5feac1","savedPayload":{"position":{"x":26824.756472222187,"y":27987.35800558964},"targetPosition":{"x":26852.783702834524,"y":28278.12674957439},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"7f85d949-7c38-4cab-922d-7c2cbc0fa41a","savedPayload":{"position":{"x":26852.783702834524,"y":28278.12674957439},"targetPosition":{"x":26880.781395645514,"y":28568.805108000353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"03f1f3e7-fbf9-4e65-a218-388c28541407","savedPayload":{"position":{"x":27830.080609385786,"y":27889.804993409125},"targetPosition":{"x":27355.48522745888,"y":28229.25974916865},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"f563b514-588d-4c1a-9ec6-f19521c073cf","savedPayload":{"position":{"x":27355.48522745888,"y":28229.25974916865},"targetPosition":{"x":26880.781395645514,"y":28568.805108000353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"9a5d7598-77e1-478f-87c5-93d7f7790e84","savedPayload":{"position":{"x":26880.781395645514,"y":28568.805108000353},"targetPosition":{"x":26639.359437671614,"y":29100.216839552337},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"7b4dc7d0-add5-40f8-b182-2a4779dd58ce","savedPayload":{"position":{"x":26639.359437671614,"y":29100.216839552337},"targetPosition":{"x":26397.641593248456,"y":29632.285164803907},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"d408dc7a-dedf-4a2e-89de-12fba6929cad","savedPayload":{"position":{"x":26398.628132863265,"y":29632.418168888078},"targetPosition":{"x":26686.3034094085,"y":30140.21433120546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Masters ETH/USDT","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"c0ec58e7-d165-452d-8130-3ce3a09018a2","savedPayload":{"position":{"x":43548.31869375691,"y":28832.74871320079},"targetPosition":{"x":43468.23581599018,"y":29144.465623065378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"d0904db2-9cca-4fdd-b02b-9fdd0911446c","savedPayload":{"position":{"x":43468.23581599018,"y":29144.465623065378},"targetPosition":{"x":43388.21989927531,"y":29456.2064563822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"bf5c15a7-6fb0-49f9-8157-7010313382c8","savedPayload":{"position":{"x":43388.21989927531,"y":29456.2064563822},"targetPosition":{"x":43308.31846626916,"y":29768.295924463717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f0c5d49a-c96a-4c09-ae74-f826b6acc5d3","savedPayload":{"position":{"x":43308.31846626916,"y":29768.295924463717},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"cd2170de-f883-4c6d-9569-5eeec01a2174","savedPayload":{"position":{"x":44044.56919550187,"y":29070.680669232206},"targetPosition":{"x":43907.75296865664,"y":29362.11317316699},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"c7ff7702-4d99-44c8-96dd-ce76150a24c9","savedPayload":{"position":{"x":43907.75296865664,"y":29362.11317316699},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"65560505-5678-4962-b036-5bbb40faf667","savedPayload":{"position":{"x":44562.98482395708,"y":29102.272964030177},"targetPosition":{"x":44167.05042758576,"y":29377.81676557684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"ac1f1101-1e6e-4bdf-9ba3-b53f0b452194","savedPayload":{"position":{"x":44167.05042758576,"y":29377.81676557684},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"b55772ce-f34b-4447-be0d-3055da5c130e","savedPayload":{"position":{"x":43770.940957510276,"y":29653.49333725624},"targetPosition":{"x":43563.27921096938,"y":29899.761189375113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"42183f76-f0a7-409e-a1a0-6e66983574ab","savedPayload":{"position":{"x":43563.27921096938,"y":29899.761189375113},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"0d0e21e4-48d1-452e-9640-96879f9b663a","savedPayload":{"position":{"x":44529.43831259792,"y":29591.160241515347},"targetPosition":{"x":44279.57761586809,"y":29794.164895509643},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"0da09221-35eb-4ee4-b9bb-43a40a244784","savedPayload":{"position":{"x":44279.57761586809,"y":29794.164895509643},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"038e045e-0e03-4f9d-b0bc-19f494702496","savedPayload":{"position":{"x":44982.702734016326,"y":29844.505580086603},"targetPosition":{"x":44506.37336418851,"y":29920.77047196001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"fc88db9a-6b82-456e-a4c2-e6d90a7d286b","savedPayload":{"position":{"x":44506.37336418851,"y":29920.77047196001},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"3605c586-0270-4228-aa77-346d1223cf4a","savedPayload":{"position":{"x":44029.76414901768,"y":29997.129510062663},"targetPosition":{"x":43735.659869568226,"y":30128.724866806584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"1378cc77-ee0d-47e5-adb7-fc90f079a864","savedPayload":{"position":{"x":43735.659869568226,"y":30128.724866806584},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"868a509f-c4a5-4833-81a1-224e95efbf16","savedPayload":{"position":{"x":44740.19992947904,"y":30269.709710790212},"targetPosition":{"x":44426.92346740986,"y":30344.087153351575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"aac0ff59-86c4-4edd-8d5a-4719155ab606","savedPayload":{"position":{"x":44426.92346740986,"y":30344.087153351575},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"d2a9e894-8f73-44ff-ba6c-cd26a8c6a604","savedPayload":{"position":{"x":45038.495695074605,"y":30694.038844894512},"targetPosition":{"x":44576.2033062764,"y":30556.27191701111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"2aa55d01-7388-4bb3-b091-6029b21ece9c","savedPayload":{"position":{"x":44576.2033062764,"y":30556.27191701111},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"f74c9627-9441-44b5-9208-9b4ca75d958b","savedPayload":{"position":{"x":44113.681364955875,"y":30418.40946263666},"targetPosition":{"x":43791.5644814685,"y":30409.41652660318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9c303258-f07a-4f55-9b15-f7555623fccb","savedPayload":{"position":{"x":43791.5644814685,"y":30409.41652660318},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"2fc134ca-6a46-424d-90c6-c3fbbaf02c45","savedPayload":{"position":{"x":44634.8713858913,"y":30972.647789916467},"targetPosition":{"x":44320.40783090555,"y":30903.87226015812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"1175eece-34c9-404f-b595-f0688c0c2b25","savedPayload":{"position":{"x":44320.40783090555,"y":30903.87226015812},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"fe5e6d0d-4e9d-460c-902a-455cda69106e","savedPayload":{"position":{"x":44719.2935084921,"y":31484.844997094602},"targetPosition":{"x":44362.66897516384,"y":31160.069974503385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"416cc920-f6ac-43ab-906e-6a44c50d1c1e","savedPayload":{"position":{"x":44362.66897516384,"y":31160.069974503385},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"2f1ba714-161c-4538-b71b-a92c64c7a653","savedPayload":{"position":{"x":44005.998383917504,"y":30835.000935669093},"targetPosition":{"x":43719.93790732384,"y":30686.895169007028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"60718098-56a8-4811-afc2-0471c32c6b6a","savedPayload":{"position":{"x":43719.93790732384,"y":30686.895169007028},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"b25cdeaf-202e-4eee-9427-92a03a3e51bf","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"169767c2-0117-46f1-9038-90ce68933c5e","savedPayload":{"position":{"x":43921.27648533482,"y":31421.11867904632},"targetPosition":{"x":43727.95100474325,"y":31163.712277360213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"4cf99f3a-0370-4b59-bb93-961355144b15","savedPayload":{"position":{"x":43727.95100474325,"y":31163.712277360213},"targetPosition":{"x":43534.654105285146,"y":30905.972976263627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c12b5be1-57cd-4f82-8c39-269661bdee30","savedPayload":{"position":{"x":43534.654105285146,"y":30905.972976263627},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Resistances & Supports","bot":{"type":"Indicator Bot Instance","name":"Resistances & Supports","code":" {\n \"repo\": \"\"\n }","processes":[{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"c3719ab4-6b8e-4f42-8e6c-6af51aae8e98","savedPayload":{"position":{"x":29236.436420488044,"y":28842.058035616512},"targetPosition":{"x":28319.499189363356,"y":29088.253842403756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"10e436a5-6039-4d68-98eb-0946bbd9177a","savedPayload":{"position":{"x":28319.499189363356,"y":29088.253842403756},"targetPosition":{"x":27399.719969764705,"y":29333.89797166919},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"5d9b2729-43fb-4e7e-aa4f-b8477c424e51"}}},{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"71239dda-67b3-4826-bca7-77f195749c26","savedPayload":{"position":{"x":28623.524540193852,"y":29663.637854374636},"targetPosition":{"x":28012.119504473027,"y":29499.180133808037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"aae449a7-a92c-4c8b-bea1-dc1d74b970a9","savedPayload":{"position":{"x":28012.119504473027,"y":29499.180133808037},"targetPosition":{"x":27399.719969764705,"y":29333.89797166919},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"be19d91b-9337-4f84-96b3-f4e54ea12df5"}}}],"id":"c6a57b9a-7b49-4873-a873-36f8226ff31c","savedPayload":{"position":{"x":27399.719969764705,"y":29333.89797166919},"targetPosition":{"x":26764.022600248052,"y":29334.301572815737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e082e53a-ed5f-46ba-a495-b743917b41f0","savedPayload":{"position":{"x":26764.022600248052,"y":29334.301572815737},"targetPosition":{"x":26764.022600248052,"y":29334.301572815737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"44441046-ba97-4298-ba81-a7287d7f5f0e","savedPayload":{"position":{"x":26647.79930891195,"y":29557.33190446327},"targetPosition":{"x":26686.3034094085,"y":30140.21433120546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta ETH/USDT","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"ba2e453c-f845-44bb-8fab-6621133c973f","savedPayload":{"position":{"x":44071.61797125626,"y":29269.179122287296},"targetPosition":{"x":44017.22604407985,"y":29586.166432086655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"0fdfe732-59c9-432b-99fa-77b199af1814","savedPayload":{"position":{"x":44017.22604407985,"y":29586.166432086655},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"d19ff6b4-5bca-49c5-adeb-8affdd9b169c","savedPayload":{"position":{"x":45168.8488344655,"y":29458.147255078686},"targetPosition":{"x":44565.86589926591,"y":29680.585441818144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"40aad5eb-e8e3-45e8-aafc-9cce55a01125","savedPayload":{"position":{"x":44565.86589926591,"y":29680.585441818144},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"888f4a43-56a7-4b3f-8c6a-a92f68bb5cb4","savedPayload":{"position":{"x":43962.84190684965,"y":29903.09502706654},"targetPosition":{"x":43551.90647643782,"y":30397.266512500442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"80db6513-4873-45fc-a77e-ace7e90d62ba","savedPayload":{"position":{"x":43551.90647643782,"y":30397.266512500442},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"eff4efb9-ed01-4e96-ba43-0dc7db8e9bf2","savedPayload":{"position":{"x":44848.06740265459,"y":30126.954299288456},"targetPosition":{"x":44617.64305938516,"y":30351.280902615003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"f665b3d7-7cb8-4e20-a059-e0a70c46bf69","savedPayload":{"position":{"x":44617.64305938516,"y":30351.280902615003},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"2cb2aec9-082a-4068-99c7-731b616d8d5e","savedPayload":{"position":{"x":45624.60027321795,"y":30924.208529781736},"targetPosition":{"x":45005.977709353945,"y":30749.876937252106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"69c493b3-c52d-46b6-adc1-2d9a6414002d","savedPayload":{"position":{"x":45005.977709353945,"y":30749.876937252106},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"eb53df0b-5bc9-4db7-8f47-6fd81c98a063","savedPayload":{"position":{"x":44387.27143213535,"y":30575.564915785017},"targetPosition":{"x":43764.266809147426,"y":30733.667438768847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d8161c39-7027-4a9e-90d4-38f86362518d","savedPayload":{"position":{"x":43764.266809147426,"y":30733.667438768847},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"02cfefab-d6ca-4902-aa0e-48e9e42b1e19","savedPayload":{"position":{"x":44971.81020849867,"y":31276.620146946167},"targetPosition":{"x":44653.49004123155,"y":31322.55467880252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"32a6b883-acf5-4340-bfb3-a57eaca48d4e","savedPayload":{"position":{"x":44653.49004123155,"y":31322.55467880252},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"e9e20406-d6cb-4e6c-a31a-9ea6d25418b6","savedPayload":{"position":{"x":45131.12724051729,"y":32377.93040356555},"targetPosition":{"x":44733.22183307022,"y":31873.22574960204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"12b09664-60fd-40e9-aa30-219d503b596d","savedPayload":{"position":{"x":44733.22183307022,"y":31873.22574960204},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"55c367f3-6b8c-42cf-a9a4-380cfb7bbd37","savedPayload":{"position":{"x":44335.23861007668,"y":31368.479242651025},"targetPosition":{"x":43738.24708451567,"y":31130.308446359704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8a1057c0-6ca7-457f-8556-8ed709064c0a","savedPayload":{"position":{"x":43738.24708451567,"y":31130.308446359704},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"611d992a-e664-4bea-82d4-0148199d3953","savedPayload":{"position":{"x":44395.607564219106,"y":32279.346270225502},"targetPosition":{"x":44111.06304717549,"y":32129.543698932317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"cee6a154-0032-4691-8e0c-18d5f516599a","savedPayload":{"position":{"x":44111.06304717549,"y":32129.543698932317},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"061a67b1-76c2-4f65-97d9-970cdbed4975","savedPayload":{"position":{"x":43876.85035087776,"y":33264.29116567567},"targetPosition":{"x":43851.71485258066,"y":32622.075786304355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5f72971e-a0c3-4185-b7f5-6af0d1030895"}}},"id":"0a973589-37e4-47ac-bf8f-663d3580ce9d","savedPayload":{"position":{"x":43851.71485258066,"y":32622.075786304355},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"755b9471-aba3-4e5a-90cf-5233a2b7eed0","savedPayload":{"position":{"x":43826.594538981204,"y":31979.768305805377},"targetPosition":{"x":43483.775300077,"y":31436.11470464454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"1c4c284c-3696-490a-88a9-5b053097cc6a","savedPayload":{"position":{"x":43483.775300077,"y":31436.11470464454},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"4082899e-2f43-43c7-80c5-b686cd6190ec","savedPayload":{"position":{"x":26904.349994840362,"y":29597.91266562107},"targetPosition":{"x":26686.3034094085,"y":30140.21433120546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Masters ETH/BTC","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"ed0e7ecc-97d2-44c8-8e8d-e0db75f88bd3","savedPayload":{"position":{"x":43548.31869375691,"y":28832.74871320079},"targetPosition":{"x":43468.23581599018,"y":29144.465623065378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"5db1b2fb-73a2-4f3f-b4a0-5cdd33973e22","savedPayload":{"position":{"x":43468.23581599018,"y":29144.465623065378},"targetPosition":{"x":43388.21989927531,"y":29456.2064563822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"d45dcee0-6ed2-4635-bf10-6dbd39f81616","savedPayload":{"position":{"x":43388.21989927531,"y":29456.2064563822},"targetPosition":{"x":43308.31846626916,"y":29768.295924463717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"71847c88-464a-4ded-8e0d-6bc4f26879d5","savedPayload":{"position":{"x":43308.31846626916,"y":29768.295924463717},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"8870e6e8-c518-4ddf-b8ae-f61e7b458499","savedPayload":{"position":{"x":44044.56919550187,"y":29070.680669232206},"targetPosition":{"x":43907.75296865664,"y":29362.11317316699},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"b69c7cac-d974-4437-ae5c-91050e517b95","savedPayload":{"position":{"x":43907.75296865664,"y":29362.11317316699},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"f6c19fa1-1f40-4e9d-a182-00ecf1486a36","savedPayload":{"position":{"x":44562.98482395708,"y":29102.272964030177},"targetPosition":{"x":44167.05042758576,"y":29377.81676557684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"ad291a9d-27df-4a25-8e9c-a50fbb80bae7","savedPayload":{"position":{"x":44167.05042758576,"y":29377.81676557684},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"c9c5e731-78f4-419d-b06e-df15b8455ea0","savedPayload":{"position":{"x":43770.940957510276,"y":29653.49333725624},"targetPosition":{"x":43563.27921096938,"y":29899.761189375113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f8dea827-aa40-473e-8f37-0ce47b46cff6","savedPayload":{"position":{"x":43563.27921096938,"y":29899.761189375113},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"9431440d-920d-449c-89ec-be4683f9848d","savedPayload":{"position":{"x":44529.43831259792,"y":29591.160241515347},"targetPosition":{"x":44279.57761586809,"y":29794.164895509643},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"964273a0-8e34-4dd3-ad2e-297f7fa71bb3","savedPayload":{"position":{"x":44279.57761586809,"y":29794.164895509643},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"8809863d-4211-42e9-8b88-e6d7af932609","savedPayload":{"position":{"x":44982.702734016326,"y":29844.505580086603},"targetPosition":{"x":44506.37336418851,"y":29920.77047196001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"824c80fc-296d-4a50-b400-e88abc25759d","savedPayload":{"position":{"x":44506.37336418851,"y":29920.77047196001},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"5b00ccce-cdb7-427a-956c-942f8191b012","savedPayload":{"position":{"x":44029.76414901768,"y":29997.129510062663},"targetPosition":{"x":43735.659869568226,"y":30128.724866806584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"9b56bb81-8663-435b-bfc2-ae713bce63a8","savedPayload":{"position":{"x":43735.659869568226,"y":30128.724866806584},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"dcfe69c9-9ca4-461b-a8ec-bb8767a7eb42","savedPayload":{"position":{"x":44740.19992947904,"y":30269.709710790212},"targetPosition":{"x":44426.92346740986,"y":30344.087153351575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"68eb1a9c-0b37-4c78-9c60-fc6ff965e232","savedPayload":{"position":{"x":44426.92346740986,"y":30344.087153351575},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"8e176301-b3e7-4ab3-afa1-d5c79729bdff","savedPayload":{"position":{"x":45038.495695074605,"y":30694.038844894512},"targetPosition":{"x":44576.2033062764,"y":30556.27191701111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"efc12347-4253-4dae-af5d-0018da266f79","savedPayload":{"position":{"x":44576.2033062764,"y":30556.27191701111},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"dcbd305d-d39f-48a2-abc1-ca35136a6c5a","savedPayload":{"position":{"x":44113.681364955875,"y":30418.40946263666},"targetPosition":{"x":43791.5644814685,"y":30409.41652660318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7ea6a8d6-08e3-488a-935e-665c6c2dc162","savedPayload":{"position":{"x":43791.5644814685,"y":30409.41652660318},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"4729a832-f66f-4f8e-8c7e-e2f5b3a76713","savedPayload":{"position":{"x":44634.8713858913,"y":30972.647789916467},"targetPosition":{"x":44320.40783090555,"y":30903.87226015812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"e26b1dbe-8132-44ac-9fc5-ec0abb7ffb00","savedPayload":{"position":{"x":44320.40783090555,"y":30903.87226015812},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"9eb66bcd-bd27-4465-b1b1-637f7333a317","savedPayload":{"position":{"x":44719.2935084921,"y":31484.844997094602},"targetPosition":{"x":44362.66897516384,"y":31160.069974503385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"4339a651-b953-4557-8b9d-aab8da5c2242","savedPayload":{"position":{"x":44362.66897516384,"y":31160.069974503385},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"d3cd9b20-c7d8-4a65-a3d4-4a34f3bb167e","savedPayload":{"position":{"x":44005.998383917504,"y":30835.000935669093},"targetPosition":{"x":43719.93790732384,"y":30686.895169007028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"1573a7d8-dc33-4c69-9b77-e5280cd85fec","savedPayload":{"position":{"x":43719.93790732384,"y":30686.895169007028},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"03d0ab9c-bf7d-4f94-8113-3d70ea468438","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"b75be613-5e1d-4707-8af2-db8f4a6d4e91","savedPayload":{"position":{"x":43921.27648533482,"y":31421.11867904632},"targetPosition":{"x":43727.95100474325,"y":31163.712277360213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"66d881dc-6b13-4405-914a-faf72345cf10","savedPayload":{"position":{"x":43727.95100474325,"y":31163.712277360213},"targetPosition":{"x":43534.654105285146,"y":30905.972976263627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ae16e085-38fa-42f9-9096-88cad729ed5f","savedPayload":{"position":{"x":43534.654105285146,"y":30905.972976263627},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Resistances & Supports","bot":{"type":"Indicator Bot Instance","name":"Resistances & Supports","code":" {\n \"repo\": \"\"\n }","processes":[{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"605f52b8-1d21-4a2c-927b-ca56c9bfa261","savedPayload":{"position":{"x":29641.182011013254,"y":29179.06479283302},"targetPosition":{"x":28820.54304885861,"y":29399.13104453354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"c8e61fc3-113c-4992-9ff5-8111aed3a772","savedPayload":{"position":{"x":28820.54304885861,"y":29399.13104453354},"targetPosition":{"x":28001.743393721306,"y":29618.230591851167},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"5d9b2729-43fb-4e7e-aa4f-b8477c424e51"}}},{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f8c2b53c-64ed-4183-81ee-11e9fe50d062","savedPayload":{"position":{"x":29094.280096715658,"y":29909.66273187614},"targetPosition":{"x":28546.365190923792,"y":29764.60644121561},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"f9f7c50d-43ed-48e6-ba0e-cefbebe1d1af","savedPayload":{"position":{"x":28546.365190923792,"y":29764.60644121561},"targetPosition":{"x":28001.743393721306,"y":29618.230591851167},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"be19d91b-9337-4f84-96b3-f4e54ea12df5"}}}],"id":"605c38e9-d015-4172-adf7-ae9e04ac0c6b","savedPayload":{"position":{"x":28001.743393721306,"y":29618.230591851167},"targetPosition":{"x":27436.4813809028,"y":29617.939288544592},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d811892a-4061-409a-9038-1b7ec689b912","savedPayload":{"position":{"x":27436.4813809028,"y":29617.939288544592},"targetPosition":{"x":27436.4813809028,"y":29617.939288544592},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"182197b7-10d2-4133-80d4-a5e67f1bb985","savedPayload":{"position":{"x":27118.07471671795,"y":29746.09916259287},"targetPosition":{"x":26686.3034094085,"y":30140.21433120546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta ETH/BTC","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"ccb58a3a-dca8-4ee7-8c3a-1610dbc8afec","savedPayload":{"position":{"x":44071.61797125626,"y":29269.179122287296},"targetPosition":{"x":44017.22604407985,"y":29586.166432086655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"e6444995-5bd6-45ae-8258-eba9c8e47e2d","savedPayload":{"position":{"x":44017.22604407985,"y":29586.166432086655},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"d8a59a85-516b-4eb4-b4e1-da9632e7c3f2","savedPayload":{"position":{"x":45168.8488344655,"y":29458.147255078686},"targetPosition":{"x":44565.86589926591,"y":29680.585441818144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"92876941-5b83-402f-92c8-846347688cf1","savedPayload":{"position":{"x":44565.86589926591,"y":29680.585441818144},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"b538a04c-a10f-4468-8c87-ed558c171185","savedPayload":{"position":{"x":43962.84190684965,"y":29903.09502706654},"targetPosition":{"x":43551.90647643782,"y":30397.266512500442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6b2367c2-fa62-48b2-bcd6-023150e22229","savedPayload":{"position":{"x":43551.90647643782,"y":30397.266512500442},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"9a802e64-62f4-4b46-bf7d-bad5518f47b0","savedPayload":{"position":{"x":44848.06740265459,"y":30126.954299288456},"targetPosition":{"x":44617.64305938516,"y":30351.280902615003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"a2faa8e5-1896-4253-b34b-8cab4dc79c9e","savedPayload":{"position":{"x":44617.64305938516,"y":30351.280902615003},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"814c3522-cb17-41e9-9816-6ad1ed93ce8a","savedPayload":{"position":{"x":45624.60027321795,"y":30924.208529781736},"targetPosition":{"x":45005.977709353945,"y":30749.876937252106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"7e26d5f8-9697-4aef-a8b4-4d194e0c0131","savedPayload":{"position":{"x":45005.977709353945,"y":30749.876937252106},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"8430b37f-e34a-4040-95f7-9ba477e9efd6","savedPayload":{"position":{"x":44387.27143213535,"y":30575.564915785017},"targetPosition":{"x":43764.266809147426,"y":30733.667438768847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c0d7d134-354d-4eac-a4e5-f0f30a194630","savedPayload":{"position":{"x":43764.266809147426,"y":30733.667438768847},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"84692f45-e98c-46fb-b3e5-f1896ad469ca","savedPayload":{"position":{"x":44971.81020849867,"y":31276.620146946167},"targetPosition":{"x":44653.49004123155,"y":31322.55467880252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"9b811f15-779b-4c13-96c1-96b343086940","savedPayload":{"position":{"x":44653.49004123155,"y":31322.55467880252},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"e5506dc1-c934-4e56-bb4d-a2ac505a14cb","savedPayload":{"position":{"x":45131.12724051729,"y":32377.93040356555},"targetPosition":{"x":44733.22183307022,"y":31873.22574960204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"4310c411-4621-440e-84f2-d521f1c97fce","savedPayload":{"position":{"x":44733.22183307022,"y":31873.22574960204},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"06802373-c568-43c0-a743-00bbfaa359e8","savedPayload":{"position":{"x":44335.23861007668,"y":31368.479242651025},"targetPosition":{"x":43738.24708451567,"y":31130.308446359704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7fd83d86-81a0-462d-aa18-18d647132476","savedPayload":{"position":{"x":43738.24708451567,"y":31130.308446359704},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"fba73c4e-4987-4eb7-b1ae-3949ccf7aae9","savedPayload":{"position":{"x":44395.607564219106,"y":32279.346270225502},"targetPosition":{"x":44111.06304717549,"y":32129.543698932317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"8a568ac5-3a31-45e7-b126-30d92acf6aa2","savedPayload":{"position":{"x":44111.06304717549,"y":32129.543698932317},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"ecd94727-f74a-4de4-b349-0b29d3bbfa20","savedPayload":{"position":{"x":43876.85035087776,"y":33264.29116567567},"targetPosition":{"x":43851.71485258066,"y":32622.075786304355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"a4562107-8fae-46ed-912c-062d82dbeec7"}}},"id":"245f9ba9-323e-4635-bf44-e49a14105b51","savedPayload":{"position":{"x":43851.71485258066,"y":32622.075786304355},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"4ac3fa30-9d66-4e9d-83c9-dcac2b7abd71","savedPayload":{"position":{"x":43826.594538981204,"y":31979.768305805377},"targetPosition":{"x":43483.775300077,"y":31436.11470464454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"368b1588-2e11-4721-8ec4-fb1d6c56d1a0","savedPayload":{"position":{"x":43483.775300077,"y":31436.11470464454},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"f009b1a8-1d0b-4082-9ba4-e88d3d710186","savedPayload":{"position":{"x":27246.38563957594,"y":29972.747888236656},"targetPosition":{"x":26686.3034094085,"y":30140.21433120546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}}],"id":"1f1186b7-877f-40ad-b8da-5ea0e51a0f92","savedPayload":{"position":{"x":26685.750001843287,"y":30138.80035766106},"targetPosition":{"x":26594.57388499951,"y":30715.633401753315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":true},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}},{"type":"Exchange Tasks","name":"Bitfinex","taskManagers":[{"type":"Task Manager","name":"Masters BTC/USDT","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"df1d2f62-8e0d-4219-8d26-3d616d1b4543","savedPayload":{"position":{"x":25532.021932026262,"y":29493.79379095337},"targetPosition":{"x":25818.00473484636,"y":29555.358999718057},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"61aa7323-ef1f-4e82-9a0b-a6b0c46880da","savedPayload":{"position":{"x":25818.00473484636,"y":29555.358999718057},"targetPosition":{"x":26104.133992494768,"y":29616.763955676826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"0b70fa5a-a181-4609-be1f-649a4414b2c2","savedPayload":{"position":{"x":26104.133992494768,"y":29616.763955676826},"targetPosition":{"x":26390.65765924354,"y":29677.960884597054},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a822c45d-326c-42ab-a0af-8391cb48e977","savedPayload":{"position":{"x":26390.65765924354,"y":29677.960884597054},"targetPosition":{"x":26962.116568852707,"y":29800.03967601551},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"cf429952-f4cf-42e1-a898-30b530c30b1f","savedPayload":{"position":{"x":25688.814589107576,"y":29105.58483607894},"targetPosition":{"x":25964.406400548185,"y":29204.191859103936},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"979fab00-9291-4300-a95f-ad8e69e77bb0","savedPayload":{"position":{"x":25964.406400548185,"y":29204.191859103936},"targetPosition":{"x":26240.070452400054,"y":29302.715498247944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"fe3c27e8-92aa-46a0-941b-5e9eb7074125","savedPayload":{"position":{"x":25672.688212822653,"y":28634.077840680555},"targetPosition":{"x":25956.23515634513,"y":28968.32539556099},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"588e68fc-242d-4314-98fd-29ad35db4aa9","savedPayload":{"position":{"x":25956.23515634513,"y":28968.32539556099},"targetPosition":{"x":26240.070452400054,"y":29302.715498247944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"f21f16af-b1e9-4fea-8bce-147ca5e85546","savedPayload":{"position":{"x":26240.070452400054,"y":29302.715498247944},"targetPosition":{"x":26481.603112459772,"y":29469.27778180674},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3f08bb1b-eaaf-4653-a9d6-7d66c23f9a2b","savedPayload":{"position":{"x":26481.603112459772,"y":29469.27778180674},"targetPosition":{"x":26962.116568852707,"y":29800.03967601551},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"53a46550-4674-404b-9e70-54930c32d0cc","savedPayload":{"position":{"x":26054.672813462385,"y":28668.56728964108},"targetPosition":{"x":26271.3843943752,"y":28865.35149167764},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"bdcbfb71-2ed0-4dbc-9d99-c6435b32c75f","savedPayload":{"position":{"x":26271.3843943752,"y":28865.35149167764},"targetPosition":{"x":26488.099910186756,"y":29062.10532435917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"3a9f29f5-b6b6-4b44-9a78-53d51dfdc473","savedPayload":{"position":{"x":26220.12419176978,"y":28227.00111457274},"targetPosition":{"x":26354.05263211957,"y":28644.407625228792},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"e89e0e88-e912-4bc5-b0f5-456b03f5af4c","savedPayload":{"position":{"x":26354.05263211957,"y":28644.407625228792},"targetPosition":{"x":26488.099910186756,"y":29062.10532435917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"c724a8b9-3d1f-4f3c-9574-68ad73a3c931","savedPayload":{"position":{"x":26488.099910186756,"y":29062.10532435917},"targetPosition":{"x":26646.71854334348,"y":29308.808457674942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"a2e76dcd-8be8-435e-8363-b536e053ffc4","savedPayload":{"position":{"x":26646.71854334348,"y":29308.808457674942},"targetPosition":{"x":26962.116568852707,"y":29800.03967601551},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"9a38b285-cf9c-4cf9-9686-d3f029c421c7","savedPayload":{"position":{"x":26556.632971123854,"y":28407.04989321531},"targetPosition":{"x":26681.379676886798,"y":28671.853512444075},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"fae2906c-35de-4bae-9468-4e9b81b32a12","savedPayload":{"position":{"x":26681.379676886798,"y":28671.853512444075},"targetPosition":{"x":26806.098248834965,"y":28936.59913429553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"19cf100f-58c4-4e1d-95e3-4d0c3202cb31","savedPayload":{"position":{"x":26877.763637655837,"y":28062.45813441559},"targetPosition":{"x":26841.955512196433,"y":28499.365183855803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"7f30e840-333f-42f0-8551-76fd3c037036","savedPayload":{"position":{"x":26841.955512196433,"y":28499.365183855803},"targetPosition":{"x":26806.098248834965,"y":28936.59913429553},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"2561f7b2-39ea-49cd-9857-c661b40a391f","savedPayload":{"position":{"x":26806.098248834965,"y":28936.59913429553},"targetPosition":{"x":26858.149556331882,"y":29225.033123524205},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d986ae8d-96ee-4462-b4bd-e90df7331df2","savedPayload":{"position":{"x":26858.149556331882,"y":29225.033123524205},"targetPosition":{"x":26962.116568852707,"y":29800.03967601551},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"ae3f5f4c-2e76-423a-819d-b23086b0a6fc","savedPayload":{"position":{"x":27120.64518616503,"y":28357.83123612552},"targetPosition":{"x":27134.398160475263,"y":28650.17746438318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"83473783-4543-4d4d-9025-bee3c6bc9449","savedPayload":{"position":{"x":27134.398160475263,"y":28650.17746438318},"targetPosition":{"x":27148.119025102926,"y":28942.492376042133},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"bdfb4afc-ff84-4d30-8076-6af76c62fbc9","savedPayload":{"position":{"x":27549.168197469153,"y":28162.695325706372},"targetPosition":{"x":27348.792429239067,"y":28552.427260105884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"4f494f7f-346d-4699-be3c-526e2d6d8a21","savedPayload":{"position":{"x":27348.792429239067,"y":28552.427260105884},"targetPosition":{"x":27148.119025102926,"y":28942.492376042133},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"e1243856-d3ac-4fdc-b73b-e77a335e5c4f","savedPayload":{"position":{"x":27148.119025102926,"y":28942.492376042133},"targetPosition":{"x":27085.967490629784,"y":29228.92678481054},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"e290b5bc-985d-4f50-9cc7-91939dc368f1","savedPayload":{"position":{"x":27085.967490629784,"y":29228.92678481054},"targetPosition":{"x":26962.116568852707,"y":29800.03967601551},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"4e238bd3-6ab6-45d2-8285-a614677aa4e6","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"d8d2b3bf-67e8-4a7f-aeeb-6770b5f6af03","savedPayload":{"position":{"x":27629.401618955977,"y":28838.493084294812},"targetPosition":{"x":27462.516097358708,"y":29079.06270807697},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"d456953a-b0cc-4fa0-a565-4cda9eb1461a","savedPayload":{"position":{"x":27462.516097358708,"y":29079.06270807697},"targetPosition":{"x":27295.350610604924,"y":29319.79480347147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6ac3283b-935b-4155-9f04-0e955d975de2","savedPayload":{"position":{"x":27295.350610604924,"y":29319.79480347147},"targetPosition":{"x":26962.116568852707,"y":29800.03967601551},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Resistances & Supports","bot":{"type":"Indicator Bot Instance","name":"Resistances & Supports","code":" {\n \"repo\": \"\"\n }","processes":[{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"853c368e-3788-487c-8956-7c39546a47e0","savedPayload":{"position":{"x":28289.394994747727,"y":28677.16092959221},"targetPosition":{"x":27995.158750445036,"y":29001.498525575964},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"4f08f13f-a228-44b4-bc13-dac4fe6d6537","savedPayload":{"position":{"x":27995.158750445036,"y":29001.498525575964},"targetPosition":{"x":27700.641413189478,"y":29326.06185740217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"5d9b2729-43fb-4e7e-aa4f-b8477c424e51"}}},{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"fc214405-4446-455d-ac77-3ad00da6437b","savedPayload":{"position":{"x":28257.721164994255,"y":29147.813467739074},"targetPosition":{"x":27979.23990018851,"y":29236.998909733156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"31b838d2-7663-4523-919a-49ed190532d0","savedPayload":{"position":{"x":27979.23990018851,"y":29236.998909733156},"targetPosition":{"x":27700.641413189478,"y":29326.06185740217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"be19d91b-9337-4f84-96b3-f4e54ea12df5"}}}],"id":"2d8110a8-cebc-45a4-9b48-405c54b0604f","savedPayload":{"position":{"x":27700.641413189478,"y":29326.06185740217},"targetPosition":{"x":27454.110575365186,"y":29484.277700879615},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b8245376-d44c-4719-a6fa-30aabe27c552","savedPayload":{"position":{"x":27454.110575365186,"y":29484.277700879615},"targetPosition":{"x":26962.116568852707,"y":29800.03967601551},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"31ac6026-554e-45ce-a669-8a0b0278bc9c","savedPayload":{"position":{"x":26961.649049058728,"y":29798.2167754548},"targetPosition":{"x":27066.43132315313,"y":30372.994534588033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta BTC/USDT","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"c4d31822-d051-4f90-852a-3c103b85bce5","savedPayload":{"position":{"x":44071.61797125626,"y":29269.179122287296},"targetPosition":{"x":44017.22604407985,"y":29586.166432086655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"cb15744e-8cd7-489e-81b7-2fc748e3506b","savedPayload":{"position":{"x":44017.22604407985,"y":29586.166432086655},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"350b1206-93e4-44f7-bcf4-6d49c61936c1","savedPayload":{"position":{"x":45168.8488344655,"y":29458.147255078686},"targetPosition":{"x":44565.86589926591,"y":29680.585441818144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"d3253532-e1e6-4267-8579-d914cf57eb54","savedPayload":{"position":{"x":44565.86589926591,"y":29680.585441818144},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"917f13b7-172a-4ac0-afda-4e746f693322","savedPayload":{"position":{"x":43962.84190684965,"y":29903.09502706654},"targetPosition":{"x":43551.90647643782,"y":30397.266512500442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"03fc544b-624d-4fa8-aa5f-3bc3b67ff66c","savedPayload":{"position":{"x":43551.90647643782,"y":30397.266512500442},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"006b7810-4526-4d1c-b0ed-aff089a74e45","savedPayload":{"position":{"x":44848.06740265459,"y":30126.954299288456},"targetPosition":{"x":44617.64305938516,"y":30351.280902615003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"4f36ab44-42a4-4abc-b206-04097eabfa9e","savedPayload":{"position":{"x":44617.64305938516,"y":30351.280902615003},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"c538fc87-7b7e-42eb-b274-1d68146ea689","savedPayload":{"position":{"x":45624.60027321795,"y":30924.208529781736},"targetPosition":{"x":45005.977709353945,"y":30749.876937252106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"364162b9-fed9-42f9-b704-8039af7506d8","savedPayload":{"position":{"x":45005.977709353945,"y":30749.876937252106},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"99d22f6b-ba7b-4ba1-b283-7c3e82fd0af6","savedPayload":{"position":{"x":44387.27143213535,"y":30575.564915785017},"targetPosition":{"x":43764.266809147426,"y":30733.667438768847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2eaa8741-ced1-46ce-ba49-6d44c94178ff","savedPayload":{"position":{"x":43764.266809147426,"y":30733.667438768847},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"ac311e42-9b3d-4fd6-a8a5-6928b43dbb1f","savedPayload":{"position":{"x":44971.81020849867,"y":31276.620146946167},"targetPosition":{"x":44653.49004123155,"y":31322.55467880252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"036e10e3-9e1b-4f54-9bcb-f74c00988140","savedPayload":{"position":{"x":44653.49004123155,"y":31322.55467880252},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"e87402c2-3059-4bcf-ab04-c60ed677c613","savedPayload":{"position":{"x":45131.12724051729,"y":32377.93040356555},"targetPosition":{"x":44733.22183307022,"y":31873.22574960204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"6adccfb3-1c94-42ef-a914-00447f15d697","savedPayload":{"position":{"x":44733.22183307022,"y":31873.22574960204},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"578ff1fa-5893-420c-a41d-b9a91b90d18f","savedPayload":{"position":{"x":44335.23861007668,"y":31368.479242651025},"targetPosition":{"x":43738.24708451567,"y":31130.308446359704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a5139fe2-8c7e-4620-af3f-7585dd869885","savedPayload":{"position":{"x":43738.24708451567,"y":31130.308446359704},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"75455cfc-d9b5-4e05-843a-9c647643a8ee","savedPayload":{"position":{"x":44395.607564219106,"y":32279.346270225502},"targetPosition":{"x":44111.06304717549,"y":32129.543698932317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"a24873a5-d188-4023-b520-30e7a6b80d81","savedPayload":{"position":{"x":44111.06304717549,"y":32129.543698932317},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"15ef8801-9493-48a8-8803-7cd7851bf5bf","savedPayload":{"position":{"x":43876.85035087776,"y":33264.29116567567},"targetPosition":{"x":43851.71485258066,"y":32622.075786304355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"613103f0-f472-4018-aa94-7d2a98d189d7","savedPayload":{"position":{"x":43851.71485258066,"y":32622.075786304355},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"6c9d84ef-c6c7-4789-89d2-37f6b97ead3a","savedPayload":{"position":{"x":43826.594538981204,"y":31979.768305805377},"targetPosition":{"x":43483.775300077,"y":31436.11470464454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"02624306-3143-4239-ad6a-ded869322f76","savedPayload":{"position":{"x":43483.775300077,"y":31436.11470464454},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"a59c83d8-66f7-492d-a1d4-5b667c13d1cc","savedPayload":{"position":{"x":27221.552941324044,"y":29809.66235290741},"targetPosition":{"x":27066.43132315313,"y":30372.994534588033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Masters ETH/USDT","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Bitfinex ETH/USDT","id":"cc875cdb-48d6-486f-8646-0d2b2141ac85","savedPayload":{"position":{"x":26799.28922398905,"y":28624.385862533323},"targetPosition":{"x":26929.252522576295,"y":28886.465644444495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"33d89faf-122c-46bf-ba77-e2a7dfbca495","savedPayload":{"position":{"x":26929.252522576295,"y":28886.465644444495},"targetPosition":{"x":27059.364774795093,"y":29148.588616065892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"1dcecea0-a097-4662-81c4-732c4d0b1b80","savedPayload":{"position":{"x":27059.364774795093,"y":29148.588616065892},"targetPosition":{"x":27189.7717187341,"y":29410.912360207505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1a624301-03f8-40ff-b830-49866f7bc201","savedPayload":{"position":{"x":27189.7717187341,"y":29410.912360207505},"targetPosition":{"x":27450.123772879848,"y":29934.324575969917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex ETH/USDT","id":"855821c3-74d9-4535-a79b-b46ed47258a1","savedPayload":{"position":{"x":27201.689117174225,"y":28504.851197973603},"targetPosition":{"x":27296.215301730103,"y":28781.832171101545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"7d062ef8-0d2c-4549-86cb-6560831bb6a9","savedPayload":{"position":{"x":27296.215301730103,"y":28781.832171101545},"targetPosition":{"x":27390.759707784917,"y":29058.783039021946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex ETH/USDT","id":"db37abf9-53aa-41f9-b0c1-a9434e75fa80","savedPayload":{"position":{"x":27559.516447458245,"y":28198.28044501},"targetPosition":{"x":27475.126769077044,"y":28628.375157501254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"e8038427-0974-4e69-9876-84fb6ed1b3a7","savedPayload":{"position":{"x":27475.126769077044,"y":28628.375157501254},"targetPosition":{"x":27390.759707784917,"y":29058.783039021946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"51061c76-efe7-4786-a65f-72906b00ba6f","savedPayload":{"position":{"x":27390.759707784917,"y":29058.783039021946},"targetPosition":{"x":27410.582235394315,"y":29351.17874442099},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"25a0d74d-1861-47c0-a152-5cd334940350","savedPayload":{"position":{"x":27410.582235394315,"y":29351.17874442099},"targetPosition":{"x":27450.123772879848,"y":29934.324575969917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex ETH/USDT","id":"45178c95-9a78-4cde-bec1-14dba38a7379","savedPayload":{"position":{"x":27767.42871584577,"y":28518.636604644005},"targetPosition":{"x":27748.81271280577,"y":28810.77968349651},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"0705c206-6677-469d-b691-2cb57b28d326","savedPayload":{"position":{"x":27748.81271280577,"y":28810.77968349651},"targetPosition":{"x":27730.277613412738,"y":29102.869593913347},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex ETH/USDT","id":"77c464df-2691-4e19-a403-f0f4f556af0e","savedPayload":{"position":{"x":28215.80321558916,"y":28372.615450095014},"targetPosition":{"x":27973.100474922037,"y":28737.602616347085},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"6614248f-ccae-4460-9ffc-d40a991da3e4","savedPayload":{"position":{"x":27973.100474922037,"y":28737.602616347085},"targetPosition":{"x":27730.277613412738,"y":29102.869593913347},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"4d01d866-20ef-49ce-89b4-10570ed3df1f","savedPayload":{"position":{"x":27730.277613412738,"y":29102.869593913347},"targetPosition":{"x":27636.74004531444,"y":29380.54446915657},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"16b46861-7a1d-42e7-b6ad-080bafe601e2","savedPayload":{"position":{"x":27636.74004531444,"y":29380.54446915657},"targetPosition":{"x":27450.123772879848,"y":29934.324575969917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex ETH/USDT","id":"96fdc6f1-e909-4bd4-b8bc-4b11c6c2e10c","savedPayload":{"position":{"x":28285.58222355639,"y":28748.402647642302},"targetPosition":{"x":28156.48486418097,"y":29011.061263760545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"d005043d-5331-4595-903c-87885850771c","savedPayload":{"position":{"x":28156.48486418097,"y":29011.061263760545},"targetPosition":{"x":28027.456737436143,"y":29273.697783927004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex ETH/USDT","id":"4fa54d06-c19b-4eb2-827e-7424a4ad70a4","savedPayload":{"position":{"x":28755.647939329672,"y":28785.064608308006},"targetPosition":{"x":28391.66558644188,"y":29029.297481480116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"c5efc024-860a-418a-a4c1-1aa02b3445e6","savedPayload":{"position":{"x":28391.66558644188,"y":29029.297481480116},"targetPosition":{"x":28027.456737436143,"y":29273.697783927004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"4f994004-edc7-428f-b24f-a1a143bce141","savedPayload":{"position":{"x":28027.456737436143,"y":29273.697783927004},"targetPosition":{"x":27834.642878189625,"y":29494.316606706954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"00e69607-c8f7-47de-980b-b59c6d3759b3","savedPayload":{"position":{"x":27834.642878189625,"y":29494.316606706954},"targetPosition":{"x":27450.123772879848,"y":29934.324575969917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex ETH/USDT","id":"53426814-c6e7-4df3-bc60-6704e9e87f45","savedPayload":{"position":{"x":28676.27256607777,"y":29159.18479952907},"targetPosition":{"x":28456.443127789888,"y":29352.274190618195},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"2102ad50-0cb1-43c2-90a8-5e1e04e2cc49","savedPayload":{"position":{"x":28456.443127789888,"y":29352.274190618195},"targetPosition":{"x":28236.610647879945,"y":29545.333707099937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex ETH/USDT","id":"c532ec79-8a24-44e6-92d9-8bc282efd4cb","savedPayload":{"position":{"x":29096.381304616334,"y":29372.950166020324},"targetPosition":{"x":28666.716786129517,"y":29459.175197837638},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"28e6f805-cf75-428e-b854-f607bad8ab4a","savedPayload":{"position":{"x":28666.716786129517,"y":29459.175197837638},"targetPosition":{"x":28236.610647879945,"y":29545.333707099937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"084f1122-caa0-4c5f-93c5-065b1192467e","savedPayload":{"position":{"x":28236.610647879945,"y":29545.333707099937},"targetPosition":{"x":27973.891742378568,"y":29675.170796356197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"5d7ee249-fc02-4c84-aa6e-a43a53b1c2df","savedPayload":{"position":{"x":27973.891742378568,"y":29675.170796356197},"targetPosition":{"x":27450.123772879848,"y":29934.324575969917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"a0ae1762-86ed-487f-8e0d-6c327b8804ab","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"747bcc4c-4e5a-42a5-8253-25d0b8cf740c","savedPayload":{"position":{"x":28618.0883503226,"y":29856.948457726994},"targetPosition":{"x":28325.927606864003,"y":29876.31973560584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"34f0bcb8-7f23-4988-97b8-950e9cef5a30","savedPayload":{"position":{"x":28325.927606864003,"y":29876.31973560584},"targetPosition":{"x":28033.43096550348,"y":29895.59000164221},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"eb7ad8af-7671-4457-8354-9d2431931024","savedPayload":{"position":{"x":28033.43096550348,"y":29895.59000164221},"targetPosition":{"x":27450.123772879848,"y":29934.324575969917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Resistances & Supports","bot":{"type":"Indicator Bot Instance","name":"Resistances & Supports","code":" {\n \"repo\": \"\"\n }","processes":[{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"d1e36c99-1720-4af5-b015-9339874bf55a","savedPayload":{"position":{"x":29155.13636136289,"y":30271.40711723251},"targetPosition":{"x":28718.416275731586,"y":30243.471550294922},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"bf0ce014-7dd3-41c4-9135-e1cd4be76b8c","savedPayload":{"position":{"x":28718.416275731586,"y":30243.471550294922},"targetPosition":{"x":28281.024359391704,"y":30215.885012196104},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"5d9b2729-43fb-4e7e-aa4f-b8477c424e51"}}},{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"2f0daec9-d39c-4e27-a317-64841ad95f7f","savedPayload":{"position":{"x":28767.446630228354,"y":30540.33714747424},"targetPosition":{"x":28524.210247653158,"y":30378.348755211653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"2dca58ad-f77e-46a3-9477-9f312e9b4b88","savedPayload":{"position":{"x":28524.210247653158,"y":30378.348755211653},"targetPosition":{"x":28281.024359391704,"y":30215.885012196104},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"be19d91b-9337-4f84-96b3-f4e54ea12df5"}}}],"id":"901bc214-c02e-4db2-97cd-4e3d48d9d8b6","savedPayload":{"position":{"x":28281.024359391704,"y":30215.885012196104},"targetPosition":{"x":28003.730867262017,"y":30121.9627357361},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d7907b00-1721-4cba-a3fb-1d03435d2f4e","savedPayload":{"position":{"x":28003.730867262017,"y":30121.9627357361},"targetPosition":{"x":27450.123772879848,"y":29934.324575969917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5d4def57-b5b9-4453-88bb-8649aa561ccf","savedPayload":{"position":{"x":27450.601528424897,"y":29932.897979906265},"targetPosition":{"x":27066.43132315313,"y":30372.994534588033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta ETH/USDT","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"129a2d72-7da7-4d0f-b6fb-dd67b417e2ce","savedPayload":{"position":{"x":44071.61797125626,"y":29269.179122287296},"targetPosition":{"x":44017.22604407985,"y":29586.166432086655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"be016955-a815-46e2-ad93-229e29ba6fe7","savedPayload":{"position":{"x":44017.22604407985,"y":29586.166432086655},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"b2445bee-4612-463a-8539-8a4287f04dc4","savedPayload":{"position":{"x":45168.8488344655,"y":29458.147255078686},"targetPosition":{"x":44565.86589926591,"y":29680.585441818144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"25a649fb-8e63-4f40-8d1e-abbe81f27a21","savedPayload":{"position":{"x":44565.86589926591,"y":29680.585441818144},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"ace79b58-2dff-4428-8ab4-34083d431926","savedPayload":{"position":{"x":43962.84190684965,"y":29903.09502706654},"targetPosition":{"x":43551.90647643782,"y":30397.266512500442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"cf1a9199-de8c-4e65-b9f3-8f8f18cc5e20","savedPayload":{"position":{"x":43551.90647643782,"y":30397.266512500442},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"76c5a60c-e224-4efd-b892-200348ce9839","savedPayload":{"position":{"x":44848.06740265459,"y":30126.954299288456},"targetPosition":{"x":44617.64305938516,"y":30351.280902615003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"62633038-8daf-4fbc-bff2-066f390cc6e4","savedPayload":{"position":{"x":44617.64305938516,"y":30351.280902615003},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"ad80bd54-c94e-4ab3-b216-1d7dfe035a0d","savedPayload":{"position":{"x":45624.60027321795,"y":30924.208529781736},"targetPosition":{"x":45005.977709353945,"y":30749.876937252106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"05d90026-e634-4d6d-aa47-f9f7e69be4f3","savedPayload":{"position":{"x":45005.977709353945,"y":30749.876937252106},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"be91d55c-5bd9-426c-8d0c-6428194ede0f","savedPayload":{"position":{"x":44387.27143213535,"y":30575.564915785017},"targetPosition":{"x":43764.266809147426,"y":30733.667438768847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"977ac2ab-e863-4a59-a172-a4582e03ab08","savedPayload":{"position":{"x":43764.266809147426,"y":30733.667438768847},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"e161547c-e2dc-406b-babc-1df441c507f9","savedPayload":{"position":{"x":44971.81020849867,"y":31276.620146946167},"targetPosition":{"x":44653.49004123155,"y":31322.55467880252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"10f503d4-9a44-430d-850b-a7183e765fbc","savedPayload":{"position":{"x":44653.49004123155,"y":31322.55467880252},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"18a8afce-0c64-4729-8fa7-e0a5e8923c62","savedPayload":{"position":{"x":45131.12724051729,"y":32377.93040356555},"targetPosition":{"x":44733.22183307022,"y":31873.22574960204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"96c854e9-d75e-4df3-8ddb-6b21ff2002b8","savedPayload":{"position":{"x":44733.22183307022,"y":31873.22574960204},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"4f0b8965-931f-4b16-a81b-1f4d4cd3c4a5","savedPayload":{"position":{"x":44335.23861007668,"y":31368.479242651025},"targetPosition":{"x":43738.24708451567,"y":31130.308446359704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"15f9f816-9348-4292-8147-9d809d54c73c","savedPayload":{"position":{"x":43738.24708451567,"y":31130.308446359704},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"1ef56d26-e451-4487-be2a-c948849fa7b7","savedPayload":{"position":{"x":44395.607564219106,"y":32279.346270225502},"targetPosition":{"x":44111.06304717549,"y":32129.543698932317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"331734ae-fd9f-4abc-b291-9c4fb9d3345d","savedPayload":{"position":{"x":44111.06304717549,"y":32129.543698932317},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"0f475fd8-e749-4708-ad2f-7dcf45b2c54e","savedPayload":{"position":{"x":43876.85035087776,"y":33264.29116567567},"targetPosition":{"x":43851.71485258066,"y":32622.075786304355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"e0b33e47-b62e-46df-ad42-5abc4a982629"}}},"id":"68b988e9-0d00-403c-a3c1-91870e5c9b06","savedPayload":{"position":{"x":43851.71485258066,"y":32622.075786304355},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"629c7f4f-8745-4cba-b3ab-7148efa4132b","savedPayload":{"position":{"x":43826.594538981204,"y":31979.768305805377},"targetPosition":{"x":43483.775300077,"y":31436.11470464454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"4a5bd014-001e-4c7f-bf43-81c0d6c9bca5","savedPayload":{"position":{"x":43483.775300077,"y":31436.11470464454},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"34254e38-722e-4ce3-aa5b-b42200e4c2f1","savedPayload":{"position":{"x":27603.543910357937,"y":30143.519412714744},"targetPosition":{"x":27066.43132315313,"y":30372.994534588033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Masters ETH/BTC","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Bitfinex ETH/BTC","id":"50117ff4-5827-41ae-8a92-ef29219c90f8","savedPayload":{"position":{"x":28266.537834114475,"y":29073.377355876426},"targetPosition":{"x":28142.867451521393,"y":29338.446647854984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"18559fd4-20e1-4dcc-a27f-a6a982690446","savedPayload":{"position":{"x":28142.867451521393,"y":29338.446647854984},"targetPosition":{"x":28019.29079701134,"y":29603.688963937915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"2de3643e-4bec-4a5c-9e81-7085df29fc8d","savedPayload":{"position":{"x":28019.29079701134,"y":29603.688963937915},"targetPosition":{"x":27895.678230358488,"y":29869.358418965116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"731d51ba-bcb7-44d9-95be-fff96f5709d9","savedPayload":{"position":{"x":27895.678230358488,"y":29869.358418965116},"targetPosition":{"x":27648.865618657772,"y":30399.373320026294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex ETH/BTC","id":"f6d71588-2d64-44f3-8531-ec29dd82671b","savedPayload":{"position":{"x":28610.971670311163,"y":29313.561769127085},"targetPosition":{"x":28453.505697438988,"y":29560.2393484955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"79d502f7-2624-460c-a70a-4fee122bcedd","savedPayload":{"position":{"x":28453.505697438988,"y":29560.2393484955},"targetPosition":{"x":28296.108908109873,"y":29806.950462580397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex ETH/BTC","id":"5eed9eaa-cbb4-47e0-b68f-9389cf5e18fd","savedPayload":{"position":{"x":29074.199887198192,"y":29402.723900573368},"targetPosition":{"x":28685.255058358565,"y":29604.733269802582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"12b99ce1-817d-4b25-b8d0-b13cb0c5cdc3","savedPayload":{"position":{"x":28685.255058358565,"y":29604.733269802582},"targetPosition":{"x":28296.108908109873,"y":29806.950462580397},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"a38bb4aa-664a-4e75-8984-23ea3a446a11","savedPayload":{"position":{"x":28296.108908109873,"y":29806.950462580397},"targetPosition":{"x":28080.025184785503,"y":30004.81065483329},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"055fe505-62b6-4aca-a1e3-dbd4eb5539d8","savedPayload":{"position":{"x":28080.025184785503,"y":30004.81065483329},"targetPosition":{"x":27648.865618657772,"y":30399.373320026294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex ETH/BTC","id":"de54a159-8e2b-4f44-a076-eb728fd51b7c","savedPayload":{"position":{"x":28953.646003264414,"y":29765.43377629761},"targetPosition":{"x":28713.61398542738,"y":29932.875464734007},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"49ad21e3-d59a-44bd-870b-f7b814d16899","savedPayload":{"position":{"x":28713.61398542738,"y":29932.875464734007},"targetPosition":{"x":28473.651598577773,"y":30100.338374749925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex ETH/BTC","id":"1593f9c4-e4fb-49c8-a016-4d7dbd41fea3","savedPayload":{"position":{"x":29347.396283796814,"y":30024.84490652097},"targetPosition":{"x":28910.674851617143,"y":30062.557002577516},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"a1b9458b-c598-4a53-ba2b-982f85178a2b","savedPayload":{"position":{"x":28910.674851617143,"y":30062.557002577516},"targetPosition":{"x":28473.651598577773,"y":30100.338374749925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"332ffe7e-348f-4698-87d2-613f5bd6b82d","savedPayload":{"position":{"x":28473.651598577773,"y":30100.338374749925},"targetPosition":{"x":28198.19248956802,"y":30200.216525573058},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"7860adee-58ad-4539-a424-993de66776e9","savedPayload":{"position":{"x":28198.19248956802,"y":30200.216525573058},"targetPosition":{"x":27648.865618657772,"y":30399.373320026294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex ETH/BTC","id":"0416410d-8d95-477f-9ac3-0b5d61bed457","savedPayload":{"position":{"x":29096.894458586772,"y":30313.086318196023},"targetPosition":{"x":28811.076151141322,"y":30375.829037430412},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"8821214a-8ec6-4f0e-9f3b-bcb275c2b80a","savedPayload":{"position":{"x":28811.076151141322,"y":30375.829037430412},"targetPosition":{"x":28525.343523831565,"y":30438.605909874546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex ETH/BTC","id":"62e17c50-7650-4a8d-a87c-9f7facb5848a","savedPayload":{"position":{"x":29361.62038104608,"y":30703.090888484767},"targetPosition":{"x":28943.57665155624,"y":30570.889348686826},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"df4db1c9-311c-4f42-8d71-60163f3b0827","savedPayload":{"position":{"x":28943.57665155624,"y":30570.889348686826},"targetPosition":{"x":28525.343523831565,"y":30438.605909874546},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"2a231206-1551-4b77-a971-b1b50dcd301a","savedPayload":{"position":{"x":28525.343523831565,"y":30438.605909874546},"targetPosition":{"x":28232.589515314274,"y":30425.55782384343},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"64a848a8-c044-4744-92cd-b91a2b103e2e","savedPayload":{"position":{"x":28232.589515314274,"y":30425.55782384343},"targetPosition":{"x":27648.865618657772,"y":30399.373320026294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex ETH/BTC","id":"b5fe9cbb-e204-44e3-86c7-52ce8c748d38","savedPayload":{"position":{"x":29019.43043206343,"y":30874.397845272484},"targetPosition":{"x":28731.35695570822,"y":30823.017500100992},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"174705d2-badb-4d28-a5b4-6b771f288d67","savedPayload":{"position":{"x":28731.35695570822,"y":30823.017500100992},"targetPosition":{"x":28443.27974122032,"y":30771.542322878937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex ETH/BTC","id":"9aea925f-0130-4059-a291-4681824e87bc","savedPayload":{"position":{"x":29114.10766501715,"y":31336.036554050846},"targetPosition":{"x":28778.797925316103,"y":31053.928167206977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"e9019a99-7f97-4a41-a056-f53802ab0ed6","savedPayload":{"position":{"x":28778.797925316103,"y":31053.928167206977},"targetPosition":{"x":28443.27974122032,"y":30771.542322878937},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"24a74ca5-f2e2-4284-a1f4-217d5785031f","savedPayload":{"position":{"x":28443.27974122032,"y":30771.542322878937},"targetPosition":{"x":28177.970256003515,"y":30647.200404281943},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"1085202f-1986-4178-82b7-4fdaacd9f3cf","savedPayload":{"position":{"x":28177.970256003515,"y":30647.200404281943},"targetPosition":{"x":27648.865618657772,"y":30399.373320026294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"e684dce6-c664-4f66-9b61-4dfae70cbfc7","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"25899e8b-541e-4695-8e5a-23b7b99d67de","savedPayload":{"position":{"x":28437.391629021866,"y":31264.02705239199},"targetPosition":{"x":28240.11509001831,"y":31047.769224887234},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"e4abab4b-77d9-4f6b-a67a-e88793393292","savedPayload":{"position":{"x":28240.11509001831,"y":31047.769224887234},"targetPosition":{"x":28042.730519203767,"y":30831.19485932917},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"fbd776e4-c7d5-4a05-bfe7-b0e57650d9c9","savedPayload":{"position":{"x":28042.730519203767,"y":30831.19485932917},"targetPosition":{"x":27648.865618657772,"y":30399.373320026294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Resistances & Supports","bot":{"type":"Indicator Bot Instance","name":"Resistances & Supports","code":" {\n \"repo\": \"\"\n }","processes":[{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"62e9fb0f-2a8d-41f0-b9bb-65f8e5c45060","savedPayload":{"position":{"x":28448.104205523236,"y":31943.617131360512},"targetPosition":{"x":28197.399585814135,"y":31584.277302629984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"0714980b-450a-406a-a906-a0619657a716","savedPayload":{"position":{"x":28197.399585814135,"y":31584.277302629984},"targetPosition":{"x":27946.481626313467,"y":31224.6991276558},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"5d9b2729-43fb-4e7e-aa4f-b8477c424e51"}}},{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"e2bcd8e9-e2b6-4ea5-8760-6bd3b003ef55","savedPayload":{"position":{"x":27996.29307114326,"y":31807.616334955455},"targetPosition":{"x":27971.23722232811,"y":31516.150633949008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"8d8d5d84-bcc7-448c-8cbb-45dd22edf4df","savedPayload":{"position":{"x":27971.23722232811,"y":31516.150633949008},"targetPosition":{"x":27946.481626313467,"y":31224.6991276558},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"be19d91b-9337-4f84-96b3-f4e54ea12df5"}}}],"id":"ca12f66a-4077-4166-8b82-985d56ff53f1","savedPayload":{"position":{"x":27946.481626313467,"y":31224.6991276558},"targetPosition":{"x":27847.30373260846,"y":30949.322486480673},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9576e102-5d54-406d-927f-113e8907bed8","savedPayload":{"position":{"x":27847.30373260846,"y":30949.322486480673},"targetPosition":{"x":27648.865618657772,"y":30399.373320026294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0ce8e216-c94a-4f06-a5bd-fc4c71b0993f","savedPayload":{"position":{"x":27649.837261003908,"y":30399.303838468695},"targetPosition":{"x":27066.43132315313,"y":30372.994534588033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta ETH/BTC","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"1db55743-d8cf-4148-8138-13f7f9c6e1c3","savedPayload":{"position":{"x":44071.61797125626,"y":29269.179122287296},"targetPosition":{"x":44017.22604407985,"y":29586.166432086655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"418b68c6-1744-4dda-960d-02c4b4b89911","savedPayload":{"position":{"x":44017.22604407985,"y":29586.166432086655},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"01cc3596-f77b-40be-b843-ec0dd516bfd5","savedPayload":{"position":{"x":45168.8488344655,"y":29458.147255078686},"targetPosition":{"x":44565.86589926591,"y":29680.585441818144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"025f5d29-3551-45d2-a94c-1241797d07fc","savedPayload":{"position":{"x":44565.86589926591,"y":29680.585441818144},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"ad426091-93d4-4503-9241-47371da296fc","savedPayload":{"position":{"x":43962.84190684965,"y":29903.09502706654},"targetPosition":{"x":43551.90647643782,"y":30397.266512500442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"29c47721-e0f4-4058-be4c-4f2ca16fe5a0","savedPayload":{"position":{"x":43551.90647643782,"y":30397.266512500442},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"53459639-6f7b-459d-8bc2-aa4897854f5e","savedPayload":{"position":{"x":44848.06740265459,"y":30126.954299288456},"targetPosition":{"x":44617.64305938516,"y":30351.280902615003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"2a4e01a4-355d-40fb-b64f-4704594dfad9","savedPayload":{"position":{"x":44617.64305938516,"y":30351.280902615003},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"0c19e4e8-52bd-46f2-ac15-4fb8092a16ed","savedPayload":{"position":{"x":45624.60027321795,"y":30924.208529781736},"targetPosition":{"x":45005.977709353945,"y":30749.876937252106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"051dd032-45ee-48a0-bc4d-17bcb0d2064e","savedPayload":{"position":{"x":45005.977709353945,"y":30749.876937252106},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"51097d3b-ceb2-45be-b78d-16356d5d538b","savedPayload":{"position":{"x":44387.27143213535,"y":30575.564915785017},"targetPosition":{"x":43764.266809147426,"y":30733.667438768847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ac5235e1-17c1-4484-912d-90ed19311357","savedPayload":{"position":{"x":43764.266809147426,"y":30733.667438768847},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"39f1eead-148e-4569-bbd5-4df788ddab6c","savedPayload":{"position":{"x":44971.81020849867,"y":31276.620146946167},"targetPosition":{"x":44653.49004123155,"y":31322.55467880252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"d43486cc-2776-4d7a-a550-c62b41a584c1","savedPayload":{"position":{"x":44653.49004123155,"y":31322.55467880252},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"00877ec3-5d7f-4d18-afe9-11d0425cfe16","savedPayload":{"position":{"x":45131.12724051729,"y":32377.93040356555},"targetPosition":{"x":44733.22183307022,"y":31873.22574960204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"12fd638f-f6ba-4609-9229-5b3dc4e9445a","savedPayload":{"position":{"x":44733.22183307022,"y":31873.22574960204},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"743d175a-790b-46b6-aa41-2418dd45c10c","savedPayload":{"position":{"x":44335.23861007668,"y":31368.479242651025},"targetPosition":{"x":43738.24708451567,"y":31130.308446359704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"526fbfc5-d200-476a-87d5-ca312c95f852","savedPayload":{"position":{"x":43738.24708451567,"y":31130.308446359704},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"7537dfc4-6e4f-4d0b-890c-bd34916cf803","savedPayload":{"position":{"x":44395.607564219106,"y":32279.346270225502},"targetPosition":{"x":44111.06304717549,"y":32129.543698932317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"603519ba-5d9c-49ff-998d-f0d57d559b65","savedPayload":{"position":{"x":44111.06304717549,"y":32129.543698932317},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"84d522c1-3168-4b00-8cc6-b00ce14717a5","savedPayload":{"position":{"x":43876.85035087776,"y":33264.29116567567},"targetPosition":{"x":43851.71485258066,"y":32622.075786304355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/BTC","id":"8fe121d7-85a5-4782-807c-f43cfa34144f"}}},"id":"eb269018-9849-4612-9c1c-b3e52edd30e5","savedPayload":{"position":{"x":43851.71485258066,"y":32622.075786304355},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"b8ed3aa8-01bb-4b32-a4e6-a7d0de686ca8","savedPayload":{"position":{"x":43826.594538981204,"y":31979.768305805377},"targetPosition":{"x":43483.775300077,"y":31436.11470464454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"8cfe1b63-44bc-4780-bc62-6abca0801a9b","savedPayload":{"position":{"x":43483.775300077,"y":31436.11470464454},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"ba0bcd45-3b52-466b-a341-9a821e104fff","savedPayload":{"position":{"x":27580.451980504084,"y":30650.12467668889},"targetPosition":{"x":27066.43132315313,"y":30372.994534588033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}}],"id":"1c92171b-9688-4fd0-873e-50cb2368bacc","savedPayload":{"position":{"x":27066.895228407135,"y":30372.295572533367},"targetPosition":{"x":26594.57388499951,"y":30715.633401753315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Bitfinex","id":"3ff59cad-42ae-4527-b060-4585cc4e7e1a"}}},{"type":"Exchange Tasks","name":"Bittrex","taskManagers":[{"type":"Task Manager","name":"Masters BTC/USDT","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"1780ffc2-9497-4b59-8746-b58647de344d","savedPayload":{"position":{"x":43548.31869375691,"y":28832.74871320079},"targetPosition":{"x":43468.23581599018,"y":29144.465623065378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b440afe2-4129-4553-8adc-a2bbbf88354d"}}},"id":"78724982-b4f7-4169-97e8-ab975b48af8b","savedPayload":{"position":{"x":43468.23581599018,"y":29144.465623065378},"targetPosition":{"x":43388.21989927531,"y":29456.2064563822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"1ccae54e-0e19-4d81-9a1c-89fac0bb54d1","savedPayload":{"position":{"x":43388.21989927531,"y":29456.2064563822},"targetPosition":{"x":43308.31846626916,"y":29768.295924463717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"744d1265-e4fa-405e-b212-bfd77ef47a8c","savedPayload":{"position":{"x":43308.31846626916,"y":29768.295924463717},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"fe3e381f-4daa-4dcc-a394-ce8ede3491da","savedPayload":{"position":{"x":44044.56919550187,"y":29070.680669232206},"targetPosition":{"x":43907.75296865664,"y":29362.11317316699},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b440afe2-4129-4553-8adc-a2bbbf88354d"}}},"id":"1875a771-aa34-4fcd-8689-fedec632f3e8","savedPayload":{"position":{"x":43907.75296865664,"y":29362.11317316699},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"52725b95-3c18-4336-9d91-a9bd3523b5e4","savedPayload":{"position":{"x":44562.98482395708,"y":29102.272964030177},"targetPosition":{"x":44167.05042758576,"y":29377.81676557684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b440afe2-4129-4553-8adc-a2bbbf88354d"}}},"id":"ec2c968d-a264-42ac-9c16-f6e1ba2c9f86","savedPayload":{"position":{"x":44167.05042758576,"y":29377.81676557684},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"d6a7f78b-50c3-473e-913f-dc5979717566","savedPayload":{"position":{"x":43770.940957510276,"y":29653.49333725624},"targetPosition":{"x":43563.27921096938,"y":29899.761189375113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4d8d8d67-a482-4efd-91d3-6bed03b2a129","savedPayload":{"position":{"x":43563.27921096938,"y":29899.761189375113},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"8d13bcb3-1d71-44fc-b106-aa7ad989c197","savedPayload":{"position":{"x":44529.43831259792,"y":29591.160241515347},"targetPosition":{"x":44279.57761586809,"y":29794.164895509643},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b440afe2-4129-4553-8adc-a2bbbf88354d"}}},"id":"5fe33480-1ab7-48c8-9174-166f52e23a9f","savedPayload":{"position":{"x":44279.57761586809,"y":29794.164895509643},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"0b8fe802-636f-4106-9d5d-a4d569e9d862","savedPayload":{"position":{"x":44982.702734016326,"y":29844.505580086603},"targetPosition":{"x":44506.37336418851,"y":29920.77047196001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b440afe2-4129-4553-8adc-a2bbbf88354d"}}},"id":"eed453d2-0db6-41a7-8425-e8881faf7754","savedPayload":{"position":{"x":44506.37336418851,"y":29920.77047196001},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"811cebe6-b3e1-4d73-b824-5dedafaa1ceb","savedPayload":{"position":{"x":44029.76414901768,"y":29997.129510062663},"targetPosition":{"x":43735.659869568226,"y":30128.724866806584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"68efd7db-7c12-4670-819c-d2a9b38476cc","savedPayload":{"position":{"x":43735.659869568226,"y":30128.724866806584},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"5b43f48a-37a4-4e78-b781-f2bcb1270703","savedPayload":{"position":{"x":44740.19992947904,"y":30269.709710790212},"targetPosition":{"x":44426.92346740986,"y":30344.087153351575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b440afe2-4129-4553-8adc-a2bbbf88354d"}}},"id":"c7d4d0a3-b5ea-4e56-8e02-24978c918b24","savedPayload":{"position":{"x":44426.92346740986,"y":30344.087153351575},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"40125ac5-4844-478e-b09f-8d536ba012f8","savedPayload":{"position":{"x":45038.495695074605,"y":30694.038844894512},"targetPosition":{"x":44576.2033062764,"y":30556.27191701111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b440afe2-4129-4553-8adc-a2bbbf88354d"}}},"id":"0ffa5337-58d2-41e6-a67a-6cc1de9bfb36","savedPayload":{"position":{"x":44576.2033062764,"y":30556.27191701111},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"edabce4c-368d-4db3-85cc-93d7e323eda3","savedPayload":{"position":{"x":44113.681364955875,"y":30418.40946263666},"targetPosition":{"x":43791.5644814685,"y":30409.41652660318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e24efdb7-b189-4bcf-94e4-d2e6b00fb490","savedPayload":{"position":{"x":43791.5644814685,"y":30409.41652660318},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"ca94dced-1aaf-48a5-b360-23a63c3f58e0","savedPayload":{"position":{"x":44634.8713858913,"y":30972.647789916467},"targetPosition":{"x":44320.40783090555,"y":30903.87226015812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b440afe2-4129-4553-8adc-a2bbbf88354d"}}},"id":"c789be90-68a4-4de4-8acf-0891da769545","savedPayload":{"position":{"x":44320.40783090555,"y":30903.87226015812},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"6553c2e9-1a33-47e3-ac8b-f912629b1dc8","savedPayload":{"position":{"x":44719.2935084921,"y":31484.844997094602},"targetPosition":{"x":44362.66897516384,"y":31160.069974503385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b440afe2-4129-4553-8adc-a2bbbf88354d"}}},"id":"e9443366-4644-447f-80c6-9b561e377749","savedPayload":{"position":{"x":44362.66897516384,"y":31160.069974503385},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"bca3a4a6-0167-46b0-909a-42e3b0d52c32","savedPayload":{"position":{"x":44005.998383917504,"y":30835.000935669093},"targetPosition":{"x":43719.93790732384,"y":30686.895169007028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"b951cd56-ad6e-4637-8213-2d67b75cc178","savedPayload":{"position":{"x":43719.93790732384,"y":30686.895169007028},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"8ad42918-1e6c-4574-a934-8bc1e2f1af9d","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b440afe2-4129-4553-8adc-a2bbbf88354d"}}},"id":"74b493aa-0410-4341-94cd-30f5d659a45b","savedPayload":{"position":{"x":43921.27648533482,"y":31421.11867904632},"targetPosition":{"x":43727.95100474325,"y":31163.712277360213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"d2d5a601-cb43-4805-8a80-3bed91890f9b","savedPayload":{"position":{"x":43727.95100474325,"y":31163.712277360213},"targetPosition":{"x":43534.654105285146,"y":30905.972976263627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b1b8a635-8d4d-4b85-a11d-029a19ce01a9","savedPayload":{"position":{"x":43534.654105285146,"y":30905.972976263627},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b2ebfc85-39b4-4aec-9f3b-9207ec539654","savedPayload":{"position":{"x":27336.733513555173,"y":30247.136153520674},"targetPosition":{"x":27169.91762845011,"y":30806.78914268873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta BTC/USDT","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"5d7cfc15-53d5-44bf-8b36-b67f0e839b07","savedPayload":{"position":{"x":44071.61797125626,"y":29269.179122287296},"targetPosition":{"x":44017.22604407985,"y":29586.166432086655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b440afe2-4129-4553-8adc-a2bbbf88354d"}}},"id":"0a340ef9-87a4-42ca-b346-e3af8949d6b1","savedPayload":{"position":{"x":44017.22604407985,"y":29586.166432086655},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"9eae1d26-ed64-424f-9b9d-591fca16ea9c","savedPayload":{"position":{"x":45168.8488344655,"y":29458.147255078686},"targetPosition":{"x":44565.86589926591,"y":29680.585441818144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b440afe2-4129-4553-8adc-a2bbbf88354d"}}},"id":"3b111b00-71a0-4a3d-a2e3-fe1289b003fb","savedPayload":{"position":{"x":44565.86589926591,"y":29680.585441818144},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"92f31b57-1fcf-4a18-97b8-bc0163debb80","savedPayload":{"position":{"x":43962.84190684965,"y":29903.09502706654},"targetPosition":{"x":43551.90647643782,"y":30397.266512500442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f69f6ff8-da33-4294-b6f3-8608ef661195","savedPayload":{"position":{"x":43551.90647643782,"y":30397.266512500442},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"f34d31b2-10c6-48e8-9cb9-3843c2172f72","savedPayload":{"position":{"x":44848.06740265459,"y":30126.954299288456},"targetPosition":{"x":44617.64305938516,"y":30351.280902615003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b440afe2-4129-4553-8adc-a2bbbf88354d"}}},"id":"a222cedb-2b25-481c-8b56-281830a9791e","savedPayload":{"position":{"x":44617.64305938516,"y":30351.280902615003},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"644c5bb1-bcab-4640-b0b1-c3a928e4895d","savedPayload":{"position":{"x":45624.60027321795,"y":30924.208529781736},"targetPosition":{"x":45005.977709353945,"y":30749.876937252106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b440afe2-4129-4553-8adc-a2bbbf88354d"}}},"id":"d7839f8f-507d-48b9-8cc2-d11ea23b5775","savedPayload":{"position":{"x":45005.977709353945,"y":30749.876937252106},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"66f908cb-8ec0-4168-a86e-64414c5a4b39","savedPayload":{"position":{"x":44387.27143213535,"y":30575.564915785017},"targetPosition":{"x":43764.266809147426,"y":30733.667438768847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"935b8203-b3fe-4702-a8c4-b3057a0b2931","savedPayload":{"position":{"x":43764.266809147426,"y":30733.667438768847},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"03cc27d3-6dbf-4b0f-aa10-9fd28bd1cd2c","savedPayload":{"position":{"x":44971.81020849867,"y":31276.620146946167},"targetPosition":{"x":44653.49004123155,"y":31322.55467880252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b440afe2-4129-4553-8adc-a2bbbf88354d"}}},"id":"b0963b2a-1449-4fab-9ee8-c9a2a7bd970b","savedPayload":{"position":{"x":44653.49004123155,"y":31322.55467880252},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"4f232f2d-442b-46d0-ad5a-e55d74e0e85e","savedPayload":{"position":{"x":45131.12724051729,"y":32377.93040356555},"targetPosition":{"x":44733.22183307022,"y":31873.22574960204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b440afe2-4129-4553-8adc-a2bbbf88354d"}}},"id":"b610643f-7906-4f00-8b97-03e02951e62e","savedPayload":{"position":{"x":44733.22183307022,"y":31873.22574960204},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"5efa3434-d591-454b-83b1-0b984e1fd7fd","savedPayload":{"position":{"x":44335.23861007668,"y":31368.479242651025},"targetPosition":{"x":43738.24708451567,"y":31130.308446359704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8be84f08-7bb3-457d-99e4-6f3edeb5e7f5","savedPayload":{"position":{"x":43738.24708451567,"y":31130.308446359704},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"ca1490db-84d2-4fa1-8d35-26f4ca150acb","savedPayload":{"position":{"x":44395.607564219106,"y":32279.346270225502},"targetPosition":{"x":44111.06304717549,"y":32129.543698932317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b440afe2-4129-4553-8adc-a2bbbf88354d"}}},"id":"f01ea2f9-fc48-48d9-b8dd-0928299d21d8","savedPayload":{"position":{"x":44111.06304717549,"y":32129.543698932317},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"2ffb2888-7537-424c-80c3-3d63837acf89","savedPayload":{"position":{"x":43876.85035087776,"y":33264.29116567567},"targetPosition":{"x":43851.71485258066,"y":32622.075786304355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b440afe2-4129-4553-8adc-a2bbbf88354d"}}},"id":"b691f60a-ba80-4e03-80a7-dd15b47ae8dc","savedPayload":{"position":{"x":43851.71485258066,"y":32622.075786304355},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"7fe3c8eb-1b9b-4bca-b587-a9282bd3a66c","savedPayload":{"position":{"x":43826.594538981204,"y":31979.768305805377},"targetPosition":{"x":43483.775300077,"y":31436.11470464454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"2468e18b-6fcd-40ed-844f-93839b72d8de","savedPayload":{"position":{"x":43483.775300077,"y":31436.11470464454},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"ccac75f5-7494-476f-845c-6f8d63833073","savedPayload":{"position":{"x":27436.59908556819,"y":30284.245049110013},"targetPosition":{"x":27169.91762845011,"y":30806.78914268873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Masters ETH/USDT","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"0d3c2573-be18-46f9-9b2d-6294c05189f6","savedPayload":{"position":{"x":43548.31869375691,"y":28832.74871320079},"targetPosition":{"x":43468.23581599018,"y":29144.465623065378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169"}}},"id":"d7d2b16a-3788-446f-9e97-6d02deb9c779","savedPayload":{"position":{"x":43468.23581599018,"y":29144.465623065378},"targetPosition":{"x":43388.21989927531,"y":29456.2064563822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"6b00725d-2ba3-4e82-897e-1425113d0644","savedPayload":{"position":{"x":43388.21989927531,"y":29456.2064563822},"targetPosition":{"x":43308.31846626916,"y":29768.295924463717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"762665b6-051f-4c6a-84ad-42d6444d646a","savedPayload":{"position":{"x":43308.31846626916,"y":29768.295924463717},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"ca122ad9-f298-4ccc-b198-e1bf392b6b08","savedPayload":{"position":{"x":44044.56919550187,"y":29070.680669232206},"targetPosition":{"x":43907.75296865664,"y":29362.11317316699},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169"}}},"id":"6b45c72e-5fdd-4fd9-b8e4-e23ac1931a27","savedPayload":{"position":{"x":43907.75296865664,"y":29362.11317316699},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"8c6fd1b3-60d9-4d59-a188-04f0aeb3d79a","savedPayload":{"position":{"x":44562.98482395708,"y":29102.272964030177},"targetPosition":{"x":44167.05042758576,"y":29377.81676557684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169"}}},"id":"4585ac98-8e47-4737-8490-44bd3b418f88","savedPayload":{"position":{"x":44167.05042758576,"y":29377.81676557684},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"7d3f8430-4547-42a8-9ea6-b4f68d134cb8","savedPayload":{"position":{"x":43770.940957510276,"y":29653.49333725624},"targetPosition":{"x":43563.27921096938,"y":29899.761189375113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"166da843-d1eb-4884-ac54-9b862a7955af","savedPayload":{"position":{"x":43563.27921096938,"y":29899.761189375113},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"67d7994d-3837-4cb6-9fcd-3a23be1629bc","savedPayload":{"position":{"x":44529.43831259792,"y":29591.160241515347},"targetPosition":{"x":44279.57761586809,"y":29794.164895509643},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169"}}},"id":"77324268-6770-40e1-b489-e1f1cb596306","savedPayload":{"position":{"x":44279.57761586809,"y":29794.164895509643},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"ee1864b5-884d-483b-948e-bc77c1c40e81","savedPayload":{"position":{"x":44982.702734016326,"y":29844.505580086603},"targetPosition":{"x":44506.37336418851,"y":29920.77047196001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169"}}},"id":"7aefba11-29fc-491a-8873-bb290607c6fb","savedPayload":{"position":{"x":44506.37336418851,"y":29920.77047196001},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"ad92f396-26cf-4819-80db-2b6b9173e2aa","savedPayload":{"position":{"x":44029.76414901768,"y":29997.129510062663},"targetPosition":{"x":43735.659869568226,"y":30128.724866806584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"ecca1319-dee0-4255-b937-7a8912168d3a","savedPayload":{"position":{"x":43735.659869568226,"y":30128.724866806584},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"97e03a59-eb6a-4d74-bbbe-041c0a59a082","savedPayload":{"position":{"x":44740.19992947904,"y":30269.709710790212},"targetPosition":{"x":44426.92346740986,"y":30344.087153351575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169"}}},"id":"525bfe91-4cd5-417d-af87-ef0bad7a2723","savedPayload":{"position":{"x":44426.92346740986,"y":30344.087153351575},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"2e2d5587-eb3e-4e74-9697-7d59af924dda","savedPayload":{"position":{"x":45038.495695074605,"y":30694.038844894512},"targetPosition":{"x":44576.2033062764,"y":30556.27191701111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169"}}},"id":"3a5a047f-0447-483d-b829-596e038a425e","savedPayload":{"position":{"x":44576.2033062764,"y":30556.27191701111},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"80b7a974-7447-4e21-810c-d1afd0f3c7bf","savedPayload":{"position":{"x":44113.681364955875,"y":30418.40946263666},"targetPosition":{"x":43791.5644814685,"y":30409.41652660318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"201a9eb5-adb6-486f-b1ba-fe37a9b2d2b8","savedPayload":{"position":{"x":43791.5644814685,"y":30409.41652660318},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"10ba053c-5b27-44b7-946b-3738aea3fabe","savedPayload":{"position":{"x":44634.8713858913,"y":30972.647789916467},"targetPosition":{"x":44320.40783090555,"y":30903.87226015812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169"}}},"id":"f981334a-9924-42ba-88ff-71f3ffe4e7ea","savedPayload":{"position":{"x":44320.40783090555,"y":30903.87226015812},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"9ba0d558-53e5-4c72-bbd2-a82a8be5e645","savedPayload":{"position":{"x":44719.2935084921,"y":31484.844997094602},"targetPosition":{"x":44362.66897516384,"y":31160.069974503385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169"}}},"id":"c7c9fb6c-9c99-4323-b992-48d61bdd05b9","savedPayload":{"position":{"x":44362.66897516384,"y":31160.069974503385},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"1bf8ceec-2ed6-4e20-befc-e42a1320c628","savedPayload":{"position":{"x":44005.998383917504,"y":30835.000935669093},"targetPosition":{"x":43719.93790732384,"y":30686.895169007028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"022550e6-2f47-4ae6-b869-6925b055b1b0","savedPayload":{"position":{"x":43719.93790732384,"y":30686.895169007028},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"c311291b-be71-4ddf-b3ca-c7ad0db629b8","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169"}}},"id":"6b112555-2b45-435b-85ac-bfb0846f5bd1","savedPayload":{"position":{"x":43921.27648533482,"y":31421.11867904632},"targetPosition":{"x":43727.95100474325,"y":31163.712277360213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"66d18637-b8bb-47d7-90e1-f53d11c42bce","savedPayload":{"position":{"x":43727.95100474325,"y":31163.712277360213},"targetPosition":{"x":43534.654105285146,"y":30905.972976263627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0c8c0337-0b48-4ff1-b89a-4b024857e692","savedPayload":{"position":{"x":43534.654105285146,"y":30905.972976263627},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a44da86d-f9f1-423a-bf65-71dd87b220fd","savedPayload":{"position":{"x":27524.135640774082,"y":30336.911673486436},"targetPosition":{"x":27169.91762845011,"y":30806.78914268873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta ETH/USDT","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"d7d79f54-895c-434d-a522-8e0ebeced0a8","savedPayload":{"position":{"x":44071.61797125626,"y":29269.179122287296},"targetPosition":{"x":44017.22604407985,"y":29586.166432086655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169"}}},"id":"da78c160-943c-44da-bf0f-f82d5aa34c20","savedPayload":{"position":{"x":44017.22604407985,"y":29586.166432086655},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"5ef0ee88-e430-4176-84e5-545d4622d905","savedPayload":{"position":{"x":45168.8488344655,"y":29458.147255078686},"targetPosition":{"x":44565.86589926591,"y":29680.585441818144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169"}}},"id":"87d93468-abdc-40c5-b4bd-05e7610b3a7d","savedPayload":{"position":{"x":44565.86589926591,"y":29680.585441818144},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"020c682e-780f-4155-98b4-dbe22948c5c8","savedPayload":{"position":{"x":43962.84190684965,"y":29903.09502706654},"targetPosition":{"x":43551.90647643782,"y":30397.266512500442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"24be2d00-a311-4ab4-a711-58d5a2a5b3c9","savedPayload":{"position":{"x":43551.90647643782,"y":30397.266512500442},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"0bcec4c6-1ecb-46cb-b35a-5370021a6225","savedPayload":{"position":{"x":44848.06740265459,"y":30126.954299288456},"targetPosition":{"x":44617.64305938516,"y":30351.280902615003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169"}}},"id":"4c95b09d-97cf-4439-a9d0-2c17865629d7","savedPayload":{"position":{"x":44617.64305938516,"y":30351.280902615003},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"aa2d4112-c453-423d-9ba2-baaa69353f5a","savedPayload":{"position":{"x":45624.60027321795,"y":30924.208529781736},"targetPosition":{"x":45005.977709353945,"y":30749.876937252106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169"}}},"id":"ad08aed2-5dd1-443f-8d92-e478567dbf9e","savedPayload":{"position":{"x":45005.977709353945,"y":30749.876937252106},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"e9b6ac93-3c42-4597-bb0c-834edaf236db","savedPayload":{"position":{"x":44387.27143213535,"y":30575.564915785017},"targetPosition":{"x":43764.266809147426,"y":30733.667438768847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1ac2ac7c-ea96-45b8-94d2-b941812984eb","savedPayload":{"position":{"x":43764.266809147426,"y":30733.667438768847},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"40bdee78-7b62-4767-a507-47a39c5c8462","savedPayload":{"position":{"x":44971.81020849867,"y":31276.620146946167},"targetPosition":{"x":44653.49004123155,"y":31322.55467880252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169"}}},"id":"cc454707-4d47-4290-8fb5-98bb9363261d","savedPayload":{"position":{"x":44653.49004123155,"y":31322.55467880252},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"304f5b85-9123-49a7-848c-bb6f1d7bc21c","savedPayload":{"position":{"x":45131.12724051729,"y":32377.93040356555},"targetPosition":{"x":44733.22183307022,"y":31873.22574960204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169"}}},"id":"7a53c781-7260-45c4-b704-045695cca697","savedPayload":{"position":{"x":44733.22183307022,"y":31873.22574960204},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"0a70b7da-0052-4c51-a368-813241eb5967","savedPayload":{"position":{"x":44335.23861007668,"y":31368.479242651025},"targetPosition":{"x":43738.24708451567,"y":31130.308446359704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f207b7ff-f081-407c-b0d1-c9273bbedbb3","savedPayload":{"position":{"x":43738.24708451567,"y":31130.308446359704},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"938d0408-006f-4462-8b9d-956ece5b4f35","savedPayload":{"position":{"x":44395.607564219106,"y":32279.346270225502},"targetPosition":{"x":44111.06304717549,"y":32129.543698932317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169"}}},"id":"31e9065b-19d9-420b-a623-76b49f57b992","savedPayload":{"position":{"x":44111.06304717549,"y":32129.543698932317},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"fdd79b69-2d87-4b90-942d-d9f8ca61e59f","savedPayload":{"position":{"x":43876.85035087776,"y":33264.29116567567},"targetPosition":{"x":43851.71485258066,"y":32622.075786304355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETH/USDT","id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169"}}},"id":"fe260333-20da-4b41-a325-9b6068104c12","savedPayload":{"position":{"x":43851.71485258066,"y":32622.075786304355},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"e25ef81e-999b-404f-96e9-29394aa0b922","savedPayload":{"position":{"x":43826.594538981204,"y":31979.768305805377},"targetPosition":{"x":43483.775300077,"y":31436.11470464454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"d8e53940-691b-4655-ac04-5f30dba0fcff","savedPayload":{"position":{"x":43483.775300077,"y":31436.11470464454},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"3052cb2f-8f05-479f-9ab2-e1bcf766690c","savedPayload":{"position":{"x":27598.839949171783,"y":30408.01684943987},"targetPosition":{"x":27169.91762845011,"y":30806.78914268873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Masters ETC/USDT","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"c58d83d9-e726-44bd-bf1c-908a8680a7c2","savedPayload":{"position":{"x":43548.31869375691,"y":28832.74871320079},"targetPosition":{"x":43468.23581599018,"y":29144.465623065378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETC/USDT","id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a"}}},"id":"170b47b4-8498-4fa1-a846-de854efe1248","savedPayload":{"position":{"x":43468.23581599018,"y":29144.465623065378},"targetPosition":{"x":43388.21989927531,"y":29456.2064563822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"c588e92b-e776-4cad-b323-1cfb60238b1d","savedPayload":{"position":{"x":43388.21989927531,"y":29456.2064563822},"targetPosition":{"x":43308.31846626916,"y":29768.295924463717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0a4d92a3-4047-4dbc-a117-fc55aa03b15f","savedPayload":{"position":{"x":43308.31846626916,"y":29768.295924463717},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"72b908a9-8bbb-442c-8bcb-b82f46f71e9d","savedPayload":{"position":{"x":44044.56919550187,"y":29070.680669232206},"targetPosition":{"x":43907.75296865664,"y":29362.11317316699},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETC/USDT","id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a"}}},"id":"14ca6008-4a73-40e4-a27b-9d16f803bc18","savedPayload":{"position":{"x":43907.75296865664,"y":29362.11317316699},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"ca95745d-51b0-4f24-b4ac-7341ae6590bd","savedPayload":{"position":{"x":44562.98482395708,"y":29102.272964030177},"targetPosition":{"x":44167.05042758576,"y":29377.81676557684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETC/USDT","id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a"}}},"id":"24f63194-e98b-47fd-8d19-35bfce206ddc","savedPayload":{"position":{"x":44167.05042758576,"y":29377.81676557684},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"14bbc9d2-f550-46f8-ae18-47441ac40c48","savedPayload":{"position":{"x":43770.940957510276,"y":29653.49333725624},"targetPosition":{"x":43563.27921096938,"y":29899.761189375113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9ba4da1d-cb3e-4bef-9c7e-d351ca170085","savedPayload":{"position":{"x":43563.27921096938,"y":29899.761189375113},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"058ebb2a-23a7-44a7-9079-aba0695bf29c","savedPayload":{"position":{"x":44529.43831259792,"y":29591.160241515347},"targetPosition":{"x":44279.57761586809,"y":29794.164895509643},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETC/USDT","id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a"}}},"id":"e9b90d9e-c833-4e05-88e9-c8fbf92655e6","savedPayload":{"position":{"x":44279.57761586809,"y":29794.164895509643},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"7aa1d596-d3b8-4f0d-b72d-a2e9e12e7895","savedPayload":{"position":{"x":44982.702734016326,"y":29844.505580086603},"targetPosition":{"x":44506.37336418851,"y":29920.77047196001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETC/USDT","id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a"}}},"id":"b79f07eb-34ff-40ac-8f01-240dc272b188","savedPayload":{"position":{"x":44506.37336418851,"y":29920.77047196001},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"23c6aec5-e34f-4e79-8a25-0c071b73932a","savedPayload":{"position":{"x":44029.76414901768,"y":29997.129510062663},"targetPosition":{"x":43735.659869568226,"y":30128.724866806584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"7bab3eb3-d628-4456-bb56-e7217d51c46b","savedPayload":{"position":{"x":43735.659869568226,"y":30128.724866806584},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"981e7ba9-4ed8-45bc-8ca7-1e66f81b7fef","savedPayload":{"position":{"x":44740.19992947904,"y":30269.709710790212},"targetPosition":{"x":44426.92346740986,"y":30344.087153351575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETC/USDT","id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a"}}},"id":"e6a94599-797c-4374-8c03-6201ec008a7c","savedPayload":{"position":{"x":44426.92346740986,"y":30344.087153351575},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"6df6f93d-a65e-4a7a-b346-df884c9d073c","savedPayload":{"position":{"x":45038.495695074605,"y":30694.038844894512},"targetPosition":{"x":44576.2033062764,"y":30556.27191701111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETC/USDT","id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a"}}},"id":"2466c41b-b5c6-4e4c-a61a-250743ddaafc","savedPayload":{"position":{"x":44576.2033062764,"y":30556.27191701111},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"39ff2548-239f-4f3a-b744-fa1fa8054475","savedPayload":{"position":{"x":44113.681364955875,"y":30418.40946263666},"targetPosition":{"x":43791.5644814685,"y":30409.41652660318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"34f032ae-fb9b-4f91-ba19-81bde9de7690","savedPayload":{"position":{"x":43791.5644814685,"y":30409.41652660318},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"4162b1f6-14b6-4b36-9e65-b8aae3708e42","savedPayload":{"position":{"x":44634.8713858913,"y":30972.647789916467},"targetPosition":{"x":44320.40783090555,"y":30903.87226015812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETC/USDT","id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a"}}},"id":"e031ced9-9d8e-42e7-af8f-fcb362ea2b2c","savedPayload":{"position":{"x":44320.40783090555,"y":30903.87226015812},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"366e37cd-4d9e-42d4-a47e-c4e9d3f80a51","savedPayload":{"position":{"x":44719.2935084921,"y":31484.844997094602},"targetPosition":{"x":44362.66897516384,"y":31160.069974503385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETC/USDT","id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a"}}},"id":"724d3f32-6c01-45e7-a2f7-266facbd6c0c","savedPayload":{"position":{"x":44362.66897516384,"y":31160.069974503385},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"b668417c-6fec-4ff3-bf5b-467a7132067a","savedPayload":{"position":{"x":44005.998383917504,"y":30835.000935669093},"targetPosition":{"x":43719.93790732384,"y":30686.895169007028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"5f5a79b4-a4fd-4f7e-8ade-b98a5254141b","savedPayload":{"position":{"x":43719.93790732384,"y":30686.895169007028},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"5f02845e-07a9-470d-97f1-7e494b994a19","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETC/USDT","id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a"}}},"id":"90495a06-0356-4087-9b94-913dc372a524","savedPayload":{"position":{"x":43921.27648533482,"y":31421.11867904632},"targetPosition":{"x":43727.95100474325,"y":31163.712277360213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"3989d822-d8da-4470-b6e8-e65e5d2495e5","savedPayload":{"position":{"x":43727.95100474325,"y":31163.712277360213},"targetPosition":{"x":43534.654105285146,"y":30905.972976263627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5a954690-212d-4757-9f8d-a9e9382f1cfa","savedPayload":{"position":{"x":43534.654105285146,"y":30905.972976263627},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4d9988c5-9561-4095-b5d5-d380ed5053be","savedPayload":{"position":{"x":27659.665441772144,"y":30483.09102239702},"targetPosition":{"x":27169.91762845011,"y":30806.78914268873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta ETC/USDT","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"025ba380-b703-4f30-93f4-6ea9fac945e0","savedPayload":{"position":{"x":44071.61797125626,"y":29269.179122287296},"targetPosition":{"x":44017.22604407985,"y":29586.166432086655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETC/USDT","id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a"}}},"id":"f1f18bae-aeba-492a-94be-2fbedf8828ab","savedPayload":{"position":{"x":44017.22604407985,"y":29586.166432086655},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"b989cacf-861c-4116-9e2c-09b12d718577","savedPayload":{"position":{"x":45168.8488344655,"y":29458.147255078686},"targetPosition":{"x":44565.86589926591,"y":29680.585441818144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETC/USDT","id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a"}}},"id":"45d5a2e7-ede8-4149-b5cf-00c71a279947","savedPayload":{"position":{"x":44565.86589926591,"y":29680.585441818144},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"dddff72f-fbfe-4c8a-acf7-366a720be30e","savedPayload":{"position":{"x":43962.84190684965,"y":29903.09502706654},"targetPosition":{"x":43551.90647643782,"y":30397.266512500442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"60cebf7f-188d-43f3-8b2f-5a5662b23cb3","savedPayload":{"position":{"x":43551.90647643782,"y":30397.266512500442},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"a5fb6fc4-22fd-4d8b-bc79-642a718e422f","savedPayload":{"position":{"x":44848.06740265459,"y":30126.954299288456},"targetPosition":{"x":44617.64305938516,"y":30351.280902615003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETC/USDT","id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a"}}},"id":"23a4ad86-373a-4773-a9c7-e00cf5b0c771","savedPayload":{"position":{"x":44617.64305938516,"y":30351.280902615003},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"6e3e7b90-844f-4f0b-93ac-0379003805ab","savedPayload":{"position":{"x":45624.60027321795,"y":30924.208529781736},"targetPosition":{"x":45005.977709353945,"y":30749.876937252106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETC/USDT","id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a"}}},"id":"aec415cd-bd58-4e17-a5fa-bd5b745f347c","savedPayload":{"position":{"x":45005.977709353945,"y":30749.876937252106},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"6fd90788-463f-4e03-880d-85d7d1d94f94","savedPayload":{"position":{"x":44387.27143213535,"y":30575.564915785017},"targetPosition":{"x":43764.266809147426,"y":30733.667438768847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d34e4f6c-967d-4c0e-aa67-ed35edfcbc38","savedPayload":{"position":{"x":43764.266809147426,"y":30733.667438768847},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"c28eff88-5dec-496c-87c6-3e199975d4b9","savedPayload":{"position":{"x":44971.81020849867,"y":31276.620146946167},"targetPosition":{"x":44653.49004123155,"y":31322.55467880252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETC/USDT","id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a"}}},"id":"45e15534-46cd-48e0-930e-63d70ef4127e","savedPayload":{"position":{"x":44653.49004123155,"y":31322.55467880252},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"1ddc576c-2d64-4194-affe-aa4a1820b444","savedPayload":{"position":{"x":45131.12724051729,"y":32377.93040356555},"targetPosition":{"x":44733.22183307022,"y":31873.22574960204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETC/USDT","id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a"}}},"id":"134445dc-e571-409e-b3b0-daa336b604fa","savedPayload":{"position":{"x":44733.22183307022,"y":31873.22574960204},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"3c7aa2b6-4d51-4949-81b8-d2073a10191a","savedPayload":{"position":{"x":44335.23861007668,"y":31368.479242651025},"targetPosition":{"x":43738.24708451567,"y":31130.308446359704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7db9555d-7c99-47f9-be8a-8cae3d3767fc","savedPayload":{"position":{"x":43738.24708451567,"y":31130.308446359704},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"6d1d623e-5ea3-4090-a135-e2aac5f86d97","savedPayload":{"position":{"x":44395.607564219106,"y":32279.346270225502},"targetPosition":{"x":44111.06304717549,"y":32129.543698932317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETC/USDT","id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a"}}},"id":"ec924b16-0651-4d83-90f4-b1c588849a04","savedPayload":{"position":{"x":44111.06304717549,"y":32129.543698932317},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"0336c9b2-7dd3-468a-834d-d852ebee78c3","savedPayload":{"position":{"x":43876.85035087776,"y":33264.29116567567},"targetPosition":{"x":43851.71485258066,"y":32622.075786304355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ETC/USDT","id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a"}}},"id":"b9362dc9-fbc6-4b5e-8350-b30824fb014b","savedPayload":{"position":{"x":43851.71485258066,"y":32622.075786304355},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"8569fb96-25dc-41a6-8cf4-be3ae96d5db3","savedPayload":{"position":{"x":43826.594538981204,"y":31979.768305805377},"targetPosition":{"x":43483.775300077,"y":31436.11470464454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"e07db293-97d1-4933-a69c-26bf708f9914","savedPayload":{"position":{"x":43483.775300077,"y":31436.11470464454},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"f3be536e-29ba-4fdb-ab69-625066e088cc","savedPayload":{"position":{"x":27703.617616299798,"y":30569.15309686862},"targetPosition":{"x":27169.91762845011,"y":30806.78914268873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Masters XMR/USDT","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"cf0875ea-99f1-4ecf-bb31-6a4fe7457b04","savedPayload":{"position":{"x":43548.31869375691,"y":28832.74871320079},"targetPosition":{"x":43468.23581599018,"y":29144.465623065378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XMR/USDT","id":"35020f56-8c2c-4a78-8547-41f39c8d282f"}}},"id":"9f1d8597-7561-4872-b5a2-57fd631211d0","savedPayload":{"position":{"x":43468.23581599018,"y":29144.465623065378},"targetPosition":{"x":43388.21989927531,"y":29456.2064563822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"f6a62df2-55e1-4d8e-bb0f-5ba10671f99c","savedPayload":{"position":{"x":43388.21989927531,"y":29456.2064563822},"targetPosition":{"x":43308.31846626916,"y":29768.295924463717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"fd36c2f6-c039-441a-ac5e-c9aeeb0f72ef","savedPayload":{"position":{"x":43308.31846626916,"y":29768.295924463717},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"9b9fae17-55fe-4174-8dd7-d21d3e0016d6","savedPayload":{"position":{"x":44044.56919550187,"y":29070.680669232206},"targetPosition":{"x":43907.75296865664,"y":29362.11317316699},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XMR/USDT","id":"35020f56-8c2c-4a78-8547-41f39c8d282f"}}},"id":"99881a7e-5c7c-4e36-b567-980a21bc8d29","savedPayload":{"position":{"x":43907.75296865664,"y":29362.11317316699},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"5522dc17-15de-49c4-93fb-75dd6760218b","savedPayload":{"position":{"x":44562.98482395708,"y":29102.272964030177},"targetPosition":{"x":44167.05042758576,"y":29377.81676557684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XMR/USDT","id":"35020f56-8c2c-4a78-8547-41f39c8d282f"}}},"id":"e21bcf91-cfe4-4a11-b852-dded0029b6c8","savedPayload":{"position":{"x":44167.05042758576,"y":29377.81676557684},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"f605b267-f125-4bf6-a1e1-a4dbc1e4cd18","savedPayload":{"position":{"x":43770.940957510276,"y":29653.49333725624},"targetPosition":{"x":43563.27921096938,"y":29899.761189375113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"759268f4-0c9a-4ad8-aa12-af734a7c6e0c","savedPayload":{"position":{"x":43563.27921096938,"y":29899.761189375113},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"366cbc23-d94e-4e14-ba23-7c240d45e16b","savedPayload":{"position":{"x":44529.43831259792,"y":29591.160241515347},"targetPosition":{"x":44279.57761586809,"y":29794.164895509643},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XMR/USDT","id":"35020f56-8c2c-4a78-8547-41f39c8d282f"}}},"id":"5d871a29-dfdd-4551-b4e0-96697640134b","savedPayload":{"position":{"x":44279.57761586809,"y":29794.164895509643},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"bb6af2e1-d9ac-4493-994e-58c2d23c5e9d","savedPayload":{"position":{"x":44982.702734016326,"y":29844.505580086603},"targetPosition":{"x":44506.37336418851,"y":29920.77047196001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XMR/USDT","id":"35020f56-8c2c-4a78-8547-41f39c8d282f"}}},"id":"5a0d3eef-ca65-4664-a79e-9a781b5f6419","savedPayload":{"position":{"x":44506.37336418851,"y":29920.77047196001},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"69a7a777-e886-4a25-b65b-80975199574d","savedPayload":{"position":{"x":44029.76414901768,"y":29997.129510062663},"targetPosition":{"x":43735.659869568226,"y":30128.724866806584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"a86c7e64-dd2c-4134-9683-b08fe7bc4ef1","savedPayload":{"position":{"x":43735.659869568226,"y":30128.724866806584},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"24c65565-9e52-4315-a3ab-e4c1066ffeb5","savedPayload":{"position":{"x":44740.19992947904,"y":30269.709710790212},"targetPosition":{"x":44426.92346740986,"y":30344.087153351575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XMR/USDT","id":"35020f56-8c2c-4a78-8547-41f39c8d282f"}}},"id":"357693cc-f802-4b11-91de-f0bf10fc4409","savedPayload":{"position":{"x":44426.92346740986,"y":30344.087153351575},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"39937831-881c-4ea5-a6a3-f57aaf453571","savedPayload":{"position":{"x":45038.495695074605,"y":30694.038844894512},"targetPosition":{"x":44576.2033062764,"y":30556.27191701111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XMR/USDT","id":"35020f56-8c2c-4a78-8547-41f39c8d282f"}}},"id":"0dcf09ed-a665-4745-bbfd-9c14145eb8b2","savedPayload":{"position":{"x":44576.2033062764,"y":30556.27191701111},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"c34a2d76-0f8a-430e-88f1-94d8a1cebe59","savedPayload":{"position":{"x":44113.681364955875,"y":30418.40946263666},"targetPosition":{"x":43791.5644814685,"y":30409.41652660318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"45c900d5-2377-4ab3-9988-5c8f7ee691d5","savedPayload":{"position":{"x":43791.5644814685,"y":30409.41652660318},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"2013f596-31cc-4740-a502-1cd6f0e04456","savedPayload":{"position":{"x":44634.8713858913,"y":30972.647789916467},"targetPosition":{"x":44320.40783090555,"y":30903.87226015812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XMR/USDT","id":"35020f56-8c2c-4a78-8547-41f39c8d282f"}}},"id":"612c38a1-3cc9-4f06-8280-de854a42afc9","savedPayload":{"position":{"x":44320.40783090555,"y":30903.87226015812},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"f4588fbc-ae92-4436-ab29-7d3d6863aacf","savedPayload":{"position":{"x":44719.2935084921,"y":31484.844997094602},"targetPosition":{"x":44362.66897516384,"y":31160.069974503385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XMR/USDT","id":"35020f56-8c2c-4a78-8547-41f39c8d282f"}}},"id":"4ae360e1-ad1d-483d-a860-93ca9b406082","savedPayload":{"position":{"x":44362.66897516384,"y":31160.069974503385},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"ae647bc3-e2ef-4c2e-98e2-da17c9fb9cbe","savedPayload":{"position":{"x":44005.998383917504,"y":30835.000935669093},"targetPosition":{"x":43719.93790732384,"y":30686.895169007028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"08212a06-df05-46dc-b52e-1cf9e3cd9796","savedPayload":{"position":{"x":43719.93790732384,"y":30686.895169007028},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"5a576cf0-357a-4f7c-8169-faa3170bbf6e","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XMR/USDT","id":"35020f56-8c2c-4a78-8547-41f39c8d282f"}}},"id":"6afbded2-5188-4ebd-8e9e-8925efd6537c","savedPayload":{"position":{"x":43921.27648533482,"y":31421.11867904632},"targetPosition":{"x":43727.95100474325,"y":31163.712277360213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"41ca621b-eedf-4f89-93bd-ad43edb52b10","savedPayload":{"position":{"x":43727.95100474325,"y":31163.712277360213},"targetPosition":{"x":43534.654105285146,"y":30905.972976263627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3d9d8ab1-b610-44f6-9006-1e5e88806410","savedPayload":{"position":{"x":43534.654105285146,"y":30905.972976263627},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c7c41387-fa73-447f-a6ad-401b2575c8c9","savedPayload":{"position":{"x":27742.116089518207,"y":30659.277263609907},"targetPosition":{"x":27169.91762845011,"y":30806.78914268873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta XMR/USDT","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"14a76a2b-8bfc-40e8-8112-2de4534219cb","savedPayload":{"position":{"x":44071.61797125626,"y":29269.179122287296},"targetPosition":{"x":44017.22604407985,"y":29586.166432086655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XMR/USDT","id":"35020f56-8c2c-4a78-8547-41f39c8d282f"}}},"id":"be6572cf-1efe-4076-9307-89928932ce9f","savedPayload":{"position":{"x":44017.22604407985,"y":29586.166432086655},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"7bcadb98-4130-4ca4-a4a9-8e6ba155ef6a","savedPayload":{"position":{"x":45168.8488344655,"y":29458.147255078686},"targetPosition":{"x":44565.86589926591,"y":29680.585441818144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XMR/USDT","id":"35020f56-8c2c-4a78-8547-41f39c8d282f"}}},"id":"d71c8bcf-f380-4b96-8fc4-d9749abc4c45","savedPayload":{"position":{"x":44565.86589926591,"y":29680.585441818144},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"b2691a67-fa75-4c7f-b314-edaf999bb088","savedPayload":{"position":{"x":43962.84190684965,"y":29903.09502706654},"targetPosition":{"x":43551.90647643782,"y":30397.266512500442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"61324113-a531-48dd-946a-7eb7f4f65eca","savedPayload":{"position":{"x":43551.90647643782,"y":30397.266512500442},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"fe4f88dd-dd64-450e-b1e8-5ef897ea7173","savedPayload":{"position":{"x":44848.06740265459,"y":30126.954299288456},"targetPosition":{"x":44617.64305938516,"y":30351.280902615003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XMR/USDT","id":"35020f56-8c2c-4a78-8547-41f39c8d282f"}}},"id":"1226f4ea-61ff-44bd-8546-302df2b40757","savedPayload":{"position":{"x":44617.64305938516,"y":30351.280902615003},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"29e42435-d176-47db-9062-18ca54409d54","savedPayload":{"position":{"x":45624.60027321795,"y":30924.208529781736},"targetPosition":{"x":45005.977709353945,"y":30749.876937252106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XMR/USDT","id":"35020f56-8c2c-4a78-8547-41f39c8d282f"}}},"id":"4196b08f-05ce-4704-84e1-86297a8be448","savedPayload":{"position":{"x":45005.977709353945,"y":30749.876937252106},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"15652946-eec6-415f-9acc-37b877b22da2","savedPayload":{"position":{"x":44387.27143213535,"y":30575.564915785017},"targetPosition":{"x":43764.266809147426,"y":30733.667438768847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7c1d8af5-40ae-499a-a68f-0f21901896ee","savedPayload":{"position":{"x":43764.266809147426,"y":30733.667438768847},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"7f5cc470-25c3-4710-b81c-d81fd57f7e80","savedPayload":{"position":{"x":44971.81020849867,"y":31276.620146946167},"targetPosition":{"x":44653.49004123155,"y":31322.55467880252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XMR/USDT","id":"35020f56-8c2c-4a78-8547-41f39c8d282f"}}},"id":"7d1fbcc7-9f53-475f-ba50-6c10ddb83111","savedPayload":{"position":{"x":44653.49004123155,"y":31322.55467880252},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"61d19b22-8de5-4ee1-a506-33bad521ded9","savedPayload":{"position":{"x":45131.12724051729,"y":32377.93040356555},"targetPosition":{"x":44733.22183307022,"y":31873.22574960204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XMR/USDT","id":"35020f56-8c2c-4a78-8547-41f39c8d282f"}}},"id":"d3423493-e353-4a4f-b6f8-f49ee93e06f5","savedPayload":{"position":{"x":44733.22183307022,"y":31873.22574960204},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"ce933ff2-1ca7-4a9a-b076-6da8bbbddef2","savedPayload":{"position":{"x":44335.23861007668,"y":31368.479242651025},"targetPosition":{"x":43738.24708451567,"y":31130.308446359704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a0674f62-871b-4691-8eb3-ccc36a53bf78","savedPayload":{"position":{"x":43738.24708451567,"y":31130.308446359704},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"3a8b262a-76f4-4189-bbd8-4b5338ea77f1","savedPayload":{"position":{"x":44395.607564219106,"y":32279.346270225502},"targetPosition":{"x":44111.06304717549,"y":32129.543698932317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XMR/USDT","id":"35020f56-8c2c-4a78-8547-41f39c8d282f"}}},"id":"e921a693-c9f8-43b4-8979-3fb6d7b3d4e6","savedPayload":{"position":{"x":44111.06304717549,"y":32129.543698932317},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"42ac2388-88ce-482b-b484-3a2875884cbf","savedPayload":{"position":{"x":43876.85035087776,"y":33264.29116567567},"targetPosition":{"x":43851.71485258066,"y":32622.075786304355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XMR/USDT","id":"35020f56-8c2c-4a78-8547-41f39c8d282f"}}},"id":"8bdbc7f3-ac56-44a5-ad4e-912f81915941","savedPayload":{"position":{"x":43851.71485258066,"y":32622.075786304355},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"bc92ab3b-8953-4288-af06-49c9ea252e19","savedPayload":{"position":{"x":43826.594538981204,"y":31979.768305805377},"targetPosition":{"x":43483.775300077,"y":31436.11470464454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"99ae7e6e-bfe6-490b-8cf7-d367a99786bb","savedPayload":{"position":{"x":43483.775300077,"y":31436.11470464454},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"5b453440-ee6d-4c7d-bfd3-520909f12236","savedPayload":{"position":{"x":27751.719963756594,"y":30755.576735351522},"targetPosition":{"x":27169.91762845011,"y":30806.78914268873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Masters DASH/USDT","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"c8a0985e-f5ee-410b-a0b6-3929bfe369b2","savedPayload":{"position":{"x":43548.31869375691,"y":28832.74871320079},"targetPosition":{"x":43468.23581599018,"y":29144.465623065378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"DASH/USDT","id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6"}}},"id":"7f1095af-0eef-4e85-b9c7-a90cef828408","savedPayload":{"position":{"x":43468.23581599018,"y":29144.465623065378},"targetPosition":{"x":43388.21989927531,"y":29456.2064563822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"8380480f-439e-4df7-8135-200632eeea95","savedPayload":{"position":{"x":43388.21989927531,"y":29456.2064563822},"targetPosition":{"x":43308.31846626916,"y":29768.295924463717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0822a626-f1c4-4cce-aba9-7288ca409e9f","savedPayload":{"position":{"x":43308.31846626916,"y":29768.295924463717},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"64c4635b-1943-4bb2-94f3-93440e681dec","savedPayload":{"position":{"x":44044.56919550187,"y":29070.680669232206},"targetPosition":{"x":43907.75296865664,"y":29362.11317316699},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"DASH/USDT","id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6"}}},"id":"d4389fa4-3dee-4ba0-8177-8fd6e0517a3a","savedPayload":{"position":{"x":43907.75296865664,"y":29362.11317316699},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"b3c73af5-e089-40ba-b2ec-63cb94158b05","savedPayload":{"position":{"x":44562.98482395708,"y":29102.272964030177},"targetPosition":{"x":44167.05042758576,"y":29377.81676557684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"DASH/USDT","id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6"}}},"id":"22432eb6-f17c-4612-8027-8eaaafe0819d","savedPayload":{"position":{"x":44167.05042758576,"y":29377.81676557684},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"e16016c1-04cd-4236-be4f-296a0fa36feb","savedPayload":{"position":{"x":43770.940957510276,"y":29653.49333725624},"targetPosition":{"x":43563.27921096938,"y":29899.761189375113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"814cc40d-64d9-4328-bf83-0dec099c799d","savedPayload":{"position":{"x":43563.27921096938,"y":29899.761189375113},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"d649f66b-3c75-4273-8f98-38cbd7b39a0c","savedPayload":{"position":{"x":44529.43831259792,"y":29591.160241515347},"targetPosition":{"x":44279.57761586809,"y":29794.164895509643},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"DASH/USDT","id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6"}}},"id":"7f09e9c4-5313-4286-a168-4eca46060fd1","savedPayload":{"position":{"x":44279.57761586809,"y":29794.164895509643},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"da3f54c1-d91e-4be9-9eca-ce575fdf85aa","savedPayload":{"position":{"x":44982.702734016326,"y":29844.505580086603},"targetPosition":{"x":44506.37336418851,"y":29920.77047196001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"DASH/USDT","id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6"}}},"id":"0ac6266d-deba-413a-aa0a-75a3ab4f7fc5","savedPayload":{"position":{"x":44506.37336418851,"y":29920.77047196001},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"8e4a4f84-eb9d-4149-bb46-53a475cc49ac","savedPayload":{"position":{"x":44029.76414901768,"y":29997.129510062663},"targetPosition":{"x":43735.659869568226,"y":30128.724866806584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"b64bd141-a26b-45b9-9810-ed07d01c240a","savedPayload":{"position":{"x":43735.659869568226,"y":30128.724866806584},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"3984c059-11b0-4d9f-b171-c5738b521b22","savedPayload":{"position":{"x":44740.19992947904,"y":30269.709710790212},"targetPosition":{"x":44426.92346740986,"y":30344.087153351575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"DASH/USDT","id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6"}}},"id":"d1effe71-6983-45cc-a6df-eed6a6a4df7f","savedPayload":{"position":{"x":44426.92346740986,"y":30344.087153351575},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"c7b46712-e4f8-4fde-a71a-ba76bbb20c0f","savedPayload":{"position":{"x":45038.495695074605,"y":30694.038844894512},"targetPosition":{"x":44576.2033062764,"y":30556.27191701111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"DASH/USDT","id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6"}}},"id":"060de361-efaa-4558-a310-d4f97fb9391f","savedPayload":{"position":{"x":44576.2033062764,"y":30556.27191701111},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"68334230-a83a-47c2-8262-819dcec0e326","savedPayload":{"position":{"x":44113.681364955875,"y":30418.40946263666},"targetPosition":{"x":43791.5644814685,"y":30409.41652660318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7eda1cb3-ea02-4574-8257-6a4280db29ae","savedPayload":{"position":{"x":43791.5644814685,"y":30409.41652660318},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"0bad29f3-3ecb-4560-952a-87f65cab7e06","savedPayload":{"position":{"x":44634.8713858913,"y":30972.647789916467},"targetPosition":{"x":44320.40783090555,"y":30903.87226015812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"DASH/USDT","id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6"}}},"id":"8bcdf9eb-83dc-42da-9684-9530e8ca1f4c","savedPayload":{"position":{"x":44320.40783090555,"y":30903.87226015812},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"5544267e-c8da-486f-8fd6-4e8cb262b913","savedPayload":{"position":{"x":44719.2935084921,"y":31484.844997094602},"targetPosition":{"x":44362.66897516384,"y":31160.069974503385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"DASH/USDT","id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6"}}},"id":"c68256e9-da21-4d3b-80bb-98a6873e7550","savedPayload":{"position":{"x":44362.66897516384,"y":31160.069974503385},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"bffb75fc-70b1-41d0-b79f-7d94b695511e","savedPayload":{"position":{"x":44005.998383917504,"y":30835.000935669093},"targetPosition":{"x":43719.93790732384,"y":30686.895169007028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"b54d896e-ab4b-483b-ae4b-5d7865abbb0e","savedPayload":{"position":{"x":43719.93790732384,"y":30686.895169007028},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"f25320d3-a70a-4774-b761-d51fb51513a1","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"DASH/USDT","id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6"}}},"id":"926b1a5e-b11c-40e6-bf93-8c0844f891f1","savedPayload":{"position":{"x":43921.27648533482,"y":31421.11867904632},"targetPosition":{"x":43727.95100474325,"y":31163.712277360213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"6b0a102c-9caf-480b-9da3-9d38b008026f","savedPayload":{"position":{"x":43727.95100474325,"y":31163.712277360213},"targetPosition":{"x":43534.654105285146,"y":30905.972976263627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8266f43f-5f9e-4c98-aec6-52346e109e44","savedPayload":{"position":{"x":43534.654105285146,"y":30905.972976263627},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7a1aac8f-31f5-4e0d-9ec7-099985188aac","savedPayload":{"position":{"x":27764.10161228859,"y":30850.40152049657},"targetPosition":{"x":27169.91762845011,"y":30806.78914268873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta DASH/USDT","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"4f1a0030-4c46-4a64-8bf5-a37b4b3b0c8e","savedPayload":{"position":{"x":44071.61797125626,"y":29269.179122287296},"targetPosition":{"x":44017.22604407985,"y":29586.166432086655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"DASH/USDT","id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6"}}},"id":"3a4c1381-dc99-4d05-9891-d09a4baaaa71","savedPayload":{"position":{"x":44017.22604407985,"y":29586.166432086655},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"b6aeca70-c12a-47be-b328-a9cc52bb189e","savedPayload":{"position":{"x":45168.8488344655,"y":29458.147255078686},"targetPosition":{"x":44565.86589926591,"y":29680.585441818144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"DASH/USDT","id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6"}}},"id":"3a88b3aa-fa27-459e-b5d8-bb81e37c78ce","savedPayload":{"position":{"x":44565.86589926591,"y":29680.585441818144},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"1b121eb3-8e23-4d29-9d5b-ce2e23de845b","savedPayload":{"position":{"x":43962.84190684965,"y":29903.09502706654},"targetPosition":{"x":43551.90647643782,"y":30397.266512500442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3178148e-80c7-4010-b223-cfa809e79085","savedPayload":{"position":{"x":43551.90647643782,"y":30397.266512500442},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"ff39dc4f-bba7-4ece-8136-135bd5504f6f","savedPayload":{"position":{"x":44848.06740265459,"y":30126.954299288456},"targetPosition":{"x":44617.64305938516,"y":30351.280902615003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"DASH/USDT","id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6"}}},"id":"74c04744-428f-4347-ba3d-29d525a2c0c3","savedPayload":{"position":{"x":44617.64305938516,"y":30351.280902615003},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"a00c99aa-9901-4761-a659-2c1fbb60abc7","savedPayload":{"position":{"x":45624.60027321795,"y":30924.208529781736},"targetPosition":{"x":45005.977709353945,"y":30749.876937252106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"DASH/USDT","id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6"}}},"id":"a084e6d7-ddb0-4c19-b139-274cd328676e","savedPayload":{"position":{"x":45005.977709353945,"y":30749.876937252106},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"c6874749-4e07-418c-ac8a-50de0f96cb25","savedPayload":{"position":{"x":44387.27143213535,"y":30575.564915785017},"targetPosition":{"x":43764.266809147426,"y":30733.667438768847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9de1ed93-677b-4d6e-8bac-d13b13986730","savedPayload":{"position":{"x":43764.266809147426,"y":30733.667438768847},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"fe61949e-953e-4f89-9b01-0aaf66bf1f19","savedPayload":{"position":{"x":44971.81020849867,"y":31276.620146946167},"targetPosition":{"x":44653.49004123155,"y":31322.55467880252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"DASH/USDT","id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6"}}},"id":"7a9e0818-0a24-4f92-90c2-18087551c0c9","savedPayload":{"position":{"x":44653.49004123155,"y":31322.55467880252},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"9aa61599-ed8c-4086-a5f5-8adaa0ba445b","savedPayload":{"position":{"x":45131.12724051729,"y":32377.93040356555},"targetPosition":{"x":44733.22183307022,"y":31873.22574960204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"DASH/USDT","id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6"}}},"id":"97c04735-265e-4e47-8a59-0e0b7837dc59","savedPayload":{"position":{"x":44733.22183307022,"y":31873.22574960204},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"957dce97-8654-4c87-a4bf-83c120b446c8","savedPayload":{"position":{"x":44335.23861007668,"y":31368.479242651025},"targetPosition":{"x":43738.24708451567,"y":31130.308446359704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"46f1fa5c-4e60-4b14-b724-64c0349332b2","savedPayload":{"position":{"x":43738.24708451567,"y":31130.308446359704},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"aeef6a4c-94e1-4344-bb8a-9cef500e18f9","savedPayload":{"position":{"x":44395.607564219106,"y":32279.346270225502},"targetPosition":{"x":44111.06304717549,"y":32129.543698932317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"DASH/USDT","id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6"}}},"id":"2db39c4c-936b-4300-9dd5-95bf01cfd914","savedPayload":{"position":{"x":44111.06304717549,"y":32129.543698932317},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"eef55164-6327-4bc4-a73f-f7de6b2ed02e","savedPayload":{"position":{"x":43876.85035087776,"y":33264.29116567567},"targetPosition":{"x":43851.71485258066,"y":32622.075786304355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"DASH/USDT","id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6"}}},"id":"4cea4838-796e-4731-a645-7b8d47c24e86","savedPayload":{"position":{"x":43851.71485258066,"y":32622.075786304355},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"bb9da7f7-5f46-4056-9d3d-c5ee379f322c","savedPayload":{"position":{"x":43826.594538981204,"y":31979.768305805377},"targetPosition":{"x":43483.775300077,"y":31436.11470464454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"695bb907-5426-4093-b0d5-0c681b6e594b","savedPayload":{"position":{"x":43483.775300077,"y":31436.11470464454},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"d378ba10-4f3c-409c-91a5-a9166cea95fb","savedPayload":{"position":{"x":27741.39893732504,"y":30946.464816949672},"targetPosition":{"x":27169.91762845011,"y":30806.78914268873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Masters ADA/USDT","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"781dce12-0bd3-4c41-8ecf-8384fbadff18","savedPayload":{"position":{"x":43548.31869375691,"y":28832.74871320079},"targetPosition":{"x":43468.23581599018,"y":29144.465623065378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ADA/USDT","id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f"}}},"id":"d821ec00-d960-4c3b-b8d7-7b207feb17ac","savedPayload":{"position":{"x":43468.23581599018,"y":29144.465623065378},"targetPosition":{"x":43388.21989927531,"y":29456.2064563822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"06bb55e9-afe6-4743-9e52-a77c8b4e445b","savedPayload":{"position":{"x":43388.21989927531,"y":29456.2064563822},"targetPosition":{"x":43308.31846626916,"y":29768.295924463717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"860b3c0d-46a1-499d-b1c3-48f74c96284f","savedPayload":{"position":{"x":43308.31846626916,"y":29768.295924463717},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"4c03a0e4-8828-407b-8b67-edcabd22a04f","savedPayload":{"position":{"x":44044.56919550187,"y":29070.680669232206},"targetPosition":{"x":43907.75296865664,"y":29362.11317316699},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ADA/USDT","id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f"}}},"id":"88fb11b7-6fb3-445a-b863-0a77ddfd01cd","savedPayload":{"position":{"x":43907.75296865664,"y":29362.11317316699},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"254a6e02-cc50-4567-9255-e44519679fd8","savedPayload":{"position":{"x":44562.98482395708,"y":29102.272964030177},"targetPosition":{"x":44167.05042758576,"y":29377.81676557684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ADA/USDT","id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f"}}},"id":"1ac61cc7-abfd-418d-8b4d-1943064d533c","savedPayload":{"position":{"x":44167.05042758576,"y":29377.81676557684},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"ae5abd54-3e77-48d1-a101-5667d2989ad2","savedPayload":{"position":{"x":43770.940957510276,"y":29653.49333725624},"targetPosition":{"x":43563.27921096938,"y":29899.761189375113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d500e5b9-bffa-4ae0-8559-b216d87cc25c","savedPayload":{"position":{"x":43563.27921096938,"y":29899.761189375113},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"98c1c0b3-8793-4c02-9f97-5ecf85c5c28e","savedPayload":{"position":{"x":44529.43831259792,"y":29591.160241515347},"targetPosition":{"x":44279.57761586809,"y":29794.164895509643},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ADA/USDT","id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f"}}},"id":"a7a7d685-65d5-49e7-94a8-9def1a429cd4","savedPayload":{"position":{"x":44279.57761586809,"y":29794.164895509643},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"7f8ae9ac-9806-4941-b0a7-79ef4f8e2dba","savedPayload":{"position":{"x":44982.702734016326,"y":29844.505580086603},"targetPosition":{"x":44506.37336418851,"y":29920.77047196001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ADA/USDT","id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f"}}},"id":"e5f090b4-ee69-4694-bf14-6a2b0503ffd9","savedPayload":{"position":{"x":44506.37336418851,"y":29920.77047196001},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"c522ac69-71a2-4953-bdda-d2860e5f2048","savedPayload":{"position":{"x":44029.76414901768,"y":29997.129510062663},"targetPosition":{"x":43735.659869568226,"y":30128.724866806584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"5c2a39c2-ea83-4ad4-ad9a-54d63e749ba0","savedPayload":{"position":{"x":43735.659869568226,"y":30128.724866806584},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"9585e8a2-f360-4280-8cc7-114ece0e25cd","savedPayload":{"position":{"x":44740.19992947904,"y":30269.709710790212},"targetPosition":{"x":44426.92346740986,"y":30344.087153351575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ADA/USDT","id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f"}}},"id":"be1571d5-3194-40c7-b4f6-faf70d933dd1","savedPayload":{"position":{"x":44426.92346740986,"y":30344.087153351575},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"c9b3f0ec-166a-4472-a983-bb9f57a27a5f","savedPayload":{"position":{"x":45038.495695074605,"y":30694.038844894512},"targetPosition":{"x":44576.2033062764,"y":30556.27191701111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ADA/USDT","id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f"}}},"id":"1bec1127-f24a-44ef-9ec4-396dba0d5d26","savedPayload":{"position":{"x":44576.2033062764,"y":30556.27191701111},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"d4dc95b4-2529-4560-b7a5-4db9790d0b00","savedPayload":{"position":{"x":44113.681364955875,"y":30418.40946263666},"targetPosition":{"x":43791.5644814685,"y":30409.41652660318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b5f2abdd-3afa-4e2f-b0e4-48e9d3e646e6","savedPayload":{"position":{"x":43791.5644814685,"y":30409.41652660318},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"ca83cf07-dd8f-4219-a1fd-a8a3e465b6cf","savedPayload":{"position":{"x":44634.8713858913,"y":30972.647789916467},"targetPosition":{"x":44320.40783090555,"y":30903.87226015812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ADA/USDT","id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f"}}},"id":"2647f4ed-6e0c-4191-acd6-bce594db3bd8","savedPayload":{"position":{"x":44320.40783090555,"y":30903.87226015812},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"2397c7f7-7fa8-467c-9090-9bea8dfad921","savedPayload":{"position":{"x":44719.2935084921,"y":31484.844997094602},"targetPosition":{"x":44362.66897516384,"y":31160.069974503385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ADA/USDT","id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f"}}},"id":"759b9f2e-2529-4939-9850-67f04877334a","savedPayload":{"position":{"x":44362.66897516384,"y":31160.069974503385},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"f8a9fa61-2f84-43e7-8662-b158321d0267","savedPayload":{"position":{"x":44005.998383917504,"y":30835.000935669093},"targetPosition":{"x":43719.93790732384,"y":30686.895169007028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"acc811dd-f022-4a2d-b00e-e88a307389eb","savedPayload":{"position":{"x":43719.93790732384,"y":30686.895169007028},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"71f12522-66b9-44e2-999b-c0bf626f3771","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ADA/USDT","id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f"}}},"id":"8928bc6a-d92d-4de2-a48e-eea1fb08d749","savedPayload":{"position":{"x":43921.27648533482,"y":31421.11867904632},"targetPosition":{"x":43727.95100474325,"y":31163.712277360213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"6f317d4c-6e42-4ca2-9bd0-1c56f312247e","savedPayload":{"position":{"x":43727.95100474325,"y":31163.712277360213},"targetPosition":{"x":43534.654105285146,"y":30905.972976263627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"95aa9d1c-e731-4940-bb5a-9c8e453d3029","savedPayload":{"position":{"x":43534.654105285146,"y":30905.972976263627},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"19c5216a-1a83-4a65-bbac-40ef523b2815","savedPayload":{"position":{"x":27714.8058407641,"y":31046.259317796532},"targetPosition":{"x":27169.91762845011,"y":30806.78914268873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta ADA/USDT","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"42b57b84-a05a-4a0e-8b20-a2616bb54617","savedPayload":{"position":{"x":44071.61797125626,"y":29269.179122287296},"targetPosition":{"x":44017.22604407985,"y":29586.166432086655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ADA/USDT","id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f"}}},"id":"c0886d1f-2854-4676-bc0f-dc255ad58ec5","savedPayload":{"position":{"x":44017.22604407985,"y":29586.166432086655},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"ae45ca42-a423-4344-9eb7-199d96c875e9","savedPayload":{"position":{"x":45168.8488344655,"y":29458.147255078686},"targetPosition":{"x":44565.86589926591,"y":29680.585441818144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ADA/USDT","id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f"}}},"id":"80fbfc98-f1e1-4c8a-b4eb-56a83c25169e","savedPayload":{"position":{"x":44565.86589926591,"y":29680.585441818144},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"6fb06467-4b41-4f24-ba36-25ea0430011b","savedPayload":{"position":{"x":43962.84190684965,"y":29903.09502706654},"targetPosition":{"x":43551.90647643782,"y":30397.266512500442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"28ab55e7-82e4-4988-8cf4-a8d3f3c5c9da","savedPayload":{"position":{"x":43551.90647643782,"y":30397.266512500442},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"5e6627a6-3691-4292-bed5-30eea1150d12","savedPayload":{"position":{"x":44848.06740265459,"y":30126.954299288456},"targetPosition":{"x":44617.64305938516,"y":30351.280902615003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ADA/USDT","id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f"}}},"id":"8f156abc-9611-481c-911c-1bd1f04a3ecd","savedPayload":{"position":{"x":44617.64305938516,"y":30351.280902615003},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"3e54e7b0-0e03-4eae-be83-451ef0683f4c","savedPayload":{"position":{"x":45624.60027321795,"y":30924.208529781736},"targetPosition":{"x":45005.977709353945,"y":30749.876937252106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ADA/USDT","id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f"}}},"id":"b01f0770-67ce-4ed1-959f-39e9a0b1e8bd","savedPayload":{"position":{"x":45005.977709353945,"y":30749.876937252106},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"28d19d19-4e16-476a-8401-757a30b4ad08","savedPayload":{"position":{"x":44387.27143213535,"y":30575.564915785017},"targetPosition":{"x":43764.266809147426,"y":30733.667438768847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c404411e-c8a7-4e60-b6c3-6b0a8c679f3a","savedPayload":{"position":{"x":43764.266809147426,"y":30733.667438768847},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"3cc26295-c60e-4299-828c-945a22063a89","savedPayload":{"position":{"x":44971.81020849867,"y":31276.620146946167},"targetPosition":{"x":44653.49004123155,"y":31322.55467880252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ADA/USDT","id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f"}}},"id":"18f65672-d3f9-4ed9-a8ad-00f36d0c5e21","savedPayload":{"position":{"x":44653.49004123155,"y":31322.55467880252},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"ab174bd3-4d33-4d84-b92e-e4a5dd9f7536","savedPayload":{"position":{"x":45131.12724051729,"y":32377.93040356555},"targetPosition":{"x":44733.22183307022,"y":31873.22574960204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ADA/USDT","id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f"}}},"id":"b5802ce8-3695-49ec-9d76-0976ab300c78","savedPayload":{"position":{"x":44733.22183307022,"y":31873.22574960204},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"993b3d65-01cc-4ca3-8152-f26e4cdd3b41","savedPayload":{"position":{"x":44335.23861007668,"y":31368.479242651025},"targetPosition":{"x":43738.24708451567,"y":31130.308446359704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a6b1404d-be10-458a-aa8f-8557b9937833","savedPayload":{"position":{"x":43738.24708451567,"y":31130.308446359704},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"4f3a52bd-1f80-4df8-978a-beb222915b6e","savedPayload":{"position":{"x":44395.607564219106,"y":32279.346270225502},"targetPosition":{"x":44111.06304717549,"y":32129.543698932317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ADA/USDT","id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f"}}},"id":"945f12c7-c1ef-405a-983b-2417e5ae7867","savedPayload":{"position":{"x":44111.06304717549,"y":32129.543698932317},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"24a31ad7-8bb2-4881-99ae-829b91c9fae0","savedPayload":{"position":{"x":43876.85035087776,"y":33264.29116567567},"targetPosition":{"x":43851.71485258066,"y":32622.075786304355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"ADA/USDT","id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f"}}},"id":"358a96e1-c107-4c7b-a5e2-a92d11fa13bc","savedPayload":{"position":{"x":43851.71485258066,"y":32622.075786304355},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"6828cc10-c6c0-4da3-b524-50a5fe2df641","savedPayload":{"position":{"x":43826.594538981204,"y":31979.768305805377},"targetPosition":{"x":43483.775300077,"y":31436.11470464454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"f96d6036-c577-498f-ae29-0f3f5920f10e","savedPayload":{"position":{"x":43483.775300077,"y":31436.11470464454},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"793f022f-b606-48f6-b960-6d5f14c8bc1c","savedPayload":{"position":{"x":27661.43478980934,"y":31124.89667612852},"targetPosition":{"x":27169.91762845011,"y":30806.78914268873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Masters TRX/USDT","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"6fe06082-64a5-4652-a57f-85f67e2d93f8","savedPayload":{"position":{"x":43548.31869375691,"y":28832.74871320079},"targetPosition":{"x":43468.23581599018,"y":29144.465623065378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"TRX/USDT","id":"2cb30869-9de4-4855-bf78-58ac6a10a285"}}},"id":"430f6e6b-1fed-4b06-88dd-2263e3de9416","savedPayload":{"position":{"x":43468.23581599018,"y":29144.465623065378},"targetPosition":{"x":43388.21989927531,"y":29456.2064563822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"dd6f4702-a253-48ec-9f3c-531d99cc861e","savedPayload":{"position":{"x":43388.21989927531,"y":29456.2064563822},"targetPosition":{"x":43308.31846626916,"y":29768.295924463717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"54821025-05d0-443a-95f8-8fdb22f30730","savedPayload":{"position":{"x":43308.31846626916,"y":29768.295924463717},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"ffdb794b-318a-489d-b770-7be5ada4166d","savedPayload":{"position":{"x":44044.56919550187,"y":29070.680669232206},"targetPosition":{"x":43907.75296865664,"y":29362.11317316699},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"TRX/USDT","id":"2cb30869-9de4-4855-bf78-58ac6a10a285"}}},"id":"c02f1e2d-1921-4fe1-bb18-281b0bca988f","savedPayload":{"position":{"x":43907.75296865664,"y":29362.11317316699},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"bbefa0c8-9a46-4aab-a101-a43256e1c45f","savedPayload":{"position":{"x":44562.98482395708,"y":29102.272964030177},"targetPosition":{"x":44167.05042758576,"y":29377.81676557684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"TRX/USDT","id":"2cb30869-9de4-4855-bf78-58ac6a10a285"}}},"id":"6ad7ca5b-7e14-4ed1-afe0-21a7732295cb","savedPayload":{"position":{"x":44167.05042758576,"y":29377.81676557684},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"8a60e0ab-64ee-4019-8fae-efaa052c02f4","savedPayload":{"position":{"x":43770.940957510276,"y":29653.49333725624},"targetPosition":{"x":43563.27921096938,"y":29899.761189375113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"359537ad-c371-4282-adf0-03e276a5c65d","savedPayload":{"position":{"x":43563.27921096938,"y":29899.761189375113},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"ff0ee7d2-100f-4a95-b149-55c2fb3b9b01","savedPayload":{"position":{"x":44529.43831259792,"y":29591.160241515347},"targetPosition":{"x":44279.57761586809,"y":29794.164895509643},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"TRX/USDT","id":"2cb30869-9de4-4855-bf78-58ac6a10a285"}}},"id":"55005a52-8363-42e9-8a32-4e00febb31ed","savedPayload":{"position":{"x":44279.57761586809,"y":29794.164895509643},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"2742d759-f23f-4dbf-99f3-68fa1bd77757","savedPayload":{"position":{"x":44982.702734016326,"y":29844.505580086603},"targetPosition":{"x":44506.37336418851,"y":29920.77047196001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"TRX/USDT","id":"2cb30869-9de4-4855-bf78-58ac6a10a285"}}},"id":"b327769d-be0e-42e3-844d-1e1a18b91d45","savedPayload":{"position":{"x":44506.37336418851,"y":29920.77047196001},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"ba2fb26a-01d5-4e86-ad5d-a34f69a5c6cc","savedPayload":{"position":{"x":44029.76414901768,"y":29997.129510062663},"targetPosition":{"x":43735.659869568226,"y":30128.724866806584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"63a4df6c-ef5d-41ac-9840-8e6d9d7ab176","savedPayload":{"position":{"x":43735.659869568226,"y":30128.724866806584},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"c4e828ec-a1bf-4164-b745-bbe8232668c0","savedPayload":{"position":{"x":44740.19992947904,"y":30269.709710790212},"targetPosition":{"x":44426.92346740986,"y":30344.087153351575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"TRX/USDT","id":"2cb30869-9de4-4855-bf78-58ac6a10a285"}}},"id":"718b5c53-246a-4de1-8a0b-a5a1888a2687","savedPayload":{"position":{"x":44426.92346740986,"y":30344.087153351575},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"d758adac-4d0a-4087-a5ab-d9574fd0f879","savedPayload":{"position":{"x":45038.495695074605,"y":30694.038844894512},"targetPosition":{"x":44576.2033062764,"y":30556.27191701111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"TRX/USDT","id":"2cb30869-9de4-4855-bf78-58ac6a10a285"}}},"id":"ecddae1a-9dc0-48cf-b5db-fe522e7eec24","savedPayload":{"position":{"x":44576.2033062764,"y":30556.27191701111},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"3e45f740-a84d-4a46-8fda-ba12339dd7b8","savedPayload":{"position":{"x":44113.681364955875,"y":30418.40946263666},"targetPosition":{"x":43791.5644814685,"y":30409.41652660318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1bf82381-9e6c-4ed2-acfd-dc7c7e6cf58b","savedPayload":{"position":{"x":43791.5644814685,"y":30409.41652660318},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"03e513be-d68f-45d9-a646-6db1f0c3f99d","savedPayload":{"position":{"x":44634.8713858913,"y":30972.647789916467},"targetPosition":{"x":44320.40783090555,"y":30903.87226015812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"TRX/USDT","id":"2cb30869-9de4-4855-bf78-58ac6a10a285"}}},"id":"d09f4f12-7042-40ab-ade5-f7ab4df51a5d","savedPayload":{"position":{"x":44320.40783090555,"y":30903.87226015812},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"14365849-7d5e-4158-912c-2ec079a08f8e","savedPayload":{"position":{"x":44719.2935084921,"y":31484.844997094602},"targetPosition":{"x":44362.66897516384,"y":31160.069974503385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"TRX/USDT","id":"2cb30869-9de4-4855-bf78-58ac6a10a285"}}},"id":"a3aef523-e4e4-4ff5-b22a-2d0ad8e5bdb1","savedPayload":{"position":{"x":44362.66897516384,"y":31160.069974503385},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"81cd4ea7-d016-4a56-8286-396cafd45ade","savedPayload":{"position":{"x":44005.998383917504,"y":30835.000935669093},"targetPosition":{"x":43719.93790732384,"y":30686.895169007028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"93aa13b7-437a-4c57-82f6-744dbbf9110e","savedPayload":{"position":{"x":43719.93790732384,"y":30686.895169007028},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"79ef6ee1-d9f7-4e33-80a0-22fbef3302c3","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"TRX/USDT","id":"2cb30869-9de4-4855-bf78-58ac6a10a285"}}},"id":"4a51a02a-9bde-4c82-b052-7c4ee376b6d6","savedPayload":{"position":{"x":43921.27648533482,"y":31421.11867904632},"targetPosition":{"x":43727.95100474325,"y":31163.712277360213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"8d9013e5-b0a1-4821-bd31-082f5a29141d","savedPayload":{"position":{"x":43727.95100474325,"y":31163.712277360213},"targetPosition":{"x":43534.654105285146,"y":30905.972976263627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a9d0eb89-2b2c-48e5-b9b2-9b4b5fa0b3ad","savedPayload":{"position":{"x":43534.654105285146,"y":30905.972976263627},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e144b40d-ad4f-40ec-a1bc-2ed27f10d163","savedPayload":{"position":{"x":27608.244945459825,"y":31206.656587855046},"targetPosition":{"x":27169.91762845011,"y":30806.78914268873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta TRX/USDT","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"4f07ef5b-8051-4494-871e-1f54f8b7a95f","savedPayload":{"position":{"x":44071.61797125626,"y":29269.179122287296},"targetPosition":{"x":44017.22604407985,"y":29586.166432086655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"TRX/USDT","id":"2cb30869-9de4-4855-bf78-58ac6a10a285"}}},"id":"c9f54e92-7ec2-4477-90a5-b47010b31b20","savedPayload":{"position":{"x":44017.22604407985,"y":29586.166432086655},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"95329a1e-799a-4469-b8b0-ae1c776be107","savedPayload":{"position":{"x":45168.8488344655,"y":29458.147255078686},"targetPosition":{"x":44565.86589926591,"y":29680.585441818144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"TRX/USDT","id":"2cb30869-9de4-4855-bf78-58ac6a10a285"}}},"id":"113b4625-fff3-4606-b812-8961a4f62878","savedPayload":{"position":{"x":44565.86589926591,"y":29680.585441818144},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"03d1853f-e8ff-415f-807a-2ba427cd5abf","savedPayload":{"position":{"x":43962.84190684965,"y":29903.09502706654},"targetPosition":{"x":43551.90647643782,"y":30397.266512500442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ed115faa-7a85-4e18-9569-9512321025f7","savedPayload":{"position":{"x":43551.90647643782,"y":30397.266512500442},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"bae12fb3-5c5c-401c-ad79-4c3c57f089cb","savedPayload":{"position":{"x":44848.06740265459,"y":30126.954299288456},"targetPosition":{"x":44617.64305938516,"y":30351.280902615003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"TRX/USDT","id":"2cb30869-9de4-4855-bf78-58ac6a10a285"}}},"id":"c10f952b-d5ad-418a-b6a8-8f1c9150e160","savedPayload":{"position":{"x":44617.64305938516,"y":30351.280902615003},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"54290336-a6dd-41eb-aba3-921b89655253","savedPayload":{"position":{"x":45624.60027321795,"y":30924.208529781736},"targetPosition":{"x":45005.977709353945,"y":30749.876937252106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"TRX/USDT","id":"2cb30869-9de4-4855-bf78-58ac6a10a285"}}},"id":"c2e08fd5-c547-46a4-8559-c7609974bea9","savedPayload":{"position":{"x":45005.977709353945,"y":30749.876937252106},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"00c1bd4e-1d6e-40e3-928e-b9e446fed1e1","savedPayload":{"position":{"x":44387.27143213535,"y":30575.564915785017},"targetPosition":{"x":43764.266809147426,"y":30733.667438768847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1913e0e5-3762-46d4-bdd9-cbd1131ed471","savedPayload":{"position":{"x":43764.266809147426,"y":30733.667438768847},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"7e88ea97-aba7-4ef0-be29-c809186e6854","savedPayload":{"position":{"x":44971.81020849867,"y":31276.620146946167},"targetPosition":{"x":44653.49004123155,"y":31322.55467880252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"TRX/USDT","id":"2cb30869-9de4-4855-bf78-58ac6a10a285"}}},"id":"1652db35-e258-4e2d-a013-9a804bb8deec","savedPayload":{"position":{"x":44653.49004123155,"y":31322.55467880252},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"1eff2207-5f7a-40dd-a450-30f4800120eb","savedPayload":{"position":{"x":45131.12724051729,"y":32377.93040356555},"targetPosition":{"x":44733.22183307022,"y":31873.22574960204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"TRX/USDT","id":"2cb30869-9de4-4855-bf78-58ac6a10a285"}}},"id":"576d21c4-7f95-4fe2-9c35-cba3fd844b10","savedPayload":{"position":{"x":44733.22183307022,"y":31873.22574960204},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"a0a4aab1-3b2a-4fc6-a258-bd6d5f8b6bed","savedPayload":{"position":{"x":44335.23861007668,"y":31368.479242651025},"targetPosition":{"x":43738.24708451567,"y":31130.308446359704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3c89bed2-d201-4f3e-9cc4-57e6b65ca5b2","savedPayload":{"position":{"x":43738.24708451567,"y":31130.308446359704},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"0732ca40-8b17-419a-8d33-3ff15c769256","savedPayload":{"position":{"x":44395.607564219106,"y":32279.346270225502},"targetPosition":{"x":44111.06304717549,"y":32129.543698932317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"TRX/USDT","id":"2cb30869-9de4-4855-bf78-58ac6a10a285"}}},"id":"01cb8881-85af-4b4f-a9b9-d9162e397d60","savedPayload":{"position":{"x":44111.06304717549,"y":32129.543698932317},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"5cb29e1b-4b2f-4f25-afb4-53b05f4d0b88","savedPayload":{"position":{"x":43876.85035087776,"y":33264.29116567567},"targetPosition":{"x":43851.71485258066,"y":32622.075786304355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"TRX/USDT","id":"2cb30869-9de4-4855-bf78-58ac6a10a285"}}},"id":"63d11329-532c-4696-b0da-68663f241052","savedPayload":{"position":{"x":43851.71485258066,"y":32622.075786304355},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"585bd6fa-5dae-482d-b8dd-c08991a0a1a2","savedPayload":{"position":{"x":43826.594538981204,"y":31979.768305805377},"targetPosition":{"x":43483.775300077,"y":31436.11470464454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"bbebf801-aec0-4476-bf77-34c7422f428b","savedPayload":{"position":{"x":43483.775300077,"y":31436.11470464454},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"0ef36517-8571-43ac-89f4-78482ce8afc5","savedPayload":{"position":{"x":27534.333277231217,"y":31268.710357146363},"targetPosition":{"x":27169.91762845011,"y":30806.78914268873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Masters XLM/USDT","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"a1cd3dc9-3a1b-4971-b8d3-76de650c3bfa","savedPayload":{"position":{"x":43548.31869375691,"y":28832.74871320079},"targetPosition":{"x":43468.23581599018,"y":29144.465623065378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XLM/USDT","id":"04b82448-a05a-4991-aa02-6a29f23d0ccc"}}},"id":"fe3de818-9048-4049-b54f-6708b6a82ff2","savedPayload":{"position":{"x":43468.23581599018,"y":29144.465623065378},"targetPosition":{"x":43388.21989927531,"y":29456.2064563822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"f289398e-a72f-41e8-9500-2e6a250bb7a7","savedPayload":{"position":{"x":43388.21989927531,"y":29456.2064563822},"targetPosition":{"x":43308.31846626916,"y":29768.295924463717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"fb0ea15f-ec23-4ca1-a3c9-0f045ef7f437","savedPayload":{"position":{"x":43308.31846626916,"y":29768.295924463717},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"7dfc336d-f87d-45a9-a19b-e8440cbef170","savedPayload":{"position":{"x":44044.56919550187,"y":29070.680669232206},"targetPosition":{"x":43907.75296865664,"y":29362.11317316699},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XLM/USDT","id":"04b82448-a05a-4991-aa02-6a29f23d0ccc"}}},"id":"776a7156-299a-428a-b95a-ba7ff61dc6ce","savedPayload":{"position":{"x":43907.75296865664,"y":29362.11317316699},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"fc06a6c2-c153-4988-ba66-af24386f0c32","savedPayload":{"position":{"x":44562.98482395708,"y":29102.272964030177},"targetPosition":{"x":44167.05042758576,"y":29377.81676557684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XLM/USDT","id":"04b82448-a05a-4991-aa02-6a29f23d0ccc"}}},"id":"b7924680-adcd-440c-8bd1-dbe3c1a1c790","savedPayload":{"position":{"x":44167.05042758576,"y":29377.81676557684},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"1d5bdcc8-a73f-4ba4-b60a-df98d13f32b0","savedPayload":{"position":{"x":43770.940957510276,"y":29653.49333725624},"targetPosition":{"x":43563.27921096938,"y":29899.761189375113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b024a114-e067-4c4c-8127-c4d08f51487c","savedPayload":{"position":{"x":43563.27921096938,"y":29899.761189375113},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"4de38cbc-4984-42c8-b7a8-c0a2716e713e","savedPayload":{"position":{"x":44529.43831259792,"y":29591.160241515347},"targetPosition":{"x":44279.57761586809,"y":29794.164895509643},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XLM/USDT","id":"04b82448-a05a-4991-aa02-6a29f23d0ccc"}}},"id":"e8400614-380d-45d5-aabc-db426a0da48a","savedPayload":{"position":{"x":44279.57761586809,"y":29794.164895509643},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"d3adc7d5-f352-4467-9702-19fd768ef6b6","savedPayload":{"position":{"x":44982.702734016326,"y":29844.505580086603},"targetPosition":{"x":44506.37336418851,"y":29920.77047196001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XLM/USDT","id":"04b82448-a05a-4991-aa02-6a29f23d0ccc"}}},"id":"42860dbf-84f3-4146-8fff-c0ba3ab568a8","savedPayload":{"position":{"x":44506.37336418851,"y":29920.77047196001},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"dbe43da3-825f-4cd1-9de9-aa45eb3948db","savedPayload":{"position":{"x":44029.76414901768,"y":29997.129510062663},"targetPosition":{"x":43735.659869568226,"y":30128.724866806584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"f95795f6-560e-457b-9950-5e509ec0bc1e","savedPayload":{"position":{"x":43735.659869568226,"y":30128.724866806584},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"e639f9e4-29bc-490d-a140-6dcc602dcd29","savedPayload":{"position":{"x":44740.19992947904,"y":30269.709710790212},"targetPosition":{"x":44426.92346740986,"y":30344.087153351575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XLM/USDT","id":"04b82448-a05a-4991-aa02-6a29f23d0ccc"}}},"id":"8ae2b65e-15d5-43b5-a89b-072f3d37f650","savedPayload":{"position":{"x":44426.92346740986,"y":30344.087153351575},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"98f2f3db-c93d-4ba2-8ff4-5b7c4702458c","savedPayload":{"position":{"x":45038.495695074605,"y":30694.038844894512},"targetPosition":{"x":44576.2033062764,"y":30556.27191701111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XLM/USDT","id":"04b82448-a05a-4991-aa02-6a29f23d0ccc"}}},"id":"6c358bbd-8d24-47d6-9f98-83939d52d740","savedPayload":{"position":{"x":44576.2033062764,"y":30556.27191701111},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"6044ce04-7652-47c2-9ff3-d150be85e8dd","savedPayload":{"position":{"x":44113.681364955875,"y":30418.40946263666},"targetPosition":{"x":43791.5644814685,"y":30409.41652660318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4587dfdd-2ccf-47be-bb99-cc282a7de6c9","savedPayload":{"position":{"x":43791.5644814685,"y":30409.41652660318},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"fc066f71-448f-4123-9b0b-dac3c520abcd","savedPayload":{"position":{"x":44634.8713858913,"y":30972.647789916467},"targetPosition":{"x":44320.40783090555,"y":30903.87226015812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XLM/USDT","id":"04b82448-a05a-4991-aa02-6a29f23d0ccc"}}},"id":"fdd69d61-3473-45d2-97ea-daded7f802d2","savedPayload":{"position":{"x":44320.40783090555,"y":30903.87226015812},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"7feec355-c32d-474a-b823-28bc71f29ea8","savedPayload":{"position":{"x":44719.2935084921,"y":31484.844997094602},"targetPosition":{"x":44362.66897516384,"y":31160.069974503385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XLM/USDT","id":"04b82448-a05a-4991-aa02-6a29f23d0ccc"}}},"id":"2f145c94-460e-4600-9098-c8c35b585918","savedPayload":{"position":{"x":44362.66897516384,"y":31160.069974503385},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"9c16d496-fae2-41c9-8013-589240bf0389","savedPayload":{"position":{"x":44005.998383917504,"y":30835.000935669093},"targetPosition":{"x":43719.93790732384,"y":30686.895169007028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"c06de685-832b-452e-be7a-a6b679c2fb6f","savedPayload":{"position":{"x":43719.93790732384,"y":30686.895169007028},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"1b78eaa2-a777-4b50-98ff-b04e962bbdf7","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XLM/USDT","id":"04b82448-a05a-4991-aa02-6a29f23d0ccc"}}},"id":"33109e40-cd95-4b98-9950-68f53ef7238e","savedPayload":{"position":{"x":43921.27648533482,"y":31421.11867904632},"targetPosition":{"x":43727.95100474325,"y":31163.712277360213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"70b79227-18f5-4487-887c-eec5760b246c","savedPayload":{"position":{"x":43727.95100474325,"y":31163.712277360213},"targetPosition":{"x":43534.654105285146,"y":30905.972976263627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8cb053d8-6088-4aad-a5f5-61c329c4f3e6","savedPayload":{"position":{"x":43534.654105285146,"y":30905.972976263627},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2155ea54-7a72-4677-9e81-deef5c57ec51","savedPayload":{"position":{"x":27454.6100007203,"y":31324.54624297564},"targetPosition":{"x":27169.91762845011,"y":30806.78914268873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta XLM/USDT","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"5cbf107f-33c9-4a20-ad2b-4c1d1acc1244","savedPayload":{"position":{"x":44071.61797125626,"y":29269.179122287296},"targetPosition":{"x":44017.22604407985,"y":29586.166432086655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XLM/USDT","id":"04b82448-a05a-4991-aa02-6a29f23d0ccc"}}},"id":"b8b9c648-5c68-4204-888c-1a02ba06f77a","savedPayload":{"position":{"x":44017.22604407985,"y":29586.166432086655},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"8885c78d-22ca-4402-948f-a72b8ea6fb9a","savedPayload":{"position":{"x":45168.8488344655,"y":29458.147255078686},"targetPosition":{"x":44565.86589926591,"y":29680.585441818144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XLM/USDT","id":"04b82448-a05a-4991-aa02-6a29f23d0ccc"}}},"id":"f2028d7c-e18e-4453-adc3-9f4c0f60f90f","savedPayload":{"position":{"x":44565.86589926591,"y":29680.585441818144},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"9688fda3-2e56-40ca-a608-810cb4fc65b1","savedPayload":{"position":{"x":43962.84190684965,"y":29903.09502706654},"targetPosition":{"x":43551.90647643782,"y":30397.266512500442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a19a851b-7467-4af2-8de3-99058f7ef68d","savedPayload":{"position":{"x":43551.90647643782,"y":30397.266512500442},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"b44d9488-701a-4bcd-a540-f89d68bb48d6","savedPayload":{"position":{"x":44848.06740265459,"y":30126.954299288456},"targetPosition":{"x":44617.64305938516,"y":30351.280902615003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XLM/USDT","id":"04b82448-a05a-4991-aa02-6a29f23d0ccc"}}},"id":"25d94abc-a868-41ec-ba5e-8bb689fd532c","savedPayload":{"position":{"x":44617.64305938516,"y":30351.280902615003},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"3adcbae6-de7e-4a5d-a69d-418476cfa97f","savedPayload":{"position":{"x":45624.60027321795,"y":30924.208529781736},"targetPosition":{"x":45005.977709353945,"y":30749.876937252106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XLM/USDT","id":"04b82448-a05a-4991-aa02-6a29f23d0ccc"}}},"id":"c74bcf65-9ae6-4ba2-914b-bb82a18a9bd1","savedPayload":{"position":{"x":45005.977709353945,"y":30749.876937252106},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"9fa0faee-d092-48fb-a012-afd06a0067a5","savedPayload":{"position":{"x":44387.27143213535,"y":30575.564915785017},"targetPosition":{"x":43764.266809147426,"y":30733.667438768847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"fe8238b6-9234-406c-bc1e-bcf85af97adc","savedPayload":{"position":{"x":43764.266809147426,"y":30733.667438768847},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"1f54c7d1-7024-44e4-8cf7-e0796b8afa27","savedPayload":{"position":{"x":44971.81020849867,"y":31276.620146946167},"targetPosition":{"x":44653.49004123155,"y":31322.55467880252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XLM/USDT","id":"04b82448-a05a-4991-aa02-6a29f23d0ccc"}}},"id":"eb7bfa83-7561-48fd-b71b-02a2ef3d8e3d","savedPayload":{"position":{"x":44653.49004123155,"y":31322.55467880252},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"29883f5c-f04f-4af4-8c6f-61ff8929830d","savedPayload":{"position":{"x":45131.12724051729,"y":32377.93040356555},"targetPosition":{"x":44733.22183307022,"y":31873.22574960204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XLM/USDT","id":"04b82448-a05a-4991-aa02-6a29f23d0ccc"}}},"id":"0eff1e54-bb6d-4f12-9330-53225435517e","savedPayload":{"position":{"x":44733.22183307022,"y":31873.22574960204},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"059ead72-4240-4474-b8ee-08f8b6e688bd","savedPayload":{"position":{"x":44335.23861007668,"y":31368.479242651025},"targetPosition":{"x":43738.24708451567,"y":31130.308446359704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"24fa298e-6367-471c-b722-51fcef12d9e0","savedPayload":{"position":{"x":43738.24708451567,"y":31130.308446359704},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"c5da0688-1763-47aa-a186-de0de8bba7e0","savedPayload":{"position":{"x":44395.607564219106,"y":32279.346270225502},"targetPosition":{"x":44111.06304717549,"y":32129.543698932317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XLM/USDT","id":"04b82448-a05a-4991-aa02-6a29f23d0ccc"}}},"id":"9919d382-7188-4504-b326-d7cedda0f5e7","savedPayload":{"position":{"x":44111.06304717549,"y":32129.543698932317},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"fc18b0ff-bbc1-4dea-81b5-be984bfaa6d5","savedPayload":{"position":{"x":43876.85035087776,"y":33264.29116567567},"targetPosition":{"x":43851.71485258066,"y":32622.075786304355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"XLM/USDT","id":"04b82448-a05a-4991-aa02-6a29f23d0ccc"}}},"id":"ce4b92ed-720c-46cf-8fd1-b19d5fa6f979","savedPayload":{"position":{"x":43851.71485258066,"y":32622.075786304355},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"fb403674-3b2f-4d60-9fd4-c27f7f163dc8","savedPayload":{"position":{"x":43826.594538981204,"y":31979.768305805377},"targetPosition":{"x":43483.775300077,"y":31436.11470464454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"1270be8c-b57a-43fc-95c0-666be607259d","savedPayload":{"position":{"x":43483.775300077,"y":31436.11470464454},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"601c408a-69ec-4c71-b518-719187ab55de","savedPayload":{"position":{"x":27365.423534895155,"y":31362.806502629915},"targetPosition":{"x":27169.91762845011,"y":30806.78914268873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Masters EOS/USDT","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":"Exchange Raw Data Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"8c926c96-edc5-4b4a-aa3a-6fcfdacaff17","savedPayload":{"position":{"x":43548.31869375691,"y":28832.74871320079},"targetPosition":{"x":43468.23581599018,"y":29144.465623065378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"EOS/USDT","id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7"}}},"id":"3e65a35a-8b31-4ecb-92e0-a733a848ce64","savedPayload":{"position":{"x":43468.23581599018,"y":29144.465623065378},"targetPosition":{"x":43388.21989927531,"y":29456.2064563822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"b003f51d-1e63-478d-bcd1-f27492a89086","savedPayload":{"position":{"x":43388.21989927531,"y":29456.2064563822},"targetPosition":{"x":43308.31846626916,"y":29768.295924463717},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c1e6e85d-4a07-4547-bb74-47773ac3d822","savedPayload":{"position":{"x":43308.31846626916,"y":29768.295924463717},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Candles Volumes Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"63ade261-b508-440a-86a8-64e47100edbc","savedPayload":{"position":{"x":44044.56919550187,"y":29070.680669232206},"targetPosition":{"x":43907.75296865664,"y":29362.11317316699},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"EOS/USDT","id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7"}}},"id":"f18ee600-d64b-4fe6-9643-e17e86ad1887","savedPayload":{"position":{"x":43907.75296865664,"y":29362.11317316699},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"025e4931-20f1-458e-9acd-f374ba0f8706","savedPayload":{"position":{"x":44562.98482395708,"y":29102.272964030177},"targetPosition":{"x":44167.05042758576,"y":29377.81676557684},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"EOS/USDT","id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7"}}},"id":"9fc5c6cc-d532-4881-aaa3-af001e49f8c7","savedPayload":{"position":{"x":44167.05042758576,"y":29377.81676557684},"targetPosition":{"x":43770.940957510276,"y":29653.49333725624},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"905b1d87-ffae-4679-b67d-020c90b8949a","savedPayload":{"position":{"x":43770.940957510276,"y":29653.49333725624},"targetPosition":{"x":43563.27921096938,"y":29899.761189375113},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"61614ecd-8f7c-46e6-8a79-13104d0a9d8c","savedPayload":{"position":{"x":43563.27921096938,"y":29899.761189375113},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Channels","bot":{"type":"Indicator Bot Instance","name":"Candles Channels","code":"{}","processes":[{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"468eae85-9f90-4cb7-b3f1-16605cc1882b","savedPayload":{"position":{"x":44529.43831259792,"y":29591.160241515347},"targetPosition":{"x":44279.57761586809,"y":29794.164895509643},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"EOS/USDT","id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7"}}},"id":"9ab342d1-3eda-4e3f-9c3b-79c571141f67","savedPayload":{"position":{"x":44279.57761586809,"y":29794.164895509643},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2ab8c00c-8e15-4bdc-87fa-291c8d4edadb"}}},{"type":"Indicator Process Instance","name":"Candle Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"26539ac5-a4d4-4d27-b668-3fe15f754e16","savedPayload":{"position":{"x":44982.702734016326,"y":29844.505580086603},"targetPosition":{"x":44506.37336418851,"y":29920.77047196001},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"EOS/USDT","id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7"}}},"id":"d43c86ad-20f9-47ca-a7dd-77a98f6201a8","savedPayload":{"position":{"x":44506.37336418851,"y":29920.77047196001},"targetPosition":{"x":44029.76414901768,"y":29997.129510062663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"0de6dd1f-5bca-4f66-a5db-cd068dd4190f"}}}],"id":"24acddea-58e9-4c94-aea1-657b00b83f99","savedPayload":{"position":{"x":44029.76414901768,"y":29997.129510062663},"targetPosition":{"x":43735.659869568226,"y":30128.724866806584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"375dd77e-f96f-49a7-afb4-f54f87ee915c","savedPayload":{"position":{"x":43735.659869568226,"y":30128.724866806584},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"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":"Bollinger Bands Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"39cc16e4-caa7-49bb-8ff7-a8b0d1d94365","savedPayload":{"position":{"x":44740.19992947904,"y":30269.709710790212},"targetPosition":{"x":44426.92346740986,"y":30344.087153351575},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"EOS/USDT","id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7"}}},"id":"eb650c65-2d09-4d2b-b1fe-5420fbe0c652","savedPayload":{"position":{"x":44426.92346740986,"y":30344.087153351575},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Bollinger Bands Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"91302116-a811-4d28-bfc0-b36e33c3de75","savedPayload":{"position":{"x":45038.495695074605,"y":30694.038844894512},"targetPosition":{"x":44576.2033062764,"y":30556.27191701111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"EOS/USDT","id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7"}}},"id":"29248411-676a-4da3-9561-7ca79ee2eef3","savedPayload":{"position":{"x":44576.2033062764,"y":30556.27191701111},"targetPosition":{"x":44113.681364955875,"y":30418.40946263666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"535e018e-5640-4339-b2a9-95f53b1d5253","savedPayload":{"position":{"x":44113.681364955875,"y":30418.40946263666},"targetPosition":{"x":43791.5644814685,"y":30409.41652660318},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a67c0b39-0fce-4b08-b6e2-8f58bc26f67f","savedPayload":{"position":{"x":43791.5644814685,"y":30409.41652660318},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"Bollinger Channels Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"93cd6699-6cdc-4bdc-ae6e-ca311e5806a3","savedPayload":{"position":{"x":44634.8713858913,"y":30972.647789916467},"targetPosition":{"x":44320.40783090555,"y":30903.87226015812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"EOS/USDT","id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7"}}},"id":"91d7931b-42d2-40f7-93aa-b794388ef60a","savedPayload":{"position":{"x":44320.40783090555,"y":30903.87226015812},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Bollinger Channels Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"42222c68-4132-4c78-93b1-a89fcce8f47b","savedPayload":{"position":{"x":44719.2935084921,"y":31484.844997094602},"targetPosition":{"x":44362.66897516384,"y":31160.069974503385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"EOS/USDT","id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7"}}},"id":"7a54b571-f0e0-4951-8590-6c5e26591351","savedPayload":{"position":{"x":44362.66897516384,"y":31160.069974503385},"targetPosition":{"x":44005.998383917504,"y":30835.000935669093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"8ce639a5-e359-4eac-837c-334a39224c21","savedPayload":{"position":{"x":44005.998383917504,"y":30835.000935669093},"targetPosition":{"x":43719.93790732384,"y":30686.895169007028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"8940c00c-e1c9-4e3f-a84a-4a0477bb5d33","savedPayload":{"position":{"x":43719.93790732384,"y":30686.895169007028},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Task","name":"Webhooks","bot":{"type":"Sensor Bot Instance","name":"Webhooks","code":" {\n \"repo\": \"Webhooks-Sensor-Bot\"\n }","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"4f9092ab-b2c3-46db-9d62-fc01d843bcab","savedPayload":{"position":{"x":41234.40772073858,"y":30225.096264588887},"targetPosition":{"x":40812.801769173064,"y":30219.066258020608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"EOS/USDT","id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7"}}},"id":"b90fde45-990a-41fe-a653-6faf9e89ed1e","savedPayload":{"position":{"x":43921.27648533482,"y":31421.11867904632},"targetPosition":{"x":43727.95100474325,"y":31163.712277360213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"74a669e0-f358-45d3-97ac-4dba0d2df374","savedPayload":{"position":{"x":43727.95100474325,"y":31163.712277360213},"targetPosition":{"x":43534.654105285146,"y":30905.972976263627},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3e23d46d-c0dd-4784-b1a3-fcc3c3ce2987","savedPayload":{"position":{"x":43534.654105285146,"y":30905.972976263627},"targetPosition":{"x":43148.58401662978,"y":30391.403000963473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6b31d23f-745c-4400-9550-2260fd7d08e1","savedPayload":{"position":{"x":27269.91427207036,"y":31395.36430352579},"targetPosition":{"x":27169.91762845011,"y":30806.78914268873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},{"type":"Task Manager","name":"Sparta EOS/USDT","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":"SMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"7c1917a9-377f-4374-8f39-b2ccea53922c","savedPayload":{"position":{"x":44071.61797125626,"y":29269.179122287296},"targetPosition":{"x":44017.22604407985,"y":29586.166432086655},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"EOS/USDT","id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7"}}},"id":"edf098ab-3bf3-45e3-8547-0aed29eb8f39","savedPayload":{"position":{"x":44017.22604407985,"y":29586.166432086655},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"b762b403-f015-4bb6-b84e-5f4779ca2d89","savedPayload":{"position":{"x":45168.8488344655,"y":29458.147255078686},"targetPosition":{"x":44565.86589926591,"y":29680.585441818144},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"EOS/USDT","id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7"}}},"id":"a0db3b72-bee5-4a84-93a4-3aa63a8e0b25","savedPayload":{"position":{"x":44565.86589926591,"y":29680.585441818144},"targetPosition":{"x":43962.84190684965,"y":29903.09502706654},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"d874103c-0597-464a-82fa-712ac00cd845","savedPayload":{"position":{"x":43962.84190684965,"y":29903.09502706654},"targetPosition":{"x":43551.90647643782,"y":30397.266512500442},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6ff59dcb-a730-460c-9775-b53deffbab10","savedPayload":{"position":{"x":43551.90647643782,"y":30397.266512500442},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"EMA Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"04ee06be-fa80-44a1-ba94-a0222d741d5f","savedPayload":{"position":{"x":44848.06740265459,"y":30126.954299288456},"targetPosition":{"x":44617.64305938516,"y":30351.280902615003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"EOS/USDT","id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7"}}},"id":"f893ea84-ca2d-4879-8d75-d1fcc5ffcc97","savedPayload":{"position":{"x":44617.64305938516,"y":30351.280902615003},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"e42f375e-d048-48e6-864d-342c829a21f9","savedPayload":{"position":{"x":45624.60027321795,"y":30924.208529781736},"targetPosition":{"x":45005.977709353945,"y":30749.876937252106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"EOS/USDT","id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7"}}},"id":"e70fb6d6-efdb-4465-96c3-290afcf53a66","savedPayload":{"position":{"x":45005.977709353945,"y":30749.876937252106},"targetPosition":{"x":44387.27143213535,"y":30575.564915785017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"931ac0a3-94b6-4d74-a6e2-37c1b0ee2e24","savedPayload":{"position":{"x":44387.27143213535,"y":30575.564915785017},"targetPosition":{"x":43764.266809147426,"y":30733.667438768847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"20cde79a-2d7c-403a-b061-1cfd712ee1fd","savedPayload":{"position":{"x":43764.266809147426,"y":30733.667438768847},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"MACD Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"161da469-4f5f-48b7-b564-0d93ad24080d","savedPayload":{"position":{"x":44971.81020849867,"y":31276.620146946167},"targetPosition":{"x":44653.49004123155,"y":31322.55467880252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"EOS/USDT","id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7"}}},"id":"30aeb300-e1e9-4b03-afc3-dc00216c5be2","savedPayload":{"position":{"x":44653.49004123155,"y":31322.55467880252},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"MACD Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"cb4ae3dd-1620-4e0c-ba43-2c50a2c99d78","savedPayload":{"position":{"x":45131.12724051729,"y":32377.93040356555},"targetPosition":{"x":44733.22183307022,"y":31873.22574960204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"EOS/USDT","id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7"}}},"id":"174fd455-b980-4aeb-b433-f20c6cc5ad2b","savedPayload":{"position":{"x":44733.22183307022,"y":31873.22574960204},"targetPosition":{"x":44335.23861007668,"y":31368.479242651025},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"8424cfb5-66b9-4810-8b63-3b80eef0813d","savedPayload":{"position":{"x":44335.23861007668,"y":31368.479242651025},"targetPosition":{"x":43738.24708451567,"y":31130.308446359704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"291393ac-326c-40e2-94f0-2478349b75f4","savedPayload":{"position":{"x":43738.24708451567,"y":31130.308446359704},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"RSI Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"c2ff5e4e-9622-486a-bf73-2655dd509698","savedPayload":{"position":{"x":44395.607564219106,"y":32279.346270225502},"targetPosition":{"x":44111.06304717549,"y":32129.543698932317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"EOS/USDT","id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7"}}},"id":"1a8afd72-a4fb-42e4-a575-c2e1ff8575ff","savedPayload":{"position":{"x":44111.06304717549,"y":32129.543698932317},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"RSI Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"7a6a9157-37e3-4e33-90cc-d5f413ec74b1","savedPayload":{"position":{"x":43876.85035087776,"y":33264.29116567567},"targetPosition":{"x":43851.71485258066,"y":32622.075786304355},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"EOS/USDT","id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7"}}},"id":"bd9ac284-744c-4f7f-ad40-131b6ccc6bff","savedPayload":{"position":{"x":43851.71485258066,"y":32622.075786304355},"targetPosition":{"x":43826.594538981204,"y":31979.768305805377},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"ce3e9ddd-ddd9-4edc-af39-917894099d1e","savedPayload":{"position":{"x":43826.594538981204,"y":31979.768305805377},"targetPosition":{"x":43483.775300077,"y":31436.11470464454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"c0a0b236-e1a4-4174-b69b-6d875571c52a","savedPayload":{"position":{"x":43483.775300077,"y":31436.11470464454},"targetPosition":{"x":43140.801983244026,"y":30891.950600638847},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"17d29635-5871-4706-afac-87fc7c88122b","savedPayload":{"position":{"x":27146.170450188263,"y":31368.16544036462},"targetPosition":{"x":27169.91762845011,"y":30806.78914268873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"j"}}}],"id":"2b1dd31b-5b78-4934-83de-35b83f4d9b05","savedPayload":{"position":{"x":27171.219317954525,"y":30806.621671832672},"targetPosition":{"x":26594.57388499951,"y":30715.633401753315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Bittrex","id":"a9a5c7bc-797b-4cd1-b24e-a627cd396d3e"}}}],"id":"7449a608-32ca-4285-94d1-c96791e2817f","savedPayload":{"position":{"x":26594.57388499951,"y":30715.633401753315},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":true}}},"testingEnvironment":{"type":"Testing Environment","name":"New Testing Environment","exchangeTasks":[{"type":"Exchange Tasks","name":"Binance","taskManagers":[{"type":"Task Manager","name":"Paper & Backtesting Sessions BTC/USDT","tasks":[{"type":"Task","name":"Paper Trading WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"67306688-5813-49d0-ab21-492ebf19cdb3","savedPayload":{"position":{"x":29155.706455501968,"y":30897.594901783752},"targetPosition":{"x":29440.26543731939,"y":30961.05379473673},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"4af93047-8c85-4e75-9c16-15d5d029f4da","savedPayload":{"position":{"x":29312.40711133251,"y":30698.304502181294},"targetPosition":{"x":29440.26543731939,"y":30961.05379473673},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"acb45dfc-c3d2-48fe-be81-d3bfb3ef50e9","savedPayload":{"position":{"x":29565.814395529123,"y":30696.485105978336},"targetPosition":{"x":29440.26543731939,"y":30961.05379473673},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"2631678e-8285-4c4b-a6b1-4e437a5ade29","savedPayload":{"position":{"x":29725.532003727512,"y":30893.64185803809},"targetPosition":{"x":29440.26543731939,"y":30961.05379473673},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"87f75d53-29bf-4ec6-9705-0b4b94401aec","savedPayload":{"position":{"x":29671.065346634747,"y":31140.982840297416},"targetPosition":{"x":29440.26543731939,"y":30961.05379473673},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"1602c6ce-32f4-4422-96af-ade68d6b1b4b","savedPayload":{"position":{"x":29443.49087042641,"y":31252.558686025965},"targetPosition":{"x":29440.26543731939,"y":30961.05379473673},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ffac402a-409a-44be-b803-5c5ab85c85d6","savedPayload":{"position":{"x":29440.26543731939,"y":30961.05379473673},"targetPosition":{"x":29213.933139280456,"y":31144.83968643594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1d6b5b33-21b7-4331-998c-bf9225c76bd6","savedPayload":{"position":{"x":29213.933139280456,"y":31144.83968643594},"targetPosition":{"x":28986.938070753484,"y":31328.60303731375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"h"},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"528f463f-22d8-4163-b588-9cb75ed6dca1","savedPayload":{"position":{"x":29259.776314729814,"y":31432.903851587842},"targetPosition":{"x":28986.938070753484,"y":31328.60303731375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"015a215a-e0d7-4439-8e00-7ddd54904399","savedPayload":{"position":{"x":28986.938070753484,"y":31328.60303731375},"targetPosition":{"x":28699.711826997533,"y":31374.132142429175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"363a1590-f1f4-4b1f-b4be-74fb52003b40","savedPayload":{"position":{"x":28699.711826997533,"y":31374.132142429175},"targetPosition":{"x":28331.995869973118,"y":31432.54720432549},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"4c2e2bc2-8f45-4b5a-bbe1-03524a5008b2","savedPayload":{"position":{"x":28332.1294187749,"y":31431.968680835318},"targetPosition":{"x":27755.538260703906,"y":31523.719116859254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Backtesting WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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}","id":"de480c9e-998c-4166-83f0-59cdf6cab8d0","savedPayload":{"position":{"x":29206.07973421646,"y":31653.9745595817},"targetPosition":{"x":29421.33948151498,"y":31851.28480899127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{}","id":"3c937303-5730-4283-b397-77584f78a21a","savedPayload":{"position":{"x":29441.1439882462,"y":31559.667593554594},"targetPosition":{"x":29421.33948151498,"y":31851.28480899127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"initialDatetime\": \"2019-01-01\",\n\"finalDatetime\": \"2020-12-31\"\n}","id":"78fecedf-4bc4-4a7f-8e3c-f48211b11992","savedPayload":{"position":{"x":29661.751500529972,"y":31684.89413580869},"targetPosition":{"x":29421.33948151498,"y":31851.28480899127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-hs\"\n}","id":"a8c686f5-cd39-4ca0-9403-d4036e82192c","savedPayload":{"position":{"x":29701.442126839185,"y":31935.21183277744},"targetPosition":{"x":29421.33948151498,"y":31851.28480899127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"f47ea749-1ca7-4dfa-bdea-21478c720db9","savedPayload":{"position":{"x":29530.347601960097,"y":32122.525715157295},"targetPosition":{"x":29421.33948151498,"y":31851.28480899127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"96326bf6-02f9-4d9a-9367-5851992edefa","savedPayload":{"position":{"x":29277.745382104185,"y":32105.574823542345},"targetPosition":{"x":29421.33948151498,"y":31851.28480899127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"35ae8210-fa20-455f-9f1e-e52f10c3f8a9","savedPayload":{"position":{"x":29421.33948151498,"y":31851.28480899127},"targetPosition":{"x":29132.8884659157,"y":31896.839230422305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"44357648-e96f-4e38-b23d-192f2a73107a","savedPayload":{"position":{"x":29132.8884659157,"y":31896.839230422305},"targetPosition":{"x":28844.950725238374,"y":31942.334240884997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"137393be-6543-4bbd-807d-6575f2aa0e46","savedPayload":{"position":{"x":29028.331719699643,"y":32169.552497168093},"targetPosition":{"x":28844.950725238374,"y":31942.334240884997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"2acdb24e-60f0-4281-a218-0ddb7795dda1","savedPayload":{"position":{"x":28844.950725238374,"y":31942.334240884997},"targetPosition":{"x":28572.818599530237,"y":31837.75114972151},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"a8b280aa-35f6-4336-8e37-9cfb7b9ea00e","savedPayload":{"position":{"x":28572.818599530237,"y":31837.75114972151},"targetPosition":{"x":28300.303072060684,"y":31733.104611550913},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f063f4af-f3d4-4528-993e-d9a4c8293a27","savedPayload":{"position":{"x":28300.303072060684,"y":31733.104611550913},"targetPosition":{"x":27755.538260703906,"y":31523.719116859254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"57542a24-2cbc-47ce-9018-ec02b9aca954","savedPayload":{"position":{"x":27755.538260703906,"y":31523.719116859254},"targetPosition":{"x":27175.110830966696,"y":31462.8619469621},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"df80f84d-09a8-46db-a633-df1c0c94eab3","savedPayload":{"position":{"x":27175.110830966696,"y":31462.8619469621},"targetPosition":{"x":26594.59491780863,"y":31401.96675335554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}},{"type":"Exchange Tasks","name":"Bitfinex","taskManagers":[{"type":"Task Manager","name":"Paper & Backtesting Sessions BTC/USDT","tasks":[{"type":"Task","name":"Paper Trading WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"095de574-0f88-47ff-b63f-a04df57e24df","savedPayload":{"position":{"x":28938.075651666586,"y":31908.330655438986},"targetPosition":{"x":29197.8501110865,"y":32042.95237281806},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"dfee6cb8-deff-4d50-a62f-1060e540069d"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"e46301f9-510c-4073-8ad8-012b35396968","savedPayload":{"position":{"x":29141.105348002326,"y":31756.067369856304},"targetPosition":{"x":29197.8501110865,"y":32042.95237281806},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"c427816f-d936-4bf9-bc61-a3163642fe13"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"cb17cc3a-64c3-428d-842b-aabb68b94476","savedPayload":{"position":{"x":29386.30677442522,"y":31819.9624299733},"targetPosition":{"x":29197.8501110865,"y":32042.95237281806},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"981681f8-efb2-42e7-a264-1507d15bff37","savedPayload":{"position":{"x":29489.507668154445,"y":32051.472736761836},"targetPosition":{"x":29197.8501110865,"y":32042.95237281806},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"d3efbaaa-07a3-4d4d-8aff-de73477d5b48","savedPayload":{"position":{"x":29372.714781636343,"y":32276.700847107895},"targetPosition":{"x":29197.8501110865,"y":32042.95237281806},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"027101d1-9b52-4247-a2a8-f84a7c969a1b","savedPayload":{"position":{"x":29124.243448843317,"y":32325.74167510858},"targetPosition":{"x":29197.8501110865,"y":32042.95237281806},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"680add4c-5536-41e6-8ccf-26a4dd10518f","savedPayload":{"position":{"x":29197.8501110865,"y":32042.95237281806},"targetPosition":{"x":28930.751407545024,"y":32161.254105239204},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9b06d8ea-606c-4935-a9de-cfaebdb0f13e","savedPayload":{"position":{"x":28930.751407545024,"y":32161.254105239204},"targetPosition":{"x":28665.269915223453,"y":32279.64231848842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"h"},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"908a129d-ed01-4af0-8efe-6c2ddf706d29","savedPayload":{"position":{"x":28900.6455604142,"y":32451.84199164744},"targetPosition":{"x":28665.269915223453,"y":32279.64231848842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"f060d8ac-1b4c-4fde-8b1d-68d50c7564e4","savedPayload":{"position":{"x":28665.269915223453,"y":32279.64231848842},"targetPosition":{"x":28375.083767592016,"y":32248.728525499242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"8732c480-94da-4b56-a255-5279aa03410d","savedPayload":{"position":{"x":28375.083767592016,"y":32248.728525499242},"targetPosition":{"x":27957.475267405713,"y":32204.92403413129},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"ea37d404-1566-4399-926b-76b1657341f6","savedPayload":{"position":{"x":27436.758647474056,"y":32922.14291418631},"targetPosition":{"x":27069.12456649723,"y":32468.535886073892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Backtesting WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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}","id":"861945b7-0914-4250-bec9-e3ebc38b412a","savedPayload":{"position":{"x":27681.10005192987,"y":33790.16616196117},"targetPosition":{"x":27618.05982677789,"y":34075.260119754246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"dfee6cb8-deff-4d50-a62f-1060e540069d"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{}","id":"3e18677f-8cf6-471a-b7fc-e905ab38f345","savedPayload":{"position":{"x":27880.428663413317,"y":33946.77638203821},"targetPosition":{"x":27618.05982677789,"y":34075.260119754246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"c427816f-d936-4bf9-bc61-a3163642fe13"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"initialDatetime\": \"2019-01-01\",\n\"finalDatetime\": \"2020-12-31\"\n}","id":"65b2ffe1-a420-4663-a33c-98c731d95ad0","savedPayload":{"position":{"x":27882.273623095065,"y":34200.1492100971},"targetPosition":{"x":27618.05982677789,"y":34075.260119754246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-hs\"\n}","id":"af41e403-e40d-4f2b-8b11-67c1c23d440e","savedPayload":{"position":{"x":27685.166063831817,"y":34359.75124055351},"targetPosition":{"x":27618.05982677789,"y":34075.260119754246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"138d74e0-4423-4b7e-949d-840f7a69a5a0","savedPayload":{"position":{"x":27437.695335865024,"y":34305.22589395314},"targetPosition":{"x":27618.05982677789,"y":34075.260119754246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"e4298b02-5069-465b-b0f0-1355707ca2c8","savedPayload":{"position":{"x":27325.960417125156,"y":34077.743376384504},"targetPosition":{"x":27618.05982677789,"y":34075.260119754246},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"1c3e16d9-36e7-4e2e-b0e0-0924774c8a86","savedPayload":{"position":{"x":27618.05982677789,"y":34075.260119754246},"targetPosition":{"x":27434.383649727864,"y":33848.34072631319},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7de73196-0e44-4e7f-b86e-bc5d89cd8c18","savedPayload":{"position":{"x":27434.383649727864,"y":33848.34072631319},"targetPosition":{"x":27250.93806411558,"y":33621.70814367823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"d98f3aea-ba61-4a15-ab38-e86516aa1d4b","savedPayload":{"position":{"x":27145.964540595047,"y":33894.2204821977},"targetPosition":{"x":27250.93806411558,"y":33621.70814367823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"146c7e2b-1b6a-46f2-ab60-f5e611b9ddba","savedPayload":{"position":{"x":27250.93806411558,"y":33621.70814367823},"targetPosition":{"x":27205.588338424695,"y":33333.606882619264},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"9ae64361-4dd6-4b90-8b80-369f6b0bbcb6","savedPayload":{"position":{"x":27205.588338424695,"y":33333.606882619264},"targetPosition":{"x":27160.134934338043,"y":33045.20209273068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f1fe746a-c416-48f7-a908-3bc901959f41","savedPayload":{"position":{"x":27160.134934338043,"y":33045.20209273068},"targetPosition":{"x":27069.12456649723,"y":32468.535886073892},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"9975a468-bea5-4646-9f95-e31e98749335","savedPayload":{"position":{"x":27069.12456649723,"y":32468.535886073892},"targetPosition":{"x":26831.801065115775,"y":31935.243895397805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"86f6bfc3-a716-4f6c-9d0d-089a06b71fed","savedPayload":{"position":{"x":26831.99431486614,"y":31935.28943618454},"targetPosition":{"x":26594.59491780863,"y":31401.96675335554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Bitfinex","id":"3ff59cad-42ae-4527-b060-4585cc4e7e1a"}}}],"id":"2ae685a1-25c6-4bd5-b559-d83e373e8d45","savedPayload":{"position":{"x":26594.59491780863,"y":31401.96675335554},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"productionEnvironment":{"type":"Production Environment","name":"New Production Environment","exchangeTasks":[{"type":"Exchange Tasks","name":"Binance","taskManagers":[{"type":"Task Manager","name":"Fwd & Live Sessions BTC/USDT","tasks":[{"type":"Task","name":"Fwd Testing WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"88b742f0-a4e8-4dd1-8b50-bf31314898dc","savedPayload":{"position":{"x":27213.156115471513,"y":33892.80688164163},"targetPosition":{"x":27240.605423555673,"y":34183.16561816866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"cc544635-ccad-4a93-b983-aa81c9c9742d","savedPayload":{"position":{"x":27450.913483319102,"y":33980.2070718946},"targetPosition":{"x":27240.605423555673,"y":34183.16561816866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"9e885d30-915d-4379-b9ad-cc444e25084c","savedPayload":{"position":{"x":27531.039581524074,"y":34220.63700166012},"targetPosition":{"x":27240.605423555673,"y":34183.16561816866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"0b6e2c2f-9099-45e4-912e-ee6162865214","savedPayload":{"position":{"x":27392.883110693507,"y":34433.4825216436},"targetPosition":{"x":27240.605423555673,"y":34183.16561816866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"c5d16250-2f81-4fa8-bfb9-2ef95536f73c","savedPayload":{"position":{"x":27140.849366047652,"y":34458.22504504535},"targetPosition":{"x":27240.605423555673,"y":34183.16561816866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"b33b15cd-1ea3-45eb-996a-5ee0e04cc0fe","savedPayload":{"position":{"x":26964.458917738517,"y":34276.2861740626},"targetPosition":{"x":27240.605423555673,"y":34183.16561816866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"3db9186d-7a77-453b-abbc-0cce04e544f5","savedPayload":{"position":{"x":27240.605423555673,"y":34183.16561816866},"targetPosition":{"x":26995.65848293174,"y":34024.683460955726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b59b370b-634d-45ea-b4ec-49b1fb32fc9a","savedPayload":{"position":{"x":26995.65848293174,"y":34024.683460955726},"targetPosition":{"x":26750.79800936216,"y":33865.8578990441},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","keyInstance":{"type":"Key Instance","name":"New Exchange Account Key","id":"dad641d8-4ddb-46e8-9151-2c413c75a138","savedPayload":{"position":{"x":26721.0299044968,"y":34449.07644515524},"targetPosition":{"x":26735.83905504777,"y":34157.38825790955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"New Exchange Account Key","id":"88eab4e5-3be4-4982-93fa-e95bcb1ab559"}}},"id":"c618e7bc-37d3-452e-b06b-197fad439435","savedPayload":{"position":{"x":26735.83905504777,"y":34157.38825790955},"targetPosition":{"x":26750.79800936216,"y":33865.8578990441},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"d4969640-2c94-4cfd-b71d-907319e3495a","savedPayload":{"position":{"x":26750.79800936216,"y":33865.8578990441},"targetPosition":{"x":26618.57531959245,"y":33606.678083974264},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"1c258f61-7318-4ddd-8a29-4f60f8ea61e8","savedPayload":{"position":{"x":26618.57531959245,"y":33606.678083974264},"targetPosition":{"x":26449.4345442884,"y":33275.4084892768},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8875b896-a741-4861-9632-d39bf0167dc1","savedPayload":{"position":{"x":26449.65961346061,"y":33275.730578813},"targetPosition":{"x":26184.224325683474,"y":32755.82273108023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Live Trading WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"ab97f60d-d77e-4ce3-bce2-ef57b041004b","savedPayload":{"position":{"x":26508.040736356692,"y":34175.0474432514},"targetPosition":{"x":26386.99271732716,"y":34440.76205827793},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"10c80898-9db7-412d-9c1b-379dc66f08e4","savedPayload":{"position":{"x":26670.44957895978,"y":34369.71327541496},"targetPosition":{"x":26386.99271732716,"y":34440.76205827793},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"67f463e3-5e81-4805-a0a1-ff6a3af70624","savedPayload":{"position":{"x":26619.967472968776,"y":34619.57753795378},"targetPosition":{"x":26387.43018395344,"y":34442.353927570664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"e74c8d80-d2ac-499c-bd92-d2357b6f815b","savedPayload":{"position":{"x":26393.89875980304,"y":34734.75142184919},"targetPosition":{"x":26387.43018395344,"y":34442.353927570664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"2e121bbc-5acd-458e-aef5-f3ab22fe7211","savedPayload":{"position":{"x":26163.18090119906,"y":34629.92284637682},"targetPosition":{"x":26387.43018395344,"y":34442.353927570664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"784d4edb-35ae-406f-adae-6d596df0caca","savedPayload":{"position":{"x":26101.179102148108,"y":34384.45515555325},"targetPosition":{"x":26387.43018395344,"y":34442.353927570664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0d83ae91-cd61-45a3-b4d7-0566a2fb99b1","savedPayload":{"position":{"x":26386.99271732716,"y":34440.76205827793},"targetPosition":{"x":26254.58252218575,"y":34180.684424527964},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e50eb025-56d8-4c8e-a1aa-004f3a3e2f41","savedPayload":{"position":{"x":26254.58252218575,"y":34180.684424527964},"targetPosition":{"x":26122.331461441172,"y":33920.95676130053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","keyInstance":{"type":"Key Instance","name":"New Exchange Account Key","id":"d17cdd72-2e45-4bc6-9725-0c0ef125db5f","savedPayload":{"position":{"x":25803.650048032356,"y":34410.3037566756},"targetPosition":{"x":25962.904766385647,"y":34165.57250074203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"New Exchange Account Key","id":"88eab4e5-3be4-4982-93fa-e95bcb1ab559"}}},"id":"44b4839c-9541-4f6f-b532-38d54eac1831","savedPayload":{"position":{"x":25962.904766385647,"y":34165.57250074203},"targetPosition":{"x":26122.331461441172,"y":33920.95676130053},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"a3db0a12-4836-45d3-910e-bdff7bcd1623","savedPayload":{"position":{"x":26122.331461441172,"y":33920.95676130053},"targetPosition":{"x":26137.71599916899,"y":33629.84434293595},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"91bb6447-ac67-4689-ae77-9d65083ff278","savedPayload":{"position":{"x":26137.71599916899,"y":33629.84434293595},"targetPosition":{"x":26153.374264443977,"y":33338.587693653506},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7c2dfc0c-87e5-42ed-a6f7-4b6f79bbfdec","savedPayload":{"position":{"x":26153.3599676772,"y":33338.61447369248},"targetPosition":{"x":26184.224325683474,"y":32755.82273108023},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"bcd2156e-70cc-41d3-9360-39cde2145073","savedPayload":{"position":{"x":26184.224325683474,"y":32755.82273108023},"targetPosition":{"x":26063.04216093241,"y":32184.97803839955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"l"}}}],"id":"548448cf-3922-49a9-b89d-45ef0616432b","savedPayload":{"position":{"x":26063.04216093241,"y":32184.97803839955},"targetPosition":{"x":25941.905690583506,"y":31614.045691974294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Binance","id":"22d2b36e-7a77-40a6-8948-b7d0fb744923"}}},{"type":"Exchange Tasks","name":"Bitfinex","taskManagers":[{"type":"Task Manager","name":"Fwd & Live Sessions BTC/USDT","tasks":[{"type":"Task","name":"Fwd Testing WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"a17ba969-383a-4354-b661-539f2b9af470","savedPayload":{"position":{"x":24602.95223349282,"y":33854.81290074033},"targetPosition":{"x":24365.92232066429,"y":34023.14728279089},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"dfee6cb8-deff-4d50-a62f-1060e540069d"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"3c02129d-beeb-4a94-ad1c-b5ee5be57f5c","savedPayload":{"position":{"x":24646.256246993395,"y":34104.34423082304},"targetPosition":{"x":24365.92232066429,"y":34023.14728279089},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"c427816f-d936-4bf9-bc61-a3163642fe13"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"ef1009d6-5c95-4016-aad1-012448ffe37e","savedPayload":{"position":{"x":24477.884245813122,"y":34294.072501268565},"targetPosition":{"x":24365.92232066429,"y":34023.14728279089},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"fa5a9260-7821-49bd-8108-7bc9e9b3c9cb","savedPayload":{"position":{"x":24224.788596913477,"y":34280.79647931317},"targetPosition":{"x":24365.92232066429,"y":34023.14728279089},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"cdae103d-fe02-4c64-ab90-1d2d3fbe3872","savedPayload":{"position":{"x":24077.157487277327,"y":34074.51695728213},"targetPosition":{"x":24365.92232066429,"y":34023.14728279089},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"e1f23801-c45d-482c-bf11-f99650897c58","savedPayload":{"position":{"x":24146.3440149943,"y":33830.969551986665},"targetPosition":{"x":24365.92232066429,"y":34023.14728279089},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"ca6d85c2-4f79-4c46-b7db-f8a2df7cd265","savedPayload":{"position":{"x":24365.92232066429,"y":34023.14728279089},"targetPosition":{"x":24380.313410107254,"y":33732.79484826924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"cd251c3a-d744-4c7c-95f7-e25767cad491","savedPayload":{"position":{"x":24380.313410107254,"y":33732.79484826924},"targetPosition":{"x":24396.22438058906,"y":33440.45127458217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","keyInstance":{"type":"Key Instance","name":"New Exchange Account Key","id":"1fcff1a9-1e15-4d0a-83ba-519be1e0c180","savedPayload":{"position":{"x":23875.51092914147,"y":33704.74322552914},"targetPosition":{"x":24135.017432408968,"y":33573.751756525184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"New Exchange Account Key","id":"0fd9bffa-8a0b-49f2-b000-77b5b551bc30"}}},"id":"5bf2bf06-5267-4330-85b7-e6a23acb0b92","savedPayload":{"position":{"x":24135.017432408968,"y":33573.751756525184},"targetPosition":{"x":24396.22438058906,"y":33440.45127458217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"bd510676-cfae-4d38-96dd-8ffd9b417f76","savedPayload":{"position":{"x":24396.22438058906,"y":33440.45127458217},"targetPosition":{"x":24554.268720910095,"y":33197.34251738557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"16d186e6-3f74-4e5a-95c0-7997d4b13efb","savedPayload":{"position":{"x":24554.268720910095,"y":33197.34251738557},"targetPosition":{"x":24757.197503992036,"y":32884.75929784828},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2571d1fb-620e-4308-88a4-fba502ad74b2","savedPayload":{"position":{"x":24757.265413735815,"y":32885.12516636919},"targetPosition":{"x":25074.76827912297,"y":32395.23240898645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Live Trading WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Protocol Engine 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":"Bitcoin","code":"{ \n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.005\n}","id":"97ce3364-1900-41e2-a5c0-4f8f0c070804","savedPayload":{"position":{"x":24007.812313106955,"y":33385.72339997991},"targetPosition":{"x":23717.0525374347,"y":33413.49594664315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"dfee6cb8-deff-4d50-a62f-1060e540069d"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n\"initialBalance\": 0\n}","id":"cd8ebc77-c890-4ef0-9b15-c8d55382399a","savedPayload":{"position":{"x":23920.410783044637,"y":33623.420831558695},"targetPosition":{"x":23717.0525374347,"y":33413.49594664315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"c427816f-d936-4bf9-bc61-a3163642fe13"}}},"timeRange":{"type":"Time Range","name":"New Time Range","code":"{\n\"finalDatetime\": \"2020-12-31\"\n}","id":"545e4f4a-fbfb-4195-a184-4c50886ba962","savedPayload":{"position":{"x":23680.007059076495,"y":33703.55168741717},"targetPosition":{"x":23717.0525374347,"y":33413.49594664315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"New Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"27f34b00-c47a-4cfe-9f70-f1d3d4b5b2a1","savedPayload":{"position":{"x":23467.196791372346,"y":33565.346750301374},"targetPosition":{"x":23717.0525374347,"y":33413.49594664315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"slippage":{"type":"Slippage","name":"New Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"202e02c0-201f-4af2-8053-5e256ccdb22f","savedPayload":{"position":{"x":23442.470828821344,"y":33313.16725456524},"targetPosition":{"x":23717.0525374347,"y":33413.49594664315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"New Fee Structure","code":"{\n\"maker\": 0.1,\n\"taker\": 0.1\n}","id":"571be861-dd18-4820-afce-1e632e22e976","savedPayload":{"position":{"x":23624.29508663287,"y":33136.59450054641},"targetPosition":{"x":23717.0525374347,"y":33413.49594664315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"0d16a5bf-133f-4503-9578-1159d75ba2fa","savedPayload":{"position":{"x":23717.0525374347,"y":33413.49594664315},"targetPosition":{"x":23876.04026122087,"y":33168.66607485644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"dcf7c50c-1136-4dec-a148-e2df09f2a9e0","savedPayload":{"position":{"x":23876.04026122087,"y":33168.66607485644},"targetPosition":{"x":24034.69013181409,"y":32924.242152607796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"WHB v.2 (BTC/USDT)","id":"126a9ca3-6075-4cb2-a65f-0073c3a0bc00"}}},"marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","keyInstance":{"type":"Key Instance","name":"New Exchange Account Key","id":"c8657962-8bb5-487f-a85b-6f7024682776","savedPayload":{"position":{"x":23451.53713453158,"y":32893.073321386066},"targetPosition":{"x":23743.122382660633,"y":32908.550850885644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"New Exchange Account Key","id":"0fd9bffa-8a0b-49f2-b000-77b5b551bc30"}}},"id":"fa90c1a0-aaf1-4d42-baef-0c91762b32e4","savedPayload":{"position":{"x":23743.122382660633,"y":32908.550850885644},"targetPosition":{"x":24034.69013181409,"y":32924.242152607796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"e31a03d5-398a-47e2-b58f-96ea26ae477b","savedPayload":{"position":{"x":24034.69013181409,"y":32924.242152607796},"targetPosition":{"x":24294.465629352195,"y":32792.18977833843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"62deab84-c6cb-4a2f-9a4d-63e5e7d132de","savedPayload":{"position":{"x":24294.465629352195,"y":32792.18977833843},"targetPosition":{"x":24554.597541904845,"y":32659.878400266534},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"07049a6b-fa1c-41cd-80ad-2cfe00c3a013","savedPayload":{"position":{"x":24554.597541904845,"y":32659.878400266534},"targetPosition":{"x":25074.76827912297,"y":32395.23240898645},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2297d2cf-94b0-44d9-9af1-4417b668a158","savedPayload":{"position":{"x":25074.76827912297,"y":32395.23240898645},"targetPosition":{"x":25508.423817624538,"y":32004.707222463276},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"l"}}}],"id":"c6a3f80b-c0c4-4c53-b92e-33824da99a9e","savedPayload":{"position":{"x":25507.91196393889,"y":32004.6087310614},"targetPosition":{"x":25941.905690583506,"y":31614.045691974294},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Crypto Exchange","name":"Bitfinex","id":"3ff59cad-42ae-4527-b060-4585cc4e7e1a"}}}],"id":"32656457-f603-416a-b805-546642094dc4","savedPayload":{"position":{"x":25941.905690583506,"y":31614.045691974294},"targetPosition":{"x":26122.378344035824,"y":31058.919069244217},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"u"}}},"id":"ce601334-52c5-4ffb-ab61-49ca1943a15a","savedPayload":{"position":{"x":26122.378344035824,"y":31058.919069244217},"targetPosition":{"x":24954.356993272086,"y":31054.918778615294},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"r"}}}],"id":"efbbc81b-93c8-4ce0-873e-675f39d333e8","savedPayload":{"position":{"x":24954.356993272086,"y":31054.918778615294},"targetPosition":{"x":24954.356993272086,"y":31054.918778615294},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"n"}}},{"type":"Crypto Ecosystem","name":"My Crypto Ecosystem","cryptoExchanges":[{"type":"Crypto Exchanges","name":"Tested","exchanges":[{"type":"Crypto Exchange","name":"Binance","code":"{\n \"codeName\": \"binance\",\n \"API\": [\n {\n \"method\": \"fetchTrades\",\n \"fetchType\": \"by Id\",\n \"fetchTradesMethod\": \"publicGetHistoricalTrades\",\n \"firstId\": \"f\"\n }\n ]\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"EUR\"} \n}","assets":[{"type":"Asset","name":"Bitcoin","code":"{ \n\"codeName\": \"BTC\"\n}","id":"b2814a75-fd57-45c4-a3cb-af276793e573","savedPayload":{"position":{"x":13881.746107982488,"y":30166.383454807205},"targetPosition":{"x":14134.618020637645,"y":30383.674279521667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Tether","code":"{ \n\"codeName\": \"USDT\"\n}","id":"04c5f172-6976-4557-b95f-38004b5201a6","savedPayload":{"position":{"x":14001.163831309763,"y":30078.054987280655},"targetPosition":{"x":14134.618020637645,"y":30383.674279521667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Ether","code":"{ \n\"codeName\": \"ETH\"\n}","id":"4175d47c-e12c-4902-b026-f4999a6d07a4","savedPayload":{"position":{"x":14146.587329391525,"y":30050.528383745037},"targetPosition":{"x":14134.618020637645,"y":30383.674279521667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Monero","code":"{ \n\"codeName\": \"XMR\"\n}","id":"e3b61070-77b9-4dcf-9862-7f05ffa237f3","savedPayload":{"position":{"x":14289.881729457267,"y":30088.818954941195},"targetPosition":{"x":14134.618020637645,"y":30383.674279521667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Stellar","code":"{ \n\"codeName\": \"XLM\"\n}","id":"6dee1e7e-80f3-4597-a28a-881af206ec14","savedPayload":{"position":{"x":14402.483296905688,"y":30185.703591638765},"targetPosition":{"x":14134.618020637645,"y":30383.674279521667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Ethereum Classic","code":"{ \n\"codeName\": \"ETC\"\n}","id":"59378d33-4833-495a-89bb-f739710be7d9","savedPayload":{"position":{"x":14461.716503415106,"y":30321.972961148054},"targetPosition":{"x":14134.618020637645,"y":30383.674279521667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"f4451bbc-50ea-4558-9b3c-abd3e757a76e","savedPayload":{"position":{"x":14134.618020637645,"y":30383.674279521667},"targetPosition":{"x":14048.908931328186,"y":30705.301361472557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"E"}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"ETH/BTC","code":"{ \n\"codeName\": \"ETH/BTC\"\n}","baseAsset":{"type":"Market Base Asset","name":"Ether","id":"caef787c-1b69-4961-8938-1a7459e3c492","savedPayload":{"position":{"x":14683.949212178428,"y":28823.51966164087},"targetPosition":{"x":15013.758500885777,"y":29402.379563940056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ether","id":"4175d47c-e12c-4902-b026-f4999a6d07a4"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Bitcoin","id":"bae3e3b5-ef5a-424e-b7ab-ead5701ff79f","savedPayload":{"position":{"x":14661.567869004604,"y":28468.244044604387},"targetPosition":{"x":15013.758500885777,"y":29402.379563940056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"b2814a75-fd57-45c4-a3cb-af276793e573"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"f51a0715-5670-4c63-b18b-cff660fe4325","savedPayload":{"position":{"x":14979.371680971717,"y":29239.0953979139},"targetPosition":{"x":15013.758500885777,"y":29402.379563940056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"2c1eaf11-3538-48cc-9fef-823bd9a674f4","savedPayload":{"position":{"x":14997.750940934722,"y":29069.20726231864},"targetPosition":{"x":15013.758500885777,"y":29402.379563940056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"a4562107-8fae-46ed-912c-062d82dbeec7","savedPayload":{"position":{"x":15013.758500885777,"y":29402.379563940056},"targetPosition":{"x":15199.745326050113,"y":30040.845592905156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"BTC/USDT","code":"{ \n\"codeName\": \"BTC/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"Bitcoin","id":"07b514a4-3ea2-4ab7-aeb0-07b48acb6f8d","savedPayload":{"position":{"x":14991.085510240457,"y":28735.493176036613},"targetPosition":{"x":15172.517323441607,"y":29376.46574426795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"b2814a75-fd57-45c4-a3cb-af276793e573"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"61e7d2b5-1672-4e11-8380-345a4fe4a991","savedPayload":{"position":{"x":15054.13034656402,"y":28385.079592132184},"targetPosition":{"x":15172.517323441607,"y":29376.46574426795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"04c5f172-6976-4557-b95f-38004b5201a6"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"a174a91f-0818-4fdc-88cd-20dbdf45c548","savedPayload":{"position":{"x":15178.214821807318,"y":29209.460444203774},"targetPosition":{"x":15172.517323441607,"y":29376.46574426795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"11beab3d-d894-4d20-9940-f864ba957f91","savedPayload":{"position":{"x":15236.747867149532,"y":29048.8489982442},"targetPosition":{"x":15172.517323441607,"y":29376.46574426795},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"5489751f-5ce4-40d0-9854-5bcfdc810269","savedPayload":{"position":{"x":15172.517323441607,"y":29376.46574426795},"targetPosition":{"x":15199.745326050113,"y":30040.845592905156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"ETH/USDT","code":"{ \n\"codeName\": \"ETH/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"Ether","id":"2cf69186-79fe-49b9-843e-a988a09e081b","savedPayload":{"position":{"x":15309.633251513882,"y":28723.265482998893},"targetPosition":{"x":15332.211857082333,"y":29389.206888791436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ether","id":"4175d47c-e12c-4902-b026-f4999a6d07a4"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"91ad4b55-3f61-43b8-891d-6200f9792176","savedPayload":{"position":{"x":15454.379943914028,"y":28398.181555354342},"targetPosition":{"x":15332.211857082333,"y":29389.206888791436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"04c5f172-6976-4557-b95f-38004b5201a6"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"ef8adaa0-8db5-4ac6-86ea-48b9ec3c69e9","savedPayload":{"position":{"x":15377.912252445649,"y":29228.381508312283},"targetPosition":{"x":15332.211857082333,"y":29389.206888791436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"1d5f08be-7632-4939-86aa-22bb249b8478","savedPayload":{"position":{"x":15473.044431451339,"y":29086.595631121825},"targetPosition":{"x":15332.211857082333,"y":29389.206888791436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"5f72971e-a0c3-4185-b7f5-6af0d1030895","savedPayload":{"position":{"x":15332.211857082333,"y":29389.206888791436},"targetPosition":{"x":15199.745326050113,"y":30040.845592905156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"ETC/ETH","code":"{ \n\"codeName\": \"ETC/ETH\"\n}","baseAsset":{"type":"Market Base Asset","name":"Ethereum Classic","id":"045962ab-6e4a-4b20-910d-36e5290621c7","savedPayload":{"position":{"x":15621.636185366608,"y":28787.891447934042},"targetPosition":{"x":15484.443927263726,"y":29440.07904255231},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ethereum Classic","id":"59378d33-4833-495a-89bb-f739710be7d9"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Ether","id":"c33e6eff-9797-4df0-be7b-e6f8b4013612","savedPayload":{"position":{"x":15840.359500730732,"y":28507.113044995906},"targetPosition":{"x":15484.443927263726,"y":29440.07904255231},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ether","id":"4175d47c-e12c-4902-b026-f4999a6d07a4"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"cd0cb65d-fc3e-4443-b85f-0bde5f9b19bd","savedPayload":{"position":{"x":15567.375796507338,"y":29294.981852930643},"targetPosition":{"x":15484.443927263726,"y":29440.07904255231},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"85199376-3027-43ec-8b58-1c8cb49db255","savedPayload":{"position":{"x":15693.889388062913,"y":29179.935691268016},"targetPosition":{"x":15484.443927263726,"y":29440.07904255231},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"4c38325e-3531-4e38-805e-aa05346bccce","savedPayload":{"position":{"x":15484.443927263726,"y":29440.07904255231},"targetPosition":{"x":15199.745326050113,"y":30040.845592905156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"ETC/BTC","code":"{ \n\"codeName\": \"ETC/BTC\"\n}","baseAsset":{"type":"Market Base Asset","name":"Ethereum Classic","id":"fd21520b-404a-4aa6-8ee5-fdf5954caed7","savedPayload":{"position":{"x":15909.216299353053,"y":28925.531549336672},"targetPosition":{"x":15620.06032497394,"y":29525.842304871137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ethereum Classic","id":"59378d33-4833-495a-89bb-f739710be7d9"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Bitcoin","id":"c0eba323-dd38-41b1-a433-64d835da73f2","savedPayload":{"position":{"x":16188.90211686927,"y":28705.0871375565},"targetPosition":{"x":15620.06032497394,"y":29525.842304871137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"b2814a75-fd57-45c4-a3cb-af276793e573"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"583ebe0a-f3c3-44d7-85c6-7dc5535a0711","savedPayload":{"position":{"x":15735.506012082722,"y":29405.010390227577},"targetPosition":{"x":15620.06032497394,"y":29525.842304871137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"09b71b94-3a41-4b6a-b137-09f15ef65f49","savedPayload":{"position":{"x":15885.652627071342,"y":29323.570169116094},"targetPosition":{"x":15620.06032497394,"y":29525.842304871137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"3deec998-a14d-4c9c-b07d-8aa628497aab","savedPayload":{"position":{"x":15620.06032497394,"y":29525.842304871137},"targetPosition":{"x":15199.745326050113,"y":30040.845592905156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"XMR/BTC","code":"{ \n\"codeName\": \"XMR/BTC\"\n}","baseAsset":{"type":"Market Base Asset","name":"Monero","id":"b35a22ac-27a0-471e-b4ca-75e790be573a","savedPayload":{"position":{"x":16155.7721177876,"y":29127.9477443119},"targetPosition":{"x":15731.226490292076,"y":29641.494962412027},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Monero","id":"e3b61070-77b9-4dcf-9862-7f05ffa237f3"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Bitcoin","id":"52ea548b-69b5-4edf-a3f1-0ab5dfcbefdc","savedPayload":{"position":{"x":16479.931651009338,"y":28980.822662536644},"targetPosition":{"x":15731.226490292076,"y":29641.494962412027},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"b2814a75-fd57-45c4-a3cb-af276793e573"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"8d1fb872-2f99-4f22-9805-28f3baa6fc90","savedPayload":{"position":{"x":15872.274263095778,"y":29551.89239168283},"targetPosition":{"x":15731.226490292076,"y":29641.494962412027},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"b90af82c-e400-48fd-8c2f-1fd20caab789","savedPayload":{"position":{"x":16037.513684106982,"y":29508.679829690413},"targetPosition":{"x":15731.226490292076,"y":29641.494962412027},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"5d83135c-7940-4ae1-ac6a-2b05f3548d75","savedPayload":{"position":{"x":15731.226490292076,"y":29641.494962412027},"targetPosition":{"x":15199.745326050113,"y":30040.845592905156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"XMR/ETH","code":"{ \n\"codeName\": \"XMR/ETH\"\n}","baseAsset":{"type":"Market Base Asset","name":"Monero","id":"9cd17225-608d-44d2-b300-599f85ed7e3a","savedPayload":{"position":{"x":16346.708505258845,"y":29383.235016293762},"targetPosition":{"x":15811.428961746855,"y":29780.301798293218},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Monero","id":"e3b61070-77b9-4dcf-9862-7f05ffa237f3"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Ether","id":"60fadc60-2c7b-4914-9702-572bc03fd8e4","savedPayload":{"position":{"x":16696.531940594006,"y":29318.140810019035},"targetPosition":{"x":15811.428961746855,"y":29780.301798293218},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ether","id":"4175d47c-e12c-4902-b026-f4999a6d07a4"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"1e9844c2-a658-406a-802f-b424aeb8b509","savedPayload":{"position":{"x":15969.808273647559,"y":29727.140270047028},"targetPosition":{"x":15811.428961746855,"y":29780.301798293218},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"6d13c2c7-2ded-4279-8747-1fd2c8665ee2","savedPayload":{"position":{"x":16140.668803090555,"y":29724.811673996504},"targetPosition":{"x":15811.428961746855,"y":29780.301798293218},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"64b3d21b-4453-4513-a80b-15a7cb1f5578","savedPayload":{"position":{"x":15811.428961746855,"y":29780.301798293218},"targetPosition":{"x":15199.745326050113,"y":30040.845592905156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"XLM/BTC","code":"{ \n\"codeName\": \"XLM/BTC\"\n}","baseAsset":{"type":"Market Base Asset","name":"Stellar","id":"d55e9669-0ed1-482f-9a1a-927e908fa6c1","savedPayload":{"position":{"x":16470.68187019427,"y":29677.244570821847},"targetPosition":{"x":15856.091112790951,"y":29934.518092502418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Stellar","id":"6dee1e7e-80f3-4597-a28a-881af206ec14"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Bitcoin","id":"6993b34f-0706-4eff-a376-e2c33d80f731","savedPayload":{"position":{"x":16826.046026738204,"y":29697.72928260898},"targetPosition":{"x":15856.091112790951,"y":29934.518092502418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"b2814a75-fd57-45c4-a3cb-af276793e573"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"e7e0a1bd-bcfc-45ff-888c-fe5cef85b268","savedPayload":{"position":{"x":16022.752030649388,"y":29920.770310187338},"targetPosition":{"x":15856.091112790951,"y":29934.518092502418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"f998830f-e16c-4d5e-b1bf-14c6c9e93e8e","savedPayload":{"position":{"x":16189.071464535122,"y":29959.05039255341},"targetPosition":{"x":15856.091112790951,"y":29934.518092502418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"6024e186-610e-47a2-847a-50e2ebe5e889","savedPayload":{"position":{"x":15856.091112790951,"y":29934.518092502418},"targetPosition":{"x":15199.745326050113,"y":30040.845592905156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"XLM/ETH","code":"{ \n\"codeName\": \"XLM/ETH\"\n}","baseAsset":{"type":"Market Base Asset","name":"Stellar","id":"df31a89f-2de4-4716-be37-5788ec5b569a","savedPayload":{"position":{"x":16520.995179479436,"y":29991.82301633459},"targetPosition":{"x":15862.45656552024,"y":30094.486258003137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Stellar","id":"6dee1e7e-80f3-4597-a28a-881af206ec14"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Ether","id":"b722ebc5-be2a-4f04-910f-7362459bf76d","savedPayload":{"position":{"x":16861.133280586255,"y":30096.427353070878},"targetPosition":{"x":15862.45656552024,"y":30094.486258003137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ether","id":"4175d47c-e12c-4902-b026-f4999a6d07a4"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"71f4bd2f-8136-4b91-a8f5-59f19fae6acb","savedPayload":{"position":{"x":16027.615022008687,"y":30120.771833214287},"targetPosition":{"x":15862.45656552024,"y":30094.486258003137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"3b72f6ad-766f-4d7d-a01e-5afc00696302","savedPayload":{"position":{"x":16179.77838466755,"y":30198.170714920256},"targetPosition":{"x":15862.45656552024,"y":30094.486258003137},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"d9790708-5efe-4d9e-a6d2-98df66b3a30b","savedPayload":{"position":{"x":15862.45656552024,"y":30094.486258003137},"targetPosition":{"x":15199.745326050113,"y":30040.845592905156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"XLM/USDT","code":"{ \n\"codeName\": \"XLM/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"Stellar","id":"ccba1074-a485-4696-b657-21efff2ca526","savedPayload":{"position":{"x":16494.430643997457,"y":30309.38181521019},"targetPosition":{"x":15830.43050438644,"y":30251.712403081976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Stellar","id":"6dee1e7e-80f3-4597-a28a-881af206ec14"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"6d4aae38-bce5-4230-aec2-21de584d3892","savedPayload":{"position":{"x":16799.41066119326,"y":30492.54644380222},"targetPosition":{"x":15830.43050438644,"y":30251.712403081976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"04c5f172-6976-4557-b95f-38004b5201a6"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"f1c57dc0-95d7-4e12-bdbf-19ac7a21c93b","savedPayload":{"position":{"x":15984.244160083803,"y":30317.037626475445},"targetPosition":{"x":15830.43050438644,"y":30251.712403081976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"4e12af51-a367-40e6-9383-4ca7a239adb1","savedPayload":{"position":{"x":16113.778611912847,"y":30428.50774928771},"targetPosition":{"x":15830.43050438644,"y":30251.712403081976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"b5e9a8a5-577c-4b12-a5cf-6ccb2838c1f7","savedPayload":{"position":{"x":15830.43050438644,"y":30251.712403081976},"targetPosition":{"x":15199.745326050113,"y":30040.845592905156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"ETC/USDT","code":"{ \n\"codeName\": \"ETC/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"Ethereum Classic","id":"e982ac6b-a219-4762-8911-92c856d1ae49","savedPayload":{"position":{"x":16392.172517128838,"y":30611.53824566343},"targetPosition":{"x":15761.444064742087,"y":30396.675664231312},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ethereum Classic","id":"59378d33-4833-495a-89bb-f739710be7d9"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"cdc29a59-ad79-4443-87b1-5143547e25f1","savedPayload":{"position":{"x":16644.73112179388,"y":30862.511811576405},"targetPosition":{"x":15761.444064742087,"y":30396.675664231312},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"04c5f172-6976-4557-b95f-38004b5201a6"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"7fd30bfa-c36d-440b-a21c-1339cc25de29","savedPayload":{"position":{"x":15894.993961462682,"y":30497.009281429393},"targetPosition":{"x":15761.444064742087,"y":30396.675664231312},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"04cd47a2-4473-441e-b1dd-e85028e1d84d","savedPayload":{"position":{"x":15993.938306498243,"y":30636.14988765567},"targetPosition":{"x":15761.444064742087,"y":30396.675664231312},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"eedb6cd4-7a44-406e-9e14-3cae5348a68a","savedPayload":{"position":{"x":15761.444064742087,"y":30396.675664231312},"targetPosition":{"x":15199.745326050113,"y":30040.845592905156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"XMR/USDT","code":"{ \n\"codeName\": \"XMR/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"Monero","id":"3174036f-0b2c-4263-82aa-4b63abecbbe5","savedPayload":{"position":{"x":16220.524266592896,"y":30880.714828345255},"targetPosition":{"x":15659.74148829034,"y":30521.049502788486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Monero","id":"e3b61070-77b9-4dcf-9862-7f05ffa237f3"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"a9be98b5-71b9-4bfa-97fa-5916144fe545","savedPayload":{"position":{"x":16405.613739938843,"y":31184.6529891686},"targetPosition":{"x":15659.74148829034,"y":30521.049502788486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"04c5f172-6976-4557-b95f-38004b5201a6"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"856b11ca-d845-468d-8508-e7165f5b8b2b","savedPayload":{"position":{"x":15765.297537380879,"y":30650.4849871332},"targetPosition":{"x":15659.74148829034,"y":30521.049502788486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"307f543e-5ee5-448a-ae37-34fd6e1be2c5","savedPayload":{"position":{"x":15828.171515848706,"y":30809.25808929124},"targetPosition":{"x":15659.74148829034,"y":30521.049502788486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"9c20010d-f1d6-401c-8599-f9c39849896c","savedPayload":{"position":{"x":15659.74148829034,"y":30521.049502788486},"targetPosition":{"x":15199.745326050113,"y":30040.845592905156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0e1257c5-49b1-4b52-8942-9bdef72854d2","savedPayload":{"position":{"x":15199.745326050113,"y":30040.845592905156},"targetPosition":{"x":14048.908931328186,"y":30705.301361472557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b","savedPayload":{"position":{"x":15074.435413002448,"y":30465.10376049055},"targetPosition":{"x":15013.176451259393,"y":30792.13163946197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"b2814a75-fd57-45c4-a3cb-af276793e573"}}},{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da","savedPayload":{"position":{"x":15210.55830122106,"y":30524.60479274258},"targetPosition":{"x":15013.176451259393,"y":30792.13163946197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"04c5f172-6976-4557-b95f-38004b5201a6"}}},{"type":"Exchange Account Asset","name":"Ether","id":"b3d0800f-f430-4549-86e9-68001c43fa1f","savedPayload":{"position":{"x":15307.397104450709,"y":30637.07244974632},"targetPosition":{"x":15013.176451259393,"y":30792.13163946197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ether","id":"4175d47c-e12c-4902-b026-f4999a6d07a4"}}},{"type":"Exchange Account Asset","name":"Monero","id":"ee25ff6a-8b3d-4f30-8acf-71ca4b186195","savedPayload":{"position":{"x":15345.988289176796,"y":30780.454395666362},"targetPosition":{"x":15013.176451259393,"y":30792.13163946197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Monero","id":"e3b61070-77b9-4dcf-9862-7f05ffa237f3"}}},{"type":"Exchange Account Asset","name":"Stellar","id":"5716ea79-1392-4f6d-a46e-dba38ab9b39e","savedPayload":{"position":{"x":15318.577757927536,"y":30925.694677157324},"targetPosition":{"x":15013.176451259393,"y":30792.13163946197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Stellar","id":"6dee1e7e-80f3-4597-a28a-881af206ec14"}}},{"type":"Exchange Account Asset","name":"Ethereum Classic","id":"d9d0d41c-67a9-42ea-8c64-067647ee53a4","savedPayload":{"position":{"x":15230.478533653264,"y":31045.124266934283},"targetPosition":{"x":15013.176451259393,"y":30792.13163946197},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ethereum Classic","id":"59378d33-4833-495a-89bb-f739710be7d9"}}}],"id":"f7bbfcc0-2359-4de1-8ddc-5e117bde0c52","savedPayload":{"position":{"x":15013.176451259393,"y":30792.13163946197},"targetPosition":{"x":14691.62362044186,"y":30877.951080432365},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"88eab4e5-3be4-4982-93fa-e95bcb1ab559","savedPayload":{"position":{"x":15162.413994918546,"y":31349.78077566514},"targetPosition":{"x":14926.91187352331,"y":31113.94127567297},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"cf3895fd-4f0c-4bd8-8afb-886a718cc891","savedPayload":{"position":{"x":14926.91187352331,"y":31113.94127567297},"targetPosition":{"x":14691.62362044186,"y":30877.951080432365},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a718949a-e315-4bda-8523-b0b03e3ca507","savedPayload":{"position":{"x":14691.62362044186,"y":30877.951080432365},"targetPosition":{"x":14370.262003574557,"y":30791.59237984228},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a913b30b-17d3-4b2b-9c39-9c7dc67f0000","savedPayload":{"position":{"x":14370.262003574557,"y":30791.59237984228},"targetPosition":{"x":14048.908931328186,"y":30705.301361472557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"22d2b36e-7a77-40a6-8948-b7d0fb744923","savedPayload":{"position":{"x":14048.908931328186,"y":30705.301361472557},"targetPosition":{"x":13472.089084145033,"y":31038.238417054105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""}}},{"type":"Crypto Exchange","name":"Bitfinex","code":"{\n \"codeName\": \"bitfinex\",\n \"API\": [\n {\n \"method\": \"fetchTrades\",\n \"class\": \"bitfinex2\"\n },\n {\n \"method\": \"fetch_ohlcv\",\n \"rateLimit\": 2000\n }\n ]\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"BTC\"} \n}","assets":[{"type":"Asset","name":"Bitcoin","code":"{ \n\"codeName\": \"BTC\"\n}","id":"66046275-e148-4d18-8bbd-ad8dcd2ade99","savedPayload":{"position":{"x":14558.813602270711,"y":30990.675978046696},"targetPosition":{"x":14391.838089015106,"y":31279.344186766666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Tether","code":"{ \n\"codeName\": \"USDT\"\n}","id":"27ae18d2-032b-41f8-bafc-a24fa4933194","savedPayload":{"position":{"x":14714.078404493384,"y":31193.024918853906},"targetPosition":{"x":14391.838089015106,"y":31279.344186766666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Ether","code":"{ \n\"codeName\": \"ETH\"\n}","id":"4bfba898-c803-4bb6-924f-c9b67c1667de","savedPayload":{"position":{"x":14680.77766683428,"y":31445.599782613306},"targetPosition":{"x":14391.838089015106,"y":31279.344186766666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"dc376d73-e403-43ce-9044-5ff5fcd6de4e","savedPayload":{"position":{"x":14391.838089015106,"y":31279.344186766666},"targetPosition":{"x":14048.972010509444,"y":31371.189457336757},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"BTC/USDT","code":"{ \n\"codeName\": \"BTC/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"Bitcoin","id":"4d9d7d28-c531-41af-96bd-0fd83d3a958d","savedPayload":{"position":{"x":16428.066630140675,"y":31545.36158315597},"targetPosition":{"x":15842.798658215152,"y":31863.746152856827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"66046275-e148-4d18-8bbd-ad8dcd2ade99"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"3c286c18-238f-446c-9d0c-f454ee45aaf1","savedPayload":{"position":{"x":16471.036498365596,"y":31641.818733488122},"targetPosition":{"x":15842.798658215152,"y":31863.746152856827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"27ae18d2-032b-41f8-bafc-a24fa4933194"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"52d55987-e468-43fb-a93e-f92d720fa67e","savedPayload":{"position":{"x":16170.326573720717,"y":31803.10475879089},"targetPosition":{"x":15842.798658215152,"y":31863.746152856827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"c3f246a4-958a-4cc1-8ffb-888c360950ca","savedPayload":{"position":{"x":16508.28188073202,"y":31846.57241847902},"targetPosition":{"x":15842.798658215152,"y":31863.746152856827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"b734f59f-f29c-450b-a6e4-6d2345a1082a","savedPayload":{"position":{"x":15842.798658215152,"y":31863.746152856827},"targetPosition":{"x":15200.566277083002,"y":32035.87781770284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"ETH/USDT","code":"{ \n\"codeName\": \"ETH/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"Ether","id":"290ac053-86ee-4f35-9591-8b71afe3439a","savedPayload":{"position":{"x":16415.473825988458,"y":32556.81684232659},"targetPosition":{"x":15776.434217885359,"y":32368.238415141033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ether","id":"4bfba898-c803-4bb6-924f-c9b67c1667de"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"c04498d8-5dd7-4a2e-b064-34d43a8e2eba","savedPayload":{"position":{"x":16377.753478428092,"y":32655.218562611753},"targetPosition":{"x":15776.434217885359,"y":32368.238415141033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"27ae18d2-032b-41f8-bafc-a24fa4933194"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"8a5671ae-0cbf-447c-96ee-6f80ad113c23","savedPayload":{"position":{"x":16324.85087650604,"y":32745.59201774114},"targetPosition":{"x":15776.434217885359,"y":32368.238415141033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"4216b417-fcc1-4428-98a5-77d6f0783192","savedPayload":{"position":{"x":16259.002848564229,"y":32826.76726792272},"targetPosition":{"x":15776.434217885359,"y":32368.238415141033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"e0b33e47-b62e-46df-ad42-5abc4a982629","savedPayload":{"position":{"x":15776.434217885359,"y":32368.238415141033},"targetPosition":{"x":15200.566277083002,"y":32035.87781770284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"ETH/BTC","code":"{ \n\"codeName\": \"ETH/BTC\"\n}","baseAsset":{"type":"Market Base Asset","name":"Ether","id":"9f67e425-d0ea-47bd-98f2-1b8e80a814d4","savedPayload":{"position":{"x":15690.910641031203,"y":33263.41129346548},"targetPosition":{"x":15372.495509451843,"y":32678.16108631171},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ether","id":"4bfba898-c803-4bb6-924f-c9b67c1667de"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Bitcoin","id":"290b695b-6ba3-4d62-8748-5d1f0624ffc5","savedPayload":{"position":{"x":15594.65579380331,"y":33306.31743631578},"targetPosition":{"x":15372.495509451843,"y":32678.16108631171},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"66046275-e148-4d18-8bbd-ad8dcd2ade99"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"d896cc45-b9b1-4eab-85a9-e939c1cc6852","savedPayload":{"position":{"x":15493.341834568446,"y":33332.81054489599},"targetPosition":{"x":15372.495509451843,"y":32678.16108631171},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"35bd6023-4309-46db-ae78-fd1a1b692c19","savedPayload":{"position":{"x":15389.37604492513,"y":33343.645034907815},"targetPosition":{"x":15372.495509451843,"y":32678.16108631171},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"8fe121d7-85a5-4782-807c-f43cfa34144f","savedPayload":{"position":{"x":15372.495509451843,"y":32678.16108631171},"targetPosition":{"x":15200.566277083002,"y":32035.87781770284},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dc6b67a9-30d0-4b69-9e10-dd6856e9dd4c","savedPayload":{"position":{"x":15200.566277083002,"y":32035.87781770284},"targetPosition":{"x":14048.972010509444,"y":31371.189457336757},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[{"type":"Exchange Account Asset","name":"Bitcoin","id":"dfee6cb8-deff-4d50-a62f-1060e540069d","savedPayload":{"position":{"x":14795.43855829302,"y":32271.442840999083},"targetPosition":{"x":14462.224488758851,"y":32271.138653940736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"66046275-e148-4d18-8bbd-ad8dcd2ade99"}}},{"type":"Exchange Account Asset","name":"Tether","id":"c427816f-d936-4bf9-bc61-a3163642fe13","savedPayload":{"position":{"x":14697.851070846615,"y":32507.09967985685},"targetPosition":{"x":14462.224488758851,"y":32271.138653940736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"27ae18d2-032b-41f8-bafc-a24fa4933194"}}},{"type":"Exchange Account Asset","name":"Ether","id":"02712709-2952-425b-b53e-447d75d753ed","savedPayload":{"position":{"x":14462.302162894282,"y":32604.745132236305},"targetPosition":{"x":14462.224488758851,"y":32271.138653940736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ether","id":"4bfba898-c803-4bb6-924f-c9b67c1667de"}}}],"id":"c9dfde0f-314b-4f5c-9102-12c223b09066","savedPayload":{"position":{"x":14462.224488758851,"y":32271.138653940736},"targetPosition":{"x":14226.766758870426,"y":32035.905089291617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"0fd9bffa-8a0b-49f2-b000-77b5b551bc30","savedPayload":{"position":{"x":14054.311501638032,"y":32679.63939229716},"targetPosition":{"x":14140.397287209184,"y":32357.51634113637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"6d6d1bcf-8831-43b9-9b6c-84fb424141a0","savedPayload":{"position":{"x":14140.397287209184,"y":32357.51634113637},"targetPosition":{"x":14226.766758870426,"y":32035.905089291617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4754bc6a-51c8-4586-853b-9813b1a87dc3","savedPayload":{"position":{"x":14226.766758870426,"y":32035.905089291617},"targetPosition":{"x":14140.679185938881,"y":31713.97446144913},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f3c4d9e5-4cd2-4629-a49f-5eeadcfa0687","savedPayload":{"position":{"x":14140.679185938881,"y":31713.97446144913},"targetPosition":{"x":14048.972010509444,"y":31371.189457336757},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3ff59cad-42ae-4527-b060-4585cc4e7e1a","savedPayload":{"position":{"x":14049.090639945272,"y":31371.552626988883},"targetPosition":{"x":13472.089084145033,"y":31038.238417054105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c16f8dd4-05f5-45db-8a47-713eb1116f72","savedPayload":{"position":{"x":13472.089084145033,"y":31038.238417054105},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchanges","name":"Untested","exchanges":[{"type":"Crypto Exchange","name":"Bequant","code":"{ \n\"codeName\": \"bequant\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"BTC\"} \n}","assets":[],"id":"cc05f1f3-95bf-462d-8982-8d3c58e8d23d","savedPayload":{"position":{"x":13093.18639070419,"y":30685.472563031715},"targetPosition":{"x":12855.66263889202,"y":31162.16911834762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"New Market","code":"{ \n\"codeName\": \"Write here the name of the market as it is defined at the CCXT library.\"\n}","baseAsset":{"type":"Market Base Asset","name":"","id":"0a2cf9d2-5dd8-431f-9b70-d752caf3a966","savedPayload":{"position":{"x":15087.887086581479,"y":29441.827903984344},"targetPosition":{"x":14875.782728617625,"y":30485.686273416068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"quotedAsset":{"type":"Market Quoted Asset","name":"","id":"b0237d1f-bbac-4e94-9fe1-99693e47999b","savedPayload":{"position":{"x":15673.738415516575,"y":31191.303220382015},"targetPosition":{"x":14875.782728617625,"y":30485.686273416068},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"superActions":[],"id":"88e751fd-2d4a-4351-9c87-ff79f8a0d3b7","savedPayload":{"position":{"x":14875.782728617625,"y":30485.686273416068},"targetPosition":{"x":13865.722683754822,"y":30823.927695881845},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"dc316aad-4ea0-411a-9a3f-3f0821acf91b","savedPayload":{"position":{"x":13865.722683754822,"y":30823.927695881845},"targetPosition":{"x":12855.66263889202,"y":31162.16911834762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"647664ab-e32c-4879-aa35-18caea0d096e","savedPayload":{"position":{"x":13554.384134572667,"y":31252.658144712783},"targetPosition":{"x":13332.359194207926,"y":31399.692870159794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"358369ac-eb7b-4e4a-a732-16c55e840eec","savedPayload":{"position":{"x":13365.00586879435,"y":31931.286072865987},"targetPosition":{"x":13348.682531501137,"y":31665.48947151289},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"3fcc7cc4-5445-41bb-b00f-1a8eb4f458eb","savedPayload":{"position":{"x":13348.682531501137,"y":31665.48947151289},"targetPosition":{"x":13332.359194207926,"y":31399.692870159794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"58b6d558-0dd5-4c19-b106-a23e47d8fc40","savedPayload":{"position":{"x":13332.359194207926,"y":31399.692870159794},"targetPosition":{"x":13094.010916549973,"y":31280.930994253707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3997897b-821b-4b9e-8056-647227738305","savedPayload":{"position":{"x":13094.010916549973,"y":31280.930994253707},"targetPosition":{"x":12855.66263889202,"y":31162.16911834762},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4f8afd83-39cb-40e4-a7d3-7db8f553511a","savedPayload":{"position":{"x":12939.308626374805,"y":31046.595401486727},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Bibox","code":"{ \n\"codeName\": \"bibox\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"BTC\"} \n}","assets":[],"id":"17b31081-51c7-4ba4-aa9c-b7a1916dfbde","savedPayload":{"position":{"x":13185.487631741924,"y":30848.262303776402},"targetPosition":{"x":12890.09090495099,"y":31291.43034450834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"New Market","code":"{ \n\"codeName\": \"Write here the name of the market as it is defined at the CCXT library.\"\n}","baseAsset":{"type":"Market Base Asset","name":"","id":"c7bae942-f7bf-4972-a3db-2ce05806fc2c","savedPayload":{"position":{"x":15320.329523367385,"y":29864.426442531545},"targetPosition":{"x":14979.067526794537,"y":30873.469951898227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"quotedAsset":{"type":"Market Quoted Asset","name":"","id":"e30b2409-5a87-400f-8924-0b88f39a614b","savedPayload":{"position":{"x":15682.293841143462,"y":31673.533264959853},"targetPosition":{"x":14979.067526794537,"y":30873.469951898227},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"superActions":[],"id":"026fcfa1-76ac-49a1-99f5-a424a8368a27","savedPayload":{"position":{"x":14979.067526794537,"y":30873.469951898227},"targetPosition":{"x":13934.579215872764,"y":31082.450148203283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"6466f001-a903-4397-8868-2f1687b7882f","savedPayload":{"position":{"x":13934.579215872764,"y":31082.450148203283},"targetPosition":{"x":12890.09090495099,"y":31291.43034450834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"1f109135-1209-46d9-8e8e-62bb419c8ed3","savedPayload":{"position":{"x":13571.96149066377,"y":31468.77886228739},"targetPosition":{"x":13333.258945682926,"y":31586.82707129927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"006e65c0-aa64-4413-887b-2ca64c29ce49","savedPayload":{"position":{"x":13299.021896453174,"y":32118.320216113967},"targetPosition":{"x":13316.14042106805,"y":31852.57364370662},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"b42fa1e0-34a7-426f-b6cc-2e5a06c327e2","savedPayload":{"position":{"x":13316.14042106805,"y":31852.57364370662},"targetPosition":{"x":13333.258945682926,"y":31586.82707129927},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2bd7beba-2468-4c20-98c5-787e5fc64b7c","savedPayload":{"position":{"x":13333.258945682926,"y":31586.82707129927},"targetPosition":{"x":13111.674925316958,"y":31439.128707903805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"62a8c01c-b5f9-408f-b2f3-87365da618b7","savedPayload":{"position":{"x":13111.674925316958,"y":31439.128707903805},"targetPosition":{"x":12890.09090495099,"y":31291.43034450834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2ea5ceab-359a-414d-ad7f-37e8414ca728","savedPayload":{"position":{"x":13065.472804659335,"y":31071.079620467193},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"BitMart","code":"{ \n\"codeName\": \"bitmart\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"BTC\"} \n}","assets":[],"id":"84d13c55-313b-4864-90bb-2c5b9a1555e6","savedPayload":{"position":{"x":13256.658085326404,"y":31021.336811793644},"targetPosition":{"x":12908.046966399652,"y":31423.98731320351},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"New Market","code":"{ \n\"codeName\": \"Write here the name of the market as it is defined at the CCXT library.\"\n}","baseAsset":{"type":"Market Base Asset","name":"","id":"fa0e5126-ac5b-47fc-899b-4d7f224bdcf9","savedPayload":{"position":{"x":15497.973440776377,"y":30312.825427598178},"targetPosition":{"x":15032.935711140522,"y":31271.140857983733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"quotedAsset":{"type":"Market Quoted Asset","name":"","id":"956c3984-4b23-43b6-9929-ffd66397ab26","savedPayload":{"position":{"x":15630.342353875103,"y":32153.0330607594},"targetPosition":{"x":15032.935711140522,"y":31271.140857983733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"superActions":[],"id":"32036092-2868-49bd-8246-135051e76ac3","savedPayload":{"position":{"x":15032.935711140522,"y":31271.140857983733},"targetPosition":{"x":13970.491338770087,"y":31347.56408559362},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"003b0a9a-0129-4a48-b3e2-05d4fce01527","savedPayload":{"position":{"x":13970.491338770087,"y":31347.56408559362},"targetPosition":{"x":12908.046966399652,"y":31423.98731320351},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"12cf8b72-3cee-42f9-830f-901ad15220f7","savedPayload":{"position":{"x":13562.313135678127,"y":31685.39843032821},"targetPosition":{"x":13310.697467809518,"y":31772.598432130264},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"eef1e31a-2013-428b-ac07-55c17d638284","savedPayload":{"position":{"x":13210.116633482165,"y":32295.60955466113},"targetPosition":{"x":13260.407050645841,"y":32034.103993395696},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"a0398dce-4873-4f9a-b99a-c5842f2f7eb8","savedPayload":{"position":{"x":13260.407050645841,"y":32034.103993395696},"targetPosition":{"x":13310.697467809518,"y":31772.598432130264},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b099ab31-1480-4aeb-bc8c-7f71a220a242","savedPayload":{"position":{"x":13310.697467809518,"y":31772.598432130264},"targetPosition":{"x":13109.372217104585,"y":31598.292872666887},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fa8632e1-d8d6-46ac-9a06-b5aa6a0ada07","savedPayload":{"position":{"x":13109.372217104585,"y":31598.292872666887},"targetPosition":{"x":12908.046966399652,"y":31423.98731320351},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"875a00bb-b086-41ae-bbff-dd1fdd7cab87","savedPayload":{"position":{"x":13190.140398799513,"y":31111.687160795107},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"BitMax","code":"{ \n\"codeName\": \"bitmax\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"BTC\"} \n}","assets":[],"id":"85beb7ae-1569-43aa-9993-1f5e0714d4ca","savedPayload":{"position":{"x":13305.575350889432,"y":31201.966598702296},"targetPosition":{"x":12909.247645422525,"y":31557.74952185111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"New Market","code":"{ \n\"codeName\": \"Write here the name of the market as it is defined at the CCXT library.\"\n}","baseAsset":{"type":"Market Base Asset","name":"","id":"1361c607-fc61-49cf-b412-65a442476471","savedPayload":{"position":{"x":15618.017288111569,"y":30779.95333932918},"targetPosition":{"x":15036.537748209143,"y":31672.427483926534},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"quotedAsset":{"type":"Market Quoted Asset","name":"","id":"5f56ebcf-8a2c-4e75-ba53-4ae915ca4cc8","savedPayload":{"position":{"x":15518.703259700025,"y":32622.240609561602},"targetPosition":{"x":15036.537748209143,"y":31672.427483926534},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"superActions":[],"id":"1098cef6-7410-49a3-b711-81bd7894fc6a","savedPayload":{"position":{"x":15036.537748209143,"y":31672.427483926534},"targetPosition":{"x":13972.892696815834,"y":31615.088502888822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4fc5a028-1c22-477b-b1a0-4081fa2339b3","savedPayload":{"position":{"x":13972.892696815834,"y":31615.088502888822},"targetPosition":{"x":12909.247645422525,"y":31557.74952185111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"eff331cd-b4b1-4887-8f56-b289f773de88","savedPayload":{"position":{"x":13525.591229937512,"y":31899.100628844964},"targetPosition":{"x":13265.03056857134,"y":31954.07722731802},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"e6457ed0-2d3c-433a-bd66-b04c8d90ba5b","savedPayload":{"position":{"x":13099.692168987807,"y":32460.35812973103},"targetPosition":{"x":13182.361368779573,"y":32207.217678524525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"1e42fbef-b13c-4234-999e-d8a6993d7e2a","savedPayload":{"position":{"x":13182.361368779573,"y":32207.217678524525},"targetPosition":{"x":13265.03056857134,"y":31954.07722731802},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f61ef8f3-2e44-4753-b1c4-1a7958ff7b83","savedPayload":{"position":{"x":13265.03056857134,"y":31954.07722731802},"targetPosition":{"x":13087.139106996932,"y":31755.913374584565},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2e0deaae-0d22-4ff2-862e-e28292a2e20b","savedPayload":{"position":{"x":13087.139106996932,"y":31755.913374584565},"targetPosition":{"x":12909.247645422525,"y":31557.74952185111},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"eecf368e-46ae-40ea-8538-c1e2afa74207","savedPayload":{"position":{"x":13308.81782861436,"y":31167.70301079564},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Buda","code":"{ \n\"codeName\": \"buda\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"BTC\"} \n}","assets":[],"id":"9a8ec6a1-db4d-4697-86ac-accf01664a29","savedPayload":{"position":{"x":13331.467973931329,"y":31387.303024859808},"targetPosition":{"x":12893.674006594174,"y":31690.607460515097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"New Market","code":"{ \n\"codeName\": \"Write here the name of the market as it is defined at the CCXT library.\"\n}","baseAsset":{"type":"Market Base Asset","name":"","id":"1a232899-1d77-4470-9db9-1344a8c8c512","savedPayload":{"position":{"x":15678.567902189789,"y":31258.44329150785},"targetPosition":{"x":14989.816831724089,"y":32071.001299918495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"quotedAsset":{"type":"Market Quoted Asset","name":"","id":"ae5aca83-1664-4c8f-91cd-1874b933858e","savedPayload":{"position":{"x":15349.137173823347,"y":33073.75622803084},"targetPosition":{"x":14989.816831724089,"y":32071.001299918495},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"superActions":[],"id":"0b765fac-5357-47da-b59d-06c14430d976","savedPayload":{"position":{"x":14989.816831724089,"y":32071.001299918495},"targetPosition":{"x":13941.745419159131,"y":31880.804380216796},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"689e1b57-5dab-4845-968e-1fe7f60241f9","savedPayload":{"position":{"x":13941.745419159131,"y":31880.804380216796},"targetPosition":{"x":12893.674006594174,"y":31690.607460515097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"765e34ed-b0ee-444f-b49f-247d50f51496","savedPayload":{"position":{"x":13462.37489983206,"y":32106.51524650755},"targetPosition":{"x":13196.978442249463,"y":32128.401427852255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"875df6bf-362f-48fd-9994-f31dc6e095df","savedPayload":{"position":{"x":12969.489962739557,"y":32609.967757878814},"targetPosition":{"x":13083.23420249451,"y":32369.184592865535},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"02cbdcb5-fa36-41c7-b9fb-03b47b0856dd","savedPayload":{"position":{"x":13083.23420249451,"y":32369.184592865535},"targetPosition":{"x":13196.978442249463,"y":32128.401427852255},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3d555a40-5268-48db-bc65-aa61d02d6b3d","savedPayload":{"position":{"x":13196.978442249463,"y":32128.401427852255},"targetPosition":{"x":13045.326224421819,"y":31909.504444183676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"47fcdb62-277d-4656-8e2c-21ed64b8a692","savedPayload":{"position":{"x":13045.326224421819,"y":31909.504444183676},"targetPosition":{"x":12893.674006594174,"y":31690.607460515097},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f32b5dec-b374-4c15-89dc-842a1cb0aa78","savedPayload":{"position":{"x":13419.640726497379,"y":31238.268398172757},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"BW","code":"{ \n\"codeName\": \"bw\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"BTC\"} \n}","assets":[],"id":"c6d6acf9-82c5-4c73-9e71-b90cc70debda","savedPayload":{"position":{"x":13654.535455126086,"y":31643.446681044537},"targetPosition":{"x":13181.473953658066,"y":31889.314383056466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"New Market","code":"{ \n\"codeName\": \"Write here the name of the market as it is defined at the CCXT library.\"\n}","baseAsset":{"type":"Market Base Asset","name":"","id":"ea88c83a-73c1-4ddf-9d71-641b502199ab","savedPayload":{"position":{"x":15991.251444678477,"y":31809.343261824106},"targetPosition":{"x":15207.661586027161,"y":32527.476437784833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"quotedAsset":{"type":"Market Quoted Asset","name":"","id":"a28e801a-8c77-4b4e-864a-a73fc58af872","savedPayload":{"position":{"x":15438.00715392003,"y":33565.18784956585},"targetPosition":{"x":15207.661586027161,"y":32527.476437784833},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"superActions":[],"id":"e2ccad9a-97c9-42cf-b9b6-774028adec04","savedPayload":{"position":{"x":15207.661586027161,"y":32527.476437784833},"targetPosition":{"x":14195.813160385382,"y":32208.78387278686},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8ccd7fdd-65a6-46ca-88e5-f3e3070e9447","savedPayload":{"position":{"x":14195.813160385382,"y":32208.78387278686},"targetPosition":{"x":13181.473953658066,"y":31889.314383056466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"27351cd5-5e76-4005-b8da-eecb543035d8","savedPayload":{"position":{"x":13740.986780055742,"y":32461.415272910424},"targetPosition":{"x":13474.474369396348,"y":32449.52381304816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"6f1ec12b-0a4f-4d35-8358-785e6755cb08","savedPayload":{"position":{"x":13189.554795789967,"y":32899.69693385258},"targetPosition":{"x":13332.225311205095,"y":32674.536885606623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"836d13ab-6e84-44db-aaaa-b50cca0a00c9","savedPayload":{"position":{"x":13332.225311205095,"y":32674.536885606623},"targetPosition":{"x":13474.474369396348,"y":32449.52381304816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1591e8ec-5111-4b41-8a8a-5b79550307eb","savedPayload":{"position":{"x":13474.474369396348,"y":32449.52381304816},"targetPosition":{"x":13350.964302316836,"y":32213.074583657977},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5d951204-ac35-42ac-9c7c-e09ba80198ba","savedPayload":{"position":{"x":13350.964302316836,"y":32213.074583657977},"targetPosition":{"x":13181.473953658066,"y":31889.314383056466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ae2e83bf-a9a0-4c78-8a1b-81882184d95a","savedPayload":{"position":{"x":13520.979687232926,"y":31322.061605934025},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"ByteTrade","code":"{ \n\"codeName\": \"bytetrade\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"BTC\"} \n}","assets":[],"id":"5cd56ed0-ce08-4fe7-ab9c-0b5e5f30e186","savedPayload":{"position":{"x":13312.915476086393,"y":31760.376199133683},"targetPosition":{"x":12813.446865400214,"y":31945.276835866487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"New Market","code":"{ \n\"codeName\": \"Write here the name of the market as it is defined at the CCXT library.\"\n}","baseAsset":{"type":"Market Base Asset","name":"","id":"aa134e56-6e18-4060-8bb4-c4ef13ac4ad7","savedPayload":{"position":{"x":15618.323056631147,"y":32219.264847584687},"targetPosition":{"x":14749.135408142209,"y":32835.00942597267},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"quotedAsset":{"type":"Market Quoted Asset","name":"","id":"0c37d42f-406a-4f24-a274-563324fdc794","savedPayload":{"position":{"x":14847.79203102427,"y":33895.620299413735},"targetPosition":{"x":14749.135408142209,"y":32835.00942597267},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"superActions":[],"id":"35a24d78-b4d2-4fcf-a015-4504c08c5ee6","savedPayload":{"position":{"x":14749.135408142209,"y":32835.00942597267},"targetPosition":{"x":13781.291136771211,"y":32390.143130919576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f74ec571-3e5a-451b-9cde-9185af1d92d0","savedPayload":{"position":{"x":13781.291136771211,"y":32390.143130919576},"targetPosition":{"x":12813.446865400214,"y":31945.276835866487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"da372a69-c8d9-4730-81f5-b4512e708a85","savedPayload":{"position":{"x":13260.848913939795,"y":32489.548274930945},"targetPosition":{"x":12998.347502133018,"y":32444.745446552664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"44ac1327-da0d-4b6c-92ea-2d28511a4f04","savedPayload":{"position":{"x":12658.24531525227,"y":32854.608400482284},"targetPosition":{"x":12828.296408692644,"y":32649.676923517472},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"1c0ea77c-a646-41ac-b918-c41acb67db07","savedPayload":{"position":{"x":12828.296408692644,"y":32649.676923517472},"targetPosition":{"x":12998.347502133018,"y":32444.745446552664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"45cfee4b-5dcb-40b9-bc65-2b4bcf8b4dfd","savedPayload":{"position":{"x":12998.347502133018,"y":32444.745446552664},"targetPosition":{"x":12905.897183766616,"y":32195.011141209576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"07d280a1-3950-43e3-ae20-85c9f7533368","savedPayload":{"position":{"x":12905.897183766616,"y":32195.011141209576},"targetPosition":{"x":12813.446865400214,"y":31945.276835866487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0165e585-afac-4822-b64c-e457e6d39d4c","savedPayload":{"position":{"x":13610.998626733843,"y":31417.707079739994},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"CEX.IO","code":"{ \n\"codeName\": \"cex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"BTC\"} \n}","assets":[],"id":"8340b7d5-ea6a-48d6-a3d1-99dac083048e","savedPayload":{"position":{"x":13268.762939173304,"y":31942.22936042863},"targetPosition":{"x":12750.058592976606,"y":32063.071984372487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"New Market","code":"{ \n\"codeName\": \"Write here the name of the market as it is defined at the CCXT library.\"\n}","baseAsset":{"type":"Market Base Asset","name":"","id":"cff92f1b-401b-435f-885f-90821c27a9eb","savedPayload":{"position":{"x":15498.477694197274,"y":32686.44372157654},"targetPosition":{"x":14558.970590871384,"y":33188.394871490666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"quotedAsset":{"type":"Market Quoted Asset","name":"","id":"c611d3f1-2be3-4ff1-944f-8afa7ad1239b","savedPayload":{"position":{"x":14523.919486492883,"y":34253.007464963885},"targetPosition":{"x":14558.970590871384,"y":33188.394871490666},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"superActions":[],"id":"70e4c0fe-8db3-431a-add0-0fe79e3c2819","savedPayload":{"position":{"x":14558.970590871384,"y":33188.394871490666},"targetPosition":{"x":13654.514591923995,"y":32625.733427931576},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ede9c352-98aa-4931-8a5f-44c50b3b5acc","savedPayload":{"position":{"x":13654.514591923995,"y":32625.733427931576},"targetPosition":{"x":12750.058592976606,"y":32063.071984372487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"2a52ac7e-11f8-42c2-bad1-03d852d9824c","savedPayload":{"position":{"x":13125.717443336294,"y":32659.126026020684},"targetPosition":{"x":12870.901216920462,"y":32581.776330569184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"75ec93d9-c2c2-4204-8931-5b9dd5e30493","savedPayload":{"position":{"x":12482.111388032648,"y":32945.78128586288},"targetPosition":{"x":12676.506302476555,"y":32763.778808216033},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"532698ff-1cdd-4b25-b098-6ec314e05f09","savedPayload":{"position":{"x":12676.506302476555,"y":32763.778808216033},"targetPosition":{"x":12870.901216920462,"y":32581.776330569184},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c6ef9e48-71c2-4d01-a8d2-d7f4a857dde8","savedPayload":{"position":{"x":12870.901216920462,"y":32581.776330569184},"targetPosition":{"x":12810.479904948534,"y":32322.424157470836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0c70240c-33c0-459b-a6c7-3d24c84f0bff","savedPayload":{"position":{"x":12810.479904948534,"y":32322.424157470836},"targetPosition":{"x":12750.058592976606,"y":32063.071984372487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"93b9fd6d-94d7-4cdb-b713-6faf9c0c700b","savedPayload":{"position":{"x":13688.2193610141,"y":31523.880580703797},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"COBINHOOD","code":"{ \n\"codeName\": \"cobinhood\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"BTC\"} \n}","assets":[],"id":"21f5d3ee-09fb-4d1f-a094-40a5d03bc2d6","savedPayload":{"position":{"x":13202.16631346251,"y":32117.114775008482},"targetPosition":{"x":12672.406509153774,"y":32171.993625795905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"New Market","code":"{ \n\"codeName\": \"Write here the name of the market as it is defined at the CCXT library.\"\n}","baseAsset":{"type":"Market Base Asset","name":"","id":"b8603b66-f1c6-428f-b75b-d733b1d61ceb","savedPayload":{"position":{"x":15321.024309311942,"y":33134.91814380587},"targetPosition":{"x":14326.01433940289,"y":33515.15979576092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"quotedAsset":{"type":"Market Quoted Asset","name":"","id":"157e0798-3a4f-4b53-98b6-77099399d428","savedPayload":{"position":{"x":14157.808284618392,"y":34566.98453269847},"targetPosition":{"x":14326.01433940289,"y":33515.15979576092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"superActions":[],"id":"b40915c4-61c0-4dfb-841a-d75e58f76569","savedPayload":{"position":{"x":14326.01433940289,"y":33515.15979576092},"targetPosition":{"x":13499.210424278332,"y":32843.57671077841},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b4ca043d-166d-486c-91d1-9f2306adae95","savedPayload":{"position":{"x":13499.210424278332,"y":32843.57671077841},"targetPosition":{"x":12672.406509153774,"y":32171.993625795905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"397a635b-c896-4562-a670-ea07bd783102","savedPayload":{"position":{"x":12970.397796855674,"y":32810.43014172562},"targetPosition":{"x":12727.285359941197,"y":32701.75343010464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"187f0532-98ce-4e98-97f3-57bf8bd7c8d5","savedPayload":{"position":{"x":12295.939336899672,"y":33014.15981117141},"targetPosition":{"x":12511.612348420435,"y":32857.956620638026},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"df6971e2-268f-4f35-8342-0fbe0053ae11","savedPayload":{"position":{"x":12511.612348420435,"y":32857.956620638026},"targetPosition":{"x":12727.285359941197,"y":32701.75343010464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"258a62b1-a209-454f-b255-7347868aff03","savedPayload":{"position":{"x":12727.285359941197,"y":32701.75343010464},"targetPosition":{"x":12699.845934547486,"y":32436.873527950273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5d33c326-ff20-4697-b7ec-9ed5cb793149","savedPayload":{"position":{"x":12699.845934547486,"y":32436.873527950273},"targetPosition":{"x":12672.406509153774,"y":32171.993625795905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1e6aca88-f82f-4587-8f61-cc59c2b73428","savedPayload":{"position":{"x":13751.486130554698,"y":31638.92838382216},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"COSS","code":"{ \n\"codeName\": \"coss\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"BTC\"} \n}","assets":[],"id":"d036ba74-c041-4d9c-834c-4cfec29c9105","savedPayload":{"position":{"x":11068.559135176756,"y":31816.12207710078},"targetPosition":{"x":12581.715233680708,"y":32270.32400078486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"New Market","code":"{ \n\"codeName\": \"Write here the name of the market as it is defined at the CCXT library.\"\n}","baseAsset":{"type":"Market Base Asset","name":"","id":"01043ce2-e549-4fc2-8dbb-a80c27593ea1","savedPayload":{"position":{"x":15088.761447860299,"y":33557.61540472851},"targetPosition":{"x":14053.940512983692,"y":33810.15092072779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"quotedAsset":{"type":"Market Quoted Asset","name":"","id":"ac2bfe20-b843-4816-a384-ff85a1c3525e","savedPayload":{"position":{"x":13755.232217758577,"y":34832.599896698535},"targetPosition":{"x":14053.940512983692,"y":33810.15092072779},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"superActions":[],"id":"525bb43d-32dd-4043-b467-6f61e19bf0b2","savedPayload":{"position":{"x":14053.940512983692,"y":33810.15092072779},"targetPosition":{"x":13317.8278733322,"y":33040.237460756325},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3dd1e27a-a0ba-4475-89ef-ef11a56fdc3d","savedPayload":{"position":{"x":13317.8278733322,"y":33040.237460756325},"targetPosition":{"x":12581.715233680708,"y":32270.32400078486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"dd910bc4-a6fe-40e4-8ace-228a7783a4eb","savedPayload":{"position":{"x":12797.339458106397,"y":32941.0744657564},"targetPosition":{"x":12569.76483905175,"y":32802.78463462852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"5c706e00-36cd-486b-8645-23e41238fbd1","savedPayload":{"position":{"x":12102.665206313497,"y":33058.665606216426},"targetPosition":{"x":12336.215022682623,"y":32930.725120422474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"9b7f4495-b3a0-45fc-862b-e8bd9902954a","savedPayload":{"position":{"x":12336.215022682623,"y":32930.725120422474},"targetPosition":{"x":12569.76483905175,"y":32802.78463462852},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c1d1659e-715e-4eac-99e9-d0bdb2682c49","savedPayload":{"position":{"x":12569.76483905175,"y":32802.78463462852},"targetPosition":{"x":12575.74003636623,"y":32536.55431770669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"bc4cf484-fb6c-421d-9e94-a6eb85239ae5","savedPayload":{"position":{"x":12575.74003636623,"y":32536.55431770669},"targetPosition":{"x":12581.715233680708,"y":32270.32400078486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"43e86446-f8e8-42f1-933a-400cb9d2973b","savedPayload":{"position":{"x":13799.821183019807,"y":31761.010166210872},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"CREX24","code":"{ \n\"codeName\": \"crex24\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"BTC\"} \n}","assets":[],"id":"49d8202a-bc47-4da0-b698-3b9808ebf9ba","savedPayload":{"position":{"x":13006.179263254267,"y":32435.103555769285},"targetPosition":{"x":12479.415022147965,"y":32356.51238058606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"New Market","code":"{ \n\"codeName\": \"Write here the name of the market as it is defined at the CCXT library.\"\n}","baseAsset":{"type":"Market Base Asset","name":"","id":"2aff69bc-aa4a-477c-a56f-049dc4f8d377","savedPayload":{"position":{"x":14805.352033914556,"y":33947.86931603258},"targetPosition":{"x":13747.039878385462,"y":34068.71606013138},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"quotedAsset":{"type":"Market Quoted Asset","name":"","id":"d9cdd517-071f-464e-a58f-982a7d11ef6c","savedPayload":{"position":{"x":13322.540150975115,"y":35045.66464400285},"targetPosition":{"x":13747.039878385462,"y":34068.71606013138},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"superActions":[],"id":"d5c7ee47-264a-425d-a3d8-e183d42944a4","savedPayload":{"position":{"x":13747.039878385462,"y":34068.71606013138},"targetPosition":{"x":13113.227450266713,"y":33212.61422035872},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"917fefe5-83a5-49fe-976e-bbb359f010c2","savedPayload":{"position":{"x":13113.227450266713,"y":33212.61422035872},"targetPosition":{"x":12479.415022147965,"y":32356.51238058606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"ad7318b5-ff9b-4490-ab2f-2f3227a0161a","savedPayload":{"position":{"x":12609.271660470578,"y":33048.99865907991},"targetPosition":{"x":12400.82384696474,"y":32883.27662169236},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"07a4c525-bb51-4a26-a971-e30aa72a44cd","savedPayload":{"position":{"x":11905.33704476984,"y":33078.59678802357},"targetPosition":{"x":12153.08044586729,"y":32980.936704857966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"1aead44e-b96f-4253-b04d-c1fad39e288f","savedPayload":{"position":{"x":12153.08044586729,"y":32980.936704857966},"targetPosition":{"x":12400.82384696474,"y":32883.27662169236},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"387a1343-9429-4598-a2fa-f2c482b6c25d","savedPayload":{"position":{"x":12400.82384696474,"y":32883.27662169236},"targetPosition":{"x":12440.119434556353,"y":32619.894501139213},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"022a8146-0321-41d1-a85e-ff2f7077ffcf","savedPayload":{"position":{"x":12440.119434556353,"y":32619.894501139213},"targetPosition":{"x":12479.415022147965,"y":32356.51238058606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7e61effa-1cf5-4aa6-950f-5d78fcc6f5ae","savedPayload":{"position":{"x":13832.476158926542,"y":31888.183749594755},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"FTX","code":"{ \n\"codeName\": \"ftx\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"BTC\"} \n}","assets":[],"id":"8364622a-fa06-4c65-8ffe-ff529d8fde65","savedPayload":{"position":{"x":12879.879671615588,"y":32573.192048920355},"targetPosition":{"x":12367.119210002593,"y":32429.199522963594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"New Market","code":"{ \n\"codeName\": \"Write here the name of the market as it is defined at the CCXT library.\"\n}","baseAsset":{"type":"Market Base Asset","name":"","id":"67ba02cc-46d2-4435-a36e-fecbd760ba71","savedPayload":{"position":{"x":14475.265603233194,"y":34299.525340410444},"targetPosition":{"x":13410.152441949345,"y":34286.777487263986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"quotedAsset":{"type":"Market Quoted Asset","name":"","id":"d896ad36-1ed2-47ac-b342-758c4d8ca561","savedPayload":{"position":{"x":12866.555896638873,"y":35202.81861626772},"targetPosition":{"x":13410.152441949345,"y":34286.777487263986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"superActions":[],"id":"9b47f081-2d8c-442c-a58f-e980a843dc96","savedPayload":{"position":{"x":13410.152441949345,"y":34286.777487263986},"targetPosition":{"x":12888.635825975969,"y":33357.98850511379},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"226edef4-88bb-4201-b2ea-871bb1179844","savedPayload":{"position":{"x":12888.635825975969,"y":33357.98850511379},"targetPosition":{"x":12367.119210002593,"y":32429.199522963594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"3d9eec9e-b477-46df-9191-c4aa4cfda23f","savedPayload":{"position":{"x":12409.160345463186,"y":33132.50069269666},"targetPosition":{"x":12223.126684045832,"y":32941.95998457659},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"dd77791c-5696-4f29-9c58-6d429f6e992c","savedPayload":{"position":{"x":11707.066835254363,"y":33073.63902994944},"targetPosition":{"x":11965.096759650098,"y":33007.799507263015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"d11c876f-7b79-4fc3-9108-f6834aab8b28","savedPayload":{"position":{"x":11965.096759650098,"y":33007.799507263015},"targetPosition":{"x":12223.126684045832,"y":32941.95998457659},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6232f61b-8b1e-46f9-ab24-4304b4825223","savedPayload":{"position":{"x":12223.126684045832,"y":32941.95998457659},"targetPosition":{"x":12295.122947024212,"y":32685.579753770093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"66a9032a-6c45-42e4-929e-e0b3746bf43d","savedPayload":{"position":{"x":12295.122947024212,"y":32685.579753770093},"targetPosition":{"x":12367.119210002593,"y":32429.199522963594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0de24041-98f7-4c85-91cf-f51448623cd8","savedPayload":{"position":{"x":13848.933177693028,"y":32018.450924222267},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"HitBTC","code":"{ \n\"codeName\": \"hitbtc2\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"f2917f2f-7567-436c-a3aa-e8a557ce5353","savedPayload":{"position":{"x":13227.939055947993,"y":32901.485165418955},"targetPosition":{"x":12246.598769284397,"y":32487.239108260976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"New Market","code":"{ \n\"codeName\": \"Write here the name of the market as it is defined at the CCXT library.\"\n}","baseAsset":{"type":"Market Base Asset","name":"","id":"78e7960c-4add-492d-9293-56ab756c71d2","savedPayload":{"position":{"x":14103.707816012156,"y":34607.037652288534},"targetPosition":{"x":13048.591119794759,"y":34460.89624315613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"quotedAsset":{"type":"Market Quoted Asset","name":"","id":"37f34e36-8951-4dbe-9256-0fd791869436","savedPayload":{"position":{"x":12394.470598832544,"y":35301.583401471304},"targetPosition":{"x":13048.591119794759,"y":34460.89624315613},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"superActions":[],"id":"273bdd7e-0435-40a7-9a2b-af13d1b1fbaa","savedPayload":{"position":{"x":13048.591119794759,"y":34460.89624315613},"targetPosition":{"x":12647.594944539578,"y":33474.06767570855},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d65fb5c5-74e0-4835-84cc-1d9880355bc5","savedPayload":{"position":{"x":12647.594944539578,"y":33474.06767570855},"targetPosition":{"x":12246.598769284397,"y":32487.239108260976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"31f62a1f-a35c-4848-8158-402abea61ffe","savedPayload":{"position":{"x":12200.161388062605,"y":33190.263689654814},"targetPosition":{"x":12039.475740705408,"y":32977.90925159278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"b60172cb-ec04-4ea0-ade2-3def4a366327","savedPayload":{"position":{"x":11510.981417412024,"y":33043.8705188005},"targetPosition":{"x":11775.228579058716,"y":33010.88988519664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"15a1e5fa-5ccc-45c2-a02a-23b44a481c96","savedPayload":{"position":{"x":11775.228579058716,"y":33010.88988519664},"targetPosition":{"x":12039.475740705408,"y":32977.90925159278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"89802761-4b1d-4e07-8057-5346f78c7424","savedPayload":{"position":{"x":12039.475740705408,"y":32977.90925159278},"targetPosition":{"x":12143.037254994902,"y":32732.574179926876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"10ef4611-d685-4e3e-a475-f5144bc6a5b4","savedPayload":{"position":{"x":12143.037254994902,"y":32732.574179926876},"targetPosition":{"x":12246.598769284397,"y":32487.239108260976},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c891d366-b897-48e4-906b-1fde21d42f3c","savedPayload":{"position":{"x":13848.92952005346,"y":32149.49682577581},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"KuCoin","code":"{ \n\"codeName\": \"kucoin\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"BTC\"} \n}","assets":[],"id":"668e3483-e241-4188-ad8b-ebeba12e9fcd","savedPayload":{"position":{"x":12580.596043117046,"y":32796.70289485812},"targetPosition":{"x":12119.754379338925,"y":32529.715817546894},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"New Market","code":"{ \n\"codeName\": \"Write here the name of the market as it is defined at the CCXT library.\"\n}","baseAsset":{"type":"Market Base Asset","name":"","id":"9be992d9-dea4-4d43-bc1b-cf37fabdc86a","savedPayload":{"position":{"x":13696.538360513776,"y":34865.55659880957},"targetPosition":{"x":12668.057949958342,"y":34588.326371013885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"quotedAsset":{"type":"Market Quoted Asset","name":"","id":"40897ea6-f86f-46f8-a5dd-9754f1f50a2b","savedPayload":{"position":{"x":11913.729324712616,"y":35340.4014199517},"targetPosition":{"x":12668.057949958342,"y":34588.326371013885},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"superActions":[],"id":"e08a9812-7eda-4fca-887c-1b5b915fa678","savedPayload":{"position":{"x":12668.057949958342,"y":34588.326371013885},"targetPosition":{"x":12393.906164648633,"y":33559.02109428039},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"bdec657b-4430-475d-966b-c61e41f609b6","savedPayload":{"position":{"x":12393.906164648633,"y":33559.02109428039},"targetPosition":{"x":12119.754379338925,"y":32529.715817546894},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"fd18e3bf-0ebe-407b-b099-8aa03065bdb4","savedPayload":{"position":{"x":11985.570826676958,"y":33221.376692986385},"targetPosition":{"x":11852.767302027694,"y":32990.55748132501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"c4d41062-b1fd-4923-9a6d-cd3cc43ba7e6","savedPayload":{"position":{"x":11320.17317541794,"y":32989.76072178039},"targetPosition":{"x":11586.470238722817,"y":32990.1591015527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"ba844ab9-160d-414d-bfba-d27be702a87c","savedPayload":{"position":{"x":11586.470238722817,"y":32990.1591015527},"targetPosition":{"x":11852.767302027694,"y":32990.55748132501},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c55f9712-750a-496e-9230-03a56a3261ec","savedPayload":{"position":{"x":11852.767302027694,"y":32990.55748132501},"targetPosition":{"x":11986.26084068331,"y":32760.136649435954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"272a4277-2669-45e7-b3fc-b35f16c8d3f2","savedPayload":{"position":{"x":11986.26084068331,"y":32760.136649435954},"targetPosition":{"x":12119.754379338925,"y":32529.715817546894},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ad559406-2fb4-4bbb-9e23-588df56c2fe8","savedPayload":{"position":{"x":13832.46520127102,"y":32279.770472257536},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"STEX","code":"{ \n\"codeName\": \"stex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"BTC\"} \n}","assets":[],"id":"8041d4c6-94af-46e7-867f-cb55b3df6880","savedPayload":{"position":{"x":12412.331887861978,"y":32878.60034808548},"targetPosition":{"x":11988.586451968778,"y":32555.95976774156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"New Market","code":"{ \n\"codeName\": \"Write here the name of the market as it is defined at the CCXT library.\"\n}","baseAsset":{"type":"Market Base Asset","name":"","id":"a0550541-f019-4f57-bb77-2d290e9ac10d","savedPayload":{"position":{"x":13260.178542282496,"y":35071.005181755194},"targetPosition":{"x":12274.554167847902,"y":34667.05822159788},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"quotedAsset":{"type":"Market Quoted Asset","name":"","id":"9802becb-85da-4c07-aeb8-d5173b18e064","savedPayload":{"position":{"x":11431.91365135287,"y":35318.660488368725},"targetPosition":{"x":12274.554167847902,"y":34667.05822159788},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"superActions":[],"id":"a2bda03b-4135-49a7-b8c9-356fa46fd2ec","savedPayload":{"position":{"x":12274.554167847902,"y":34667.05822159788},"targetPosition":{"x":12131.57030990834,"y":33611.50899466972},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"88bb679f-af18-4940-b8d2-704b099e52b0","savedPayload":{"position":{"x":12131.57030990834,"y":33611.50899466972},"targetPosition":{"x":11988.586451968778,"y":32555.95976774156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"a003acf8-abef-4bff-b89d-1a5f1a8c4bdc","savedPayload":{"position":{"x":11768.772882649486,"y":33225.349032042854},"targetPosition":{"x":11665.945871624855,"y":32979.70520363476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"aee6c55e-5350-4e32-884a-791d66d520b3","savedPayload":{"position":{"x":11137.651269231676,"y":32912.16298271177},"targetPosition":{"x":11401.798570428266,"y":32945.934093173266},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"da627842-2ddc-4c35-8255-2284bd035d4c","savedPayload":{"position":{"x":11401.798570428266,"y":32945.934093173266},"targetPosition":{"x":11665.945871624855,"y":32979.70520363476},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"82938a4b-3d0c-410b-b689-e7a6dfe362a4","savedPayload":{"position":{"x":11665.945871624855,"y":32979.70520363476},"targetPosition":{"x":11827.266161796817,"y":32767.83248568816},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5e3f4247-f466-4e2b-abcf-47f11065863b","savedPayload":{"position":{"x":11827.266161796817,"y":32767.83248568816},"targetPosition":{"x":11988.586451968778,"y":32555.95976774156},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"39519fcb-3c13-4b63-9952-7528e24d81a8","savedPayload":{"position":{"x":13799.800229186507,"y":32406.96073151442},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"ACX","code":"{ \n\"codeName\": \"acx\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"9b72511c-ad94-4d0d-9f09-697e5fc960b5","savedPayload":{"position":{"x":12235.130073095495,"y":32938.762924761475},"targetPosition":{"x":11855.163583744508,"y":32565.557076073022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"d9534c6b-d3b2-49b5-b9d3-0148a1dcc436","savedPayload":{"position":{"x":11864.7245734598,"y":33630.70361133265},"targetPosition":{"x":11855.163583744508,"y":32565.557076073022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"77ae93eb-c65c-4bc9-a626-d67aef5ccbe4","savedPayload":{"position":{"x":11553.18658906632,"y":33202.11806066432},"targetPosition":{"x":11481.95773505606,"y":32945.52356542401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"0cc2fe28-92cc-4d5f-bdcd-048857bcdc75","savedPayload":{"position":{"x":10966.29417834709,"y":32812.30106429437},"targetPosition":{"x":11224.125956701575,"y":32878.91231485919},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"7357504d-139d-4013-83b6-163bb37c1840","savedPayload":{"position":{"x":11224.125956701575,"y":32878.91231485919},"targetPosition":{"x":11481.95773505606,"y":32945.52356542401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0c03d8f8-bb1c-4be0-afa3-ec591f41cd0f","savedPayload":{"position":{"x":11481.95773505606,"y":32945.52356542401},"targetPosition":{"x":11668.560659400284,"y":32755.540320748518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"976025c3-0ba4-4fc3-876b-03a821ac6a5b","savedPayload":{"position":{"x":11668.560659400284,"y":32755.540320748518},"targetPosition":{"x":11855.163583744508,"y":32565.557076073022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"43ad7b8f-7379-4256-87bf-830b81d5a10d","savedPayload":{"position":{"x":13751.449715623665,"y":32529.05788662567},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"BigONE","code":"{ \n\"codeName\": \"bigone\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"3087e5de-ff2a-4cf6-80f1-52aa2d1dc0dd","savedPayload":{"position":{"x":12051.7851772917,"y":32976.24182511254},"targetPosition":{"x":11721.589933000969,"y":32558.356387255746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"ec8d6ff9-bbaf-4940-81e0-829cdd488eda","savedPayload":{"position":{"x":11597.577271972721,"y":33616.302233698094},"targetPosition":{"x":11721.589933000969,"y":32558.356387255746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"d4eb467e-278f-4690-8f22-9d9ba57ebe66","savedPayload":{"position":{"x":11342.211870562269,"y":33152.050145146946},"targetPosition":{"x":11303.704495144177,"y":32888.55163154648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"98214dc8-fa6c-469e-bdd0-6b943bcc1b35","savedPayload":{"position":{"x":10808.804306451197,"y":32691.749848636275},"targetPosition":{"x":11056.254400797687,"y":32790.150740091376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"370a4d7e-5520-4722-8abb-9bff76f25116","savedPayload":{"position":{"x":11056.254400797687,"y":32790.150740091376},"targetPosition":{"x":11303.704495144177,"y":32888.55163154648},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c1a3cd3f-6d33-49cc-8005-352f09f8c763","savedPayload":{"position":{"x":11303.704495144177,"y":32888.55163154648},"targetPosition":{"x":11512.647214072573,"y":32723.454009401114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"954b1fee-7bad-4fa5-99e1-ad80f38adf00","savedPayload":{"position":{"x":11512.647214072573,"y":32723.454009401114},"targetPosition":{"x":11721.589933000969,"y":32558.356387255746},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5618dfe2-8332-44e4-9788-12281ad393d8","savedPayload":{"position":{"x":13688.176200982278,"y":32644.135264583812},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Binance Jersey","code":"{ \n\"codeName\": \"binanceje\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"4ade0ad1-5ee1-4a42-b4c7-956e8c74acea","savedPayload":{"position":{"x":11865.188658982353,"y":32990.44598449133},"targetPosition":{"x":11589.97203600342,"y":32534.471260453854},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"b684fea0-5542-436d-a925-5e048686438b","savedPayload":{"position":{"x":11334.341477977625,"y":33568.53198009431},"targetPosition":{"x":11589.97203600342,"y":32534.471260453854},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"a0fab516-a8c3-49e9-a0c7-6bfd4b229812","savedPayload":{"position":{"x":11139.175924478337,"y":33075.934886427545},"targetPosition":{"x":11133.997311965946,"y":32809.68788343279},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"bc040c78-505c-476e-b32d-9dab5e0d84aa","savedPayload":{"position":{"x":10667.66536290369,"y":32552.4105004222},"targetPosition":{"x":10900.831337434818,"y":32681.049191927494},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"a7992c2a-5871-487a-9040-4118a0dc314b","savedPayload":{"position":{"x":10900.831337434818,"y":32681.049191927494},"targetPosition":{"x":11133.997311965946,"y":32809.68788343279},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"24a81576-68ec-457d-853d-4fd6e943ef99","savedPayload":{"position":{"x":11133.997311965946,"y":32809.68788343279},"targetPosition":{"x":11361.984673984683,"y":32672.079571943323},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8e98a7f9-e4c7-4bb4-ae11-98a88608aca7","savedPayload":{"position":{"x":11361.984673984683,"y":32672.079571943323},"targetPosition":{"x":11589.97203600342,"y":32534.471260453854},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e07fcedb-0ad5-4645-9f27-ba5719281d53","savedPayload":{"position":{"x":13610.977507410387,"y":32750.377308600953},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Binance US","code":"{ \n\"codeName\": \"binanceus\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"dbedddba-d1e4-443e-b6af-3444e29e5bf1","savedPayload":{"position":{"x":11678.283256728546,"y":32981.151394819295},"targetPosition":{"x":11462.38558561223,"y":32494.278378385305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"6e8c09af-46bc-4918-80ca-ff74eedd4e27","savedPayload":{"position":{"x":11079.168577195243,"y":33488.14621595721},"targetPosition":{"x":11462.38558561223,"y":32494.278378385305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"2d8b994e-ff1d-4bda-8a27-24c3f5a3c33a","savedPayload":{"position":{"x":10947.280748972056,"y":32974.972667605194},"targetPosition":{"x":10975.51256917824,"y":32710.176049501617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"179c4481-1592-4389-ab29-7f5c68834654","savedPayload":{"position":{"x":10545.10319315662,"y":32396.480484410782},"targetPosition":{"x":10760.30788116743,"y":32553.3282669562},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"14ae2263-2a44-4211-83e4-6e7b8c89bc8b","savedPayload":{"position":{"x":10760.30788116743,"y":32553.3282669562},"targetPosition":{"x":10975.51256917824,"y":32710.176049501617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"24c1009c-19e9-40f1-aa5c-19108230510c","savedPayload":{"position":{"x":10975.51256917824,"y":32710.176049501617},"targetPosition":{"x":11218.949077395235,"y":32602.22721394346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0cf78230-ed7c-4ae1-8c13-e8a6d6505549","savedPayload":{"position":{"x":11218.949077395235,"y":32602.22721394346},"targetPosition":{"x":11462.38558561223,"y":32494.278378385305},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d4c25e40-6d00-47ae-bcf3-adce62a2a14d","savedPayload":{"position":{"x":13521.071028809642,"y":32846.10799689546},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"bitbank","code":"{ \n\"codeName\": \"bitbank\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"d0fee8f4-5cdf-41ce-b358-e9f43cc9da13","savedPayload":{"position":{"x":11494.016580375697,"y":32948.504637327875},"targetPosition":{"x":11340.84269636652,"y":32438.411606810376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"6376deac-7c50-43cc-9a22-0c0f45a6bad4","savedPayload":{"position":{"x":10836.082798703825,"y":33376.41267280735},"targetPosition":{"x":11340.84269636652,"y":32438.411606810376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"93fdf866-c8db-4375-ab51-5dce5bed7c67","savedPayload":{"position":{"x":10769.55264559379,"y":32850.75572318262},"targetPosition":{"x":10830.749665849025,"y":32591.585490819554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"23d0e4f7-cae1-4758-8c5e-87a066d309ba","savedPayload":{"position":{"x":10443.050675842,"y":32226.4189101026},"targetPosition":{"x":10636.900170845513,"y":32409.002200461076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"615f8caf-8eef-4102-abfb-abcb7f532979","savedPayload":{"position":{"x":10636.900170845513,"y":32409.002200461076},"targetPosition":{"x":10830.749665849025,"y":32591.585490819554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"145b421a-e62b-4ec0-9462-768f22b4ecbe","savedPayload":{"position":{"x":10830.749665849025,"y":32591.585490819554},"targetPosition":{"x":11085.796181107773,"y":32514.998548814965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"450d0a00-f710-43aa-a8ad-a0423dd0cfb6","savedPayload":{"position":{"x":11085.796181107773,"y":32514.998548814965},"targetPosition":{"x":11340.84269636652,"y":32438.411606810376},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"db4b7c0f-fbd9-422b-bcf9-977c93b4a9bc","savedPayload":{"position":{"x":13419.874549925615,"y":32929.81720731314},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"BitBay","code":"{ \n\"codeName\": \"bitbay\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"35fdefed-4392-45b0-a6ce-f9e59d9663a1","savedPayload":{"position":{"x":11315.294625485469,"y":32893.02057088493},"targetPosition":{"x":11227.2601722359,"y":32367.751998089996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"32e8e40e-245f-48f5-a032-469989d4d52b","savedPayload":{"position":{"x":10608.917750442582,"y":33235.093455366594},"targetPosition":{"x":11227.2601722359,"y":32367.751998089996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"73320751-a49c-4bea-9ea7-ef54f1b2e43a","savedPayload":{"position":{"x":10608.79449270343,"y":32705.243028576966},"targetPosition":{"x":10701.991599440964,"y":32455.78645133957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"ab1587ef-a758-46e5-b395-243d9af1a84a","savedPayload":{"position":{"x":10363.117240121097,"y":32044.90775011434},"targetPosition":{"x":10532.55441978103,"y":32250.347100726955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"0dac7620-1285-49d9-b60b-4cece77bf9e3","savedPayload":{"position":{"x":10532.55441978103,"y":32250.347100726955},"targetPosition":{"x":10701.991599440964,"y":32455.78645133957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6be65887-30be-4558-b5e2-707d58cdd140","savedPayload":{"position":{"x":10701.991599440964,"y":32455.78645133957},"targetPosition":{"x":10964.625885838432,"y":32411.769224714782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3cbcccca-ea18-4914-baca-49bd224de756","savedPayload":{"position":{"x":10964.625885838432,"y":32411.769224714782},"targetPosition":{"x":11227.2601722359,"y":32367.751998089996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c2c1582f-2cc5-442e-bb42-e0379a45adc1","savedPayload":{"position":{"x":13308.983896675116,"y":33000.184494949506},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Bitfinex","code":"{ \n\"codeName\": \"bitfinex2\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"6c753543-ca13-416f-bc84-6726bdfac3c9","savedPayload":{"position":{"x":11144.9359440498,"y":32815.57421236286},"targetPosition":{"x":11123.429277476816,"y":32283.413896463695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"ea6392b0-ff81-41ce-b2c4-1261009a76a6","savedPayload":{"position":{"x":10401.255960924416,"y":33066.41725211399},"targetPosition":{"x":11123.429277476816,"y":32283.413896463695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"e38e2a17-1b6f-4467-9d1b-19e5d361bf9d","savedPayload":{"position":{"x":10467.541542404324,"y":32540.729405907237},"targetPosition":{"x":10591.268961577653,"y":32304.920563036678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"b51869e3-e7c4-4af2-807c-b7df817bb619","savedPayload":{"position":{"x":10306.563484025146,"y":31854.80954386854},"targetPosition":{"x":10448.9162228014,"y":32079.86505345261},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"c61bc35a-0ec4-4e32-9f4b-b4843ee9dce4","savedPayload":{"position":{"x":10448.9162228014,"y":32079.86505345261},"targetPosition":{"x":10591.268961577653,"y":32304.920563036678},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"cc3d9fd6-bb2c-4c61-88d8-4144a89aa217","savedPayload":{"position":{"x":10591.268961577653,"y":32304.920563036678},"targetPosition":{"x":10857.349119527235,"y":32294.167229750186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c563e7dd-cc8e-403a-b6c4-da5ca928d5b9","savedPayload":{"position":{"x":10857.349119527235,"y":32294.167229750186},"targetPosition":{"x":11123.429277476816,"y":32283.413896463695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4eb75dd1-9731-4f12-b3e8-683bbbf2e8b2","savedPayload":{"position":{"x":13190.147774055582,"y":33056.099891459715},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Bitforex","code":"{ \n\"codeName\": \"bitforex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"1878696f-f6ce-4490-8e40-b3fdc81a3adc","savedPayload":{"position":{"x":10985.627194242275,"y":32717.386937099756},"targetPosition":{"x":11030.987487325194,"y":32186.727364175258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"ace29646-cd45-4535-9ac4-aae66ba0f2fe","savedPayload":{"position":{"x":10216.372380621171,"y":32873.04418753712},"targetPosition":{"x":11030.987487325194,"y":32186.727364175258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"11ab2c02-a5d8-4d41-bde3-9ca8862db366","savedPayload":{"position":{"x":10348.021438103113,"y":32359.809333278623},"targetPosition":{"x":10500.327914400696,"y":32141.367071092343},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"639ca9e8-575d-4fb1-8e17-321d7ff352cb","savedPayload":{"position":{"x":10274.28129407136,"y":31659.12225363687},"targetPosition":{"x":10387.304604236027,"y":31900.244662364606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"a2c3c5ce-529c-4f47-b406-f77e41a2964e","savedPayload":{"position":{"x":10387.304604236027,"y":31900.244662364606},"targetPosition":{"x":10500.327914400696,"y":32141.367071092343},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"22a853be-26a4-4cba-898c-9e344066343a","savedPayload":{"position":{"x":10500.327914400696,"y":32141.367071092343},"targetPosition":{"x":10765.657700862945,"y":32164.0472176338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c1b4ad64-3933-4e57-8f37-b47d7ae7fd14","savedPayload":{"position":{"x":10765.657700862945,"y":32164.0472176338},"targetPosition":{"x":11030.987487325194,"y":32186.727364175258},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b76d1cba-a5ed-40eb-9118-5c126b45710d","savedPayload":{"position":{"x":13065.240190714641,"y":33096.681393038125},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"bitkk","code":"{ \n\"codeName\": \"bitkk\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"07552b63-5d51-40b3-b6e3-7ac517a10550","savedPayload":{"position":{"x":10839.880770213793,"y":32600.007217080754},"targetPosition":{"x":10951.39266403377,"y":32079.217205596604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"5b65cafe-f0f1-48f4-ba5c-68e7cde9b8f7","savedPayload":{"position":{"x":10057.182734038324,"y":32658.02387037981},"targetPosition":{"x":10951.39266403377,"y":32079.217205596604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"1d05bdf6-5801-4b99-9c0c-e46085f2f499","savedPayload":{"position":{"x":10252.119083242476,"y":32165.336028312868},"targetPosition":{"x":10430.60265254962,"y":31967.70531177663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"c82938b9-5716-40ae-973a-e1d9d6278f30","savedPayload":{"position":{"x":10266.779779679757,"y":31460.93198488418},"targetPosition":{"x":10348.691216114688,"y":31714.318648330405},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"8fcbfb93-cd06-4653-8f00-f5b1651046a7","savedPayload":{"position":{"x":10348.691216114688,"y":31714.318648330405},"targetPosition":{"x":10430.60265254962,"y":31967.70531177663},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"6593d3cc-a76c-4e6e-a38c-71714469c396","savedPayload":{"position":{"x":10430.60265254962,"y":31967.70531177663},"targetPosition":{"x":10690.997658291695,"y":32023.461258686617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"94a2e279-0604-4e77-8738-6240373de493","savedPayload":{"position":{"x":10690.997658291695,"y":32023.461258686617},"targetPosition":{"x":10951.39266403377,"y":32079.217205596604},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b191511e-0de0-4e11-aca9-8393d645641f","savedPayload":{"position":{"x":12936.230906123832,"y":33121.288858761734},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Bit-Z","code":"{ \n\"codeName\": \"bitz\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"d033626d-60a5-45bf-bcf1-9c7db0f674c6","savedPayload":{"position":{"x":10709.995180135978,"y":32465.286200609804},"targetPosition":{"x":10885.900065513495,"y":31962.57892015198},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"2ad1aea8-4754-4d51-8ad4-af9a1a7db7e5","savedPayload":{"position":{"x":9926.197536997774,"y":32424.747299490562},"targetPosition":{"x":10885.900065513495,"y":31962.57892015198},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"d91abc57-a908-41c2-9672-481f74748554","savedPayload":{"position":{"x":10181.346915247856,"y":31960.376451202017},"targetPosition":{"x":10383.192785055671,"y":31786.674034774464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"16b4859e-0519-4ef0-9786-c8a838664a2d","savedPayload":{"position":{"x":10284.177244213479,"y":31263.36431654184},"targetPosition":{"x":10333.685014634575,"y":31525.01917565815},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"0cfdae07-7772-435a-b3d4-1e1f3ccf6eb5","savedPayload":{"position":{"x":10333.685014634575,"y":31525.01917565815},"targetPosition":{"x":10383.192785055671,"y":31786.674034774464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9dcdac0d-18c4-4af0-b1a1-76c01d36f9f4","savedPayload":{"position":{"x":10383.192785055671,"y":31786.674034774464},"targetPosition":{"x":10634.546425284583,"y":31874.62647746322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"bc2bf9bf-2b69-4d93-87f9-e8a2985eba91","savedPayload":{"position":{"x":10634.546425284583,"y":31874.62647746322},"targetPosition":{"x":10885.900065513495,"y":31962.57892015198},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ebc44629-82ff-46d7-977f-b84daa7ecb63","savedPayload":{"position":{"x":12805.298487200831,"y":33129.534094868555},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"BTC-Alpha","code":"{ \n\"codeName\": \"btcalpha\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"37084e77-50ee-45eb-be4b-96c9cf77d574","savedPayload":{"position":{"x":10598.018797354243,"y":32315.34851859508},"targetPosition":{"x":10835.542549166414,"y":31838.651963279175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"c538ee2c-863f-455b-a8d1-7dd6750e15de","savedPayload":{"position":{"x":9825.48250430361,"y":32176.893385744952},"targetPosition":{"x":10835.542549166414,"y":31838.651963279175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"35e9fdc4-618f-4216-99b5-d1265acc3d70","savedPayload":{"position":{"x":10136.821053485766,"y":31748.162936914014},"targetPosition":{"x":10358.845993850508,"y":31601.128211467003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"a97548c9-dc64-464f-8f13-00f66488edd9","savedPayload":{"position":{"x":10326.199319264084,"y":31069.53500876081},"targetPosition":{"x":10342.522656557296,"y":31335.331610113906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"96e381ff-8a4d-4d05-88ff-b1ffe003015b","savedPayload":{"position":{"x":10342.522656557296,"y":31335.331610113906},"targetPosition":{"x":10358.845993850508,"y":31601.128211467003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"efbb3b74-f3b8-4c92-8e96-163761cec8e5","savedPayload":{"position":{"x":10358.845993850508,"y":31601.128211467003},"targetPosition":{"x":10597.19427150846,"y":31719.89008737309},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"18eb1550-10e5-4e5b-92c5-a6b1dba4e01a","savedPayload":{"position":{"x":10597.19427150846,"y":31719.89008737309},"targetPosition":{"x":10835.542549166414,"y":31838.651963279175},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b66eeb46-4d63-4214-b54a-d4dc8f15a570","savedPayload":{"position":{"x":12674.342367520258,"y":33121.28558958715},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"BTC Markets","code":"{ \n\"codeName\": \"btcmarkets\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"5aefd832-649f-4d2c-8455-adf07c6df8a3","savedPayload":{"position":{"x":10505.71755631651,"y":32152.55877785039},"targetPosition":{"x":10801.114283107443,"y":31709.390737118454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"773e5b99-a1eb-434a-8c6b-2934cd5efe85","savedPayload":{"position":{"x":9756.62597218567,"y":31918.37093342351},"targetPosition":{"x":10801.114283107443,"y":31709.390737118454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"f7c218f7-2b13-4d8a-bf64-321d580ce12a","savedPayload":{"position":{"x":10119.243697394662,"y":31532.042219339404},"targetPosition":{"x":10357.946242375507,"y":31413.994010327522},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"5f7456dd-327e-4f9f-9a3c-45709c04f01b","savedPayload":{"position":{"x":10392.183291605259,"y":30882.500865512826},"targetPosition":{"x":10375.064766990383,"y":31148.247437920174},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"e6db90ba-a33e-4a5f-a8a2-66817f3ac05d","savedPayload":{"position":{"x":10375.064766990383,"y":31148.247437920174},"targetPosition":{"x":10357.946242375507,"y":31413.994010327522},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"52a97854-8a49-4112-8bf9-7808bcf4c0ae","savedPayload":{"position":{"x":10357.946242375507,"y":31413.994010327522},"targetPosition":{"x":10579.530262741475,"y":31561.692373722988},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b214bac2-6b56-45d0-9f14-bd320b8066ad","savedPayload":{"position":{"x":10579.530262741475,"y":31561.692373722988},"targetPosition":{"x":10801.114283107443,"y":31709.390737118454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"06121640-476d-456c-a497-d44ec1e751f7","savedPayload":{"position":{"x":12545.334761911465,"y":33096.67554069976},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Coinbase Prime","code":"{ \n\"codeName\": \"coinbaseprime\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"f75ef76d-d822-4c97-9406-2f28f208b20d","savedPayload":{"position":{"x":10434.547102732029,"y":31979.484269833156},"targetPosition":{"x":10783.158221658781,"y":31576.833768423287},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"62782c8c-c4eb-4370-b5b0-c994415dba2b","savedPayload":{"position":{"x":9720.713849288346,"y":31653.256996033175},"targetPosition":{"x":10783.158221658781,"y":31576.833768423287},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"8386976a-560e-49e1-bb47-ac342d40ea3a","savedPayload":{"position":{"x":10128.892052380303,"y":31315.422651298588},"targetPosition":{"x":10380.507720248912,"y":31228.222649496533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"03ec8302-eba6-40b9-b479-12777542e720","savedPayload":{"position":{"x":10481.088554576265,"y":30705.211526965668},"targetPosition":{"x":10430.798137412588,"y":30966.7170882311},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"afc17757-468b-4e1c-b578-d20f64f4c70b","savedPayload":{"position":{"x":10430.798137412588,"y":30966.7170882311},"targetPosition":{"x":10380.507720248912,"y":31228.222649496533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3547e4b0-34b9-4653-801a-599e2a70ab5c","savedPayload":{"position":{"x":10380.507720248912,"y":31228.222649496533},"targetPosition":{"x":10581.832970953847,"y":31402.52820895991},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"af1cce33-ee0a-4268-901c-9b066af20cf3","savedPayload":{"position":{"x":10581.832970953847,"y":31402.52820895991},"targetPosition":{"x":10783.158221658781,"y":31576.833768423287},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b56abd83-c213-401b-a50f-d61bb1e11f46","savedPayload":{"position":{"x":12420.427027900394,"y":33056.091286065726},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"CoinEx","code":"{ \n\"codeName\": \"coinex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"33c0aae0-28bc-4e68-a795-7a31bd143ac5","savedPayload":{"position":{"x":10385.629837169,"y":31798.8544829245},"targetPosition":{"x":10781.957542635908,"y":31443.071559775686},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"512c878b-1698-4011-940d-de321a132dc5","savedPayload":{"position":{"x":9718.3124912426,"y":31385.732578737974},"targetPosition":{"x":10781.957542635908,"y":31443.071559775686},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"4cadd3a6-670c-4bc3-9db8-dba41172d30d","savedPayload":{"position":{"x":10165.61395812092,"y":31101.720452781832},"targetPosition":{"x":10426.174619487094,"y":31046.743854308777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"82ef50d1-153a-437a-94f4-688386fb4b0f","savedPayload":{"position":{"x":10591.513019070626,"y":30540.462951895766},"targetPosition":{"x":10508.84381927886,"y":30793.603403102272},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"a65190aa-120d-4343-bd52-5f6cd5f9e4dc","savedPayload":{"position":{"x":10508.84381927886,"y":30793.603403102272},"targetPosition":{"x":10426.174619487094,"y":31046.743854308777},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"021753f1-0ad3-4574-9a4d-1b102d476c0f","savedPayload":{"position":{"x":10426.174619487094,"y":31046.743854308777},"targetPosition":{"x":10604.0660810615,"y":31244.90770704223},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"303661e1-7c61-40f0-988e-37584ac42dfa","savedPayload":{"position":{"x":10604.0660810615,"y":31244.90770704223},"targetPosition":{"x":10781.957542635908,"y":31443.071559775686},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5cb52740-c6a2-4b2b-8df8-b5c84b9dacee","savedPayload":{"position":{"x":12301.590273383581,"y":33000.17291263762},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"DigiFinex","code":"{ \n\"codeName\": \"digifinex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"e3e2e794-8ba3-435a-965e-f5b616fcc33c","savedPayload":{"position":{"x":10359.737214127104,"y":31613.51805676699},"targetPosition":{"x":10797.53118146426,"y":31310.2136211117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"b341fc76-5b95-449b-af41-1d96eb03f391","savedPayload":{"position":{"x":9749.459768899302,"y":31120.01670141},"targetPosition":{"x":10797.53118146426,"y":31310.2136211117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"0c974198-204e-4c77-97dd-d23e48febe3f","savedPayload":{"position":{"x":10228.830288226372,"y":30894.305835119252},"targetPosition":{"x":10494.22674580897,"y":30872.41965377455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"811da43d-fc27-4dbe-aff4-00b600464ba1","savedPayload":{"position":{"x":10721.715225318876,"y":30390.85332374799},"targetPosition":{"x":10607.970985563923,"y":30631.63648876127},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"f704e8be-2d2b-4ad0-ba8c-641eed79aef0","savedPayload":{"position":{"x":10607.970985563923,"y":30631.63648876127},"targetPosition":{"x":10494.22674580897,"y":30872.41965377455},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f2bac61c-7ea8-414f-97d6-ac6d7011b403","savedPayload":{"position":{"x":10494.22674580897,"y":30872.41965377455},"targetPosition":{"x":10645.878963636615,"y":31091.316637443124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8b7657e4-960a-4ce3-9ef9-87607b051779","savedPayload":{"position":{"x":10645.878963636615,"y":31091.316637443124},"targetPosition":{"x":10797.53118146426,"y":31310.2136211117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ae49639e-f6b8-4e5d-997f-20ab8d2cf74d","savedPayload":{"position":{"x":12190.698622980513,"y":32929.80232810788},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"DSX","code":"{ \n\"codeName\": \"dsx\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"60c2f9bc-d4e3-4bb0-9029-65b23f794101","savedPayload":{"position":{"x":10357.277575739221,"y":31426.397857515734},"targetPosition":{"x":10829.633532556276,"y":31180.35520148954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"9ba8a2da-e478-43ca-9c24-e307dc217b90","savedPayload":{"position":{"x":9813.664471083335,"y":30860.29986216568},"targetPosition":{"x":10829.633532556276,"y":31180.35520148954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"336c1901-0efa-4e5b-b266-28bb7fbd9c19","savedPayload":{"position":{"x":10317.544083407294,"y":30696.44985073486},"targetPosition":{"x":10583.590876530081,"y":30707.999244672486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"07c9aeac-5cea-4d7d-91f5-ce053ea0746d","savedPayload":{"position":{"x":10869.64180674946,"y":30258.742075730675},"targetPosition":{"x":10726.61634163977,"y":30483.37066020158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"2c1d28c2-1ba4-4d7a-b8fa-38ddfa07fa40","savedPayload":{"position":{"x":10726.61634163977,"y":30483.37066020158},"targetPosition":{"x":10583.590876530081,"y":30707.999244672486},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b9c9aad5-47ac-41ee-8f42-f02c96b5e396","savedPayload":{"position":{"x":10583.590876530081,"y":30707.999244672486},"targetPosition":{"x":10706.612204543178,"y":30944.177223081013},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3d9665fa-3a8f-424a-a998-557050172a36","savedPayload":{"position":{"x":10706.612204543178,"y":30944.177223081013},"targetPosition":{"x":10829.633532556276,"y":31180.35520148954},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a78c3281-a96d-4e9e-b006-6bfd94554e5f","savedPayload":{"position":{"x":12089.500767612197,"y":32846.08938556181},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"FCoin","code":"{ \n\"codeName\": \"fcoin\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"6a4fcfe5-7829-41b4-94aa-ef03766717fc","savedPayload":{"position":{"x":10378.289711972038,"y":31240.444882493113},"targetPosition":{"x":10877.75832265822,"y":31055.54424576031},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"583dff58-3e3b-4942-a7f3-1c7a2a278371","savedPayload":{"position":{"x":9909.914051287222,"y":30610.67795070722},"targetPosition":{"x":10877.75832265822,"y":31055.54424576031},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"8d243b45-015d-469f-9989-1040e48a3289","savedPayload":{"position":{"x":10430.356274118638,"y":30511.27280669585},"targetPosition":{"x":10692.857685925415,"y":30556.075635074132},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"608c1994-6256-4c40-8b22-8a12478732a9","savedPayload":{"position":{"x":11032.959872806166,"y":30146.212681144516},"targetPosition":{"x":10862.90877936579,"y":30351.144158109324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"62d7b3d9-3645-4340-b36a-1ba6c66fbcd8","savedPayload":{"position":{"x":10862.90877936579,"y":30351.144158109324},"targetPosition":{"x":10692.857685925415,"y":30556.075635074132},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"459ac10c-ba83-409f-9a68-66fd2da10dbc","savedPayload":{"position":{"x":10692.857685925415,"y":30556.075635074132},"targetPosition":{"x":10785.308004291817,"y":30805.80994041722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d40863c3-a1c1-4d7a-b7b6-c52dd22ceb5d","savedPayload":{"position":{"x":10785.308004291817,"y":30805.80994041722},"targetPosition":{"x":10877.75832265822,"y":31055.54424576031},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"4adfd82b-f67d-4c47-94e9-33d867215f47","savedPayload":{"position":{"x":11999.592475258793,"y":32750.354393654903},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"FCoinJP","code":"{ \n\"codeName\": \"fcoinjp\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"b83f1f0f-1b1e-4e17-ab3f-390f2e178c12","savedPayload":{"position":{"x":10422.442248885127,"y":31058.591721198165},"targetPosition":{"x":10941.146595081826,"y":30937.74909725431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"d4be442c-d76c-4483-9a92-abdc8218ee0f","savedPayload":{"position":{"x":10036.690596134435,"y":30375.08765369522},"targetPosition":{"x":10941.146595081826,"y":30937.74909725431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"0e2702fe-e84c-4f32-9083-62783cdc7fab","savedPayload":{"position":{"x":10565.487744722137,"y":30341.695055606113},"targetPosition":{"x":10820.30397113797,"y":30419.044751057612},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"34d73432-f1ad-47ca-9bce-ff6165a701d7","savedPayload":{"position":{"x":11209.09380002578,"y":30055.039795763914},"targetPosition":{"x":11014.698885581874,"y":30237.042273410763},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"597d3609-4cc0-4fa6-9572-40240c6e1263","savedPayload":{"position":{"x":11014.698885581874,"y":30237.042273410763},"targetPosition":{"x":10820.30397113797,"y":30419.044751057612},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"7388e5c9-54c6-438d-b983-8cbf30fabcd2","savedPayload":{"position":{"x":10820.30397113797,"y":30419.044751057612},"targetPosition":{"x":10880.725283109898,"y":30678.39692415596},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e735aaf0-726f-46b5-995d-6400118d6f24","savedPayload":{"position":{"x":10880.725283109898,"y":30678.39692415596},"targetPosition":{"x":10941.146595081826,"y":30937.74909725431},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"d4ef0262-ee7d-4cd0-afc0-d7e6ee5055e2","savedPayload":{"position":{"x":11922.391433760258,"y":32644.107310586453},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Gate.io","code":"{ \n\"codeName\": \"gateio\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"67bd6811-91d6-45a2-906c-7fa44cfa58f6","savedPayload":{"position":{"x":10489.038874595923,"y":30883.706306618315},"targetPosition":{"x":11018.798678904659,"y":30828.82745583089},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"f9d61348-3c44-498c-bd9a-8e12cdc94a51","savedPayload":{"position":{"x":10191.994763780101,"y":30157.244370848384},"targetPosition":{"x":11018.798678904659,"y":30828.82745583089},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"d86bff4a-b9db-4bad-a2e2-756e2726e5ac","savedPayload":{"position":{"x":10720.80739120276,"y":30190.390939901175},"targetPosition":{"x":10963.919828117236,"y":30299.067651522157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"2bc36bc8-de8b-4af2-a3d7-6fc790f7496f","savedPayload":{"position":{"x":11395.265851158762,"y":29986.661270455385},"targetPosition":{"x":11179.592839637999,"y":30142.86446098877},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"5cbc280d-3dbe-4e85-a309-0e5300a9a42f","savedPayload":{"position":{"x":11179.592839637999,"y":30142.86446098877},"targetPosition":{"x":10963.919828117236,"y":30299.067651522157},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"337fff20-8df4-4349-84c7-21912bb11aa7","savedPayload":{"position":{"x":10963.919828117236,"y":30299.067651522157},"targetPosition":{"x":10991.359253510947,"y":30563.947553676524},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2e610a57-ebf3-46f7-a6b2-0e07d963565d","savedPayload":{"position":{"x":10991.359253510947,"y":30563.947553676524},"targetPosition":{"x":11018.798678904659,"y":30828.82745583089},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a8fd9004-9bd6-4929-86ed-34c65c2220b4","savedPayload":{"position":{"x":11859.114886413736,"y":32529.02395523286},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Huobi Pro","code":"{ \n\"codeName\": \"huobipro\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"2d4a2cc6-e73d-43b3-b5b4-429ac2cb8ce0","savedPayload":{"position":{"x":10577.029320534062,"y":30718.546686212976},"targetPosition":{"x":11109.489954377723,"y":30730.497080841935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"7d8a1d59-e7e4-4c47-aeee-8bd98805cf70","savedPayload":{"position":{"x":10373.377314726229,"y":29960.58362087047},"targetPosition":{"x":11109.489954377723,"y":30730.497080841935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"b9685831-c75b-42ef-99cf-7f917f721e11","savedPayload":{"position":{"x":10893.865729952035,"y":30059.746615870397},"targetPosition":{"x":11121.440349006682,"y":30198.036446998278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"e872876b-ad32-4755-8bd6-96b837fc37b4","savedPayload":{"position":{"x":11588.539981744934,"y":29942.155475410374},"targetPosition":{"x":11354.990165375808,"y":30070.095961204326},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"38bcab02-da61-4d66-81b9-58f8d53a590a","savedPayload":{"position":{"x":11354.990165375808,"y":30070.095961204326},"targetPosition":{"x":11121.440349006682,"y":30198.036446998278},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"3a66a03a-6db4-45f2-9c93-3079f5da1c97","savedPayload":{"position":{"x":11121.440349006682,"y":30198.036446998278},"targetPosition":{"x":11115.465151692202,"y":30464.266763920106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b911bc60-1953-4133-aa35-eeb7be03138e","savedPayload":{"position":{"x":11115.465151692202,"y":30464.266763920106},"targetPosition":{"x":11109.489954377723,"y":30730.497080841935},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b5b53d64-3211-4dd1-9bbb-1d8d85440c3f","savedPayload":{"position":{"x":11810.760420692724,"y":32406.919616028823},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Huobi Russia","code":"{ \n\"codeName\": \"huobiru\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"79216c72-1dc2-427d-8ea1-1b5fa735d7ad","savedPayload":{"position":{"x":10685.025924804168,"y":30565.71752585751},"targetPosition":{"x":11211.79016591047,"y":30644.308701040736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"e1ab2761-d830-4048-9ea8-32e850bd5f8e","savedPayload":{"position":{"x":10577.977737791723,"y":29788.206861268074},"targetPosition":{"x":11211.79016591047,"y":30644.308701040736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"35ac8958-39fa-4ca5-9878-14ac88f53b28","savedPayload":{"position":{"x":11081.933527587857,"y":29951.82242254688},"targetPosition":{"x":11290.381341093695,"y":30117.54445993443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"25da3a47-f6b8-4109-937e-8a8794f842a8","savedPayload":{"position":{"x":11785.868143288595,"y":29922.224293603223},"targetPosition":{"x":11538.124742191145,"y":30019.884376768827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"ff61d3cf-1c9b-4b15-96d2-cb80621e31da","savedPayload":{"position":{"x":11538.124742191145,"y":30019.884376768827},"targetPosition":{"x":11290.381341093695,"y":30117.54445993443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"85c4c6ac-63b7-452f-9fe8-519d43472185","savedPayload":{"position":{"x":11290.381341093695,"y":30117.54445993443},"targetPosition":{"x":11251.085753502082,"y":30380.926580487583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a8a93d11-235c-465a-8562-e9fb0521595a","savedPayload":{"position":{"x":11251.085753502082,"y":30380.926580487583},"targetPosition":{"x":11211.79016591047,"y":30644.308701040736},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"0555787c-92ab-40a8-b47a-afcca8cf7b78","savedPayload":{"position":{"x":11778.090211789306,"y":32279.72048346557},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"KKEX","code":"{ \n\"codeName\": \"kkex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"05e4b891-6623-4785-9ca8-a1303eb4a8eb","savedPayload":{"position":{"x":10811.325516442843,"y":30427.62903270644},"targetPosition":{"x":11324.085978055838,"y":30571.621558663202},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"50146792-6f6e-497b-bc70-13533e5ffa4f","savedPayload":{"position":{"x":10802.56936208246,"y":29642.832576513007},"targetPosition":{"x":11324.085978055838,"y":30571.621558663202},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"560b7d04-5e11-4a63-992f-be7b3aa91c70","savedPayload":{"position":{"x":11282.044842595245,"y":29868.320388930133},"targetPosition":{"x":11468.0785040126,"y":30058.861097050205},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"3e200a7a-4712-4954-bd67-b874a0aa0509","savedPayload":{"position":{"x":11984.138352804068,"y":29927.18205167735},"targetPosition":{"x":11726.108428408334,"y":29993.02157436378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"88978886-2dee-4bc0-811f-4b2210ca23ed","savedPayload":{"position":{"x":11726.108428408334,"y":29993.02157436378},"targetPosition":{"x":11468.0785040126,"y":30058.861097050205},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"495056dd-0999-4d59-b227-0fc49d8b3d6b","savedPayload":{"position":{"x":11468.0785040126,"y":30058.861097050205},"targetPosition":{"x":11396.082241034219,"y":30315.241327856704},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"bd7952e5-06fe-4db9-bc8f-9b3c5077d272","savedPayload":{"position":{"x":11396.082241034219,"y":30315.241327856704},"targetPosition":{"x":11324.085978055838,"y":30571.621558663202},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"20a6c70c-1314-4b08-b974-eaa72dcfb620","savedPayload":{"position":{"x":11761.618963569184,"y":32149.433376971283},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"LBank","code":"{ \n\"codeName\": \"lbank\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"a5bb0028-3d5b-4708-9e55-e92a15542f5f","savedPayload":{"position":{"x":10953.936275442238,"y":30306.45894478683},"targetPosition":{"x":11444.606418774036,"y":30513.58197336582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"f509adc2-7b94-44ce-a165-0c2fcb9b8c23","savedPayload":{"position":{"x":11043.610243518855,"y":29526.753405918244},"targetPosition":{"x":11444.606418774036,"y":30513.58197336582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"c6b167f9-9e53-47e5-ad1f-2c3cacfecd48","savedPayload":{"position":{"x":11491.043799995829,"y":29810.55739197199},"targetPosition":{"x":11651.729447353026,"y":30022.911830034027},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"0f681476-7c75-45b4-b0c8-6f89b186460a","savedPayload":{"position":{"x":12180.22377064641,"y":29956.950562826307},"targetPosition":{"x":11915.976608999717,"y":29989.931196430167},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"4f0c5515-c1de-48e3-a984-22fa98084b70","savedPayload":{"position":{"x":11915.976608999717,"y":29989.931196430167},"targetPosition":{"x":11651.729447353026,"y":30022.911830034027},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1e0a5593-5e38-4aa2-9ee1-34cb120c9eec","savedPayload":{"position":{"x":11651.729447353026,"y":30022.911830034027},"targetPosition":{"x":11548.16793306353,"y":30268.246901699924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3c1ada64-ef1e-4244-9ffa-389c9258ee91","savedPayload":{"position":{"x":11548.16793306353,"y":30268.246901699924},"targetPosition":{"x":11444.606418774036,"y":30513.58197336582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f39da7c4-7878-4d07-83ec-fcadad89d25c","savedPayload":{"position":{"x":11761.606561805464,"y":32018.37679355161},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"Mercado Bitcoin","code":"{ \n\"codeName\": \"mercado\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"1f4c164a-7423-4e9e-bb3b-509b22e52300","savedPayload":{"position":{"x":11110.609144941387,"y":30204.118186768672},"targetPosition":{"x":11571.450808719508,"y":30471.105264079903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"83d63c79-0578-49dc-9977-b594f0ff9d46","savedPayload":{"position":{"x":11297.2990234098,"y":29441.799987346407},"targetPosition":{"x":11571.450808719508,"y":30471.105264079903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"cfec8ae6-009e-41cc-87de-dcacb34f86af","savedPayload":{"position":{"x":11705.634361381475,"y":29779.44438864041},"targetPosition":{"x":11838.437886030739,"y":30010.263600301783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"fe502c1a-ed2e-493c-9ece-aa5d41f97204","savedPayload":{"position":{"x":12371.032012640493,"y":30011.060359846408},"targetPosition":{"x":12104.734949335616,"y":30010.661980074095},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"accbdcd9-7217-49c8-a4d0-006cce0af4b5","savedPayload":{"position":{"x":12104.734949335616,"y":30010.661980074095},"targetPosition":{"x":11838.437886030739,"y":30010.263600301783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f26e9ed7-e67c-436a-93c9-c4f573acf467","savedPayload":{"position":{"x":11838.437886030739,"y":30010.263600301783},"targetPosition":{"x":11704.944347375123,"y":30240.684432190843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"87ec4b65-d089-4138-9f53-d50bc379e140","savedPayload":{"position":{"x":11704.944347375123,"y":30240.684432190843},"targetPosition":{"x":11571.450808719508,"y":30471.105264079903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"98acc3b9-ece3-4db7-9429-ad10130c09dd","savedPayload":{"position":{"x":11778.05141846809,"y":31888.10289091663},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"OKCoin CNY","code":"{ \n\"codeName\": \"okcoincny\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"b8fce633-35fe-4df9-9a3c-07fb5ee6eaa8","savedPayload":{"position":{"x":11278.873300196456,"y":30122.22073354132},"targetPosition":{"x":11702.618736089655,"y":30444.861313885238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"9c337fe2-c853-4267-988b-80e993f9f61b","savedPayload":{"position":{"x":11559.634878150093,"y":29389.312086957078},"targetPosition":{"x":11702.618736089655,"y":30444.861313885238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"7fcf8b0f-ead8-4e5c-915e-5b7f04eb75f7","savedPayload":{"position":{"x":11922.432305408944,"y":29775.472049583943},"targetPosition":{"x":12025.259316433574,"y":30021.115877992037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"810d83cd-fe62-4b05-a0c5-9448607bc90f","savedPayload":{"position":{"x":12553.553918826754,"y":30088.658098915024},"targetPosition":{"x":12289.406617630164,"y":30054.88698845353},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"6dd9ead8-54b8-4bd8-a4aa-76f850483317","savedPayload":{"position":{"x":12289.406617630164,"y":30054.88698845353},"targetPosition":{"x":12025.259316433574,"y":30021.115877992037},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"8f14561a-07c8-463d-8562-08f8936578a7","savedPayload":{"position":{"x":12025.259316433574,"y":30021.115877992037},"targetPosition":{"x":11863.939026261614,"y":30232.988595938637},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2a55a053-2b62-416f-9207-e1b82035ba57","savedPayload":{"position":{"x":11863.939026261614,"y":30232.988595938637},"targetPosition":{"x":11702.618736089655,"y":30444.861313885238},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5d52f5ae-f5e7-4793-9340-234d6301da6f","savedPayload":{"position":{"x":11810.69316891062,"y":31760.923208986995},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"OKCoin USD","code":"{ \n\"codeName\": \"okcoinusd\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"a118f1c5-49be-4b76-a3b8-71bc6cdeb7d7","savedPayload":{"position":{"x":11456.075114962938,"y":30062.058156865325},"targetPosition":{"x":11836.041604313925,"y":30435.264005553774},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"fd417d67-dcec-472a-86ab-5605c494ce26","savedPayload":{"position":{"x":11826.480614598633,"y":29370.11747029415},"targetPosition":{"x":11836.041604313925,"y":30435.264005553774},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"a20ab6a7-cfae-4dd2-a609-c3fbce6ded6d","savedPayload":{"position":{"x":12138.018598992114,"y":29798.70302096247},"targetPosition":{"x":12209.247453002374,"y":30055.297516202783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"826e033a-30ae-40b8-80f4-d4a1ba7b3bd4","savedPayload":{"position":{"x":12724.911009711343,"y":30188.520017332416},"targetPosition":{"x":12467.079231356858,"y":30121.9087667676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"416914d1-1e2d-483a-920b-4d914cf7b7c1","savedPayload":{"position":{"x":12467.079231356858,"y":30121.9087667676},"targetPosition":{"x":12209.247453002374,"y":30055.297516202783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b0a3d61c-8df4-4a2b-bc34-cbbca1e10a7a","savedPayload":{"position":{"x":12209.247453002374,"y":30055.297516202783},"targetPosition":{"x":12022.64452865815,"y":30245.28076087828},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e6880401-372f-40a7-8d28-eb793c378163","savedPayload":{"position":{"x":12022.64452865815,"y":30245.28076087828},"targetPosition":{"x":11836.041604313925,"y":30435.264005553774},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ad181ba5-ba1c-4c4f-9751-752298d8eb72","savedPayload":{"position":{"x":11859.017385356952,"y":31638.84633388599},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"OKEX","code":"{ \n\"codeName\": \"okex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"525b16fe-ea76-4c48-a9e6-21010ce85b9f","savedPayload":{"position":{"x":11639.420010766731,"y":30024.57925651426},"targetPosition":{"x":11969.615255057462,"y":30442.46469437105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"9c0ef74d-5cd3-42aa-83fa-faf5cf39f5d8","savedPayload":{"position":{"x":12093.627916085708,"y":29384.518847928703},"targetPosition":{"x":11969.615255057462,"y":30442.46469437105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"afea2116-970c-49a3-a62b-8a3ecb1e4e66","savedPayload":{"position":{"x":12348.993317496162,"y":29848.77093647985},"targetPosition":{"x":12387.500692914255,"y":30112.269450080315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"94f7bb24-0549-46da-97e9-32e94e3d1f83","savedPayload":{"position":{"x":12882.400881607235,"y":30309.07123299052},"targetPosition":{"x":12634.950787260745,"y":30210.670341535417},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"9786a969-da0f-460b-aafc-bb36e5c35658","savedPayload":{"position":{"x":12634.950787260745,"y":30210.670341535417},"targetPosition":{"x":12387.500692914255,"y":30112.269450080315},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1167f663-98e5-492f-845f-74e1b756d37b","savedPayload":{"position":{"x":12387.500692914255,"y":30112.269450080315},"targetPosition":{"x":12178.557973985859,"y":30277.367072225683},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"2202d0ca-a05f-41ef-a312-1a8c1fddffa4","savedPayload":{"position":{"x":12178.557973985859,"y":30277.367072225683},"targetPosition":{"x":11969.615255057462,"y":30442.46469437105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2fa05975-7476-49e5-8a96-0f9350cda354","savedPayload":{"position":{"x":11922.280362681344,"y":31523.80552733286},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"OKEX","code":"{ \n\"codeName\": \"okex3\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"a0ea5e83-4515-4f26-bdf5-cc389a657bbf","savedPayload":{"position":{"x":11826.016529076081,"y":30010.375097135468},"targetPosition":{"x":12101.233152055014,"y":30466.349821172942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"9ea35796-030d-4e1e-ae1c-b6c8a1ba406e","savedPayload":{"position":{"x":12356.863710080812,"y":29432.289101532486},"targetPosition":{"x":12101.233152055014,"y":30466.349821172942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"1d389c58-e423-4df6-bd9f-d3e56226ee8c","savedPayload":{"position":{"x":12552.029263580098,"y":29924.886195199255},"targetPosition":{"x":12557.207876092489,"y":30191.133198194013},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"35213beb-fa40-4473-b0a1-1b85a242ccbb","savedPayload":{"position":{"x":13023.539825154745,"y":30448.4105812046},"targetPosition":{"x":12790.373850623617,"y":30319.771889699306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"6587352d-0229-44c7-a1ab-f102d67ab28e","savedPayload":{"position":{"x":12790.373850623617,"y":30319.771889699306},"targetPosition":{"x":12557.207876092489,"y":30191.133198194013},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e7b21a07-abef-4d2a-ad53-fde2d14e4bad","savedPayload":{"position":{"x":12557.207876092489,"y":30191.133198194013},"targetPosition":{"x":12329.220514073751,"y":30328.741509683477},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"143a4a5c-f9e5-4a9d-b7ba-8008dbcef851","savedPayload":{"position":{"x":12329.220514073751,"y":30328.741509683477},"targetPosition":{"x":12101.233152055014,"y":30466.349821172942},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"b23a36d8-6521-4573-9a82-42be776ef918","savedPayload":{"position":{"x":11999.50136663086,"y":31417.634892887298},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"RightBTC","code":"{ \n\"codeName\": \"rightbtc\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"748aa88d-0a89-440e-a405-fb8d19909112","savedPayload":{"position":{"x":12012.921931329887,"y":30019.6696868075},"targetPosition":{"x":12228.819602446203,"y":30506.542703241492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"f10ebc34-a129-4a3c-ac49-3f8c78ad777f","savedPayload":{"position":{"x":12612.03661086319,"y":29512.674865669585},"targetPosition":{"x":12228.819602446203,"y":30506.542703241492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"059b72a5-f4fb-4935-bc7c-429ced26c4a9","savedPayload":{"position":{"x":12743.924439086377,"y":30025.848414021606},"targetPosition":{"x":12715.692618880194,"y":30290.64503212518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"37375cd6-1006-493e-ab1f-80713f7ee2d6","savedPayload":{"position":{"x":13146.101994901814,"y":30604.340597216014},"targetPosition":{"x":12930.897306891004,"y":30447.492814670597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"0204b828-1dba-4833-af6b-5d228828aa24","savedPayload":{"position":{"x":12930.897306891004,"y":30447.492814670597},"targetPosition":{"x":12715.692618880194,"y":30290.64503212518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"231a2b3c-a100-46a8-8152-103b49fdf50c","savedPayload":{"position":{"x":12715.692618880194,"y":30290.64503212518},"targetPosition":{"x":12472.256110663198,"y":30398.593867683336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1bfc0fc0-ae3a-40c5-ae0c-2604434a5749","savedPayload":{"position":{"x":12472.256110663198,"y":30398.593867683336},"targetPosition":{"x":12228.819602446203,"y":30506.542703241492},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e9d59aa7-dab8-47df-b153-f23a2c60d89b","savedPayload":{"position":{"x":12089.508244011651,"y":31321.974545721372},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"TideBit","code":"{ \n\"codeName\": \"tidebit\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"4b930e8f-5336-483e-b6e8-58f26f789331","savedPayload":{"position":{"x":12197.188607682734,"y":30052.316444298925},"targetPosition":{"x":12350.36249169191,"y":30562.40947481642},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"54e2ae13-b1fa-40c5-b7b6-e92b2d4521d6","savedPayload":{"position":{"x":12855.122389354605,"y":29624.408408819443},"targetPosition":{"x":12350.36249169191,"y":30562.40947481642},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"5d77ca4b-381e-4c9e-8d57-8d6f3bb305e4","savedPayload":{"position":{"x":12921.65254246464,"y":30150.065358444175},"targetPosition":{"x":12860.455522209406,"y":30409.235590807242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"9ad9ad4f-5522-4b66-a690-a42bf48cfeb0","savedPayload":{"position":{"x":13248.154512216432,"y":30774.402171524198},"targetPosition":{"x":13054.305017212919,"y":30591.81888116572},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"c687d24f-49f7-4d18-87eb-ed687c7e097e","savedPayload":{"position":{"x":13054.305017212919,"y":30591.81888116572},"targetPosition":{"x":12860.455522209406,"y":30409.235590807242},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e09ddb5a-bf59-4604-a377-bf7a61ee3f14","savedPayload":{"position":{"x":12860.455522209406,"y":30409.235590807242},"targetPosition":{"x":12605.409006950658,"y":30485.82253281183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0085400e-82dc-4e22-9ab5-374773820ca3","savedPayload":{"position":{"x":12605.409006950658,"y":30485.82253281183},"targetPosition":{"x":12350.36249169191,"y":30562.40947481642},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"174fa8a2-1f0a-4638-ae31-c232fb585be4","savedPayload":{"position":{"x":12190.801862875098,"y":31238.175785726893},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"TimeX","code":"{ \n\"codeName\": \"timex\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"261e5b4b-f7b2-4bfe-a0ec-23bb2e7e389a","savedPayload":{"position":{"x":12375.910562572964,"y":30107.800510741865},"targetPosition":{"x":12463.945015822534,"y":30633.0690835368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"8b10dbfa-5d8c-401a-85f6-99b9c5c15db0","savedPayload":{"position":{"x":13082.28743761585,"y":29765.727626260203},"targetPosition":{"x":12463.945015822534,"y":30633.0690835368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"94edf4da-e337-4b5f-b480-1ee875f0e275","savedPayload":{"position":{"x":13082.410695355004,"y":30295.57805304983},"targetPosition":{"x":12989.21358861747,"y":30545.034630287228},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"f770e3b9-b900-4754-98bc-cc7249fa6f5a","savedPayload":{"position":{"x":13328.087947937336,"y":30955.913331512456},"targetPosition":{"x":13158.650768277403,"y":30750.473980899842},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"55c4fa76-7bf2-450b-93ce-167d48793cef","savedPayload":{"position":{"x":13158.650768277403,"y":30750.473980899842},"targetPosition":{"x":12989.21358861747,"y":30545.034630287228},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"5ac39dc1-e2cb-4795-bb84-9bfb0dc98fc8","savedPayload":{"position":{"x":12989.21358861747,"y":30545.034630287228},"targetPosition":{"x":12726.579302220001,"y":30589.051856912014},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9ab863f3-9c1b-4bdf-91b1-b44e960c5769","savedPayload":{"position":{"x":12726.579302220001,"y":30589.051856912014},"targetPosition":{"x":12463.945015822534,"y":30633.0690835368},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"ca50e110-a56e-41e3-b134-beea02fcbd1e","savedPayload":{"position":{"x":12301.614242851761,"y":31167.64836930507},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"TOP.Q","code":"{ \n\"codeName\": \"topq\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"166f0916-240f-438b-b972-3bd370840329","savedPayload":{"position":{"x":12546.269244008634,"y":30185.246869263938},"targetPosition":{"x":12567.775910581617,"y":30717.4071851631},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"21b274ca-3f76-4d39-a09e-5a63795d7593","savedPayload":{"position":{"x":13289.949227134017,"y":29934.403829512805},"targetPosition":{"x":12567.775910581617,"y":30717.4071851631},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"11c411ef-b860-4c84-8069-e6b236a63109","savedPayload":{"position":{"x":13223.66364565411,"y":30460.09167571956},"targetPosition":{"x":13099.93622648078,"y":30695.90051859012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"c6c83f40-9db2-4cd3-ba01-6adcead10dce","savedPayload":{"position":{"x":13384.641704033287,"y":31146.011537758255},"targetPosition":{"x":13242.288965257034,"y":30920.956028174187},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"2b0b9ba2-e358-4db0-a55d-a8646d16f524","savedPayload":{"position":{"x":13242.288965257034,"y":30920.956028174187},"targetPosition":{"x":13099.93622648078,"y":30695.90051859012},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"f43db8ea-40b1-4468-9275-1faa5ae97b0a","savedPayload":{"position":{"x":13099.93622648078,"y":30695.90051859012},"targetPosition":{"x":12833.856068531199,"y":30706.65385187661},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c66efb70-d7d5-4cbf-ac58-97d60dacbae1","savedPayload":{"position":{"x":12833.856068531199,"y":30706.65385187661},"targetPosition":{"x":12567.775910581617,"y":30717.4071851631},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"85116028-fe56-42ac-a889-0cd97c28e3c1","savedPayload":{"position":{"x":12420.306535228421,"y":31111.65857217819},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"WhiteBit","code":"{ \n\"codeName\": \"whitebit\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"25e706ad-3982-4201-bab8-22b2cac9b373","savedPayload":{"position":{"x":12705.577993816158,"y":30283.434144527044},"targetPosition":{"x":12660.21770073324,"y":30814.093717451542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"e228108c-fa85-4044-8bf3-2414764a3a94","savedPayload":{"position":{"x":13474.832807437262,"y":30127.776894089686},"targetPosition":{"x":12660.21770073324,"y":30814.093717451542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"d75bdfd0-32ab-46b5-a2d7-47223a80fd86","savedPayload":{"position":{"x":13343.18374995532,"y":30641.011748348184},"targetPosition":{"x":13190.877273657738,"y":30859.454010534464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"ecbe360d-9ba7-4e02-983e-48543b9d20a8","savedPayload":{"position":{"x":13416.92389398707,"y":31341.698827989938},"targetPosition":{"x":13303.900583822404,"y":31100.5764192622},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"9deeeaa2-8940-42f5-b4bf-f7d0e3e9aff4","savedPayload":{"position":{"x":13303.900583822404,"y":31100.5764192622},"targetPosition":{"x":13190.877273657738,"y":30859.454010534464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"2bbe321c-4063-43fb-bf66-b3da113f63c5","savedPayload":{"position":{"x":13190.877273657738,"y":30859.454010534464},"targetPosition":{"x":12925.547487195488,"y":30836.773863993003},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"579ee3f2-e919-4bbe-a3fd-ed3e3e726fb8","savedPayload":{"position":{"x":12925.547487195488,"y":30836.773863993003},"targetPosition":{"x":12660.21770073324,"y":30814.093717451542},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"e6216dfa-09ca-4bf6-af3b-2e6c93ba4ed5","savedPayload":{"position":{"x":12544.977273938124,"y":31071.066151916813},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchange","name":"ZB","code":"{ \n\"codeName\": \"zb\"\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"USDT\"} \n}","assets":[],"id":"92573b20-1a4e-4702-b9b6-c5eb51d44303","savedPayload":{"position":{"x":12851.32441784464,"y":30400.813864546042},"targetPosition":{"x":12739.812524024663,"y":30921.603876030193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[],"id":"a515a3dd-5136-48cd-be7a-9f212c64437d","savedPayload":{"position":{"x":13634.022454020109,"y":30342.797211246987},"targetPosition":{"x":12739.812524024663,"y":30921.603876030193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"73196162-297b-4788-9196-af3500ddb862","savedPayload":{"position":{"x":13439.086104815957,"y":30835.48505331393},"targetPosition":{"x":13260.602535508813,"y":31033.115769850167},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"1a69e094-d056-4318-a042-5deaa22ae003","savedPayload":{"position":{"x":13424.425408378676,"y":31539.889096742616},"targetPosition":{"x":13342.513971943745,"y":31286.50243329639},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"972d3524-af29-4c90-a2c3-446290da9bfa","savedPayload":{"position":{"x":13342.513971943745,"y":31286.50243329639},"targetPosition":{"x":13260.602535508813,"y":31033.115769850167},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"c950a8cf-e84f-4ca2-948b-5b0f300e76a9","savedPayload":{"position":{"x":13260.602535508813,"y":31033.115769850167},"targetPosition":{"x":13000.207529766738,"y":30977.35982294018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"331badcf-241b-45cc-9428-fe9a34c9e07c","savedPayload":{"position":{"x":13000.207529766738,"y":30977.35982294018},"targetPosition":{"x":12739.812524024663,"y":30921.603876030193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"321011fe-4125-4689-b909-c1ffac01a56a","savedPayload":{"position":{"x":12671.086136367423,"y":31046.59389118469},"targetPosition":{"x":12805.302940294665,"y":32083.787868631527},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a7702fa4-c753-4c9f-8ea0-c7d554f1d43e","savedPayload":{"position":{"x":12805.302940294665,"y":32083.787868631527},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Crypto Exchanges","name":"Testing Queue","exchanges":[{"type":"Crypto Exchange","name":"Bittrex","code":"{\n \"codeName\": \"bittrex\",\n \"API\": [\n {\n \"method\": \"fetch_ohlcv\",\n \"hostname\": \"global.bittrex.com\"\n }\n ]\n}","exchangeAssets":{"type":"Exchange Assets","name":"New Exchange Assets","code":"{ \n\"addMissingAssets\": { \"quotedAsset\": \"BTC\"} \n}","assets":[{"type":"Asset","name":"Bitcoin","code":"{ \n\"codeName\": \"BTC\"\n}","id":"20119f66-f7e7-46b3-a18a-f5d5b752f532","savedPayload":{"position":{"x":11250.008392171483,"y":31442.186807763785},"targetPosition":{"x":10912.299419713998,"y":31532.532668896987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Tether","code":"{ \n\"codeName\": \"USDT\"\n}","id":"4021d203-1155-47f0-acfd-e36eae2f6144","savedPayload":{"position":{"x":11250.075921441785,"y":31623.124475935027},"targetPosition":{"x":10912.299419713998,"y":31532.532668896987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Ether","code":"{ \n\"codeName\": \"ETH\"\n}","id":"4bb91b8c-edd9-4cf5-ba96-4ec88e715467","savedPayload":{"position":{"x":11159.552692640189,"y":31779.95207203089},"targetPosition":{"x":10912.299419713998,"y":31532.532668896987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Monero","code":"{ \n\"codeName\": \"XMR\"\n}","id":"36f9fe20-a89e-4546-bce0-196ded444757","savedPayload":{"position":{"x":11002.7351541114,"y":31870.499230444137},"targetPosition":{"x":10912.299419713998,"y":31532.532668896987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Stellar","code":"{ \n\"codeName\": \"XLM\"\n}","id":"7a2e1a9d-630f-4c38-bf3c-16ddd1c8a3b2","savedPayload":{"position":{"x":10821.856373202336,"y":31870.499973817863},"targetPosition":{"x":10912.299419713998,"y":31532.532668896987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"Ethereum Classic","code":"{ \n\"codeName\": \"ETC\"\n}","id":"0b232387-4c8a-4299-9058-02f6029403eb","savedPayload":{"position":{"x":10665.048827637143,"y":31779.950642152122},"targetPosition":{"x":10912.299419713998,"y":31532.532668896987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"ADA","code":"{ \n\"codeName\": \"ADA\"\n}","id":"e85947dd-72f5-4cba-a308-4603273b21ae","savedPayload":{"position":{"x":10574.530998113325,"y":31623.107238922585},"targetPosition":{"x":10912.299419713998,"y":31532.532668896987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"TRX","code":"{ \n\"codeName\": \"TRX\"\n}","id":"e76e5034-5cac-4c45-bae4-987687375eca","savedPayload":{"position":{"x":10574.545126765433,"y":31442.19087340895},"targetPosition":{"x":10912.299419713998,"y":31532.532668896987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"DASH","code":"{ \n\"codeName\": \"DASH\"\n}","id":"8324b9a0-d5e3-4ea4-b5e8-f325d8597c21","savedPayload":{"position":{"x":10665.069998419765,"y":31285.332010450085},"targetPosition":{"x":10912.299419713998,"y":31532.532668896987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"EOS","code":"{ \n\"codeName\": \"EOS\"\n}","id":"99125fb1-4c68-4350-8bfb-3927cfebfba5","savedPayload":{"position":{"x":10821.847055913826,"y":31194.780305477092},"targetPosition":{"x":10912.299419713998,"y":31532.532668896987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},{"type":"Asset","name":"QTUM","code":"{ \n\"codeName\": \"QTUM\"\n}","id":"5218e2aa-060e-4607-903d-9f5a03146e8c","savedPayload":{"position":{"x":11002.729778596175,"y":31194.83590318002},"targetPosition":{"x":10912.299419713998,"y":31532.532668896987},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"id":"cf57db5f-e0f5-4575-a977-9e75eee36351","savedPayload":{"position":{"x":10912.299419713998,"y":31532.532668896987},"targetPosition":{"x":11406.501309360794,"y":31038.234185104997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeMarkets":{"type":"Exchange Markets","name":"New Exchange Markets","code":"{ \n\"codeName\": \"Write here the code name of the Market here.\"\n}","markets":[{"type":"Market","name":"BTC/USDT","code":"{ \n\"codeName\": \"BTC/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"Bitcoin","id":"8e601dec-ea22-43ed-84d3-8f95864eb27b","savedPayload":{"position":{"x":9739.996103407655,"y":32399.407414545756},"targetPosition":{"x":9794.718321284872,"y":31702.445955819436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bitcoin","id":"20119f66-f7e7-46b3-a18a-f5d5b752f532"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"024fef5e-75f9-4469-ac2b-113729e78fd1","savedPayload":{"position":{"x":9550.112733464957,"y":32721.600344451042},"targetPosition":{"x":9794.718321284872,"y":31702.445955819436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"4021d203-1155-47f0-acfd-e36eae2f6144"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"852df415-b416-4564-9d74-7ac014c7240f","savedPayload":{"position":{"x":9728.077941087215,"y":31864.205919524957},"targetPosition":{"x":9794.718321284872,"y":31702.445955819436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"acda8ac4-fe3e-4b62-ad58-29f78078c751","savedPayload":{"position":{"x":9612.142276215478,"y":32000.816020545797},"targetPosition":{"x":9794.718321284872,"y":31702.445955819436},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"b440afe2-4129-4553-8adc-a2bbbf88354d","savedPayload":{"position":{"x":9794.718321284872,"y":31702.445955819436},"targetPosition":{"x":10010.117765892512,"y":31038.2414289695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"ETH/USDT","code":"{ \n\"codeName\": \"ETH/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"Ether","id":"3bcc480b-e089-41b7-af45-25db0bbec1cf","savedPayload":{"position":{"x":9332.344903942269,"y":32249.1590758358},"targetPosition":{"x":9599.854886697416,"y":31603.225737738183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ether","id":"4bb91b8c-edd9-4cf5-ba96-4ec88e715467"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"c28133a1-0c88-4196-8f94-7aff546dbec0","savedPayload":{"position":{"x":9052.224549300816,"y":32496.895929036327},"targetPosition":{"x":9599.854886697416,"y":31603.225737738183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"4021d203-1155-47f0-acfd-e36eae2f6144"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"15a3c109-5ba6-4d0a-8d43-3028df836ac7","savedPayload":{"position":{"x":9486.322786309622,"y":31736.400242763182},"targetPosition":{"x":9599.854886697416,"y":31603.225737738183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"77d04b5a-a93c-41fa-943c-43a26ae64975","savedPayload":{"position":{"x":9333.879750612949,"y":31830.538601870296},"targetPosition":{"x":9599.854886697416,"y":31603.225737738183},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"5a15ce61-81d2-4de4-ab0f-49e2ca771169","savedPayload":{"position":{"x":9599.854886697416,"y":31603.225737738183},"targetPosition":{"x":10010.117765892512,"y":31038.2414289695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"ETC/USDT","code":"{ \n\"codeName\": \"ETC/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"Ethereum Classic","id":"b291a995-c43f-41ee-ae2e-76904b8c913d","savedPayload":{"position":{"x":8991.159575870868,"y":31980.320807279168},"targetPosition":{"x":9445.244904473786,"y":31448.691698259707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Ethereum Classic","id":"0b232387-4c8a-4299-9058-02f6029403eb"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"910739e4-e13d-42e9-8998-1425cf42accc","savedPayload":{"position":{"x":8648.214591800097,"y":32129.370951857367},"targetPosition":{"x":9445.244904473786,"y":31448.691698259707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"4021d203-1155-47f0-acfd-e36eae2f6144"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"9b1ff7d5-eaf4-4cfe-a27d-41ab7b6c5d0c","savedPayload":{"position":{"x":9296.020382760005,"y":31540.19625334321},"targetPosition":{"x":9445.244904473786,"y":31448.691698259707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"6a820002-433a-435a-b693-da5b132624b7","savedPayload":{"position":{"x":9121.971534362072,"y":31582.640869698826},"targetPosition":{"x":9445.244904473786,"y":31448.691698259707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"1ee54ea1-a9be-4b9a-b252-be3785551e7a","savedPayload":{"position":{"x":9445.244904473786,"y":31448.691698259707},"targetPosition":{"x":10010.117765892512,"y":31038.2414289695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"XMR/USDT","code":"{ \n\"codeName\": \"XMR/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"Monero","id":"7446ed4d-1a87-4642-ba98-1cb5760e08f5","savedPayload":{"position":{"x":8749.80421884518,"y":31619.22311120301},"targetPosition":{"x":9345.99325373452,"y":31253.967429706936},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Monero","id":"36f9fe20-a89e-4546-bce0-196ded444757"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"30f20dab-15c4-4c39-9e0c-858d7a71eed2","savedPayload":{"position":{"x":8377.594298008593,"y":31655.006389017137},"targetPosition":{"x":9345.99325373452,"y":31253.967429706936},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"4021d203-1155-47f0-acfd-e36eae2f6144"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"3e8dc197-1a80-44cf-9a24-1be3fa483fa7","savedPayload":{"position":{"x":9175.743416227157,"y":31294.821553104448},"targetPosition":{"x":9345.99325373452,"y":31253.967429706936},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"6f70c101-c6fd-498e-bbac-c6340a099087","savedPayload":{"position":{"x":8997.104829143394,"y":31281.416909133615},"targetPosition":{"x":9345.99325373452,"y":31253.967429706936},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"35020f56-8c2c-4a78-8547-41f39c8d282f","savedPayload":{"position":{"x":9345.99325373452,"y":31253.967429706936},"targetPosition":{"x":10010.117765892512,"y":31038.2414289695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"DASH/USDT","code":"{ \n\"codeName\": \"DASH/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"DASH","id":"2996c139-c41e-4154-90bd-707fe602dc9c","savedPayload":{"position":{"x":8631.883290262851,"y":31201.334672469744},"targetPosition":{"x":9311.798149906164,"y":31038.230889340273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"DASH","id":"8324b9a0-d5e3-4ea4-b5e8-f325d8597c21"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"906e1ede-fa52-4636-a42d-0951767295d6","savedPayload":{"position":{"x":8266.836431470349,"y":31120.3518219209},"targetPosition":{"x":9311.798149906164,"y":31038.230889340273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"4021d203-1155-47f0-acfd-e36eae2f6144"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"eb838219-9425-4140-b789-ed1a77ea1277","savedPayload":{"position":{"x":9137.223648687817,"y":31024.615156903135},"targetPosition":{"x":9311.798149906164,"y":31038.230889340273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"be0f8147-fe81-412f-9651-efabf34f3715","savedPayload":{"position":{"x":8971.473101481259,"y":30956.672646716826},"targetPosition":{"x":9311.798149906164,"y":31038.230889340273},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"32ed83e8-e8a0-4957-a3e4-b622fc75c7c6","savedPayload":{"position":{"x":9311.798149906164,"y":31038.230889340273},"targetPosition":{"x":10010.117765892512,"y":31038.2414289695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"ADA/USDT","code":"{ \n\"codeName\": \"ADA/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"ADA","id":"35a3964b-e990-47b1-a8af-a0ac8fc2f426","savedPayload":{"position":{"x":8648.921525397753,"y":30767.656961264824},"targetPosition":{"x":9345.99004881409,"y":30822.470242030668},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"ADA","id":"e85947dd-72f5-4cba-a308-4603273b21ae"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"379c57c3-cc86-46f5-8b8c-6f2a7a45c530","savedPayload":{"position":{"x":8326.766342642502,"y":30577.836294318113},"targetPosition":{"x":9345.99004881409,"y":30822.470242030668},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"4021d203-1155-47f0-acfd-e36eae2f6144"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"40b6c5ff-7a62-4baf-a076-d9d86e9325b2","savedPayload":{"position":{"x":9184.209674440663,"y":30755.539892428813},"targetPosition":{"x":9345.99004881409,"y":30822.470242030668},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"939a7b9d-47c9-4993-8669-928eaf379381","savedPayload":{"position":{"x":9047.566907752374,"y":30639.7109930645},"targetPosition":{"x":9345.99004881409,"y":30822.470242030668},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"ee51c4d0-874a-4b66-b3a4-ebcf950bd41f","savedPayload":{"position":{"x":9345.99004881409,"y":30822.470242030668},"targetPosition":{"x":10010.117765892512,"y":31038.2414289695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"TRX/USDT","code":"{ \n\"codeName\": \"TRX/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"TRX","id":"36b47715-fec9-4457-89e4-41e89ffc82ab","savedPayload":{"position":{"x":8799.266710448626,"y":30360.185715736025},"targetPosition":{"x":9445.237671475092,"y":30627.745557902945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"TRX","id":"e76e5034-5cac-4c45-bae4-987687375eca"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"3457ac9e-a64f-48b3-ba88-a39fa7d30b05","savedPayload":{"position":{"x":8551.533298500963,"y":30080.108524535746},"targetPosition":{"x":9445.237671475092,"y":30627.745557902945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"4021d203-1155-47f0-acfd-e36eae2f6144"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"b9987b0f-1be5-4cb2-83de-85c249066417","savedPayload":{"position":{"x":9312.123506972115,"y":30514.057639682327},"targetPosition":{"x":9445.237671475092,"y":30627.745557902945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"49d18ab0-e48e-4c83-9eef-2393bed250c4","savedPayload":{"position":{"x":9217.958548606064,"y":30361.68353262632},"targetPosition":{"x":9445.237671475092,"y":30627.745557902945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"2cb30869-9de4-4855-bf78-58ac6a10a285","savedPayload":{"position":{"x":9445.237671475092,"y":30627.745557902945},"targetPosition":{"x":10010.117765892512,"y":31038.2414289695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"XLM/USDT","code":"{ \n\"codeName\": \"XLM/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"Stellar","id":"35d321d0-db6f-41a5-bacb-a0fec0ddb386","savedPayload":{"position":{"x":9068.220774187575,"y":30019.113200550793},"targetPosition":{"x":9599.840866016759,"y":30473.211975209528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Stellar","id":"7a2e1a9d-630f-4c38-bf3c-16ddd1c8a3b2"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"bb7a3cb8-5893-42d2-aa82-fef28c1a1039","savedPayload":{"position":{"x":8919.152628925842,"y":29676.194870956868},"targetPosition":{"x":9599.840866016759,"y":30473.211975209528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"4021d203-1155-47f0-acfd-e36eae2f6144"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"ac107849-71a2-4cd4-ad6f-4616c4047491","savedPayload":{"position":{"x":9508.480248130913,"y":30323.91873932882},"targetPosition":{"x":9599.840866016759,"y":30473.211975209528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"5efafb67-4dd0-4956-8c2f-7688f3b59dee","savedPayload":{"position":{"x":9466.001456937352,"y":30149.92172944439},"targetPosition":{"x":9599.840866016759,"y":30473.211975209528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"04b82448-a05a-4991-aa02-6a29f23d0ccc","savedPayload":{"position":{"x":9599.840866016759,"y":30473.211975209528},"targetPosition":{"x":10010.117765892512,"y":31038.2414289695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Market","name":"EOS/USDT","code":"{ \n\"codeName\": \"EOS/USDT\"\n}","baseAsset":{"type":"Market Base Asset","name":"EOS","id":"beccec26-4b63-433e-9cef-ebe8eaed7c82","savedPayload":{"position":{"x":9429.499767692705,"y":29777.83518536247},"targetPosition":{"x":9794.690994677178,"y":30373.999489883412},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"EOS","id":"99125fb1-4c68-4350-8bfb-3927cfebfba5"}}},"quotedAsset":{"type":"Market Quoted Asset","name":"Tether","id":"89d36ebd-6f21-413c-b226-5fbed39fb4db","savedPayload":{"position":{"x":9393.678068900388,"y":29405.64986048494},"targetPosition":{"x":9794.690994677178,"y":30373.999489883412},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Tether","id":"4021d203-1155-47f0-acfd-e36eae2f6144"}}},"superActions":[{"type":"Super Action","name":"Install Market","id":"046694f6-548f-416b-a36f-4b483dad52ee","savedPayload":{"position":{"x":9754.094569959665,"y":30203.775945177927},"targetPosition":{"x":9794.690994677178,"y":30373.999489883412},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":1,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"9cdf7254-2991-46fb-a038-07075ef36c22","savedPayload":{"position":{"x":9767.430440602404,"y":30025.19006083594},"targetPosition":{"x":9794.690994677178,"y":30373.999489883412},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"1b1de484-ece3-4d3d-90c2-e8ca597943d7","savedPayload":{"position":{"x":9794.690994677178,"y":30373.999489883412},"targetPosition":{"x":10010.117765892512,"y":31038.2414289695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5b18f8df-908e-406a-a1c9-20a85a1c1aff","savedPayload":{"position":{"x":10010.117765892512,"y":31038.2414289695},"targetPosition":{"x":11406.501309360794,"y":31038.234185104997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"exchangeAccounts":{"type":"Exchange Accounts","name":"New Exchange Accounts","userAccounts":[{"type":"User Account","name":"New User Account","userAssets":{"type":"User Assets","name":"New User Assets","assets":[],"id":"75cda0c9-4bae-4d8b-8557-a837350782f5","savedPayload":{"position":{"x":10327.762213787168,"y":30386.970299544362},"targetPosition":{"x":10665.330401454969,"y":30296.735542774903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"userKeys":{"type":"User Keys","name":"New User Keys","keys":[{"type":"Exchange Account Key","name":"New Exchange Account Key","code":"{ \n\"codeName\": \"Paste your exchange API name or label here\",\n\"secret\": \"Paste your exchange API secret key here. To keep you exchange keys safe, never share data structures you may download from the system, as downloads contain all information in the data structure, including personal information such as exchange keys. Use the share option on the menu instead. The share option strips sensitive information and outputs a file that is safe for sharing.\"\n}","id":"c28ded34-d2ee-48a0-9de9-10af97332187","savedPayload":{"position":{"x":10846.112654950275,"y":29621.154396705853},"targetPosition":{"x":10755.74248892461,"y":29958.879470017757},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"id":"7bbd85d7-55cd-4fbb-9901-8b542c5171ed","savedPayload":{"position":{"x":10755.74248892461,"y":29958.879470017757},"targetPosition":{"x":10665.330401454969,"y":30296.735542774903},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"dd6b185e-b8b7-4f09-8f85-391608875769","savedPayload":{"position":{"x":10665.330401454969,"y":30296.735542774903},"targetPosition":{"x":10912.423670126245,"y":30544.0075981432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f21048d0-6018-46b7-a85f-f25e1faa54a9","savedPayload":{"position":{"x":10912.423670126245,"y":30544.0075981432},"targetPosition":{"x":11406.501309360794,"y":31038.234185104997},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a9a5c7bc-797b-4cd1-b24e-a627cd396d3e","savedPayload":{"position":{"x":11406.501309360794,"y":31038.234185104997},"targetPosition":{"x":12105.680299912206,"y":31038.2364852166},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4255ce74-e993-421b-8c7b-e2e5eec97aee","savedPayload":{"position":{"x":12105.680299912206,"y":31038.2364852166},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"signalsProviders":[],"superActions":{"type":"Super Actions","name":"New Super Actions","superActions":[{"type":"Super Action","name":"Install Market","id":"2cd8e9dd-02a8-40b5-8979-108491309697","savedPayload":{"position":{"x":13596.796537982185,"y":29900.600915146206},"targetPosition":{"x":13238.769838624787,"y":30494.890822183912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"p"},"referenceParent":{"type":"Master Script","name":"Setup Market","id":"95b24e48-3b10-47cb-b149-8667571f4a83"}}},{"type":"Super Action","name":"Uninstall Market","id":"d103d8f7-8b21-436a-a0cf-8244b3dcb756","savedPayload":{"position":{"x":13738.553946135695,"y":30013.646249280533},"targetPosition":{"x":13238.769838624787,"y":30494.890822183912},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Master Script","name":"Delete Market Dependencies ","id":"c25d0331-8ac0-4834-aa77-743487455d45"}}}],"id":"c934df8f-d942-4723-ad44-f187e5df4351","savedPayload":{"position":{"x":12805.278842336647,"y":30389.20684138293},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9f4e7bfb-ea29-47cd-92bd-11f31d177ff8","savedPayload":{"position":{"x":12805.301618063546,"y":31038.2348844148},"targetPosition":{"x":12805.301618063546,"y":31038.2348844148},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"e"}}},{"type":"Charting Space","name":"New Charting Space","viewport":{"type":"Viewport","name":"New Viewport","code":"{\"zoom\":\"0.00\"}","id":"c3db9bcf-39ee-47d1-ab4f-14bd5de815da","savedPayload":{"position":{"x":13421.60994808922,"y":24983.353401471086},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"frame":{"position":{"x":13.750000000000227,"y":384}}}},"dashboards":[{"type":"Dashboard","name":"Super Action Generated","timeMachines":[{"type":"Time Machine","name":"Binance BTC/USDT","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2017-08-17T00:00:00.000Z\",\n \"toDate\": \"2020-04-27T23:59:59.999Z\",\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"c0e548d5-18bc-44ad-8945-dff20cb88f0a","savedPayload":{"position":{"x":12524.348758803366,"y":25309.98535989181},"targetPosition":{"x":13075.403928432961,"y":25732.285101397178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 2817,\n \"maxValue\": 19798.68,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"1454ac56-e031-41a2-aa66-fb0e69bfb936","savedPayload":{"position":{"x":12652.552191577817,"y":25181.643408979482},"targetPosition":{"x":13075.403928432961,"y":25732.285101397178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"24-hs\"}","id":"380e7e59-1968-4226-a434-4fba6b58c2ec","savedPayload":{"position":{"x":12810.102694567238,"y":25112.230820654186},"targetPosition":{"x":13075.403928432961,"y":25732.285101397178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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\": \"loading\",\n \"showPanels\": false\n}","id":"5d499f14-bf91-410d-8396-bdfa64305d3c","savedPayload":{"position":{"x":44078.64999458624,"y":30934.89460131808},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"431ea989-085b-40ae-aa2a-d371d7cb68c6"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ef396a73-0d6e-404d-b803-3fd5a6a507b5","savedPayload":{"position":{"x":44163.85123076828,"y":30946.443093510883},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"ddd34b26-4fa8-4d7c-b76d-f671c92a6181"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"0e65d47e-0dd2-44d2-9d5d-61ef940c65ec","savedPayload":{"position":{"x":44241.83694393738,"y":30974.63232510084},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"683e24f7-010a-412e-ba21-f280e63a0f1d"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"5c954b3c-42eb-4c4c-b70f-b1a824133e67","savedPayload":{"position":{"x":44311.67549610568,"y":31016.49344919726},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"210b7e14-a6f0-4c56-b5e4-108f57ebb4c6"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e9ecc09d-96a1-49d3-9359-765efe3d9f2f","savedPayload":{"position":{"x":44371.85960146544,"y":31070.221683842996},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"303572ad-cc90-46c9-8620-8454d557897b"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"070bc298-b6ac-46c0-9937-02bf8e6b7bcf","savedPayload":{"position":{"x":44420.81779483182,"y":31133.88297441118},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"10142313-9ac8-4f4c-8105-88aec7bb7ce9"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"3f29e182-d202-442b-970f-f5c20a3ac114","savedPayload":{"position":{"x":44457.117328935085,"y":31205.319635425785},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"afbf02cf-97a6-4dc0-a3d5-95f29ba7781f"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"085d70ad-beca-4286-8b4c-596532725d71","savedPayload":{"position":{"x":44479.64133141089,"y":31282.130540258924},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"80ed873e-8017-45ec-b211-fc4604f5aaf6"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"b1b65274-71af-4cf9-bf24-6b119a61fd87","savedPayload":{"position":{"x":44487.61147096234,"y":31361.728456129385},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"6635502b-5366-430e-8dc1-4edaa21c2a7f"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"0ce8fc4a-d73b-4d3f-a0be-1c791d4420a6","savedPayload":{"position":{"x":44480.78341149639,"y":31441.3959689604},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"3ebce074-9080-426a-baf9-61c1a04fc05b"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"1e7782c8-1e94-408c-90f8-7359413521da","savedPayload":{"position":{"x":44459.48592250235,"y":31518.457632189642},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"c424ba00-bbe0-4ae9-830a-3d2aa6fcaf4d"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"49eb0d21-6618-4c22-9792-56100a9b95ea","savedPayload":{"position":{"x":44424.41129890276,"y":31590.302021321455},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"3d048c1f-d45a-442a-9d44-362ad7770bb6"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"6a050c22-4d82-4a15-992f-55e42ded6634","savedPayload":{"position":{"x":44376.75954564685,"y":31654.50449366559},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"c92d9454-d5fb-4954-a188-367dcd697af6"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"f56d6fb7-70b9-4c00-8e42-3f4504543d7b","savedPayload":{"position":{"x":44318.14175549443,"y":31708.891385093266},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"4810638a-c137-4df6-8016-c8a2540dc9e7"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"cbc52576-2118-4733-a0ce-46d4cfeb301b","savedPayload":{"position":{"x":44250.60221948984,"y":31751.772743890055},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"9c1f6b84-409e-4257-92ea-a9481d3509cd"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"c9216fd6-be30-45f7-9ae5-8ade686409c2","savedPayload":{"position":{"x":44153.02320691994,"y":31784.13904467631},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"dcd46168-1662-42c5-be91-f489d9a55833"}}}],"id":"6d3110be-ac1c-463a-86cc-3f24e4af1361","savedPayload":{"position":{"x":44141.821764465945,"y":31355.229987239374},"targetPosition":{"x":43626.31800703183,"y":31407.414884109556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":190,"radius":0}}},"id":"ab74fc1e-8a97-48a5-8338-521964f5b98f","savedPayload":{"position":{"x":12985.846704570287,"y":25043.837675364775},"targetPosition":{"x":13075.403928432961,"y":25732.285101397178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 28059.458155876786,\n \"maxValue\": 36963.479419651776,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"15b07a5e-61da-41a7-bcfc-1a01f6347887","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,"arrangementStyle":0},"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":"424670b0-3ed3-44a5-8d63-7562e58c08f5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"cc76acbb-9fd2-43f0-95de-dc78e1aaa2b5"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"1a754c47-be68-4ba1-8ea6-2744f574fe71","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"e0d47cb6-6d3e-4c50-b13b-4cb748722e29","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"65f111e4-3c9d-4515-96e8-1960f1605842","savedPayload":{"position":{"x":13166.352756697594,"y":25043.728402856592},"targetPosition":{"x":13075.403928432961,"y":25732.285101397178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 9.034592348123713,\n \"maxValue\": 13.034592348123713,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"ade7baa2-6d4d-4840-883f-c03fddc47439","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"7bcbbe38-eae6-4322-9627-30a48db50e9e","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"302bfaf2-6466-4aa0-9924-33999366b774"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"513f3192-373b-4c4b-a002-481d67cec80b","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"f6868e09-2559-4fac-9631-54cf1a867c8a"}}}],"id":"b06df65c-f0ff-4214-a7e0-e4cc6f06af4d","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"8db2874f-5d6b-40c6-b9af-acb0b24f245a","savedPayload":{"position":{"x":13341.015381884503,"y":25091.34127808004},"targetPosition":{"x":13075.403928432961,"y":25732.285101397178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 9.034592348123713,\n \"maxValue\": 13.034592348123713,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"713e6bce-5e40-4d52-8b84-9bb89f7a715d","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e257155c-df75-464d-b327-146273b82856","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"be7e47ef-a530-4dc1-bf59-b731f1e49fa1"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"cf56454f-5813-4cb2-be56-977e48a4d856","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"0333bb7c-5101-441b-be9a-d9ff1a84f116"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"8bfc5004-5a90-4e47-a1e7-6035b954f655","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"913f8079-b038-444a-ad43-465fa0443c04"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"4af78a5c-748d-4faa-867d-fc40da0b0a01","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"bba7e1ab-5bca-44c0-a8aa-cd9570b338f3"}}}],"id":"6a91e3e5-005d-4420-9f51-70f8b0e13894","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0}}},"id":"fba394b4-3d00-4be1-913d-63a431ed248f","savedPayload":{"position":{"x":13498.865933588835,"y":25181.69600093408},"targetPosition":{"x":13075.403928432961,"y":25732.285101397178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Live Trading","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-min\"}","id":"e83ea85f-9b0a-4590-a732-bbc5ff9d2cba","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,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"on\",\n \"showPanels\": true\n}","id":"ee524abe-ce4c-43de-a260-e4332d058bd6","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"527c6b54-c797-4977-99d1-36b89e08f5bb"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"fb7501fb-f8ca-4493-9522-a2bf3d3ea5fc","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"8a538782-87e4-45e7-90fe-879d921f3a84"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"on\"\n}","id":"ff0a139b-e03f-49b6-a883-801aa2844808","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"f4cceeeb-e0a3-4e0b-81e8-f4d1a9c64d8f"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"on\"\n}","id":"a3e9f878-2fea-4030-9a1d-c6c1afc14e77","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"824314e2-9950-4479-af8d-ed86864b935f"}}}],"id":"babeb0fd-29d3-47d6-a587-f5a65829124a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":330,"radius":0}}},"id":"cbd29e2b-b767-44f1-b5f4-3cf270fdd14b","savedPayload":{"position":{"x":13626.990638949983,"y":25309.56619076788},"targetPosition":{"x":13075.403928432961,"y":25732.285101397178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"26eaf9c9-7de1-49f5-9d7c-b32a6fe6ed79","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,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"going right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"c48591c8-008b-4e51-8dd1-5ce0cd41240c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"11799e85-e7db-4069-8485-24039fb9ec8c"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"7c91f5c1-7e02-4337-8481-b7d2244b56d4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"4b336f24-4ef4-47bd-a768-ce8ff0bf3ddc"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"20e89f25-c65a-400b-a8cc-869b078d7170","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"8219cb27-d00c-404c-af8d-707ed0e5bf93"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"ff3d41dc-1eb5-4a88-b7c7-6b1faa935d62","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"69df429a-96ca-4830-b234-a9c214beef8c"}}}],"id":"443747f0-4ea7-4b53-8a90-a082fdcac398","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1870,"y":80},"width":150,"height":40,"radius":0}}},"id":"a47a6bda-d071-4447-b3db-4e96c9291f9a","savedPayload":{"position":{"x":13717.649356011434,"y":25466.56084164854},"targetPosition":{"x":13075.403928432961,"y":25732.285101397178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"2ad52fa2-1ac3-401a-b378-3a78078b4d6a","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,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"going right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"c232a962-f13e-48e3-9b4e-8d4b31931fdb","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"86135c4b-7161-4602-8331-5ada9f2621ea"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"4d1440d9-19a6-4d56-afe5-f76c1cc517bd","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"a19aea16-1776-4222-abc3-9441c55fdff8"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"b6663f69-d7ce-4319-b427-92a3fdcb27b4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"716af81c-fb38-4488-9e39-73ca2fdbaa21"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"d9ba5892-a4b1-4d97-8739-3c879090c7d7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"48bafad6-7649-4128-ade0-c9d706fc895b"}}}],"id":"2b2e2169-5bbc-46f5-9553-c25749610b3b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1720,"y":80},"width":150,"height":40,"radius":0}}},"id":"7f4852b6-d5fd-4c6b-b02e-61b72a1f9d9f","savedPayload":{"position":{"x":13764.664742539624,"y":25641.73740636788},"targetPosition":{"x":13075.403928432961,"y":25732.285101397178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"5ea7cfcd-8717-4f6d-8ef0-394509af038b","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,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"going right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"a5bb774c-cf9c-427f-a66b-424ed54a815c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"c53d8a77-b1d4-446c-9bef-8458b832c5e5"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"46159a77-54c6-4a3f-9423-0eb43acca50c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"0f1e10be-0da8-4d10-93d7-35e407579cb0"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"a7b4661f-09e3-43cd-8783-d4fa014e9e33","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"a85fc58e-5b58-449b-b733-c3a623e1d5d4"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"48963159-f811-462a-bcab-09573a2bfaec","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"302de277-a428-4cc0-8757-b2ef7de6040b"}}}],"id":"9b7cda1d-5fcd-4840-983d-5d168dc1ef21","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1570,"y":80},"width":150,"height":40,"radius":0}}},"id":"93865aa1-19b2-4e2a-ad9d-84e44247e3da","savedPayload":{"position":{"x":13764.672526378674,"y":25823.180741164284},"targetPosition":{"x":13075.403928432961,"y":25732.285101397178},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b28baefa-7061-48f9-b410-7d74dd1f4d06","savedPayload":{"position":{"x":13075.49864690815,"y":25732.164231182436},"targetPosition":{"x":12809.903295371514,"y":26373.610784042445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":645,"y":-155},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"Binance ETH/USDT","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2018-12-28T18:29:04.249Z\",\n \"toDate\": \"2019-01-08T14:51:37.101Z\",\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"699a1ff0-ab65-41a6-bce3-44c3a753483a","savedPayload":{"position":{"x":43433.904964020134,"y":31090.08122008158},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 3940.7984598459843,\n \"maxValue\": 4470.5984598459845,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"f42902ce-0143-40dd-9287-c560e8ce46f3","savedPayload":{"position":{"x":43522.58881136428,"y":31164.598399546274},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"24-hs\"}","id":"31c4bebf-859b-4116-9c38-7c2e34184ac2","savedPayload":{"position":{"x":43586.959939711174,"y":31259.03996760349},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"805eba9f-f77c-49f0-85ee-9a7dfb13611a","savedPayload":{"position":{"x":44078.64999458624,"y":30934.89460131808},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"2d7d22ec-f671-4090-9c9c-e4b0c6c2775e"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"a72c458b-99dd-4001-ae73-11d0cb988e10","savedPayload":{"position":{"x":44163.85123076828,"y":30946.443093510883},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"64e94c82-d070-485a-a117-01a4b77412ce"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"bb5d27dd-b313-479f-bbab-4d8a521c37f5","savedPayload":{"position":{"x":44241.83694393738,"y":30974.63232510084},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"36099c73-db76-421f-a708-3034438521fd"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"206ef498-cbea-48b7-b08f-7a36c4e1fb37","savedPayload":{"position":{"x":44311.67549610568,"y":31016.49344919726},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"85bba657-c6e4-47bd-ba9b-90896d7a0dfb"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"39ca8f80-549f-471c-9506-258f30dade07","savedPayload":{"position":{"x":44371.85960146544,"y":31070.221683842996},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"7c579b34-cec9-4088-8356-6456aaf584f9"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9c8e874d-9dbb-4bc6-8161-986419151b40","savedPayload":{"position":{"x":44420.81779483182,"y":31133.88297441118},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"f70fcd18-3dcb-4fb4-b6a5-3c747fffbb4c"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"d86287b4-92bf-42ee-9dbf-008553c795c3","savedPayload":{"position":{"x":44457.117328935085,"y":31205.319635425785},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"a74b855f-2618-48a1-a205-912c0706d557"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"01e45723-4cce-4b00-865b-fa232762dfb0","savedPayload":{"position":{"x":44479.64133141089,"y":31282.130540258924},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"f1c226bf-68b1-4cc3-bbfb-719742db129b"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9f7b60a5-b12e-4afb-84c2-2e2868ffcf21","savedPayload":{"position":{"x":44487.61147096234,"y":31361.728456129385},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"4a2e6c31-6ac4-4cfb-afd3-3a80351f820d"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"df25cdbc-790f-4d4c-a0f8-30214b6fd726","savedPayload":{"position":{"x":44480.78341149639,"y":31441.3959689604},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"9e8c58c4-c1eb-4465-b679-ac9d3e8f4c4e"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"7781823f-9fe6-444c-8591-f65f39d89743","savedPayload":{"position":{"x":44459.48592250235,"y":31518.457632189642},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"06c72bab-01ca-446b-a0b4-7d7eee109839"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"9ce7c994-f323-4a0b-972e-c316bf4a9b4a","savedPayload":{"position":{"x":44424.41129890276,"y":31590.302021321455},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"1e19eb33-7c3f-4b24-99e3-e5bf275a4b14"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"2462ad5b-0d73-47cd-8161-d59d5261fa5d","savedPayload":{"position":{"x":44376.75954564685,"y":31654.50449366559},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"559be759-fcc7-4c8f-bfe5-fe2ad5699e64"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"42cc3795-0ca6-4ac2-8099-af04f462d21f","savedPayload":{"position":{"x":44318.14175549443,"y":31708.891385093266},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"f7bb88aa-5624-4164-8353-c1006976ce5a"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"cf3f0195-0693-4243-8399-c167b0f6bf07","savedPayload":{"position":{"x":44250.60221948984,"y":31751.772743890055},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"ca3b14d4-b9b4-42be-89c9-d1f6f03e2584"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"fddac395-2857-4f42-8b41-305eee2c1e10","savedPayload":{"position":{"x":44153.02320691994,"y":31784.13904467631},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"3616f54f-d12a-4a33-8493-d79943095b40"}}}],"id":"f2dcf101-d9bd-4297-9201-823b7debaa3a","savedPayload":{"position":{"x":44141.821764465945,"y":31355.229987239374},"targetPosition":{"x":43626.31800703183,"y":31407.414884109556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"df038364-e775-4528-a227-fa875c19f7b5","savedPayload":{"position":{"x":43623.85978187672,"y":31362.647150527082},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 32053.26160624008,\n \"maxValue\": 40957.28287001507,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"5c58e2ee-804c-4a67-919f-d834d581a68d","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,"arrangementStyle":0},"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":"414562d8-2e0f-4f8f-bfb0-cfb5a31880ca","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"77bbb005-e635-4a07-a00e-5d0f25bc9084"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"0535c50a-23d0-4705-b91a-88cddb59d4d8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"43437758-d954-4c53-ada2-16f6b5d4318e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"1f6ea583-6ef7-4b14-a641-fbb5426955e4","savedPayload":{"position":{"x":43633.74577614054,"y":31475.276430635626},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 10.828749541620834,\n \"maxValue\": 14.828749541620834,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"773da424-57da-48d3-875d-e01eef767717","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"0a382b1f-e874-4350-80cd-ec73916149f5","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"83fd70d7-063a-491e-bb0e-49da3fdbbc79"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9fbbf4be-3ce7-415a-930e-e6a3d02eddc7","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"a22caa08-ca88-4217-a718-54256191090d"}}}],"id":"28292fb6-dfdc-44b9-9afa-227f5974d535","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"f476c36d-6c43-4e30-9c55-8684391ad26f","savedPayload":{"position":{"x":43611.43180799584,"y":31591.37193734411},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 10.828749541620834,\n \"maxValue\": 14.828749541620834,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"a6ffbee2-3867-4fe9-90e6-e2417d894178","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6f4a9e10-5e9c-456d-8642-f6779e221e54","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"077fe5ec-7fab-402b-b39a-752c0b8ee216"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"c1158754-048c-466d-ba17-416db7ed07f5","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"32daacad-779a-468e-af1e-f481169a140a"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"f51dae0d-7e3b-4a10-8915-2bbf5cc9bee0","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"5c5274f1-d2e6-467a-b0d0-5c608a7f8cd1"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"eecd623a-7b82-40a0-a604-6e402c9464d6","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"6b2f9252-dd53-448b-9ec3-b40f38d6967b"}}}],"id":"ca66c75f-f88c-47ca-ba33-5ee784038dc2","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"f390155c-756a-4be4-8093-e0ef94476c19","savedPayload":{"position":{"x":43559.23277912925,"y":31694.525566454333},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"68d8485d-1bdc-4395-87c6-ce687464c1e4","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,"arrangementStyle":0},"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":"0ab57e23-ab14-47e0-a50f-8aa7464d3f5d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"d7302c42-c04d-4e40-ae81-53a3d5ab6973"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"84fe17d7-bda4-48e3-9a43-43d6bfdbf8a6","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"7cd519e8-5891-49c9-85ae-ee9be4af47b1"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"4f5547db-e1f8-4deb-b6ae-58ef45bc1ef4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"983419aa-c0b7-443c-9662-ab5ebc7789bb"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"cfb55e6a-9387-43a5-8a0b-8e0cda359654","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"a7e568fd-34cc-4947-823e-de9537a218f4"}}}],"id":"8be39a23-6611-472e-96ed-394ea02ac636","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"d530efdd-1324-484f-b2c1-92bc12cbd09b","savedPayload":{"position":{"x":43484.72851305459,"y":31777.876573021833},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"19e51e34-661e-4204-83af-13ef68bc7807","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,"arrangementStyle":0},"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":"78870996-4a8e-4cc3-8d66-c1b2f07d97ec","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"9dbc8439-506c-45f6-9fff-53efa1b9e49e"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"71c41284-7fc1-4d83-8b61-c492ead438aa","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"72912a92-465b-475c-adba-38eccfdc3feb"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"b9797404-7640-4e55-807a-9826be6621b6","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"4df740e7-dc01-4d8b-a524-921242be2461"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"4388dcf6-2dab-4454-87c9-01c2a5f27d38","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"78f9823a-c50f-4181-851f-6e7ce7dfec68"}}}],"id":"f4a3c54a-0fcf-4918-a613-95fe1c0a06dd","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"ea966d65-7a93-45e7-ab7d-cfda2d6a85ad","savedPayload":{"position":{"x":43391.02991247641,"y":31839.99226140119},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"427a99b5-ef71-49ff-9518-90fec57a9384","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,"arrangementStyle":0},"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":"9d47d0cf-879d-4213-802c-b3a534ba0022","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"e08f86ed-a70e-4992-a629-aba8cb5974a0"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"d8cac6e0-b778-463e-8dc0-5f797af10cce","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"2fa173f0-7dc6-4092-a353-df11cbbf94e6"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"a32c8571-3a19-43ba-9545-f7f19b021f7d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"1480e422-f905-462a-8472-4abef0c8a9c3"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"e8ffaf4c-43b9-4559-b40e-1dadc2c11ec3","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"371864f3-f899-49bf-9550-8eeac54cc4e0"}}}],"id":"f237e640-98a3-487f-a369-a3e1ce38823b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"d0e3a339-765d-4ff1-bdbe-3adfbe41f2de","savedPayload":{"position":{"x":43284.22656791505,"y":31876.045500857595},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"1c6f1b36-a915-4deb-a32a-89d0cd20f53b","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,"arrangementStyle":0},"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":"11dc3541-b7d7-4a6d-85f3-0e63bfede7df","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"ac6e339c-3702-4311-81c7-b6a4f6e556bd"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"50bbd2c5-5122-471b-b51e-9ad85398e6ba","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"75198a71-5f02-4975-b8c6-161e883c946b"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"089811d4-6414-48b9-a57e-dda6db7663e6","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"bb3a2219-7fa9-466a-99c8-7d0143ba9cd2"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"d2888f96-dfa2-45e6-be1f-0d85098c7962","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"ae479800-3046-4727-a7fd-c34eb55facd5"}}}],"id":"ffde7ab8-815d-456d-b6b6-3124781c898e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"6551eda8-5430-4bae-ab36-97fbfdcdcc67","savedPayload":{"position":{"x":43156.82064724961,"y":31879.74004634101},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"df4b659d-8864-49f3-ba9b-6b75d1030c50","savedPayload":{"position":{"x":13301.016472323434,"y":25882.710338356064},"targetPosition":{"x":12809.903295371514,"y":26373.610784042445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":645,"y":55},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"Binance ETH/BTC","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":"8c69056f-09e0-47be-bd6f-7e7f8043f883","savedPayload":{"position":{"x":43433.904964020134,"y":31090.08122008158},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"764a2b8f-af55-42b7-869b-8308902e8fae","savedPayload":{"position":{"x":43522.58881136428,"y":31164.598399546274},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"24-hs\"}","id":"997933e3-e9ca-4a35-8b8b-999ae72cfafa","savedPayload":{"position":{"x":43586.959939711174,"y":31259.03996760349},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"84396b1c-ff1c-4c49-bab1-52c6efd1e907","savedPayload":{"position":{"x":44078.64999458624,"y":30934.89460131808},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"16b9f4a3-a8d5-4dee-9e06-ebf6dc99a0dd"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"b1a0cd40-1bdf-4142-a6ca-af39576c3339","savedPayload":{"position":{"x":44163.85123076828,"y":30946.443093510883},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"ad4e270d-d05a-4c08-a5d9-77eee5b0c1df"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"b47b3606-0682-4ca9-9176-f3e4c372a052","savedPayload":{"position":{"x":44241.83694393738,"y":30974.63232510084},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"f5a6c648-702c-4a09-b31f-172a39667a0d"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"750e7503-336e-4459-9f1f-17cfe7ec0c7a","savedPayload":{"position":{"x":44311.67549610568,"y":31016.49344919726},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"b79faabd-ce5d-4c0f-83f9-cf92872ef865"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"4c45a86f-683c-4eee-863c-bc34db00039a","savedPayload":{"position":{"x":44371.85960146544,"y":31070.221683842996},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"3f5f5748-7e39-45c6-9e35-f9ef72ee49b4"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9ab6879f-0294-4b49-825a-6af5e1b00173","savedPayload":{"position":{"x":44420.81779483182,"y":31133.88297441118},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"a61f956e-17b3-4dd7-97a6-d752909f25ba"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"b4da46b9-581e-4a4e-b328-c6e557881302","savedPayload":{"position":{"x":44457.117328935085,"y":31205.319635425785},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"6e7ed7af-2ab2-4c26-a945-5ff282ba708e"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"98e8b274-c06b-4a0f-a558-55df44d0aff4","savedPayload":{"position":{"x":44479.64133141089,"y":31282.130540258924},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"fdee854a-412d-4da3-bfc6-097328a7b08b"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ec864951-6115-4788-8d60-3c0c5a445b6f","savedPayload":{"position":{"x":44487.61147096234,"y":31361.728456129385},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"d65052b9-889e-4e5b-bf27-1f69eac2c1dd"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"7651503d-04f1-402e-bc7b-b0a23863d923","savedPayload":{"position":{"x":44480.78341149639,"y":31441.3959689604},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"7bb9b38c-0720-4cba-93d0-5e8df34f7b37"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"76fbc7a7-c634-4298-9215-651e300d639e","savedPayload":{"position":{"x":44459.48592250235,"y":31518.457632189642},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"f50e39e6-fccf-4641-a5b9-c4999ea85bc9"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"af058dfd-083b-44b1-9c7d-927b0b96155b","savedPayload":{"position":{"x":44424.41129890276,"y":31590.302021321455},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"b9800757-deb3-460a-b21a-b1ded164bfe3"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"5ee5f14e-2b39-48e2-bfdb-5f13d58a21c5","savedPayload":{"position":{"x":44376.75954564685,"y":31654.50449366559},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"2d36dd55-4a17-4c7c-ad99-f8e155cf79df"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"f9045e10-ba18-4bd3-be0e-9f59e56a2891","savedPayload":{"position":{"x":44318.14175549443,"y":31708.891385093266},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"6260b35f-cb85-462b-b231-75d0300c319b"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"186448a2-a517-41b0-8876-6b8b0ebf01c7","savedPayload":{"position":{"x":44250.60221948984,"y":31751.772743890055},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"dae4c509-b392-48fb-8719-c885e113e582"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"f3a0282e-2443-493f-9e3d-8d75d9a972fe","savedPayload":{"position":{"x":44153.02320691994,"y":31784.13904467631},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"3a752ddd-2215-4875-9d30-bdafa1e56330"}}}],"id":"bce536ce-7871-4fb6-87cf-21f3247fa1af","savedPayload":{"position":{"x":44141.821764465945,"y":31355.229987239374},"targetPosition":{"x":43626.31800703183,"y":31407.414884109556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"830b6530-00cb-405f-9233-8c41afb003c3","savedPayload":{"position":{"x":43623.85978187672,"y":31362.647150527082},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"68511546-2393-4ddd-98ef-6f089889c6dc","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,"arrangementStyle":0},"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":"f88a6522-cb98-41fb-b32e-be4c6444a4e2","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"3e3efaba-d646-4ed1-84e4-e557d6577cff"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"c969c06e-a064-483d-85e8-5b12f6519fd5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"86342cd3-4aa7-40af-9a05-579f3cbdcd2f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"2d09aa0a-7630-4abe-a9b8-0419bdd8513d","savedPayload":{"position":{"x":43633.74577614054,"y":31475.276430635626},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"c78d1550-4b18-4822-bd72-572ce66ca0fe","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"f74bd610-ba0c-4033-b12d-c5813e404a0a","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"6b44528c-99f2-4481-bb5a-4543ce9eeb23"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"0df32ee2-4048-423d-bc7b-96ff716fc702","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"762df080-244a-44a5-a10e-e6f90547e039"}}}],"id":"9a83438d-0215-46d0-a8b1-e1f2433bff3b","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"e16b3e9e-6a75-4ec0-a8c6-63011ea690f1","savedPayload":{"position":{"x":43611.43180799584,"y":31591.37193734411},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"b46dca0e-7f5c-46e9-9d04-36000b9375bf","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f744923e-d6f0-47b6-b455-a57118a92280","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"37aea73f-0321-4711-82f0-27f2331851f9"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"b321f5f1-c71c-4306-8626-f61886b481a0","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"4dd66811-c216-4488-80ae-f5fb86527782"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"b2d1c6e7-57ad-4cef-9ab1-da6940e4088a","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"cdeb9d99-2e44-457e-aa1a-77e4e83128f2"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"9e7f734c-6467-4c08-89a4-6e2290a4b876","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"8c7efbf3-df1e-4d2a-b16f-2c44610a92f0"}}}],"id":"a7278c61-6298-49de-80f8-4d8a8005801a","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"e4f3f06e-86c0-4c2a-9d02-301615231dc9","savedPayload":{"position":{"x":43559.23277912925,"y":31694.525566454333},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"1f88c46e-37f4-49cc-aafa-331cd26af2bd","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,"arrangementStyle":0},"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":"9a56f1f5-c29f-44c6-9af7-eae68078cb68","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"ccf46688-a170-415e-b02a-2086ea54303a"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"a917d3a3-b79a-494b-b62b-9b6c664c2873","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"d4ec1ce0-bb1e-4264-bf21-cb8a5fc1a503"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"6537a0a8-6d18-4e44-8e03-cd428aeda997","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"a31e1238-a02a-4f7f-afb4-4eccb55d7134"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"89584d2e-6a59-445c-b39b-972621dd8c50","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"979497e1-fc1d-45ff-a315-dc38732d1f5d"}}}],"id":"daefa7a9-c7a9-4534-b7d8-c226b9c4af15","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"797a44ca-69f0-4f8c-af9f-10f5964b0565","savedPayload":{"position":{"x":43484.72851305459,"y":31777.876573021833},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"8197664a-1915-454d-8a79-1f1f4b940bd9","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,"arrangementStyle":0},"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":"71fc47de-6b54-4fce-8985-f753e4801ee7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"fb7a0d59-28c0-4e85-8263-2fca9291395f"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"f8c8bb80-84d5-48fc-804d-eb982651825f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"a895b4b5-54be-420d-9f60-4afefce04b20"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"f7f685ba-e080-4caf-8096-5d459eef42b6","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"dc4f0ddf-405d-4f6a-8954-3dbab72561ae"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"6b108485-e675-43f7-b1d5-47bd027af4dc","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"ed2abc11-a45f-4e39-b4ae-ef677aec9690"}}}],"id":"23acf30b-a19d-478d-a5d9-c6a11bee8b02","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"dd5b992b-23dd-4a4b-8bad-208c04c5cb46","savedPayload":{"position":{"x":43391.02991247641,"y":31839.99226140119},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"ee362d29-7331-4198-a88f-1e5edd42d1f5","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,"arrangementStyle":0},"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":"69377e5c-dec2-475c-9b1b-65a8fbfebea0","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"b34828ab-b807-49c9-ad9a-dd42c0f4f656"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"526575a2-f546-4985-8cc5-e6424f7c42ee","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"8624e12a-5ed5-45d5-b142-f80182af0633"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"4f6fe777-cfed-45a7-987b-53502c1f9077","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"6555b383-f5e5-4dbf-8a35-47bcfcec27a5"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"b4409acd-4f46-4436-8350-989262553da6","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"248329f6-dff0-473d-9a8f-ef4cd20669f5"}}}],"id":"ef202075-821c-43d7-bfba-92db4a538fcc","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"611c2dde-a670-45fd-8282-ea44816d96dd","savedPayload":{"position":{"x":43284.22656791505,"y":31876.045500857595},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"d90939e8-8631-4a33-9e43-203e9ed71093","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,"arrangementStyle":0},"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":"7ad19bf4-a2b8-4ddb-b2f7-8d66b8f1daad","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"e2ac8a3b-67a4-4fb0-92e7-520cccb48d82"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"22d1d089-2ceb-41f6-9b2e-bf9416294446","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"7a5fb561-1307-43e6-9b34-2a35dac865ad"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"1d20a79b-5eb0-4dcd-8da4-cccdda6df9c7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"2e976c51-c1c9-4347-9db2-7c7deca89d28"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"831df92d-4013-4327-b40f-4d1019d0aca9","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"24962019-f13a-4530-907c-492af5dd145d"}}}],"id":"915d9cfe-a623-4d1b-b9cb-88392dac2988","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"438cac4f-365c-4323-a26b-a54f1e5aa407","savedPayload":{"position":{"x":43156.82064724961,"y":31879.74004634101},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"35d8c1ec-b36d-4daf-a392-a4bfaf2920e4","savedPayload":{"position":{"x":13451.586371422298,"y":26108.008969359016},"targetPosition":{"x":12809.903295371514,"y":26373.610784042445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":645,"y":275},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"Bitfinex BTC/USDT","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2019-03-11T00:00:00.000Z\",\n \"toDate\": \"2020-04-24T23:59:59.999Z\",\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"e531739b-5332-437d-8d13-7e2891f3886a","savedPayload":{"position":{"x":13684.219125396925,"y":25702.488382545678},"targetPosition":{"x":13504.323467754602,"y":26373.61775161554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 3800.9,\n \"maxValue\": 13969,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"1da9c8f6-9c11-4c05-b555-256a124fde58","savedPayload":{"position":{"x":13852.268073620487,"y":25772.12340913945},"targetPosition":{"x":13504.323467754602,"y":26373.61775161554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"24-hs\"}","id":"f9b9861d-806c-4a7e-b112-3498937a9583","savedPayload":{"position":{"x":13996.374635914955,"y":25882.50928983947},"targetPosition":{"x":13504.323467754602,"y":26373.61775161554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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\": \"loading\",\n \"showPanels\": false\n}","id":"b6646ed3-1c86-474b-9f18-9582307c4b3d","savedPayload":{"position":{"x":44078.64999458624,"y":30934.89460131808},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"8ca5590a-f8fd-4451-beb4-6f129503917f"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"c68d6a1b-499f-4500-827d-00016f045c91","savedPayload":{"position":{"x":44163.85123076828,"y":30946.443093510883},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"51e94a87-e6cf-4245-a74b-96c3032abb05"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2d364b62-deaf-4195-80d9-a632191abe13","savedPayload":{"position":{"x":44241.83694393738,"y":30974.63232510084},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"a5534859-2c15-4848-8083-a1eb33485e21"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f4dbb99f-2b6f-4cc0-8ce8-e188c3fcdfac","savedPayload":{"position":{"x":44311.67549610568,"y":31016.49344919726},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"8969e130-aa60-47c1-a301-99f1908db6df"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ab65e7e3-8a92-4602-80df-580327fd2220","savedPayload":{"position":{"x":44371.85960146544,"y":31070.221683842996},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"56d92d99-a094-4b18-9e22-37eba7b7dfdb"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"7f8990ac-b41f-4283-9f1b-721462cb7598","savedPayload":{"position":{"x":44420.81779483182,"y":31133.88297441118},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"eb35295a-b358-4688-8482-74307091466e"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"322104e7-278c-4420-969e-87f4bbb870f5","savedPayload":{"position":{"x":44457.117328935085,"y":31205.319635425785},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"158d1589-7e86-4a42-819b-f3992495d35c"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2098e265-daa1-4864-ac04-e5283eeef1bf","savedPayload":{"position":{"x":44479.64133141089,"y":31282.130540258924},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"d525e21f-ea75-4844-8e09-87f5f478045e"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f983b37e-c670-4b0f-bc4b-8fe65af3d232","savedPayload":{"position":{"x":44487.61147096234,"y":31361.728456129385},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"d4905d55-abce-4fa9-95a2-1875c16fb4b7"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"293ee942-5d27-4644-a7fc-803edfaa5cfb","savedPayload":{"position":{"x":44480.78341149639,"y":31441.3959689604},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"9e1a2843-59a0-485e-8ce0-e8c98e5a2001"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"6245c15f-7307-4739-8ef3-7e265a0f6978","savedPayload":{"position":{"x":44459.48592250235,"y":31518.457632189642},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"850a58e9-2da0-43dc-b5be-739bd478309e"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"4a247561-e97c-4a42-895d-3dd6452225eb","savedPayload":{"position":{"x":44424.41129890276,"y":31590.302021321455},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"891c972c-e624-42af-ab10-056b6d6f194b"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"b63dee4a-4432-48ba-ba61-1520962df5a8","savedPayload":{"position":{"x":44376.75954564685,"y":31654.50449366559},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"dbfb5bbc-ebb7-41da-8a45-eaf75d943736"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"5adcf815-2f03-425d-966e-bce835cd3ae4","savedPayload":{"position":{"x":44318.14175549443,"y":31708.891385093266},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"5bcf67c8-5a50-477f-9dce-c23993104cea"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"a4d4d706-613b-4500-84ab-ed4dc1a63022","savedPayload":{"position":{"x":44250.60221948984,"y":31751.772743890055},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"83243cbe-ccb6-4aef-94a2-5fa4870c674b"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"3eb34c12-9a1c-486a-a05e-36a4fe72e8bb","savedPayload":{"position":{"x":44153.02320691994,"y":31784.13904467631},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"62ae801f-e2e0-4611-9cc0-a3dc66a76da1"}}}],"id":"ee081f41-fa2b-4dce-ac9b-3a90753d586c","savedPayload":{"position":{"x":44141.821764465945,"y":31355.229987239374},"targetPosition":{"x":43626.31800703183,"y":31407.414884109556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":190,"radius":0}}},"id":"4e5b7cbd-9670-45dd-81c9-ba32c736abd4","savedPayload":{"position":{"x":14106.416207905106,"y":26026.45813447207},"targetPosition":{"x":13504.323467754602,"y":26373.61775161554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"eedff2a2-f9d1-4f67-b7cb-d14b9241aa8f","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,"arrangementStyle":0},"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":"258f0f02-d099-4787-9ca7-415f5e4da714","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"40ad627e-1b42-471c-bf9c-5d2ac61811f9"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"392c53ea-3bf6-42b1-a405-74d3376288f1","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"1cb31f2b-c096-420e-9b44-dc7e4e2f65a2","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"98efda27-2cec-456c-845a-eb9641db0319","savedPayload":{"position":{"x":14175.680897182294,"y":26194.006230464587},"targetPosition":{"x":13504.323467754602,"y":26373.61775161554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"31286777-b7c2-409b-96d4-bd146eda485a","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"f70ff0a8-9395-4b5a-b8a0-49c818073762","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"1ef0b65e-d904-4a82-bf61-a6ba3aaf5443"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"08c9c2df-d758-457c-affa-57aad392edda","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"90374e6f-9568-4211-b3a6-7c650c45f1e3"}}}],"id":"a21ccb2a-f9a0-4e0b-b4ae-3c0bbcbef247","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"e45c15cd-174e-4964-bb63-facd8dd8b201","savedPayload":{"position":{"x":14199.357314694356,"y":26373.64064063085},"targetPosition":{"x":13504.323467754602,"y":26373.61775161554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"fbc4d6f1-e43a-4248-9f91-d5143d920fe1","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e894311a-023f-4e18-b7c4-6ec0444cdf4c","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"e19f6e55-47de-4f92-99ae-e7e10d755561"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"b04f7a03-a426-4077-bd91-ec0e443f3ea3","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"bbfcd667-2876-4432-acdd-c4c18a10da9f"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"7e40af27-aebc-4f27-8bf1-5d1e63d56221","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"3331fec3-bb84-41ba-aec6-e8859970cbf5"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"bfd88231-7f34-4472-82b4-7ffd4ba62c5c","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"aeb10072-f55f-49e3-96bf-46967054f62f"}}}],"id":"d645da34-e127-4f3a-b3f1-206c56bb56d4","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0}}},"id":"e5e52607-234d-4301-bea4-b04a9dad20fc","savedPayload":{"position":{"x":14175.531300349332,"y":26553.566796583294},"targetPosition":{"x":13504.323467754602,"y":26373.61775161554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Live Trading","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"43bebd72-7827-41da-b16f-7e034b28af57","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,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"loading\",\n \"showPanels\": true\n}","id":"1752986e-5f50-4518-8e22-9aca61cb0101","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"69356347-8b0c-4fbc-b280-aa9062704fae"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"ab27e94b-86a3-47b0-97cb-6285751730ea","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"454eab4f-b3e1-4bb1-bd63-fdbd0f1a873a"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"loading\"\n}","id":"e9e7a786-f5bf-46a0-81b9-ea6bc6e8d502","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"5754e659-008a-4c78-a74d-abe6cae82799"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"loading\"\n}","id":"0f34627b-0e3a-4749-a66a-5eafb849ce46","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"362e6861-aac6-49bf-b7e3-393fd0e1a4e5"}}}],"id":"232aece5-3a9a-4c56-8c3c-c3535f61a9ed","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":330,"radius":0}}},"id":"7eefea12-e8ed-4d16-9aab-8d05936376d4","savedPayload":{"position":{"x":14106.222996424593,"y":26721.02460245541},"targetPosition":{"x":13504.323467754602,"y":26373.61775161554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"eebc1cdb-81ce-438a-b56d-a22491d6cc51","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,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"going right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"75ee4020-4dd9-410b-b928-446743007dc9","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"2daaf951-8ba9-41a8-8f00-4823e5a060b8"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"143ea38a-e0f3-446c-a344-167bd62f9312","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"a42db4cb-8572-438b-a904-e09a26239622"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"2cb11cbd-2103-446e-9f9c-2b26854200c2","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"7f2b1543-352b-44f1-bcff-501bf021dec9"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"e492d7f3-546d-4209-bccc-13ace9efb5cf","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"8a5e18dd-59c7-48a9-af1a-963fb114889b"}}}],"id":"de9f653d-3939-48db-97e1-f9c58c0a4c2c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1870,"y":80},"width":150,"height":40,"radius":0}}},"id":"4b49db02-fa17-4b76-941f-8c759dcdaf97","savedPayload":{"position":{"x":13995.87194101155,"y":26864.936820802617},"targetPosition":{"x":13504.323467754602,"y":26373.61775161554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"7530a102-c1bb-4aac-9f05-ede58f100104","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,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"going right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"2a955ff3-74a3-4ef1-9ad0-39fbbe96bc97","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"2bb7ea2d-a457-4ac9-98db-36498996679c"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"26bf0648-9dc2-4443-adec-a4bb758357a9","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"80f1751b-0a93-414b-b1ff-a26361ea7ca8"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"a70126df-ebea-4e40-afa0-0e87873d6cd7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"1702e9f5-5319-4c2b-a42f-66f37ad6db47"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"ea8e4559-6a95-4518-8e98-99ffed62e656","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"7ab2d3fd-c160-4db8-baef-9751dff11606"}}}],"id":"b5d7c656-c91b-4d43-b52a-4b1d18d8e399","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1720,"y":80},"width":150,"height":40,"radius":0}}},"id":"434fb961-a550-47df-a8bf-283746bd2120","savedPayload":{"position":{"x":13851.979153426022,"y":26975.447414686132},"targetPosition":{"x":13504.323467754602,"y":26373.61775161554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"f0c891fb-59de-4fb2-8294-589edc47160a","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,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"going right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"fe54e021-5987-430c-bdff-623607199d9c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"516a1509-9f5f-4b61-b68d-9c909d3b8e68"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"f1e202f1-2b60-4d6d-964a-0a0352160d47","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"977ad327-512d-4d5d-9eda-7300e1e9b155"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"2fa0a561-0d63-4764-b294-d4ed7af09fc8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"c6fc5b0d-ff9b-4bac-a5d5-2202b4b6bf65"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"a7cee5d2-7278-4a82-b478-535bb57e8611","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"b32f6163-26d6-48ad-8cfe-895962be4423"}}}],"id":"27a86b50-2ef5-4047-9465-8b2f775bd7aa","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1570,"y":80},"width":150,"height":40,"radius":0}}},"id":"6bf6c81b-b2f1-4a50-86d3-14f27e791894","savedPayload":{"position":{"x":13684.088040080054,"y":27045.11199800664},"targetPosition":{"x":13504.323467754602,"y":26373.61775161554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8c7d7000-6929-4616-8788-0d9e89284891","savedPayload":{"position":{"x":13504.445299304121,"y":26373.61997826694},"targetPosition":{"x":12809.903295371514,"y":26373.610784042445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":1005,"y":-155},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"Bitfinex ETH/USDT","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2018-12-31T15:38:48.601Z\",\n \"toDate\": \"2019-01-11T12:01:21.453Z\",\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"a8650e7d-da8c-4cfe-80a8-a41c5531c665","savedPayload":{"position":{"x":43433.904964020134,"y":31090.08122008158},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 3590.156472313898,\n \"maxValue\": 4119.956472313898,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"68bb8d1a-c586-4921-b666-0cbb07bde5b2","savedPayload":{"position":{"x":43522.58881136428,"y":31164.598399546274},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"24-hs\"}","id":"0e9b5aee-3d2c-4898-9a40-d35d26862b36","savedPayload":{"position":{"x":43586.959939711174,"y":31259.03996760349},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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\": \"loading\",\n \"showPanels\": false\n}","id":"c5c3cdec-b047-4484-ac7f-39bed1a200cc","savedPayload":{"position":{"x":44078.64999458624,"y":30934.89460131808},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"db5a0847-7d32-407f-b998-504e6987ac5d"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"79aaa2dc-6268-46b7-baf2-ad866a98f144","savedPayload":{"position":{"x":44163.85123076828,"y":30946.443093510883},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"1b8b981a-f564-4be0-b964-5a6e8aac483c"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"0faf111e-fe2e-4bf0-8947-29ca253de41d","savedPayload":{"position":{"x":44241.83694393738,"y":30974.63232510084},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"311b5bc6-89b8-4111-9dff-297c8cada756"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"8f6a983c-8dcd-49ef-9aa1-bd8b50eb1777","savedPayload":{"position":{"x":44311.67549610568,"y":31016.49344919726},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"55f7eed7-d7d8-4d6c-aeeb-37dc4f19e250"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"66160c70-7f78-4262-8ba8-5c4b375520f9","savedPayload":{"position":{"x":44371.85960146544,"y":31070.221683842996},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"8443e827-1f25-4628-ad26-ae9b2ed75a4c"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"4dc86d7f-0b26-4d94-adb4-62bc544d4b8e","savedPayload":{"position":{"x":44420.81779483182,"y":31133.88297441118},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"b5a92b7b-49f7-4e81-96b0-65139a052f31"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6ebc60a3-0a18-4d1c-a1fa-ea3f9f10ed2b","savedPayload":{"position":{"x":44457.117328935085,"y":31205.319635425785},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"2e75cfc3-0672-4036-ab3c-e442f25e67c5"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"bddd20a7-aa97-4a70-864a-b841ed9e780f","savedPayload":{"position":{"x":44479.64133141089,"y":31282.130540258924},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"6ce07f50-22e1-4067-89d5-35197f49c12d"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"5316fdb7-e413-4d4c-82c2-ca406917a19c","savedPayload":{"position":{"x":44487.61147096234,"y":31361.728456129385},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"5ee22014-e965-4bd3-9dc4-5f278fa645e2"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"818c80a9-b39d-4360-a9f4-3b23fd240895","savedPayload":{"position":{"x":44480.78341149639,"y":31441.3959689604},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"0bc50648-a584-454e-a1f2-aa10ca3bf584"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"b018792e-a37e-4363-ba05-4e93e77ab7ed","savedPayload":{"position":{"x":44459.48592250235,"y":31518.457632189642},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"427f90de-6fcb-4118-81ad-8edbbc56d69e"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"3b152664-597b-463e-bed1-236e299cd00a","savedPayload":{"position":{"x":44424.41129890276,"y":31590.302021321455},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"16c5f929-dfa2-491d-8840-f7364d585534"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"50b279d4-d304-49e1-b2bf-cfa73aab20c5","savedPayload":{"position":{"x":44376.75954564685,"y":31654.50449366559},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"ccd8661e-6c55-4487-85c8-c8a78ef69449"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"0772e54d-778a-425d-b8c1-311284a7e2f8","savedPayload":{"position":{"x":44318.14175549443,"y":31708.891385093266},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"99141ad2-c42b-4a92-905a-a5204bdbd028"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"821bf38d-a5d6-49ee-bd18-c0b988d6f915","savedPayload":{"position":{"x":44250.60221948984,"y":31751.772743890055},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"606c917d-f3c8-4bda-876b-f2a330c9e080"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"28744b0c-89ae-4719-9719-c34e19677013","savedPayload":{"position":{"x":44153.02320691994,"y":31784.13904467631},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"55faf55c-a35d-4fab-b06e-a741c79eb649"}}}],"id":"ca232755-2f5f-4ddd-b204-2a4340bc5d6a","savedPayload":{"position":{"x":44141.821764465945,"y":31355.229987239374},"targetPosition":{"x":43626.31800703183,"y":31407.414884109556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"e30a4604-aadf-41f7-8945-5731dd6ee563","savedPayload":{"position":{"x":43623.85978187672,"y":31362.647150527082},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 6812.685010688694,\n \"maxValue\": 15716.706274463686,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"7d8b90ec-3f7a-48fe-8705-be48e108e286","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,"arrangementStyle":0},"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":"86828650-015d-4051-9e64-995d2025d4de","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"1aa532fa-b407-484a-b905-ffcaabbd18dd"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"59638125-81b4-4094-9f0f-37b0c20ffdc9","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"9b682fbe-d8bd-413e-836c-3ddf8ccf47d0","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"6fa17804-6ff7-4057-b907-67775deafab5","savedPayload":{"position":{"x":43633.74577614054,"y":31475.276430635626},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": -0.5102065762131769,\n \"maxValue\": 3.489793423786823,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"45bd86dd-cc8f-4016-865a-2a0af24a550a","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"350cf048-3185-4f5f-910b-72c7284d2f0c","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"6318dc61-c509-4f55-8bc1-f8c354750373"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"a6763dc6-4678-4389-85aa-6926a5d65b56","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"6050a905-5b53-4564-839c-704689a8040c"}}}],"id":"6dfbd50a-4ef1-458a-9b34-a77d60abf662","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"72293414-37ca-475a-bbd4-9717690f47e4","savedPayload":{"position":{"x":43611.43180799584,"y":31591.37193734411},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": -0.5102065762131769,\n \"maxValue\": 3.489793423786823,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"377bf713-5c7a-482c-8ef4-a60c95729158","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9f8b8e76-ff65-4c71-b7e1-7c6510784cfb","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"91c0af7b-fb28-4579-a9cd-f3bb72d3a7b5"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e110212f-eea2-4b99-8d4e-329c37a8e31a","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"c691a7ca-0ca2-40e3-8d3c-0aa2d0dc67df"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"c9e24440-2953-4840-974a-6a016f397d3a","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"e70866c1-2510-4173-955c-c5f051675fc2"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"62b2ff62-6e32-4bef-a438-b5b842fdb708","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"244258eb-32a2-4461-82b0-189843ae2938"}}}],"id":"9d808f92-5623-41d2-8b24-d6cd3b680218","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"7dd7c695-a8ee-47bb-831b-9caf8ee15e4f","savedPayload":{"position":{"x":43559.23277912925,"y":31694.525566454333},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"fa1b1ac5-319e-45f3-a828-ae0491238b93","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,"arrangementStyle":0},"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":"8ea1f068-7903-4350-9804-1bb7dcd57dad","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"8b53b255-12d3-47b3-a871-0d851c8bc8ae"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"40b91c05-5243-4cc6-9255-bb06154daa19","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"843d8d51-1117-41ff-a49a-8c4997ab4c2d"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"296a83cf-8f64-4407-ad07-1d337782ac87","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"47996c06-9545-4455-ac2d-d1a7ec09fa55"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"61c90677-4d8f-4f14-be83-d30bf5cd153b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"98b9505a-321f-4a53-9f26-285e75511bf3"}}}],"id":"2cf35211-9861-4a90-8972-645ab286460b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"033d85be-c0dd-4570-8093-7500a2710413","savedPayload":{"position":{"x":43484.72851305459,"y":31777.876573021833},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"4f50b7c6-f08d-410e-8a06-9438a0ac3e07","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,"arrangementStyle":0},"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":"dc8399a3-7e4e-4ff5-ba62-d3855245e395","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"56f265cd-0b1e-4a6b-be41-edfed0323a0b"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"8fc527b1-db08-4fad-b7ba-ed6406518bb6","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"e644e7dc-8362-41dd-b4be-e2cc5dd6a117"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"6f9cb609-4107-42c2-b2d6-2b4b1c0c4f22","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"7b70c767-5bd4-4933-a691-7a92e80bf40c"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"9ab6166e-2d07-4b48-a496-7e3c00d4b283","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"97805367-6a8c-4b1c-b44c-6621f76e23e9"}}}],"id":"4057ad65-1872-4897-986d-39b2281ad1bc","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"132c1457-e1fa-4993-ac55-dc90af0dffd1","savedPayload":{"position":{"x":43391.02991247641,"y":31839.99226140119},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"0e7b3ad2-0e03-4c26-a0dd-a0ad942668cd","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,"arrangementStyle":0},"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":"6d010c66-a351-4d60-9dff-e3ee9a0ccd45","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"57f048db-6099-4b22-860e-9ee0d03cb642"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"7a8f8467-2453-4752-ad91-35c35844ed63","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"011bbfc9-2c72-4295-b4ba-f620003b7687"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"28aed64f-f955-4162-b9f4-196474dbd61a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"160d4652-15a8-44dd-a230-a5c5bd4fd8de"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"62d0f779-2e68-4e39-bd66-611bfd2e39e9","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"8edfaf6e-b6d8-475c-8378-29d8605515b6"}}}],"id":"985b1c32-0576-4e48-8243-00f14bcc194b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"ded54412-a26f-4111-96b5-5f18c52833cc","savedPayload":{"position":{"x":43284.22656791505,"y":31876.045500857595},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"9a052def-9dec-4205-8562-73f7259ba237","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,"arrangementStyle":0},"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":"db3eaa08-c826-4a3f-94fd-e23684d1809d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"d3366b10-fa22-4725-baf9-7a32e539ea1f"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"4d7e6601-359c-4281-b08c-9bc061438682","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"eab6c873-15e1-4d89-be61-283ce19466c4"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"f7ee4e90-f489-4976-ae9f-a82ffc97358e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"85e9d71f-7cde-48d6-b2c7-941c201ce607"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"b0cd36d1-0d28-499c-8625-b5672a6315ec","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"dfcaaffc-321f-4c66-a3f7-71204cc2270d"}}}],"id":"770a1535-5fab-4510-821d-82d07e66ff3a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"7ba40d9b-1a1b-44ae-8d74-fd84f0e26a6f","savedPayload":{"position":{"x":43156.82064724961,"y":31879.74004634101},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"40de6f0a-4987-47aa-8f51-6d8f0b93a07f","savedPayload":{"position":{"x":13451.563996447518,"y":26639.40326055431},"targetPosition":{"x":12809.903295371514,"y":26373.610784042445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":1005,"y":55},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"Bitfinex ETH/BTC","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":"89b12f3f-2471-4f79-8c35-ee9c84f5d2b1","savedPayload":{"position":{"x":43433.904964020134,"y":31090.08122008158},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"44ca0c91-1f20-4629-8fad-a0c16b5712b0","savedPayload":{"position":{"x":43522.58881136428,"y":31164.598399546274},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"24-hs\"}","id":"da0a15cb-d30e-4236-a6e8-4e559e2b4da1","savedPayload":{"position":{"x":43586.959939711174,"y":31259.03996760349},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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\": \"loading\",\n \"showPanels\": false\n}","id":"032d6ce0-754d-4120-a1b4-2a23a50b9ba4","savedPayload":{"position":{"x":44078.64999458624,"y":30934.89460131808},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"7231bf36-59d4-488a-92f6-b86cac06a4ee"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"34f47016-51e3-4fbe-9906-08b7d266392c","savedPayload":{"position":{"x":44163.85123076828,"y":30946.443093510883},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"8cd8fadf-5f8e-4bd9-b94f-60ecc6458b2f"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"a3e965f1-7a6f-4832-9d5c-907b16120a9b","savedPayload":{"position":{"x":44241.83694393738,"y":30974.63232510084},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"6d6dbb96-9000-4823-a406-21e08b23d9b1"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"880d2d37-183d-4401-8d2c-b5638502f6a0","savedPayload":{"position":{"x":44311.67549610568,"y":31016.49344919726},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"2e918fbb-7a86-4a0a-a2d6-63f96aba723c"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"184edf22-8320-490e-98c9-582fe839cddc","savedPayload":{"position":{"x":44371.85960146544,"y":31070.221683842996},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"8bbbd6dd-2046-46aa-8371-b72b6a854dd3"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"7520f5b2-c119-4eb2-9c2b-931dc6712614","savedPayload":{"position":{"x":44420.81779483182,"y":31133.88297441118},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"1862c44e-a987-400c-912a-700c71afca0f"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"be3cb4a7-d719-485e-8dd6-9bdba0b4b6c5","savedPayload":{"position":{"x":44457.117328935085,"y":31205.319635425785},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"b4723c12-5eee-4332-a2d8-5121621ec67c"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e0c320fc-7b4c-4d65-bddc-f38bc300c350","savedPayload":{"position":{"x":44479.64133141089,"y":31282.130540258924},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"dabf0634-d480-42fb-bb2e-412bd2f5a91a"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"8d489395-9f67-4057-b655-50a3d7d0c61f","savedPayload":{"position":{"x":44487.61147096234,"y":31361.728456129385},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"bcd2f058-b482-470b-8b05-524070d15aed"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"895cfdce-7a45-4538-b2a5-1384cef61414","savedPayload":{"position":{"x":44480.78341149639,"y":31441.3959689604},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"1532eee5-30cc-402e-bccd-215e369ec6d5"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"d5fb429c-9cfb-4797-a2db-8d7320aeb3ed","savedPayload":{"position":{"x":44459.48592250235,"y":31518.457632189642},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"7406f236-8c84-4667-a664-a99f4e7f7e9a"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"2bae27d8-c13f-4c79-bfcf-bf679191878a","savedPayload":{"position":{"x":44424.41129890276,"y":31590.302021321455},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"544b0d58-b0a2-4d0a-b93e-6bcc8049bdfa"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"a3002ebd-7ff4-4085-bebc-4b1669f65697","savedPayload":{"position":{"x":44376.75954564685,"y":31654.50449366559},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"b9992ccb-be3f-4bde-bf0c-d4f57adbbe60"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"56f6c241-cc43-41c8-a7ee-010b0de7315e","savedPayload":{"position":{"x":44318.14175549443,"y":31708.891385093266},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"dfec915e-0506-45ec-a312-f479c82f053f"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"d4c623f6-eea5-4dbc-9d3d-f4b9f174bcf5","savedPayload":{"position":{"x":44250.60221948984,"y":31751.772743890055},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"e887f7a3-6b04-4350-b4af-2e93f83a3f5e"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"83154574-ba10-454d-a72d-1d0968b05a1a","savedPayload":{"position":{"x":44153.02320691994,"y":31784.13904467631},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"302cc843-8d79-40e0-91e5-55dd67ec72a1"}}}],"id":"e13efc5e-a424-48b4-8890-d2ee601cddc7","savedPayload":{"position":{"x":44141.821764465945,"y":31355.229987239374},"targetPosition":{"x":43626.31800703183,"y":31407.414884109556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"6976a5a9-d2c8-4e1d-9d1b-dbef3ce5f6cb","savedPayload":{"position":{"x":43623.85978187672,"y":31362.647150527082},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"d83bab0c-a813-4d72-bed4-1c17e11cd4eb","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,"arrangementStyle":0},"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":"946e07b2-fd46-49af-b631-2f099ede449b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"89545d86-176a-4d6c-a3c6-f5aa91bc81f9"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"4876d986-45d7-4d09-9d26-9d239cab05d4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"52c20de6-beb3-439f-97a8-e8b056249bed","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"1638342a-f663-42cc-b3b0-df53e8d5bbc8","savedPayload":{"position":{"x":43633.74577614054,"y":31475.276430635626},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"dc244739-5d3d-4070-88f2-923d0bd41985","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"c127599f-3849-48b3-989a-acf85444886a","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"c8addbbe-1357-4b4b-be80-8d393382ecf1"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ad86f855-344b-4432-b2a7-72e7b9134d40","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"a4462e08-b9c2-4087-8a28-db60b1e73da0"}}}],"id":"1e0d12b8-1783-4f9c-8810-14057539e988","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"973a76f7-96fd-44a2-a057-ded3aa113631","savedPayload":{"position":{"x":43611.43180799584,"y":31591.37193734411},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"7da1794e-4eb1-4392-b741-874d9c81b8f5","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"c3c3818b-d7d3-4454-b46f-1222ebe8212c","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"f58fb743-f2a8-4057-a8b1-94de5abfed2a"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"37f04b66-1faa-48db-931e-055135c94cf8","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"abf1cca1-7712-49f0-ba75-5da62c3a392a"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"d824f911-1955-48ff-9b16-1decd0bc1368","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"eb71fb91-c7e2-41ad-9076-8ff6b16f19e7"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"e6a5058e-b3dc-463a-8b0f-2e7a12e2ca37","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"9a1c3271-ec28-4b22-bcbd-d774fd697b2a"}}}],"id":"a4d937fb-fc95-4d0c-8be5-69384b2cbbf0","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"3d4ceb4e-797f-432e-b79f-94baee140c9d","savedPayload":{"position":{"x":43559.23277912925,"y":31694.525566454333},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"bc34dd3f-0fa3-4f82-a9d9-8cd921f09fd3","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,"arrangementStyle":0},"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":"3a1ab404-43c6-4de4-9ee7-3c545a7969de","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"d73f67de-e135-4692-b4d8-f00a28560ffd"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"13eaf6b6-ac3e-465f-b2db-b3a0a0c5c9f3","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"8680d446-bcce-4286-a06c-50406f1d4f50"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"de6f98f1-b98e-437a-8de0-62b2b27e6367","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"abaeed4c-618f-48c7-8e25-fe9ceba6c905"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"096e64b2-4b93-40ed-bb2d-0406afc9f724","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"e806ba98-35cf-4e32-ac95-6acf1a4617e7"}}}],"id":"3cb44505-ceaf-406e-b3f3-37cf5bc5d880","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"14b37af4-1998-412f-b7dc-803be99e00d4","savedPayload":{"position":{"x":43484.72851305459,"y":31777.876573021833},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"82d49445-d845-46b7-ae51-85251d8b5da0","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,"arrangementStyle":0},"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":"09a7ba3f-2328-49db-aef0-fdd70e99ca02","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"7b75ee15-4932-4d1d-82a3-ae281babd47f"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"47f181a2-6728-4c95-bc51-8722a2a39c94","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"057c9f67-a4f4-4976-8f6a-611e3dafce90"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"a596a599-14d4-46ec-935d-3752ac137050","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"d426fa48-5102-4908-a4ec-7c288bb8be61"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"c3b75292-42b0-4b9d-bd76-6cc40164c49c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"a482b127-3391-4e03-a8c7-d4e589f7ba92"}}}],"id":"89469560-b127-42cc-8a58-e18b502b351b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"9cd6057f-4820-42c6-9c2a-66c392ef50b8","savedPayload":{"position":{"x":43391.02991247641,"y":31839.99226140119},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"afb3f0b2-ee06-477a-bea4-63afe8a7c674","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,"arrangementStyle":0},"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":"b7a2d83c-a272-4b8e-ab99-609fbb3ad4d2","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"3a1d3d5f-5655-49a9-890d-89f7ba153c24"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"c50064a7-5e78-4721-8931-1a9f2bce7ca7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"846b361f-f5d2-431f-bfd4-137033d8b7f5"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"4a1fb609-31b1-43d4-bfcc-9a1c3d17f250","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"0905aa96-ac6c-4a0a-987c-d8833fbfd2ee"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"ba7df6ee-bd74-4a27-b809-f3da9f6d7522","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"4bf25656-ea71-44fc-92f9-52f33c327333"}}}],"id":"4db7e9ff-fe45-4ced-baf7-f4625dd1e3f0","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"7b785bfc-93c5-4bd0-89d4-8338d0b000c7","savedPayload":{"position":{"x":43284.22656791505,"y":31876.045500857595},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"82d37fc3-d86e-421b-a2f5-ad85b3808a98","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,"arrangementStyle":0},"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":"30b3bc03-e9d8-4926-8115-7a8c82f6935f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"91ab681f-50ea-4b07-a7b4-1e8387b91662"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"51b5dc9c-6a6c-4616-8210-def58ea2fc9b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"c5a1bfa7-a778-41c0-9f83-05af2de17ce1"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"3b1c8662-f127-40a3-9d69-1e96654a4efe","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"4c25509e-56e7-49c0-a78a-61de55438179"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"87ef1faa-8e33-427c-bbb1-c3f56f47bc79","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"e447664b-aef8-4ad1-b097-aa9e44bed78d"}}}],"id":"70f65a16-4484-4ec6-a48e-76f2a04789eb","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"a67a340b-d093-43c3-a6ae-1fe0ae8426b0","savedPayload":{"position":{"x":43156.82064724961,"y":31879.74004634101},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b76768dc-645d-4b68-84d9-68843d7af4f5","savedPayload":{"position":{"x":13300.99102988033,"y":26864.736840044043},"targetPosition":{"x":12809.903295371514,"y":26373.610784042445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":1005,"y":275},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"Bittrex BTC/USDT","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2020-03-13T00:00:00.000Z\",\n \"toDate\": \"2020-04-24T23:59:59.999Z\",\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"7a9dde9a-fefd-4a5f-b781-f354bf5e893c","savedPayload":{"position":{"x":13799.528957231796,"y":26944.130905258615},"targetPosition":{"x":13110.358854030566,"y":27034.726964050536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 4443.90412966,\n \"maxValue\": 7727.46999944,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"47872058-c6af-46cb-aa66-8b7f0082693a","savedPayload":{"position":{"x":13799.38237102837,"y":27125.673861787873},"targetPosition":{"x":13110.358854030566,"y":27034.726964050536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"24-hs\"}","id":"a9f36b8e-37d2-4ede-927c-5dcdcd75eb93","savedPayload":{"position":{"x":13752.466996706977,"y":27301.172488449643},"targetPosition":{"x":13110.358854030566,"y":27034.726964050536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"ceea40ed-3f2f-4aa2-b717-68216cdd559c","savedPayload":{"position":{"x":44078.64999458624,"y":30934.89460131808},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"18386b37-31c2-4e85-8e17-e46e036de5b9"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"72c012e4-a71c-46d7-bcaf-3a93c8c198ea","savedPayload":{"position":{"x":44163.85123076828,"y":30946.443093510883},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"c944bfd2-3366-4ef8-8d86-17fb07b8236b"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"37e95050-6f77-4e17-ae98-e957e930f3f1","savedPayload":{"position":{"x":44241.83694393738,"y":30974.63232510084},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"f058cb8d-ac26-49b2-a71e-03b6da20cf2c"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e5524af3-272e-4d23-aba7-b4b30aa456ec","savedPayload":{"position":{"x":44311.67549610568,"y":31016.49344919726},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"712a8c20-3a29-4c01-8292-9f7dd49626d1"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"a6c418fd-031a-4505-9a0f-974c4e0e8bf4","savedPayload":{"position":{"x":44371.85960146544,"y":31070.221683842996},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"c93aa11a-f985-47bd-b455-7e29e74ae110"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ca9f6507-0b56-481e-98d6-1176bdbbc743","savedPayload":{"position":{"x":44420.81779483182,"y":31133.88297441118},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"a1bdc52f-a93c-468a-9a57-3730eaf653b0"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2243194f-9a07-4eee-a314-d6f271eecd03","savedPayload":{"position":{"x":44457.117328935085,"y":31205.319635425785},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"ad145a69-4b17-4d3e-ac0d-8457100b79db"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"56e90ee6-2eb2-4e33-ab4c-c250c63b4054","savedPayload":{"position":{"x":44479.64133141089,"y":31282.130540258924},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"8cb86b9c-bd1c-40f2-932d-39c3463c281b"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"c4e79ae1-e428-43de-86f5-bbc08774efc7","savedPayload":{"position":{"x":44487.61147096234,"y":31361.728456129385},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"ae18cd86-b31a-4205-84ee-1ae5fa13a80e"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ca3c5439-abd1-4edf-9e02-dabe111fe3e3","savedPayload":{"position":{"x":44480.78341149639,"y":31441.3959689604},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"3249ddb7-692a-4c09-a4c3-77b96b0a64c7"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"c45df9eb-777a-4007-b902-fa5265c44d2d","savedPayload":{"position":{"x":44459.48592250235,"y":31518.457632189642},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"cae7b3ba-fe2c-47de-8df9-d06e4c8f461d"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"a6be3fb6-5ebb-493c-86a2-7324fce40a44","savedPayload":{"position":{"x":44424.41129890276,"y":31590.302021321455},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"4d76dcf6-8f1e-46c9-a635-36f5c2afa299"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"9cade318-d532-4d28-b597-955dce5f205c","savedPayload":{"position":{"x":44376.75954564685,"y":31654.50449366559},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"f06e0f2d-3494-488a-9d61-fe8ceaa22294"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"5c80d050-3c20-4a7f-89e5-c0da94239d59","savedPayload":{"position":{"x":44318.14175549443,"y":31708.891385093266},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"a660ba6d-92e9-46d4-9a44-a3f753acc5c2"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"941ad68e-7555-4264-a541-c29fa76d6070","savedPayload":{"position":{"x":44250.60221948984,"y":31751.772743890055},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"ec9da642-733f-4906-9030-bec8f124af77"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"23e640f4-23ce-4cff-bc8b-5c63a8732049","savedPayload":{"position":{"x":44153.02320691994,"y":31784.13904467631},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"b7652a67-6fd3-458b-b1e1-c44781a2a277"}}}],"id":"261ff836-e743-49a1-990e-552935ccd40e","savedPayload":{"position":{"x":44141.821764465945,"y":31355.229987239374},"targetPosition":{"x":43626.31800703183,"y":31407.414884109556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"0844cce8-22c8-4079-ba31-1054cecb7ec4","savedPayload":{"position":{"x":13661.584326147236,"y":27457.95372947329},"targetPosition":{"x":13110.358854030566,"y":27034.726964050536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 18056.069782096463,\n \"maxValue\": 26960.091045871457,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"72e200ac-a50d-4e4e-8efb-f8cf7c17893f","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,"arrangementStyle":0},"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":"a93fd35b-ed72-4f49-b1f3-225a78c32ba6","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"bf4456fc-661b-4059-8cd8-9249de117055"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"f214a68c-7a77-48f4-b2cd-c8a1d4a1928d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"98a9bba7-01d0-4b9e-bdda-8d278056f7bb","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"cbe3e2ef-3e97-4a21-ada9-e729ddb70d46","savedPayload":{"position":{"x":13533.39773116788,"y":27586.066224927305},"targetPosition":{"x":13110.358854030566,"y":27034.726964050536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 4.540717916588839,\n \"maxValue\": 8.54071791658884,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"528505ee-f551-4b86-900f-21b8d8eabfe1","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"2dd8f051-c3e7-43cf-9651-341c83f1f0c9","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"c6b2aa08-7810-44e7-b41e-cf2c5ed6bdaa"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"4fd3a016-61a6-48fe-8c5c-32bce914dee3","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"f40c85ab-ea9f-4218-b9fb-b772a80f6573"}}}],"id":"b56ec3a6-dc95-4429-934e-ba07b99971d7","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"9b6fbd70-9808-4bfe-97ab-cb7c595838e4","savedPayload":{"position":{"x":13376.230724062956,"y":27676.701075721976},"targetPosition":{"x":13110.358854030566,"y":27034.726964050536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 4.540717916588839,\n \"maxValue\": 8.54071791658884,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"d64fbb03-1282-4bc2-984d-804a623749b2","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"78df8697-360c-4e4a-b60f-d60d74b8555d","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"e66a9113-31a7-480d-93f5-4b3030fcb59a"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"d1015840-d43e-4f2e-a02b-6cb01becef40","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"ed3a7c39-e271-465c-b851-28e732280269"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"374ff456-9050-4d74-a048-7714a1956ef9","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"36e8fd8c-1ee2-4eb5-aee4-1ebe41904d6b"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"ab25b1d5-be1c-43eb-86ce-f4207c757c9c","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"cf1ee8e6-1535-407a-96a8-9fa3ca0fe961"}}}],"id":"471ed0e2-254c-423c-b017-ef31743fd2cd","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"946a2625-c441-4209-9122-336a364f5150","savedPayload":{"position":{"x":13200.849227066034,"y":27723.740769884986},"targetPosition":{"x":13110.358854030566,"y":27034.726964050536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"dbd3b073-a032-4208-b2f6-e86ca683b2a2","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,"arrangementStyle":0},"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":"b3533d54-a366-4903-a3ee-f15b5eb2e776","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"c01ce1ba-b2f0-4a86-be57-535fe43a7c05"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"e339a8eb-a6c6-4f96-8d8b-b790f8c3ee73","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"948a2ba6-1516-4264-978b-168e7965cbf7"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"ec811159-6b58-45d6-9652-4c3ba4c1f4f9","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"67ecb4ba-45f5-4e5d-92f6-601be95cb758"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"842b7e3e-7c4b-486d-9f12-f16fcf48d074","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"08db7e12-79bd-47f8-a9a5-b6c3e1b50bfb"}}}],"id":"b41b2156-4462-460f-a065-197d6af46548","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"a0d78e03-6971-4b91-b4dd-ba99f59b04d7","savedPayload":{"position":{"x":13019.964586741724,"y":27723.766829244254},"targetPosition":{"x":13110.358854030566,"y":27034.726964050536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"1db94c61-85fe-4522-acbd-dbd4e409cd7c","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,"arrangementStyle":0},"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":"bdbaf919-2f91-4e5d-9dc1-fc854d1aaf7a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"debb0d3e-c2a7-4f5c-b0ec-ffa94a8391f1"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"78d51fd3-74c4-4548-8107-eb671707488b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"81533538-b4e3-4539-8f60-803feb37259f"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"466c742f-7b7b-477d-8a0e-cc6a74db6c5a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"687911f9-1918-4183-9031-f4751babba02"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"58c312aa-01cc-4325-8847-643ab503ac96","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"e5fa3318-6d72-4929-be37-e47eefb1a486"}}}],"id":"1488b4aa-ae1e-43c1-b67c-d4e386c9fe9b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"a6b283b0-993e-4ff9-9a3d-eea761858bf5","savedPayload":{"position":{"x":12844.769377901806,"y":27676.90398276493},"targetPosition":{"x":13110.358854030566,"y":27034.726964050536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"964890aa-262a-489b-a003-a7aac1b7f2cd","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,"arrangementStyle":0},"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":"13c89c08-7195-419f-baa0-13215a5bd000","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"e0c368f9-073c-4f14-9aa8-f353a61e5e84"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"c65f2548-324b-44d6-9f49-283d7c60e663","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"9c9a6ef1-bedb-4423-b68f-e6e10abd7a5f"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"e8aeb2ab-5d96-4434-8bbe-b46c29185fe7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"30317944-35aa-4ea2-87ef-261b751f1ba9"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"55f45e2a-dc64-4ca0-a3aa-77aaa64dedce","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"dcf473fd-a7b8-46f8-be8d-29e41b66a9fb"}}}],"id":"319f3f1c-29fb-4bf0-9000-4eb5c4193eba","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"a0672cc4-bfb5-4366-bf97-61386f4cad41","savedPayload":{"position":{"x":12687.61654658419,"y":27586.2739193704},"targetPosition":{"x":13110.358854030566,"y":27034.726964050536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"6ed515cf-2b38-4d02-a53a-c50ea5a48fc7","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,"arrangementStyle":0},"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":"9bd91403-d2c8-4e47-8051-3880dba698bd","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"d0c35ccf-7acf-4ad9-800a-89c7e8eadb4e"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"b23726bc-9ae8-41e2-8acf-72c49c850d17","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"be80587c-2b08-438a-a9b1-d356a3a4fd51"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"0b603544-9500-43e5-bbdf-8c6f262b21b0","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"14f2ac64-ae1c-483d-8c5a-5f2d45c72533"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"da9f5d26-5a27-4f1a-827f-d94ecd5ae39c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"18084293-9656-4010-93e5-506e651a5ecc"}}}],"id":"57563031-98a0-47e3-a50a-95b4cf8c6600","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"71b64cb0-f622-43ae-87e7-9c0bae3e6777","savedPayload":{"position":{"x":12559.045450088792,"y":27457.900315951978},"targetPosition":{"x":13110.358854030566,"y":27034.726964050536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9b90be9d-956e-40ba-97f6-84077472b39d","savedPayload":{"position":{"x":13075.658721470933,"y":27015.29689224746},"targetPosition":{"x":12809.903295371514,"y":26373.610784042445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":2115,"y":775},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"Bittrex ETH/USDT","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2020-03-05T00:00:00.000Z\",\n \"toDate\": \"2020-04-24T23:59:59.999Z\",\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"f1a6a30b-68bd-4b14-bb50-ed361e0a532b","savedPayload":{"position":{"x":13481.299930309679,"y":27247.82855122155},"targetPosition":{"x":12809.899964427399,"y":27068.03013321812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 88.603,\n \"maxValue\": 251.78899962,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"e6139bb1-7793-4270-b4a4-0db420da25fe","savedPayload":{"position":{"x":13411.663594637695,"y":27415.71211335478},"targetPosition":{"x":12809.899964427399,"y":27068.03013321812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"24-hs\"}","id":"75ad2836-73c9-4c76-94b1-2e4e637cd8e0","savedPayload":{"position":{"x":13301.139890391209,"y":27559.58437472217},"targetPosition":{"x":12809.899964427399,"y":27068.03013321812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"cc2548e9-bbff-4f8e-bd65-b135bb83739a","savedPayload":{"position":{"x":44078.64999458624,"y":30934.89460131808},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"e24f042c-71b5-4647-ac90-c0068c30e202"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"1e4fc264-f9f8-4b67-ae98-a2c14213f3f5","savedPayload":{"position":{"x":44163.85123076828,"y":30946.443093510883},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"ae616763-d384-41cc-a61a-e8a2ae01752b"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f9d90b2e-1e28-443a-9f93-99d9f9ac2ae5","savedPayload":{"position":{"x":44241.83694393738,"y":30974.63232510084},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"8cb63f19-fd93-4aee-b69f-b89b15e908b2"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"bc8c0216-0f0f-4c80-b462-83657b616450","savedPayload":{"position":{"x":44311.67549610568,"y":31016.49344919726},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"9b2f804e-ff08-4f83-8608-ec6548cb8859"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"b8f33159-6720-43d9-8900-57e3a227ac32","savedPayload":{"position":{"x":44371.85960146544,"y":31070.221683842996},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"843b0322-9811-4417-bc50-065fbe04b5d3"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2d1ba234-b4ca-4349-bfb0-8160b5b9e9f2","savedPayload":{"position":{"x":44420.81779483182,"y":31133.88297441118},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"0d1b6fe2-e5f4-4724-89fa-f5443084ccd0"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"de94bd3e-376b-40fe-8471-d00e6e9049ff","savedPayload":{"position":{"x":44457.117328935085,"y":31205.319635425785},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"fd558fef-2d8b-4744-aecf-754744b3cb90"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"031f14ed-67d5-4eb4-9087-4de5bcf9ceb2","savedPayload":{"position":{"x":44479.64133141089,"y":31282.130540258924},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"22799460-416a-4ea4-9e19-bea31f5ae5b4"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ad5fe45b-5ee8-4582-ac9b-88146d7c9d4d","savedPayload":{"position":{"x":44487.61147096234,"y":31361.728456129385},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"c8cab685-fea6-4224-afee-ffa7c45e3069"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"628334ea-854e-4261-868a-e5c7e198c767","savedPayload":{"position":{"x":44480.78341149639,"y":31441.3959689604},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"3d0fbf6d-c623-4b21-8381-8641952cf6f1"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"2e8cf0d4-9be2-4176-b386-cdfa2cba7353","savedPayload":{"position":{"x":44459.48592250235,"y":31518.457632189642},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"dd2a07fe-1572-471b-9f9b-48a7e0392555"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"30c3a34a-11b3-4fdd-9c33-9865da109016","savedPayload":{"position":{"x":44424.41129890276,"y":31590.302021321455},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"876b4c27-42db-430c-99eb-208d0562cc86"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"b5739851-655a-4dc6-bc31-273c9a0f100c","savedPayload":{"position":{"x":44376.75954564685,"y":31654.50449366559},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"f556f3d0-1c6e-4ee0-8128-280892ab378a"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"b3637570-e5e4-4279-8bfe-3a6b7b3c0ca2","savedPayload":{"position":{"x":44318.14175549443,"y":31708.891385093266},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"be67744f-7ee5-490e-ad75-b0ed1563df09"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"a66f7044-ebb1-4091-bc6d-3566defb3cc6","savedPayload":{"position":{"x":44250.60221948984,"y":31751.772743890055},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"60f28f50-15fd-4e1b-88eb-c2e1b24610fa"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"8e3eafa1-3f12-40ca-9638-77a3604faa39","savedPayload":{"position":{"x":44153.02320691994,"y":31784.13904467631},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"fca7ffa6-b650-46f3-8b0a-768fdfd54332"}}}],"id":"c380043b-5d94-4ec1-b354-5edce62c2fef","savedPayload":{"position":{"x":44141.821764465945,"y":31355.229987239374},"targetPosition":{"x":43626.31800703183,"y":31407.414884109556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"2a91a53b-36a0-4b67-9036-d03cd320608f","savedPayload":{"position":{"x":13157.194177033933,"y":27669.939929843815},"targetPosition":{"x":12809.899964427399,"y":27068.03013321812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"52142b34-a4b5-4d3c-8ae6-1adb08810314","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,"arrangementStyle":0},"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":"56239148-8b82-4af1-aa23-4b62108e38c7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"05f3214d-b73d-4f1d-ac9f-df9c4f1d9872"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"aa559a9a-a0e8-4bbd-ac16-53b6b8fbf113","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"648b626f-ecc7-4f54-9886-904a2e45d43f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"90a6a80d-3d28-4451-9b05-78def7fecb8a","savedPayload":{"position":{"x":12989.610979008392,"y":27739.31136464604},"targetPosition":{"x":12809.899964427399,"y":27068.03013321812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"3405c88b-4d0d-43e2-a462-851d89054259","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"24dac4f6-061e-4bf2-92eb-b5feeeede857","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"b0e5bf78-4bb7-478f-817a-5f5f85f7890d"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e2ec7695-00e2-4da5-b6fb-f9ea4341f90a","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"6da79673-bb47-4600-b4a5-fb8f88522b36"}}}],"id":"21725a71-88a5-4107-86bf-b5e45e3c2ab4","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"a0d6bfcc-0952-4182-aa04-0273a1831b52","savedPayload":{"position":{"x":12809.904100310589,"y":27762.977920613088},"targetPosition":{"x":12809.899964427399,"y":27068.03013321812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"9738b3c9-b047-459d-9349-38cabafec1ea","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f749e297-8938-41b6-aa2e-25496322edd1","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"92950803-603f-49c8-b4d6-b72f86162365"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9a6c3148-534a-4439-9da3-e356a0e25e3c","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"98d0042b-ba9a-497f-8b06-742a54c0b829"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"4ace5792-5344-426e-af8d-92a2a8669677","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"510d89e2-5395-49d1-bd51-6625e52cb270"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"10839d59-a496-4d4c-b113-fbc56d971814","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"a2a50fb8-37e0-4b15-9e37-ad6ed7d7d5e3"}}}],"id":"7b3700cd-2ea8-4b5e-884d-959dc026a6cf","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"f8e766e8-f0f3-4378-8c7b-7ad662d7b7e7","savedPayload":{"position":{"x":12630.258322088823,"y":27739.322206734938},"targetPosition":{"x":12809.899964427399,"y":27068.03013321812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"831caf2e-f401-4fda-9d6b-4fe8df94f072","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,"arrangementStyle":0},"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":"d551ff99-94af-4f84-a33e-69957714f906","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"904acfe5-54bf-4edb-a80c-d47d7de1ebdb"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"82494895-2a72-4c18-905e-e0ec79582ccc","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"35b030b3-abdf-4e62-969e-40153b53df5f"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"341c6cf3-4d7b-4342-95b4-36e319ba4007","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"20150970-b6b6-406d-833e-08775fba713d"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"6cf31e29-697d-4c57-9fdd-0d923a9b82f0","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"560a9e2b-76c8-4020-bb59-3b8c0de5cd22"}}}],"id":"c8be9c13-a596-4248-8fc8-b2f439526b67","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"aa5be028-b3e7-43d4-943a-9f2c66db3a5b","savedPayload":{"position":{"x":12462.681008721216,"y":27669.96403034375},"targetPosition":{"x":12809.899964427399,"y":27068.03013321812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"54bf3ce2-c018-4ce2-ba24-8786f60e4ab7","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,"arrangementStyle":0},"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":"ab28adf1-bcca-45c9-bb47-13a2b6f16547","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"36bae104-2d4b-4b48-8bf9-1f879baa4cac"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"4650f94e-3f0f-47a8-85be-61162c496b85","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"a1e48b88-2961-4acc-bd03-167485c3832c"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"b0e52c7b-306a-47ed-a57e-a0e39d55c279","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"5ba4a34c-7799-496e-8bef-aaf0045d8667"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"f254b1ca-66d3-4382-8a3d-7ab5624b69c2","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"421c21c3-bb0a-4d2c-9e7f-c9831ee5cf32"}}}],"id":"3fbb629e-736b-491d-a2f4-32153a3c576e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"6d779b8e-98f4-4181-8c3b-a5b15c202722","savedPayload":{"position":{"x":12318.742667714885,"y":27559.619591348197},"targetPosition":{"x":12809.899964427399,"y":27068.03013321812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"fb953083-28f7-4e12-b1da-a27b42d447fc","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,"arrangementStyle":0},"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":"f5003903-a330-4953-b3ee-44b702ac5617","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"3fa94d03-b662-453e-a1df-529e73fd2471"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"14d6d0eb-0cd1-4868-965c-7946149e61a3","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"e47b1dbd-c5d1-4be0-beb7-406606eb4c24"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"eca1e9af-58e0-44e3-9d5d-1e1ee7eab372","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"300cdc9d-2a01-4a44-a145-74079bfd6021"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"4c61282d-ff2b-45f1-a945-7f0e3b3e048e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"7dbc0abf-358e-4f40-9c7a-86429e08c874"}}}],"id":"2923afa2-2335-4b22-bf52-f8f04c1d2994","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"5a18dbe3-40d7-4d92-80bd-33c9b1db46a5","savedPayload":{"position":{"x":12208.22583149181,"y":27415.773264370833},"targetPosition":{"x":12809.899964427399,"y":27068.03013321812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"111304e3-13c7-4d29-9d5c-67ad2b3ccee0","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,"arrangementStyle":0},"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":"27e8e1fc-207a-4e03-9242-a123b87fdaf6","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"83033167-412c-4e0e-bd0c-d78d78b1f9b6"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"d16a79f9-4f73-40db-88cd-650e12e015f8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"4daade86-0674-418f-8922-fc4ba0904290"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"9aca88c3-83e8-4171-ad00-3367ff87a8f4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"a661cd59-814d-4e79-91d3-a8d807a21274"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"64b5b0e7-a16a-4552-b232-37ce1f98c34b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"a575e082-b6eb-44a1-a543-b343fd19dacc"}}}],"id":"b96b4bdd-21fa-4657-8f3e-84e5578bc817","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"996ee7df-6faa-4c7a-94e0-21ee72d74b91","savedPayload":{"position":{"x":12138.60386877583,"y":27247.915287043175},"targetPosition":{"x":12809.899964427399,"y":27068.03013321812},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d0bb4957-84e4-48ca-b00a-a5cb90594c10","savedPayload":{"position":{"x":12809.90082735444,"y":27068.176693761125},"targetPosition":{"x":12809.903295371514,"y":26373.610784042445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":2115,"y":985},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"Bittrex ETC/USDT","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":"30e21436-3508-4f2e-9ece-dc1c5019aab7","savedPayload":{"position":{"x":43433.904964020134,"y":31090.08122008158},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"4ad2f9c3-d7a6-42fa-8507-7372498c8ca8","savedPayload":{"position":{"x":43522.58881136428,"y":31164.598399546274},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"24-hs\"}","id":"412773a9-80cd-4a30-ace5-2c37f18819b9","savedPayload":{"position":{"x":43586.959939711174,"y":31259.03996760349},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"dcda0b74-ff42-4751-898e-4cd544ae5158","savedPayload":{"position":{"x":44078.64999458624,"y":30934.89460131808},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"ddd87ac2-ab9c-4ed9-9e0c-a3f3a8f343b3"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"bac6946b-c88b-4861-a772-f2e41eb25258","savedPayload":{"position":{"x":44163.85123076828,"y":30946.443093510883},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"fd5865d8-cdfd-4ed9-9f5d-32b2921a1405"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f584ecf4-9fc7-4cd0-8545-e8126cb49bed","savedPayload":{"position":{"x":44241.83694393738,"y":30974.63232510084},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"ed6af1ef-8cf9-44c6-aeeb-d2158e55de0c"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"b0ee7fbd-fddb-4df3-af2e-41808f4cb478","savedPayload":{"position":{"x":44311.67549610568,"y":31016.49344919726},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"633b20d4-01c5-4690-9ce7-b88cdbd60a06"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"4086c93a-b66e-4078-9457-4e4be2006d52","savedPayload":{"position":{"x":44371.85960146544,"y":31070.221683842996},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"8d4b6559-0a08-45c3-a366-6078f233c85d"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ce26bc01-22ba-4330-9fe9-c6f9449557c4","savedPayload":{"position":{"x":44420.81779483182,"y":31133.88297441118},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"ccb3113d-5688-43fd-8d56-50c0203e83c8"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"52ce6686-80b3-4635-a31e-ebf089283705","savedPayload":{"position":{"x":44457.117328935085,"y":31205.319635425785},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"0c9e1772-2c58-4c44-836f-4b26a48f9553"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"017ea6a8-eca6-46e6-9b7b-678e27e8cc6c","savedPayload":{"position":{"x":44479.64133141089,"y":31282.130540258924},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"d8abe022-57c9-4a5b-8659-cac54108db52"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"5e022040-39c8-4636-8576-3eb314cd15ab","savedPayload":{"position":{"x":44487.61147096234,"y":31361.728456129385},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"04a7403b-5b37-40ff-b89f-9dfa89ba823d"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ecdc8594-b8a5-4727-9afb-ac9f99f1fa86","savedPayload":{"position":{"x":44480.78341149639,"y":31441.3959689604},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"6de43c70-eecf-461a-a8f9-545bc53ad361"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"4654331c-2e8f-4165-8277-fff93f8efdf5","savedPayload":{"position":{"x":44459.48592250235,"y":31518.457632189642},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"59ca793f-73b6-4da1-8ef8-e8d9e7f26dc2"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"2af067d0-b84f-434f-b122-9a8441c7c82f","savedPayload":{"position":{"x":44424.41129890276,"y":31590.302021321455},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"25ffeeb8-15ae-4100-9ba1-0fd871c6ab0e"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"fc005efd-0f38-4fe7-8ea1-9691f36aa197","savedPayload":{"position":{"x":44376.75954564685,"y":31654.50449366559},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"b38b6d6a-66cc-4b57-84ad-5e5b68e87b12"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"aa3914f3-743c-4877-b034-05214df9b755","savedPayload":{"position":{"x":44318.14175549443,"y":31708.891385093266},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"c90fef1e-d849-40e9-bf33-daa7fab0b5a8"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"93882172-20fd-4c13-bfaa-9a698dd14f86","savedPayload":{"position":{"x":44250.60221948984,"y":31751.772743890055},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"c1db1eb1-51fd-4c6e-9337-a8ed3990544a"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"57b6abea-5f53-46e1-a874-9107b1d2d7c1","savedPayload":{"position":{"x":44153.02320691994,"y":31784.13904467631},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"61c35ce6-f516-4a9d-b59f-02827725baae"}}}],"id":"73e7742e-bbf5-4fa0-89d6-05f7d7a3defe","savedPayload":{"position":{"x":44141.821764465945,"y":31355.229987239374},"targetPosition":{"x":43626.31800703183,"y":31407.414884109556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"db6c7134-f813-481a-9063-6ca3e0f5a39c","savedPayload":{"position":{"x":43623.85978187672,"y":31362.647150527082},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"b7e910ba-588d-450d-9ad6-b52797d038cb","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,"arrangementStyle":0},"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":"00c8a26c-f185-40f2-b0fe-a74840c5f940","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"1c1f88b7-277c-4f55-a84c-1ae3d65880ee"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"6250dbbd-6e23-4210-a983-f8bc88a7d184","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"f6eb3ec6-445c-4f6e-bad7-c91566f5ec32","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"2b6241e5-29fe-4ed4-ab41-032d1ad235e2","savedPayload":{"position":{"x":43633.74577614054,"y":31475.276430635626},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"b0616fcc-fe30-4f16-a6d7-7e1c82ef7ac3","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"89dcb582-40e8-4a1f-85bd-45d969c4b95b","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"02cf98d8-a0c7-4660-a2a6-3e036fa164f1"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2ff6f027-4aaf-40f7-9466-62370009038e","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"35bbd8e0-d1e3-4958-b0ec-bd75398c5de1"}}}],"id":"6997c407-9f0e-4366-a6fa-e1f5a59dc0e9","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"88f40e95-fc31-4344-bfff-025abb455cbf","savedPayload":{"position":{"x":43611.43180799584,"y":31591.37193734411},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"94a24a57-3f5f-4a32-9095-c4dca86157e1","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"838f2ae6-2f30-4d84-95af-43efb426c298","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"b8927c70-a6cf-4efe-b0e1-2aa65c04f014"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"cf4bce85-8fc6-460e-8f84-5d516b9879d3","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"6ea466b2-82c1-4df1-a019-76fa01c31e24"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"b9408c81-1188-44d9-a0df-a514be411983","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"4bd4551d-122d-448e-b057-7d0fea80861f"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"f86166ee-37a2-4cc2-8ea5-8adc0a510706","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"6618a228-456d-4750-bfc1-1d67c30dd342"}}}],"id":"86730149-dd76-42ea-ad66-6c527a5ff714","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"052015e7-1fdb-41ef-9f94-7470685815a1","savedPayload":{"position":{"x":43559.23277912925,"y":31694.525566454333},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"2ecf1237-0f5e-414d-9f7f-6f74995f3b13","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,"arrangementStyle":0},"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":"769c38ec-5035-4cbf-b757-f2dfd140ee21","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"696a2d92-2b36-43d7-bf0d-7640ad080a0e"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"d03dc67f-f25e-406c-83c0-c88f64944c0d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"f0a654ef-9473-4a92-a2c5-ef49e0f60831"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"b5d21b84-9e64-4867-9a39-34e9f90990fe","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"84108df0-3be0-4d04-94e8-a5051cdca43b"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"e468c227-eaaa-4ea7-b392-a543fff3f4ad","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"8dc2e370-f6c1-46ad-a0dd-f49da7bf271f"}}}],"id":"19c90691-cd36-4a6f-8301-d22cb1204584","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"cd3eb486-77ff-43b5-9135-c560cdadcc30","savedPayload":{"position":{"x":43484.72851305459,"y":31777.876573021833},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"ab5261dc-781b-40b7-a2c6-ce022b9277c4","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,"arrangementStyle":0},"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":"06889429-2332-4fe9-9a66-ee56b4fd8108","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"c3cb246f-d37c-4bcf-bccd-fe073af7e2e9"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"75e9344f-9444-4c46-b604-da763273d9ae","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"3fbd9b54-ecbf-46df-a3e7-77a174320424"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"8738933f-a9e3-4468-9495-8d9c7809624e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"35771632-bb96-48a6-a878-a55168acc383"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"7a72bc84-cdff-4cf3-bc72-e44960446c54","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"e7ada237-9068-41af-b545-269c6d6b3f34"}}}],"id":"1982a4ca-dcd6-483f-acd8-dade0e2e465e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"3c2406a3-b35a-4655-8ba5-498e8dd70a8b","savedPayload":{"position":{"x":43391.02991247641,"y":31839.99226140119},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"efa7e49c-b6e0-401c-9ed6-02eaf60f878e","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,"arrangementStyle":0},"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":"57ec90a5-59b1-463e-bf63-621109bab540","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"a2027347-bbd6-4f61-8b9b-917d3e3d95d5"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"6e8265d8-fd0e-4614-ac39-0de37c97f179","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"7185ba1a-f851-4204-819a-bf9a36c37fe8"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"5000a2bf-7fcc-4831-9c8e-a54489a5f93f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"b91199a2-56e6-466e-8725-53ef4738d70e"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"fb3746fb-6d12-4a26-b749-ffc3d060a289","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"4751d135-6f4e-4efb-8cb5-067a604c59cf"}}}],"id":"f69cd215-eaa6-425d-a9b8-476bab55eaea","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"8c55acfd-1b1e-44a1-b1bd-8fbec4fb89c8","savedPayload":{"position":{"x":43284.22656791505,"y":31876.045500857595},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"2b8a3d9a-41c1-4698-9947-6485378ef3ed","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,"arrangementStyle":0},"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":"0a875a01-8dc6-4631-b315-0d448f0e82fb","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"349536a6-9b35-480c-b88f-6d5d038183dd"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"a7f0cc57-f3ae-4cd4-b6d9-558405a13351","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"414ffc7d-e039-4004-85a0-8182f3eb9105"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"b992d582-7457-46c6-b357-3d3bde14f5a6","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"3bc6bc61-006c-460c-a017-aa0a9dd00b58"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"9122166c-5f83-48db-b22d-e09b4814a925","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"3c62f085-9220-445e-b5a4-f85e59e28717"}}}],"id":"eb355b93-26b5-4ec2-92af-3c87a6b02201","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"ff400505-4eab-400f-b84b-f41e32bd901f","savedPayload":{"position":{"x":43156.82064724961,"y":31879.74004634101},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"1bec3323-bacb-41b2-9c7c-295eb3188c83","savedPayload":{"position":{"x":12544.21955112153,"y":27015.316250530504},"targetPosition":{"x":12809.903295371514,"y":26373.610784042445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":2115,"y":1195},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"Bittrex XMR/USDT","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2020-04-10T00:00:00.000Z\",\n \"toDate\": \"2020-04-20T23:59:59.999Z\",\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"adbedb67-55da-40eb-8e29-c4c951c2a130","savedPayload":{"position":{"x":43433.904964020134,"y":31090.08122008158},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 51.5531631,\n \"maxValue\": 58.78651331,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"cc550b07-e9db-4a19-9143-d361bff4aa6f","savedPayload":{"position":{"x":43522.58881136428,"y":31164.598399546274},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"24-hs\"}","id":"9e4aa428-a8e3-4b95-93ac-74e208ffad3a","savedPayload":{"position":{"x":43586.959939711174,"y":31259.03996760349},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"64aa956f-f76a-4096-b4aa-08b01909e985","savedPayload":{"position":{"x":44078.64999458624,"y":30934.89460131808},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"38cff471-d74c-4fe0-b53b-9d64290df615"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"5a005171-4569-4c9d-a35e-17388d14d86f","savedPayload":{"position":{"x":44163.85123076828,"y":30946.443093510883},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"ac5dd233-6cf9-4820-9ab9-a7adbd9b2429"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"06939aba-5c3c-4672-87bd-e9182d29c0fe","savedPayload":{"position":{"x":44241.83694393738,"y":30974.63232510084},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"c8b61164-d8fc-445b-b8ab-81b35e19abb4"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"b1a95e12-04d7-4b91-821f-03895a140df6","savedPayload":{"position":{"x":44311.67549610568,"y":31016.49344919726},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"379870d9-4fb7-42c0-aef1-0c054b89dafb"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"78a746d4-acfd-44f9-a02a-2d1d3464b1f7","savedPayload":{"position":{"x":44371.85960146544,"y":31070.221683842996},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"504af5a8-686f-47ca-a2c7-a9d1faf9b4c4"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9e39b5b3-164e-4fc7-ab8b-c08877748181","savedPayload":{"position":{"x":44420.81779483182,"y":31133.88297441118},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"64bb097f-4821-4e8c-bfa6-b3af05f8443d"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9c8d5d25-aeba-4343-a2eb-250ff80f8339","savedPayload":{"position":{"x":44457.117328935085,"y":31205.319635425785},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"cb385521-0845-4ed1-8775-1cf4d3a7f277"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"c3e76e0e-83d3-4467-a9bf-ae7f9c7267e4","savedPayload":{"position":{"x":44479.64133141089,"y":31282.130540258924},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"4b05b9c6-8794-45d6-b782-5e071ae635b5"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"d458a289-e156-4db7-90ab-a1e4c2e38d26","savedPayload":{"position":{"x":44487.61147096234,"y":31361.728456129385},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"0417fe10-ec0d-48a5-b8e9-e0cc16a47159"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"98ca5a64-0093-43b8-9a6b-51a1edb41d53","savedPayload":{"position":{"x":44480.78341149639,"y":31441.3959689604},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"70651c9f-8d7f-40aa-8c9d-e5b6968025e6"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"1adf704f-6cd0-4e59-9ccd-fa75e20fc913","savedPayload":{"position":{"x":44459.48592250235,"y":31518.457632189642},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"1fdae58b-ae24-40a7-b6af-2422c8fc6305"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"cb67d668-4e4f-4b44-8f88-c185835aaace","savedPayload":{"position":{"x":44424.41129890276,"y":31590.302021321455},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"a28b9b3c-1b09-48fb-98f2-0adc73ba9e45"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"96169d41-b1be-4bbd-b037-819bf213406d","savedPayload":{"position":{"x":44376.75954564685,"y":31654.50449366559},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"8ebcc43b-051e-436d-99c9-84b16a5575f9"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"33e5e5c9-b109-42cc-97e6-a52fbd6728af","savedPayload":{"position":{"x":44318.14175549443,"y":31708.891385093266},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"e2054a67-d691-415b-a17c-a6dfbc026ba7"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"fa3285e8-9d30-46f3-b797-62408acaf132","savedPayload":{"position":{"x":44250.60221948984,"y":31751.772743890055},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"04b7414a-04eb-4913-8d27-e91c4d5207bf"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"b70719eb-4123-4e46-9aec-837556feb837","savedPayload":{"position":{"x":44153.02320691994,"y":31784.13904467631},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"e46be264-9b3c-4672-b057-477fd5b4ff17"}}}],"id":"c7be09f1-cf91-4759-911d-11db2fc3eec7","savedPayload":{"position":{"x":44141.821764465945,"y":31355.229987239374},"targetPosition":{"x":43626.31800703183,"y":31407.414884109556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"ed1396f2-8ca7-4a24-9e6f-3e3279de4192","savedPayload":{"position":{"x":43623.85978187672,"y":31362.647150527082},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"5956ebf6-1e75-4f87-b84e-cecdb8f684fd","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,"arrangementStyle":0},"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":"26281db2-446c-4f81-96cd-464aa48a9b2b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"b6e14358-eb68-4e7f-baf5-cd05ebbd9faf"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"53487967-869c-420f-9526-bc1d3b86c5b0","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"83d45192-7100-4867-9515-19d63fb67ea5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"70c137fe-9d17-41ae-83ff-d817b7b5ae77","savedPayload":{"position":{"x":43633.74577614054,"y":31475.276430635626},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"000cbcce-9bcf-409a-8377-ca2d824fa6ab","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"f3ab76d5-a9b3-4355-b906-ecdece671810","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"d10b824a-b980-4b29-a982-a8e1666d53ec"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"b5530552-99be-4331-bd7f-e0e09b57b687","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"4e592467-d045-4d8f-85d8-051966d5f7c6"}}}],"id":"5a617db6-bfca-47df-811b-22d28641619f","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"eadc4823-d791-4eed-8ac0-3d99e4239d1b","savedPayload":{"position":{"x":43611.43180799584,"y":31591.37193734411},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"1337fe62-74e6-4f71-9233-5244666d2029","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e56713ce-d62e-4746-aafc-b24ea603182f","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"24fc564c-b387-47a7-b884-e7ef8c5fb43c"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"3a7cc1b0-1da4-4ed2-9a57-ff6c2b368eb6","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"5df032a9-2fd9-4c4c-8a22-0ef6fcebea43"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"02bc7c25-9923-42e8-ab97-3a9ac0421a54","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"b74c6e0d-997a-4b05-ab6d-59b2d9f95082"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"8b722b8d-7f1d-419e-89c8-4cc9776c287e","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"32e3d829-1991-440e-b2fb-b738fc0bb0dd"}}}],"id":"06b2728f-8221-4d36-93ec-7c9ac87ab955","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"17f19070-7a85-43eb-a805-c9214c0fd659","savedPayload":{"position":{"x":43559.23277912925,"y":31694.525566454333},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"78dffa3c-bc3a-44c2-a035-3a93272d5f21","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,"arrangementStyle":0},"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":"a4077ac0-4d28-4c9d-8e44-0fee38d039fd","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"e7bcd216-5c66-4f8b-bc37-1fc28e41d142"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"82e0d60b-7807-4af6-91f1-e6e4b0583ad0","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"6abfab4e-1760-4843-82b0-08f8ab2691b3"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"d1c7339f-77a7-44da-bede-e6d518a0b405","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"2da84b3d-342c-49a6-8ea9-448adfc5ee57"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"c3533481-d81f-4e1d-807b-2c1e6b0399b4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"ec46f9a9-2257-4c5a-aa02-ccc84541a0d9"}}}],"id":"8687850c-10d7-452f-b065-cf5c90adf751","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"3ae22abe-117f-4222-a400-763c3c5ae348","savedPayload":{"position":{"x":43484.72851305459,"y":31777.876573021833},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"3c31cb5b-50b9-49a8-8041-6742bfd154de","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,"arrangementStyle":0},"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":"8dc7ef1e-bb77-453c-9421-632123907604","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"02641c24-80a7-41bf-b5ed-cfa97641229b"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"6664bb3b-dcfd-41a6-b6f2-23923f30335d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"a70bb951-28f6-43cc-86ab-3ff97a7e4f65"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"15a7c233-4433-4f62-b773-368c8448b002","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"5e9de97f-7a82-4874-be5a-794fa8e25b11"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"a11d4836-9713-4abf-9d59-1be12e5217e0","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"9f03005b-ca07-4530-ae63-9e72afb122da"}}}],"id":"b6088bda-bb5b-4d76-9dd8-51086c6fb8f9","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"c7e143be-0a11-4a85-957b-cdf150dbd542","savedPayload":{"position":{"x":43391.02991247641,"y":31839.99226140119},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"c20a3e2a-740e-4421-8172-2c87a724e5fc","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,"arrangementStyle":0},"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":"f4485f0d-8bb1-4275-8afc-4d3d62f56f0b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"b44a8c25-2c08-4a56-b5ef-2a8828c673ab"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"1b87540e-5247-4c09-9364-a22c32705c63","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"41687f0e-4054-4088-a211-71ff0f64879d"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"e8bd955e-0dff-4b06-9337-f0c38fe3e018","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"1a81f79c-7446-4ae7-b774-6c4dc4e742b8"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"20852a57-4e15-4779-9d4f-d7b8059e48aa","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"3cea5ca6-8ec7-4485-a538-d635d5adf60e"}}}],"id":"5ec3bcdd-f51e-4deb-9763-9cef53a4cfe4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"dea653bd-dfd4-4c90-b58f-325f6a6b8125","savedPayload":{"position":{"x":43284.22656791505,"y":31876.045500857595},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"5372ce5f-b1f4-4eb9-bc22-4cb489692daf","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,"arrangementStyle":0},"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":"472f219e-e06f-49bc-b3c7-8c9520273bae","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"6a6cd9c6-1d81-498b-a880-d4dd3e22a051"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"648e0abb-5355-4b87-8d7a-d5e7a73569f9","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"b76e86e5-dfd1-4e43-ba9c-0a02d08c3acc"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"d961c3c6-4910-44ad-950f-0d1999e64b93","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"2d6cff08-e13f-4b8c-be6a-92208cfd9bcc"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"a21ba5e2-a7d3-4c2e-9d8a-b25824830267","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"c16b83f5-1162-4af5-8324-bab54c588a90"}}}],"id":"c005c24d-7451-4759-b4a0-323573c7c025","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"b0c824ad-9b34-4903-bdd4-6c4fef818552","savedPayload":{"position":{"x":43156.82064724961,"y":31879.74004634101},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e88f9ffc-4ca2-4b00-9265-e869f6e321ca","savedPayload":{"position":{"x":12318.896869539598,"y":26864.781445322646},"targetPosition":{"x":12809.903295371514,"y":26373.610784042445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":2465,"y":775},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"Bittrex DASH/USDT","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2019-09-24T00:00:00.000Z\",\n \"toDate\": \"2020-04-24T23:59:59.999Z\",\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"6388a41b-a7ad-475a-a55a-5c3fcfa96274","savedPayload":{"position":{"x":12259.251438279056,"y":27328.690566941128},"targetPosition":{"x":12168.535708114034,"y":26639.42048323078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 32.6,\n \"maxValue\": 142.34836938,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"f1f0818c-5785-418e-8021-e5364a7d5a94","savedPayload":{"position":{"x":12077.68871517836,"y":27328.610636491372},"targetPosition":{"x":12168.535708114034,"y":26639.42048323078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"24-hs\"}","id":"2752e81b-4b26-4e6f-86c1-574e0765ab03","savedPayload":{"position":{"x":11902.373726484304,"y":27281.6645476544},"targetPosition":{"x":12168.535708114034,"y":26639.42048323078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"e5cb4213-9d96-4257-86f6-db82771988e0","savedPayload":{"position":{"x":44078.64999458624,"y":30934.89460131808},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"a7b8e4ed-e341-478f-ade9-608a15ca978a"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ce6c3b76-7bc8-4b33-8256-1c9b9f85f535","savedPayload":{"position":{"x":44163.85123076828,"y":30946.443093510883},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"47ed9747-aa4b-444d-a1ae-ee5bcd22b41b"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"4bb956a8-dd37-4d06-b2b8-f20a659dff97","savedPayload":{"position":{"x":44241.83694393738,"y":30974.63232510084},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"cf406371-01ec-4213-aadf-a73ca6dd7c2a"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"151fd844-57f7-4402-b4df-945e82367fb8","savedPayload":{"position":{"x":44311.67549610568,"y":31016.49344919726},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"60c11137-e5e8-4b1e-8440-0fe54d8eaad1"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2f36d8b8-d36b-4e8b-9722-6298ae7e4821","savedPayload":{"position":{"x":44371.85960146544,"y":31070.221683842996},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"65e1feda-46c5-474f-980a-bbc152c36176"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9d7ec507-68a2-45a3-a7ab-ed169eb41f83","savedPayload":{"position":{"x":44420.81779483182,"y":31133.88297441118},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"2a0b2849-8f3c-42ed-bf53-4b5b3a95152a"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2af4a99c-0695-4658-abc0-6437e8b0ef20","savedPayload":{"position":{"x":44457.117328935085,"y":31205.319635425785},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"2a89e458-4e2f-4272-89e5-acf366a7579b"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"cbf17c6d-657d-4c15-abf8-1e5edc5f035e","savedPayload":{"position":{"x":44479.64133141089,"y":31282.130540258924},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"c62b975f-ec36-4c4e-bf9c-ad88c6f6b145"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"a97622d2-88f9-44d2-accd-5ec8a69c7778","savedPayload":{"position":{"x":44487.61147096234,"y":31361.728456129385},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"530cf439-80c9-42e8-8d68-b22d36a3f7d5"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"3514cc95-802d-4529-9093-4ed711e04ffe","savedPayload":{"position":{"x":44480.78341149639,"y":31441.3959689604},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"bb037972-8e14-4029-9f39-3a53274ef2fb"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"303249e0-cab1-4248-99c0-9d3fc8aa3eb3","savedPayload":{"position":{"x":44459.48592250235,"y":31518.457632189642},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"fc7ec38a-c62f-4c0d-9883-1d7a000fc2ae"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"9f456122-d067-4197-968c-1b3674e341e5","savedPayload":{"position":{"x":44424.41129890276,"y":31590.302021321455},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"540e982f-042a-41b8-b13b-48dad95ae02d"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"39138fd8-d956-46e6-a03a-8ad10508bb8b","savedPayload":{"position":{"x":44376.75954564685,"y":31654.50449366559},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"56fdc71f-06a1-4d8f-b68a-eadf7d51d504"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"117b4a78-71fa-491d-9b3e-483d8cda4632","savedPayload":{"position":{"x":44318.14175549443,"y":31708.891385093266},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"a4bb4d63-e1f8-4de8-84b4-00cb8c33d0d3"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"1e7da6f1-6436-4c9b-a17f-a832daaff9f0","savedPayload":{"position":{"x":44250.60221948984,"y":31751.772743890055},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"a2a18651-52ab-446e-b332-737416c50833"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"2034b3be-1321-4f55-a1a5-63ac3a16b0d9","savedPayload":{"position":{"x":44153.02320691994,"y":31784.13904467631},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"fc8ea3a8-8dbe-4c4d-a5ec-bbbeec11bca4"}}}],"id":"6b57631a-a6bf-4bc4-b3bc-583ef3ed681b","savedPayload":{"position":{"x":44141.821764465945,"y":31355.229987239374},"targetPosition":{"x":43626.31800703183,"y":31407.414884109556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"cdd3b230-886b-4d10-bf59-7ff4def897dd","savedPayload":{"position":{"x":11745.413053678061,"y":27190.85471777272},"targetPosition":{"x":12168.535708114034,"y":26639.42048323078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"c9b3748d-f60f-4679-a89a-c86eae18cadb","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,"arrangementStyle":0},"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":"5444c02d-105d-4810-859e-563f53bfe8aa","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"6735e760-6024-47c2-9005-61041c63dad1"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"97a2ca24-178d-481f-8561-f9ee14fe0a86","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"44c7fe2b-d9be-4782-a518-4409b7618cb1","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"bffe1f05-0a25-4151-a450-f80f0d6a32e2","savedPayload":{"position":{"x":11617.243013216676,"y":27062.643665298507},"targetPosition":{"x":12168.535708114034,"y":26639.42048323078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"7346e3a9-0a9c-4a69-9876-5c1da0e80fe7","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"c3d37a99-930b-4f6d-b4f7-83ddb3ca4d62","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"75aa5ebb-8a85-4edc-a49c-50aee8469e13"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"d857a733-2e65-42c0-a894-3b8b64ebdcf2","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"d16eac0e-b7aa-46e8-b72d-d7053a6043c7"}}}],"id":"e21318df-5b9e-4af0-ab6c-286bb998101b","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"ad43b5a2-ea1c-457f-8390-a4783736b3cd","savedPayload":{"position":{"x":11526.574570814579,"y":26905.54944896014},"targetPosition":{"x":12168.535708114034,"y":26639.42048323078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"e868bc5e-11e8-4f5c-8952-6a040999a92c","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f39650c5-dc26-43fd-a02e-47ae909a7942","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"11ea11bd-a2cf-4be5-9a49-2ba89525146b"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"24be2d07-10d3-4c0e-892c-3d8e3f41e075","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"9537855d-7860-46ae-bdda-41ceaf907454"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"ea94cd19-f4c5-4f5e-af55-80c9fa35181f","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"375aef7f-62da-45b3-8dbd-5280a3ef1603"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"59bbe0df-58cc-4f6f-92ee-e7876bda0194","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"7f8edb46-c490-468f-b8c1-9af512b9a493"}}}],"id":"7ac1e7ef-f600-4fa3-b702-c180f24a19bb","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"d9e80ae4-edc5-456c-857f-4d364db989b3","savedPayload":{"position":{"x":11479.6079265534,"y":26730.318077780288},"targetPosition":{"x":12168.535708114034,"y":26639.42048323078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"cda59989-9a32-42fa-9ee4-428cb8abf365","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,"arrangementStyle":0},"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":"d20e7e58-e63d-47f4-9589-268d7aef909e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"36cd7a02-1a06-4600-8a48-0edd62cc2b3f"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"718883f9-13ee-4ce3-b6e2-8921d1445216","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"dacd497d-0b91-4814-aa08-e204e17b7601"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"f58a8e2a-c7fb-4fed-8127-9da731198805","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"94f968ef-e67b-487f-9532-565189af9bd7"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"57ca17bf-204b-4aea-8828-d9b51fa8dbb0","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"e336c54b-0909-4193-8a2e-7ec585b2b25e"}}}],"id":"35de50b9-e367-47df-b5d0-01dabd1632eb","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"93ea45a6-cb00-487e-aa15-3d5ca847d359","savedPayload":{"position":{"x":11479.58200051076,"y":26549.428254165286},"targetPosition":{"x":12168.535708114034,"y":26639.42048323078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"6ff34228-bfd8-4739-9ede-f8d7d61965ee","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,"arrangementStyle":0},"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":"f1ac996f-cacc-4443-b2c6-dc196b4e5c60","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"3ff39047-b219-438e-a5e0-14383f53cde5"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"a9137d18-a500-4fbb-b8ab-6c9c5e62aeda","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"c3dc681d-f71f-41f4-9030-baf787cf806d"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"b44922dd-f20b-4b9e-a57a-d6b7de5a3a0a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"2d502e44-dd6b-4512-a243-a095d85a964d"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"db5f23b7-ea26-4991-9cbd-8b7ef66d92ac","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"51e9dd20-bbc0-467f-b4d7-2b6260244780"}}}],"id":"ad6f37ba-79ce-421c-8130-184861f65705","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"11d5624a-e366-476f-96ec-da6ae80b7824","savedPayload":{"position":{"x":11526.482964786655,"y":26374.346230977066},"targetPosition":{"x":12168.535708114034,"y":26639.42048323078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"95786514-852c-4b36-adcd-0e8b6f5fe169","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,"arrangementStyle":0},"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":"29bcaa9c-15e8-41f7-a46f-7fb40f4a704e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"56c574c3-8fa3-4eb4-aa8c-4682e7288312"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"41844ae4-643e-46c7-b5d5-4c78865ebe61","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"ce06c22c-fbbc-41cd-96f8-65bf3c941eaa"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"4fc887b9-a41a-4c23-8998-316998e176d3","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"5b9878df-5806-4c10-b8b9-94f5afe84674"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"8c585d00-7a08-4167-bc73-ae4a098849ce","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"ac00370f-ea29-4bbe-b2e0-de68d091f30e"}}}],"id":"654640b2-2b17-4827-8216-d98b0cb5e730","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"ef7799d9-1759-4414-8844-6231af7558ab","savedPayload":{"position":{"x":11617.183720303785,"y":26217.327692933755},"targetPosition":{"x":12168.535708114034,"y":26639.42048323078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"02610cfd-6b11-4ab9-8d3a-b0cb4222b612","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,"arrangementStyle":0},"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":"c121244c-abb2-4dbe-a3c0-9211f06035b6","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"b030955a-98e6-49a1-8a83-3447ea863c26"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"eb894bf5-91d5-4c3a-a850-1644e64cd2d6","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"b5ebe9ae-e69f-48a7-9364-0401f9a0b3a1"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"db4546e4-325e-4f8e-bbab-fd6bf673cf03","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"31159f15-ed3c-4e58-8b93-72b05cf19adc"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"295deac1-fd8f-4b8b-8852-fc9bf010dd1b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"6eb5bec6-89f9-46e3-a867-cc1be6b3b523"}}}],"id":"d1c823f0-02ce-458d-a697-8dee0957facb","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"6f73b88b-6a80-4d67-89b5-d4d461567e73","savedPayload":{"position":{"x":11745.773911521357,"y":26088.853702351767},"targetPosition":{"x":12168.535708114034,"y":26639.42048323078},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"afb4befa-2abc-4708-9bdb-c52e3019aa7c","savedPayload":{"position":{"x":12168.34882270071,"y":26639.488824862194},"targetPosition":{"x":12809.903295371514,"y":26373.610784042445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":2465,"y":985},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"Bittrex ADA/USDT","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":"0f5f7e8a-6134-4956-94f3-94d7751b4f9b","savedPayload":{"position":{"x":43433.904964020134,"y":31090.08122008158},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"f3403cc8-60d8-4785-a748-581b0e038fb5","savedPayload":{"position":{"x":43522.58881136428,"y":31164.598399546274},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"24-hs\"}","id":"806fa399-27e9-4770-8354-2cb83cc46d75","savedPayload":{"position":{"x":43586.959939711174,"y":31259.03996760349},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"70cac84d-8c46-4743-80d9-4807bd193151","savedPayload":{"position":{"x":44078.64999458624,"y":30934.89460131808},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"e8f78daf-66e6-4af7-9efc-51d543d341ad"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"76f4e9dd-f386-4250-887b-cc4297e27a8e","savedPayload":{"position":{"x":44163.85123076828,"y":30946.443093510883},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"56fc841c-2d61-4cc0-b009-b967270bfaab"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"8438ae41-0aee-410b-abb9-423a576d5682","savedPayload":{"position":{"x":44241.83694393738,"y":30974.63232510084},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"a2e6d9b6-bd60-481f-ac56-9594f808b78c"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"46d4b1b2-82c8-43aa-be50-79fd3844c3ed","savedPayload":{"position":{"x":44311.67549610568,"y":31016.49344919726},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"dcec564f-b166-4808-a7bc-02cc0d172eb1"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"c27b28b8-59d1-4528-b031-00d217f9a124","savedPayload":{"position":{"x":44371.85960146544,"y":31070.221683842996},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"caf7b9e1-0576-4d9f-a414-3ba9b46e75eb"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"46343a52-e632-4bd8-a85c-f0351f2fd3fb","savedPayload":{"position":{"x":44420.81779483182,"y":31133.88297441118},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"d54420f0-dfbe-4fd5-b96f-230c78e8bbc9"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"d2fcfa8e-736f-4067-8a80-c1b162f810a4","savedPayload":{"position":{"x":44457.117328935085,"y":31205.319635425785},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"d8b32f0e-220e-4a5a-87ed-3588d790f4e2"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"130255eb-a0e7-4c8a-877b-2769bfb2fcf4","savedPayload":{"position":{"x":44479.64133141089,"y":31282.130540258924},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"796cbd91-12b4-48bd-880f-4a83a6e97aea"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"51f5a915-f251-4034-81aa-89263a1ab155","savedPayload":{"position":{"x":44487.61147096234,"y":31361.728456129385},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"691337d4-1a6c-4531-9dbf-9acf9549c531"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"099a4f85-ceca-4e51-bbcb-bfb3b19381e1","savedPayload":{"position":{"x":44480.78341149639,"y":31441.3959689604},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"0b595a2a-2748-4ae4-b502-2d2cdfef5d24"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"a5b89193-3eda-4caa-8581-dca1cbd39386","savedPayload":{"position":{"x":44459.48592250235,"y":31518.457632189642},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"c4c49042-542d-4f50-b14d-e9860cda4150"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"30d7db6b-0666-4721-874e-33a084704856","savedPayload":{"position":{"x":44424.41129890276,"y":31590.302021321455},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"a705d1dc-5ad7-482e-99be-64b1ad09748f"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"dfad96c2-cb15-41c6-921c-a01b2bbbd872","savedPayload":{"position":{"x":44376.75954564685,"y":31654.50449366559},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"3064ee6c-602a-4303-bbcb-43a66af7021b"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"c5a410e9-bebd-4dcb-8f68-8f578ca9d72a","savedPayload":{"position":{"x":44318.14175549443,"y":31708.891385093266},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"64476647-d34d-402b-82a5-521a8b647264"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"3b615824-fe80-4d76-826e-06e7c8a9bdff","savedPayload":{"position":{"x":44250.60221948984,"y":31751.772743890055},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"8560c11f-af83-47b7-afe2-37c16e18ea4f"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"f5683bcb-c0d2-40c9-9eaf-a2cb4cfab702","savedPayload":{"position":{"x":44153.02320691994,"y":31784.13904467631},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"c144d391-12df-47a7-b483-b0f02f731f66"}}}],"id":"fdfc7c78-552f-49d5-ba86-0a1b166ce078","savedPayload":{"position":{"x":44141.821764465945,"y":31355.229987239374},"targetPosition":{"x":43626.31800703183,"y":31407.414884109556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"4f3f3156-7f4c-4966-b70b-fbc305c706d4","savedPayload":{"position":{"x":43623.85978187672,"y":31362.647150527082},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"2d28ee8a-33b8-439e-bdaf-17e9de8bcaa1","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,"arrangementStyle":0},"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":"a5aa96d8-2638-4705-b7bc-c1573ce62d8b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"5ed2aff0-7419-4c86-89ba-5c55dccc5945"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"e160e190-eebc-4a97-8a78-fa63f9d226e6","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"7113b38d-c7a0-4485-b06b-5e664e26cf09","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"a6f8fc60-7728-41e2-9013-ef8d98c59883","savedPayload":{"position":{"x":43633.74577614054,"y":31475.276430635626},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"cabe4983-ae55-4bfc-802d-46debed71800","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"33c63900-9d5f-4e63-90bc-b08bc3799f45","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"10ececf3-e4b7-4d0e-af1d-5efa2d86a911"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"71e42fcb-d537-4f14-b3d8-9b8c7f3e0e00","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"f2a5e267-e248-465c-9ebf-e5ab244a7b5f"}}}],"id":"8a6895dd-c5f4-4211-b602-fa2f596f4306","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"c38cc61c-85f8-4c25-9225-68415e09733e","savedPayload":{"position":{"x":43611.43180799584,"y":31591.37193734411},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"e724add5-ce39-4304-9668-ca7298a61440","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"a21b2429-940a-4c5b-82c0-86f1310fde3b","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"45d13953-e76a-4a87-9c7f-6908936d3a0e"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"70fc509a-6106-4a00-8ed3-50a7f129af4d","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"e15720e5-644b-41cd-b18c-a98166d84d62"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"ed46b21b-cb1b-409b-b0e0-92116f5db79e","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"4c7e1297-9fa7-47fe-825f-14ffb4e902f4"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"43cf4dec-69e7-4cb4-b8f9-fce76d09fefd","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"bbc32836-a05d-4b66-a284-74b7174e50f1"}}}],"id":"4a3bc5ba-3ba0-4f9f-ac84-27087ecde7cc","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"cfaf2e4e-d2dd-4427-8099-9f99fd05c291","savedPayload":{"position":{"x":43559.23277912925,"y":31694.525566454333},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"31a4f9d8-a577-4c74-9f43-449fbccc5fed","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,"arrangementStyle":0},"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":"b7d3c492-3633-42b0-9cc4-2fa215f5013d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"a3bd56cd-062c-47bc-a411-1a0c4401ad7d"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"3075e90f-88fe-4257-93ef-612bee202772","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"7a9b54e7-7240-461e-91c7-3533e9264b61"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"a9cbdd58-2167-4913-95af-f6eaedb13f0a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"674012e2-82cf-46c7-a501-1195a3ed4f53"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"ec9e0f27-4da6-4726-87b6-c389dd29300d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"eb7f2ebb-56e3-4243-81f7-9a305d494a43"}}}],"id":"484a99e6-f41f-4581-815d-12e5d5adf46a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"6ad75d01-a60c-4b76-a538-add03a11800f","savedPayload":{"position":{"x":43484.72851305459,"y":31777.876573021833},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"20ca88b2-2437-426b-ae31-4bb133056f06","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,"arrangementStyle":0},"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":"c191cef5-992a-4852-ad1e-c08bfce607c4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"8b2dc921-7371-4396-8285-d50a869523be"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"c87b2186-1c2d-4f9c-aef5-81e70e85f543","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"034a133e-949c-4f0a-81aa-18928f5b14ff"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"b381ef85-4a79-4e71-b17c-6dbac5adb474","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"0969d9f5-ccae-438c-bf9f-b007751c8bed"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"04d720d0-ea7c-47d5-a0da-e106788021bb","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"e7cad0ae-40c4-42a9-a68d-30db5a9df2b0"}}}],"id":"110120d0-3228-4837-90ee-ef53cde51e86","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"9afe0b1b-15b3-4a0b-9348-c12d1132b4f4","savedPayload":{"position":{"x":43391.02991247641,"y":31839.99226140119},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"ad98b138-1580-4a83-8e2c-45ad2b9048a3","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,"arrangementStyle":0},"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":"9eabd986-375f-42e0-9328-ef73d2d97431","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"6f5a0453-bf4c-4b6c-953b-b1be6bd9162b"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"8875ef41-c98b-430f-8130-f28e205bf407","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"a4a1f553-2414-4a54-86b0-bc8bc93d3463"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"f5a3ecd3-8d10-4e9b-a8f7-bbaf911753a9","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"e0a80f5d-f6f9-45fd-854c-9a7139be0720"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"0288169d-1423-47ae-9681-ae1825b2f2f4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"514bdf02-9b7a-4072-9fc6-b865193818d7"}}}],"id":"3c4ad59a-a640-452c-9f9c-4ddee652c75a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"083a2247-3925-444a-bcf5-fd7eabb93872","savedPayload":{"position":{"x":43284.22656791505,"y":31876.045500857595},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"b3d45f50-a702-4fe4-857f-14746d716a5c","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,"arrangementStyle":0},"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":"61713fbc-2a41-4273-b65e-1383a74ceca8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"a3b45e28-4362-45f2-9fc9-b03ec307d8d4"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"929243eb-86b9-4c69-9d5a-2542e8769163","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"7df24dd9-4983-49ab-a558-8036394bb6c9"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"c1221310-46c7-48ce-b5d0-7da6e5d7665d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"e0bec28c-92c3-4cb9-ae86-cf23cebf768a"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"904b7e2e-0646-48c3-a4a4-167c2c9606b3","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"c6ee9688-881e-4af4-9aab-cdf6b3f6c5d5"}}}],"id":"2e90b8f5-d82f-4cf6-9691-a98631fdcf9e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"92c7080f-ebb1-4c01-8d88-0b6ca169c65e","savedPayload":{"position":{"x":43156.82064724961,"y":31879.74004634101},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fdff16ce-9b5a-4a05-a9ee-8a233a2bd713","savedPayload":{"position":{"x":12115.510416924759,"y":26373.74763669547},"targetPosition":{"x":12809.903295371514,"y":26373.610784042445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":2465,"y":1195},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"Bittrex TRX/USDT","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2018-12-28T10:20:51.973Z\",\n \"toDate\": \"2019-01-08T06:43:24.825Z\",\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"678becae-c62f-4f46-8bf7-7bf5ee84a98a","savedPayload":{"position":{"x":43433.904964020134,"y":31090.08122008158},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 3569.4333333333334,\n \"maxValue\": 4099.233333333334,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"404d9d09-7308-4c5b-9fcd-02bf352f25ab","savedPayload":{"position":{"x":43522.58881136428,"y":31164.598399546274},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"24-hs\"}","id":"bd940e93-d0bb-425d-abb3-c9696d1f6f07","savedPayload":{"position":{"x":43586.959939711174,"y":31259.03996760349},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"f35ffb03-4eb6-49b1-8eb6-c9e53a9d05b9","savedPayload":{"position":{"x":44078.64999458624,"y":30934.89460131808},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"969b13bf-452e-48bf-9000-4eed11ff644d"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"351fbe5c-6d1e-41a7-8a30-581228d0f36c","savedPayload":{"position":{"x":44163.85123076828,"y":30946.443093510883},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"a8649655-58ba-4613-ad5d-73e0cb09a968"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"d984f2ae-2be7-41bc-9824-059e497f4ea4","savedPayload":{"position":{"x":44241.83694393738,"y":30974.63232510084},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"11bfda30-024f-4bbe-9650-df3b30565d4f"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"cf54a7b4-873d-48a7-a0e5-617ccbd5f00e","savedPayload":{"position":{"x":44311.67549610568,"y":31016.49344919726},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"85112a16-298d-49d0-a0d4-40fa28514991"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e891119d-b5d8-4922-ba86-876909bf5190","savedPayload":{"position":{"x":44371.85960146544,"y":31070.221683842996},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"b084ff36-9793-4af8-a9b5-d7d106e59add"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"06c241b6-1692-4273-8270-34e33be5c1a7","savedPayload":{"position":{"x":44420.81779483182,"y":31133.88297441118},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"f56b72d8-679d-4088-a9c6-f06261b20b12"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"3ce915c9-5a8c-44f8-bc9d-a5958a8ec29a","savedPayload":{"position":{"x":44457.117328935085,"y":31205.319635425785},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"fe56310c-617c-4f69-b133-a38e6fcd1695"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"0d599288-712e-4ae2-ac81-05d67a215a95","savedPayload":{"position":{"x":44479.64133141089,"y":31282.130540258924},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"bf5c0cfe-e275-4f55-b7c1-3a239c26bc73"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"1a0350e9-2f56-47eb-99cd-f1f3489a0578","savedPayload":{"position":{"x":44487.61147096234,"y":31361.728456129385},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"0584f969-d053-4fad-bf9c-5e7ca5c91d80"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"0f62db1d-9ba5-442b-8968-8b6ee0baf4fb","savedPayload":{"position":{"x":44480.78341149639,"y":31441.3959689604},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"559256e3-0cea-4280-af2b-174a971fbb74"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"be0172e1-f0d5-47e5-ae33-6ce8e8da3761","savedPayload":{"position":{"x":44459.48592250235,"y":31518.457632189642},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"4f3e6f14-1e5f-4fdd-80ce-fbe78967aaa4"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"1f570292-8f87-45ac-b584-d4481fd7e663","savedPayload":{"position":{"x":44424.41129890276,"y":31590.302021321455},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"d73d610d-f649-424c-b01a-d86ebb2f2408"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"98ca3166-722b-4826-abd7-8374d466267d","savedPayload":{"position":{"x":44376.75954564685,"y":31654.50449366559},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"36b804ed-9849-4ee7-bae8-8fd0e3cb4591"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"0454c78f-8111-4a84-8ef3-59c784ddc828","savedPayload":{"position":{"x":44318.14175549443,"y":31708.891385093266},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"ceeed58a-0740-4dd8-87b5-eeeafaf435a7"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"641cd74b-8654-4f4e-b495-3d55f998ae61","savedPayload":{"position":{"x":44250.60221948984,"y":31751.772743890055},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"2d40c3fd-6ffc-4e4b-af68-cf982c651c48"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"e9c30c98-f302-4717-80d0-e48934c07fc2","savedPayload":{"position":{"x":44153.02320691994,"y":31784.13904467631},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"2ffc6f95-5ebc-4899-b47f-66c5acf3935f"}}}],"id":"c79e3a5a-1f82-4de2-a8ba-c6179573f68d","savedPayload":{"position":{"x":44141.821764465945,"y":31355.229987239374},"targetPosition":{"x":43626.31800703183,"y":31407.414884109556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"eeaa93e1-7869-4bc6-93ca-52333b686b14","savedPayload":{"position":{"x":43623.85978187672,"y":31362.647150527082},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"6b79cf69-bf97-4157-8986-37004fc5bdfd","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,"arrangementStyle":0},"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":"913355ba-e589-48c3-b3d0-8721f627cae4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"7a0fc8bc-dd6e-4f25-aa78-27b301b57fb2"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"fce14765-1855-48df-ac6f-5724ed4ed0c8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"dff758ba-da07-45b6-ba8e-be3015abbddf","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"3bc7fa0b-3ad8-4589-8a62-6ff9805831b7","savedPayload":{"position":{"x":43633.74577614054,"y":31475.276430635626},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"7ea22e0f-6bfa-4a4a-ab4f-92e20887b332","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"3e38db5a-a558-41ce-b015-5dea0199edd2","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"402ced77-4d3e-4e7e-a4ec-48515db4aa75"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"83167a17-5bbb-4cfc-aa78-95f42bb82aab","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"c9520ba2-bf76-4dc7-a72b-5fd16f1a9d63"}}}],"id":"fb5c19c3-c65e-4c5a-8fd8-ca6f536df5ed","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"5cffcef2-548d-4a6f-924d-75b09aae2d22","savedPayload":{"position":{"x":43611.43180799584,"y":31591.37193734411},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"b1b3892f-5554-49f6-a9a9-fc2fafe5bbb7","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"773b8207-4d91-43d5-affe-cb3ff1e4a031","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"b407ebab-eb7f-4e61-bc62-767279c5a5b7"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"65b7c887-20da-46c8-a5b6-69ac80217b6f","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"cd3da659-6d9d-4624-bb89-c637c89c2dda"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"f95f9e38-d309-488f-903f-797f1dd7ce97","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"6b210cd5-0961-41aa-bb1f-49f06bd7a8c4"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"0259b52e-ce38-4125-9cc4-21fd8fcaa076","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"37cad52c-3e13-43b4-a939-cfe22ff35dc3"}}}],"id":"a513254f-bc2e-4190-aa12-4f22315fde5e","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"f7dc665f-70fd-4f44-8d2c-9dc356132634","savedPayload":{"position":{"x":43559.23277912925,"y":31694.525566454333},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"6db82b1d-60aa-49f5-a795-ef219a1733f6","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,"arrangementStyle":0},"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":"ecc4fac0-e211-4cbf-92b5-c198f22b6573","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"a038b702-d3c4-46a8-bd3f-d89661170604"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"86698d98-2685-4d19-9e51-f918dd37afb8","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"09fa4edc-9155-4efd-b5de-8e03dd0545d5"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"72dfcccb-5a37-4454-92ea-83e8339d4577","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"1465b7f8-4825-46c4-9947-a4662fe4122e"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"f919f8d6-4933-42a0-89b7-babf7807372d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"19043763-7298-408d-85dd-6b351badbad9"}}}],"id":"9d8229f0-1d41-43b8-a315-e285ada0a565","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"449336ca-3b4e-4d3f-afd7-befbe285d20b","savedPayload":{"position":{"x":43484.72851305459,"y":31777.876573021833},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"76566856-0725-4d1c-a48d-6a8c8c9384ec","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,"arrangementStyle":0},"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":"4ff9a001-9823-4c52-ba58-ce8b23c59289","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"647c1300-67d0-4ed9-a73d-16e65a6948d7"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"62837242-2932-4fc5-9b73-555b38a7bdc4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"1dda23db-6b9d-45fa-84d2-5dbf0bf5187f"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"79edec28-5694-4c45-82ee-1837eab79e53","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"ae693c7e-643a-41b2-a16a-47e127d4529c"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"679dbcb1-fadb-4ad9-98ae-d878e5456985","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"cb025cb5-471e-410d-af5e-cfb73cc360b1"}}}],"id":"88bc23b1-b515-4f1b-a178-30c0126c189e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"27968cc7-6794-49b6-bc19-e76de420a461","savedPayload":{"position":{"x":43391.02991247641,"y":31839.99226140119},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"1b976295-8180-4eae-a7c9-ca016719250f","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,"arrangementStyle":0},"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":"7a3aa395-61f7-498b-b35c-702a846b6d17","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"627305eb-79f2-442e-b74d-9d9a280969e0"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"d48ce050-c365-4d99-b85c-de10c0737348","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"bd02430e-8059-437e-bdff-30a619270b96"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"f21a8b6d-8766-4651-bfc2-6b8675fe4498","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"a293c4e6-2e87-408c-b4a2-a1bd7e218cad"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"90b2e72a-05c6-4e4b-9041-00875d34336b","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"826c69b1-f0e6-4e5f-82e9-9dca3bf74308"}}}],"id":"9e4002a0-8b70-4f3d-ad84-007a90b0847e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"4d779705-1486-46d8-bf4b-d62749df80b1","savedPayload":{"position":{"x":43284.22656791505,"y":31876.045500857595},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"f7d67b5b-f031-46bd-b3a7-ddf25a8cdf38","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,"arrangementStyle":0},"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":"92c08710-030b-4fb8-8c5e-330ca33d7ee6","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"a6e1479c-8fc3-4ea7-a9a5-27a5bcf36a89"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"7d48bb2f-d722-451e-a59a-8a324814cde3","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"2edf2551-36f4-482f-aed7-9ed23463ba0f"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"eba7800c-60cb-42f1-9099-e61456cd294a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"b22593fc-0b99-4998-80ea-4e5673d0c5b8"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"731d0e16-00be-4d30-9a40-e60e0b73b8c5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"8f351217-50ca-4058-a6ea-e552434bc872"}}}],"id":"347eeea8-0f11-4276-9aab-6d484a1b6be4","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"edccaeae-cb89-42e8-9ad1-2fb57b543a48","savedPayload":{"position":{"x":43156.82064724961,"y":31879.74004634101},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d422879e-9209-4b5b-843e-6da48dfb1e18","savedPayload":{"position":{"x":12168.444280660195,"y":26108.174337587763},"targetPosition":{"x":12809.903295371514,"y":26373.610784042445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":2815,"y":775},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"Bittrex XLM/USDT","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":"f18d4fc7-c132-4bbf-88a2-20e955bfbbe9","savedPayload":{"position":{"x":43433.904964020134,"y":31090.08122008158},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"08a90438-2566-4218-b607-42e8c2cca124","savedPayload":{"position":{"x":43522.58881136428,"y":31164.598399546274},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"24-hs\"}","id":"f7d529d6-f5d6-40a4-aa16-7dcfdb4fc33a","savedPayload":{"position":{"x":43586.959939711174,"y":31259.03996760349},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"d0f60278-5e24-4446-aaf3-7aef1be2ced1","savedPayload":{"position":{"x":44078.64999458624,"y":30934.89460131808},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"5bbb8d3b-f4a0-443d-b8f7-446057118471"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"5a41b87b-2eaa-444f-8e94-fa1f43a2c2fb","savedPayload":{"position":{"x":44163.85123076828,"y":30946.443093510883},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"e14abcc3-2fa6-481a-8a81-a92029da9366"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"08158f61-db06-4870-884b-d9fe713a0370","savedPayload":{"position":{"x":44241.83694393738,"y":30974.63232510084},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"cca878dd-2f01-45e0-9802-7483b42b4215"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"03feea63-1436-4c0e-a323-78ff1b8f0c1b","savedPayload":{"position":{"x":44311.67549610568,"y":31016.49344919726},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"ab510dbb-bf7d-4ead-8bef-95b9879c36c1"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"cec5b198-f17c-429b-bddf-499aa2461fa1","savedPayload":{"position":{"x":44371.85960146544,"y":31070.221683842996},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"d1b38bb9-1c33-4a6c-8bac-f596a8ba35fa"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"7f677133-c722-48ea-9b8d-1e0ff7356699","savedPayload":{"position":{"x":44420.81779483182,"y":31133.88297441118},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"4efedf7e-dab7-433a-9618-f99e4fe49a0b"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"aa80a019-ac78-4350-9b50-e346d8e18688","savedPayload":{"position":{"x":44457.117328935085,"y":31205.319635425785},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"5f2a5acb-6dee-4190-b4f2-a86dd0a04ea3"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"46bf3cdb-7f6c-41bc-9abb-b5d75346b518","savedPayload":{"position":{"x":44479.64133141089,"y":31282.130540258924},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"72979cdb-b3d5-4f6f-919f-9c686645d5eb"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"02a846fd-f23c-40af-aecd-03ade57dc65a","savedPayload":{"position":{"x":44487.61147096234,"y":31361.728456129385},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"291decd2-466c-41a9-8151-804479477adb"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"5a66d54e-7aa9-4dc4-beae-4b6ecbc8d1d1","savedPayload":{"position":{"x":44480.78341149639,"y":31441.3959689604},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"5a36f514-879f-4443-b37a-d40ff2a03970"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"e91086c0-7672-4258-902b-dc6110098194","savedPayload":{"position":{"x":44459.48592250235,"y":31518.457632189642},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"a8a96c84-a857-4e37-b01d-26fdb08d7307"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"35c751be-50e4-40c7-b486-cd1b4a619561","savedPayload":{"position":{"x":44424.41129890276,"y":31590.302021321455},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"a27654cd-6702-4493-a88a-10b20544821e"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"f1a8f700-e142-4d82-888c-345fb1cc54e7","savedPayload":{"position":{"x":44376.75954564685,"y":31654.50449366559},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"25c69e81-14db-4730-b7b7-20af2191dc82"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"1325337b-57d9-473b-856f-16c41a7d62b8","savedPayload":{"position":{"x":44318.14175549443,"y":31708.891385093266},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"bb17d643-2b04-4ada-8541-dc2ef8695f9d"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"c58cc2fb-d1e9-4366-80ad-e5a051f92452","savedPayload":{"position":{"x":44250.60221948984,"y":31751.772743890055},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"b5124327-5cbd-48a7-b503-88bdbef311f4"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"0ad845c3-6e0a-4665-8181-9fb7b73274ea","savedPayload":{"position":{"x":44153.02320691994,"y":31784.13904467631},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"e7e994e4-fd5e-4e1a-824b-4b22abc0529e"}}}],"id":"add14920-d63a-40ff-95c7-743606b6e5e0","savedPayload":{"position":{"x":44141.821764465945,"y":31355.229987239374},"targetPosition":{"x":43626.31800703183,"y":31407.414884109556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"6b2a1a89-aaf8-4aa1-adbc-caf3081c71d4","savedPayload":{"position":{"x":43623.85978187672,"y":31362.647150527082},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"4137f1a8-749b-4314-9d1d-7669e1abb636","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,"arrangementStyle":0},"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":"f828f219-2be7-4d1e-9793-b6c024ff171a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"5655d994-fab9-4648-8294-ac801040be2b"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"7c75ea9c-3fea-46d6-bf12-bfc13f34eb21","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"4e25a0a1-f3c6-490c-86af-b6e65d7666e0","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"fa348818-c32c-4c97-9ee7-5b1304274c59","savedPayload":{"position":{"x":43633.74577614054,"y":31475.276430635626},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"b4cc67ef-adea-4c9b-9b31-a0bf45429030","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"2edf0ca4-8b11-4573-a362-6db6af902d19","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"df680775-c023-4053-afe8-c19f4d115335"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6fe2de97-4465-4879-bc6b-c55d2e96ecd8","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"e16bb3c7-c4d0-4657-8847-3da74df42eb5"}}}],"id":"81c90a1c-c6e2-4133-8af5-4f5c65fa951a","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"3dfcf837-fe65-4341-a4b2-65027fc30ae0","savedPayload":{"position":{"x":43611.43180799584,"y":31591.37193734411},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": -2,\n \"maxValue\": 2,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"023f20bc-058d-4d86-a122-df02dc3bbd46","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"4413a6cc-e38e-4bff-b4db-e5e4fca77a1b","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"11022614-5256-4cfc-b173-bc14399ff681"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"d92810e7-c766-4acf-bae1-b9c1541ec1e4","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"7dd49ba4-7acf-4d69-b5d0-12baec0062e6"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"452f9c5e-b372-4f5a-ac30-7d75d499f6d0","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"7c5a650e-292b-4a1f-a3a2-9c70f8640392"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"59fd7248-e9b6-4568-86b2-06b234c2429c","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"69373311-1e44-4c8c-8db4-88c32c7275aa"}}}],"id":"821654e7-ca02-4621-8f07-197a370c03ef","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"20126a73-0cc7-4f68-a7be-7bd5e4f4a299","savedPayload":{"position":{"x":43559.23277912925,"y":31694.525566454333},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"373e0a7d-dd05-4f0c-9d92-dec22f7f1749","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,"arrangementStyle":0},"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":"d5b9e4bd-622e-472c-acc8-390651e729e1","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"64887ac8-1437-40d9-883d-8da0930cadcc"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"39e86a78-31b6-4437-971a-9022c1e02638","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"23ecf3d0-04c6-4f4f-8603-0d18375047c2"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"cf6da00f-3b09-45f4-bbea-54ea13af52bc","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"f6da9b11-6e2d-4b27-b684-cf6098de9be0"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"9317bb4a-46c5-425c-8145-8d9e6a7b5c85","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"548017f0-8505-4289-a0fe-a323a2069de0"}}}],"id":"f70640ba-49d7-444c-9fea-28477fe90689","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"23cb0424-8541-4390-b906-22886e7c4916","savedPayload":{"position":{"x":43484.72851305459,"y":31777.876573021833},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"19a2b81d-7fa7-4415-9df7-1fb85d3f9205","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,"arrangementStyle":0},"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":"3640278c-97cc-42d5-be77-4115dc14aa36","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"954d99cc-080f-405a-9d07-62d88e517c91"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"139b3d3d-f485-4ece-b9d3-6dfaa2de2ad1","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"a9f369f7-a19c-45dd-a6cc-4c3782a720f6"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"688af7db-3fc2-41c3-ba0e-7ce4a67140f5","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"e2686a01-7488-4f78-ad0a-bdf0348c0e48"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"b723e850-7236-4d66-b32d-8931d06e5490","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"fb6a2ef0-7865-4525-a473-b191ef0a6412"}}}],"id":"ee74b6f4-ff37-476b-8ca2-b88b6de50724","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"844fbb20-b225-4f2d-846f-0874fa5ff953","savedPayload":{"position":{"x":43391.02991247641,"y":31839.99226140119},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"bf8784b0-db2f-4771-a480-64b0ffd25ac4","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,"arrangementStyle":0},"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":"4e044fc9-cf16-4883-8f0a-beb5a6c2dc52","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"52b20175-168d-4749-9aa0-ae59675ee226"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"20033a7d-4298-459b-b7c6-f46c0b57216f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"f50b7a84-541a-4bc7-a0fa-6c11ae94715a"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"ff7a88c3-5e17-49b9-baab-3831ab0c1c46","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"e215a14f-4bec-4535-87ed-2894619f5868"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"043fec5e-54e3-4d5c-943f-e82660df5fdf","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"a07d179a-c12b-4cbc-82eb-ef410d319ce4"}}}],"id":"e7a939d8-377e-4b00-bfcc-6554cf0a5856","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"077aa625-29a3-4605-8fbc-e5edbdacad1f","savedPayload":{"position":{"x":43284.22656791505,"y":31876.045500857595},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"4d72882f-1a90-4d4f-b978-5642ea54414e","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,"arrangementStyle":0},"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":"bdc8e91c-9d0b-4c3e-ae4f-2bfae0747ed3","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"bb6f914c-ae3d-4116-a946-5058bfcbb1f8"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"93e4bd73-1283-49af-b536-9a248ce908cd","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"cb8186b0-c616-4f6d-84fa-d64145f70b0d"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"835cf374-05ec-4203-84a0-3705aad55372","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"17252c98-8fa7-4600-87a5-60e66c021519"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"b9e48e66-3771-4769-a496-485e4e91fbe7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"6320b41e-3a07-4900-9359-8d023d73b301"}}}],"id":"5f1fe748-393b-4963-ae5e-a96953033571","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"212f0a50-8319-45cd-aaa8-493fd5ac9ed2","savedPayload":{"position":{"x":43156.82064724961,"y":31879.74004634101},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e48c2b63-e094-439d-aef5-31f0fab06154","savedPayload":{"position":{"x":12319.088187419122,"y":25882.85036358558},"targetPosition":{"x":12809.903295371514,"y":26373.610784042445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":2815,"y":985},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"Bittrex EOS/USDT","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2018-12-27T15:21:43.327Z\",\n \"toDate\": \"2019-01-07T11:44:16.179Z\",\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"908891af-5ca0-485d-8640-157197ab824a","savedPayload":{"position":{"x":43433.904964020134,"y":31090.08122008158},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 3564.2525485881924,\n \"maxValue\": 4094.0525485881926,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"76bcbf56-08bc-4abb-9f41-d810b699adaf","savedPayload":{"position":{"x":43522.58881136428,"y":31164.598399546274},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"24-hs\"}","id":"d642be4b-1f47-4f91-848f-eeaee9567e43","savedPayload":{"position":{"x":43586.959939711174,"y":31259.03996760349},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"5d0cfa2c-ef7a-4758-b0ca-d476f30258cd","savedPayload":{"position":{"x":44078.64999458624,"y":30934.89460131808},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"1a7ba5e5-ea1d-4d08-a6da-a124be2cf405"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"33b9a760-ef1f-4214-9fda-c12e368f3c65","savedPayload":{"position":{"x":44163.85123076828,"y":30946.443093510883},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"18b9684f-69ea-4768-a7e1-c48a90c70fee"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"25094fbb-7c92-4287-a969-2dff1490a68c","savedPayload":{"position":{"x":44241.83694393738,"y":30974.63232510084},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"7b5d970c-a09f-4fd9-a1bd-243d558d851b"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"976abac1-dd1d-4d98-9c4d-643c88724caa","savedPayload":{"position":{"x":44311.67549610568,"y":31016.49344919726},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"f4b99732-9571-467b-ace0-a52ac23231f2"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"7024d870-0b53-47e7-82a2-fb6733ce1639","savedPayload":{"position":{"x":44371.85960146544,"y":31070.221683842996},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"7e67d8a3-5ef5-4367-84dc-e9fa04a24237"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"3cd2455b-aed4-49b7-9b7a-2fa797c909f3","savedPayload":{"position":{"x":44420.81779483182,"y":31133.88297441118},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"08b3fb60-b2f3-4a24-8b6d-f686f860a8a9"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2e226de4-422e-4c91-8e8a-79b590b1ca34","savedPayload":{"position":{"x":44457.117328935085,"y":31205.319635425785},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"5cb33464-e8b8-4fa7-80f5-9706644af076"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6b715bcf-c19a-4224-a689-bcbf7b77280d","savedPayload":{"position":{"x":44479.64133141089,"y":31282.130540258924},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"a8d309f1-437b-4f03-abf2-d226535443d5"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"8858e677-a6cf-454c-983d-b37e2c818217","savedPayload":{"position":{"x":44487.61147096234,"y":31361.728456129385},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"8d30954e-e8cb-4422-9936-b3db8eeb2230"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"28d7ab9e-000d-4169-9694-8e20cb3045b8","savedPayload":{"position":{"x":44480.78341149639,"y":31441.3959689604},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"0b7ef0ae-a553-4fb2-b48a-4c8f420ad664"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"7acefd12-8ca1-4a6d-9526-db4e190c6cd6","savedPayload":{"position":{"x":44459.48592250235,"y":31518.457632189642},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"402b3d3f-7860-4dd8-8d35-d514c1e1dd04"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"15296cf5-6296-44b2-aaa8-67501ef388fa","savedPayload":{"position":{"x":44424.41129890276,"y":31590.302021321455},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"93116bf3-566d-473c-8778-ab6b2f273b14"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"67d6a2de-8947-42ee-8679-d1b9af12e98c","savedPayload":{"position":{"x":44376.75954564685,"y":31654.50449366559},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"cacef726-dff8-4943-a17f-7d8bdb4b9597"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"079012a2-d0f0-4ea3-bfbb-2adefda1dc8d","savedPayload":{"position":{"x":44318.14175549443,"y":31708.891385093266},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"8f495edb-4a00-4bad-a2cf-7bd33dcc3d74"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"a36b02be-1d54-4e66-9b2f-c03d9ac484b4","savedPayload":{"position":{"x":44250.60221948984,"y":31751.772743890055},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"1843ab42-2d74-4473-8059-cb27a5945383"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"3103f44e-55e4-4684-8027-2531ac56007a","savedPayload":{"position":{"x":44153.02320691994,"y":31784.13904467631},"targetPosition":{"x":44141.821764465945,"y":31355.229987239374},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"4355b685-22c8-4117-bde8-a24bde773d43"}}}],"id":"86d68c1e-98a6-4268-9e92-1fe9ecbafb1c","savedPayload":{"position":{"x":44141.821764465945,"y":31355.229987239374},"targetPosition":{"x":43626.31800703183,"y":31407.414884109556},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"d18c01b8-e235-476b-ab3c-f7f3d4928379","savedPayload":{"position":{"x":43623.85978187672,"y":31362.647150527082},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 5882.665921348062,\n \"maxValue\": 14786.687185123053,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"f7be0c10-0aaf-419c-985d-95e8b377493d","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,"arrangementStyle":0},"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":"807e1fe8-d7d1-4bde-aa0a-f08650eced60","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"ba417f39-c1ca-4735-8652-aa1759d0952b"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"c0974562-4741-42c1-924a-016667cca160","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"116deec7-9455-4e1a-a310-b4b9249e0abd","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"cbca24a3-81d0-4057-b560-87de2d1f6c23","savedPayload":{"position":{"x":43633.74577614054,"y":31475.276430635626},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": -0.9280039115022607,\n \"maxValue\": 3.0719960884977393,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"b15249f7-01bd-43f3-9517-9e8d13f19b8e","savedPayload":{"position":{"x":43911.24885028547,"y":31610.221317602256},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"8b651242-773c-4690-a133-83ee981615e3","savedPayload":{"position":{"x":44079.22692482198,"y":31836.109592766257},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"8dd768bd-c47c-4bca-9a0a-744ce3c5cbaf"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"872f6e7f-fdc2-402c-b815-61c7f3bde335","savedPayload":{"position":{"x":44017.101529873595,"y":31929.337889021248},"targetPosition":{"x":43875.02284358463,"y":31767.22077825714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"bfc6057a-19d3-498c-bcf4-80c07ade8d94"}}}],"id":"06eeff0f-5805-47bd-9db4-f411adb8b5a6","savedPayload":{"position":{"x":43875.02284358463,"y":31767.22077825714},"targetPosition":{"x":43610.47458913771,"y":31590.810656481015},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"33f88961-5b0b-46ac-a6ea-ca07d40d3830","savedPayload":{"position":{"x":43611.43180799584,"y":31591.37193734411},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": -0.9280039115022607,\n \"maxValue\": 3.0719960884977393,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"025ea63c-deec-4a03-bd3b-97bfb88b4489","savedPayload":{"position":{"x":43840.620290316496,"y":31789.82237029658},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"758fcd4c-a3ac-4083-807f-ecba6df06923","savedPayload":{"position":{"x":43963.892899882354,"y":31948.760513223307},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"6a4acfa9-3272-4d9c-acda-db0965821b1b"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e2b5eaff-7c47-4e28-9055-fbe300a655e7","savedPayload":{"position":{"x":43920.721667853606,"y":32029.92468150603},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"56953a9e-d54f-4d93-99df-3aee612b4e87"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"263200b6-46f7-4996-99c7-abb39ca01dc3","savedPayload":{"position":{"x":43853.974112885124,"y":32090.426818984488},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"50f3059d-175c-429f-ba3f-92e375789894"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"065576a1-8faf-4b44-b6ab-6f133c4023d4","savedPayload":{"position":{"x":43757.20500332351,"y":32127.063274152384},"targetPosition":{"x":43767.25622614087,"y":31932.288004103884},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"0022476c-d823-4277-9baa-0528a23eadd1"}}}],"id":"7bb2b492-a02b-4403-ab1e-f1e52ba41953","savedPayload":{"position":{"x":43767.25622614087,"y":31932.288004103884},"targetPosition":{"x":43558.71007204624,"y":31694.11687469478},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"9f6704ab-2ebb-45de-8fc5-9300e24b967b","savedPayload":{"position":{"x":43559.23277912925,"y":31694.525566454333},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"a7f74791-35df-49f1-879b-eac9e59bb599","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,"arrangementStyle":0},"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":"b0826a2d-e587-408c-96e4-62856fc14b0c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"7152bc29-ba4a-4310-ab9b-1e2112110e6a"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"1ab3c833-6948-4d43-a77a-55df079c626a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"d165a983-d5db-48b1-8486-ab2c001b436a"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"c62fae3b-4278-4fad-b631-6d349322701c","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"8451dc0b-260a-48d1-b500-2932a330ea1c"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"038fd433-ab00-4350-bb1c-541d223044bb","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"7795d7ee-a935-4d5f-bb9b-01d9c9400d0d"}}}],"id":"fec6163f-b357-4e90-a86f-dcedacc5ee56","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"24f776fa-4314-47e1-b6fb-174e7797d673","savedPayload":{"position":{"x":43484.72851305459,"y":31777.876573021833},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"4a3e2c9a-d57b-44eb-8416-b4ec741ca473","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,"arrangementStyle":0},"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":"6f2e326e-6540-4338-841f-76c2c8bf0ca7","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"62080b2d-34fe-4a3e-913a-6ea9a4540295"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"cc17a688-90f6-4915-a082-0067d8a7203a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"0bdd56c7-d6d5-4ef6-a23c-4eb47da0b75e"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"97d7ce88-18ea-4230-a16e-d95a2409f451","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"73a267bb-5acf-4d45-8de6-da8ad2db1c44"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"06f46033-fb61-49d2-bf65-2cde56893ad1","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"b9e87995-fa8d-4e19-9a47-4840ab24abb8"}}}],"id":"cf5c961e-04cb-4b6f-a4c1-f6b0e155cea2","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"ea6fde1b-336d-440a-8cfe-b66757087027","savedPayload":{"position":{"x":43391.02991247641,"y":31839.99226140119},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"4ce420fb-adb9-4cea-8680-7ba103263943","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,"arrangementStyle":0},"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":"14c6f281-e2f8-4c19-abce-295b747ece22","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"075270ef-6ad7-4e1f-94d5-4f4d5c6fe4bc"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"f52ad1cc-d2a3-42da-867d-4fd880afe93f","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"db45c52f-53be-4dd7-84c4-ce06ef0b43c4"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"67ccfdc3-f5d6-4390-8198-62fa931c2828","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"61c18219-e40b-4622-906f-847bde6657b4"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"bb527bfb-e37a-4f7b-a778-8ca37e138aab","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"2f82d9d9-59fc-42db-8de5-878108982e60"}}}],"id":"1880e8fa-3ca9-4b5d-aa96-2a9034945d5d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"0945fcbf-a640-4274-a259-1b4906fe3d52","savedPayload":{"position":{"x":43284.22656791505,"y":31876.045500857595},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"ef9082bb-0919-4da5-9b39-dbe7b3dfb0df","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,"arrangementStyle":0},"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":"02c97550-dd98-4cc8-ac05-d3069f1b8401","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"fbedd030-2354-498e-81f6-03dc718d5cbc"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"fa9aec98-59ce-4e7f-afe9-5579aae6b116","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"6003c37a-60fd-4693-9614-077ef44b22b3"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"c2a2af8d-9cee-43ea-b79d-c2baee718c7e","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"47f72108-a7cf-454c-83df-3d42f59552d4"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"b76be29b-1776-436c-a5ae-f0c7efee801a","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"3b3ac1dc-3bd6-4724-8056-0a9988ee1b1f"}}}],"id":"740d71e2-60b2-43c4-8e52-df729448ab4d","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,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"165ef98d-e09c-4b91-a846-8f13f18ad04a","savedPayload":{"position":{"x":43156.82064724961,"y":31879.74004634101},"targetPosition":{"x":43200.219291964946,"y":31451.072136982963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7c1f5957-039d-4fac-8328-f338204fa614","savedPayload":{"position":{"x":12544.617754214514,"y":25732.225980454044},"targetPosition":{"x":12809.903295371514,"y":26373.610784042445},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":2815,"y":1195},"width":240,"height":113.625,"radius":0}}}],"id":"64fa2a31-21ea-4b56-a625-dc4082876a89","savedPayload":{"position":{"x":12809.903295371514,"y":26373.610784042445},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":0,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"t"}}},{"type":"Dashboard","name":"WHB Strategy","timeMachines":[{"type":"Time Machine","name":"WHB Trade # 1","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2019-06-01T15:49:10.144Z\",\n \"toDate\": \"2019-06-15T06:52:48.924Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"60b9655b-80e9-460b-9897-c726e90cb985","savedPayload":{"position":{"x":10359.356252981272,"y":25674.42431963708},"targetPosition":{"x":10609.914851565229,"y":24985.38184564623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 6646.022766089068,\n \"maxValue\": 8969.062905587863,\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"0a6cb22b-71b9-4ab4-8719-cde52179b1d2","savedPayload":{"position":{"x":10138.576414811512,"y":25547.060726658532},"targetPosition":{"x":10609.914851565229,"y":24985.38184564623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"06e3d06c-b7fc-4789-ab1a-a32f917c48af","savedPayload":{"position":{"x":9974.822467690223,"y":25351.933153677193},"targetPosition":{"x":10609.914851565229,"y":24985.38184564623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"c5ec7558-ea20-4010-82dc-d49b68f86e76","savedPayload":{"position":{"x":41619.253081990486,"y":30247.26841376352},"targetPosition":{"x":41682.42485187019,"y":30667.603799684814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"431ea989-085b-40ae-aa2a-d371d7cb68c6"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"576555fc-56cd-44cc-bfa0-90363f10573a","savedPayload":{"position":{"x":41704.45431817253,"y":30258.816905956322},"targetPosition":{"x":41682.42485187019,"y":30667.603799684814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"ddd34b26-4fa8-4d7c-b76d-f671c92a6181"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"de711144-98f3-4061-b24f-99bf63819e41","savedPayload":{"position":{"x":41782.440031341626,"y":30287.00613754628},"targetPosition":{"x":41682.42485187019,"y":30667.603799684814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"683e24f7-010a-412e-ba21-f280e63a0f1d"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"858d20c6-55b2-45d8-bed8-251003bb6e3e","savedPayload":{"position":{"x":41852.27858350993,"y":30328.8672616427},"targetPosition":{"x":41682.42485187019,"y":30667.603799684814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"210b7e14-a6f0-4c56-b5e4-108f57ebb4c6"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"4a401759-63e9-4904-bcde-8ea82c7d4378","savedPayload":{"position":{"x":41912.46268886969,"y":30382.595496288435},"targetPosition":{"x":41682.42485187019,"y":30667.603799684814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"303572ad-cc90-46c9-8620-8454d557897b"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6f94380d-4624-4e29-80be-4590d4882405","savedPayload":{"position":{"x":41961.42088223607,"y":30446.25678685662},"targetPosition":{"x":41682.42485187019,"y":30667.603799684814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"10142313-9ac8-4f4c-8105-88aec7bb7ce9"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"469bdc73-b895-48e0-858d-e845f3d8fab7","savedPayload":{"position":{"x":41997.72041633933,"y":30517.693447871225},"targetPosition":{"x":41682.42485187019,"y":30667.603799684814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"afbf02cf-97a6-4dc0-a3d5-95f29ba7781f"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"88dfc29c-5f28-4b4e-a5a2-7730256fe399","savedPayload":{"position":{"x":42020.244418815135,"y":30594.504352704364},"targetPosition":{"x":41682.42485187019,"y":30667.603799684814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"80ed873e-8017-45ec-b211-fc4604f5aaf6"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e78ce0fc-9b37-45be-8274-a9a57966b1c0","savedPayload":{"position":{"x":42028.21455836659,"y":30674.102268574825},"targetPosition":{"x":41682.42485187019,"y":30667.603799684814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"6635502b-5366-430e-8dc1-4edaa21c2a7f"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"8c5f9a1d-05bb-4e86-a453-0376318542ce","savedPayload":{"position":{"x":42021.38649890064,"y":30753.76978140584},"targetPosition":{"x":41682.42485187019,"y":30667.603799684814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"3ebce074-9080-426a-baf9-61c1a04fc05b"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"05673bba-9579-46cc-95ec-66fd1e20c900","savedPayload":{"position":{"x":42000.089009906595,"y":30830.83144463508},"targetPosition":{"x":41682.42485187019,"y":30667.603799684814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"c424ba00-bbe0-4ae9-830a-3d2aa6fcaf4d"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"a6f789c5-80f2-4715-bee3-1c5a6132cd98","savedPayload":{"position":{"x":41965.01438630701,"y":30902.675833766894},"targetPosition":{"x":41682.42485187019,"y":30667.603799684814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"3d048c1f-d45a-442a-9d44-362ad7770bb6"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"c443dc3e-4bf2-4cbd-88c4-379e234e950e","savedPayload":{"position":{"x":41917.362633051096,"y":30966.87830611103},"targetPosition":{"x":41682.42485187019,"y":30667.603799684814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"c92d9454-d5fb-4954-a188-367dcd697af6"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"8a6602e3-2825-4a15-9932-1416e4b8637f","savedPayload":{"position":{"x":41858.744842898675,"y":31021.265197538705},"targetPosition":{"x":41682.42485187019,"y":30667.603799684814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"4810638a-c137-4df6-8016-c8a2540dc9e7"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"9acdc2f9-b273-409b-b9ab-e337de60afc5","savedPayload":{"position":{"x":41791.20530689409,"y":31064.146556335494},"targetPosition":{"x":41682.42485187019,"y":30667.603799684814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"9c1f6b84-409e-4257-92ea-a9481d3509cd"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"2ae5373d-2a04-485f-a1fe-1521c217f5fa","savedPayload":{"position":{"x":41693.62629432419,"y":31096.51285712175},"targetPosition":{"x":41682.42485187019,"y":30667.603799684814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"dcd46168-1662-42c5-be91-f489d9a55833"}}}],"id":"383e37d4-a4d5-4244-82e3-404c5291edb4","savedPayload":{"position":{"x":41682.42485187019,"y":30667.603799684814},"targetPosition":{"x":41166.921094436075,"y":30719.788696554995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":190,"radius":0}}},"id":"a5fb32a2-bd01-422f-88ae-810438c5f30b","savedPayload":{"position":{"x":9887.70413905119,"y":25112.573772181844},"targetPosition":{"x":10609.914851565229,"y":24985.38184564623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 34756.792815043074,\n \"maxValue\": 43660.81407881806,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"f069e936-8b9d-4b5f-8b50-67abf486ec5a","savedPayload":{"position":{"x":41496.18563238872,"y":30817.373681469133},"targetPosition":{"x":41171.04996999161,"y":30843.001956974873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"a73f34db-2639-44c3-93d2-291c851aa6db","savedPayload":{"position":{"x":41703.52919652283,"y":31035.8134266153},"targetPosition":{"x":41491.92030105298,"y":30997.55198833813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"cc76acbb-9fd2-43f0-95de-dc78e1aaa2b5"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"4cdc82a2-f3e7-48cb-9415-1cdcac2dc729","savedPayload":{"position":{"x":41654.99646899411,"y":31137.57578463762},"targetPosition":{"x":41491.92030105298,"y":30997.55198833813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"1bf116d8-b258-42e3-a427-3c6df8992c14","savedPayload":{"position":{"x":41491.92030105298,"y":30997.55198833813},"targetPosition":{"x":41171.04996999161,"y":30843.001956974873},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"11425cdd-2549-4f72-a8d5-1c64d53ede8d","savedPayload":{"position":{"x":9887.712576533077,"y":24858.10950522817},"targetPosition":{"x":10609.914851565229,"y":24985.38184564623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 12.043270993766054,\n \"maxValue\": 16.043270993766054,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"17361b5f-ab75-4d73-9c88-e756e3abfe27","savedPayload":{"position":{"x":41451.85193768972,"y":30922.595130047695},"targetPosition":{"x":41151.07767654196,"y":30903.184468926454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"bc3f16df-e1a7-4490-8caf-b7b7f24bcd95","savedPayload":{"position":{"x":41619.83001222623,"y":31148.483405211697},"targetPosition":{"x":41415.62593098888,"y":31079.594590702578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"302bfaf2-6466-4aa0-9924-33999366b774"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"96a50598-222e-4cbf-b0f2-e4d2a92db57d","savedPayload":{"position":{"x":41557.70461727784,"y":31241.711701466687},"targetPosition":{"x":41415.62593098888,"y":31079.594590702578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"f6868e09-2559-4fac-9631-54cf1a867c8a"}}}],"id":"2104de94-b759-4902-a87d-1892ccf29a9f","savedPayload":{"position":{"x":41415.62593098888,"y":31079.594590702578},"targetPosition":{"x":41151.07767654196,"y":30903.184468926454},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"4d9b57a7-e96e-4aa0-bf68-5d8b76340bf2","savedPayload":{"position":{"x":9974.848435218955,"y":24618.747834670983},"targetPosition":{"x":10609.914851565229,"y":24985.38184564623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 12.043270993766054,\n \"maxValue\": 16.043270993766054,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"7f2d54bb-2ac9-4464-ab5e-7e6da99895f9","savedPayload":{"position":{"x":41381.223377720744,"y":31102.19618274202},"targetPosition":{"x":41099.31315945049,"y":31006.49068714022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e154e929-40a7-471f-af63-0246b01044b1","savedPayload":{"position":{"x":41504.4959872866,"y":31261.134325668747},"targetPosition":{"x":41307.859313545116,"y":31244.661816549324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"be7e47ef-a530-4dc1-bf59-b731f1e49fa1"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"3327049c-878e-4d89-ab16-510e6a74a033","savedPayload":{"position":{"x":41461.324755257854,"y":31342.298493951468},"targetPosition":{"x":41307.859313545116,"y":31244.661816549324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"0333bb7c-5101-441b-be9a-d9ff1a84f116"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"0b54c245-1f5a-4a6a-b37d-3ec8a701b3eb","savedPayload":{"position":{"x":41394.57720028937,"y":31402.800631429927},"targetPosition":{"x":41307.859313545116,"y":31244.661816549324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"913f8079-b038-444a-ad43-465fa0443c04"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"ccd9654e-9adb-494f-a45f-bc87fdd00ea0","savedPayload":{"position":{"x":41297.808090727754,"y":31439.437086597824},"targetPosition":{"x":41307.859313545116,"y":31244.661816549324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"bba7e1ab-5bca-44c0-a8aa-cd9570b338f3"}}}],"id":"47e8a8cd-c18f-41af-9cab-cb0b8eced0fd","savedPayload":{"position":{"x":41307.859313545116,"y":31244.661816549324},"targetPosition":{"x":41099.31315945049,"y":31006.49068714022},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0}}},"id":"a173030c-43e9-4a84-a446-e64d36d0a698","savedPayload":{"position":{"x":10138.62438149418,"y":24423.611706440726},"targetPosition":{"x":10609.914851565229,"y":24985.38184564623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"efbf41a3-6c30-4e8e-9a26-f883cd17e56e","savedPayload":{"position":{"x":10145.349578309117,"y":23991.883017111642},"targetPosition":{"x":10359.55578019266,"y":24296.24471427881},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"on\",\n \"showPanels\": true\n}","id":"d510f25d-f928-4368-9218-0a01e0d5aece","savedPayload":{"position":{"x":10133.942985817092,"y":23619.66219861841},"targetPosition":{"x":10328.253782267264,"y":23931.283225084644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"c53d8a77-b1d4-446c-9bef-8458b832c5e5"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"1fe01a4b-8f15-439f-b5e9-d99d1a782506","savedPayload":{"position":{"x":10238.72736905072,"y":23575.09359986404},"targetPosition":{"x":10328.253782267264,"y":23931.283225084644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"0f1e10be-0da8-4d10-93d7-35e407579cb0"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"on\"\n}","id":"bab6d877-cdce-4c62-a65b-bebab4e4fbaa","savedPayload":{"position":{"x":10353.620223716207,"y":23565.385509277778},"targetPosition":{"x":10328.253782267264,"y":23931.283225084644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"a85fc58e-5b58-449b-b733-c3a623e1d5d4"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"on\"\n}","id":"28e1a23b-7f8c-45ac-8c24-7613b3bcf7ad","savedPayload":{"position":{"x":10466.816304630642,"y":23592.117250888674},"targetPosition":{"x":10328.253782267264,"y":23931.283225084644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"302de277-a428-4cc0-8757-b2ef7de6040b"}}}],"id":"3ae21f28-1805-4a8a-b652-c1d43ac3cd9a","savedPayload":{"position":{"x":10328.253782267264,"y":23931.283225084644},"targetPosition":{"x":10359.55578019266,"y":24296.24471427881},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":330,"radius":0}}},"id":"22096948-735a-4343-93b7-b2a4438a7ce4","savedPayload":{"position":{"x":10359.426618969681,"y":24296.234235873242},"targetPosition":{"x":10609.914851565229,"y":24985.38184564623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"55e42b32-1612-4a94-a50b-0761b6b61ba6","savedPayload":{"position":{"x":11978.228715388022,"y":25352.03491076316},"targetPosition":{"x":11343.062891749762,"y":24985.40702724926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":2115,"y":-155},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"WHB Trade # 2","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2019-06-29T00:23:29.487Z\",\n \"toDate\": \"2019-07-04T14:21:20.219Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"556fe84a-f9e5-4ed9-b97b-93f5836b64b3","savedPayload":{"position":{"x":10442.32597310643,"y":25366.372805921732},"targetPosition":{"x":10692.884571690387,"y":24677.33033193088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 9339.556714708064,\n \"maxValue\": 12684.734515586331,\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"d184f268-52a6-4b85-95e2-2cf22adf9bbd","savedPayload":{"position":{"x":10221.54613493667,"y":25239.009212943183},"targetPosition":{"x":10692.884571690387,"y":24677.33033193088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"2adb6613-bd4a-4f50-9d83-fc1b71c2a527","savedPayload":{"position":{"x":10057.792187815381,"y":25043.881639961844},"targetPosition":{"x":10692.884571690387,"y":24677.33033193088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"a432548b-0f0c-4cb4-89c4-cddb8d950f0c","savedPayload":{"position":{"x":41702.22280211565,"y":29939.21690004817},"targetPosition":{"x":41765.39457199535,"y":30359.552285969465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"431ea989-085b-40ae-aa2a-d371d7cb68c6"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"3aad2fd8-ae91-4a32-97d5-3663aef25191","savedPayload":{"position":{"x":41787.424038297686,"y":29950.765392240974},"targetPosition":{"x":41765.39457199535,"y":30359.552285969465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"ddd34b26-4fa8-4d7c-b76d-f671c92a6181"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"5930d0d3-c482-4c23-b695-33c43a397ad1","savedPayload":{"position":{"x":41865.40975146678,"y":29978.95462383093},"targetPosition":{"x":41765.39457199535,"y":30359.552285969465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"683e24f7-010a-412e-ba21-f280e63a0f1d"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"66d4ec51-20eb-4265-b291-b5bb8041804e","savedPayload":{"position":{"x":41935.24830363509,"y":30020.81574792735},"targetPosition":{"x":41765.39457199535,"y":30359.552285969465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"210b7e14-a6f0-4c56-b5e4-108f57ebb4c6"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"3b685f95-c247-4fcd-9166-9f388da8c1e9","savedPayload":{"position":{"x":41995.43240899485,"y":30074.543982573086},"targetPosition":{"x":41765.39457199535,"y":30359.552285969465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"303572ad-cc90-46c9-8620-8454d557897b"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"184fbb52-01e8-40e9-9e88-4fd3bf67de4e","savedPayload":{"position":{"x":42044.39060236122,"y":30138.20527314127},"targetPosition":{"x":41765.39457199535,"y":30359.552285969465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"10142313-9ac8-4f4c-8105-88aec7bb7ce9"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"af3708a7-a254-426e-b696-b28d8c65a24b","savedPayload":{"position":{"x":42080.69013646449,"y":30209.641934155876},"targetPosition":{"x":41765.39457199535,"y":30359.552285969465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"afbf02cf-97a6-4dc0-a3d5-95f29ba7781f"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2ec1a119-4bb7-4707-946f-1f438451cbb4","savedPayload":{"position":{"x":42103.2141389403,"y":30286.452838989015},"targetPosition":{"x":41765.39457199535,"y":30359.552285969465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"80ed873e-8017-45ec-b211-fc4604f5aaf6"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"c7a6d6af-7e9b-457a-b1eb-01bc90f5c1ed","savedPayload":{"position":{"x":42111.18427849175,"y":30366.050754859476},"targetPosition":{"x":41765.39457199535,"y":30359.552285969465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"6635502b-5366-430e-8dc1-4edaa21c2a7f"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"40741092-d7ab-4a44-a467-219a93bec5a2","savedPayload":{"position":{"x":42104.356219025794,"y":30445.718267690492},"targetPosition":{"x":41765.39457199535,"y":30359.552285969465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"3ebce074-9080-426a-baf9-61c1a04fc05b"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"a2f1c6b8-1af9-4d83-856e-e4236944752d","savedPayload":{"position":{"x":42083.05873003176,"y":30522.779930919733},"targetPosition":{"x":41765.39457199535,"y":30359.552285969465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"c424ba00-bbe0-4ae9-830a-3d2aa6fcaf4d"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"bd3b8d83-7b94-4597-91b7-f88e940e1300","savedPayload":{"position":{"x":42047.984106432166,"y":30594.624320051546},"targetPosition":{"x":41765.39457199535,"y":30359.552285969465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"3d048c1f-d45a-442a-9d44-362ad7770bb6"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"c7fc0ad1-e2f4-417d-8224-737570d55abb","savedPayload":{"position":{"x":42000.33235317626,"y":30658.82679239568},"targetPosition":{"x":41765.39457199535,"y":30359.552285969465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"c92d9454-d5fb-4954-a188-367dcd697af6"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"88223fd9-7ea1-45b9-aabc-e1e5baa65b57","savedPayload":{"position":{"x":41941.71456302384,"y":30713.213683823356},"targetPosition":{"x":41765.39457199535,"y":30359.552285969465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"4810638a-c137-4df6-8016-c8a2540dc9e7"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"efcc1bfb-53f3-4f79-90d0-b04790f2dbd2","savedPayload":{"position":{"x":41874.17502701924,"y":30756.095042620145},"targetPosition":{"x":41765.39457199535,"y":30359.552285969465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"9c1f6b84-409e-4257-92ea-a9481d3509cd"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"4118b2f0-8a7e-482c-880b-99d9ea395177","savedPayload":{"position":{"x":41776.596014449344,"y":30788.4613434064},"targetPosition":{"x":41765.39457199535,"y":30359.552285969465},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"dcd46168-1662-42c5-be91-f489d9a55833"}}}],"id":"40429e23-5cab-4fc5-92b2-b1ad52fba04c","savedPayload":{"position":{"x":41765.39457199535,"y":30359.552285969465},"targetPosition":{"x":41249.89081456124,"y":30411.737182839646},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":190,"radius":0}}},"id":"87ad7dfd-4553-4da0-8e5d-9bee86955a5d","savedPayload":{"position":{"x":9970.673859176348,"y":24804.522258466495},"targetPosition":{"x":10692.884571690387,"y":24677.33033193088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 54861.31314073082,\n \"maxValue\": 63765.334404505804,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"77886c1e-7e8e-41a5-8167-f8c7ca5a5434","savedPayload":{"position":{"x":41579.15535251387,"y":30509.322167753784},"targetPosition":{"x":41254.019690116766,"y":30534.950443259524},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"357f571d-e369-4b18-86b8-5ce1da882aac","savedPayload":{"position":{"x":41786.49891664799,"y":30727.76191289995},"targetPosition":{"x":41574.890021178144,"y":30689.500474622782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"cc76acbb-9fd2-43f0-95de-dc78e1aaa2b5"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"6e0e560c-e7b6-40b8-bb09-743640b2dd51","savedPayload":{"position":{"x":41737.966189119266,"y":30829.52427092227},"targetPosition":{"x":41574.890021178144,"y":30689.500474622782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"eab0079b-6264-4d3b-b51c-dfdd1bab88de","savedPayload":{"position":{"x":41574.890021178144,"y":30689.500474622782},"targetPosition":{"x":41254.019690116766,"y":30534.950443259524},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"d1a1034b-b0ed-4a58-8622-e929dd94e570","savedPayload":{"position":{"x":9970.682296658235,"y":24550.057991512822},"targetPosition":{"x":10692.884571690387,"y":24677.33033193088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 21.074929715193743,\n \"maxValue\": 25.074929715193743,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"10103a61-b710-4508-b41f-8346b0b00988","savedPayload":{"position":{"x":41534.82165781487,"y":30614.543616332347},"targetPosition":{"x":41234.04739666711,"y":30595.132955211106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"31c54e68-7ea3-4077-90a4-338b1936b721","savedPayload":{"position":{"x":41702.799732351385,"y":30840.431891496348},"targetPosition":{"x":41498.59565111404,"y":30771.54307698723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"302bfaf2-6466-4aa0-9924-33999366b774"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"4aede7f2-d39e-4535-a3bc-609d62e22c7f","savedPayload":{"position":{"x":41640.674337403005,"y":30933.66018775134},"targetPosition":{"x":41498.59565111404,"y":30771.54307698723},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"f6868e09-2559-4fac-9631-54cf1a867c8a"}}}],"id":"15537f7c-ad87-4616-9d35-e8352966985b","savedPayload":{"position":{"x":41498.59565111404,"y":30771.54307698723},"targetPosition":{"x":41234.04739666711,"y":30595.132955211106},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"ad6450e3-c118-4927-b64d-c82873e166dc","savedPayload":{"position":{"x":10057.818155344114,"y":24310.696320955634},"targetPosition":{"x":10692.884571690387,"y":24677.33033193088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 21.074929715193743,\n \"maxValue\": 25.074929715193743,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"8c633358-6c16-4342-b1da-88bcefbb4f5e","savedPayload":{"position":{"x":41464.1930978459,"y":30794.14466902667},"targetPosition":{"x":41182.28287957565,"y":30698.43917342487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9426c9e4-2463-40d4-8681-f62bfc7a9a02","savedPayload":{"position":{"x":41587.46570741176,"y":30953.082811953398},"targetPosition":{"x":41390.82903367028,"y":30936.610302833975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"be7e47ef-a530-4dc1-bf59-b731f1e49fa1"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"36929842-6171-4660-81f6-87155a53e33a","savedPayload":{"position":{"x":41544.29447538301,"y":31034.24698023612},"targetPosition":{"x":41390.82903367028,"y":30936.610302833975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"0333bb7c-5101-441b-be9a-d9ff1a84f116"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"5f28e341-c4ac-451d-b167-614eec7a7146","savedPayload":{"position":{"x":41477.546920414534,"y":31094.74911771458},"targetPosition":{"x":41390.82903367028,"y":30936.610302833975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"913f8079-b038-444a-ad43-465fa0443c04"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"168be5c6-da5d-4c17-8fdf-7503acece7f2","savedPayload":{"position":{"x":41380.77781085292,"y":31131.385572882475},"targetPosition":{"x":41390.82903367028,"y":30936.610302833975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"bba7e1ab-5bca-44c0-a8aa-cd9570b338f3"}}}],"id":"40a320a3-94b8-4d4c-9d23-0a4b1390aaa0","savedPayload":{"position":{"x":41390.82903367028,"y":30936.610302833975},"targetPosition":{"x":41182.28287957565,"y":30698.43917342487},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0}}},"id":"78f7c9d9-f9f4-469a-a650-2a87a2241da2","savedPayload":{"position":{"x":10221.59410161934,"y":24115.560192725377},"targetPosition":{"x":10692.884571690387,"y":24677.33033193088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"5fbe8305-9a0c-4a69-9e26-0ed3d4a3a4ad","savedPayload":{"position":{"x":10228.319298434275,"y":23683.831503396294},"targetPosition":{"x":10442.525500317819,"y":23988.193200563463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"on\",\n \"showPanels\": true\n}","id":"ed389237-50d9-4956-9189-785959e9e896","savedPayload":{"position":{"x":10216.91270594225,"y":23311.610684903062},"targetPosition":{"x":10411.223502392422,"y":23623.231711369295},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"c53d8a77-b1d4-446c-9bef-8458b832c5e5"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"31c69760-fcd6-42eb-ad03-a6f02b06c7c1","savedPayload":{"position":{"x":10321.69708917588,"y":23267.042086148693},"targetPosition":{"x":10411.223502392422,"y":23623.231711369295},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"0f1e10be-0da8-4d10-93d7-35e407579cb0"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"on\"\n}","id":"5724386e-9794-4554-8bd9-4de5ec196505","savedPayload":{"position":{"x":10436.589943841365,"y":23257.33399556243},"targetPosition":{"x":10411.223502392422,"y":23623.231711369295},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"a85fc58e-5b58-449b-b733-c3a623e1d5d4"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"on\"\n}","id":"ce30f467-b72d-4817-b9a4-6e4f6f7d9180","savedPayload":{"position":{"x":10549.7860247558,"y":23284.065737173325},"targetPosition":{"x":10411.223502392422,"y":23623.231711369295},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"302de277-a428-4cc0-8757-b2ef7de6040b"}}}],"id":"7650fe12-06fb-43d0-9ab0-e3ee123e3f3f","savedPayload":{"position":{"x":10411.223502392422,"y":23623.231711369295},"targetPosition":{"x":10442.525500317819,"y":23988.193200563463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":330,"radius":0}}},"id":"d50758f6-a343-4cb1-80b7-c63f1ffa05d8","savedPayload":{"position":{"x":10442.39633909484,"y":23988.182722157893},"targetPosition":{"x":10692.884571690387,"y":24677.33033193088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"889e5548-1694-4573-b8c1-26e3805c458b","savedPayload":{"position":{"x":11709.726918265866,"y":25620.649482971407},"targetPosition":{"x":11343.062891749762,"y":24985.40702724926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":2465,"y":-155},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"WHB Trade # 3","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2019-07-10T02:47:04.920Z\",\n \"toDate\": \"2019-07-16T19:32:29.798Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"bd61b641-7889-49aa-b2be-11e055d216db","savedPayload":{"position":{"x":10807.680184095218,"y":25468.29018011946},"targetPosition":{"x":11058.238782679175,"y":24779.247706128608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 9482.670298659585,\n \"maxValue\": 13496.883659713507,\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"a4f66448-45cf-465f-87e1-bc365864a96c","savedPayload":{"position":{"x":10586.900345925458,"y":25340.92658714091},"targetPosition":{"x":11058.238782679175,"y":24779.247706128608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"275f89d6-7d03-48f9-86f8-371df843ec87","savedPayload":{"position":{"x":10423.146398804169,"y":25145.799014159573},"targetPosition":{"x":11058.238782679175,"y":24779.247706128608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"59a33362-d19c-46fe-8d77-23bd76b1c247","savedPayload":{"position":{"x":42067.577013104434,"y":30041.1342742459},"targetPosition":{"x":42130.748782984134,"y":30461.469660167193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"431ea989-085b-40ae-aa2a-d371d7cb68c6"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"48ede532-704e-4238-bef4-935ba298be53","savedPayload":{"position":{"x":42152.77824928647,"y":30052.682766438702},"targetPosition":{"x":42130.748782984134,"y":30461.469660167193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"ddd34b26-4fa8-4d7c-b76d-f671c92a6181"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"1ab0495e-2ace-4608-9280-835900a1ac78","savedPayload":{"position":{"x":42230.76396245557,"y":30080.87199802866},"targetPosition":{"x":42130.748782984134,"y":30461.469660167193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"683e24f7-010a-412e-ba21-f280e63a0f1d"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"3a8037cd-ffff-4495-91a0-7a6e26ebea6d","savedPayload":{"position":{"x":42300.602514623875,"y":30122.73312212508},"targetPosition":{"x":42130.748782984134,"y":30461.469660167193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"210b7e14-a6f0-4c56-b5e4-108f57ebb4c6"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"000b9839-61b2-4d80-8399-e4923458294b","savedPayload":{"position":{"x":42360.786619983635,"y":30176.461356770815},"targetPosition":{"x":42130.748782984134,"y":30461.469660167193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"303572ad-cc90-46c9-8620-8454d557897b"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"b5c3d181-ff31-4944-ada3-01a3c9e25786","savedPayload":{"position":{"x":42409.74481335001,"y":30240.122647338998},"targetPosition":{"x":42130.748782984134,"y":30461.469660167193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"10142313-9ac8-4f4c-8105-88aec7bb7ce9"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6e5e92d6-ad1f-4668-b340-3e56db016fca","savedPayload":{"position":{"x":42446.04434745327,"y":30311.559308353604},"targetPosition":{"x":42130.748782984134,"y":30461.469660167193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"afbf02cf-97a6-4dc0-a3d5-95f29ba7781f"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"20c29117-b651-4f80-987f-858fb8203277","savedPayload":{"position":{"x":42468.56834992908,"y":30388.370213186743},"targetPosition":{"x":42130.748782984134,"y":30461.469660167193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"80ed873e-8017-45ec-b211-fc4604f5aaf6"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e0c53273-6610-46dc-84fe-4ff15b64b263","savedPayload":{"position":{"x":42476.53848948054,"y":30467.968129057204},"targetPosition":{"x":42130.748782984134,"y":30461.469660167193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"6635502b-5366-430e-8dc1-4edaa21c2a7f"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"de8df8ff-0fb7-43a4-b0a0-c7b2dd919beb","savedPayload":{"position":{"x":42469.71043001458,"y":30547.63564188822},"targetPosition":{"x":42130.748782984134,"y":30461.469660167193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"3ebce074-9080-426a-baf9-61c1a04fc05b"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"28ec5c51-1252-4b3f-9688-38cc59743fab","savedPayload":{"position":{"x":42448.41294102054,"y":30624.69730511746},"targetPosition":{"x":42130.748782984134,"y":30461.469660167193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"c424ba00-bbe0-4ae9-830a-3d2aa6fcaf4d"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"1b196fb6-f053-4043-996c-dedfefc6cc2d","savedPayload":{"position":{"x":42413.33831742095,"y":30696.541694249274},"targetPosition":{"x":42130.748782984134,"y":30461.469660167193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"3d048c1f-d45a-442a-9d44-362ad7770bb6"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"17d4bb47-5fd7-4a01-95c5-d075b46e972f","savedPayload":{"position":{"x":42365.686564165044,"y":30760.74416659341},"targetPosition":{"x":42130.748782984134,"y":30461.469660167193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"c92d9454-d5fb-4954-a188-367dcd697af6"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"020dfc80-ba7e-494a-9904-926834d8d48d","savedPayload":{"position":{"x":42307.06877401262,"y":30815.131058021085},"targetPosition":{"x":42130.748782984134,"y":30461.469660167193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"4810638a-c137-4df6-8016-c8a2540dc9e7"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"d1f7676a-a452-43da-99fb-135aaa36a334","savedPayload":{"position":{"x":42239.52923800803,"y":30858.012416817874},"targetPosition":{"x":42130.748782984134,"y":30461.469660167193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"9c1f6b84-409e-4257-92ea-a9481d3509cd"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"9428eeed-7461-48c0-8a97-63e6f3958ce7","savedPayload":{"position":{"x":42141.95022543813,"y":30890.37871760413},"targetPosition":{"x":42130.748782984134,"y":30461.469660167193},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"dcd46168-1662-42c5-be91-f489d9a55833"}}}],"id":"ab7cbc62-d4c5-43f1-9b68-816a9ac51b32","savedPayload":{"position":{"x":42130.748782984134,"y":30461.469660167193},"targetPosition":{"x":41615.24502555002,"y":30513.654557037375},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":190,"radius":0}}},"id":"65bb4086-e0a7-4100-ad56-45207fa3e9e3","savedPayload":{"position":{"x":10336.028070165135,"y":24906.439632664224},"targetPosition":{"x":11058.238782679175,"y":24779.247706128608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 60184.02625532456,\n \"maxValue\": 69088.04751909955,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"31533fd8-7d08-42ec-a529-1d898223d35d","savedPayload":{"position":{"x":41944.50956350266,"y":30611.239541951512},"targetPosition":{"x":41619.37390110555,"y":30636.867817457252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"aaf44091-6c7c-418a-9515-046fb54f8c14","savedPayload":{"position":{"x":42151.85312763678,"y":30829.67928709768},"targetPosition":{"x":41940.24423216693,"y":30791.41784882051},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"cc76acbb-9fd2-43f0-95de-dc78e1aaa2b5"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"913ba9d4-1e2f-466e-a1a8-2427cfa1ac85","savedPayload":{"position":{"x":42103.32040010805,"y":30931.441645119998},"targetPosition":{"x":41940.24423216693,"y":30791.41784882051},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"a89dcbc5-831c-4aee-8edf-eb65165f22b4","savedPayload":{"position":{"x":41940.24423216693,"y":30791.41784882051},"targetPosition":{"x":41619.37390110555,"y":30636.867817457252},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"3ca30063-9a32-4ffc-9d5c-e115f1c947dd","savedPayload":{"position":{"x":10336.036507647023,"y":24651.97536571055},"targetPosition":{"x":11058.238782679175,"y":24779.247706128608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 23.46607994132746,\n \"maxValue\": 27.46607994132746,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"8b3727a5-d114-4eda-9a31-e88748310801","savedPayload":{"position":{"x":41900.17586880366,"y":30716.460990530075},"targetPosition":{"x":41599.4016076559,"y":30697.050329408834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"b405d9c1-22fb-4992-b602-5743b985d1b6","savedPayload":{"position":{"x":42068.15394334017,"y":30942.349265694076},"targetPosition":{"x":41863.949862102825,"y":30873.460451184957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"302bfaf2-6466-4aa0-9924-33999366b774"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6022bd50-f72a-4ba5-8675-a368cf7840ff","savedPayload":{"position":{"x":42006.02854839179,"y":31035.577561949067},"targetPosition":{"x":41863.949862102825,"y":30873.460451184957},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"f6868e09-2559-4fac-9631-54cf1a867c8a"}}}],"id":"7e1b09b1-5985-4590-82c6-126644103054","savedPayload":{"position":{"x":41863.949862102825,"y":30873.460451184957},"targetPosition":{"x":41599.4016076559,"y":30697.050329408834},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"2cf065fd-f44f-4113-bc77-cdb379b643c7","savedPayload":{"position":{"x":10423.172366332901,"y":24412.613695153363},"targetPosition":{"x":11058.238782679175,"y":24779.247706128608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 23.46607994132746,\n \"maxValue\": 27.46607994132746,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"9ba05b15-4740-4781-a08e-9eb89541d6d6","savedPayload":{"position":{"x":41829.547308834684,"y":30896.0620432244},"targetPosition":{"x":41547.637090564436,"y":30800.3565476226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"d1475799-7285-4ac0-8fae-0c1a286945d5","savedPayload":{"position":{"x":41952.81991840054,"y":31055.000186151126},"targetPosition":{"x":41756.18324465906,"y":31038.527677031703},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"be7e47ef-a530-4dc1-bf59-b731f1e49fa1"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"fc459025-6b9a-4541-a8b3-8cd19b4d6673","savedPayload":{"position":{"x":41909.648686371795,"y":31136.164354433848},"targetPosition":{"x":41756.18324465906,"y":31038.527677031703},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"0333bb7c-5101-441b-be9a-d9ff1a84f116"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"4eb4de0d-da1e-43d2-8d13-f03db48bb584","savedPayload":{"position":{"x":41842.90113140332,"y":31196.666491912307},"targetPosition":{"x":41756.18324465906,"y":31038.527677031703},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"913f8079-b038-444a-ad43-465fa0443c04"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"acf945ba-d394-4363-9761-2dde92c7feac","savedPayload":{"position":{"x":41746.1320218417,"y":31233.302947080203},"targetPosition":{"x":41756.18324465906,"y":31038.527677031703},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"bba7e1ab-5bca-44c0-a8aa-cd9570b338f3"}}}],"id":"487f7a7f-653f-481e-8043-385bb823752c","savedPayload":{"position":{"x":41756.18324465906,"y":31038.527677031703},"targetPosition":{"x":41547.637090564436,"y":30800.3565476226},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0}}},"id":"cf40d6fb-366e-44a3-a854-4e61224a2589","savedPayload":{"position":{"x":10586.948312608127,"y":24217.477566923106},"targetPosition":{"x":11058.238782679175,"y":24779.247706128608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"3a615804-6f94-4d7b-8fe2-d3d78158ef99","savedPayload":{"position":{"x":10593.673509423063,"y":23785.748877594022},"targetPosition":{"x":10807.879711306607,"y":24090.11057476119},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"on\",\n \"showPanels\": true\n}","id":"9243bb9f-0729-45cf-942d-05aad9aa87e0","savedPayload":{"position":{"x":10582.266916931037,"y":23413.52805910079},"targetPosition":{"x":10776.57771338121,"y":23725.149085567024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"c53d8a77-b1d4-446c-9bef-8458b832c5e5"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"3b3c7fb7-caa5-4f80-b96a-c39a1dda4169","savedPayload":{"position":{"x":10687.051300164667,"y":23368.95946034642},"targetPosition":{"x":10776.57771338121,"y":23725.149085567024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"0f1e10be-0da8-4d10-93d7-35e407579cb0"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"on\"\n}","id":"64e8f0b3-532e-4c92-a07f-d9eaa0fe39d1","savedPayload":{"position":{"x":10801.944154830153,"y":23359.251369760157},"targetPosition":{"x":10776.57771338121,"y":23725.149085567024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"a85fc58e-5b58-449b-b733-c3a623e1d5d4"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"on\"\n}","id":"33eb6034-8a74-46cb-8fdd-7e1538d7dfd9","savedPayload":{"position":{"x":10915.140235744588,"y":23385.983111371053},"targetPosition":{"x":10776.57771338121,"y":23725.149085567024},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"302de277-a428-4cc0-8757-b2ef7de6040b"}}}],"id":"9623ca9b-73ac-403d-8499-48cd214ed4c6","savedPayload":{"position":{"x":10776.57771338121,"y":23725.149085567024},"targetPosition":{"x":10807.879711306607,"y":24090.11057476119},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":330,"radius":0}}},"id":"46c964fd-042d-43d3-982b-d801a7dc9984","savedPayload":{"position":{"x":10807.750550083627,"y":24090.10009635562},"targetPosition":{"x":11058.238782679175,"y":24779.247706128608},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"561bc2ac-a82e-454f-a1b9-b71de98cc6fc","savedPayload":{"position":{"x":11343.064016650165,"y":25718.93959549572},"targetPosition":{"x":11343.062891749762,"y":24985.40702724926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":2815,"y":-155},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"WHB Trade # 4","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2019-07-14T22:46:08.021Z\",\n \"toDate\": \"2019-07-20T07:22:27.923Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"68d2e8c2-3493-4e3c-97d8-3d51f9a39a2a","savedPayload":{"position":{"x":10956.79557343819,"y":25686.17184555717},"targetPosition":{"x":11207.354172022147,"y":24997.12937156632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 7912.509834734323,\n \"maxValue\": 11926.723195788245,\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"2dc190a5-14cc-499a-9e40-a6d93872b7b4","savedPayload":{"position":{"x":10736.015735268431,"y":25558.808252578623},"targetPosition":{"x":11207.354172022147,"y":24997.12937156632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"62f58309-5257-4709-b9f2-0d2db40cb5a2","savedPayload":{"position":{"x":10572.261788147141,"y":25363.680679597284},"targetPosition":{"x":11207.354172022147,"y":24997.12937156632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"3b25b300-4eaf-447c-80d4-4ff695aac7a3","savedPayload":{"position":{"x":42216.69240244741,"y":30259.01593968361},"targetPosition":{"x":42279.86417232711,"y":30679.351325604905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"431ea989-085b-40ae-aa2a-d371d7cb68c6"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"bef839f3-34df-4e28-922d-d26f7ea5a400","savedPayload":{"position":{"x":42301.893638629444,"y":30270.564431876413},"targetPosition":{"x":42279.86417232711,"y":30679.351325604905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"ddd34b26-4fa8-4d7c-b76d-f671c92a6181"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"a99ade83-1586-46d9-8ee6-f672ade66fb9","savedPayload":{"position":{"x":42379.87935179854,"y":30298.75366346637},"targetPosition":{"x":42279.86417232711,"y":30679.351325604905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"683e24f7-010a-412e-ba21-f280e63a0f1d"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"511532c4-286d-4337-9bdc-681b3b4c5bcc","savedPayload":{"position":{"x":42449.71790396685,"y":30340.61478756279},"targetPosition":{"x":42279.86417232711,"y":30679.351325604905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"210b7e14-a6f0-4c56-b5e4-108f57ebb4c6"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f8a5171a-72c4-45ae-a50c-7410b003ec02","savedPayload":{"position":{"x":42509.90200932661,"y":30394.343022208526},"targetPosition":{"x":42279.86417232711,"y":30679.351325604905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"303572ad-cc90-46c9-8620-8454d557897b"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"cea3378f-e971-4242-87fa-7f449fd88cfc","savedPayload":{"position":{"x":42558.86020269298,"y":30458.00431277671},"targetPosition":{"x":42279.86417232711,"y":30679.351325604905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"10142313-9ac8-4f4c-8105-88aec7bb7ce9"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"12f0e6f1-55a0-4347-aed7-95ef49ee3c30","savedPayload":{"position":{"x":42595.159736796246,"y":30529.440973791316},"targetPosition":{"x":42279.86417232711,"y":30679.351325604905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"afbf02cf-97a6-4dc0-a3d5-95f29ba7781f"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"c12563ed-23da-446d-a528-effa04a3a4a9","savedPayload":{"position":{"x":42617.683739272055,"y":30606.251878624455},"targetPosition":{"x":42279.86417232711,"y":30679.351325604905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"80ed873e-8017-45ec-b211-fc4604f5aaf6"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"b529ed4c-93c5-49aa-a7fe-45260cfaaab3","savedPayload":{"position":{"x":42625.65387882351,"y":30685.849794494916},"targetPosition":{"x":42279.86417232711,"y":30679.351325604905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"6635502b-5366-430e-8dc1-4edaa21c2a7f"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"1ab00426-2192-481c-9ae2-3be69afef4e4","savedPayload":{"position":{"x":42618.82581935755,"y":30765.517307325932},"targetPosition":{"x":42279.86417232711,"y":30679.351325604905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"3ebce074-9080-426a-baf9-61c1a04fc05b"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"40a9d958-d618-4c3b-ae2e-c30dd503f9e5","savedPayload":{"position":{"x":42597.528330363515,"y":30842.578970555172},"targetPosition":{"x":42279.86417232711,"y":30679.351325604905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"c424ba00-bbe0-4ae9-830a-3d2aa6fcaf4d"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"dd2b5dda-c0ff-49d8-94f7-3f701ab3080d","savedPayload":{"position":{"x":42562.453706763925,"y":30914.423359686985},"targetPosition":{"x":42279.86417232711,"y":30679.351325604905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"3d048c1f-d45a-442a-9d44-362ad7770bb6"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"d09892b6-2ffe-4951-be36-a6c4596c3eda","savedPayload":{"position":{"x":42514.80195350802,"y":30978.62583203112},"targetPosition":{"x":42279.86417232711,"y":30679.351325604905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"c92d9454-d5fb-4954-a188-367dcd697af6"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"0bd97bc3-f1c7-4af5-b62b-74dcc0768410","savedPayload":{"position":{"x":42456.184163355596,"y":31033.012723458796},"targetPosition":{"x":42279.86417232711,"y":30679.351325604905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"4810638a-c137-4df6-8016-c8a2540dc9e7"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"30a52921-218e-4937-814f-84c66ec5f0a5","savedPayload":{"position":{"x":42388.644627351,"y":31075.894082255585},"targetPosition":{"x":42279.86417232711,"y":30679.351325604905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"9c1f6b84-409e-4257-92ea-a9481d3509cd"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"39ed667a-0496-4fd0-bf8a-e53de40b0862","savedPayload":{"position":{"x":42291.0656147811,"y":31108.26038304184},"targetPosition":{"x":42279.86417232711,"y":30679.351325604905},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"dcd46168-1662-42c5-be91-f489d9a55833"}}}],"id":"78ec9ec3-8318-485e-9680-8fb9b74d0973","savedPayload":{"position":{"x":42279.86417232711,"y":30679.351325604905},"targetPosition":{"x":41764.360414892995,"y":30731.536222475086},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":190,"radius":0}}},"id":"94b48c14-c7a4-4a63-aef3-a7f9cdb70427","savedPayload":{"position":{"x":10485.143459508108,"y":25124.321298101935},"targetPosition":{"x":11207.354172022147,"y":24997.12937156632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 58679.88771644947,\n \"maxValue\": 67583.90898022446,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"9bbc810a-61bb-4ec6-abbb-c7932e8f3b7c","savedPayload":{"position":{"x":42093.62495284563,"y":30829.121207389224},"targetPosition":{"x":41768.489290448524,"y":30854.749482894964},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"570c5a13-57b7-420b-bee7-370c54cca978","savedPayload":{"position":{"x":42300.96851697975,"y":31047.56095253539},"targetPosition":{"x":42089.3596215099,"y":31009.299514258222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"cc76acbb-9fd2-43f0-95de-dc78e1aaa2b5"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"8bdce5fd-ba9f-41b8-94e4-2f5fa937ff17","savedPayload":{"position":{"x":42252.435789451025,"y":31149.32331055771},"targetPosition":{"x":42089.3596215099,"y":31009.299514258222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"fc8fac79-2166-458e-8576-be726b553afd","savedPayload":{"position":{"x":42089.3596215099,"y":31009.299514258222},"targetPosition":{"x":41768.489290448524,"y":30854.749482894964},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"16440560-9994-4a14-ad15-c978f907e81a","savedPayload":{"position":{"x":10485.151896989995,"y":24869.85703114826},"targetPosition":{"x":11207.354172022147,"y":24997.12937156632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 22.790367925681448,\n \"maxValue\": 26.790367925681448,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"f6576bdf-2f8c-4e0a-a58f-eab7310d186b","savedPayload":{"position":{"x":42049.29125814663,"y":30934.342655967786},"targetPosition":{"x":41748.51699699887,"y":30914.931994846545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"efcd28ed-7742-452c-af87-f66ce11fbbfe","savedPayload":{"position":{"x":42217.26933268314,"y":31160.230931131788},"targetPosition":{"x":42013.0652514458,"y":31091.34211662267},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"302bfaf2-6466-4aa0-9924-33999366b774"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"18b26582-09bf-40c8-883d-8a937ed611a9","savedPayload":{"position":{"x":42155.14393773476,"y":31253.45922738678},"targetPosition":{"x":42013.0652514458,"y":31091.34211662267},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"f6868e09-2559-4fac-9631-54cf1a867c8a"}}}],"id":"20c34f4b-3a6b-463b-9c31-0b2690676722","savedPayload":{"position":{"x":42013.0652514458,"y":31091.34211662267},"targetPosition":{"x":41748.51699699887,"y":30914.931994846545},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"b87524b0-b74f-42f1-bec4-9fbf2189934e","savedPayload":{"position":{"x":10572.287755675874,"y":24630.495360591074},"targetPosition":{"x":11207.354172022147,"y":24997.12937156632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 22.790367925681448,\n \"maxValue\": 26.790367925681448,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"4422554c-a844-42ef-863a-ded55841196a","savedPayload":{"position":{"x":41978.66269817766,"y":31113.94370866211},"targetPosition":{"x":41696.75247990741,"y":31018.23821306031},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"7237747e-961f-4465-b0ed-fb88ae9a6f66","savedPayload":{"position":{"x":42101.935307743515,"y":31272.881851588838},"targetPosition":{"x":41905.298634002036,"y":31256.409342469415},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"be7e47ef-a530-4dc1-bf59-b731f1e49fa1"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"0892588e-c5e7-4894-a1d9-d33fd62871d2","savedPayload":{"position":{"x":42058.76407571477,"y":31354.04601987156},"targetPosition":{"x":41905.298634002036,"y":31256.409342469415},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"0333bb7c-5101-441b-be9a-d9ff1a84f116"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"762e3305-d28c-4aaa-95f4-fb6778de88e0","savedPayload":{"position":{"x":41992.01652074629,"y":31414.54815735002},"targetPosition":{"x":41905.298634002036,"y":31256.409342469415},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"913f8079-b038-444a-ad43-465fa0443c04"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"f5cabaf8-cc76-400b-b249-6d6629267e2c","savedPayload":{"position":{"x":41895.247411184675,"y":31451.184612517915},"targetPosition":{"x":41905.298634002036,"y":31256.409342469415},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"bba7e1ab-5bca-44c0-a8aa-cd9570b338f3"}}}],"id":"505b6409-43dd-4785-9786-0a975c15ae94","savedPayload":{"position":{"x":41905.298634002036,"y":31256.409342469415},"targetPosition":{"x":41696.75247990741,"y":31018.23821306031},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0}}},"id":"79eca48f-9ad3-4cbc-969d-1796a7808f2b","savedPayload":{"position":{"x":10736.0637019511,"y":24435.359232360817},"targetPosition":{"x":11207.354172022147,"y":24997.12937156632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"916d4e59-f2d6-43cf-964a-502c0144e1d2","savedPayload":{"position":{"x":10742.788898766035,"y":24003.630543031733},"targetPosition":{"x":10956.99510064958,"y":24307.992240198902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"on\",\n \"showPanels\": true\n}","id":"327f54aa-9a96-4a14-84b4-0121f7bcd1a6","savedPayload":{"position":{"x":10731.38230627401,"y":23631.409724538502},"targetPosition":{"x":10925.693102724183,"y":23943.030751004735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"c53d8a77-b1d4-446c-9bef-8458b832c5e5"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"eb018823-9e4e-4474-9e28-602db7c25976","savedPayload":{"position":{"x":10836.16668950764,"y":23586.841125784133},"targetPosition":{"x":10925.693102724183,"y":23943.030751004735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"0f1e10be-0da8-4d10-93d7-35e407579cb0"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"on\"\n}","id":"67e7ef34-5411-4c31-a07e-8a334fbb0d36","savedPayload":{"position":{"x":10951.059544173126,"y":23577.13303519787},"targetPosition":{"x":10925.693102724183,"y":23943.030751004735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"a85fc58e-5b58-449b-b733-c3a623e1d5d4"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"on\"\n}","id":"246f1a05-01d1-4e53-b262-78ce2839053c","savedPayload":{"position":{"x":11064.25562508756,"y":23603.864776808765},"targetPosition":{"x":10925.693102724183,"y":23943.030751004735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"302de277-a428-4cc0-8757-b2ef7de6040b"}}}],"id":"1da3e8bb-5452-4fd1-8d11-848ac82cded1","savedPayload":{"position":{"x":10925.693102724183,"y":23943.030751004735},"targetPosition":{"x":10956.99510064958,"y":24307.992240198902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":330,"radius":0}}},"id":"3f8bf51c-f5c3-4815-9d73-952ae0907f0f","savedPayload":{"position":{"x":10956.8659394266,"y":24307.981761793333},"targetPosition":{"x":11207.354172022147,"y":24997.12937156632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"3446fa91-a753-43f1-b68f-58b19eef234a","savedPayload":{"position":{"x":10976.312117626252,"y":25620.652854069354},"targetPosition":{"x":11343.062891749762,"y":24985.40702724926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":3165,"y":-155},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"WHB Trade # 5","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2019-07-21T10:32:36.652Z\",\n \"toDate\": \"2019-08-03T18:33:18.798Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"5022d292-abf4-4134-8e6d-293e83227049","savedPayload":{"position":{"x":11091.826152332265,"y":26182.514504289786},"targetPosition":{"x":11342.384750916222,"y":25493.472030298934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 8855.707188114806,\n \"maxValue\": 10910.984428974414,\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"4df475b6-c0eb-425b-9dc1-b3705f2ac0ed","savedPayload":{"position":{"x":10871.046314162506,"y":26055.150911311237},"targetPosition":{"x":11342.384750916222,"y":25493.472030298934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"b4a39464-d4f0-48eb-b5ac-226a3de0f876","savedPayload":{"position":{"x":10707.292367041216,"y":25860.0233383299},"targetPosition":{"x":11342.384750916222,"y":25493.472030298934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"9110c08d-43a5-4e41-844c-801e282f32e3","savedPayload":{"position":{"x":42351.72298134148,"y":30755.358598416224},"targetPosition":{"x":42414.89475122118,"y":31175.69398433752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"431ea989-085b-40ae-aa2a-d371d7cb68c6"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"a45d9e36-f88e-472d-bf03-eda4a7addcdf","savedPayload":{"position":{"x":42436.92421752352,"y":30766.907090609027},"targetPosition":{"x":42414.89475122118,"y":31175.69398433752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"ddd34b26-4fa8-4d7c-b76d-f671c92a6181"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"eca29fe1-bab5-43e3-93fe-e11416aa558e","savedPayload":{"position":{"x":42514.909930692615,"y":30795.096322198984},"targetPosition":{"x":42414.89475122118,"y":31175.69398433752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"683e24f7-010a-412e-ba21-f280e63a0f1d"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"7c666f4b-4a3e-4a97-b14f-c183c62f3cab","savedPayload":{"position":{"x":42584.74848286092,"y":30836.957446295404},"targetPosition":{"x":42414.89475122118,"y":31175.69398433752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"210b7e14-a6f0-4c56-b5e4-108f57ebb4c6"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"5d2aa17e-5d1a-4cb0-afcc-6079fdeb8373","savedPayload":{"position":{"x":42644.93258822068,"y":30890.68568094114},"targetPosition":{"x":42414.89475122118,"y":31175.69398433752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"303572ad-cc90-46c9-8620-8454d557897b"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2e185a72-b160-4027-b44a-c88cafc0cd25","savedPayload":{"position":{"x":42693.890781587055,"y":30954.346971509323},"targetPosition":{"x":42414.89475122118,"y":31175.69398433752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"10142313-9ac8-4f4c-8105-88aec7bb7ce9"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e477c0ff-a15b-41f9-a60d-5857f3e80529","savedPayload":{"position":{"x":42730.19031569032,"y":31025.78363252393},"targetPosition":{"x":42414.89475122118,"y":31175.69398433752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"afbf02cf-97a6-4dc0-a3d5-95f29ba7781f"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"8c749842-0015-4ed9-b08c-c44e49d4c4f6","savedPayload":{"position":{"x":42752.71431816613,"y":31102.59453735707},"targetPosition":{"x":42414.89475122118,"y":31175.69398433752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"80ed873e-8017-45ec-b211-fc4604f5aaf6"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"825e5213-69fa-414e-854a-f6567f2b041a","savedPayload":{"position":{"x":42760.68445771759,"y":31182.19245322753},"targetPosition":{"x":42414.89475122118,"y":31175.69398433752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"6635502b-5366-430e-8dc1-4edaa21c2a7f"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ef1c6e89-e8cf-45d1-a61f-52764370bbe0","savedPayload":{"position":{"x":42753.85639825163,"y":31261.859966058546},"targetPosition":{"x":42414.89475122118,"y":31175.69398433752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"3ebce074-9080-426a-baf9-61c1a04fc05b"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"ac90e3c8-c053-4f44-a2a1-5c9231fb55e1","savedPayload":{"position":{"x":42732.55890925759,"y":31338.921629287786},"targetPosition":{"x":42414.89475122118,"y":31175.69398433752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"c424ba00-bbe0-4ae9-830a-3d2aa6fcaf4d"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"e37d4dbe-5044-4b87-a831-a3d16dce73ad","savedPayload":{"position":{"x":42697.484285658,"y":31410.7660184196},"targetPosition":{"x":42414.89475122118,"y":31175.69398433752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"3d048c1f-d45a-442a-9d44-362ad7770bb6"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"648c4349-5ae5-4c3e-bf16-af1c9875a953","savedPayload":{"position":{"x":42649.83253240209,"y":31474.968490763735},"targetPosition":{"x":42414.89475122118,"y":31175.69398433752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"c92d9454-d5fb-4954-a188-367dcd697af6"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"2f70ad6a-adf9-4bf8-b7e5-c6599cd54ac7","savedPayload":{"position":{"x":42591.21474224967,"y":31529.35538219141},"targetPosition":{"x":42414.89475122118,"y":31175.69398433752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"4810638a-c137-4df6-8016-c8a2540dc9e7"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"b0fd047e-2f1b-4b29-bcc0-7bbcc721611d","savedPayload":{"position":{"x":42523.675206245076,"y":31572.2367409882},"targetPosition":{"x":42414.89475122118,"y":31175.69398433752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"9c1f6b84-409e-4257-92ea-a9481d3509cd"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"ece28915-9a06-45a8-af30-ef7f09cbe49c","savedPayload":{"position":{"x":42426.09619367518,"y":31604.603041774455},"targetPosition":{"x":42414.89475122118,"y":31175.69398433752},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"dcd46168-1662-42c5-be91-f489d9a55833"}}}],"id":"b3b6b597-7df8-46ca-8c5c-eb28dc48044f","savedPayload":{"position":{"x":42414.89475122118,"y":31175.69398433752},"targetPosition":{"x":41899.39099378707,"y":31227.8788812077},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":190,"radius":0}}},"id":"942d0c7a-ec3b-439a-a63e-fb262f52b987","savedPayload":{"position":{"x":10620.174038402183,"y":25620.66395683455},"targetPosition":{"x":11342.384750916222,"y":25493.472030298934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 65051.25313365259,\n \"maxValue\": 73955.27439742758,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"3e602017-9fff-46dc-80e6-708a4ade66c5","savedPayload":{"position":{"x":42228.65553173971,"y":31325.463866121838},"targetPosition":{"x":41903.5198693426,"y":31351.092141627578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"7dbaf753-7625-4a98-875f-214d831dca40","savedPayload":{"position":{"x":42435.99909587383,"y":31543.903611268004},"targetPosition":{"x":42224.39020040398,"y":31505.642172990836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"cc76acbb-9fd2-43f0-95de-dc78e1aaa2b5"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"0980f381-cb0e-4dda-9dc8-37b591c0dba0","savedPayload":{"position":{"x":42387.4663683451,"y":31645.665969290323},"targetPosition":{"x":42224.39020040398,"y":31505.642172990836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"b63630e9-811e-4023-b6b1-cb480934928a","savedPayload":{"position":{"x":42224.39020040398,"y":31505.642172990836},"targetPosition":{"x":41903.5198693426,"y":31351.092141627578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"0a35f6e5-445a-403e-888f-acce4a5dd360","savedPayload":{"position":{"x":10620.18247588407,"y":25366.199689880876},"targetPosition":{"x":11342.384750916222,"y":25493.472030298934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 25.652609705414967,\n \"maxValue\": 29.652609705414967,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"dc916c41-0fd8-4cba-88b2-66dcaae6384f","savedPayload":{"position":{"x":42184.321837040705,"y":31430.6853147004},"targetPosition":{"x":41883.547575892946,"y":31411.27465357916},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"9dd8f1ce-8b0a-4842-8f65-f299a4d5261b","savedPayload":{"position":{"x":42352.29991157722,"y":31656.5735898644},"targetPosition":{"x":42148.09583033987,"y":31587.684775355283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"302bfaf2-6466-4aa0-9924-33999366b774"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ce74bcee-ee01-45cd-8dda-22559d39c0bc","savedPayload":{"position":{"x":42290.17451662884,"y":31749.801886119392},"targetPosition":{"x":42148.09583033987,"y":31587.684775355283},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"f6868e09-2559-4fac-9631-54cf1a867c8a"}}}],"id":"f5a1bd5c-42be-4f90-8a33-da823d0e100e","savedPayload":{"position":{"x":42148.09583033987,"y":31587.684775355283},"targetPosition":{"x":41883.547575892946,"y":31411.27465357916},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"31c7ef3b-591b-41e7-a466-d689f20818d0","savedPayload":{"position":{"x":10707.318334569949,"y":25126.838019323688},"targetPosition":{"x":11342.384750916222,"y":25493.472030298934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 25.652609705414967,\n \"maxValue\": 29.652609705414967,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"0ddf384c-8aa0-44a0-999c-8fc1a8930eb1","savedPayload":{"position":{"x":42113.69327707173,"y":31610.286367394725},"targetPosition":{"x":41831.783058801484,"y":31514.580871792925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"30cfadd9-9a0c-48d6-9f5d-d4e28743e297","savedPayload":{"position":{"x":42236.96588663759,"y":31769.22451032145},"targetPosition":{"x":42040.32921289611,"y":31752.75200120203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"be7e47ef-a530-4dc1-bf59-b731f1e49fa1"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"d2075e68-baac-42e7-a86d-d9a28603eaef","savedPayload":{"position":{"x":42193.79465460884,"y":31850.388678604173},"targetPosition":{"x":42040.32921289611,"y":31752.75200120203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"0333bb7c-5101-441b-be9a-d9ff1a84f116"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"1cdc136a-0a5d-450e-ad8d-fcc63dad5877","savedPayload":{"position":{"x":42127.04709964037,"y":31910.890816082632},"targetPosition":{"x":42040.32921289611,"y":31752.75200120203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"913f8079-b038-444a-ad43-465fa0443c04"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"973c19c9-0844-4987-adb7-c53abd7b9a62","savedPayload":{"position":{"x":42030.27799007875,"y":31947.52727125053},"targetPosition":{"x":42040.32921289611,"y":31752.75200120203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"bba7e1ab-5bca-44c0-a8aa-cd9570b338f3"}}}],"id":"b0e08907-be90-4a3d-852f-f8e144d10d39","savedPayload":{"position":{"x":42040.32921289611,"y":31752.75200120203},"targetPosition":{"x":41831.783058801484,"y":31514.580871792925},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0}}},"id":"51ff7b08-92cc-47ad-b244-0d866ef1b516","savedPayload":{"position":{"x":10871.094280845175,"y":24931.70189109343},"targetPosition":{"x":11342.384750916222,"y":25493.472030298934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"c5c28bf6-52b9-43b7-a8b9-4920d7c057a0","savedPayload":{"position":{"x":10877.81947766011,"y":24499.973201764347},"targetPosition":{"x":11092.025679543654,"y":24804.334898931516},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"on\",\n \"showPanels\": true\n}","id":"5543cb78-1aa8-4761-9299-f588182730b4","savedPayload":{"position":{"x":10866.412885168085,"y":24127.752383271116},"targetPosition":{"x":11060.723681618258,"y":24439.37340973735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"c53d8a77-b1d4-446c-9bef-8458b832c5e5"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"587704a5-29c6-4708-bdf8-4b1fca2cc631","savedPayload":{"position":{"x":10971.197268401715,"y":24083.183784516747},"targetPosition":{"x":11060.723681618258,"y":24439.37340973735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"0f1e10be-0da8-4d10-93d7-35e407579cb0"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"on\"\n}","id":"d13db45b-7bc8-4d73-80df-6c0db1174b4d","savedPayload":{"position":{"x":11086.0901230672,"y":24073.475693930483},"targetPosition":{"x":11060.723681618258,"y":24439.37340973735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"a85fc58e-5b58-449b-b733-c3a623e1d5d4"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"on\"\n}","id":"42b3cb5d-292b-4733-a5ed-e3d45e0abb8b","savedPayload":{"position":{"x":11199.286203981635,"y":24100.20743554138},"targetPosition":{"x":11060.723681618258,"y":24439.37340973735},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"302de277-a428-4cc0-8757-b2ef7de6040b"}}}],"id":"e8282d58-c59a-4983-8cb2-a1013e4edcc1","savedPayload":{"position":{"x":11060.723681618258,"y":24439.37340973735},"targetPosition":{"x":11092.025679543654,"y":24804.334898931516},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":330,"radius":0}}},"id":"0395360e-9534-4fb1-8d06-21db2adda25f","savedPayload":{"position":{"x":11091.896518320675,"y":24804.324420525947},"targetPosition":{"x":11342.384750916222,"y":25493.472030298934},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"245b2e83-1303-494c-942c-d0fd043110ed","savedPayload":{"position":{"x":10707.795974890585,"y":25352.130755182578},"targetPosition":{"x":11343.062891749762,"y":24985.40702724926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":3515,"y":-155},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"WHB Trade # 6","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2019-08-06T00:50:44.863Z\",\n \"toDate\": \"2019-08-08T06:32:05.462Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"a6f978ba-1e1a-46d1-9d6d-26d09d6c7466","savedPayload":{"position":{"x":11090.75392055981,"y":26571.825335925285},"targetPosition":{"x":11341.312519143767,"y":25882.782861934433},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 10463.551503174274,\n \"maxValue\": 12518.828744033883,\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"b3eb39a9-5aca-49f3-b356-de4011030dde","savedPayload":{"position":{"x":10869.97408239005,"y":26444.461742946736},"targetPosition":{"x":11341.312519143767,"y":25882.782861934433},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"754e930e-ebe6-4760-bacf-3ee07f12583b","savedPayload":{"position":{"x":10706.22013526876,"y":26249.334169965397},"targetPosition":{"x":11341.312519143767,"y":25882.782861934433},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"e89df967-87d3-46e0-9215-2f0267e52a6d","savedPayload":{"position":{"x":42350.650749569024,"y":31144.669430051723},"targetPosition":{"x":42413.822519448724,"y":31565.004815973018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"431ea989-085b-40ae-aa2a-d371d7cb68c6"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"f41ab207-4812-4d47-80b3-f2488b575d47","savedPayload":{"position":{"x":42435.85198575106,"y":31156.217922244527},"targetPosition":{"x":42413.822519448724,"y":31565.004815973018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"ddd34b26-4fa8-4d7c-b76d-f671c92a6181"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"25659843-9a9e-4684-b9f5-40adaf363c0c","savedPayload":{"position":{"x":42513.83769892016,"y":31184.407153834483},"targetPosition":{"x":42413.822519448724,"y":31565.004815973018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"683e24f7-010a-412e-ba21-f280e63a0f1d"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9aab4893-8728-4bc8-a55f-9d4ab89cb50c","savedPayload":{"position":{"x":42583.676251088466,"y":31226.268277930903},"targetPosition":{"x":42413.822519448724,"y":31565.004815973018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"210b7e14-a6f0-4c56-b5e4-108f57ebb4c6"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e1720195-a86c-47ae-9fbd-e06c50a3fee9","savedPayload":{"position":{"x":42643.860356448226,"y":31279.99651257664},"targetPosition":{"x":42413.822519448724,"y":31565.004815973018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"303572ad-cc90-46c9-8620-8454d557897b"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"829b9301-366f-48a4-a203-3d55b9df5970","savedPayload":{"position":{"x":42692.8185498146,"y":31343.657803144823},"targetPosition":{"x":42413.822519448724,"y":31565.004815973018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"10142313-9ac8-4f4c-8105-88aec7bb7ce9"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"427d0e25-d00c-415f-bc0a-a31861c6d05a","savedPayload":{"position":{"x":42729.11808391786,"y":31415.09446415943},"targetPosition":{"x":42413.822519448724,"y":31565.004815973018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"afbf02cf-97a6-4dc0-a3d5-95f29ba7781f"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"abc9caed-3233-42ee-bfa4-2b821b3515fd","savedPayload":{"position":{"x":42751.64208639367,"y":31491.905368992568},"targetPosition":{"x":42413.822519448724,"y":31565.004815973018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"80ed873e-8017-45ec-b211-fc4604f5aaf6"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"70f6a08a-7bf1-464b-ba36-7334a7c9a11e","savedPayload":{"position":{"x":42759.61222594513,"y":31571.50328486303},"targetPosition":{"x":42413.822519448724,"y":31565.004815973018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"6635502b-5366-430e-8dc1-4edaa21c2a7f"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e34a1602-7388-4f87-9ae8-e1e539bb854a","savedPayload":{"position":{"x":42752.78416647917,"y":31651.170797694045},"targetPosition":{"x":42413.822519448724,"y":31565.004815973018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"3ebce074-9080-426a-baf9-61c1a04fc05b"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"8eb4294b-32dc-481b-8362-672e63e13f71","savedPayload":{"position":{"x":42731.48667748513,"y":31728.232460923286},"targetPosition":{"x":42413.822519448724,"y":31565.004815973018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"c424ba00-bbe0-4ae9-830a-3d2aa6fcaf4d"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"b9faa1ec-4b21-4af4-bc14-34c2c7c0515e","savedPayload":{"position":{"x":42696.41205388554,"y":31800.0768500551},"targetPosition":{"x":42413.822519448724,"y":31565.004815973018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"3d048c1f-d45a-442a-9d44-362ad7770bb6"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"9e59fa2a-448d-4938-a96d-01695fe89dca","savedPayload":{"position":{"x":42648.760300629634,"y":31864.279322399234},"targetPosition":{"x":42413.822519448724,"y":31565.004815973018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"c92d9454-d5fb-4954-a188-367dcd697af6"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"297e39a4-468f-47e8-a490-9e36f4cf2365","savedPayload":{"position":{"x":42590.14251047721,"y":31918.66621382691},"targetPosition":{"x":42413.822519448724,"y":31565.004815973018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"4810638a-c137-4df6-8016-c8a2540dc9e7"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"da2a577c-c342-4711-a639-f0b3de61fa91","savedPayload":{"position":{"x":42522.60297447262,"y":31961.5475726237},"targetPosition":{"x":42413.822519448724,"y":31565.004815973018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"9c1f6b84-409e-4257-92ea-a9481d3509cd"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"87184b3c-a510-4d51-b241-f2f58ab3672a","savedPayload":{"position":{"x":42425.02396190272,"y":31993.913873409954},"targetPosition":{"x":42413.822519448724,"y":31565.004815973018},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"dcd46168-1662-42c5-be91-f489d9a55833"}}}],"id":"a1deab84-cb4c-4404-8656-bd8d5db63aae","savedPayload":{"position":{"x":42413.822519448724,"y":31565.004815973018},"targetPosition":{"x":41898.31876201461,"y":31617.1897128432},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":190,"radius":0}}},"id":"ce399e02-7e9b-4026-97af-4fe6c3c9800c","savedPayload":{"position":{"x":10619.101806629727,"y":26009.97478847005},"targetPosition":{"x":11341.312519143767,"y":25882.782861934433},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 76963.55147517774,\n \"maxValue\": 85867.57273895272,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"956302dd-5e76-467a-8e8b-20d5541e2799","savedPayload":{"position":{"x":42227.58329996725,"y":31714.774697757337},"targetPosition":{"x":41902.44763757014,"y":31740.402973263077},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"40bb34ab-f4e9-4f43-ace1-99d2d6fbca35","savedPayload":{"position":{"x":42434.92686410137,"y":31933.214442903503},"targetPosition":{"x":42223.31796863152,"y":31894.953004626335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"cc76acbb-9fd2-43f0-95de-dc78e1aaa2b5"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"4d4284e7-5654-4ad6-a402-b83bfe6c3fc6","savedPayload":{"position":{"x":42386.39413657264,"y":32034.976800925822},"targetPosition":{"x":42223.31796863152,"y":31894.953004626335},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"16d6b9f0-390f-4377-8e12-bfe253c31c8b","savedPayload":{"position":{"x":42223.31796863152,"y":31894.953004626335},"targetPosition":{"x":41902.44763757014,"y":31740.402973263077},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"e97deccd-0a4a-48eb-a39a-b8d67fc75c1e","savedPayload":{"position":{"x":10619.110244111615,"y":25755.510521516375},"targetPosition":{"x":11341.312519143767,"y":25882.782861934433},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 31.00403373670698,\n \"maxValue\": 35.00403373670698,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"b40a7040-70d9-4d9b-b3a3-26b8de8aedfc","savedPayload":{"position":{"x":42183.24960526825,"y":31819.9961463359},"targetPosition":{"x":41882.47534412049,"y":31800.58548521466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"a7f42e0e-7688-4f38-b59c-be83066077c0","savedPayload":{"position":{"x":42351.22767980476,"y":32045.8844214999},"targetPosition":{"x":42147.023598567415,"y":31976.995606990782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"302bfaf2-6466-4aa0-9924-33999366b774"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"962f716c-d7d1-44fb-97db-00b05cc3b805","savedPayload":{"position":{"x":42289.10228485638,"y":32139.11271775489},"targetPosition":{"x":42147.023598567415,"y":31976.995606990782},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"f6868e09-2559-4fac-9631-54cf1a867c8a"}}}],"id":"2c3c2202-bd6e-4570-8752-f04a67240ed9","savedPayload":{"position":{"x":42147.023598567415,"y":31976.995606990782},"targetPosition":{"x":41882.47534412049,"y":31800.58548521466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"01ea23e3-6bc8-488c-bb7c-da475080bc9b","savedPayload":{"position":{"x":10706.246102797493,"y":25516.148850959187},"targetPosition":{"x":11341.312519143767,"y":25882.782861934433},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 31.00403373670698,\n \"maxValue\": 35.00403373670698,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"49021071-231a-48a5-b3f8-11b509a0af1d","savedPayload":{"position":{"x":42112.621045299275,"y":31999.597199030224},"targetPosition":{"x":41830.71082702903,"y":31903.891703428424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"805098b6-531c-43af-9a76-de35ed7f0ac5","savedPayload":{"position":{"x":42235.89365486513,"y":32158.53534195695},"targetPosition":{"x":42039.25698112365,"y":32142.062832837528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"be7e47ef-a530-4dc1-bf59-b731f1e49fa1"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"b239efdc-cca9-47f6-9231-9e87299b116c","savedPayload":{"position":{"x":42192.722422836385,"y":32239.699510239672},"targetPosition":{"x":42039.25698112365,"y":32142.062832837528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"0333bb7c-5101-441b-be9a-d9ff1a84f116"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"8c974523-4b55-4883-9715-640697e7e5a3","savedPayload":{"position":{"x":42125.97486786791,"y":32300.20164771813},"targetPosition":{"x":42039.25698112365,"y":32142.062832837528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"913f8079-b038-444a-ad43-465fa0443c04"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"33bc8a2c-a8d7-4d25-a6c7-d486ca6b42f6","savedPayload":{"position":{"x":42029.20575830629,"y":32336.838102886028},"targetPosition":{"x":42039.25698112365,"y":32142.062832837528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"bba7e1ab-5bca-44c0-a8aa-cd9570b338f3"}}}],"id":"e89f7ba2-5050-4c7c-a977-e4ecfccb8403","savedPayload":{"position":{"x":42039.25698112365,"y":32142.062832837528},"targetPosition":{"x":41830.71082702903,"y":31903.891703428424},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0}}},"id":"7fd4cbd0-294f-48ae-bf52-f5665e936a9b","savedPayload":{"position":{"x":10870.022049072719,"y":25321.01272272893},"targetPosition":{"x":11341.312519143767,"y":25882.782861934433},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"00803af5-9fca-4e1e-87ad-f55efdff6c42","savedPayload":{"position":{"x":10876.747245887655,"y":24889.284033399847},"targetPosition":{"x":11090.953447771199,"y":25193.645730567016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"on\",\n \"showPanels\": true\n}","id":"179259cb-5e61-4aa5-bd1b-50a21e134119","savedPayload":{"position":{"x":10865.34065339563,"y":24517.063214906615},"targetPosition":{"x":11059.651449845802,"y":24828.68424137285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"c53d8a77-b1d4-446c-9bef-8458b832c5e5"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"b01451d4-bcb0-403b-8816-fe88056a3d74","savedPayload":{"position":{"x":10970.125036629259,"y":24472.494616152246},"targetPosition":{"x":11059.651449845802,"y":24828.68424137285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"0f1e10be-0da8-4d10-93d7-35e407579cb0"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"on\"\n}","id":"5f956a08-9895-4c0a-b348-ff072a84aec6","savedPayload":{"position":{"x":11085.017891294745,"y":24462.78652556598},"targetPosition":{"x":11059.651449845802,"y":24828.68424137285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"a85fc58e-5b58-449b-b733-c3a623e1d5d4"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"on\"\n}","id":"6e4afee6-596c-4480-9394-ae9c33deddcb","savedPayload":{"position":{"x":11198.21397220918,"y":24489.518267176878},"targetPosition":{"x":11059.651449845802,"y":24828.68424137285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"302de277-a428-4cc0-8757-b2ef7de6040b"}}}],"id":"e2f24147-d2a0-4db1-8199-688c5cffb0bb","savedPayload":{"position":{"x":11059.651449845802,"y":24828.68424137285},"targetPosition":{"x":11090.953447771199,"y":25193.645730567016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":330,"radius":0}}},"id":"141d7c9d-910d-440d-b43c-976508b9a3ea","savedPayload":{"position":{"x":11090.824286548219,"y":25193.635252161446},"targetPosition":{"x":11341.312519143767,"y":25882.782861934433},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"cd52a242-02ce-446a-b9f9-ef6db4764ed6","savedPayload":{"position":{"x":10609.511704951896,"y":24985.40353338581},"targetPosition":{"x":11343.062891749762,"y":24985.40702724926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":3865,"y":-155},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"WHB Trade # 7","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2019-08-09T05:16:53.516Z\",\n \"toDate\": \"2019-08-17T05:39:32.846Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"b42a7d5a-f66b-43da-890f-c443d88e8c16","savedPayload":{"position":{"x":11270.100833931569,"y":26840.447115157225},"targetPosition":{"x":11520.659432515526,"y":26151.404641166373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 9860.609885026974,\n \"maxValue\": 11915.887125886582,\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"b170600b-2145-4a40-ab1e-85db578d836b","savedPayload":{"position":{"x":11049.32099576181,"y":26713.083522178677},"targetPosition":{"x":11520.659432515526,"y":26151.404641166373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"0d9bae14-a86a-42f0-bfc9-94dc9cf7afbc","savedPayload":{"position":{"x":10885.56704864052,"y":26517.955949197338},"targetPosition":{"x":11520.659432515526,"y":26151.404641166373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"2e3af8ee-3e27-455d-b1f3-a3da2206673a","savedPayload":{"position":{"x":42529.99766294078,"y":31413.291209283663},"targetPosition":{"x":42593.16943282048,"y":31833.626595204958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"431ea989-085b-40ae-aa2a-d371d7cb68c6"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"df5d9fb5-845a-49a9-952a-f2edeffc5e0d","savedPayload":{"position":{"x":42615.19889912282,"y":31424.839701476467},"targetPosition":{"x":42593.16943282048,"y":31833.626595204958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"ddd34b26-4fa8-4d7c-b76d-f671c92a6181"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"8051b74a-385a-462c-aa06-57bfba597e86","savedPayload":{"position":{"x":42693.184612291916,"y":31453.028933066424},"targetPosition":{"x":42593.16943282048,"y":31833.626595204958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"683e24f7-010a-412e-ba21-f280e63a0f1d"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"70275c0a-9f69-45ab-b66e-08b8a7a2227d","savedPayload":{"position":{"x":42763.023164460225,"y":31494.890057162844},"targetPosition":{"x":42593.16943282048,"y":31833.626595204958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"210b7e14-a6f0-4c56-b5e4-108f57ebb4c6"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"27878169-1b35-495d-92ae-235e0b7eec9b","savedPayload":{"position":{"x":42823.207269819985,"y":31548.61829180858},"targetPosition":{"x":42593.16943282048,"y":31833.626595204958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"303572ad-cc90-46c9-8620-8454d557897b"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"dd10d6b1-e439-44e4-93f1-c6dff37d2e69","savedPayload":{"position":{"x":42872.16546318636,"y":31612.279582376763},"targetPosition":{"x":42593.16943282048,"y":31833.626595204958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"10142313-9ac8-4f4c-8105-88aec7bb7ce9"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"dc1c887d-7a05-452c-89e0-c866b321d6da","savedPayload":{"position":{"x":42908.46499728962,"y":31683.71624339137},"targetPosition":{"x":42593.16943282048,"y":31833.626595204958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"afbf02cf-97a6-4dc0-a3d5-95f29ba7781f"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"8e3dd494-9a66-4a86-a9fd-f130c4f8a934","savedPayload":{"position":{"x":42930.98899976543,"y":31760.527148224508},"targetPosition":{"x":42593.16943282048,"y":31833.626595204958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"80ed873e-8017-45ec-b211-fc4604f5aaf6"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"3c7aa781-0360-4924-b06c-e2ce1996417c","savedPayload":{"position":{"x":42938.95913931689,"y":31840.12506409497},"targetPosition":{"x":42593.16943282048,"y":31833.626595204958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"6635502b-5366-430e-8dc1-4edaa21c2a7f"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6163d70f-53b4-4105-a847-2f08ebdd8154","savedPayload":{"position":{"x":42932.13107985093,"y":31919.792576925985},"targetPosition":{"x":42593.16943282048,"y":31833.626595204958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"3ebce074-9080-426a-baf9-61c1a04fc05b"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"c46add5b-38df-4f76-b7f7-ba67744519d0","savedPayload":{"position":{"x":42910.83359085689,"y":31996.854240155226},"targetPosition":{"x":42593.16943282048,"y":31833.626595204958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"c424ba00-bbe0-4ae9-830a-3d2aa6fcaf4d"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"b9c3465d-011c-4902-ba19-d969a121f196","savedPayload":{"position":{"x":42875.7589672573,"y":32068.69862928704},"targetPosition":{"x":42593.16943282048,"y":31833.626595204958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"3d048c1f-d45a-442a-9d44-362ad7770bb6"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"1bb520c8-676a-44dd-ba6c-1dbda4c63a26","savedPayload":{"position":{"x":42828.10721400139,"y":32132.901101631174},"targetPosition":{"x":42593.16943282048,"y":31833.626595204958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"c92d9454-d5fb-4954-a188-367dcd697af6"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"ea24d8de-5f8e-4d7c-92c0-0e58b6cf6d6e","savedPayload":{"position":{"x":42769.48942384897,"y":32187.28799305885},"targetPosition":{"x":42593.16943282048,"y":31833.626595204958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"4810638a-c137-4df6-8016-c8a2540dc9e7"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"e8bc16cf-54f0-4e2b-9a88-96b549a56fae","savedPayload":{"position":{"x":42701.94988784438,"y":32230.16935185564},"targetPosition":{"x":42593.16943282048,"y":31833.626595204958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"9c1f6b84-409e-4257-92ea-a9481d3509cd"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"ed3506d0-19c2-4d3d-a203-41f2911962c6","savedPayload":{"position":{"x":42604.37087527448,"y":32262.535652641895},"targetPosition":{"x":42593.16943282048,"y":31833.626595204958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"dcd46168-1662-42c5-be91-f489d9a55833"}}}],"id":"233c5546-8bdd-4552-9841-34560f6fb928","savedPayload":{"position":{"x":42593.16943282048,"y":31833.626595204958},"targetPosition":{"x":42077.66567538637,"y":31885.81149207514},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":190,"radius":0}}},"id":"5f5d6cec-7bf0-4ae3-b76c-21d36853cd34","savedPayload":{"position":{"x":10798.448720001486,"y":26278.59656770199},"targetPosition":{"x":11520.659432515526,"y":26151.404641166373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 75835.44757102142,\n \"maxValue\": 84739.4688347964,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"b0058f57-5d38-4a1a-8f4d-169e5cf5a1a1","savedPayload":{"position":{"x":42406.93021333901,"y":31983.396476989277},"targetPosition":{"x":42081.7945509419,"y":32009.024752495017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"fe1ae9be-a6c7-448e-9d11-40996e8bcef4","savedPayload":{"position":{"x":42614.27377747313,"y":32201.836222135444},"targetPosition":{"x":42402.66488200328,"y":32163.574783858276},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"cc76acbb-9fd2-43f0-95de-dc78e1aaa2b5"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"084634e4-14ca-4400-9fe0-a750131e646d","savedPayload":{"position":{"x":42565.7410499444,"y":32303.598580157763},"targetPosition":{"x":42402.66488200328,"y":32163.574783858276},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"4d1d09cb-185a-48da-866f-af198091c52c","savedPayload":{"position":{"x":42402.66488200328,"y":32163.574783858276},"targetPosition":{"x":42081.7945509419,"y":32009.024752495017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"48691346-e96d-4bd4-b1fc-d1e2b502eaee","savedPayload":{"position":{"x":10798.457157483374,"y":26024.132300748315},"targetPosition":{"x":11520.659432515526,"y":26151.404641166373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 30.49724972497247,\n \"maxValue\": 34.49724972497247,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"b7c87241-8d19-41d5-bccb-b37121f29ccc","savedPayload":{"position":{"x":42362.596518640006,"y":32088.61792556784},"targetPosition":{"x":42061.82225749225,"y":32069.2072644466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"22518aec-e525-42f5-a476-604f94efc5db","savedPayload":{"position":{"x":42530.57459317652,"y":32314.50620073184},"targetPosition":{"x":42326.370511939174,"y":32245.617386222722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"302bfaf2-6466-4aa0-9924-33999366b774"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"372bdb4f-7416-4ddf-8131-efa32219e50b","savedPayload":{"position":{"x":42468.44919822814,"y":32407.73449698683},"targetPosition":{"x":42326.370511939174,"y":32245.617386222722},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"f6868e09-2559-4fac-9631-54cf1a867c8a"}}}],"id":"67ed8e12-784a-4def-a31a-bfcfd402e1f6","savedPayload":{"position":{"x":42326.370511939174,"y":32245.617386222722},"targetPosition":{"x":42061.82225749225,"y":32069.2072644466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"a2a45fb9-d2ab-464a-8817-43146e9aa511","savedPayload":{"position":{"x":10885.593016169252,"y":25784.770630191128},"targetPosition":{"x":11520.659432515526,"y":26151.404641166373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 30.49724972497247,\n \"maxValue\": 34.49724972497247,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"098924d3-8a31-4c56-b07a-632e0889752e","savedPayload":{"position":{"x":42291.96795867103,"y":32268.218978262164},"targetPosition":{"x":42010.057740400785,"y":32172.513482660364},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"72854f3e-73e6-4f14-83fe-41d1ea4cda5b","savedPayload":{"position":{"x":42415.24056823689,"y":32427.15712118889},"targetPosition":{"x":42218.60389449541,"y":32410.684612069468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"be7e47ef-a530-4dc1-bf59-b731f1e49fa1"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6ad6409b-8a5b-496f-af21-318fb81737f3","savedPayload":{"position":{"x":42372.069336208144,"y":32508.321289471613},"targetPosition":{"x":42218.60389449541,"y":32410.684612069468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"0333bb7c-5101-441b-be9a-d9ff1a84f116"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"bcd0a4ad-d7d5-42d5-a588-e852e00909b2","savedPayload":{"position":{"x":42305.32178123967,"y":32568.82342695007},"targetPosition":{"x":42218.60389449541,"y":32410.684612069468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"913f8079-b038-444a-ad43-465fa0443c04"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"81b2bbd5-8289-4942-b66d-68bb797a81de","savedPayload":{"position":{"x":42208.55267167805,"y":32605.459882117968},"targetPosition":{"x":42218.60389449541,"y":32410.684612069468},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"bba7e1ab-5bca-44c0-a8aa-cd9570b338f3"}}}],"id":"3fccbd30-37a8-4354-8676-c6e2ccba024b","savedPayload":{"position":{"x":42218.60389449541,"y":32410.684612069468},"targetPosition":{"x":42010.057740400785,"y":32172.513482660364},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0}}},"id":"9b1accb8-338e-4cf0-a091-9a2e7a6af213","savedPayload":{"position":{"x":11049.368962444478,"y":25589.63450196087},"targetPosition":{"x":11520.659432515526,"y":26151.404641166373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"7ac9fb85-5cb5-4cae-aabc-58d62f16795b","savedPayload":{"position":{"x":11056.094159259414,"y":25157.905812631787},"targetPosition":{"x":11270.300361142958,"y":25462.267509798956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"on\",\n \"showPanels\": true\n}","id":"fe899d0f-4369-4f08-9523-42ef5ad155d3","savedPayload":{"position":{"x":11044.687566767388,"y":24785.684994138555},"targetPosition":{"x":11238.99836321756,"y":25097.30602060479},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"c53d8a77-b1d4-446c-9bef-8458b832c5e5"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"9204b6a0-973b-4b6b-acfc-b1b36359f0c9","savedPayload":{"position":{"x":11149.471950001018,"y":24741.116395384186},"targetPosition":{"x":11238.99836321756,"y":25097.30602060479},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"0f1e10be-0da8-4d10-93d7-35e407579cb0"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"on\"\n}","id":"09a8e3ba-e339-436f-af37-aad2c898bae7","savedPayload":{"position":{"x":11264.364804666504,"y":24731.408304797922},"targetPosition":{"x":11238.99836321756,"y":25097.30602060479},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"a85fc58e-5b58-449b-b733-c3a623e1d5d4"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"on\"\n}","id":"88e3f451-420e-466d-bce5-adb7779857c7","savedPayload":{"position":{"x":11377.560885580939,"y":24758.14004640882},"targetPosition":{"x":11238.99836321756,"y":25097.30602060479},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"302de277-a428-4cc0-8757-b2ef7de6040b"}}}],"id":"142681d0-01bc-4bb6-bb9d-71680c8c369f","savedPayload":{"position":{"x":11238.99836321756,"y":25097.30602060479},"targetPosition":{"x":11270.300361142958,"y":25462.267509798956},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":330,"radius":0}}},"id":"3b46509a-155a-4a50-8316-6e062067a5d8","savedPayload":{"position":{"x":11270.171199919978,"y":25462.257031393387},"targetPosition":{"x":11520.659432515526,"y":26151.404641166373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"55cddd8c-4865-4b50-b685-479968c5f8db","savedPayload":{"position":{"x":10707.795433903904,"y":24618.68289438679},"targetPosition":{"x":11343.062891749762,"y":24985.40702724926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":4215,"y":-155},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"WHB Trade # 8","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2019-09-06T13:08:49.877Z\",\n \"toDate\": \"2019-09-30T11:35:00.954Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"805fb81f-ec15-47dc-8c2c-ad866d8244ac","savedPayload":{"position":{"x":11530.963012151524,"y":27146.389682366458},"targetPosition":{"x":11781.52161073548,"y":26457.347208375606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 7720.152067063603,\n \"maxValue\": 11271.671139269009,\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"6f59dc06-72d4-4c6d-9516-ca6f5b0817e9","savedPayload":{"position":{"x":11310.183173981764,"y":27019.02608938791},"targetPosition":{"x":11781.52161073548,"y":26457.347208375606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"b9cd1efc-605d-4e8e-85aa-89f9b13e9d26","savedPayload":{"position":{"x":11146.429226860475,"y":26823.89851640657},"targetPosition":{"x":11781.52161073548,"y":26457.347208375606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"71b0b5cb-106f-41ae-b53a-e9660a986971","savedPayload":{"position":{"x":42790.85984116074,"y":31719.233776492896},"targetPosition":{"x":42854.03161104044,"y":32139.56916241419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"431ea989-085b-40ae-aa2a-d371d7cb68c6"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"3978b0df-cec1-4f64-89bc-743543589dca","savedPayload":{"position":{"x":42876.061077342776,"y":31730.7822686857},"targetPosition":{"x":42854.03161104044,"y":32139.56916241419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"ddd34b26-4fa8-4d7c-b76d-f671c92a6181"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"34f3c13c-16ff-4fcf-a076-99b69ec97d8e","savedPayload":{"position":{"x":42954.04679051187,"y":31758.971500275657},"targetPosition":{"x":42854.03161104044,"y":32139.56916241419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"683e24f7-010a-412e-ba21-f280e63a0f1d"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"bccdc13b-a125-4ae8-9ab0-df735dfcde5f","savedPayload":{"position":{"x":43023.88534268018,"y":31800.832624372077},"targetPosition":{"x":42854.03161104044,"y":32139.56916241419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"210b7e14-a6f0-4c56-b5e4-108f57ebb4c6"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"5147f164-f3aa-418e-b067-b5cfe65d8128","savedPayload":{"position":{"x":43084.06944803994,"y":31854.560859017813},"targetPosition":{"x":42854.03161104044,"y":32139.56916241419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"303572ad-cc90-46c9-8620-8454d557897b"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2684f6ca-0426-4bd4-a131-a67e078313b4","savedPayload":{"position":{"x":43133.02764140631,"y":31918.222149585996},"targetPosition":{"x":42854.03161104044,"y":32139.56916241419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"10142313-9ac8-4f4c-8105-88aec7bb7ce9"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"4e93a4f1-79c7-4f11-bccd-71745f89dd51","savedPayload":{"position":{"x":43169.32717550958,"y":31989.658810600602},"targetPosition":{"x":42854.03161104044,"y":32139.56916241419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"afbf02cf-97a6-4dc0-a3d5-95f29ba7781f"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"d232f19c-af9b-4e61-942c-81f40b67d50b","savedPayload":{"position":{"x":43191.85117798539,"y":32066.46971543374},"targetPosition":{"x":42854.03161104044,"y":32139.56916241419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"80ed873e-8017-45ec-b211-fc4604f5aaf6"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"c580235d-8869-4dfd-b1b5-766ffac9f178","savedPayload":{"position":{"x":43199.821317536844,"y":32146.067631304202},"targetPosition":{"x":42854.03161104044,"y":32139.56916241419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"6635502b-5366-430e-8dc1-4edaa21c2a7f"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6684f71a-f788-41e1-8c2d-057c20f7512d","savedPayload":{"position":{"x":43192.993258070885,"y":32225.73514413522},"targetPosition":{"x":42854.03161104044,"y":32139.56916241419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"3ebce074-9080-426a-baf9-61c1a04fc05b"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"a7b65528-19a9-4272-915e-5bf8714c1110","savedPayload":{"position":{"x":43171.69576907685,"y":32302.79680736446},"targetPosition":{"x":42854.03161104044,"y":32139.56916241419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"c424ba00-bbe0-4ae9-830a-3d2aa6fcaf4d"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"44366e8c-5b17-41c9-819b-7727ec64c145","savedPayload":{"position":{"x":43136.62114547726,"y":32374.64119649627},"targetPosition":{"x":42854.03161104044,"y":32139.56916241419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"3d048c1f-d45a-442a-9d44-362ad7770bb6"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"4cca0acf-adf0-4e8d-a4fb-75a0a165b818","savedPayload":{"position":{"x":43088.96939222135,"y":32438.843668840407},"targetPosition":{"x":42854.03161104044,"y":32139.56916241419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"c92d9454-d5fb-4954-a188-367dcd697af6"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"12f5aff4-908c-4653-a3c0-e4c9f6b0cedd","savedPayload":{"position":{"x":43030.35160206893,"y":32493.230560268083},"targetPosition":{"x":42854.03161104044,"y":32139.56916241419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"4810638a-c137-4df6-8016-c8a2540dc9e7"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"1e7db11a-99c8-4bfc-af59-d3a67b0c4f79","savedPayload":{"position":{"x":42962.81206606433,"y":32536.11191906487},"targetPosition":{"x":42854.03161104044,"y":32139.56916241419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"9c1f6b84-409e-4257-92ea-a9481d3509cd"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"0fb9bb3b-4494-4b42-b56e-f573cdc5334d","savedPayload":{"position":{"x":42865.233053494434,"y":32568.478219851128},"targetPosition":{"x":42854.03161104044,"y":32139.56916241419},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"dcd46168-1662-42c5-be91-f489d9a55833"}}}],"id":"f3af18cf-2e05-44d6-b397-511224ea20eb","savedPayload":{"position":{"x":42854.03161104044,"y":32139.56916241419},"targetPosition":{"x":42338.52785360633,"y":32191.754059284372},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"822d3491-7c8a-4070-995d-4bfecb5b0688","savedPayload":{"position":{"x":11059.310898221442,"y":26584.53913491122},"targetPosition":{"x":11781.52161073548,"y":26457.347208375606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 74192.540823965,\n \"maxValue\": 83096.56208773998,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"2b19e799-46bb-490d-96d5-fd621d981908","savedPayload":{"position":{"x":42667.79239155896,"y":32289.33904419851},"targetPosition":{"x":42342.656729161856,"y":32314.96731970425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"3cc81331-ccac-4bb9-8d45-42192a643ba0","savedPayload":{"position":{"x":42875.135955693084,"y":32507.778789344677},"targetPosition":{"x":42663.527060223234,"y":32469.51735106751},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"cc76acbb-9fd2-43f0-95de-dc78e1aaa2b5"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"62c9f317-67a3-40a0-975f-5741800ff014","savedPayload":{"position":{"x":42826.60322816436,"y":32609.541147366996},"targetPosition":{"x":42663.527060223234,"y":32469.51735106751},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"82148580-80cf-4a58-892f-bdaa3045f8f4","savedPayload":{"position":{"x":42663.527060223234,"y":32469.51735106751},"targetPosition":{"x":42342.656729161856,"y":32314.96731970425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"b58b38ec-3f93-4546-ae03-9703a1b598ae","savedPayload":{"position":{"x":11059.319335703329,"y":26330.074867957548},"targetPosition":{"x":11781.52161073548,"y":26457.347208375606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 29.75919814203639,\n \"maxValue\": 33.75919814203639,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"bc4416d4-3f06-4af6-8f62-e43e8cbc5116","savedPayload":{"position":{"x":42623.45869685996,"y":32394.560492777073},"targetPosition":{"x":42322.6844357122,"y":32375.14983165583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"7a733452-b0a7-40c9-b125-232063be8278","savedPayload":{"position":{"x":42791.436771396475,"y":32620.448767941074},"targetPosition":{"x":42587.23269015913,"y":32551.559953431955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"302bfaf2-6466-4aa0-9924-33999366b774"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"740a587a-2c3b-4929-926b-fc9328e74e18","savedPayload":{"position":{"x":42729.311376448095,"y":32713.677064196065},"targetPosition":{"x":42587.23269015913,"y":32551.559953431955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"f6868e09-2559-4fac-9631-54cf1a867c8a"}}}],"id":"9a279e63-1952-40a5-a821-87e37c5adfb5","savedPayload":{"position":{"x":42587.23269015913,"y":32551.559953431955},"targetPosition":{"x":42322.6844357122,"y":32375.14983165583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"076d51b1-bb12-400d-a7c8-1d6fb246ee2c","savedPayload":{"position":{"x":11146.455194389207,"y":26090.71319740036},"targetPosition":{"x":11781.52161073548,"y":26457.347208375606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 29.75919814203639,\n \"maxValue\": 33.75919814203639,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"c4a87f46-2b52-4006-8374-0e6a5e50761b","savedPayload":{"position":{"x":42552.83013689099,"y":32574.161545471397},"targetPosition":{"x":42270.91991862074,"y":32478.456049869597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"efcd6198-1543-4759-8ec2-399f8d4bf7c1","savedPayload":{"position":{"x":42676.10274645685,"y":32733.099688398124},"targetPosition":{"x":42479.46607271537,"y":32716.6271792787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"be7e47ef-a530-4dc1-bf59-b731f1e49fa1"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"49d7cb0f-004a-4c1b-a5db-debd4ede1e57","savedPayload":{"position":{"x":42632.9315144281,"y":32814.263856680845},"targetPosition":{"x":42479.46607271537,"y":32716.6271792787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"0333bb7c-5101-441b-be9a-d9ff1a84f116"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"e265187d-cb1b-41de-bf7e-8cf3c20ad1c7","savedPayload":{"position":{"x":42566.183959459624,"y":32874.7659941593},"targetPosition":{"x":42479.46607271537,"y":32716.6271792787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"913f8079-b038-444a-ad43-465fa0443c04"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"e6d31fda-a0ed-4326-8fef-28ad3bd3715b","savedPayload":{"position":{"x":42469.41484989801,"y":32911.4024493272},"targetPosition":{"x":42479.46607271537,"y":32716.6271792787},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"bba7e1ab-5bca-44c0-a8aa-cd9570b338f3"}}}],"id":"838f89da-8a06-4955-9408-18ffce705feb","savedPayload":{"position":{"x":42479.46607271537,"y":32716.6271792787},"targetPosition":{"x":42270.91991862074,"y":32478.456049869597},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"23e9cb2a-1f22-4cd7-bc1e-e738dc04fc45","savedPayload":{"position":{"x":11310.231140664433,"y":25895.577069170104},"targetPosition":{"x":11781.52161073548,"y":26457.347208375606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"42fa724c-6a47-4f21-b4c9-ad0a2b82aecc","savedPayload":{"position":{"x":11316.956337479369,"y":25463.84837984102},"targetPosition":{"x":11531.162539362913,"y":25768.21007700819},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"on\",\n \"showPanels\": true\n}","id":"da2768e3-4c52-4d18-97f5-31d2d63fd7de","savedPayload":{"position":{"x":11305.549744987344,"y":25091.62756134779},"targetPosition":{"x":11499.860541437516,"y":25403.24858781402},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"c53d8a77-b1d4-446c-9bef-8458b832c5e5"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"73d11300-ea38-41a0-a608-060b5eb9adb5","savedPayload":{"position":{"x":11410.334128220973,"y":25047.05896259342},"targetPosition":{"x":11499.860541437516,"y":25403.24858781402},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"0f1e10be-0da8-4d10-93d7-35e407579cb0"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"on\"\n}","id":"9676161d-dbdb-4cdd-a6ac-e24207f5ff7c","savedPayload":{"position":{"x":11525.22698288646,"y":25037.350872007155},"targetPosition":{"x":11499.860541437516,"y":25403.24858781402},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"a85fc58e-5b58-449b-b733-c3a623e1d5d4"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"on\"\n}","id":"e4f9e69c-3646-4d25-af77-8717ad9ab66c","savedPayload":{"position":{"x":11638.423063800894,"y":25064.08261361805},"targetPosition":{"x":11499.860541437516,"y":25403.24858781402},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"302de277-a428-4cc0-8757-b2ef7de6040b"}}}],"id":"b92dd34e-a93d-4eb6-a7e9-82da887e0bc2","savedPayload":{"position":{"x":11499.860541437516,"y":25403.24858781402},"targetPosition":{"x":11531.162539362913,"y":25768.21007700819},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"b7414a73-bfa6-47cf-a00a-5aeaf610be28","savedPayload":{"position":{"x":11531.033378139933,"y":25768.19959860262},"targetPosition":{"x":11781.52161073548,"y":26457.347208375606},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"02aeaf0c-7fd2-441a-bb6e-f16d25e2d561","savedPayload":{"position":{"x":10976.3106832169,"y":24350.16106821107},"targetPosition":{"x":11343.062891749762,"y":24985.40702724926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":4565,"y":-155},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"WHB Trade # 9","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2019-11-09T21:08:50.834Z\",\n \"toDate\": \"2019-11-28T06:18:52.622Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"8a429473-e3d7-447f-8e48-783b960fd6d1","savedPayload":{"position":{"x":11629.130583225704,"y":27407.408206318847},"targetPosition":{"x":11879.689181809661,"y":26718.365732327995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 5983.680206799375,\n \"maxValue\": 9535.19927900478,\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"227d2451-2772-442a-9ada-b4b829784a3d","savedPayload":{"position":{"x":11408.350745055945,"y":27280.0446133403},"targetPosition":{"x":11879.689181809661,"y":26718.365732327995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"0e6f8b28-cb80-47f1-ba2e-69b2bbd8410f","savedPayload":{"position":{"x":11244.596797934655,"y":27084.91704035896},"targetPosition":{"x":11879.689181809661,"y":26718.365732327995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"07dcf3c4-3be1-466a-901d-cf707d9e3aac","savedPayload":{"position":{"x":42889.02741223492,"y":31980.252300445285},"targetPosition":{"x":42952.19918211462,"y":32400.58768636658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"431ea989-085b-40ae-aa2a-d371d7cb68c6"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"d85a3b7a-25bf-4910-a98f-6d38f887ed2b","savedPayload":{"position":{"x":42974.22864841696,"y":31991.80079263809},"targetPosition":{"x":42952.19918211462,"y":32400.58768636658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"ddd34b26-4fa8-4d7c-b76d-f671c92a6181"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"98d9e2bc-c427-4f32-83bf-5169a7dfebed","savedPayload":{"position":{"x":43052.214361586055,"y":32019.990024228046},"targetPosition":{"x":42952.19918211462,"y":32400.58768636658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"683e24f7-010a-412e-ba21-f280e63a0f1d"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"c2658e2e-69ab-435a-b25a-03e0afe1feb0","savedPayload":{"position":{"x":43122.05291375436,"y":32061.851148324466},"targetPosition":{"x":42952.19918211462,"y":32400.58768636658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"210b7e14-a6f0-4c56-b5e4-108f57ebb4c6"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"bc89c88c-e650-43dd-8259-1a446a881652","savedPayload":{"position":{"x":43182.23701911412,"y":32115.5793829702},"targetPosition":{"x":42952.19918211462,"y":32400.58768636658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"303572ad-cc90-46c9-8620-8454d557897b"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2768e244-11b5-4632-803c-a1e5102e06d4","savedPayload":{"position":{"x":43231.195212480496,"y":32179.240673538385},"targetPosition":{"x":42952.19918211462,"y":32400.58768636658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"10142313-9ac8-4f4c-8105-88aec7bb7ce9"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"27b9b31c-1025-4b29-9d76-c5782edece6c","savedPayload":{"position":{"x":43267.49474658376,"y":32250.67733455299},"targetPosition":{"x":42952.19918211462,"y":32400.58768636658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"afbf02cf-97a6-4dc0-a3d5-95f29ba7781f"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f5e60174-4bf4-4f14-b5d6-5a5a2a790a1b","savedPayload":{"position":{"x":43290.01874905957,"y":32327.48823938613},"targetPosition":{"x":42952.19918211462,"y":32400.58768636658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"80ed873e-8017-45ec-b211-fc4604f5aaf6"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9d38671e-6b57-4755-84d1-242cf040c0bc","savedPayload":{"position":{"x":43297.98888861103,"y":32407.08615525659},"targetPosition":{"x":42952.19918211462,"y":32400.58768636658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"6635502b-5366-430e-8dc1-4edaa21c2a7f"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"1783ebc4-02ba-456e-9822-f3ce49a81ac9","savedPayload":{"position":{"x":43291.16082914507,"y":32486.753668087607},"targetPosition":{"x":42952.19918211462,"y":32400.58768636658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"3ebce074-9080-426a-baf9-61c1a04fc05b"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"b0ca8c0d-e781-4b44-bdf3-af88bf836382","savedPayload":{"position":{"x":43269.86334015103,"y":32563.815331316848},"targetPosition":{"x":42952.19918211462,"y":32400.58768636658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"c424ba00-bbe0-4ae9-830a-3d2aa6fcaf4d"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"a7c4e2b4-bf2c-40a6-8456-33d12e1d5403","savedPayload":{"position":{"x":43234.78871655144,"y":32635.65972044866},"targetPosition":{"x":42952.19918211462,"y":32400.58768636658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"3d048c1f-d45a-442a-9d44-362ad7770bb6"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"78fd1ec3-3b87-4b48-a383-f31007e60f0e","savedPayload":{"position":{"x":43187.13696329553,"y":32699.862192792796},"targetPosition":{"x":42952.19918211462,"y":32400.58768636658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"c92d9454-d5fb-4954-a188-367dcd697af6"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"949965e1-5a9d-4cb8-b481-bbe7764c0a7d","savedPayload":{"position":{"x":43128.51917314311,"y":32754.24908422047},"targetPosition":{"x":42952.19918211462,"y":32400.58768636658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"4810638a-c137-4df6-8016-c8a2540dc9e7"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"55e22f3a-271d-46a2-91f1-94b2c6e300d3","savedPayload":{"position":{"x":43060.97963713852,"y":32797.13044301726},"targetPosition":{"x":42952.19918211462,"y":32400.58768636658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"9c1f6b84-409e-4257-92ea-a9481d3509cd"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"faf88377-ddf0-4699-b138-03783fcb476a","savedPayload":{"position":{"x":42963.40062456862,"y":32829.49674380352},"targetPosition":{"x":42952.19918211462,"y":32400.58768636658},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"dcd46168-1662-42c5-be91-f489d9a55833"}}}],"id":"2262f166-6b25-46b4-9814-baffc20fe631","savedPayload":{"position":{"x":42952.19918211462,"y":32400.58768636658},"targetPosition":{"x":42436.69542468051,"y":32452.77258323676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":190,"radius":0}}},"id":"8edeb70b-63c4-4e7f-9e14-6a473802514a","savedPayload":{"position":{"x":11157.478469295622,"y":26845.55765886361},"targetPosition":{"x":11879.689181809661,"y":26718.365732327995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 72312.36765037113,\n \"maxValue\": 81216.38891414611,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"56827497-209e-4f9c-bc0c-c84c4fd931e8","savedPayload":{"position":{"x":42765.95996263315,"y":32550.3575681509},"targetPosition":{"x":42440.82430023604,"y":32575.98584365664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"d287f373-4519-4caf-b080-918b1d2e1840","savedPayload":{"position":{"x":42973.30352676727,"y":32768.797313297066},"targetPosition":{"x":42761.69463129742,"y":32730.535875019898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"cc76acbb-9fd2-43f0-95de-dc78e1aaa2b5"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"d92d865d-1158-4a51-bbb7-0e76d3bcfb31","savedPayload":{"position":{"x":42924.77079923854,"y":32870.55967131938},"targetPosition":{"x":42761.69463129742,"y":32730.535875019898},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"619c5cb3-1f4d-46db-be55-af5513a25480","savedPayload":{"position":{"x":42761.69463129742,"y":32730.535875019898},"targetPosition":{"x":42440.82430023604,"y":32575.98584365664},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"57134893-5d42-47c4-a33e-b626daee3d31","savedPayload":{"position":{"x":11157.486906777509,"y":26591.093391909937},"targetPosition":{"x":11879.689181809661,"y":26718.365732327995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 28.914558122478873,\n \"maxValue\": 32.91455812247887,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"a398389e-cfd6-464e-ae05-aaf19d8cee9a","savedPayload":{"position":{"x":42721.626267934145,"y":32655.57901672946},"targetPosition":{"x":42420.85200678639,"y":32636.16835560822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"ba164ed9-fd73-4cac-b34c-6adf31a6e4c9","savedPayload":{"position":{"x":42889.60434247066,"y":32881.46729189347},"targetPosition":{"x":42685.40026123331,"y":32812.57847738435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"302bfaf2-6466-4aa0-9924-33999366b774"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e6830035-9dd4-4c7e-b971-1ac218d2ce22","savedPayload":{"position":{"x":42827.47894752228,"y":32974.695588148454},"targetPosition":{"x":42685.40026123331,"y":32812.57847738435},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"f6868e09-2559-4fac-9631-54cf1a867c8a"}}}],"id":"07b26510-17ec-4a75-9f58-4b12435dce8f","savedPayload":{"position":{"x":42685.40026123331,"y":32812.57847738435},"targetPosition":{"x":42420.85200678639,"y":32636.16835560822},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"562868e3-1c8b-42ae-9daa-41c11847c0a8","savedPayload":{"position":{"x":11244.622765463388,"y":26351.73172135275},"targetPosition":{"x":11879.689181809661,"y":26718.365732327995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 28.914558122478873,\n \"maxValue\": 32.91455812247887,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"b913fd8d-1b3c-4253-a112-fa09c0040e79","savedPayload":{"position":{"x":42650.99770796517,"y":32835.18006942379},"targetPosition":{"x":42369.087489694924,"y":32739.474573821986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"18b734d8-9a69-4453-aa2a-0df37ee0517b","savedPayload":{"position":{"x":42774.27031753103,"y":32994.11821235051},"targetPosition":{"x":42577.63364378955,"y":32977.64570323109},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"be7e47ef-a530-4dc1-bf59-b731f1e49fa1"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"040ca19e-2172-43a4-9460-1e61b8433fa5","savedPayload":{"position":{"x":42731.09908550228,"y":33075.28238063323},"targetPosition":{"x":42577.63364378955,"y":32977.64570323109},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"0333bb7c-5101-441b-be9a-d9ff1a84f116"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"f9deb48c-4a21-4e77-8668-e50d14cb2561","savedPayload":{"position":{"x":42664.35153053381,"y":33135.784518111686},"targetPosition":{"x":42577.63364378955,"y":32977.64570323109},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"913f8079-b038-444a-ad43-465fa0443c04"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"836c53e8-cdba-47fa-8a88-25c2a1f23639","savedPayload":{"position":{"x":42567.58242097219,"y":33172.420973279586},"targetPosition":{"x":42577.63364378955,"y":32977.64570323109},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"bba7e1ab-5bca-44c0-a8aa-cd9570b338f3"}}}],"id":"814a1ba2-d80a-4a39-b641-5a6f389b3ce8","savedPayload":{"position":{"x":42577.63364378955,"y":32977.64570323109},"targetPosition":{"x":42369.087489694924,"y":32739.474573821986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0}}},"id":"a005d251-3ea7-4024-a5c6-2044cd4fc51b","savedPayload":{"position":{"x":11408.398711738613,"y":26156.595593122493},"targetPosition":{"x":11879.689181809661,"y":26718.365732327995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"bea12df8-31b9-4455-9e84-85a5cba981e9","savedPayload":{"position":{"x":11415.123908553549,"y":25724.86690379341},"targetPosition":{"x":11629.330110437093,"y":26029.228600960578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"on\",\n \"showPanels\": true\n}","id":"fc8b39a8-0890-4946-ac98-ba9ccdb1205b","savedPayload":{"position":{"x":11403.717316061524,"y":25352.646085300177},"targetPosition":{"x":11598.028112511696,"y":25664.26711176641},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"c53d8a77-b1d4-446c-9bef-8458b832c5e5"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"6a161094-b86c-441a-bad2-4e28cbe91ddb","savedPayload":{"position":{"x":11508.501699295153,"y":25308.077486545808},"targetPosition":{"x":11598.028112511696,"y":25664.26711176641},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"0f1e10be-0da8-4d10-93d7-35e407579cb0"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"on\"\n}","id":"1e739a78-3147-40b3-b5c8-02999c56b0da","savedPayload":{"position":{"x":11623.39455396064,"y":25298.369395959544},"targetPosition":{"x":11598.028112511696,"y":25664.26711176641},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"a85fc58e-5b58-449b-b733-c3a623e1d5d4"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"on\"\n}","id":"e2ea6353-9f39-41de-9cd5-f79b25694088","savedPayload":{"position":{"x":11736.590634875074,"y":25325.10113757044},"targetPosition":{"x":11598.028112511696,"y":25664.26711176641},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"302de277-a428-4cc0-8757-b2ef7de6040b"}}}],"id":"27d917fc-f2c3-4770-816b-bb0c456c2c5e","savedPayload":{"position":{"x":11598.028112511696,"y":25664.26711176641},"targetPosition":{"x":11629.330110437093,"y":26029.228600960578},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":330,"radius":0}}},"id":"c62b2d86-4d42-4ea7-8286-542093df4c50","savedPayload":{"position":{"x":11629.200949214113,"y":26029.21812255501},"targetPosition":{"x":11879.689181809661,"y":26718.365732327995},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"59d377e6-717b-418a-8573-75684df8ee0e","savedPayload":{"position":{"x":11343.057713338505,"y":24251.875393001086},"targetPosition":{"x":11343.062891749762,"y":24985.40702724926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":4915,"y":-155},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"WHB Trade # 10","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2020-01-18T19:42:53.927Z\",\n \"toDate\": \"2020-01-30T14:03:43.072Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"98a6f8c8-092d-442c-bc8c-a10fbb675dfb","savedPayload":{"position":{"x":11738.70827859202,"y":27626.07566372738},"targetPosition":{"x":11989.266877175976,"y":26937.03318973653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 7106.159183677988,\n \"maxValue\": 9379.131389889448,\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"575b5329-5331-4b84-9197-eb2d8887fd01","savedPayload":{"position":{"x":11517.92844042226,"y":27498.712070748832},"targetPosition":{"x":11989.266877175976,"y":26937.03318973653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"1859a9dd-9674-4864-9ae9-25de0a46d1fb","savedPayload":{"position":{"x":11354.17449330097,"y":27303.584497767493},"targetPosition":{"x":11989.266877175976,"y":26937.03318973653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"6f6b77a1-4b88-4859-a964-cd732f62526a","savedPayload":{"position":{"x":42998.60510760124,"y":32198.91975785382},"targetPosition":{"x":43061.77687748094,"y":32619.255143775114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"431ea989-085b-40ae-aa2a-d371d7cb68c6"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"745e9941-3b1d-45fe-a988-632ea177da22","savedPayload":{"position":{"x":43083.806343783275,"y":32210.468250046622},"targetPosition":{"x":43061.77687748094,"y":32619.255143775114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"ddd34b26-4fa8-4d7c-b76d-f671c92a6181"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"391cc8d4-d64c-4a5f-91f0-3290e5326884","savedPayload":{"position":{"x":43161.79205695237,"y":32238.65748163658},"targetPosition":{"x":43061.77687748094,"y":32619.255143775114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"683e24f7-010a-412e-ba21-f280e63a0f1d"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"5dab827a-b68e-4341-b20a-ce05fa7b1007","savedPayload":{"position":{"x":43231.63060912068,"y":32280.518605733},"targetPosition":{"x":43061.77687748094,"y":32619.255143775114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"210b7e14-a6f0-4c56-b5e4-108f57ebb4c6"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"68e86dc8-9863-4d4a-abe8-3bd536f0025b","savedPayload":{"position":{"x":43291.81471448044,"y":32334.246840378735},"targetPosition":{"x":43061.77687748094,"y":32619.255143775114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"303572ad-cc90-46c9-8620-8454d557897b"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"56b2bb77-3288-4977-9b9d-eab529fb23ff","savedPayload":{"position":{"x":43340.77290784681,"y":32397.90813094692},"targetPosition":{"x":43061.77687748094,"y":32619.255143775114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"10142313-9ac8-4f4c-8105-88aec7bb7ce9"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"b2bebecd-ca6d-4892-ba4a-13c313ae05c6","savedPayload":{"position":{"x":43377.07244195008,"y":32469.344791961525},"targetPosition":{"x":43061.77687748094,"y":32619.255143775114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"afbf02cf-97a6-4dc0-a3d5-95f29ba7781f"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"dd48e944-364b-46af-bbe4-3845dd69d8fe","savedPayload":{"position":{"x":43399.596444425886,"y":32546.155696794664},"targetPosition":{"x":43061.77687748094,"y":32619.255143775114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"80ed873e-8017-45ec-b211-fc4604f5aaf6"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"c0a25e05-9d34-4ea7-b891-d35e5192076d","savedPayload":{"position":{"x":43407.56658397734,"y":32625.753612665125},"targetPosition":{"x":43061.77687748094,"y":32619.255143775114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"6635502b-5366-430e-8dc1-4edaa21c2a7f"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"0897f11f-5f48-44e9-8295-8a2e08d86e8d","savedPayload":{"position":{"x":43400.738524511384,"y":32705.42112549614},"targetPosition":{"x":43061.77687748094,"y":32619.255143775114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"3ebce074-9080-426a-baf9-61c1a04fc05b"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"5371e758-103d-442f-9dea-3628ae9a21bf","savedPayload":{"position":{"x":43379.441035517346,"y":32782.48278872538},"targetPosition":{"x":43061.77687748094,"y":32619.255143775114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"c424ba00-bbe0-4ae9-830a-3d2aa6fcaf4d"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"07df72e6-d52c-433a-a80a-0b5714c75a64","savedPayload":{"position":{"x":43344.366411917756,"y":32854.327177857194},"targetPosition":{"x":43061.77687748094,"y":32619.255143775114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"3d048c1f-d45a-442a-9d44-362ad7770bb6"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"9b25541d-ee6e-427c-895e-58bdcd2cda65","savedPayload":{"position":{"x":43296.71465866185,"y":32918.52965020133},"targetPosition":{"x":43061.77687748094,"y":32619.255143775114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"c92d9454-d5fb-4954-a188-367dcd697af6"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"8f00f381-3ddc-4ee6-b06c-471da7d86acf","savedPayload":{"position":{"x":43238.09686850943,"y":32972.916541629005},"targetPosition":{"x":43061.77687748094,"y":32619.255143775114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"4810638a-c137-4df6-8016-c8a2540dc9e7"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"00ca2842-8540-45d4-bbeb-c4922bf788e5","savedPayload":{"position":{"x":43170.55733250483,"y":33015.797900425794},"targetPosition":{"x":43061.77687748094,"y":32619.255143775114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"9c1f6b84-409e-4257-92ea-a9481d3509cd"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"6dc21603-6d82-48b7-b71d-06a15b3e7bcf","savedPayload":{"position":{"x":43072.97831993493,"y":33048.16420121205},"targetPosition":{"x":43061.77687748094,"y":32619.255143775114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"dcd46168-1662-42c5-be91-f489d9a55833"}}}],"id":"b72e9357-aafa-45f4-a929-7bb0e6c0d925","savedPayload":{"position":{"x":43061.77687748094,"y":32619.255143775114},"targetPosition":{"x":42546.273120046826,"y":32671.440040645295},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"25645ea6-200e-4ab5-8c4e-54ee1ae91b4b","savedPayload":{"position":{"x":11267.056164661937,"y":27064.225116272144},"targetPosition":{"x":11989.266877175976,"y":26937.03318973653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 76032.44400773366,\n \"maxValue\": 84936.46527150864,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"48fce367-35e2-4175-affc-5864e62f5d5e","savedPayload":{"position":{"x":42875.53765799946,"y":32769.02502555943},"targetPosition":{"x":42550.401995602355,"y":32794.65330106518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"cf491202-2614-4d8c-9d17-644ca7fcf220","savedPayload":{"position":{"x":43082.88122213358,"y":32987.4647707056},"targetPosition":{"x":42871.27232666373,"y":32949.20333242843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"cc76acbb-9fd2-43f0-95de-dc78e1aaa2b5"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"58fa9a6d-7b2e-43ab-8396-e85600681c87","savedPayload":{"position":{"x":43034.348494604856,"y":33089.227128727915},"targetPosition":{"x":42871.27232666373,"y":32949.20333242843},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"cfd2809f-9528-4d5c-83cc-912b0c4dd3b6","savedPayload":{"position":{"x":42871.27232666373,"y":32949.20333242843},"targetPosition":{"x":42550.401995602355,"y":32794.65330106518},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"7c1ae7ad-da91-4822-a9a4-8d6956c2277a","savedPayload":{"position":{"x":11267.064602143824,"y":26809.76084931847},"targetPosition":{"x":11989.266877175976,"y":26937.03318973653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 30.585747463635208,\n \"maxValue\": 34.58574746363521,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"4764ede7-f519-4e52-a09b-3a4210c37f3a","savedPayload":{"position":{"x":42831.20396330046,"y":32874.246474137995},"targetPosition":{"x":42530.4297021527,"y":32854.835813016754},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"f3141c64-4340-4ed5-8d45-7179db29ed91","savedPayload":{"position":{"x":42999.182037836974,"y":33100.134749302},"targetPosition":{"x":42794.97795659963,"y":33031.24593479288},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"302bfaf2-6466-4aa0-9924-33999366b774"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"77140395-d758-4ff0-b451-2227ef8a2c65","savedPayload":{"position":{"x":42937.056642888594,"y":33193.36304555699},"targetPosition":{"x":42794.97795659963,"y":33031.24593479288},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"f6868e09-2559-4fac-9631-54cf1a867c8a"}}}],"id":"0a0cecb2-a9cf-40c7-865a-359d79af91ba","savedPayload":{"position":{"x":42794.97795659963,"y":33031.24593479288},"targetPosition":{"x":42530.4297021527,"y":32854.835813016754},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"bdddb90a-9c8a-4a9a-b53f-782eaccfd600","savedPayload":{"position":{"x":11354.200460829703,"y":26570.399178761283},"targetPosition":{"x":11989.266877175976,"y":26937.03318973653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 30.585747463635208,\n \"maxValue\": 34.58574746363521,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"5f13d8d4-680e-4e3e-8ee5-9a568f09d1e8","savedPayload":{"position":{"x":42760.57540333149,"y":33053.84752683232},"targetPosition":{"x":42478.66518506124,"y":32958.14203123052},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e956847b-5bdf-40a1-b709-f7a305405781","savedPayload":{"position":{"x":42883.848012897346,"y":33212.78566975905},"targetPosition":{"x":42687.21133915587,"y":33196.31316063962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"be7e47ef-a530-4dc1-bf59-b731f1e49fa1"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"a4980108-3c0d-45fb-aa84-a50aeea707f1","savedPayload":{"position":{"x":42840.6767808686,"y":33293.949838041764},"targetPosition":{"x":42687.21133915587,"y":33196.31316063962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"0333bb7c-5101-441b-be9a-d9ff1a84f116"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"22d74fe7-172e-45b8-b26d-5343c5c9bde5","savedPayload":{"position":{"x":42773.92922590012,"y":33354.45197552022},"targetPosition":{"x":42687.21133915587,"y":33196.31316063962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"913f8079-b038-444a-ad43-465fa0443c04"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"25d5b1e9-1e9d-44f6-bb35-2f1f9839a3e6","savedPayload":{"position":{"x":42677.160116338506,"y":33391.08843068812},"targetPosition":{"x":42687.21133915587,"y":33196.31316063962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"bba7e1ab-5bca-44c0-a8aa-cd9570b338f3"}}}],"id":"7a54e7c2-7189-4f18-b62e-f6463b1f6c0e","savedPayload":{"position":{"x":42687.21133915587,"y":33196.31316063962},"targetPosition":{"x":42478.66518506124,"y":32958.14203123052},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"f24234bf-a0bb-4ea4-ba30-c17c410f56cf","savedPayload":{"position":{"x":11517.976407104929,"y":26375.263050531026},"targetPosition":{"x":11989.266877175976,"y":26937.03318973653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"4c1de588-e7b4-405d-9903-08a61fa184c3","savedPayload":{"position":{"x":11524.701603919864,"y":25943.534361201942},"targetPosition":{"x":11738.907805803408,"y":26247.89605836911},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"on\",\n \"showPanels\": true\n}","id":"26582e8d-8e8e-4277-a9c8-bf6f5c4bce6e","savedPayload":{"position":{"x":11513.29501142784,"y":25571.31354270871},"targetPosition":{"x":11707.605807878012,"y":25882.934569174944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"c53d8a77-b1d4-446c-9bef-8458b832c5e5"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"d4c8bd3f-5aac-450d-ab46-995966eba13e","savedPayload":{"position":{"x":11618.079394661469,"y":25526.74494395434},"targetPosition":{"x":11707.605807878012,"y":25882.934569174944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"0f1e10be-0da8-4d10-93d7-35e407579cb0"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"on\"\n}","id":"1de58ab7-2cc5-46cd-9392-2c96e298fe56","savedPayload":{"position":{"x":11732.972249326955,"y":25517.036853368078},"targetPosition":{"x":11707.605807878012,"y":25882.934569174944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"a85fc58e-5b58-449b-b733-c3a623e1d5d4"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"on\"\n}","id":"b7d9dbf7-7577-42c2-8a5f-60faa8487f65","savedPayload":{"position":{"x":11846.16833024139,"y":25543.768594978974},"targetPosition":{"x":11707.605807878012,"y":25882.934569174944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"302de277-a428-4cc0-8757-b2ef7de6040b"}}}],"id":"efb5079f-c3e9-42dd-b6ff-5831e92ac089","savedPayload":{"position":{"x":11707.605807878012,"y":25882.934569174944},"targetPosition":{"x":11738.907805803408,"y":26247.89605836911},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1920,"y":80},"width":150,"height":40,"radius":0}}},"id":"35a4f6af-aa18-44e7-b1fd-ce61b27c9f4c","savedPayload":{"position":{"x":11738.778644580429,"y":26247.885579963542},"targetPosition":{"x":11989.266877175976,"y":26937.03318973653},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"ced23c1d-e508-43c9-a953-f6252a28cbfe","savedPayload":{"position":{"x":11709.722789191848,"y":24350.167578743563},"targetPosition":{"x":11343.062891749762,"y":24985.40702724926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":5265,"y":-155},"width":240,"height":113.625,"radius":0}}},{"type":"Time Machine","name":"WHB Trade # 11","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2020-03-05T09:20:18.418Z\",\n \"toDate\": \"2020-03-17T03:41:07.563Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"47125248-3963-4f0f-8209-9108d87d04da","savedPayload":{"position":{"x":11899.616003917567,"y":27812.19867481452},"targetPosition":{"x":12150.174602501524,"y":27123.15620082367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 4062.9504478174003,\n \"maxValue\": 9718.8326479775,\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"c93cf7d4-5f6c-4ec0-a56e-bbc4ca09cd2f","savedPayload":{"position":{"x":11678.836165747807,"y":27684.835081835972},"targetPosition":{"x":12150.174602501524,"y":27123.15620082367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"44537787-7af6-4bb9-8264-f1a5adcd3619","savedPayload":{"position":{"x":11515.082218626518,"y":27489.707508854633},"targetPosition":{"x":12150.174602501524,"y":27123.15620082367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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":"c1e22b52-fe76-4cd6-8fe8-c9254cc4f981","savedPayload":{"position":{"x":43159.51283292678,"y":32385.04276894096},"targetPosition":{"x":43222.68460280648,"y":32805.37815486225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"431ea989-085b-40ae-aa2a-d371d7cb68c6"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"ff2b5b7c-c2f8-4227-a0a2-4a0c45ae40ce","savedPayload":{"position":{"x":43244.71406910882,"y":32396.591261133763},"targetPosition":{"x":43222.68460280648,"y":32805.37815486225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"ddd34b26-4fa8-4d7c-b76d-f671c92a6181"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"76f979fe-d00d-407e-9db9-1d9780be9c42","savedPayload":{"position":{"x":43322.699782277916,"y":32424.78049272372},"targetPosition":{"x":43222.68460280648,"y":32805.37815486225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"683e24f7-010a-412e-ba21-f280e63a0f1d"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"59e12e38-c23e-40a4-8248-0c0ce1d2b1c1","savedPayload":{"position":{"x":43392.538334446224,"y":32466.64161682014},"targetPosition":{"x":43222.68460280648,"y":32805.37815486225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"210b7e14-a6f0-4c56-b5e4-108f57ebb4c6"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"c54d28a3-6600-476d-bf82-56b318df7dbf","savedPayload":{"position":{"x":43452.722439805984,"y":32520.369851465875},"targetPosition":{"x":43222.68460280648,"y":32805.37815486225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"303572ad-cc90-46c9-8620-8454d557897b"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"1f98d80f-b1a9-45d0-8ad6-0ae82c8e0dfc","savedPayload":{"position":{"x":43501.68063317236,"y":32584.03114203406},"targetPosition":{"x":43222.68460280648,"y":32805.37815486225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"10142313-9ac8-4f4c-8105-88aec7bb7ce9"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"04e51237-a6d6-44f4-838c-48e9537dae12","savedPayload":{"position":{"x":43537.98016727562,"y":32655.467803048665},"targetPosition":{"x":43222.68460280648,"y":32805.37815486225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"afbf02cf-97a6-4dc0-a3d5-95f29ba7781f"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e33eed45-0fd3-4d26-866d-cce07b26c713","savedPayload":{"position":{"x":43560.50416975143,"y":32732.278707881804},"targetPosition":{"x":43222.68460280648,"y":32805.37815486225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"80ed873e-8017-45ec-b211-fc4604f5aaf6"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"0b6c5795-3e37-4947-b93d-77b6a2cfeaf0","savedPayload":{"position":{"x":43568.47430930289,"y":32811.876623752265},"targetPosition":{"x":43222.68460280648,"y":32805.37815486225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"6635502b-5366-430e-8dc1-4edaa21c2a7f"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"a78aeeef-9dcc-4399-9eb9-946aac2a9145","savedPayload":{"position":{"x":43561.64624983693,"y":32891.54413658328},"targetPosition":{"x":43222.68460280648,"y":32805.37815486225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"3ebce074-9080-426a-baf9-61c1a04fc05b"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"ca109357-bfff-43c2-98f2-5cf89f43a7b1","savedPayload":{"position":{"x":43540.34876084289,"y":32968.60579981252},"targetPosition":{"x":43222.68460280648,"y":32805.37815486225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"c424ba00-bbe0-4ae9-830a-3d2aa6fcaf4d"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"a8933829-4b1f-4797-92c2-87aac439d582","savedPayload":{"position":{"x":43505.2741372433,"y":33040.450188944335},"targetPosition":{"x":43222.68460280648,"y":32805.37815486225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"3d048c1f-d45a-442a-9d44-362ad7770bb6"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"793fe9de-437e-41fb-94d0-153a31ca7f6c","savedPayload":{"position":{"x":43457.62238398739,"y":33104.65266128847},"targetPosition":{"x":43222.68460280648,"y":32805.37815486225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"c92d9454-d5fb-4954-a188-367dcd697af6"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"fa4988dd-e78d-4865-a934-9fa7edeb5553","savedPayload":{"position":{"x":43399.00459383497,"y":33159.039552716145},"targetPosition":{"x":43222.68460280648,"y":32805.37815486225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"4810638a-c137-4df6-8016-c8a2540dc9e7"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"37c30830-ce1d-4285-aceb-6bf77f2eb86f","savedPayload":{"position":{"x":43331.46505783038,"y":33201.920911512934},"targetPosition":{"x":43222.68460280648,"y":32805.37815486225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"9c1f6b84-409e-4257-92ea-a9481d3509cd"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"8155a7ef-07f6-4713-b702-4d3e5f79d7e6","savedPayload":{"position":{"x":43233.88604526048,"y":33234.28721229919},"targetPosition":{"x":43222.68460280648,"y":32805.37815486225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"dcd46168-1662-42c5-be91-f489d9a55833"}}}],"id":"58427736-dd2c-4e79-8afc-b27d69390e49","savedPayload":{"position":{"x":43222.68460280648,"y":32805.37815486225},"targetPosition":{"x":42707.18084537237,"y":32857.56305173243},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":190,"radius":0}}},"id":"1362bf92-f1c3-4bf6-880e-7ba9c233485d","savedPayload":{"position":{"x":11427.963889987484,"y":27250.348127359284},"targetPosition":{"x":12150.174602501524,"y":27123.15620082367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 80325.55143652721,\n \"maxValue\": 89229.57270030219,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"5c62f816-9dea-4a9f-97a6-a6bfd57a0056","savedPayload":{"position":{"x":43036.44538332501,"y":32955.14803664657},"targetPosition":{"x":42711.3097209279,"y":32980.77631215232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"7e61aa38-9dc5-412e-aa24-8e34a9bbe77f","savedPayload":{"position":{"x":43243.78894745913,"y":33173.58778179274},"targetPosition":{"x":43032.18005198928,"y":33135.32634351557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"cc76acbb-9fd2-43f0-95de-dc78e1aaa2b5"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"dda2e094-1c7b-4dd2-8fcc-8e4e6be22831","savedPayload":{"position":{"x":43195.2562199304,"y":33275.350139815055},"targetPosition":{"x":43032.18005198928,"y":33135.32634351557},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"1a954b5c-1054-4d19-8534-f2c192aa1673","savedPayload":{"position":{"x":43032.18005198928,"y":33135.32634351557},"targetPosition":{"x":42711.3097209279,"y":32980.77631215232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"e7edf2bb-eeda-4e7b-9c54-2e3f6845ae19","savedPayload":{"position":{"x":11427.972327469372,"y":26995.88386040561},"targetPosition":{"x":12150.174602501524,"y":27123.15620082367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"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 \"minValue\": 32.514362547365785,\n \"maxValue\": 36.514362547365785,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"154f3b50-8bc0-4c1f-a4a6-8ce6fe5ccd78","savedPayload":{"position":{"x":42992.111688626006,"y":33060.369485225136},"targetPosition":{"x":42691.33742747825,"y":33040.958824103895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"795caa8b-5c99-402a-8e4d-123b2aded5c9","savedPayload":{"position":{"x":43160.08976316252,"y":33286.25776038914},"targetPosition":{"x":42955.885681925174,"y":33217.36894588002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"302bfaf2-6466-4aa0-9924-33999366b774"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"8ffc3c20-2906-4f2e-bae8-5f49caa2add2","savedPayload":{"position":{"x":43097.96436821414,"y":33379.48605664413},"targetPosition":{"x":42955.885681925174,"y":33217.36894588002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"f6868e09-2559-4fac-9631-54cf1a867c8a"}}}],"id":"9515dcad-f9a5-4586-8bad-c1193430ea46","savedPayload":{"position":{"x":42955.885681925174,"y":33217.36894588002},"targetPosition":{"x":42691.33742747825,"y":33040.958824103895},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"cbd30e61-af44-4269-a3a7-37b2c4db75b6","savedPayload":{"position":{"x":11515.10818615525,"y":26756.522189848423},"targetPosition":{"x":12150.174602501524,"y":27123.15620082367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"MACD","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"minValue\": 32.514362547365785,\n \"maxValue\": 36.514362547365785,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"5cebf736-2d10-4360-aafd-307733ead85f","savedPayload":{"position":{"x":42921.48312865703,"y":33239.970537919464},"targetPosition":{"x":42639.572910386785,"y":33144.26504231766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"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":"MACD 122609","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"122a0a76-abf2-4527-ae0c-f7b920ba5c7a","savedPayload":{"position":{"x":43044.75573822289,"y":33398.90868084619},"targetPosition":{"x":42848.11906448141,"y":33382.43617172676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 122609","id":"be7e47ef-a530-4dc1-bf59-b731f1e49fa1"}}},{"type":"Layer","name":"MACD 031016","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"c4607111-6458-4d21-b886-e5dadb5a0fa4","savedPayload":{"position":{"x":43001.58450619414,"y":33480.072849128905},"targetPosition":{"x":42848.11906448141,"y":33382.43617172676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 031016","id":"0333bb7c-5101-441b-be9a-d9ff1a84f116"}}},{"type":"Layer","name":"MACD 081709","code":"{ \n\"status\": \"off\"\n}","id":"45264514-69ad-4453-9257-73ef6ea659b0","savedPayload":{"position":{"x":42934.83695122567,"y":33540.57498660736},"targetPosition":{"x":42848.11906448141,"y":33382.43617172676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 081709","id":"913f8079-b038-444a-ad43-465fa0443c04"}}},{"type":"Layer","name":"MACD 245209","code":"{ \n\"status\": \"off\"\n}","id":"0258c5ab-a4a8-4e56-9795-624d45ce4c9b","savedPayload":{"position":{"x":42838.06784166405,"y":33577.21144177526},"targetPosition":{"x":42848.11906448141,"y":33382.43617172676},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"MACD 245209","id":"bba7e1ab-5bca-44c0-a8aa-cd9570b338f3"}}}],"id":"b6d0e089-22b1-42d3-aad1-fd2a6de66f08","savedPayload":{"position":{"x":42848.11906448141,"y":33382.43617172676},"targetPosition":{"x":42639.572910386785,"y":33144.26504231766},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":450,"y":80},"width":150,"height":40,"radius":0}}},"id":"1aef5241-cf7a-48d6-ab75-02851a10a3ae","savedPayload":{"position":{"x":11678.884132430476,"y":26561.386061618166},"targetPosition":{"x":12150.174602501524,"y":27123.15620082367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"7e2524b6-6239-4ce3-ab5c-e0299b715292","savedPayload":{"position":{"x":11685.609329245412,"y":26129.657372289083},"targetPosition":{"x":11899.815531128956,"y":26434.01906945625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 4,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"on\",\n \"showPanels\": true\n}","id":"9bc1f57a-9343-4916-9d0d-a782b0c98110","savedPayload":{"position":{"x":11674.202736753386,"y":25757.43655379585},"targetPosition":{"x":11868.513533203559,"y":26069.057580262084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"c53d8a77-b1d4-446c-9bef-8458b832c5e5"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"a7797830-829f-417c-8960-90b8c276b39b","savedPayload":{"position":{"x":11778.987119987016,"y":25712.86795504148},"targetPosition":{"x":11868.513533203559,"y":26069.057580262084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"0f1e10be-0da8-4d10-93d7-35e407579cb0"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"on\"\n}","id":"8e4d0dba-7c6d-43a2-a9b6-4538233276fc","savedPayload":{"position":{"x":11893.879974652502,"y":25703.159864455218},"targetPosition":{"x":11868.513533203559,"y":26069.057580262084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"a85fc58e-5b58-449b-b733-c3a623e1d5d4"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"on\"\n}","id":"f6d69dd3-2ea6-4b0c-8126-529cad1b2f78","savedPayload":{"position":{"x":12007.076055566937,"y":25729.891606066114},"targetPosition":{"x":11868.513533203559,"y":26069.057580262084},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"302de277-a428-4cc0-8757-b2ef7de6040b"}}}],"id":"9d9e0447-6aa0-4697-a4a0-2ac3fe3d0ae3","savedPayload":{"position":{"x":11868.513533203559,"y":26069.057580262084},"targetPosition":{"x":11899.815531128956,"y":26434.01906945625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":330,"radius":0}}},"id":"cb32315d-5eaf-4764-b0dd-c62e4d0e2b8a","savedPayload":{"position":{"x":11899.686369905976,"y":26434.008591050682},"targetPosition":{"x":12150.174602501524,"y":27123.15620082367},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"989eea5e-2566-4b6c-b13a-049f0d46c22f","savedPayload":{"position":{"x":11978.225325363901,"y":24618.7842348034},"targetPosition":{"x":11343.062891749762,"y":24985.40702724926},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":5615,"y":-155},"width":240,"height":113.625,"radius":0}}}],"id":"0a338aca-e2d3-4a35-917e-e6be81cb97bf","savedPayload":{"position":{"x":11343.062891749762,"y":24985.40702724926},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":0,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Dashboard","name":"Demos","timeMachines":[{"type":"Time Machine","name":"Demo #1","code":"{\n\"description\" : \"Demo: 2 Markets on the Same Exchange\"\n}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2020-03-10T03:34:38.443Z\",\n \"toDate\": \"2020-04-24T23:59:59.999Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": true\n}","id":"18bee96e-8b86-49fa-84c9-d201a0126e77","savedPayload":{"position":{"x":11777.35148253669,"y":23792.28526471598},"targetPosition":{"x":12293.614545373859,"y":23494.538560770354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": -26.682390087028836,\n \"maxValue\": 84.31424446,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"9e66ba13-b857-45df-9361-edf5ab1fcd09","savedPayload":{"position":{"x":11697.27648014792,"y":23494.342360822593},"targetPosition":{"x":12293.614545373859,"y":23494.538560770354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"24-hs\"}","id":"710ed26e-c736-417c-aed2-5ae1c1844249","savedPayload":{"position":{"x":11777.161818114279,"y":23196.187607195276},"targetPosition":{"x":12293.614545373859,"y":23494.538560770354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timelineCharts":[{"type":"Timeline Chart","name":"ETH/USDT Indicators","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"autoMinScale\": false,\n \"autoMaxScale\": false,\n \"minValue\": 108.44553006909274,\n \"maxValue\": 275.86609962805636\n}","id":"43428f32-a014-48c3-843c-0dd530c1233b","savedPayload":{"position":{"x":11419.65100233152,"y":22823.20685746771},"targetPosition":{"x":11995.64757908922,"y":22977.806493548902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{ \n\"value\": \"24-hs\"\n}","id":"26563f48-c18a-47a8-b5f2-414ddd91cd6d","savedPayload":{"position":{"x":11697.570587227552,"y":22461.20655158563},"targetPosition":{"x":11995.64757908922,"y":22977.806493548902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"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":"09ca9287-ad98-44bc-afeb-556ccf6a0afd","savedPayload":{"position":{"x":43405.917133235744,"y":26523.010209201704},"targetPosition":{"x":43469.08890311545,"y":26943.345595123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"e24f042c-71b5-4647-ac90-c0068c30e202"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e38d7631-ede3-4a36-bdb7-96e795da0b1a","savedPayload":{"position":{"x":43491.11836941779,"y":26534.558701394508},"targetPosition":{"x":43469.08890311545,"y":26943.345595123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"ae616763-d384-41cc-a61a-e8a2ae01752b"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"48086e4d-01a0-4942-92f3-2fcad07e75e5","savedPayload":{"position":{"x":43569.104082586884,"y":26562.747932984465},"targetPosition":{"x":43469.08890311545,"y":26943.345595123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"8cb63f19-fd93-4aee-b69f-b89b15e908b2"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"d7eca427-59c0-4e2c-b145-6a94e253cbf7","savedPayload":{"position":{"x":43638.942634755185,"y":26604.609057080885},"targetPosition":{"x":43469.08890311545,"y":26943.345595123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"9b2f804e-ff08-4f83-8608-ec6548cb8859"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"38c2198b-f312-480c-af47-6ab3a579b9c8","savedPayload":{"position":{"x":43699.126740114945,"y":26658.33729172662},"targetPosition":{"x":43469.08890311545,"y":26943.345595123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"843b0322-9811-4417-bc50-065fbe04b5d3"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2c3aa776-cd23-43b1-afbf-068d81729d1c","savedPayload":{"position":{"x":43748.084933481325,"y":26721.998582294804},"targetPosition":{"x":43469.08890311545,"y":26943.345595123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"0d1b6fe2-e5f4-4724-89fa-f5443084ccd0"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"5234ecf3-bdd2-43fc-83af-30fba99220ee","savedPayload":{"position":{"x":43784.38446758459,"y":26793.43524330941},"targetPosition":{"x":43469.08890311545,"y":26943.345595123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"fd558fef-2d8b-4744-aecf-754744b3cb90"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"058c42bc-37b7-4d9d-918f-94fef44f1ed5","savedPayload":{"position":{"x":43806.90847006039,"y":26870.24614814255},"targetPosition":{"x":43469.08890311545,"y":26943.345595123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"22799460-416a-4ea4-9e19-bea31f5ae5b4"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"f616bbd6-bed9-4340-921b-32372d9d5f96","savedPayload":{"position":{"x":43814.87860961185,"y":26949.84406401301},"targetPosition":{"x":43469.08890311545,"y":26943.345595123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"c8cab685-fea6-4224-afee-ffa7c45e3069"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"17a75d8e-c57e-42c7-bbe8-c1807442a235","savedPayload":{"position":{"x":43808.0505501459,"y":27029.511576844026},"targetPosition":{"x":43469.08890311545,"y":26943.345595123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"3d0fbf6d-c623-4b21-8381-8641952cf6f1"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"adcab299-30e9-472c-ae62-4d7773afabce","savedPayload":{"position":{"x":43786.75306115185,"y":27106.573240073267},"targetPosition":{"x":43469.08890311545,"y":26943.345595123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"dd2a07fe-1572-471b-9f9b-48a7e0392555"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"19e0e0ea-ea7b-4384-91be-a4074ee99ce4","savedPayload":{"position":{"x":43751.67843755227,"y":27178.41762920508},"targetPosition":{"x":43469.08890311545,"y":26943.345595123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"876b4c27-42db-430c-99eb-208d0562cc86"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"1f35fe86-e6be-458e-8baf-55447546c87c","savedPayload":{"position":{"x":43704.026684296354,"y":27242.620101549215},"targetPosition":{"x":43469.08890311545,"y":26943.345595123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"f556f3d0-1c6e-4ee0-8128-280892ab378a"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"c4e2490b-7802-45e9-a2e2-fd62ac01122f","savedPayload":{"position":{"x":43645.40889414393,"y":27297.00699297689},"targetPosition":{"x":43469.08890311545,"y":26943.345595123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"be67744f-7ee5-490e-ad75-b0ed1563df09"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"77250dcb-0b45-4ef0-83e9-b29439985229","savedPayload":{"position":{"x":43577.869358139345,"y":27339.88835177368},"targetPosition":{"x":43469.08890311545,"y":26943.345595123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"60f28f50-15fd-4e1b-88eb-c2e1b24610fa"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"a8f6aedf-d603-4033-9a5e-c8f4112dda9d","savedPayload":{"position":{"x":43480.29034556945,"y":27372.254652559935},"targetPosition":{"x":43469.08890311545,"y":26943.345595123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"fca7ffa6-b650-46f3-8b0a-768fdfd54332"}}}],"id":"8e6d98cb-e35a-43c6-b9ea-4bca42d2ff1e","savedPayload":{"position":{"x":12149.70176778367,"y":22401.94951686559},"targetPosition":{"x":11995.64757908922,"y":22977.806493548902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"d4986e9e-e76b-4d60-b174-ea6a8c7c3c42","savedPayload":{"position":{"x":11995.495843103387,"y":22977.88178210855},"targetPosition":{"x":12293.614545373859,"y":23494.538560770354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Dash/USDT Indicators","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"autoMinScale\": false,\n \"autoMaxScale\": false,\n \"minValue\": 33.26114918033296,\n \"maxValue\": 88.16529372420807\n}","id":"8254aa03-018e-4bef-820d-516e9c792991","savedPayload":{"position":{"x":11872.010926133184,"y":22476.129453469377},"targetPosition":{"x":12293.64489259461,"y":22898.04809716531},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{ \n\"value\": \"24-hs\"\n}","id":"f5baa8f9-d9a6-4b2c-b820-f749e3d8a7ed","savedPayload":{"position":{"x":12293.646797380565,"y":22301.57858582746},"targetPosition":{"x":12293.64489259461,"y":22898.04809716531},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"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":"b6dbe1ee-d1ff-444f-b8df-88910829e655","savedPayload":{"position":{"x":44970.78429628922,"y":26968.5215427686},"targetPosition":{"x":45033.95606616892,"y":27388.856928689896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"a7b8e4ed-e341-478f-ade9-608a15ca978a"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"1778fb92-fd0f-4f21-a1c2-47b80c29f8d9","savedPayload":{"position":{"x":45055.985532471255,"y":26980.070034961405},"targetPosition":{"x":45033.95606616892,"y":27388.856928689896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"47ed9747-aa4b-444d-a1ae-ee5bcd22b41b"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"75da3250-8e77-4696-8fd2-d1a35fb8dd4d","savedPayload":{"position":{"x":45133.97124564035,"y":27008.259266551362},"targetPosition":{"x":45033.95606616892,"y":27388.856928689896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"cf406371-01ec-4213-aadf-a73ca6dd7c2a"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2d30a02f-07cb-4ea6-8c9c-1aac6c4527bc","savedPayload":{"position":{"x":45203.80979780866,"y":27050.120390647782},"targetPosition":{"x":45033.95606616892,"y":27388.856928689896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"60c11137-e5e8-4b1e-8440-0fe54d8eaad1"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"5d34bd19-b943-4d19-9cf3-f0b68eb523db","savedPayload":{"position":{"x":45263.99390316842,"y":27103.848625293518},"targetPosition":{"x":45033.95606616892,"y":27388.856928689896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"65e1feda-46c5-474f-980a-bbc152c36176"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"c5b814d1-b132-4dd6-bb4d-df5329934d95","savedPayload":{"position":{"x":45312.95209653479,"y":27167.5099158617},"targetPosition":{"x":45033.95606616892,"y":27388.856928689896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"2a0b2849-8f3c-42ed-bf53-4b5b3a95152a"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"1b933777-1bc0-4762-9de0-53b8c4ce5e6a","savedPayload":{"position":{"x":45349.25163063806,"y":27238.946576876308},"targetPosition":{"x":45033.95606616892,"y":27388.856928689896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"2a89e458-4e2f-4272-89e5-acf366a7579b"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"841d5060-dcb8-48cd-a1a6-f79c7a2423b7","savedPayload":{"position":{"x":45371.775633113866,"y":27315.757481709446},"targetPosition":{"x":45033.95606616892,"y":27388.856928689896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"c62b975f-ec36-4c4e-bf9c-ad88c6f6b145"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"8b8300a6-0ada-4827-a375-bde9ba13415f","savedPayload":{"position":{"x":45379.74577266532,"y":27395.355397579908},"targetPosition":{"x":45033.95606616892,"y":27388.856928689896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"530cf439-80c9-42e8-8d68-b22d36a3f7d5"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ab7cee8f-923a-48af-a47c-48768f2926a8","savedPayload":{"position":{"x":45372.917713199364,"y":27475.022910410924},"targetPosition":{"x":45033.95606616892,"y":27388.856928689896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"bb037972-8e14-4029-9f39-3a53274ef2fb"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"dcb8c7fd-e08a-4972-bae6-7d6020884420","savedPayload":{"position":{"x":45351.620224205326,"y":27552.084573640164},"targetPosition":{"x":45033.95606616892,"y":27388.856928689896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"fc7ec38a-c62f-4c0d-9883-1d7a000fc2ae"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"a2d90f43-9e21-40a8-af90-5890171987a2","savedPayload":{"position":{"x":45316.545600605736,"y":27623.928962771977},"targetPosition":{"x":45033.95606616892,"y":27388.856928689896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"540e982f-042a-41b8-b13b-48dad95ae02d"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"c8598d27-fb82-4b7b-b2a5-0d2389e41b17","savedPayload":{"position":{"x":45268.89384734983,"y":27688.131435116113},"targetPosition":{"x":45033.95606616892,"y":27388.856928689896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"56fdc71f-06a1-4d8f-b68a-eadf7d51d504"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"05863fd0-1983-4157-931e-eaf19af9de65","savedPayload":{"position":{"x":45210.27605719741,"y":27742.518326543788},"targetPosition":{"x":45033.95606616892,"y":27388.856928689896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"a4bb4d63-e1f8-4de8-84b4-00cb8c33d0d3"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"080055bf-3054-4059-9eeb-c5e0e7ed9c29","savedPayload":{"position":{"x":45142.73652119281,"y":27785.399685340577},"targetPosition":{"x":45033.95606616892,"y":27388.856928689896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"a2a18651-52ab-446e-b332-737416c50833"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"3af07b31-26d8-45db-90e8-83fb4db580a4","savedPayload":{"position":{"x":45045.15750862291,"y":27817.765986126833},"targetPosition":{"x":45033.95606616892,"y":27388.856928689896},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"fc8ea3a8-8dbe-4c4d-a5ec-bbbeec11bca4"}}}],"id":"3ca90550-f8ad-47db-b8fb-471814537cd9","savedPayload":{"position":{"x":12714.907734192295,"y":22476.37192406087},"targetPosition":{"x":12293.64489259461,"y":22898.04809716531},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"d937b35b-e386-46f0-a3aa-fcc251653cbc","savedPayload":{"position":{"x":12293.62056186902,"y":22898.019800763654},"targetPosition":{"x":12293.614545373859,"y":23494.538560770354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7123783a-80a6-4cf1-a5a1-7ca874a903cc","savedPayload":{"position":{"x":12293.614545373859,"y":23494.538560770354},"targetPosition":{"x":12809.811040897648,"y":23792.671721009017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":-995,"y":-165},"width":480,"height":240,"radius":0}}},{"type":"Time Machine","name":"Demo #2","code":"{\n\"description\" : \"Demo: Same Market from 3 Different Exchanges\"\n}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2020-03-06T21:14:25.698Z\",\n \"toDate\": \"2020-04-22T05:01:36.187Z\",\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"1a38a992-bf45-4835-ac2b-c5775ed5a517","savedPayload":{"position":{"x":13281.60564229058,"y":22899.811498107596},"targetPosition":{"x":13326.1575007898,"y":23494.577908289582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 5531.5753125,\n \"maxValue\": 12249.4453125,\n \"autoMinScale\": false,\n \"autoMaxScale\": false\n}","id":"56681b58-f77e-4414-a9cb-b2ecc56bda44","savedPayload":{"position":{"x":13544.031230408418,"y":22939.33923544073},"targetPosition":{"x":13326.1575007898,"y":23494.577908289582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"12-hs\"}","id":"0312b4ac-0ccf-4a09-8472-4bf8ecff1b5c","savedPayload":{"position":{"x":13763.39431840861,"y":23088.89336399311},"targetPosition":{"x":13326.1575007898,"y":23494.577908289582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"timelineCharts":[{"type":"Timeline Chart","name":"Binance","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":"5003d2a1-8444-436d-a082-132399c84092","savedPayload":{"position":{"x":44503.57618711697,"y":29732.15831681643},"targetPosition":{"x":44566.74795699668,"y":30152.493702737724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"431ea989-085b-40ae-aa2a-d371d7cb68c6"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"cf692cca-5b71-4611-ab50-12f0e0ced552","savedPayload":{"position":{"x":44588.77742329902,"y":29743.706809009233},"targetPosition":{"x":44566.74795699668,"y":30152.493702737724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"ddd34b26-4fa8-4d7c-b76d-f671c92a6181"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"ec7e158a-87f8-42f5-a4ec-e7c6d1e64190","savedPayload":{"position":{"x":44666.763136468115,"y":29771.89604059919},"targetPosition":{"x":44566.74795699668,"y":30152.493702737724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"683e24f7-010a-412e-ba21-f280e63a0f1d"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2fdf5d90-1981-417a-ba3d-614e671fe420","savedPayload":{"position":{"x":44736.60168863641,"y":29813.75716469561},"targetPosition":{"x":44566.74795699668,"y":30152.493702737724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"210b7e14-a6f0-4c56-b5e4-108f57ebb4c6"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"73a9df91-61fd-4cd3-a108-78d17d77d7ba","savedPayload":{"position":{"x":44796.78579399617,"y":29867.485399341345},"targetPosition":{"x":44566.74795699668,"y":30152.493702737724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"303572ad-cc90-46c9-8620-8454d557897b"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"52b8669c-ce25-4902-a7f3-3da3f1b73685","savedPayload":{"position":{"x":44845.743987362555,"y":29931.14668990953},"targetPosition":{"x":44566.74795699668,"y":30152.493702737724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"10142313-9ac8-4f4c-8105-88aec7bb7ce9"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"7c67cd77-0565-4152-b137-0c0f61b76172","savedPayload":{"position":{"x":44882.04352146582,"y":30002.583350924135},"targetPosition":{"x":44566.74795699668,"y":30152.493702737724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"afbf02cf-97a6-4dc0-a3d5-95f29ba7781f"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"30d975d4-7eda-4091-b896-a4d2dd61758b","savedPayload":{"position":{"x":44904.567523941616,"y":30079.394255757274},"targetPosition":{"x":44566.74795699668,"y":30152.493702737724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"80ed873e-8017-45ec-b211-fc4604f5aaf6"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"52dfa483-189c-4433-8339-56fcd9d86892","savedPayload":{"position":{"x":44912.53766349307,"y":30158.992171627735},"targetPosition":{"x":44566.74795699668,"y":30152.493702737724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"6635502b-5366-430e-8dc1-4edaa21c2a7f"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"b6e83e23-a3ff-434c-b5d2-35ecc8844cca","savedPayload":{"position":{"x":44905.70960402713,"y":30238.65968445875},"targetPosition":{"x":44566.74795699668,"y":30152.493702737724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"3ebce074-9080-426a-baf9-61c1a04fc05b"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"4e135029-34cc-4ae8-ba40-6be9d38d2250","savedPayload":{"position":{"x":44884.412115033076,"y":30315.72134768799},"targetPosition":{"x":44566.74795699668,"y":30152.493702737724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"c424ba00-bbe0-4ae9-830a-3d2aa6fcaf4d"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"fbfbe0fa-aa94-4053-8699-0b07eb620795","savedPayload":{"position":{"x":44849.3374914335,"y":30387.565736819804},"targetPosition":{"x":44566.74795699668,"y":30152.493702737724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"3d048c1f-d45a-442a-9d44-362ad7770bb6"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"058970f4-7350-4ffd-ac68-335c829702ae","savedPayload":{"position":{"x":44801.68573817758,"y":30451.76820916394},"targetPosition":{"x":44566.74795699668,"y":30152.493702737724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"c92d9454-d5fb-4954-a188-367dcd697af6"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"0e451175-0846-43e2-8675-2596e63ce749","savedPayload":{"position":{"x":44743.06794802516,"y":30506.155100591615},"targetPosition":{"x":44566.74795699668,"y":30152.493702737724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"4810638a-c137-4df6-8016-c8a2540dc9e7"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"a96e72bd-80ed-4c25-8eec-3206b2471275","savedPayload":{"position":{"x":44675.528412020576,"y":30549.036459388404},"targetPosition":{"x":44566.74795699668,"y":30152.493702737724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"9c1f6b84-409e-4257-92ea-a9481d3509cd"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"a141ca05-f37c-4d68-aef6-ad5629a5182a","savedPayload":{"position":{"x":44577.94939945068,"y":30581.40276017466},"targetPosition":{"x":44566.74795699668,"y":30152.493702737724},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"dcd46168-1662-42c5-be91-f489d9a55833"}}}],"id":"04b63423-507f-4921-b9b1-259fbdc7dac1","savedPayload":{"position":{"x":14512.673822047245,"y":23619.25677757951},"targetPosition":{"x":13919.432726413495,"y":23556.922098190207},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"d8759758-fdde-45b9-90ef-9f89ee0030a7","savedPayload":{"position":{"x":13896.137588957044,"y":23318.810690180144},"targetPosition":{"x":13326.1575007898,"y":23494.577908289582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Bitfinex","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"autoMinScale\": false,\n \"autoMaxScale\": false,\n \"minValue\": 5170.75798611111,\n \"maxValue\": 8969.85798611111\n}","id":"4ddb5ea0-fc04-45d6-9a11-88bc75e50854","savedPayload":{"position":{"x":13751.522050943498,"y":23782.482334428667},"targetPosition":{"x":13851.522050943498,"y":23793.482334428667},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"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":"2b846f26-d467-4bd9-b7be-8bef01b65ef9","savedPayload":{"position":{"x":43336.79121779195,"y":28730.636571315797},"targetPosition":{"x":43399.96298767166,"y":29150.971957237092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"8ca5590a-f8fd-4451-beb4-6f129503917f"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2ce3e063-a7b0-4fef-b98f-e3ada6c8d71e","savedPayload":{"position":{"x":43421.992453973995,"y":28742.1850635086},"targetPosition":{"x":43399.96298767166,"y":29150.971957237092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"51e94a87-e6cf-4245-a74b-96c3032abb05"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9c9ea5be-9946-4ff7-89c1-a524c82a4d5a","savedPayload":{"position":{"x":43499.97816714309,"y":28770.374295098558},"targetPosition":{"x":43399.96298767166,"y":29150.971957237092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"a5534859-2c15-4848-8083-a1eb33485e21"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e95d3ce6-ced1-42d7-920d-09cd4233fb91","savedPayload":{"position":{"x":43569.81671931139,"y":28812.235419194978},"targetPosition":{"x":43399.96298767166,"y":29150.971957237092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"8969e130-aa60-47c1-a301-99f1908db6df"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"4e86a27e-5ef8-492e-a43e-f1a6a91cb5fe","savedPayload":{"position":{"x":43630.00082467115,"y":28865.963653840714},"targetPosition":{"x":43399.96298767166,"y":29150.971957237092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"56d92d99-a094-4b18-9e22-37eba7b7dfdb"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"b8f24df8-510f-479d-960a-4060c6db57a8","savedPayload":{"position":{"x":43678.95901803753,"y":28929.624944408897},"targetPosition":{"x":43399.96298767166,"y":29150.971957237092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"eb35295a-b358-4688-8482-74307091466e"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"754ab98e-5554-49fd-bba0-ca09e6a3a3f9","savedPayload":{"position":{"x":43715.2585521408,"y":29001.061605423503},"targetPosition":{"x":43399.96298767166,"y":29150.971957237092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"158d1589-7e86-4a42-819b-f3992495d35c"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6b60999d-d019-433d-9b22-660e05ead7d1","savedPayload":{"position":{"x":43737.7825546166,"y":29077.872510256642},"targetPosition":{"x":43399.96298767166,"y":29150.971957237092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"d525e21f-ea75-4844-8e09-87f5f478045e"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"bc912cd5-d9c8-48e9-88b7-03b5bbea15aa","savedPayload":{"position":{"x":43745.752694168055,"y":29157.470426127104},"targetPosition":{"x":43399.96298767166,"y":29150.971957237092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"d4905d55-abce-4fa9-95a2-1875c16fb4b7"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9df1028a-db8b-44e5-bdc4-8290ed425ec3","savedPayload":{"position":{"x":43738.9246347021,"y":29237.13793895812},"targetPosition":{"x":43399.96298767166,"y":29150.971957237092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"9e1a2843-59a0-485e-8ce0-e8c98e5a2001"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"0505592d-d0f9-4809-921b-8345e00ef0c3","savedPayload":{"position":{"x":43717.62714570806,"y":29314.19960218736},"targetPosition":{"x":43399.96298767166,"y":29150.971957237092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"850a58e9-2da0-43dc-b5be-739bd478309e"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"84134ba5-6697-4ac0-b080-b043564dafe2","savedPayload":{"position":{"x":43682.552522108475,"y":29386.043991319173},"targetPosition":{"x":43399.96298767166,"y":29150.971957237092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"891c972c-e624-42af-ab10-056b6d6f194b"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"06538b09-c89c-41fa-aed9-a4a80205aece","savedPayload":{"position":{"x":43634.90076885256,"y":29450.24646366331},"targetPosition":{"x":43399.96298767166,"y":29150.971957237092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"dbfb5bbc-ebb7-41da-8a45-eaf75d943736"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"e5789044-8dd9-4e84-ac38-3af62f025255","savedPayload":{"position":{"x":43576.28297870014,"y":29504.633355090984},"targetPosition":{"x":43399.96298767166,"y":29150.971957237092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"5bcf67c8-5a50-477f-9dce-c23993104cea"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"84e1cf35-78ee-4f72-8f39-dd4437d50050","savedPayload":{"position":{"x":43508.74344269555,"y":29547.514713887773},"targetPosition":{"x":43399.96298767166,"y":29150.971957237092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"83243cbe-ccb6-4aef-94a2-5fa4870c674b"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"65bfd136-9689-4b8b-bf32-f953e0f36719","savedPayload":{"position":{"x":43411.16443012565,"y":29579.88101467403},"targetPosition":{"x":43399.96298767166,"y":29150.971957237092},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"62ae801f-e2e0-4611-9cc0-a3dc66a76da1"}}}],"id":"8a12736c-b79d-4f4a-83a7-0bfb690a07cb","savedPayload":{"position":{"x":43399.96298767166,"y":29150.971957237092},"targetPosition":{"x":42884.45923023754,"y":29203.156854107274},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"80a55bff-caae-4d94-ac9d-639d71c63e05","savedPayload":{"position":{"x":13915.972520030327,"y":23583.360390653525},"targetPosition":{"x":13326.1575007898,"y":23494.577908289582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"BitTrex","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"autoMinScale\": false,\n \"autoMaxScale\": false,\n \"minValue\": 4474.307517343147,\n \"maxValue\": 7757.873387123147\n}","id":"2e70f680-2698-4d3b-99dd-4da330d3468a","savedPayload":{"position":{"x":13781.77374482421,"y":23953.123361795962},"targetPosition":{"x":13744.77374482421,"y":23927.123361795962},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"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":"e52b0e7e-93dd-46d7-86fe-1ef6ee62360b","savedPayload":{"position":{"x":43732.72197212456,"y":27423.42328219695},"targetPosition":{"x":43795.893742004264,"y":27843.758668118244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"18386b37-31c2-4e85-8e17-e46e036de5b9"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"dbca4302-60ea-477b-90f1-e7aeb58c6ab8","savedPayload":{"position":{"x":43817.9232083066,"y":27434.971774389753},"targetPosition":{"x":43795.893742004264,"y":27843.758668118244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"c944bfd2-3366-4ef8-8d86-17fb07b8236b"}}},{"type":"Layer","name":"Candles Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9b20fd32-de5f-4a51-a80f-bfc73fddd82a","savedPayload":{"position":{"x":43895.9089214757,"y":27463.16100597971},"targetPosition":{"x":43795.893742004264,"y":27843.758668118244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels","id":"f058cb8d-ac26-49b2-a71e-03b6da20cf2c"}}},{"type":"Layer","name":"Candles Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"600ff4e6-59a8-424f-b2c3-c77b732c7aa4","savedPayload":{"position":{"x":43965.747473644,"y":27505.02213007613},"targetPosition":{"x":43795.893742004264,"y":27843.758668118244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles Channels Objects","id":"712a8c20-3a29-4c01-8292-9f7dd49626d1"}}},{"type":"Layer","name":"Bollinger Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9598ead1-a1d5-4047-80f6-c0b42557a023","savedPayload":{"position":{"x":44025.93157900376,"y":27558.750364721865},"targetPosition":{"x":43795.893742004264,"y":27843.758668118244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels","id":"c93aa11a-f985-47bd-b455-7e29e74ae110"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2ac1af85-4a7c-468b-9ac4-983db1fa037e","savedPayload":{"position":{"x":44074.88977237014,"y":27622.41165529005},"targetPosition":{"x":43795.893742004264,"y":27843.758668118244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"a1bdc52f-a93c-468a-9a57-3730eaf653b0"}}},{"type":"Layer","name":"Bollinger Sub-Channels","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"7d1355ac-64b7-4ea1-a439-3ebac6c04875","savedPayload":{"position":{"x":44111.1893064734,"y":27693.848316304655},"targetPosition":{"x":43795.893742004264,"y":27843.758668118244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels","id":"ad145a69-4b17-4d3e-ac0d-8457100b79db"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"e1a72466-88d4-47f6-9f2f-484ff6409b29","savedPayload":{"position":{"x":44133.713308949205,"y":27770.659221137794},"targetPosition":{"x":43795.893742004264,"y":27843.758668118244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"8cb86b9c-bd1c-40f2-932d-39c3463c281b"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"2f0d1c34-8051-4b23-842f-692018dda16a","savedPayload":{"position":{"x":44141.68344850066,"y":27850.257137008255},"targetPosition":{"x":43795.893742004264,"y":27843.758668118244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"ae18cd86-b31a-4205-84ee-1ae5fa13a80e"}}},{"type":"Layer","name":"Base5 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"0f23d2d5-69f0-4a2d-9c26-ce39c52bf543","savedPayload":{"position":{"x":44134.85538903471,"y":27929.92464983927},"targetPosition":{"x":43795.893742004264,"y":27843.758668118244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base5 SMAs","id":"3249ddb7-692a-4c09-a4c3-77b96b0a64c7"}}},{"type":"Layer","name":"Base6 SMAs","code":"{\n \"status\": \"off\"\n}","id":"2644c38d-d283-4dfb-bf41-4f9ea5fd7d90","savedPayload":{"position":{"x":44113.557900040665,"y":28006.98631306851},"targetPosition":{"x":43795.893742004264,"y":27843.758668118244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base6 SMAs","id":"cae7b3ba-fe2c-47de-8df9-d06e4c8f461d"}}},{"type":"Layer","name":"Base7 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"26aa44cd-eada-4c45-8d74-de01c3ce7840","savedPayload":{"position":{"x":44078.48327644108,"y":28078.830702200325},"targetPosition":{"x":43795.893742004264,"y":27843.758668118244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"4d76dcf6-8f1e-46c9-a635-36f5c2afa299"}}},{"type":"Layer","name":"Base11 SMAs","code":"{ \n\"status\": \"off\"\n}","id":"050d80ce-2d46-4d5c-8624-3945f4c6f3d6","savedPayload":{"position":{"x":44030.83152318517,"y":28143.03317454446},"targetPosition":{"x":43795.893742004264,"y":27843.758668118244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"f06e0f2d-3494-488a-9d61-fe8ceaa22294"}}},{"type":"Layer","name":"Popular EMAs","code":"{ \n\"status\": \"off\"\n}","id":"0967a67d-a16e-4d9b-a8d9-333acb2bc7aa","savedPayload":{"position":{"x":43972.213733032746,"y":28197.420065972135},"targetPosition":{"x":43795.893742004264,"y":27843.758668118244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"a660ba6d-92e9-46d4-9a44-a3f753acc5c2"}}},{"type":"Layer","name":"Base7 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"21c38742-0a80-416d-87d1-8d011c83d206","savedPayload":{"position":{"x":43904.67419702816,"y":28240.301424768924},"targetPosition":{"x":43795.893742004264,"y":27843.758668118244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"ec9da642-733f-4906-9030-bec8f124af77"}}},{"type":"Layer","name":"Base11 EMAs","code":"{ \n\"status\": \"off\"\n}","id":"b80f4c1c-28bb-4543-9633-3ca251db9b4a","savedPayload":{"position":{"x":43807.09518445826,"y":28272.66772555518},"targetPosition":{"x":43795.893742004264,"y":27843.758668118244},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"b7652a67-6fd3-458b-b1e1-c44781a2a277"}}}],"id":"5b0dad4d-f438-4417-85f7-38f540ce95d4","savedPayload":{"position":{"x":43795.893742004264,"y":27843.758668118244},"targetPosition":{"x":43280.389984570145,"y":27895.943564988425},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":40,"radius":0}}},"id":"7ec609f9-e409-4e4f-9181-e4d7a7d3af81","savedPayload":{"position":{"x":13818.885857190635,"y":23830.560557751527},"targetPosition":{"x":13326.1575007898,"y":23494.577908289582},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d60f0950-f117-4a0f-a31a-0c01612e07f8","savedPayload":{"position":{"x":13326.1575007898,"y":23494.577908289582},"targetPosition":{"x":12809.811040897648,"y":23792.671721009017},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":-995,"y":185},"width":480,"height":240,"radius":0}}}],"id":"848305c2-f1ca-4b6a-aeba-368ea4d885ee","savedPayload":{"position":{"x":12809.811040897648,"y":23792.671721009017},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":0,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c53a4385-3fb3-49d5-b506-99bcaef2c141","savedPayload":{"position":{"x":12809.806237131383,"y":24985.35640053908},"targetPosition":{"x":12809.806237131383,"y":24985.35640053908},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":0,"arrangementStyle":0},"uiObject":{"isRunning":false,"shortcutKey":"c"}}}]} \ No newline at end of file diff --git a/run.js b/run.js index 5888aadb0..4aaa74f4a 100644 --- a/run.js +++ b/run.js @@ -1,5 +1,14 @@ +let options = { + execArgv: ['--max-old-space-size=8192'], + stdio: 'inherit' +} + +if (process.argv.includes("minMemo")) { + options = { + stdio: 'inherit' + } + console.log('Running with Minimun Memory Required.') +} + const { fork } = require('child_process') - -fork('./BackendServers/server.js', undefined, { stdio: 'inherit' }) - - +fork('./BackendServers/server.js', process.argv, options)